Skip to content

Instantly share code, notes, and snippets.

@drhelius
Last active December 20, 2015 03:49
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save drhelius/6066684 to your computer and use it in GitHub Desktop.
Save drhelius/6066684 to your computer and use it in GitHub Desktop.
MBC3 RTC save format
MBC3 RTC save format
the RTC data is appended after the sav file, 44 or 48 bytes. you can detect its presence by the save data being 44 or 48 bytes bigger than the cart's ram size, or 44 or 48 bytes bigger than a multiple of 8192.
old VBA (from 2005) saves the 44 bytes version, and can load both the 44 and 48 bytes version.
VBA-M saves the 48 bytes version, and can *only* load the 48 bytes version.
one should load both types, and always save the 48 bytes version.
the data consists entirely of little endian (intel order) dwords. as the registers are bytes, it's in the first byte of the field, the other bytes should always be 0.
time is the internal "hidden" version. latched time is what you're reading from the registers.
the unix timestamp is UTC seconds since 1970-01-01 00:00, a very common standard on internet. again, the lowest byte goes first.
offset size desc
0 4 time seconds
4 4 time minutes
8 4 time hours
12 4 time days
16 4 time days high
20 4 latched time seconds
24 4 latched time minutes
28 4 latched time hours
32 4 latched time days
36 4 latched time days high
40 4 unix timestamp when saving
44 4 0 (probably the high dword of 64 bits time), absent in the 44 bytes version
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment