add code for calculating games size, stubbed for now as the ns calls are too slow to be usable.

This commit is contained in:
ITotalJustice
2025-05-03 15:30:40 +01:00
parent ca47fc1f89
commit 30cf4826f8
2 changed files with 30 additions and 1 deletions

View File

@@ -20,6 +20,7 @@ enum class NacpLoadStatus {
struct Entry {
u64 app_id{};
s64 size{};
char display_version[0x10]{};
NacpLanguageEntry lang{};
int image{};

View File

@@ -18,6 +18,21 @@
namespace sphaira::ui::menu::game {
namespace {
// thank you Shchmue ^^
struct ApplicationOccupiedSizeEntry {
u8 storageId;
u8 padding[0x7];
u64 sizeApplication;
u64 sizePatch;
u64 sizeAddOnContent;
};
struct ApplicationOccupiedSize {
ApplicationOccupiedSizeEntry entry[4];
};
static_assert(sizeof(ApplicationOccupiedSize) == sizeof(NsApplicationOccupiedSize));
using MetaEntries = std::vector<NsApplicationContentMetaStatus>;
Result Notify(Result rc, const std::string& error_message) {
@@ -357,7 +372,20 @@ void Menu::ScanHomebrew() {
continue;
}
m_entries.emplace_back(e.application_id);
s64 size{};
// code for sorting by size, it's too slow however...
#if 0
ApplicationOccupiedSize occupied_size;
if (R_SUCCEEDED(nsCalculateApplicationOccupiedSize(e.application_id, (NsApplicationOccupiedSize*)&occupied_size))) {
for (auto& s : occupied_size.entry) {
size += s.sizeApplication;
size += s.sizePatch;
size += s.sizeAddOnContent;
}
}
#endif
m_entries.emplace_back(e.application_id, size);
}
offset += record_count;