|
|
|
@ -12,73 +12,79 @@ class ServiceManager; |
|
|
|
|
|
|
|
namespace Service::Capture { |
|
|
|
|
|
|
|
enum AlbumImageOrientation { |
|
|
|
enum class AlbumImageOrientation { |
|
|
|
Orientation0 = 0, |
|
|
|
Orientation1 = 1, |
|
|
|
Orientation2 = 2, |
|
|
|
Orientation3 = 3, |
|
|
|
}; |
|
|
|
|
|
|
|
enum AlbumReportOption { |
|
|
|
enum class AlbumReportOption { |
|
|
|
Disable = 0, |
|
|
|
Enable = 1, |
|
|
|
}; |
|
|
|
|
|
|
|
enum ContentType : u8 { |
|
|
|
enum class ContentType : u8 { |
|
|
|
Screenshot = 0, |
|
|
|
Movie = 1, |
|
|
|
ExtraMovie = 3, |
|
|
|
}; |
|
|
|
|
|
|
|
enum AlbumStorage : u8 { |
|
|
|
enum class AlbumStorage : u8 { |
|
|
|
NAND = 0, |
|
|
|
SD = 1, |
|
|
|
}; |
|
|
|
|
|
|
|
struct AlbumFileDateTime { |
|
|
|
u16 year; |
|
|
|
u8 month; |
|
|
|
u8 day; |
|
|
|
u8 hour; |
|
|
|
u8 minute; |
|
|
|
u8 second; |
|
|
|
u8 uid; |
|
|
|
s16 year{}; |
|
|
|
s8 month{}; |
|
|
|
s8 day{}; |
|
|
|
s8 hour{}; |
|
|
|
s8 minute{}; |
|
|
|
s8 second{}; |
|
|
|
s8 uid{}; |
|
|
|
}; |
|
|
|
static_assert(sizeof(AlbumFileDateTime) == 0x8, "AlbumFileDateTime has incorrect size."); |
|
|
|
|
|
|
|
struct AlbumEntry { |
|
|
|
u64 size; |
|
|
|
u64 application_id; |
|
|
|
AlbumFileDateTime datetime; |
|
|
|
AlbumStorage storage; |
|
|
|
ContentType content; |
|
|
|
u8 padding[6]; |
|
|
|
u64 size{}; |
|
|
|
u64 application_id{}; |
|
|
|
AlbumFileDateTime datetime{}; |
|
|
|
AlbumStorage storage{}; |
|
|
|
ContentType content{}; |
|
|
|
INSERT_PADDING_BYTES(6); |
|
|
|
}; |
|
|
|
static_assert(sizeof(AlbumEntry) == 0x20, "AlbumEntry has incorrect size."); |
|
|
|
|
|
|
|
struct AlbumFileEntry { |
|
|
|
u64 size; |
|
|
|
u64 hash; |
|
|
|
AlbumFileDateTime datetime; |
|
|
|
AlbumStorage storage; |
|
|
|
ContentType content; |
|
|
|
u8 padding[5]; |
|
|
|
u8 unknown; |
|
|
|
u64 size{}; // Size of the entry |
|
|
|
u64 hash{}; // AES256 with hardcoded key over AlbumEntry |
|
|
|
AlbumFileDateTime datetime{}; |
|
|
|
AlbumStorage storage{}; |
|
|
|
ContentType content{}; |
|
|
|
INSERT_PADDING_BYTES(5); |
|
|
|
u8 unknown{1}; // Set to 1 on official SW |
|
|
|
}; |
|
|
|
static_assert(sizeof(AlbumFileEntry) == 0x20, "AlbumFileEntry has incorrect size."); |
|
|
|
|
|
|
|
struct ApplicationAlbumEntry { |
|
|
|
u64 size; |
|
|
|
u64 hash; |
|
|
|
AlbumFileDateTime datetime; |
|
|
|
AlbumStorage storage; |
|
|
|
ContentType content; |
|
|
|
u8 padding[5]; |
|
|
|
u8 unknown; |
|
|
|
u64 size{}; // Size of the entry |
|
|
|
u64 hash{}; // AES256 with hardcoded key over AlbumEntry |
|
|
|
AlbumFileDateTime datetime{}; |
|
|
|
AlbumStorage storage{}; |
|
|
|
ContentType content{}; |
|
|
|
INSERT_PADDING_BYTES(5); |
|
|
|
u8 unknown{1}; // Set to 1 on official SW |
|
|
|
}; |
|
|
|
static_assert(sizeof(ApplicationAlbumEntry) == 0x20, "ApplicationAlbumEntry has incorrect size."); |
|
|
|
|
|
|
|
struct ApplicationAlbumFileEntry { |
|
|
|
ApplicationAlbumEntry entry; |
|
|
|
AlbumFileDateTime datetime; |
|
|
|
u64 unknown; |
|
|
|
ApplicationAlbumEntry entry{}; |
|
|
|
AlbumFileDateTime datetime{}; |
|
|
|
u64 unknown{}; |
|
|
|
}; |
|
|
|
static_assert(sizeof(ApplicationAlbumFileEntry) == 0x30, |
|
|
|
"ApplicationAlbumFileEntry has incorrect size."); |
|
|
|
|
|
|
|
/// Registers all Capture services with the specified service manager. |
|
|
|
void InstallInterfaces(SM::ServiceManager& sm); |
|
|
|
|