summaryrefslogtreecommitdiff
path: root/Source/Core
AgeCommit message (Collapse)Author
2025-12-19Merge pull request #14210 from cscd98/ulong-compileAdmiral H. Curtiss
MainWindow: Fix sscanf type/width specifiers for DWORD
2025-12-17Merge pull request #14202 from jordan-woyak/sdl-gcadapter-hintJMC47
ControllerInterface: Turn off SDL's GameCube controller adapter handling when Dolphin is configured to use the adapter.
2025-12-15StringUtils: Drop TabsToSpacesSintendo
This function is unused.
2025-12-12mingw: fix use of std::invocable with EnumerateRadiosCraig Carnell
2025-12-11MainWindow: Fix sscanf type/width specifiers for DWORDCraig Carnell
2025-12-09ControllerInterface: Turn off SDL's GameCube controller adapter handling ↵Jordan Woyak
when Dolphin is configured to use the adapter.
2025-12-08Jit64: Explicitly get imm for clobbered storesJosJuice
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-01Merge pull request #14178 from ↵JosJuice
Dentomologist/jit64_avoid_passing_immediate_to_non_immediate_parameter Jit64: Avoid passing immediate to non-immediate parameter
2025-12-01Merge pull request #14186 from JoshuaVandaele/dit-crash-fixJosJuice
DITConfiguration: Prevent a crash if images fail to load
2025-12-01Merge pull request #14188 from JosJuice/jit64-flush-carryJosJuice
Jit64: Flush carry flag in FallBackToInterpreter
2025-11-30Merge pull request #14182 from jordan-woyak/ra-hardcore-warning-sizeJosJuice
DolphinQt: Use QtUtils::CreateIconWarning to make the RetroAchievements warning size consistent with other warnings.
2025-11-30Merge pull request #14180 from jordan-woyak/mgba-link-fixJosJuice
GBACore: Fix Pokemon GBA link.
2025-11-29DITConfiguration: Prevent a crash if images fail to loadJoshua Vandaële
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-29Windows/DirectIOFile: Don't request DELETE access for read-only OpenDentomologist
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-29Jit64: Flush carry flag in FallBackToInterpreterJosJuice
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-27Merge pull request #14183 from ↵Jordan Woyak
LillyJadeKatrin/retroachievements-eternal-darkness-testing-my-sanity RetroAchievements - Remove Hardcore Check from ApplyMemoryPatch
2025-11-27RetroAchievements - Remove Hardcore Check from ApplyMemoryPatchLillyJadeKatrin
This was blocking all memory patches from executing properly in hardcore mode even when contained in the Allowlist.
2025-11-27DolphinQt: Use QtUtils::CreateIconWarning to make the RetroAchievements ↵Jordan Woyak
"hardcore mode" warning size consistent with the other warnings.
2025-11-26GBACore: Fix Pokemon GBA link.Jordan Woyak
2025-11-26Jit64: Avoid passing immediate to non-immediate parameterDentomologist
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-27AX: fix signedness of second low-pass filter coefficientTillmann Karras
This fixes NFL Blitz Pro.
2025-11-25Merge pull request #14169 from JosJuice/i18n-2025-11-25Jordan Woyak
DolphinQt: Adjust capitalization of "Select A Bluetooth Device"
2025-11-25Merge pull request #14066 from Biendeo/masterJosJuice
IOS: Logitech USB Microphone Basic Support
2025-11-25DolphinQt: Adjust capitalization of "Select A Bluetooth Device"JosJuice
2025-11-25USB: Add emulated Logitech USB MicrophoneBiendeo
Co-authored by: supermilkdude67 <w.f.s.jazzfyre@gmail.com>
2025-11-24Fix build for non-Linux with Qt 6.10+Jason E. Hale
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-23Merge pull request #14125 from JosJuice/local-cpu-thread-job-finishedJordan Woyak
Core: Make s_cpu_thread_job_finished a local variable
2025-11-23Core: Make s_cpu_thread_job_finished a local variableJosJuice
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-23Merge pull request #14107 from jordan-woyak/mGBA-version-bumpJosJuice
Externals: Update mGBA to latest master.
2025-11-23Merge pull request #14134 from jordan-woyak/mercusys-rtl-firmwareJosJuice
Bluetooth/RealtekFirmwareLoader: Add Mercusys MA530 to list.
2025-11-23Merge pull request #14149 from iwubcode/shader_asset_vector_propertiesJMC47
VideoCommon: update ShaderAsset to use a vector of properties
2025-11-23Merge pull request #14142 from JosJuice/directiofile-cant-create-safJosJuice
Common: Treat DirectIOFile as unable to create SAF files
2025-11-23Merge pull request #14148 from ↵Jordan Woyak
jordan-woyak/hookable-event-add-remove-inside-trigger HookableEvent: Allow hooks to be added and removed from within a Trigger callback.
2025-11-22Merge pull request #14128 from jordan-woyak/fix-run-on-object-raceJosJuice
DolphinQt/QtUtils: Simplify RunOnObject and eliminate Common::Event race. Introduce Common::OneShotEvent class.
2025-11-22Merge pull request #14157 from jordan-woyak/fix-rush-speed-displayJordan Woyak
CoreTiming: Fix percent speed display when "Rush Frame Presentation" is enabled.
2025-11-22Merge pull request #13583 from LillyJadeKatrin/retroachievements-androidJosJuice
Android Support for RetroAchievements
2025-11-22CoreTiming: Fix percent speed display when "Rush Frame Presentation" is enabled.Jordan Woyak
2025-11-22Merge pull request #14037 from jordan-woyak/presentation-timingJMC47
Add "Rush Frame Presentation" and "Smooth Early Presentation" settings.
2025-11-22Merge pull request #14119 from jordan-woyak/si-status-response-lengthJMC47
HW/SI: Fix CMD_STATUS response lengths.
2025-11-21HookableEvent: Allow hooks to be added and removed from within a Trigger ↵Jordan Woyak
callback. This fixes a deadlock in FIFOFifoRecorder.
2025-11-21VideoCommon: update ShaderAsset to use a vector of properties, this way we ↵iwubcode
ensure the order of these properties match the order of the material
2025-11-21VideoCommon: update ShaderAsset to remove requirement of the code name being ↵iwubcode
in the shader source, this just makes it more difficult to iteratively test changes, assume shader devs know what they are doing
2025-11-21DolphinQt/OnScreenDisplayPane: Swap the positions of "Show Performance ↵Jordan Woyak
Graphs" and "Show Speed Colors".
2025-11-21DolphinQt/OnScreenDisplayPane: Rename "Graph Update Rate" back to ↵Jordan Woyak
"Performance Sample Window" and don't disable it based on "Show Performance Graphs".
2025-11-20Merge pull request #13152 from Naim2000/sdlockJordan Woyak
SDIO: report write lock status
2025-11-19Merge pull request #14121 from jordan-woyak/warn-silenceJordan Woyak
Common and VideoCommon: Silence a few warnings.
2025-11-19SDIO: Remove file "good" checks so errors are properly produced.Jordan Woyak
2025-11-19SDIO: the CID/CSD are sent a bit differentlyNaim2000
2025-11-19SDIO: report actual error if writes are disabledNaim2000
2025-11-19SDIO: report write lock statusNaim2000