What's New:
v1.1.9-2
New Stuff
View: Add STROOP autoDetect parameter to Config.xml line
View: Add read-only section in status bar
Bugfixes
View: Fix key messages generated during hotkey selection reaching dialog
View: Fix movie path being set despite movie dialog being cancelled
View: Fix incorrect handling of empty strings in IOService::get_files_with_extension_in_directory
Core/ST: Fix missing SI interrupt in queue when savestating on pure interpreter
Other Changes
View: Move seek settings into combined category for piano roll, clarify piano roll disabling
View: Ask for confirmation before reseting all settings to default
View: Show dialog and bail when trying to reset all settings to default
View: Clean up rsrc.rc
View: Clean up icon resources
View: Allow cancelling hotkey change with RMB
PianoRoll: Show status text when disabled due to seek savestate interval
Core/ST: Require callbacks to be non-null
Core/ST: Don't stop VCR when cancelling st load
Core/ST: Improve savestate warning consistency
Core: Unify result types
v1.1.9
New Stuff
Piano Roll
New Seek (now allows savestate-based reverse and mid-recording seeking, including Lua API)
Warp Modify (including Lua API)
New Settings UI
FFmpeg Capturing
Extended M64 format
Task-based savestate system
In-memory savestate API
Core benchmark and timing API
Better Logging (crash.log will no longer be generated, all mupen logs which also contain more data are now in mupen.log)
Added Lua GDI presenter (useful for systems without DirectComposition support)
Reimplemented CoreDbg
Implemented hybrid capture mode using legacy readScreen
Add statusbar scale up/down restriction option
Add stacktrace to crash log
Bugfixes
View: Fix input and audio plugin settings being swapped in menu
View: Fix input and audio plugin settings being swapped in menu
View: Fix broken font in lua input dialog
View: Fix savestates with slot extension not being accepted during drag-and-drop
View: Fix statusbar segments not scaling in all situations
VCR: Fix movie not being flushed when unfreezing in read-only mode
VCR: Show error dialogs in reset fail cases
VCR: Fix last modified date changing when playing movies
VCR: Fix statusbar VCR section not updating immediately after loading state
VCR: Fail in start_record when invalid start type is provided
VCR: Fix various issues related to movie flushing
VCR: Fix recording starting when unfreezing in rw mode during playback start
Config: Fix default last movie type being invalid
Messenger: Fix concurrent subscriptions and broadcasts
Lua: Fix crash when showing file dialog during atdrawd2d
Lua: Fix lua scripts not receiving callbacks during initial global code execution
Core: Tighten core_executing section
Config: Fix load current hotkey being I instead of P
Core Fix GameShark byte comparison instructions
Performance
Lua/WGUI: Optimize color lookup
Lua: Optimize class lookup
Lua: Optimize callback invocation (~60% faster C to Lua calls)
Core: Use pool for interrupt queue allocations
Core: Optimize timer code
Core: Improve savestate performance
AsyncExecutor: Implement the async executor, a new method for scheduling asynchronous tasks which reduces latency and CPU load
Messenger: Improve broadcasting performance by about 10x
Encoding: Reduce video buffer allocations during encode
Other Changes
There has been a major architectural cleanup effort for 1.1.9 with the main changes being: decoupling program layers, fully decoupling the core from Windows, cleaning up the project directory structure, and organizing into layers (see readme).
View: Show more information during capture
VCR: Change movie backup names (now use a period as the separator)
VCR: Improve error feedback
Core: Improve savestate error feedback