====== EEPROM Memory Map ====== The EEPROM is a chip inside the cartridge where the save game data is stored. The game stores the star, coin, cannon, and Mips data for each of the four save files and some main menu state. In order to protect against data corruption, the game stores a duplicate copy of each block and a 4 byte checksum at the end of it. If the checksums of the original and the copy don't match, then the game knows that something bad happened to your save file and will repair the corrupted data with the copied data. ===== Top Level Structure ===== ^ Start ^ End ^ Description ^ | 0x000 | 0x037 | File A data | | 0x038 | 0x06F | File A data (Copy) | | 0x070 | 0x0A7 | File B data | | 0x0A8 | 0x0DF | File B data (Copy) | | 0x0E0 | 0x117 | File C data | | 0x118 | 0x14F | File C data (Copy) | | 0x150 | 0x187 | File D data | | 0x188 | 0x1BF | File D data (Copy) | | 0x1C0 | 0x1DF | Main Menu data | | 0x1E0 | 0x1FF | Main Menu data (Copy)| ===== Save File Data ===== The first 8 bytes seem to always be loaded as 0x00, even if you try to save those bytes as something else. The secret stars at 0x08 are for Toads/Mips. The flags at bytes 0x09 to 0x0B are there to determine if you done a specific action like unlock a door, lost your hat, drained the water, etc. Bytes 0x1B to 0x24 are for the stars in the secret courses/bowser levels. 0x25 to 0x33 are your coin scores. Because each level only gets 1 byte to store the coin score, the maximum possible score you can get is 255. The final 4 bytes contain the checksum for that file chunk. ^ Range ^ Description ^ | 0x00 - 0x07 | Always 0x00? | | 0x08 | Secret stars in castle (toads, Mips) | | 0x09 | Bit 1: Cap stolen by snowman \\ Bit 2: Cap stolen by bird \\ Bit 3: Cap stolen by monkey \\ Bit 5: 3rd floor (50 star) door | | 0x0A | Bit 1: Unknown. Seems to be set when opening the DDR/BitFS room? \\ Bit 2: Water level outside the castle \\ Bit 3: Princess secret slide door \\ Bit 4: Whomp's Fortress door \\ Bit 5: Cool, Cool Mountain door \\ Bit 6: Jolly Roger Bay door \\ Bit 7: Bowser in the dark world (8 star) door \\ Bit 8: Bowser in the fire sea (30 star) door | | 0x0B | Bit 1: Valid game (Game is empty otherwise) \\ Bit 2: Wing cap switch \\ Bit 3: Metal cap switch \\ Bit 4: Vanish cap switch \\ Bit 5: Bowser in the dark world key (disabled when the door is opened) \\ Bit 6: Bowser in the fire sea key (disabled when the door is opened) \\ Bit 7: Basement door open \\ Bit 8: 2nd floor door open | | 0x0C - 0x1C | Course Stars (the 8th bit is for the level's cannon) | | 0x1B - 0x24 | Secret stars in courses (secret, bowser levels) | | 0x25 - 0x33 | Course Coin scores | | 0x34 - 0x37 | Checksum | ===== Main Menu Data ===== This is data that is used in the file menu. Bytes 0x10-0x11 store the sound select option. Bytes 0x12 - 0x1B seem to be unused, you can write data here and not have it affect anything. ^ Range ^ Description ^ | 0x00 - 0x0F | Related to high scores? | | 0x10 - 0x11 | Sound Select option: 0x0000 = Stereo, 0x0001 = Mono, 0x0002 = Headset | | 0x12 - 0x1B | Unused? | | 0x1C - 0x1F | Checksum | ===== References ===== * http://origami64.net/showthread.php?tid=369 * http://www.smwcentral.net/?p=viewthread&t=74721 * http://jul.rustedlogic.net/thread.php?id=6331