-
Notifications
You must be signed in to change notification settings - Fork 69
Port project to 64 bit, MACOS and ARCH confirmed #33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
chasem-dev
wants to merge
30
commits into
flyngmt:master
Choose a base branch
from
chasem-dev:master
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
30 commits
Select commit
Hold shift + click to select a range
2806bee
64-bit cross-platform port (macOS ARM64 + Linux x86_64)
chasem-dev b08134d
64-bit audio bank relocation + pointer truncation fixes
chasem-dev 024027f
Widen Gfx to 16 bytes on 64-bit — enables display list rendering
chasem-dev d76b26d
Fix SDIFileEntry struct layout for 64-bit RARC archive parsing
chasem-dev 39f0dc9
Refactor DVDFileInfo and DVDCommandBlock for 64-bit compatibility
chasem-dev 94147d9
Fix 64-bit pointer casts, font rendering, and emu64 texture comparison
chasem-dev e57312b
Add F4 fast-forward toggle for 2x game speed
chasem-dev 18b98cd
Fix font text rendering: keyboard glyphs, NPC names, and dirty_check …
chasem-dev bc1ac86
Misc fixes: train scene, audio, actor control, and NPC handling
chasem-dev 2a84abc
Player, scene, and house actor fixes
chasem-dev ad9888f
Fix 64-bit pointer truncation across player, actor, and audio systems
chasem-dev d8c7c8b
Remove GitHub Actions release workflow
chasem-dev 474c5a6
Working Arch x86_64 build
birabittoh e90ce46
Fix crash when entering houses
birabittoh 4fa553f
Merge pull request #1 from birabittoh/master
chasem-dev 8a11e83
Add Windows 64-bit build instructions to README
chasem-dev 51c34b8
Fix map UI rendering on 64-bit
birabittoh 24d30e4
Add build workflow
birabittoh 396b6ca
Fix map artifacts
birabittoh 637800e
Restore PC menu
birabittoh e8198e5
Merge upstream/master into 64-bit port
birabittoh 3fbdf38
Update workflows, fix linux i686
birabittoh e504ec6
Remove PR trigger on workflow
birabittoh afecbf9
Fix crash while entering houses
birabittoh 3ca85a4
Fix linux32 build
birabittoh 12260ce
Fix Linux 32-bit graphical issues via SSE2 and alignment
birabittoh 5d146cd
Prefer discrete GPU if available
birabittoh 4d58e47
Use discrete GPU on Linux 32-bit
birabittoh 01af52f
Merge remote-tracking branch 'upstream/master'
birabittoh acc161f
Merge pull request #2 from birabittoh/master
chasem-dev File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,124 @@ | ||
| name: Build | ||
|
|
||
| on: | ||
| push: | ||
| workflow_dispatch: | ||
|
|
||
| jobs: | ||
| build: | ||
| name: ${{ matrix.name }} | ||
| runs-on: ${{ matrix.os }} | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| include: | ||
| - { name: "Windows-x86_64", os: windows-latest, msys2_sys: MINGW64, msys2_env: mingw-w64-x86_64 } | ||
| - { name: "Windows-i686", os: windows-latest, msys2_sys: MINGW32, msys2_env: mingw-w64-i686 } | ||
| - { name: "Linux-x86_64", os: ubuntu-latest, linux_arch: x86_64 } | ||
| - { name: "Linux-i686", os: ubuntu-latest, linux_arch: i686 } | ||
| - { name: "macOS-ARM64", os: macos-latest } | ||
| - { name: "macOS-x86_64", os: macos-latest, macos_arch: x86_64 } | ||
|
|
||
| steps: | ||
| - uses: actions/checkout@v6 | ||
|
|
||
| # ── Windows ────────────────────────────────────────────────────── | ||
| - uses: msys2/setup-msys2@v2 | ||
| if: runner.os == 'Windows' | ||
| with: | ||
| msystem: ${{ matrix.msys2_sys }} | ||
| update: true | ||
| install: >- | ||
| ${{ matrix.msys2_env }}-gcc | ||
| ${{ matrix.msys2_env }}-cmake | ||
| ${{ matrix.msys2_env }}-SDL2 | ||
| ${{ matrix.msys2_env }}-make | ||
|
|
||
| - name: Build (Windows) | ||
| if: runner.os == 'Windows' | ||
| shell: msys2 {0} | ||
| run: | | ||
| cd pc && mkdir -p build && cd build | ||
| cmake .. -G "MinGW Makefiles" | ||
| mingw32-make -j$(nproc) | ||
|
|
||
| # ── Linux ───────────────────────────────────────────────────────── | ||
| - name: Install deps (Linux x86_64) | ||
| if: runner.os == 'Linux' && matrix.linux_arch == 'x86_64' | ||
| run: | | ||
| sudo apt-get update | ||
| sudo apt-get install -y gcc g++ cmake libsdl2-dev libgl-dev | ||
|
|
||
| - name: Install deps (Linux i686) | ||
| if: runner.os == 'Linux' && matrix.linux_arch == 'i686' | ||
| run: | | ||
| sudo dpkg --add-architecture i386 | ||
| sudo apt-get update | ||
| sudo apt-get install -y gcc-multilib g++-multilib cmake | ||
| # Install 32-bit libraries without dev packages to avoid glib conflicts | ||
| sudo apt-get install -y libsdl2-2.0-0:i386 libgl1:i386 libglx0:i386 libopengl0:i386 | ||
| # Install x86_64 dev packages (headers are arch-independent) | ||
| sudo apt-get install -y libsdl2-dev libgl-dev | ||
|
|
||
| - name: Build (Linux x86_64) | ||
| if: runner.os == 'Linux' && matrix.linux_arch == 'x86_64' | ||
| run: | | ||
| cd pc && mkdir -p build && cd build | ||
| cmake .. | ||
| make -j$(nproc) | ||
|
|
||
| - name: Build (Linux i686) | ||
| if: runner.os == 'Linux' && matrix.linux_arch == 'i686' | ||
| run: | | ||
| cd pc && mkdir -p build32 && cd build32 | ||
| cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-linux32.cmake | ||
| make -j$(nproc) | ||
|
|
||
| # ── macOS ARM64 ─────────────────────────────────────────────────── | ||
| - name: Install deps (macOS ARM64) | ||
| if: runner.os == 'macOS' && matrix.macos_arch != 'x86_64' | ||
| run: | | ||
| brew install gcc sdl2 cmake | ||
| GCC_VERSION=$(ls "$(brew --prefix)/bin/gcc-"* | grep -Eo '[0-9]+$' | sort -rn | head -1) | ||
| echo "GCC_VERSION=$GCC_VERSION" >> $GITHUB_ENV | ||
|
|
||
| - name: Build (macOS ARM64) | ||
| if: runner.os == 'macOS' && matrix.macos_arch != 'x86_64' | ||
| run: | | ||
| cd pc && mkdir -p build && cd build | ||
| cmake .. \ | ||
| -DCMAKE_C_COMPILER=gcc-${GCC_VERSION} \ | ||
| -DCMAKE_CXX_COMPILER=g++-${GCC_VERSION} | ||
| make -j$(sysctl -n hw.ncpu) | ||
|
|
||
| # ── macOS x86_64 (via Rosetta 2 + x86_64 Homebrew) ─────────────── | ||
| - name: Install deps (macOS x86_64) | ||
| if: runner.os == 'macOS' && matrix.macos_arch == 'x86_64' | ||
| run: | | ||
| curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh -o /tmp/brew_install.sh | ||
| arch -x86_64 /bin/bash /tmp/brew_install.sh | ||
| arch -x86_64 /usr/local/bin/brew install gcc sdl2 cmake | ||
| GCC_VERSION=$(ls /usr/local/bin/gcc-* | grep -Eo '[0-9]+$' | sort -rn | head -1) | ||
| echo "GCC_VERSION=$GCC_VERSION" >> $GITHUB_ENV | ||
|
|
||
| - name: Build (macOS x86_64) | ||
| if: runner.os == 'macOS' && matrix.macos_arch == 'x86_64' | ||
| run: | | ||
| cd pc && mkdir -p build && cd build | ||
| arch -x86_64 /usr/local/bin/cmake .. \ | ||
| -DCMAKE_C_COMPILER=/usr/local/bin/gcc-${GCC_VERSION} \ | ||
| -DCMAKE_CXX_COMPILER=/usr/local/bin/g++-${GCC_VERSION} | ||
| arch -x86_64 make -j$(sysctl -n hw.ncpu) | ||
|
|
||
| # ── Artifacts ───────────────────────────────────────────────────── | ||
| - uses: actions/upload-artifact@v7 | ||
| if: runner.os == 'Windows' || (runner.os == 'Linux' && matrix.linux_arch == 'x86_64') || runner.os == 'macOS' | ||
| with: | ||
| name: AnimalCrossing-${{ matrix.name }} | ||
| path: pc/build/bin/ | ||
|
|
||
| - uses: actions/upload-artifact@v7 | ||
| if: runner.os == 'Linux' && matrix.linux_arch == 'i686' | ||
| with: | ||
| name: AnimalCrossing-${{ matrix.name }} | ||
| path: pc/build32/bin/ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -21,6 +21,7 @@ orig/*/* | |
| # Build files | ||
| build/ | ||
| build32/ | ||
| build64/ | ||
| .ninja_* | ||
| build.ninja | ||
|
|
||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -2,7 +2,7 @@ | |
|
|
||
| A native PC port of Animal Crossing (GameCube) built on top of the [ac-decomp](https://github.com/ACreTeam/ac-decomp) decompilation project. | ||
|
|
||
| The game's original C code runs natively on x86, with a custom translation layer replacing the GameCube's GX graphics API with OpenGL 3.3. | ||
| The game's original C code runs natively on PC, with a custom translation layer replacing the GameCube's GX graphics API with OpenGL 3.3. | ||
|
|
||
| This repository does not contain any game assets or assembly whatsoever. An existing copy of the game is required. | ||
|
|
||
|
|
@@ -24,40 +24,111 @@ Only needed if you want to modify the code. Otherwise, use the [pre-built releas | |
|
|
||
| ### Requirements | ||
|
|
||
| - **MSYS2** (https://www.msys2.org/) | ||
| - **Animal Crossing (USA) disc image** (ISO, GCM, or CISO format) | ||
| - **CMake** 3.16+ | ||
| - **SDL2** development libraries | ||
| - **GCC** (required on 64-bit platforms; Clang is supported on 32-bit only) | ||
|
|
||
| ### MSYS2 Packages | ||
| ### Build Steps | ||
|
|
||
| Open **MSYS2 MINGW32** from your Start menu and install: | ||
| ### Windows 32-bit (MSYS2) | ||
|
|
||
| ```bash | ||
| pacman -S mingw-w64-i686-gcc mingw-w64-i686-cmake mingw-w64-i686-SDL2 mingw-w64-i686-make | ||
| ``` | ||
| 1. Install **MSYS2** (https://www.msys2.org/) | ||
|
|
||
| ### Build Steps | ||
| 2. Open **MSYS2 MINGW32** and install dependencies: | ||
| ```bash | ||
| pacman -S mingw-w64-i686-gcc mingw-w64-i686-cmake mingw-w64-i686-SDL2 mingw-w64-i686-make | ||
| ``` | ||
|
|
||
| 1. Clone the repository: | ||
| 3. Clone and build: | ||
| ```bash | ||
| git clone https://github.com/flyngmt/ACGC-PC-Port.git | ||
| cd ACGC-PC-Port | ||
| ./build_pc.sh | ||
| ``` | ||
|
|
||
| 2. Build (from **MSYS2 MINGW32** shell): | ||
| 4. Place your disc image in `pc/build32/bin/rom/` and run: | ||
| ```bash | ||
| ./build_pc.sh | ||
| pc/build32/bin/AnimalCrossing.exe | ||
| ``` | ||
|
|
||
| ### Windows 64-bit (MSYS2) | ||
|
|
||
| 1. Install **MSYS2** (https://www.msys2.org/) | ||
|
|
||
| 2. Open **MSYS2 MINGW64** and install dependencies: | ||
| ```bash | ||
| pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake mingw-w64-x86_64-SDL2 mingw-w64-x86_64-make | ||
| ``` | ||
|
|
||
| 3. Place your disc image in the `rom/` folder: | ||
| 3. Clone and build: | ||
| ```bash | ||
| git clone https://github.com/flyngmt/ACGC-PC-Port.git | ||
| cd ACGC-PC-Port/pc | ||
| mkdir build64 && cd build64 | ||
| cmake .. -G "MinGW Makefiles" | ||
| mingw32-make -j$(nproc) | ||
| ``` | ||
| pc/build32/bin/rom/YourGame.ciso | ||
|
|
||
| 4. Place your disc image in `pc/build64/bin/rom/` and run: | ||
| ```bash | ||
| pc/build64/bin/AnimalCrossing.exe | ||
| ``` | ||
|
|
||
| 4. Run: | ||
| ### macOS (Apple Silicon & Intel) | ||
|
|
||
| 1. Install dependencies: | ||
| ```bash | ||
| pc/build32/bin/AnimalCrossing.exe | ||
| brew install gcc sdl2 cmake | ||
| ``` | ||
|
|
||
| 2. Clone and build: | ||
| ```bash | ||
| git clone https://github.com/flyngmt/ACGC-PC-Port.git | ||
| cd ACGC-PC-Port/pc | ||
| mkdir build && cd build | ||
| cmake .. -DCMAKE_C_COMPILER=gcc-15 -DCMAKE_CXX_COMPILER=g++-15 | ||
| make -j$(sysctl -n hw.ncpu) | ||
| ``` | ||
| > Adjust `gcc-15`/`g++-15` to match your installed GCC version (`ls /opt/homebrew/bin/gcc-*`). | ||
|
|
||
| 3. Place your disc image in `build/bin/rom/` and run: | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Windows instructions give full path from project root |
||
| ```bash | ||
| build/bin/AnimalCrossing | ||
| ``` | ||
|
|
||
| ### Linux (x86_64 / ARM64) | ||
|
|
||
| 1. Install dependencies: | ||
| ```bash | ||
| # Arch/CachyOS/Manjaro | ||
| sudo pacman -S gcc cmake sdl2 | ||
|
|
||
| # Debian/Ubuntu | ||
| sudo apt install gcc g++ cmake libsdl2-dev | ||
|
|
||
| # Fedora | ||
| sudo dnf install gcc gcc-c++ cmake SDL2-devel | ||
| ``` | ||
|
|
||
| 2. Clone and build: | ||
| ```bash | ||
| git clone https://github.com/flyngmt/ACGC-PC-Port.git | ||
| cd ACGC-PC-Port/pc | ||
| mkdir build && cd build | ||
| cmake .. | ||
| make -j$(nproc) | ||
| ``` | ||
|
|
||
| 3. Place your disc image in `build/bin/rom/` and run: | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Windows instructions give full path from project root |
||
| ```bash | ||
| build/bin/AnimalCrossing | ||
| ``` | ||
|
|
||
| ### Disc Image | ||
|
|
||
| The game reads all assets directly from the disc image at startup. No extraction or preprocessing step is needed. Place your disc image (`.iso`, `.gcm`, or `.ciso`) in the `rom/` folder next to the executable — the file can be named anything. The game also checks the `orig/` folder and the current directory. | ||
|
|
||
| ## Controls | ||
|
|
||
| Keyboard bindings are customizable via `keybindings.ini` (next to the executable). Mouse buttons (Mouse1/Mouse2/Mouse3) can also be assigned. | ||
|
|
@@ -92,7 +163,7 @@ SDL2 game controllers are supported with automatic hotplug detection. Button map | |
|
|
||
| ## Settings | ||
|
|
||
| Graphics settings are stored in `settings.ini` and can be edited manually or through the in-game options menu: | ||
| Graphics settings are stored in `settings.ini` (next to the executable) and can be edited manually or through the in-game options menu: | ||
|
|
||
| - Resolution (up to 4K) | ||
| - Fullscreen toggle | ||
|
|
@@ -102,15 +173,15 @@ Graphics settings are stored in `settings.ini` and can be edited manually or thr | |
|
|
||
| ## Texture Packs | ||
|
|
||
| Custom textures can be placed in `texture_pack/`. Dolphin-compatible format (XXHash64, DDS). | ||
| Custom textures can be placed in the `texture_pack/` folder next to the executable. Dolphin-compatible format (XXHash64, DDS). | ||
|
|
||
| I highly recommend the following texture pack from the talented artists of Animal Crossing community. | ||
|
|
||
| [HD Texture Pack](https://forums.dolphin-emu.org/Thread-animal-crossing-hd-texture-pack-version-23-feb-22nd-2026) | ||
|
|
||
| ## Save Data | ||
|
|
||
| Save files are stored in `save/` using the standard GCI format, compatible with Dolphin emulator saves. Place a Dolphin GCI export in the save directory to import an existing save. | ||
| Save files are stored in the `save/` folder next to the executable, using the standard GCI format. Compatible with Dolphin emulator saves — place a Dolphin GCI export in the save directory to import an existing save. | ||
|
|
||
| ## Credits | ||
|
|
||
|
|
||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The dependencies are declared per architecture in the later steps