Preface:
The gba game Shantae Advance - Risky Revolution, which has been shelved for 20 years, was officially released recently, and many pre-order players have received the physical cartridge.
Problems :
However, many people will find that the ROM dumped from the physical cartridge can be played in some emulators, but some emulator can't.
Reason:
This is because the game was originally a 16MB eeprom 512B save game, and Limited Run used the FRAM save chip cartridge to make the physical cartridge, rather than the EEPROM 512B save chip cartridge which designed for the cartridge itself. (sorry that the eeprom save size of shantae gba is 512B not 8KB, I now fixed the text)
Limited Run used the GBA Tool Advance to apply the sram patch to the rom (the modified content has been compared and it has the same result with the sram-patching rom applied by the folk tool: GBA Tool Advance). So the rom dumped from the cartridge that the player got has been patched with the SRAM patch.
Some emulators automatically recognize or read and write according to the native EEPROM save or mistakenly recognize it as a FLASH save, so in this case, the savefile cannot be saved and read normally.
Some emulators can recognize it as SRAM save, so they can save and read savefile normally.
Repair patch:
Here is a patch to restore the sram patch back to the eeprom save for use.
Original Rom Info (dumped from limited run cartridge)
Title Name: (no title name)
Size: 16MB
Save Type: EEPROM_V122
CRC32: 31265c5d
MD5: a82bd152baf314b0d69a12a47c38e60f
SHA-1: 13ba1ab9af37fe874bb8a7c34c7597fa8554a241
EEPROM Save Fixed Rom info
CRC32: f2f66f5e
MD5: 05c018273689ebf67f5c7f5d39927a62
SHA-1: f4b85cac70ee41fd3f84507afec55ff4e7113b8e
Note: If you see a 32MB Shantea ROM, it is a dump problem. The first 16MB of the ROM is the complete content of this game. Just delete the last 16MB is ok.
Plus Patch:
I made a new patch that can be compatible with both EEPROM and SRAM saves. It may work well for some emulator or flashcart which cannot recognize EEPROM and use SRAM in its auto mode.
EEPROM and SRAM compatible Rom info
CRC32: 38f5d059
MD5: d791ac71aca5dfb8725a0668d3757a41
SHA-1: 40ec2ba9edf6969af6d34b71f2cdbbb549846c3e
Q: How to cut 32MB rom to 16MB?
A: You can use hex editor like Hxd, winhex etc. to delete the last half part of the 32MB rom, just remian the first 16MB (0x00000000-0x00FFFFFF) part. Or you can use GBA Tool Advance to open 32MB rom, finding 'Fix OverDump', choose '128Mbit (16Mbyte)', then press 'Fix' button, you will get the 16MB rom.
===============================================================================================
Below is a more detailed explanations of the mechanism and considerations for choosing patched rom (Fisrt post on #9 , Now list on #1)
ROM INFO
1. Original dumped rom
Save Type: SRAM 32KB(/256Kbit)
Save ID String in rom: EEPROM_V122
P.S. : Original EEPROM 512B(/4Kbit) with SRAM 32KB(/256Kbit) patch applied by using GBATA. For purpose of burning game on FRAM save chip (= SRAM without battery) physical cartridges.
2. EEPROM save fixed rom (eeprom_back patch)
Save Type: EEPROM 512B(/4Kbit)
Save ID String in rom: EEPROM_V122
P.S. : Original save function status of this game.
(sorry that the eeprom save size of shantae gba is 512B not 8KB, I now fixed the text)
3. EEPROM & SRAM compatible rom (eeprom&sram patch)
Save Type: EEPROM 512B(/4Kbit) and SRAM 32KB(/256Kbit) compatible
Save ID String in rom: EEPROM_V122
P.S. : Save hack which can support most emluators and flashcarts whether they recognize this patched game as EEPROM or SRAM.
Save Mechanism
1. Pre-built Save Library
The AUTO mode of ezo(de) use Pre-built Save Library to determine save type of game by finding the Game Code in rom header. If one game isn't in this Lib, save type will choose SRAM in default. everdrive x5 is similar and have a Pre-built Save Library too.
Shantae Advance isn't in this lib, so in AUTO mode it will be run as SRAM type.
And The Game Title and Game Code of Shantae is empty (0x00) which is also a bad status for recognizing.
2. Recognize Save ID String in rom
There are Save ID string stored in retail rom, such as EEPROM_V***, SRAM_V***, FLASH_V***, FLASH512_V***, FLASH1M_V***. Some emulators find these ID strings in rom to determine save type of game, Such as GbaRunner2/3, Open_agb_frim, OpenFpga Core of Analogue Pocket.
GbaRunner2/3 will apply SRAM patch to repalce the original save hex after finding ID string in rom in some cases. That why some sram-patched rom can't be saved in GbaRunner2/3, cause original save hex has already been replaced and Gbarunner2/3 can't find the correct palce to apply its sram patch.
3. Identify program execution
Some emulator determine save type of game by Identifying program execution when running game. Finding what addresses the game trying to read and write to distinguish the save type. It may also combine the Pre-built Save Library and Recognize Save ID String in rom to Improve accuracy. mgba 's autodetect uses a similar mechanism like this.
4. Manual settings by the player
Many emulators and flashcarts provide Manual settings for player to choose save type, such as ezo(de), everdrive x5, mgba, Open_agb_frim, Tools for making 3dsVC, wiiuVC etc. . Choosing the correct save type can let patched rom work well.
5. Physical Cartridges
This situation requires the Save Chip of the Cartridge Hardware to match the Save Function of the ROM Program Software.
Limited Run Games decide to use FRAM chip cartridge to burning rom, while rom's original Save Function is for EEPROM chip. That why they use GBATA to apply SRAM patch on rom to change its Save Function for SRAM/FRAM chip.
(They said they were going to acquire the discontinued FRAM chips, but why didn't they choose to acquire the equally discontinued EEPROM chips?)
[TABLE=full]
[TR]
[TD][/TD]
[TD]Pre-built Save Library *1[/TD]
[TD]Recognize Save ID String in rom[/TD]
[TD]Identify program execution[/TD]
[TD]Manual settings by the player[/TD]
[TD]Physical Cartridges[/TD]
[/TR]
[TR]
[TD]Original dumped rom[/TD]
[TD]CAN work[/TD]
[TD]CANNOT work *2[/TD]
[TD]Sometimes CAN,
Sometimes CANNOT work[/TD]
[TD]Choose SRAM[/TD]
[TD]SRAM/FRAM 32KB(/256Kbit) cartridges[/TD]
[/TR]
[TR]
[TD]EEPROM save fixed rom[/TD]
[TD]CANNOT work *3[/TD]
[TD]CAN work[/TD]
[TD]CAN work[/TD]
[TD]Choose EEPROM *4[/TD]
[TD]16MB EEPROM 512B(/4Kbit) cartridges *5[/TD]
[/TR]
[TR]
[TD]EEPROM & SRAM compatible rom[/TD]
[TD]CAN work[/TD]
[TD]CAN work[/TD]
[TD]CAN work[/TD]
[TD]Both above can[/TD]
[TD]Both above can[/TD]
[/TR]
[/TABLE]
[TABLE=full]
[TR]
[TD]*1: Using SRAM if not in Lib.
*2: Change the ID string to SRAM_V*** can make it work.
*3: Give rom a Game Code and add it to lib can make it work.
*4: If there is a classification, choose EEPROM 512B(/4Kbit), some emulator or flashcarts can work fine if choose EEPROM 8KB(/64Kbit) .
*5 : NOT!!! 32MB either EEPROM 8KB(/64Kbit) cartridges.[/TD]
[/TR]
[/TABLE]
The gba game Shantae Advance - Risky Revolution, which has been shelved for 20 years, was officially released recently, and many pre-order players have received the physical cartridge.
Problems :
However, many people will find that the ROM dumped from the physical cartridge can be played in some emulators, but some emulator can't.
Reason:
This is because the game was originally a 16MB eeprom 512B save game, and Limited Run used the FRAM save chip cartridge to make the physical cartridge, rather than the EEPROM 512B save chip cartridge which designed for the cartridge itself. (sorry that the eeprom save size of shantae gba is 512B not 8KB, I now fixed the text)
Limited Run used the GBA Tool Advance to apply the sram patch to the rom (the modified content has been compared and it has the same result with the sram-patching rom applied by the folk tool: GBA Tool Advance). So the rom dumped from the cartridge that the player got has been patched with the SRAM patch.
Some emulators automatically recognize or read and write according to the native EEPROM save or mistakenly recognize it as a FLASH save, so in this case, the savefile cannot be saved and read normally.
Some emulators can recognize it as SRAM save, so they can save and read savefile normally.
Repair patch:
Here is a patch to restore the sram patch back to the eeprom save for use.
Original Rom Info (dumped from limited run cartridge)
Title Name: (no title name)
Size: 16MB
Save Type: EEPROM_V122
CRC32: 31265c5d
MD5: a82bd152baf314b0d69a12a47c38e60f
SHA-1: 13ba1ab9af37fe874bb8a7c34c7597fa8554a241
EEPROM Save Fixed Rom info
CRC32: f2f66f5e
MD5: 05c018273689ebf67f5c7f5d39927a62
SHA-1: f4b85cac70ee41fd3f84507afec55ff4e7113b8e
Note: If you see a 32MB Shantea ROM, it is a dump problem. The first 16MB of the ROM is the complete content of this game. Just delete the last 16MB is ok.
Plus Patch:
I made a new patch that can be compatible with both EEPROM and SRAM saves. It may work well for some emulator or flashcart which cannot recognize EEPROM and use SRAM in its auto mode.
EEPROM and SRAM compatible Rom info
CRC32: 38f5d059
MD5: d791ac71aca5dfb8725a0668d3757a41
SHA-1: 40ec2ba9edf6969af6d34b71f2cdbbb549846c3e
Q: How to cut 32MB rom to 16MB?
A: You can use hex editor like Hxd, winhex etc. to delete the last half part of the 32MB rom, just remian the first 16MB (0x00000000-0x00FFFFFF) part. Or you can use GBA Tool Advance to open 32MB rom, finding 'Fix OverDump', choose '128Mbit (16Mbyte)', then press 'Fix' button, you will get the 16MB rom.
===============================================================================================
Below is a more detailed explanations of the mechanism and considerations for choosing patched rom (Fisrt post on #9 , Now list on #1)
ROM INFO
1. Original dumped rom
Save Type: SRAM 32KB(/256Kbit)
Save ID String in rom: EEPROM_V122
P.S. : Original EEPROM 512B(/4Kbit) with SRAM 32KB(/256Kbit) patch applied by using GBATA. For purpose of burning game on FRAM save chip (= SRAM without battery) physical cartridges.
2. EEPROM save fixed rom (eeprom_back patch)
Save Type: EEPROM 512B(/4Kbit)
Save ID String in rom: EEPROM_V122
P.S. : Original save function status of this game.
(sorry that the eeprom save size of shantae gba is 512B not 8KB, I now fixed the text)
3. EEPROM & SRAM compatible rom (eeprom&sram patch)
Save Type: EEPROM 512B(/4Kbit) and SRAM 32KB(/256Kbit) compatible
Save ID String in rom: EEPROM_V122
P.S. : Save hack which can support most emluators and flashcarts whether they recognize this patched game as EEPROM or SRAM.
Save Mechanism
1. Pre-built Save Library
The AUTO mode of ezo(de) use Pre-built Save Library to determine save type of game by finding the Game Code in rom header. If one game isn't in this Lib, save type will choose SRAM in default. everdrive x5 is similar and have a Pre-built Save Library too.
Shantae Advance isn't in this lib, so in AUTO mode it will be run as SRAM type.
And The Game Title and Game Code of Shantae is empty (0x00) which is also a bad status for recognizing.
2. Recognize Save ID String in rom
There are Save ID string stored in retail rom, such as EEPROM_V***, SRAM_V***, FLASH_V***, FLASH512_V***, FLASH1M_V***. Some emulators find these ID strings in rom to determine save type of game, Such as GbaRunner2/3, Open_agb_frim, OpenFpga Core of Analogue Pocket.
GbaRunner2/3 will apply SRAM patch to repalce the original save hex after finding ID string in rom in some cases. That why some sram-patched rom can't be saved in GbaRunner2/3, cause original save hex has already been replaced and Gbarunner2/3 can't find the correct palce to apply its sram patch.
3. Identify program execution
Some emulator determine save type of game by Identifying program execution when running game. Finding what addresses the game trying to read and write to distinguish the save type. It may also combine the Pre-built Save Library and Recognize Save ID String in rom to Improve accuracy. mgba 's autodetect uses a similar mechanism like this.
4. Manual settings by the player
Many emulators and flashcarts provide Manual settings for player to choose save type, such as ezo(de), everdrive x5, mgba, Open_agb_frim, Tools for making 3dsVC, wiiuVC etc. . Choosing the correct save type can let patched rom work well.
5. Physical Cartridges
This situation requires the Save Chip of the Cartridge Hardware to match the Save Function of the ROM Program Software.
Limited Run Games decide to use FRAM chip cartridge to burning rom, while rom's original Save Function is for EEPROM chip. That why they use GBATA to apply SRAM patch on rom to change its Save Function for SRAM/FRAM chip.
(They said they were going to acquire the discontinued FRAM chips, but why didn't they choose to acquire the equally discontinued EEPROM chips?)
[TABLE=full]
[TR]
[TD][/TD]
[TD]Pre-built Save Library *1[/TD]
[TD]Recognize Save ID String in rom[/TD]
[TD]Identify program execution[/TD]
[TD]Manual settings by the player[/TD]
[TD]Physical Cartridges[/TD]
[/TR]
[TR]
[TD]Original dumped rom[/TD]
[TD]CAN work[/TD]
[TD]CANNOT work *2[/TD]
[TD]Sometimes CAN,
Sometimes CANNOT work[/TD]
[TD]Choose SRAM[/TD]
[TD]SRAM/FRAM 32KB(/256Kbit) cartridges[/TD]
[/TR]
[TR]
[TD]EEPROM save fixed rom[/TD]
[TD]CANNOT work *3[/TD]
[TD]CAN work[/TD]
[TD]CAN work[/TD]
[TD]Choose EEPROM *4[/TD]
[TD]16MB EEPROM 512B(/4Kbit) cartridges *5[/TD]
[/TR]
[TR]
[TD]EEPROM & SRAM compatible rom[/TD]
[TD]CAN work[/TD]
[TD]CAN work[/TD]
[TD]CAN work[/TD]
[TD]Both above can[/TD]
[TD]Both above can[/TD]
[/TR]
[/TABLE]
[TABLE=full]
[TR]
[TD]*1: Using SRAM if not in Lib.
*2: Change the ID string to SRAM_V*** can make it work.
*3: Give rom a Game Code and add it to lib can make it work.
*4: If there is a classification, choose EEPROM 512B(/4Kbit), some emulator or flashcarts can work fine if choose EEPROM 8KB(/64Kbit) .
*5 : NOT!!! 32MB either EEPROM 8KB(/64Kbit) cartridges.[/TD]
[/TR]
[/TABLE]
Attachments
Last edited by Wokann,









