# YoshisCookieRecomp > _This recompilation is a **byproduct of developing > [nesrecomp](https://github.com/mstan/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 »](https://1379.tech/recomp-ai-5-months-later/)_ Static recompilation of Yoshi's Cookie (NES) for native PC. Built with the [NESRecomp](https://github.com/mstan/nesrecomp) framework. > **Status: Believed to be 100% playable.** Both 1P and VS modes tested through full gameplay with zero oracle divergence against Nestopia. 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: ```sh cmake -S . -B build-cycle -DNESRECOMP_ROM="/path/to/Game.nes" cmake --build build-cycle --config Release --parallel 4 ``` 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/.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 short Windows playtest on 2026-10-04. These remain branch previews; no merge or release has been performed. Desktop Windows checks cover a short gameplay route and runtime menu/input/save-state behavior; other platforms and full-game completion have not been validated by this migration. ## What Works - Title screen and menu navigation - 1P puzzle mode (all rounds, speeds, music types) - VS mode (2-player on one keyboard) - Options screen (round, speed, handicap, music selection) - Cookie grid rendering and puzzle mechanics - Score tracking and game-over states ## Quick Start 1. Download the latest release from [Releases](../../releases) 2. Extract and run `YoshisCookieRecomp.exe` 3. Select your Yoshi's Cookie (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 | ## Building from Source Requires Visual Studio 2022 and CMake 3.20+. ```bash git clone https://github.com/mstan/YoshisCookieRecomp cd YoshisCookieRecomp # Windows setup.bat # Linux / macOS chmod +x setup.sh && ./setup.sh ``` This initializes the pinned [nesrecomp](https://github.com/mstan/nesrecomp) submodule and links the Nestopia oracle core. Then build: ```bash cmake -S . -B build -G "Visual Studio 17 2022" -A x64 cmake --build build --config Release ``` Place your `Yoshi's Cookie (USA).nes` 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 mapper are simulated by the runner library. - `game.toml` — recompiler configuration (trampolines, inline dispatch, data regions) - `extras.c` — game-specific hooks (ROM CRC verification) - `generated/` — auto-generated C code (do not edit manually) - `nesrecomp/` — framework submodule (recompiler + runner) ## ROM Details - **Mapper:** 4 (MMC3) - **PRG ROM:** 128 KB (8 x 16 KB banks) - **CHR ROM:** 64 KB (8 x 8 KB banks) - **Expected CRC32:** `0x52B58732` (headerless, USA release) ## 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`](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

Join the Retro AI Development (R.A.I.D.) Discord

Cycle Windows builds use `tools/build.ps1 -Rom `. Create a ROM-free ZIP with `tools/make_release.ps1 -Rom `; `-SkipBuild -BuildDir build-cycle` packages an existing production cycle build. Legacy C remains available through explicit CMake selection.