Skip to content

Add experimental SNES / Super FX port with two-level FX3 support - #538

Open
Ferine wants to merge 6 commits into
XProger:masterfrom
Ferine:snes-fx3-port
Open

Ferine wants to merge 6 commits into
XProger:masterfrom
Ferine:snes-fx3-port

Conversation

@Ferine

@Ferine Ferine commented Oct 8, 2026

Copy link
Copy Markdown

This adds an experimental SNES / Super FX port of OpenLara's fixed-point Tomb Raider engine. The primary target is a 4 MiB FX3 cartridge containing Caves and City of Vilcabamba, aiming at the GBA alpha's first two levels. The FX3 build runs in SUPERZSNES v0.310b and the TypeSNES development emulator.

The port lives in src/platform/snes. Since the 65816 toolchain accepts C, it translates the fixed-point gameplay to C and native 65C816 routines, with a Super FX renderer, rather than compiling the shared C++ engine directly.

Included

  • Textured world and model rendering, Lara movement and collision, creatures and combat, doors, switches, pickups, traps, inventory, passport save/load, and two-level selection/transitions.
  • SPC700 sound-effect playback, PC level-data conversion, build tooling, and gameplay/rendering validation fixtures. Original game data and generated ROMs must be supplied/built locally; neither is included in this PR.
  • Experimental GSU-2 configurations alongside the primary FX3 target. FX3 requires explicit emulator or cartridge support.
  • A project README with build instructions and emulator screenshots, plus implementation notes and remaining work.

The shared-code changes add the SNES packer configuration and make the host packer portable beyond Windows. Separate commits also fix rotated drawbridge floor coverage and navigation's blocked mask and empty queue tail.

Validation

  • Python tooling suite: 78 tests passed, rerun before submission.
  • Recorded TypeSNES runs on the same two-level FX3 ROM: 136 passed / 20 skipped for Caves and 98 passed / 58 skipped for City of Vilcabamba. Skipped cases are not counted as coverage; some differential fixtures need separate reference ROMs.
  • SUPERZSNES v0.310b interactive checks: FX3 boot, both level selections, movement, jumping, weapon controls, inventory, passport save/load, and emulator save-state restoration. Wolf attacks and health loss were also observed in Vilcabamba.
  • README asset links and PNG metadata checked; git diff --check passes.

Known gaps

Physical FX3 hardware qualification and complete normal playthroughs remain outstanding. Pose interpolation, lighting, water effects, and audio parity are incomplete. Performance varies substantially with scene complexity, and the Vilcabamba wolf encounter showed visible slowdown. Super ZSNES testing was interactive smoke coverage; audio was not validated there.

Screenshots

Native output captured in SUPERZSNES v0.310b, with the in-game FPS counter retained:

Caves City of Vilcabamba
Caves gameplay City of Vilcabamba gameplay

See the SNES README for build instructions, controls, and the source layout.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant