Added
- Added support for Bandai FCG (mapper 16)
Changed
- The emulator display can now fill the entire screen
- Improved compatibility with Android and macOS
- Greatly reduced the performance cost of the rewind feature, especially on lower-end devices
- The emulator core now runs on a dedicated background thread, reducing stutter and making emulation smoother
- Volume hotkeys now adjust the persisted volume setting instead of a session-only value
- Emulation speed now locks to actual audio playback, fixing gradual audio drift and pops after stutters
- Frames are now presented in sync with the display refresh, reducing judder
- Audio recovers from underruns faster
- Fast-forward now mutes audio instead of producing crackling
- Improved emulation core performance
- Frames are now uploaded directly to the display surface on Android, removing a per-frame bitmap copy and render pass
- Auto-save and save states no longer cause a periodic hitch (async file IO)
- Console reset no longer restarts the audio device
- Further improved emulation performance on low-end devices by batching PPU background rendering and reducing per-cycle overhead
- Debug overlay now shows the audio underrun count and minimum buffer fill
- Reduced rewind snapshot capture rate on mobile, improving performance on lower-end devices
- Rewind playback now paces against the audio buffer like normal play
Fixed
- Fixed the menu button being covered by the status bar on Android
- Fixed the recent ROM list showing an error instead of the ROMs when a single thumbnail failed to load
- Fixed zapper hits not being detected reliably
- Fixed uninitialized framebuffer memory being visible in areas the PPU never draws
- Fixed some settings getting cut off on Android in portrait mode
- Fixed touch controls not getting enabled when enabling them for the first time
- Fixed battery-backed save RAM not being restored when loading a game
- Fixed a memory leak that slowly increased memory usage during play while rewind was enabled
- Fixed CHR RAM not being writable for iNES 1.0 ROMs without CHR banks
- Fixed a race condition in the native audio buffer that could cause crackling audio
- Fixed multiple corruption issues in save states
- Fix return address bookkeeping in the debugger, fixing step-out
- Fixed a crash when reading save RAM that's smaller than 1 KB
- Unexpected errors no longer kill the emulator thread, and a load that times out now restarts the emulator instead of failing forever