====== EEPROM ====== Kirby 64 uses a 512 byte EEPROM chip to store save data. Software mirrors of the data are kept at 0x800EC9F8 and 0x800ECBB0 in RAM. ===== High level structure ===== ^Offset^Size^Description^ |0x000|0x0C|Header| |0x00C|0x04|Header checksum| |0x010|0x54|File 1 data| |0x064|0x04|File 1 checksum| |0x068|0x54|File 2 data| |0x0BC|0x04|File 2 checksum| |0x0C0|0x54|File 3 data| |0x114|0x04|File 3 checksum| Checksums are generated by adding the sum of all the 32-bit words in a section to 0x97538642. The function that performs this operation is at 0x800B8F34. ===== File structure ===== ^Offset^Type^Description^ |0x0|u32|Latest Unlocked World| |0x4|u32|Latest Unlocked Level| |0x8|u32|Unknown| |0xC|u32|Number of Cutscenes Watched| |0x10|u8|Percentage Complete| |0x11|u8|Sound Setting (0 for stereo, 1 for mono)| |0x12|u8|HUD Display Option| |0x13|u8|Unknown| |...|...|...| |0x18|u16|100-Yard Hop Record| |0x1A|u16|Bumper Crop Bump Record| |0x1C|u16|Checkerboard Chase Record| |...|...|...| ===== Debug Cheat Code ===== It is possible to get a file with 100% completion using the function at 800BA5C4 with A0 set to the file you want to complete. This can be done in the vanilla game using a cheat code. Requirements: * A second controller * File 2 must be deleted * File 3 must be initialized (but not yet started) Steps: * Reset the game * Wait until the HAL Laboratory logo shows up * Hold L on the second controller * Press the button combo: C-up, C-up, R, C-right, C-left, Start. * File 3 should be 100% completed now.