Important Resources: - Gen 3 Flash Save Corruption Tool: https://github.com/CasualPokePlayer/Gen3FlashSaveCorruptionTool/releases/latest - GBA Flash Speed Test: github.com/CasualPokePlayer/gba-flash-speed-test - FlowTimer: https://gunnermaniac.com/ft Before running: The save corruption window is roughly ~1.5 frames large. This window will also vary depending on your cartridge (due to flash being non-deterministic) and may move around slightly in practice (again due to flash being non-deterministic). Gen 3 Flash Save Corruption Tool is intended to help calibrate your hard reset offset. It reports the each save sectors' (Sect) calculated checksum (CChk), stored checksum (SChk), save chunk ID (ID), and save interrupt point (IntPnt). The save interrupt point reports the number of bytes that were successfully written before the hard reset occurs. Note: the calculated checksum, stored checksum, and save chunk ID would be FC1F, FFFF, and 65535 respectively if the sector is fully erased. The goal is to reset after save chunk 11 has completed saving but before savechunk 12 is erased. In case you're slightly early, save chunk 11 will only be partially saved, with FFFF and 65535 in the stored checksum and save chunk ID, while the calculated checksum would not be FC1F. In case you're slightly late, save chunk 11 will be completed and save chunk 12 will be partially erased. It appears if a reset occurs very early in the erasure process, the sector will end up becoming all 0s rather than all FFs (and possibly having a few bits of junk leftover, leading to a weird calculated checksum). If you're fairly late, save chunk 12 will appear fully erased (FC1F/FFFF/65535). Gen 3 Flash Save Corruption Tool can be loaded up using GBI cli args. In the .cli file, simply place the path to the .gba file as an argument (e.g. I place it in the GBI folder and use slot 2 for my SD Card, so I put in cardb:/GBI/FlashSaveCorruptionToolMB.gba). Hold Start+Select during the GBA BIOS intro to load up the tool. GBA Flash Speed Test is a test I wrote a while ago. It will tests the speed of sector erasure and programming. You can use it to get an idea of the window for corrupting the save when clearing all save data (take the average of sector 0 and divide by 280896 to get a rough frame window). The test can be loaded up with GBI like with Gen 3 Flash Save Corruption Tool. Note, the test will nuke whatever save is present on the cart. Trainer ID Frames: |-------|-------| | Frame | TID | |-------|-------| | 8385 | 16080 | | 8386 | 11698 | | 8387 | 62149 | | 8388 | 62372 | <- TARGET | 8389 | 61684 | | 8390 | 11418 | | 8391 | 47004 | |-------|-------| Offset: 100000/139289 Mudkip Frames: |-------|-------------------|---------| | Frame | Stats | Nature | |-------|-------------------|---------| | 1579 | 20/12/ 9/11/12/ 9 | Gentle | | 1580 | 20/13/12/ 9/11/10 | Impish | | 1581 | 21/12/11/11/10/ 9 | Hardy | | 1582 | 20/13/10/10/ 9/11 | Naive | <- TARGET | 1583 | 21/10/10/11/10/10 | Modest | | 1584 | 21/12/11/10/ 9/ 9 | Lax | | 1585 | 20/12/11/10/10/ 9 | Serious | |-------|-------------------|---------| Offset: 26500 Route: - Always delete all save data before the run (Up+B+Select on the title screen). - Begin FlowTimer on soft reset for TID+SID manip - Wait around 1:40 before hitting New Game. - Pick Boy for a few seconds timesave (doesn't really matter in the end). - (Optional) Grab PC potion for safety. - After you get Poke Balls, catch 1 Pokemon on the way to Oldale. - Save the game more times outside the Pokemon Center. Stop once you've done your 4th save total (make sure to count the save from Mudkip manip). - Soft reset and enter the erase all save data screen (Up+B+Select). - Say yes to erasing all save data, but hard reset a few frames afterwards. The exact window varies depending on the cartridge, but should be fairly large (e.g. ~7 frames). - If successful, the game will inform you the save is corrupted and the previous save will be loaded. - Put Mudkip in Box 12, slot 18 (third row on the rightmost column). - Save the game again, this time hard resetting while the game is saving. The exact offset varies depending on the cartridge (my offset is 4585). - If successful, the game will let you load the save and will not inform you of any corruption. - Note, there is no indication of whether you are early or late! If the game tells you the save is corrupted, you can try the corruption again by saving the game again and redoing the Up+B+Select corruption. - Box Names: _ 6 G ’ F B _ ♂ W _ C L Q D X A A J T B H Q B H _ _ B H O A I - ’ is right single quote, _ is where space must be entered. - Grab the glitch Pokemon swap it against the Pokemon in your party. Alt Box Names (1 less box, but probably longer to write anyways): _ 6 G ’ … _ _ _ W F B _ ♂ _ C A A W S D H L A Y Q B H t Q B H _ _ B H _ _ _ _ _ W N - ’ is right single quote, … is the 2 dot ellipses, _ is where space must be entered.