gnu: Add ppsspp.
authorLeo Prikler <leo.prikler@student.tugraz.at>
Mon, 29 Jun 2020 10:06:50 +0000 (12:06 +0200)
committerNicolas Goaziou <mail@nicolasgoaziou.fr>
Tue, 30 Jun 2020 14:47:58 +0000 (16:47 +0200)
* gnu/packages/emulators.scm (ppsspp): New variable.
* gnu/packages/patches/ppsspp-disable-upgrade-and-gold.patch: New file.
* gnu/local.mk: Register it.

Signed-off-by: Nicolas Goaziou <mail@nicolasgoaziou.fr>
gnu/local.mk
gnu/packages/emulators.scm
gnu/packages/patches/ppsspp-disable-upgrade-and-gold.patch [new file with mode: 0644]

index 8bb5601..dbeec8b 100644 (file)
@@ -1350,6 +1350,7 @@ dist_patch_DATA =                                         \
   %D%/packages/patches/pam-mount-luks2-support.patch           \
   %D%/packages/patches/pango-skip-libthai-test.patch           \
   %D%/packages/patches/pciutils-hurd-configure.patch           \
+  %D%/packages/patches/ppsspp-disable-upgrade-and-gold.patch           \
   %D%/packages/patches/sdl-pango-api_additions.patch           \
   %D%/packages/patches/sdl-pango-blit_overflow.patch           \
   %D%/packages/patches/sdl-pango-fillrect_crash.patch          \
index ae8bf18..8b39517 100644 (file)
@@ -1839,3 +1839,134 @@ performance, features, and ease of use.")
        "Unicorn is a lightweight, multi-platform, multi-architecture CPU emulator
 framework based on QEMU.")
       (license license:gpl2+))))
+
+(define-public ppsspp
+  (package
+    (name "ppsspp")
+    (version "1.10")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/hrydgard/ppsspp.git")
+             (commit (string-append "v" version))))
+       (sha256
+        (base32 "02yx1w0ygclnmdl0imsvgj24lkzi55wvxkf47q617j0jgrqhy8yl"))
+       (file-name (git-file-name name version))
+       (patches
+        (search-patches "ppsspp-disable-upgrade-and-gold.patch"))
+       (modules '((guix build utils)))
+       (snippet
+        `(begin
+           ;; Unbundle sources.
+           (substitute* (list "Common/Vulkan/VulkanContext.cpp"
+                              "ext/native/thin3d/vulkan_utils.cpp"
+                              "GPU/Common/ShaderCommon.cpp"
+                              "GPU/Common/ShaderTranslation.cpp"
+                              "SDL/SDLMain.cpp")
+             (("ext/glslang/") "")
+             (("ext/SPIRV-Cross/") "spirv_cross/"))
+           ;; Patch CMakeLists.
+           (substitute* "CMakeLists.txt"
+             (("include_directories\\(ext/glslang\\)") "")
+             (("spirv-cross-glsl" all)
+              (string-append all
+                             " spirv-cross-core spirv-cross-cpp"
+                             " spirv-cross-reflect spirv-cross-util")))
+           (substitute* "ext/CMakeLists.txt"
+             (("add_subdirectory\\(glslang\\)") "")
+             (("add_subdirectory\\(SPIRV-Cross-build\\)") ""))
+           (delete-file-recursively "ext/cmake")
+           (substitute* "git-version.cmake"
+             (("unknown") ,version))))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("python" ,python)))
+    (inputs
+     `(("ffmpeg" ,ffmpeg)
+       ("glew" ,glew)
+       ("glslang" ,glslang)
+       ("libpng" ,libpng)
+       ("mesa" ,mesa)
+       ("sdl2" ,sdl2)
+       ("snappy" ,snappy)
+       ("spirv-cross" ,spirv-cross)
+       ("zlib" ,zlib)
+       ;; TODO: unbundle builds.
+       ("armips-source" ,(package-source armips))
+       ("lang"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/hrydgard/ppsspp-lang.git")
+                 (commit "d184ba2b607a03435be579406b816c90add334e6")))
+           (sha256
+            (base32 "0s003x6247nx09qd6a1jz1l2hsk5d6k1zmh8mg3m6hjjhvbvd9j9"))))
+       ("tests"
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/hrydgard/pspautotests.git")
+                 (commit "328b839c7243e7f733f9eae88d059485e3d808e7")))
+           (sha256
+            (base32 "1gj1kr5ijxrqwvz7c41phskjr70ndp8iz0gr8c3xxsd8p9z5gdvm"))))))
+    (arguments
+     `(#:out-of-source? #f
+       #:configure-flags (list "-DUSE_DISCORD=OFF"
+                               "-DUSE_SYSTEM_FFMPEG=ON"
+                               ;; For testing.
+                               "-DUNITTEST=ON" "-DHEADLESS=ON")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'add-external-sources
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; TODO: unbundle builds.  Not only should we not copy these
+             ;; sources in, we should also remove as much from "ext/" as we
+             ;; can.
+             (copy-recursively (assoc-ref inputs "armips-source")
+                               "ext/armips")
+             ;; Some tests are externalised, so we add them here.
+             (copy-recursively (assoc-ref inputs "tests")
+                               "pspautotests")
+             ;; i18n is externalised, so we add it here.
+             (copy-recursively (assoc-ref inputs "lang")
+                               "assets/lang")
+             #t))
+         (replace 'check
+           (lambda _
+             (for-each
+              (lambda (t) (invoke "./unitTest" t))
+              '("Arm64Emitter" "ArmEmitter" "X64Emitter" "VertexJit" "Asin"
+                "SinCos" "VFPUSinCos" "MathUtil" "Parsers" "Jit"
+                "MatrixTranspose" "ParseLBN" "QuickTexHash" "CLZ" "MemMap"))
+             (invoke "python3" "test.py" "-g")
+             #t))
+         (replace 'install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin/ppsspp (string-append out "/bin/ppsspp"))
+                    (share (string-append out "/share/ppsspp")))
+               (copy-recursively "icons/hicolor"
+                                 (string-append out "/share/icons/hicolor"))
+               (install-file "PPSSPPSDL" share)
+               (copy-recursively "assets" (string-append share "/assets"))
+
+               (make-desktop-entry-file
+                (string-append out "/share/applications/ppsspp.desktop")
+                #:name "PPSSPP"
+                #:exec (string-append share "/PPSSPPSDL")
+                #:icon "ppsspp")
+               (mkdir-p (string-append out "/bin"))
+               (with-output-to-file bin/ppsspp
+                 (lambda ()
+                   (format #t "#!~a~%exec ~a/PPSSPPSDL \"$@\""
+                           (which "sh") share)))
+               (chmod bin/ppsspp #o755)
+               #t))))))
+    (home-page "https://www.ppsspp.org/")
+    (synopsis "PSP emulator")
+    (description
+     "PPSSPP is a ``high-level'' emulator simulating the PSP operating
+system.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/patches/ppsspp-disable-upgrade-and-gold.patch b/gnu/packages/patches/ppsspp-disable-upgrade-and-gold.patch
new file mode 100644 (file)
index 0000000..9503ab6
--- /dev/null
@@ -0,0 +1,358 @@
+From 951f2269f67d618d376656db831796c119f4f6b3 Mon Sep 17 00:00:00 2001
+From: Leo Prikler <leo.prikler@student.tugraz.at>
+Date: Fri, 26 Jun 2020 18:20:04 +0200
+Subject: [PATCH] ppsspp: disable upgrade and gold
+
+---
+ Core/Config.cpp             | 11 -------
+ Core/Config.h               |  2 --
+ Qt/QtMain.cpp               |  6 ----
+ SDL/SDLMain.cpp             |  6 ----
+ UI/DevScreens.cpp           |  3 --
+ UI/GameSettingsScreen.cpp   |  1 -
+ UI/MainScreen.cpp           | 63 +------------------------------------
+ UI/MiscScreens.cpp          | 31 ++----------------
+ UWP/PPSSPP_UWPMain.cpp      |  6 ----
+ Windows/MainWindowMenu.cpp  |  2 +-
+ Windows/main.cpp            |  6 ----
+ android/jni/app-android.cpp |  6 ----
+ 12 files changed, 5 insertions(+), 138 deletions(-)
+
+diff --git a/Core/Config.cpp b/Core/Config.cpp
+index 214aeb433..04e3b151d 100644
+--- a/Core/Config.cpp
++++ b/Core/Config.cpp
+@@ -428,7 +428,6 @@ static ConfigSetting generalSettings[] = {
+       ConfigSetting("IgnoreBadMemAccess", &g_Config.bIgnoreBadMemAccess, true, true),
+       ConfigSetting("CurrentDirectory", &g_Config.currentDirectory, ""),
+       ConfigSetting("ShowDebuggerOnLoad", &g_Config.bShowDebuggerOnLoad, false),
+-      ConfigSetting("CheckForNewVersion", &g_Config.bCheckForNewVersion, true),
+       ConfigSetting("Language", &g_Config.sLanguageIni, &DefaultLangRegion),
+       ConfigSetting("ForceLagSync2", &g_Config.bForceLagSync, false, true, true),
+       ConfigSetting("DiscordPresence", &g_Config.bDiscordPresence, true, true, false),  // Or maybe it makes sense to have it per-game? Race conditions abound...
+@@ -1229,16 +1228,6 @@ void Config::Load(const char *iniFileName, const char *controllerIniFilename) {
+               upgradeMessage = "";
+       }
+-      // Check for new version on every 10 runs.
+-      // Sometimes the download may not be finished when the main screen shows (if the user dismisses the
+-      // splash screen quickly), but then we'll just show the notification next time instead, we store the
+-      // upgrade number in the ini.
+-      if (iRunCount % 10 == 0 && bCheckForNewVersion) {
+-              std::shared_ptr<http::Download> dl = g_DownloadManager.StartDownloadWithCallback(
+-                      "http://www.ppsspp.org/version.json", "", &DownloadCompletedCallback);
+-              dl->SetHidden(true);
+-      }
+-
+       INFO_LOG(LOADER, "Loading controller config: %s", controllerIniFilename_.c_str());
+       bSaveSettings = true;
+diff --git a/Core/Config.h b/Core/Config.h
+index 084eacc94..e7134cab5 100644
+--- a/Core/Config.h
++++ b/Core/Config.h
+@@ -99,7 +99,6 @@ struct Config {
+       bool bIgnoreBadMemAccess;
+       bool bFastMemory;
+       int iCpuCore;
+-      bool bCheckForNewVersion;
+       bool bForceLagSync;
+       bool bFuncReplacements;
+       bool bHideSlowWarnings;
+@@ -521,4 +520,3 @@ std::string CreateRandMAC();
+ // TODO: Find a better place for this.
+ extern http::Downloader g_DownloadManager;
+ extern Config g_Config;
+-
+diff --git a/Qt/QtMain.cpp b/Qt/QtMain.cpp
+index 7713b6587..1d92d1175 100644
+--- a/Qt/QtMain.cpp
++++ b/Qt/QtMain.cpp
+@@ -194,12 +194,6 @@ bool System_GetPropertyBool(SystemProperty prop) {
+               return true;
+       case SYSPROP_HAS_FILE_BROWSER:
+               return true;
+-      case SYSPROP_APP_GOLD:
+-#ifdef GOLD
+-              return true;
+-#else
+-              return false;
+-#endif
+       default:
+               return false;
+       }
+diff --git a/SDL/SDLMain.cpp b/SDL/SDLMain.cpp
+index 52028d087..d8697d210 100644
+--- a/SDL/SDLMain.cpp
++++ b/SDL/SDLMain.cpp
+@@ -356,12 +356,6 @@ bool System_GetPropertyBool(SystemProperty prop) {
+       switch (prop) {
+       case SYSPROP_HAS_BACK_BUTTON:
+               return true;
+-      case SYSPROP_APP_GOLD:
+-#ifdef GOLD
+-              return true;
+-#else
+-              return false;
+-#endif
+       default:
+               return false;
+       }
+diff --git a/UI/DevScreens.cpp b/UI/DevScreens.cpp
+index f146d099e..625ee124c 100644
+--- a/UI/DevScreens.cpp
++++ b/UI/DevScreens.cpp
+@@ -603,9 +603,6 @@ void SystemInfoScreen::CreateViews() {
+ #ifdef _M_SSE
+       buildConfig->Add(new InfoItem("_M_SSE", StringFromFormat("0x%x", _M_SSE)));
+ #endif
+-      if (System_GetPropertyBool(SYSPROP_APP_GOLD)) {
+-              buildConfig->Add(new InfoItem("GOLD", ""));
+-      }
+       ViewGroup *cpuExtensionsScroll = new ScrollView(ORIENT_VERTICAL, new LinearLayoutParams(FILL_PARENT, FILL_PARENT));
+       cpuExtensionsScroll->SetTag("DevSystemInfoCPUExt");
+diff --git a/UI/GameSettingsScreen.cpp b/UI/GameSettingsScreen.cpp
+index 8202870c7..81112f822 100644
+--- a/UI/GameSettingsScreen.cpp
++++ b/UI/GameSettingsScreen.cpp
+@@ -796,7 +796,6 @@ void GameSettingsScreen::CreateViews() {
+       }
+ #endif
+-      systemSettings->Add(new CheckBox(&g_Config.bCheckForNewVersion, sy->T("VersionCheck", "Check for new versions of PPSSPP")));
+       const std::string bgPng = GetSysDirectory(DIRECTORY_SYSTEM) + "background.png";
+       const std::string bgJpg = GetSysDirectory(DIRECTORY_SYSTEM) + "background.jpg";
+       if (File::Exists(bgPng) || File::Exists(bgJpg)) {
+diff --git a/UI/MainScreen.cpp b/UI/MainScreen.cpp
+index 43535913d..36834020d 100644
+--- a/UI/MainScreen.cpp
++++ b/UI/MainScreen.cpp
+@@ -1054,11 +1054,7 @@ void MainScreen::CreateViews() {
+       sprintf(versionString, "%s", PPSSPP_GIT_VERSION);
+       rightColumnItems->SetSpacing(0.0f);
+       LinearLayout *logos = new LinearLayout(ORIENT_HORIZONTAL);
+-      if (System_GetPropertyBool(SYSPROP_APP_GOLD)) {
+-              logos->Add(new ImageView(ImageID("I_ICONGOLD"), IS_DEFAULT, new AnchorLayoutParams(64, 64, 10, 10, NONE, NONE, false)));
+-      } else {
+-              logos->Add(new ImageView(ImageID("I_ICON"), IS_DEFAULT, new AnchorLayoutParams(64, 64, 10, 10, NONE, NONE, false)));
+-      }
++      logos->Add(new ImageView(ImageID("I_ICON"), IS_DEFAULT, new AnchorLayoutParams(64, 64, 10, 10, NONE, NONE, false)));
+       logos->Add(new ImageView(ImageID("I_LOGO"), IS_DEFAULT, new LinearLayoutParams(Margins(-12, 0, 0, 0))));
+       rightColumnItems->Add(logos);
+       TextView *ver = rightColumnItems->Add(new TextView(versionString, new LinearLayoutParams(Margins(70, -6, 0, 0))));
+@@ -1070,11 +1066,6 @@ void MainScreen::CreateViews() {
+       rightColumnItems->Add(new Choice(mm->T("Game Settings", "Settings")))->OnClick.Handle(this, &MainScreen::OnGameSettings);
+       rightColumnItems->Add(new Choice(mm->T("Credits")))->OnClick.Handle(this, &MainScreen::OnCredits);
+       rightColumnItems->Add(new Choice(mm->T("www.ppsspp.org")))->OnClick.Handle(this, &MainScreen::OnPPSSPPOrg);
+-      if (!System_GetPropertyBool(SYSPROP_APP_GOLD)) {
+-              Choice *gold = rightColumnItems->Add(new Choice(mm->T("Buy PPSSPP Gold")));
+-              gold->OnClick.Handle(this, &MainScreen::OnSupport);
+-              gold->SetIcon(ImageID("I_ICONGOLD"));
+-      }
+ #if !PPSSPP_PLATFORM(UWP)
+       // Having an exit button is against UWP guidelines.
+@@ -1099,28 +1090,6 @@ void MainScreen::CreateViews() {
+       } else if (tabHolder_->GetVisibility() != V_GONE) {
+               root_->SetDefaultFocusView(tabHolder_);
+       }
+-
+-      auto u = GetI18NCategory("Upgrade");
+-
+-      upgradeBar_ = 0;
+-      if (!g_Config.upgradeMessage.empty()) {
+-              upgradeBar_ = new LinearLayout(ORIENT_HORIZONTAL, new LinearLayoutParams(FILL_PARENT, WRAP_CONTENT));
+-
+-              UI::Margins textMargins(10, 5);
+-              UI::Margins buttonMargins(0, 0);
+-              UI::Drawable solid(0xFFbd9939);
+-              upgradeBar_->SetBG(solid);
+-              upgradeBar_->Add(new TextView(u->T("New version of PPSSPP available") + std::string(": ") + g_Config.upgradeVersion, new LinearLayoutParams(1.0f, textMargins)));
+-              upgradeBar_->Add(new Button(u->T("Download"), new LinearLayoutParams(buttonMargins)))->OnClick.Handle(this, &MainScreen::OnDownloadUpgrade);
+-              upgradeBar_->Add(new Button(u->T("Dismiss"), new LinearLayoutParams(buttonMargins)))->OnClick.Handle(this, &MainScreen::OnDismissUpgrade);
+-
+-              // Slip in under root_
+-              LinearLayout *newRoot = new LinearLayout(ORIENT_VERTICAL);
+-              newRoot->Add(root_);
+-              newRoot->Add(upgradeBar_);
+-              root_->ReplaceLayoutParams(new LinearLayoutParams(1.0));
+-              root_ = newRoot;
+-      }
+ }
+ UI::EventReturn MainScreen::OnAllowStorage(UI::EventParams &e) {
+@@ -1128,27 +1097,6 @@ UI::EventReturn MainScreen::OnAllowStorage(UI::EventParams &e) {
+       return UI::EVENT_DONE;
+ }
+-UI::EventReturn MainScreen::OnDownloadUpgrade(UI::EventParams &e) {
+-#if PPSSPP_PLATFORM(ANDROID)
+-      // Go to app store
+-      if (System_GetPropertyBool(SYSPROP_APP_GOLD)) {
+-              LaunchBrowser("market://details?id=org.ppsspp.ppssppgold");
+-      } else {
+-              LaunchBrowser("market://details?id=org.ppsspp.ppsspp");
+-      }
+-#else
+-      // Go directly to ppsspp.org and let the user sort it out
+-      LaunchBrowser("https://www.ppsspp.org/downloads.html");
+-#endif
+-      return UI::EVENT_DONE;
+-}
+-
+-UI::EventReturn MainScreen::OnDismissUpgrade(UI::EventParams &e) {
+-      g_Config.DismissUpgrade();
+-      upgradeBar_->SetVisibility(UI::V_GONE);
+-      return UI::EVENT_DONE;
+-}
+-
+ void MainScreen::sendMessage(const char *message, const char *value) {
+       // Always call the base class method first to handle the most common messages.
+       UIScreenWithBackground::sendMessage(message, value);
+@@ -1319,15 +1267,6 @@ UI::EventReturn MainScreen::OnCredits(UI::EventParams &e) {
+       return UI::EVENT_DONE;
+ }
+-UI::EventReturn MainScreen::OnSupport(UI::EventParams &e) {
+-#ifdef __ANDROID__
+-      LaunchBrowser("market://details?id=org.ppsspp.ppssppgold");
+-#else
+-      LaunchBrowser("https://central.ppsspp.org/buygold");
+-#endif
+-      return UI::EVENT_DONE;
+-}
+-
+ UI::EventReturn MainScreen::OnPPSSPPOrg(UI::EventParams &e) {
+       LaunchBrowser("https://www.ppsspp.org");
+       return UI::EVENT_DONE;
+diff --git a/UI/MiscScreens.cpp b/UI/MiscScreens.cpp
+index a6542c65d..f5f101594 100644
+--- a/UI/MiscScreens.cpp
++++ b/UI/MiscScreens.cpp
+@@ -498,11 +498,7 @@ void LogoScreen::render() {
+       char temp[256];
+       // Manually formatting UTF-8 is fun.  \xXX doesn't work everywhere.
+       snprintf(temp, sizeof(temp), "%s Henrik Rydg%c%crd", cr->T("created", "Created by"), 0xC3, 0xA5);
+-      if (System_GetPropertyBool(SYSPROP_APP_GOLD)) {
+-              dc.Draw()->DrawImage(ImageID("I_ICONGOLD"), bounds.centerX() - 120, bounds.centerY() - 30, 1.2f, textColor, ALIGN_CENTER);
+-      } else {
+-              dc.Draw()->DrawImage(ImageID("I_ICON"), bounds.centerX() - 120, bounds.centerY() - 30, 1.2f, textColor, ALIGN_CENTER);
+-      }
++      dc.Draw()->DrawImage(ImageID("I_ICON"), bounds.centerX() - 120, bounds.centerY() - 30, 1.2f, textColor, ALIGN_CENTER);
+       dc.Draw()->DrawImage(ImageID("I_LOGO"), bounds.centerX() + 40, bounds.centerY() - 30, 1.5f, textColor, ALIGN_CENTER);
+       //dc.Draw()->DrawTextShadow(UBUNTU48, "PPSSPP", xres / 2, yres / 2 - 30, textColor, ALIGN_CENTER);
+       dc.SetFontScale(1.0f, 1.0f);
+@@ -538,10 +534,6 @@ void CreditsScreen::CreateViews() {
+       // Really need to redo this whole layout with some linear layouts...
+       int rightYOffset = 0;
+-      if (!System_GetPropertyBool(SYSPROP_APP_GOLD)) {
+-              root_->Add(new Button(cr->T("Buy Gold"), new AnchorLayoutParams(260, 64, NONE, NONE, 10, 84, false)))->OnClick.Handle(this, &CreditsScreen::OnSupport);
+-              rightYOffset = 74;
+-      }
+       root_->Add(new Button(cr->T("PPSSPP Forums"), new AnchorLayoutParams(260, 64, 10, NONE, NONE, 158, false)))->OnClick.Handle(this, &CreditsScreen::OnForums);
+       root_->Add(new Button(cr->T("Discord"), new AnchorLayoutParams(260, 64, 10, NONE, NONE, 232, false)))->OnClick.Handle(this, &CreditsScreen::OnDiscord);
+       root_->Add(new Button("www.ppsspp.org", new AnchorLayoutParams(260, 64, 10, NONE, NONE, 10, false)))->OnClick.Handle(this, &CreditsScreen::OnPPSSPPOrg);
+@@ -550,20 +542,7 @@ void CreditsScreen::CreateViews() {
+ #if PPSSPP_PLATFORM(ANDROID) || PPSSPP_PLATFORM(IOS)
+       root_->Add(new Button(cr->T("Share PPSSPP"), new AnchorLayoutParams(260, 64, NONE, NONE, 10, rightYOffset + 158, false)))->OnClick.Handle(this, &CreditsScreen::OnShare);
+ #endif
+-      if (System_GetPropertyBool(SYSPROP_APP_GOLD)) {
+-              root_->Add(new ImageView(ImageID("I_ICONGOLD"), IS_DEFAULT, new AnchorLayoutParams(100, 64, 10, 10, NONE, NONE, false)));
+-      } else {
+-              root_->Add(new ImageView(ImageID("I_ICON"), IS_DEFAULT, new AnchorLayoutParams(100, 64, 10, 10, NONE, NONE, false)));
+-      }
+-}
+-
+-UI::EventReturn CreditsScreen::OnSupport(UI::EventParams &e) {
+-#ifdef __ANDROID__
+-      LaunchBrowser("market://details?id=org.ppsspp.ppssppgold");
+-#else
+-      LaunchBrowser("https://central.ppsspp.org/buygold");
+-#endif
+-      return UI::EVENT_DONE;
++      root_->Add(new ImageView(ImageID("I_ICON"), IS_DEFAULT, new AnchorLayoutParams(100, 64, 10, 10, NONE, NONE, false)));
+ }
+ UI::EventReturn CreditsScreen::OnTwitter(UI::EventParams &e) {
+@@ -747,11 +726,7 @@ void CreditsScreen::render() {
+       // TODO: This is kinda ugly, done on every frame...
+       char temp[256];
+-      if (System_GetPropertyBool(SYSPROP_APP_GOLD)) {
+-              snprintf(temp, sizeof(temp), "PPSSPP Gold %s", PPSSPP_GIT_VERSION);
+-      } else {
+-              snprintf(temp, sizeof(temp), "PPSSPP %s", PPSSPP_GIT_VERSION);
+-      }
++      snprintf(temp, sizeof(temp), "PPSSPP %s", PPSSPP_GIT_VERSION);
+       credits[0] = (const char *)temp;
+       UIContext &dc = *screenManager()->getUIContext();
+diff --git a/UWP/PPSSPP_UWPMain.cpp b/UWP/PPSSPP_UWPMain.cpp
+index 24f3b964d..1d66ba7ee 100644
+--- a/UWP/PPSSPP_UWPMain.cpp
++++ b/UWP/PPSSPP_UWPMain.cpp
+@@ -399,12 +399,6 @@ bool System_GetPropertyBool(SystemProperty prop) {
+               return false;
+       case SYSPROP_HAS_BACK_BUTTON:
+               return true;
+-      case SYSPROP_APP_GOLD:
+-#ifdef GOLD
+-              return true;
+-#else
+-              return false;
+-#endif
+       default:
+               return false;
+       }
+diff --git a/Windows/MainWindowMenu.cpp b/Windows/MainWindowMenu.cpp
+index b5e1bb0eb..71b29b48a 100644
+--- a/Windows/MainWindowMenu.cpp
++++ b/Windows/MainWindowMenu.cpp
+@@ -1377,7 +1377,7 @@ namespace MainWindow {
+               {
+                       W32Util::CenterWindow(hDlg);
+                       HWND versionBox = GetDlgItem(hDlg, IDC_VERSION);
+-                      std::string windowText = System_GetPropertyBool(SYSPROP_APP_GOLD) ? "PPSSPP Gold " : "PPSSPP ";
++                      std::string windowText = "PPSSPP ";
+                       windowText.append(PPSSPP_GIT_VERSION);
+                       SetWindowText(versionBox, ConvertUTF8ToWString(windowText).c_str());
+               }
+diff --git a/Windows/main.cpp b/Windows/main.cpp
+index 3795597e2..fd98d0453 100644
+--- a/Windows/main.cpp
++++ b/Windows/main.cpp
+@@ -268,12 +268,6 @@ bool System_GetPropertyBool(SystemProperty prop) {
+               return true;
+       case SYSPROP_HAS_BACK_BUTTON:
+               return true;
+-      case SYSPROP_APP_GOLD:
+-#ifdef GOLD
+-              return true;
+-#else
+-              return false;
+-#endif
+       default:
+               return false;
+       }
+diff --git a/android/jni/app-android.cpp b/android/jni/app-android.cpp
+index 086371085..0a340c0ae 100644
+--- a/android/jni/app-android.cpp
++++ b/android/jni/app-android.cpp
+@@ -372,12 +372,6 @@ bool System_GetPropertyBool(SystemProperty prop) {
+               return true;
+       case SYSPROP_HAS_IMAGE_BROWSER:
+               return true;
+-      case SYSPROP_APP_GOLD:
+-#ifdef GOLD
+-              return true;
+-#else
+-              return false;
+-#endif
+       default:
+               return false;
+       }
+-- 
+2.26.2
+