Repository navigation
Releases: stenzek/duckstation
Releases · stenzek/duckstation
Release list
Latest Rolling Release
Commits
- 1b79c8b Deps: Update to 20261010
- 6a9c296 Achievements: Extract bucket names out of FullscreenUI
- e468c80 Achievements: Separate login and credential saving steps
- 3856bf0 SettingsInterface: Guard against copying to self
- 8af1da4 Threading: Add WaitFor() to ConditionVariable
- fdb7e8f GameDatabase: Sort disc sets by save title
- 363da8d GameList: Don't persist cache map between refreshes
- deaa4a4 GameList: Allow use of external SettingsInterface
- 43cf72f GameList: Synchronize settings between FullscreenUI and Qt
- b8ce9b4 System: Provide content details to OnSystemStarted()
- de2dd2b StringUtil: Fix possible integer overflow in EncodeAndAppendUTF8()
- aa03edc Settings: Add a dedicated key for overlays
- 5941550 Settings: Don't copy controller type to game
- bd44b2a Core: Don't reset folders when resetting settings
- 03f7316 FileSystem: Backport additional helper functions
- 1b123c3 FileSystem: Make OpenSharedCFile() wrap OpenCFile() on non-Windows
- 84d511d FileSystem: Add error parameter to FTell64()
- 230b478 FileSystem: Extract find result sorting to function
- 98c25ab FileSystem: Use shared file open for ReadBinaryFile/ReadFileToString
- 7d618a5 FileSystem: More RVO optimizations
- f20b39b FileSystem: Add more ReadFileToString() overloads
- a6a22ba CPU/Recompiler: Respect load delays when swapping NOP slots
- 10525f9 CPU/Recompiler: Cancel pending loads on self moves
- 19d5077 CPU/Recompiler: Keep link-register delay slots in order
- 95102c3 CPU/Recompiler: Dispatch interpreter fallback exceptions
- cc6f410 CPU/Recompiler: Trap constant signed arithmetic overflow
- 00adf51 CPU/Recompiler: Preserve pending loads on memory exceptions
- 96c7577 CPU/Recompiler: Correct misaligned indirect jump exceptions
- c714922 CPU/Recompiler: Fix ARM32 VIXL debug builds
- 501fe22 CPU/Recompiler: Mask constant variable shift counts on ARM
- 05c811f CPU/Recompiler: Truncate ARM64 multiplication results in LO
- b224f7a CPU/Recompiler: Decode ARM32 load exceptions from r0
- 63cbd90 CPU/Recompiler: Align ARM32 backpatch thunk calls
- 22a3b06 CPU/Recompiler: Use 32-bit ARM64 fastmem LUT indices
- 38651d4 CPU/Recompiler: Handle large ARM64 backpatch cycle counts
- 5b37f3d SPU: Fast-path ADPCM blocks without predictors
- 16fa969 SPU: Skip reverb output filtering at zero volume
- fd8574a SPU: Pack reverb FIR coefficients into 16-bit lanes
- 5a5bb3d SPU: Extract reverb-master-enable out of loop
- 22a06c8 GTE: Add regression tests
- 953285b GTE: Only sign extend MAC results on overflow
- 769f433 GTE: Force inline matrix/lighting/projection helpers
- d6d1373 GTE: Specialize instruction handlers on sf/lm
- 9a5bb3d GTE: Factorize NCLIP to use three multiplies
- 79161b0 GTE: Use shift for IRGB/ORGB conversion
- 5b3bcf1 GTE: Simplify FLAG error bit update
- 8e4701a GTE: Mark saturation branches as unlikely
- e43d2f8 GTE: Use branchless saturation for light matrix multiply
- cf71052 CDROM: Vectorize XA resampling
- b70866f MSBuild: Improve reproducibility
- 7f0b327 CMake: Improve reproducibility
- 60ab60a CPU: Don't stall for GTE with a single cycle remaining
- 645734b System: Add optional callback to screenshot save
- a22292b System: Avoid unnecessary mutex unlock->relock
- 217cb94 ZipHelpers: Fix incorrect error message
- 4beed32 InputManager: Return proper error from GetGenericBindingMapping()
- 70b95a4 Settings: Shorten fastmem mode description
- fcd8c7b System: Don't use exact sleep on core thread
- 0a93c23 Settings: Fix inconsistent default values
- 9dc2bd5 Settings: Use constants for section names
- b8a8aba Update Swedish Qt translation
- e0deda0 TimingEvent: Relax Assert to DebugAssert
- ee6c200 FullscreenUI: Fix deadlock opening game properties
- 9b47014 Qt: Fix window icon/title desynchronizing
- 390686a MDEC: Fix word alignment of DMA writes
- 86c5bef MDEC: Fix signed monochrome output
- f52eb12 MDEC: Use 32-bit add for red/blue chroma rounding
- 1f3c4a5 Tests: Add MDEC decode tests
- 8fb9907 MDEC: Vectorize IDCT across matrix rows
- d5bfad7 MDEC: Convert whole macroblock in YUVToRGB_New()
- 60d5498 MDEC: Simplify 15-bit output conversion
- 16dc60f MDEC: Add IDCT fast path for low frequency blocks
- 9a78570 DMA: Preserve source address for staged GPU transfers
- d7120b2 DMA: Optimize contiguous ordering table clears
- 284f83e DMA: Avoid staging transfers ending at the RAM boundary
- c37f390 DMA: Copy forward wrapping transfers in contiguous spans
- 859d7e8 DMA: Skip transfer eligibility checks when clearing requests
- 4ac2270 MDEC: Turn state dispatcher into a jump table
- 95dc9f0 OpenGLDevice: Fix active texture tracking when unbinding
- c03dd0b D3D11Device: Fix compute/image binding state tracking
- 9bdc668 D3D11Device: Fix texture copy/map/upload edge cases
- d073111 D3D11Device: Fix swap chain error handling and fullscreen output selection
- d714394 D3D11Device: Fix timestamp query state and WaitForGPUIdle()
- df9ea5e D3D11Device: Fix input layout cache keys and feature level 10 limits
- 3014909 GPUDevice: Respect DisableMemoryImport in OpenGL/Metal
- 337d066 VulkanDevice: Fix crash when device creation fails
- e2f2fe1 VulkanDevice: Fix ROV clear not ending render pass
- a267c71 VulkanDevice: Fix compute image descriptor set binding
- 5712013 VulkanDevice: Only update multi-texture descriptors when dirty
- a74c6a4 VulkanDevice: Always allocate storage image descriptors
- 3c5861a VulkanSwapChain: Fix abort when recreate fails after cached acquire
- 720c607 VulkanDevice: Increase uniform buffer range to 16K
- d52ba48 VulkanDevice: Unbind texture buffer on destroy
- 6eb49f9 VulkanDevice: Don't restart render pass if one wasn't active
- 50eddf2 VulkanSwapChain: Fix old swap chain leak on creation failure
- 33a238b VulkanDevice: Don't flag extensions that aren't enabled on Vulkan 1.0
- cf7be2c VulkanDevice: Respect DisableMemoryImport flag
- 402c567 VulkanDevice: Fix resolve with unused or invalidated textures
- 8b8f3ca VulkanDevice: Fix download transitioning wrong texture layer
- cc4eb9f VulkanDevice: Fix render pass flags being truncated in cache key
- 605e5fe VulkanDevice: Fix blend attachment count with no colour targets
- 6bff12e VulkanDevice: Don't set blend constants unless used
- d761273 VulkanDevice: Fix image layout in null texture descriptor
- b7269a8 VulkanDevice: Fix buffer image height for compressed uploads
- ca9a7f3 VulkanDevice: Add self-dependency when framebuffer fetch is disabled
- 90b7ec7 VulkanDevice: Fix render pass state after flushing mid-present
- da59abe VulkanDevice: Check swapchain maintenance feature and push descriptor limit
- 57533b5 VulkanSwapChain: Don't request unsupported composite alpha
- ef5a84e VulkanDevice: Remove unused GetRenderPassForRestarting()
- ed81176 VulkanDevice: Fix double free when texture buffer creation fails
- d90a4da VulkanDevice: Wait for image acquire when submitting mid-present
- d570226 GPUDevice: Support mirrored surface pre-transforms
- a9c8dd0 GPUDevice: Remove unused DispatchWithPushConstants()
- b540517 OpenGLDevice: Fix uniform range padding and buffer mapping issues
- 9c61b14 OpenGLDevice: glBlitFramebuffer() to self is not allowed in GLES
- 6282dfd OpenGLDevice: Reset last program when unbinding pipeline
- 9e77097 OpenGLDevice: Fix texture copy/resolve/download targets and ordering
- ce9ee81 OpenGLDevice: Fix clear value handling for non-RGBA8 targets
- 0aa7687 OpenGLTexture: Fix format table, MSAA creation and upload sizing
- 65056bd OpenGLDevice: Don't disable async downloads when only PBO uploads are slow
- 0e138ae OpenGLDevice: Use stable VAO cache pointers and a default VAO
- a4179f5 OpenGLDevice: Fix vsync mode and surface leak when creating swap chains
- 4f0af1a OpenGLDevice: Fix depth-only framebuffers and sRGB render targets
- c5325ad OpenGLDevice: Fix MRT output locations without binding layouts, detach shaders
- 68d2342 OpenGLDevice: Delete samplers, check for optional sampler state
- 8123e67 OpenGLDevice: Add FlushPipelineCache(), fix pipeline cache error paths
- 32dab77 OpenGLDevice: Fix timer query feature check and debug labels
- 20d784e ShaderGen: Use explicit output locations for MRT on GLES 3.0
- cc1970f MSBuild: Work around broken MSVC release builds
- a6f0faa GPU: Fix automatic resolution scale when loading state
- 53209ba System: Avoid redundant resolution change with auto upscale
- 5df2b56 GPU: Guess automatic resolution scale while initializing
- 34c3744 MemoryCard: Save card to file asynchronously
- 1640992 Translation: Add Android string list
- a1b6f64 FullscreenUI: Update translation strings
- 4e7516f Qt: Update machine translations
- 2434029 Qt: Add new strings to non-machine translations
- d7fce2d FullscreenUI: Add Waves background shader
- 4e072ef FullscreenUI: Subtle visual improvements
- 66888ba FullscreenUI: Fix sort column being disabled
- 4df2fcc GPU/SW: Fix source desync in masked VRAM writes
- 46307c7 GPU/SW: Fix signed overflow in attribute steppers
- 0ed7e28 GPU/SW: Add drawing and copy tests
- 65c554c GPU/SW: Read 8-bit palette indices as bytes
- 5542670 GPU/SW: Use shuffle for 4-bit palette lookups
- 96ecf13 GPU/SW: Load sequential texels for sprites
- 84dcb20 GPU/SW: Remove redundant clip test for triangle spans
- dd5370f GPU/SW: Simplify colour unpacking and packing
- 3054fb0 GPU/SW: Only copy VRAM in reverse when necessary
- 7883f38 GPU/SW: Remove some redundant vector operations
- c94a799 GPU/SW: Force inline vector constructors
- d177f7a Common: Fix AVX2 vector helpers
- 22c78a1 GPU/SW: Enable AVX2 rasterizer on x64
- 8e7c289 Timers: Fix sysc...
Latest Preview Build
Commits
- Add PackedOptionalArray (Stenzek)
- Ensure DeltaTime can never be negative (Stenzek)
- Improve drag scrolling (Stenzek)
- Don't hover pointer for touchscreens (Stenzek)
- Sync to host refresh rates that are a multiple of the console's (Stenzek)
- Fix sensor enable early return (Stenzek)
- Fix clear binding button clearing all (Stenzek)
v0.1-12083
Commits
- 2781502 SPU: Streamline per-voice flag processing
- 690ead7 SPU: Vectorize Gaussian interpolation
- 5a7a301 SPU: Consolidate capture buffer writes
- a24350c SPU: Decode ADPCM nibbles in pairs
- a490418 VulkanDevice: Use timeline semaphores when available
- ed6720b Tests: Fix core-tests building on Windows
- 025ea24 GPU/HW: Fix typo in CompilePipelines()
- 88ccab2 Achievements: Fix some options potentially not live-updating
- 16452a0 Achievements: Check for login request in LoadStateFromBuffer()
- 3c14141 FullscreenUI: Fix extra uneven height in achievement notifications
- 0910d4e FullscreenUI: Reduce text size of small-mode category badges
- 96268ab Qt: Remove empty widget text
- 390c878 GameDB: Persona localizedName
- e26fa60 Update Italian translation (#3798)
- 563c355 TaskQueue: Add GetOutstandingTasks() and ExecuteOneTask()
- efecb78 Threading: Add GetProcessorCount()
- 0d2e662 Core: Make TaskQueue thread count dynamic
- 60b06c0 ObjectArchive: Use binary keys instead of strings
- 3151c52 ObjectArchive: Synchronize access internally
- 79371c4 HTTPCache: Use object archive synchronization
- 5420d69 GPUDevice: Use ObjectArchive for shader cache
- 7951eba GPUDevice: Support looking up cached shaders and opaque keys
- f541abb GPUDevice: Add LoadPipeline() for supported backends
- 5ebeff9 GPU/HW: Use UIDs for shader generation
- 7c23927 GPU/HW: Use UIDs as shader cache keys
- 94e5f08 GPU/HW: Use multi-threaded shader compilation
- 74a743a GPU/HW: Use multi-threaded pipeline compilation
- 6fe06b9 VideoThread: Preserve command queue empty slot
- 7c173d9 VideoThread: Enforce command producer ownership
- 67d5943 VideoThread: Keep successful software fallback
- e0519a8 VideoThread: Use video-owned fullscreen settings
- 7131d91 VideoThread: Destroy inline reconfigure commands
- c54f16a VideoThread: Snapshot fullscreen state for resize
- 0cad5f5 VideoThread: Dispatch thread toggle failures safely
- 8c6ff3b VideoThread: Propagate thread startup failure
- b5f0fb9 FullscreenUI: Tweak separator style
- c81a747 Qt: Add multi-instruction selection to debugger
- 5cc77ac Qt: Persist debugger window state
- 9c335d9 Qt: Add icons to context menu
- 0874ed6 Qt: Fix empty debugger toolbar window title
- 5b056fc Qt: Fix icon missing on newly-added excluded paths
- 024face Qt: Add context menu to game list exclusion list
- 28ea031 GPU: Add Disable Upscaled Direct Textures option
- 63d72ac GameDB: DisableUpscaledDirectTextures for Fear Effect
- d7036f3 Qt: Persist use-serial-file-names in cover downloader
- 6ef2714 MSBuild: Force SHA256 source file hashes
- ef86bf1 InputManager: Add hotkey flag for UI-activatable
- 396dae9 InputManager: Release cancelled hold bindings
- 3d16465 InputManager: Clear bindings when input is lost
- 0ccc553 InputManager: Fix effect sync device matching
- 3af2d36 ImGuiManager: Track text input separately
- 5005991 InputManager: Type button transitions
- e0e6920 FullscreenUI: Add 'Toggle Pause Menu' hotkey
- 142bdc8 FullscreenUI: Make cheats/achievements/leadboards hotkeys toggles
- b54fc14 FullscreenUI: Synchronize pause menu toggle
- 8051b4f PerformanceCounters: Ignore reset boundary sample
- b7e2050 Qt: Remove unnecessary usage of QOverload (#3799)
- 2f4724d D3DCommon: Use once_flag for library loading
- 7137ce2 Threading: Add lightweight Mutex/ConditionVariable wrappers
- f46b6a8 Core: Use lock_guard for settings accessors
- bbeac9c Core: Use Threading::Mutex for settings lock
- 3bb2b0b CDROMAsyncReader: Use lightweight threading abstractions
- 22072c9 Misc: Replace std::mutex with Threading::Mutex
- 00d407c CDROMAsyncReader: Convert to namespace
- dbe1444 GPU/HW: Fix missing mask-or application on texture fallback
- ac0e3a5 GPU/HW: Add 'Filter Framebuffer Uploads' advanced option
- aaa8a68 GameDB: Enable background texture filtering on more games
- 04f821c Qt: Show inherited multi-sampling setting in game properties (#3800)
- 045b83b GPU/HW: Add additional texture filters
- a90f008 GameDB: Fix typo in DisableUpscaledDirectTextures
- 12a1bf9 GameDB: Add mouse for Panekit - Infinitive Crafting Toy Case
- 742d2d1 CDROMAsyncReader: Use persistent thread
- c309ca3 CDROM: Fix possible incorrect restart track when playing
- 1b81e58 FullscreenUI: Avoid double transition on achievements/leaderboards
- 865ed04 FullscreenUI: Fix toggling between windows with hotkeys
- 3496b62 FullscreenUI: Fix bullet separator at end of postfx settings
- 61f9548 FullscreenUI: Use popup list for texture filter options
- 24ecfdd Misc: Use C++23 elifdef/elifndef
- d01e2ca System: Obey optimal frame pacing setting on Linux
- 187ad8f GPUDevice: Remove multiple sources of truth for shader dump directory
- bce5e3d StringUtil: Fix buffer overflow in BytePatternSearch()
- 73b571c Timer: Use pause intrinsics when spin-sleeping
- 3622df2 Common: Use __yield() for CPU-pause on ARM
- 2287451 PageFaultHandler: Fix unused variable warning
- fc8675c dep/vixl: Fix deprecated-literal-operator warning
- 60a798c StringUtil: Return first match in BytePatternSearch()
- 42cf88c dep/googletest: Update to v1.18.0
- 831305b Threading: Detect recursive locks in debug builds
- 4653247 Error: Add wrappers for translating messages without object
- 1067ebe HTTPDownloader: Use string view and move semantics for callback error
- 46fca8f HTTPDownloader: Ensure all callbacks invoke through PollEvents()
- 31a6103 Settings: Turn debug window visiblity into a bitmask
- 5684d1b Achievements: Replace recursive mutex with lightweight mutex
- 8f99b60 Qt: Add missing help text for savetitle/localizedtitle
- 4cd6e30 FullscreenUI: Replace recursive_mutex with lightweight mutex
- 108e721 FullscreenUI: Allow verification of runtime-populated images
- 4224e9a Updater: Directly wait for parent to exit instead of using shell
- 2c9866e Qt: Dynamically adjust log window colours to theme
- 3cb7b06 Disable auto analog in Trap Gunner; add missing traits for Spyro x Sparx (#3801)
- 4730259 Tests: Fix directory not cleaned up
- 8148a81 Threading: Add SharedMutex lightweight wrapper
- f0fb6f7 Achievements: Avoid deadlock with leaderboard trackers disabled
- 7326f90 Achievements: Avoid lock when settings unchanged
- 31d4405 Achievements: Use a second mutex for notification state
- 86b333d Qt: Fix per-game achievement notification duration sliders
- bbd8425 Qt: Simplify output latency widget updates
- cd50666 Qt: Bind audio output volume through regular settings updates
- 288eee1 Update duckstation-qt_es.ts (#3802)
- 8e4dbf1 Qt: Fix latency description not updating
- 0d8dda3 Spanish (Spain) translation update 2026/09/24 (#3803)
- 62299a5 LightgunController: Create base class for lightgun controllers
- e68536d NeGcon: Create common base class for NeGcon controllers
- d9cb895 Controller: Unify some of the translation strings
- 73b5a24 Threading: Add SharedLockGuard helper
- 687178a InputManager: Internalise private functions
- ee8b45a InputManager: Use atomics for rawinput/pointer count
- 58efbb8 InputManager: Use atomics for host pointer position
- 0ae22c1 ImGuiManager: Read pointer state directly from InputManager
- 501d3a9 InputManager: Reload input bindings after source hotplug
- d76435c InputManager: Extract internal state to private header
- eed22aa InputManager: Use a shared mutex for synchronization
- 7a8e8a0 InputManager: Use SmallString for binding conversions
- aa77ed5 Qt: Move DS5 player LED setting into LED dialog
- 64b1e2b SDLInputSource: Simplify polling
- 59e2f1d SDLInputSource: Poll immediately after initializing
- 7495b76 SDLInputSource: Rely on reload to enable accelerometer
- edd41df SDLInputSource: Use persistent identifiers when mapping
- d040783 GameList: Fix possible null string-view construction
- bbebc31 Common: Use second thread for assertion dialogs
- 608a0c3 Common: Use single isb for ARM PauseCPU()
- 4c721f3 VideoThread: Use dynamic spin loop on ARM
- 85c4ace Timer: Use global initializer for timer frequency on Windows
- 202c7d8 Qt: Add pill-label css class
- 8293e84 Qt: Display bound devices in controller pages
- 62e4845 Win32RawInputSource: Fix wrong OnInputDeviceConnected() call
- a2aa729 GameList: Use correct string_view constructor
- 79fc545 Common: Remove unnecessary include
- f9e12bb Qt: Simplify mute setting callback
- 56dbfea Qt: Fix doubled-up help description
- f1359f0 Update duckstation-qt_es.ts (#3805)
- f9ba754 AtualizaçÃĢo PortuguÊs do Brasil (#3806)
- a2edf2d Update Italian translation (#3807)
- 0619481 MetalDevice: Drop feedback loop path
- dc4e772 VulkanDevice: Fix incorrect hazard tracking in stream buffer
- 5e54cad GPU/HW: Fix background replacements disappearing after TC toggled off
- 10632b9 GPU/HW: Simplify pipeline layouts
- 2ab88c6 ImGuiManager: Move blur constants into main UBO
- 2859162 GPUDevice: Remove MultiTextureAndUBO pipeline layout
- de1fd8c GPUDevice: Move UNIFORM_PUSH_CONSTANTS_SIZE into base class
- 9fcff15 D3D12Device: Remove MAX_UNIFORM_BUFFER_SIZE
- d901b25 D3D12Device: Ensure all samplers are initialized in LookupSingle()
- f3d2843 FullscreenUI: Add background image blurring for headers
- c4b4496 FullscreenUI: Display subset icon as game icon in subset view
- 616c41d ImGuiManager: Stash overlays in separate draw list when transition active
- d78fd23 ImGuiManager: Avoid unsafe read of context pointer on core thread
- 8a46ed8 Misc: Replace std::shared_mutex with Threading::SharedMutex
- 60f7ffa GPU: Fix scanline sync before vertical_display_start
- bfb23fb GPU: Improve CRTC function readability
- 41c1fb1 Qt: Use posix_spawn for updater relau...
v0.1-11894
Commits
- 9287950 VideoPresenter: Fix prerotation handling with blur/transitions
- b0f7c5c Update duckstation-qt_es.ts (#3792)
- 20b626d MSBuild: Explicitly list plugins to copy
- e05146d MSBuild: Track Qt translation outputs
- 1e2ee51 MSBuild: Track Qt resource outputs
- 8c7b74c MSBuild: Fix Qt MOC dependency tracking
- bf15b0d MSBuild: Generate Qt MOC files in parallel
- 46364b2 MSBuild: Track QRC asset dependencies
- 7652c04 MSBuild: Generate Qt translations in parallel
- 78cd1f2 MSBuild: Generate Qt UI headers in parallel
- f34d2c4 Achievements: Add category badge to popup
- f1d54ab Qt: Fix trailing slash being added to game directories
- ec81e45 Settings: Disable gpu_force_video_timing in hardcore mode
- 274143d CI: Update deps to 20260905
- 9c91b91 Common: Remove unused include
- 7762f95 Build: Use C++23 across the board
- 6f23cc2 System: Allow live-changing console region
- 31948bc Misc: Use static operator()
- 084bc6f Achievements: Fix padding in notifications/lists
- 1cafea4 Qt: Slight improvement to track summary list
- b91b9b2 Qt: Add RA Game ID to game properties
- c05866d Qt: Add styling to select disc dialog
- ebc51ff System: Don't copy non-sensitive user preferences to game settings
- f1f8ee7 System: Disable post-processing when resetting settings
- 7544894 dep/rcheevos: Bump to e871ef5
- d9182a0 Qt: Add threads view to debugger
- 118bb66 Qt: Add call stack to debugger
- 4a0cdd2 Qt: Link stack view to memory view
- 5100c51 Qt: Use QPointer in DebuggerWindow
- 3bc1e8c SettingsInterface: Create type aliases for string lists
- 3eee1e6 INISettingsInterface: Don't set dirty if unchanged in SetKeyValueList()
- 92fb83b Qt: Save debugger breakpoints to inis
- f5ffb6b System: Fix unused function warning
- 5aeeb72 VideoThread: Fix rare crash if device initialization fails
- 0d33bd1 Settings: Ensure pcdrv_root is a native path
- 3f44ac2 Deps: Bump to 20260906
- f39feb9 Image: Load libpng/libjpeg/libwebp dynamically
- fa77cd4 CMake: Don't unnecessarily bundle
- c359ccf DynamicLibrary: Log loaded library paths on Linux
- 2179487 SDLInputSource: Remove unused variable
- fa935c2 SQLiteHelpers: Format file
- 38751bd SDLInputSource: Load SDL dynamically
- 025872c Qt: Warn when LD_LIBRARY_PATH is overridden on Linux
- b42b698 Qt: Create desktop file before setup wizard on Linux
- f1f6b0e ImGuiManager: Load FreeType/plutosvg dynamically
- 3ccc0c4 Util: Centralize dynlib loading
- 17a721c ZipHelpers: Load libzip on-demand
- 1f065b5 CMake: Make bundle building on MacOS optional
- d9071e4 CocoaTools: Return nullopt if not running from bundle
- 69fe550 DynamicLibrary: Drop MacOS Frameworks hack
- 0fbd997 Misc: Remove atexit() usage
- 0206d92 SDLInputSource: Centralize SDL subsystem loading
- 7d16905 README: Update feature list
- e05b9b9 FullscreenUI: Fix 'Use Global Setting' showing in global postfx settings
- 3f5dca5 FullscreenUI: Use expand icon for dropdowns
- 2cb1bf7 GPUDevice: Add SingleTextureAndUBOAndPushConstants layout
- 91c5a79 FullscreenUI: Use SingleTextureAndUBOAndPushConstants for blur apply
- 4973361 GameList: Add AudioCD type
- 00989b7 Qt: Make game properties inaccessible for PSF/Audio CDs
- 0cb515f GameList: Reorder list entry types
- 1d07ae2 Update duckstation-qt_es.ts (#3794)
- 73c2266 DynLibs: Fix libjpeg load regression on Windows
- 35d1f06 AtualizaçÃĢo PortuguÊs do Brasil (#3793)
- 443ef82 Qt: Merge import buttons in the memory card editor (#3795)
- cbe7951 CPU/CodeCache: Remove thread_local recursive guard
- 1ab327d GPUDevice: Drop SingleTextureAndUBOAndPushConstants
- 3b30876 l10n: update Swedish Qt translation (#3796)
- c66b269 DynLibs: Fix libwebp loading on Windows
v0.1-11826
Commits
- 6336c53 Cheats: Fix importing semi-broken files
- c475fd6 Qt: Fix some machine translation errors
- e8473a1 Qt: Fix incorrect highlight in memory viewer
- 5e1aee1 Qt: Add missing icons to cheat import popup
- 8569058 FullscreenUI: Add on-screen keyboard
- ec212bf FullscreenUI: Fix initial input not activating on some popup dialogs
- 3c4f2bf FullscreenUI: Add missing PS icon for D-Pad
- 527b402 ImGuiManager: Remove Host::BeginTextInput()
- 943db23 Achivements: Add rich presence monitor debug setting
- e7157e3 FullscreenUI: Increase padding on value backgrounds
- 24deeee System: Fix initial capture mode on start
- 5622604 FullscreenUI: Render loading screen with separate draw list
- b984cb7 System: Improve game setting reload workflow
- 88df5c9 System: Persist settings interface objects
- 8013df9 Qt: Fix window title when editing game specific controller config
- 49d39aa PageFaultHandler: Set SA_NODEFER on MacOS as well
- 4cf3404 PageFaultHandler: Determine write flag from ESR on MacOS ARM64
- 7304bfe CPU: Ensure RAM code pages are invalidated on core thread
- 83a03fe CPU/CodeCache: Assert that handlers execute on core thread
- b0c0a8a PageFaultHandler: Remove the exception handler mutex
- f4a8283 FullscreenUI: Fix compiler warning
- 1c3948c Qt: Update machine translations
- 400c269 GameDB: Sentou Kokka - Air Land Battle
- d8d8a08 CDROM: Reduce pause-while-paused delay
- eb938ce dep/rcheevos: Bump to f1417fb
- d954b7a ImGuiOverlays: Clear list on save state selector close
- b25e235 GPUDevice: Don't immediately trim textures queued in same frame
- 0bf6499 ImGuiOverlays: Add animation to save state selector
- 25783d8 ImGuiOverlays: Close save state selector on device switch
- 8de6b0a GameDB: Add HASH for Beyond the Beyond (#3782)
- 48719b8 Bus: Fix CPE parsing when dev logging is disabled
- 96e0c4d LRUCache: Fix m_manual_evict not respected when adding
- 824a107 LRUCache: Add custom deleter override
- 0b28c19 FullscreenUI: Remove shared_ptr usage
- 5422093 Misc: Use relative time when displaying timestamps
- a444b12 GameDB: Add hashes for multiple games (#3784)
- 5f3db8e Qt: Improve Italian translation (#3783)
- 12e5752 dep/rcheevos: Replace usage of sscanf() in rc_json_get_datetime()
- 8bc6dc8 Qt: Update Italian translation again (#3785)
- 7940507 Achievements: Use title format in submit time tooltip
- ad2a8a6 System: Ensure achievements game is identified before loading state
- c992e1c AtualizaçÃĢo PortuguÊs do Brasil (#3787)
- fc741c8 GPU/TextureCache: Fix CPU thread read on GPU thread
- 889a0fd GPU/TextureCache: Fix last_vram_write and num_splits not being serialized
- ee21159 GPU/TextureCache: Limit the amount of uploads saved to state
- 8e8e13d System: Reserve state memory for texture cache when enabled
- e2823b4 GameDB: Felony 11-79/Runabout
- 535154d MediaCapture: Show file size in OSD
- 9d05a87 Host: Fix broken relative time plurals
- 3f9453f Host: Merge FullscreenUI relative time variant with Host
- 392e19b Qt: Add translation update and cleanup scripts
- 764a06b CI: Ensure translations are cleaned on pull request
- f40cd51 dep/rcheevos: Add rc_client_set_unofficial_achievement_unlock_state()
- 4beec80 SQLiteHelpers: Add BindInt64()/ColumnInt64()
- a679377 FullscreenUI: Permit empty footer array component
- 2743bb2 Achievements: Track unlocks of unofficial achievements locally
- 240b199 PageFaultHandler: Read ESR on Linux ARM64 as well
- 06e6d4c Data: Update SDL game controller database
- 614faf7 Qt: Clarify RetroAchievements login message
- 04187ba Qt: Use variadic arg() instead of chaining multiple invocations
- 9399188 Qt: Group toolbar-related menu items into a submenu (#3789)
- 6f7fc33 Qt: Update machine translations
- fe899ef Update duckstation-qt_es.ts (#3786)
- 78ff46a Tests: Fix util-tests building
- bf5a616 MemoryCardImage: Replace full-width characters with ASCII
- c4e99c4 CDImageMDS: Fix games not detecting due to empty path
- dbf928f FullscreenUI: Fix inverted parameters
- c776dee CDImage: Replace filename identifier with path
- aea63ce Spanish (Spain) translation update 2026/08/25 (#3790)
- a736f44 Update Italian translation (#3791)
- f18017e Qt: Fix localised disc regions in game list
- f5e22bc FullscreenUI: Fix cheats menu hotkey in batch mode
- 88e4ca5 Qt: Enable verification for unscanned files
- fe2306b ImGuiManager: Tweak OSD fade in time
v0.1-11752
Commits
- 381ac7d MediaCapture: Fix incorrect samples on buffer wrap-around
- b3d594a MediaCapture: Remove Flush() method
- 4f72f40 MediaCapture: Fix possible corruption in audio-only capture
- 049437e MediaCapture: Resample audio when encoder doesn't support 44.1KHz
- 8b9aaf7 MediaCapture: Display OSD warning when resampling
- d33d3b8 Qt: Rework media capture menu
- 6e0fb1e FullscreenUI: Add InputTextWithSuffix()
- e2e4bae Settings: Ensure overlays directory exists in user resources
- 56fa9dc Qt: Add refresh button to border overlay list
- 12f012c Spanish (Spain) translation update 2026/07/27 (#3777)
- dc75335 Scripts: Translation tools experiments
- 551aaa4 RegTest: Fix compile error
- 8747aa1 AtualizaçÃĢo PortuguÊs do Brasil (#3778)
- 4a04d31 SPU: Fix volume sweep termination conditions
- f6c4fe9 Achievements: Rename softcore to casual (#3779)
- 2246697 BIOS: Add version information and filenames to list
- 1454743 Qt: Allow empty recommended value in settings help
- 30d351e Qt: Add CollapsibleWidget
- 8dbc476 Qt: Add BIOS Installer and improve BIOS setup page
- 351778e Qt: Update machine translations
- 406f325 Qt: Fix BIOS summary not updating on language change
- 9c7c23f Qt: Fix main window language not updating after setup wizard
- 57b952a Timers: Improve emulation accuracy
- 7c93a61 Qt: Further simplify BIOS setup wizard page
- 0740169 Qt: Fix crash opening game settings
- 202923d Qt: Correct some clearly awful translations
- 7111f4c Update duckstation-qt_es.ts (#3780)
- b5a990b MemoryCard: Use constants for address and offset mask
- c42082c StateWrapper: Avoid heap allocation in FIFOQueue read
- f3d0e84 StateWrapper: Avoid possible integer overflow on 32-bit systems
- 865fd9e StateWrapper: Save contiguous FIFOQueue bytes in one memcpy()
- 97400d2 StateWrapper: Clamp enum values to max
- b147f1f FIFOQueue: Zero out head/tail when size reaches zero
- e95e5a0 FullscreenUI: Right-align achievement type badges
- 18147a1 GPUBackend: Fix possible unflushed draws with runahead enabled
- 4d700e4 MDEC: Ensure direct FIFO writes don't overflow
- 26fa2ee MetalDevice: Fix a few leaky object retains
- c07bf47 CDImageCue: Validate bits-per-sample for wave files
- ecbe3c3 MemoryCardImage: Don't over-enumerate directory frames
- 76f01d8 Misc: Fix under-allocation in sjis2utf8()
- d6d8a7b CDImageCue: Fix implicit truncation warning
- e86af51 Deps: Update bundled ffmpeg headers to 9.0
- 6d0feff Deps: Update to 20260805
- 3fed119 MediaCapture: Default to H264 on all platforms
- 12a4a26 Util: Avoid intermediate memory allocation in Shift-JIS conversion
- 8a2c05c Image: Avoid integer overflow for dimensions
- 99fc655 Updater: Fix possible path traversal during preprocessing
- ebd0903 Updater: Fix possible infinite loop
- 1fbfbb5 System: Fix implicit 32-bit truncation of screenshot size
- 2c8e998 Spanish (Spain) editing pass - 2026/08/05 (#3781)
- 6e242f5 Bus: Flush line buffer after 512 characters
- ca5cc73 GPU: Add missing serialization of polyline buffer
- f92b1a8 GPU: Add some simple checks to the polyline buffer
- cd5e48a StateWrapper: Add max size checks to vector/string data
- 2688a1d Achievements: Fix possible read past end of memory in callback
- e48b3e3 Cheats: Fix possible OOB reads in malformed instructions
- d3ff0b3 PSFLoader: Add missing header size checks when loading
- a8a098a Common: Valid BCD functions should return boolean
- b9cf3bb CDImagePBP: Add missing validation of BCD digits
- 467d097 CDImagePBP: Check SFO index table count before reading
- e073438 CDImageMDS: Fix a bunch of possible buffer overreads
- 6651f4d ISOReader: Fix possible integer overflow in GetSizeInSectors()
- f1029b2 AnimatedImage: Fix possible integer overflow of dimensions
- f11b432 System: Add option to install BIOS when missing
- 8778034 RegTest: Fix compiling again
- e175c84 Bus: Pack state in struct
- 5245a58 Settings: Fix invalid memory card values after install
- 213c5b4 VideoPresenter: Use transfer pitch for screenshots
- b3b57a2 VulkanDevice: Bind initial compute pipelines correctly
- bbac943 VulkanDevice: Expose shared UBO binding to compute shaders
- fc3e117 VulkanDevice: Synchronize compute image accesses
- 4b5edbb VulkanDevice: Preserve mapped texture upload pitch
- 6584add VulkanDevice: Fix download buffer barrier ranges
- 037ee47 VulkanDevice: Validate imported host buffer memory
- 668f39f VulkanDevice: Wait for presentation before swapchain teardown
- 8462365 VulkanDevice: Address texture array subresources
- 5f40f0a VulkanDevice: Select advertised surface format pairs
- 40e1787 VulkanDevice: Fix legacy render pass attachments
- d1720c0 VulkanDevice: Respect fixed surface extents
- a8de757 VulkanDevice: Store compute specialization values
- 7b690ec VulkanDevice: Reset descriptor builder storage
- 69c5051 D3D12Device: Restore state after mipmap rendering
- a8c9324 D3D12Device: Transition cleared compute targets to UAV
- 6e2f06a D3D12Device: Bound persistent descriptor allocation
- 2273890 D3D12Device: Create texture arrays with all layers
- b5f821b D3D12Device: Transition all uploaded subresources
- 402f920 D3D12Device: Set render-pass clear formats
- a4a03c4 D3D12Device: Assert alignment of download texture footprints
- 685cf83 D3D12Device: Order dependent compute UAV accesses
- 7b15961 D3D12Device: Fix incorrect push constant root parameter index
- 41ee402 D3D12Device: Track readback source usage
- 48a1a06 Qt: Don't try to load HTTP URLs as animated images in game list
- 2f9c587 FullscreenUI: Fix shared memory card selection
- 4431915 FullscreenUI: Expose multitap memory cards
- 6f704d4 FullscreenUI: Fix shared card name not disabling if unused
- ee21478 GPU/HW: Don't miss updating read texture for recursive draws
- f7797b5 Controller: Add 'Disable Simultaneous Opposing Cardinal Directions' option
- 0697597 Controller: Make mandatory functions pure virtual
- d92fe3d Data: Move all PromptFont glyphs to unallocated range
- f04e08b GDBServer: Fix stop reply acknowledgements
- 1a9379b GDBServer: Support continue addresses
- a36b757 GDBServer: Support single-step addresses
- c7324e3 GDBServer: Preserve unchanged resume state
- 05166d1 GDBServer: Track the last stop signal
- 3885778 GDBServer: Reply to invalid command arguments
- aea3746 GDBServer: Validate complete packet fields
- 4e09405 GDBServer: Apply register writes atomically
- 7c279dc GDBServer: Invalidate code after memory writes
- 8d7046a GDBServer: Bound remote packet sizes
- 60a4ec3 GDBServer: Queue complete protocol packets
- 54d074f GDBServer: Retransmit rejected replies
- cba8588 GDBServer: Reject oversized incoming packets
- d176e31 GDBServer: Support signal resume packets
- fe32554 GDBServer: Restore run state after disconnect
- c241852 GDBServer: Notify host when first/last client connects/disconnects
- 0a00cbc GDBServer: Send invalid instead of zero values for extra registers
- ac6d899 GDBServer: Disable nagle buffering on connect
- 71c8850 GDBServer: Track breakpoint ownership
- e3bea19 GDBServer: Expand watchpoint ranges
- b147ed6 CPU: Enumerate actions for callback breakpoints
- 8636021 GDBServer: Report watchpoint stop details
- fa5e111 GDBServer: Use indexing instead of range-based for
- 30fa5b4 Qt: Rename background controller poll to idle update
- c7f282f Core: Use multiplexer to idle sleep for GDB server
- 3bb39f4 ELFFile: Skip embedded PS-X EXE header segments
- 2cf1086 GDBServer: Fix unused capture warning
- cf24957 Qt: Implement mouse capture using CoreGraphics
- e2b78d4 Qt: Tie relative mouse state to the active window
- 8c1a202 GDBServer: Expose target memory map and registers
- c8abcf4 GDBServer: Expose GTE registers
- 8a96948 GPUDevice: Use same buffer sizes across backends
- 89fb3ad DMA: Hardwire reverse direction for OTC
- d59fcfb ImGuiManager: Support rendering Hebrew text
- 8ec85e3 Qt: Update machine translations
- 232c9ad Achievements: Make password login asynchronous
- 2c32612 Qt: Simplify logout callback
- 9f9009d Achievements: Ensure callbacks run on core thread for RAIntegration
- 04f4f1b Achievements: Respond to RAIntegration reset request
- 1f925f8 Misc: Add a couple of missing fmt/format.h includes
- b2f9c8f Misc: Fix deprecated implicit conversion of fstring->string_view
- c130fc1 dep/fmt: Update to v12.2.0
- 5ee1d25 GameDB: Disable PGXP/WS in Vanark
- 5fd3668 Achievements: Don't double-free login callback on request failure
v0.1-11609
Commits
- 9c79341 CueParser: Handle rarely-used commands
- b89e1bf CDImage: Support reading non-mode2/raw sectors
- 94f11f9 CDImage: Rewrite memory image (preloading)
- 2880f88 MMPX Enhanced/Advanced clamp-to-transparent out-of-bounds mapping (#3774)
- 31ab18b SPU: Wraparound is unlikely in ReadADPCMBlock()
- 2cdf99d MediaCapture: Improve MF setup robustness
- f383c3f MediaCapture: Remove AV1/VP9 options from MF list
- e04d890 MediaCapture: Improve ffmpeg hardware encoding
- 8612996 MediaCapture: Drop ffmpeg pre-7.x fallback
- 0275d6d MediaCapture: Clear state before deleting output file
- d484403 Qt: Capture dialog improvements
- 35bcff1 Achievements: Animate unlock progress bar
- 31c6829 FullscreenUI: Fix another debug assertion in single-threaded mode
- 8a98ed8 FullscreenUI: Relax condition for closing immediately on resume
- a421b5b FullscreenUI: Add 'None' transition effect
- ad7519d FullscreenUI: Add queued texture recyling
- 8a1dbb1 CDROM: Refactor invalid command handling
- f8c9301 MSBuild: Remove non-existant file
- e39033c Qt: Remove unused scripts
- 9c35fdc MMPX :fix a transparent pixel bug & Adjusted floating-point tolerance (#3776)
- 39fe70c CI: Bump actions/checkout to v7 (#3775)
- b42e1c9 System: Slightly reduce memory save state struct size
- 09467d5 Qt: Add icon extraction to memory card editor
- 4730d79 Qt: Add icons to memory card editor buttons
- 4069271 Qt: Make SetWindowRoundedCornerState() take an optional boolean
- 5f9e7f6 Qt: Work around Qt fullscreen border bug
- 42bf523 Data: Update SDL Game Controller DB
- eb4b87c Achievements: Fix inverted condition for new game additions
- a233ec1 Qt: Fix deprecation warning
v0.1-11580
Commits
- abf946c Update ukrainian translation (#3762)
- c80552f Ukrainian translation v2 (#3764)
- ab30d1d FileSystem: Make CopyFilePath() atomic
- acfd60e Deps: Update to 20260702
- 7be44a4 FullscreenUI: Fix incorrect effect in save state selector
- 4c39eac FullscreenUI: Fix incorrect layout in ProgressDialog
- 3441574 CDImage: Add some more helper functions
- c3af062 Qt: Move image verification logic to GameDatabase
- c05726a FullscreenUI: Add image verification
- 685b2f7 FullscreenUI: Add easing to ProgressDialog bar
- 4bc8ace Qt: Add CardRadioButton
- 866d230 Qt: Add interface and view types to setup wizard
- f31d99e Qt: Add animation to setup wizard
- 7316cce Qt: Fix path in update-and-edit-english.bat script
- bb3fede Qt: Update English plural translations
- 9c1500f Qt: Add pause menu hotkey to setup wizard
- 6d7163c Qt: Remove note about renderer from setup wizard
- d910657 Qt: Don't save window position when hidden
- 5dd559c FullscreenUI: Fix transition glitch when loading with no states
- fce1b1e Cheats: Use .org as insertion point in assembly codes
- 7bed00d Cheats: Support branch labels in assembly codes
- 36a85ff Cheats: Expand test coverage
- 7c93512 Cheats: Fix incorrect nullopt return
- e79eb42 Cheats: Fix incorrect bitmask for 32-bit option values
- 46efde0 Qt: Respect SH_Widget_Animation_Duration style hint
- bf1801c Qt: Add missing singular forms to English "translation"
- f9cf0db FullscreenUI: Fix styling of input string dialogs
- 4616c85 FullscreenUI: Add custom title/disc set title/serial editing
- a6d2417 FullscreenUI: Make game summary more compact
- a0a4159 FullscreenUI: Fix overlap in modal progress with empty status text
- 3968606 GameDatabase: Don't leave verify status text empty
- e2a6547 FullscreenUI: Switch to list page on settings open from game list
- 4f51c2d Qt: Warn when upscaling is enabled without PGXP
- 0c87b07 Cheats: Accept ".org 0x12345678" and "0x12345678:" to set pc
- c8e6dc5 Qt: Add settings-window class to setup wizard
- c0074b9 Qt: Use item view for game list directories
- 82518c5 Scripts: Extend translation validation/linters
- 0835924 Qt: Update ja and zh-CN translations
- d794641 Qt: Slightly increase settings category size
- 584999e Qt: Give proper names to widgets in setup wizard
- 79c08b6 Qt: Remove multiple sources of truth for supported formats
- 5d46613 Achievements: Centralize profile URL building
- fb99467 Qt: Match achievements login between settings/setup wizard
- 674af51 Scripts: Relax rich-text checks in the translation validator
- 90c96dc Qt: Fix a decent number of strings missing from lupdate
- c46a1dc CI: Only validate changed translation files on PR
- 3d544d4 Qt: Fix upscaling warning always showing in setup wizard
- 7d4b97d Qt: Fix missing translation of default update channel
- 12df0cd Qt: Fix duplicate message context in debugger error
- c2f8d32 MediaCapture: Mark missing translatable strings
- dd63541 AudioStream: Fix backend name not translating
- 2cf04c9 Qt: Remove duplicate translation strings
- 982a35e Qt: Cancel search when pressing Esc (#3767)
- 7dde479 Update Spain translation (#3768)
- bc057d9 Qt: Restore focus frame on QLineEdit with macOS native theme (#3771)
- fa19df3 Update qttranslations.inl (#3772)
- 2b1de62 Qt: Fix empty gamesettings ini being saved on close
- 7651d28 Qt: Use simpler text widgets in cover downloader and game summary (#3773)
- 6194f08 Achievements: Always identify game on startup
- 59247c8 Achievements: Move game hash calculation to system
- eeda898 Achievements: Separate login and progress requests
- 43294ac FullscreenUI: Avoid unnecessary mutex lock
- aa6b377 GameDatabase: Make track hashes private
- 6931f89 GameDatabase: Fix revision not showing after verification
- e7f2f10 Qt: Fix inverted delayed show condition in QtAsyncTaskWithProgressDialog
v0.1-11515
Commits
- 4989211 dep/rcheevos: Bump to 9ade739
- 63caefb dep/rcheevos: Add game list functions to rc_client
- 2f3067a CMake: Use C99 to build rcheevos
- eae17a4 Util: Add SQLite helpers and dynamic loading
- 1230c83 Achievements: Update seed hash database
- 98ec055 Achievements: Swap to sqlite-backed storage
- cfde5bf Achievements: Move achievement pinning to database
- e9bd041 Achievements: Add missing DB load check in a couple of places
- cd7d35c SQLiteHelpers: Fix load failure on Windows
- 3260ba8 Deps: Update to 20260614
- a05171d Achievements: Fix crash in database updates on unknown media change
- 1cce275 Achievements: Don't update game database on disc change
- cdce0f7 CI: Bump to LLVM 22
- a3dbace Hotkeys: Display reason why rewind is unavailable
- 4144c1e GPU: Eliminate redundant type comparions in FillDrawCommand()
- 77fe659 GPU: Inline draw mode into state struct
- 15ad002 TimingEvent: Use const char* for name instead of string_view
- d22950c GPU: Add disable texture/vertex lighting debug options
- 9fe36d9 Misc: Reduce unnecessary struct padding
- 31c2183 Qt: Use atomic for auto close flag
- 4c698e7 Qt: Add menu item to refresh achievement database
- f7ce14e ZipHelpers: Move to util project and source file
- 97ae013 Hotkeys: Add 'Select Next Slot and Save State'
- 9d0eec7 Qt: Disable global save states by default
- 64f0689 Qt: Remove unused signal in SettingsWindow
- 0dd6e5c Qt: Disable tab key navigation on game list (#3752)
- c712c7b Qt: Fix keyboard navigation in game list after searching (#3753)
- 8f6b1b6 FullscreenUI: Add reset option to directory selector
- ef8a1fc Core: Fix setting reset wiping out user preferences
- c0a8d9d FullscreenUI: Fix global states always showing in menu
- b19347e Add complete Ukrainian translation for Qt interface (#3754)
- cd0c961 Qt: Add Ukrainian translation to list
- a64851a HTTPDownloader: Remove redunadant request \casts
- 6357732 feat(shader): add Scanline Modern 4x2 adaptive retro filter (#3755)
- 39cb9af update spanish translation (#3756)
- e6694d1 Fix scanline flicker caused by precision drift at boundaries (#3758)
- 553b133 Spanish (Spain) translation update 2026/06/22
- 5828adf Qt: Normalize x in es-ES translation
- cd7b4e5 Qt: Remove placeholder text from a bunch of ui files
- 5be86a0 Qt: Remove redundant translation strings in capture settings
- 99498ad MSBuild: Flag ts files as correct type
- ba6ae23 Qt: Rework speed controls to be less confusing
- 6dd972a FullscreenUI: Add zoom/slide transition effects
- 1ffee71 Qt: Fix unused variable warning
- b43807a CPU: Add MIPS assembler
- efed642 Qt: Add 'Patch Instruction' and 'Nop Instruction' to debugger
- 34df972 Cheats: Add 'Assembly' code type
- b110639 Qt: Use fixed-width font for cheat code editor
- 17f54f1 Qt: Fix missing styling of QPlainTextEdit
- b4834b9 CPU: Add targeted icache invalidation
- 74fac97 Cheats: Invalidate icache when writing (likely) assembly codes
- 91273f2 CPU: Eliminate default branch in icache fill
- 487a161 FullscreenUI: Add a couple of missing transition effects
- 7d002d3 FullscreenUI: Fix a couple of issues with modal progress
- ef84883 Sockets: Fix incorrect WSAStartup() call
- 90c7040 VideoThread: Fix debug assertion tripping in single-threaded mode
- 032d894 Qt: Update redump hash lookup URL
- c22c1cb Settings: Load config for all memory cards
- 75be553 Qt: Add configuration of multitap memory cards
- 352bb0d Qt: Move save state backup setting to memory card page
- eccc1e0 FullscreenUI: Add start-in-big-picture-mode option
- 4a97765 Qt: Tidy up main() function
- 73967c5 InputManager: Fix cloning multitap profiles
- 9e4ef8b System: Only use fast forward volume for >1 speed
- e409f88 Settings: Remove unused function
- 57a77b4 GameList: Force refresh when starting disc change
- ad705e7 Qt: Fix saved geometry being lost in nogui mode
- 92d3f8e AtualizaçÃĢo PortuguÊs do Brasil (#3760)
- a9cc936 Qt: Minor UI consistency fixes (#3761)
- ffd9d40 Qt: Add Register button for achievements
- fa1b4b7 CMake: Silence resource copy messages
- f1e0893 System: Fix mute volume
v0.1-11443
Commits
- 2b1a6cf Qt: More appropriate icon for "Search on Redump" button
- a901824 Qt: Improve icon consistency
- 15d8f68 Merge pull request #3747 from Pesa/overlap
- 00149a5 Qt: Disable buttons if controller port is empty (#3748)
- 2f0cd4d DiscDB: Remove duplicate entries for some multi-disc games
- 8dd88aa Qt: Make verify serial mismatch message clearer
- e21bf74 Qt: Replace most _L1 usage with _s
- 22ee4c0 CMake: Build with immediate binding/full relro
- e23bc84 Achievements: Always prefetch game badge before achievement badges
- 02a41fa GameDB: Add metadata to
King's Field 3 - Pilot Style(#3749) - 8ac294d CDROM: Fix DisableReadSpeed() never having any effect
- 2c6ac7d CDROM: Add manual control of lid state
- 1d71915 CDROM: Show effective read speed in debug window
- 18f581e CPU: Use ternary in CPU::WriteRegDelayed()
- 667e114 CPU: Add branch hints to interpreter dispatch
- 2b5baa1 CPU: Add more branch hints to interpreter
- 0b700d1 GTE: Eliminate bounds check in dispatcher
- 2f8e9a8 MSBuild: Enable strict aliasing for clang
- c660f85 CPU: Use table lookup for mfc0
- 1f7fcb8 GameList: Fix race condition when refreshing from two sources
- 134f172 Achievements: Don't tear down persistent state on enable toggle
- 8bf9562 Achievements: Fix hardcore toggle not showing summary
- 944beca Achievements: Populate saved credentials in ProcessStartup()
- cae2596 Achievements: Move init functions to private header
- 1e6a006 Controller: Make center a distinct value
- 24fb22a Controller: Move helper functions into their own file
- 0ec7d2b Misc: Remove redundant static qualifier from force-inline functions
- 3787849 Qt: Disable labels for controller setting descriptions
- 2a32d70 Qt: Fix white-on-light icon colours in Classic Windows theme
- c1adcb5 Qt: Fix initial icon colours in native theme
- a4e3afc Release MMPX Advanced v3.2: Optimize and Clean (#3750)
- f228b00 CDROM: Hopefully fix rare case of command event loss with states
- 0e0ef21 System: Clear memory save states on reset
- 09008bb Qt: Round round texcoords only applies to 3D
- ba08a6f Qt: Hide FSUI theme and font settings from game properties (#3751)
- 770cc58 Settings: Don't copy advanced/hidden settings to game
- a7a5fae Qt: Fix warning in graphicssettingswidget.cpp
- 76ca9b1 Qt: Suffix unavailable audio and video devices
- fa167ca FullscreenUI: Add InputTextWithIcon()
- b3e8543 FullscreenUI: Make ResetFocusHere() return a boolean
- 632aab3 FullscreenUI: Use InputTextWithIcon() for achievements login
- 1c89c64 FullscreenUI: Add search to game list
- ce14eef ObjectArchive: Swap to HTTPCache log channel
- 3a98566 FullscreenUI: Fix input text text colour in light theme
- 6efef5b GameDB: PGXP-CPU for Digimon World 2
- c1a9d78 RegTest: Fix crash on startup
- c20a5c7 CPU: Copy entire value for zero shift cases
- c8064e7 CPU: Fix flipped operands on PGXP shifts in recompiler
- 0b4dfcd Settings: Remove unused field
- b7b31ef Qt: Use 'Global' instead of 'Default' for inherited spinners
- 2c527f4 Qt: Add reset buttons for tolerance/depth threshold
- 7d19968 Qt: Fix memory leaks in SVG helpers