Sounds pretty interesting! Do keep in mind that FBA compresses save states. This can be pretty cpu-intensive for a pile of save states. It takes FOREVER for games with large areas of ram. I've been wanting to re-write the save state system for a while, ripping out the compression and getting these to be endian and 32->64 bit safe. As of right now, states from a 32-bit build of fba won't work on a 64-bit usually. It's pretty nasty.
I realize the compression is pretty slow with games that use large amounts of ram, but this feature will take no longer than usual - all it does is: instead of overwriting the last savestate, it renames it to a backup file, up to 10 of them, the 11th always gets deleted. To break it down visually:
hit savestate once, you get:
game slot 1.fs
hit savestate button again
game slot 1.fs
game slot 1.fs.backup0 (from the first time you hit savestate
hit it again:
game slot 1.fs
game slot 1.fs.backup0
game slot 1.fs.backup1 (from the first time you hit savestate)
now, if you hit the new "savestate undo" button, this will happen:
game slot 1.fs.backup0 -> game slot 1.fs
game slot 1.fs.backup1 -> game slot 1.fs.backup0
hit it again:
game slot 1.fs.backup0 -> game slot 1.fs
Nothing else needs to be changed re: savestates (IMO)
One thing I might add: mame's crappy savestate support is the reason I chose FB Alpha. Every time you hit savestate (even if mapped to a joystick/gamepad button) it asks "what slot do you want to use" - and you have to reach for the keyboard to type in the slot#! [at this point, mame wont accept input from Joy2Key] What if you're sitting back in your chair with a gamepad in your hand? that sucks. also - in a lot of games "savestates aren't supported for this game". Now that I fixed nearly every game with broken savestates in FBA, FBA is perfect in this respect.
Going off topic:
I agree with kev, the rom loading needs at least some macros, to rid the use of having to use memcpy and such things if data needs to be relocated. You don't have to change the entire system - just make a couple macros to deal with things better for future drivers (what I mean is, we don't have to go back and change all the existing drivers to use the new macros - just for new drivers and/or when updating/rewriting older drivers that never worked right to begin with).
best regards,
- dink