From c0f0c054174a06620e97bb1caaea9611e91816d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Thu, 15 Jun 2023 13:40:37 +0200 Subject: [PATCH] rcheevos initial build setup and basic scaffolding --- .gitmodules | 3 + Core/Config.cpp | 1 + Core/Config.h | 1 + UI/PauseScreen.cpp | 17 +- UI/PauseScreen.h | 1 - UI/RetroAchievementScreens.cpp | 7 + UI/RetroAchievementScreens.h | 14 + UI/RetroAchievements.cpp | 13 + UI/RetroAchievements.h | 13 + UI/UI.vcxproj | 4 + UI/UI.vcxproj.filters | 10 +- UWP/PPSSPP_UWP.sln | 126 ++++----- UWP/UI_UWP/UI_UWP.vcxproj | 12 + UWP/UI_UWP/UI_UWP.vcxproj.filters | 6 +- UWP/rcheevos_UWP/rcheevos_UWP.vcxproj | 251 ++++++++++++++++++ UWP/rcheevos_UWP/rcheevos_UWP.vcxproj.filters | 144 ++++++++++ Windows/PPSSPP.sln | 23 +- android/jni/Android.mk | 29 ++ ext/rcheevos | 1 + ext/rcheevos-build/CMakeLists.txt | 47 ++++ ext/rcheevos-build/rcheevos.vcxproj | 189 +++++++++++++ ext/rcheevos-build/rcheevos.vcxproj.filters | 150 +++++++++++ 22 files changed, 989 insertions(+), 73 deletions(-) create mode 100644 UI/RetroAchievementScreens.cpp create mode 100644 UI/RetroAchievementScreens.h create mode 100644 UI/RetroAchievements.cpp create mode 100644 UI/RetroAchievements.h create mode 100644 UWP/rcheevos_UWP/rcheevos_UWP.vcxproj create mode 100644 UWP/rcheevos_UWP/rcheevos_UWP.vcxproj.filters create mode 160000 ext/rcheevos create mode 100644 ext/rcheevos-build/CMakeLists.txt create mode 100644 ext/rcheevos-build/rcheevos.vcxproj create mode 100644 ext/rcheevos-build/rcheevos.vcxproj.filters diff --git a/.gitmodules b/.gitmodules index a3c92a9929..2ca84d342b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -44,3 +44,6 @@ [submodule "cpu_features"] path = ext/cpu_features url = https://github.com/google/cpu_features.git +[submodule "ext/rcheevos"] + path = ext/rcheevos + url = https://github.com/RetroAchievements/rcheevos.git diff --git a/Core/Config.cpp b/Core/Config.cpp index 95e396f582..905c3e3b48 100644 --- a/Core/Config.cpp +++ b/Core/Config.cpp @@ -178,6 +178,7 @@ static const ConfigSetting generalSettings[] = { ConfigSetting("CwCheatRefreshRate", &g_Config.iCwCheatRefreshRate, 77, CfgFlag::PER_GAME), ConfigSetting("CwCheatScrollPosition", &g_Config.fCwCheatScrollPosition, 0.0f, CfgFlag::PER_GAME), ConfigSetting("GameListScrollPosition", &g_Config.fGameListScrollPosition, 0.0f, CfgFlag::DEFAULT), + ConfigSetting("EnableRetroAchievements", &g_Config.bEnableRetroAchievements, false, CfgFlag::PER_GAME), ConfigSetting("ScreenshotsAsPNG", &g_Config.bScreenshotsAsPNG, false, CfgFlag::PER_GAME), ConfigSetting("UseFFV1", &g_Config.bUseFFV1, false, CfgFlag::DEFAULT), diff --git a/Core/Config.h b/Core/Config.h index 209402ac63..2c996dcf88 100644 --- a/Core/Config.h +++ b/Core/Config.h @@ -216,6 +216,7 @@ public: int iAutoLoadSaveState; // 0 = off, 1 = oldest, 2 = newest, >2 = slot number + 3 bool bEnableCheats; bool bReloadCheats; + bool bEnableRetroAchievements; int iCwCheatRefreshRate; float fCwCheatScrollPosition; float fGameListScrollPosition; diff --git a/UI/PauseScreen.cpp b/UI/PauseScreen.cpp index c96942dc3a..c06d5dd6a3 100644 --- a/UI/PauseScreen.cpp +++ b/UI/PauseScreen.cpp @@ -51,6 +51,7 @@ #include "UI/OnScreenDisplay.h" #include "UI/GameInfoCache.h" #include "UI/DisplayLayoutScreen.h" +#include "UI/RetroAchievementScreens.h" static void AfterSaveStateAction(SaveState::Status status, const std::string &message, void *) { if (!message.empty() && (!g_Config.bDumpFrames || !g_Config.bDumpVideoOutput)) { @@ -340,7 +341,16 @@ void GamePauseScreen::CreateViews() { return UI::EVENT_DONE; }); if (g_Config.bEnableCheats) { - rightColumnItems->Add(new Choice(pa->T("Cheats")))->OnClick.Handle(this, &GamePauseScreen::OnCwCheat); + rightColumnItems->Add(new Choice(pa->T("Cheats")))->OnClick.Add([&](UI::EventParams &e) { + screenManager()->push(new CwCheatScreen(gamePath_)); + return UI::EVENT_DONE; + }); + } + if (g_Config.bEnableRetroAchievements) { + rightColumnItems->Add(new Choice(pa->T("Achievements")))->OnClick.Add([&](UI::EventParams &e) { + screenManager()->push(new RetroAchievementsListScreen(gamePath_)); + return UI::EVENT_DONE; + }); } // TODO, also might be nice to show overall compat rating here? @@ -426,11 +436,6 @@ UI::EventReturn GamePauseScreen::OnLastSaveUndo(UI::EventParams &e) { return UI::EVENT_DONE; } -UI::EventReturn GamePauseScreen::OnCwCheat(UI::EventParams &e) { - screenManager()->push(new CwCheatScreen(gamePath_)); - return UI::EVENT_DONE; -} - UI::EventReturn GamePauseScreen::OnSwitchUMD(UI::EventParams &e) { screenManager()->push(new UmdReplaceScreen()); return UI::EVENT_DONE; diff --git a/UI/PauseScreen.h b/UI/PauseScreen.h index f9f0a949ab..ed0dfced8d 100644 --- a/UI/PauseScreen.h +++ b/UI/PauseScreen.h @@ -54,7 +54,6 @@ private: UI::EventReturn OnLastSaveUndo(UI::EventParams &e); UI::EventReturn OnScreenshotClicked(UI::EventParams &e); - UI::EventReturn OnCwCheat(UI::EventParams &e); UI::EventReturn OnCreateConfig(UI::EventParams &e); UI::EventReturn OnDeleteConfig(UI::EventParams &e); diff --git a/UI/RetroAchievementScreens.cpp b/UI/RetroAchievementScreens.cpp new file mode 100644 index 0000000000..dfc532fb1c --- /dev/null +++ b/UI/RetroAchievementScreens.cpp @@ -0,0 +1,7 @@ +#include "UI/RetroAchievementScreens.h" +#include "RetroAchievements.h" + +void RetroAchievementsListScreen::CreateViews() { + auto di = GetI18NCategory(I18NCat::DIALOG); + +} diff --git a/UI/RetroAchievementScreens.h b/UI/RetroAchievementScreens.h new file mode 100644 index 0000000000..b269de8ef0 --- /dev/null +++ b/UI/RetroAchievementScreens.h @@ -0,0 +1,14 @@ +#pragma once + +#include "Common/UI/UIScreen.h" +#include "Common/UI/ViewGroup.h" +#include "UI/MiscScreens.h" +#include "Common/File/Path.h" + +class RetroAchievementsListScreen : public UIDialogScreenWithGameBackground { +public: + RetroAchievementsListScreen(const Path &gamePath) : UIDialogScreenWithGameBackground(gamePath) {} + const char *tag() const override { return "RetroAchievementsListScreen"; } + + void CreateViews() override; +}; diff --git a/UI/RetroAchievements.cpp b/UI/RetroAchievements.cpp new file mode 100644 index 0000000000..89791a097f --- /dev/null +++ b/UI/RetroAchievements.cpp @@ -0,0 +1,13 @@ +#include "ext/rcheevos/include/rcheevos.h" + +#include "UI/RetroAchievements.h" + +RetroAchievements g_retroAchievements; + +void RetroAchievements::Init() { + +} + +void RetroAchievements::Shutdown() { + +} diff --git a/UI/RetroAchievements.h b/UI/RetroAchievements.h new file mode 100644 index 0000000000..6db4649f69 --- /dev/null +++ b/UI/RetroAchievements.h @@ -0,0 +1,13 @@ +#pragma once + +#include "ext/rcheevos/include/rcheevos.h" + +class RetroAchievements { +public: + void Init(); + void Shutdown(); +}; + +extern RetroAchievements g_retroAchievements; + +// TODO: Move the screens out into their own files. diff --git a/UI/UI.vcxproj b/UI/UI.vcxproj index ccf71e8f91..d28c28f8d3 100644 --- a/UI/UI.vcxproj +++ b/UI/UI.vcxproj @@ -59,6 +59,8 @@ + + @@ -94,6 +96,8 @@ + + diff --git a/UI/UI.vcxproj.filters b/UI/UI.vcxproj.filters index 049f31c217..767dc2b4e0 100644 --- a/UI/UI.vcxproj.filters +++ b/UI/UI.vcxproj.filters @@ -86,6 +86,10 @@ Screens + + + Screens + @@ -172,6 +176,10 @@ Screens + + + Screens + @@ -181,4 +189,4 @@ {071baa63-c681-4ad6-945b-e126645d1b55} - \ No newline at end of file + diff --git a/UWP/PPSSPP_UWP.sln b/UWP/PPSSPP_UWP.sln index e54559c70a..c2874228d1 100644 --- a/UWP/PPSSPP_UWP.sln +++ b/UWP/PPSSPP_UWP.sln @@ -1,6 +1,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.28803.202 +# Visual Studio Version 17 +VisualStudioVersion = 17.6.33801.468 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PPSSPP_UWP", "UWP.vcxproj", "{01D7D581-09A3-4A26-94BD-A7C529B29329}" ProjectSection(ProjectDependencies) = postProject @@ -34,6 +34,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "miniupnpc_UWP", "miniupnpc_ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cpu_features_UWP", "cpu_features_UWP\cpu_features_UWP.vcxproj", "{C249F016-7F82-45CF-BB6E-0642A988C4D3}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rcheevos_UWP", "rcheevos_UWP\rcheevos_UWP.vcxproj", "{4C9D52D0-310A-4347-8991-E3788CB22169}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|ARM = Debug|ARM @@ -50,6 +52,42 @@ Global UWP Gold|x64 = UWP Gold|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|ARM.ActiveCfg = Debug|ARM + {01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|ARM.Build.0 = Debug|ARM + {01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|ARM.Deploy.0 = Debug|ARM + {01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|ARM64.Build.0 = Debug|ARM64 + {01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|Win32.ActiveCfg = Debug|Win32 + {01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|Win32.Build.0 = Debug|Win32 + {01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|Win32.Deploy.0 = Debug|Win32 + {01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|x64.ActiveCfg = Debug|x64 + {01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|x64.Build.0 = Debug|x64 + {01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|x64.Deploy.0 = Debug|x64 + {01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|ARM.ActiveCfg = Release|ARM + {01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|ARM.Build.0 = Release|ARM + {01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|ARM.Deploy.0 = Release|ARM + {01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|ARM64.ActiveCfg = Release|ARM64 + {01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|ARM64.Build.0 = Release|ARM64 + {01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|ARM64.Deploy.0 = Release|ARM64 + {01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|Win32.ActiveCfg = Release|Win32 + {01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|Win32.Build.0 = Release|Win32 + {01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|Win32.Deploy.0 = Release|Win32 + {01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|x64.ActiveCfg = Release|x64 + {01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|x64.Build.0 = Release|x64 + {01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|x64.Deploy.0 = Release|x64 + {01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|ARM.ActiveCfg = UWP Gold|ARM + {01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|ARM.Build.0 = UWP Gold|ARM + {01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|ARM.Deploy.0 = UWP Gold|ARM + {01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|ARM64.ActiveCfg = UWP Gold|ARM64 + {01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|ARM64.Build.0 = UWP Gold|ARM64 + {01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|ARM64.Deploy.0 = UWP Gold|ARM64 + {01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|Win32.ActiveCfg = UWP Gold|Win32 + {01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|Win32.Build.0 = UWP Gold|Win32 + {01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|Win32.Deploy.0 = UWP Gold|Win32 + {01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|x64.ActiveCfg = UWP Gold|x64 + {01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|x64.Build.0 = UWP Gold|x64 + {01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|x64.Deploy.0 = UWP Gold|x64 {ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}.Debug|ARM.ActiveCfg = Debug|ARM {ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}.Debug|ARM.Build.0 = Debug|ARM {ACB316CA-3ECB-48E5-BE0A-91E72D5B0F12}.Debug|ARM64.ActiveCfg = Debug|ARM64 @@ -122,30 +160,6 @@ Global {5D271429-C288-4534-98AF-94475D940058}.UWP Gold|Win32.Build.0 = UWP Gold|Win32 {5D271429-C288-4534-98AF-94475D940058}.UWP Gold|x64.ActiveCfg = UWP Gold|x64 {5D271429-C288-4534-98AF-94475D940058}.UWP Gold|x64.Build.0 = UWP Gold|x64 - {935028AF-B850-4AD7-A00E-7BA84FB97D05}.Debug|ARM.ActiveCfg = Debug|ARM - {935028AF-B850-4AD7-A00E-7BA84FB97D05}.Debug|ARM.Build.0 = Debug|ARM - {935028AF-B850-4AD7-A00E-7BA84FB97D05}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {935028AF-B850-4AD7-A00E-7BA84FB97D05}.Debug|ARM64.Build.0 = Debug|ARM64 - {935028AF-B850-4AD7-A00E-7BA84FB97D05}.Debug|Win32.ActiveCfg = Debug|Win32 - {935028AF-B850-4AD7-A00E-7BA84FB97D05}.Debug|Win32.Build.0 = Debug|Win32 - {935028AF-B850-4AD7-A00E-7BA84FB97D05}.Debug|x64.ActiveCfg = Debug|x64 - {935028AF-B850-4AD7-A00E-7BA84FB97D05}.Debug|x64.Build.0 = Debug|x64 - {935028AF-B850-4AD7-A00E-7BA84FB97D05}.Release|ARM.ActiveCfg = Release|ARM - {935028AF-B850-4AD7-A00E-7BA84FB97D05}.Release|ARM.Build.0 = Release|ARM - {935028AF-B850-4AD7-A00E-7BA84FB97D05}.Release|ARM64.ActiveCfg = Release|ARM64 - {935028AF-B850-4AD7-A00E-7BA84FB97D05}.Release|ARM64.Build.0 = Release|ARM64 - {935028AF-B850-4AD7-A00E-7BA84FB97D05}.Release|Win32.ActiveCfg = Release|Win32 - {935028AF-B850-4AD7-A00E-7BA84FB97D05}.Release|Win32.Build.0 = Release|Win32 - {935028AF-B850-4AD7-A00E-7BA84FB97D05}.Release|x64.ActiveCfg = Release|x64 - {935028AF-B850-4AD7-A00E-7BA84FB97D05}.Release|x64.Build.0 = Release|x64 - {935028AF-B850-4AD7-A00E-7BA84FB97D05}.UWP Gold|ARM.ActiveCfg = UWP Gold|ARM - {935028AF-B850-4AD7-A00E-7BA84FB97D05}.UWP Gold|ARM.Build.0 = UWP Gold|ARM - {935028AF-B850-4AD7-A00E-7BA84FB97D05}.UWP Gold|ARM64.ActiveCfg = UWP Gold|ARM64 - {935028AF-B850-4AD7-A00E-7BA84FB97D05}.UWP Gold|ARM64.Build.0 = UWP Gold|ARM64 - {935028AF-B850-4AD7-A00E-7BA84FB97D05}.UWP Gold|Win32.ActiveCfg = UWP Gold|Win32 - {935028AF-B850-4AD7-A00E-7BA84FB97D05}.UWP Gold|Win32.Build.0 = UWP Gold|Win32 - {935028AF-B850-4AD7-A00E-7BA84FB97D05}.UWP Gold|x64.ActiveCfg = UWP Gold|x64 - {935028AF-B850-4AD7-A00E-7BA84FB97D05}.UWP Gold|x64.Build.0 = UWP Gold|x64 {5FAC15BD-7397-4512-99D5-66CDC03AF5B7}.Debug|ARM.ActiveCfg = Debug|ARM {5FAC15BD-7397-4512-99D5-66CDC03AF5B7}.Debug|ARM.Build.0 = Debug|ARM {5FAC15BD-7397-4512-99D5-66CDC03AF5B7}.Debug|ARM64.ActiveCfg = Debug|ARM64 @@ -218,42 +232,6 @@ Global {DDF90203-0AAE-4F38-B589-2E9637658CE6}.UWP Gold|Win32.Build.0 = UWP Gold|Win32 {DDF90203-0AAE-4F38-B589-2E9637658CE6}.UWP Gold|x64.ActiveCfg = UWP Gold|x64 {DDF90203-0AAE-4F38-B589-2E9637658CE6}.UWP Gold|x64.Build.0 = UWP Gold|x64 - {01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|ARM.ActiveCfg = Debug|ARM - {01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|ARM.Build.0 = Debug|ARM - {01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|ARM.Deploy.0 = Debug|ARM - {01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|ARM64.Build.0 = Debug|ARM64 - {01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|ARM64.Deploy.0 = Debug|ARM64 - {01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|Win32.ActiveCfg = Debug|Win32 - {01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|Win32.Build.0 = Debug|Win32 - {01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|Win32.Deploy.0 = Debug|Win32 - {01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|x64.ActiveCfg = Debug|x64 - {01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|x64.Build.0 = Debug|x64 - {01D7D581-09A3-4A26-94BD-A7C529B29329}.Debug|x64.Deploy.0 = Debug|x64 - {01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|ARM.ActiveCfg = Release|ARM - {01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|ARM.Build.0 = Release|ARM - {01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|ARM.Deploy.0 = Release|ARM - {01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|ARM64.ActiveCfg = Release|ARM64 - {01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|ARM64.Build.0 = Release|ARM64 - {01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|ARM64.Deploy.0 = Release|ARM64 - {01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|Win32.ActiveCfg = Release|Win32 - {01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|Win32.Build.0 = Release|Win32 - {01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|Win32.Deploy.0 = Release|Win32 - {01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|x64.ActiveCfg = Release|x64 - {01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|x64.Build.0 = Release|x64 - {01D7D581-09A3-4A26-94BD-A7C529B29329}.Release|x64.Deploy.0 = Release|x64 - {01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|ARM.ActiveCfg = UWP Gold|ARM - {01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|ARM.Build.0 = UWP Gold|ARM - {01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|ARM.Deploy.0 = UWP Gold|ARM - {01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|ARM64.ActiveCfg = UWP Gold|ARM64 - {01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|ARM64.Build.0 = UWP Gold|ARM64 - {01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|ARM64.Deploy.0 = UWP Gold|ARM64 - {01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|Win32.ActiveCfg = UWP Gold|Win32 - {01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|Win32.Build.0 = UWP Gold|Win32 - {01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|Win32.Deploy.0 = UWP Gold|Win32 - {01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|x64.ActiveCfg = UWP Gold|x64 - {01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|x64.Build.0 = UWP Gold|x64 - {01D7D581-09A3-4A26-94BD-A7C529B29329}.UWP Gold|x64.Deploy.0 = UWP Gold|x64 {D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}.Debug|ARM.ActiveCfg = Debug|ARM {D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}.Debug|ARM.Build.0 = Debug|ARM {D326891E-ECE4-4B94-B5E7-8AA0A8E8ECBC}.Debug|ARM64.ActiveCfg = Debug|ARM64 @@ -398,6 +376,30 @@ Global {C249F016-7F82-45CF-BB6E-0642A988C4D3}.UWP Gold|Win32.Build.0 = UWP Gold|Win32 {C249F016-7F82-45CF-BB6E-0642A988C4D3}.UWP Gold|x64.ActiveCfg = UWP Gold|x64 {C249F016-7F82-45CF-BB6E-0642A988C4D3}.UWP Gold|x64.Build.0 = UWP Gold|x64 + {4C9D52D0-310A-4347-8991-E3788CB22169}.Debug|ARM.ActiveCfg = Debug|ARM + {4C9D52D0-310A-4347-8991-E3788CB22169}.Debug|ARM.Build.0 = Debug|ARM + {4C9D52D0-310A-4347-8991-E3788CB22169}.Debug|ARM64.ActiveCfg = Debug|x64 + {4C9D52D0-310A-4347-8991-E3788CB22169}.Debug|ARM64.Build.0 = Debug|x64 + {4C9D52D0-310A-4347-8991-E3788CB22169}.Debug|Win32.ActiveCfg = Debug|Win32 + {4C9D52D0-310A-4347-8991-E3788CB22169}.Debug|Win32.Build.0 = Debug|Win32 + {4C9D52D0-310A-4347-8991-E3788CB22169}.Debug|x64.ActiveCfg = Debug|x64 + {4C9D52D0-310A-4347-8991-E3788CB22169}.Debug|x64.Build.0 = Debug|x64 + {4C9D52D0-310A-4347-8991-E3788CB22169}.Release|ARM.ActiveCfg = Release|ARM + {4C9D52D0-310A-4347-8991-E3788CB22169}.Release|ARM.Build.0 = Release|ARM + {4C9D52D0-310A-4347-8991-E3788CB22169}.Release|ARM64.ActiveCfg = Release|x64 + {4C9D52D0-310A-4347-8991-E3788CB22169}.Release|ARM64.Build.0 = Release|x64 + {4C9D52D0-310A-4347-8991-E3788CB22169}.Release|Win32.ActiveCfg = Release|Win32 + {4C9D52D0-310A-4347-8991-E3788CB22169}.Release|Win32.Build.0 = Release|Win32 + {4C9D52D0-310A-4347-8991-E3788CB22169}.Release|x64.ActiveCfg = Release|x64 + {4C9D52D0-310A-4347-8991-E3788CB22169}.Release|x64.Build.0 = Release|x64 + {4C9D52D0-310A-4347-8991-E3788CB22169}.UWP Gold|ARM.ActiveCfg = Debug|ARM + {4C9D52D0-310A-4347-8991-E3788CB22169}.UWP Gold|ARM.Build.0 = Debug|ARM + {4C9D52D0-310A-4347-8991-E3788CB22169}.UWP Gold|ARM64.ActiveCfg = Debug|x64 + {4C9D52D0-310A-4347-8991-E3788CB22169}.UWP Gold|ARM64.Build.0 = Debug|x64 + {4C9D52D0-310A-4347-8991-E3788CB22169}.UWP Gold|Win32.ActiveCfg = Debug|Win32 + {4C9D52D0-310A-4347-8991-E3788CB22169}.UWP Gold|Win32.Build.0 = Debug|Win32 + {4C9D52D0-310A-4347-8991-E3788CB22169}.UWP Gold|x64.ActiveCfg = Debug|x64 + {4C9D52D0-310A-4347-8991-E3788CB22169}.UWP Gold|x64.Build.0 = Debug|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/UWP/UI_UWP/UI_UWP.vcxproj b/UWP/UI_UWP/UI_UWP.vcxproj index b911519463..bc5cca59bf 100644 --- a/UWP/UI_UWP/UI_UWP.vcxproj +++ b/UWP/UI_UWP/UI_UWP.vcxproj @@ -295,6 +295,8 @@ + + @@ -331,6 +333,8 @@ + + @@ -350,6 +354,14 @@ Create + + + {acb316ca-3ecb-48e5-be0a-91e72d5b0f12} + + + {4c9d52d0-310a-4347-8991-e3788cb22169} + + diff --git a/UWP/UI_UWP/UI_UWP.vcxproj.filters b/UWP/UI_UWP/UI_UWP.vcxproj.filters index d0d4d113f4..0914752d27 100644 --- a/UWP/UI_UWP/UI_UWP.vcxproj.filters +++ b/UWP/UI_UWP/UI_UWP.vcxproj.filters @@ -35,6 +35,8 @@ + + @@ -71,5 +73,7 @@ + + - \ No newline at end of file + diff --git a/UWP/rcheevos_UWP/rcheevos_UWP.vcxproj b/UWP/rcheevos_UWP/rcheevos_UWP.vcxproj new file mode 100644 index 0000000000..b6bd8f50c3 --- /dev/null +++ b/UWP/rcheevos_UWP/rcheevos_UWP.vcxproj @@ -0,0 +1,251 @@ + + + + + Debug + ARM + + + Debug + Win32 + + + Debug + x64 + + + Release + ARM + + + Release + Win32 + + + Release + x64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {4c9d52d0-310a-4347-8991-e3788cb22169} + StaticLibrary + rcheevos + en-US + 14.0 + true + Windows Store + 10.0.19041.0 + 10.0.17763.0 + 10.0 + rcheevos_UWP + + + + StaticLibrary + true + v143 + + + StaticLibrary + true + v143 + + + StaticLibrary + true + v143 + + + StaticLibrary + false + true + v143 + + + StaticLibrary + false + true + v143 + + + StaticLibrary + false + true + v143 + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + false + + + false + + + false + + + false + + + false + + + + false + true + NotUsing + ../../ext/rcheevos/include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories) + RC_DISABLE_LUA;_UNICODE;UNICODE;%(PreprocessorDefinitions) + + + Console + false + false + + + + + false + true + NotUsing + ../../ext/rcheevos/include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories) + RC_DISABLE_LUA;_UNICODE;UNICODE;%(PreprocessorDefinitions) + + + Console + false + false + + + + + false + true + NotUsing + ../../ext/rcheevos/include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories) + RC_DISABLE_LUA;_UNICODE;UNICODE;%(PreprocessorDefinitions) + + + Console + false + false + + + + + false + true + NotUsing + ../../ext/rcheevos/include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories) + RC_DISABLE_LUA;_UNICODE;UNICODE;%(PreprocessorDefinitions) + + + Console + false + false + + + + + false + true + NotUsing + ../../ext/rcheevos/include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories) + RC_DISABLE_LUA;_UNICODE;UNICODE;%(PreprocessorDefinitions) + + + Console + false + false + + + + + false + true + NotUsing + ../../ext/rcheevos/include;$(ProjectDir);$(GeneratedFilesDir);$(IntDir);%(AdditionalIncludeDirectories) + RC_DISABLE_LUA;_UNICODE;UNICODE;%(PreprocessorDefinitions) + + + Console + false + false + + + + + + \ No newline at end of file diff --git a/UWP/rcheevos_UWP/rcheevos_UWP.vcxproj.filters b/UWP/rcheevos_UWP/rcheevos_UWP.vcxproj.filters new file mode 100644 index 0000000000..d0fa50830b --- /dev/null +++ b/UWP/rcheevos_UWP/rcheevos_UWP.vcxproj.filters @@ -0,0 +1,144 @@ + + + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + rapi + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rhash + + + + + {918cc87d-a38b-4e00-be13-0256398e1eec} + + + {89858679-3cc1-4b8b-b2f7-7f418d9335e9} + + + {e161d2c8-a15a-499d-96d9-fc29fb4ff78d} + + + {4e62f4d5-be01-4047-b0d6-3c0c171ff486} + + + + + rapi + + + rapi + + + rapi + + + rapi + + + rapi + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rhash + + + rhash + + + rhash + + + \ No newline at end of file diff --git a/Windows/PPSSPP.sln b/Windows/PPSSPP.sln index 877e13aff7..d2ceca3bec 100644 --- a/Windows/PPSSPP.sln +++ b/Windows/PPSSPP.sln @@ -1,6 +1,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.28307.1082 +# Visual Studio Version 17 +VisualStudioVersion = 17.6.33801.468 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PPSSPPWindows", "PPSSPP.vcxproj", "{567AF8DB-42C1-4D08-96CD-D70A2DFEFC6B}" ProjectSection(ProjectDependencies) = postProject @@ -89,6 +89,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libzstd", "..\ext\libzstd.v EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cpu_features", "..\ext\cpu_features.vcxproj", "{C249F016-7F82-45CF-BB6E-0642A988C4D3}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rcheevos", "..\ext\rcheevos-build\rcheevos.vcxproj", "{31694510-A8C0-40F6-B09B-E8DF825ADEFA}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|ARM = Debug|ARM @@ -375,6 +377,22 @@ Global {C249F016-7F82-45CF-BB6E-0642A988C4D3}.Release|Win32.Build.0 = Release|Win32 {C249F016-7F82-45CF-BB6E-0642A988C4D3}.Release|x64.ActiveCfg = Release|x64 {C249F016-7F82-45CF-BB6E-0642A988C4D3}.Release|x64.Build.0 = Release|x64 + {31694510-A8C0-40F6-B09B-E8DF825ADEFA}.Debug|ARM.ActiveCfg = Debug|x64 + {31694510-A8C0-40F6-B09B-E8DF825ADEFA}.Debug|ARM.Build.0 = Debug|x64 + {31694510-A8C0-40F6-B09B-E8DF825ADEFA}.Debug|ARM64.ActiveCfg = Debug|x64 + {31694510-A8C0-40F6-B09B-E8DF825ADEFA}.Debug|ARM64.Build.0 = Debug|x64 + {31694510-A8C0-40F6-B09B-E8DF825ADEFA}.Debug|Win32.ActiveCfg = Debug|Win32 + {31694510-A8C0-40F6-B09B-E8DF825ADEFA}.Debug|Win32.Build.0 = Debug|Win32 + {31694510-A8C0-40F6-B09B-E8DF825ADEFA}.Debug|x64.ActiveCfg = Debug|x64 + {31694510-A8C0-40F6-B09B-E8DF825ADEFA}.Debug|x64.Build.0 = Debug|x64 + {31694510-A8C0-40F6-B09B-E8DF825ADEFA}.Release|ARM.ActiveCfg = Release|x64 + {31694510-A8C0-40F6-B09B-E8DF825ADEFA}.Release|ARM.Build.0 = Release|x64 + {31694510-A8C0-40F6-B09B-E8DF825ADEFA}.Release|ARM64.ActiveCfg = Release|x64 + {31694510-A8C0-40F6-B09B-E8DF825ADEFA}.Release|ARM64.Build.0 = Release|x64 + {31694510-A8C0-40F6-B09B-E8DF825ADEFA}.Release|Win32.ActiveCfg = Release|Win32 + {31694510-A8C0-40F6-B09B-E8DF825ADEFA}.Release|Win32.Build.0 = Release|Win32 + {31694510-A8C0-40F6-B09B-E8DF825ADEFA}.Release|x64.ActiveCfg = Release|x64 + {31694510-A8C0-40F6-B09B-E8DF825ADEFA}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -391,6 +409,7 @@ Global {D8A71225-178B-424E-96C1-CC3BE2C1B047} = {39FCACF8-10D9-4D8D-97AA-7507436AD932} {8BFD8150-94D5-4BF9-8A50-7BD9929A0850} = {39FCACF8-10D9-4D8D-97AA-7507436AD932} {C249F016-7F82-45CF-BB6E-0642A988C4D3} = {39FCACF8-10D9-4D8D-97AA-7507436AD932} + {31694510-A8C0-40F6-B09B-E8DF825ADEFA} = {39FCACF8-10D9-4D8D-97AA-7507436AD932} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {2FD47774-A031-48F4-B645-A49A3140A29B} diff --git a/android/jni/Android.mk b/android/jni/Android.mk index 8d77243f70..35870d4b8e 100644 --- a/android/jni/Android.mk +++ b/android/jni/Android.mk @@ -77,6 +77,34 @@ SPIRV_CROSS_FILES := \ $(SRC)/ext/SPIRV-Cross/spirv_glsl.cpp \ $(SRC)/ext/SPIRV-Cross/spirv_parser.cpp \ $(SRC)/ext/SPIRV-Cross/spirv_cross_parsed_ir.cpp + +RCHEEVOS_FILES := \ + # rapi + ${SRC}/ext/rcheevos/src/rapi/rc_api_common.c \ + ${SRC}/ext/rcheevos/src/rapi/rc_api_editor.c \ + ${SRC}/ext/rcheevos/src/rapi/rc_api_info.c \ + ${SRC}/ext/rcheevos/src/rapi/rc_api_runtime.c \ + ${SRC}/ext/rcheevos/src/rapi/rc_api_user.c \ + ${SRC}/ext/rcheevos/src/rcheevos/alloc.c \ + ${SRC}/ext/rcheevos/src/rcheevos/compat.c \ + ${SRC}/ext/rcheevos/src/rcheevos/condition.c \ + ${SRC}/ext/rcheevos/src/rcheevos/condset.c \ + ${SRC}/ext/rcheevos/src/rcheevos/consoleinfo.c \ + ${SRC}/ext/rcheevos/src/rcheevos/format.c \ + ${SRC}/ext/rcheevos/src/rcheevos/lboard.c \ + ${SRC}/ext/rcheevos/src/rcheevos/memref.c \ + ${SRC}/ext/rcheevos/src/rcheevos/operand.c \ + ${SRC}/ext/rcheevos/src/rcheevos/rc_validate.c \ + ${SRC}/ext/rcheevos/src/rcheevos/richpresence.c \ + ${SRC}/ext/rcheevos/src/rcheevos/richpresence.c \ + ${SRC}/ext/rcheevos/src/rcheevos/runtime.c \ + ${SRC}/ext/rcheevos/src/rcheevos/runtime_progress.c \ + ${SRC}/ext/rcheevos/src/rcheevos/trigger.c \ + ${SRC}/ext/rcheevos/src/rcheevos/value.c \ + ${SRC}/ext/rcheevos/src/rhash/cdreader.c \ + ${SRC}/ext/rcheevos/src/rhash/hash.c \ + ${SRC}/ext/rcheevos/src/rhash/md5.c \ + ${SRC}/ext/rcheevos/src/rurl/url.c VR_FILES := \ $(SRC)/Common/VR/OpenXRLoader.cpp \ @@ -149,6 +177,7 @@ EXEC_AND_LIB_FILES := \ $(VR_FILES) \ $(VMA_FILES) \ $(SPIRV_CROSS_FILES) \ + $(RCHEEVOS_FILES) \ $(EXT_FILES) \ $(NATIVE_FILES) \ $(SRC)/Common/Buffer.cpp \ diff --git a/ext/rcheevos b/ext/rcheevos new file mode 160000 index 0000000000..d176b4bcb4 --- /dev/null +++ b/ext/rcheevos @@ -0,0 +1 @@ +Subproject commit d176b4bcb42488da84f55991fd10f8ff36183384 diff --git a/ext/rcheevos-build/CMakeLists.txt b/ext/rcheevos-build/CMakeLists.txt new file mode 100644 index 0000000000..cf94b76be4 --- /dev/null +++ b/ext/rcheevos-build/CMakeLists.txt @@ -0,0 +1,47 @@ +cmake_minimum_required (VERSION 3.2.0) +project (RCheevos) + +set(SRC_DIR ../rcheevos/src) + +# format +set(ALL_SOURCE_FILES + # rapi + ${SRC_DIR}/rapi/rc_api_common.c + ${SRC_DIR}/rapi/rc_api_common.h + ${SRC_DIR}/rapi/rc_api_editor.c + ${SRC_DIR}/rapi/rc_api_info.c + ${SRC_DIR}/rapi/rc_api_runtime.c + ${SRC_DIR}/rapi/rc_api_user.c + # rcheevos + ${SRC_DIR}/rcheevos/alloc.c + ${SRC_DIR}/rcheevos/compat.c + ${SRC_DIR}/rcheevos/condition.c + ${SRC_DIR}/rcheevos/condset.c + ${SRC_DIR}/rcheevos/consoleinfo.c + ${SRC_DIR}/rcheevos/format.c + ${SRC_DIR}/rcheevos/lboard.c + ${SRC_DIR}/rcheevos/memref.c + ${SRC_DIR}/rcheevos/operand.c + ${SRC_DIR}/rcheevos/rc_compat.h + ${SRC_DIR}/rcheevos/rc_internal.h + ${SRC_DIR}/rcheevos/rc_validate.h + ${SRC_DIR}/rcheevos/rc_validate.c + ${SRC_DIR}/rcheevos/rc_version.h + ${SRC_DIR}/rcheevos/richpresence.c + ${SRC_DIR}/rcheevos/richpresence.c + ${SRC_DIR}/rcheevos/runtime.c + ${SRC_DIR}/rcheevos/runtime_progress.c + ${SRC_DIR}/rcheevos/trigger.c + ${SRC_DIR}/rcheevos/value.c + # rhash + ${SRC_DIR}/rhash/cdreader.c + ${SRC_DIR}/rhash/hash.c + ${SRC_DIR}/rhash/md5.c + ${SRC_DIR}/rhash/md5.h + # rurl + ${SRC_DIR}/rurl/url.c + ) + +add_library(rcheevos STATIC ${ALL_SOURCE_FILES}) + +target_include_directories(rcheevos PUBLIC ../rcheevos/include ../rcheevos/src/rapi) diff --git a/ext/rcheevos-build/rcheevos.vcxproj b/ext/rcheevos-build/rcheevos.vcxproj new file mode 100644 index 0000000000..d785e9b475 --- /dev/null +++ b/ext/rcheevos-build/rcheevos.vcxproj @@ -0,0 +1,189 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 16.0 + Win32Proj + {31694510-a8c0-40f6-b09b-e8df825adefa} + rcheevos + + + + StaticLibrary + true + $(DefaultPlatformToolset) + Unicode + + + StaticLibrary + false + true + Unicode + $(DefaultPlatformToolset) + + + StaticLibrary + true + $(DefaultPlatformToolset) + Unicode + + + StaticLibrary + false + true + Unicode + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + Level3 + true + RC_DISABLE_LUA;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) + true + pch.h + ../rcheevos/include + + + + + true + + + + + Level3 + true + true + true + RC_DISABLE_LUA;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) + true + pch.h + ../rcheevos/include + + + + + true + true + true + + + + + Level3 + true + RC_DISABLE_LUA;_DEBUG;_LIB;%(PreprocessorDefinitions) + true + pch.h + ../rcheevos/include + + + + + true + + + + + Level3 + true + true + true + RC_DISABLE_LUA;NDEBUG;_LIB;%(PreprocessorDefinitions) + true + pch.h + ../rcheevos/include + + + + + true + true + true + + + + + + \ No newline at end of file diff --git a/ext/rcheevos-build/rcheevos.vcxproj.filters b/ext/rcheevos-build/rcheevos.vcxproj.filters new file mode 100644 index 0000000000..d4fb9e4ffb --- /dev/null +++ b/ext/rcheevos-build/rcheevos.vcxproj.filters @@ -0,0 +1,150 @@ + + + + + {d69c6a56-d9c2-4b21-96af-7adc52a4e0ea} + + + {0acc1fc7-94ca-4eee-967e-5a64a884dbf1} + + + {55ec06aa-6d34-4edf-8b0b-f93f93a064b4} + + + {990047ac-f0d4-44f5-8463-54f898557d02} + + + {9e049d1f-4b83-4aa5-89f3-01a42e1773e2} + + + + + rapi + + + rapi + + + rapi + + + rapi + + + rapi + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rhash + + + rhash + + + rhash + + + rurl + + + + + rapi + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + include + + + rcheevos + + + rcheevos + + + rcheevos + + + rcheevos + + + rhash + + + \ No newline at end of file