Repository navigation
Shark Tale v1.0.0
The first playable release of the native Apple Silicon port of Shark Tale (PC, 2004).
The game's original x86 code is translated to C ahead of time (static recompilation) and runs natively on arm64, with no emulator, Wine or CrossOver.
What works
- Graphics: Direct3D 8 reimplemented on Metal, with the fixed-function pipeline as a single shader. Runs at 1600×1200 or any resolution the game offers, in a window or full screen.
- Sound: OpenAL via macOS, with music (Ogg Vorbis) and every sound effect (a native Bink audio decoder).
- Movies: all intro and story movies (Bink video via FFmpeg).
- Input and saves: keyboard and mouse, with mouse capture in full screen and a free mouse in a window (click to capture, ⌘ to release). Saves and settings go to
~/Library/Application Support/Shark Tale. - Performance: about 140–290 fps uncapped on an M-series Mac; vsync-capped in a window.
- Packaging: a self-contained
Shark Tale.appbuilt bytools/make_app.sh. - Reproducible build:
tools/setup_ghidra.shrecreates the Ghidra project, and the output was tested byte-identical to the original build.
How to get it running
This release contains no game files and no prebuilt app. The game's code and data belong to Activision, so you build the app yourself from your own copy of Shark Tale for PC:
- Install the tools:
brew install ghidra openjdk@21 ffmpeg
- Put your installed game's
Systemfolder inorig/Systemand the full game ingame/. Check the binaries againstdocs/SHA256SUMS. - Build:
tools/setup_ghidra.sh && tools/recomp_build_all.sh && tools/make_app.sh
The README has the details, including the Game.ini settings.
Known issues
- Tested in depth only through the first level (LowerCity). Later levels, mini-games and races are untested.
- The engine issues each draw call twice: harmless, but it costs some speed.
- EAX reverb is not emulated.
Requires a Mac with Apple Silicon (developed on macOS 27).
