Commit Graph

45129 Commits

Author SHA1 Message Date
JosJuice
5aacc1ca7c
Merge pull request #13991 from SuperSamus/branch-watch-optional-emit
Jit: Emit Branch Watch code only if it's enabled
2026-02-15 12:07:35 +01:00
Martino Fontana
c9457cf906 Jit: Emit Branch Watch code only if it's enabled
JIT code related to Branch Watch was emitted if the debugging UI was active: the emitted code would dynamically check whether Branch Watch is active.
However, this causes two problems:
1. It decreases performance by just having the debugging UI enabled
2. It clutters the host assembly in the JIT tab, making it harder to read (unaware readers will wonder what these instructions are for)

With this PR, code related to Branch Watch is emitted only if Branch Watch itself is active, fixing the issues above.
The JIT cache will now be wiped whenever the feature is toggled, causing a slight stutter. However, this isn't the kind of feature that is toggled over and over, so IMO it is an acceptable trade-off.
2026-02-15 11:03:02 +01:00
JMC47
4e0a4fe5df
Merge pull request #14361 from Windsurf7/monkeyballbanana-gameini
GameINI: Formatting updates to Super Monkey Ball on wii
2026-02-15 03:47:06 -05:00
JMC47
cbcaba1856
Merge pull request #14360 from Windsurf7/monkeyballadv-gameini
GameINI: Formatting updates to Super Monkey Ball Adventure
2026-02-15 03:46:13 -05:00
JMC47
93afe0858c
Merge pull request #14370 from Windsurf7/warioworld-gameini
GameINI: Formatting updates to Wario World
2026-02-15 03:45:19 -05:00
JMC47
bbd275ccea
Merge pull request #14377 from Windsurf7/lozfsa-gameini
GameINI: Formatting updates to The Legend of Zelda Four Swords Advent…
2026-02-15 03:44:44 -05:00
JMC47
e387fa3732
Merge pull request #14385 from dreamsyntax/cpu-clock-max
Qt/Android: CPU Clock Override max to 500%
2026-02-15 03:38:23 -05:00
Dentomologist
b398dc38e0
Merge pull request #12917 from JosJuice/transfer-sysconf-control
Explicitly transfer control of SYSCONF to emulated system
2026-02-14 11:35:59 -08:00
JosJuice
1cc9e8352f
Merge pull request #14329 from JosJuice/android-hotplug
Android: Rework input device hotplug
2026-02-14 17:43:38 +01:00
JosJuice
5440c7737f Explicitly transfer control of SYSCONF to emulated system
The functions SaveToSYSCONF and LoadFromSYSCONF contain checks for
whether emulation is running. The intent of this is that when we're
emulating a Wii, the emulated system may write to SYSCONF whenever it
likes and does not expect anything else to write to SYSCONF, so the
host code shouldn't access SYSCONF while emulation is ongoing. However,
Core::IsRunning is an imperfect proxy for whether we've handed over
control of SYSCONF to the emulated system yet, as the actual handover
happens at a slightly different point in time than when the emulation
state is changed. This usually isn't a problem, but in theory it could
be a determinism problem if a setting is changed right as emulation is
starting, or it could cause the emulated software to briefly misbehave
if a setting is changed right as emulation is stopping.

Things got worse in 72cf2bdb87 when I
replaced the Core::IsRunning calls with !Core::IsUninitialized. With
IsRunning, there was be a period of time where SYSCONF should have been
protected but wasn't. With !IsUninitialized, there was a period of time
where SYSCONF shouldn't have been protected but was, and crucially, this
period of time included the moments where we do setup and teardown of
the emulated NAND, which broke transferring SYSCONF settings between the
host and the guest. 72cf2bdb87 was
reverted because of this.

This commit adds a flag that we explicitly flip when control is handed
over to or from the emulated system. This protects the SYSCONF file
for exactly as long as is needed.
2026-02-14 10:05:27 +01:00
JMC47
1a0cbe29be
Merge pull request #14375 from Windsurf7/loztp-gameini
GameINI: Formatting updates to The Legend of Zelda Twilight Princess
2026-02-13 17:01:51 -05:00
Windsurf7
2c2a8c5c40 GameINI: Formatting updates to The Legend of Zelda Four Swords Adventures
This PR provides formatting updates to The Legend of Zelda: Four Swords Adventures.

All regions:
* Title fixed.
2026-02-13 05:05:01 +03:00
Windsurf7
5c879a4973 GameINI: Formatting updates to The Legend of Zelda Twilight Princess
This PR provides formatting updates to The Legend of Zelda: Twilight Princess.

All regions:
* Formatting fixes.
2026-02-13 05:01:36 +03:00
Windsurf7
3ea6a26822 GameINI: Formatting updates to Wario World
This PR provides formatting updates to Wario World.

All regions:
* Formatting fixes to match other Nintendo games.
2026-02-13 04:50:06 +03:00
dreamsyntax
e1e1485582 Qt/Android: CPU Clock Override max to 500% 2026-02-12 18:39:05 -07:00
Windsurf7
7d9254898c GameINI: Formatting updates to Super Monkey Ball on wii
This PR provides formatting updates to Super Monkey Ball: Banana Blitz & Super Monkey Ball: Step and Roll.

All regions:
* Formatting fixes.
2026-02-13 04:23:37 +03:00
Windsurf7
d8ca279ca5 GameINI: Formatting updates to Super Monkey Ball Adventure
This PR provides formatting updates to Super Monkey Ball Adventure.

All regions:
* Formatting fixes.
2026-02-13 04:21:40 +03:00
JosJuice
ea80945912
Merge pull request #14342 from sepalani/hdr-mic
IOS/USB: Add missing vector header in Emulated/Microphone.h
2026-02-11 20:25:34 +01:00
JosJuice
112fcc9a97
Merge pull request #14341 from sepalani/hdr-exi
EXI_Device: Add missing include for PanicAlertFmtT
2026-02-11 20:23:22 +01:00
Dentomologist
59d255e8e7
Merge pull request #14332 from ElTioRata/megaman-ws
Gecko/AR - Widescreen Fix for Mega Man X - Command Mission
2026-02-11 11:07:15 -08:00
Sepalani
6f3282e073 IOS/USB: Add missing vector header in Emulated/Microphone.h 2026-02-11 18:25:15 +04:00
Sepalani
ddcf0413c1 EXI_Device: Add missing include for PanicAlertFmtT 2026-02-11 18:08:41 +04:00
Dentomologist
fe517e2287
Merge pull request #14339 from jordan-woyak/pointer-wrap-no-do-pointer
ChunkFile: Prevent PointerWrap::Do(T&) from compiling with pointers.
2026-02-10 19:20:13 -08:00
Jordan Woyak
2ba9af9e60 ChunkFile: Prevent PointerWrap::Do(T&) from compiling with pointers. 2026-02-10 06:44:36 -06:00
JMC47
7e60de1cfa
Merge pull request #14337 from SuperSamus/revert-7694-MKWDeferred
Revert "Disable Deferred EFB Copies on Mario kart Wii"
2026-02-09 18:38:04 -05:00
Martino Fontana
f84cb40e2c
Revert "Disable Deferred EFB Copies on Mario kart Wii" 2026-02-09 22:59:03 +01:00
JosJuice
ebc8c9d857
Merge pull request #14330 from oltolm/static
Misc: fix compiler warning: implicit declaration of function
2026-02-08 20:58:39 +01:00
ElTioRata
0bc5a8acb8 Gecko/AR - Widescreen Fix for Mega Man X - Command Mission 2026-02-08 16:09:14 -03:00
JosJuice
bd92388d2f Android: Rework input device hotplug
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-08 10:38:43 +01:00
oltolm
60351c19cc Misc: fix compiler warning: implicit declaration of function 2026-02-08 00:37:29 +01:00
Dentomologist
a8fbe8f28f
Merge pull request #14311 from LillyJadeKatrin/retroachievements-aliases
RetroAchievements - Fix Aliases
2026-02-06 15:44:36 -08:00
JMC47
c792454f79
Merge pull request #14326 from sepalani/ico-wii-speak
WiiSpeakWindow: Add missing Dolphin icon
2026-02-06 12:16:43 -05:00
Admiral H. Curtiss
b4cc818fad
Merge pull request #14315 from Gabriela-Orzechowska/fix_riivo_params
RiivolutionParser: Fix XML Param Parsing
2026-02-06 17:58:54 +01:00
Gabriela Orzechowska
b4a67351c0 RiivolutionParser: Fix XML Param Parsing 2026-02-06 18:06:27 +01:00
Sepalani
998de8ad8b WiiSpeakWindow: Add missing Dolphin icon 2026-02-06 16:31:09 +04:00
JMC47
c4b913d9da
Merge pull request #13768 from JosJuice/page-table-fastmem-2
Core: Create fastmem mappings for page address translation
2026-02-04 16:20:35 -05:00
JosJuice
35ce08fb88 UnitTests: Add PageTableHostMappingTest 2026-02-04 21:35:22 +01:00
JosJuice
94283c9639 Core: Don't call InitMMIO from MemoryManager::Init
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-04 21:35:22 +01:00
JosJuice
b0e2a28e14 Core: Combine guest pages into host pages larger than 4K
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-04 21:35:22 +01:00
JosJuice
0ce95299f6 Core: Don't create page table mappings before R/C bits are set
This gets rid of the hack of setting the R and C bits pessimistically,
reversing the performance regression in Rogue Squadron 3.
2026-02-04 21:35:22 +01:00
JosJuice
9462e9d890 Core: Update page table mappings incrementally
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-04 21:35:20 +01:00
JosJuice
7b885b857e Core: Postpone page table updates when DR is unset
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-04 21:34:07 +01:00
JosJuice
083f3a7e0e Core: Create fastmem mappings for page address translation
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-04 21:33:56 +01:00
Jordan Woyak
64d40316d0
Merge pull request #14318 from jordan-woyak/RunOnCPUThread-always-non-blocking
Core: Make RunOnCPUThread always non-blocking.
2026-02-03 20:46:43 -06:00
Jordan Woyak
201aa65906 Core: Make RunOnCPUThread always non-blocking. 2026-02-03 17:29:17 -06:00
Jordan Woyak
dd2b94cd4a
Merge pull request #13594 from jordan-woyak/state-cleanups
State: Simplify interthread communication and general cleanups.
2026-02-03 16:50:52 -06:00
Jordan Woyak
eac7b29042
Merge pull request #14314 from JMC47/shodown
GameINI: Force Safe Texture Cache to Samurai Shodown Anthology
2026-02-02 22:26:13 -06:00
JMC47
c7de916276
Merge pull request #14316 from JoshuaVandaele/resourcefix
ResourcePack: Fix loading resource packs
2026-02-02 15:05:51 -05:00
Joshua Vandaële
d87e8ab7ff
ResourcePack: Fix loading resource packs
This is something I missed when updating minizip, this mistake made it so resource packs didn't find any textures
2026-02-02 20:01:58 +01:00
JosJuice
d3ec630904 Core: Pre-shift pagetable_hashmask left by 6
This will make the upcoming commits just a little bit neater to
implement.
2026-02-01 12:39:33 +01:00