Commit Graph

45874 Commits

Author SHA1 Message Date
Joshua Vandaële cdb93d0c99 Contributing.md: Update C++20 mentions to C++23 2026-07-14 14:51:38 +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
Dentomologist d6d25b5302 Merge pull request #14351 from Windsurf7/nightsjod-gameini
GameINI: Add codes to NiGHTS Journey of Dreams
2026-07-12 23:28:28 -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
OatmealDome f544fbc0ae Merge pull request #14630 from Simonx22/android/convert-contenthandler-to-kotlin
Android: Convert ContentHandler to Kotlin and fix warnings
2026-07-13 01:00:44 -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
Dentomologist b947a11380 Merge pull request #14356 from Windsurf7/sonicstorybook-gameini
GameINI: Add codes to Sonic Storybook games
2026-07-12 17:20:45 -07: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
Scott Mansell fc9fd6952a Merge pull request #14665 from cristian64/simulated_memory_size
Core: Adjust emulated memory size automatically.
2026-07-12 11:34:44 +12:00
cristian64 f9ef6c2151 Android: Update description for Enable Emulated Memory Size Override. 2026-07-11 23:02:54 +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
Simonx22 c93af1d3f9 Android: Convert ContentHandler to Kotlin and fix warnings 2026-07-11 12:33:11 -04:00
Dentomologist 6de526c684 Merge pull request #14716 from tom-pratt/chat-message-colours
Android: Coloured netplay chat messages
2026-07-09 12:25:06 -07:00
Scott Mansell aaeb6e5dc1 Merge pull request #14479 from JoshuaVandaele/dsp_interc_rm
docs/DSP: Remove DSP_InterC
2026-07-09 13:35:35 +12:00
Dentomologist 2e07d3b4a8 Merge pull request #14702 from JosJuice/android-vibration-usage
Android: Set USAGE_MEDIA for rumble
2026-07-08 17:25:54 -07:00
JosJuice 424269ed4b Android: Silence deprecation warnings in ControllerInterface
We have to use the deprecated APIs when running on old devices.
2026-07-08 23:13:07 +02:00
JMC47 f93f69a1e5 Merge pull request #14688 from SuperSamus/retroachivements-speedhacks-approve
GameSettings: Approve speed hacks for RetroAchievements
2026-07-08 14:47:57 -04: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
JMC47 485f5cae55 Merge pull request #14712 from tom-pratt/use-upnp-android
Android: Enable USE_UPNP in android builds
2026-07-08 11:49:19 -04:00
JMC47 77e92d042c Merge pull request #14207 from cscd98/lower-case
mingw: lower case windows includes
2026-07-08 11:48:24 -04:00
JMC47 33dd4a1181 Merge pull request #14260 from cscd98/cpp-ipc-update
Externals: Update cpp-ipc to latest
2026-07-08 11:48:01 -04:00
Craig Carnell e222665eb0 mingw: lower case windows includes 2026-07-08 09:18:29 +01:00
Tom Pratt 11cf49de06 Android: Coloured netplay chat messages 2026-07-07 23:26:06 +02: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 d27d96a7ce Merge pull request #14623 from Simonx22/android/convert-eglhelper-to-kotlin
Android: Convert EGLHelper to Kotlin
2026-07-05 17:32:27 +02:00
JosJuice 0baa4ae6b1 Merge pull request #14624 from Simonx22/android/convert-filebrowserhelper-to-kotlin
Android: Convert FileBrowserHelper to Kotlin
2026-07-05 17:32:17 +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 f5d225691e Android: Set USAGE_MEDIA for rumble
This lets rumble work even if the user has turned off the Android
setting Sound and vibration > Vibration and haptics > Interactive
haptics > Touch feedback. Rumble can still be disabled through Dolphin's
controller bindings and through in-game settings (GameCube) or SYSCONF
(Wii).
2026-07-05 10:23:12 +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 db77b117d9 Android: Add missing graphics debug settings
These are available in DolphinQt, so let's make them available in the
Android GUI too.
2026-07-05 09:50:13 +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
Tom Pratt 6825a4a954 Enable USE_UPNP in android builds
The UI already exists in the Android netplay menu so just need to enable it in the build.
2026-07-01 15:59:46 +02:00
JosJuice 39ef77c716 Merge pull request #14710 from JosJuice/android-netplay-fix
Android: Fix release build
2026-06-30 19:00:06 +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
JosJuice b1d81af9cb Android: Fix release build
We don't need to see Compose previews when making a release build, but
androidx.compose.ui.tooling.preview.Preview is referenced in the source
code nonetheless, so the build system needs to know what it is.
2026-06-29 18:47:10 +02:00