User Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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 checksumThe 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 |}}