EmuNews

DuckStation

stenzek/duckstation

17 tracked updates · latest 32 min ago · last stable latest 12 days ago

GitHub

Latest Preview Build

preview nightly / pre-release
Release notes · 14 files

Commits

  • Ensure RAM pointer is always initialized (Stenzek)
  • Report EXE override alongside running game (Stenzek)
  • Bound call stack function scan by the live call target (Stenzek)
  • Align debugger code view addresses to instructions (Stenzek)
  • Refresh debugger memory view region on system start (Stenzek)
  • Add symbol support to debugger (Stenzek)
  • Add debugger call stack context menu (Stenzek)
  • Allow debugger windows to be closed (Stenzek)
  • Round the bottom corners of south-facing tabs in themes (Stenzek)
  • Tab debugger call stack, breakpoints and threads by default (Stenzek)
  • Add copy/view in dump to debugger register and stack lists (Stenzek)

Latest Preview Build

preview nightly / pre-release
Release notes · 14 files

Commits

  • Remove some redundant setting load parameters (Stenzek)
  • b391864: Updater/CocoaTools: Fix assorted correctness issues (Stenzek)
  • Fix renderer correctness issues and enable compute (Stenzek)
  • Fix util-tests failing in debug builds (Stenzek)
  • Fix regtest build on MacOS (Stenzek)

Latest Preview Build

preview nightly / pre-release
Release notes · 14 files

Commits

Latest Rolling Release

latest release
Release notes · 14 files

Commits

  • 1b79c8b44 Deps: Update to 20261010
  • 6a9c29604 Achievements: Extract bucket names out of FullscreenUI
  • e468c8084 Achievements: Separate login and credential saving steps
  • 3856bf0c3 SettingsInterface: Guard against copying to self
  • 8af1da4fc Threading: Add WaitFor() to ConditionVariable
  • fdb7e8f7b GameDatabase: Sort disc sets by save title
  • 363da8d4f GameList: Don't persist cache map between refreshes
  • deaa4a44b GameList: Allow use of external SettingsInterface
  • 43cf72faa GameList: Synchronize settings between FullscreenUI and Qt
  • b8ce9b4df System: Provide content details to OnSystemStarted()
  • de2dd2b68 StringUtil: Fix possible integer overflow in EncodeAndAppendUTF8()
  • aa03edcd1 Settings: Add a dedicated key for overlays
  • 594155010 Settings: Don't copy controller type to game
  • bd44b2a43 Core: Don't reset folders when resetting settings
  • 03f731681 FileSystem: Backport additional helper functions
  • 1b123c397 FileSystem: Make OpenSharedCFile() wrap OpenCFile() on non-Windows
  • 84d511d18 FileSystem: Add error parameter to FTell64()
  • 230b4788c FileSystem: Extract find result sorting to function
  • 98c25ab78 FileSystem: Use shared file open for ReadBinaryFile/ReadFileToString
  • 7d618a582 FileSystem: More RVO optimizations
  • f20b39bd0 FileSystem: Add more ReadFileToString() overloads
  • a6a22baff CPU/Recompiler: Respect load delays when swapping NOP slots
  • 10525f926 CPU/Recompiler: Cancel pending loads on self moves
  • 19d507707 CPU/Recompiler: Keep link-register delay slots in order
  • 95102c364 CPU/Recompiler: Dispatch interpreter fallback exceptions
  • cc6f410b0 CPU/Recompiler: Trap constant signed arithmetic overflow
  • 00adf511d CPU/Recompiler: Preserve pending loads on memory exceptions
  • 96c75771c CPU/Recompiler: Correct misaligned indirect jump exceptions
  • c714922a5 CPU/Recompiler: Fix ARM32 VIXL debug builds
  • 501fe22ed CPU/Recompiler: Mask constant variable shift counts on ARM
  • 05c811f4e CPU/Recompiler: Truncate ARM64 multiplication results in LO
  • b224f7a8e CPU/Recompiler: Decode ARM32 load exceptions from r0
  • 63cbd900d CPU/Recompiler: Align ARM32 backpatch thunk calls
  • 22a3b0674 CPU/Recompiler: Use 32-bit ARM64 fastmem LUT indices
  • 38651d400 CPU/Recompiler: Handle large ARM64 backpatch cycle counts
  • 5b37f3d91 SPU: Fast-path ADPCM blocks without predictors
  • 16fa96940 SPU: Skip reverb output filtering at zero volume
  • fd8574a84 SPU: Pack reverb FIR coefficients into 16-bit lanes
  • 5a5bb3db4 SPU: Extract reverb-master-enable out of loop
  • 22a06c8a4 GTE: Add regression tests
  • 953285bf5 GTE: Only sign extend MAC results on overflow
  • 769f4330b GTE: Force inline matrix/lighting/projection helpers
  • d6d1373c5 GTE: Specialize instruction handlers on sf/lm
  • 9a5bb3d85 GTE: Factorize NCLIP to use three multiplies
  • 79161b097 GTE: Use shift for IRGB/ORGB conversion
  • 5b3bcf139 GTE: Simplify FLAG error bit update
  • 8e4701a5f GTE: Mark saturation branches as unlikely
  • e43d2f81a GTE: Use branchless saturation for light matrix multiply
  • cf71052c4 CDROM: Vectorize XA resampling
  • b70866fba MSBuild: Improve reproducibility
  • 7f0b3275b CMake: Improve reproducibility
  • 60ab60a03 CPU: Don't stall for GTE with a single cycle remaining
  • 645734b13 System: Add optional callback to screenshot save
  • a22292bf8 System: Avoid unnecessary mutex unlock->relock
  • 217cb9401 ZipHelpers: Fix incorrect error message
  • 4beed326e InputManager: Return proper error from GetGenericBindingMapping()
  • 70b95a4c0 Settings: Shorten fastmem mode description
  • fcd8c7b2f System: Don't use exact sleep on core thread
  • 0a93c2305 Settings: Fix inconsistent default values
  • 9dc2bd54d Settings: Use constants for section names
  • b8a8abae8 Update Swedish Qt translation
  • e0deda016 TimingEvent: Relax Assert to DebugAssert
  • ee6c200b9 FullscreenUI: Fix deadlock opening game properties
  • 9b47014f1 Qt: Fix window icon/title desynchronizing
  • 390686a5d MDEC: Fix word alignment of DMA writes
  • 86c5befd0 MDEC: Fix signed monochrome output
  • f52eb120d MDEC: Use 32-bit add for red/blue chroma rounding
  • 1f3c4a5c4 Tests: Add MDEC decode tests
  • 8fb990710 MDEC: Vectorize IDCT across matrix rows
  • d5bfad7d7 MDEC: Convert whole macroblock in YUVToRGB_New()
  • 60d54981a MDEC: Simplify 15-bit output conversion
  • 16dc60f97 MDEC: Add IDCT fast path for low frequency blocks
  • 9a7857037 DMA: Preserve source address for staged GPU transfers
  • d7120b22a DMA: Optimize contiguous ordering table clears
  • 284f83eec DMA: Avoid staging transfers ending at the RAM boundary
  • c37f3901e DMA: Copy forward wrapping transfers in contiguous spans
  • 859d7e875 DMA: Skip transfer eligibility checks when clearing requests
  • 4ac22708f MDEC: Turn state dispatcher into a jump table
  • 95dc9f0c9 OpenGLDevice: Fix active texture tracking when unbinding
  • c03dd0bc1 D3D11Device: Fix compute/image binding state tracking
  • 9bdc66821 D3D11Device: Fix texture copy/map/upload edge cases
  • d0731116f D3D11Device: Fix swap chain error handling and fullscreen output selection
  • d7143947f D3D11Device: Fix timestamp query state and WaitForGPUIdle()
  • df9ea5eee D3D11Device: Fix input layout cache keys and feature level 10 limits
  • 301490980 GPUDevice: Respect DisableMemoryImport in OpenGL/Metal
  • 337d066b5 VulkanDevice: Fix crash when device creation fails
  • e2f2fe147 VulkanDevice: Fix ROV clear not ending render pass
  • a267c7154 VulkanDevice: Fix compute image descriptor set binding
  • 571201311 VulkanDevice: Only update multi-texture descriptors when dirty
  • a74c6a44c VulkanDevice: Always allocate storage image descriptors
  • 3c5861aaa VulkanSwapChain: Fix abort when recreate fails after cached acquire
  • 720c60781 VulkanDevice: Increase uniform buffer range to 16K
  • d52ba48ef VulkanDevice: Unbind texture buffer on destroy
  • 6eb49f980 VulkanDevice: Don't restart render pass if one wasn't active
  • 50eddf2c8 VulkanSwapChain: Fix old swap chain leak on creation failure
  • 33a238bd1 VulkanDevice: Don't flag extensions that aren't enabled on Vulkan 1.0
  • cf7be2cab VulkanDevice: Respect DisableMemoryImport flag
  • 402c5679f VulkanDevice: Fix resolve with unused or invalidated textures
  • 8b8f3ca5d VulkanDevice: Fix download transitioning wrong texture layer
  • cc4eb9f1b VulkanDevice: Fix render pass flags being truncated in cache key
  • 605e5fe63 VulkanDevice: Fix blend attachment count with no colour targets
  • 6bff12e6c VulkanDevice: Don't set blend constants unless used
  • d76127398 VulkanDevice: Fix image layout in null texture descriptor
  • b7269a8ca VulkanDevice: Fix buffer image height for compressed uploads
  • ca9a7f36a VulkanDevice: Add self-dependency when framebuffer fetch is disabled
  • 90b7ec71b VulkanDevice: Fix render pass state after flushing mid-present
  • da59abe4e VulkanDevice: Check swapchain maintenance feature and push descriptor limit
  • 57533b520 VulkanSwapChain: Don't request unsupported composite alpha
  • ef5a84ece VulkanDevice: Remove unused GetRenderPassForRestarting()
  • ed81176c4 VulkanDevice: Fix double free when texture buffer creation fails
  • d90a4da1b VulkanDevice: Wait for image acquire when submitting mid-present
  • d5702262e GPUDevice: Support mirrored surface pre-transforms
  • a9c8dd0d1 GPUDevice: Remove unused DispatchWithPushConstants()
  • b540517f7 OpenGLDevice: Fix uniform range padding and buffer mapping issues
  • 9c61b1489 OpenGLDevice: glBlitFramebuffer() to self is not allowed in GLES
  • 6282dfde0 OpenGLDevice: Reset last program when unbinding pipeline
  • 9e77097e4 OpenGLDevice: Fix texture copy/resolve/download targets and ordering
  • ce9ee819e OpenGLDevice: Fix clear value handling for non-RGBA8 targets
  • 0aa7687e7 OpenGLTexture: Fix format table, MSAA creation and upload sizing
  • 65056bdba OpenGLDevice: Don't disable async downloads when only PBO uploads are slow
  • 0e138ae20 OpenGLDevice: Use stable VAO cache pointers and a default VAO
  • a4179f535 OpenGLDevice: Fix vsync mode and surface leak when creating swap chains
  • 4f0af1a28 OpenGLDevice: Fix depth-only framebuffers and sRGB render targets
  • c5325add3 OpenGLDevice: Fix MRT output locations without binding layouts, detach shaders
  • 68d234219 OpenGLDevice: Delete samplers, check for optional sampler state
  • 8123e67ae OpenGLDevice: Add FlushPipelineCache(), fix pipeline cache error paths
  • 32dab7707 OpenGLDevice: Fix timer query feature check and debug labels
  • 20d784e8e ShaderGen: Use explicit output locations for MRT on GLES 3.0
  • cc1970f64 MSBuild: Work around broken MSVC release builds
  • a6f0faad9 GPU: Fix automatic resolution scale when loading state
  • 53209ba75 System: Avoid redundant resolution change with auto upscale
  • 5df2b5617 GPU: Guess automatic resolution scale while initializing
  • 34c37444a MemoryCard: Save card to file asynchronously
  • 16409920e Translation: Add Android string list
  • a1b6f64b0 FullscreenUI: Update translation strings
  • 4e7516f8f Qt: Update machine translations
  • 2434029f8 Qt: Add new strings to non-machine translations
  • d7fce2d18 FullscreenUI: Add Waves background shader
  • 4e072ef9c FullscreenUI: Subtle visual improvements
  • 66888ba0d FullscreenUI: Fix sort column being disabled
  • 4df2fcc5a GPU/SW: Fix source desync in masked VRAM writes
  • 46307c77b GPU/SW: Fix signed overflow in attribute steppers
  • 0ed7e2815 GPU/SW: Add drawing and copy tests
  • 65c554c44 GPU/SW: Read 8-bit palette indices as bytes
  • 5542670f4 GPU/SW: Use shuffle for 4-bit palette lookups
  • 96ecf13a0 GPU/SW: Load sequential texels for sprites
  • 84dcb202d GPU/SW: Remove redundant clip test for triangle spans
  • dd5370f91 GPU/SW: Simplify colour unpacking and packing
  • 3054fb0f0 GPU/SW: Only copy VRAM in reverse when necessary
  • 7883f38c7 GPU/SW: Remove some redundant vector operations
  • c94a799f5 GPU/SW: Force inline vector constructors
  • d177f7adb Common: Fix AVX2 vector helpers
  • 22c78a107 GPU/SW: Enable AVX2 rasterizer on x64
  • 8e7c28987 Timers: Fix sysclk IRQs being delayed by gate changes
  • 4a0746d9f Timers: Fix target being reached when counter overflows
  • 98de9b4a2 Timers: Fix off-by-one when scheduling sysclk event
  • 2a5f94235 Timers: Account for sysclk/8 prescaler when scheduling IRQ
  • c71dddf6f Timers: Account for overclock remainder when scheduling IRQ
  • ca776d82b Timers: Only reach zero target when counter is zero
  • 008cd2ac2 Timers: Fix IRQ time for GPU-clocked timers past the target
  • 844961117 Timers: Reschedule CRTC after writing to GPU-clocked timers
  • abd5fc8e9 Timers: Clear use_external_clock on reset
  • 5b536b769 TimingEvents: Add InvokeEarlyNoReschedule()
  • 436c1e61e Timers: Avoid updating counters when reading registers
  • 191839abd Fix regression
  • b9d4fc917 Timers: Skip IRQ check when not reaching target or overflowing
  • c28b5471f GPU: Use InvokeEarlyNoReschedule() for CRTC event
  • 652117a8a GPU: Use InvokeEarlyNoReschedule() for command event
  • fe8098070 SPU: Use InvokeEarlyNoReschedule() for transfer event
  • a5f55a54b Pad: Use InvokeEarlyNoReschedule() for transfer event
  • 17ce9ad12 Timers: Only toggle IRQ request once in one-shot mode
  • c01210721 Timers: Toggle IRQ request for both target and overflow in one update
  • adcc4c36e Timers: Hold sysclk counters after writes and target resets
  • 027038662 Timers: Synchronize GPU before reading gated sysclk timers
  • 2819a8cf1 GPU: Always activate CRTC event
  • aaeda4883 GPU: Rename UpdateCRTCTickEvent() to RescheduleCRTC()
  • f83e4f6c9 GPU: Reset IRQ and CLUT state correctly
  • 99d5d84ad GPU: Correct polyline parsing and bound draw commands
  • a51832674 GPU: Correct fine cropping coordinates and bounds
  • ac35d7ad8 GPU: Refresh display dimensions when changing deinterlacing
  • 050d972a7 GPU: Keep lightgun coordinates in the correct clock domain
  • 719c3a4e4 GPU: Handle wrapped readback dumps and trace save failures
  • a9c01a628 GPU: Implement v2 register queries and status bits
  • b9b836640 GPU: Implement v2 textured rectangle flips
  • 10ecadbfd CPU/Recompiler: Use native divide semantics on ARM
  • 20c0b43b4 CPU/Recompiler: Allow 12-bit compare immediates on ARM64
  • 6de56e0ef CPU/Recompiler: Use tbz/tbnz for bltz/bgez on ARM64
  • a2b812c2f CPU/Recompiler: Use sub for negative add immediates on ARM
  • f7a237e49 CPU/Recompiler: Avoid constant load for const - reg on ARM
  • b975fc353 CPU/Recompiler: Swap operands for slt with constant rs on ARM
  • e32059789 CPU/Recompiler: Shorten lwl/lwr/swl/swr shift setup on ARM
  • 9f171d3c6 CPU/Recompiler: Load downcount and pending ticks as a pair on ARM64
  • 383fa0235 CPU/Recompiler: Use rotated/inverted immediates for ARM32 constants
  • bad45f0a5 CPU/Recompiler: Use ubfx for low-bit andi masks on ARM32
  • 6c7d834ea FullscreenUI: Make background shader accent dynamic
  • 4d3028038 FullscreenUI: Improve footer styling
  • 7adc495e3 FullscreenUI: Display achievements points in landing window
  • 35b326038 FullscreenUI: Ensure background load time is initialised
  • 1f1f2d461 Add @ANK-dev to UI Contributions (#3811)
  • bdf55357e Tests: Fix util-tests building
  • 4b3dafaaf Tests: Fix timers test failures and assertion on shutdown
  • 8cbf86cb6 SettingsInterface: Fix CopySection() breaking string lists
  • e89a23c54 FullscreenUI: Fix trails shader starting late
  • 1216a5171 ImGuiOverlays: Allow displaying resolution while paused
  • e9b997503 Settings: Shuffle some bitfields
  • 25477b188 ImGuiOverlays: Add frame number to OSD
  • d2c5c067f Qt: Work around Qt 6.12.0 spinbox text alignment bug
  • c89636873 SPU: Fix IRQ-enabled event scheduling with overclock active
  • d70811740 ImGuiManager: Don't try to upload an empty vertex/index buffer
  • 05650d942 SPU: Flush pending samples on off-voice register access with IRQs enabled
  • 670f0bb0c SPU: Sync pending samples on ENDX reads and manual RAM writes
  • a15efdc57 SPU: Don't run every sample while the IRQ flag is set
  • c893d47ba SPU: Predict the next sample that can trigger a RAM IRQ
  • e7d2bb44b D3D11/D3D12: Block until vblank on FIFO present
  • baa9c86af VideoPresenter: Drop frames that missed vblank with blocking vsync
  • 0a07f4d24 System: Lock throttler phase to vblank with blocking vsync
  • ccecbf451 VideoThread: Start idle frames half a refresh before vblank
  • 6613bf342 FullscreenUI: Fix heading font size not adjusting
  • 27669c027 GameList: Reduce padding in entry struct
  • 4627e28f7 dep/imgui: Update to 4be0b47ec
  • 9ed01fa11 dep/imgui: Add minimal bidirectional text support
  • 0d73ecc48 Host: Remove resource file functions
  • be81684b4 PostProcessing: Load built-in shaders by absolute path
  • 8a5b99b8b FullscreenUI: Simplify LoadTextureImage() path handling
  • ab15051cf Android: Update translation strings
  • 5f486f851 SPU: Write per-voice dumps from the caller
  • 1892b879c SPU: Fix interpolation product precision
  • 1ecd1aa2b SPU: Prime the interpolation window on key on
  • 075c8afca SPU: Decay below the sustain threshold
  • de332d542 SPU: Eliminate padding in Voice structure
  • 805aaf089 SPU: Model key-on timing and startup delay
  • 4a8158b44 SPU: Time the repeat address latch from key on
  • b8e5e9a57 SPU: Clear ENDX on the first sample of the key on delay
  • c0e283cd0 SPU: Remove per-voice last_volume
  • d84c1684b Qt: Allow value editing in memory editor inspector
  • 8f16f9325 Qt: Colour memory editor search box instead of dialog
  • fe18bfa3f D3D12Device: End render pass when submitting command list
  • dd642f155 D3D12Device: Begin render pass before applying dirty state
  • af211cb60 D3D12Device: Only restart render pass after submit if one was active
  • 0dc05598b D3D12Device: Unbind all render targets when one is destroyed
  • a78fc7009 D3D12Device: Don't end a closed render pass in EndPresent()
  • 37ae55b35 D3D12Device: Allow UAV writes in render passes with image RTs
  • 9c512d949 D3D12Device: Fix image RT bindings lost after command list submit
  • bf8824eb6 D3D12Device: Prepare textures on every SetTextureSampler() call
  • 3d7b934ca D3D12Device: Batch image RT UAV barriers before dispatch
  • 060537cb4 D3D12Device: Unbind texture buffers on destruction
  • 4eeecc16a D3D12Device: Fix sampler group cache going stale and never resetting
  • 425a816d8 D3D12Device: Fix topology tracking and RTV handling in mipmap generation
  • 703bcf414 D3D12Device: Fix download texture destination row offset applied twice
  • e2b59361e D3D12Device: Free RTV/DSV to the right heap on texture creation failure
  • a19c8e61b D3D12Device: Fix texture Map() bounds check and upload space reservation
  • 2abd25761 D3D12Device: Fix swap chain ResizeBuffers() error handling and flags
  • 17efd80c5 D3D12Device: Don't key pipeline cache on adapter LUID
  • b9cd91a1b D3D12Device: Increase persistent descriptor heap sizes
  • d0e7e070a D3D12Device: Require typed UAV loads for ROV support
  • 42e66acf6 D3D11Device: Unbind UAVs when switching back from ROV binding
  • 5c88e8137 GPU/HW: Deactivate ROV before blitting VRAM replacements
  • db3704a13 DMA: Mirror channel control at offset 0xC
  • cd490cfff DMA: Make DICR bit 6 read-only
  • 6cd02e175 Bus: Honour byte enables for 8/16-bit DMA block control writes
  • 3333953de Timers: Mode register bits 13-15 always read as zero
  • a89dc5501 Bus: Fix memory control register write masks
  • 5215e06df Pad/SIO: Mask unused mode bits and write-only control bits on read
  • 6ad37b16d Bus: Return both halves for 32-bit pad/SIO mode and baud reads
  • 125026a96 SPU: Store the unused registers at 1F801DBCh and 1F801E60h
  • 73101810e CPU: Check coprocessor enable for lwcN/swcN, store the next opcode
  • 6e0561bf3 CPU: Implement coprocessor branches
  • 37a11f004 Tests: Add register write and coprocessor tests
  • 2c7039e87 GPUDevice: Add DrawWithBarrier()
  • cd494cbc2 GPU/HW: Fix VRAM writes/copies with check_mask and fbfetch/ROV
  • d6c608d4c FullscreenUI: Fix transitions with prerotation
  • 734141f45 FullscreenUI: Fix shader backgrounds with prerotation
  • 932a2b87b FullscreenUI: Fix loading screen blur with prerotation
  • 109541968 ImGuiManager: Invalidate blur background on resize
  • 591f9fba2 CPU/Recompiler: Check events when linking truncated blocks
  • bf550e792 CPU/Recompiler: Cancel incoming load delay on a load to the same register
  • 146d8ee0c CMake: Add DISABLE_SIMD option
  • fdd792346 Common: Fix gsvector_nosimd.h issues
  • a2f8455b6 GPU/HW: Defer cover lookup until needed
  • 34bd6e055 Achievements: Save avatar URL in settings
  • 9766391b6 Swedish translation corrections (#3812)
  • 124a4b16f Android: Update translation strings
  • 1cb71acb0 Qt: Split common log window code into LogWindowBase
  • a6cb4240f Qt: Add separate TTY window
  • 9e759167a Qt: Add icons to Debug and Toolbar menus
  • 195be091d Qt: Add icons to log and TTY window menus
  • 1b3379dff Settings: Turn PGXP CPU Mode / Vertex Cache into an override
  • d2d8ce115 Regtest: Add save state option
  • 1d5fad391 Regtest: Add -setting option
  • 839e550b5 Image: Fix 16-bit to RGBA8 colour expansion
  • 604ea2c08 VulkanDevice: Enable GPU-assisted and sync validation with GPU validation option
  • 7531ac5b4 GPU/SW: Fix out-of-bounds read in interlaced 15-bit scanout
  • 429c75a15 CI: Include version number in installer
  • 7a984ce3a GPU: Add mid-frame scanout option
  • 185777561 GameDatabase: Add ForceMidFrameScanout
  • 0e3bcaf58 GameDB: Enable ForceMidFrameScanout for Dreams
  • 009d2eb46 GameDB: Golden Goal 98 apparently doesn't support analog
  • 9744816e8 Qt: Move modulation crop to debugging settings
  • b01a4163e GameList: Fix incorrect ps-exe hashes
  • a47084fea Android: Update translation strings
  • 48a1028f9 Data: Add simple-color-adjustments postfx shader
  • 7ea70e3f0 Qt: Add manual patch editing/deletion to patches tab
  • 3eec8e8ef Qt: Update gamesettings ini when cheats are renamed
  • 7b24b552f Qt: Support options in patches tab
  • 932ece54e Qt: Share code editor save/rename/remove logic between cheats and patches
  • d9386a2f8 Qt: Add setting overrides to patch code editor
  • e2ac79145 Qt: Update machine translations
  • 5832c10c2 CI: Add file filter checks to translation lint
  • b3d57a7f4 Qt: Fix a couple of style issues
  • c2b78c183 FullscreenUI: Add missing space in controller settings
  • 256b5ca44 CPU/CodeCache: Fix crash when cache is exhausted during compilation
  • 938c6d2a0 GameDatabase: Fix false positive PGXP warning
  • fbf93c3ae Update duckstation-qt_es.ts (#3813)
  • 611c96dec CPU/PGXP: Add logging of RTPS
  • b4a9a6b8f Tests: Update cheat metadata type
  • 15f023490 dep/cubeb: Reopen closed WASAPI stream on start instead of aborting
  • 0c58cca4e dep/cubeb: Apply deferred WASAPI device reconfigure on stream start
  • 958156f06 dep/cubeb: Keep WASAPI render loop alive when reconfigure fails
  • 4542c1b7b dep/cubeb: Fix WASAPI thread ready event leak on init failure
  • e34d2ed75 CPU/PGXP: Fix sign of precise values crossing the 16-bit boundary in shifts
  • e90b83bd3 CPU/PGXP: Track precision through GTE GPF/GPL
  • d7a74d201 CPU/PGXP: Fix ADD/SUB losing depth when the destination is a source
  • 560be2279 CPU/PGXP: Carry and wrap fractional values at the real halfword boundary
  • eb333a1fe CPU/PGXP: Use floor when splitting off the upper halfword
  • 299a3b167 CPU/PGXP: Use the native result for division by zero
  • d21600bd1 CPU/PGXP: Use the native result for SLT/SLTU/SLTI/SLTIU
  • 48f9b6ada CPU: Pass SLTIU source to PGXP before it is overwritten
  • 6eef7c84c CPU/PGXP: Mirror GTE halfword register extension in MTC2/LWC2
  • c90e55081 CPU/PGXP: Don't leave shifted-out bits in the upper half in right shifts
  • fa591af76 CPU/PGXP: Take the upper half sign from the precise value in right shifts
  • f86e41093 CPU/PGXP: Don't use invalid components in shifts
  • 8404d325a CPU/PGXP: Extract the upper half directly in right shifts of 16 or more
  • e67b8528b CPU/PGXP: Keep precision through OR/XOR with zero, prefer precise sources
  • 1648a292c CPU/PGXP: Keep precision through ANDI/ORI that don't change the lower half
  • 7c143e432 CPU/PGXP: Use double precision and only valid components in ADDI
  • d9880a923 Tests: Add PGXP CPU shift, bitwise and ADDI tests
  • de1cb7225 Cheats: Add override for ForcePGXPPreserveProjectionPrecision
  • 43268aa6e Controller: Restore 127 as the analog axis center
  • c6747677b Controller: Initialize analog axes to AXIS_CENTER
  • efc6ff524 Controller: Produce center for equal opposing half-axis inputs
  • 167c6e332 Misc: Fix gitattributes typo for vcxproj filters
  • 450bc5944 Qt: Add icon next to device indicator in bindings
  • 8db5d6207 Qt: Tweak bold group box headings
  • db0b5535d Qt: Fix stale mouse grab after recreating display widget
  • 1d508acef GPU/HW: Store reciprocal Z in PGXP depth buffer
  • 7200c8ce2 CPU/PGXP: Add option to normalize depth by GTE matrix scale
  • d51270723 GPU/HW: Bias PGXP depth towards the camera by draw order
  • 507e24952 Common: Add PackedOptional class
  • 796c4751b GameDatabase: Use PackedOptional for overrides
  • 113f297a0 PostProcessing: Fix crash loading ReShade shaders without a swap chain
  • d691f5ae2 Regtest: Split -setting key at the last slash
  • c71899031 GPU/HW: Accumulate PGXP depth across depth buffer clears
  • c5ffc4a97 Data: Add MC_SSAO.fx
  • 6caf8b2ed Android: Update translation strings
  • 85fe47af8 VulkanDevice: Wait for presents with VK_KHR_present_wait
  • 3551eef7f VideoPresenter: Split late present check out of ShouldPresentFrame()
  • 776316755 VideoPresenter: Probe for presentation backlog when gap baseline rises
  • 8d9f6e8bf Data: Update SDL game controller database
  • dd4a0eb77 GPU/HW: Track dirty depth rect to shrink depth merges/clears

v0.1-12083

release
Release notes · 14 files

Commits

  • 2781502e0 SPU: Streamline per-voice flag processing
  • 690ead7ee SPU: Vectorize Gaussian interpolation
  • 5a7a301a7 SPU: Consolidate capture buffer writes
  • a24350c47 SPU: Decode ADPCM nibbles in pairs
  • a4904189c VulkanDevice: Use timeline semaphores when available
  • ed6720bbf Tests: Fix core-tests building on Windows
  • 025ea24fc GPU/HW: Fix typo in CompilePipelines()
  • 88ccab2a2 Achievements: Fix some options potentially not live-updating
  • 16452a048 Achievements: Check for login request in LoadStateFromBuffer()
  • 3c141418a FullscreenUI: Fix extra uneven height in achievement notifications
  • 0910d4edc FullscreenUI: Reduce text size of small-mode category badges
  • 96268ab66 Qt: Remove empty widget text
  • 390c878f7 GameDB: Persona localizedName
  • e26fa6091 Update Italian translation (#3798)
  • 563c35513 TaskQueue: Add GetOutstandingTasks() and ExecuteOneTask()
  • efecb78db Threading: Add GetProcessorCount()
  • 0d2e66235 Core: Make TaskQueue thread count dynamic
  • 60b06c0e2 ObjectArchive: Use binary keys instead of strings
  • 3151c5256 ObjectArchive: Synchronize access internally
  • 79371c47a HTTPCache: Use object archive synchronization
  • 5420d699e GPUDevice: Use ObjectArchive for shader cache
  • 7951eba8a GPUDevice: Support looking up cached shaders and opaque keys
  • f541abb11 GPUDevice: Add LoadPipeline() for supported backends
  • 5ebeff9c2 GPU/HW: Use UIDs for shader generation
  • 7c239271f GPU/HW: Use UIDs as shader cache keys
  • 94e5f08f1 GPU/HW: Use multi-threaded shader compilation
  • 74a743a5e GPU/HW: Use multi-threaded pipeline compilation
  • 6fe06b99e VideoThread: Preserve command queue empty slot
  • 7c173d914 VideoThread: Enforce command producer ownership
  • 67d594312 VideoThread: Keep successful software fallback
  • e0519a899 VideoThread: Use video-owned fullscreen settings
  • 7131d9144 VideoThread: Destroy inline reconfigure commands
  • c54f16ae5 VideoThread: Snapshot fullscreen state for resize
  • 0cad5f505 VideoThread: Dispatch thread toggle failures safely
  • 8c6ff3bfc VideoThread: Propagate thread startup failure
  • b5f0fb9c3 FullscreenUI: Tweak separator style
  • c81a747ff Qt: Add multi-instruction selection to debugger
  • 5cc77ac18 Qt: Persist debugger window state
  • 9c335d9e0 Qt: Add icons to context menu
  • 0874ed65d Qt: Fix empty debugger toolbar window title
  • 5b056fc8d Qt: Fix icon missing on newly-added excluded paths
  • 024face27 Qt: Add context menu to game list exclusion list
  • 28ea031c4 GPU: Add Disable Upscaled Direct Textures option
  • 63d72ac15 GameDB: DisableUpscaledDirectTextures for Fear Effect
  • d7036f347 Qt: Persist use-serial-file-names in cover downloader
  • 6ef27141f MSBuild: Force SHA256 source file hashes
  • ef86bf11c InputManager: Add hotkey flag for UI-activatable
  • 396dae923 InputManager: Release cancelled hold bindings
  • 3d1646517 InputManager: Clear bindings when input is lost
  • 0ccc553df InputManager: Fix effect sync device matching
  • 3af2d36d6 ImGuiManager: Track text input separately
  • 500599143 InputManager: Type button transitions
  • e0e692023 FullscreenUI: Add 'Toggle Pause Menu' hotkey
  • 142bdc8c8 FullscreenUI: Make cheats/achievements/leadboards hotkeys toggles
  • b54fc14bc FullscreenUI: Synchronize pause menu toggle
  • 8051b4f0c PerformanceCounters: Ignore reset boundary sample
  • b7e20507b Qt: Remove unnecessary usage of QOverload (#3799)
  • 2f4724dd1 D3DCommon: Use once_flag for library loading
  • 7137ce2be Threading: Add lightweight Mutex/ConditionVariable wrappers
  • f46b6a834 Core: Use lock_guard for settings accessors
  • bbeac9cfe Core: Use Threading::Mutex for settings lock
  • 3bb2b0b1d CDROMAsyncReader: Use lightweight threading abstractions
  • 22072c934 Misc: Replace std::mutex with Threading::Mutex
  • 00d407c35 CDROMAsyncReader: Convert to namespace
  • dbe144407 GPU/HW: Fix missing mask-or application on texture fallback
  • ac0e3a5c8 GPU/HW: Add 'Filter Framebuffer Uploads' advanced option
  • aaa8a68df GameDB: Enable background texture filtering on more games
  • 04f821c04 Qt: Show inherited multi-sampling setting in game properties (#3800)
  • 045b83b2d GPU/HW: Add additional texture filters
  • a90f008cd GameDB: Fix typo in DisableUpscaledDirectTextures
  • 12a1bf9f0 GameDB: Add mouse for Panekit - Infinitive Crafting Toy Case
  • 742d2d11b CDROMAsyncReader: Use persistent thread
  • c309ca331 CDROM: Fix possible incorrect restart track when playing
  • 1b81e5813 FullscreenUI: Avoid double transition on achievements/leaderboards
  • 865ed04ef FullscreenUI: Fix toggling between windows with hotkeys
  • 3496b6206 FullscreenUI: Fix bullet separator at end of postfx settings
  • 61f954854 FullscreenUI: Use popup list for texture filter options
  • 24ecfdd94 Misc: Use C++23 elifdef/elifndef
  • d01e2ca61 System: Obey optimal frame pacing setting on Linux
  • 187ad8f00 GPUDevice: Remove multiple sources of truth for shader dump directory
  • bce5e3ddc StringUtil: Fix buffer overflow in BytePatternSearch()
  • 73b571c4b Timer: Use pause intrinsics when spin-sleeping
  • 3622df217 Common: Use __yield() for CPU-pause on ARM
  • 228745147 PageFaultHandler: Fix unused variable warning
  • fc8675c95 dep/vixl: Fix deprecated-literal-operator warning
  • 60a798cdc StringUtil: Return first match in BytePatternSearch()
  • 42cf88c4b dep/googletest: Update to v1.18.0
  • 831305b5d Threading: Detect recursive locks in debug builds
  • 46532474a Error: Add wrappers for translating messages without object
  • 1067ebe9e HTTPDownloader: Use string view and move semantics for callback error
  • 46fca8f0d HTTPDownloader: Ensure all callbacks invoke through PollEvents()
  • 31a610358 Settings: Turn debug window visiblity into a bitmask
  • 5684d1b00 Achievements: Replace recursive mutex with lightweight mutex
  • 8f99b60ef Qt: Add missing help text for savetitle/localizedtitle
  • 4cd6e30de FullscreenUI: Replace recursive_mutex with lightweight mutex
  • 108e721f5 FullscreenUI: Allow verification of runtime-populated images
  • 4224e9aab Updater: Directly wait for parent to exit instead of using shell
  • 2c9866ef9 Qt: Dynamically adjust log window colours to theme
  • 3cb7b0650 Disable auto analog in Trap Gunner; add missing traits for Spyro x Sparx (#3801)
  • 473025995 Tests: Fix directory not cleaned up
  • 8148a8196 Threading: Add SharedMutex lightweight wrapper
  • f0fb6f7e7 Achievements: Avoid deadlock with leaderboard trackers disabled
  • 7326f90c9 Achievements: Avoid lock when settings unchanged
  • 31d44058a Achievements: Use a second mutex for notification state
  • 86b333d18 Qt: Fix per-game achievement notification duration sliders
  • bbd84255e Qt: Simplify output latency widget updates
  • cd5066662 Qt: Bind audio output volume through regular settings updates
  • 288eee1d2 Update duckstation-qt_es.ts (#3802)
  • 8e4dbf153 Qt: Fix latency description not updating
  • 0d8dda34d Spanish (Spain) translation update 2026/09/24 (#3803)
  • 62299a509 LightgunController: Create base class for lightgun controllers
  • e68536dcd NeGcon: Create common base class for NeGcon controllers
  • d9cb895dd Controller: Unify some of the translation strings
  • 73b5a2416 Threading: Add SharedLockGuard helper
  • 687178a00 InputManager: Internalise private functions
  • ee8b45a83 InputManager: Use atomics for rawinput/pointer count
  • 58efbb8c8 InputManager: Use atomics for host pointer position
  • 0ae22c1a9 ImGuiManager: Read pointer state directly from InputManager
  • 501d3a989 InputManager: Reload input bindings after source hotplug
  • d76435ca7 InputManager: Extract internal state to private header
  • eed22aa28 InputManager: Use a shared mutex for synchronization
  • 7a8e8a077 InputManager: Use SmallString for binding conversions
  • aa77ed54d Qt: Move DS5 player LED setting into LED dialog
  • 64b1e2b46 SDLInputSource: Simplify polling
  • 59e2f1da2 SDLInputSource: Poll immediately after initializing
  • 7495b7624 SDLInputSource: Rely on reload to enable accelerometer
  • edd41dff1 SDLInputSource: Use persistent identifiers when mapping
  • d04078319 GameList: Fix possible null string-view construction
  • bbebc317a Common: Use second thread for assertion dialogs
  • 608a0c3c2 Common: Use single isb for ARM PauseCPU()
  • 4c721f375 VideoThread: Use dynamic spin loop on ARM
  • 85c4acea8 Timer: Use global initializer for timer frequency on Windows
  • 202c7d839 Qt: Add pill-label css class
  • 8293e84b8 Qt: Display bound devices in controller pages
  • 62e48451a Win32RawInputSource: Fix wrong OnInputDeviceConnected() call
  • a2aa7295e GameList: Use correct string_view constructor
  • 79fc5454d Common: Remove unnecessary include
  • f9e12bb1e Qt: Simplify mute setting callback
  • 56dbfea7f Qt: Fix doubled-up help description
  • f1359f0b4 Update duckstation-qt_es.ts (#3805)
  • f9ba75404 Atualização Português do Brasil (#3806)
  • a2edf2d0f Update Italian translation (#3807)
  • 0619481dc MetalDevice: Drop feedback loop path
  • dc4e77298 VulkanDevice: Fix incorrect hazard tracking in stream buffer
  • 5e54cade9 GPU/HW: Fix background replacements disappearing after TC toggled off
  • 10632b92e GPU/HW: Simplify pipeline layouts
  • 2ab88c6d9 ImGuiManager: Move blur constants into main UBO
  • 285916255 GPUDevice: Remove MultiTextureAndUBO pipeline layout
  • de1fd8c66 GPUDevice: Move UNIFORM_PUSH_CONSTANTS_SIZE into base class
  • 9fcff157a D3D12Device: Remove MAX_UNIFORM_BUFFER_SIZE
  • d901b2590 D3D12Device: Ensure all samplers are initialized in LookupSingle()
  • f3d284354 FullscreenUI: Add background image blurring for headers
  • c4b4496e9 FullscreenUI: Display subset icon as game icon in subset view
  • 616c41d49 ImGuiManager: Stash overlays in separate draw list when transition active
  • d78fd23db ImGuiManager: Avoid unsafe read of context pointer on core thread
  • 8a46ed8b7 Misc: Replace std::shared_mutex with Threading::SharedMutex
  • 60f7ffa2d GPU: Fix scanline sync before vertical_display_start
  • bfb23fb8c GPU: Improve CRTC function readability
  • 41c1fb10e Qt: Use posix_spawn for updater relaunch on Linux
  • a429876f5 Misc: Remove more unused include guards
  • 4091d2935 FullscreenUI: Fix change disc menu getting stuck in some scenarios
  • 2c1fba1cd FullscreenUI: Size loading screen text and progress separately
  • b3b2bbc75 FullscreenUI: Display progress for on-demand game list load
  • 2d8e5b68a MDEC: Don't clear output FIFO on new command
  • 8d42a0c02 FullscreenUI: Fix compiler warning
  • 003ff5a8d Qt: Update machine translations
  • 39a1e37be Qt: Update English translation catalog
  • 4d3dadd07 CDImageMemory: Read each sector in its native format
  • e68431fda CDImagePPF: Handle non-mode2 sectors
  • 3f037f268 CDImageCHD: Read out the correct sector size depending on mode
  • 8fa9ef539 FullscreenUI: Fix focus reset on escape in game list search
  • acad15618 Deps: Update to 20261001
  • 14c226762 Qt: Use AppRoot for translations
  • fd88101c8 VulkanDevice: Fix spec violation in ROV clear
  • 9d00d6b6e GPU/HW: Use correct format for ROV buffers
  • 4122fed9a INISettingsInterface: ClearSection() should not create an empty section
  • a304c0430 Update duckstation-qt_es.ts (#3808)
  • 898b6a3ca GameDB: Fix a bunch of incorrect release dates
  • baf6c425d System: Fix incorrect title being copied into save state header
  • 697599c47 CI: Use prefix path in cross appimage
  • e0668baab Achievements: Don't lock in prefetch callback
  • df8059758 Achievements: Don't try to fetch badges without cache
  • 6c1645fe5 Qt: Fix default value of HideCursorInFullscreen (#3809)
  • cbcbbe1eb GameDB: Disable auto-analog on Khamrai
  • 21b05557c Qt: Fix desktop environment conditions
  • 9cb25f7e9 Qt: Fix crash when desktop file check is skipped
  • cf71020c0 D3D11Device: Fix race when creating pipelines from worker threads
  • b3ab32212 OpenGLDevice: Pad push constant range to 16 bytes
  • 00e299795 OpenGLDevice: Request coherent persistent buffer mappings

v0.1-11894

release
Release notes · 14 files

Commits

  • 9287950af VideoPresenter: Fix prerotation handling with blur/transitions
  • b0f7c5c16 Update duckstation-qt_es.ts (#3792)
  • 20b626d41 MSBuild: Explicitly list plugins to copy
  • e05146d7a MSBuild: Track Qt translation outputs
  • 1e2ee51b1 MSBuild: Track Qt resource outputs
  • 8c7b74ca2 MSBuild: Fix Qt MOC dependency tracking
  • bf15b0df6 MSBuild: Generate Qt MOC files in parallel
  • 46364b24b MSBuild: Track QRC asset dependencies
  • 7652c0446 MSBuild: Generate Qt translations in parallel
  • 78cd1f248 MSBuild: Generate Qt UI headers in parallel
  • f34d2c475 Achievements: Add category badge to popup
  • f1d54ab74 Qt: Fix trailing slash being added to game directories
  • ec81e45b2 Settings: Disable gpu_force_video_timing in hardcore mode
  • 274143dfd CI: Update deps to 20260905
  • 9c91b9156 Common: Remove unused include
  • 7762f953c Build: Use C++23 across the board
  • 6f23cc25d System: Allow live-changing console region
  • 31948bcb5 Misc: Use static operator()
  • 084bc6fb3 Achievements: Fix padding in notifications/lists
  • 1cafea4e5 Qt: Slight improvement to track summary list
  • b91b9b247 Qt: Add RA Game ID to game properties
  • c05866d2b Qt: Add styling to select disc dialog
  • ebc51ff0c System: Don't copy non-sensitive user preferences to game settings
  • f1f8ee797 System: Disable post-processing when resetting settings
  • 75448944d dep/rcheevos: Bump to e871ef5
  • d9182a04d Qt: Add threads view to debugger
  • 118bb6616 Qt: Add call stack to debugger
  • 4a0cdd2dc Qt: Link stack view to memory view
  • 5100c5164 Qt: Use QPointer in DebuggerWindow
  • 3bc1e8cdf SettingsInterface: Create type aliases for string lists
  • 3eee1e61e INISettingsInterface: Don't set dirty if unchanged in SetKeyValueList()
  • 92fb83b6a Qt: Save debugger breakpoints to inis
  • f5ffb6b51 System: Fix unused function warning
  • 5aeeb72e6 VideoThread: Fix rare crash if device initialization fails
  • 0d33bd177 Settings: Ensure pcdrv_root is a native path
  • 3f44ac2e9 Deps: Bump to 20260906
  • f39feb9d8 Image: Load libpng/libjpeg/libwebp dynamically
  • fa77cd485 CMake: Don't unnecessarily bundle
  • c359ccfcb DynamicLibrary: Log loaded library paths on Linux
  • 2179487e5 SDLInputSource: Remove unused variable
  • fa935c296 SQLiteHelpers: Format file
  • 38751bdf7 SDLInputSource: Load SDL dynamically
  • 025872c52 Qt: Warn when LD_LIBRARY_PATH is overridden on Linux
  • b42b6981e Qt: Create desktop file before setup wizard on Linux
  • f1f6b0ee7 ImGuiManager: Load FreeType/plutosvg dynamically
  • 3ccc0c45f Util: Centralize dynlib loading
  • 17a721c8f ZipHelpers: Load libzip on-demand
  • 1f065b5ea CMake: Make bundle building on MacOS optional
  • d9071e49b CocoaTools: Return nullopt if not running from bundle
  • 69fe55034 DynamicLibrary: Drop MacOS Frameworks hack
  • 0fbd997d4 Misc: Remove atexit() usage
  • 0206d926f SDLInputSource: Centralize SDL subsystem loading
  • 7d169057d README: Update feature list
  • e05b9b9f9 FullscreenUI: Fix 'Use Global Setting' showing in global postfx settings
  • 3f5dca5ce FullscreenUI: Use expand icon for dropdowns
  • 2cb1bf7b9 GPUDevice: Add SingleTextureAndUBOAndPushConstants layout
  • 91c5a79b2 FullscreenUI: Use SingleTextureAndUBOAndPushConstants for blur apply
  • 4973361c5 GameList: Add AudioCD type
  • 00989b7ec Qt: Make game properties inaccessible for PSF/Audio CDs
  • 0cb515fe4 GameList: Reorder list entry types
  • 1d07ae225 Update duckstation-qt_es.ts (#3794)
  • 73c226615 DynLibs: Fix libjpeg load regression on Windows
  • 35d1f0629 Atualização Português do Brasil (#3793)
  • 443ef825b Qt: Merge import buttons in the memory card editor (#3795)
  • cbe7951be CPU/CodeCache: Remove thread_local recursive guard
  • 1ab327d6d GPUDevice: Drop SingleTextureAndUBOAndPushConstants
  • 3b30876e9 l10n: update Swedish Qt translation (#3796)
  • c66b2694d DynLibs: Fix libwebp loading on Windows

v0.1-11826

release
Release notes · 14 files

Commits

  • 6336c532a Cheats: Fix importing semi-broken files
  • c475fd699 Qt: Fix some machine translation errors
  • e8473a1e0 Qt: Fix incorrect highlight in memory viewer
  • 5e1aee1e2 Qt: Add missing icons to cheat import popup
  • 856905864 FullscreenUI: Add on-screen keyboard
  • ec212bfd1 FullscreenUI: Fix initial input not activating on some popup dialogs
  • 3c4f2bf25 FullscreenUI: Add missing PS icon for D-Pad
  • 527b402c6 ImGuiManager: Remove Host::BeginTextInput()
  • 943db2376 Achivements: Add rich presence monitor debug setting
  • e7157e366 FullscreenUI: Increase padding on value backgrounds
  • 24deeeef8 System: Fix initial capture mode on start
  • 56226045d FullscreenUI: Render loading screen with separate draw list
  • b984cb7ac System: Improve game setting reload workflow
  • 88df5c983 System: Persist settings interface objects
  • 8013df929 Qt: Fix window title when editing game specific controller config
  • 49d39aad7 PageFaultHandler: Set SA_NODEFER on MacOS as well
  • 4cf3404a1 PageFaultHandler: Determine write flag from ESR on MacOS ARM64
  • 7304bfe25 CPU: Ensure RAM code pages are invalidated on core thread
  • 83a03fe95 CPU/CodeCache: Assert that handlers execute on core thread
  • b0c0a8ab7 PageFaultHandler: Remove the exception handler mutex
  • f4a828303 FullscreenUI: Fix compiler warning
  • 1c3948c97 Qt: Update machine translations
  • 400c269b4 GameDB: Sentou Kokka - Air Land Battle
  • d8d8a0816 CDROM: Reduce pause-while-paused delay
  • eb938ce10 dep/rcheevos: Bump to f1417fb
  • d954b7a3d ImGuiOverlays: Clear list on save state selector close
  • b25e2358b GPUDevice: Don't immediately trim textures queued in same frame
  • 0bf64996c ImGuiOverlays: Add animation to save state selector
  • 25783d844 ImGuiOverlays: Close save state selector on device switch
  • 8de6b0ac7 GameDB: Add HASH for Beyond the Beyond (#3782)
  • 48719b86b Bus: Fix CPE parsing when dev logging is disabled
  • 96e0c4d38 LRUCache: Fix m_manual_evict not respected when adding
  • 824a1072e LRUCache: Add custom deleter override
  • 0b28c198f FullscreenUI: Remove shared_ptr usage
  • 5422093cd Misc: Use relative time when displaying timestamps
  • a444b1265 GameDB: Add hashes for multiple games (#3784)
  • 5f3db8ed0 Qt: Improve Italian translation (#3783)
  • 12e575260 dep/rcheevos: Replace usage of sscanf() in rc_json_get_datetime()
  • 8bc6dc8d4 Qt: Update Italian translation again (#3785)
  • 7940507f0 Achievements: Use title format in submit time tooltip
  • ad2a8a637 System: Ensure achievements game is identified before loading state
  • c992e1c6b Atualização Português do Brasil (#3787)
  • fc741c826 GPU/TextureCache: Fix CPU thread read on GPU thread
  • 889a0fd2d GPU/TextureCache: Fix last_vram_write and num_splits not being serialized
  • ee211591b GPU/TextureCache: Limit the amount of uploads saved to state
  • 8e8e13de3 System: Reserve state memory for texture cache when enabled
  • e2823b429 GameDB: Felony 11-79/Runabout
  • 535154dcb MediaCapture: Show file size in OSD
  • 9d05a8756 Host: Fix broken relative time plurals
  • 3f9453fda Host: Merge FullscreenUI relative time variant with Host
  • 392e19b2a Qt: Add translation update and cleanup scripts
  • 764a06bc2 CI: Ensure translations are cleaned on pull request
  • f40cd5155 dep/rcheevos: Add rc_client_set_unofficial_achievement_unlock_state()
  • 4beec807d SQLiteHelpers: Add BindInt64()/ColumnInt64()
  • a679377ce FullscreenUI: Permit empty footer array component
  • 2743bb25e Achievements: Track unlocks of unofficial achievements locally
  • 240b19932 PageFaultHandler: Read ESR on Linux ARM64 as well
  • 06e6d4c2c Data: Update SDL game controller database
  • 614faf7d3 Qt: Clarify RetroAchievements login message
  • 04187ba0c Qt: Use variadic arg() instead of chaining multiple invocations
  • 939918806 Qt: Group toolbar-related menu items into a submenu (#3789)
  • 6f7fc33fe Qt: Update machine translations
  • fe899efd1 Update duckstation-qt_es.ts (#3786)
  • 78ff46ad1 Tests: Fix util-tests building
  • bf5a6162d MemoryCardImage: Replace full-width characters with ASCII
  • c4e99c4ae CDImageMDS: Fix games not detecting due to empty path
  • dbf928ff6 FullscreenUI: Fix inverted parameters
  • c776dee9e CDImage: Replace filename identifier with path
  • aea63ce41 Spanish (Spain) translation update 2026/08/25 (#3790)
  • a736f4492 Update Italian translation (#3791)
  • f18017eeb Qt: Fix localised disc regions in game list
  • f5e22bc71 FullscreenUI: Fix cheats menu hotkey in batch mode
  • 88e4ca533 Qt: Enable verification for unscanned files
  • fe2306b1f ImGuiManager: Tweak OSD fade in time

v0.1-11752

release
Release notes · 14 files

Commits

  • 381ac7d1e MediaCapture: Fix incorrect samples on buffer wrap-around
  • b3d594a9a MediaCapture: Remove Flush() method
  • 4f72f4034 MediaCapture: Fix possible corruption in audio-only capture
  • 049437e42 MediaCapture: Resample audio when encoder doesn't support 44.1KHz
  • 8b9aaf787 MediaCapture: Display OSD warning when resampling
  • d33d3b82c Qt: Rework media capture menu
  • 6e0fb1e14 FullscreenUI: Add InputTextWithSuffix()
  • e2e4bae61 Settings: Ensure overlays directory exists in user resources
  • 56fa9dc61 Qt: Add refresh button to border overlay list
  • 12f012caa Spanish (Spain) translation update 2026/07/27 (#3777)
  • dc75335a7 Scripts: Translation tools experiments
  • 551aaa439 RegTest: Fix compile error
  • 8747aa183 Atualização Português do Brasil (#3778)
  • 4a04d3143 SPU: Fix volume sweep termination conditions
  • f6c4fe987 Achievements: Rename softcore to casual (#3779)
  • 2246697be BIOS: Add version information and filenames to list
  • 145474389 Qt: Allow empty recommended value in settings help
  • 30d351e4e Qt: Add CollapsibleWidget
  • 8dbc47606 Qt: Add BIOS Installer and improve BIOS setup page
  • 351778e44 Qt: Update machine translations
  • 406f325b2 Qt: Fix BIOS summary not updating on language change
  • 9c7c23f48 Qt: Fix main window language not updating after setup wizard
  • 57b952ab2 Timers: Improve emulation accuracy
  • 7c93a61ee Qt: Further simplify BIOS setup wizard page
  • 07401690b Qt: Fix crash opening game settings
  • 202923da5 Qt: Correct some clearly awful translations
  • 7111f4c12 Update duckstation-qt_es.ts (#3780)
  • b5a990bbd MemoryCard: Use constants for address and offset mask
  • c42082c4b StateWrapper: Avoid heap allocation in FIFOQueue read
  • f3d0e84b0 StateWrapper: Avoid possible integer overflow on 32-bit systems
  • 865fd9e57 StateWrapper: Save contiguous FIFOQueue bytes in one memcpy()
  • 97400d2d0 StateWrapper: Clamp enum values to max
  • b147f1ffd FIFOQueue: Zero out head/tail when size reaches zero
  • e95e5a0d2 FullscreenUI: Right-align achievement type badges
  • 18147a175 GPUBackend: Fix possible unflushed draws with runahead enabled
  • 4d700e468 MDEC: Ensure direct FIFO writes don't overflow
  • 26fa2ee4a MetalDevice: Fix a few leaky object retains
  • c07bf47d6 CDImageCue: Validate bits-per-sample for wave files
  • ecbe3c3b7 MemoryCardImage: Don't over-enumerate directory frames
  • 76f01d8c9 Misc: Fix under-allocation in sjis2utf8()
  • d6d8a7be1 CDImageCue: Fix implicit truncation warning
  • e86af51c8 Deps: Update bundled ffmpeg headers to 9.0
  • 6d0feff2f Deps: Update to 20260805
  • 3fed119df MediaCapture: Default to H264 on all platforms
  • 12a4a2648 Util: Avoid intermediate memory allocation in Shift-JIS conversion
  • 8a2c05ce5 Image: Avoid integer overflow for dimensions
  • 99fc655fa Updater: Fix possible path traversal during preprocessing
  • ebd090340 Updater: Fix possible infinite loop
  • 1fbfbb57d System: Fix implicit 32-bit truncation of screenshot size
  • 2c8e998da Spanish (Spain) editing pass - 2026/08/05 (#3781)
  • 6e242f5cb Bus: Flush line buffer after 512 characters
  • ca5cc7374 GPU: Add missing serialization of polyline buffer
  • f92b1a81d GPU: Add some simple checks to the polyline buffer
  • cd5e48af9 StateWrapper: Add max size checks to vector/string data
  • 2688a1dfc Achievements: Fix possible read past end of memory in callback
  • e48b3e302 Cheats: Fix possible OOB reads in malformed instructions
  • d3ff0b364 PSFLoader: Add missing header size checks when loading
  • a8a098a0a Common: Valid BCD functions should return boolean
  • b9cf3bbf0 CDImagePBP: Add missing validation of BCD digits
  • 467d0971b CDImagePBP: Check SFO index table count before reading
  • e0734381a CDImageMDS: Fix a bunch of possible buffer overreads
  • 6651f4d19 ISOReader: Fix possible integer overflow in GetSizeInSectors()
  • f1029b2df AnimatedImage: Fix possible integer overflow of dimensions
  • f11b43227 System: Add option to install BIOS when missing
  • 8778034bf RegTest: Fix compiling again
  • e175c8422 Bus: Pack state in struct
  • 5245a58b0 Settings: Fix invalid memory card values after install
  • 213c5b450 VideoPresenter: Use transfer pitch for screenshots
  • b3b57a2a0 VulkanDevice: Bind initial compute pipelines correctly
  • bbac943b5 VulkanDevice: Expose shared UBO binding to compute shaders
  • fc3e117f8 VulkanDevice: Synchronize compute image accesses
  • 4b5edbb85 VulkanDevice: Preserve mapped texture upload pitch
  • 6584adde9 VulkanDevice: Fix download buffer barrier ranges
  • 037ee47f7 VulkanDevice: Validate imported host buffer memory
  • 668f39fab VulkanDevice: Wait for presentation before swapchain teardown
  • 846236538 VulkanDevice: Address texture array subresources
  • 5f40f0ac1 VulkanDevice: Select advertised surface format pairs
  • 40e178787 VulkanDevice: Fix legacy render pass attachments
  • d1720c040 VulkanDevice: Respect fixed surface extents
  • a8de757b9 VulkanDevice: Store compute specialization values
  • 7b690ec1f VulkanDevice: Reset descriptor builder storage
  • 69c5051a8 D3D12Device: Restore state after mipmap rendering
  • a8c9324f4 D3D12Device: Transition cleared compute targets to UAV
  • 6e2f06a55 D3D12Device: Bound persistent descriptor allocation
  • 227389010 D3D12Device: Create texture arrays with all layers
  • b5f821bf4 D3D12Device: Transition all uploaded subresources
  • 402f9207f D3D12Device: Set render-pass clear formats
  • a4a03c476 D3D12Device: Assert alignment of download texture footprints
  • 685cf83c8 D3D12Device: Order dependent compute UAV accesses
  • 7b1596120 D3D12Device: Fix incorrect push constant root parameter index
  • 41ee40215 D3D12Device: Track readback source usage
  • 48a1a06f5 Qt: Don't try to load HTTP URLs as animated images in game list
  • 2f9c58762 FullscreenUI: Fix shared memory card selection
  • 4431915b4 FullscreenUI: Expose multitap memory cards
  • 6f704d405 FullscreenUI: Fix shared card name not disabling if unused
  • ee21478ad GPU/HW: Don't miss updating read texture for recursive draws
  • f7797b57e Controller: Add 'Disable Simultaneous Opposing Cardinal Directions' option
  • 0697597c5 Controller: Make mandatory functions pure virtual
  • d92fe3dac Data: Move all PromptFont glyphs to unallocated range
  • f04e08b24 GDBServer: Fix stop reply acknowledgements
  • 1a9379bd6 GDBServer: Support continue addresses
  • a36b75716 GDBServer: Support single-step addresses
  • c7324e333 GDBServer: Preserve unchanged resume state
  • 05166d1a7 GDBServer: Track the last stop signal
  • 3885778a2 GDBServer: Reply to invalid command arguments
  • aea374641 GDBServer: Validate complete packet fields
  • 4e0940500 GDBServer: Apply register writes atomically
  • 7c279dc96 GDBServer: Invalidate code after memory writes
  • 8d7046a89 GDBServer: Bound remote packet sizes
  • 60a4ec363 GDBServer: Queue complete protocol packets
  • 54d074fb6 GDBServer: Retransmit rejected replies
  • cba85882a GDBServer: Reject oversized incoming packets
  • d176e31aa GDBServer: Support signal resume packets
  • fe32554cc GDBServer: Restore run state after disconnect
  • c2418520e GDBServer: Notify host when first/last client connects/disconnects
  • 0a00cbc3c GDBServer: Send invalid instead of zero values for extra registers
  • ac6d89919 GDBServer: Disable nagle buffering on connect
  • 71c88506e GDBServer: Track breakpoint ownership
  • e3bea1978 GDBServer: Expand watchpoint ranges
  • b147ed63d CPU: Enumerate actions for callback breakpoints
  • 86360211b GDBServer: Report watchpoint stop details
  • fa5e11116 GDBServer: Use indexing instead of range-based for
  • 30fa5b4c4 Qt: Rename background controller poll to idle update
  • c7f282f18 Core: Use multiplexer to idle sleep for GDB server
  • 3bb39f4e3 ELFFile: Skip embedded PS-X EXE header segments
  • 2cf108618 GDBServer: Fix unused capture warning
  • cf2495759 Qt: Implement mouse capture using CoreGraphics
  • e2b78d4ca Qt: Tie relative mouse state to the active window
  • 8c1a2022e GDBServer: Expose target memory map and registers
  • c8abcf4b2 GDBServer: Expose GTE registers
  • 8a96948a8 GPUDevice: Use same buffer sizes across backends
  • 89fb3ad33 DMA: Hardwire reverse direction for OTC
  • d59fcfb9d ImGuiManager: Support rendering Hebrew text
  • 8ec85e305 Qt: Update machine translations
  • 232c9ad9f Achievements: Make password login asynchronous
  • 2c3261209 Qt: Simplify logout callback
  • 9f9009d64 Achievements: Ensure callbacks run on core thread for RAIntegration
  • 04f4f1ba2 Achievements: Respond to RAIntegration reset request
  • 1f925f86e Misc: Add a couple of missing fmt/format.h includes
  • b2f9c8fba Misc: Fix deprecated implicit conversion of fstring->string_view
  • c130fc12c dep/fmt: Update to v12.2.0
  • 5ee1d2569 GameDB: Disable PGXP/WS in Vanark
  • 5fd366809 Achievements: Don't double-free login callback on request failure

v0.1-11609

release
Release notes · 14 files

Commits

  • 9c79341cf CueParser: Handle rarely-used commands
  • b89e1bfeb CDImage: Support reading non-mode2/raw sectors
  • 94f11f9ba CDImage: Rewrite memory image (preloading)
  • 2880f88d8 MMPX Enhanced/Advanced clamp-to-transparent out-of-bounds mapping (#3774)
  • 31ab18b25 SPU: Wraparound is unlikely in ReadADPCMBlock()
  • 2cdf99d8a MediaCapture: Improve MF setup robustness
  • f383c3fa1 MediaCapture: Remove AV1/VP9 options from MF list
  • e04d89065 MediaCapture: Improve ffmpeg hardware encoding
  • 8612996ea MediaCapture: Drop ffmpeg pre-7.x fallback
  • 0275d6df9 MediaCapture: Clear state before deleting output file
  • d4844036c Qt: Capture dialog improvements
  • 35bcff152 Achievements: Animate unlock progress bar
  • 31c682943 FullscreenUI: Fix another debug assertion in single-threaded mode
  • 8a98ed820 FullscreenUI: Relax condition for closing immediately on resume
  • a421b5b11 FullscreenUI: Add 'None' transition effect
  • ad7519d72 FullscreenUI: Add queued texture recyling
  • 8a1dbb169 CDROM: Refactor invalid command handling
  • f8c9301f4 MSBuild: Remove non-existant file
  • e39033c44 Qt: Remove unused scripts
  • 9c35fdc94 MMPX :fix a transparent pixel bug & Adjusted floating-point tolerance (#3776)
  • 39fe70c84 CI: Bump actions/checkout to v7 (#3775)
  • b42e1c9f2 System: Slightly reduce memory save state struct size
  • 09467d50e Qt: Add icon extraction to memory card editor
  • 4730d795b Qt: Add icons to memory card editor buttons
  • 4069271eb Qt: Make SetWindowRoundedCornerState() take an optional boolean
  • 5f9e7f69b Qt: Work around Qt fullscreen border bug
  • 42bf523e8 Data: Update SDL Game Controller DB
  • eb4b87cfa Achievements: Fix inverted condition for new game additions
  • a233ec1fb Qt: Fix deprecation warning

v0.1-11580

release
Release notes · 14 files

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 QtAsyncTaskWithProgressDialog

v0.1-11515

release
Release notes · 14 files

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: Fix saved geometry being lost in nogui mode
  • 92d3f8e6e Atualização Português do Brasil (#3760)
  • a9cc936ba Qt: Minor UI consistency fixes (#3761)
  • ffd9d40d6 Qt: Add Register button for achievements
  • fa1b4b748 CMake: Silence resource copy messages
  • f1e089374 System: Fix mute volume

v0.1-11443

release
Release notes · 14 files

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

release
Release notes · 14 files

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: Optimize SVGs
  • e4147da58 Qt: Optimize checkbox SVGs that were previously missed
  • f352619a9 Qt: Move ReadFileToByteArray() to QtUtils
  • 51457c22e Qt: Add SVGWidget
  • 099f8bdd2 Qt: Rename ThemeSVGIconEngine to SVGIconEngine
  • dddc09122 FullscreenUI: Fix double scaling of some UI elements
  • ad676f7e3 FullscreenUI: Preserve aspect ratio of SVG images
  • 8fe9077ca Qt: Store controller images in main data instead of qrc
  • de69bc496 FullscreenUI: Add images to controller settings
  • 5ad980b32 Qt: Fix incorrect icon path
  • 70ec9c491 SPU: show friendly reverb mode names in debug window
  • a3f4a086e SPU: increase volume display precision in debug window
  • ef7637413 SPU: Use display fractional volume for voices as well
  • 5a21a6c8d Host: Add icon to ConfirmMessageAsync()
  • 61b31b3e2 Update Azerbaijani Translation (#3745)
  • b429993e0 Qt: Move most recent migration to updater
  • 21c6ab582 Qt: Use SVGWidget for empty game list icon
  • 15bfa50ce Qt: Make SVGWidget respond to palette changes
  • c1165ab03 MediaCapture: Fix Media Foundation refusing to load
  • 00733714c CDImageCue: Remove unused variable
  • bbde5c661 CueParser: Switch to fmt for errors
  • e40105020 Qt: Preserve aspect ratio in SVGIconEngine
  • f93965b84 Qt: Handle icon state in SVGIconEngine
  • 11216ccd5 Qt: Tint non-coloured disabled icons in SVGIconEngine
  • 872d6092b Qt: Use SVGWidget for icon in debugging settings
  • 86b3c0e7d Qt: Fix missing monochrome in controller settings
  • e8938f063 Qt: Remove more unused icons

v0.1-11295

release
Release notes · 14 files

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::Read()
  • 687059dda CDImageM3u: Simplify whitespace trimming
  • 1494c6b6f PostProcessing: Fix OOB write in ParseVector()
  • d5c22fc62 PostProcessing/FX: Fix PingPong state not being written back
  • 1c9b0a95b PostProcessing/Slang: Fix include depth not being tracked
  • 3ce975391 PostProcessing/Slang: Add missing Original scale type handling
  • a9da0d86a Sockets: Fix various issues
  • bd6f99800 ISOReader: Fix incorrect timestamp calculation
  • 29ca1cbc8 GPUDevice: Fix incorrect log message
  • fc9ce7fb2 GPUDevice: Fix incorrect RG16/RG16F pixel size
  • 4e963c1fb System: Add capture file name format options
  • 86aabe307 D3DCommon: Fix a bunch of copy/paste errors
  • 730c44fef D3D11Device: Fix a couple of incorrect log messages
  • 414f9f64a D3D12Device: Fix incorrect subresource calculation
  • 9706df029 D3D12Device: Use move in D3D12DownloadTexture destructor
  • 56f075688 MetalDevice: Fix various issues
  • 6f405d9ee GPUDevice: Don't reserve unnecessary byte in stream buffer
  • 690fcb674 System: Log disc details when booting
  • cece5222c OpenGLDevice: Fix incorrect mipmap step in upload
  • 49eb1ab23 OpenGLDevice: Fix off-by-one in Map() range check
  • d940fb391 OpenGLDevice: Fix incorrect DSB binding without binding layout
  • 2ac48161f OpenGLTexture: Fix a couple of incorrect format mappings
  • f0b6ea978 VulkanDevice: Fix incorrect pointer alignment check
  • a4904ddb0 VulkanDevice: Add missing swap of m_allocation
  • 0f5124996 Achievements: Fix null pointer check in BeginRefreshHashDatabase()
  • 2a85f6734 FullscreenUI: Fix possible OOB on bad config
  • 0e3c4714d FullscreenUI: Fix file dialog without filter set
  • 22378bd9c FullscreenUI: Add fade transition to file selector
  • 2b100621a FullscreenUI: Fix possible RemoveHook() call on wrong thread
  • d3edaf50e FullscreenUI: Use insert_or_assign() in SetCoverCacheEntry()
  • d2e94217c Qt: Fix config binding of audio capture extra args
  • 41a939f34 Qt: Fix resize-loading case for getCoverForEntry()
  • ecc1fe260 Qt: Fix a couple of incorrect config keys in reset path
  • d326c8bc7 Qt: Fix incorrect signal block in game summary
  • 4ae89e294 Qt: Fix reading from UI thread in computeImageHash()
  • 30583b444 Qt: Fix incorrect read in texture replacement settings export
  • 00c956f4a Qt: Fix incorrect settings save after automap
  • 182c87d76 Qt: Add missing master enable update in cheat settings
  • 387d8b378 Qt: Remove redundant setNewBinding() in effect binding
  • 0995654db Qt: Add null pointer check to hotkey setFilter()
  • 5de2b77d0 CPU/CodeCache: Fix redundant begin/end code write
  • 2af1cd640 CPU/CodeCache: lwc2/swc2 should not read rt in backprop
  • 0a816b657 CPU/CodeCache: Fix blocks ending up perpetually in interpreter fallback
  • 23c94c5bd TimingEvent: Add missing current_event check in SortEvent()
  • 89560f81d GDBServer: Fix incorrect shift in $G handler
  • dd25610e3 GDBServer: Fix incorrect hex decode in $M handler
  • 091d1b625 GDBServer: Fix double ack after single step
  • 59b4fb84a GDBServer: Send SIGTRAP on system pause
  • 6c6390286 Fix translation errors (AZ) (#3730)
  • df64109df TimingEvents: Fix overzealous assertion
  • f9254e23f CPU/CodeCache: Pack state in struct
  • abf3b8cc0 CPU/CodeCache: Move JIT write protect out of MemMap
  • 120d04958 Modern Lossless Dynamic Quantization Scanline Shader (#3731)
  • 12989d2bc VideoThread: Use thread instead of handle
  • 53c4176a1 CPU/CodeCache: Don't skip filling backprop for first instruction
  • 5d92da522 TimingEvents: Remove ticks_late parameter
  • dea048016 AudioStream: Reintroduce XAudio2 backend
  • c1d24b4e9 dep/cubeb: Bump to a37dadd
  • 242b4b814 FullscreenUI: Fix files showing in directory selector
  • 28297a3ae VideoThread: Pass clamped dimensions to thread
  • 153fa1d23 Core: Get rid of base settings layer overrides
  • 85c0b4eff System: Move gamescope screensaver hack to QtHost
  • 71dafa719 System: Move socket multiplexer into GDBServer
  • cc1775f0b System: Move Discord presence into its own file
  • 678b6101e System: Move more core functionality out of file
  • 70c6d5a1d VideoThread: Move private functions into own file
  • 0b6d41e63 Achievements: Don't defer badge prefetch on game load
  • 56783acc7 Qt: Use delete icon for restoring custom titles
  • 348eaeef6 TaskQueue: Support single-threaded operation
  • 735dc5ba2 Core: Centralize the async task queue
  • b2d0fbdcb clang-format: Add lambda options
  • 54c6a9faa Hotkeys: Make more formatting-friendly
  • 00908b1b1 Qt: Remove some unnecessary includes
  • 86fd69332 Qt: Use better title for capture file name format
  • 122bd30ba Qt: Move RAIntegration setting to advanced settings
  • 6513e4778 Achievements: Add progress indicator mode option
  • d2e770131 dep/rcheevos: Increase the time the progress tracker is shown
  • d1f597588 FullscreenUI: Fix load/save state leaving system paused
  • 8ddaac326 Achievements: Add alpha to progress bars
  • 38bbc115c Data: Add additional fonts
  • bbe65219a ImGuiManager: Support multiple text fonts
  • 9950e2243 SoundEffectManager: Fix low chance of deadlock on shutdown
  • f7d937cb0 Qt: Fix debugger ignoring all messages
  • acbb76c00 Qt: Fix off-by-one in edit RAM callback
  • f080e798e Qt: Fix possible underflow in debugger wheelEvent()
  • 9a410416e Qt: Fix incorrect colour of bytes in debugger
  • 9f385b27f Qt: Fix last-data buffer management in MemoryViewWidget
  • 970e191fa Qt: Improve debugger arrow drawing
  • 2f35493d2 scanline-modern-ex.fx Minor optimizations and adjustments (#3732)
  • 5731aa87a CI: Pass --fail to curl downloads
  • 3fb89483b GPU/HW: Fix MMPX Quality compilation in Metal
  • 730dcd9a9 VideoThread: Assert not on thread for async calls
  • 1200cd589 FullscreenUI: Rework pause menu opening
  • 75eddf171 Achievements: Adjust pause menu box padding
  • e4c55ad02 Achievements: Don't display indicators when in pause menu
  • 6f8f4885e dep/imgui: Handle ClearTexData() for RendererHasTextures case
  • 9eeabd009 ImGuiManager: Destroy textures before recreating font atlas
  • bff185190 FullscreenUI: Fix double pause in PauseAndOpenMenuFromCoreThread()
  • 8056dc705 FullscreenUI: Fix change disc hotkey again
  • 5dc2899f5 Qt: Fix tab order in Achievement Settings
  • 01ae8e563 Qt: Fix incorrect key for video capture arguments
  • 1f1182f33 Qt: Don't delete empty achievement images directory
  • 2bc4a95ff Qt: Remove redundant doBackgroundControllerPoll()
  • aa5e2d738 Qt: Screenshot/video directory shouldn't be changable per-game
  • 614d24c4d FullscreenUI: Fix pause icon not re-displaying on menu close
  • d6a7f9019 FullscreenUI: Tweak fade transition times
  • 015bfedb4 FullscreenUI: Align fade transition times to frame rate
  • 414b0b3b4 CDImage: Fix OpenCHD() opening non-chd files
  • 925199144 ImGuiOverlays: Use PopupHighlight for save state selector
  • 3836986c4 Qt: Expose VRAM and SPU VRAM in memory editor/debugger
  • f0fdd069a FullscreenUI: Fix most_recent_progress_update not resetting
  • 1e570edaa FullscreenUI: Fix first achievement notification not triggering run-idle
  • 1917421f8 FullscreenUI: Use correct active state for timed indicator removal
  • f685648a5 FullscreenUI: Fix leaderboard ID/format not caching in pause menu
  • 7120a4ac6 FullscreenUI: Fix possible divide by zero in achievement summary
  • adff8db0a FullscreenUI: Improve sort operator consistency
  • ccce159d0 FullscreenUI: Fix game grid titles drawing even when disabled
  • 69b3958f4 FullscreenUI: Use icon in both AlertPrompt() and ConfirmPrompt()
  • 9e82d216a FullscreenUI: Fix typo in MenuImageButton()
  • 678c2ec35 FullscreenUI: Fix InputStringDialog not clearing text
  • 2ca830751 FullscreenUI: Fix loading screen drawing with non-zero minimum
  • 086184020 FullscreenUI: Fix temporary challenge icons missing in pause menu
  • 3a10c16b1 Qt: Slight tweak to OSD settings panel widths

v0.1-11108

release
Release notes · 14 files

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 context
  • 45fb8645e Qt: Add a bunch of missing _L1 suffixes
  • ec6599d7c MemoryCard: Fix open error not propagating
  • 7c6011eb5 Qt: Unmark some error messages from translation
  • 993033eb1 Change Azerbaijani translation entry to 'Azərbaycanca' (#3719)
  • b77af272b Update MMPXEnhanced v3.0.1 (#3724)
  • 2031ef7ce Updating Spanish (Spain) translation with latest changes. (#3725)
  • a4054fc05 Update Azerbaijani translation and add contributor (#3726)
  • c28c55861 Atualização Português do Brasil (#3727)
  • ec2101fe2 Achievements: Rename game icon -> game badge
  • c7702bc9d Achievements: Make game badge cache internal
  • 420ce679c GameList: Remove ShouldLoadAchievementsProgress()
  • 0fcf4cce1 Achievements: Defer game list data update
  • 54feef27d CI: Use 7z for symbols archives

v0.1-11026

release
Release notes · 14 files

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

release
Release notes · 14 files

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