DuckStation, a PlayStation 1 emulator, has been released in version v0.1-11752.
The update includes 143 commits with a clear focus on security hardening: numerous buffer and integer overflows as well as out-of-bounds accesses in the CD image parsers (MDS, PBP, CUE) were fixed, along with a possible path traversal bug in the updater.
Other highlights are a complete rework of the GDB server (watchpoint details, GTE registers, more robust protocol handling), a new BIOS installer in the Qt interface, improved timer emulation accuracy, the new controller option “Disable Simultaneous Opposing Cardinal Directions” (SOCD), and Hebrew text rendering. In the achievements system “softcore” was renamed to “casual”, and media capture now defaults to H264.
Security & Stability:
- Updater: Fix possible path traversal during preprocessing
- Updater: Fix possible infinite loop
- CDImageMDS: Fix a bunch of possible buffer overreads
- CDImagePBP: Add missing validation of BCD digits / check SFO index table count before reading
- CDImageCue: Validate bits-per-sample for wave files
- ISOReader: Fix possible integer overflow in GetSizeInSectors()
- PSFLoader: Add missing header size checks when loading
- Cheats: Fix possible OOB reads in malformed instructions
- Achievements: Fix possible read past end of memory in callback
- GPU: Add missing serialization / simple checks to the polyline buffer
- StateWrapper: Add max size checks, clamp enum values, avoid integer overflow on 32-bit
- Image / AnimatedImage: Avoid integer overflow for dimensions
- MDEC: Ensure direct FIFO writes don’t overflow
- Misc: Fix under-allocation in sjis2utf8()
GDBServer:
- Expose target memory map, registers and GTE registers
- Report watchpoint stop details, expand watchpoint ranges
- Support continue / single-step / signal resume addresses
- Bound remote packet sizes, reject oversized incoming packets
- Apply register writes atomically, invalidate code after memory writes
- Notify host when first/last client connects/disconnects
- Restore run state after disconnect, disable nagle buffering
BIOS & System:
- Qt: Add BIOS Installer and improve BIOS setup page
- BIOS: Add version information and filenames to list
- System: Add option to install BIOS when missing
- Timers: Improve emulation accuracy
- SPU: Fix volume sweep termination conditions
- DMA: Hardwire reverse direction for OTC
Qt / FullscreenUI:
- Qt: Add CollapsibleWidget, refresh button for border overlay list
- Qt: Rework media capture menu
- Qt: Implement mouse capture using CoreGraphics, tie relative mouse state to active window
- Qt: Fix crash opening game settings
- FullscreenUI: Expose multitap memory cards, fix shared memory card selection
- ImGuiManager: Support rendering Hebrew text
Controller & Achievements:
- Controller: Add ‘Disable Simultaneous Opposing Cardinal Directions’ option
- Achievements: Rename softcore to casual
- Achievements: Make password login asynchronous
- Achievements: Ensure callbacks run on core thread for RAIntegration
MediaCapture:
- Fix incorrect samples on buffer wrap-around
- Fix possible corruption in audio-only capture
- Resample audio when encoder doesn’t support 44.1KHz (with OSD warning)
- Default to H264 on all platforms
Graphics backends:
- VulkanDevice: Numerous compute pipeline, texture upload and swapchain fixes
- D3D12Device: Descriptor allocation, texture array and render-pass clear format fixes
- MetalDevice: Fix a few leaky object retains
Localization: Spanish (Spain) and Brazilian Portuguese translation updates

Source: GitHub