Commit Graph

31411 Commits

Author SHA1 Message Date
203923b267 JitArm64_RegCache: Simplify std::find using ranges and projections 2024-10-11 12:09:00 -07:00
8b1975ab18 GraphicsMod: Simplify std::sort using ranges and projections 2024-10-11 12:08:22 -07:00
2edf6c6419 CoreTiming: Simplify algorithms using ranges and three-way comparison 2024-10-11 12:08:22 -07:00
e8d5fb89e4 C++20: Synthesize operator!= From operator==
The inequality operator is automatically generated by the compiler if `operator==` is defined.
2024-10-10 20:23:55 -07:00
7db13d23c9 Merge pull request #13086 from Tilka/gameini
GameSettings: safe texture cache for "Winter Sports 3: The Great Tournament"
2024-10-09 02:06:51 +02:00
2b22e6ffc9 Merge pull request #13109 from Pokechu22/fifo-player-wii-bats
FifoPlayer: Set up additional BATs in Wii mode
2024-10-07 17:42:54 +01:00
929bcbdde9 Fifo analyzer: Fix indexed XF loads showing "bytes" instead of "words"
Indexed XF loads specify the number of 32-bit words (generally floats, but light data has some integers) to load, not the number of bytes. This was only a mistake in the fifo analyzer text; the actual implementation already loaded words.
2024-10-06 21:56:48 -07:00
de61430dae FifoPlayer: Set up additional BATs in Wii mode
The light LIT fifolog from https://bugs.dolphin-emu.org/issues/13635 has position data at physical address 11ae3180. This works fine when using the memory viewer in physical mode, but the corresponding virtual address (91ae3180) previously didn't show anything in effective mode. It works fine now though.

This shouldn't affect playback of fifologs as everything in there uses physical addresses; this only impacts the memory viewer.

This logic was copied from CBoot::SetupBAT.
2024-10-06 21:48:34 -07:00
339f9311fb Merge pull request #12918 from JosJuice/revert-revert-audit-get-state
Partially revert "Revert "Audit uses of IsRunning and GetState""
2024-10-06 11:26:06 -04:00
d78b76790d Merge pull request #13105 from lycheefox/skylanders
Skylanders: Fix Head Rush (Nitro)
2024-10-06 11:21:32 -04:00
ad1109e191 Skylanders: Fix Head Rush (Nitro) 2024-10-05 22:14:17 -04:00
9244cded9f VideoBackends:Vulkan: Increase VMA Vulkan Version to 1.2
We now use Vulkan 1.2 if available
2024-10-05 16:51:14 -05:00
d1ac40a72b Merge pull request #13101 from JosJuice/gametdbid-partition
Core: Include partition when calling GetGameTDBID for non-game partition
2024-10-05 22:31:58 +01:00
b191c0f7d8 Merge pull request #12208 from PatrickFerry/add-vertex-depth-range-case
Use Vertex Depth Range when zRange Exceeds farZ
2024-10-05 14:14:11 +02:00
6798f63a2e Core: Include partition when calling GetGameTDBID for non-game partition
This problem was introduced in 8842a0f402
and is likely a copy-paste error.

Fixes the problem mentioned in the issue comment
https://bugs.dolphin-emu.org/issues/13640#note-2.
2024-10-05 13:04:50 +02:00
2d9f789940 Merge pull request #13050 from TellowKrinkle/HKIsNotMVK
Vulkan: Don't do MoltenVK things on Asahi Linux
2024-10-05 00:51:27 -04:00
ae14abb2fa Merge pull request #13088 from TellowKrinkle/iOSFixes
VideoBackends:Metal: Fix bbox on newer iOS devices
2024-10-04 17:32:44 -04:00
6ca2da53e8 Partially revert "Revert "Audit uses of IsRunning and GetState""
This reverts the revert commit bc67fc97c3,
except for the changes in BaseConfigLoader.cpp, which caused the bug
that made us revert 72cf2bdb87. PR 12917
contains an improved change to BaseConfigLoader.cpp, which can be merged
(or rejected) independently.

A few changes have also been made based on review comments.
2024-10-04 18:35:41 +02:00
2da3e49b1e Merge pull request #13078 from Dentomologist/videobackendbase_only_populate_backend_info_when_uninitialized
VideoBackendBase: Only populate backend info when uninitialized
2024-10-04 18:31:06 +02:00
76287f3810 Merge pull request #13097 from Tilka/vidpid
Bluetooth: show vid:pid in error message
2024-10-03 19:05:56 +02:00
e259831bcf Merge pull request #13087 from TellowKrinkle/PresentSkip
VideoBackends:Vulkan: Prevent freezes during window resize on Linux
2024-10-02 21:09:25 -04:00
a267c56412 VideoBackends:Vulkan: Wait until we've confirmed a successful AcquireNextImage before marking semaphores used 2024-10-02 19:22:16 -05:00
7e1a9490c0 VideoBackends:Vulkan: Don't try to present if swapchain acquire failed 2024-10-02 19:22:16 -05:00
e455833ea4 Bluetooth: show vid:pid in error message 2024-10-02 21:50:25 +01:00
122bce08de Merge pull request #12953 from LillyJadeKatrin/retroachievements-fail-messaging
Achievements Fail Messaging
2024-10-02 14:50:21 -04:00
2f40bc25ae Properly Notify when Achievements Login Fails 2024-10-01 18:03:46 -04:00
70f69c3213 VideoBackends:Metal: subgroup_ops requires Apple7, not Apple6
SIMD-scoped permute operations are Apple6, but reduction operations are Apple7
2024-09-30 23:38:23 -05:00
a02cbc9b78 WII_IPC: rewrite multiply as 100_tbticks literal (NFC) 2024-10-01 01:42:16 +01:00
fd94ff252d VideoCommon: Dirty pixel shader manager on efb scale changes 2024-09-30 01:12:55 -05:00
14feaf4ba8 VideoBackends:Metal: Use ios_use_simdgroup_functions with SPIRV-Cross
It defaults to trying to emulate simdgroup functions on iOS
2024-09-29 23:58:54 -05:00
c7cbac538a Merge pull request #13083 from Tilka/apploader
Boot: write Apploader version into memory
2024-09-29 14:40:43 +01:00
c60accc96d VolumeVerifier: Promote DEBUG_ASSERT to static_assert
This runtime assertion was added before `std::is_sorted` became constexpr in the codebase.
2024-09-28 23:12:12 -07:00
b168a8092f Boot: write Apploader version into memory
When HLE-ing the apploader, this is necessary to avoid "Error #002"
errors. Homebrew doesn't care.
2024-09-29 03:57:44 +01:00
dc1b961c09 VideoBackendBase: Only populate backend info when uninitialized
Prevent potential issues when creating the Graphics window (and thus
calling PopulateBackendInfo) while the core state is Stopping, like we
already do while it's Starting or Running.
2024-09-27 12:20:48 -07:00
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
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
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
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
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
b1cd4a6690 Merge pull request #13068 from mitaclaw/redundant-case-insensitive
IniFile: Migrate `Common::CaseInsensitiveLess` to StringUtil
2024-09-26 18:24:36 -04:00
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
0d7e94e8b3 Merge pull request #13070 from mitaclaw/remove-join-strings
StringUtil: Remove `JoinStrings`
2024-09-26 18:20:14 -04:00
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
0a299a4e1e Sw/Tev: drop unused macro 2024-09-24 22:00:03 +01:00
98add9faf0 Sw/Rasterizer: fix two elder typos, AD 2009 2024-09-24 22:00:03 +01:00
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
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
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
671958f141 GeckoCode: Remove Dead Code 2024-09-21 15:33:40 -07:00
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