Hacking Emulation Gaming Hardware ROM Hack GBA EEPROM Save Fixed Patch For GBA Shantae Advance - Risky Revolution

  • Thread starter Thread starter Wokann
  • Start date Start date
  • Views Views 16,716
  • Replies Replies 40
  • Likes Likes 10
i was using an EZFODE, but switched to my DSi for unrelated reasons, so GBARunner3 is what i am using.

i should apologize as well as this is a territory with GBA stuff i'm unfamiliar with
As I mentioned before:
[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: For case 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]
EZO(DE)'s AUTO mode use Pre-built Save Library, so you can use Original dumped rom and EEPROM & SRAM compatible rom.

EZO(DE)'s manual setting,
If you use Original dumped rom , choose SRAM type.
If you use EEPROM save fixed rom , choose EEPROM 512 type ( For EZO(DE) EEPROM 8K is ok too).
If you use EEPROM & SRAM compatible rom , choose SRAM, EEPROM 512, EEPROM 8K type all can work well.

GbaRunner3 may use Recognize Save ID String in rom, so EEPROM save fixed rom and EEPROM & SRAM compatible rom can work well.
(Or the Original dumped rom which change Save iD string From EEPROM_V122 to SRAM_*** can work too, and this is what the patches from reddit and github issue did.)
 
As I mentioned before:

EZODE's AUTO mode use Pre-built Save Library, so you can use Original dumped rom and EEPROM & SRAM compatible rom.

EZODE's manual setting,
If you use Original dumped rom , choose SRAM type.
If you use EEPROM save fixed rom , choose EEPROM 512 type ( For EZO(de) EEPROM 8K is ok too).
If you use EEPROM & SRAM compatible rom , choose SRAM, EEPROM 512, EEPROM 8K type all can work well.

GbaRunner3 may use Recognize Save ID String in rom, so EEPROM save fixed rom and EEPROM & SRAM compatible rom can work well.
(Or the Original dumped rom which change Save iD string From EEPROM_V122 to SRAM_*** can work too, and this is what the patches from reddit and github issue did.)
alright so if using GBAR3 use EEPROM & SRAM patch?
 
alright so if using GBAR3 use EEPROM & SRAM patch?
For gbarunner3, if you want the original data to be correct, choose EEPROM save fixed rom.
If you want ONE ROM to be able to be used on multiple different emulators or flashcarts, choose EEPROM & SRAM compatible rom.
 
from the chip you shown, it seems not having bank-switching hardware, which means this is a SRAM 512Kbit batteryless cartridge. I guess when you played the batteryless patched pokemon on it, it will always show save is broken and use the backup save.
Then how about the most problematic situation of your 32MB+SRAM(256Kbit) chip cartridge with battery (32MB Yugioh Double Pack repro cart)?
This is the 32MB Yugioh! Double Pack cart. I works with others SRAM games and is able to save and retain the save since it has a battery. For Shantae Advance though, it saves until you get to the town. Once you get the maps and get to fly to the other areas, the menus when choosing the other areas where to go has graphics glitches and eventually the game locks up. I also noticed that on my 369-in-1 Cart with the same rom patched for batteryless save that I use on the pokemon repro cart does exactly the same thing as the Yugioh! Double Pack cart.
 

Attachments

  • IMG_5168.JPG
    IMG_5168.JPG
    1.3 MB · Views: 47
  • IMG_5263.JPG
    IMG_5263.JPG
    2.9 MB · Views: 50
  • IMG_5265.JPG
    IMG_5265.JPG
    1.2 MB · Views: 55
This is the 32MB Yugioh! Double Pack cart. I works with others SRAM games and is able to save and retain the save since it has a battery. For Shantae Advance though, it saves until you get to the town. Once you get the maps and get to fly to the other areas, the menus when choosing the other areas where to go has graphics glitches and eventually the game locks up. I also noticed that on my 369-in-1 Cart with the same rom patched for batteryless save that I use on the pokemon repro cart does exactly the same thing as the Yugioh! Double Pack cart.
This pcb board with a metal textured SRAM chip is problematic.
Players who use it in our community burned gba games(sram games or sram-patched games) , and some games have not been able to save or be saved but will lost or game may crashed.
The reason is temporarily unknown, we can only say that it's not recommended to use this pcb board to burn games.
 
Last edited by Wokann,
  • Like
Reactions: impeeza
This pcb board with a metal textured SRAM chip is problematic.
Players who use it in our community burned gba games(sram games or sram-patched games) , and some games have not been able to save or be saved but will lost or game may crashed.
The reason is temporarily unknown, we can only say that it's not recommended to use this pcb board to burn games.
Can we get a working patch for the Mother 3 bootlegs that use FLASH512? (64KB save file size)

I've tried 2 different patchers that change EEPROM to FLASH512, but saving always corrupts the graphics or just won't work. (hangs)
Post automatically merged:

So for anyone that has one of these carts. The game works perfect SRAM patched and patched for betteryless save. And the saves are compatible with Retroarch and the mGBA core, you just need to rename the the save to .srm for Retroarch and back to .sav to inject it back to the rom.

View attachment 504412
Can you share the batteryless SRAM patch with us please?
 
Last edited by Jayro,
Can we get a working patch for the Mother 3 bootlegs that use FLASH512? (64KB save file size)

I've tried 2 different patchers that change EEPROM to FLASH512, but saving always corrupts the graphics or just won't work. (hangs)
which rom did you use to apply flash512 patch? the original dumped rom? or the eeprom fixed rom?
The normal way to apply flash512 patch to eeprom game, is to apply sram patch first, then apply flash512 patch on this sram-patched eeprom game.
Because the source codes shows flash512 patcher searchs the sram-patched eeprom game hex, not original eeprom game hex.
So in shantae, just apply flash512 patch on the original dumped rom is ok, since original dumped rom is already sram-patched.
 
Can we get a working patch for the Mother 3 bootlegs that use FLASH512? (64KB save file size)

I've tried 2 different patchers that change EEPROM to FLASH512, but saving always corrupts the graphics or just won't work. (hangs)
Post automatically merged:


Can you share the batteryless SRAM patch with us please?
What's the crc of your rom? I can create a patch

But you just need to take the eeprom rom and patch it for SRAM with GBATA and then patch the SRAM patched rom with the Automatic batteryless saving patcher for GBA

https://www.romhacking.net/utilities/601/

https://github.com/metroid-maniac/gba-auto-batteryless-patcher

However this will only work on SRAM Repro Carts or Flash Carts

If You have a FLASH Save Repro Cart

Patch it for SRAM with GBATA and then patch it for Flash Save

https://github.com/lesserkuma/Custom_1M_FLASH_Patcher

https://github.com/metroid-maniac/gba-flash-patcher
 
Last edited by saulin,
What's the crc of your rom? I can create a patch

But you just need to take the eeprom rom and patch it for SRAM with GBATA and then patch the SRAM patched rom with the Automatic batteryless saving patcher for GBA

https://www.romhacking.net/utilities/601/

https://github.com/metroid-maniac/gba-auto-batteryless-patcher

However this will only work on SRAM Repro Carts or Flash Carts

If You have a FLASH Save Repro Cart

Patch it for SRAM with GBATA and then patch it for Flash Save

https://github.com/lesserkuma/Custom_1M_FLASH_Patcher

https://github.com/metroid-maniac/gba-flash-patcher
I asked a guy on Bennvenn's server to make me a patch for FLASH512, and it works on the Mother 3 bootlegs. ^_^
 
I will explain your questions here both from your reply in this post and from private conversations you started.

Q1: Is cutting rom from 32MB to 16MB necessary?
A1: I recommend using a 16MB ROM, which is the correct content dumped from the 16MB rom chip in the offical physical cartridge. The 32MB ROM is the product of an error in the dump process and is an overdump.

Q2: How to cut 32MB rom to 16MB?
A2: 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.
View attachment 504078

Q3: How to use eeprom&srameeprom_back patches?
A3: These ips patches are supposed to be applied on the 16MB Original dumped Rom. So you need to cut the 32MB rom to 16MB rom first.

Q4: The problems about '3DS GBA Footer Generator' and '3DS Simple GBA Converter'
A4:
I need to point out that the description in the footer program is actually wrong because it is too old.
View attachment 504075
The 'Memory Config' is actually about ‘Video LUT’ which named as 'Color Config' in Ultimate GBA VC inject for 3DS and in New Super Ultimate Injector for 3DS.
The 'Save Chip Manufacturer' is actually about ‘LCD Ghosting’ which named as 'Ghosting Adjustment' in Ultimate GBA VC inject for 3DS and in New Super Ultimate Injector for 3DS.
So these two option do NOTHING about save manual setting.
View attachment 504079

I've tested that whether you use the Original dumped Rom 16MB or 32MB (Pre-SRAM-patched), Selecting the corresponding ROM size and set the save type to SRAM do can save normally in 3DS.
Then I've tested the EEPROM save fixed rom to make 3DSVC, choosing 16MB, and set Save type to EEPROM. However it cannot save.
I checked the footer file it made, the problem is that the save type id was wrong. In fact, There are 15 save type for 3ds gbavc footer. Footer construction see here Link1 and Link2.
  • 0x0: EEPROM 4kbit for <= 128Mbit(16MB) roms
  • 0x1: EEPROM 4kbit for 128Mbit(16MB) ~ 256Mbit(32MB) roms
  • 0x2: EEPROM 64kbit for <= 128Mbit(16MB) roms
  • 0x3: EEPROM 64kbit for 128Mbit(16MB) ~ 256Mbit(32MB) roms
  • 0x4: Flash 512kbit (Atmel, ID: 0x3D1F) + RTC
  • 0x5: Flash 512kbit (Atmel, ID: 0x3D1F)
  • 0x6: Flash 512kbit (SST, ID: 0xD4BF) + RTC
  • 0x7: Flash 512kbit (SST, ID: 0xD4BF)
  • 0x8: Flash 512kbit (Panasonic, ID: 0x1B32) + RTC
  • 0x9: Flash 512kbit (Panasonic, ID: 0x1B32)
  • 0xA: Flash 1Mbit (Macronix, ID: 0x09C2) + RTC
  • 0xB: Flash 1Mbit (Macronix, ID: 0x09C2)
  • 0xC: Flash 1Mbit (Sanyo, ID: 0x1362) + RTC
  • 0xD: Flash 1Mbit (Sanyo, ID: 0x1362)
  • 0xE: SRAM/FRAM 256kbit
3DS GBA Footer Generator choose 0x02: EEPROM 64kbit for < 256 Mbit titles as the save type if you choose 'EEPROM'.
The actual Save type of Shantae advance is 0x0: EEPROM 4kbit for < 256 Mbit titles. I change the wrong value to correct value 0x0 and make 3ds gbavc. This time gbavc save is normal.
View attachment 504082
Ultimate GBA VC inject for 3DS may have similar problems cause it only have one choice for EEPROM.
New Super Ultimate Injector for 3DS can select the acutal save type, but the value of Flash and EEPROM configuration was wrong that using the value for FLASH/SRAM, which will also make save failed.
View attachment 504086
View attachment 504087
View attachment 504089
Conclusion: Since the eeprom mechanism is relatively complicated, several existing 3DS gbavc production tools have not been able to handle it well and manual correction is difficult for most players. I suggest you use Original dumped Rom or EEPROM & SRAM compatible rom, and choose the SRAM type to make gbavc.
Post automatically merged:


What emulator or flashcart are you using to play the game and facing problems?
Here's hoping for an easy solution to making a 3DS cia that works
 
Here's hoping for an easy solution to making a 3DS cia that works
Since none of the gbavc tools nowadays have prefect compatibilitiy for all save type, if you wants to make gbavc for shantea's 16mb eeprom 512b, you need to edit the file by yourself. you can see the info in #16.
Or a easier way is using original dumped rom(pre-sram patched) or eeprom&sram rom, and set save type to sram when you use gbavc tool to make gbavc.
 
What's the crc of your rom? I can create a patch

But you just need to take the eeprom rom and patch it for SRAM with GBATA and then patch the SRAM patched rom with the Automatic batteryless saving patcher for GBA

https://www.romhacking.net/utilities/601/

https://github.com/metroid-maniac/gba-auto-batteryless-patcher

However this will only work on SRAM Repro Carts or Flash Carts

If You have a FLASH Save Repro Cart

Patch it for SRAM with GBATA and then patch it for Flash Save

https://github.com/lesserkuma/Custom_1M_FLASH_Patcher

https://github.com/metroid-maniac/gba-flash-patcher
Hello!
Sorry for bothering you, I accidentally stumbled upon this thread when I was looking for a solution to my similar problem. And I saw your message that you can help with a patch for the game.

In short: I have a repro cartridge from Mother 3, 32mb with a save type Flash 512k.

Games I wanted to burn to it:

Riviera - The Promised Land (USA)

CRC32: 4FB6958D
MD5: 16B5F1C6F8567CBE42F7562FCCBB6426
SHA-1: 30EE6610AAA77BCE2FFD8911058078147D61B925

Save Type: SRAM_F_V103 (256Kbit)

and
Yggdra Union - We'll Never Fight Alone (Europe)

CRC32: 3E0DF130
MD5: 34469CBE444C6561A5A24C1159F0697E
SHA-1: E419C835200457F67D5AB7E3C236583980B922D9

Save type: EEPROM_V126

I tried to burn these games to a cartridge in their pure form, but of course, the saves did not work (it said "Save Failed").

Later I came across a patcher that should change the save type to Flash, from metroid-maniac.

I tried it, but it did not help, it says the same error, the save is not created.

If I understand correctly, this patch does not change the information about the save type in the ROM header (since even after applying the patcher, the previous save type is displayed in GBATA, not Flash512k)

But the fact is that the save still does not work.
Could you please help with a patch for these two games?
 
Hello!
Sorry for bothering you, I accidentally stumbled upon this thread when I was looking for a solution to my similar problem. And I saw your message that you can help with a patch for the game.

In short: I have a repro cartridge from Mother 3, 32mb with a save type Flash 512k.

Games I wanted to burn to it:

Riviera - The Promised Land (USA)

CRC32: 4FB6958D
MD5: 16B5F1C6F8567CBE42F7562FCCBB6426
SHA-1: 30EE6610AAA77BCE2FFD8911058078147D61B925

Save Type: SRAM_F_V103 (256Kbit)

and
Yggdra Union - We'll Never Fight Alone (Europe)

CRC32: 3E0DF130
MD5: 34469CBE444C6561A5A24C1159F0697E
SHA-1: E419C835200457F67D5AB7E3C236583980B922D9

Save type: EEPROM_V126

I tried to burn these games to a cartridge in their pure form, but of course, the saves did not work (it said "Save Failed").

Later I came across a patcher that should change the save type to Flash, from metroid-maniac.

I tried it, but it did not help, it says the same error, the save is not created.

If I understand correctly, this patch does not change the information about the save type in the ROM header (since even after applying the patcher, the previous save type is displayed in GBATA, not Flash512k)

But the fact is that the save still does not work.
Could you please help with a patch for these two games?

For Yggdra Union - We'll Never Fight Alone

The header information of file output-Yggdra Union - We'll Never Fight Alone (EN)_flash512.gba
-----------------------------------------
Software Title: YGGDRA UNION
Game Serial: AGB-BYUP-EUR
Maker Code: GT
Publisher:
Version: 1.0
Logo Code: OK
Complement: 0Fh
Save Type: EEPROM_V126 (Patched)
File Size: 256 mbit (33554432 bytes)
CRC32: 6645BDAC
-----------------------------------------

I SRAM Patched it with gbata and then patched it for flash saving with gba-flash.exe and it saves on my 1Mbit Flash Save Cart

Riviera - The Promised Land (USA) though, this one failed to save, it already uses SRAM_F_V103 (256Kbit) so it can't be patched for SRAM and patching it with gba-flash.exe did not make it save but I always had issues with early SRAM Save games on this cart. They are not compatible.

Maybe if it could be converted to EEPROM Save and then Patched for SRAM? But I don't know how to patch games to convert save types

Another option might be to use a 32MB Repro or Flash Cart that sues SRAM Save and patch it for batteryless save or if you have a 32MB SRAM Cart with a battery then just flash it without patching.
 
I SRAM Patched it with gbata and then patched it for flash saving with gba-flash.exe and it saves on my 1Mbit Flash Save Cart

Riviera - The Promised Land (USA) though, this one failed to save, it already uses SRAM_F_V103 (256Kbit) so it can't be patched for SRAM and patching it with gba-flash.exe did not make it save but I always had issues with early SRAM Save games on this cart. They are not compatible.

Maybe if it could be converted to EEPROM Save and then Patched for SRAM? But I don't know how to patch games to convert save types

Another option might be to use a 32MB Repro or Flash Cart that sues SRAM Save and patch it for batteryless save or if you have a 32MB SRAM Cart with a battery then just flash it without patching.


Got it, thank you very much!
And I apologize for the late reply.

Yggdra works, SRAM patch before gba-flash-patcher really helped!

I also wrote with this question to the author of gba-flash-patcher on GitHub, they advised similar actions.

But Riviera, unfortunately, could not be patched so that the game would be saved.

On the same GitHub, they advised me to try a combination of gba-flash-patcher with batteryless-patcher on the game.
But, unfortunately, it did not help - if you patch gba-flash-patcher first, then batteryless does not see what to patch and refuses to continue. If you change the order - the result is similar, gba-flash-patcher refuses to patch.

If you patch the game with only one patcher, then saves are also not created. This is very sad.

Perhaps someone else had similar problems?
Not necessarily with the above mentioned games.
Any help would be greatly appreciated!
 
Got it, thank you very much!
And I apologize for the late reply.

Yggdra works, SRAM patch before gba-flash-patcher really helped!

I also wrote with this question to the author of gba-flash-patcher on GitHub, they advised similar actions.

But Riviera, unfortunately, could not be patched so that the game would be saved.

On the same GitHub, they advised me to try a combination of gba-flash-patcher with batteryless-patcher on the game.
But, unfortunately, it did not help - if you patch gba-flash-patcher first, then batteryless does not see what to patch and refuses to continue. If you change the order - the result is similar, gba-flash-patcher refuses to patch.

If you patch the game with only one patcher, then saves are also not created. This is very sad.

Perhaps someone else had similar problems?
Not necessarily with the above mentioned games.
Any help would be greatly appreciated!

Yes batteryless patched games don't work on Flash Save carts. You need a SRAM Save cart for the batteryless patched roms
 
Nintendo 3DS plays Game Boy Advance titles natively but, like an emulator, the different save types and chips are emulated. Like Wokann explained, Shantae Advance: Risky Revolution has some characteristics that are unusual, and it's a new release on top of that, so problems with storing and loading save data might occur. On Nintendo 3DS, I managed to store and load save data using the tools and settings described above, but further testing is required.
To be super specific, the game is run natively, but the cartridge is emulated. ROM cartridges are, in fact, hardware. They're not just mass storage devices.
 
The patched ROM worked out pretty well for me, but the only problem is that after completing my playthrough at 98% and spending 9:57 hours of my life, it was almost 10 hours! After getting my victory screen, I wanted to reload my recently completed save to see if I could get the last few heart containers, but when I tried to load my save file, The game deleted it in my face with a text saying: "Save file corrupted" and BOOM, my save file was deleted, at least during my entire playthrough I was able to save and load my game, But I don't know why after completing it almost 100% I was eliminated, I know that the reward for completing the game at 100% is just an illustration that can serve as a wallpaper, but I still wanted to I'll take it easy, but at least I unlocked the beach outfit for Shantae so at least I didn't miss out.. : p
Post automatically merged:

Pretty good, throughout my entire game I was able to save and load my save data, but for some strange reason, At the time of completing the game at 98% I wanted to reload my save to see if I could get those last heart containers, but when I tried to load my save file, The game showed me a text that said: "Save data corrupted" after that my save file was deleted... Of almost 10 damn hours!!! I know that the reward for completing the game 100% is an illustration which serves as a wallpaper, but I still would have liked to do it at the time, Well, at least I unlocked the beach outfit for Shantae permanently! :p


(P.S. I played my entire game on a GBA emulator for PSP LOL)
 
Last edited by YuukiMako,
There was a question about saving on a real SRAM cartridge.
Roms are writed on real cartridge after the patch, but the game freezes at the same time as i tried to save game. Restart is required.
On the one hand, it's uncritical, because game saved anyway, but on the other, it's nonsense.The patch and writing on the cartridge were done according to this guide. In theory, it should freeze for second and continue the game, but here it freezes to death, although it persists. Help me solve this problem.
 
Sigmar star dx's cart seems to be in the same boat, eeprom in the headers, patched to sram/fram.

just like with Shantae's steam release included rom, it is not patched - but it doesn't have the internal name or romcode either.
 
Last edited by Squall Leonhart,

Site & Scene News

Popular threads in this forum