Commit Graph

182 Commits

Author SHA1 Message Date
LillyJadeKatrin
ef612912a2 Handle local achievements
Displays an additional message when an achievement unlocks that isn't on the site yet (either hasn't yet been uploaded or modified from remote) i.e. achievements the "player" is actively developing.
2025-04-16 17:01:21 -04:00
LillyJadeKatrin
fa782de15c Add MemoryPoker for RAIntegration 2025-04-16 17:00:58 -04:00
LillyJadeKatrin
90a4be4b36 Add RAIntegration event handler
Some refactoring done to hardcore toggling so that it's more readily available for the toggle hardcore event.
2025-04-13 13:36:15 -04:00
LillyJadeKatrin
9caa02493d Add RetroAchievements development menu
When the menu exists, it replaces the Achievements action in the Tools menu.
2025-04-13 08:06:00 -04:00
LillyJadeKatrin
36c7e7f3c7 Load RA_Integration.DLL at init if present 2025-04-13 08:05:59 -04:00
JMC47
225039f742 Merge pull request #13427 from LillyJadeKatrin/retroachievements-code-approval-fix
Fixed Multi Config Code Approvals
2025-03-15 13:57:48 -04:00
JosJuice
8c7ab286f5 Merge pull request #13181 from tygyh/Replace-'reinterpret_cast'
Replace 'reinterpret_cast' with 'static_cast'
2025-03-15 15:31:38 +01:00
LillyJadeKatrin
0615ade725 Fixed Multi Config Code Approvals
Refactors the AR/Gecko/Patch code approval process to verify from every possible game ini, not just the base game ID. This fixes codes on specific revisions or codes general to any region.
2025-03-15 07:57:16 -04:00
JMC47
189d09011b Merge pull request #13363 from JoshuaVandaele/nowarnings
Fix multiple minor warnings
2025-03-10 15:04:14 -04:00
Luz Paz
fb6c625fed Core/Core: fix typos
Found via `codespell -q 3 -S "./Externals,./Data/Sys/wiitdb-??.txt,*.po,*.pot" -L andf,asnd,bootup,bufferin,clen,collet,datas,delt,fpr,inout,inport,interm,pixelx,re-use,re-used,sav,stateman,strat,wil`
2025-03-08 15:41:53 -05:00
Joshua Vandaële
5b4d4ca5eb Fix multiple minor warnings
- ExpressionParser.cpp: `-Wmissing-declarations`
- AchievementManager.cpp: `-Wsign-compare`
- SI.cpp: `-Warray-bounds=`
- NetPlayClient.cpp: `-Wdangling-reference`
2025-02-21 19:17:29 +01:00
LillyJadeKatrin
8447ce99f4 Scale back hardcore code block
Now that patches and codes are enabled on a case by case basis, remove patcher code blocking codes entirely in hardcore mode, and reword the warning to be more accurate.
2024-11-27 21:21:26 -05:00
LillyJadeKatrin
3c255b55e8 Add AR Code Whitelist Approval 2024-11-27 21:21:26 -05:00
LillyJadeKatrin
13a1956cfa Add Gecko Code Whitelist Approval 2024-11-27 21:21:25 -05:00
LillyJadeKatrin
78f3448e27 Convert FilterApprovedPatches to Template 2024-11-27 21:21:25 -05:00
LillyJadeKatrin
ef71c75458 Add Config Changed Callback for Hardcore Mode 2024-11-10 08:38:00 -05:00
Dr. Dystopia
6d44afc7dd Replace 'reinterpret_cast' with 'static_cast' 2024-11-08 07:26:47 +01:00
JMC47
1012803f2e Merge pull request #12954 from LillyJadeKatrin/retroachievements-confirm
Achievements Confirmation Dialogs
2024-10-28 12:54:37 -04:00
LillyJadeKatrin
415fa3c6a5 Migrate Hardcore Toggle Code to Achievement Manager
AchievementManager::SetHardcoreMode now handles the (non-Qt) settings disabled by hardcore mode, instead of doing this on the Qt layer. Also ensured Init/Enable Achievements paths run this code, fixing the bug wherein the player can manipulate things when achievements are disabled that persist when turned back on.
2024-10-03 07:52:07 -04:00
JMC47
122bce08de Merge pull request #12953 from LillyJadeKatrin/retroachievements-fail-messaging
Achievements Fail Messaging
2024-10-02 14:50:21 -04:00
LillyJadeKatrin
2f40bc25ae Properly Notify when Achievements Login Fails 2024-10-01 18:03:46 -04: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
LillyJadeKatrin
8fac6061ac Display Achievements Message for Old Version
With this change, a different message is displayed if starting a game with RetroAchievements fails due to the Dolphin version being blocked as opposed to failing because the game hash is unsupported.
2024-08-08 21:38:16 -04:00
LillyJadeKatrin
347aab7ab3 Fixed achievements not working after a disc change. 2024-07-25 20:46:46 -04:00
Admiral H. Curtiss
c71ccb548e AchievementManager: Fix incorrect check on network request return value in FetchBadge() 2024-07-23 20:49:12 +02:00
LillyJadeKatrin
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
LillyJadeKatrin
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
Admiral H. Curtiss
63e1419396 AchievementManager: Don't point to stack for login error message 2024-07-15 23:24:04 +02:00
Admiral H. Curtiss
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
Admiral H. Curtiss
7a36d5373a AchievementManager: Improve error message for repeated pausing 2024-07-14 23:09:53 +02:00
Admiral H. Curtiss
a0fc8e6b13 Merge pull request #12929 from LillyJadeKatrin/retroachievements-leaderboard-fixes
Fix Leaderboards Tab
2024-07-14 16:47:59 +02:00
LillyJadeKatrin
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
JosJuice
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
JosJuice
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
JosJuice
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
Admiral H. Curtiss
01a2cf8db9 Merge pull request #12919 from JosJuice/set-background-execution-allowed-crash
Fix AchievementManager::SetBackgroundExecutionAllowed crash
2024-07-08 01:13:25 +02:00
JosJuice
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
Admiral H. Curtiss
b10d62cf66 Merge pull request #12913 from LillyJadeKatrin/retroachievements-allowlist-test
RetroAchievements - Patch Allowlist Unit Test
2024-07-07 23:48:09 +02:00
LillyJadeKatrin
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
LillyJadeKatrin
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
Admiral H. Curtiss
5ea3d9fca0 Merge pull request #12856 from LillyJadeKatrin/retroachievements-pause-v2
Handle Pausing in AchievementManager
2024-07-04 22:53:04 +02:00
LillyJadeKatrin
bf97305a60 AchievementManager: Cache Badges on Disk
Badges are saved in /User/Cache/RetroAchievements on first download and reused from there instead of redownloaded.
2024-07-04 22:12:28 +02:00
JMC47
f4c6311b91 Merge pull request #12904 from LillyJadeKatrin/retroachievements-challenge-popups
Add Messages for Challenges
2024-07-01 14:35:15 -04:00
LillyJadeKatrin
44af48a11f Add Messages for Challenges
Starting or ending a challenge now displays a popup naming and describing the challenge along with the active icon.
2024-07-01 06:56:59 -04:00
LillyJadeKatrin
33081184bb Handle Pausing in AchievementManager
There are two pieces of functionality to be added here. One, we want to disallow pausing too frequently, as it may be used as an artificial slowdown. This is handled within the client, which can tell us if a pause is allowed. Two, we want to call rc_client_idle on a periodic basis so the connection with the server can be maintained even while the emulator is paused.
2024-06-30 07:05:54 -04:00
Dentomologist
c46c010ae3 AchievementManager: Fix -Wignored-qualifiers warning
Fix warning on Android builder by returning bool instead of const bool.
2024-06-27 14:36:14 -07:00
JosJuice
01b44837f4 Android: Track whether app is in foreground 2024-06-23 18:16:33 -04:00
LillyJadeKatrin
aa393dfb6e Add MemoryVerifier to AchievementManager Startup
rc_client calls the provided memory peeker asynchronously in the callback for starting a session, to validate/invalidate the memory used for achievements. Dolphin cannot access memory from any thread but host or CPU so this access has a small chance of being invalid. This commit adds a MemoryVerifier that the AchievementManager will use to perform this, before changing the peek method back to the original MemoryPeeker for normal operation.
2024-06-22 09:31:00 -04:00
Admiral H. Curtiss
f71d6498d0 Merge pull request #12855 from LillyJadeKatrin/retroachievements-challenge-refactor
Refactored Challenge Icons to handle icon updates
2024-06-15 16:24:24 +02:00
LillyJadeKatrin
cee3d9126b Added missing dialog updates to achievement events
Now should properly update the Achievements dialog whenever the displayed state of an achievement/leaderboard changes.
2024-06-15 07:56:21 -04:00