Mostly-bugfix release for v0.12.0
This release fixes a regression in v0.12.0 that caused turbo input mappings to not work properly; in v0.12.0 they behaved the same as non-turbo mappings.
This release also includes changes to where the emulator stores its settings files on Windows. They are now generally stored in a user profile-level directory by default rather than in the emulator directory, so settings will be automatically shared between different copies of the emulator in different directories (it already worked this way on other platforms). It is possible to restore the old Windows behavior if desired, see the full changelog below.
Save states are not compatible with previous versions.
Full changelog:
Settings Changes
- On Windows, the settings file is now stored in a user profile directory by default (generally
C:\Users\$NAME\AppData\Local\jgenesis\); other platforms already behaved this way (e.g. generally$HOME/.config/jgenesis/on Linux) - If you want to restore the old Windows behavior of storing the settings file in the emulator directory, there is a new option in Settings > Paths to switch the settings file location, or you can create a
portable.txtfile in the emulator directory (contents don't matter, the file just has to exist); this works on all platforms - The
--configcommand line arg still exists and overrides all of this behavior if it is used
Improvements
- The rewind buffer is now compressed in memory; this significantly decreases the emulator's RAM usage, particularly when emulating Sega CD or 32X
- Exact savings will vary based on a lot of things, but with 32X for example I'm seeing that a 10-second rewind buffer now takes 40-80 MB of RAM instead of ~600 MB
- Compression is performed asynchronously, so this should not impact emulator performance
- Save states are now compressed and written to disk asynchronously, which makes it significantly less likely that saving state will cause the emulator to stutter
Fixes
- Fixed turbo input mappings not working properly; this was a regression in v0.12.0
- This was caused by the backend changes to support the Genesis debugging tools added in v0.12.0, which involved mostly rewriting the main emulator execution loop (among other things); the new version was missing the bit of code that makes turbo buttons alternate between pressed and not pressed
- Fixed all settings reverting to defaults when a single setting fails to deserialize from the config file; now only the setting(s) that failed to deserialize will reset to default
- (SNES) Cartridges that specify a nonsensically high amount of SRAM in the cartridge header now get 256 KB of SRAM instead of none (#635)
- This seems to usually happen with prototype cartridges that don't have a proper cartridge header, where the "SRAM byte" is just part of a random chunk of code or data; some of these do require SRAM though