diff --git a/src/citra_qt/configuration/configure_ui.ui b/src/citra_qt/configuration/configure_ui.ui
index 4af177f3e..82a5a4283 100644
--- a/src/citra_qt/configuration/configure_ui.ui
+++ b/src/citra_qt/configuration/configure_ui.ui
@@ -126,7 +126,12 @@
-
- Title Name
+ Title Name (short)
+
+
+ -
+
+ Title Name (long)
-
@@ -166,7 +171,12 @@
-
- Title Name
+ Title Name (short)
+
+
+ -
+
+ Title Name (long)
-
diff --git a/src/citra_qt/game_list.cpp b/src/citra_qt/game_list.cpp
index 0f0325ca2..e7fbfba9c 100644
--- a/src/citra_qt/game_list.cpp
+++ b/src/citra_qt/game_list.cpp
@@ -215,7 +215,7 @@ void GameList::onTextChanged(const QString& newText) {
child->data(GameListItemPath::FullPathRole).toString().toLower();
QString file_name = file_path.mid(file_path.lastIndexOf("/") + 1);
const QString file_title =
- child->data(GameListItemPath::TitleRole).toString().toLower();
+ child->data(GameListItemPath::LongTitleRole).toString().toLower();
const QString file_programmid =
child->data(GameListItemPath::ProgramIdRole).toString().toLower();
diff --git a/src/citra_qt/game_list_p.h b/src/citra_qt/game_list_p.h
index c03c073b3..3411445e7 100644
--- a/src/citra_qt/game_list_p.h
+++ b/src/citra_qt/game_list_p.h
@@ -70,6 +70,17 @@ static QString GetQStringShortTitleFromSMDH(const Loader::SMDH& smdh,
return QString::fromUtf16(smdh.GetShortTitle(language).data());
}
+/**
+ * Gets the long game title from SMDH data.
+ * @param smdh SMDH data
+ * @param language title language
+ * @return QString long title
+ */
+static QString GetQStringLongTitleFromSMDH(const Loader::SMDH& smdh,
+ Loader::SMDH::TitleLanguage language) {
+ return QString::fromUtf16(smdh.GetLongTitle(language).data());
+}
+
/**
* Gets the game region from SMDH data.
* @param smdh SMDH data
@@ -139,6 +150,7 @@ public:
static const int FullPathRole = SortRole + 1;
static const int ProgramIdRole = SortRole + 2;
static const int ExtdataIdRole = SortRole + 3;
+ static const int LongTitleRole = SortRole + 4;
GameListItemPath() = default;
GameListItemPath(const QString& game_path, const std::vector& smdh_data, u64 program_id,
@@ -173,6 +185,10 @@ public:
// Get title from SMDH
setData(GetQStringShortTitleFromSMDH(smdh, Loader::SMDH::TitleLanguage::English),
TitleRole);
+
+ // Get long title from SMDH
+ setData(GetQStringLongTitleFromSMDH(smdh, Loader::SMDH::TitleLanguage::English),
+ LongTitleRole);
}
int type() const override {
@@ -189,11 +205,12 @@ public:
{UISettings::GameListText::FileName, QString::fromStdString(filename + extension)},
{UISettings::GameListText::FullPath, data(FullPathRole).toString()},
{UISettings::GameListText::TitleName, data(TitleRole).toString()},
+ {UISettings::GameListText::LongTitleName, data(LongTitleRole).toString()},
{UISettings::GameListText::TitleID,
QString::fromStdString(fmt::format("{:016X}", data(ProgramIdRole).toULongLong()))},
};
- const QString& row1 = display_texts.at(UISettings::values.game_list_row_1);
+ const QString& row1 = display_texts.at(UISettings::values.game_list_row_1).simplified();
QString row2;
auto row_2_id = UISettings::values.game_list_row_2;
diff --git a/src/citra_qt/uisettings.h b/src/citra_qt/uisettings.h
index 573b4d975..eaef36f3e 100644
--- a/src/citra_qt/uisettings.h
+++ b/src/citra_qt/uisettings.h
@@ -50,6 +50,7 @@ enum class GameListText {
FileName, ///< Display the file name of the entry
FullPath, ///< Display the full path of the entry
TitleName, ///< Display the name of the title
+ LongTitleName, ///< Display the long name of the title
TitleID, ///< Display the title ID
};
diff --git a/src/core/loader/smdh.cpp b/src/core/loader/smdh.cpp
index 1b9503d1d..4773d08e5 100644
--- a/src/core/loader/smdh.cpp
+++ b/src/core/loader/smdh.cpp
@@ -48,6 +48,10 @@ std::array SMDH::GetShortTitle(Loader::SMDH::TitleLanguage language)
return titles[static_cast(language)].short_title;
}
+std::array SMDH::GetLongTitle(Loader::SMDH::TitleLanguage language) const {
+ return titles[static_cast(language)].long_title;
+}
+
std::vector SMDH::GetRegions() const {
constexpr u32 REGION_COUNT = 7;
std::vector result;
diff --git a/src/core/loader/smdh.h b/src/core/loader/smdh.h
index 2156dec9c..63626f732 100644
--- a/src/core/loader/smdh.h
+++ b/src/core/loader/smdh.h
@@ -86,6 +86,13 @@ struct SMDH {
*/
std::array GetShortTitle(Loader::SMDH::TitleLanguage language) const;
+ /**
+ * Gets the long game title from SMDH
+ * @param language title language
+ * @return UTF-16 array of the long title
+ */
+ std::array GetLongTitle(Loader::SMDH::TitleLanguage language) const;
+
std::vector GetRegions() const;
};
static_assert(sizeof(SMDH) == 0x36C0, "SMDH structure size is wrong");