Skip to content

Releases: stenzek/duckstation

Latest Rolling Release

Choose a tag to compare

@github-actions github-actions released this 25 Oct 02:59
dd4a0eb

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...
Read more

Latest Preview Build

Latest Preview Build Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 25 Oct 12:17
84e1db5

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

Choose a tag to compare

@github-actions github-actions released this 13 Oct 05:31
00e2997

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...
Read more

v0.1-11894

Choose a tag to compare

@github-actions github-actions released this 12 Sep 12:20
c66b269

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

Choose a tag to compare

@github-actions github-actions released this 29 Aug 05:52
fe2306b

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

Choose a tag to compare

@github-actions github-actions released this 12 Aug 02:17
5fd3668

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

Choose a tag to compare

@github-actions github-actions released this 25 Jul 03:32
a233ec1

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

Choose a tag to compare

@github-actions github-actions released this 08 Jul 01:59
e7f2f10

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

Choose a tag to compare

@github-actions github-actions released this 29 Jun 04:03
f1e0893

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

Choose a tag to compare

@stenzek stenzek released this 28 Jun 03:56
7d19968

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