github stenzek/duckstation latest
Latest Rolling Release

latest release: preview
5 days ago

Commits

  • 8962d84 GPU/HW: Add missing logging of depth clears
  • 20916bd FullscreenUI: Activate toggle buttons on release instead of press
  • c3b58f2 FullscreenUI: Support drag/swipe scrolling with inertia
  • 968d20a dep/imgui: Don't smooth scroll requests made while window is appearing
  • fd8bcdc FullscreenUI: Fix ForceKeyNavEnabled() clobbering gamepad nav source
  • 7d64f82 FullscreenUI: Include directory selector in open dialog checks
  • 414d8f2 FullscreenUI: Clear all dialogs on shutdown
  • 49a2ff9 FullscreenUI: Fix indeterminate progress bar sweep range
  • aa9916b FullscreenUI: Avoid inverted std::clamp() bounds in dropdown width
  • f4fe9de FullscreenUI: Pass button flags through in MenuButtonFrame() overload
  • ae4658a FullscreenUI: Pass p_open through in BeginBlurWindow()
  • b73f8b2 FullscreenUI: Keep horizontal menu/sidebar state balanced when hidden
  • 9bbf341 FullscreenUI: Copy/move checkable choice dialog callback before invoking
  • 92a7758 CDImageCHD: Use generated subchannel Q for virtual pregaps
  • b2b68c3 CDImageCCD: Fix LBA count including pregaps twice
  • cde17ac CDImageCueSheet: Fix single-file pregap and LBA count
  • 0b5b877 Common: Add PackedOptionalArray
  • 296d48a ImGuiManager: Ensure DeltaTime can never be negative
  • dff25db FullscreenUI: Improve drag scrolling
  • 0d1b014 ImGuiManager: Don't hover pointer for touchscreens
  • 5d47724 System: Sync to host refresh rates that are a multiple of the console's
  • e48f86a SDLInputSource: Fix sensor enable early return
  • 84e1db5 FullscreenUI: Fix clear binding button clearing all
  • dc623ca Spanish (Spain) translation update 2026/10/25 (#3814)
  • f78ecb8 Settings: Fix VSync/frame pacing help text
  • ae250eb D3D12Device: Use frame latency waitable in exclusive fullscreen
  • 3c81431 Qt: Use X11 server size for surface size
  • 6cd67d7 Qt: Round Wayland surface size as per fractional-scale-v1
  • 4b52474 OpenGLContextEGL: Don't query surface size
  • 60a5c21 GPUDevice: Report swap chain resizes from present calls
  • 1e7b6d7 Qt: Accept wayland-egl/wayland-brcm platform names
  • 360a35e Qt: Remove sync()/processEvents() hack
  • ae7895d Qt: Pick up X11 window size changes from configure events
  • 8c68d47 Improve Swedish vertex terminology (#3815)
  • 16be09a Qt: Skip setting rounded corner state on Windows 10
  • e7efd42 Qt: Recheck surface size when restoring from minimized
  • a4f3e5f VideoThread: Ignore zero-sized render window resizes
  • 076b133 CocoaTools: Use native display mode for real scaling factor
  • 5d93649 System: Disable vsync while fast forwarding if it can be switched cheaply
  • 637ff51 VulkanSwapChain: Switch between FIFO and immediate without recreating
  • 2a0e92f FullscreenUI: Fix 0 point display when achievements disabled
  • a78082b Qt: Add descriptions to post-processing page
  • e0f6fa8 Qt: Remove 'Post Processing Chain' groupbox
  • 0310f59 XInputSource: Poll disconnected slots periodically
  • e41bcd3 InputManager: Device notification fixes
  • f591ef2 Common: Fix heap overflow when shrinking DynamicHeapArray
  • 526b4a1 Clarify Swedish automatic setting descriptions (#3816)
  • d381837 Improve Swedish translation quality (#3817)
  • eb68a7d AudioStream: Make ApplyVolume() public
  • cf5890e SoundEffectManager: Add volume control
  • 3171f3b Cheats: Add block write code types
  • 8cc2ef4 Scripts: Add psx-exe to elf converter
  • 25ff336 Cheats: Merge runs of constant/match writes into vectorised block writes
  • 94cdf91 Qt: Update machine translations
  • 831fef0 Qt: Fix reset audio settings clearing from base ini
  • e700391 Qt: Rename PromptForAddress() to PromptForHexValue()
  • 3f8df8b Qt: Allow editing CPU registers in debugger
  • fc48940 CPU: Only intercept TTY syscalls in interpreter with BIOS TTY logging
  • ca184ad System: Don't apply cheats or update achievements until the game starts
  • b292b84 Scripts: Regression test UI
  • 09f61b9 GPU: Fix initial display range values
  • 7793f8d GPU: Restart the video timing on GP1(00h)
  • 3f27fe4 GPU: Start and end vblank when the scan reaches Y2/Y1
  • 246a69c GPU: Schedule the CRTC for whichever of Y1/Y2 comes next
  • ba67e45 GPU: Clear GPUSTAT.31 during vblank in 240-line modes
  • 06e0b1f GPU: Keep the latched 480i field when switching to 480i in vblank
  • 2432144 DMA: Don't starve manual transfers when a channel re-halts on unhalt
  • 65b42bc CDROM: Widen seek jitter to up to one sector
  • 684f820 GameDB: Disable auto analog for Silhouette Mirage
  • 7363f51 GameDB: Remove hacks for The Next Tetris and Otona no Asobi
  • 3a5ec0a GameDB: Disable widescreen in Marionette Company 2
  • 637e51e CI: Hopefully fix translation-lint failures
  • 3469e35 Cheats: Fix compiler warning
  • e01270b GPU: Avoid lambda capture
  • 67409ee GPU: Pack system config fields together
  • 87bc837 Cheats: Add an activation mode for frame start (vblank end)
  • 3e3b44b MDEC: Only update status once per Execute()
  • 25425bc MDEC: Only request input DMA while a command needs parameters
  • ff3ca71 Qt: Update machine translations
  • b058817 Regtest: Support queued controller input
  • 6a45a1c CPU/Recompiler: Improve x64 block protection check codegen
  • 49169d6 CPU/Recompiler: Improve ARM64 block protection check codegen
  • 93e2e80 Tests: Split core tests into components
  • 5bfe53a InputManager: Unify binding callbacks
  • 7708e9d GameList: Extract ExtractMemoryCardIcon() to function
  • 4c72e03 GameList: Allow choice of icon type
  • 4ee08ca Qt: Load game icons asynchronously
  • d9bcd19 System: Don't hold game list lock while inserting media
  • 784e39c MemoryCard: Fix OSD icon on first save
  • 14c6ec1 SDLInputSource: Use Z axis for sensor tilt
  • e125e49 InputManager: Use movement from rest for sensor binding capture
  • d6f555a Qt: Remove blocking RunOnUIThread() in Host::GetClipboardText()
  • 78221ce Qt: Remove block parameter from RunOnCoreThread()/RunOnUIThread()
  • 5cb56b4 Qt: Use functor invokeMethod() overload
  • dfab722 Qt: Remove QtAsyncTask usage for cover loading
  • 1a69bee Qt: Remove QtAsyncTask usage in settings widgets
  • a9e80e7 Qt: Remove QtAsyncTask
  • b611856 Common: Polyfill move_only_function wrapper for Linux/Mac
  • 782a8e7 Misc: Use MoveOnlyFunction across the board
  • 89e7ca8 Qt: Use custom QEvent for RunOnCoreThread()/RunOnUIThread()
  • 9bf47c2 Qt: Show the binding as it's built up in the binding dialogs
  • d3877c3 Settings: Move folder config key to EmuFolders namespace
  • 1de9df3 FullscreenUI: Make popup close button optional, remove title from binding dialog
  • 4d2f64d FullscreenUI: Use plural formatting for binding timeout
  • e070454 Qt: Fix game list icon cache lookup using game path instead of URL
  • 9b5fd94 Qt: Replace AsyncPixmapLoader with an async task
  • 5b9147b Image: Expose static methods for flip/svg
  • 7c2f343 System: Centralise disc change menu enumeration
  • de1834c GameList: Fall back to first disc icon for multi-disc games
  • ca049fc Data: Include Folly in thirdparty.html
  • a9ecb5d Qt: Attach memory card editor import/extract icon menus to buttons
  • e81eb64 Qt: Attach cheat import menu to button
  • e137886 Qt: Attach log channels menu to button
  • d986c81 Qt: Remove redundant function
  • e413d95 System: Add option to reset SPU on game start
  • 2e97f81 GameDB: Reset SPU on game start for games that loop shell reverb
  • 0ff4c50 Settings: Pack all bitfields together
  • 70ed7d6 D3D12Device: Fix stream buffer allocation catching up to GPU position
  • 3fca4f4 D3D12Device: Log debug layer messages
  • 1bc5405 System: Include EXE override in save state
  • dc86783 dep/imgui: Add ImGuiSliderFlags_NoFormat
  • 310ee02 FullscreenUI: Add DrawIntRangeSetting() with formatter
  • e80857d VideoPresenter: Only count a missed vblank once per on-time present
  • 7063868 VideoPresenter: Add subframe presentation
  • 4375f64 Android: Update translation strings
  • 919f35c Qt: Save a few bytes for speedup values
  • 8410fb5 Qt: Remove a few duplicate strings
  • 37f3782 System: Support 4-16MB expanded memory
  • 6255613 CPU: Raise bus error on cached fetch from unmapped memory
  • 042261b CPU/CodeCache: Size LUTs to installed RAM and PIO device
  • 3028510 CPU: Report the virtual fetch address in EPC on bus errors
  • 363ba68 Bus: Add option to force mapping of all installed RAM
  • c3c73e1 Update duckstation-qt_es.ts (#3819)
  • e4a8496 Bus: Force full RAM mapping should not apply to default RAM size
  • ca0dfa5 CPU/PGXP: Don't call PGXP for instructions that write $zero
  • d3d7a12 CPU/PGXP: Move value flags to the header
  • ebdbe96 CPU/PGXP: Fix interpreter immediate moves in memory mode
  • e41a0fb CPU/PGXP: Fix swr into the upper half invalidating the lower half
  • e762de1 CPU/PGXP: Treat $zero as precise
  • dde19bd CPU/PGXP: Fix recompiled mtc0 validating its source with a garbage value
  • 7a8335e DMA: Drop redundant mask in linked list terminator check
  • e86770e CPU/PGXP: Drop upper half fraction when SLL shifts out its bits
  • 9ab3954 Settings: Make depth normalisation option based on depth buffer
  • 2aa3d9d CPU: Define memory handler lookups in private header
  • 184a4bc Bus: Base forced full RAM mapping on installed RAM size
  • 6689bb4 Settings: Drop redundant string defaults when parsing enums
  • 9add9b7 SettingsInterface: Add GetStringListSize()
  • 4f6b531 FullscreenUI: Fix game list directories populating from wrong list
  • 2e356ae CPU/PGXP: Only move native upper half bits into x for packed right shifts
  • 586deb5 CPU/PGXP: Average depth in ADD when both sides have depth
  • 94e1231 CPU/PGXP: Don't take fraction from the field below when extracting bitfields
  • 144f903 MSBuild: Migrate to slnx
  • f606b44 Update duckstation-qt_es.ts (#3820)
  • ab458f0 PIO: Fix Xplorer latch bit usage and banked code reads
  • 4320a73 PIO: Improve Xplorer flash/latch accuracy
  • 8fd72f3 CoreAudioStream: Wait for a full callback before ending underrun fill
  • 467370a CoreAudioStream: Reallocate buffer when stretch mode changes
  • 3465bbc CoreAudioStream: Fix races between the writer and audio thread
  • cd96e12 CoreAudioStream: Improve stretch tempo control
  • e8777c3 CoreAudioStream: Fade out/in around underruns
  • 4d7e89f CoreAudioStream: Don't allocate stretch buffers for null output
  • 85efae5 CoreAudioStream: Run stretching on the audio thread
  • 69f5f9d CoreAudioStream: Raise stretch target after repeated short underruns
  • 0a21018 CoreAudioStream: Don't reset stretch tempo on underruns
  • 160a8f0 CoreAudioStream: Buffer more when emulation can't keep up
  • a9aa7e0 DynLibs: Set error when a previous load attempt failed
  • 2dd5cc3 CMake: Use DT_RPATH instead of DT_RUNPATH on Linux
  • cefb02f CMake: Set minimum MacOS version on precompiled Metal shaders
  • c1f7c6b Qt: Simplify MacOS native theme path
  • defb7ee Qt: Work around checkbox showing in CollapsibleWidget
  • 046584a Deps: Update to 20261103
  • ce8a79b Qt: Update MacOS plist
  • d599f5e Tests: Add CoreAudioStream playback simulation
  • 2a2b7d0 CoreAudioStream: Write directly to the ring buffer
  • 4eb1a46 CoreAudioStream: Fix data race on output volume
  • 3751644 CoreAudioStream: Recreate the stream instead of updating parameters
  • fe5b63c SoundEffectManager: Don't hold the state lock while stopping the stream
  • b740968 InputManager: Only capture pointer input when mouse mapping is enabled
  • c66588e FullscreenUI: Add Bind All Buttons
  • 30a1676 Qt: Add Bind All dialog
  • c347a18 Qt: Update machine translations
  • e3dd733 Deps: Update to 20261105
  • 9dd51b2 Misc: Remove some redundant setting load parameters
  • b391864 Updater/CocoaTools: Fix assorted correctness issues
  • 7518df7 MetalDevice: Fix renderer correctness issues and enable compute
  • 6a10b09 Tests: Fix util-tests failing in debug builds
  • a66c0e3 CMake: Fix regtest build on MacOS
  • a056fe3 Bus: Ensure RAM pointer is always initialized
  • 5cbdc00 System: Report EXE override alongside running game
  • 715ebad CPU: Bound call stack function scan by the live call target
  • 18543d4 Qt: Align debugger code view addresses to instructions
  • 33245eb Qt: Refresh debugger memory view region on system start
  • 2015c40 Qt: Add symbol support to debugger
  • 90da456 Qt: Add debugger call stack context menu
  • f46d11e Qt: Allow debugger windows to be closed
  • 5443d02 Qt: Round the bottom corners of south-facing tabs in themes
  • b85648e Qt: Tab debugger call stack, breakpoints and threads by default
  • bb4e9ac Qt: Add copy/view in dump to debugger register and stack lists

Don't miss a new duckstation release

NewReleases is sending notifications on new releases.