Commit Graph

15349 Commits

Author SHA1 Message Date
Admiral H. Curtiss
fee15d96ad
Merge pull request #14719 from cscd98/m3u-fix
m3u: normalize line endings except win32
2026-07-14 19:14:59 +02:00
OatmealDome
990b421233
Merge pull request #14728 from Simonx22/android/api37-ndk30-dependency-updates
Android: Update dependencies and build tools
2026-07-13 01:00:52 -04:00
Simonx22
aeb3fec03a Android: Update dependencies and build tools
Update Android dependencies and build tools to their latest available versions.

Rename the GameCube save magic constant to avoid a collision with the NDK 30 ARM64 signal context header.
2026-07-12 10:17:39 -04:00
Craig Carnell
4b55c26cdb m3u: normalize line endings except win32 2026-07-12 13:42:22 +01:00
cristian64
0cab1731d6 Core: Adjust emulated memory size automatically.
Dolphin now uses the simulated memory size defined in `bi2.bin` to
adjust the memory size in the emulated console automatically.

If **Enable Emulated Memory Size Override** has been enabled by the
user, the fixed memory size specified for **MEM1** and **MEM2** are
still used as they were before.

Most retail games do not define the simulated memory size (Wii or
Triforce games), or define it to a value that matches the default 24 MiB
(GameCube games), so, in the general case, there is no behavior change.
One game that sets the simulated memory to a non-default value is the
debug build of _Mario Kart: Double Dash!!_, where the value is set to
48 MiB.

This enhancement is focused mainly to the modding community. Prior to
these changes, modded games with extended memory requirements would
fail to launch in Dolphin [with no indication of what the problem is] if
the user failed to set the emulated memory override to the correct
value. Now, modding tools can specify the simulated memory size in the
`bi2.bin` file to produce extended games that _just work_ in Dolphin,
without cumbersome instructions that can be overlooked by the user.
2026-07-11 23:02:54 +01:00
cristian64
03b1f2148b DolphinAnalytics: Add game quirk for game simulated memory size.
This is the 32-bit unsigned integer that is seen at offset `0x04` in the
`bi2.bin` file.

The intent is to study what games define values that departure from the
norm. Common values are 0 MiB (Wii games) and 24 MiB (GameCube games),
with some debug and demo builds featuring 48 MiB (e.g. the debug build
of _Mario Kart: Double Dash!!_).
2026-07-11 23:02:54 +01:00
cristian64
ebcbb79f70 Core: Add SConfig::GetSimulatedMemorySize().
This makes the simulated memory size of the running game accessible via
the `SConfig` singleton.
2026-07-11 23:02:54 +01:00
Martino Fontana
a5f6ba81fa GameSettings: Approve speed hacks for RetroAchievements
Some of the speed hacks were not approved for RetroAchievements, meaning that users had to choose between not getting hardcore achievements, or having poor performance.

Also, renamed the instances of `$Limit internal FPS to VPS (improves performance)` to `$Limit internal frame rate (speed hack)` for consistency. They are enabled by default, so unless the user disabled them, it won't break the configuration.
2026-07-08 18:10:42 +02:00
Craig Carnell
e222665eb0 mingw: lower case windows includes 2026-07-08 09:18:29 +01:00
Dentomologist
774200dcf4
Merge pull request #14689 from JosJuice/android-internal-resolution-display
VideoCommon: Use XFB for internal resolution stats
2026-07-05 13:28:31 -07:00
JosJuice
2dfb23267c
Merge pull request #14619 from JosJuice/no-si-change-device
Core: Remove SerialInterfaceManager::ChangeDevice
2026-07-05 17:33:02 +02:00
JosJuice
146f2be436
Merge pull request #14516 from Sintendo/jitarm64-subfzex
JitArm64: Minor subfzex optimizations
2026-07-05 17:29:57 +02:00
JosJuice
60c7606812
Merge pull request #14707 from SuperSamus/jit64-computerc-better-early-flush
Jit64: Early flush in ComputeRC even when `needs_test`
2026-07-05 17:00:03 +02:00
JosJuice
aff4d18d59 Move the code for the show internal resolution setting
fb4ff3e put all the code for the show internal resolution setting right
next to the code for the show FPS setting, presumably because an earlier
version of that commit had them next to each other in the GUI. It makes
more conceptual sense to put the code next to the code for the show
statistics settings, matching what the GUI looks like now.
2026-07-05 09:50:13 +02:00
JosJuice
c958dbc46c VideoCommon: Use XFB for internal resolution stats
fb4ff3e added a statistics option to show the internal resolution, but
it just showed the total size of the EFB (which is always 640x528) times
the IR scale, so it didn't convey any useful information.

This commit instead makes the option use the size of the last XFB copy
(not multiplied by the IR scale), which changes based on the game's
rendering resolution.
2026-07-05 09:50:13 +02:00
Admiral H. Curtiss
32cd349207
Merge pull request #14708 from JosJuice/state-path-encoding
State: Use proper path encoding conversion for OSD messages
2026-06-29 22:15:49 +02:00
JMC47
e2ab15aa23
Merge pull request #14647 from tom-pratt/netplay
Android netplay
2026-06-28 12:38:55 -04:00
JosJuice
2aba483a05 State: Use proper path encoding conversion for OSD messages
Otherwise Windows will use the system code page.
2026-06-28 15:18:31 +02:00
Martino Fontana
e68a464efd Jit64: Early flush in ComputeRC even when needs_test
Example:
```
nand. r1, r2, r3
```
Assuming that none of these registers will be used again:
- Before #14278, all of them would be flushed on both sides of the branch.
- After #14278, r2 and r3 would have been flushed earlier, but r1 won't.
- With this, r1 is flushed in ComputeRC.
2026-06-28 14:45:20 +02:00
JosJuice
afdee595f6
Merge pull request #14198 from JosJuice/jit64-cmpxx-rb-comparand
Jit64: Improve cmpXX imm handling
2026-06-28 11:14:47 +02:00
JosJuice
02bacff51f
Merge pull request #14278 from JosJuice/ppcanalyst-split-read-write
PPCAnalyst: Split "in use" analysis into reads and writes
2026-06-28 10:58:11 +02:00
JosJuice
200e26c98a Core: Remove SerialInterfaceManager::ChangeDevice
Now SerialInterfaceManager::UpdateDevices reads the configured SI
devices directly from Config instead.

The main reason why I wanted to do this is so that Android can change SI
devices while emulation is running. (Android didn't have the code for
calling ChangeDevice.) But when implementing the change, I noticed that
NetPlay and Movie were using ChangeDevice as a way of overriding the SI
devices configured by the user. Replacing this ended up making the change
larger than I first anticipated.

For Wii Remotes, there was no equivalent to ChangeDevice, so NetPlay and
Movie were using Config::SetCurrent to override the Wii Remote source
configured by the user. If we can use the config system to override Wii
Remote sources, why not do the same for SI devices? This commit makes
NetPlay and Movie set SI devices and Wii Remote sources in the NetPlay
and Movie config layers, as that is the conceptually appropriate place
to do it.

As far as I can tell, the old Movie code for overriding SI devices and
Wii Remote sources didn't actually work. This new code does. I didn't
investigate exactly why it didn't work, but maybe it's because loading
a movie happens before emulation actually starts.
2026-06-28 10:43:31 +02:00
JosJuice
6d796f7863
Merge pull request #14646 from linkmauve/pi-regs
HW/ProcessorInterface: Add support for all known registers
2026-06-28 10:36:43 +02:00
JosJuice
321f878bb6
Merge pull request #14676 from SuperSamus/jit-dcbx-fixup
JitArm64: Fix uninitialized use of register in dcbx
2026-06-28 10:29:54 +02:00
JosJuice
63121d11fc
Merge pull request #14683 from SuperSamus/idle-loop-nop-fix
PPCAnalyst: In `IsBusyWaitLoop`, ignore `nop`
2026-06-28 10:28:52 +02:00
JosJuice
c23b4f4f3a
Merge pull request #14626 from ChaseParate/approve-xenoblade-chronicles-60-fps-gecko-code
Gecko/RetroAchievements: Approve Xenoblade Chronicles 60 FPS Gecko code
2026-06-28 10:28:15 +02:00
Admiral H. Curtiss
14ee972235
Merge pull request #14684 from Sintendo/rm-unused-headers
Remove unused headers
2026-06-26 19:09:39 +02:00
Link Mauve
82a317124a HW/ProcessorInterface: Add support for all known registers
These changes originate from testing the behaviour of the PI registers
in Linux on my Wii.

I started by testing the masks, writing 0xFFFF_FFFF to the registers on
the Wii, and then got told about their value on a GameCube, and then
figured out most of the registers through a discussion with Extrems.
2026-06-26 01:32:15 +02:00
OatmealDome
2f1c14cdc7
Merge pull request #14687 from JoshuaVandaele/realtek-linux-list
RealtekFirmwareLoader: Update list from Linux source
2026-06-24 18:32:43 -04:00
Joshua Vandaële
d52afbf83b
TAPServerConnection: Fix builds with LLVM toolchain
On an Alpine system using a full LLVM toolchain, building fails because `fd_set`/`timeval` are undefined.
2026-06-24 20:17:35 +02:00
Joshua Vandaële
d170a27cc6
ICCardReader: Fix macro collision
On Alpine Linux, Dolphin fails to build due to PAGE_SIZE being already defined somewhere in the system includes.
2026-06-23 22:48:35 +02:00
JosJuice
21f12fdc77
Merge pull request #14692 from JosJuice/netplay-memory-safety
NetPlay: Fix memory safety issues
2026-06-21 21:44:22 +02:00
JosJuice
6bdf00ed21
Merge pull request #14691 from JosJuice/bba-memory-safety
EXI/BBA: Fix tx_fifo memory safety issues
2026-06-21 21:43:50 +02:00
JosJuice
79322e77b0
Merge pull request #14668 from JosJuice/state-nand-path-traversal
IOS/FS: Rewrite NAND savestating
2026-06-21 14:56:09 +02:00
JosJuice
5aed26fb11 NetPlay: Fix chunked data buffer overflow
Reported by MrSynAckster.
2026-06-20 15:15:36 +02:00
JosJuice
747e1e0d92 NetPlay: Fix Wii save banner buffer overflow
Reported by MrSynAckster.
2026-06-20 15:15:36 +02:00
JosJuice
95f3f8c6df EXI/BBA: Add null check in CEXIETHERNET::DirectFIFOWrite
Just in case. DMAWrite calls DirectFIFOWrite with the result of a
GetPointerForRange call without first checking if it's null.
2026-06-20 15:15:28 +02:00
JosJuice
31eaf1d67c EXI/BBA: Fix tx_fifo memory safety issues
Reported by MrSynAckster.
2026-06-20 15:15:28 +02:00
Amon Neander
5797b943b2 State: Fix Use After Move In LoadAsFromCore
This use-after-move error inhibits the use of savestates during the Dolphin TAS Movie creation process.
2026-06-19 07:40:59 -07:00
Dentomologist
43210d1430
Merge pull request #14685 from JosJuice/netplayclient-pad-index
NetPlayClient: Check for invalid pad indices
2026-06-17 13:36:11 -07:00
Joshua Vandaële
6dbc4f36df
RealtekFirmwareLoader: Update list from Linux source 2026-06-15 18:47:54 +02:00
JosJuice
32eaf7961f NetPlayClient: Check for invalid pad indices
Like 29e577d but for the client instead of the server.
2026-06-14 14:47:17 +02:00
Sintendo
ec0c4b72ff Remove unused headers 2026-06-14 11:22:02 +02:00
Martino Fontana
2204a789e4 PPCAnalyst: In IsBusyWaitLoop, ignore nop
Found out when attempting to make a speed hack to help Dolphin detect an idle loop. The inserted `nop` was preventing it from considering it an idle loop.
2026-06-14 01:08:31 +02:00
agalq13
5585aa0474 NetPlay: Stop game when mapped Wii Remote disconnects 2026-06-11 14:31:05 +03:00
agalq13
29e577d966 NetPlay: Validate controller packet indices 2026-06-11 13:20:48 +03:00
JosJuice
d35fe1b78b IOS/FS: Rewrite NAND savestating
This makes us savestate the NAND using the same APIs the guest uses
instead of directly touching the host files. This solves several
problems:

* If the user loaded a malicious savestate, it could use path traversal
  to overwrite arbitrary files on the host file system. (Reported by
  MrSynAckster.)
* Metadata (UID, GID, attribute, modes) wasn't being savestated.
* NAND redirects weren't handled, except for NAND redirects at the root
  of where the savestate was being done. (This only possibly matters if
  TASing a Riivolution patch. The root of the savestate is at /tmp when
  not TASing, and the only case where we do a NAND redirect is inside
  /title if requested by a Riivolution patch.)
2026-06-10 21:21:30 +02:00
Martino Fontana
da45cbe8fd JitArm64: Fix uninitialized use of register in dcbx
Also do a little cleanup in the equivalent part of Jit64.
2026-06-08 23:38:05 +02:00
JosJuice
a6278030c2 JitArm64: Fix twx
The conditions were in reverse order (maybe someone was reading the
PowerPC manual and forgot about IBM's bit numbering), and additionally
the two conditions for unsigned comparison were wrong.

Fixes https://bugs.dolphin-emu.org/issues/14054.
2026-05-31 11:49:34 +02:00
JosJuice
635fa74b4c Fix uninitialized variable warning in ZeldaAudioRenderer::ApplyReverb
If CopyFromEmuSwapped considers the address to be invalid, nothing will
be written to the passed-in pointer.
2026-05-29 22:09:13 +02:00