DOSBox-Staging Git (2026/07/14) aims to modernize the DOSBox project with updated practices and enhanced support for contemporary systems. Key changes include improvements to audio management, such as resynchronizing audio with video during captures and refining the pause functionality with a state machine. The repository has optimized the mixer by removing unnecessary hooks, simplifying pause checks, and addressing race conditions. Other updates involve enhancing MIDI management during pauses, improving capture logging, and fixing various typos and issues. The goal is to enhance stability and functionality while streamlining audio and rendering processes within the emulator.
(HEY YOU!! We hope you enjoy! We try not to run ads. So basically, this is a very expensive hobby running this site. Please consider joining us for updates, forums, and more. Network w/ us to make some cash or friends while retro gaming, and you can win some free retro games for posting. Okay, carry on đ)
DOSBox-Staging Git (2026/07/14) has been compiled. This repository aims to modernize the DOSBox project by adopting current development practices and tools, resolving issues, introducing features that enhance compatibility with today’s systems, and contributing patches upstream.
DOSBox-Staging Git Changelog:
* docs: Provide an overview of the audio mixer
* Explain the behavior of the paused mixer producing silence
* Eliminate the capture_queue skip-forward `Clear()`
* Remove `MIXER_Pause()`/`MIXER_Resume()` hooks
* Verify pause status before locking the mixer
* Streamline `SynthRenderPauser` parking
* Correct `SynthRenderPauser` pause-check race condition
* Change `mapper_run_pending` to a simple boolean
* Clarify the pause API HTTP source comment
* Eliminate `seq_cst` on pause state atomic
* Utilize `get_pause_state()` helper for reading pause state
* Remove unnecessary pause state mutex
* Re-sync audio with video during captures using micro cross-fades
* Schedule nosound mixer capture by emulated time
* Fix typos in comments regarding pause and mute APIs
* Gate subsystem pause hook on the actual pause edge of the FSM
* Isolate synth renderer pause control in `SynthRenderPauser`
* Avoid filling audio with silence in the SDL callback
* Address PVS-Studio warnings
* style: Code cleanup
* Extract pure mute-transition policy and perform unit testing
* Extract pure pause transition policy and conduct unit tests
* Move audio fade from SDL callback to the mixer thread
* Bypass MIDI updates in `set_mute_state()` during pause
* Refresh title bar on both pause-request and actual pause edges
* Simplify `MIDI_Pause()` to consistently call `MIDI_Mute()`
* Include pause-pending FSM with fade-completion gate
* Resume the MIDI renderer prior to the mixer thread
* Fully encapsulate pause logic
* Consolidate `apply_*_settings()` with `handle_pause_when_inactive()`
* Introduce auto-pause request helpers to better encapsulate pause logic
* Rename FocusLossPaused to AutoPaused
* Revamp mixer mute/pause management using an FSM
* Halt MIDI synth renderers when in pause state
* Fade audio in/out at the SDL level when (un)pausing or (un)muting
* Correct mixer channel sleeper timing issues using wall clock time instead of PIC time
* Fix audio chunk length during video captures
* Clear audio capture queue between consecutive audio recordings
* Update viewport correctly when resizing while paused
* Resolve image capturing problems during pause
* Enhance capture logging during pause
* Refresh title bar and log only user-visible paused/unpaused transitions
* Force-resume on shutdown to ensure teardown runs from a known state
* External MIDI mute on pause via `MIDI_Pause/Resume()`
* Integrate mixer pause and subsystem-pause helper
* Replace deferred-run PIC event in the mapper with atomic flag
* Disable mouse motion during pause
* Substitute focus-loss/gain pause loop with FSM transitions
* Adjust wall-clock ticks on resume
* Prohibit fast forward when paused
* Connect pause hotkey
* Associate `paused_tick()` handler with presentation, input, and webserver processing
* Implement pause state machine skeleton
* Add `RENDER_RescaleLastFrame()` for frame recreation during pause
* Route capture path through the source latch
* Store pixel data for the last complete frame in the render scaler
* Drain audio queue without adding zero-padding during audio captures
* Bypass image/video capture on aborted scanouts
* Temporarily restore silence-fill in SDL audio callback
Retro Replay Retro Replay gaming reviews, news, emulation, geek stuff and more!