github stenzek/duckstation latest
Latest Rolling Release

latest release: preview
3 days ago

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

Don't miss a new duckstation release

NewReleases is sending notifications on new releases.