aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.reuse/dep55
-rw-r--r--CMakeLists.txt19
-rw-r--r--dist/compatibility_list/compatibility_list.json354
-rw-r--r--dist/compatibility_list/compatibility_list.qrc5
-rw-r--r--src/qt_common/game_list/model.cpp50
-rw-r--r--src/qt_common/game_list/model.h6
-rw-r--r--src/qt_common/game_list/worker.cpp15
-rw-r--r--src/qt_common/game_list/worker.h3
-rw-r--r--src/yuzu/CMakeLists.txt13
-rw-r--r--src/yuzu/compatdb.cpp206
-rw-r--r--src/yuzu/compatdb.h40
-rw-r--r--src/yuzu/compatdb.ui398
-rw-r--r--src/yuzu/compatibility_list.cpp17
-rw-r--r--src/yuzu/compatibility_list.h19
-rw-r--r--src/yuzu/game/game_list.cpp12
-rw-r--r--src/yuzu/game/game_list.h4
-rw-r--r--src/yuzu/main.ui11
-rw-r--r--src/yuzu/main_window.cpp23
-rw-r--r--src/yuzu/main_window.h3
19 files changed, 4 insertions, 1199 deletions
diff --git a/.reuse/dep5 b/.reuse/dep5
index 081c21e583..5d6fd4379e 100644
--- a/.reuse/dep5
+++ b/.reuse/dep5
@@ -112,11 +112,6 @@ Files: src/yuzu/*.ui
Copyright: 2018-2022 yuzu Emulator Project
License: GPL-2.0-or-later
-Files: src/yuzu/compatdb.ui
- src/yuzu/main.ui
-Copyright: 2014-2017 Citra Emulator Project
-License: GPL-2.0-or-later
-
Files: src/yuzu/loading_screen.ui
Copyright: 2019 James Rowe <jroweboy@gmail.com>
License: GPL-2.0-or-later
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d26063b8b9..1039ddfed4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -281,25 +281,6 @@ if(EXISTS ${PROJECT_SOURCE_DIR}/hooks/pre-commit AND NOT EXISTS ${PROJECT_SOURCE
endif()
endif()
-set(compat_base dist/compatibility_list/compatibility_list)
-set(compat_qrc ${compat_base}.qrc)
-set(compat_json ${compat_base}.json)
-
-configure_file(${PROJECT_SOURCE_DIR}/${compat_qrc}
- ${PROJECT_BINARY_DIR}/${compat_qrc}
- COPYONLY)
-
-if (EXISTS ${PROJECT_SOURCE_DIR}/${compat_json})
- configure_file("${PROJECT_SOURCE_DIR}/${compat_json}"
- "${PROJECT_BINARY_DIR}/${compat_json}"
- COPYONLY)
-endif()
-
-# TODO: Compat list download
-if (NOT EXISTS ${PROJECT_BINARY_DIR}/${compat_json})
- file(WRITE ${PROJECT_BINARY_DIR}/${compat_json} "")
-endif()
-
if (ARCHITECTURE_arm64 AND (ANDROID OR PLATFORM_LINUX))
set(HAS_NCE 1)
add_compile_definitions(HAS_NCE=1)
diff --git a/dist/compatibility_list/compatibility_list.json b/dist/compatibility_list/compatibility_list.json
deleted file mode 100644
index b8d74e8945..0000000000
--- a/dist/compatibility_list/compatibility_list.json
+++ /dev/null
@@ -1,354 +0,0 @@
-[
- {
- "compatibility": 0,
- "directory": "the-legend-of-zelda-breath-of-the-wild",
- "releases": [
- {"id": "01007EF00011E000"}
- ],
- "title": "The Legend of Zelda: Breath of the Wild"
- },
- {
- "compatibility": 1,
- "directory": "super-mario-odyssey",
- "releases": [
- {"id": "0100000000010000"}
- ],
- "title": "Super Mario Odyssey"
- },
- {
- "compatibility": 0,
- "directory": "animal-crossing-new-horizons",
- "releases": [
- {"id": "01006F8002326000"}
- ],
- "title": "Animal Crossing: New Horizons"
- },
- {
- "compatibility": 1,
- "directory": "pokemon-legends-z-a",
- "releases": [
- {"id": "0100F43008C44000"}
- ],
- "title": "Pokémon Legends: Z-A"
- },
- {
- "compatibility": 1,
- "directory": "the-legend-of-zelda-tears-of-the-kingdom",
- "releases": [
- {"id": "0100F2C0115B6000"}
- ],
- "title": "The Legend of Zelda: Tears of the Kingdom"
- },
- {
- "compatibility": 0,
- "directory": "super-mario-galaxy",
- "releases": [
- {"id": "010099C022B96000"}
- ],
- "title": "Super Mario Galaxy"
- },
- {
- "compatibility": 3,
- "directory": "star-wars-republic-commando",
- "releases": [
- {"id": "0100FA10115F8000"}
- ],
- "title": "Star Wars: Republic Commando"
- },
- {
- "compatibility": 0,
- "directory": "doki-doki-literature-club-plus",
- "releases": [
- {"id": "010086901543E000"}
- ],
- "title": "Doki Doki Literature Club Plus"
- },
- {
- "compatibility": 1,
- "directory": "pokemon-scarlet",
- "releases": [
- {"id": "0100A3D008C5C000"}
- ],
- "title": "Pokémon Scarlet"
- },
- {
- "compatibility": 1,
- "directory": "pokemon-violet",
- "releases": [
- {"id": "01008F6008C5E000"}
- ],
- "title": "Pokémon Violet"
- },
- {
- "compatibility": 2,
- "directory": "pokemon-legends-arceus",
- "releases": [
- {"id": "01001E300D162000"}
- ],
- "title": "Pokémon Legends: Arceus"
- },
- {
- "compatibility": 0,
- "directory": "splatoon-2",
- "releases": [
- {"id": "01003BC0000A0000"}
- ],
- "title": "Splatoon 2"
- },
- {
- "compatibility": 1,
- "directory": "super-smash-bros-ultimate",
- "releases": [
- {"id": "01006A800016E000"}
- ],
- "title": "Super Smash Bros. Ultimate"
- },
- {
- "compatibility": 0,
- "directory": "mario-kart-8-deluxe",
- "releases": [
- {"id": "0100152000022000"}
- ],
- "title": "Mario Kart 8 Deluxe"
- },
- {
- "compatibility": 0,
- "directory": "splatoon-3",
- "releases": [
- {"id": "0100C2500FC20000"}
- ],
- "title": "Splatoon 3"
- },
- {
- "compatibility": 0,
- "directory": "new-super-mario-bros-u-deluxe",
- "releases": [
- {"id": "0100EA80032EA000"}
- ],
- "title": "New Super Mario Bros. U Deluxe"
- },
- {
- "compatibility": 0,
- "directory": "hyrule-warriors-age-of-calamity",
- "releases": [
- {"id": "01002B00111A2000"}
- ],
- "title": "Hyrule Warriors: Age of Calamity"
- },
- {
- "compatibility": 2,
- "directory": "luigis-mansion-3",
- "releases": [
- {"id": "0100DCA0064A6000"}
- ],
- "title": "Luigi's Mansion 3"
- },
- {
- "compatibility": 2,
- "directory": "pokemon-brilliant-diamond",
- "releases": [
- {"id": "0100000011D90000"}
- ],
- "title": "Pokémon Brilliant Diamond"
- },
- {
- "compatibility": 2,
- "directory": "pokemon-shining-pearl",
- "releases": [
- {"id": "010018E011D92000"}
- ],
- "title": "Pokémon Shining Pearl"
- },
- {
- "compatibility": 1,
- "directory": "super-mario-3d-world-bowsers-fury",
- "releases": [
- {"id": "010028600EBDA000"}
- ],
- "title": "Super Mario 3D World + Bowser's Fury"
- },
- {
- "compatibility": 0,
- "directory": "the-legend-of-zelda-links-awakening",
- "releases": [
- {"id": "01006BB00C6F0000"}
- ],
- "title": "The Legend of Zelda: Link's Awakening"
- },
- {
- "compatibility": 1,
- "directory": "fire-emblem-three-houses",
- "releases": [
- {"id": "010055D009F78000"}
- ],
- "title": "Fire Emblem: Three Houses"
- },
- {
- "compatibility": 2,
- "directory": "metroid-dread",
- "releases": [
- {"id": "010093801237C000"}
- ],
- "title": "Metroid Dread"
- },
- {
- "compatibility": 0,
- "directory": "paper-mario-the-origami-king",
- "releases": [
- {"id": "0100A3900C3E2000"}
- ],
- "title": "Paper Mario: The Origami King"
- },
- {
- "compatibility": 1,
- "directory": "xenoblade-chronicles-definitive-edition",
- "releases": [
- {"id": "0100FF500E34A000"}
- ],
- "title": "Xenoblade Chronicles: Definitive Edition"
- },
- {
- "compatibility": 2,
- "directory": "xenoblade-chronicles-3",
- "releases": [
- {"id": "010074F013262000"}
- ],
- "title": "Xenoblade Chronicles 3"
- },
- {
- "compatibility": 1,
- "directory": "pikmin-3-deluxe",
- "releases": [
- {"id": "0100F8600D4B0000"}
- ],
- "title": "Pikmin 3 Deluxe"
- },
- {
- "compatibility": 0,
- "directory": "donkey-kong-country-tropical-freeze",
- "releases": [
- {"id": "0100C1F0054B6000"}
- ],
- "title": "Donkey Kong Country: Tropical Freeze"
- },
- {
- "compatibility": 1,
- "directory": "kirby-and-the-forgotten-land",
- "releases": [
- {"id": "01004D300C5AE000"}
- ],
- "title": "Kirby and the Forgotten Land"
- },
- {
- "compatibility": 2,
- "directory": "mario-party-superstars",
- "releases": [
- {"id": "01006B400D8B2000"}
- ],
- "title": "Mario Party Superstars"
- },
- {
- "compatibility": 0,
- "directory": "clubhouse-games-51-worldwide-classics",
- "releases": [
- {"id": "0100F8600D4B0000"}
- ],
- "title": "Clubhouse Games: 51 Worldwide Classics"
- },
- {
- "compatibility": 1,
- "directory": "ring-fit-adventure",
- "releases": [
- {"id": "01006B300BAF8000"}
- ],
- "title": "Ring Fit Adventure"
- },
- {
- "compatibility": 2,
- "directory": "arms",
- "releases": [
- {"id": "01009B500007C000"}
- ],
- "title": "ARMS"
- },
- {
- "compatibility": 0,
- "directory": "super-mario-maker-2",
- "releases": [
- {"id": "01009B90006DC000"}
- ],
- "title": "Super Mario Maker 2"
- },
- {
- "compatibility": 0,
- "directory": "pokemon-lets-go-pikachu",
- "releases": [
- {"id": "010003F003A34000"}
- ],
- "title": "Pokémon: Let's Go, Pikachu!"
- },
- {
- "compatibility": 1,
- "directory": "pokemon-lets-go-eevee",
- "releases": [
- {"id": "0100187003A36000"}
- ],
- "title": "Pokémon: Let's Go, Eevee!"
- },
- {
- "compatibility": 2,
- "directory": "pokemon-sword",
- "releases": [
- {"id": "0100ABF008968000"}
- ],
- "title": "Pokémon Sword"
- },
- {
- "compatibility": 2,
- "directory": "pokemon-shield",
- "releases": [
- {"id": "01008DB008C2C000"}
- ],
- "title": "Pokémon Shield"
- },
- {
- "compatibility": 1,
- "directory": "new-pokemon-snap",
- "releases": [
- {"id": "0100F4300C182000"}
- ],
- "title": "New Pokémon Snap"
- },
- {
- "compatibility": 0,
- "directory": "mario-golf-super-rush",
- "releases": [
- {"id": "0100C9C00E25C000"}
- ],
- "title": "Mario Golf: Super Rush"
- },
- {
- "compatibility": 1,
- "directory": "mario-tennis-aces",
- "releases": [
- {"id": "0100BDE00862A000"}
- ],
- "title": "Mario Tennis Aces"
- },
- {
- "compatibility": 2,
- "directory": "wario-ware-get-it-together",
- "releases": [
- {"id": "0100563010F22000"}
- ],
- "title": "WarioWare: Get It Together!"
- },
- {
- "compatibility": 0,
- "directory": "big-brain-academy-brain-vs-brain",
- "releases": [
- {"id": "0100190010F24000"}
- ],
- "title": "Big Brain Academy: Brain vs. Brain"
- }
-]
diff --git a/dist/compatibility_list/compatibility_list.qrc b/dist/compatibility_list/compatibility_list.qrc
deleted file mode 100644
index a29b735981..0000000000
--- a/dist/compatibility_list/compatibility_list.qrc
+++ /dev/null
@@ -1,5 +0,0 @@
-<RCC>
- <qresource prefix="compatibility_list">
- <file>compatibility_list.json</file>
- </qresource>
-</RCC>
diff --git a/src/qt_common/game_list/model.cpp b/src/qt_common/game_list/model.cpp
index 5c1042b002..c333644011 100644
--- a/src/qt_common/game_list/model.cpp
+++ b/src/qt_common/game_list/model.cpp
@@ -52,7 +52,7 @@ void GameListModel::PopulateAsync(QVector<UISettings::GameDir>& game_dirs) {
current_worker.reset();
removeRows(0, rowCount());
- current_worker = std::make_unique<GameListWorker>(vfs, provider, game_dirs, compatibility_list,
+ current_worker = std::make_unique<GameListWorker>(vfs, provider, game_dirs,
play_time_manager, system);
connect(current_worker.get(), &GameListWorker::DataAvailable, this, &GameListModel::WorkerEvent,
@@ -157,50 +157,6 @@ void GameListModel::RemoveFavorite(u64 program_id) {
}
}
-void GameListModel::LoadCompatibilityList() {
- QFile compat_list{QStringLiteral(":compatibility_list/compatibility_list.json")};
-
- if (!compat_list.open(QFile::ReadOnly | QFile::Text)) {
- LOG_ERROR(Frontend, "Unable to open game compatibility list");
- return;
- }
-
- if (compat_list.size() == 0) {
- LOG_WARNING(Frontend, "Game compatibility list is empty");
- return;
- }
-
- const QByteArray content = compat_list.readAll();
- if (content.isEmpty()) {
- LOG_ERROR(Frontend, "Unable to completely read game compatibility list");
- return;
- }
-
- const QJsonDocument json = QJsonDocument::fromJson(content);
- const QJsonArray arr = json.array();
-
- for (const QJsonValue& value : arr) {
- const QJsonObject game = value.toObject();
- const QString compatibility_key = QStringLiteral("compatibility");
-
- if (!game.contains(compatibility_key) || !game[compatibility_key].isDouble()) {
- continue;
- }
-
- const int compatibility = game[compatibility_key].toInt();
- const QString directory = game[QStringLiteral("directory")].toString();
- const QJsonArray ids = game[QStringLiteral("releases")].toArray();
-
- for (const QJsonValue& id_ref : ids) {
- const QJsonObject id_object = id_ref.toObject();
- const QString id = id_object[QStringLiteral("id")].toString();
-
- compatibility_list.emplace(id.toUpper().toStdString(),
- std::make_pair(QString::number(compatibility), directory));
- }
- }
-}
-
void GameListModel::Repopulate() {
current_worker.reset();
QtCommon::system->GetFileSystemController().CreateFactories(*QtCommon::vfs);
@@ -247,10 +203,6 @@ QFileSystemWatcher* GameListModel::GetWatcher() const {
return watcher;
}
-const CompatibilityList& GameListModel::GetCompatibilityList() const {
- return compatibility_list;
-}
-
void GameListModel::SetFlat(bool flat) {
m_flat = flat;
}
diff --git a/src/qt_common/game_list/model.h b/src/qt_common/game_list/model.h
index c8661e2fd1..68f42848e8 100644
--- a/src/qt_common/game_list/model.h
+++ b/src/qt_common/game_list/model.h
@@ -12,7 +12,6 @@
#include "common/common_types.h"
#include "frontend_common/play_time_manager.h"
#include "qt_common/config/uisettings.h"
-#include "yuzu/compatibility_list.h"
namespace Core {
class System;
@@ -62,14 +61,10 @@ public:
void RefreshExternalContent();
void ResetExternalWatcher();
- void LoadCompatibilityList();
-
void RetranslateUI();
QFileSystemWatcher* GetWatcher() const;
- const CompatibilityList& GetCompatibilityList() const;
-
void SetFlat(bool flat);
signals:
@@ -89,7 +84,6 @@ private:
std::shared_ptr<FileSys::VfsFilesystem> vfs;
FileSys::ManualContentProvider* provider;
- CompatibilityList compatibility_list;
const PlayTime::PlayTimeManager& play_time_manager;
Core::System& system;
diff --git a/src/qt_common/game_list/worker.cpp b/src/qt_common/game_list/worker.cpp
index 5cd68996c5..586a26e8b9 100644
--- a/src/qt_common/game_list/worker.cpp
+++ b/src/qt_common/game_list/worker.cpp
@@ -33,7 +33,6 @@
#include "qt_common/qt_common.h"
#include "qt_common/game_list/game_list_p.h"
-#include "yuzu/compatibility_list.h"
#include "qt_common/game_list/model.h"
#include "qt_common/game_list/worker.h"
@@ -203,14 +202,8 @@ QString FormatPatchNameVersions(const FileSys::PatchManager& patch_manager,
QList<QStandardItem*> MakeGameListEntry(const std::string& path, const std::string& name,
const std::size_t size, const std::vector<u8>& icon,
Loader::AppLoader& loader, u64 program_id,
- const CompatibilityList& compatibility_list,
const PlayTime::PlayTimeManager& play_time_manager,
const FileSys::PatchManager& patch) {
- auto const it = FindMatchingCompatibilityEntry(compatibility_list, program_id);
- // The game list uses 99 as compatibility number for untested games
- QString compatibility =
- it != compatibility_list.end() ? it->second.first : QStringLiteral("99");
-
auto const file_type = loader.GetFileType();
auto const file_type_string = QString::fromStdString(Loader::GetFileTypeString(file_type));
@@ -227,7 +220,6 @@ QList<QStandardItem*> MakeGameListEntry(const std::string& path, const std::stri
new GameListItemSize(size),
new GameListItemPlayTime(play_time),
new GameListItem(patch_versions),
- new GameListItemCompat(compatibility),
};
}
} // Anonymous namespace
@@ -235,11 +227,10 @@ QList<QStandardItem*> MakeGameListEntry(const std::string& path, const std::stri
GameListWorker::GameListWorker(FileSys::VirtualFilesystem vfs_,
FileSys::ManualContentProvider* provider_,
QVector<UISettings::GameDir>& game_dirs_,
- const CompatibilityList& compatibility_list_,
const PlayTime::PlayTimeManager& play_time_manager_,
Core::System& system_)
: vfs{std::move(vfs_)}, provider{provider_}, game_dirs{game_dirs_},
- compatibility_list{compatibility_list_}, play_time_manager{play_time_manager_},
+ play_time_manager{play_time_manager_},
system{system_} {
// We want the game list to manage our lifetime.
setAutoDelete(false);
@@ -335,7 +326,7 @@ void GameListWorker::AddTitlesToGameList(GameListDir* parent_dir) {
}
auto entry = MakeGameListEntry(file->GetFullPath(), name, file->GetSize(), icon, *loader,
- program_id, compatibility_list, play_time_manager, patch);
+ program_id, play_time_manager, patch);
RecordEvent([=](GameListModel* model) { model->AddEntry(entry, parent_dir); });
}
}
@@ -405,7 +396,7 @@ void GameListWorker::ScanFileSystem(ScanTarget target, const std::string& dir_pa
auto entry = MakeGameListEntry(
physical_name, name, Common::FS::GetSize(physical_name), icon, *app_loader,
- id, compatibility_list, play_time_manager, patch);
+ id, play_time_manager, patch);
RecordEvent([=](GameListModel* model) { model->AddEntry(entry, parent_dir); });
};
diff --git a/src/qt_common/game_list/worker.h b/src/qt_common/game_list/worker.h
index c11741c5f5..c007498d4b 100644
--- a/src/qt_common/game_list/worker.h
+++ b/src/qt_common/game_list/worker.h
@@ -20,7 +20,6 @@
#include "core/file_sys/registered_cache.h"
#include "frontend_common/play_time_manager.h"
#include "qt_common/config/uisettings.h"
-#include "yuzu/compatibility_list.h"
namespace Core {
class System;
@@ -46,7 +45,6 @@ public:
explicit GameListWorker(std::shared_ptr<FileSys::VfsFilesystem> vfs_,
FileSys::ManualContentProvider* provider_,
QVector<UISettings::GameDir>& game_dirs_,
- const CompatibilityList& compatibility_list_,
const PlayTime::PlayTimeManager& play_time_manager_,
Core::System& system_);
~GameListWorker() override;
@@ -85,7 +83,6 @@ private:
std::shared_ptr<FileSys::VfsFilesystem> vfs;
FileSys::ManualContentProvider* provider;
QVector<UISettings::GameDir>& game_dirs;
- const CompatibilityList& compatibility_list;
const PlayTime::PlayTimeManager& play_time_manager;
QStringList watch_list;
diff --git a/src/yuzu/CMakeLists.txt b/src/yuzu/CMakeLists.txt
index f806ebf515..9fa3f3c85d 100644
--- a/src/yuzu/CMakeLists.txt
+++ b/src/yuzu/CMakeLists.txt
@@ -37,9 +37,6 @@ add_executable(yuzu
applets/qt_web_browser_scripts.h
bootmanager.cpp
bootmanager.h
- compatdb.ui
- compatibility_list.cpp
- compatibility_list.h
configuration/configuration_shared.cpp
configuration/configuration_shared.h
configuration/configure.ui
@@ -216,8 +213,6 @@ add_executable(yuzu
util/url_request_interceptor.h
util/util.cpp
util/util.h
- compatdb.cpp
- compatdb.h
user_data_migration.h user_data_migration.cpp
@@ -260,9 +255,6 @@ if (CXX_CLANG)
$<$<VERSION_LESS:$<CXX_COMPILER_VERSION>,15>:CANNOT_EXPLICITLY_INSTANTIATE>)
endif()
-file(GLOB COMPAT_LIST
- ${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.qrc
- ${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json)
file(GLOB_RECURSE ICONS ${PROJECT_SOURCE_DIR}/dist/icons/*)
file(GLOB_RECURSE THEMES ${PROJECT_SOURCE_DIR}/dist/qt_themes/*)
@@ -354,7 +346,6 @@ endif()
target_sources(yuzu
PRIVATE
- ${COMPAT_LIST}
${ICONS}
${LANGUAGES}
${THEMES})
@@ -416,10 +407,6 @@ if (UNIX AND NOT APPLE)
target_link_libraries(yuzu PRIVATE Qt6::DBus)
endif()
-if (YUZU_ENABLE_COMPATIBILITY_REPORTING)
- target_compile_definitions(yuzu PRIVATE YUZU_ENABLE_COMPATIBILITY_REPORTING)
-endif()
-
if (ENABLE_WEB_SERVICE)
target_compile_definitions(yuzu PRIVATE ENABLE_WEB_SERVICE)
endif()
diff --git a/src/yuzu/compatdb.cpp b/src/yuzu/compatdb.cpp
deleted file mode 100644
index b47cdd2116..0000000000
--- a/src/yuzu/compatdb.cpp
+++ /dev/null
@@ -1,206 +0,0 @@
-// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
-// SPDX-License-Identifier: GPL-3.0-or-later
-
-// SPDX-FileCopyrightText: 2017 Citra Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include <QButtonGroup>
-#include <QMessageBox>
-#include <QPushButton>
-#include <qtconcurrentrun.h>
-#include "common/logging.h"
-#include "ui_compatdb.h"
-#include "yuzu/compatdb.h"
-
-CompatDB::CompatDB(QWidget* parent)
- : QWizard(parent, Qt::WindowTitleHint | Qt::WindowCloseButtonHint | Qt::WindowSystemMenuHint),
- ui{std::make_unique<Ui::CompatDB>()} {
- ui->setupUi(this);
-
- connect(ui->radioButton_GameBoot_Yes, &QRadioButton::clicked, this, &CompatDB::EnableNext);
- connect(ui->radioButton_GameBoot_No, &QRadioButton::clicked, this, &CompatDB::EnableNext);
- connect(ui->radioButton_Gameplay_Yes, &QRadioButton::clicked, this, &CompatDB::EnableNext);
- connect(ui->radioButton_Gameplay_No, &QRadioButton::clicked, this, &CompatDB::EnableNext);
- connect(ui->radioButton_NoFreeze_Yes, &QRadioButton::clicked, this, &CompatDB::EnableNext);
- connect(ui->radioButton_NoFreeze_No, &QRadioButton::clicked, this, &CompatDB::EnableNext);
- connect(ui->radioButton_Complete_Yes, &QRadioButton::clicked, this, &CompatDB::EnableNext);
- connect(ui->radioButton_Complete_No, &QRadioButton::clicked, this, &CompatDB::EnableNext);
- connect(ui->radioButton_Graphical_Major, &QRadioButton::clicked, this, &CompatDB::EnableNext);
- connect(ui->radioButton_Graphical_Minor, &QRadioButton::clicked, this, &CompatDB::EnableNext);
- connect(ui->radioButton_Graphical_No, &QRadioButton::clicked, this, &CompatDB::EnableNext);
- connect(ui->radioButton_Audio_Major, &QRadioButton::clicked, this, &CompatDB::EnableNext);
- connect(ui->radioButton_Audio_Minor, &QRadioButton::clicked, this, &CompatDB::EnableNext);
- connect(ui->radioButton_Audio_No, &QRadioButton::clicked, this, &CompatDB::EnableNext);
-
- connect(button(NextButton), &QPushButton::clicked, this, &CompatDB::Submit);
- connect(&testcase_watcher, &QFutureWatcher<bool>::finished, this,
- &CompatDB::OnTestcaseSubmitted);
-}
-
-CompatDB::~CompatDB() = default;
-
-enum class CompatDBPage {
- Intro = 0,
- GameBoot = 1,
- GamePlay = 2,
- Freeze = 3,
- Completion = 4,
- Graphical = 5,
- Audio = 6,
- Final = 7,
-};
-
-void CompatDB::Submit() {
- QButtonGroup* compatibility_GameBoot = new QButtonGroup(this);
- compatibility_GameBoot->addButton(ui->radioButton_GameBoot_Yes, 0);
- compatibility_GameBoot->addButton(ui->radioButton_GameBoot_No, 1);
-
- QButtonGroup* compatibility_Gameplay = new QButtonGroup(this);
- compatibility_Gameplay->addButton(ui->radioButton_Gameplay_Yes, 0);
- compatibility_Gameplay->addButton(ui->radioButton_Gameplay_No, 1);
-
- QButtonGroup* compatibility_NoFreeze = new QButtonGroup(this);
- compatibility_NoFreeze->addButton(ui->radioButton_NoFreeze_Yes, 0);
- compatibility_NoFreeze->addButton(ui->radioButton_NoFreeze_No, 1);
-
- QButtonGroup* compatibility_Complete = new QButtonGroup(this);
- compatibility_Complete->addButton(ui->radioButton_Complete_Yes, 0);
- compatibility_Complete->addButton(ui->radioButton_Complete_No, 1);
-
- QButtonGroup* compatibility_Graphical = new QButtonGroup(this);
- compatibility_Graphical->addButton(ui->radioButton_Graphical_Major, 0);
- compatibility_Graphical->addButton(ui->radioButton_Graphical_Minor, 1);
- compatibility_Graphical->addButton(ui->radioButton_Graphical_No, 2);
-
- QButtonGroup* compatibility_Audio = new QButtonGroup(this);
- compatibility_Audio->addButton(ui->radioButton_Audio_Major, 0);
- compatibility_Graphical->addButton(ui->radioButton_Audio_Minor, 1);
- compatibility_Audio->addButton(ui->radioButton_Audio_No, 2);
-
- const int compatibility = static_cast<int>(CalculateCompatibility());
-
- switch ((static_cast<CompatDBPage>(currentId()))) {
- case CompatDBPage::Intro:
- break;
- case CompatDBPage::GameBoot:
- if (compatibility_GameBoot->checkedId() == -1) {
- button(NextButton)->setEnabled(false);
- }
- break;
- case CompatDBPage::GamePlay:
- if (compatibility_Gameplay->checkedId() == -1) {
- button(NextButton)->setEnabled(false);
- }
- break;
- case CompatDBPage::Freeze:
- if (compatibility_NoFreeze->checkedId() == -1) {
- button(NextButton)->setEnabled(false);
- }
- break;
- case CompatDBPage::Completion:
- if (compatibility_Complete->checkedId() == -1) {
- button(NextButton)->setEnabled(false);
- }
- break;
- case CompatDBPage::Graphical:
- if (compatibility_Graphical->checkedId() == -1) {
- button(NextButton)->setEnabled(false);
- }
- break;
- case CompatDBPage::Audio:
- if (compatibility_Audio->checkedId() == -1) {
- button(NextButton)->setEnabled(false);
- }
- break;
- case CompatDBPage::Final:
- back();
- LOG_INFO(Frontend, "Compatibility Rating: {}", compatibility);
-
- button(NextButton)->setEnabled(false);
- button(NextButton)->setText(tr("Submitting"));
- button(CancelButton)->setVisible(false);
- break;
- default:
- LOG_ERROR(Frontend, "Unexpected page: {}", currentId());
- break;
- }
-}
-
-int CompatDB::nextId() const {
- switch ((static_cast<CompatDBPage>(currentId()))) {
- case CompatDBPage::Intro:
- return static_cast<int>(CompatDBPage::GameBoot);
- case CompatDBPage::GameBoot:
- if (ui->radioButton_GameBoot_No->isChecked()) {
- return static_cast<int>(CompatDBPage::Final);
- }
- return static_cast<int>(CompatDBPage::GamePlay);
- case CompatDBPage::GamePlay:
- if (ui->radioButton_Gameplay_No->isChecked()) {
- return static_cast<int>(CompatDBPage::Final);
- }
- return static_cast<int>(CompatDBPage::Freeze);
- case CompatDBPage::Freeze:
- if (ui->radioButton_NoFreeze_No->isChecked()) {
- return static_cast<int>(CompatDBPage::Final);
- }
- return static_cast<int>(CompatDBPage::Completion);
- case CompatDBPage::Completion:
- if (ui->radioButton_Complete_No->isChecked()) {
- return static_cast<int>(CompatDBPage::Final);
- }
- return static_cast<int>(CompatDBPage::Graphical);
- case CompatDBPage::Graphical:
- return static_cast<int>(CompatDBPage::Audio);
- case CompatDBPage::Audio:
- return static_cast<int>(CompatDBPage::Final);
- case CompatDBPage::Final:
- return -1;
- default:
- LOG_ERROR(Frontend, "Unexpected page: {}", currentId());
- return static_cast<int>(CompatDBPage::Intro);
- }
-}
-
-CompatibilityStatus CompatDB::CalculateCompatibility() const {
- if (ui->radioButton_GameBoot_No->isChecked()) {
- return CompatibilityStatus::WontBoot;
- }
-
- if (ui->radioButton_Gameplay_No->isChecked()) {
- return CompatibilityStatus::IntroMenu;
- }
-
- if (ui->radioButton_NoFreeze_No->isChecked() || ui->radioButton_Complete_No->isChecked()) {
- return CompatibilityStatus::Ingame;
- }
-
- if (ui->radioButton_Graphical_Major->isChecked() || ui->radioButton_Audio_Major->isChecked()) {
- return CompatibilityStatus::Ingame;
- }
-
- if (ui->radioButton_Graphical_Minor->isChecked() || ui->radioButton_Audio_Minor->isChecked()) {
- return CompatibilityStatus::Playable;
- }
-
- return CompatibilityStatus::Perfect;
-}
-
-void CompatDB::OnTestcaseSubmitted() {
- if (!testcase_watcher.result()) {
- QMessageBox::critical(this, tr("Communication error"),
- tr("An error occurred while sending the Testcase"));
- button(NextButton)->setEnabled(true);
- button(NextButton)->setText(tr("Next"));
- button(CancelButton)->setVisible(true);
- } else {
- next();
- // older versions of QT don't support the "NoCancelButtonOnLastPage" option, this is a
- // workaround
- button(CancelButton)->setVisible(false);
- }
-}
-
-void CompatDB::EnableNext() {
- button(NextButton)->setEnabled(true);
-}
diff --git a/src/yuzu/compatdb.h b/src/yuzu/compatdb.h
deleted file mode 100644
index 4e788d09c4..0000000000
--- a/src/yuzu/compatdb.h
+++ /dev/null
@@ -1,40 +0,0 @@
-// SPDX-FileCopyrightText: 2017 Citra Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#include <memory>
-#include <QFutureWatcher>
-#include <QWizard>
-
-namespace Ui {
-class CompatDB;
-}
-
-enum class CompatibilityStatus {
- Perfect = 0,
- Playable = 1,
- // Unused: Okay = 2,
- Ingame = 3,
- IntroMenu = 4,
- WontBoot = 5,
-};
-
-class CompatDB : public QWizard {
- Q_OBJECT
-
-public:
- explicit CompatDB(QWidget* parent = nullptr);
- ~CompatDB();
- int nextId() const override;
-
-private:
- QFutureWatcher<bool> testcase_watcher;
-
- std::unique_ptr<Ui::CompatDB> ui;
-
- void Submit();
- CompatibilityStatus CalculateCompatibility() const;
- void OnTestcaseSubmitted();
- void EnableNext();
-};
diff --git a/src/yuzu/compatdb.ui b/src/yuzu/compatdb.ui
deleted file mode 100644
index 6a2632a1ce..0000000000
--- a/src/yuzu/compatdb.ui
+++ /dev/null
@@ -1,398 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>CompatDB</class>
- <widget class="QWizard" name="CompatDB">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>600</width>
- <height>482</height>
- </rect>
- </property>
- <property name="minimumSize">
- <size>
- <width>500</width>
- <height>410</height>
- </size>
- </property>
- <property name="windowTitle">
- <string>Report Compatibility</string>
- </property>
- <property name="options">
- <set>QWizard::WizardOption::DisabledBackButtonOnLastPage|QWizard::WizardOption::HelpButtonOnRight|QWizard::WizardOption::NoBackButtonOnStartPage</set>
- </property>
- <widget class="QWizardPage" name="wizard_Info">
- <property name="title">
- <string>Report Game Compatibility</string>
- </property>
- <attribute name="pageId">
- <string notr="true">0</string>
- </attribute>
- <layout class="QVBoxLayout" name="verticalLayout">
- <item>
- <widget class="QLabel" name="lbl_Spiel">
- <property name="text">
- <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;Should you choose to submit a test case to the &lt;/span&gt;&lt;a href=&quot;https://eden-emulator.github.io/game/&quot;&gt;&lt;span style=&quot; font-size:10pt; text-decoration: underline; color:#0000ff;&quot;&gt;eden Compatibility List&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;, The following information will be collected and displayed on the site:&lt;/span&gt;&lt;/p&gt;&lt;ul style=&quot;margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;&quot;&gt;&lt;li style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Hardware Information (CPU / GPU / Operating System)&lt;/li&gt;&lt;li style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Which version of eden you are running&lt;/li&gt;&lt;li style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;The connected eden account&lt;/li&gt;&lt;/ul&gt;&lt;/body&gt;&lt;/html&gt;</string>
- </property>
- <property name="wordWrap">
- <bool>true</bool>
- </property>
- <property name="openExternalLinks">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="verticalSpacer_2">
- <property name="orientation">
- <enum>Qt::Orientation::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>0</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </widget>
- <widget class="QWizardPage" name="wizard_GameBoot">
- <property name="title">
- <string>Report Game Compatibility</string>
- </property>
- <attribute name="pageId">
- <string notr="true">1</string>
- </attribute>
- <layout class="QFormLayout" name="formLayout1">
- <item row="0" column="0" colspan="2">
- <widget class="QLabel" name="lbl_Independent1">
- <property name="font">
- <font>
- <pointsize>10</pointsize>
- </font>
- </property>
- <property name="text">
- <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Does the game boot?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
- </property>
- <property name="wordWrap">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item row="1" column="0" colspan="2">
- <spacer name="verticalSpacer1">
- <property name="orientation">
- <enum>Qt::Orientation::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>0</height>
- </size>
- </property>
- </spacer>
- </item>
- <item row="2" column="0">
- <widget class="QRadioButton" name="radioButton_GameBoot_Yes">
- <property name="text">
- <string>Yes The game starts to output video or audio</string>
- </property>
- </widget>
- </item>
- <item row="4" column="0">
- <widget class="QRadioButton" name="radioButton_GameBoot_No">
- <property name="text">
- <string>No The game doesn't get past the &quot;Launching...&quot; screen</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- <widget class="QWizardPage" name="wizard_GamePlay">
- <property name="title">
- <string>Report Game Compatibility</string>
- </property>
- <attribute name="pageId">
- <string notr="true">2</string>
- </attribute>
- <layout class="QFormLayout" name="formLayout2">
- <item row="2" column="0">
- <widget class="QRadioButton" name="radioButton_Gameplay_Yes">
- <property name="text">
- <string>Yes The game gets past the intro/menu and into gameplay</string>
- </property>
- </widget>
- </item>
- <item row="4" column="0">
- <widget class="QRadioButton" name="radioButton_Gameplay_No">
- <property name="text">
- <string>No The game crashes or freezes while loading or using the menu</string>
- </property>
- </widget>
- </item>
- <item row="0" column="0" colspan="2">
- <widget class="QLabel" name="lbl_Independent2">
- <property name="font">
- <font>
- <pointsize>10</pointsize>
- </font>
- </property>
- <property name="text">
- <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Does the game reach gameplay?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
- </property>
- <property name="wordWrap">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item row="1" column="0" colspan="2">
- <spacer name="verticalSpacer2">
- <property name="orientation">
- <enum>Qt::Orientation::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>0</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </widget>
- <widget class="QWizardPage" name="wizard_NoFreeze">
- <property name="title">
- <string>Report Game Compatibility</string>
- </property>
- <attribute name="pageId">
- <string notr="true">3</string>
- </attribute>
- <layout class="QFormLayout" name="formLayout3">
- <item row="2" column="0">
- <widget class="QRadioButton" name="radioButton_NoFreeze_Yes">
- <property name="text">
- <string>Yes The game works without crashes</string>
- </property>
- </widget>
- </item>
- <item row="4" column="0">
- <widget class="QRadioButton" name="radioButton_NoFreeze_No">
- <property name="text">
- <string>No The game crashes or freezes during gameplay</string>
- </property>
- </widget>
- </item>
- <item row="0" column="0" colspan="2">
- <widget class="QLabel" name="lbl_Independent3">
- <property name="font">
- <font>
- <pointsize>10</pointsize>
- </font>
- </property>
- <property name="text">
- <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Does the game work without crashing, freezing or locking up during gameplay?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
- </property>
- <property name="wordWrap">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item row="1" column="0" colspan="2">
- <spacer name="verticalSpacer3">
- <property name="orientation">
- <enum>Qt::Orientation::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>0</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </widget>
- <widget class="QWizardPage" name="wizard_Complete">
- <property name="title">
- <string>Report Game Compatibility</string>
- </property>
- <attribute name="pageId">
- <string notr="true">4</string>
- </attribute>
- <layout class="QFormLayout" name="formLayout4">
- <item row="2" column="0">
- <widget class="QRadioButton" name="radioButton_Complete_Yes">
- <property name="text">
- <string>Yes The game can be finished without any workarounds</string>
- </property>
- </widget>
- </item>
- <item row="4" column="0">
- <widget class="QRadioButton" name="radioButton_Complete_No">
- <property name="text">
- <string>No The game can't progress past a certain area</string>
- </property>
- </widget>
- </item>
- <item row="0" column="0" colspan="2">
- <widget class="QLabel" name="lbl_Independent4">
- <property name="font">
- <font>
- <pointsize>10</pointsize>
- </font>
- </property>
- <property name="text">
- <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Is the game completely playable from start to finish?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
- </property>
- <property name="wordWrap">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item row="1" column="0" colspan="2">
- <spacer name="verticalSpacer4">
- <property name="orientation">
- <enum>Qt::Orientation::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>0</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </widget>
- <widget class="QWizardPage" name="wizard_Graphical">
- <property name="title">
- <string>Report Game Compatibility</string>
- </property>
- <attribute name="pageId">
- <string notr="true">5</string>
- </attribute>
- <layout class="QFormLayout" name="formLayout5">
- <item row="2" column="0">
- <widget class="QRadioButton" name="radioButton_Graphical_Major">
- <property name="text">
- <string>Major The game has major graphical errors</string>
- </property>
- </widget>
- </item>
- <item row="4" column="0">
- <widget class="QRadioButton" name="radioButton_Graphical_Minor">
- <property name="text">
- <string>Minor The game has minor graphical errors</string>
- </property>
- </widget>
- </item>
- <item row="6" column="0">
- <widget class="QRadioButton" name="radioButton_Graphical_No">
- <property name="text">
- <string>None Everything is rendered as it looks on the Nintendo Switch</string>
- </property>
- </widget>
- </item>
- <item row="0" column="0" colspan="2">
- <widget class="QLabel" name="lbl_Independent5">
- <property name="font">
- <font>
- <pointsize>10</pointsize>
- </font>
- </property>
- <property name="text">
- <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Does the game have any graphical glitches?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
- </property>
- <property name="wordWrap">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item row="1" column="0" colspan="2">
- <spacer name="verticalSpacer5">
- <property name="orientation">
- <enum>Qt::Orientation::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>0</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </widget>
- <widget class="QWizardPage" name="wizard_Audio">
- <property name="title">
- <string>Report Game Compatibility</string>
- </property>
- <attribute name="pageId">
- <string notr="true">6</string>
- </attribute>
- <layout class="QFormLayout" name="formLayout6">
- <item row="2" column="0">
- <widget class="QRadioButton" name="radioButton_Audio_Major">
- <property name="text">
- <string>Major The game has major audio errors</string>
- </property>
- </widget>
- </item>
- <item row="4" column="0">
- <widget class="QRadioButton" name="radioButton_Audio_Minor">
- <property name="text">
- <string>Minor The game has minor audio errors</string>
- </property>
- </widget>
- </item>
- <item row="6" column="0">
- <widget class="QRadioButton" name="radioButton_Audio_No">
- <property name="text">
- <string>None Audio is played perfectly</string>
- </property>
- </widget>
- </item>
- <item row="0" column="0" colspan="2">
- <widget class="QLabel" name="lbl_Independent6">
- <property name="font">
- <font>
- <pointsize>10</pointsize>
- </font>
- </property>
- <property name="text">
- <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Does the game have any audio glitches / missing effects?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
- </property>
- <property name="wordWrap">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item row="1" column="0" colspan="2">
- <spacer name="verticalSpacer6">
- <property name="orientation">
- <enum>Qt::Orientation::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>0</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </widget>
- <widget class="QWizardPage" name="wizard_ThankYou">
- <property name="title">
- <string>Thank you for your submission!</string>
- </property>
- <attribute name="pageId">
- <string notr="true">7</string>
- </attribute>
- </widget>
- </widget>
- <resources/>
- <connections/>
-</ui>
diff --git a/src/yuzu/compatibility_list.cpp b/src/yuzu/compatibility_list.cpp
deleted file mode 100644
index d08c542eff..0000000000
--- a/src/yuzu/compatibility_list.cpp
+++ /dev/null
@@ -1,17 +0,0 @@
-// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include <algorithm>
-
-#include <fmt/ranges.h>
-
-#include "yuzu/compatibility_list.h"
-
-CompatibilityList::const_iterator FindMatchingCompatibilityEntry(
- const CompatibilityList& compatibility_list, u64 program_id) {
- return std::find_if(compatibility_list.begin(), compatibility_list.end(),
- [program_id](const auto& element) {
- std::string pid = fmt::format("{:016X}", program_id);
- return element.first == pid;
- });
-}
diff --git a/src/yuzu/compatibility_list.h b/src/yuzu/compatibility_list.h
deleted file mode 100644
index bb1e4b6205..0000000000
--- a/src/yuzu/compatibility_list.h
+++ /dev/null
@@ -1,19 +0,0 @@
-// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
-// SPDX-License-Identifier: GPL-3.0-or-later
-
-// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-#include <string>
-#include <ankerl/unordered_dense.h>
-
-#include <QString>
-
-#include "common/common_types.h"
-
-using CompatibilityList = ankerl::unordered_dense::map<std::string, std::pair<QString, QString>>;
-
-CompatibilityList::const_iterator FindMatchingCompatibilityEntry(
- const CompatibilityList& compatibility_list, u64 program_id);
diff --git a/src/yuzu/game/game_list.cpp b/src/yuzu/game/game_list.cpp
index 86fd3c1b4f..6b89e59253 100644
--- a/src/yuzu/game/game_list.cpp
+++ b/src/yuzu/game/game_list.cpp
@@ -31,7 +31,6 @@
#include "qt_common/game_list/model.h"
#include "qt_common/qt_common.h"
#include "qt_common/util/game.h"
-#include "yuzu/compatibility_list.h"
#include "yuzu/game/carousel.h"
#include "yuzu/game/game_grid.h"
#include "yuzu/game/game_list.h"
@@ -136,10 +135,6 @@ bool GameList::IsEmpty() const {
return item_model->IsEmpty();
}
-void GameList::LoadCompatibilityList() {
- item_model->LoadCompatibilityList();
-}
-
void GameList::OnPopulate() {
m_currentView->setEnabled(false);
@@ -483,7 +478,6 @@ void GameList::AddGamePopup(QMenu& context_menu, u64 program_id, const std::stri
QAction* dump_romfs_sdmc = dump_romfs_menu->addAction(tr("Dump RomFS to SDMC"));
QAction* verify_integrity = context_menu.addAction(tr("Verify Integrity"));
QAction* copy_tid = context_menu.addAction(tr("Copy Title ID to Clipboard"));
- QAction* navigate_to_gamedb_entry = context_menu.addAction(tr("Navigate to GameDB entry"));
#if !defined(__APPLE__)
QMenu* shortcut_menu = context_menu.addMenu(tr("Create Shortcut"));
QAction* create_desktop_shortcut = shortcut_menu->addAction(tr("Add to Desktop"));
@@ -505,9 +499,6 @@ void GameList::AddGamePopup(QMenu& context_menu, u64 program_id, const std::stri
remove_vk_shader_cache->setVisible(program_id != 0);
remove_shader_cache->setVisible(program_id != 0);
remove_all_content->setVisible(program_id != 0);
- auto& compat_list = item_model->GetCompatibilityList();
- auto it = FindMatchingCompatibilityEntry(compat_list, program_id);
- navigate_to_gamedb_entry->setVisible(it != compat_list.end() && program_id != 0);
connect(favorite, &QAction::triggered, this,
[this, program_id]() { ToggleFavorite(program_id); });
@@ -567,9 +558,6 @@ void GameList::AddGamePopup(QMenu& context_menu, u64 program_id, const std::stri
[this, path]() { emit VerifyIntegrityRequested(path); });
connect(copy_tid, &QAction::triggered, this,
[this, program_id]() { emit CopyTIDRequested(program_id); });
- connect(navigate_to_gamedb_entry, &QAction::triggered, this, [this, program_id]() {
- emit NavigateToGamedbEntryRequested(program_id, item_model->GetCompatibilityList());
- });
#if !defined(__APPLE__)
connect(create_desktop_shortcut, &QAction::triggered, this, [this, program_id, path]() {
emit CreateShortcut(program_id, path, QtCommon::Game::ShortcutTarget::Desktop);
diff --git a/src/yuzu/game/game_list.h b/src/yuzu/game/game_list.h
index 027e58df3a..1540dd9cf0 100644
--- a/src/yuzu/game/game_list.h
+++ b/src/yuzu/game/game_list.h
@@ -22,7 +22,6 @@
#include "qt_common/config/uisettings.h"
#include "qt_common/game_list/model.h"
#include "qt_common/util/game.h"
-#include "yuzu/compatibility_list.h"
class QVariantAnimation;
@@ -76,7 +75,6 @@ public:
void SetFilterVisible(bool visibility);
bool IsEmpty() const;
- void LoadCompatibilityList();
void PopulateAsync(QVector<UISettings::GameDir>& game_dirs);
void SaveInterfaceLayout();
@@ -111,8 +109,6 @@ signals:
void CopyTIDRequested(u64 program_id);
void CreateShortcut(u64 program_id, const std::string& game_path,
const QtCommon::Game::ShortcutTarget target);
- void NavigateToGamedbEntryRequested(u64 program_id,
- const CompatibilityList& compatibility_list);
void OpenPerGameGeneralRequested(const std::string& file);
void LinkToRyujinxRequested(const u64& program_id);
void OpenDirectory(const QString& directory);
diff --git a/src/yuzu/main.ui b/src/yuzu/main.ui
index deb7774d25..c858be3cb3 100644
--- a/src/yuzu/main.ui
+++ b/src/yuzu/main.ui
@@ -402,17 +402,6 @@
<string>Load/Remove &amp;Amiibo...</string>
</property>
</action>
- <action name="action_Report_Compatibility">
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="text">
- <string>&amp;Report Compatibility</string>
- </property>
- <property name="visible">
- <bool>false</bool>
- </property>
- </action>
<action name="action_Open_Mods_Page">
<property name="text">
<string>Open &amp;Mods Page</string>
diff --git a/src/yuzu/main_window.cpp b/src/yuzu/main_window.cpp
index 88de185c6a..9b6b0a8b6a 100644
--- a/src/yuzu/main_window.cpp
+++ b/src/yuzu/main_window.cpp
@@ -447,7 +447,6 @@ MainWindow::MainWindow(bool has_broken_vulkan)
if (Settings::values.use_dev_keys.GetValue()) {
Core::Crypto::KeyManager::Instance().ReloadKeys();
}
- game_list->LoadCompatibilityList();
game_list->PopulateAsync(UISettings::values.game_dirs);
// Set up game list mode checkboxes.
@@ -957,9 +956,6 @@ void MainWindow::WebBrowserRequestExit() {
}
void MainWindow::InitializeWidgets() {
-#ifdef YUZU_ENABLE_COMPATIBILITY_REPORTING
- ui->action_Report_Compatibility->setVisible(true);
-#endif
render_window = new GRenderWindow(this, input_subsystem);
render_window->hide();
@@ -1459,8 +1455,6 @@ void MainWindow::ConnectWidgetEvents() {
connect(game_list, &GameList::VerifyIntegrityRequested, this,
&MainWindow::OnGameListVerifyIntegrity);
connect(game_list, &GameList::CopyTIDRequested, this, &MainWindow::OnGameListCopyTID);
- connect(game_list, &GameList::NavigateToGamedbEntryRequested, this,
- &MainWindow::OnGameListNavigateToGamedbEntry);
connect(game_list, &GameList::CreateShortcut, this, &MainWindow::OnGameListCreateShortcut);
connect(game_list, &GameList::AddDirectory, this, &MainWindow::OnGameListAddDirectory);
connect(game_list_placeholder, &GameListPlaceholder::AddDirectory, this,
@@ -1505,7 +1499,6 @@ void MainWindow::ConnectMenuEvents() {
// Emulation
connect_menu(ui->action_Pause, &MainWindow::OnPauseContinueGame);
connect_menu(ui->action_Stop, &MainWindow::OnStopGame);
- connect_menu(ui->action_Report_Compatibility, &MainWindow::OnMenuReportCompatibility);
connect_menu(ui->action_Open_Mods_Page, &MainWindow::OnOpenModsPage);
connect_menu(ui->action_Open_Quickstart_Guide, &MainWindow::OnOpenQuickstartGuide);
connect_menu(ui->action_Open_FAQ, &MainWindow::OnOpenFAQ);
@@ -1639,7 +1632,6 @@ void MainWindow::UpdateMenuState() {
ui->action_Stop,
ui->action_Restart,
ui->action_Configure_Current_Game,
- ui->action_Report_Compatibility,
ui->action_Load_Amiibo,
ui->action_Pause,
};
@@ -2616,21 +2608,6 @@ void MainWindow::OnGameListCopyTID(u64 program_id) {
clipboard->setText(QString::fromStdString(fmt::format("{:016X}", program_id)));
}
-void MainWindow::OnGameListNavigateToGamedbEntry(u64 program_id,
- const CompatibilityList& compatibility_list) {
- const auto it = FindMatchingCompatibilityEntry(compatibility_list, program_id);
-
- QString directory;
- if (it != compatibility_list.end()) {
- directory = it->second.second;
- }
-
- QDesktopServices::openUrl(QUrl(
- QStringLiteral(
- "https://www.emuready.com/listings?emulatorIds=43bfc023-ec22-422d-8324-048a8ec9f28f") +
- directory));
-}
-
void MainWindow::OnGameListCreateShortcut(u64 program_id, const std::string& game_path,
const QtCommon::Game::ShortcutTarget target) {
// Create shortcu
diff --git a/src/yuzu/main_window.h b/src/yuzu/main_window.h
index 40253aa52f..2b50e3af91 100644
--- a/src/yuzu/main_window.h
+++ b/src/yuzu/main_window.h
@@ -24,7 +24,6 @@
#include "qt_common/config/qt_config.h"
#include "qt_common/qt_common.h"
#include "qt_common/util/game.h"
-#include "yuzu/compatibility_list.h"
#include "yuzu/hotkeys.h"
#include "yuzu/user_data_migration.h"
@@ -352,8 +351,6 @@ private slots:
void OnGameListDumpRomFS(u64 program_id, const std::string& game_path, DumpRomFSTarget target);
void OnGameListVerifyIntegrity(const std::string& game_path);
void OnGameListCopyTID(u64 program_id);
- void OnGameListNavigateToGamedbEntry(u64 program_id,
- const CompatibilityList& compatibility_list);
void OnGameListCreateShortcut(u64 program_id, const std::string& game_path,
const QtCommon::Game::ShortcutTarget target);
void OnGameListOpenDirectory(const QString& directory);