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