FlashManager
From PHWiki
USB flashing tool for several brands of GBA Flash Cards.
The creator and his page are in Japanese but the software is available in English. The newest betas support most modern linkers and flash carts. Note that the software is shareware, and as a result it will nag you every time you attempt to do any action, requiring you to click two buttons before you can continue.
Reading and Writing EEPROM Saves with FlashManager
If your USB linker is supported by FlashManager, there is a good chance that you will be able to read and write EEPROM saves to and from official Nintendo cartridges, with a few quirks. Normally, most linkers can only retrieve SRAM saves, leaving out a large majority of games. FlashManager can handle SRAM and FLASH saves fine, but with EEPROM it's a little bit trickier. To see this problem for yourself, do the following:
- Retrieve a save file from an official cart that uses EEPROM by using FlashManager and set it aside.
- Load the appropriate rom into VBA and exit, which should automatically create a *.sav file. Set this aside.
- Open both save files in separate instances of a hex editor and compare the text outputs.
Notice anything special? The order of every 8 bits is reversed in one of the save files! This makes it impossible to use extracted saves with VBA, and it prevents you from sending VBA saves to your original cartridge.
However, this problem can be fixed thanks to a member named patters98. Once he realized that every 8 bits were being reversed, he wrote a Perl script to "undo" the reversion, fixing the entire issue. This Perl script is reproduced below. Save it as "8bitflip.pl"
#!/usr/bin/perl
if (!$ARGV[0]) {
print "Usage: 8bflip.pl gamesave.sav\n";
print "produces the output file gamesave-flipped.sav\n";
exit;
}
$infile = $ARGV[0];
$outfile = $ARGV[0];
$outfile =~ s/\..*$/-flipped\.sav/;
$buffer = "";
open(INFILE, "<$infile") or die "cannot open input file";
binmode(INFILE);
open(OUTFILE, ">$outfile") or die "cannot open output file";
binmode(OUTFILE);
while (read INFILE, $buffer, 8) {
$buffer = reverse $buffer;
print OUTFILE "$buffer";
}
close(INFILE);
close(OUTFILE);
If you don't have Perl installed, do so now. Once it is installed, open up a command prompt window and navigate to the directory where 8bitflip.pl is located. Copy the save file you wish to fix into the same directory. Then type "8bitflip.pl gamesave.sav" and it will create a new file called "gamesave-flipped.sav"
If the original save file was from an official cartridge, rename the new flipped save file to the same name as the GBA rom it corresponds to and then start VBA to verify that it works.
If the original save file was produced by VBA, then simply use FlashManager to send the new flipped save file to your official cartridge.
This has personally been tested by patters98 for sending an EEPROM save to his official Minish Cap cartridge, and it has also been personally tested by dantheman to work when obtaining saves from original cartidges of several games, including Minish Cap.
