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