This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
blast_corps:eeprom_map [2016/10/22 09:49] queueram [Top level structure] Correct Footer description |
blast_corps:eeprom_map [2017/06/23 10:49] (current) shygoo ↷ Links adapted because of a move operation |
||
---|---|---|---|
Line 30: | Line 30: | ||
===== Level Times ===== | ===== Level Times ===== | ||
- | There is a time recorded for each level as an 4-byte unsigned integer in big endian in units of 1/655360 of a second. To convert these values to seconds, divide the value by 655360. e.g., if the value is 0x00E4554E = 14964046, then 14964046/655360 = 22.8 seconds. | + | The record time is stored for each level as a 2-byte integer in big endian in units of hundredths of a second followed by two bytes of checksum. The checksum is computed as follows (where ^ is XOR): |
+ | <code c>record[2] = 0x55 ^ record[0]; | ||
+ | record[3] = 0xFF ^ record[0] ^ record[1] ^ record[2];</code> | ||
+ | For example, if the record value is 0x00E4554E, the time is 0x00E4 = 228 = 22.8 seconds. \\ Checksum verifies because 0x00 ^ 0x55 = 0x55, and 0xFF ^ 0x00 ^ 0xE4 ^ 0x55 = 0x4E | ||
===== Checksum ===== | ===== Checksum ===== | ||
The 4-byte checksum at 0xFC is computed using functions that are stored in the hd_front_end_text.raw gzip file. The UpdateChecksum/801F2C84 function takes a pointer to the start of the EEPROM data in A0 and an offset to compute the checksum over and store result in A1. It uses helper function ComputeChecksumByte/80205760 to compute each round. | The 4-byte checksum at 0xFC is computed using functions that are stored in the hd_front_end_text.raw gzip file. The UpdateChecksum/801F2C84 function takes a pointer to the start of the EEPROM data in A0 and an offset to compute the checksum over and store result in A1. It uses helper function ComputeChecksumByte/80205760 to compute each round. | ||
Line 106: | Line 108: | ||
===== Erasing EEPROM ===== | ===== Erasing EEPROM ===== | ||
The EEPROM can be cleared by holding the 'Start' button while the during reset and startup of the game. You will then be prompted to "Erase Saved Game" | The EEPROM can be cleared by holding the 'Start' button while the during reset and startup of the game. You will then be prompted to "Erase Saved Game" | ||
- | {{:bc:erase_saved_game.png?direct&200 |}} | + | {{blast_corps:erase_saved_game.png?direct&200 |}} |