Dumping Sega Saturn Cartridges with less hardware

I have written a script with QuickBMS (get it from the developer's site: quickbms by Luigi Auriemma) that works with the excellent Indirect Dump feature of Save Data Manager; this allows you to dump Sega Saturn cartridge ROMs without a Gamer's Cart/ USB Dev Cart. As long as you can transfer save data to and from your Saturn and PC, you should be able to make use of this method. It will most likely take a long time for you to do this, so should only be used if you are lacking a better solution - Gamer's Cart being the obvious example.

If you can play CDRs on your Saturn, and write them on your PC, you can dump any Saturn Cartridge:
  • Save Game Extractor can be used to get save data from your Saturn to your PC with an audio cable. (takes about an hour to transfer complete internal save RAM)
  • Save Data Manager and Save Game Copier both allow you to burn .BUP files to CDR, and then copy them from the disc to your Saturn. (takes 1 CDR for each block of compressed data, except for the last block)
This is a rough step by step guide on how to work with Save Data Manager, and my QuickBMS script.
  1. On Saturn:
  2. Insert Cartridge you want to dump, power Saturn, and launch Save Data Manager
  3. Save Data Manager: Save Data Export -> Export Cartridge Boot ROM
  4. Perform Indirect Backup to Saturn internal SRAM (it creates the files _CARTDMPDAT and _CARTDMPHDR, both are needed)
  5. (vague) Transfer Saturn internal SRAM to PC (e.g. USB Datalink, Save Game Extractor etc)
  6. On PC:
  7. Keep all data in the same folder as QuickBMS.exe, for convenience
  8. (vague) Convert _CARTDMPDAT and _CARTDMPHDR save data to .bup files, if they are not .bup already (e.g. Sega Saturn RAM Backup Parser works well)
  9. Name the .BUP files: _CARTDMPDAT_B00.bup and _CARTDMPHDR_B00.bup (preferable)
  10. Run the QuickBMS script from the command line, (Or use the gui to open _CARTDMPDAT_B00.bup) e.g.:
  11. quickbms -o sdm_indirect_dump_v1_3a.bms _CARTDMPDAT_B00.BUP .
  12. If the data is complete:
  13. CARTDUMP.BIN is the cartridge ROM, CARTDUMP.TXT details the dump process (this should replicate the text file created when using a Gamer's Cart with Indirect Dump)
  14. You can delete all other files created in this process, if you like
  15. If the data is not complete:
  16. Keep CARTDUMP_B00.BIN and CARTDUMP_B00_INFO.DAT
  17. (vague) Transfer _CARTDMPHDR_GET_B01.bup to Saturn internal SRAM* (e.g. Save Data Manager or Save Game Copier burnt to CDR)
  18. On Saturn:
  19. Save Data Manager: Save Data Export -> Indirect Dump : Continue
  20. Go to step 4, replacing 00 in any filenames with the next block number (01 on the second loop), and 01 with the next block number after that (02 in the second loop)
* Note: You won't be able to get Save Data Manager to move on to the next step of the Indirect Dump without this file in your Saturn's SRAM

Please feel free to make suggestions on the script, or make revisions yourself.

I have also attached an example set of files dumping an Action Replay (Firmware 1.8F), it might help with troubleshooting.

A big thank you to cafe-alpha for both Save Data Manager (and its Indirect Dump feature), as well as providing source code for SDM, which greatly accelerated the development of this script.
 

Attachments

  • SDM_indirect_dump_example.7z
    206.2 KB · Views: 63
  • sdm_indirect_dump_v1_3a.zip
    5.5 KB · Views: 71
Last edited:

slinga

Established Member
Do you want me to add a feature in Save Game Extractor to dump raw memory? Been a while, but I had something to dump the BIOS but it was too slow. That was prior to adding compression.

Should be pretty easy, I have it in Save Game Copier.
 
If you are looking for a little project, then why not? :)

I don't personally need it now that I have a working USB DataLink setup again, but I'd happily test anything for you.

Using minimodem will always be slow(er), but SGE's advantage is "availability" not "convenience" - with the only requirements being Saturn (can boot CDRs), PC with analogue audio input, audio cable, own time/intelligence.

The issue with a raw memory dump when it comes to cartridges is whether the cart is seated properly (i.e. if the data is "corrupt") - so a "blind" dump of a cart ROM could lead to many wasted hours on the user end - this is where Save Data Manager is helpful, you can check the cart (as the Saturn currently sees it) with the hex editor, see if the flash chip is read correctly by the flasher utility, and the dump process is done in small (~27KB) pieces, so you can inspect the data as you go.

You can't solve this problem directly in software, only with diagnosis by the user - you can't verify data without a comparison (and why would you perform a dump if you already have a perfect dump?)

So, to stop it being a large project, I'd suggest adding a disclaimer about carts (e.g. "seat cart properly") and give these user options:
  • address: bios, cart, custom
  • data length: whole bios, whole cart (256KB), custom
And, either, allow the python script to piece together chunks of data, or add something to the readme to point users to a free data concatenation tool that does the job.

Hope that's helpful! :)
 
Top