Skip to content

v0.1.0

Choose a tag to compare

@banteg banteg released this 08 Oct 10:58
· 104 commits to master since this release

The first playable release of the Snail Mail port: the recovered source of the original Windows game, compiled and running on modern platforms.

Play it in the browser: https://snail.banteg.xyz

What's in it

  • The game, built from its recovered source. 785 functions recovered by matching decompilation, 637 of 662 port-relevant ones byte-proven against the original executable. They compile into a 32-bit wasm program, with a few SNAIL_PORT guards, each listed in divergences.md. No game logic is rewritten: the original's Direct3D 8 and BASS 2.0 layers are emulated underneath it.
  • Browser build. WebGL2 and Web Audio presenters, keyboard and mouse, and saves (progress, options, score tables) kept in the browser. It opens on the game's own loading screen.
  • Native host (macOS). The same program through wasm2c in an SDL3 window, with SDL3 GPU and SDL3_mixer. Saves land beside SnailMail.dat, as on Windows.
  • Played: the intro, the menus, and the tutorial, postal, challenge and time trial modes.

How we know it plays like the original

Two oracles compare the port with the original executable tick by tick:

  • Replay oracle: 20 of 20 high-score runs recorded by the original replay bit for bit (57,817 ticks).
  • Session oracle: 10 of 10 sessions captured from the original under Frida match on every tick (56,977 ticks). Each tick compares the game state, the RNG and the logic result, across menus, tutorial, postal, challenge and time trial play.

Getting there meant reproducing the original's x87 floating point exactly:

  • float sums in the order VC6 evaluated them;
  • trig tables built from double angles, as the original did before its Direct3D device lowered the FPU's precision;
  • double rounding when a denormal is stored.

These are all written up in the port plan.

Not yet

  • Comparing rendered frames with captures of the original.
  • SPIR-V and DXIL shaders for native Linux and Windows.
  • 64-bit builds (stage 5).

Building

The repository doesn't include the game's files. Put SnailMail.dat and SnailMail_unwrapped.exe in artifacts/bin/; see the README and the port plan.