diff options
| author | Zach Hilman <zachhilman@gmail.com> | 2018-09-01 13:11:30 -0400 | 
|---|---|---|
| committer | Zach Hilman <zachhilman@gmail.com> | 2018-09-04 16:24:02 -0400 | 
| commit | c91b60a421a3bd0dc85d80e0a5a2d261370df340 (patch) | |
| tree | cc4867bcef325b7e7b4d268f29705e38fd3ca180 /src/yuzu | |
| parent | cbd517d8cc1ba70d149adb57299a62c7a4e5fd72 (diff) | |
game_list: Fix version display on non-NAND titles
Diffstat (limited to 'src/yuzu')
| -rw-r--r-- | src/yuzu/game_list.cpp | 41 | 
1 files changed, 19 insertions, 22 deletions
diff --git a/src/yuzu/game_list.cpp b/src/yuzu/game_list.cpp index 02d8a3882..38c5071e3 100644 --- a/src/yuzu/game_list.cpp +++ b/src/yuzu/game_list.cpp @@ -457,23 +457,17 @@ static QString FormatGameName(const std::string& physical_name) {  }  static QString FormatPatchNameVersions(const FileSys::PatchManager& patch_manager, -                                       std::string update_version_override = "",                                         bool updatable = true) {      QString out;      for (const auto& kv : patch_manager.GetPatchVersionNames()) {          if (!updatable && kv.first == FileSys::PatchType::Update)              continue; -        if (kv.second == 0) { +        if (kv.second.empty()) {              out.append(fmt::format("{}\n", FileSys::FormatPatchTypeName(kv.first)).c_str());          } else { -            auto version_data = FileSys::FormatTitleVersion(kv.second); -            if (kv.first == FileSys::PatchType::Update && !update_version_override.empty()) -                version_data = update_version_override; - -            out.append( -                fmt::format("{} ({})\n", FileSys::FormatPatchTypeName(kv.first), version_data) -                    .c_str()); +            out.append(fmt::format("{} ({})\n", FileSys::FormatPatchTypeName(kv.first), kv.second) +                           .c_str());          }      } @@ -491,8 +485,7 @@ void GameList::RefreshGameDirectory() {  static void GetMetadataFromControlNCA(const FileSys::PatchManager& patch_manager,                                        const std::shared_ptr<FileSys::NCA>& nca, -                                      std::vector<u8>& icon, std::string& name, -                                      std::string& version) { +                                      std::vector<u8>& icon, std::string& name) {      const auto romfs = patch_manager.PatchRomFS(nca->GetRomFS(), nca->GetBaseIVFCOffset(),                                                  FileSys::ContentRecordType::Control);      if (romfs == nullptr) @@ -507,7 +500,6 @@ static void GetMetadataFromControlNCA(const FileSys::PatchManager& patch_manager          return;      FileSys::NACP nacp(nacp_file);      name = nacp.GetApplicationName(); -    version = nacp.GetVersionString();      FileSys::VirtualFile icon_file = nullptr;      for (const auto& language : FileSys::LANGUAGE_NAMES) { @@ -527,7 +519,8 @@ GameListWorker::GameListWorker(  GameListWorker::~GameListWorker() = default; -void GameListWorker::AddInstalledTitlesToGameList(std::shared_ptr<FileSys::RegisteredCache> cache) { +void GameListWorker::AddInstalledTitlesToGameList() { +    const auto cache = Service::FileSystem::GetUnionContents();      const auto installed_games = cache->ListEntriesFilter(FileSys::TitleType::Application,                                                            FileSys::ContentRecordType::Program); @@ -539,20 +532,28 @@ void GameListWorker::AddInstalledTitlesToGameList(std::shared_ptr<FileSys::Regis          std::vector<u8> icon;          std::string name; -        std::string version = "";          u64 program_id = 0;          loader->ReadProgramId(program_id);          const FileSys::PatchManager patch{program_id};          const auto& control = cache->GetEntry(game.title_id, FileSys::ContentRecordType::Control);          if (control != nullptr) -            GetMetadataFromControlNCA(patch, control, icon, name, version); +            GetMetadataFromControlNCA(patch, control, icon, name); + +        auto it = FindMatchingCompatibilityEntry(compatibility_list, program_id); + +        // The game list uses this as compatibility number for untested games +        QString compatibility("99"); +        if (it != compatibility_list.end()) +            compatibility = it->second.first; +          emit EntryReady({              new GameListItemPath(                  FormatGameName(file->GetFullPath()), icon, QString::fromStdString(name),                  QString::fromStdString(Loader::GetFileTypeString(loader->GetFileType())),                  program_id), -            new GameListItem(FormatPatchNameVersions(patch, version)), +            new GameListItemCompat(compatibility), +            new GameListItem(FormatPatchNameVersions(patch)),              new GameListItem(                  QString::fromStdString(Loader::GetFileTypeString(loader->GetFileType()))),              new GameListItemSize(file->GetSize()), @@ -620,14 +621,12 @@ void GameListWorker::AddFstEntriesToGameList(const std::string& dir_path, unsign              const FileSys::PatchManager patch{program_id}; -            std::string version = ""; -              if (res1 != Loader::ResultStatus::Success && res3 != Loader::ResultStatus::Success &&                  res2 == Loader::ResultStatus::Success) {                  // Use from metadata pool.                  if (nca_control_map.find(program_id) != nca_control_map.end()) {                      const auto nca = nca_control_map[program_id]; -                    GetMetadataFromControlNCA(patch, nca, icon, name, version); +                    GetMetadataFromControlNCA(patch, nca, icon, name);                  }              } @@ -644,9 +643,7 @@ void GameListWorker::AddFstEntriesToGameList(const std::string& dir_path, unsign                      QString::fromStdString(Loader::GetFileTypeString(loader->GetFileType())),                      program_id),                  new GameListItemCompat(compatibility), -                new GameListItem(FormatPatchNameVersions(program_id, loader->IsRomFSUpdatable())), -                new GameListItem( -                    FormatPatchNameVersions(patch, version, loader->IsRomFSUpdatable())), +                new GameListItem(FormatPatchNameVersions(patch, loader->IsRomFSUpdatable())),                  new GameListItem(                      QString::fromStdString(Loader::GetFileTypeString(loader->GetFileType()))),                  new GameListItemSize(FileUtil::GetSize(physical_name)),  | 
