My weekend hobby for the last 3 weeks has been learning C++, and one of the things that was really bugging me building up to this was having to boot into Windows to back up my game saves before lending the games to friends, and having do it again restore them when I got them back. So I decided to have a go at recreating the functionality in a command line application that could be compiled for Linux, Windows or Mac. I've covered the Linux and Windows part, but I don't have a Mac (though the HID library I'm using says it's Mac compatible).
Anyway, I got started looking at elisherer's R4iSaveMore application, which defines most of the commands correctly. After that, it was a matter of figuring out which commands weren't accurate by sniffing the USB traffic to the dongle and reversing the R4iSaveDongle v1.5.exe code. Unfortunately, it's not just a case of mimicking the HID reports as the application performs a lot of its own logic. The whole thing's been a major pain in the arse, and I've hit the last brick wall I can take with this stupid device. So, to cut my rambling short, I'm releasing what I have so far and taking a short break from banging my head against the aforementioned brick wall.
Download v0.1bSource
License is GPLv3
Anyway, I got started looking at elisherer's R4iSaveMore application, which defines most of the commands correctly. After that, it was a matter of figuring out which commands weren't accurate by sniffing the USB traffic to the dongle and reversing the R4iSaveDongle v1.5.exe code. Unfortunately, it's not just a case of mimicking the HID reports as the application performs a lot of its own logic. The whole thing's been a major pain in the arse, and I've hit the last brick wall I can take with this stupid device. So, to cut my rambling short, I'm releasing what I have so far and taking a short break from banging my head against the aforementioned brick wall.
Features
- Dump information about the card header.
- Reads from game cards' save data and output to a file.
- Writes saves to and erases save data on game cards.
- The main code is flexible, so other devices could be supported very easily.
Known Issues
- Some other DS games (like Pokemon Diamond et al.) set a flag in the SD app that tells them to be written to differently, currently not implemented.
- Save detection for some DS cards is not yet implemented. You can specify the save size using -s=BYTES, e.g. ./005tools download NSMB.sav -s=8192. If you're not sure what the save size is, http://www.gamespy.com lists the size for a lot of games.
Download v0.1bSource
License is GPLv3