YoshiNESRecomp
YoshiNESRecomp is a PC port of Yoshi for Windows, built using the NESRecomp framework.
- Type: PC port
- Game: Yoshi
- Runs on Windows
- By mstan
- Latest release v1.2.1, 2026-10-19
- Source: https://github.com/mstan/YoshiNESRecomp
- Website: https://discord.gg/Ad9BwSzctP
README
YoshiNESRecomp
This recompilation is a byproduct of developing nesrecomp — the games are the proving ground, the framework is the goal. These are in-development previews, not finished ports — expect rough edges, and depth will keep landing over months, not days. My time for any one title is limited, so I ask for your patience. Contributions are welcome — testing, issues, and PRs to the game or framework all help and will accelerate this game's polish. More on the why at: Recomp + AI: 5 Months Later »
Static recompilation of Yoshi (NES) for native PC. Built with the NESRecomp framework.
Status: Believed fully playable. Title screen, single-player puzzle mode, two-player versus, and the demo all run end-to-end. If you find a bug, please open an issue.
Cycle backend migration branch
Default cycle controls: arrows move, Z is A, X is B, Enter is Start and
Backslash is Select. Escape opens the menu, Tab fast-forwards, and F8/F9
save/load the cycle state. Use Controls to remap inputs in config.ini.
Older keybinds.ini and F5/F6/F7 instructions below apply to the legacy host.
The normal build now uses the cycle CPU backend. Code is generated from the
original ROM during configure and stays in the build directory. Run setup.bat
or setup.sh to initialize the pinned engine/UI submodules, then configure:
cmake -S . -B build-cycle -DNESRECOMP_ROM="/path/to/Game.nes"
cmake --build build-cycle --config Release --parallel 4
Version 1.2.1 uses the verified USA retail payload E7EAD93B (128 KiB PRG,
32 KiB CHR), replacing the previous larger input. Both the catalog header and
the old header that incorrectly declares 64 KiB CHR are supported for this
complete payload. See ROM header details. Saves/states
from the previous different image are not qualified for this release.
Run the executable with that same ROM path. The launcher verifies the image;
the runtime also verifies cartridge metadata and PRG identity. NESRECOMP_ROOT
and NESRECOMP_RECOMP_UI can name other checkouts, and cross builds accept
NESRECOMP_HOST_COMPILER pointing to a runnable host compiler.
Keep the old generated sources and select them explicitly with
-DNESRECOMP_BACKEND=legacy in a separate build directory. Legacy save states
cannot be loaded by the cycle backend; its cartridge shortcut slot uses
saves/<ROM stem>.cycstate. Preserve existing saves and settings during rollout.
Cycle-native comparisons use nesrecomp/tools/cyc/cyc_verify.py; --interp-only
runs the cycle interpreter for diagnosis. Earlier --verify / --emulated
Nestopia entry points remain in the legacy build.
The owner accepted the original short Windows migration playtest on 2026-10-04. Version 1.2.1 additionally checks header acceptance, launcher Play and 900-frame native/interpreter startup parity with the verified USA image. These checks do not establish full-game completion or qualification on other platforms.
What Works
- Title screen
- Single-player puzzle mode (Type-A and Type-B)
- Two-player versus mode
- Score, level, and speed display
- The attract-mode demo
- Both controllers
Quick Start
- Download
YoshiNESRecomp-windows-x64.zipfrom Releases - Extract and run
YoshiRecomp.exe - Select your Yoshi (USA) ROM when prompted — the path is saved for future launches
Controls
| NES Button | Keyboard |
|---|---|
| D-Pad | Arrow keys |
| A | Z |
| B | X |
| Start | Enter |
| Select | Tab |
| Hotkey | Action |
|---|---|
| F5 | Toggle turbo (fast-forward) |
| F6 | Save state |
| F7 | Load state |
Yoshi is a puzzle game with no battery save, so save states are the way to bookmark a session.
Building from Source
Requires Visual Studio 2022 and CMake 3.20+.
git clone https://github.com/mstan/YoshiNESRecomp
cd YoshiNESRecomp
# Windows
setup.bat
# Linux / macOS
chmod +x setup.sh && ./setup.sh
This initializes the pinned nesrecomp submodule and links the Nestopia oracle core.
Then build:
cmake -S . -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Release
Place your Yoshi (USA) ROM in the build directory or select it at runtime.
Architecture
This is a static recompiler, not an emulator. The original 6502 machine code is translated to C at build time, then compiled to native x64. The NES PPU, APU, and MMC1 mapper are simulated by the runner library.
game.toml— recompiler configuration (data regions, dispatch extras)extras.c— game-specific hooks (TCP debug server, verify-mode integration)verify_mode.c— optional dual-execution verification against a Nestopia oraclegenerated/— auto-generated C code (do not edit manually)nesrecomp/— framework, consumed via directory junction + pin file
Known Limitations
- Audio is basic (APU register writes are captured but full audio mixing is work-in-progress)
License
PolyForm Noncommercial 1.0.0 — see LICENSE. Third-party
components retain their own licenses.
R.A.I.D. — Retro AI Development · a Discord for AI-assisted retro reverse-engineering, decomp & recomp
Cycle Windows builds use tools/build.ps1 -Rom <original-ROM>. Create a ROM-free
ZIP with tools/make_release.ps1 -Rom <original-ROM>; -SkipBuild -BuildDir build-cycle packages an existing production cycle build. Legacy C remains
available through explicit CMake selection.
