- 1
- Posts
- 166
- Days
- Seen Jan 14, 2024
I've completed my first pass at a romhack of Pokemon Yellow trying to take a novel approach at vanilla bugfixes. This is Pokemon Yellow: Fort Knox Edition.
Patch file available here:
github.com
Original ROM: CRC32 7d527d62
With Fort Knox Edition Patch: CRC32 da1d3dd0
The goal of Fort Knox edition is to patch out known exploits, bugs, oversights, etc, with real infosec level fixes, primarily starting with ones that affect the speedrun route as I come from a speedrunning background administrating the Gen 1-3 speedrunning discord. Many of the changes are sourced from previous wikis made by pret which have gone defunct and from research by the Pokemon Speedrunning community. To note some of the more important changes:
If you're interested in helping contribute, pull requests are welcome on the project. I'm implementing the bugfixes as a compiler flag, so in the GitHub repo you can clearly see the changes required to fix a bug separated out from the original code.
Patch file available here:
Release Fort Knox Edition v1.0 · TiKevin83/pokeyellow
A vanilla romhack of Pokemon Yellow working on the most up to date understanding of bugfixes and glitches. Implements hardening strategies to block save corruption, trainer fly, and RNG manipulatio...
With Fort Knox Edition Patch: CRC32 da1d3dd0
The goal of Fort Knox edition is to patch out known exploits, bugs, oversights, etc, with real infosec level fixes, primarily starting with ones that affect the speedrun route as I come from a speedrunning background administrating the Gen 1-3 speedrunning discord. Many of the changes are sourced from previous wikis made by pret which have gone defunct and from research by the Pokemon Speedrunning community. To note some of the more important changes:
- A flag is added during save and quit to indicate if the user has turned off the console while saving, and if so prevent the save from being loaded.
- The checksum to evaluate whether a save has become corrupted through sources like battery depletion is made more useful
- Trainer fly is fixed
- Badge boost reapplication is fixed, so you can't use X items to boost your other stats simultaneously and can't gain attack from getting string shot-ed on route 3
- The order in which you obtain badge boosts is fixed to match the in game text and the gen 3 remake
- The lavender tower poke doll sequence break is patched by marking the battle as a loss instead of a win
- Two strategies are implemented in tandem to make RNG manipulation very difficult:
- The RNG algorithm is replaced with a PRNG with known statistically validated randomness properties. This prevents issues like those recently discovered with catch rates and "DSUM" manipulation where the encounter slots act as a predetermined cycle which you can use to only walk in grass while specific pokemon are possible to encounter. These problems were caused by the original RNG algorithm having correlational effects where the value of one random number call is closely related to the value of the previous call.
- The RNG Algorithm's seed state is saved along with the rest of game data, making it impossible to reset the game back to a known state to then perform an exact sequence of inputs to generate encounters with exact species and stats. Combined with the previous change this makes obtaining a Nidoran for a speedrun effectively require searching for one in the grass and with no guarantee of its stats.
- Moves being 1/256 less likely to hit than intended including 100% moves
- High critical hit rate moves and dire hit are made a flat 4x buff each instead of 8x and 1/4th
- The Pikawalk buffer overflow is checked and prevented where having Pikachu fall asleep to Jigglypuff in the Pewter Center could be used to overflow the follow direction buffer and corrupt data.
- Surge cans are made to consistently have a 2nd switch next to the first switch, which they tried to fix from Red but failed to
- Lesser known bugs I've found personally while speedrunning including Fast Options and the Pikachu cutscene battle animation severity bug are patched
- Fast options allows you to change all the menu options to the left or to the right if you press the direction the same frame on which you press A to open options.
- The developers forgot that you don't have any Pokemon yet while adding the Pikachu cutscene and thus forgot that battles have an animation which tries to indicate the intensity or difficulty of the battle. This leads to the animation somehow using temp data from when you set your rival name in its determination of what your Pokemon's level is against the wild Pokemon's level. The hack avoids this undefined behavior by always making the transition the more intense type if you don't have any Pokemon in your party.
- Getting Sand Attacked while Thrashing/Rage/Petal Dance doesn't repeatedly reduce your accuracy on successive turns
If you're interested in helping contribute, pull requests are welcome on the project. I'm implementing the bugfixes as a compiler flag, so in the GitHub repo you can clearly see the changes required to fix a bug separated out from the original code.
Last edited: