# DuckStation patch notes > A fast, accurate PlayStation 1 emulator. - Vendor: Stenzek - Category: Games - Platforms: Desktop - Official site: https://www.duckstation.org - Tracked by: What's New (https://whatsnew.fyi/product/duckstation) - Harvested from: GitHub (stenzek/duckstation) - Entries below: 9 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. ## Releases ### preview — Latest Preview Build - Date: 2026-08-06 - Version: preview - Original notes: https://github.com/stenzek/duckstation/releases/tag/preview - Permalink: https://whatsnew.fyi/product/duckstation/releases/preview - Labels: Pre-release; preview; Platforms: Desktop - **fixed** — Fix compiling ##### Commits - Fix compiling again ([Stenzek](https://github.com/stenzek/duckstation/commit/8778034bf2a2e350865e068ec3806f2e2efce8c0)) ### v0.1-11580 - Date: 2026-07-08 - Version: v0.1-11580 - Original notes: https://github.com/stenzek/duckstation/releases/tag/v0.1-11580 - Permalink: https://whatsnew.fyi/product/duckstation/releases/v0.1-11580 - Labels: Platforms: Desktop - **fixed** — Make CopyFilePath() atomic in FileSystem - **fixed** — Fix incorrect effect in save state selector in FullscreenUI - **fixed** — Fix incorrect layout in ProgressDialog in FullscreenUI - **added** — Add image verification to FullscreenUI - **added** — Add easing to ProgressDialog bar in FullscreenUI - **added** — Add CardRadioButton to Qt - **added** — Add interface and view types to setup wizard - **added** — Add animation to setup wizard - **fixed** — Fix path in update-and-edit-english.bat script - **fixed** — Don't save window position when hidden in Qt - **fixed** — Fix transition glitch when loading with no states in FullscreenUI - **changed** — Use .org as insertion point in assembly codes for Cheats - **added** — Support branch labels in assembly codes in Cheats - **fixed** — Fix incorrect nullopt return in Cheats - **fixed** — Fix incorrect bitmask for 32-bit option values in Cheats - **fixed** — Fix styling of input string dialogs in FullscreenUI - **added** — Add custom title and disc set title and serial editing in FullscreenUI - **added** — Accept '.org 0x12345678' and '0x12345678:' to set pc in Cheats - **fixed** — Fix overlap in modal progress with empty status text in FullscreenUI - **fixed** — Cancel search when pressing Esc in Qt ##### Commits - abf946c88 Update ukrainian translation (#3762) - c80552f1c Ukrainian translation v2 (#3764) - ab30d1da5 FileSystem: Make CopyFilePath() atomic - acfd60ea5 Deps: Update to 20260702 - 7be44a41c FullscreenUI: Fix incorrect effect in save state selector - 4c39eac52 FullscreenUI: Fix incorrect layout in ProgressDialog - 3441574be CDImage: Add some more helper functions - c3af062bf Qt: Move image verification logic to GameDatabase - c05726a48 FullscreenUI: Add image verification - 685b2f7d2 FullscreenUI: Add easing to ProgressDialog bar - 4bc8ace9b Qt: Add CardRadioButton - 866d23042 Qt: Add interface and view types to setup wizard - f31d99e77 Qt: Add animation to setup wizard - 7316cce3d Qt: Fix path in update-and-edit-english.bat script - bb3fede3f Qt: Update English plural translations - 9c1500f1a Qt: Add pause menu hotkey to setup wizard - 6d7163c54 Qt: Remove note about renderer from setup wizard - d9106576f Qt: Don't save window position when hidden - 5dd559c15 FullscreenUI: Fix transition glitch when loading with no states - fce1b1e30 Cheats: Use .org as insertion point in assembly codes - 7bed00d02 Cheats: Support branch labels in assembly codes - 36a85ffbf Cheats: Expand test coverage - 7c9351278 Cheats: Fix incorrect nullopt return - e79eb42f7 Cheats: Fix incorrect bitmask for 32-bit option values - 46efde0b1 Qt: Respect SH_Widget_Animation_Duration style hint - bf1801cb2 Qt: Add missing singular forms to English "translation" - f9cf0db0b FullscreenUI: Fix styling of input string dialogs - 4616c8513 FullscreenUI: Add custom title/disc set title/serial editing - a6d24175d FullscreenUI: Make game summary more compact - a0a4159c8 FullscreenUI: Fix overlap in modal progress with empty status text - 3968606be GameDatabase: Don't leave verify status text empty - e2a654715 FullscreenUI: Switch to list page on settings open from game list - 4f51c2dcb Qt: Warn when upscaling is enabled without PGXP - 0c87b0726 Cheats: Accept ".org 0x12345678" and "0x12345678:" to set pc - c8e6dc5c6 Qt: Add settings-window class to setup wizard - c0074b9b5 Qt: Use item view for game list directories - 82518c5b0 Scripts: Extend translation validation/linters - 083592488 Qt: Update ja and zh-CN translations - d79464128 Qt: Slightly increase settings category size - 584999e3f Qt: Give proper names to widgets in setup wizard - 79c08b648 Qt: Remove multiple sources of truth for supported formats - 5d4661310 Achievements: Centralize profile URL building - fb994670e Qt: Match achievements login between settings/setup wizard - 674af5152 Scripts: Relax rich-text checks in the translation validator - 90c96dc94 Qt: Fix a decent number of strings missing from lupdate - c46a1dc53 CI: Only validate changed translation files on PR - 3d544d4ed Qt: Fix upscaling warning always showing in setup wizard - 7d4b97d19 Qt: Fix missing translation of default update channel - 12df0cd11 Qt: Fix duplicate message context in debugger error - c2f8d3298 MediaCapture: Mark missing translatable strings - dd6354143 AudioStream: Fix backend name not translating - 2cf04c92a Qt: Remove duplicate translation strings - 982a35e6e Qt: Cancel search when pressing Esc (#3767) - 7dde4794b Update Spain translation (#3768) - bc057d9f7 Qt: Restore focus frame on QLineEdit with macOS native theme (#3771) - fa19df308 Update qttranslations.inl (#3772) - 2b1de6278 Qt: Fix empty gamesettings ini being saved on close - 7651d288b Qt: Use simpler text widgets in cover downloader and game summary (#3773) - 6194f08a9 Achievements: Always identify game on startup - 59247c84b Achievements: Move game hash calculation to system - eeda898c2 Achievements: Separate login and progress requests - 43294ac04 FullscreenUI: Avoid unnecessary mutex lock - aa6b3777a GameDatabase: Make track hashes private - 6931f890b GameDatabase: Fix revision not showing after verification - e7f2f101c Qt: Fix inverted delayed show condition in QtAsyncTaskW _[Truncated at 4000 characters — full notes: https://github.com/stenzek/duckstation/releases/tag/v0.1-11580]_ ### v0.1-11515 - Date: 2026-06-29 - Version: v0.1-11515 - Original notes: https://github.com/stenzek/duckstation/releases/tag/v0.1-11515 - Permalink: https://whatsnew.fyi/product/duckstation/releases/v0.1-11515 - Labels: Platforms: Desktop - **changed** — Bump rcheevos dependency to 9ade739 - **added** — Add game list functions to rc_client in rcheevos - **changed** — Use C99 to build rcheevos - **added** — Add SQLite helpers and dynamic loading utilities - **changed** — Update seed hash database for achievements - **changed** — Swap achievements to sqlite-backed storage - **changed** — Move achievement pinning to database - **fixed** — Fix crash in database updates on unknown media change - **changed** — Do not update game database on disc change - **changed** — Bump LLVM to version 22 - **changed** — Display reason why rewind is unavailable in hotkeys - **added** — Add disable texture and vertex lighting debug options to GPU - **added** — Add 'Select Next Slot and Save State' hotkey - **changed** — Disable global save states by default - **fixed** — Fix keyboard navigation in game list after searching - **added** — Add reset option to directory selector in FullscreenUI - **fixed** — Fix setting reset wiping out user preferences - **fixed** — Fix global states always showing in menu in FullscreenUI - **added** — Add complete Ukrainian translation for Qt interface - **added** — Add Scanline Modern 4x2 adaptive retro filter shader - **fixed** — Fix scanline flicker caused by precision drift at boundaries ##### Commits - 498921157 dep/rcheevos: Bump to 9ade739 - 63caefb96 dep/rcheevos: Add game list functions to rc_client - 2f3067ab4 CMake: Use C99 to build rcheevos - eae17a4d7 Util: Add SQLite helpers and dynamic loading - 1230c8398 Achievements: Update seed hash database - 98ec05550 Achievements: Swap to sqlite-backed storage - cfde5bf5c Achievements: Move achievement pinning to database - e9bd041e2 Achievements: Add missing DB load check in a couple of places - cd7d35cf7 SQLiteHelpers: Fix load failure on Windows - 3260ba807 Deps: Update to 20260614 - a05171d08 Achievements: Fix crash in database updates on unknown media change - 1cce275db Achievements: Don't update game database on disc change - cdce0f7a3 CI: Bump to LLVM 22 - a3dbace1a Hotkeys: Display reason why rewind is unavailable - 4144c1e09 GPU: Eliminate redundant type comparions in FillDrawCommand() - 77fe65995 GPU: Inline draw mode into state struct - 15ad0024d TimingEvent: Use const char* for name instead of string_view - d22950c57 GPU: Add disable texture/vertex lighting debug options - 9fe36d9c0 Misc: Reduce unnecessary struct padding - 31c218360 Qt: Use atomic for auto close flag - 4c698e735 Qt: Add menu item to refresh achievement database - f7ce14e81 ZipHelpers: Move to util project and source file - 97ae01391 Hotkeys: Add 'Select Next Slot and Save State' - 9d0eec772 Qt: Disable global save states by default - 64f0689b6 Qt: Remove unused signal in SettingsWindow - 0dd6e5cef Qt: Disable tab key navigation on game list (#3752) - c712c7b29 Qt: Fix keyboard navigation in game list after searching (#3753) - 8f6b1b630 FullscreenUI: Add reset option to directory selector - ef8a1fcee Core: Fix setting reset wiping out user preferences - c0a8d9dac FullscreenUI: Fix global states always showing in menu - b19347eed Add complete Ukrainian translation for Qt interface (#3754) - cd0c961ec Qt: Add Ukrainian translation to list - a64851a1f HTTPDownloader: Remove redunadant request \casts - 6357732c8 feat(shader): add Scanline Modern 4x2 adaptive retro filter (#3755) - 39cb9af98 update spanish translation (#3756) - e6694d1e2 Fix scanline flicker caused by precision drift at boundaries (#3758) - 553b133b9 Spanish (Spain) translation update 2026/06/22 - 5828adfed Qt: Normalize x in es-ES translation - cd7b4e535 Qt: Remove placeholder text from a bunch of ui files - 5be86a0f3 Qt: Remove redundant translation strings in capture settings - 99498ad0c MSBuild: Flag ts files as correct type - ba6ae234b Qt: Rework speed controls to be less confusing - 6dd972a38 FullscreenUI: Add zoom/slide transition effects - 1ffee7175 Qt: Fix unused variable warning - b43807a2b CPU: Add MIPS assembler - efed642cf Qt: Add 'Patch Instruction' and 'Nop Instruction' to debugger - 34df972d8 Cheats: Add 'Assembly' code type - b1106392b Qt: Use fixed-width font for cheat code editor - 17f54f1a2 Qt: Fix missing styling of QPlainTextEdit - b4834b982 CPU: Add targeted icache invalidation - 74fac973e Cheats: Invalidate icache when writing (likely) assembly codes - 91273f2b3 CPU: Eliminate default branch in icache fill - 487a16193 FullscreenUI: Add a couple of missing transition effects - 7d002d352 FullscreenUI: Fix a couple of issues with modal progress - ef84883dd Sockets: Fix incorrect WSAStartup() call - 90c70407c VideoThread: Fix debug assertion tripping in single-threaded mode - 032d89447 Qt: Update redump hash lookup URL - c22c1cbc4 Settings: Load config for all memory cards - 75be5531a Qt: Add configuration of multitap memory cards - 352bb0d7f Qt: Move save state backup setting to memory card page - eccc1e054 FullscreenUI: Add start-in-big-picture-mode option - 4a9776541 Qt: Tidy up main() function - 73967c5c4 InputManager: Fix cloning multitap profiles - 9e4ef8bd6 System: Only use fast forward volume for >1 speed - e409f884d Settings: Remove unused function - 57a77b433 GameList: Force refresh when starting disc change - ad705e7d8 Qt: _[Truncated at 4000 characters — full notes: https://github.com/stenzek/duckstation/releases/tag/v0.1-11515]_ ### v0.1-11443 - Date: 2026-06-28 - Version: v0.1-11443 - Original notes: https://github.com/stenzek/duckstation/releases/tag/v0.1-11443 - Permalink: https://whatsnew.fyi/product/duckstation/releases/v0.1-11443 - Labels: Platforms: Desktop - **changed** — Make verify serial mismatch message clearer - **fixed** — CDROM DisableReadSpeed() never having any effect - **added** — CDROM manual control of lid state - **added** — CDROM show effective read speed in debug window - **changed** — CPU use table lookup for mfc0 - **fixed** — GameList race condition when refreshing from two sources - **fixed** — Achievements hardcore toggle not showing summary - **changed** — Controller make center a distinct value - **fixed** — Qt white-on-light icon colours in Classic Windows theme - **fixed** — Qt initial icon colours in native theme - **fixed** — CDROM rare case of command event loss with states - **fixed** — System clear memory save states on reset - **changed** — Qt round round texcoords only applies to 3D - **changed** — Settings don't copy advanced/hidden settings to game - **changed** — Qt suffix unavailable audio and video devices - **added** — FullscreenUI add search to game list - **added** — FullscreenUI use InputTextWithIcon() for achievements login - **fixed** — FullscreenUI input text colour in light theme - **fixed** — CPU flipped operands on PGXP shifts in recompiler - **changed** — Qt use 'Global' instead of 'Default' for inherited spinners ##### Commits - 2b1a6cf2b Qt: More appropriate icon for "Search on Redump" button - a90182445 Qt: Improve icon consistency - 15d8f68d3 Merge pull request #3747 from Pesa/overlap - 00149a5be Qt: Disable buttons if controller port is empty (#3748) - 2f0cd4d4c DiscDB: Remove duplicate entries for some multi-disc games - 8dd88aad2 Qt: Make verify serial mismatch message clearer - e21bf74f2 Qt: Replace most _L1 usage with _s - 22ee4c076 CMake: Build with immediate binding/full relro - e23bc84bb Achievements: Always prefetch game badge before achievement badges - 02a41fa06 GameDB: Add metadata to `King's Field 3 - Pilot Style` (#3749) - 8ac294d4f CDROM: Fix DisableReadSpeed() never having any effect - 2c6ac7d4f CDROM: Add manual control of lid state - 1d71915fb CDROM: Show effective read speed in debug window - 18f581ef9 CPU: Use ternary in CPU::WriteRegDelayed() - 667e1147a CPU: Add branch hints to interpreter dispatch - 2b5baa1b8 CPU: Add more branch hints to interpreter - 0b700d1b8 GTE: Eliminate bounds check in dispatcher - 2f8e9a851 MSBuild: Enable strict aliasing for clang - c660f8532 CPU: Use table lookup for mfc0 - 1f7fcb8c9 GameList: Fix race condition when refreshing from two sources - 134f17239 Achievements: Don't tear down persistent state on enable toggle - 8bf9562c3 Achievements: Fix hardcore toggle not showing summary - 944beca2c Achievements: Populate saved credentials in ProcessStartup() - cae25968f Achievements: Move init functions to private header - 1e6a006bd Controller: Make center a distinct value - 24fb22acf Controller: Move helper functions into their own file - 0ec7d2bd4 Misc: Remove redundant static qualifier from force-inline functions - 37878497b Qt: Disable labels for controller setting descriptions - 2a32d7014 Qt: Fix white-on-light icon colours in Classic Windows theme - c1adcb5a4 Qt: Fix initial icon colours in native theme - a4e3afcdd Release MMPX Advanced v3.2: Optimize and Clean (#3750) - f228b009c CDROM: Hopefully fix rare case of command event loss with states - 0e0ef21d0 System: Clear memory save states on reset - 09008bb3a Qt: Round round texcoords only applies to 3D - ba08a6f70 Qt: Hide FSUI theme and font settings from game properties (#3751) - 770cc586f Settings: Don't copy advanced/hidden settings to game - a7a5faeb1 Qt: Fix warning in graphicssettingswidget.cpp - 76ca9b15d Qt: Suffix unavailable audio and video devices - fa167cab8 FullscreenUI: Add InputTextWithIcon() - b3e8543ba FullscreenUI: Make ResetFocusHere() return a boolean - 632aab3a0 FullscreenUI: Use InputTextWithIcon() for achievements login - 1c89c6436 FullscreenUI: Add search to game list - ce14eefd5 ObjectArchive: Swap to HTTPCache log channel - 3a9856660 FullscreenUI: Fix input text text colour in light theme - 6efef5b66 GameDB: PGXP-CPU for Digimon World 2 - c1a9d78e7 RegTest: Fix crash on startup - c20a5c752 CPU: Copy entire value for zero shift cases - c8064e75d CPU: Fix flipped operands on PGXP shifts in recompiler - 0b4dfcd04 Settings: Remove unused field - b7b31ef97 Qt: Use 'Global' instead of 'Default' for inherited spinners - 2c527f4f2 Qt: Add reset buttons for tolerance/depth threshold - 7d1996827 Qt: Fix memory leaks in SVG helpers ### v0.1-11391 - Date: 2026-05-30 - Version: v0.1-11391 - Original notes: https://github.com/stenzek/duckstation/releases/tag/v0.1-11391 - Permalink: https://whatsnew.fyi/product/duckstation/releases/v0.1-11391 - Labels: Platforms: Desktop - **changed** — Optimize scanline-modern-ex.fx shader - **changed** — Optimize scanline-modern shader - **fixed** — GameDB: Various fixes - **added** — GameDB: Add disc set for Persona 2 - Eternal Punishment (USA) - **fixed** — Don't draw OSD messages with zero opacity - **added** — CDImageCCD: Support loading ccd+img without sub - **changed** — GameDB: Decrease cdromMaxReadSpeedupCycles for Resident Evil 2 - **fixed** — AudioStream: Reset staging buffer position - **changed** — GameDB: Force Round Texture Coordinates for Lego Island 2 - **fixed** — CDROM: Fix incorrect stat response in test command - **fixed** — DMA: Enforce read-only bits in OTC channel control - **fixed** — GPU: Fix incorrect bitmask for command primitives - **fixed** — Achievements: Fix game not loading after token-expired late login - **fixed** — Timers: Correctly handle sync mode 0/3 for timer 2 - **added** — Bus: Add option for enabling PCSX expansion region - **fixed** — FullscreenUI: Fix adapter list not updating on renderer change - **added** — Qt: Expose debugger and exit in toolbar - **added** — Qt: Add monochrome icon theme - **fixed** — MediaCapture: Fix Media Foundation refusing to load - **added** — FullscreenUI: Add images to controller settings ##### Commits - b0c277b10 optimization scanline-modern-ex.fx (#3733) - 717424209 GameDB: Various fixes (#3734) - 8dad651a2 GameDB: Add disc set for `Persona 2 - Eternal Punishment (USA)` (#3735) - 023c0823d Qt: Update French translation by Corrigo - ecc46d2d4 Qt: Don't draw OSD messages with zero opacity - 12450a1e0 CDImageCCD: Support loading ccd+img without sub - 6b5086900 Atualização Português do Brasil (#3737) - c71fdd60a GameDB: Decrease cdromMaxReadSpeedupCycles for Resident Evil 2 (#3736) - ee2530647 AudioStream: Reset staging buffer position (#3738) - faa37fd9c CI: Bump Xcode to 26.4 (#3713) - f6da96077 CI: Bump dependencies to 20260512 - 7e98f1717 GameDB: Force Round Texture Coordinates for Lego Island 2 - dfc894c88 AudioStream: Tidy up more state reset - 7b6316189 FullscreenUI: Fix unused variable warning - 33663c5ea Qt: Work around broken build in latest MSVC versions - e1d9414ec Qt: Make binding tooltips/multi-window localisable - a2a12da4b GPUDevice: Pack local state in struct - 22a3302fa DynamicLibrary: Add symbol resolution helpers - 7ee8fbc42 DiscordPresence: Use ResolveSymbols() - 16d1dcb84 GPUDevice: Use ResolveSymbols() - 4c89ddb00 VulkanDevice: Use ResolveSymbols() - ad70cffd9 MediaCapture: Use ResolveSymbols() - 59a3e09fa MediaCapture: Eliminate global load mutex - 2225d366b GPUDevice: Pack shaderc/spirv-cross function pointers together - 1758f43d9 ImGuiManager: Use 1/255 as opacity threshold - 32af8280b optimization scanline-modern shader (#3742) - 74cca15c2 Atualização Português do Brasil (#3741) - 833dd2c9b Update Russian translation (#3740) - dc5c5b7c3 GameDB: A few more fixes (#3739) - 77ecf9939 MSBuild: Enable segment heap via vsprops - 2307ad9b0 CMake: Drop Win32/MSVC specific paths. Use MSBuild. - 5e57ff57d CDROM: Fix incorrect stat response in test command - 1c936c496 DMA: Enforce read-only bits in OTC channel control - fc72f17a5 CI: Drop unused input (#3743) - 8f818af6d GPU/HW: Remove unnecessary reference to backend in texture cache - f484af5f4 GPU: Merge gpu.cpp and gpu_commands.cpp - b123c8e2b GPU: Convert frontend to namespace - 4e0374ef8 GPU: Slightly faster path for DMA writes - 3dd7497f6 GPU: Use InlineFIFOQueue - d89476ad2 GPU: Fix incorrect bitmask for command primitives - e6b938af3 CDROM: Fix incorrect date in comment - f2e629f7e Achievements: Fix game not loading after token-expired late login - cdb26ee7b ImGuiManager: Return wants_keyboard for all generic inputs - 590605b8d FullscreenUI: Don't override existing window in PauseAndOpenMenuFromCoreThread() - e903ff716 HTTPCache: Remove downloader mutex - cf62df552 HTTPCache: Notify host when downloader is active - 5b446d702 HTTPDownloader: Add owner tracking to requests - 2091cb101 HTTPDownloader: Don't poll requests when cancelling - 6e5877634 Achievements: Use request owner for waiting for server calls - de8f42733 Qt: Avoid double cancellation in updater - 8ae5c854e Qt: Add AsyncHTTPRequest class - fc8446de6 Qt: Use main HTTP downloader for updater - 29ba624f2 HTTPDownloader: Convert to namespace - d7464e295 Spanish (Spain) translation update (#3744) - 2467a7b1b Timers: Correctly handle sync mode 0/3 for timer 2 - 8347d1de9 Bus: Add option for enabling PCSX expansion region - fab306cc7 FullscreenUI: Fix adapter list not updating on renderer change - 83a1b0c45 Deps: Update to 20260526 - 2f4aafd0d Qt: Expose debugger and exit in toolbar - d7c2e7785 Qt: Minimize controller SVGs - 68da2ea9f Qt: Add monochrome icon theme - 4cf5f38a8 Qt: Add ThemeSVGIconEngine to replace use of Qt SVG - d58bfaacf Qt: Add more monochrome icons - 6fccb181d Qt: Remove separate colour icon SVGs - 65394a2b9 Qt: Remove unused PNG icons - 49f5f38c4 Qt: Don't use QIcon::fromTheme() - 538a82ad4 Qt: Set isMask property on menu bar action icons on MacOS - 891ae3d9e ImGuiOverlays: Don't draw outline on status indicators - 9e39295f0 Qt: Add icon to empty game list page - f0ee83489 FullscreenUI: Optimiz _[Truncated at 4000 characters — full notes: https://github.com/stenzek/duckstation/releases/tag/v0.1-11391]_ ### v0.1-11295 - Date: 2026-05-10 - Version: v0.1-11295 - Original notes: https://github.com/stenzek/duckstation/releases/tag/v0.1-11295 - Permalink: https://whatsnew.fyi/product/duckstation/releases/v0.1-11295 - Labels: Platforms: Desktop - **fixed** — GPU/TextureCache: Dump textures to first disc directory - **fixed** — Qt: Fix themed slider disabled state - **fixed** — PostProcessing/Slang: Skip over C-style comments in preset files - **added** — PostProcessing/Slang: Support parsing simple/reference presets - **fixed** — Qt: Fix postfx shader list with multiple nesting levels - **fixed** — GPU/HW: Fix rare VRAM corruption after state load - **fixed** — OpenGLDevice: Fix various issues in stream buffer - **fixed** — OpenGLDevice: Disable PBOs completely on NVIDIA - **fixed** — CDROM: Fix off-by-one error - **fixed** — FullscreenUI: Always reset transition before executing it - **fixed** — FullscreenUI: Fix fade transition on game exit - **fixed** — DMA: Fix DICR register write mask - **fixed** — MDEC: Fix incorrect halfword tracking for some commands - **fixed** — Pad: Fix device_index with multitap 2 active - **fixed** — SPU: Fix inverted volume level in voice register read - **fixed** — SPU: Fix incorrect DMA overread handling - **fixed** — MemoryCard: Fix incorrect ACK at end of read - **fixed** — MemoryCard: Fix incorrect output byte at end of write - **fixed** — MemoryCard: Fix incorrect state/ack at end of ID read - **fixed** — Timers: Interrupt request should be cleared after mode write ##### Commits - 3f502579f GPU/TextureCache: Dump textures to first disc directory - 23d79f8a5 Qt: Fix themed slider disabled state - 45460b906 PostProcessing/Slang: Skip over C-style comments in preset files - ae44fa6f7 PostProcessing/Slang: Support parsing simple/reference presets - 495141ab5 Qt: Fix postfx shader list with multiple nesting levels - 8bb8fdd20 Update gpu_hw_shadergen.cpp (#3728) - 558973f20 GPU/HW: Fix rare VRAM corruption after state load - 0d60433e9 GameDB: Otona no Asobi again - 4d95bb34e OpenGLDevice: Fix various issues in stream buffer - bbffe729a OpenGLDevice: Disable PBOs completely on NVIDIA - c7027a272 CDROM: Fix off-by-one error - c2041702d FullscreenUI: Always reset transition before executing it - 650c60e9e FullscreenUI: Fix fade transition on game exit - 73a74b359 System: Remove unnecessary state function - a94a90f34 CPU: Fix some unlikely-to-be-triggered issues - 566ef446d DMA: Fix DICR register write mask - ac7aa0d9f GPU: Fix incorrect debug log message - 5823a0103 MDEC: Fix incorrect halfword tracking for some commands - cfcfd8f86 CPU/Recompiler: Various minor error fixes - 4780bfa35 Pad: Fix incorrect log message - 50b545c36 Pad: Fix device_index with multitap 2 active - ba7b5cdef SPU: Fix a couple of log and debug window fields - acb546b87 SPU: Fix inverted volume level in voice register read - 0c41d8131 SPU: Fix incorrect DMA overread handling - 0b4b9a102 MemoryCard: Fix incorrect ACK at end of read - bde74c54d MemoryCard: Fix incorrect output byte at end of write - d85dcdb5f MemoryCard: Fix incorrect state/ack at end of ID read - 6bd6a8d12 Timers: Interrupt request should be cleared after mode write - 03a61b7ce Timers: Fix repeated IRQs possibly scheduling late - 8601189df Bus: Fix incorrect logging of EXP1 memory timing - 0eb8db8d2 Bus: Fix incorrect region pointer for RAMMirror3 - 077f23450 Bus: Fix error propagation in InjectExecutable() - 2734a1bf1 Bus: Fix incorrect write mask for EXP1/EXP2 base - ebe6af96c GTE: INTPL should be 8 cycles - d80c5b9c3 VideoPresenter: Fix incorrect UVs for Rotate180 case - 0016ef0e7 VideoPresenter: Fix incorrect changed flag when reloading overlay - cc662e69b VideoThread: Fix dead code in VideoThreadEntryPoint() - 2c1894709 VideoThread: Fix incorrect command size - 3535455f4 ImGuiOverlays: Remove unused macro - fa38d4f3f ImGuiOverlays: Fix incorrect capture box height - 2d4259e17 ImGuiOverlays: Fix incorrect frame time calculation - da339e477 MemoryScanner: Set changed flag in RemoveEntryByDescription() - 63f5a6a5b SoundEffectManager: Fix buffer overallocation in upmix/shift path - 66ddcae05 Justifier: Remove unused function - 16ceae8bc Justifier: Last byte shouldn't ACK - da7a2ccbd PlayStationMouse: Fix X sensitivity being used for Y - c9c76453a InterruptController: Fix incorrect branch hint - 17bea4719 AudioStream: Fix backend names not being translated on lookup - 274d87ef1 CubebAudioStream: Fix a few logging errors - f40a3c85f SDLAudioStream: Fix inconsistent start API usage - 692e7ce03 WAVReader: Fix non-s16 handling in SeekToFrame() - cac0eac05 GameList: Remove unused function - 7b802e6b8 GameList: Fix incorrect constants in played time parsing - 9a440652b GameDatabase: Fix incorrect log messages - 3d43cfa42 GameDatabase: Fix setting wrong settings object - 385ee9d30 GameDatabase: Add missing flush check for SaveToCache() - 40b68939e System: Fix video capture args being read incorrectly - 66702bc71 System: Fix some incorrect error messages - ccfa0f493 System: Remove a couple of redundant comparisons - 21f683555 CDImagePPF: Fix possible overpatching on spanning sectors - 08015f192 CDImagePPF: Fix possible integer underflow in short files - efc623c98 CDImagePBP: Fix error propagation in SwitchSubImage() - 32f816304 CDImageMDS: Fix use of 32-bit fseek() - 4a24d2930 CDImageDevice: Fix incorrectly formatted log messages - 4e1cdd5d8 CDImageCue: Fix inconsistent size in ECMTrackFileInterface:: _[Truncated at 4000 characters — full notes: https://github.com/stenzek/duckstation/releases/tag/v0.1-11295]_ ### v0.1-11108 - Date: 2026-04-26 - Version: v0.1-11108 - Original notes: https://github.com/stenzek/duckstation/releases/tag/v0.1-11108 - Permalink: https://whatsnew.fyi/product/duckstation/releases/v0.1-11108 - Labels: Platforms: Desktop - **added** — Add RA SVG icon variant for achievements - **added** — Add menu dropdown widgets to FullscreenUI - **added** — Add icon type to OSD message in ImGuiManager - **added** — Add LockedPtr to Common utilities - **added** — Add OptionalWithStatus to Common utilities - **added** — Add AppendUTF8ToWideString() to StringUtil - **added** — Support sending additional headers in HTTPDownloader - **added** — Support setting timeout per-request in HTTPDownloader - **added** — Add OpenTemporaryCFile() to FileSystem - **added** — Add ObjectArchive class to Util - **added** — Add HTTPCache module to Util - **added** — Add AsyncPixmapLoader class to Qt - **added** — Support loading images from URLs with caching in FullscreenUI - **added** — Add web cache section to advanced settings in Qt - **added** — Add VideoThreadAsyncBufferCallCommand to VideoThread - **added** — Add Azerbaijani translation - **added** — Add manifest for binary in Qt - **changed** — Use dropdown menus in FullscreenUI settings - **changed** — Use HTTPCache downloader for achievements, game list, and Qt DownloadFile() - **changed** — Reorganize Qt settings with debug settings in own category and directories moved to appropriate pages - **changed** — Use HTTP cache instead of loose files for achievements - **changed** — Increase HTTPDownloader poll interval to 16ms - **changed** — Set prefetch badges to default on in settings - **changed** — Rename MMPX Enhanced 3.0 to Quality - **changed** — Rename game icon to game badge in achievements - **fixed** — Fix oversized command allocation in ImGuiOverlays - **fixed** — Fix possible video thread corruption on rewind - **fixed** — Fix menu scrolling in FullscreenUI with single choice dialog open - **fixed** — Fix start point in memory card settings in FullscreenUI - **fixed** — Fix focus loss opening game properties in FullscreenUI - **fixed** — Fix corrupted blur background on loading screen in FullscreenUI - **fixed** — Fix tooltip in Qt - **fixed** — Fix path in create-update-and-edit-language.bat - **fixed** — Fix backend leak on VideoThread creation failure - **fixed** — Fix open error not propagating in MemoryCard - **removed** — Remove GetHTTPUserAgent() from Core - **removed** — Remove duplicated string in FullscreenUI - **removed** — Remove CancellableChanged() from ProgressCallback in Common - **removed** — Remove RunOnBackend() from VideoThread - **removed** — Remove ShouldLoadAchievementsProgress() from GameList ##### Commits - 3f52ebe01 gitignore: Add CLion generated directory - 99acb8fb1 ThirdParty/SmallVector: Add missing include - 9275e1ad7 Achievements: Add RA SVG icon variant - a4c53a905 FullscreenUI: Add menu dropdown widgets - 911fe99f8 FullscreenUI: Use dropdown menus in settings - 121ae17a3 FullscreenUI: Remove duplicated string - aeeb592a2 FullscreenUI: Disable achievement icon download if unavailable - c4481f536 GameDB: Max speedup cycles for Monster Rancher 2 and some other fixes (#3712) - 79387759b ImGuiManager: Add icon type to OSD message - 513643adb Common: Add LockedPtr - d731a6567 Common: Add OptionalWithStatus - 79576be41 StringUtil: Add AppendUTF8ToWideString() - 821cab5a5 HTTPDownloader: Support sending additional headers - 7d24e64e5 HTTPDownloader: Support setting timeout per-request - 574be46fe HTTPDownloader: Increase poll interval to 16ms - ee1fb3529 FileSystem: Add OpenTemporaryCFile() - 331571b38 Util: Add ObjectArchive class - 1690c6949 Util: Add HTTPCache module - 1c407c58d Achievements: Use HTTPCache's downloader - 80b93d3e0 GameList: Use HTTPCache downloader - 1260891e4 Qt: Use HTTPCache downloader for DownloadFile() - d618413c5 Qt: Add AsyncPixmapLoader class - 2f3e30ea0 Core: Remove GetHTTPUserAgent() - 10a8f5e19 FullscreenUI: Support loading images from URLs with caching - 32ab1b70f Achievements: Use HTTP cache instead of loose files - df47c9f53 Qt: Move debug settings into its own category - e3423e1a5 Qt: Move save states directory to memory card page - d140fbf8b Qt: Move screenshot/capture directories to Capture Settings - 5d8bad2c8 Qt: Style textures directory selector same as others - 3b98973f1 Qt: Move remaining folders to advanced settings - b05e7ce52 Qt: Add web cache section to advanced - 3d6af6b4f GameDB: F1 games - 1e591babc FullscreenUI: Keep choice over dropdown for larger lists - e7361775f FullscreenUI: Add missing settings - c8a56a96b Qt: Adjust touchpad tooltip text - 76cda3180 Qt: Remove old achievement images directory on startup - 2c52ff011 Settings: Prefetch badges should default to on - 05efaaec2 Atualização Português do Brasil (#3715) - 336f3b632 ImGuiOverlays: Fix oversized command allocation - 4c032c0fb Common: Remove CancellableChanged() from ProgressCallback - 05d470be1 VideoThread: Add VideoThreadAsyncBufferCallCommand - 0033212b2 Qt: Don't read g_main_window on core thread - d8afa5bdc Host: Remove unused LoadSettings() callback - de57f47bd System: Fix possible video thread corruption on rewind - 8b5e89f30 Qt: Clarify no data loss from cache cleanup - f5d8fbd70 VideoThread: Remove RunOnBackend() - 57a3dc407 FullscreenUI: Don't show fullscreen resolution when unsupported - ee13585a2 FullscreenUI: Fix menu scrolling with single choice dialog open - cfa62cab8 FullscreenUI: Fix start point in memory card settings - 2aa3606fe FullscreenUI: Fix focus loss opening game properties - 5a60e3707 FullscreenUI: Apply resolution change immediately - 423e5fd62 FullscreenUI: Always place summary under title - eb52ba363 FullscreenUI: Highlight menu item when dropdown open - c9a7bf742 FullscreenUI: Prefetch two rows of covers in grid view - fc017569b GameList: Only use lookup achievements icons if logged in - 8682b4f41 Qt: Add Azerbaijani translation - 7bcafb44f Qt: Fix tooltip - d8bfa411d MMPXEnhanced v3.0 (#3717) - f3220f106 GPU/HW: Rename MMPX Enhanced 3.0 to Quality - 50023dcde FullscreenUI: Fix corrupted blur background on loading screen - e3f6b4822 GameDB: Sol Divide does not support analog (#3716) - d3b174ab4 FullscreenUI: Disable postfx in loading screen - b3157ffe9 Qt: Fix path in create-update-and-edit-language.bat - 70589b1f9 VideoThread: Fix backend leak on creation failure - fa4a3eadd Achievements: Cache whether we have saved credentials - 724c114cd MMPX Enhanced Lite (#3718) - d8e11b54a Qt: Add manifest for binary - 0eed1d93f Qt: Improve icon consistency - a2cffcf5e Qt: Fix accidential QObject translation conte _[Truncated at 4000 characters — full notes: https://github.com/stenzek/duckstation/releases/tag/v0.1-11108]_ ### v0.1-11026 - Date: 2026-04-11 - Version: v0.1-11026 - Original notes: https://github.com/stenzek/duckstation/releases/tag/v0.1-11026 - Permalink: https://whatsnew.fyi/product/duckstation/releases/v0.1-11026 - Labels: Platforms: Desktop - **removed** — Remove GetDisplayNameFromPath() from FileSystem - **changed** — Update dependencies to 20260404 - **changed** — Update SDL Game Controller DB - **fixed** — Don't display empty pinned achievements without progress - **changed** — Allow unpinning of achievements with empty progress - **changed** — Store pinned achievements sorted - **added** — Display a warning when spectator/encore mode is enabled in achievements - **changed** — Disable encore mode when spectator enabled in achievements - **fixed** — Fix invalid pause menu with external shutdown in achievements view - **fixed** — Fix background blur drawn twice in FullscreenUI - **fixed** — Disable restorable cheats before saving state - **fixed** — Reapply restorable codes after state load - **fixed** — Don't blur empty background in loading screen - **fixed** — Fix runtime error on oversized log message in rcheevos - **added** — Supply error message for non-HTTP client errors in achievements - **fixed** — Fix non-English descriptions in Error class - **fixed** — Fix InputBindingWidget tooltip in Qt - **added** — Add missing includes to compress_helpers.h ##### Commits - bdd796c6d FileSystem: Remove GetDisplayNameFromPath() - ed7261d9e Atualização Português do Brasil (#3708) - bbd36606d Cheats: Drop extern from declarations - cd539c0cf Deps: Update to 20260404 - 699922a37 Data: Update SDL Game Controller DB - 653b0e39e Achievements: Don't display empty pinned achievements without progress - 8161d6597 Achievements: Allow unpinning of achievements with empty progress - 58b309fec Achievements: Store pinned achievements sorted - 48a403b8a Achievements: Display a warning when spectator/encore mode is enabled - 89d7579e5 Achievements: Disable encore mode when spectator enabled - 41205d2d2 FullscreenUI: Fix invalid pause menu with external shutdown in achievements view - ce83fa5f5 FullscreenUI: Fix background blur drawn twice - bf3ae80dd ImGuiManager: Remove redundant texture bind - aecd1a64f Cheats: Disable restorable cheats before saving state - 1d119ba18 Cheats: Reapply restorable codes after state load - ac06a86a3 Qt: Remove unnecessary startup semaphore - f1ae5b8bb CI: update actions/upload-artifact (#3709) - 3004aa35e CI: Don't double-archive builds - 7659a70c1 Common: Get rid of multiple virtuals in ProgressCallback - a447846ac Qt: Remove gamelistrefreshthread.cpp/h - 0cc6bde71 FullscreenUI: Don't blur empty background in loading screen - dff49fddc dep/rcheevos: Fix runtime error on oversized log message - a6f7ff684 Achievements: Supply error message for non-HTTP client errors - 9f7c5467b Common: Fix non-English descriptions in Error class - 69b10bb0a README: Update VC runtime link - d001c8f80 Qt: Fix InputBindingWidget tooltip (#3710) - 7f5d9c081 Qt: Fix conversion warning - 5e7be496a Util: Add missing includes to compress_helpers.h ### v0.1-10998 - Date: 2026-04-03 - Version: v0.1-10998 - Original notes: https://github.com/stenzek/duckstation/releases/tag/v0.1-10998 - Permalink: https://whatsnew.fyi/product/duckstation/releases/v0.1-10998 - Labels: Platforms: Desktop - **changed** — Qt slider colour adjusted in Dark Ocean theme - **changed** — Qt uses saveAndReloadGameSettings() instead of manual save - **changed** — Qt warns when changing renderer for the first time - **changed** — ImGui updated to 3a26b64 - **added** — FullscreenUI outline renderer added - **changed** — ImGuiOverlays uses outline text for OSD - **changed** — FullscreenUI menu border appearance improved - **changed** — Qt uses QScreen for refresh rate queries - **changed** — QueryRefreshRateForWindow() removed from WindowInfo - **changed** — Qt responds to QScreen refresh rate changes - **changed** — Bundled ffmpeg headers updated to 8.1.0 - **changed** — ImGuiOverlays adds blur background to save state selector - **changed** — Qt game list settings appearance improved - **changed** — Qt tree view borders rounded - **fixed** — FullscreenUI submenu icon colours fixed in light themes - **added** — FullscreenUI PopupHighlight colour added - **fixed** — FullscreenUI text shadow disabled in light themes - **changed** — FullscreenUI light theme background alpha adjusted - **fixed** — FullscreenUI settings navbar icon fixed in light theme - **fixed** — FullscreenUI OSD message background fixed when guest display is off ##### Commits - c339e6727 Qt: Tweak slider colour in Dark Ocean theme - 28c34feeb Qt: Use saveAndReloadGameSettings() instead of manual save - efa974193 Qt: Warn when changing renderer for the first time - 0f7eed06c dep/imgui: Update to 3a26b64 - 805dce4ad FullscreenUI: Add outline renderer - aebca6a95 ImGuiOverlays: Use outline text for OSD - a7f2edd95 FullscreenUI: Make menu border slightly less ugly - 13ab70f47 Qt: Use QScreen for refresh rate queries - 7485d7ce8 WindowInfo: Remove QueryRefreshRateForWindow() - 125c3ec70 Qt: Respond to QScreen refresh rate changes - 773fe4b88 Spanish (Spain) translation update (#3706) - 4e353ea00 Deps: Update bundled ffmpeg headers to 8.1.0 - 459a6fcfe Deps: Update to 20260328 - ffb33c281 Atualização Português do Brasil (#3707) - 9eaa6735c ImGuiOverlays: Add blur background to save state selector - 819781705 Qt: Make game list settings slightly less ugly - f512f493c Qt: Round borders on tree views - 34c957e8f FullscreenUI: Fix submenu icon colours in light themes - cd6ab843f FullscreenUI: Add PopupHighlight colour - a081ecfdb FullscreenUI: Disable text shadow in light themes - 383331ddb FullscreenUI: Adjust light theme background alpha - ac88e7938 FullscreenUI: Fix settings navbar icon in light theme - 9b0a4ec55 FullscreenUI: Fix OSD message background when guest display off