Commit Graph

42570 Commits

Author SHA1 Message Date
Tilka 2cb124bd3a
Merge pull request #13062 from Dentomologist/graphics_clarify_relationship_between_incompatible_settings
Graphics: Clarify relationship between incompatible settings
2024-09-27 05:40:30 +01:00
Tilka 61836e5d8e
Merge pull request #13077 from Dentomologist/graphicswindow_fix_first_opening_during_emulation_startup_crash
GraphicsWindow: Fix crash when opening for the first time during emulation startup
2024-09-27 05:38:37 +01:00
Dentomologist 0a1084fad5 VideoBackendBase: Check Core state in PopulateBackendInfo
Remove the PopulateBackendInfoFromUI function, which had a single caller
(GraphicsWindow::OnBackendChanged) and checked that the core wasn't
running or starting before calling PopulateBackendInfo.

Move the core state check into PopulateBackendInfo and have
OnBackendChanged call that instead. This guarantees the check is
performed by all callers of PopulateBackendInfo, preventing
potential reintroduction of the crash fixed in 3d4ae63f if another call
to PopulateBackendInfo is added.

As of the previous commit the only other caller of PopulateBackendInfo
is Core::Init shortly before s_state is set to Starting, so it will
always pass the check and so maintain its current behavior.
2024-09-26 17:12:26 -07:00
Dentomologist 2b82c34ea8 Core: Remove redundant call to PopulateBackendInfo
Remove the second of two calls to PopulateBackendInfo during emulation
startup. This call was originally the only one, but b214e0e added an
earlier call to handle the backend being changed by the GameINI.

The PR discussion doesn't explain why the original call was left in; I
suspect it was just overlooked.

As a bonus, this removes one of the extra copies of the "Video Info" On
Screen Display message at startup when using OpenGL.
2024-09-26 17:12:26 -07:00
Dentomologist 91f7b776ca GraphicsWindow: Fix crash when opening during emulation startup
Fix a crash when opening the Graphics window for the first time during
emulation startup when the backend is Vulkan, D3D11, or D3D12.

Don't call PopulateBackendInfo() from the Host thread when the core is
starting up. First, the function has already been called in Core::Init()
so we don't need to again. More importantly, PopulateBackendInfo() calls
g_video_backend->InitBackendInfo(), and the Vulkan and D3D
implementations of those functions load and then unload libraries (and
their associated function pointers) which are potentially in use by
other threads.

This crash was reliably reproducible with the following steps:
1) Select an affected backend.
2) Enable "Compile Shaders Before Starting"
3) Delete the cached shaders (but not the .uidcache file) for the game
   you're testing.
4) Close and reopen Dolphin.
5) Start the game.
6) While the game is still booting or compiling shaders, open the
   Graphics window for the first time in that Dolphin session.

Fixes https://bugs.dolphin-emu.org/issues/13634.
2024-09-26 17:12:26 -07:00
JMC47 b1cd4a6690
Merge pull request #13068 from mitaclaw/redundant-case-insensitive
IniFile: Migrate `Common::CaseInsensitiveLess` to StringUtil
2024-09-26 18:24:36 -04:00
JMC47 d4d3acb796
Merge pull request #13065 from mitaclaw/ppc-breakpoints-signal
DolphinQt: A Ubiquitous Signal For When Breakpoints Change
2024-09-26 18:20:43 -04:00
JMC47 0d7e94e8b3
Merge pull request #13070 from mitaclaw/remove-join-strings
StringUtil: Remove `JoinStrings`
2024-09-26 18:20:14 -04:00
JMC47 4bc1546596
Merge pull request #13071 from Pokechu22/cheat-search-crash
Fix random crash when using the cheat search
2024-09-25 15:05:19 -04:00
JMC47 e9e4ae5a34
Merge pull request #13049 from PatrickFerry/gameini_remove_broken_cheat
GameINI: Remove Broken Cheat from "Paper Mario: The Thousand Year Door"
2024-09-25 14:18:30 -04:00
Tilka ec6f5e1104
Merge pull request #13072 from Tilka/videosw
VideoSoftware: small cleanup
2024-09-25 10:57:05 +01:00
Tillmann Karras 0a299a4e1e Sw/Tev: drop unused macro 2024-09-24 22:00:03 +01:00
Tillmann Karras 98add9faf0 Sw/Rasterizer: fix two elder typos, AD 2009 2024-09-24 22:00:03 +01:00
Pokechu22 b34b7f63ee Fix random crash when using the cheat search
Before, Dolphin would randomly crash when updating the cheat search when automatic refresh was enabled. (Having a large number of addresses listed, e.g. by starting with an "any value" search, may contribute). The crash was due to QTableWidget::item returning nullptr in RefreshGUICurrentValues, presumably due to the table being resized on the UI thread while the emulated CPU thread was updating the values. I've fixed this by pausing the CPU thread for the entirety of OnNextScanClicked; this eliminated crashes in my testing.
2024-09-23 22:47:44 -07:00
mitaclaw 5f90673686 StringUtil: Remove `JoinStrings`
With 12 uses of `JoinStrings` in the codebase vs 36 uses of `fmt::join`, fmtlib's range adapter for string concatenation with delimiters is clearly the preferred option.
2024-09-22 21:09:36 -07:00
JosJuice de67c4c93b
Merge pull request #13013 from duckymomo360/rgh-tattoos-fix
GameINI: Fix tattoo texture saving in Rabbids Go Home
2024-09-22 09:10:09 +02:00
mitaclaw 508ccc2054 IniFile: Migrate `Common::CaseInsensitiveLess` to StringUtil
Migrating `Common::CaseInsensitiveLess` to StringUtil.h will hopefully discourage rolling one's own solution in the future for case-insensitive associative containers when this (quite robust!) solution already exists.

`Common::CaseInsensitiveStringCompare::IsEqual` was removed in favor of using the `Common::CaseInsensitiveEquals` function.

The `a.size() != b.size()` condition in `Common::CaseInsensitiveEquals` can be removed, since `std::ranges::equal` already checks this condition (confirmed in libc++).
2024-09-21 23:15:42 -07:00
Tilka 067bdaa3dd
Merge pull request #13067 from mitaclaw/dead-code-3
GeckoCode: Remove Dead Code
2024-09-22 05:00:26 +01:00
mitaclaw 671958f141 GeckoCode: Remove Dead Code 2024-09-21 15:33:40 -07:00
JMC47 3b9a70a435
Merge pull request #13053 from Dentomologist/texture_dumping_show_osd_on_startup_and_toggle
Texture Dumping: Show OSD message on startup and when toggled
2024-09-21 15:17:54 -04:00
JMC47 18ccd157cd
Merge pull request #13058 from Dentomologist/gamesettings_disable_gpu_texture_decoding_when_needed
GameSettings: Disable GPU Texture Decoding when needed
2024-09-21 15:15:23 -04:00
mitaclaw 4f821f4332 BreakpointWidget: Update when `Host::PPCSymbolsChanged`
Otherwise, outdated symbol names will remain.
2024-09-20 18:39:20 -07:00
mitaclaw 7c2a39706e DolphinQt: A Ubiquitous Signal For When Breakpoints Change
There were three distinct mechanisms for signaling breakpoint changes in DolphinQt, and the wiring had room for improvement. The behavior of these signals has been consolidated into the new `Host::PPCBreakpointsChanged` signal, which can be emitted from anywhere in DolphinQt to properly update breakpoints everywhere in DolphinQt.

This improves a few things:
- For the `CodeViewWidget` and `MemoryViewWidget`, signals no longer need to propagate through the `CodeWidget` and `MemoryWidget` (respectively) to reach their destination (incoming or outgoing).
- For the `BreakpointWidget`, by self-triggering from its own signal, it no longer must manually call `Update()` after all of the emission sites.
- For the `BranchWatchDialog`, it now has one less thing it must go through the `CodeWidget` for, which is a plus.
2024-09-20 18:37:39 -07:00
Tilka 6851ed73f4
Merge pull request #13064 from PatrickFerry/gameini_fixing_mistakes
GameINI: Fixing Various Mistakes
2024-09-16 23:24:56 +01:00
Tilka af921685f7
Merge pull request #13035 from retroNUC/cheevo-hash
Add generation of rcheevos hash as an option in DolphinTool
2024-09-15 22:18:58 +01:00
Patrick Ferry 5dac174972 GameINI: Disable Broken Enhancements for Solvalou
The wrong filename was used so the settings weren't being applied.

The graphical issues reported were from enhancements that create graphical issues.

EFBToTextureEnable solves some graphical issues but those issues appear for only a few frames, the bulk of the game does not benefit while the setting while it is very sore on performance.
2024-09-15 21:49:06 +01:00
Patrick Ferry 8c24b4745a GameINI: Enable Vertex Rounding for "Teenage Mutant Ninja Turtles 3: Mutant Nightmare"
ImmediateXFBEnable was disabled originally when enabling VertexRounding was intended

https://bugs.dolphin-emu.org/issues/10186
2024-09-15 21:48:59 +01:00
Patrick Ferry a51d87bc3d GameINI: Enable Vertex Rounding for "Teenage Mutant Ninja Turtles 2: Battle Nexus"
ImmediateXFBEnable was disabled originally when enabling VertexRounding was intended

https://bugs.dolphin-emu.org/issues/10186
2024-09-15 21:48:44 +01:00
Patrick Ferry a5209738fe GameINI: Disable ICache for Happy Feet
The DisableICache setting is supposed to be for [Core]
2024-09-15 21:48:25 +01:00
retroNUC a74b2a4dde Add generation of rcheevos hash to DolphinTool
Fixed coding standards issue

CalculateHash return string instead of using char array param
2024-09-15 15:52:04 +01:00
Dentomologist b1d54e416b GameSettings: Disable GPU Texture Decoding when needed
Arbitrary Mipmap Detection doesn't work when GPU Texture Decoding is
enabled, so disable GPU Texture Decoding for games where the .ini
enables Arbitrary Mipmap Detection.

Co-authored-by: jeremyie <73066289+McAchi@users.noreply.github.com>
2024-09-10 12:01:40 -07:00
Dentomologist 694f2ee995 Graphics: Clarify relationship between incompatible settings
Explicitly state that Manual Texture Sampling disables Anisotropic
Filtering and that GPU Texture Decoding disables Arbitrary Mipmap
Detection.
2024-09-10 11:35:15 -07:00
Tilka 5fe9e2f6ed
Merge pull request #13057 from JosJuice/rvzpack-typo
DiscIO: Fix a typo in an RVZPack comment
2024-09-08 16:08:57 +01:00
JosJuice 4eec061824
Merge pull request #12813 from Geotale/interpreter-subnormal-rounding
Proper Subnormal Rounding When Interpreting
2024-09-08 14:22:02 +02:00
JosJuice e72b23df91 DiscIO: Fix a typo in an RVZPack comment 2024-09-08 12:38:10 +02:00
JosJuice 0c1cd13b23
Merge pull request #12981 from Geotale/proper-integer-rounding
Improve Integer Rounding Accuracy
2024-09-08 12:09:58 +02:00
JMC47 2c15d7af7f
Merge pull request #12966 from Dentomologist/cheatsmanager_create_code_widgets_only_once
CheatsManager: Create Action Replay and Gecko code widgets only once
2024-09-07 15:13:18 -04:00
JosJuice f9f832fa88
Merge pull request #13051 from mitaclaw/dead-config-code-2
SI_Device: Remove Dead Config Code
2024-09-07 13:40:34 +02:00
Tilka 2417545b63
Merge pull request #13052 from Tilka/ax
DSPHLE/AX: fix low-pass/biquad clipping
2024-09-07 11:36:06 +01:00
Dentomologist c3d6d2189a Texture Dumping: Show OSD message on startup and when toggled
If texture dumping is enabled, notify the user on emulation startup
using an On Screen Display message.

Also notify the user when texture dumping is toggled.

Addresses https://bugs.dolphin-emu.org/issues/12445.
2024-09-06 13:00:25 -07:00
JMC47 efc395f7f4
Merge pull request #12977 from mitaclaw/branch-watch-tool-fixes-4
Branch Watch Tool: Refactors, Fixes, and Features
2024-09-04 19:36:24 -04:00
Tillmann Karras eb54721475 DSPHLE/AX: fix low-pass/biquad clipping
The low-pass and biquad filters run in set40 mode where accessing ac#.m
returns the value of ac#.hm clamped to 16 bits.

This fixes the crackling in "Need for Speed: Nitro" (issue 13610).

Also make the lower bound match hardware (-0x8000 instead of -0x7FFF).
2024-09-04 22:33:31 +01:00
OatmealDome 20f2320fcf Merge branch 'release-prep-2409' 2024-09-04 12:26:15 -04:00
mitaclaw e67e579b38 SI_Device: Remove Dead Config Code 2024-09-04 08:31:00 -07:00
OatmealDome 3c4d4fcd09 ScmRevGen: Bump major version to 2409 2024-09-04 00:43:45 -04:00
Patrick Ferry 98fe7104a3 GameINI: Remove Broken Cheat from "Paper Mario: The Thousand Year Door"
This is causing graphical glitches on some sprites, specifically the partner character after loading a game.
2024-09-03 23:30:28 +01:00
Geotale ffa680b15c Proper Subnormal Rounding When Interpreting
During 25-bit rounding, subnormals are "normalized"
This would normally mean that the exponent needs to be able to be <-1023
Instead, you can modify at what bit you round and get the same results!
This is done by finding the highest bit and shifting right the round bit

Co-Authored-By: JosJuice <josjuice@gmail.com>
2024-09-03 11:33:32 -05:00
Geotale 2f45391ca5 Improve Integer Rounding Accuracy
Changes integer rounding to more closely meet the documentation
The documentation explains to round before doing any bounds checks
All this really does is make sure some exception bits won't be set wrong
This depends on the rounding mode, fixing cases such as:
- Round to even, (0x7fffffff, 0x7fffffff.8)
- Round to down, (0x7fffffff, 0x80000000)

This change also uses some standard functions for rounding
Previously using them was casting to an s32 directly, now keeps the f64
RoundToIntegerMode introduced due to roundeven not being part of C++17

Finally, it can change a >0x7fffffff to >=0x80000000, done because:
- It looks nicer now with integers (I liked 0s)
- It gives ever so slightly better codegen on Aarch64

Co-Authored-By: JosJuice <josjuice@gmail.com>
2024-09-03 11:17:24 -05:00
Admiral H. Curtiss 95fac2a4e7
Merge pull request #13047 from mitaclaw/cached-interpreter-memcpy-ub
CachedInterpreterEmitter: Fix `std::memcpy` UB
2024-09-02 19:47:11 +02:00
mitaclaw 5a95c5dd14 CachedInterpreterEmitter: Fix `std::memcpy` UB
I wasn't aware that even with a size of zero, it's still not safe to pass a nullptr to `std::memcpy`. When `CachedInterpreterEmitter::PoisonCallback` is written, UB is happening.
2024-09-01 19:36:21 -07:00