summaryrefslogtreecommitdiff
path: root/Source
AgeCommit message (Collapse)Author
2026-02-13Cheat Search: Add ability to delete items and fix duplicate commands when ↵TryTwo
multiple row items are selected. Changes it to select rows then extracts one item from each row to operate on. The behavior and data across each item in a row was already identical, so using rows doesn't change anything.
2026-02-13VideoCommon: Invert interaction between Arbitrary Mipmap Detection and GPU ↵Martino Fontana
Texture Decoding (the former disables the latter) Split from #14293. It makes sense for a setting that changes visual output to have priority over a setting that barely makes any difference.
2026-02-12Qt/Android: CPU Clock Override max to 500%dreamsyntax
2026-02-11Merge pull request #14342 from sepalani/hdr-micJosJuice
IOS/USB: Add missing vector header in Emulated/Microphone.h
2026-02-11IOS/USB: Add missing vector header in Emulated/Microphone.hSepalani
2026-02-11EXI_Device: Add missing include for PanicAlertFmtTSepalani
2026-02-10ChunkFile: Prevent PointerWrap::Do(T&) from compiling with pointers.Jordan Woyak
2026-02-08Android: Rework input device hotplugJosJuice
Previously, when an input device was connected or disconnected, we would recreate all devices. This commit makes it so we only touch the relevant device instead. This matters because recreating a device causes us to drop all held buttons for that device. Due to Android only delivering inputs as events, we're unable to poll for currently held buttons when recreating a device. This recently became a problem for users of Ayn devices due to a firmware update. Every now and then, something about the display viewports changes, triggering an update to an input device that I assume is a touch input device. This input device isn't something users normally map in Dolphin's controller settings, but it changing was causing Dolphin to drop all held buttons for the device's built-in gamepad as well as any other connected gamepads.
2026-02-08Misc: fix compiler warning: implicit declaration of functionoltolm
2026-02-06Merge pull request #14311 from LillyJadeKatrin/retroachievements-aliasesDentomologist
RetroAchievements - Fix Aliases
2026-02-06PerformanceMetrics: Clamp graph minimum auto sizeDentomologist
Add a minimum value for the automatic size of the performance metrics graph. The graph can still be manually resized smaller than this limit. This prevents the graph from automatically resizing itself to be too small to contain the full graph and legend, which happened when using native resolution with `Auto-Adjust Window Size` enabled.
2026-02-06PerformanceMetrics: Fix automatic graph resizingDentomologist
Fix a bug causing the performance graph to not resize when the render window changed size: * When changing the render window size during emulation the performance graph wouldn't update its size until the next emulation session. * When changing the render window size with no emulation active (by changing the Internal Resolution with Auto-Adjust Window Size enabled) the performance graph wouldn't update its size until the second emulation session after the change. Before explaining why the bug happened, here are some details about Dear ImGui (henceforth ImGui) for context: * In order to allow programs to specify initial ImGui window sizes while also allowing the user to resize them, `SetNextWindowSize` takes a flag from the `ImGuiCond_` enum specifying under what circumstances that function should actually have any effect. * ImGuiCond_FirstUseEver causes ImGui to only apply the command when the window doesn't have any saved size information for that session or in the ini file specified by `ImGui::GetIO().IniFilename`. Since we set that filename to `nullptr`, in practice the resize command is applied on the first frame of each ImGui/emulation session. * Qt saves the most recent size of the render window across emulation (and even Dolphin) sessions, which is then used to set the initial value of `ImGui::GetIO().DisplaySize` in the next emulation session. * It takes multiple frames for the size of the render window to update when changed by setting the internal resolution. This means that `ImGui::GetIO().DisplaySize` will have a stale value in the intervening frames, and specifically for the first few frames of emulation if the resolution was changed beforehand. When changing the resolution during emulation the call to `SetNextWindowSize` had no effect because of the `ImGuiCond_FirstUseEver` flag. `DisplaySize` would be updated several frames later, and then the next emulation session would update the graph size on its first frame. When changing the resolution outside emulation and then starting a game, the call to SetNextWindowSize on the first frame took effect but used the stale value of `DisplaySize`. `DisplaySize` would be updated a few frames later, but the graph wouldn't be resized until the first frame of the second emulation session. This commit fixes the issue by using the `ImGuiCond_Always` flag in the performance graph's call to `SetNextWindowSize` when the render window size changes.
2026-02-06PerformanceMetrics: Add padding below graphDentomologist
Add vertical padding between the performance graph (when it's enabled) and the FPS/VPS/Speed overlays.
2026-02-06Merge pull request #14326 from sepalani/ico-wii-speakJMC47
WiiSpeakWindow: Add missing Dolphin icon
2026-02-06Merge pull request #14315 from Gabriela-Orzechowska/fix_riivo_paramsAdmiral H. Curtiss
RiivolutionParser: Fix XML Param Parsing
2026-02-06RiivolutionParser: Fix XML Param ParsingGabriela Orzechowska
2026-02-06WiiSpeakWindow: Add missing Dolphin iconSepalani
2026-02-04Merge pull request #13768 from JosJuice/page-table-fastmem-2JMC47
Core: Create fastmem mappings for page address translation
2026-02-04UnitTests: Add PageTableHostMappingTestJosJuice
2026-02-04Core: Don't call InitMMIO from MemoryManager::InitJosJuice
In the unit test I'm adding in the next commit, I want to call MemoryManager::Init, but initializing all the hardware that MemoryManager::InitMMIO calls into would be cumbersome. Calling MemoryManager::InitMMIO from MemoryManager::Init was a bit strange anyway. Because MemoryManager::Init is called about halfway through HW::Init, some of the hardware that MemoryManager::InitMMIO calls into isn't initialized yet.
2026-02-04Core: Combine guest pages into host pages larger than 4KJosJuice
Most systems that Dolphin runs on have a page size of 4 KiB, which conveniently matches the page size of the GameCube and Wii. But there are also systems that use larger page sizes, notably Apple CPUs with 16 KiB page sizes. To let us create host mappings on such systems, this commit implements combining guest mappings into host page sized mappings wherever possible. For this to work for a given mapping, not only do four (in the case of 16 KiB) guest mappings have to exist adjacent to each other, but the corresponding translated addresses also have to be adjacent, and the lowest bits of the addresses have to match. When I tested a few games, the following percentages of guest mappings met these criteria: Spider-Man 2: 0%-12% Rogue Squadron 2: 39%-42% Rogue Squadron 3: 28%-41% So while 16 KiB systems don't get as much of a performance improvement as 4 KiB systems, they do still get some improvement.
2026-02-04Core: Don't create page table mappings before R/C bits are setJosJuice
This gets rid of the hack of setting the R and C bits pessimistically, reversing the performance regression in Rogue Squadron 3.
2026-02-04Core: Update page table mappings incrementallyJosJuice
Removing and readding every page table mapping every time something changes in the page table is very slow. Instead, let's generate a diff and ask Memmap to update only the diff.
2026-02-04Core: Postpone page table updates when DR is unsetJosJuice
Page table mappings are only used when DR is set, so if page tables are updated when DR isn't set, we can wait with updating page table mappings until DR gets set. This lets us batch page table updates in the Disney Trio of Destruction, improving performance when the games are loading data. It doesn't help much for GameCube games, because those run tlbie with DR set. The PowerPCState struct has had its members slightly reordered. I had to put pagetable_update_pending less than 4 KiB from the start so AArch64's LDRB (immediate) can access it, and I also took the opportunity to move some other members around to cut down on padding.
2026-02-04Core: Create fastmem mappings for page address translationJosJuice
Previously we've only been setting up fastmem mappings for block address translation, but now we also do it for page address translation. This increases performance when games access memory using page tables, but decreases performance when games set up page tables. The tlbie instruction is used as an indication that the mappings need to be updated. There are some accuracy downsides: * The TLB is now effectively infinitely large, which matters if games don't use tlbie when modifying page tables. * The R and C bits for page table entries get set pessimistically rather than when the page is actually accessed. No games are known to be broken by these inaccuracies, but unfortunately the second inaccuracy causes a large performance regression in Rogue Squadron 3. You still get the old, more accurate behavior if Enable Write-Back Cache is on.
2026-02-03Core: Make RunOnCPUThread always non-blocking.Jordan Woyak
2026-02-03Merge pull request #13594 from jordan-woyak/state-cleanupsJordan Woyak
State: Simplify interthread communication and general cleanups.
2026-02-02ResourcePack: Fix loading resource packsJoshua Vandaële
This is something I missed when updating minizip, this mistake made it so resource packs didn't find any textures
2026-02-01Core: Pre-shift pagetable_hashmask left by 6JosJuice
This will make the upcoming commits just a little bit neater to implement.
2026-02-01Core: Detect SR updatesJosJuice
2026-02-01Common/MemArena: Add function for getting page sizeJosJuice
2026-01-31Merge pull request #14204 from Geotale/update-commentDentomologist
Update Comments Based On Hardware Test
2026-01-31WGL: Correctly load wglDestroyPbufferARB extensionJoshua Vandaële
2026-01-30RetroAchievements - Fix AliasesLilly Jade Katrin
It turns out that it is possible to create a login alias in RetroAchievements such that you can log in with a username that doesn't match your display name. AchievementManager was treating this as a synchronization error, but this is desired behavior, so this removes the check.
2026-01-27feat: Add an option to preserve audio pitch when emulation speed changes, ↵Sam Belliveau
integrating it into core configuration and both Qt and Android UIs.
2026-01-26InputConfig: Remove unused local variablesDentomologist
Remove unused vector `controller_names` from `LoadConfig` and `SaveConfig`. The vector has names added to it but they're never used. Prior to d03f9032c129e440e4f07d319be8b52500798e07 these vectors were passed to `DynamicInputTextureManager::GenerateTextures`, but that commit removed those calls.
2026-01-25Merge pull request #14253 from JosJuice/dsp-hle-memoryOatmealDome
DSP: Remove HLEMemory functions
2026-01-25Merge pull request #14036 from TellowKrinkle/SkipPostprocessOatmealDome
CMake: Default SKIP_POSTPROCESS_BUNDLE to ON
2026-01-25Merge pull request #14214 from JoshuaVandaele/cmake-nonbreaking-improvementsDentomologist
CMake: Various improvements
2026-01-25Merge pull request #14302 from oltolm/opengl_assertOatmealDome
DX, OGL: fix assert
2026-01-25Remove unused importsMartino Fontana
Yellow squiggly lines begone! Done automatically on .cpp files through `run-clang-tidy`, with manual corrections to the mistakes. If an import is directly used, but is technically unnecessary since it's recursively imported by something else, it is *not* removed. The tool doesn't touch .h files, so I did some of them by hand while fixing errors due to old recursive imports. Not everything is removed, but the cleanup should be substantial enough. Because this done on Linux, code that isn't used on it is mostly untouched. (Hopefully no open PR is depending on these imports...)
2026-01-24Merge pull request #14303 from Sintendo/game-iniJMC47
Core: Pass game ID as string_view
2026-01-24Merge pull request #14230 from Sintendo/file-searchJosJuice
Common/FileSearch: Refactor DoFileSearch
2026-01-24DX, OGL: fix assertoltolm
2026-01-24Merge pull request #14216 from iwubcode/gameid_fifo_logJMC47
Core: add game id to fifo log header
2026-01-24Core/NetPlayServer: Pass game ID as string_viewSintendo
2026-01-24Core/ConfigManager: Refactor LoadGameIni and friendsSintendo
2026-01-24Core/AchievementManager: Refactor IsApprovedCode and usersSintendo
2026-01-24Core/ConfigLoaders: Refactor GetGameIniFilenamesSintendo
2026-01-24Remove VectorToJStringArraySintendo