SD card based multi-purpose cartridge for the SNES
First of all, thanks to RedGuy for making the usb2snes firmware and helping me out with some issues I had while messing around for the first time with sd2snes. He also made the savestate code used as base for this firmware.
Secondly, I also wanna thank my friend Vitor Vilela that helped me alot with assembly stuff, he's an asm god!
- Built-in Savestates without PC connection/patch
- New Menu Settings:
- Enable/disable savestates
- Enable/disable savestate slots
- Loadstate delay (frames)
- Default Inputs for Save/Load and Slots in config.yml
- Custom Inputs for Save/Load for specific games in savestate_inputs.yml
- Savestates are stored in the SD (sd2snes/states)
Enabling this option you'll have 4 slots to choose, pressing Select+Dpad
(each direction is a slot)
Up: Slot 01 / Right: Slot 02 / Down: Slot 03 / Left: Slot 04
Disabling this will always use the first slot. You can change the Select
to another button in config.yml file
Just to make it clear, this only changes the slot you're saving/loading, so I'll need to save/load state after selecting a slot
Loadstates are too quick, if you need to regrab other buttons that was pressed in the moment you made the savestate, this option gives you a small time to help you with that or whatever other reason.
You'll just need to type the input buttons as string (without any spaces):
B Y A X
= Buttonsu d l r
= Dpads
= Select (lowercase)S
= Start (uppercase)L R
= Shoulder buttons
"IngameSavestateButtons" and "IngameLoadstateButtons" variables holds the default inputs for Save/Load, which are:
- SL =
Start+L
- SR =
Start+R
You can define custom inputs for each game you want, you'll need the rom checksum value (different versions has different checksums). Examples:
# CHECKSUM: SAVE,LOAD
EF80: XR,XL #dkc1 v1.1 (US)
2BCC: XR,XL #dkc1 v1.1 (US)
0C17: XR,XL #dkc1 v1.0 (JP)
1202: XR,XL #dkc2 (US)
9860: XR,XL #dkc2 (US)
35CE: XR,XL #dkc2 (JP)
B28C: XR,XL #dkc3 (US)
E545: XR,XL #dkc3 (JP)
F8DF: sYR,sYL #super metroid (*)
0C17: AR,AL #super valis (US)
5B4C: AR,AL #super valis (JP)
This file contains a few fixes for some games that has problems with APU. Examples:
# CKSUM: ADDR,APU;PCADDR,PATCH
64E9: 7E174B,2142;05C10D,A1 # This updates $7E174B with the latest $2142 state, it also patches 1 byte at the rom 0x05C10D (pc address)
Savestates will only work with games that don't have special chips like SuperFX/SA-1/CX4, this is because the firmware loads another FPGA file for those games and it doesn't have necessary configuration to run custom code.
Flashcart savestates aren't perfect, the code runs on NMI to save a bunch of addresses to another place. You'll notice the song in some games will keep playing after you load state, others will just crash.
RedGuy did a great job finding fixes for some games, but for now he will focus on other projects. But you can try to find/contact someone who knows assembly and try to find a solution for that.
Savestates currently doesn't work with In-game Hooks, you must disable it to use this feature.
If you find this useful and would like to contribute, you can donate at http://furious.pro/donate
Follow my Twitter for updates: @furious_