diff options
| author | lizzie <lizzie@eden-emu.dev> | 2026-07-12 09:32:11 +0200 |
|---|---|---|
| committer | crueter <crueter@eden-emu.dev> | 2026-07-12 09:32:11 +0200 |
| commit | 7f85c6e2823d34bfa32cae6d52a44846f8553731 (patch) | |
| tree | c0dd8f054bae5ae3b0cc34e00b07bacd03bf42e8 /src | |
| parent | 39b2c79985b476c4b29b02a7b232bc3887d251ad (diff) | |
[qt] nuke game compat list (again) (#4201)
we have no use for it
it's dead code
most of the time users just complain about how the list isn't updated
ok so what if we update it? great now its more noise added to the git, awesome
even if we constantly update it, we introduce new breakage that makes keeping
track of things extremely difficult
either we integrate with emuready (would violate self containment principles)
or we integrate with emuready in a similar fashion to eden news outlet
(where we cache the list with some TTL of like 60 mins or whatever)
that would be better respecting of "self containment" but would probably
require having a quick way to update the list additively, probably filtered to the user's
device instead of a global thing, and i dont think emuready has that granularity
nor we have the "connect this to that" for the api stuffs
another (which is what i propose here) is throw everything out of the window
until someone can come up with something better
Signed-off-by: lizzie <lizzie@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4201
Reviewed-by: Maufeat <sahyno1996@gmail.com>
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/qt_common/game_list/model.cpp | 50 | ||||
| -rw-r--r-- | src/qt_common/game_list/model.h | 6 | ||||
| -rw-r--r-- | src/qt_common/game_list/worker.cpp | 15 | ||||
| -rw-r--r-- | src/qt_common/game_list/worker.h | 3 | ||||
| -rw-r--r-- | src/yuzu/CMakeLists.txt | 13 | ||||
| -rw-r--r-- | src/yuzu/compatdb.cpp | 206 | ||||
| -rw-r--r-- | src/yuzu/compatdb.h | 40 | ||||
| -rw-r--r-- | src/yuzu/compatdb.ui | 398 | ||||
| -rw-r--r-- | src/yuzu/compatibility_list.cpp | 17 | ||||
| -rw-r--r-- | src/yuzu/compatibility_list.h | 19 | ||||
| -rw-r--r-- | src/yuzu/game/game_list.cpp | 12 | ||||
| -rw-r--r-- | src/yuzu/game/game_list.h | 4 | ||||
| -rw-r--r-- | src/yuzu/main.ui | 11 | ||||
| -rw-r--r-- | src/yuzu/main_window.cpp | 23 | ||||
| -rw-r--r-- | src/yuzu/main_window.h | 3 |
15 files changed, 4 insertions, 816 deletions
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><html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html></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><html><head/><body><p>Does the game boot?</p></body></html></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 "Launching..." 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><html><head/><body><p>Does the game reach gameplay?</p></body></html></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><html><head/><body><p>Does the game work without crashing, freezing or locking up during gameplay?</p></body></html></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><html><head/><body><p>Is the game completely playable from start to finish?</p></body></html></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><html><head/><body><p>Does the game have any graphical glitches?</p></body></html></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><html><head/><body><p>Does the game have any audio glitches / missing effects?</p></body></html></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 &Amiibo...</string> </property> </action> - <action name="action_Report_Compatibility"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>&Report Compatibility</string> - </property> - <property name="visible"> - <bool>false</bool> - </property> - </action> <action name="action_Open_Mods_Page"> <property name="text"> <string>Open &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); |
