Commit Graph
44884 Commits
Author SHA1 Message Date
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
Tillmann Karras 1380555116 Revert "GameSettings: Force DSP LLE in NFL Blitz Pro to avoid terrible sounding audio."
This reverts commit b7f3d96df4.
2025-11-27 00:08:37 +00:00
Tillmann Karras 07ef12eecc AX: fix signedness of second low-pass filter coefficient
This fixes NFL Blitz Pro.
2025-11-27 00:08:11 +00:00
Joshua Vandaële 025ff87a27 Use minizip-ng's CMakeLists instead of relying on our own implementation
This is a carry over from back when we used `minizip` and had our own CMakeLists for it.
2025-11-27 00:18:31 +01:00
JMC47 df3c68bcf7 Merge pull request #14171 from jordan-woyak/nfl-blitz-pro-force-dsp-lle
GameSettings: Force DSP LLE in NFL Blitz Pro to avoid terrible sounding audio.
2025-11-26 18:06:23 -05:00
Jordan Woyak b7f3d96df4 GameSettings: Force DSP LLE in NFL Blitz Pro to avoid terrible sounding audio. 2025-11-26 16:01:56 -06:00
JosJuice 887c68eed4 Translation resources sync with Transifex 2025-11-26 20:51:23 +01:00
Jordan Woyak c935f712e7 Merge pull request #14164 from jordan-woyak/xmen-legends-no-immxfb
GameSettings: Force ImmediateXFBEnable off in X-Men Legends.
2025-11-25 22:53:36 -06:00
Jordan Woyak 83b2258b0b Merge pull request #14167 from JosJuice/game-inis-2025-11-24
GameSettings: Use three-character INIs for newly added settings
2025-11-25 22:48:53 -06:00
Jordan Woyak 63372b8dea Merge pull request #14169 from JosJuice/i18n-2025-11-25
DolphinQt: Adjust capitalization of "Select A Bluetooth Device"
2025-11-25 16:47:48 -06:00
JosJuice 807488caf9 Merge pull request #14066 from Biendeo/master
IOS: Logitech USB Microphone Basic Support
2025-11-25 23:12:39 +01:00
JosJuice ab0601b06a DolphinQt: Adjust capitalization of "Select A Bluetooth Device" 2025-11-25 21:17:35 +01:00
JosJuice fa2a9e72f9 Merge pull request #14159 from JosJuice/android-retroachievements-login-gone
Android: Tweak dialog_login.xml layout
2025-11-25 20:52:29 +01:00
JosJuice 3f8de54f65 Merge pull request #14160 from JosJuice/android-retroachievements-more-options
Android: Add LeaderboardTrackerEnabled and ChallengeIndicatorsEnabled
2025-11-25 20:52:20 +01:00
Jordan Woyak 4310403674 GameSettings: Enable CapImmediateXFB in Lost Kingdoms II to allow ImmediateXFB without consistent extraneous swaps that cause terrible pacing. 2025-11-25 00:15:32 -06:00
Jordan Woyak a358636234 GameSettings: Enable CapImmediateXFB in Xenoblade instead of disabling ImmediateXFB to handle the uncapped "Reading Disc" screen. 2025-11-25 00:15:32 -06:00
Jordan Woyak 44a766772f VideoCommon: Add a hidden setting to cap immediate XFB swaps to one per VI. 2025-11-25 00:15:32 -06:00
Biendeo 07324ca067 USB: Add emulated Logitech USB Microphone
Co-authored by: supermilkdude67 <[email protected]>
2025-11-25 10:40:30 +11:00
JosJuice 37194c7b93 GameSettings: Use three-character INIs for newly added settings
This is a follow-up to 0f1ecf41f9. Our policy is to use three-character
game INIs for settings unless a game has multiple releases and the
setting shouldn't be applied to all of them.

SAHE69.ini was simply renamed to SAH.ini. RL6E69.ini was deleted
entirely, because RL6.ini already exists and contains the same setting.
2025-11-24 21:46:29 +01:00
JosJuice 1fa5accf03 Merge pull request #14165 from BSDKaffee/qt-6.10-fix
Fix build for non-Linux with Qt 6.10+
2025-11-24 18:37:23 +01:00
Jason E. Hale 6b3d24b481 Fix build for non-Linux with Qt 6.10+
There was a LINUX check added in b3bdad4, but this should be removed as this change applies to all Qt supported platforms. Simply put, GuiPrivate CMake files were introduced in Qt 6.9 and are now enforced in Qt 6.10 and are not platform-dependent.
2025-11-24 06:53:51 -05:00
Jordan Woyak 6a334f3b47 GameSettings: Force ImmediateXFBEnable off in X-Men Legends. ImmediateXFB causes constant black frame flickering in this game. 2025-11-24 02:18:44 -06:00
Jordan Woyak e195d3bb6e Merge pull request #14125 from JosJuice/local-cpu-thread-job-finished
Core: Make s_cpu_thread_job_finished a local variable
2025-11-23 15:55:28 -06:00
JMC47 7bc68823b3 Merge pull request #14161 from SuperSamus/gameini-misc-updates
GameINI: Misc updates
2025-11-23 13:29:23 -05:00
Martino Fontana 0f1ecf41f9 GameINI: Misc updates
Mostly consisting of disabling dual core on titles with critical issues.
2025-11-23 18:24:41 +01:00
iwubcode c97a947f67 VideoCommon: move resource state processing to the resource base class 2025-11-23 11:08:50 -06:00
iwubcode 5c00f07074 VideoCommon: update resource manager with a material/shader/and texture(+sampler) resource to show the complexities that warrant the resource manager system 2025-11-23 11:08:50 -06:00
iwubcode 23c637c029 VideoCommon: add custom includer to custom shaders, this will allow us to ship built-in custom shaders in the future 2025-11-23 11:04:51 -06:00
iwubcode 93a6cc80b4 VideoCommon: add some helper functions for resource logic that generates invalid textures for when a texture isn't provided for a custom asset 2025-11-23 11:04:24 -06:00
iwubcode 8016e2cfbd VideoCommon: move ApplyDriverBugs for the normal pipeline out into a utility function, add a way to hash the pipeline (using the vertex declaration instead of the native vertex format) 2025-11-23 11:04:24 -06:00
iwubcode 989ecca235 VideoCommon: add a texture pool for resource management 2025-11-23 11:04:24 -06:00
iwubcode 2d21a99205 VideoCommon: separate the concept of a 'resource' from an 'asset'. A resource is potentially multiple assets that are chained together but represent one type of data to the rest of the system. An example is a 'material'. A 'material' is a collection of textures, a custom shader, and some metadata that all comes together to form what the concept of the material is. There will be a 'material' resource. For now, start small by introducing the interface and change our texture loading which used assets from the old resource manager, to an actual resource. 2025-11-23 11:04:24 -06:00