1.1.9
Summary
This release adds the long-awaited piano roll among other useful features and fixes various bugs.
As always, feel free to ask questions about anything in the Mupen64 Development Discord Server. Bug reports and commisioned features are greatly appreciated and help sustain the development.
Piano Roll
The piano roll is the latest major addition to Mupen64.
Its main functionality is viewing and modifying the inputs in a movie. In contrast to traditional frame-by-frame TASing, the piano roll opens up the possibility of modifying frames prior to the current one.
Ecosystem Updates
π’ SM64 Lua Redux 3.0.0 - Adds SM64-specialized Piano Roll!
π’ hacktarux-azimer-rsp-hle 0.3.0
π’ mupen64plus-rsp-hle 1.0.0 - New port of the mupen64plus RSP plugin, offers better performance in some situations
π’ better-gln64 1.3
Documentation
Mupen64 now has rudimentary user-facing documentation! π₯³
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
Tip
The new Async Executor system can reduce interaction latency and improve performance. Try enabling it in the settings!
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
Breaking Changes
The old Lua Seek API surface has been deprecated due to fundamental changes in the seek implementation.
Old | New |
---|---|
movie.begin_seek_to | movie.begin_seek |
movie.get_seek_info | movie.get_seek_completion |
emu.atseekcompleted |
Beta Testers
During this release's testing round, the following community members performed beta testing.
Thank you for the help, your time is greatly appreciated!