DuckStation

Émulateur v0.1-8773

Jeune émulateur Open Source de Playstation utilisant Qt et SDL.

Si les sources sont dites compatibles macOS de façon "expérimentale", l'émulateur n'étant pas du tout optimisé pour notre système, il peut se révéler très bogué. L'aide à la compilation via l'outil cmake est disponible sur le site officiel.

Notez qu'un fork pour jouer en réseau existe et se nomme Duckstation-netplay (à compiler soi-même).

Dernière mise à jour :

Plateformes

PlayStation

Architecture

Mac OS X - macOS Mac OS X - macOS Intel x86 Intel x86 Apple Silicon Apple Silicon 64 bits 64 bits Metal Metal SDL Library SDL Library

Téléchargement et liens

Historique des versions

vpreview
## Commits - Use once_flag for library loading ([Stenzek](https://github.com/stenzek/duckstation/commit/2f4724dd1f95ba2eb36626d243f88eefb2a02d45)) - Add lightweight Mutex/ConditionVariable wrappers ([Stenzek](https://github.com/stenzek/duckstation/commit/7137ce2be79f68fe9f5599e794f13198d715cebb)) - Use lock_guard for settings accessors ([Stenzek](https://github.com/stenzek/duckstation/commit/f46b6a834147f66a4ee163191d1387004fb95f0d)) - Use Threading::Mutex for settings lock ([Stenzek](https://github.com/stenzek/duckstation/commit/bbeac9cfe1d2185bcb4eee4d7d064f6b94e080c4)) - Use lightweight threading abstractions ([Stenzek](https://github.com/stenzek/duckstation/commit/3bb2b0b1d678098013cbe935d0ab72e004036f38)) - Replace std::mutex with Threading::Mutex ([Stenzek](https://github.com/stenzek/duckstation/commit/22072c934fdd98c785134a4985dc68f110c08f54)) - Convert to namespace ([Stenzek](https://github.com/stenzek/duckstation/commit/00d407c35bcbf5e9bb9063ac05b4458fcd0c26c9)) - dbe1444: GPU/HW: Fix missing mask-or application on texture fallback (Stenzek) - ac0e3a5: GPU/HW: Add 'Filter Framebuffer Uploads' advanced option (Stenzek) - Enable background texture filtering on more games ([Stenzek](https://github.com/stenzek/duckstation/commit/aaa8a68df5705fd3a299fbd3e1a9a81f6240f360)) - Show inherited multi-sampling setting in game properties (#3800) ([Davide Pesavento](https://github.com/stenzek/duckstation/commit/04f821c0443e6ff9bb79908671c5ec162d29acc8))
vlatest
## 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
## 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
## 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
## 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
## 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
## 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
## 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
## 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
## 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
## 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
## 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
## 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
v0.1-10975
## Commits - 060056eab CPU/RISCV64: Fix gte_completion_tick store in EndAndLinkBlock (#3702) - 26fda0b98 CPU/Recompiler: Don't clobber downcount in GTE blocks - 242182d91 System: Use achievements game icon for loading screen - c5fdea1ee ImGuiManager: Remove redundant cast - 401a0ba4c GPUTexture: Don't assemble vector in GetSizeVec() - a9a5d20ae FullscreenUI: Free up more bytes in locals - 6f6fe977e FullscreenUI: Add debug destructor - 26d7e39d1 Achievements: Fix indicator scale not applying to text - d6dca9cfb Achievements: Increase indicator horizontal padding - c82f4b8bc Achievements: Add missing coordinate floor() in a couple of places - 088f05726 FullscreenUI: Add background blur to notifications/menus - 8d0105331 Achievements: Add pinning of measured achievements - 7deb99cd8 FullscreenUI: Fix crash when changing range cheats - db809fa27 FullscreenUI: Fix range cheats not being completely removed - 3066a3824 PostProcessing: Fix inconsistent unscaled input during reload - 78a69cd38 PostProcessing: Set unscaled input based on first enabled shader - 98a9aaa7a SettingsInterface: Replace simpleini with built-in parser - ab1fd5182 dep: Remove simpleini - bc3b6fcb6 Common: Add missing functions for SSE2 vector implementation - 49219b7bd GPU/HW: Fix bogus 'resolution set to 0x0' message - 03980904a Installer: Fix incorrect executable name on ARM64 - 3ec7a4fef CMake: Core link to vixl/biscuit should be private - cbc6a162e VideoPresenter: Reuse blur target for transitions - f7f93cc29 InputManager: Support localizing device names - b20f11456 SDLInputSource: Make button/axis labels controller type aware - 7b2fb0f15 Achievements: Clear OSD state before rc_client_unload_game() - 20dd67555 FullscreenUI: Fix previous window not cleared on shutdown - 7603a5a63 FullscreenUI: Fix concurrent achievement+leaderboard hotkeys - 2067b5aba Qt: Zero a few spacer size hints - 70d655adc FullscreenUI: Reset focus when switching to same main window - 05240c5ed SDLInputSource: Use constants for motor indices - 3d1f479a7 XInputSource: Use constants for motor indices - 5bd747b54 SettingsInterface: Make strings the only virtual type - a697ab923 Settings: Use string_view for parsing types - cc7e03c2d Settings: Use case-sensitive comparison when loading - 6991e6120 INISettingsInterface: Use case-sensitive sections/keys - 5d898f85d FullscreenUI: Avoid calling EnumerateDeviceEffects() on video thread - 23d2060b8 Qt: Avoid InputManager calls for binding widgets - bf292ddf7 FullscreenUI: Avoid calling EnumerateDevices() on video thread - 818476f8b InputManager: Add thread assertions to public functions - 2f211ddfd Qt: Remove HasAnyBindingsForKey() call on double click - c728108a6 InputManager: Remove main mutex - 607cc7ea6 ShaderGen: Fix compile error with OpenGL ES - 1cb2ad5fd GameDB: ICache for Resident Evil 1+2 - 19a165a5b GPU/HW: Fix draw rect not updating in FF8 truncation workaround - 14ff42cd3 GPU: Fix gsvector_nosimd -Wnontrivial-memcall warnings (#3704) - 8a7db2ad5 dep/imgui: Fix LoongArch64 compile - db0de91b9 dep/rapidyaml: Fix LoongArch compile - 9ca9930da dep: Add lagoon - c41cd7937 GPU: Fix blend32() template for non-SIMD path - f6d526712 Common: Add LoongArch support - c1ae04a7b CPU/LoongArch64: Add recompiler - 87ce39236 CPU/LoongArch64: Don't clobber downcount in GTE blocks - 1c643d704 Achievements: Add toast when achievement is pinned/unpinned - d83dc3f33 Qt: Add 'Dark Ocean' theme - 78f286799 Scripts: Fix regtest runner - 684d24b14 FullscreenUI: Display PS/Xbox button icons based on current device - 876485765 FullscreenUI: Use BackgroundHighlight for button hover in choice dialog - cad17e8eb FullscreenUI: Show 'Scroll Page' in footer legend - 3c3f9e3eb CI: Drop libc injection hack - 4acd4a099 CI: Remove AppRun hook from cross AppImage - ec5e67651 CI: Update to latest AppImage utilities - fedd294bd CI: Only build Qt frontend for cross jobs - 7b50681fa CMake: Always build Qt interface - 98e9db7fb GPUDevice: Drop SDL window type - dbfe9219c OpenGLDevice: Remove prerotation hacks - 1dacb130f FullscreenUI: Fix achievements hotkey hang with VSync on - 47dc3ce6a CI: Verify hashes of dependencies - c38b99a0f VulkanDevice: Fix duplicate check for VK_KHR_get_surface_capabilities2 - 06708e0b5 GPUDevice: Fix false error logged with OpenGL - 335f6b627 Settings: Ensure INI gets saved in logical section order - 770bebf3c Settings: Remove empty sections before saving
v0.1-10903
## Commits - add30da47 GPUDevice: Move present result to global namespace - be8f38bef ImGuiManager: Transition texture layout after font update - 92b7cb98a Achievements: Prefetch next achievement badge on unlock/start - 156837e69 Scripts: Remove redundant packaging subdirectory - 3072e65c4 CI: Don't compress already-compressed artifacts - dcb3e3624 CDImage: Support loading CloneCD images - fdd724f34 CDImage: Make MDS class name consistent with others - 6464fafac XInputSource: Fix icons not displaying - 5d46cca27 XInputSource: Add missing break in GetCurrentValue() - 570797791 XInputSource: Fix inverted motors in ConvertKeyToString() - 3248d9449 XInputSource: Support SCP XInput Bridge - af5ec7fb2 FullscreenUI: Prefetch 3 scrolls worth of badges in list - 04948484c FullscreenUI: Remove redundant is_initialized variable - dc31d7d67 HTTPDownloader: Log time for each request - 2bccb2929 Achievements: Add option to prefetch badges - 5b23956ef README: Add mention of CCD images - dda54aded FullscreenUI: Immediately pause on core thread on menu open - 2a4daa76f Achievements: Default badge prefetch to enabled - 19b618d44 FullscreenUI: Fix incorrect background rect bounds - cdf6d5bd2 CI: Use prebuilt dependencies - 9834234a5 README: Update build instructions - 89bcb5146 Qt: Fix hardcore disable popup not showing when loading from menu - 0eadf1456 CMake: Report CFLAGS in summary - 18e1d1191 CMake: Remove unused files - e1f824a50 CMake: Remove unnecessary warning disables - 3929e5875 CDROM: MotorOn should fail if motor already on - fd7d4a316 CDROM: Set motor on bit immediately on MotorOn - 599172165 Common: Return rvalue reference from Error::TakeDescription() - 939d02c18 System: Handle corrupted save states when resuming - 1f9122cca Common: Add BumpUniqueStringPool - 96864e1a7 ImGuiManager: Fix empty slot message in save state selector - 116bfa94a Qt: Use custom style sheet for all themes - 18962a2ae Qt: Support loading custom themes - 51dcde7c1 Qt: Remove some unused setting binders - 700467f65 Qt: Disable 'Disable Style Sheets' button when unavailable - 762d96c3e Misc: Set more text formats in gitattributes - a10d7f6ca Qt: Add missing active text color for menu/tabs - e62de2322 CPU/PGXP: Allocate storage based on active RAM size - a013b7c7b Qt: Add note to enable mouse mapping for lightguns/mouse - fba9913b3 Qt: Tidy up mouse controller view - 4ebd181b1 Spanish (Spain) translation update (#3700) - 395dc0761 Atualização - Português do Brasil (#3701)
v0.1-10861
- 1feea431b Achievements: Make GameHashToString() public - 72561b507 FullscreenUI: Add missing error parameter to RasterizeSVG() - f0709ae8f Qt: Use _L1 string literal where appropriate - ce83fb8f5 Qt: Hook resume state button up to confirm dialog - ca59d794e VideoThread: Fix mismatch between fullscreen_state and real state - 740998b84 Settings: Don't write OSDPersistentDuration to ini - 24c43abef FullscreenUI: Fix scroll not resetting in split window - 7bcc0a739 Qt: Remove redundant lambda - 0f81e595d GameDB: Add sortName for NBA Live games - e50acca9a Qt: Annotate missing BIOS images - 2d727922e Qt: Allow game to override state media path when resuming - 0cf818e50 Qt: Combine a couple of summary page fields - 14d49a47a Qt: Display content and RA hash in summary page - 913aaf602 Settings: Remove persistent OSD message type duration - 7962b9fa0 Achievements: Don't read g_settings on video thread - d1e14af24 FullscreenUI: Update translation strings - 6bb397a8a FullscreenUI: Adjust achievements pause menu overlay margins - 8d359a6c8 Achievements: Add scale options for notifications/indicators - 1b2bcfd4c Common: Move BCD helpers into separate file - e6238dac1 Settings: Add and use saturated int retrieval helpers - 82f36ad8d SettingsInterface: Move functions to .cpp file - a52dcc703 Data: Update SDL game controller database - 9edc3c5a5 Qt: Set widget enable on achievement groups - 71e0e61df Qt: Order Automatic achievement scale option before OSD - 41708dead FullscreenUI: Add vertical padding to split windows - 234f263e7 FullscreenUI: Fix one-frame flicker when changing settings pages - dd3d7d372 Threading: Backport thread ID not getting set - 890cde029 Achievements: Add "Unlocked in Softcore" bucket - f91e99633 Achievements: Fix spectator mode not applying while game active - da2fb9a29 Achievements: Fix only core subset showing in leaderboard view - 2339b23db FullscreenUI: ResetFocusHere() doesn't need to return boolean - 10b96b984 Achievements: Reset bucket collapse on window open - 4f6c42e0f Data: Add additional PromptFont glyphs - 0d0bd69ad Mini: Set fullscreen display mode on "windows" on kmsdrm - d5eb3e10e GPUDevice: Enumerate fullscreen modes if using SDL - 7a0fee053 FullscreenUI: Fix mode list not populating on default adapter - 91ba5ab2e GameDB: Add NeGconRumble to a bunch of supported games - 5add36e4e GameDB: Add sort names for NFS/NASCAR games - 3b1727328 CMake: Ensure resources directory exists before rcc - 6a4ae21f3 VulkanDevice: Destroy context on zero refs with SDL window type - 9f94d6b0a OpenGLDevice: Fix incorrect SDL MakeCurrent()/DoneCurrent() usage - 5a7c85525 FullscreenUI: Use command/option key icons on MacOS
v0.1-10819
- 66956ded7 GPUPresenter: Avoid empty viewport on blank deinterlace - 0614262e0 GPU/HW: Fix inconsistent device state after blank deinterlace - 4b3014735 D3D12Device: Avoid render pass end when setting same target - af305d381 D3D12Device: Avoid second fence wait for infrequent readback - 5e6a18a58 VulkanDevice: Wait before starting next command buffer - d67b9b9d2 OpenGLDevice: Don't use glGetTextureSubImage() on NVIDIA - 1a81adb69 GPUThread: Fix crash concurrently changing renderer and deinterlacing - 6f9752a17 VulkanDevice: Simplify EndAndSubmitCommandBuffer() a bit - c76ee85b1 VulkanDevice: Don't submit during image acquire - d3bff97f4 Settings: Default optimal frame pacing to enabled - 4281de352 Qt: Make settings update check ignore skipped updates - ba180d63a Qt: Add option to edit game list serials - 1379d3ae5 Qt: Fix recommended value for Optimal Frame Pacing - 60ab6a960 Qt: Reflect new defaults in settings help (#3687) - 81bee3191 ImGuiManager: Fix possible memory leak on shutdown - dedc59037 ImGuiManager: Allow renderer switch without destroying context - 65bb5bc43 ImGuiManager: Adjust fixed-width font weight based on DPI - ac8502ce5 ImGuiManager: Swap fixed-width font to Google Sans Code - 91b0ed95d ImGuiManager: Use text font for frame time overlay - 2ac1d892a Spanish (Spain) translation update. (#3688) - 4d6932eb1 GameDB: Tighten timing in Wing Commander III - 6c013dbe9 ImGuiManager: Increase font weight for OSD settings - 1608a6f7f FullscreenUI: Adjust footer item spacing - 3a53a8926 Qt: Fix double save of custom serials - ac1e6b533 GameList: Fix some interactions with custom serials - 21dfa471a GameDB: Disable auto analog in `Mizzurna Falls` (#3689) - dcebea1cb GameDB: Adjust cropping in FF8 and FF9 - 83b3a2ebb GameDB: Adjust cropping in Threads of Fate - 0a9a77ceb Qt: Move OSD and Capture settings to their own sections - 0f35e4e5d Qt: Drop workaround for Classic Windows theme change bug - a0fbffe05 Qt: Don't store unneeded references to settings pages - 1f672d3ff ImGuiManager: Fix spacing for media capture timer overlay - 38c6c3e76 Qt: Improve grouping of OSD options - dc69e3f0c Qt: Fix conflicting accelerators in Settings menu - 2da35d2d3 dep/rcheevos: Prioritize unsynchronized bucket over recently unlocked - 864306887 Achievements: Fix unsynchronized achievements missing from list - ddcc2e087 Achievements: Add missing lock to GetPauseThrottleFrames() - 499c08a37 Achievements: Warn on shutdown when unlocks are unconfirmed - fb682a92c Qt: Fix incorrect tab indices in graphics settings - 6be96f6fd GameDB: PGXP CPU for World's Scariest Police Chases - 5c0a227c1 Qt: Ensure fields in MemoryViewWidget are initialized - 27afb31cc Achievements: Fix overlap when >1 leaderboard tracker active - 7e484861d Achievements: Reduce the size of challenge notifications - df757371e WindowInfo: Move prerotation enum to global scope - 9b299fee4 GPUPresenter: Convert to namespace - 370df6293 Qt: Add option to use the system font on Linux - 63102e9a7 Qt: Avoid locals symbol name clash in qtthemes.cpp - a04a312c1 GPUThread: Rename to VideoThread - 208a8a505 GPUPresenter: Rename to VideoPresenter - 219ee2067 PostProcessing: Fix depth buffer always being requested - 31f9be1ba VideoPresenter: Simplify post-processing settings update - 0bbb5b736 Qt: Fix tab order in OSD settings again - 7c4bcefdd Atualização Português do Brasil (#3691) - 4c523a634 VideoThread: Rename some missed references - 92b888fb8 VideoThread: Fix overreserve in command allocator - 5516f7a2f Misc: Use 'Render Window' consistently instead of 'Display Window' - 335145b54 VideoThread: Avoid possible null presentation in PresentFrameAndRestoreContext() - 25211c6fd VideoPresenter: Move present throttling from VideoThread - 36788b859 Misc: Eliminate unnecessary atomic thread fences - c28282c40 Qt: Always use FullscreenUI for confirm message if system valid - a87525452 Controller: Add option to use right analog as trigger buttons (#3692) - d45e12155 Qt: Remove QtUtils::GetRootWidget() - 8e5ec6444 Qt: Adjust window bring-up order - 6f39b2f2e Qt: Fix fixed-width font not loading - 2fd81f503 ImGuiManager: Make margins consistent across OSD/achievements - f4b3d1ce9 FileSystem: Add SetPathExecutable() - 0aa6e1efc Qt: Add popup to create desktop file on Linux - 133018440 Qt: Fix log window appearing in front of main window on KDE - f245357bb Qt: Move state into QtHost namespace - a87d2aeaf Qt: Fix application name in task switcher on GNOME - 130494fae Qt: Allow changing executable with drag/drop - 7235494a7 VideoPresenter: Ensure skipped_present_count is zeroed - 467f2fa6a StateWrapper: Avoid unnecessary include - e50909234 Common: Fix string tests building - 5cf8d080c GameDB: Max speedup cycles for Disruptor and Rescue Shot (#3693) - 511058dc5 Qt: Fix crash on Linux when opening game properties (#3694) - 0aca150a4 Common: Fix incorrect float rvalid() - 1cfde39d3 Deps: Version updates - 44e055ba0 Misc: Use delta from initial value for input binding - c13d04e2c InputManager: Remove Sensor source - 668a930eb SDLInputSource: Add sensor (accelerometer) support - d66db164b Qt: Add controller sensor mapping - 0f280acaa InputManager: Remove padding from struct - 29241260a Qt: Avoid rich text in message boxes (#3695) - b330b3e7d CMake: Simplify Metal shader build - fa4d08491 CMake: Simplify resource copy - 566681ff2 D3D11Device: Add missing push constant buffer destroy - d6915fb57 D3D11Device: Fix assigning integer to boolean - b20c2b281 Common: Add additional unit tests - 7db0555b6 CMake: Bump version requirement - 9630464e3 CMake: Remove pointless flags change - a64272b7a PostProcessing/FX: Fix incorrect min_point_mag_linear_mip_point translation - 87c4b66c4 OpenGLDevice: Fix error reporting in CreateFramebuffer() - 66856687c OpenGLDevice: Fix error reporting in SetSwapInterval() and SetVSyncMode() - ca49dd1ae HTTPDownloader: Fix error description for WinHttpOpenRequest() - 84ff25e48 HTTPDownloader: Fix return value of curl write callback - e81fa8480 HTTPDownloader: Add missing error status assignment - c60e3aaf2 VideoThread: Fix core thread view missing surface format - fbf4cdd08 dep/rcheevos: Bump to dedfe2d - 7df574cf5 Achievements: Fix notification icon opacity - 86dcbc614 Achievements: Remove hidden leaderboard check - 2bd0a6ab4 VulkanDevice: Fix incorrect stage bits for compute PushUniformBuffer() - 3a54524e4 VulkanDevice: Add missing scissor clamp in SetInitialPipelineState() - 59aeb1e84 VulkanDevice: Fix query index in WaitForCommandBufferCompletion() - d8b889757 Qt: Reverse window open order on all Wayland platforms - fcd3f972c README: Update resource overrides section - 186d55833 FileSystem: Check fclose() for WriteBinaryFile()/WriteStringToFile() - 22c8d9110 Installer: Add windows installer program - 4756b1789 Installer: Add Windows uninstaller program - 7e4efbfa9 CI: Generate Windows installers - 5bf65fe48 Installer: Calculate estimated size for uninstaller entry - 43cf1d93a Installer: Share progress callback with updater - dc7876329 Spanish (Spain) translation update (#3696) - faf988b31 System: Match console region to BIOS region when starting BIOS - bcd7a43cf InputManager: Fix typo in variable name - ab959a5d4 InputManager: Always call SetHook()/RemoveHook() on core thread - 653d04c84 InputManager: HasAnyBindingsForSource() shouldn't check subtype - 682c9c643 InputManager: Only enable sensor polling if there are bindings - 372e1f353 InputManager: Fix needing double press for button binding - 009434436 README: Add links/instructions to Windows installer - 016c08b9c GPU/HW: Use clamped rect for sprites-as-fills - 0b7d3ce2f PostProcessing: Correctly update stage count when removing/clearing stages (#3698) - 14decb166 Atualização Português do Brasil (#3697) - 1a607257f System: Fix game settings not deloading after shutdown - 8c669e38c VideoThread: Simplify reconfiguration - eda65a6ae PostProcessing: Fix texture hazard when stages disabled
v0.1-10693
## Commits - e41ca3245 AudioStream: Fix changing stretch mode without buffer change - a7d29da8e System: Clamp typical time to frame period on MacOS - abed81d53 GPUDevice: Use present instead of current time for skip logic - 71f46cf8c GPUThread: Update core thread window size on core thread - 7c0e4d37c Qt: Forward mouse events through core thread - 4ec6ff7eb InputManager: Remove second source of truth for window size - ff0ad1b17 System: Rewrite present skipping - 9eb092cf1 Qt: Detect refresh rate change when screen changed - 0058441ae Updated Swedish translation (#3685) - c4255112c MediaCapture: Remove stream ID check in ProcessVideoEvents() - 525dba5c5 GPUDevice: Use sorted array for storing shader cache entries - 39634b355 FSUI: More consistent icons (#3686) - 808d1116e GunCon: Don't read ImGuiManager state - a44f202f4 ImGuiManager: Remove another source of truth for window size - 0c1f61f78 FullscreenUI: Add option to swap gamepad confirm/cancel buttons - 962454bbf Qt: Fix double invoking of mouse wheel/button events - 4800a4e55 PostProcessing: Avoid creating zero-sized intermediate targets - 7f7d82739 GPUPresenter: Avoid NaN sized target during loading - ec22863e4 CocoaTools: Add display link fallback for refresh rate query - a57851fb0 Qt: Fall back to QScreen if WindowInfo refresh rate query fails - 322320f81 FileSystem: Backport 3-arg Path::Combine() - 06897cd73 Qt: Move windows data location from Documents to AppData - e851c665c Common: Remove MemorySettingsInterface - 29692268b Qt: Allow parenting updater to settings dialog - f18aaee69 Qt: Use QPlatformTheme for Cancel - fb474e8dd Qt: Relabel 'Reset Game' as 'Restart Game' - ce5b358d2 README: Update Mac installation instructions - c1ff16394 Misc: Replace more 'reset' strings with 'restart' - 9a24913ab FullscreenUI: Remove now-unused host file selector functions - 07f2fa8f5 Achievements: Reload game when resetting after disc swap - 75aba0d1e GPUThread: Fix core thread window info not updating on fullscreen - 424a8e775 Cheats: Fix aspect ratio not updating on change - d9e442e5c GPUDevice: Don't duplicate fullscreen modes - c41eeda02 Achievements: Fix almost there/active challenge showing in all subsets - e26ad17fe dep/rcheevos: Fix silent URL truncation in new functions - bd1b66051 dep/rcheevos: Destroy parse state in rc_find_next_classification() - 66bfc4b16 Achievements: Increase padding for leaderboard loading indicator - fa84d9e89 Qt: Default MacOS fractional window scale to disabled
v0.1-10655
## Commits - c126ee7d2 FullscreenUI: Fix EndFullscreenWindow() inside conditional - cd688477a FullscreenUI: Settings changed fields don't need to be atomic - 23e57f83f FullscreenUI: Add 'Split Windows' - 3952477d3 FullscreenUI: Use split window for controller settings - cb1e545f0 FullscreenUI: Wrap navigation in split windows - a188633f6 FullscreenUI: Don't clear transition when preserving state - beaf01ccd Qt: Fix ReportFatalError() returning - 723fb02a7 Qt: Fix reshade shader icon in light themes - d9fa8d1ed FullscreenUI: Use dummy for menu headings - c5ce2f999 dep/imgui: Add ImGuiChildFlags_NoNavCancel - 6c9277dbd FullscreenUI: Improve split window UX - 9dcef869a FullscreenUI: Use appropriate icon for console settings - bc2a2ba8d FullscreenUI: Fix background alpha for achievements user heading - db46413df FullscreenUI: Use channels for background/highlight/foreground - d54de027c FullscreenUI: Don't show ports in game settings by default - 454d33272 FullscreenUI: Hook up L2/R2 to page up/down - a83ccdcd0 FullscreenUI: Fix focusing when pressing west face button - 8f94a56ab System: Add GetProcessUptime() - 82ab3e84a Host: Add ReportStatusMessage() - 5154ea9b1 Qt: Route status messages to OSD if fullscreen - 56cbbb132 InputManager: Don't display controller connected for initial 3 seconds - 5637fc780 ImGuiManager: Run idle when OSD messages are present - f5ebe1cee FullscreenUI: Use horizontal buttons for resuming state - 1431d5cf5 FullscreenUI: Use horizontal buttons for message dialogs - 896395b3b FullscreenUI: Tweak message dialog widths - 249f9d03f InputManager: Avoid redundant core thread invocation - a011b78d2 FullscreenUI: Fix per-game post processing settings - 08131302c FullscreenUI: Reorder settings pages to match Qt - f9bf0cb12 Qt: Make 'Clear Settings' in Game Properties clear ini - 7d2377b98 GameDB: Max speedup cycles for Inuyasha and Monster, Inc. (#3679) - 671751f98 Qt: Define Q_OBJECT for TextureReplacementSettingsDialog - f7083f963 Qt: Fix singular form in a few translatable strings (#3681) - 8048c05b3 InputManager: Fix raw input not registering - 2cb7bace0 InputManager: Fix raw input device disconnect events not triggering on disable - 991db9e49 InputManager: Remove default Pointer-0 device on raw input startup - f901d716b InputManager: Don't use relative mode in raw input without bindings - e52b7dde8 InputManager: Add 'Disable Background Input' option - 2d8b7c85b FullscreenUI: Halve menu animation time - 9cc8b0e19 InputManager: Apply 'Disable Background Input' to ImGui too - 0c84baf4d Qt: Use portal file picker on KDE/GNOME - d02382da7 GameList: Log image open errors on file scan failure - 09926a376 GPUDevice: Update last presented time after present - 3bff45202 Qt: Add custom titles for disc sets - 091278315 System: Add taint for memory card time travelling - 1ec280113 Qt: Fix incorrect row for compatibility comments - 8dc07e528 Qt: Use splitter in macro editor (#3680) - 2db018bd8 Qt: Convert text in analog/digital pad SVGs to paths - 82947f0f6 Qt: Don't double-create the controller settings widgets - 0c29d4e1d Qt: Remove empty rows/columns in controller settings - 56fc9afbc InputManager: Default to using global sources in profiles/games - 80993e988 FullscreenUI: Fix crash when hovering floating buttons - a108fcf2b Hotkeys: Fix power off hotkey in achievements hardcore mode - f222c5012 Achievements: Raise leaderboard fetch size to 15/50 - 93a5663fc Achievements: Make leaderboard notifications a little nicer - f372a9224 Achievements: Add active leaderboard trackers to pause menu - d02df7cf4 Achievements: Don't use visibility for leaderboard paging - 18768bcab Achievements: Use note area in more notifications - bd44e36f7 Achievements: Use OSD messages for errors instead of notifications - 98596dd7d GameDB: Set PGXP tolerance for `Vagrant Story` - 0edd6e6fe GameDB: PGXP CPU mode and max speedup cycles for `The Guardian of Darkness` - a9bea9a4d Atualização Português do Brasil (#3682) - ff889fc74 Qt: Fix overlapping group boxes in controller global settings (#3683) - 6d61c54d5 Qt: Adjust Darker Fusion highlight colour - 4c92dc181 Qt: Fix tab order in a couple of places - 9882ef425 GPU: Fix ConvertDisplayCoordinatesToBeamTicksAndLines() with forced-progressive - 3a0c4898e GunCon: Add line/tick offset for position fine-tuning - 2c8647d34 Achievements: Use rc_client_create_leaderboard_list() for hidden test - e2266cd61 dep/rcheevos: Bumpt a4b9156 + #492 - ffe7ca9f0 Host: Move screensaver inhibit to host - 8135aefac Qt: Move window corner rounding out of PlatformMisc - 9c07d9bf7 CocoaTools: Move util functions to common - 2463a5fdb Misc: Remove platform_misc.h completely - 1c02bf01a Achievements: Fix progress bar being too short - 3b57f437d Achievements: Don't duplicate subset title in list view - ebb604e1c Achievements: Use secondary colour for active subset - 171514327 Qt: Fix incorrect fractional window size in MacOS - 54692a842 Qt: Only override with real/fractional scale on Metal renderer - 70d286516 Qt: Fix auto updater half complete state on missing asset - 8863c5381 System: Fix inhibit state if option changed while paused - 9c9bd21c3 Qt: Remove RemoveEmptyRowsAndColumns() helper - 2c77eabe3 Qt: Use nested layouts in controller settings dialog - 2a8256673 GPUDevice: Use separate variables for last/next present time - 53e7cf5e5 System: Disable screensaver inhibit on Gamescope - 4f37bc6e1 dep/rcheevos: Update rcheevos to v12.2.1 - c8abdccce FullscreenUI: Remove content start sound effect
v0.1-10570
## Commits - b805c431f Atualização Português do Brasil (#3675) - 283478a32 Updated Swedish translation (#3676) - 9e0e07f02 FullscreenUI: Update idle state after transition finishes - 4ab3669af Qt: Set QT_NO_SIGNALS_SLOTS_KEYWORDS - fa39e63bb Achievements: Show leaderboard times as relative - f2adc3970 CoreAudioStream: Handle parameter changes without restarting - 6c09ba494 Qt: Move time stretch settings into audio widget - 64d70753f ImGuiManager: Use default icons when unspecified - 5a32d194b CPU: Fix cop0 breakpoints triggering too late - 2e659d8cf CPU: Pack local state in struct - 452244915 SoundEffectManager: Support converting bit depth - cd9e3ffb8 SoundEffectManager: Support converting float wave files too - c02bcdcd9 Qt: Add link to wiki page for changing sounds - f9c2aeabb CPU: Fix incorrect EPC after cop0 breakpoint - b1d1c7628 CPU: Don't set cop bits on DBE - bff1f473d CPU: Add cop0 breakpoint checks for coprocessor loadstores - ace6cd2da Qt: Use temporary game list entry for properties of playlists - a2f3d038d dep/imgui: Update to 69a501d - 74a8e6653 FullscreenUI: Fix incorrect state with per-game renderer setting - 54285978c CPU: Add Host::ReportDebuggerEvent() - f989a8054 Qt: Fix initial state of debugger if opened while paused - 5b5b6bbf7 FullscreenUI: Avoid redundant transition - 11331eb6c Deps: Bump to SDL3 3.4.0 - 3dcb73f66 Deps: Cherry-pick SDL3 f369e80 - f7e83492b Qt: Remove game info from settings - 212b0e6ae Qt: Display profile icon in achievement settings - 4e0c42100 Achievements: Allow changing position of overlays - bb8179f61 ImGuiManager: Allow repositioning OSD messages - 79f9bbe6a Qt: Hide size for directories in ISO browser - 0c1cdd31e Qt: Fix notification/indicator location enable state - d908b923e VideoPresenter: Textures should be uploaded before any draws - 626d51121 Qt: Fix help text for a couple of OSD settings (#3677) - 0b3c2c3e0 Qt: Fix enable syncing of notification/indicator locations - ad01f993c Qt: Polish sliders - 2afc6cf26 Qt: Fix initial state of output latency slider - 7d95949e8 README: Update deps list - a8776a3b2 DynamicHeapArray: Don't resize if size is the same - b287f0023 ZipHelpers: Don't call zip_error_fini() on zip_get_error() object - e0f97a8a0 CompressHelpers: Fix incorrect function call - 1ef7ce0d7 Qt: Don't open dialog on shift-click for effect bindings
v0.1-10530
## Commits - 02a36c78b Qt: Prefer size from native OS over Qt - 5cd585343 Achievements: Add type badges to list and wrap long titles - 3f1ab1cb8 SoundEffectManager: Upmix and resample sound effects when needed - bca82e1bb Achievements: Improve consistency of log messages (#3671) - 1b9ef2c24 StringUtil: Backport helper functions - fb932eb59 FullscreenUI: Don't use SmallString for URL templates - 4b02270c7 Qt: Apply Wayland workarounds before creating QApplication - f22658146 Qt: Include time stretch latency in displayed maximum - 83f5fdcab Qt: Order volume controls before audio backend configuration - 3ff1ea33c ImGuiManager: Extract out gradient rect function - a725890de Achievements: Add easing to progress indicators - 604b7ce73 Misc: Fix building with GCC - 8db7cff9d InputManager: Remove hotkey list indirection - a42df9771 StringUtil: Use C++20 requires clauses instead of enable_if - dea9ce3d6 StringUtil: Move most non-template functions to source file - 091517a62 StringUtil: Move FromChars()ToChars() instantiation to source file - 84e4aed8a dep/fmt: Update to v12.1.0 - 4c79ee82a CMake: Adjust fmt build macros - d4c4ec566 CMake: Prefer private over public include dirs - 170d4b9fb Build: Don't make fast_float a public link for libraries - f03bb5b25 Qt: Defer initial layout of game grid - a584a5a5a CI: Set MacOS deployment target to 13.3 - 0a9bf5aa0 StringUtil: Use to_chars() for floating point types - 14625af98 Common: Remove fallback for missing heterogeneous lookup - 67bb75250 Cheats: Search local cheats/patches for multi-disc games - 45dd5001c Qt: Restore disassembly register previews in debugger - 0ad425f58 GameList: Fix reporting of 'Yesterday' on Jan 1st - 65de509c8 Qt: Fix spurious WinId change error on debug widget close - 2258463d8 CDImagePPF: Implement parsing of undo data - d7b2f2d5f README: Update minimum macOS version (#3673) - c01589357 CPU: Add COP0 register names to disassembly - 632aa18df CPU: Don't raise #RI on write to read-only COP0 registers - 43a405413 PlatformMisc: Fix screensaver inhibition on macOS (#3674) - ae1bd270c Data: Update SDL game controller database - 5c53fba91 Qt: Fix Wayland workarounds not applying
v0.1-10495
## Commits - 854edd5d3 Achievements: Save/restore state on setting changes - a7637c5b5 Qt: Split log window into LogWidget and LogWindow - 0aff70237 Qt: Reduce indirect includes in mainwindow.h - 962137fcd Qt: Move some settings around - b6cd37c6a Qt: Add option to show log in main window - 63d352bb0 Misc: Fix move of constant values - 52bd6e749 Qt: Clamp max upscale multiplier to 32x - 4810b1c7d Log: Fix empty output with only main window logs enabled - 4c97badb0 CMake: Fix Windows build - 26b8fe0d5 MSBuild: Remove _CRT_INTERNAL_NONSTDC_NAMES - a43e05472 Host: Split into multiple files - 57adcddc2 Host: Rename CPUThread/EmuThread to CoreThread - f4ff36b56 Host: Move async tasks to host namespace - bfb9ba1c6 Qt: Backport noreturn ReportFatalError() - 461aaeda4 ProgressCallback: Add message logging - 22d8b6dc8 GPUBackend: Fix infinite loop on state allocation failure - d7c015aef MSBuild: Fix non-reproducible path sneaking into binary - 2935a3d71 Common: Add additional ryml helpers - 471fba144 FullscreenUI: Fix stack use-after-free - abcaceeb8 AudioStream: Split into source and backend streams - 02384ac2a AudioStream: Move all streams to same log channel - 132ca44f0 CubebAudioStream: Use a single shared context - c0277db4c WAVReader: Make ReadFrames() return optional - cf103e997 Core: Set correct log channel - 8a7dd1612 SoundEffectManager: Add system for playing short sound effects - 7a8584151 Achievements: Use SoundEffectManager instead of PlaySoundAsync() - b1d5c42a1 PlatformMisc: Remove PlaySoundAsync() - 0897dfcc9 Data: Add navigation sound effects - 3fe319df5 FullscreenUI: Add navigation sound effects - b8e93855f WAVReader: Fix reading into non-data chunks after data - c7c29d414 WAVReader: Add in-memory parsing - a49447722 SoundEffectManager: Add caching and async reading - edd3df899 Qt: Fix noreturn warning in Host::ReportFatalError() - fbdd2689b Qt: Populate audio devices asynchronously - 5a7acfe73 Qt: Populate graphics adapters asynchronously - c3415c489 VulkanDevice: Rearrange fields for locality - 5b789be90 GPUDevice: Extract texture format to global namespace - f4c752a99 Qt: Extract window info functions to own file - e13b9a0c1 WindowInfo: Extract type into global namespace - 69458bd90 VulkanDevice: Persist instance throughout launches - 41a000c0f Deps: Update Vulkan-Headers to v1.4.337 - a1aa03862 VulkanDevice: Use KHR variants of surface/swapchain maintenance - 9bcf23fa9 GameDB: Set PGXP-CPU for Vagrant Story - 822d75653 CubebAudioStream: Add missing layout mapping - 7bc32cdfa VulkanDevice: Swap EXT for KHR in structure type - 937064243 Deps: Update rcheevos to v12.2.0 - 095fef524 GPUDevice: Extract enums to own file - 56d79c76a GPU: Extract heavier helper functions to own header - ad0312ec8 Settings: Free up space in GPUSettings struct - b55f4041b GPU: Add option to crop vertex colours before modulation - 88ca6cf40 README: Add instructions for resource overrides - 4b9154b45 Hotkeys: Add hotkey to toggle texture modulation cropping - 3253cc5be Atualização Português do Brasil (#3667) - 31764738c InputSource: Remove before calling OnInputDeviceDisconnected() - 25790d704 InputManager: Register for device notifications with XInput - 1bc30de66 CI: Update actions - ff747dde3 CI: Use ubuntu-slim runner for lint jobs - 9aaaf14e8 CI: Stricter yamllint config - 182075675 CI: Minimize workflow permissions - e2aa1ae24 Qt: Fix handling of mouse double-click events - e70ae0be0 Spanish (Spain) translation update 2025/12/25 (#3669) - 6146769d8 Settings: Restore a few missing defaults in Safe Mode - 593348945 ImGuiManager: Reduce possible false sharing when adding events - 682a3b3eb FullscreenUI: Only delete sound stream on full shutdown - ef2cf6e22 System: Fix missing subchannel not blocking startup - c20f8d1ec Deps: Version updates - 7c401777a Deps: Build Brotli - 9904c5fbb FullscreenUI: Fix macro pressure/deadzone dialogs - d2c8df97f FullscreenUI: Fix sound on mouse click for some popups - c206bd631 FullscreenUI: Fix incorrect icon for macro buttons - 21abd2487 Deps: Ensure PDBs get generated for Qt plugins - 739b0734b CodeCache: Don't try to handle page faults when shutting down - 213d3efdf GPUDevice: Unload persistent libraries on shutdown - 570a7042a OpenGLContextAGL: Compile fix - a4657fbcb Qt: Catch show events for resize too - f07b726c6 Qt: Sync after creating widget on Linux - 84ff88172 Deps: Remove version number from FontAwesome header - 6c46b0cfe Deps: Update FontAwesome to 7.1.0 - a2d95a1ba FullscreenUI: Change a few icons - fa23d16c3 Qt: Cache window handle for size updates - bfa70857e Qt: Fix missing borders in separate render window - c4ee79b52 CoreAudioStream: Ensure stream is destroyed before buffer
v0.1-10413
## Commits - 9790c1b8a Updated Swedish translation (#3660) - f248c1cd7 Atualização Português do Brasil (#3659) - 4c384842c Qt: Failed to retrieve update change list is not fatal - 9ba0bb9a3 MSBuild: Only remove source paths in ReleaseLTCG - e06d88025 MSBuild: Set -Wno-invalid-offsetof - c9177bc39 Common: Add vector rectangle helper functions - 9eaf58613 Qt: Simplify cover and icon invalidation - ed531da03 Qt: Move wireframe rendering to debug tab - 69784d10a GPU: Move draw helper functions to cpp file - 97582bcfe GPU: Use vectors/rects for presentation - 986e66b51 GPU: Use vectors in draw rect calculation - c6a44ff56 GPU: Add "Fine Crop" settings - 7cf6e0425 GPU/HW: Chunk skewed+overlapping copies - 3fc563e5a Qt: Invalidate tooltips for title changes as well - 351e78768 Common: Fix a bunch of errors in ARM vector wrapper - 37d7cd46c Common: Silence deprecation warnings on MacOS - 2498e66a6 MetalDevice: Fix compile warnings - 1ee0f73df Achievements: Use rc_client API for fetching game titles (#3658) - 900d06c32 FullscreenUI: Fix inconsistent notification colour gradient - 86ba9ea3a ImGuiManager: Add colour gradient to OSD messages - f99601e3d dep/rcheevos: Bump to b77013b - cda367d21 Achievements: Use badge_url for downloads - 708e3b869 Achievements: Use rc_client_create_subset_list() - f52a5afcb System: Fix fullscreen state persisting between games - a777466c5 Qt: Invalidate covers when all titles are invalidated - 547b76fe1 SDLInputSource: Use auto mode for enhanced reports - b3caf07a4 Qt: Make enhanced controllers reports option more clear - 1ccd7508a CMake: Avoid using system zlib outside of MacOS - b10eba419 VulkanDevice: Disable fbfetch on LLVMpipe - 7a539ba69 GPUDevice: Reduce GraphicsConfig struct size - fe8d2e032 VulkanDevice: Set rasterization order attachment access bit on blend state - 652135534 CMake: Don't copy desktop file to resources - b8b576e15 Qt: Override application font on Linux - 89946ccad Qt: Provide theme icons for most used Qt StandardIcons - 6062f5e2f Qt: Use same changed colour in memory scanner as view - 93f62c429 CI: Fix cache key in upload caches workflow - bc72d58fd Achievements: Preserve hardcore mode when toggling encore/spectator/unofficial settings (#3661) - 985783514 GameDB: Add mouse support for compatible games (#3662) - a72d21f7a Win32RawInputSource: Support device hotplugging - 0af8b7477 InputManager: Move device notification from main window - 51986e763 InputManager: Fix some low-risk races during reload - 822024dda Qt: Fix empty text box after image verification - 97128838c ProgressCallback: Add a variant with alert/confirm - d5dc9fb56 FullscreenUI: Fix bg load after close->reopen - 1c06b685c GameDB: add missing compatibility entry for original release of A Bug’s Life (#3664) - 7d31ab9f1 GameDB: Fix typo in FF7's sort title - b8c894149 GameDB: Add sort title to FF7 and FF8 demo discs - ea8d7b015 VulkanDevice: Only enable KHR_maintenance5 with dynamic rendering
v0.1-10365
## Commits - 5b91141f0 GameList: Add option to download all game icons (#3655) - 972dcd792 Achievements: Tidy up badge downloader - a870f6270 Achievements: Use main HTTP for badge downloads - 154120090 Qt: Name consistency improvements - 3867c848b Qt: Allow cancelling icon downloads - 42c872eff FullscreenUI: Add achievement game icon download - ea4933abe Achievements: Add progress to progress database refresh - f7ca150c7 InputManager: Fix possible use-after-free on source reload - d9f830229 Qt: Increase idle polling interval - 4b8219150 Qt: Fix use-after-free in edit/remove cheat (#3657) - e2fc40c40 FullscreenUI: Fix infinite loading at end of leaderboard - 56d8750f4 FullscreenUI: Add floating nav bar widgets - 7214ec0b8 FullscreenUI: Improve leaderboard display - 75380e785 FullscreenUI: Improve styling consistency between achievements/leaderboards - ac0a29988 FullscreenUI: Add achievement subset selection - 4da93d7e1 FullscreenUI: Set scrollbar rounding - de01bf704 FullscreenUI: Remember the last-opened achievement subset - 6070bff9f dep/rcheevos: Bump to 9aa1352 - 6e5291d8f Qt: Update English plural strings - 43074cfe5 FullscreenUI: Slightly improve achievement notifications - e9767ba34 FullscreenUI: Tweak achievement notification animation - 0e0e82d12 ImGuiManager: Apply same change to OSD messages - bde06fe78 Settings: Disable wireframe+downsample in Safe Mode - d1f2b80fb Data: Update game controller database - dbd8288e9 Common: Fix implicit conversions in ARM vector wrapper - 95a196144 Build: Fix RC version field
v0.1-10339
## Commits - 5d9309cd5 Qt: Make parented progress callback dialog window modal - c9c4997d6 PostProcessing/Slang: Separate original and input textures - fd24d9946 CI: Work around Mac runner failing - e3332d176 Qt: Fix open button icon in ISO browser (#3638) - d4e2f4fb9 GameDB: Disable auto analog for Tenchu (#3636) - 795e2d273 ImGuiOverlays: Fix bold with ICache enabled - b5316239b Settings: Slightly reduce struct size - 2290f31ff ImGuiManager: Remove multiple sources of truth for prescale/margins - 1cc5fe081 ImGuiManager: Remove duration parameter from OSD messages - e02883eab Settings: Make OSD message durations customizable - eb518c8e3 Qt: Eliminate OSD from debug RAM dumping - 302ce03fe Qt: Async messageReported() signal should not block - db72c78f7 ImGuiManager: Fix incorrect condition in OSD rendering - b5392ee2c Regtest: Build fix - ce37f0e75 ImGuiManager: Support non-font icons in OSD - e012d9780 Achievements: Use RA icon for some notifications - a14433e03 FullscreenUI: Fix ImGui asset tripping on empty game grid - 267e81f47 README: Remove compatibility list link - 79bfa1a65 System: Fix inverted save state overclock warning - afc019d58 FullscreenUI: Avoid drawing OSD messages over achievement badges - 618d154ee Qt: Swap table for tree in Game Properties track list - 17284156d Qt: Swap table view for tree in setup wizard game list - 21daf6c87 Qt: Fix window icon for setup wizard - f9ca1f224 Qt: Disable game compat comments button instead of hiding it (#3639) - 63f929e6f Qt: Fix centering of secondary windows - 3b25e7b3a Qt: Use Close button in ControllerCustomSettingsDialog - 952b6c90c ImGuiOverlays: Add missing space - 225623b78 GameDB: Disable auto analog for some games and add missing info (#3640) - f84990bc7 Spanish (Spain) translation update 2025-11-25 (#3641) - 0302d6eef Qt: Use metaobject class name for saving/restoration - f3523508b FullscreenUI: Add gradient to achievement notification background - 8311a0cf5 FullscreenUI: Fix moving achievement points badge - 73823edf5 Qt: Make message box utility parameter order consistent - 459ee1929 Qt: Add QtUtils::AsyncMessageBox() - 5626fe09b Qt: Replace most blocking message boxes with async - c00aac646 GameDB: Increase cdromMaxReadSpeedupCycles for Alundra 2 (#3642) - 6369f38d6 GameDB: Disable read speedup for Gundam Battle Assault 2 (#3643) - e142a321f CDImagePBP: Fix TOC misreporting for some images - 249f8cf4a System: Always use async hardcore cancel on boot - 93f3be46f Achievements: Remove ConfirmHardcoreModeDisable - 08f357f0d System: Avoid load state message on HC disable confirm - 7b6fd224a System: Confirm HC disable on undo load state/reset - 7ce895924 System: Use ConfirmMessageAsync() for SBI-less boot - 5e2b32f33 Host: Remove blocking ConfirmMessage() - 90ec75b4e Achievements: Don't display points badge for 0 points - 48ec26104 Qt: Center game properties window too (#3644) - 548887449 Misc: Eliminate usage of modal progress callback functions - 4290f7595 ProgressCallback: Remove modal methods - 82a44b19b ProgressCallback: Avoid unnecessary struct padding - 3f882cf25 Qt: Add QtAsyncTaskWithProgress class - d1519aa09 Qt: Use QtAsyncTaskWithProgress for dump verification - d8e1418f3 Qt: Use QtAsyncTaskWithProgress for padtest download - cc6bfeb97 Qt: Use QtAsyncTaskWithProgress for ISO Browser extraction - 5b1e0117c Qt: Compile warning fix - cbbfecc0f HTTPDownloader: Set initial indeterminate state - ee1defd43 Qt: Don't try to center on an invisible window - 4cbd01d03 Qt: Get rid of nested event loops in achievement login - 2b2669056 GPU: Simplify PAR calculation - 676165282 Qt: Remove QtAsyncProgressThread - 8fcdf1049 Qt: Get rid of nested event loop in updater - f6bfb739f Qt: Remove QtModalProgressCallback - 243a8afe9 Qt: Simplify updater configuration and process - 1ba3efae7 Qt: Better layout for updater window - e02611726 Qt: Make auto updater window-modal - 9d61e8c4e Qt: Do blocking game list refresh with autoboot without batch - 9fb1172a8 GameDB: Disable auto analog for some titles (#3645) - 58cb4f2e3 FullscreenUI: Update loading/notification run idle on shutdown - 0c6cbf82d Qt: Remove redundant grid layout in updater - 97c9daf1b Qt: Remove unused EmuThread::SystemLock - cc6428645 Qt: Remove unsafe EmuThread isFullscreen() from UI thread - c91446c60 Qt: Remove unused cover downloader signal - 33b532d10 Qt: Remove unused focusDisplayWidget() - 3c00c4d27 Qt: Remove main window surfaceless hackery - b13207a02 Qt: Remove unused fields - a5755d12f Qt: Get rid of multiple sources of truth for fullscreen - f069570b3 Qt: Show update dialog after fullscreen exit completes - 9ee1b02cd Qt: Remove a bunch of unnecessary QSignalBlockers - 8bc3f04be Qt: Try to work out the "real" display scale on MacOS - 03c2ec2ca OpenGLDevice: Fix creation on MacOS - 480d00232 Log: Only include function names for warn/error - 3d27de783 Qt: Fix inverted fullscreen condition - e71a022ad Qt: Fix crash on updater exit - a171c25fb PostProcessing/Slang: Handle option names containing "//" - d6f708430 HTTPDownloader: Use release-acquire ordering for request state - e2b3f6513 HTTPDownloaderCurl: Use worker thread for processing - a1162731a HTTPDownloader: Remove InternalPollRequests() - fe8b8f04a HTTPDownloader: Remove unused default user agent - db9a9e762 Qt: Add indication that update check is in progress - e0a074583 Qt: Fix devbuild check - de36fefad GPU: Re-add missing AR correction - 65e890f7f Qt: Fix incorrect use of toggled signal - b723a8852 GPU: Update CRTC configuration on line offset change - 9aeb6ee79 GameDB: Max speedup cycles and other fixes for some games (#3647) - e3dfc8556 Atualização Português do Brasil (#3649) - d10663961 Qt: Reload game settings after reset to default (#3651) - 9fa42e2f6 Qt: Add close button to "About" dialog - 7a929b1d4 Qt: Allow copying the version string from interface settings - d8a92f7c9 Qt: Fix styling of checked push buttons - d612f8eea Qt: Support populating game list entry at runtime - ed71c45da Qt: Simplify updateEmulationActions() and updateShortcutActions() - 6f80a199f Qt: Pack main window local state in struct - 4a445a051 Qt: Disable Game Properties for PSF/GPUDump - 521a23f5c Qt: Make disc select dialog window-modal - 51524d725 GameDB: Adjust cropping in a number of titles - 577f74a7f GameDB: Increase cdromMaxReadSpeedupCycles for Dino Crisis 2 - e1ca130fd GameDB: Set DisableFastForwardMemoryCardAccess for Lunar - c3b1859f4 HTTPDownloaderCurl: Use INT_MAX timeout - 177afb2af Achievements: Executable read error should not show when starting BIOS - 1706dac0f System: Fix possible deadlock when starting - 5859f0dbf Achievements: Don't try to enable HC mode when starting without disc - 8cfbaca0e Achievements: Don't enable HC mode on reset without game - 682d0075b Achievements: Add missing lock in OnSystemDestroyed() - 547d3495e HTTPDownloaderCurl: Fix crash in worker thread - f3e0fe90d Qt: Rename QtAsyncTaskWithProgress to QtAsyncTaskWithProgressDialog - d1d9008ff Qt: Add QtAsyncTaskWithProgress - 1fccee229 Qt: Use QtAsyncTaskWithProgress for cover downloader - 259cd846a Qt: Use fine-grained cover invalidate in downloader - 621649748 Qt: Disable window rounded corners is only needed on Win32 - 521eee42b Qt: Remove unnecessary application syncs - 843558a16 Qt: Don't create wasteful display container on KDE - df75127fc Qt: Disable AA_DontCreateNativeWidgetSiblings hack on KDE - 11a0abaa8 Qt: Improve widget device pixel ratio detection - 1bf7431b8 Updated Swedish translation (#3648) - 7970287d6 GameList: Fix memcard icon extraction for non-database games - 8e3a65c15 MemoryCard: Show game icon when saving - ceb199b18 System: Add missing game list lock - 3e32deebf Qt: Fix power off system hotkey when fullscreen - c5c5a8041 Achievements: Fix challenge badge display in pause menu - af29ce010 Achievements: Show points for most recent unlock - 0172f220e GPU/HW: Draw small fill sprites with software if TC is enabled - 42c26cf91 Qt: Use ShowOrRaiseWindow() for main window - 84aa42562 Qt: Move lock in ConfirmMessageAsync() - 60dbc5ad3 Qt: Remove unused block_until_done parameter - b42f26fba SDLInputSource: Log the joystick GUID as well (#3653) - e92fb99a1 Qt: Update padtest URL - b4b05ed07 README: Remove non-functional link - 9a8d9d710 Hotkeys: Fix rotation hotkeys not having any effect - 941b62e93 FullscreenUI: Slight tweak to font weights - 241f720cb FullscreenUI: Avoid png/svg name clash for disc icon - 760b7b474 CI: Revert hardcoded Mac cache key - 5650880f9 Deps: Set QT_PREFIX_PATH for Qt on Linux - 801114f4c Deps: Bump SDL3 to 3.2.28 - 1d28a4b38 Deps: Disable GTK when building Qt - 27802bf45 Deps: Set PKG_CONFIG_PATH when building - 0eaf1dd22 GameDB: Add various fixes for some games (#3654) - 9b31d8b57 GameDB: Adjust cropping in a number of titles (part 2) (#3656)
v0.1-10193
## Commits - 2bf14f84e Qt: Don't copy QtConcurrent DLL - b14c17b71 Qt: Set attributes on popup menus - c025da4e5 Qt: Invoke popup menus asynchronously - c5f60c13b Qt: Don't display two popup messages on card open failure - c8ef05a16 Qt: Fix non-native message boxes in Dark Fusion on MacOS - b4f9bc794 InputManager: Remove setting of unused config variable - e3a044a8a Log: Move FastWrite() into macro - 48504711c Qt: Remove a few more instances of QDialog::exec() (#3623) - d45f630a5 Qt: Further tidy up for 4850471 - 87847ed24 Qt: Fix crash when changing toolbar icons - 6c3c02f70 Qt: Use bundled fixed-width font where appropriate - 23d45a35d Data: Swap Roboto Mono for JetBrains Mono - 8ce216e42 Qt: Improve readability of changed bytes in memory view - 67208460f ImGuiOverlays: Tidy up font weight in OSD - 75aee6477 Qt: Set appropriate window icons for subwindows - b3385094f Qt: Provide a central point for getting the app logo - c396f0ab8 Qt: Set game icon as window icon in Game Properties - 5a26f3821 Qt: Add icons to tools menu actions - 085c02d49 Qt: Add more actions to toolbar (hidden by default) - f5bd7c1b0 Qt: Don't include calling function name in Qt logs - 1e57a5b94 Qt: Make the memory card modified state more obvious - 63b99a647 Qt: Use theme icons in Memory Card Editor - f6976c488 Qt: Remove unused function - a29379238 Qt: Remove a bunch of old/unused resources - 4d9f31890 Qt: Use icon theme enum for sort icons - d5037f124 Qt: Remove setDesktopFileName() icon workaround - 483f9ba41 Qt: Allow overriding cover placeholder image - e4d9bed88 Qt: Get rid of the last few QMenu::exec() (#3628) - 16e56d782 Qt: Use icon text instead of duplicate actions - acadbffe1 Achievements: Allow overriding host through config - 8f5a1fdcf Updater: Replace incorrect ANSI Win32 calls - 65ddf1a9f Updater: Make high DPI aware - bda75db0f Updater: Compute window size dynamically - 942422bab Updater: Set application icon - 4a5e17273 Updater: Close button should be disabled - bea07e71a Updater: Set default title - b949c17cc Qt: Improve text elision in InputBindingWidget (#3629) - c8a2f931a Update the Simplified-Chinese Translation. (#3630) - 542a2cf0d Atualização Português do Brasil (#3631) - e7862b9ca Qt: Prefer eliding source over the middle of the binding - b9571a237 GameDatabase: Add DisableAllBordersCrop trait - defbe7061 GameDB: Set DisableAllBordersCrop for Alundra 2 - aecdfd5a1 GPU: Align the memory allocation rather than the class - 012c7de23 GPU/HW: Slightly rearrange data fields - 938a0e50c GPU/HW: Add field for software renderer drawing - a8967b2b4 Settings: Shouldn't be accessing the global object - 654587ea3 System: Add 'Low VRAM' rewind mode - 857a76789 Qt: Fix QAction memory leak on shutdown - e9966cfed Qt: Fix QEventLoop leak on shutdown - b4900c90e dep/imgui: Fix memory leak in imgui_freetype - 704cdef93 Deps: Bump to Qt 6.10.1 - 95563345b Deps: Revert Qt window-modal dialog disabling on Tahoe - f7e6c20fe CMake: Bump Qt version requirement - b79d69b70 Update Russian translation (#3634) - 5b56399d8 CI: Update GitHub actions - 30a0b94a4 CI: Download all artifacts into the same directory - 6146d33fa Qt: Fix game list background on MacOS - 7829d4316 Qt: Add proper alert titles in a couple of areas - 573734eeb Qt: Swap form for grid layouts in setup wizard - 783e7675d Qt: Swap remaining form layouts for grid - 3a43f5993 Update the Simplified-Chinese Translation. (#3635) - 1f7a44c65 Qt: Remove a couple of left-over spacer size hints - 86bf55162 Qt: Warn when executable has been renamed
v0.1-10130
## Commits - 26323f441 GPU/HW: Fix incorrect clamp UV state on setting change - 361bcde48 FullscreenUI: Fix loading screen progress going negative - bdeeecefa GPU/HW: Clamp after round with round upscaling fix - 127cc70ba GameDB: Enable PGXP-CPU for Tekken 3 - a1a763cea GameDB: Set tolerance for Tekken 3 - 639aa3c7f ImGuiOverlays: Fix inconsistent font weight - cb609fc6b ImGuiOverlays: Polish frame time graph - 013cce51c Qt: Return size hint for covers - 475b69baa Qt: Save/restore painter state in achievements delegate - 0b2865730 Qt, FullscreenUI, PostProcessing: Add shader enable/disable toggle. (#3621) - c06e4fea0 Atualização Português do Brasil (#3624) - a9b9e8952 PostProcessing: Rename Enabled -> StageEnabled - 3a1e8fe7a PostProcessing: Load shaders even if disabled - fc97cf514 PostProcessing/slang: Flip textures if using OpenGL - a30106692 Qt: Use QSizeF for device scaled sizes - fa965cf9f Qt: Use delegate for drawing covers - cad8b4376 PostProcessing: Fix starting with all stages disabled - 6581e8e3b PostProcessing: Fix unscaled input sizes if first stage disabled - 29d5598de PostProcessing: Fix slang+overlay+odd shader count combination - a742164b6 GameDB: Increase cdromMaxReadSpeedupCycles for Discworld Noir (#3625) - 66c924e29 GameDB: Max speedup cycles for Bugs Bunny - Lost in Time & Bugs Bunny and Taz - Time Busters (#3626) - e2cd5e79a GameDB: Max speedup cycles for Street Fighter Alpha 2 & 3 and Super Puzzle Fighter II (#3627) - 34484d4f9 CDImageDevice: Fix compiling in Unicode mode - fa793ce3a Updater: Fix compiling in Unicode mode - 65be533ad Build: Use C17 for MSBuild - c953480ed Build: Use Unicode as default MSBuild character set - d532acb39 Build: Use VS2026 build tools - 7e7e51db0 D3D12Device: Remove unused class member - df547195a README: Bump VS version requirement to 2026 - ef2086b2c Qt: Silence new warning from VS2026 - d1f26eef3 Qt: Fix a bunch of implicit conversion warnings - 35e3d9a4d Qt: Get window sizes from OS instead of scaling Qt size - 3099f5f3d Qt: Fix game grid selection rect bottom/right edges - 4c56f06ff Qt: Style check boxes in Darker Fusion - 0edf71bd0 GPU: Fix 480i resolution display with force progressive - 982035fbc GPU: Remove implicit bool conversion - 754591f27 StringUtil: Add GetUTF8CharacterCount() - b9b1b13fb Qt: QtConcurrent is no longer needed - 3d6627c7a Qt: Speed up interface page creation
v0.1-10091
## Commits - e7f403467 FileSystem: Add LockedFile helper class - 84806d305 GameList: Use LockedFile class - ac4634c28 Add StringPool and BumpStringPool classes - a035c4872 GameList: Fall back to achievement badges for game icons - 3d2c3c919 GameList: Avoid a couple of heap allocations - 89e3ba29a Qt: Fix warning - 2b3c7e00c Qt: Initialize COM before Qt - 2ff9c67c7 Qt: Replace table widget in Game List Settings - 70185cb69 Update Russian translation (#3587) - e96a85d29 Atualização Português do Brasil (#3588) - bd6e747c6 GameDB: Fix serials for Black-Matrix + - 2a0fe0a75 GameDB: Add disc set for GT2 US - 41b8f2bf7 CI: Remove Flatpak builds - a49d0b665 PostProcessing/GLSL: Skip recompile on target size change - 8520e3f94 System: Work around lupdate bug causing hang - f2291eaaf Deps: Build Qt Declarative/ShaderTools - 33a342751 Deps: Remove build directory after each library - 7deb374cf Deps: Hopefully work around path length limits - bae05a7f6 SDLInputSource: Change default for WGI to off - 5653f8dd6 ImGuiManager: Don't let non-imgui keys through - 2c03fb915 ImGuiManager: Use static key map - 1fbf08398 FullscreenUI: Move ImGuiFullscreen to core - 836fd9bcf FullscreenUI: Make file naming consistent - fab4b05bc FullscreenUI: Remove ImGuiFullscreen namespace - e36ea9e3a FullscreenUI: Remove more redundancy - 9cbcf7809 FullscreenUI: Move transition handling to widgets file - 8c25144ab FullscreenUI: Always initialize widgets - 983cde33b FullscreenUI: Make notifications/toasts thread-safe - b1cd5625f System: Don't add to the pause timer when we're already paused - 2bc387fe3 FullscreenUI: Fix returning to window that was open - ba28a3fb3 Achievements: Cache user badge path - dc7a7ed6b FullscreenUI: Split settings into its own file - cc2ee0068 FullscreenUI: Split game list into its own file - f4f8aa587 FullscreenUI: Defer more resource loads - 10a7d8ad4 FullscreenUI: More scope clean up - bed758a75 FullscreenUI: Move translation strings to own file - 32aa86a60 FullscreenUI: Move achievements to its own file - 45d3c6657 FullscreenUI: Simplify game properties state - 476c1c5b9 FullscreenUI: Make OpenOrUpdateLoadingScreen() thread safe - 9ca1c9730 Mini: Compile fix - f2dd91c87 RegTest: Compile fix - a52020bcf DMA: Reduce linked list header read time - aa980a44c GPU: Don't save settings to save state - 9977e1dca FullscreenUI: Disable rewind options when runahead is enabled (#3589) - b4a868c5c Update the Simple-Chinese Translation to latest. (#3591) - 751781325 Settings: Remove CD speedup above 6x - cab6669eb DMA: Speed up RAM write with CDROM speedup - 93b4c3467 FullscreenUI: Fix missing logo on landing page - 3d6c042ff FullscreenUI: Fix missing lock for settings read - 9fa8b17cb FullscreenUI: Fix a couple of missing strings - e48649bc2 FullscreenUI: Remove unused variable - 0776e2f9c Qt: Clear style sheet before applying theme - 2fb377359 Qt: NativeThemeStylesheetNeedsUpdate() should not apply to Fusion - d9e363f84 Qt: Add message box helpers - db7598ffa Qt: Use message box wrapper functions - 8775ca0ff Qt: Convert more message boxes to window modal - 6432ac103 Qt: Fix non-rounded buttons in achievement login - 326a6e391 CMake: Fix scmversion.cpp always updating on Mac - 7414ed92e Update the Simplified-Chinese Translation. (#3592) - eb23999d6 Atualização Português do Brasil (#3593) - b237604ac GPUDevice: Don't log warning for WARP driver - 5818a05be Achievements: Add point count to unlock popup - 5a7094b81 Achievements: Use consistent icon style in list - de08a2fff CMake: Only remap source path in Release builds - a44c8466e CMake: Fix Xcode project debugging - 0fec148e0 GPU/HW: Add missing padding to UBOs - eefcd9071 GPU/HW: Avoid some redundant calls in Metal - 24ae4a5d2 FullscreenUI: Fix uniform push before pipeline set - b858fe5e9 GPUDevice: Display OSD message if debug settings are enabled - 2c2fb1d49 D3D12Device: Fix incorrect StencilBeginningAccess/StencilEndingAccess - cff3ece1a VulkanDevice: Fix incorrect struct type - 05701fef4 GPUDevice: Make dyn libs public - fcde8c776 dep/reshadefx: Cherry-pick upstream 74e95dd - a038c88d2 dep/reshadefx: Work around inability to discard in function in DXC - d82ae473a CI: Bump minimum macOS version to 13.0 - e89ab8311 Qt: Misc code cleanups - 49762aa49 Qt: Fix column width estimation in game list - 59d0f3c01 Qt: Fix game icon size and row height in game list - 458ad1334 Qt: Take header width into account for all columns - 94cfc9ba2 Update the Simplified-Chinese Translation. (#3594) - efa6e4aec Common: Use NSAlert for assertion failures/panics - c5d93583d GameDatabase: Add DisableFastForwardMemoryCardAccess trait - 1999b0df6 GameDB: Set DisableFastForwardMemoryCardAccess for Twisted Metal 4 - f6cdf95b6 Qt: Fix positioning of game list achievements icon - cd8d6d838 Qt: Remove game icon extra size - d54234444 Qt: Don't need these functions defined in the header - b8764e8c1 Qt: Add exit specific message for confirmation dialog - 88802e0d0 GameList: Fix achievement game ID not set for disc sets - 8c0878882 Qt: Normalize shut down labels - 7bba98af3 Update the Simplified-Chinese Translation. (#3596) - 5f6b690b9 Atualização Português do Brasil (#3597) - d0bbf8ca1 GameDB: Set DisableFastForwardMemoryCardAccess for Tales of Destiny - 5a49db071 Qt: Reflect DisableFastForwardMemoryCardAccess trait in the settings UI - 97db72cb2 Achievements: Fix display of game completion time (#3599) - bfc6da257 GameDB: Disable disc speedup on MDEC for Warcraft II (#3600) - a929aaf19 Update Russian translation (#3601) - b797aae28 GPU: Fix a couple instances of reading wrong thread settings - 0841ab4b9 Qt: Fix disc swap from game list incorrectly pausing - c33354e2d Qt: Don't hold game list lock on popup - dc5b57aa4 Qt: Missed a couple of shutdown -> close messages - b483d2f61 ImGuiManager: Add title variants for OSD messages - 529da22ef System: Use new OSD message variants - 0d4ffde7c Qt: Allow command line boot of device path - 22220853d Qt: Fix recommended value for "Challenge Indicators" (#3603) - 3e6dd9b9a System: Simplify and polish more OSD messages - 899d500d3 GPU: Fix compile warning - 5de231ca5 System: Fix regtest build - 863b9b10a Qt: Minor layout fixes in analog controller binding widget (#3604) - 683ccbf21 GPUDevice: Swap ImGui rendering to use UBO - 6848f07c5 GPUDevice: Combine draw and push constant functions - 916b23f85 GPUDevice: Use separate buffer for push constants - 47c820455 GPUDevice: Add MultiTextureAndUBOAndPushConstants pipeline layout - b43111f36 GPUDevice: Remap input attributes when transpiling to HLSL - 4729e2257 GPUDevice: Handle non-contiguous texture bindings in SPV transpiling - 08317d947 GPUDevice: Set fixed names for UBO/push constants in SPV transpiling - 9a5eadd86 GPUDevice: Add SRGBA8 texture format - af5c3fac4 GPUDevice: Fix mipmap generation on targets - d06f306f8 GPUDevice: Ensure clear is committed in MakeReadyForSampling() - eb0a8890e MetalDevice: Fix creating mipmapped textures with generate flag - fc618b8b6 SPIRVModule: Add class for iterating/manipulating SPIR-V - 81fb8014a PostProcessing: Support unscaled input - 8a732ded4 PostProcessing: Support loading slang shaders/presets - 77b1abf5e MemoryCard: Fix off-by-one reporting in card number - 9a5e0c902 ShaderGen: Fix ImGui rendering with Vulkan - 5da178eb2 Update the Simplified-Chinese Translation. (#3605) - 4ec6752fe GPUPresenter: Handle padding for unscaled/slang input - b04b87a73 PostProcessing: Use titled OSD messages - 042bc7945 ImGuiManager: Use different OSD title/text colours - 5ca35363d CPU/Recompiler: Set up frame pointer on Windows ARM64 - 49a1446fb Common: Fix SSE2 build - 85275a196 Qt: Add missing help text in Interface Settings - b0689d54e FullscreenUI: Move loading screen progress callback into namespace - b4d71cb66 Qt: Save position of settings windows - 70352b69c Qt: Center windows when they don't have saved positions - f5fc2474a Qt: Resolve command line paths before autobooting - 520502dab FileSystem: Fix RealPath() with relative paths - e91db67c7 Qt: Reload icons and tooltips when game list rows change (#3609) - a1889a20b Qt: Add standard shortcut to open settings (#3608) - 0c7e8f3d8 Qt: Fix overlapping widgets in cheat settings (#3607) - a5e20511d Update the Simplified-Chinese Translation. (#3606) - 2a350960b FullscreenUI: Fix misdetection of some light themes - cebb1348a FullscreenUI: Fix button-held colour in menus - de2e89ea9 Settings: Ensure slang shaders subdirectory is created - a8e922c45 Qt: Improve Darker Fusion style - 7080e98bc PostProcessing/slang: Don't balk at duplicate option names - a88cfbee6 PostProcessing/slang: Raise error if too many textures are bound - d6f4fc7f1 PostProcessing: Ensure input buffer matches present format - 14481affb Qt: Bring toolbar checked background closer to combo background - d58f2d022 Qt: Make auto/clear bindings buttons QPushButtons - a22d3a794 Qt: Style more widgets in Darker Fusion - f9cab709b INISettingsInterface: Use case sensitive storage - dd0c7ec9f GPU: Insert null field buffer if display disabled - 8b217b5cc GPU: Fix OSD reporting of non-interleaved interlaced resolution - df4d04c86 Qt: Style patches widget on Mac - d598470de Scripts: Remove Flatpak manifest - 42cf66cbd FullscreenUI: Fix achievement points placement with short description - 3d39fe268 GPU: Don't crash if first frame is interlaced+black - 15d70ffb1 GameDB: Max speedup cycles for Discworld and Discworld Noir (#3611) - 51726e3be Atualização Português do Brasil (#3612) - fbc99916f PostProcessing/Slang: Remap and skip binding unused textures - dca565a2f GameDB: Adjust crop area for Gran Turismo 2 (#3613) - 28b911137 Deps: Bump MacOS deployment target to 13.0 - 9ed525429 Deps: Patch Linguist to build without Qt Quick - d797ca483 Deps: Don't build qtdeclarative - 8302a6b9e Deps: Remove unused CMake argument - 082ba2164 Deps: Update versions - 8dc0b99ee VulkanDevice: Fix off-by-one in assertion - a49b351db CMake: Bump SDL version requirement - cb5ab7292 Qt: Fix qrc generation script ordering differently - 3e2595847 Qt: Add dialog for adding postfx shaders - 242280d6e GPU: Rearrange and reduce struct padding - ac30cf341 GPU: Display emulated GPU usage in stats - e4797b1ca Qt: Add 'Open Directory' button to post-processing settings - de250b86c Qt: Increase spacing in game list toolbar - c00428669 Qt: Improve shader add dialog - 93f4e40bf Ajuste (#3615) - 859e1908b Updated Swedish translation (#3614) - c2737f953 Spanish (Spain) translation update 2025/11/07 (#3616) - 62054ba97 Qt: Fix canceling shader selection dialog (#3617) - 00444fd91 GameDB: Max speedup cycles for Discworld II (#3618) - 2059e9bba Update the Simplified-Chinese Translation. (#3619) - 326016d1d GameDB: Set max speedup cycles to 35k for Alundra 2 - fbffdbc96 GameDB: Disable widescreen for Digimon World - 652ce9ef3 GameDB: Set DisableFastForwardMemoryCardAccess for Broken Sword II - 540e02a2e GameDB: Add various comments - bf0c0fd95 GameDB: Decrease cdromMaxReadSpeedupCycles for AITD4 and Dino Crisis 2 - 63d5c3424 System: Fix use of moved string in error path - 4a246a74a GPU: Avoid unnecessary postfx source preprocess when upscaling

Captures d'écran

Metal Gear Solid dans DuckStation