Capture services: Difference between revisions
No edit summary |
No edit summary |
||
(7 intermediate revisions by 3 users not shown) | |||
Line 45: | Line 45: | ||
|- | |- | ||
| 19 || [11.0.0+] [[#GetAlbumFileName]] | | 19 || [11.0.0+] [[#GetAlbumFileName]] | ||
|- | |||
| 20 || [20.0.0+] | |||
|- | |- | ||
| 100 || [5.0.0+] GetAlbumFileCountEx0 | | 100 || [5.0.0+] GetAlbumFileCountEx0 | ||
Line 50: | Line 52: | ||
| 101 || [5.0.0+] GetAlbumFileListEx0 | | 101 || [5.0.0+] GetAlbumFileListEx0 | ||
|- | |- | ||
| 110 || [15.0.0+] | | 110 || [15.0.0+] GetAlbumFileListEx1 | ||
|- | |- | ||
| 120 || [17.0.0+] | | 120 || [17.0.0+] GetAlbumFileListEx2 | ||
|- | |- | ||
| | | 121 || [20.0.0+] | ||
|- | |- | ||
| 140 || [17.0.0+] | | 122 || [20.0.0+] | ||
|- | |||
| 123 || [20.0.0+] | |||
|- | |||
| 130 || [17.0.0+] LoadAlbumFileRawData | |||
|- | |||
| 140 || [17.0.0+] GetAlbumFileCreatedEvent | |||
|- | |- | ||
| 141 || [18.0.0+] | | 141 || [18.0.0+] | ||
|- | |- | ||
| 150 || [17.0.0+] | | 150 || [17.0.0+] LoadAlbumSystemReservedInfo | ||
|- | |- | ||
| 151 || [18.0.0+] | | 151 || [18.0.0+] | ||
|- | |- | ||
| 160 || [18.0.0+] | | 160 || [18.0.0+] | ||
|- | |||
| 170 || [20.0.0+] | |||
|- | |||
| 171 || [20.0.0+] | |||
|- | |||
| 172 || [20.0.0+] | |||
|- | |- | ||
| 202 || [1.0.0-2.3.0] SaveEditedScreenShot | | 202 || [1.0.0-2.3.0] SaveEditedScreenShot | ||
Line 75: | Line 89: | ||
|- | |- | ||
| 501 || GetRequiredStorageSpaceSizeToCopyAll | | 501 || GetRequiredStorageSpaceSizeToCopyAll | ||
|- | |||
| 502 || [20.0.0+] | |||
|- | |||
| 600 || [20.0.0+] | |||
|- | |- | ||
| 1001 || [3.0.0+] LoadAlbumScreenShotThumbnailImageEx0 | | 1001 || [3.0.0+] LoadAlbumScreenShotThumbnailImageEx0 | ||
Line 95: | Line 113: | ||
|- | |- | ||
| 8022 || [19.0.0+] | | 8022 || [19.0.0+] | ||
|- | |||
| 8031 || [20.0.0+] | |||
|- | |||
| 8032 || [20.0.0+] | |||
|- | |- | ||
| 10011 || SetInternalErrorConversionEnabled | | 10011 || SetInternalErrorConversionEnabled | ||
Line 102: | Line 124: | ||
| 50001 || [19.0.0+] | | 50001 || [19.0.0+] | ||
|- | |- | ||
| 50011 || [19.0.0+] | | 50011 || [19.0.0+] GetAlbumAccessResultForDebug | ||
|- | |||
| 50012 || [19.0.0+] [[#SetAlbumAccessResultForDebug]] | |||
|- | |||
| 50021 || [20.0.0+] | |||
|- | |||
| 50022 || [20.0.0+] | |||
|- | |||
| 50023 || [20.0.0+] | |||
|- | |||
| 50024 || [20.0.0+] | |||
|- | |- | ||
| | | 50031 || [20.0.0+] | ||
|- | |||
| 50032 || [20.0.0+] | |||
|- | |- | ||
| 60002 || [4.0.0+] [[#OpenAccessorSession]] | | 60002 || [4.0.0+] [[#OpenAccessorSession]] | ||
Line 117: | Line 151: | ||
== LoadAlbumScreenShotImageEx1 == | == LoadAlbumScreenShotImageEx1 == | ||
Takes a total of 0x38-bytes of input, two type-0x5 input buffers, and returns 0x20-bytes of output. [4.0.0+] No longer returns output, and now takes the following buffers instead: type-0x16, type-0x46, and type-0x6. | Takes a total of 0x38-bytes of input, two type-0x5 input buffers, and returns 0x20-bytes of output. [4.0.0+] No longer returns output, and now takes the following buffers instead: type-0x16, type-0x46, and type-0x6. | ||
== SetAlbumAccessResultForDebug == | |||
Allows setting a result code that will make following access functions fail with: | |||
GetAlbumFileCount, GetAlbumFileCountEx0, GetAlbumFileList, GetAlbumFileListEx0, GetAlbumFileListEx1, GetAlbumFileListEx2, LoadAlbumFile, DeleteAlbumFile, StorageCopyAlbumFile, LoadAlbumFileThumbnail, LoadAlbumScreenShotImage, LoadAlbumScreenShotImageEx, LoadAlbumScreenShotImageEx0, LoadAlbumScreenShotImageEx1, LoadAlbumScreenShotThumbnailImage, LoadAlbumScreenShotThumbnailImageEx, LoadAlbumScreenShotThumbnailImageEx0, LoadAlbumScreenShotThumbnailImageEx1, OpenAlbumMovieReadStream | |||
The raw code can be read by caps:c 2501 and caps:a 50011, which themselves return the result code 0. | |||
== OpenAccessorSession == | == OpenAccessorSession == | ||
Line 158: | Line 197: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name || | ! Cmd || Name | ||
|- | |||
| 1 || [1.0.0] CaptureRawImage | |||
|- | |||
| 2 || [1.0.0] CaptureRawImageWithTimeout | |||
|- | |- | ||
| [ | | 33 || [7.0.0+] [[#SetApplicationShimLibraryVersion]] | ||
|- | |- | ||
| [1.0.0] | | 1001 || [1.0.0] RequestTakingScreenShot | ||
|- | |- | ||
| | | 1002 || [1.0.0] RequestTakingScreenShotWithTimeout | ||
|- | |- | ||
| [1.0.0] | | 1011 || [1.0.0] NotifyTakingScreenShotRefused | ||
|- | |- | ||
| | | 2001 || NotifyAlbumStorageIsAvailable | ||
|- | |- | ||
| | | 2002 || NotifyAlbumStorageIsUnavailable | ||
|- | |- | ||
| | | 2011 || [2.0.0+] [[#RegisterAppletResourceUserId]] | ||
|- | |- | ||
| | | 2012 || [2.0.0+] [[#UnregisterAppletResourceUserId]] | ||
|- | |- | ||
| | | 2013 || [2.0.0+] [[#GetApplicationIdFromAruid]] | ||
|- | |- | ||
| | | 2014 || [2.0.0+] CheckApplicationIdRegistered | ||
|- | |- | ||
| | | 2015 || [20.0.0+] | ||
|- | |- | ||
| | | 2016 || [20.0.0+] | ||
|- | |- | ||
| 2101 || [2.0.0+] GenerateCurrentAlbumFileId | | 2101 || [2.0.0+] [[#GenerateCurrentAlbumFileId]] | ||
|- | |- | ||
| 2102 || [2.0.0+] GenerateApplicationAlbumEnrty | | 2102 || [2.0.0+] GenerateApplicationAlbumEnrty | ||
|- | |- | ||
| 2103 || [19.0.0+] | | 2103 || [19.0.0+] | ||
|- | |- | ||
| 2104 || [19.0.0+] | | 2104 || [19.0.0+] | ||
|- | |- | ||
| 2201 || [2.0.0-3.0.2] SaveAlbumScreenShotFile | | 2201 || [2.0.0-3.0.2] SaveAlbumScreenShotFile | ||
|- | |- | ||
| 2202 || [4.0.0+] SaveAlbumScreenShotFileEx | | | 2202 || [4.0.0+] [[#SaveAlbumScreenShotFileEx|SaveAlbumScreenShotFileEx]] | ||
|- | |- | ||
| 2301 || [2.0.0+] SetOverlayScreenShotThumbnailData | | 2301 || [2.0.0+] SetOverlayScreenShotThumbnailData | ||
|- | |- | ||
| 2302 || [4.0.0+] SetOverlayMovieThumbnailData | | 2302 || [4.0.0+] SetOverlayMovieThumbnailData | ||
|- | |- | ||
| 2401 || [19.0.0+] | | 2401 || [19.0.0+] | ||
|- | |- | ||
| 2501 || [19.0.0+] | | 2501 || [19.0.0+] GetAlbumAccessResultForDebug | ||
|- | |- | ||
| 60001 || [4.0.0+] | | 60001 || [4.0.0+] [[#OpenControlSession]] | ||
|} | |} | ||
=== | === SetApplicationShimLibraryVersion === | ||
Takes an input u64 [[#ShimLibraryVersion]], an u64 [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], and a PID, no output. | Takes an input u64 [[#ShimLibraryVersion]], an u64 [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], and a PID, no output. | ||
This is used by [[Applet_Manager_services|caps:su]] SetShimLibraryVersion. | This is used by [[Applet_Manager_services|caps:su]] SetShimLibraryVersion. | ||
=== RegisterAppletResourceUserId === | |||
Takes an input u64 and an u64. No output. | |||
[19.0.0+] The second u64 is now a 0x10-byte struct. | |||
=== UnregisterAppletResourceUserId === | |||
Takes an input u64 and an u64. No output. | |||
[19.0.0+] The second u64 is now a 0x10-byte struct. | |||
The struct is ignored. | |||
=== GetApplicationIdFromAruid === | |||
Takes a total of 8-bytes of input. Returns an u64. | |||
[19.0.0+] The output u64 is now a 0x10-byte struct. | |||
=== GenerateCurrentAlbumFileId === | |||
Takes an input u8 and an u64, returns a 0x18-byte struct. | |||
[19.0.0+] The input u64 is now a 0x10-byte struct. | |||
=== SaveAlbumScreenShotFileEx === | |||
[20.0.0+] Now takes a total of 0x70-bytes of input instead of 0x30-bytes. | |||
=== OpenControlSession === | |||
Takes a total of 8-bytes of input and a PID, returns an [[#IAlbumControlSession]]. | |||
== IAlbumControlSession == | == IAlbumControlSession == | ||
Line 272: | Line 343: | ||
|- | |- | ||
| 2434 || SetAlbumMovieWriteStreamDataSize | | 2434 || SetAlbumMovieWriteStreamDataSize | ||
|- | |||
| 2436 || [20.0.0+] | |||
|- | |- | ||
| 5000 || [18.0.0+] | | 5000 || [18.0.0+] | ||
Line 307: | Line 380: | ||
| 141 || [6.0.0+] [[#GetAlbumFileList2AafeUidAruidDeprecated]] | | 141 || [6.0.0+] [[#GetAlbumFileList2AafeUidAruidDeprecated]] | ||
|- | |- | ||
| 142 || [7.0.0 | | 142 || [17.0.0+] GetAlbumFileList3AaeAruidDeprecated ([7.0.0-16.1.0] [[#GetAlbumFileList3AaeAruid]]) | ||
|- | |- | ||
| 143 || [7.0.0 | | 143 || [17.0.0+] GetAlbumFileList4AaeUidAruidDeprecated ([7.0.0-16.1.0] [[#GetAlbumFileList4AaeUidAruid]]) | ||
|- | |- | ||
| 144 || [11.0.0 | | 144 || [17.0.0+] GetAllAlbumFileList3AaeAruidDeprecated ([11.0.0-16.1.0] GetAllAlbumFileList3AaeAruid) | ||
|- | |- | ||
| 145 || [17.0.0+] | | 145 || [17.0.0+] GetAlbumFileList5AaeAruid | ||
|- | |- | ||
| 146 || [17.0.0+] | | 146 || [17.0.0+] GetAlbumFileList6AaeUidAruid | ||
|- | |- | ||
| 147 || [17.0.0+] | | 147 || [17.0.0+] GetAllAlbumFileList5AaeAruid | ||
|- | |- | ||
| 148 || [18.0.0+] | | 148 || [18.0.0+] | ||
Line 328: | Line 401: | ||
== GetAlbumFileList0AafeAruidDeprecated == | == GetAlbumFileList0AafeAruidDeprecated == | ||
Takes a type-0x6 output buffer containing an array of [[#ApplicationAlbumFileEntry]], a PID, an u8 [[# | Takes a type-0x6 output buffer containing an array of [[#ApplicationAlbumFileEntry]], a PID, an u8 [[#AlbumFileContents]], two s64s, and an u64 [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]]. Returns an output u64 for total output entries (which is copied to a s32 by official sw). | ||
The two s64s are the start/end PosixTime. | The two s64s are the start/end PosixTime. | ||
== DeleteAlbumFileByAruid == | == DeleteAlbumFileByAruid == | ||
Takes a PID, an input u8 [[# | Takes a PID, an input u8 [[#AlbumFileContents]], an [[#ApplicationAlbumFileEntry]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], and no output. | ||
The [[# | The [[#AlbumFileContents]] must match 3. | ||
== GetAlbumFileSizeByAruid == | == GetAlbumFileSizeByAruid == | ||
Line 358: | Line 431: | ||
== PrecheckToCreateContentsByAruid == | == PrecheckToCreateContentsByAruid == | ||
Takes a PID, an input u8 [[# | Takes a PID, an input u8 [[#AlbumFileContents]], an u64, an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], and no output. | ||
== GetAlbumFileList1AafeAruidDeprecated == | == GetAlbumFileList1AafeAruidDeprecated == | ||
Takes a type-0x6 output buffer containing an array of [[#ApplicationAlbumFileEntry]], a PID, an u8 [[# | Takes a type-0x6 output buffer containing an array of [[#ApplicationAlbumFileEntry]], a PID, an u8 [[#AlbumFileContents]], two [[#AlbumFileDateTime]], and an u64 [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]]. Returns an output u64 for total output entries (which is copied to a s32 by official sw). | ||
The first [[#AlbumFileDateTime]] is the start_DateTime, the second [[#AlbumFileDateTime]] is the end_DateTime. In the IPC rawdata, these use 2-byte alignment. | The first [[#AlbumFileDateTime]] is the start_DateTime, the second [[#AlbumFileDateTime]] is the end_DateTime. In the IPC rawdata, these use 2-byte alignment. | ||
== GetAlbumFileList2AafeUidAruidDeprecated == | == GetAlbumFileList2AafeUidAruidDeprecated == | ||
Takes a type-0x6 output buffer containing an array of [[#ApplicationAlbumFileEntry]], a PID, an u8 [[# | Takes a type-0x6 output buffer containing an array of [[#ApplicationAlbumFileEntry]], a PID, an u8 [[#AlbumFileContents]], two [[#AlbumFileDateTime]], an u128 userID, and an u64 [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]]. Returns an output u64 for total output entries (which is copied to a s32 by official sw). | ||
The first [[#AlbumFileDateTime]] is the start_DateTime, the second [[#AlbumFileDateTime]] is the end_DateTime. In the IPC rawdata, these use 2-byte alignment. | The first [[#AlbumFileDateTime]] is the start_DateTime, the second [[#AlbumFileDateTime]] is the end_DateTime. In the IPC rawdata, these use 2-byte alignment. | ||
== GetAlbumFileList3AaeAruid == | == GetAlbumFileList3AaeAruid == | ||
Takes a type-0x6 output buffer containing an array of [[#ApplicationAlbumEntry]], a PID, an u8 [[# | Takes a type-0x6 output buffer containing an array of [[#ApplicationAlbumEntry]], a PID, an u8 [[#AlbumFileContents]], two [[#AlbumFileDateTime]], and an u64 [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]]. Returns an output u64 for total output entries (which is copied to a s32 by official sw). | ||
The first [[#AlbumFileDateTime]] is the start_DateTime, the second [[#AlbumFileDateTime]] is the end_DateTime. In the IPC rawdata, these use 2-byte alignment. | The first [[#AlbumFileDateTime]] is the start_DateTime, the second [[#AlbumFileDateTime]] is the end_DateTime. In the IPC rawdata, these use 2-byte alignment. | ||
== GetAlbumFileList4AaeUidAruid == | == GetAlbumFileList4AaeUidAruid == | ||
Takes a type-0x6 output buffer containing an array of [[#ApplicationAlbumEntry]], a PID, an u8 [[# | Takes a type-0x6 output buffer containing an array of [[#ApplicationAlbumEntry]], a PID, an u8 [[#AlbumFileContents]], two [[#AlbumFileDateTime]], an u128 userID, and an u64 [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]]. Returns an output u64 for total output entries (which is copied to a s32 by official sw). | ||
The first [[#AlbumFileDateTime]] is the start_DateTime, the second [[#AlbumFileDateTime]] is the end_DateTime. In the IPC rawdata, these use 2-byte alignment. | The first [[#AlbumFileDateTime]] is the start_DateTime, the second [[#AlbumFileDateTime]] is the end_DateTime. In the IPC rawdata, these use 2-byte alignment. | ||
Line 435: | Line 508: | ||
Controls which struct version to use for [[#ApplicationAlbumEntry]] / [[#AlbumFileEntry]]. However, the struct size for the newer version is used regardless on [7.0.0+] for the actual cmds. | Controls which struct version to use for [[#ApplicationAlbumEntry]] / [[#AlbumFileEntry]]. However, the struct size for the newer version is used regardless on [7.0.0+] for the actual cmds. | ||
= | = AlbumImageOrientation = | ||
This is "nn::album::ImageOrientation". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 443: | Line 516: | ||
! Description | ! Description | ||
|- | |- | ||
| 0 || | | 0 || | ||
|- | |- | ||
| 1 || | | 1 || | ||
|- | |- | ||
| 2 || | | 2 || | ||
|- | |- | ||
| 3 || | | 3 || | ||
|} | |} | ||
This is "nn::album:: | = AlbumReportOption = | ||
This is "nn::album::AlbumReportOption". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 465: | Line 538: | ||
|} | |} | ||
This is "nn:: | = AlbumFileContents = | ||
This is "nn::capsrv::AlbumFileContents". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 473: | Line 546: | ||
! Description | ! Description | ||
|- | |- | ||
| 0 || Screenshot | | 0 || Screenshot (album screenshots) | ||
|- | |- | ||
| 1 || Movie | | 1 || Movie (album videos) | ||
|- | |- | ||
| 3 || ExtraMovie | | 3 || ExtraMovie (videos recorded by the current Application title via [[GRC_services#IMovieMaker|GRC MovieMaker]]) | ||
|} | |} | ||
== | = AlbumStorage = | ||
This is "nn::capsrv::AlbumStorage". | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 486: | Line 561: | ||
! Description | ! Description | ||
|- | |- | ||
| 0 || Nand | | 0 || Nand (ImageDirectory on the USER partition) | ||
|- | |- | ||
| 1 || Sd | | 1 || Sd (ImageDirectory on the Sd card) | ||
|} | |} | ||
= AlbumFileDateTime = | = AlbumFileDateTime = | ||
This is "nn::capsrv::AlbumFileDateTime". This is a 0x8-byte struct. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 508: | Line 585: | ||
| 0x6 || 0x1 || Second | | 0x6 || 0x1 || Second | ||
|- | |- | ||
| 0x7 || 0x1 || | | 0x7 || 0x1 || Id (unique ID for when there's multiple Album files with the same timestamp) | ||
|} | |} | ||
This corresponds to each field in the Album entry filename, prior to the "-": <code>YYYYMMDDHHMMSSII</code>. | This corresponds to each field in the Album entry filename, prior to the "-": <code>YYYYMMDDHHMMSSII</code>. | ||
= AlbumEntry = | = AlbumEntry = | ||
This is "nn::capsrv::AlbumEntry". This is a 0x20-byte struct. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset || Size || Description | |||
|- | |||
| 0x0 || 0x8 || Size | |||
|- | |||
| 0x8 || 0x18 || [[#AlbumFileId|FileId]] | |||
|} | |||
= AlbumFileId = | |||
This is "nn::capsrv::AlbumFileId". This is a 0x18-byte struct. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Offset || Size || Description | ! Offset || Size || Description | ||
|- | |- | ||
| 0x0 || 0x8 || | | 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]] | ||
|- | |- | ||
| 0x8 || 0x8 || | | 0x8 || 0x8 || [[#AlbumFileDateTime|Time]] | ||
|- | |- | ||
| 0x10 || | | 0x10 || 0x1 || [[#AlbumStorage|Storage]] | ||
|- | |- | ||
| | | 0x11 || 0x1 || [[#AlbumFileContents|Contents]] | ||
|- | |- | ||
| | | 0x12 || 0x1 || [19.0.0+] | ||
|- | |- | ||
| | | 0x13 || 0x1 || [19.0.0+] | ||
|- | |||
| 0x14 || 0x4 || Reserved | |||
|} | |} | ||
[19.0.0+] [[#GenerateCurrentAlbumFileId|GenerateCurrentAlbumFileId]] copies the two u8s from instruct+0x8 to AlbumFileId+0x12. | |||
= AlbumFileEntry = | = AlbumFileEntry = | ||
Line 539: | Line 630: | ||
= ApplicationAlbumEntry = | = ApplicationAlbumEntry = | ||
This is "nn::capsrv::ApplicationAlbumEntry". This is a 0x20-byte struct. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Offset || Size || Description | ! Offset || Size || Description | ||
|- | |- | ||
| 0x0 || 0x8 || Size | | 0x0 || 0x8 || Size | ||
|- | |- | ||
| 0x8 || 0x8 || AES256 with hardcoded key over AlbumEntry | | 0x8 || 0x8 || AES256 with hardcoded key over AlbumEntry | ||
|- | |- | ||
| 0x10 || 0x8 || [[#AlbumFileDateTime]] | | 0x10 || 0x8 || [[#AlbumFileDateTime|Time]] | ||
|- | |- | ||
| 0x18 || 0x1 || [[#AlbumStorage]] | | 0x18 || 0x1 || [[#AlbumStorage|Storage]] | ||
|- | |- | ||
| 0x19 || 0x1 || [[# | | 0x19 || 0x1 || [[#AlbumFileContents|Contents]] | ||
|- | |- | ||
| | | 0x1A || 0x5 || Reserved | ||
|- | |- | ||
| | | 0x1F || 0x1 || Unknown (set to 1 by official software) | ||
|} | |} | ||
On older versions where [[#ShimLibraryVersion]] is 0, this was a plain AES256 with a random key generated at application launch. | |||
With the output from [[Applet_Manager_services#caps:su|caps:su]] sdk-nso only uses this for the [[Internet_Browser|Share-applet]] (when the output is used at all), with everything else it's used as an [[#AlbumFileEntry]]. In those cases with the <code>nn::album</code> wrapper funcs, it's "converted" by just copying the struct (arrays are "converted" by just returning a ptr to the input array). | With the output from [[Applet_Manager_services#caps:su|caps:su]] sdk-nso only uses this for the [[Internet_Browser|Share-applet]] (when the output is used at all), with everything else it's used as an [[#AlbumFileEntry]]. In those cases with the <code>nn::album</code> wrapper funcs, it's "converted" by just copying the struct (arrays are "converted" by just returning a ptr to the input array). | ||
= ApplicationAlbumFileEntry = | = ApplicationAlbumFileEntry = | ||
This is "nn::capsrv::ApplicationAlbumFileEntry". This is a 0x30-byte struct. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 571: | Line 666: | ||
| 0x20 || 0x8 || [[#AlbumFileDateTime]] | | 0x20 || 0x8 || [[#AlbumFileDateTime]] | ||
|- | |- | ||
| 0x28 || 0x8 || Unknown | | 0x28 || 0x8 || Unknown | ||
|} | |} | ||
On newer versions where official sw uses [[#ApplicationAlbumEntry]], [[#ApplicationAlbumEntry]] is converted to ApplicationAlbumFileEntry when using cmds which need it with: | On newer versions where official sw uses [[#ApplicationAlbumEntry]], [[#ApplicationAlbumEntry]] is converted to ApplicationAlbumFileEntry when using cmds which need it with: | ||
Line 582: | Line 675: | ||
= ScreenShotAttribute = | = ScreenShotAttribute = | ||
This is "nn::capsrv::detail::ScreenShotAttributeEx0" / "nn::capsrv::ScreenShotAttribute". This is a 0x40-byte struct. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 597: | Line 692: | ||
|} | |} | ||
This is "nn::capsrv:: | = ApplicationData = | ||
This is "nn::capsrv::ApplicationData". This is a 0x404-byte struct. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 609: | Line 704: | ||
|} | |} | ||
This is "nn::capsrv:: | = UserIdList = | ||
This is "nn::capsrv::UserIdList". This is a 0x88-byte struct. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 623: | Line 718: | ||
|} | |} | ||
This is "nn::capsrv:: | = LoadAlbumScreenShotImageOutputForApplication = | ||
This is "nn::capsrv::sf::LoadAlbumScreenShotImageOutputForApplication". This is a 0x500-byte struct. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 640: | Line 735: | ||
| 0x454 || 0xAC || Unused | | 0x454 || 0xAC || Unused | ||
|} | |} | ||
= ScreenShotDecodeOption = | = ScreenShotDecodeOption = | ||
Line 649: | Line 742: | ||
= ScreenShotAttributeForApplication = | = ScreenShotAttributeForApplication = | ||
This is "nn::capsrv::ScreenShotAttributeForApplication". This is a 0x40-byte struct. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Offset || Size || Description | ! Offset || Size || Description | ||
|- | |- | ||
| 0x0 || 0x4 || | | 0x0 || 0x4 || | ||
|- | |- | ||
| 0x4 || 0x1 || | | 0x4 || 0x1 || | ||
|- | |- | ||
| 0x5 || 0x1 || | | 0x5 || 0x1 || | ||
|- | |- | ||
| 0x6 || 0x1 || | | 0x6 || 0x1 || | ||
|- | |- | ||
| 0x7 || 0x1 || | | 0x7 || 0x1 || | ||
|- | |- | ||
| 0x8 || 0x4 || | | 0x8 || 0x4 || | ||
|- | |- | ||
| 0xC || 0x4 || | | 0xC || 0x4 || | ||
|- | |- | ||
| 0x10 || 0x4 || | | 0x10 || 0x4 || | ||
|- | |- | ||
| 0x14 || 0x4 || | | 0x14 || 0x4 || | ||
|- | |- | ||
| 0x18 || 0x4 || | | 0x18 || 0x4 || | ||
|- | |- | ||
| 0x1C || 0x4 || | | 0x1C || 0x4 || | ||
|- | |- | ||
| 0x20 || 0x2 || | | 0x20 || 0x2 || | ||
|- | |- | ||
| 0x22 || 0x2 || | | 0x22 || 0x2 || | ||
|- | |- | ||
| 0x24 || 0x2 || | | 0x24 || 0x2 || | ||
|- | |- | ||
| 0x26 || 0x2 || | | 0x26 || 0x2 || | ||
|- | |- | ||
| 0x28 || 0x18 || | | 0x28 || 0x18 || Reserved | ||
|} | |} | ||
Official sw only uses this in <code>nn::album</code> funcs which convert this to [[#AlbumFileAttribute]], with the output from [[#LoadAlbumScreenShotImageByAruid]]/[[#LoadAlbumScreenShotThumbnailImageByAruid]] (only the first u32 is used). | Official sw only uses this in <code>nn::album</code> funcs which convert this to [[#AlbumFileAttribute]], with the output from [[#LoadAlbumScreenShotImageByAruid]]/[[#LoadAlbumScreenShotThumbnailImageByAruid]] (only the first u32 is used). | ||
= AlbumFileAttribute = | = AlbumFileAttribute = | ||
This is "nn::album::AlbumFileAttribute". This is a 0x10-byte struct. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
Line 700: | Line 795: | ||
|} | |} | ||
See also [[#ScreenShotAttributeForApplication]]. | |||
= AlbumMovieReadStreamHandle = | = AlbumMovieReadStreamHandle = |