Commit Graph

32747 Commits

Author SHA1 Message Date
JMC47
9845aa1541
Merge pull request #13864 from Dentomologist/branchwatch_extract_shared_function_logic
BranchWatch: Extract shared function logic
2025-09-16 14:46:03 -04:00
JMC47
e980927bce
Merge pull request #13863 from Dentomologist/enhancements_tab_fix_selection_of_disabled_postprocessing_option
EnhancementsWidget: Fix selection of disabled postprocessing option
2025-09-16 14:45:40 -04:00
JosJuice
770c74cc95
Merge pull request #13852 from Sintendo/jitarm64-subfcx
JitArm64_Integer: subfcx optimizations
2025-09-16 20:16:42 +02:00
JosJuice
36f49d140f
Merge pull request #13905 from JosJuice/arm64emitter-shift-4
Arm64Emitter: Replace shifting size by 4 with IntLog2 minus 3
2025-09-16 20:08:59 +02:00
Jordan Woyak
071dedd492 VideoCommon/OpcodeDecoding: Replace enable_if with concepts. 2025-09-13 19:05:33 -05:00
JMC47
695e06ca98
Merge pull request #13930 from Dentomologist/retroachievements_avoid_leaderboard_list_crash
RetroAchievements: Avoid crash due to uninitialized memory read
2025-09-13 03:36:56 -04:00
Jordan Woyak
ecb568c45a DolphinQt: Clean up some of the style sheet hacks in StackedSettingsWindow. 2025-09-09 16:47:30 -05:00
TryTwo
38cef5a3fc Fix broken imgui text in Metal backend. 2025-09-08 12:49:31 -07:00
cristian64
8a639bd13d DolphinQt: Center dialogs on top-level parent window.
The `QtUtils::AdjustSizeWithinScreen()` function now centers the
widget on their parent window after the widget's size is adjusted. This
is required in some desktop environments (generally on Linux systems) to
ensure that the just-resized widget remains aligned with its parent
window.

The creation of the **Cheats Manager** dialog is now deferred to first
show, as creating it within the main window's constructor prevents the
dialog from knowing the real position of its parent window, which is
only properly calculated on first show.

For the same reasons, the analytics prompt is now shown only when the
application is ready (i.e. when the main window has been shown).

| Before | After |
| ------ | ----- |
| <img width="1920" height="1080" alt="[Dolphin Emulator] Misplaced analytics prompt" title="[Dolphin Emulator] Misplaced analytics prompt" src="https://github.com/user-attachments/assets/c3e43b3b-cf79-4398-b531-7de6068c583e" /> | <img width="1920" height="1080" alt="[Dolphin Emulator] Centered analytics prompt" title="[Dolphin Emulator] Centered analytics prompt" src="https://github.com/user-attachments/assets/a10d06d9-7438-4032-b96c-dfcb48826349" /> |
| <img width="1920" height="1080" alt="[Dolphin Emulator] Misplaced Settings dialog" title="[Dolphin Emulator] Misplaced Settings dialog" src="https://github.com/user-attachments/assets/f35b10ee-4f07-48d4-86f9-2537ad5ca7ca" /> | <img width="1920" height="1080" alt="[Dolphin Emulator] Centered Settings dialog" title="[Dolphin Emulator] Centered Settings dialog" src="https://github.com/user-attachments/assets/33e37237-77a4-44f6-a0e2-b709f65b672b" /> |
| <img width="1920" height="1080" alt="[Dolphin Emulator] Misplaced Cheats Manager dialog" title="[Dolphin Emulator] Misplaced Cheats Manager dialog" src="https://github.com/user-attachments/assets/1fbd3836-5639-4d5a-b57e-e2e21f21c9db" /> | <img width="1920" height="1080" alt="[Dolphin Emulator] Centered Cheats Manager dialog" title="[Dolphin Emulator] Centered Cheats Manager dialog" src="https://github.com/user-attachments/assets/3f2b1b50-de16-49b7-bac4-c444c6cab0bc" /> |
2025-09-07 21:28:05 +01:00
iwubcode
d403bc3985 Core: support inverting a 4x4 matrix 2025-09-07 11:41:09 -05:00
Joshua Vandaële
83cbedd609
RealtekFirmwareLoader: Fix shadowed variable warning 2025-09-07 16:54:11 +02:00
Dentomologist
85a89eb420 RetroAchievements: Avoid uninitialized memory access
Avoid creating and then destroying a leaderboard list when game is null,
as doing so causes an access to uninitialized memory due to a bug in
rcheevos.

This can be triggered by starting a game with an invalid or expired
login token.
2025-09-05 17:23:39 -07:00
Martino Fontana
667c523755 Jit: Use dcbz() emitter for dcbz_l instead of interpreter fallback
Without cache emulation, these instructions are functionally identical.
In the interpreter, their only difference is related to HID registers checks, which the JIT already doesn't do for `dcbz`.
A loop with `dcbz_l` is used in the SDK function `LCEnable`, which is called frequently in some games.
2025-09-02 23:15:28 +02:00
Martino Fontana
d1ba849876 Jit64: dcbz, use VMOVAPS with YMM registers on AVX CPUs
LLVM does this, so let's do it as well.
2025-09-02 23:15:27 +02:00
Martino Fontana
5e69da7eba x64Emitter: Support YMM registers
This is accomplished by adding a 0x100 bit the the register.
Made sure that, on AVX instructions, that bit is trucated.
2025-09-02 22:15:16 +02:00
Dentomologist
e44c99cb59 Settings: Open file dialogs at user path
When opening a file dialog to set the location of a custom path, use the
corresponding user path as the starting location instead of the current
custom path.

When no custom path was set the dialog would be opened with a blank path
which causes Windows (not sure about other platforms) to open the dialog
at the same location where the last dialog was closed, or at the current
working directory if no previous dialog had been opened.

If a nonempty custom path has been set then it has also set the
corresponding user path, so the behavior in that case is unchanged.
2025-09-01 14:51:29 -07:00
Admiral H. Curtiss
c7ff0bf475
DolphinQt/Styles/Dark: Adjust progress bar 2025-08-31 22:02:00 +02:00
Admiral H. Curtiss
88ef583c0e
DolphinQt/Styles/Dark: Fix inconsistent formatting 2025-08-31 21:41:42 +02:00
Tilka
033a0540f7
Merge pull request #13899 from SuperSamus/patch-cheats-osd
PatchEngine: OSD message showing number of enabled patches and cheats
2025-08-31 00:27:23 +01:00
Martino Fontana
64a20c74fc PatchEngine: OSD message showing number of enabled patches and cheats 2025-08-30 16:51:51 +02:00
Tilka
76c114a02b
Merge pull request #13910 from Tilka/ub
Fix some undefined behavior
2025-08-30 06:17:45 +01:00
Tillmann Karras
c248f1afa4 IOS/WD: fix wrong BitSet ctor being called
We don't want list initialization here.

Thank you, UB-san.
2025-08-30 03:05:35 +01:00
Tillmann Karras
63257d1ee9 CoreTiming: set default overclock factors to 1.0
I'm not aware of any issue here but let's set meaningful defaults
anyway.
2025-08-30 03:05:35 +01:00
Tillmann Karras
18f0bd1d4b VI: set default overclock factor to 1.0
GetTicksPerHalfLine() gets called via Preset() before RefreshConfig()
has a chance to replace the dummy value 0.0.

Thank you, UB-san.
2025-08-30 03:03:21 +01:00
Tilka
2ff3a7215b
Merge pull request #13902 from Tilka/fix_color_clamp
VideoSW: fix clamping after vertex color interpolation
2025-08-30 03:02:42 +01:00
Tilka
b47a75fa2d
Merge pull request #13912 from jordan-woyak/simplify-saturating-cast
MathUtil: Simplify SaturatingCast implementation and fix edge case.
2025-08-30 03:00:15 +01:00
Tilka
25be1cfe97
Merge pull request #13911 from Dentomologist/gamelist_gridview_sorting
GameList: Use List View's sorting for Grid View
2025-08-30 02:56:18 +01:00
JMC47
e0c72cd963
Merge pull request #13825 from jordan-woyak/dont-count-playtime-while-suspended
Common/Timer: Add a SteadyAwakeClock class to make play time tracking ignore time while suspended.
2025-08-28 13:58:26 -04:00
Jordan Woyak
da546bebb8 MathUtil: Simplify SaturatingCast implementation with std::cmp_less/cmp_greater and fix a floating point edge case.
Thanks to Dentomologist for catching the edge case.
2025-08-27 21:24:46 -05:00
Dentomologist
489fd643d3 GameList: Use List View's sorting for Grid View
Since Grid View doesn't have a header for users to change sorting
options with, use List View's sorting in Grid View too.
2025-08-27 15:35:38 -07:00
Dentomologist
44f6743a5b CodeWidgets: Show code approval in Hardcore mode
When Hardcore mode is enabled, show an icon for each code in
ARCodeWidget and GeckoCodeWidget indicating whether it's an approved
code or not.
2025-08-25 12:31:38 -07:00
JosJuice
de98c3b96f AchievementManager: Use HookableEvent instead of std::function callbacks
The callback mechanism AchievementManager had until now only supported
one caller registering a callback, and it didn't have any
synchronization. This isn't a problem for DolphinQt, but the PR to add
Android support for RetroAchievements exposes these problems. Let's
replace it with HookableEvent, which can handle all of this.
2025-08-24 14:47:13 +02:00
TryTwo
ca056611ac Cheats: Refresh active code after editing it. 2025-08-24 04:55:12 -07:00
JosJuice
9716148203 Arm64Emitter: Replace shifting size by 4 with IntLog2 minus 3
The instruction implementations that were shifting the size by 4 would
emit an incorrect instruction when given a size of 64. The correct
implementation is to count the number of leading or trailing zeroes in
the size parameter, which is what IntLog2 does.

No callers are affected by this, as they all use sizes other than 64.
Actually, some of these instructions are even invalid with a size of 64,
but I'm changing them anyway for consistency with the others.
2025-08-24 10:48:21 +02:00
Tillmann Karras
bc417bdcee VideoSW: fix clamping after vertex color interpolation 2025-08-24 02:47:56 +01:00
iwubcode
440999d778 VideoCommon: update material asset to support render state properties, support multi-pass, and textures are now split out (as well as supporting a way to calculate sampler origin) 2025-08-23 15:17:49 -05:00
iwubcode
14459bcc1b VideoBackends / VideoCommon: rename member variables in RenderState to be consistent 2025-08-23 13:50:22 -05:00
Tilka
ab8a02566d
Merge pull request #13893 from TryTwo/PR_Slider_Fixes
Qt: Prevent QSlider's QLabels from resizing.
2025-08-23 12:44:17 +01:00
Martino Fontana
8026289775 ActionReplay: Fixup #13764 2025-08-23 12:04:04 +02:00
Tillmann Karras
10d0bc66b3 VideoCommon: fix -Wmismatched-tags warning 2025-08-23 03:05:04 +01:00
JMC47
b9affd5bc8
Merge pull request #13869 from TryTwo/ImGui_Updates
Externals: Update ImGui to 1.92.2 and ImPlot. Update code to use new features.
2025-08-22 21:24:27 -04:00
iwubcode
f0098eee13 VideoCommon: further remove 'CustomPipeline' details, so we can fully remove it in the very near future 2025-08-22 19:53:17 -05:00
iwubcode
6ec8e0ed8a VideoCommon: update shader asset to support both vertex and pixel shaders; rename to 'RasterSurfaceShader' 2025-08-22 19:48:22 -05:00
JMC47
8bfe9ec595
Merge pull request #13886 from Tilka/drag_lag
FIFOAnalyzer: fix command description updates
2025-08-22 20:27:15 -04:00
JMC47
95781c9ac9
Merge pull request #13764 from SuperSamus/patch-invalidate-cache
ActionReplay/PatchEngine: Make writes invalidate cache
2025-08-22 19:16:47 -04:00
TryTwo
d69056aab4 Qt: Prevent Sliders from resizing due to text changing in their label. 2025-08-22 14:46:33 -07:00
Tillmann Karras
30017632dd FIFOAnalyzer: fix command description updates
When dragging the selection, the mismatch between signal
(itemSelectionChanged) and data consumed (currentRow) seemed to cause
the description to lag behind by one row.
2025-08-22 02:02:28 +01:00
iwubcode
4489ea0ec2 VideoCommon: add TextureAndSamplerAsset, this asset contains both the raw texture data and data about how the texture should be sampled 2025-08-20 19:41:22 -05:00
Tilka
90a137ffdc
Merge pull request #13888 from Sintendo/unused-psg
VideoCommon: Remove unused EnumMaps from PixelShaderGen
2025-08-20 23:03:54 +01:00
JosJuice
09e68e707e
Merge pull request #13836 from Sintendo/jitarm64-subfe
JitArm64_Integer: Minor subfe optimizations
2025-08-20 22:40:14 +02:00
Sintendo
aa085a76bc VideoCommon: Remove unused EnumMaps from PixelShaderGen
They appear to have been unused since #13432.
2025-08-20 21:22:53 +02:00
JMC47
5aaf522a6f
Merge pull request #13877 from iwubcode/vertex_shader_custom_uniforms
VideoBackends: allow custom pixel uniforms to be passed to the vertex shader as well
2025-08-20 13:16:00 -04:00
Tilka
be6a6bce9f
Merge pull request #13873 from Dentomologist/dolphinanalytics_use_pascal_case_for_gamequirk_enum
DolphinAnalytics: Use Pascal case for GameQuirk enum
2025-08-19 21:57:34 +01:00
Tilka
2696e053ea
Merge pull request #13887 from Tilka/unused_sign_bit
Jit64: drop unused constant
2025-08-19 19:40:49 +01:00
JMC47
37f5ae4209
Merge pull request #13868 from Geotale/master
Fix Single-Precision-Only Inputs to FMAs Instructions in Interpreter
2025-08-18 18:25:38 -04:00
Tillmann Karras
84b5a73b2a Jit64: drop unused constant
Unused since c4799e5977.
2025-08-18 23:09:37 +01:00
Tilka
8701944dd1
Merge pull request #13883 from Dentomologist/fifoplayerwindow_geometry_fixes
FIFOPlayerWindow geometry fixes
2025-08-18 20:23:24 +01:00
TryTwo
affc22f17d Update code to work with new version of ImGui.
UpdateImGuiTexture now handles creating font textures and modifying them.
2025-08-18 05:38:14 -07:00
Sepalani
e9f58193a7 Common/BitUtils: Add operator[] to BitCastPtrType 2025-08-18 13:06:12 +04:00
Geotale
07443e2d41 Improve Interpreted FMADDS Precision
Improves the accuracy of FMADDS and other single precision FMA operations
This is accomplished by using an error-free transformation
It also thoroughly explains the quirks and difficulty of these operations
This fixes Mario Strikers and is necessary for fully fixing 1080 Avalanche
For single precision inputs it should be equivalent to a 32-bit FMA
2025-08-17 21:15:55 -05:00
Tillmann Karras
37758fa290 OpcodeDecoder: provide default GetVertexSize() implementation 2025-08-18 01:41:14 +01:00
iwubcode
0e73a01279 VideoBackends: allow custom pixel uniforms to be passed to the vertex shader as well 2025-08-17 18:55:40 -05:00
Dentomologist
1841c151c4 FIFOPlayerWindow: Save and restore window geometry
Aside from allowing users to persistently set the window to their
desired size, this is also necessary to allow saving of the splitter
positions in FIFOAnalyzer to work correctly.
2025-08-17 14:39:40 -07:00
Dentomologist
99be30c0e1 FIFOPlayerWindow: Trigger destructor on Dolphin shutdown
Make MainWindow::m_fifo_window a unique_ptr to ensure its destructor is
triggered when MainWindow is destroyed.

FIFOPlayerWindow doesn't set MainWindow as its parent in order to
prevent raising MainWindow when focusing FIFOPlayerWindow. This avoids
MainWindow covering up RenderWidget when, e.g., trying to use the object
range feature to pinpoint the index of a particular object.

As a consequence, unlike most QObjects FIFOPlayerWindow wasn't destroyed
when its parent widget was since it didn't have one.
2025-08-17 14:39:40 -07:00
Dentomologist
6f43f8eef5 FIFOPlayerWindow: Add stretch to Play/Record tab 2025-08-17 14:39:40 -07:00
Jordan Woyak
cee9360e4b ControllerInterface/SDL: Remove manual window message pumping on Windows.
The mentioned SDL hotplug issue seems to have been fixed.
2025-08-17 12:53:09 -05:00
Jordan Woyak
cec41b2448 ControllerInterface/SDL: Don't force SDL_HINT_JOYSTICK_THREAD.
SDL3 enables it by default now and things seem to work properly even when it's off these days.
2025-08-17 12:49:19 -05:00
OatmealDome
221d396b3a
FloatUtils: Replace quieting SNaNs via 0.0 + x with MakeQuiet 2025-08-17 11:24:38 -04:00
OatmealDome
cfb78dc816
FloatUtils: Move MakeQuiet function here from Interpreter_FPUtils 2025-08-17 11:23:12 -04:00
Tilka
ab1f75b4d6
Merge pull request #13853 from LillyJadeKatrin/retroachievements-patch-fix
Fixed Patch Allowlist Check
2025-08-17 10:25:30 +01:00
Pokechu22
b8352eeeb9
Merge pull request #13865 from Pokechu22/dsi-mention-mmu
Mention enable MMU in the DSI Exception message (Invalid read from ###/Invalid write to ###)
2025-08-15 10:11:47 -07:00
Dentomologist
3cc00c0676 DolphinAnalytics: Use Pascal case for GameQuirk enum 2025-08-14 13:54:23 -07:00
JMC47
aa45b7fe61
Merge pull request #13867 from TryTwo/gfx_bug_fix
GFX: Fix bugs for AbstractStagingTextures that perform an Upload.
2025-08-13 19:09:07 -04:00
Pokechu22
dfbf39c768 Mention enable MMU in the DSI Exception message (Invalid read from ###/Invalid write to ###)
This has been possible for a long time now (see https://dolphin-emu.org/blog/2016/09/06/booting-the-final-gc-game/#side-effects-of-a-hardcode-rewrite), but it seems like people still aren't aware of it.
2025-08-13 11:55:40 -07:00
TryTwo
6b683517dc Fix bugs related to AbstractStagingTextures that perform an Upload (write to existing texture). This code path had probably never been used before. 2025-08-12 23:43:55 -07:00
Dentomologist
bd79bc47cc BranchWatch: Extract shared function logic
IsolateWasOverwritten and IsolateNotOverwritten share the same basic
logic and have almost exactly the same code, with the only difference
being the comparison function used to keep or discard branches. To avoid
unnecessary code duplication and ensure that the functions stay in sync
after any future changes, create a helper function that takes the
comparison function as a parameter and have IsolateWasOverwritten and
IsolateNotOverwritten call that helper.
2025-08-12 12:15:22 -07:00
Dentomologist
4303e086bf EnhancementsWidget: Fix display of default post-processing effect
Show "(off)" instead of "" when the default post-processing effect is
selected. This also indirectly fixes issues with keyboard navigation of
the post-processing effect combobox when the default is selected,
resolving https://bugs.dolphin-emu.org/issues/13863.

m_post_processing_effect was previously using the ConfigStringChoice
constructor that assumes the text and data of each option are identical.
This is true for all the other effects, but since "(off)" has the config
value of "" this assumption was failing for it, causing the combobox to
be blank.
2025-08-11 18:01:14 -07:00
Dentomologist
61d9002ab4 EnhancementsWidget: Unabbreviate function and member names 2025-08-11 17:59:55 -07:00
Tillmann Karras
f04c2799dd VideoSW: fix comment 2025-08-10 19:37:21 +01:00
Tillmann Karras
df3dc80190 DolphinQt: fix two -Wunused-lambda-capture warnings 2025-08-10 19:37:21 +01:00
Tilka
ba656e641e
Merge pull request #13854 from dreamsyntax/fix-regression-callers-broken
PPCSymbolDB: Fix callers not updating
2025-08-10 19:13:29 +01:00
Jordan Woyak
292f7401b3 HW/VideoInterface: Don't affect aspect ratio with VBI Frequency Override 2025-08-10 15:45:15 +02:00
LillyJadeKatrin
39ea49fc39 Fixed Patch Allowlist Check
Previous changes to the patch allowlist format were not reflected in AchievementManager; this corrects that and re-enables patches and codes in hardcore mode.
2025-08-10 07:47:19 -04:00
Tilka
e099a9c180
Merge pull request #13838 from Tilka/videosw2
VideoSW: reuse Common::Vec2/3/4
2025-08-10 08:26:02 +01:00
Tilka
4fc3106761
Merge pull request #13859 from Tilka/root_path_assert
IOS/FS: add safety assert
2025-08-10 05:29:05 +01:00
Tillmann Karras
fa4127b145 VideoSW: reuse Common::Vec2/3/4 2025-08-10 05:17:26 +01:00
Tilka
a07974e2c3
Merge pull request #13846 from JoshuaVandaele/better-xcb
Qt: Better wayland detection to enforce xcb
2025-08-10 05:09:25 +01:00
Tillmann Karras
ec8b8bdb8d IOS/FS: add safety assert
This is to prevent someone (me) from accidentally deleting their entire
/tmp directory just by not initializing the config system correctly.
2025-08-10 04:58:57 +01:00
dreamsyntax
d946656b87
PPCSymbolDB: Fix callers not updating
Fixes regression from http://github.com/dolphin-emu/dolphin/pull/13821
2025-08-09 09:36:17 -07:00
Jordan Woyak
c5893093fc DolphinQt: Make GameConfigHighlighter better handle large files. 2025-08-08 23:49:24 -05:00
JMC47
e6ed939952
Merge pull request #13839 from Tilka/videosw3
VideoSW: allow disabling the copy filter
2025-08-07 02:18:01 -04:00
Sintendo
6a92a90bce JitArm64_Integer: subfcx - Subtract shifted 12-bit constant
Eliminate an instruction by encoding the constant in the subtraction,
part two.

Before:
0x52900019   mov    w25, #0x8000              ; =32768
0x6b190359   subs   w25, w26, w25

After:
0x71402359   subs   w25, w26, #0x8, lsl #12   ; =0x8000
2025-08-07 07:51:15 +02:00
Sintendo
45a3e35b06 JitArm64_Integer: subfcx - Subtract 12-bit constant
Eliminate an instruction by encoding the constant in the subtraction.

Before:
0x5280037a   mov    w26, #0x1b                ; =27
0x6b1a02bb   subs   w27, w21, w26
0x93407f78   sxtw   x24, w27

After:
0x71006ebb   subs   w27, w21, #0x1b
0x93407f7a   sxtw   x26, w27
2025-08-07 07:51:15 +02:00
Sintendo
fc9f2d9cea JitArm64_Integer: subfcx - Optimize b == 0
Equivalent to a negation, no need to materialize the zero.

Before:
0x52800015   mov    w21, #0x0                 ; =0
0x6b1802b6   subs   w22, w21, w24

After:
0x6b1803f6   negs   w22, w24
2025-08-07 07:51:15 +02:00
Sintendo
e3d889feb1 JitArm64_Integer: subfcx - Optimize a == 0
This case can be handled as a move. It also generates a constant carry
flag.

Before:
0x52800013   mov    w19, #0x0                 ; =0
0x6b1302b3   subs   w19, w21, w19

After:
0x2a1503f3   mov    w19, w21
2025-08-07 07:51:15 +02:00
JMC47
3111a785a1
Merge pull request #13725 from Sam-Belliveau/more-consistent-looping
Fade audio after an entire loop
2025-08-05 20:02:58 -04:00
JMC47
804cf465fc
Merge pull request #13819 from jordan-woyak/null-sound-stream-drop-samples
AudioCommon/Mixer: Skip sample processing when NullSoundStream is being used.
2025-08-05 16:46:57 -04:00
JMC47
ab990018f2
Merge pull request #13831 from JoshuaVandaele/dualcore-conf
Config: Change default value for Dual Core from enabled to disabled
2025-08-05 13:45:15 -04:00
Joshua Vandaële
33c9aa714b
USBDevicePicker: Modify USBDeviceAddToWhitelistDialog to be more generic, and use it for a new "More Options..." selection in Bluetooth Passthrough adapters 2025-08-05 13:16:50 +02:00
JMC47
c6d55d1b50
Merge pull request #13791 from jordan-woyak/realtek-firmware-loader
BTReal: Implement Realtek firmware loading.
2025-08-04 19:42:59 -04:00
Joshua Vandaële
f8b85edd0c
Qt: Better wayland detection to enforce xcb
In certain cases, the platform can be "wayland-egl", "wayland-xcomposite", and other values for which I haven't found a full list yet. Instead of matching only "wayland", we now look for "wayland" anywhere in the `QT_QPA_PLATFORM` string in a case-insensitive manner.

Acknowledgements:
`CaseInsensitiveContains`' implementation was heavily inspired by GNU's non-standard glibc `strcasestr` function, which can be found here licensed under GPLv2 or later: https://ftp.gnu.org/gnu/libc/
2025-08-04 19:34:31 +02:00
Dentomologist
3b832e84e4 Host: Remove outdated comment
Host_RequestFullscreen and Host_UpdateMainFrame have been removed, and
Host_RequestRenderWindowSize has been used by DolphinQt since 80699096
and by Android since e8739156.
2025-08-03 13:24:50 -07:00
Dentomologist
530ea7528e Host: Remove unnecessary functions
Remove Host_RefreshDSPDebuggerWindow (which hasn't done anything since
DolphinWX was removed in 44b22c90) and DSP::Host::UpdateDebugger (which
only called Host_RefreshDSPDebuggerWindow).
2025-08-03 13:19:30 -07:00
Dentomologist
d0de0a3f47 Host: Remove unnecessary function
Remove Host_UpdateMainFrame(). The only non-empty call happened in
DolphinNoGUI which called s_update_main_frame_event.Set(), but
DolphinNoGUI never waits on that event.
2025-08-03 13:12:01 -07:00
Dentomologist
38accd7fc3 GameTracker: Fix games not being displayed 2025-08-01 16:04:53 -07:00
Dentomologist
c880210ec1 MemoryWidget: Fix build breakage from conflicting PRs
PRs https://github.com/dolphin-emu/dolphin/pull/13786 and
https://github.com/dolphin-emu/dolphin/pull/13797 had incompatible
changes that resulted in the build being broken when they were both
merged.
2025-08-01 15:31:38 -07:00
Martino Fontana
5d71ac268f ActionReplay/PatchEngine: Replace HostWrite with ApplyMemoryPatch
Compared to the former, the latter invalidates the icache, which is
something that is likely desired for patches (especially if they are
applied while the game is running).
2025-08-01 23:25:06 +02:00
Martino Fontana
aa7b13f353 PPCDebugInterface: Small refactor to ApplyMemoryPatch
Invalidate icache only if target address has a different value. Take separate arguements,
instead of a struct, to allow easier usage elsewhere. Overload with u8,
u16 and u32 values for the same reason.
2025-08-01 23:24:39 +02:00
Admiral H. Curtiss
bec5624287
Merge pull request #13177 from jordan-woyak/remove-nunchuk-hax
ControllerEmu: Remove nunchuk stick data hax.
2025-08-01 22:00:17 +02:00
Admiral H. Curtiss
3fb80bec9b
Merge pull request #13780 from jordan-woyak/fix-text-filter-nearest
VideoCommon: Fix "Force Nearest" texture filter setting.
2025-08-01 21:59:04 +02:00
Admiral H. Curtiss
9e271c3f67
Merge pull request #13797 from TryTwo/PR_Memory_Symbols
MemoryWidget: Add Symbols and Notes.
2025-08-01 21:47:43 +02:00
Admiral H. Curtiss
03b709019d
Merge pull request #13749 from iwubcode/vertex_shadergen_expand_fix
VideoCommon: fix regression in vertexshadergen for line/point expansion
2025-08-01 21:44:41 +02:00
Admiral H. Curtiss
06e05e0f90
Merge pull request #13794 from Sintendo/doouble-lookup
Avoid map/set double lookups
2025-08-01 21:43:12 +02:00
Dentomologist
7b52555a5f BalloonTip: Don't hide when BalloonTip blocks the cursor
Keep the BalloonTip open when the BalloonTip's arrow prevents the cursor
from being inside the spawning ToolTipWidget, which triggers the
ToolTipWidget's leaveEvent and would previously close the BalloonTip.

When that happens track the cursor until it either leaves the
ToolTipWidget's bounding box or leaves the BalloonTip and goes back to
the ToolTipWidget, and respectively close the BalloonTip or leave it
open.
2025-08-01 12:30:05 -07:00
Admiral H. Curtiss
36aa7b6f3f
Merge pull request #13776 from jordan-woyak/win-dark-mode-styles
DolphinQt: Fix Windows dark theme when using external stylesheets.
2025-08-01 21:26:17 +02:00
Admiral H. Curtiss
63064591e8
Merge pull request #13760 from jordan-woyak/allow-skip-ipl
DolphinQt: Always enable the "Skip Main Menu" checkbox when "SkipIPL" is disabled.
2025-08-01 21:24:10 +02:00
Admiral H. Curtiss
5439a345a7
Merge pull request #13829 from JosJuice/android-retroachievements-pause-override
Android: Don't let RetroAchievements override onPause
2025-08-01 21:23:28 +02:00
Admiral H. Curtiss
6b82389f45
Merge pull request #13833 from jordan-woyak/exi-ethernet-atomic-interrupt
HW/EXI_DeviceEthernet: Make interrupt state atomic.
2025-08-01 21:19:17 +02:00
JMC47
c63d74e6c0
Merge pull request #13790 from SuperSamus/retroachivements-update
GameSettings: Minor approved cheats update
2025-07-31 16:34:19 -04:00
Sintendo
e9d28649dc JitArm64_Integer: Clean up includes 2025-07-31 20:18:33 +02:00
Sintendo
ed5cea2635 JitArm64_Integer: subfex - Explicitly handle a == b
Number of instructions stays the same, but we remove the false
dependency on the input registers.

Before:
0x7a1b037a   sbcs   w26, w27, w27

After:
0x5a9f23fa   csetm  w26, lo
2025-07-31 20:18:21 +02:00
Tillmann Karras
9ff5943ac6 VideoSW: allow disabling the copy filter 2025-07-31 15:51:51 +01:00
TryTwo
f7e7b0f6b0 MemoryWidget: Add symbols and Notes.
Add option to hide them.
Add box to search.
Add ability to edit data symbols and notes in MemoryViewWidget.
2025-07-30 17:40:24 -07:00
Tilka
812c6c2ea4
Merge pull request #13830 from CrossVR/broken-depth-clamp-control
DriverDetails: Disable depth_clamp_control on official AMD drivers
2025-07-31 01:06:00 +01:00
Jordan Woyak
9224d2f827
Merge pull request #13821 from AlexanderHarrison/codeview-update-timer
CodeViewWidget: Improve Update performance
2025-07-30 17:42:45 -05:00
JosJuice
f26af63c6d
Merge pull request #13828 from JosJuice/retroachievements-ipl
Boot: Fix RetroAchievements for GameCube games launched with IPL
2025-07-30 21:51:03 +02:00
JosJuice
62bc93473f
Merge pull request #13781 from Dentomologist/controllerinterface_fix_windows_deadlock
ControllerInterface: Fix Windows deadlock
2025-07-30 21:49:23 +02:00
Alex Harrison
56f04b5406 PPCSymbolDB: Fill in callers after loading map files 2025-07-30 13:43:02 -06:00
Alex Harrison
6cb7868286 CodeViewWidget: Improve performance by removing unnecessary FillInCallers computation during update 2025-07-30 13:41:42 -06:00
Sintendo
854979937c JitArm64_Integer: subfex - Improve codegen for zero with InHostCarry
Another instance where we needlessly materialized constant zero in a
register. We can just write the carry flag directly.

Before:
0x5280001a   mov    w26, #0x0                 ; =0
0x1a1f035a   adc    w26, w26, wzr

After:
0x1a9f37fa   cset   w26, hs
2025-07-30 21:29:10 +02:00
Tillmann Karras
cc71401e29 VideoCommon: drop unused XF enumerators
We handle all six registers (scale/offset * xyz) via the viewport name.
Keeping around unused enumerators only for the z component is confusing.
2025-07-30 19:56:30 +01:00
CrossVR
0d87f835e2 VKPipeline: Don't include depth clamp control struct when not supported
This should not be needed
2025-07-29 08:42:22 +09:00
CrossVR
59e9267e3d DriverDetails: Disable depth_clamp_control on AMD official drivers 2025-07-29 08:42:22 +09:00
Jordan Woyak
4e0d41627e HW/EXI_DeviceEthernet: Make interrupt state atomic. 2025-07-28 18:30:46 -05:00
Joshua Vandaële
ee68efeee8
Config: Change default value for Dual Core from enabled to disabled
Dual Core is primarily known as one of the first troubleshooting steps when emulation or NetPlay misbehave.

I believe(?) the original intent with having it on by default was likely to support users with weaker machines. However, I believe it would be a lot more reasonable for users to manually enable dual core if they really need the performance boost, rather than it is for them to have come ask us in support channel why their cleanly-installed Dolphin is not emulating their games properly.

Instead, this creates a fragile first impression where a clean install of Dolphin is already set up in a way that leads to inexplicable crashes, subtle timing bugs, and NetPlay desyncs.

Note: This changes only applies to the Desktop application, since mobile devices *do* really need the performance boost.
2025-07-27 19:07:08 +02:00
JosJuice
9f32562e36 PPCSymbolDB: Don't return non-const pointers
For thread safety, we shouldn't return any pointers or references that
can be used to mutate the state of the PPCSymbolDB. This should be the
final part of making PPCSymbolDB thread safe unless I've missed
something.
2025-07-27 17:03:57 +02:00
JosJuice
fef77a5f20 PPCSymbolDB: Add missing locking
9395238 added locking in some PPCSymbolDB functions that access member
variables, but far from all. To ensure thread safety, this commit adds
the missing locking.
2025-07-27 16:26:47 +02:00
JosJuice
803e6b017b PPCSymbolDB: Reduce lock contention in LoadMap/LoadMapOnBoot
By building the map in a local variable and then swapping it with the
member variable, we avoid the need to hold a lock while building the
map.
2025-07-27 16:26:47 +02:00
JosJuice
59d126d215 PPCSymbolDB: Rename m_write_lock to m_mutex
This mutex needs to be locked both when reading and writing, not just
when writing.
2025-07-27 16:26:46 +02:00
JosJuice
d62e21e7b6 PPCSymbolDB: Wait for locking to succeed
9395238 added a mutex to PPCSymbolDB, and made functions return with an
"empty" result if called while the mutex is locked. This new behavior
has the potential to affect not only less important call sites like the
symbol printing mentioned in a comment, but also the JIT deciding if it
should HLE a function.

A later commit in this pull request decreases the amount of lock
contention, reducing the performance impact of this commit.
2025-07-27 16:26:46 +02:00
Martino Fontana
e2ecafcaf3 GameSettings: Minor approved cheats update 2025-07-27 11:22:28 +02:00
JosJuice
1c7df370d9 Revert "Android/GCAdapter: Don't join current thread"
This reverts commit 74ed5e5532.
It solves a problem that no longer exists.
2025-07-27 11:21:04 +02:00
JosJuice
185569778c Android: Detect GCAdapter disconnection using BroadcastReceiver
This lets us get rid of the Reset call in ProcessInputPayload, which was
causing us some threading headaches (see 74ed5e5532). Instead we handle
disconnection in the same way as the libusb implementation does.
2025-07-27 11:21:04 +02:00
JosJuice
e2e33becc9 Android: Detect GCAdapter connection using BroadcastReceiver
We can register a BroadcastReceiver to have Android tell us when a GC
adapter gets connected instead of having a loop where we continuously
call SleepCurrentThread(1000) and poll the current status. When waiting
for a GC adapter to connect, this both reduces power usage and improves
responsiveness.

Note that I made openAdapter get the UsbDevice that's been stored by the
hotplug code instead of having openAdapter find the UsbDevice on its own
like before. This is only because I want to ensure that the UsbDevice
being tracked for disconnection is the same as the UsbDevice actually
being used, in case the user has multiple adapters connected.
2025-07-27 11:21:04 +02:00
JosJuice
7508842859 Android: Clean up naming in Java_GCAdapter and Java_WiimoteAdapter
This isn't how we name things in Java/Kotlin.
2025-07-27 11:13:44 +02:00
JosJuice
02e32ffaaf Jit: Flush registers used in memory breakpoint conditions
Aims to fix https://bugs.dolphin-emu.org/issues/13686.

I'm using a less efficient approach for Jit64 than for JitArm64. In
JitArm64, I'm flushing in the slow access code, but in Jit64, I'm
flushing before the split between the slow access code and the fast
access code, because Jit64 doesn't keep register mappings around for
when it's time to emit the slow access code. But the flushing code is
only emitted when there are memory breakpoints with conditions, so I'd
say that this is a performance loss we can live with.
2025-07-27 08:49:41 +02:00
JosJuice
a06bc5417d JitArm64: Document an assumption we've been making in EmitBackpatchRoutine
The next commit will add another piece of code that depends on this
assumption that we've been making. Good opportunity to document it.

In practice, all callers of EmitBackpatchRoutine are locking X30.
2025-07-27 08:32:44 +02:00
JosJuice
78afea1312 PowerPC: Track registers used in memory breakpoint conditions 2025-07-27 08:32:44 +02:00
JosJuice
c3be049571 Android: Don't let RetroAchievements override onPause
When Android sends Dolphin to the background, emulation *must* pause,
otherwise emulation continues running and continues outputting audio to
the user. RetroAchievements mustn't be allowed to override it.
2025-07-26 19:59:08 +02:00
JosJuice
0fa15342ec Boot: Fix RetroAchievements for GameCube games launched with IPL
The SetDisc function calls AchievementManager::LoadGame with the game's
volume. Calling AchievementManager::LoadGame again afterwards with
nullptr prevents RetroAchievements from working.
2025-07-26 18:08:19 +02:00