ns: address review comments

This commit is contained in:
Liam 2024-02-18 18:40:37 -05:00
parent 4cdf18095d
commit d45a12826c
3 changed files with 35 additions and 25 deletions

View file

@ -441,12 +441,13 @@ Result IApplicationManagerInterface::GetApplicationRightsOnClient(
flags, application_id, account_id.FormattedString()); flags, application_id, account_id.FormattedString());
if (!out_rights.empty()) { if (!out_rights.empty()) {
out_rights[0] = { ApplicationRightsOnClient rights{};
.application_id = application_id, rights.application_id = application_id;
.uid = account_id, rights.uid = account_id;
.flags = 0, rights.flags = 0;
.flags2 = 0, rights.flags2 = 0;
};
out_rights[0] = rights;
*out_count = 1; *out_count = 1;
} else { } else {
*out_count = 0; *out_count = 0;

View file

@ -13,8 +13,8 @@ enum class ApplicationRecordType : u8 {
Installing = 2, Installing = 2,
Installed = 3, Installed = 3,
GameCardNotInserted = 5, GameCardNotInserted = 5,
Archived = 0xB, Archived = 11,
GameCard = 0x10, GameCard = 16,
}; };
enum class ApplicationControlSource : u8 { enum class ApplicationControlSource : u8 {
@ -37,31 +37,34 @@ struct ApplicationRecord {
u8 unknown2; u8 unknown2;
INSERT_PADDING_BYTES_NOINIT(0x7); INSERT_PADDING_BYTES_NOINIT(0x7);
}; };
static_assert(sizeof(ApplicationRecord) == 0x18, "ApplicationRecord is an invalid size"); static_assert(sizeof(ApplicationRecord) == 0x18, "ApplicationRecord has incorrect size.");
/// ApplicationView /// ApplicationView
struct ApplicationView { struct ApplicationView {
u64 application_id; ///< ApplicationId. u64 application_id; ///< ApplicationId.
u32 unk; ///< Unknown. u32 unk; ///< Unknown.
u32 flags; ///< Flags. u32 flags; ///< Flags.
u8 unk_x10[0x10]; ///< Unknown. std::array<u8, 0x10> unk_x10; ///< Unknown.
u32 unk_x20; ///< Unknown. u32 unk_x20; ///< Unknown.
u16 unk_x24; ///< Unknown. u16 unk_x24; ///< Unknown.
u8 unk_x26[0x2]; ///< Unknown. std::array<u8, 0x2> unk_x26; ///< Unknown.
u8 unk_x28[0x8]; ///< Unknown. std::array<u8, 0x8> unk_x28; ///< Unknown.
u8 unk_x30[0x10]; ///< Unknown. std::array<u8, 0x10> unk_x30; ///< Unknown.
u32 unk_x40; ///< Unknown. u32 unk_x40; ///< Unknown.
u8 unk_x44; ///< Unknown. u8 unk_x44; ///< Unknown.
u8 unk_x45[0xb]; ///< Unknown. std::array<u8, 0xb> unk_x45; ///< Unknown.
}; };
static_assert(sizeof(ApplicationView) == 0x50, "ApplicationView has incorrect size.");
struct ApplicationRightsOnClient { struct ApplicationRightsOnClient {
u64 application_id; u64 application_id;
Common::UUID uid; Common::UUID uid;
u8 flags; u8 flags;
u8 flags2; u8 flags2;
INSERT_PADDING_BYTES(0x6); INSERT_PADDING_BYTES_NOINIT(0x6);
}; };
static_assert(sizeof(ApplicationRightsOnClient) == 0x20,
"ApplicationRightsOnClient has incorrect size.");
/// NsPromotionInfo /// NsPromotionInfo
struct PromotionInfo { struct PromotionInfo {
@ -74,12 +77,15 @@ struct PromotionInfo {
///< remaining_time is set. ///< remaining_time is set.
INSERT_PADDING_BYTES_NOINIT(0x3); INSERT_PADDING_BYTES_NOINIT(0x3);
}; };
static_assert(sizeof(PromotionInfo) == 0x20, "PromotionInfo has incorrect size.");
/// NsApplicationViewWithPromotionInfo /// NsApplicationViewWithPromotionInfo
struct ApplicationViewWithPromotionInfo { struct ApplicationViewWithPromotionInfo {
ApplicationView view; ///< \ref NsApplicationView ApplicationView view; ///< \ref NsApplicationView
PromotionInfo promotion; ///< \ref NsPromotionInfo PromotionInfo promotion; ///< \ref NsPromotionInfo
}; };
static_assert(sizeof(ApplicationViewWithPromotionInfo) == 0x70,
"ApplicationViewWithPromotionInfo has incorrect size.");
struct ApplicationOccupiedSizeEntity { struct ApplicationOccupiedSizeEntity {
FileSys::StorageId storage_id; FileSys::StorageId storage_id;
@ -93,10 +99,13 @@ static_assert(sizeof(ApplicationOccupiedSizeEntity) == 0x20,
struct ApplicationOccupiedSize { struct ApplicationOccupiedSize {
std::array<ApplicationOccupiedSizeEntity, 4> entities; std::array<ApplicationOccupiedSizeEntity, 4> entities;
}; };
static_assert(sizeof(ApplicationOccupiedSize) == 0x80,
"ApplicationOccupiedSize has incorrect size.");
struct ContentPath { struct ContentPath {
u8 file_system_proxy_type; u8 file_system_proxy_type;
u64 program_id; u64 program_id;
}; };
static_assert(sizeof(ContentPath) == 0x10, "ContentPath has incorrect size.");
} // namespace Service::NS } // namespace Service::NS

View file

@ -43,7 +43,7 @@ Result IReadOnlyApplicationControlDataInterface::GetApplicationControlData(
const auto size = out_buffer.size(); const auto size = out_buffer.size();
const auto icon_size = control.second ? control.second->GetSize() : 0; const auto icon_size = control.second ? control.second->GetSize() : 0;
const auto total_size = 0x4000 + icon_size; const auto total_size = sizeof(FileSys::RawNACP) + icon_size;
if (size < total_size) { if (size < total_size) {
LOG_ERROR(Service_NS, "output buffer is too small! (actual={:016X}, expected_min=0x4000)", LOG_ERROR(Service_NS, "output buffer is too small! (actual={:016X}, expected_min=0x4000)",
@ -57,11 +57,11 @@ Result IReadOnlyApplicationControlDataInterface::GetApplicationControlData(
} else { } else {
LOG_WARNING(Service_NS, "missing NACP data for application_id={:016X}, defaulting to zero", LOG_WARNING(Service_NS, "missing NACP data for application_id={:016X}, defaulting to zero",
application_id); application_id);
std::memset(out_buffer.data(), 0, 0x4000); std::memset(out_buffer.data(), 0, sizeof(FileSys::RawNACP));
} }
if (control.second != nullptr) { if (control.second != nullptr) {
control.second->Read(out_buffer.data() + 0x4000, icon_size); control.second->Read(out_buffer.data() + sizeof(FileSys::RawNACP), icon_size);
} else { } else {
LOG_WARNING(Service_NS, "missing icon data for application_id={:016X}", application_id); LOG_WARNING(Service_NS, "missing icon data for application_id={:016X}", application_id);
} }