Commit Graph
62 Commits
Author SHA1 Message Date
Martino Fontana 8971b3b67a VideoCommon: Fixup #14336
whoops

Closes https://bugs.dolphin-emu.org/issues/14024
2026-04-13 22:47:52 +02:00
Martino Fontana a108fb849f AchievementManager: APPROVED_LIST_HASH quality of life improvements
APPROVED_LIST_HASH is moved to a separate file, making tests compilation faster after changing it.
The error message prints the hash in a way that it can be directly copy-pasted (though it still needs clang-format).
2026-02-22 00:22:46 +01:00
Martino Fontana c9457cf906 Jit: Emit Branch Watch code only if it's enabled
JIT code related to Branch Watch was emitted if the debugging UI was active: the emitted code would dynamically check whether Branch Watch is active.
However, this causes two problems:
1. It decreases performance by just having the debugging UI enabled
2. It clutters the host assembly in the JIT tab, making it harder to read (unaware readers will wonder what these instructions are for)

With this PR, code related to Branch Watch is emitted only if Branch Watch itself is active, fixing the issues above.
The JIT cache will now be wiped whenever the feature is toggled, causing a slight stutter. However, this isn't the kind of feature that is toggled over and over, so IMO it is an acceptable trade-off.
2026-02-15 11:03:02 +01:00
Martino Fontana fdbc2883ef VideoCommon: Invert interaction between Arbitrary Mipmap Detection and GPU Texture Decoding (the former disables the latter)
Split from #14293.
It makes sense for a setting that changes visual output to have priority over a setting that barely makes any difference.
2026-02-13 13:57:43 +01:00
Martino Fontana a14c88ba67 Remove unused imports
Yellow squiggly lines begone!
Done automatically on .cpp files through `run-clang-tidy`, with manual corrections to the mistakes.
If an import is directly used, but is technically unnecessary since it's recursively imported by something else, it is *not* removed.
The tool doesn't touch .h files, so I did some of them by hand while fixing errors due to old recursive imports.
Not everything is removed, but the cleanup should be substantial enough.
Because this done on Linux, code that isn't used on it is mostly untouched.
(Hopefully no open PR is depending on these imports...)
2026-01-25 16:12:15 +01:00
Martino Fontana eec35a214d CMakeLists: Use CMAKE_INTERPROCEDURAL_OPTIMIZATION for LTO
Just a simple modernization. LTO is still disabled by default.
2026-01-23 17:56:06 +01:00
Martino Fontana 753537377a GameINI: Enable EFB Access for PES 2009-2013 2026-01-15 19:25:11 +01: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
Martino Fontana c5d047480f GameINI: Disable Dual Core for Spider-Man: Web of Shadows 2025-11-08 23:09:41 +01:00
Martino Fontana fe63d95e02 GameINI: Add patches to limit FPS for some uncapped games 2025-10-23 00:38:14 +02:00
Martino Fontana 2542c79d6b GameINI: Add patches for idle loop detection (speed hack) 2025-10-23 00:03:59 +02:00
Martino Fontana d423eb5a75 GameINI: Fix Egg Mania Japanese "Force Progressive" hack 2025-10-22 23:32:18 +02:00
Martino Fontana f8d30e796c CheatSearchWidget: New feature, writing a value to all selected addresses 2025-10-08 11:33:44 +02:00
Martino Fontana c002861041 CheatSearchWidget: "Add to watch" to all selected items
Instead of just the right-clicked item.
2025-10-08 11:27:06 +02:00
Martino Fontana 8a97ce9124 MMU: Use templates for Read/Write functions 2025-10-08 11:27:06 +02:00
Martino Fontana f6e5448b43 Jit64: Dynamic length of regular jump instruction (for known addresses)
Conditional jumps already do that, so let's be consistent.
2025-10-08 00:15:57 +02:00
Martino Fontana 4f737b7aaf dcbz: Fix AVX path 2025-10-01 21:09:18 +02: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
Martino Fontana 64a20c74fc PatchEngine: OSD message showing number of enabled patches and cheats 2025-08-30 16:51:51 +02:00
Martino Fontana 8026289775 ActionReplay: Fixup #13764 2025-08-23 12:04:04 +02: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
Martino Fontana e2ecafcaf3 GameSettings: Minor approved cheats update 2025-07-27 11:22:28 +02:00
Martino Fontana b80e178403 Vulkan: Fix present semaphores reuse
Fixes validation errors.
See https://docs.vulkan.org/guide/latest/swapchain_semaphore_reuse.html
2025-07-21 16:02:53 +02:00
Martino Fontana 99be5eb6c8 GameINI: Misc updates 2025-06-28 00:44:51 +02:00
Martino Fontana 46ce355d93 GameINI: Remove NSMBW PAL speed hack 2025-06-13 22:27:21 +02:00
Martino Fontana 2de9122b5f GameList: Prevent opening Properties multiple times for the same game 2025-06-04 23:11:09 +02:00
Martino Fontana 8b228503d9 GameINI: Set texture cache accuracy for Scooby-Doo! Night of 100 Frights PAL 2025-05-17 13:35:17 +02:00
Martino Fontana 79a90b1f42 GameINI: Enable EFB Access for Jimmy Neutron Boy Genius 2025-05-13 22:57:11 +02:00
Martino Fontana c720211542 VideoCommon: Limit maximum denominator for MPEG4
It happened to be under the limit normally, but now that the VBI rate can be changed, that's no longer the case.
2025-05-12 18:54:42 +02:00
Martino Fontana 832570c658 Core: Add VBI Frequency Override
This feature allows overriding the frequency of the Vertical Blank Interrupt. For many games, this means that their gameplay speed will change without affecting audio, which would be useful by itself (e.g. grinding in RPGs).

However, there are games that use delta time for their game logic, which allows them to be played at >60 FPS at the same gameplay speed!

Some games aren't dynamic though, and require a patch to adjust their game speed variable.
2025-05-12 18:54:36 +02:00
Martino Fontana e7f22515d3 GameINI: Disable Immediately Present XFB for Dragon Ball Z: Budokai and Dragon Ball Z: Budokai 2 2025-05-10 14:14:12 +02:00
Martino Fontana d591e3b4e3 GameINI: Enable Single Core for Kung Fu Panda and Shrek Forever After
These games (both are made with the Lux Engine) randomly freeze with Dual Core.
2025-04-29 11:35:09 +02:00
Martino Fontana e751235574 DolphinQt: Remove unused variables from AdvancedPane.h
Small oversight from #13422.
2025-04-23 12:32:12 +02:00
Martino Fontana cb8b235a48 Remove Bloom Definitions for Skylanders Trap Team 2024-10-10 22:03:34 +02:00
Martino Fontana e57ee3c099 GameINI: Add Skylanders: Trap Team
`EFBEmulateFormatChanges = True` properly emulates the blur in the backgrounds.
`ImmediateXFBEnable = False` to prevent epilepsy-inducing FMVs.
2024-10-03 19:41:46 +02:00
Martino Fontana b055965792 GameINI: Add Skylanders: Giants
`EFBEmulateFormatChanges = True` properly emulates the blur in the pause screen.
`ImmediateXFBEnable = False` to prevent epilepsy-inducing FMVs and main menu.
2024-10-03 19:41:39 +02:00
Martino Fontana f3dd61ae89 GameINI: Add Skylanders: Spyro's Adventure
`EFBEmulateFormatChanges = True` properly emulates the blur in the pause screen.
`ImmediateXFBEnable = False` to prevent epilepsy-inducing FMVs and main menu.
2024-10-03 19:41:32 +02:00
Martino Fontana 7215610dfe Add Bloom definitions for Need for Speed: Nitro 2024-07-27 21:24:32 +02:00
Martino Fontana 991bce2d68 Config: Don't depend on is_dirty to save SYSCONF during restore
`Layer::Save` only does its thing if the layer has `is_dirty == true`.
But SYSCONF could have been modified by other layers, so if the base layer wasn't made dirty by anything else, then it wouldn't be restored.
Fixes https://bugs.dolphin-emu.org/issues/13580
2024-07-27 16:45:33 +02:00
Martino Fontana f9450f1460 GameINI: SVX.ini: Replace EFBToTextureEnable=False with ImmediateXFBEnable=False
To fix flickering pre-rendered cutscenes, the former doesn't do anything anymore, while the latter does.
2024-07-27 15:42:12 +02:00
Martino Fontana 5b13903e6a Intepreter: Step before checking for breakpoints
This way, by pressing Continue on top of a breakpoint, the emulation will actually continue (like on Cached Interpreter and JIT), instead of doing nothing.
2024-07-05 21:33:23 +02:00
Martino Fontana 719af828e5 BreakpointWidget: Can create new breakpoints when emulation isn't running
It works perfectly fine, so why not? Also, consistency with CodeViewWidget.
2024-07-05 21:33:23 +02:00
Martino Fontana bd3cf67cbc Debugger: Rework temporary breakpoints
Before:
1. In theory there could be multiple, but in practice they were (manually) cleared before creating one
2. (Some of) the conditions to clear one were either to reach it, to create a new one (due to the point above), or to step. This created weird behavior: let's say you Step Over a `bl` (thus creating a temporary breakpoint on `pc+4`), and you reached a regular breakpoint inside the `bl`. The temporary one would still be there: if you resumed, the emulation would still stop there, as a sort of Step Out. But, if before resuming, you made a Step, then it wouldn't do that.
3. The breakpoint widget had no idea concept of them, and will treat them as regular breakpoints. Also, they'll be shown only when the widget is updated in some other way, leading to more confusion.
4. Because only one breakpoint could exist per address, the creation of a temporary breakpoint on a top of a regular one would delete it and inherit its properties (e.g. being log-only). This could happen, for instance, if you Stepped Over a `bl` specifically, and pc+4 had a regular breakpoint.

Now there can only be one temporary breakpoint, which is automatically cleared whenever emulation is paused. So, removing some manual clearing from 1., and removing the weird behavior of 2. As it is stored in a separate variable, it won't be seen at all depending on the function used (fixing 3., and removing some checks in other places), and it won't replace a regular breakpoint, instead simply having priority (fixing 4.).
2024-07-05 21:33:22 +02:00
Martino Fontana 037de1ce92 Debugger: fix Run to Here
Now it actually does what it says on the name, instead of creating a breapoint and doing nothing else (not even updating the widget).
Also, it now can't be selected if emulation isn't running.
Closes https://bugs.dolphin-emu.org/issues/13532
2024-07-02 18:29:42 +02:00
Martino Fontana 8235c38df7 Debugger: Small other cleanup
Change misleading names.
Fix function usage: Intepreter and Step Out will not check breakpoints in their own wrong way anymore (e.g. breaking on log-only breakpoints).
2024-07-02 18:29:42 +02:00
Martino Fontana 9aeeea3762 Debugger: Small Breakpoint cleanup
Reuse more code, change misleading names, remove useless documentation, add useful documentation
2024-07-02 18:29:42 +02:00
Martino Fontana 9285f13186 Add Bloom Definitions for Skylanders Trap Team 2024-03-24 23:20:25 +01:00
Martino Fontana a98bceba9f Add Bloom Definitions for Skylanders Giants 2024-03-23 23:56:02 +01:00
Martino Fontana 12fe5550d2 Externals/hidapi: Convert to submodule
This also updates to 0.14.0 (https://github.com/libusb/hidapi/commit/d3013f0af3f4029d82872c1a9487ea461a56dee4)
2024-01-30 01:35:39 +01:00
Martino Fontana 7baedc3ec4 CMake: Enable SDL on Linux by default 2024-01-13 16:10:28 +01:00
Martino Fontana 51e05f468a SDL: Add GameController API, cleanup 2024-01-13 16:10:25 +01:00
Martino Fontana 0ab2bc2287 ControllerInterface: Make FullAnalogSurface inherit IsDetectable() 2024-01-10 12:20:07 +01:00
Martino Fontana 58f5bf5496 VKGfx: Don't panic for VK_SUBOPTIMAL_KHR 2024-01-05 11:20:35 +01:00
Martino Fontana 5792eefdaf expr: increase size of varname 2023-11-18 23:53:19 +01:00
Martino Fontana c43c9101c0 CMake: use version flags if Git isn't found 2023-08-14 11:27:39 +02:00
Martino Fontana 1e5e319783 Qt/GameConfigWidget: Add Manual Texture Sampling 2023-07-25 00:45:13 +02:00
Martino Fontana 41f81aca69 Qt/GameConfigWidget: Rename m_enable_fast_disc to m_emulate_disc_speed 2023-07-25 00:45:10 +02:00
Martino Fontana 0892998af1 Qt/GameConfigWidget: Add reverse argument for {Save,Load}CheckBox
In order to not hard code `if (key == "FastDiscSpeed")`
2023-07-24 20:48:32 +02:00
Martino Fontana b5be399fd4 cubeb: Change name to "Dolphin Emulator"
To avoid conflicts with KDE's file manager.
2023-07-22 23:12:34 +02:00