Commit Graph

31748 Commits

Author SHA1 Message Date
384e044437 QtUtils/ClearLayoutRecursively: Fix potential crash
Use QObject->deleteLater() instead of the delete operator to destroy
child widgets of the layout. This prevents crashes caused by pending
events trying to access the now-destroyed widget.
2024-07-21 17:36:05 -07:00
191b36976c DolphinTool: list filesystem recursively 2024-07-21 19:16:00 +01:00
7bd2a7bde3 Merge pull request #12945 from Tilka/erase_if
Use C++20 erase_if() instead of erase(remove_if()) (NFC)
2024-07-21 19:06:55 +01:00
2dcb612497 Change OperandDesc variables to not be underscore-prefixed in order to comply with https://eel.is/c++draft/lex.name#3.1 (fixes compilation under newlib; e.g. devkitPro) 2024-07-21 18:35:38 +02:00
982893b04c Use C++20 erase_if() instead of erase(remove_if()) (NFC) 2024-07-21 16:36:06 +01:00
1fcb2ee5c1 Merge pull request #12936 from vabold/ios-inaccuracy
IOS: Fix return code inaccuracy
2024-07-19 21:27:07 +02:00
139e6f6f1b Merge pull request #12941 from LillyJadeKatrin/retroachievements-leaderboard-spam-fix
RetroAchievements - Leaderboard Spam Fix
2024-07-18 21:15:38 +02:00
8bb2f98c6a Properly Populate Player Index
The player_index field in question is ultimately what gets used to determine which ranks get displayed in the leaderboards chart, and because this was missing the chart was simply displaying the top four results no matter what.
2024-07-17 22:53:15 -04:00
5ccd157c94 Re-enable Leaderboards Tab 2024-07-17 22:51:43 -04:00
e7504d0b12 Remove Leaderboard Fetch when Getting Info
The cause of the leaderboard spam was primarily this call where if there was an attempt to get leaderboard info and there wasn't already, there would be a fetch request. This is bad for many reasons: some games have hundreds of boards that will be fetched at startup, if there's simply no data to populate that board, this will just continue to fetch every time the dialog needs to update. To mitigate this, I simply don't load leaderboard information until there are events for that leaderboard - less information for the player, sadly, but heavily cuts down on the number of leaderboard fetches.
2024-07-17 22:51:24 -04:00
d19aa934ae Fixed incorrect unlock information in Achievements dialog 2024-07-17 04:36:53 -04:00
cc3ff347b4 Merge pull request #12928 from LillyJadeKatrin/retroachievements-disable-lboard-tab
Disable Leaderboards Tab
2024-07-15 21:33:08 -04:00
63e1419396 AchievementManager: Don't point to stack for login error message 2024-07-15 23:24:04 +02:00
c50689355b IOS: Fix return code inaccuracy
Co-Authored-By: Mike <99037623+MikeIsAStar@users.noreply.github.com>
2024-07-15 16:11:15 -04:00
50b318cc31 Qt/AchievementHeaderWidget: Don't crash when we get an empty player or game badge 2024-07-15 21:55:47 +02:00
d665175a2b AchievementManager: Return the default player and game badges if the current one isn't loaded yet
This saves some copying and fixes an issue where the default badges disappear after a game was closed
2024-07-15 21:55:23 +02:00
b18661f15d Merge pull request #12931 from AdmiralCurtiss/cannot-pause-message
AchievementManager: Improve error message for repeated pausing
2024-07-15 12:05:45 +02:00
12a1607385 Merge pull request #12749 from LillyJadeKatrin/retroachievements-menubar
Show Achievements in Menu Bar always
2024-07-14 19:13:08 -04:00
7a36d5373a AchievementManager: Improve error message for repeated pausing 2024-07-14 23:09:53 +02:00
a0fc8e6b13 Merge pull request #12929 from LillyJadeKatrin/retroachievements-leaderboard-fixes
Fix Leaderboards Tab
2024-07-14 16:47:59 +02:00
0108ecebcb Fix Leaderboards Tab
Now that we have some test data, it wasn't showing up in the leaderboards tab; this fixes it to ensure (1) that the right ID is being passed to UpdateRow and (2) the map of leaderboard entries is being populated correctly.
2024-07-14 10:13:27 -04:00
a273dc2de2 Merge pull request #12924 from JosJuice/ra-unverified-ini-osd
RetroAchievements: Show OSD messages also for unverified INI files
2024-07-14 04:15:05 +02:00
f928fe97af Merge pull request #12925 from LillyJadeKatrin/retroachievements-unlocked-progress
Achievements Progress Bar Tweaks
2024-07-14 04:11:02 +02:00
95933d5158 Merge pull request #12907 from GaryOderNichts/fix/init_ipc_running
IOS::HLE::EmulationKernel::InitIPC: Fix WiiIPC ack generation
2024-07-12 16:48:37 +02:00
193c863f20 Disable Leaderboards Tab
Emergency PR to disable the leaderboards tab for launch if we are not satisfied with its testing yet.
2024-07-12 07:45:04 -04:00
82b97ca904 IOS::HLE::EmulationKernel::InitIPC: Fix WiiIPC ack generation 2024-07-11 19:41:28 +02:00
e035db9127 Update game progress bar to match achievement progress bar 2024-07-10 18:51:37 -04:00
073426ead7 Force progress bar to 100% on completed achievements 2024-07-10 08:51:13 -04:00
1bf12a50c2 RetroAchievements: Show OSD messages also for unverified INI files
Currently we're showing OSD messages for unknown patches in known INI
files, but not for unknown patches in unknown INI files. I don't think
this distinction makes much sense to the user. If there's a patch the
user can't use, they probably want to be aware of that fact.
2024-07-10 13:16:54 +02:00
321c4649a5 Merge pull request #12921 from VampireFlower/master
BreakpointWidget: Correct icon position
2024-07-10 03:25:49 +02:00
afa6e26e5d BreakpointWidget: Correct icon position
Co-Authored-By: TryTwo <10532806+TryTwo@users.noreply.github.com>
2024-07-09 15:20:56 -07:00
e6b9091ffc RetroAchievements: Skip LoadApprovedList if there are no patches
There being no active patches is by far the most common case, so let's
optimize for this case.
2024-07-09 09:55:51 +02:00
f59678842b RetroAchievements: Delay calling LoadApprovedList
0c14b0c8a7 made Dolphin load a file from
the Sys folder the first time AchievementManager::GetInstance() is
called. Because Android calls AchievementManager::GetInstance() from
setBackgroundExecutionAllowedNative, this had two negative consequences
on Android:

1. The first time setBackgroundExecutionAllowedNative gets called is
   often before directory initialization is done. Getting the path of
   the Sys folder before directory initialization is done causes a crash.
2. setBackgroundExecutionAllowedNative is called from the GUI thread,
   and we don't want file I/O on the GUI thread for performance reasons.

This change makes us load the data from the Sys folder the first time
the data is needed instead. This also saves us from having to load the
data at all when hardcore mode is inactive.
2024-07-09 09:55:07 +02:00
01a2cf8db9 Merge pull request #12919 from JosJuice/set-background-execution-allowed-crash
Fix AchievementManager::SetBackgroundExecutionAllowed crash
2024-07-08 01:13:25 +02:00
95e2064099 Fix AchievementManager::SetBackgroundExecutionAllowed crash
We mustn't use m_system when it is nullptr. This was causing Dolphin to
crash on Android whenever an activity was recreated or resumed while
emulation is running, which is super common.
2024-07-07 23:56:10 +02:00
c4db83ce09 Merge pull request #12920 from TellowKrinkle/XXHashLink
Properly link against xxhash
2024-07-07 23:49:01 +02:00
b10d62cf66 Merge pull request #12913 from LillyJadeKatrin/retroachievements-allowlist-test
RetroAchievements - Patch Allowlist Unit Test
2024-07-07 23:48:09 +02:00
3ca50f7879 Implement File::GetExePath() for FreeBSD 2024-07-07 21:09:50 +02:00
0c14b0c8a7 Add Approved Patch Allowlist for Achievements
Prototype of a system to whitelist known game patches that are allowed to be used while RetroAchievements Hardcore mode is active. ApprovedInis.txt contains known hashes for the ini files as they appear in the repo, and can be compared to the local versions of these files to ensure they have not been edited locally by the player. ApprovedInis.txt is hashed and verified similarly first, with its hash residing as a const string within AchievementManager.h, ensuring ApprovedInis and the hashes within cannot be modified without editing Dolphin's source code and recompiling completely.
2024-07-07 13:42:09 -04:00
cab6e7c12e Properly link against xxhash
Things using dolphin_find_optional_system_library need to link against the name used there or they won't work with both the system and bundled cases
2024-07-06 16:56:44 -05:00
02e1b94149 Merge pull request #12905 from LillyJadeKatrin/retroachievements-hotkey
Add Open Achievements Hotkey
2024-07-06 14:23:47 +02:00
8b427de28f Remove popups for challenges
The challenge popups have proven to be excessive and are no longer useful thanks to the achievements hotkey. Instead, those events will ask for an immediate RP-level update to the achievements dialog, which will among other things re-sort the dialog to show challenges on top faster.
2024-07-06 07:36:31 -04:00
2372b6a386 Add Open Achievements Hotkey
Adds a hotkey to pause emulation and bring up the Achievements dialog.
2024-07-06 07:36:31 -04:00
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
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
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
6ddfdc1483 Merge pull request #12915 from AdmiralCurtiss/sha1-span
Common/Crypto/SHA1: Use span and string_view for Context::Update()
2024-07-05 21:15:00 +02:00
2812e6116e Merge pull request #12851 from iwubcode/texture_asset_from_to_json_sampler
VideoCommon: add way to serialize Texture Asset to json, update to deserialize values independently
2024-07-05 14:36:42 -04:00
5ea3d9fca0 Merge pull request #12856 from LillyJadeKatrin/retroachievements-pause-v2
Handle Pausing in AchievementManager
2024-07-04 22:53:04 +02:00
3a63633be3 Common/Crypto/SHA1: Use span and string_view for Context::Update() 2024-07-04 22:37:07 +02:00