I usually don't play with overclock so I never really reach 35 full FPS, but I agree with you that it's probably time to add no-frameskip to the VARS setting. I'm also considering a frameskip setting that automatically detects laggy areas and skips frames as needed to maintain the game speed. I'll let you know when I experiment with that.
Yes because we are skipping every second frame it's 17.5FPS which is not the most pleasant experience, so would be great to add a no-frameskip setting. Even with full overclock the calculator has in a few areas still trouble to even reach 20 or 25FPS so that automatic frameskip would be great too.
Alright, now about the newly added Save/Load function. It works perfectly but if you try to load in a save file from another WAD it gives me a System ERROR. Inputting a name is a bit slow because it takes some time for the typed character to appear on screen. So would be great if you could make that one a bit faster because if you type too fast it skips characters. Also is there any way to put numbers into the name? I like to name my savefiles starting with the name of the WAD and then the episode (if any). For example: DOOM1 E2 or DOOM2.
One thing which is really annoying is that always after saving the game it kicks you out of it which is bad. I know this has something to do with the WAD mapping not being correct anymore after writing a save file to flash but there has to be a better solution.
First up we have 3MB of RAM. So let's use it. My idea is to store all the savefiles while the game is running to RAM and also load them from there. Savefiles don't have a consistent size because they grow steadily the more you do in a level. So just to be safe I would cut from the end of the 3MB RAM a slice of 500KB off.
Here is how it will work:
Starting the game: look for savefiles in flash and load them into 500KB zone of RAM
Load Game: load the game savefile from 500KB zone of RAM
Save Game: write the game savefile into 500KB zone of RAM
Quit Game: write all the savefiles from RAM on the flash to store them permanently
As you can see with this approach we don't use the flash at all while the game is running which should eliminate that the WAD isn't mapped correctly. The drawback of this method is that it takes up some RAM and it will have to do a lot of writing to flash at the end which might be a bit slow. Maybe you can also add a progressbar to show how long the user has to wait and also only write changed / new savefiles to flash.