Commit Graph
38806 Commits
Author SHA1 Message Date
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 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
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
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 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
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 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
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 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
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
iwubcode 59d9c1772a VideoCommon: rename 'IsAnisostropicEnhancementSafe' to 'IsAnisotropicEnhancementSafe' in TextureCacheBase 2025-11-23 11:04:24 -06:00
JosJuice 2d9f317f04 Core: Make s_cpu_thread_job_finished a local variable
Having it be static leads to a race condition if two different threads
call RunOnCPUThread with wait_for_completion set to true. (There's
currently nobody calling RunOnCPUThread from anything other than the
host thread, so this hasn't led to any consequences yet.)
2025-11-23 15:17:20 +01:00
JosJuice aeac5f1a58 Merge pull request #14107 from jordan-woyak/mGBA-version-bump
Externals: Update mGBA to latest master.
2025-11-23 14:38:39 +01:00
JosJuice 5769fc7372 Merge pull request #14134 from jordan-woyak/mercusys-rtl-firmware
Bluetooth/RealtekFirmwareLoader: Add Mercusys MA530 to list.
2025-11-23 14:29:08 +01:00
JMC47 65f39c076e Merge pull request #14149 from iwubcode/shader_asset_vector_properties
VideoCommon: update ShaderAsset to use a vector of properties
2025-11-23 06:34:45 -05:00
Jordan Woyak e5ad814142 Core/DiscIO: Add a setting to load the running game into memory via CachedBlobReader. 2025-11-23 05:17:22 -06:00
Jordan Woyak d7c3513eae DiscIO: Add CachedBlobReader which takes another BlobReader and reads it into memory in the background. 2025-11-23 05:17:22 -06:00
Jordan Woyak fbb864a0b5 MemArena/LazyMemoryRegion: Add EnsureMemoryPagesWritable function to ensure a region of bytes is writable without the caller needing to be aware of the windows-only BLOCK_SIZE value. 2025-11-23 05:17:22 -06:00
JosJuice 79d74a3df1 Android: Add LeaderboardTrackerEnabled and ChallengeIndicatorsEnabled
This is an Android port of 7ed61c50a1. It looks like we don't have
descriptions for any of the RetroAchievements settings in the Android
GUI, so I haven't added descriptions for these two new settings either.
2025-11-23 11:17:16 +01:00
JosJuice 604e7fe833 Android: Use same margin above login text as below
This makes the login dialog look more balanced when "Logging In" or
"Login Failed" is visible.
2025-11-23 11:05:02 +01:00
JosJuice 738dcf86a6 Android: Remove unnecessary gravity in dialog_login.xml
Android Studio was complaining about these because their directions
didn't match the text alignment, but in this layout they have no effect
anyway.
2025-11-23 11:05:02 +01:00
JosJuice 9ec9b7d6f7 Android: Replace dialog_login.xml's invisible with gone
LoginDialog sets these to gone when a login starts or fails. Whether we
use gone or invisible needs to be consistent between LoginDialog and the
XML file, otherwise we'll blank space that shows up or disappears when
login starts or fails.
2025-11-23 11:03:09 +01:00
Sintendo a18cf5693e JitArm64: Remove some unused includes 2025-11-23 09:54:53 +01:00
Sintendo 419f90107d JitArm64_Integer: Merge subfx and subfcx
The optimizations for subfcx introduced in #13852 also apply to subfx.
Rather than duplicating the logic, we merge the handlers, like we did
in #10120 for x86.
2025-11-23 09:54:45 +01:00
JosJuice 490615c72a Merge pull request #14142 from JosJuice/directiofile-cant-create-saf
Common: Treat DirectIOFile as unable to create SAF files
2025-11-23 09:50:44 +01:00
Jordan Woyak 151d295b2c Merge pull request #14148 from jordan-woyak/hookable-event-add-remove-inside-trigger
HookableEvent: Allow hooks to be added and removed from within a Trigger callback.
2025-11-23 02:20:47 -06:00
Jordan Woyak 80da48f631 DolphinQt: Add "Poll Rate" display to GCAdapter config window. The window now refreshes every 500ms. SetAdapterCallback is no longer used. 2025-11-23 02:15:47 -06:00
Jordan Woyak f9a5051bae GCAdapter: Calculate poll rate for display in UI. It's currently updated every 50 reads. 2025-11-23 02:06:39 -06:00
JosJuice 30dbcb2f80 Merge pull request #14128 from jordan-woyak/fix-run-on-object-race
DolphinQt/QtUtils: Simplify RunOnObject and eliminate Common::Event race. Introduce Common::OneShotEvent class.
2025-11-22 21:52:17 +01:00
Jordan Woyak 6464ed9e6b Merge pull request #14157 from jordan-woyak/fix-rush-speed-display
CoreTiming: Fix percent speed display when "Rush Frame Presentation" is enabled.
2025-11-22 14:46:00 -06:00
Simonx22 e78ece126e Android: Format MainPresenter 2025-11-22 11:11:50 -05:00