A broad rolling update for the PlayStation emulator
DuckStation’s latest rolling development build is identified as “latest” and was published on October 3, 2026. It follows build v0.1-11894 from September 12 and includes both sets of changes, rather than presenting the newer build as the source of every fix. Because this is a rolling development release, it has received less testing than a stable release and may contain regressions.
DuckStation emulates the original Sony PlayStation on Windows, Linux, and macOS. Its feature set includes hardware and software rendering, resolution upscaling, texture filtering, PGXP geometry enhancements, save states, controller presets, lightgun emulation through a mouse, RetroAchievements, disc-image support, debugging tools, and a fullscreen interface. A PlayStation or PlayStation 2 BIOS image is required to start the emulator, and the project does not package one.
Shader and graphics work targets smoother rendering
The most substantial group of changes in the latest build concerns shader and pipeline compilation. DuckStation now uses unique identifiers for shader-generation and shader-cache keys, can look up cached shaders, and stores shader-cache data through a synchronized object archive. Supported graphics backends also gain pipeline loading, while shader and pipeline compilation can run across multiple threads.
For users, these changes are intended to make shader and pipeline preparation more efficient and to improve reuse of cached graphics data. The release also adds Vulkan timeline semaphore support when available, corrects Vulkan hazard tracking, fixes a Vulkan rasterizer-order-view clear issue, and uses the correct format for those buffers. The project does not provide benchmark figures in these release notes, so the practical effect will depend on the host system and graphics backend.
The graphics update adds more texture filters and a new advanced “Filter Framebuffer Uploads” option. A separate “Disable Upscaled Direct Textures” option is available for cases where upscaled direct textures cause problems, with a game-specific database entry for Fear Effect. Background texture filtering is enabled for more games, and a database correction prevents background replacements from disappearing after texture caching is disabled.
The build also fixes a missing mask-or operation in a texture fallback path, corrects scanline synchronization before vertical display start, and removes or simplifies several graphics pipeline layouts. Fullscreen interface blur now uses a revised layout, and background images in fullscreen headers can be blurred. The earlier included build also corrected video presentation prerotation when blur or transitions were active.
Audio processing receives internal performance changes
The latest build revises several parts of the PlayStation audio processing path. Per-voice flag handling is streamlined, Gaussian interpolation is vectorized, capture-buffer writes are consolidated, and ADPCM nibbles are decoded in pairs. These are implementation changes rather than new audio controls, but they reduce repeated work in commonly used sound-processing paths.
CD audio handling also receives fixes and structural changes. A persistent thread is used for asynchronous CD-ROM reading, playback can avoid an incorrect track restart, and the reader now uses lighter internal synchronization. Disc-image handling is more accurate for sector formats: memory-backed images read sectors in their native format, PPF images handle non-mode 2 sectors, and CHD images select the correct sector size for the mode being read.
Controller handling and hotkeys become more resilient
Input handling is another major focus of the newest build. Bindings are cleared when input is lost, cancelled hold bindings are released, and mappings are reloaded after a controller source is hot-plugged. SDL devices are polled immediately after initialization, persistent identifiers are used for mapping, and a Windows raw-input connection callback issue is corrected.
The Qt controller pages can now display bound devices. The DualSense player LED setting has moved into the LED dialog, and the release introduces shared base classes for lightgun and NeGcon controllers. These changes organize related controller types and should make the corresponding settings easier to understand without changing the fact that the emulator is receiving input from the host computer.
Fullscreen users gain a “Toggle Pause Menu” hotkey. Cheats, achievements, and leaderboards can be toggled with hotkeys instead of only being activated as one-shot commands, and pause-menu state is synchronized when the toggle is used. The update also fixes window switching with hotkeys and avoids duplicated transitions around achievements and leaderboards.
Achievements and the fullscreen interface get polish
Achievement notifications now show category badges, with smaller text in compact mode, corrected padding, and fixes for uneven notification heights. Achievement options that were not always updated immediately can now refresh correctly, per-game notification duration sliders behave more reliably, and several locking issues around leaderboard tracking and notification state have been addressed.
The fullscreen interface adds a blurred background treatment for headers and displays a subset icon as the game icon in a subset view. Dropdowns use an expand icon, texture-filter choices appear in a popup list, and separator styling has been adjusted. The game list can show progress while loading on demand, while the loading screen gives its text and progress indicator separate sizing.
Several navigation edge cases are corrected. The change-disc menu no longer becomes stuck in some situations, and pressing Escape while searching the game list no longer resets focus incorrectly. A fix for overlays during transitions and another for unsafe context access aim to keep interface changes from interfering with the emulation thread.
Debugger improvements help with investigation and development
The Qt debugger adds a threads view, a call stack, and links between the stack and memory views. Users can select multiple instructions, the debugger window remembers its state, and breakpoints are saved to INI files. Context menus now include icons, while an empty debugger toolbar title and other small presentation issues have been corrected.
These tools are useful for inspecting emulated software and homebrew executables without changing the emulator’s role: DuckStation remains a PlayStation emulator running on the host operating system, not software that turns a physical console into a modified system. The build also includes a fix for a rare crash when video-device initialization fails and preserves a successful software-rendering fallback when video-thread startup or reconfiguration encounters trouble.
Game management, media, and settings changes
The game list now recognizes Audio CD entries, reorders several list-entry types, and prevents game properties from being opened for PSF files and Audio CDs. The cover downloader remembers its serial-file-name preference, excluded game-list paths receive a context menu, and newly added excluded paths display their icons correctly. Game properties can show an inherited multisampling setting, and the properties view gains the RetroAchievements game ID.
Settings behavior is also more precise. The emulator no longer copies non-sensitive user preferences into game-specific settings, avoids marking unchanged string-list values as dirty, and disables post-processing when settings are reset. In hardcore mode, gpu_force_video_timing is disabled. Linux builds now honor the optimal frame-pacing setting, and the updater relaunch path uses a safer process-spawning method.
The release fixes a possible buffer overflow in byte-pattern searching and changes that search to return the first match. It also adds debug-build detection for recursive locks, improves several lightweight synchronization wrappers, and adjusts task-queue behavior so its thread count can be dynamic. These are largely internal changes, but they support the newer shader, input, audio, and interface work.





