Skip to content

v0.2.0

Choose a tag to compare

@banteg banteg released this 08 Oct 14:57
· 94 commits to master since this release

Switchable enhancements for the port, plus fixes that make it look like the original on real hardware.

Play it at https://snail.banteg.xyz

Enhancements

Open them from the gear in the page's corner, one by one or with the Original / Enhanced presets. The page remembers your choice. The native host has the same options, all on by default; --original turns them all off.

  • Sharp rendering. The game draws at your display's resolution instead of 640×480. Everything lands where it did, only finer. Toon outlines keep their original weight: each one is drawn one original pixel wide rather than one screen pixel.
  • Fullscreen. The game's own Fullscreen option now works, in the browser and natively. Leaving fullscreen through the browser or the window turns the option off, so the Options menu stays accurate.
  • Trap the mouse. A click locks the pointer to the game, and the game's cursor moves at its original speed. Escape releases it and still opens the in-game menu.

Fixes

  • Fog. Levels fade into their fog colour again. Drivers compute fixed-function vertex fog from the absolute eye-space depth, and the game's right-handed view puts everything ahead at negative depth, so the port's signed version never fogged.
  • Turrets. The wall2 turrets (the pillars on the track) were invisible; only their lasers showed. When loading them, the game multiplies each vertex by a matrix through a mismatched declaration, and the bridge the link step generated put its arguments in the wrong order for wasm. A hand-written shim replaces it, and snail port link now leaves anything a shim defines alone.

Comparing frames with the original

Any frame of a session captured from the original can be rendered by the port at the same tick:

uv run snail port lockstep <session> --stage DIR
port/zig-out/bin/snail-native --original --tape T --screenshot FILE DIR

T is the frame's tick count in the capture. The turret fix came from the first such comparison.

The oracles still match the original bit for bit: 20 of 20 recorded high-score runs, and 10 of 10 captured sessions.

Shelved

A longer view down the track works, with both oracles matching, but objects still spawn where the game spawns them, and the extra distance made their pop-in plain. It's kept on the shelf/draw-distance branch.