Sign Up connects you to ROM Hackers around the world.

White 2 RAM Save Block Structure


0220528C is the list of blocks in the save.(74 total)

typedef struct{

u32 blkNum; //block count in hex(0-49)
u32 blkSize; //size of block in the save
u32 blkOffset; //offset into the save file
} SaveBlockInfo;

the game reads these numbers by doing block_address = blkNum * 12 + blk_base(220528C) to get the block to seek to then using block_address + 4 and block_address + 8 to get the desired info. then they add either the offset into the save file to the address of the save file in ram to decide where to read data from.

also, the block size doesn't always correspond with subtracting the offset of the next save block with the current one. that means there's extra unused space between some blocks. it would be trivial to use this for implementing new features.

  likes this.