Only genuine remaining divergences live here: behavior that is still missing, wrong, or approximated for convenience and would need more work for true parity. Faithfully-ported behavior is documented in docs/behavior-porting-notes.md; deliberate additions beyond the original are in docs/new-features.md.
The original ROM defines trainer data for PROF_OAK and CHIEF
(data/trainers/parties.asm) but never attaches either to an NPC, so
both battles are unreachable in the real game. This project makes them
fightable after the Hall of Fame:
- Prof. Oak battles you in Pallet Town once
EVENT_BEAT_CHAMPION_RIVALis set, usingProfOakData's three starter-matched teams (the team is picked by the type that counters your starter, mirroring the rival). - The Celadon Game Corner Chief battles you in his house post-game.
ChiefDatais empty in the ROM, soOPP_CHIEFis given a reconstructed party.
This is an intentional divergence: neither battle can be triggered in the original game.
engine/events/card_key.asm and the unused CardKeyTable1/2/3 coordinate
lists (data/events/card_key_coords.asm) describe locked doors for Silph
Co. floors 2F-11F, but no retail .blk map layout ever places the closed
door block at those coordinates, so the card key check is dead code in
the original game. This project stamps the closed door block ($54/$5f
on floors 2F-10F, $20 on 11F) over each of the 20 door coordinates on
map load, and swaps it for the open block once that door's
EVENT_SILPH_CO_n_UNLOCKED_DOORn flag is set (using the key from a Team
Rocket grunt, as in the original's unused design).
This is an intentional divergence: the doors are not visible or
functional in the original game. The door layout lives in
tools/rom_manifest.json (field.cardKeyDoors.closedDoors), hand-ported
since no retail ROM data encodes it; src/import/RomExtractor.lua copies
it straight through on ROM import.