Skip to content

Shark Tale v1.0.0

Choose a tag to compare

@Howflet Howflet released this 26 Oct 04:20
· 4 commits to main since this release

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.

LowerCity running natively

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.app built by tools/make_app.sh.
  • Reproducible build: tools/setup_ghidra.sh recreates 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:

  1. Install the tools:
    brew install ghidra openjdk@21 ffmpeg
  2. Put your installed game's System folder in orig/System and the full game in game/. Check the binaries against docs/SHA256SUMS.
  3. 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).