3DS Virtual Console: Difference between revisions
m →Footer: added magic |
WulfyStylez (talk | contribs) |
||
Line 19: | Line 19: | ||
=GBA VC= | =GBA VC= | ||
GBA VC is run by [[FIRM|AGB_FIRM]]. RomFS isn't used for GBA VC titles, but can be found empty within GBA VC titles. The NCCH [[ExeFS]] contains the same files as a normal application. The [[ExeFS]]:/.code contains the GBA VC ROM followed by a 0x360 footer. | GBA VC is run by [[FIRM|AGB_FIRM]]. RomFS isn't used for GBA VC titles, but can be found empty within GBA VC titles. The NCCH [[ExeFS]] contains the same files as a normal application. The [[ExeFS]]:/.code contains the GBA VC ROM followed by a 0x360 byte long footer. | ||
===Footer=== | ===Footer=== | ||
All values in the GBA VC | All values in the GBA VC footer are little-endian. | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 34: | Line 34: | ||
|- | |- | ||
| 0x008 | | 0x008 | ||
| | | 0x4 | ||
| | | Save type (see below) | ||
|- | |||
| 0x020 | |||
| 0x1 | |||
| Manufacturer info select (see below) | |||
|- | |- | ||
| | | 0x024 | ||
| | | 0x300 | ||
| Unknown | | Unknown, three different types of this data have been observed. | ||
|- | |- | ||
| 0x338 | | 0x338 | ||
Line 55: | Line 59: | ||
| 0x35A | | 0x35A | ||
| 0x2 | | 0x2 | ||
| GBA ROM | | High two bytes of GBA ROM file size | ||
|} | |} | ||
Save types: | |||
* EEPROM (various sizes, IDs specified in footer): 0x2 | |||
* SRAM/FRAM (128k): 0xE | |||
* Flash (512k): 0x9 | |||
Support for RTC and 1m-flash chips is not implemented in AGB_FIRM. | |||
Manufacturer info: | |||
GBA games' SDK-provided save code only supports a range of manufacturers from which Nintendo was buying memory from around the time of that game's development. As such, most games don't support a generic emulated storage chip. This byte appears to select a manufacturer info set to emulate. This has been observed to be 0x90, 0xC0, and (in one EEPROM-based game), 0x80. | |||
* SRAM games up to and including V111 use 0xC0. Above use 0x90. | |||
* FRAM V103 uses 0xC0. V104+ don't exist, and lower versions also likely use 0xC0. | |||
* Flash V124 was observed 0x90, V131 was observed 0xC0. | |||
* EEPROM-based games vary wildly, since they can likely specify chip info in the 0x10-region of the footer. |