Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
2806bee
64-bit cross-platform port (macOS ARM64 + Linux x86_64)
chasem-dev Mar 18, 2026
b08134d
64-bit audio bank relocation + pointer truncation fixes
chasem-dev Mar 18, 2026
024027f
Widen Gfx to 16 bytes on 64-bit — enables display list rendering
chasem-dev Mar 18, 2026
d76b26d
Fix SDIFileEntry struct layout for 64-bit RARC archive parsing
chasem-dev Mar 18, 2026
39f0dc9
Refactor DVDFileInfo and DVDCommandBlock for 64-bit compatibility
chasem-dev Mar 19, 2026
94147d9
Fix 64-bit pointer casts, font rendering, and emu64 texture comparison
chasem-dev Mar 19, 2026
e57312b
Add F4 fast-forward toggle for 2x game speed
chasem-dev Mar 19, 2026
18b98cd
Fix font text rendering: keyboard glyphs, NPC names, and dirty_check …
chasem-dev Mar 19, 2026
bc1ac86
Misc fixes: train scene, audio, actor control, and NPC handling
chasem-dev Mar 19, 2026
2a84abc
Player, scene, and house actor fixes
chasem-dev Mar 20, 2026
ad9888f
Fix 64-bit pointer truncation across player, actor, and audio systems
chasem-dev Mar 20, 2026
d8c7c8b
Remove GitHub Actions release workflow
chasem-dev Mar 20, 2026
474c5a6
Working Arch x86_64 build
birabittoh Mar 20, 2026
e90ce46
Fix crash when entering houses
birabittoh Mar 20, 2026
4fa553f
Merge pull request #1 from birabittoh/master
chasem-dev Mar 20, 2026
8a11e83
Add Windows 64-bit build instructions to README
chasem-dev Mar 21, 2026
51c34b8
Fix map UI rendering on 64-bit
birabittoh Mar 23, 2026
24d30e4
Add build workflow
birabittoh Mar 24, 2026
396b6ca
Fix map artifacts
birabittoh Mar 24, 2026
637800e
Restore PC menu
birabittoh Mar 24, 2026
e8198e5
Merge upstream/master into 64-bit port
birabittoh Mar 25, 2026
3fbdf38
Update workflows, fix linux i686
birabittoh Mar 25, 2026
e504ec6
Remove PR trigger on workflow
birabittoh Mar 26, 2026
afecbf9
Fix crash while entering houses
birabittoh Mar 26, 2026
3ca85a4
Fix linux32 build
birabittoh Mar 26, 2026
12260ce
Fix Linux 32-bit graphical issues via SSE2 and alignment
birabittoh Mar 26, 2026
5d146cd
Prefer discrete GPU if available
birabittoh Mar 26, 2026
4d58e47
Use discrete GPU on Linux 32-bit
birabittoh Mar 26, 2026
01af52f
Merge remote-tracking branch 'upstream/master'
birabittoh Mar 27, 2026
a0a8183
Fix crash on gyroid sounds (64-bit)
birabittoh Mar 28, 2026
1759364
Fix last crashing gyroids
birabittoh Apr 3, 2026
8b4f311
Fix custom texture loading on macOS
JPikachu Apr 10, 2026
b8150a5
Merge pull request #16 from JPikachu/master
birabittoh Apr 13, 2026
c8edd69
Merge upstream/master (v0.9.0.1)
birabittoh Apr 13, 2026
be97585
Working NES emulation
birabittoh Apr 13, 2026
fe2780c
Fix fixnes build on macOS: replace <malloc.h> with <stdlib.h>
birabittoh Apr 13, 2026
70e562f
Fix 64-bit pointer truncation in NES arena allocator
birabittoh Apr 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
124 changes: 124 additions & 0 deletions .github/workflows/build.yaml
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/
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ orig/*/*
# Build files
build/
build32/
build64/
.ninja_*
build.ninja

Expand Down
107 changes: 89 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand All @@ -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:
```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:
```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.
Expand Down Expand Up @@ -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
Expand All @@ -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

Expand Down
Loading