Commit Graph

44915 Commits

Author SHA1 Message Date
JMC47
05a204edc6
Merge pull request #14016 from jordan-woyak/usbutils-CfgMgr32
USBUtils: Replace GetDeviceNameUsingSetupAPI with GetDeviceNameUsingCfgMgr32
2025-12-22 13:28:12 -05:00
JMC47
e17f6cff30
Merge pull request #13959 from Sintendo/jitarm64-subfx-merge
JitArm64_Integer: Merge subfx and subfcx
2025-12-22 13:27:38 -05:00
JMC47
0c1c58dfbc
Merge pull request #13409 from jordan-woyak/analytics-vconfig
DolphinAnalytics: Use Config::Get instead of accessing g_Config.
2025-12-22 13:26:45 -05:00
JMC47
29a947efc0
Merge pull request #13287 from JoshuaVandaele/legacyconfig
Remove legacy configuration support
2025-12-22 13:26:12 -05:00
JosJuice
7e10515890
Merge pull request #14175 from LillyJadeKatrin/retroachievements-submodule-update
Update rcheevos lib to current develop
2025-12-22 14:51:08 +01:00
LillyJadeKatrin
2272596ea9 Update rcheevos lib to current master
v12.2.0, includes multiset optimization and memory access fixes
2025-12-22 08:16:29 -05:00
OatmealDome
8703810151
Merge branch 'release-prep-2512' 2025-12-22 00:25:01 -05:00
OatmealDome
2614969fa8
ScmRevGen: Bump version to 2512 2025-12-21 22:55:27 -05:00
Filippo Tarpini
0aa0071bec
Update conversion matrix for NTSC-J
These were original calculated by @EndlesslyFlowering, and they've not came up with a new version that does chromatic adaptation (D93 to D65 white point) better, hence should be more accurate.

These are already in use in RenoDX:
283b859021/src/shaders/color.hlsl (L97C1-L103C49)
2025-12-21 04:13:46 +01:00
JosJuice
a32779340e Translation resources sync with Transifex 2025-12-20 20:43:44 +01:00
Admiral H. Curtiss
b758b390d4
Merge pull request #14210 from cscd98/ulong-compile
MainWindow: Fix sscanf type/width specifiers for DWORD
2025-12-19 18:01:33 +01:00
JMC47
e60f39c323
Merge pull request #14202 from jordan-woyak/sdl-gcadapter-hint
ControllerInterface: Turn off SDL's GameCube controller adapter handling when Dolphin is configured to use the adapter.
2025-12-17 05:18:37 -05:00
Jordan Woyak
ed2fe134aa
Merge pull request #14219 from Sintendo/stringutils-drop-tabs2spaces
StringUtils: Drop TabsToSpaces
2025-12-15 14:59:20 -06:00
Jordan Woyak
206e1bae66
Merge pull request #14220 from Anarky/master
GameSettings: Enable MMU for Vexx (PAL)
2025-12-15 14:56:11 -06:00
Anarky
bd9d865f80 GameSettings: Enable MMU for Vexx (PAL)
Without it, the game crashes after completing the tutorial level.
2025-12-15 20:05:02 +01:00
Sintendo
558cee8dcf StringUtils: Drop TabsToSpaces
This function is unused.
2025-12-15 13:41:54 +01:00
Jordan Woyak
04f71e5e6d
Merge pull request #14211 from cscd98/enumerate-radios
mingw: fix usage of std::invocable with EnumerateRadios
2025-12-12 17:21:51 -06:00
Craig Carnell
eded73fe8b mingw: fix use of std::invocable with EnumerateRadios 2025-12-12 09:33:10 +00:00
Craig Carnell
7e9f291222 MainWindow: Fix sscanf type/width specifiers for DWORD 2025-12-11 19:36:09 +00:00
Craig Carnell
ec6f511c95 mingw: replace usages of Interface as clashes with existing struct 2025-12-11 12:18:02 +00:00
cristian64
bd6ea9a9a1 Core/HW: Enable BBA (IPC) in FreeBSD.
Since v1.4.0, cpp-ipc now supports FreeBSD. This was a limitation that
prevented us from enabling compilation on FreeBSD in #13870.

Full changelog: https://github.com/mutouyun/cpp-ipc/releases/tag/v1.4.0
2025-12-10 21:26:43 +00:00
cristian64
355bca0fb3 Externals: Upgrade cpp-ipc to v1.4.0.
Apart from bugfixes and other enhancements, this update has brought
support for FreeBSD.

Full changelog: https://github.com/mutouyun/cpp-ipc/releases/tag/v1.4.0
2025-12-10 21:07:46 +00:00
Craig Carnell
26b6980d1a mingw: replace SendMessage usage as clashes with existing function 2025-12-10 21:07:33 +00:00
JMC47
75bc9a474e
Merge pull request #14197 from JosJuice/jit64-store-clobber-imm
Jit64: Explicitly get imm for clobbered stores
2025-12-10 02:42:12 -05:00
Jordan Woyak
21eb43c16e ControllerInterface: Turn off SDL's GameCube controller adapter handling when Dolphin is configured to use the adapter. 2025-12-09 16:51:41 -06:00
JosJuice
fca27c375a Jit64: Explicitly get imm for clobbered stores
If we're on an x64 CPU that doesn't have the MOVBE extension, trying to
SwapAndStore a host register results in that register's value getting
clobbered with the swapped value. Jit64::stX and Jit64::stXx detect this
case, and if necessary, emit a MOV to a register that's fine to clobber.

This logic was broken by the merge of PR 12134. Jit64::stX and
Jit64::stXx were assuming that if RegCache::IsImm returns true for a
guest register, calling RegCache::Use or RegCache::BindOrImm for that
guest register would result in an immediate. However, PR 12134 made it
possible for a guest register to have both a host register and an
immediate in the register cache at the same time. When this happens,
RegCache::IsImm returns true, yet RegCache::Use and RegCache::BindForImm
return an RCOpArg whose Location returns a host register. (To make it
extra confusing, RCOpArg::IsImm calls RegCache::IsImm if the RCOpArg
came from RegCache, so RCOpArg::IsImm returns true!)

To fix this, in cases where Jit64::stX and Jit64::stXx explicitly need
an immediate to avoid having to emit an extra MOV, let's call
RegCache::Imm32 so that we're certain that we're getting an immediate.

This fixes an issue on older x64 CPUs that manifested as e.g. completely
broken graphics in Spyro: Enter the Dragonfly.
2025-12-08 23:19:10 +01:00
Jordan Woyak
7ab899f928 Externals: Update SDL to release-3.2.28. 2025-12-02 15:43:15 -06:00
JosJuice
213dc1c9af
Merge pull request #14178 from Dentomologist/jit64_avoid_passing_immediate_to_non_immediate_parameter
Jit64: Avoid passing immediate to non-immediate parameter
2025-12-01 20:01:52 +01:00
JosJuice
efa8439b79
Merge pull request #14186 from JoshuaVandaele/dit-crash-fix
DITConfiguration: Prevent a crash if images fail to load
2025-12-01 20:00:19 +01:00
JosJuice
582d5cfe96
Merge pull request #14188 from JosJuice/jit64-flush-carry
Jit64: Flush carry flag in FallBackToInterpreter
2025-12-01 19:58:38 +01:00
JosJuice
f842af8b03
Merge pull request #14182 from jordan-woyak/ra-hardcore-warning-size
DolphinQt: Use QtUtils::CreateIconWarning to make the RetroAchievements warning size consistent with other warnings.
2025-11-30 23:25:12 +01:00
JosJuice
e27ec97b15
Merge pull request #14180 from jordan-woyak/mgba-link-fix
GBACore: Fix Pokemon GBA link.
2025-11-30 18:26:18 +01:00
Joshua Vandaële
5a6dc310c0
DITConfiguration: Prevent a crash if images fail to load
Recently came across a strange issue where Dolphin would hard crash in most games with this error:

```sh
/usr/include/c++/15.2.1/optional:1165: constexpr const _Tp* std::optional<_Tp>::operator->() const [with _Tp = InputCommon::ImagePixelData]: Assertion 'this->_M_is_engaged()' failed.
```

The culprit turned out to be accessing `host_key_image` which is an `std::optional` thay may return `std::nullopt`. I'm not sure why this issue started occuring for me since I've had no issue with my Dynamic Input Textures in the past? But this fixes a crash if the image fails to load.
2025-11-29 23:54:48 +01:00
Jordan Woyak
0c0cbbf572
Merge pull request #14181 from jordan-woyak/frogger-shadow-vertex-rounding
GameSettings: Enable VertexRounding in Frogger: Ancient Shadow.
2025-11-29 16:23:54 -06:00
Jordan Woyak
59d5e25f5f
Merge pull request #14190 from Dentomologist/directiofile_dont_request_delete_access_for_read_only_open
Windows/DirectIOFile: Don't request DELETE access for read-only Open
2025-11-29 16:23:31 -06:00
Dentomologist
448d61f262 Windows/DirectIOFile: Don't request DELETE access for read-only Open
Aside from being unnecessary, on Windows the flag prevents two instances
of Dolphin (one instance from before 2509-371 when the flag was
introduced and the other after) from running the same ROM
simultaneously.

Attempting to do so generated the false error `"[Rom]" is an invalid
GCM/ISO file, or is not a GC/Wii ISO.` followed by `Failed to init core`
and emulation shutdown on the second instance to start the game. Fixing
the incorrect error message is a task I'm deferring to another PR.

The problem didn't happen when both instances were 2509-371 or later,
but I ran into it while bisecting an issue and it'd be nice to avoid
that problem in the future.
2025-11-29 14:02:24 -08:00
JosJuice
0c024de591 Jit64: Flush carry flag in FallBackToInterpreter
We have an optimization where the guest carry flag is kept in the host
carry flag between certain back-to-back pairs of integer instructions.
If the second instruction falls back to the interpreter, then
FallBackToInterpreter should flush the carry flag to m_ppc_state,
otherwise the interpreter reads a stale carry flag and at some later
point Jit64 trips the "Attempt to modify flags while flags locked!"
assertion.

An alternative solution would be to not store the guest carry flag in
the host carry flag to begin with if we know the next instruction is
going to fall back to the interpreter, but knowing that in advance is
non-trivial. Since interpreter fallbacks aren't exactly intended to be
super optimized, I went for the flushing solution instead, which is how
JitArm64 already works. In most cases, the emitted code shouldn't even
differ between these two solutions.

Note that the problematic situation only happens if the first integer
instruction doesn't fall back to the interpreter but the second one
does. This used to be impossible because there's no "JIT disable"
setting that's granular enough to disable some integer instructions but
not all, but with the constant propagation PR, it's possible if constant
propagation is able to entirely evaluate the first instruction but not
the second.
2025-11-29 11:45:43 +01:00
Jordan Woyak
afaedb3c13 IOS/ES: Set the ESDevice::SetUID IPCReply delay based on ESCore::FindInstalledTMD.
This makes SetUID take more emulated time giving the host more time to actually do the work.
The Wii menu "Data Management" -> "Save Data" -> "Wii" screen is no longer nearly as hard to emulate at full speed.
2025-11-28 18:04:57 -06:00
Mateus B. Cassiano
3072779705
DolphinQt: minor fixes for the OnScreenDisplayPane 2025-11-28 09:13:47 -04:00
Jordan Woyak
54c74429df IOS/ES: Make UpdateUIDAndGID and CheckIsAllowedToSetUID take an existing UIDSys so it only needs to be built once in ESDevice::SetUID.
Constructing the UIDSys from the filesystem is a major bottleneck in the Wii menu "Data Management" -> "Save Data" -> "Wii" screen and this change makes it about twice as fast.
2025-11-28 03:02:07 -06:00
Jordan Woyak
936415de4a GameSettings: Enable VertexRounding in Frogger: Ancient Shadow to fix graphical artifacts. 2025-11-27 14:32:08 -06:00
Jordan Woyak
e8c512dfb5
Merge pull request #14183 from LillyJadeKatrin/retroachievements-eternal-darkness-testing-my-sanity
RetroAchievements - Remove Hardcore Check from ApplyMemoryPatch
2025-11-27 14:30:39 -06:00
JosJuice
2e0b91c627
Merge pull request #14177 from JoshuaVandaele/retro-tests-off
Disable PatchAllowlistTest if USE_RETRO_ACHIEVEMENTS is OFF
2025-11-27 19:58:22 +01:00
JosJuice
27ec54eaaf
Merge pull request #14179 from Tilka/ax_lpf
AX: fix low-pass filter edge case
2025-11-27 19:37:47 +01:00
LillyJadeKatrin
fd0b875ab5 RetroAchievements - Remove Hardcore Check from ApplyMemoryPatch
This was blocking all memory patches from executing properly in hardcore mode even when contained in the Allowlist.
2025-11-27 11:52:56 -05:00
Jordan Woyak
70d4bb970c DolphinQt: Use QtUtils::CreateIconWarning to make the RetroAchievements "hardcore mode" warning size consistent with the other warnings. 2025-11-27 01:43:50 -06:00
Jordan Woyak
19a1ee3064 GBACore: Fix Pokemon GBA link. 2025-11-26 23:12:20 -06:00
Joshua Vandaële
1958c43920
Bump zstd to 711e17da98510a3567bf47f85a08a76f64811474 and use upstream CMakeLists 2025-11-27 02:36:07 +01:00
Dentomologist
c2d277c5d1 Jit64: Avoid passing immediate to non-immediate parameter
Call `UseNoImm` instead of `Use` on parameter `a` of `MultiplyImmediate`
since `Ra` gets passed to `IMUL` which asserts that parameter is not an
immediate.
2025-11-26 16:27:26 -08:00
Joshua Vandaële
deeb6f160c
Disable PatchAllowlistTest if USE_RETRO_ACHIEVEMENTS is OFF
This fixes a build error when `-DENABLE_TESTS=ON` and `-DUSE_RETRO_ACHIEVEMENTS=OFF` are both set together, since AchievementManager is also behind an ifdef.
2025-11-27 01:26:51 +01:00