Commit Graph

33683 Commits

Author SHA1 Message Date
Scott Mansell
d895ed7d5c
Merge pull request #14722 from idkwhere1sthisname/master
IOS/ES: allow Wii System Transfer and WagonCompat Transfer Tool to pass SetUID check
2026-07-15 16:45:43 +12:00
Dentomologist
d3b2943807
Merge pull request #14705 from JosJuice/directoryblob-dtk-comment
DiscIO: Add DTK alignment comment in DirectoryBlob
2026-07-14 13:52:09 -07:00
Admiral H. Curtiss
37726b610d
Merge pull request #14723 from Dentomologist/resource_pack_manager_fix_crash_when_removing_pack
ResourcePackManager: Fix crash when removing pack and properly update list
2026-07-14 19:26:15 +02:00
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
JosJuice
baf154de0e DiscIO: Add DTK alignment comment in DirectoryBlob
This requirement came up in the review of e013d95. Instead of just
removing the comment like e013d95 did, let's add a more detailed
comment.
2026-07-14 18:39:56 +02:00
Scott Mansell
09fbe2a930
Merge pull request #14729 from JoshuaVandaele/fix-clang-libstdcpp
PerformanceMetrics: Fix compiling using clang&libstdc++
2026-07-14 20:24:24 +12:00
Dentomologist
cdaf67c6ce
Merge pull request #14643 from Dentomologist/windows_git_bash_fix_command_line_output
Windows: Fix command line output not displaying when using Git Bash
2026-07-12 23:47:20 -07: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
Joshua Vandaële
55761d9e6d
PerformanceMetrics: Fix compiling using clang&libstdc++
When using clang and libstdc++, compiling fails with these errors:

```
FAILED: [code=1] Source/Core/VideoCommon/CMakeFiles/videocommon.dir/PerformanceMetrics.cpp.o
/usr/sbin/ccache /usr/sbin/clang++ -DAUTOUPDATE=1 -DDATA_DIR=\"/usr/local/share/dolphin-emu/\" -DHAS_OPENGL -DHAS_VULKAN -DHAVE_CPPIPC -DHAVE_LIBSYSTEMD -DIMGUI_USER_CONFIG=\"imgui_user_config.h\" -DLZMA_API_STATIC -DOFF -DPUGIXML_NO_EXCEPTIONS -DRC_CLIENT_SUPPORTS_HASH -DSFML_STATIC -DSPNG_STATIC -DTINYGLTF_NOEXCEPTION -DTINYGLTF_NO_EXTERNAL_IMAGE -DTINYGLTF_USE_CPP14 -DUSE_ANALYTICS=1 -DUSE_MEMORYWATCHER=1 -DUSE_PIPES=1 -DUSE_RETRO_ACHIEVEMENTS -DZSTD_MULTITHREAD -D_ARCH_64=1 -D_DEFAULT_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_M_X86_64=1 -D__LIBUSB__ -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -I/dolphin-local/Source/Core -I/dolphin-local/Externals/picojson -I/dolphin-local/build/release/x64/Source/Core -I/dolphin-local/Externals/enet/enet/include -I/dolphin-local/Externals/fmt/fmt/include -I/dolphin-local/Externals/mbedtls/include -I/dolphin-local/Externals/minizip-ng/minizip-ng -I/dolphin-local/Externals/liblzma/api -I/dolphin-local/Externals/zstd/zstd/build/cmake/../../lib -I/dolphin-local/Externals/libiconv/include -I/dolphin-local/build/release/x64/Externals/libiconv/lib -I/dolphin-local/Externals/libiconv/libcharset/include -I/dolphin-local/build/release/x64/Externals/libiconv/libcharset -I/dolphin-local/Externals/SFML/SFML/include -I/dolphin-local/Externals/bzip2/bzip2 -I/dolphin-local/Externals/expr/include -I/dolphin-local/Externals/hidapi/hidapi-src/hidapi -I/dolphin-local/Externals/pugixml/pugixml/src -I/dolphin-local/Externals/glslang/glslang/glslang/.. -I/dolphin-local/build/release/x64/include -I/dolphin-local/Externals/rcheevos -I/dolphin-local/Externals/libspng/libspng/spng -I/dolphin-local/Externals/xxhash/xxHash -I/dolphin-local/Externals/imgui -I/dolphin-local/Externals/imgui/imgui -I/dolphin-local/Externals/implot/implot -I/dolphin-local/Externals/glslang/glslang/SPIRV/.. -I/dolphin-local/Externals/tinygltf -isystem /dolphin-local/Externals/libusb/libusb/libusb -isystem /dolphin-local/Externals/glslang/glslang -isystem /dolphin-local/Externals/glslang/glslang/Public -isystem /dolphin-local/Externals/glslang -Qunused-arguments -fcolor-diagnostics -O3 -DNDEBUG -std=c++23 -msse2 -fdiagnostics-color -fno-strict-aliasing -fno-exceptions -fvisibility-inlines-hidden -fvisibility=hidden -fomit-frame-pointer -Wall -Wtype-limits -Wsign-compare -Wignored-qualifiers -Wuninitialized -Wshadow -Wshadow-field-in-constructor -Winit-self -Wmissing-declarations-Wmissing-variable-declarations -Werror=format -Wno-trigraphs -MD -MT Source/Core/VideoCommon/CMakeFiles/videocommon.dir/PerformanceMetrics.cpp.o -MF Source/Core/VideoCommon/CMakeFiles/videocommon.dir/PerformanceMetrics.cpp.o.d -o Source/Core/VideoCommon/CMakeFiles/videocommon.dir/PerformanceMetrics.cpp.o -c /dolphin-local/Source/Core/VideoCommon/PerformanceMetrics.cpp
In file included from /dolphin-local/Source/Core/VideoCommon/PerformanceMetrics.cpp:4:
/dolphin-local/Source/Core/VideoCommon/PerformanceMetrics.h:69:51: error: no matching constructor for initialization of 'std::atomic<FrameBufferSize>'
   69 |   std::atomic<FrameBufferSize> m_frame_buffer_size{};
      |                                                   ^~
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/16/../../../../include/c++/16/atomic:237:17: note: candidate constructor not viable: constraints not satisfied
  237 |       constexpr atomic() noexcept(is_nothrow_default_constructible_v<_Tp>)
      |                 ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/16/../../../../include/c++/16/atomic:238:11: note: because 'is_default_constructible_v<PerformanceMetrics::FrameBufferSize>' evaluated to false
  238 |         requires is_default_constructible_v<_Tp>
      |                  ^
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/16/../../../../include/c++/16/atomic:246:7: note: candidate constructor not viable: requires 1 argument, but 0 were provided
  246 |       atomic(const atomic&) = delete;
      |       ^      ~~~~~~~~~~~~~
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/16/../../../../include/c++/16/atomic:252:17: note: candidate constructor not viable: requires single argument '__i', but no arguments were provided
  252 |       constexpr atomic(_Tp __i) noexcept : _M_i(__i)
      |                 ^      ~~~~~~~
1 error generated.
```

This was tested and occurs on both Arch and Alpine Linux.
2026-07-13 02:26:49 +02: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
594e5d2b56 DolphinQt: Update tool tip for Enable Emulated Memory Size Override. 2026-07-11 23:02:54 +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
cristian64
24ad562871 Core: Add Volume::GetSimulatedMemorySize().
The data structure of the `bi2.bin` file in which the simulated memory
size is set:

> **13.2  Disk header Information**
>
> this is loaded to the Address in `0x800000f4` when a disc is initialized by the IPL
>
> |  offset  | end | size | Description           |
> | :------: | --- | :--: | --------------------- |
> | `0x0000` |     |   4  | Debug-monitor Size    |
> | `0x0004` |     |   4  | Simulated Memory Size |
> | `0x0008` |     |   4  | Argument offset       |
> | `0x000c` |     |   4  | Debug flag            |
> | `0x0010` |     |   4  | Track Location        |
> | `0x0014` |     |   4  | Track size            |
> | `0x0018` |     |   4  | Countrycode           |
> | `0x001c` |     |   4  | ?                     |

See https://hitmen.c02.at/files/yagcd/yagcd/chap13.html#sec13.2.

Most GameCube games set the value to `24 MiB`, which matches the
physical memory size. Most Wii games set the value to `0 MiB` (unset).
The debug build of _Mario Kart: Double Dash!!_ is one game that sets the
value to `48 MiB`.
2026-07-11 23:02:54 +01:00
Dentomologist
a18fd2d21b ResourcePackManager: Erase Removed pack from list and table
Erase a removed pack from ResourcePack::<anonymous namespace>::packs
instead of only deleting the pack file from the disk.

This causes the repopulated table to actually display that the pack has
been removed (which previously only happened after restarting Dolphin or
hitting `Refresh`), and also removes the pack from the `Packs.ini` file.
2026-07-11 12:49:35 -07:00
Dentomologist
37dd6c287e ResourcePackManager: Fix crash when removing pack
Avoid accessing destroyed `QTableWidgetItem` by retrieving the desired
path from the item before it's destroyed.

In `ResourcePackManager::Remove` pointers to the selected items in `m_table_widget`
were saved in the local variable `items` before calling `Uninstall`.
`Uninstall` called `RepopulateTable` which called
`m_table_widget->clear()`, destroying the table's descendants.  Upon
returning to `Remove` `items` then pointed to some of those destroyed descendants, and
passing `items[0]` to `GetResourcePackIndex` resulted in a call to
`item->row()` which was a use-after-free.

Fixes https://bugs.dolphin-emu.org/issues/14095.
2026-07-11 12:35:47 -07:00
idkwhere1sthisname
8873338b8d
allow Wii System Transfer and WagonCompat to call ES_SetUID 2026-07-11 19:10:20 +02: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
acf6060a54
Merge pull request #14417 from TryTwo/Cheat_Fix
Bugfix: Cheat codes:  Make newly added codes start disabled.
2026-07-05 17:45:27 +02:00
JosJuice
59d7547c2c
Merge pull request #13216 from CelestialAmber/cw-demangler
Core: Implement automatic symbol demangling
2026-07-05 17:38:09 +02: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
0ce4436cd8
Merge pull request #14678 from JoshuaVandaele/alt-tools
MenuBar: Add missing Alt shortcuts in Tools
2026-07-05 17:31:17 +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
be1df92153 Rename "Show Internal Resolution" to "Show XFB Resolution"
To make it extra clear that this is measuring the XFB, not the EFB.
2026-07-05 10:20:15 +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
6f72de3579 VideoCommon: Show internal resolution stats below VPS
It looked a bit out of place wedged in between the FPS and VPS.
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
JosJuice
5f372d6b1d VideoCommon: Reduce padding in PresentInfo
This makes the struct 8 bytes smaller.
2026-07-05 09:50:13 +02:00
Dentomologist
1a62cdca0e Windows: Fix command line output not displaying when using Git Bash
Check if Dolphin already has a handle for stdout or stderr before trying
to attach to the console of the parent process.

Previously, running Dolphin via Git Bash with options like `--help` or
`--version` wouldn't produce any output. This was the result of the fix
(1ce75ce217) for
https://bugs.dolphin-emu.org/issues/11042, before which output did work
for `Git Bash` but didn't for `Command Prompt` or `PowerShell`.
2026-07-03 21:55:23 -07:00
Dentomologist
d8d37fdbc4
Merge pull request #14699 from JosJuice/android-vibrator-id-index
Android: Fix mixup between Vibrator id and index
2026-07-01 13:07:25 -07: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
Admiral H. Curtiss
be33a68335
Merge pull request #14658 from VampireFlower/patch-instruction-assemble
[Debugger]: Assemble instructions in the patch instruction dialog
2026-06-28 16:31:46 +02: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
8038496a07
Merge pull request #14589 from Dentomologist/merge_tooltips_for_disabled_settings_into_balloontips
HacksWidget: Merge tooltips for disabled settings into balloontips
2026-06-28 12:10:54 +02:00
JosJuice
37d6f29e06
Merge pull request #14615 from Dentomologist/code_widgets_allow_mass_enabled_toggling
ARCodeWidget/GeckoCodeWidget: Add button to enable/disable all codes
2026-06-28 11:45:05 +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
9416eb9537
Merge pull request #14599 from naari3/fix/directoryblob-gc-triforce-alignment
DirectoryBlob: fix data alignment for GC/Triforce and skip Triforce DIMM memory range
2026-06-28 11:03:03 +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