There are several problems with Save States on the IOSurface branch:
1. Saving multiple states shows up as different ROMs.
2. Screenshots do not work.
3. Sometimes more than 2 states cannot be saved.
4. The set of states is not kept persistent across different playthroughs.
5. In the Save State manager, the list per ROM is not necessarily sorted and sometimes entries incorrectly match up to save state loaded.
A somewhat long list but not very difficult to solve.
1 through 3 were trivial to solve, though 4 required effort.
From the design already set in place, it looks as though the relation between ROM file and save state is meant to be maintained by file aliases. (To handle the case of files being moved.) This is pretty reasonable but the current Cocoa API only support aliases to files and not folders. I got around this by keeping an alias to a file guaranteed to be within the save state.
Lastly, the fifth problem I have not looked at yet.
WIP patch for problem 1-4 (v0.1)