Repository navigation
Releases
v2.5.0 - experimental Seamless mod
v2.5.0 - experimental Seamless mod
Adds Seamless at the top of Mods, marked Experimental and disabled by
default. Enable it to join supported connected rooms into a continuous world
with moving neighboring actors and adaptive Fit to screen widescreen.
- The camera follows across supported horizontal and ladder seams, clamps at
region edges, and adapts to wide or portrait windows without stretching. - Pause, inventory and dialogue retain the expanded view. Characters stay in
place during dialogue; neighboring terrain, NPCs and enemies use the correct
world colors. Death and retry preserve the adaptive canvas. - Resize freely; mouse wheel changes pixel zoom, and F4 shows the connected map.
Start pauses, Select opens inventory, and B closes it. - Doors, key checks and scripted region changes retain their native behavior.
Seamless and Play as Link are separate, mutually exclusive local-play mods.
Validation: the owner passed a preliminary playtest. Automated checks cover
representative seams and ladders, native door rules, NPC and portrait dialogue,
pause/inventory, adaptive resizing, death/retry, current-build save/load, and
native/interpreter agreement. Broader progression, bosses and secrets remain
under qualification; combat/projectiles across room ownership boundaries are
incomplete. See Seamless details and limits.
Download and extract FaxanaduRecomp-windows-x64.zip, run the executable, and
select your own Faxanadu USA ROM. Windows x64 runtime dependencies and both
mod catalogs are included. No ROMs, extracted owner assets, player settings or
saves are included. Native mantra saves remain supported; save states are
build-specific.
v2.4.0 - experimental Play as Link mod
Adds the optional Play as Link mod, marked Experimental in the Mods menu and disabled by default.
- Link has Zelda II movement physics, sword/shield combat, upstab/downstab, full-health sword beams and all eight spells, adapted to Faxanadu's native equipment, HP/MP and progression.
- Requires your own Faxanadu USA and Zelda II: The Adventure of Link USA ROMs. Graphics and sound parameters are read locally. No ROMs are included.
- Fixes Link's transition flicker and sword-beam alignment. Faxanadu's gameplay HUD remains unchanged.
- Includes the installable, metadata-only
Play-as-Link.nesmod. Its trusted gameplay plugin is built into this compatible game executable.
Open Mods, select your Zelda II USA ROM, enable Play as Link, then launch Faxanadu. A jumps, B attacks, Down crouches, airborne Up/Down stab; Select opens magic and Up+B casts. Start opens native inventory; Down+Start uses the selected native item. C/V are optional cast/picker keyboard shortcuts.
Validation includes 7,306 source-ROM controller checks, eight-spell and current-build save/load checks, native/interpreter agreement, frame-by-frame HUD/beam/transition checks, and actual Experimental-badge rendering. Earlier assisted world/boss coverage and the remaining limits are documented in Link QA. Link is local-only; complete quest-route coverage and netplay are unqualified. Save states are build-specific; native mantra saves remain supported.
Windows x64 runtime dependencies are included. The archives exclude ROMs, owner assets and player configuration/save data. Checksums are attached.
Implemented in PR #6, with NESRecomp experimental metadata support.
v2.3.3 - cartridge header compatibility
Fixes launcher verification succeeding but Play rejecting equivalent original ROM headers. This build uses the shared cartridge correction and regenerated native code. Legacy iNES, NES 2.0 and multi-region containers are accepted for the matching game data and resolved board; board/RAM/console/program-data checks and qualified regional timing remain enforced. No player setting is required.
Validation: 900-frame native/interpreter/header comparisons and real launcher Play pass. Extracted production ZIPs pass dependency and header-boot checks. Existing UI pin, renderer, enhancements and normal player audio defaults are retained. Automated tests use muted output. These checks cover header/startup regression, not a new complete mechanics audit. Native Linux x86_64 recheck passed under Ubuntu/WSL with system SDL2 selected explicitly: released-source game builds, 900-frame legacy/NES 2.0/multi-region native/interpreter comparisons with matching Windows state hashes and pixels, and real SDL/recomp-ui launcher Play under private Xvfb/software OpenGL. Linux GCC/Clang header contracts and source CLI generation/static-library checks also pass. The published Windows archives are unchanged. Default SDL2 discovery is fixed on current engine/game source branches (mstan/nesrecomp#77). For immutable release-tag source, explicitly set SDL2_DIR to the native system SDL2 CMake package, or build the latest source branch for automatic detection.
Extract the entire Windows ZIP and select your own matching original ROM. USA retail inputs are preferred where available. No ROM, player settings, saves, logs or dumps are included. CD Speed and Fast Loading packages are absent. SHA256SUMS.txt covers every archive.
Source changes: #4.
v2.3.2 - Windows runtime packaging fix
Fix the Windows x64 package's missing Microsoft C++ runtime DLLs. The ZIP now includes MSVCP140.dll, VCRUNTIME140.dll and VCRUNTIME140_1.dll, so these dependencies no longer require a separate VC redistributable installation.
This is a packaging-only patch. The game executable and every other existing payload file are byte-for-byte identical to v2.3.1; only the three official x64 runtime DLLs and WINDOWS-RUNTIME.md are added. Existing renderers, mod defaults, settings, saves and normal audio defaults are preserved. This patch does not add automatic crash diagnostics to this game.
Validated from clean extractions: first launcher launch and real Play-to-game startup; loaded module paths resolve to the bundled DLLs; PE runtime dependency closure; all 900 frame hashes and the final image from a short startup/game route match the previous package. Kirby and Lost Levels custom scripts also reject missing runtime files and package the required DLLs. This is startup/package validation, not a fresh full-game content audit.
No game ROM, BIOS, player configuration, saves or generated diagnostic files are included. Keep using the same matching original game image as v2.3.1.
Source packaging changes: #3. Source commit: 4e1ba5d19f9e199994f56134b148e1cc26643133.
Preserved executable: v2.3.1 source commit 4f3ab21635c6175078a8cd1aca9ee30b41a1b780. WINDOWS-RUNTIME.md records the prior ZIP identity and reproduction steps.
v2.3.1 — Faxanadu coverage update
Native coverage expands through validated USA region routes and all eight original boss species. Generation checks the matching retail payload.
Six region routes and eight boss encounters pass exact native/interpreter and post-harvest replays. Boss-route interpreted ROM cycles fall from 586,509 to 5,632, with zero RAM fallback. Boss victories and the ending remain outside this bounded pass. Rendering remains stock.
Windows x64. Matching North American/shared NTSC retail ROM required; no ROM is included. Extracted production package launcher/settings and representative gameplay replays pass. Audio is enabled at normal volume by default; optional enhancements retain their existing defaults. ZIPs exclude ROMs, BIOS files, saves, settings and debug artifacts.
Source: 4f3ab21635c6175078a8cd1aca9ee30b41a1b780. Source changes: #2.
Windows runtime packaging update: v2.3.2 includes the VC++ runtime DLLs missing from this older ZIP. The game executable is unchanged.
v2.3.0 — cycle CPU default
The cycle CPU backend is now the default. The former backend remains available through explicit source-build selection.
Preserves mantra save/prefill and launcher password editing. The owner playtest passed.
Validation covers the recorded short owner playtests and focused automated checks. Full-game completion and new Linux/macOS runtime qualification are not claimed by this Windows release.
Game archives contain no ROM or personal save data. Select the matching original ROM at first launch. Legacy binary save states require the retained legacy backend; they do not load in cycle mode. Existing cartridge battery/password progress is preserved through the documented storage/import workflow.
Source default: master at 902b8b2c5597e65607ad0f8cac54294eda71770c.
v2.2.0 - Password (Mantra) Save System + HUD fix
FaxanaduRecomp v2.2.0 — Password (Mantra) Save System + HUD fix
Highlights
Automatic password (mantra) saves
Faxanadu saves progress with a "mantra" (password) rather than battery SRAM.
This release captures your mantra automatically as you play — stored in
faxanadu.srm next to the exe — and auto-fills it on the password screen
when you choose CONTINUE. No more copying mantras by hand. Every distinct mantra
is also appended to a timestamped faxanadu_mantra_log.txt, so you can roll back
to any earlier point in your playthrough.
Editable mantra in the launcher
The pre-boot launcher's SAVE panel now shows your current mantra and lets you
edit it — or paste an older/shared one — behind a confirmation step, so you
can jump to a specific save state from the launcher before the game even boots.
HUD corruption fix
Fixed the status bar filling with garbage tiles after a left/right screen
transition. The sprite-0 HUD-split was failing to activate on screens whose base
nametable is NT1, so the HUD region fell through to the game background; the HUD
now renders correctly on every screen, both walk directions. (Framework fix in
NESRecomp — also benefits other NES titles.)
Install
Download FaxanaduRecomp-windows-x64.zip, extract anywhere, and run
FaxanaduRecomp.exe. On first launch, select your legally-obtained Faxanadu
(USA) ROM — no ROM is included. The path is remembered afterward.
Controls (configurable in keybinds.ini): arrows = D-Pad, Z = A, X = B,
Enter = Start, Tab = Select. F5 turbo, F6/F7 save/load state.
Faxanadu — Linux (AppImage, initial/experimental)
Initial experimental Linux release — x86_64 AppImage.
Bring your own ROM. Place your legally-dumped Faxanadu (.nes) ROM in the same folder as the AppImage; it's auto-detected at launch. No ROM is included.
Run it
chmod +x Faxanadu-x86_64.AppImage
./Faxanadu-x86_64.AppImage # add --appimage-extract-and-run if FUSE is unavailable
Steam Deck / controllers — the AppImage reads the controller natively. In Desktop mode, launch through Gaming Mode (or set a Gamepad controller layout) so face buttons aren't remapped to keyboard keys.
Production build — no debug server / tooling. Early, experimental Linux port; expect rough edges. Source: this repo.
v2.1.0
v2.0.0 — Debug Infrastructure + Nestopia Oracle
What's New
Debug Infrastructure
- TCP debug server on port 4370 (JSON protocol) — query registers, RAM, PPU state, frame history, watchpoints, pause/step
- 36000-frame ring buffer for retroactive state queries
- Recomp stack tracking — 16-deep function call stack in generated code
- Dispatch miss file logging — misses logged to
dispatch_misses.login game.cfg-compatible format - Watchdog timer — detects stuck frames, logs call stack
- Python TCP client (
tools/dbg.py)
Emulator Oracle (Nestopia)
--emulatedmode: Nestopia libretro core drives the game (its own CPU/PPU/APU)--verifymode: native recompiled code runs the game, Nestopia runs in background, RAM compared each frame, divergences logged- Nestopia added as git submodule (libretro/nestopia)
Debug Gating
- All debug features (TCP server, verify mode) disabled by default
- Create an empty
debug.ininext to the exe to enable --verifyand--emulatedflags auto-enable debug
Usage
FaxanaduRecomp.exe # Normal play (ROM file picker if no cached path)
FaxanaduRecomp.exe rom.nes # Play with specific ROM
FaxanaduRecomp.exe rom.nes --emulated # Nestopia emulator mode
FaxanaduRecomp.exe rom.nes --verify # Verify mode (divergence detection)
Requirements
- Windows 10/11 x64
- Faxanadu (USA) NES ROM (CRC32: 0x57DD23D1)