SRAM/Save Transfer?

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
SRAM/Save Transfer?
by on (#105071)
Would it be possible, using something like an Everdrive, to transfer save files/sram contents from one cart to another, or write SRAM files from like an Emulator to real cartriges?


I was thinking, like write an SNES rom whose only purpose was to dump an SRAM/Save to SNES's memory, display a message, and remove the everdrive from the SNES and put in the cartridge you want to write to, wait for 10 seconds, then write the contents of memory to SRAM, and display another message.
Re: SRAM/Save Transfer?
by on (#105072)
Yes, hotswapping as you describe works, at least with normal cartridges. I'm not familiar with the Everdrive, though it sounds like a flash cartridge. You have to disable the CIC inside the SNES, otherwise it'll give a gray screen and reset the CPU when you remove a cart. When hotswapping, it helps to do constant large DMA transfers, which halt the CPU and lessen the chance of it crashing.
Re: SRAM/Save Transfer?
by on (#105100)
You could also use a device like the Game Doctor SF or the Retrode to copy save data. It may be more reliable.

That is a neat trick with the DMA transfers to reduce the possibility of problems.
Re: SRAM/Save Transfer?
by on (#105107)
The DMA trick can be done on the NES too, by doing 256-byte sprite DMAs with $4014.
Re: SRAM/Save Transfer?
by on (#105114)
Any estimate as to how *less likely* a crash is to occur during hot swapping by using the DMA transfers to stall the CPU? I do recall hearing when you hotswap you should be quick about yanking the cartridges out and quick about inserting the new one back in.
Re: SRAM/Save Transfer?
by on (#105126)
Well, if the cartridge comes out quickly and smoothly there might be less time with jangly partial connections going on.

On the Famicom, I find a hotswap will fail maybe 1/3-3/4 of the time, depending on the cartridge I'm using, though I've never tried a DMA loop.