Skip to content

Releases: mstan/PokemonRedAndBlueRecomp

v0.1.1 — External ROM + game_extras CRC hooks

Choose a tag to compare

@mstan mstan released this 07 May 04:50

Changes since v0.1.0

This release actually delivers the external-ROM picker that v0.1.0's release notes claimed. v0.1.0 was built against a recompiler that had regressed back to embedding the ROM in the binary; v0.1.1 fixes that and rebuilds against the NES-style hooks pattern in gb-recompiled master (commit 2f4f80c).

What changed

  • ROM is no longer embedded in the binary (1 MB shaved off the exe).
  • Launcher now resolves the ROM at runtime via Windows file picker, caches the path in rom.cfg, and validates against the multi-CRC list returned by game_get_valid_crcs() in extras.c.
  • Multi-version support is now a first-class hook: a single build accepts either Red (0x9F7FDD53) or Blue (0xD6DA8A1A) — picker re-prompts on mismatch.
  • extras.c lives in the project root and overrides only the ROM identity defaults; non-CRC game_* hooks (lifecycle, debug, dispatch) keep their gbrt defaults.
  • valid_crcs removed from pokemon_red_blue.toml — single source of truth is now extras.c.
  • Submodule replaced with a directory junction to a workspace-shared gb-recompiled clone.

Compatibility

  • Pokemon Red (UE) [S][!] — CRC32 0x9F7FDD53
  • Pokemon Blue (UE) [S][!] — CRC32 0xD6DA8A1A
  • Other variants are rejected with a "Wrong ROM" dialog.

Requirements

  • Windows 10/11 x64
  • A legally obtained Pokemon Red or Blue ROM (.gb)

Status (unchanged from v0.1.0)

  • Game runs and is playable with both Red and Blue ROMs through the Elite Four.
  • Some animations may chug slightly. Minor visual glitches in edge cases.
  • Code paths not yet discovered by the static analyzer fall back to an interpreter (slower).
  • Audio may stutter briefly in animation-heavy scenes.
  • No link cable support.

Known

  • Interpreter fallback still fires at bank 28 (0x614E/0x6150/0x6153) — same as v0.0.3 / v0.1.0, not a regression.

Files

  • Pokemon_Red_Blue.exe — recompiled native executable (49 MB)
  • SDL2.dll, libgcc_s_seh-1.dll, libstdc++-6.dll, libwinpthread-1.dll — runtime deps (msys2 mingw-w64)
  • README.md — usage notes

v0.0.3 — Zero Interpreter Fallbacks

Choose a tag to compare

@mstan mstan released this 01 Apr 21:41

Changes since v0.0.2

Entry Points

  • 47 total entry points added across this release cycle — all known interpreter fallback addresses from E4 gameplay now recompiled natively
  • Zero interpreter fallbacks during tested gameplay (title screen through Elite Four)

Cleanup

  • LCD on/off log spam moved to debug-only
  • Console output is now silent during normal gameplay

Requirements

  • Windows 10/11 x64
  • A legally obtained Pokemon Red or Blue ROM (.gb)

v0.0.2 — Performance & Correctness Update

Choose a tag to compare

@mstan mstan released this 01 Apr 21:28

Changes since v0.0.1

Performance

  • gb_tick hot path optimization — TIMA fast-path, inlined cycle counting, branch hints. Reduces per-instruction overhead (~47K calls/bank/frame)
  • Tile-batched background rendering — Fetches tile row once, decodes all 8 pixels. ~16x fewer VRAM reads per scanline
  • Optimized sprite rendering — Direct VRAM access, pre-clamped pixel loops, early off-screen skip
  • 34 missing entry points added — Eliminates all known interpreter fallbacks from tested gameplay paths

Audio

  • Smooth underrun fade-out — Audio callback fades from last sample on underrun instead of inserting hard silence, eliminating pops

Bug Fixes

  • SRAM save debounce — Saves 5 seconds after last ERAM write instead of spamming every second during RTC updates
  • Quiet save logging — No more console spam on successful saves

Requirements

  • Windows 10/11 x64
  • A legally obtained Pokemon Red or Blue ROM (.gb)

v0.0.1 — Pokemon Red & Blue Recompiled (Pre-release)

Choose a tag to compare

@mstan mstan released this 01 Apr 18:38

Pokemon Red & Blue — Static Recompilation for PC

Pre-release of the Pokemon Red/Blue static recompiler. Supports both Pokemon Red and Pokemon Blue ROMs.

What's Included

  • Pokemon_Red_Blue.exe — Windows x64 executable
  • Required DLLs (SDL2, MinGW runtime)

How to Use

  1. Extract the zip
  2. Run Pokemon_Red_Blue.exe
  3. Select your ROM when prompted (either Red or Blue)

What Works

  • Title screen, menus, overworld, NPC dialogue
  • Pokemon Center healing, saving/loading
  • Audio (music and SFX)
  • Battle system including Elite Four
  • Both Pokemon Red and Blue ROMs accepted

Rendering Improvements

  • VRAM/OAM write protection during PPU rendering
  • SCX/SCY per-scanline latching for correct scroll effects
  • LCD on/off transition state reset
  • Variable mode 3 timing based on sprite count
  • Window WY trigger correctness fix
  • Tile-batched background rendering (~16x fewer VRAM reads)
  • Optimized sprite rendering with direct VRAM access

Performance Improvements

  • gb_tick hot path: TIMA fast-path, inlined cycles, branch hints
  • Channel 4 noise LFSR iteration cap
  • Removed per-frame debug overhead from RGB conversion
  • Smooth audio underrun fade-out (no silence pops)

Known Limitations

  • Minor audio/video chug during some animation-heavy scenes
  • Later game areas may have uncompiled code paths
  • No link cable support

Requirements

  • Windows 10/11 x64
  • A legally obtained Pokemon Red or Blue ROM (.gb)