Changes

2,234 bytes added ,  00:55, 30 October 2024
no edit summary
Line 50: Line 50:  
| 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
 
|-
 
|-
| 130 || [17.0.0+]  
+
| 130 || [17.0.0+] LoadAlbumFileRawData
 
|-
 
|-
| 140 || [17.0.0+]
+
| 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+]
Line 93: Line 93:  
|-
 
|-
 
| 8021 || [2.0.0+] GetAlbumEntryFromApplicationAlbumEntryAruid
 
| 8021 || [2.0.0+] GetAlbumEntryFromApplicationAlbumEntryAruid
 +
|-
 +
| 8022 || [19.0.0+]
 
|-
 
|-
 
| 10011 || SetInternalErrorConversionEnabled
 
| 10011 || SetInternalErrorConversionEnabled
 
|-
 
|-
 
| 50000 || [6.0.0+] LoadMakerNoteInfoForDebug
 
| 50000 || [6.0.0+] LoadMakerNoteInfoForDebug
 +
|-
 +
| 50001 || [19.0.0+]
 +
|-
 +
| 50011 || [19.0.0+] GetAlbumAccessResultForDebug
 +
|-
 +
| 50012 || [19.0.0+] [[#SetAlbumAccessResultForDebug]]
 
|-
 
|-
 
| 60002 || [4.0.0+] [[#OpenAccessorSession]]
 
| 60002 || [4.0.0+] [[#OpenAccessorSession]]
Line 109: Line 117:  
== 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 137: Line 150:  
|-
 
|-
 
| 2008 || ReadFileAttributeFromAlbumMovieReadStream
 
| 2008 || ReadFileAttributeFromAlbumMovieReadStream
 +
|-
 +
| 2009 || [19.0.0+]
 
|-
 
|-
 
| 5000 || [18.0.0+]
 
| 5000 || [18.0.0+]
Line 148: Line 163:  
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Cmd || Name || Notes
+
! Cmd || Name
 +
|-
 +
| 1 || [1.0.0] CaptureRawImage
 +
|-
 +
| 2 || [1.0.0] CaptureRawImageWithTimeout
 +
|-
 +
| 33 || [7.0.0+] [[#SetApplicationShimLibraryVersion]]
 +
|-
 +
| 1001 || [1.0.0] RequestTakingScreenShot
 
|-
 
|-
| [1.0.0] 1 || CaptureRawImage ||
+
| 1002 || [1.0.0] RequestTakingScreenShotWithTimeout
 
|-
 
|-
| [1.0.0] 2 || CaptureRawImageWithTimeout ||
+
| 1011 || [1.0.0] NotifyTakingScreenShotRefused
 
|-
 
|-
| 33 || [7.0.0+] ||  
+
| 2001 || NotifyAlbumStorageIsAvailable
 
|-
 
|-
| [1.0.0] 1001 || RequestTakingScreenShot ||  
+
| 2002 || NotifyAlbumStorageIsUnavailable
 
|-
 
|-
| [1.0.0] 1002 || RequestTakingScreenShotWithTimeout ||
+
| 2011 || [2.0.0+] [[#RegisterAppletResourceUserId]]
 
|-
 
|-
| [1.0.0] 1011 || NotifyTakingScreenShotRefused ||
+
| 2012 || [2.0.0+] [[#UnregisterAppletResourceUserId]]
 
|-
 
|-
| 2001 || NotifyAlbumStorageIsAvailable ||  
+
| 2013 || [2.0.0+] [[#GetApplicationIdFromAruid]]
 
|-
 
|-
| 2002 || NotifyAlbumStorageIsUnavailable ||  
+
| 2014 || [2.0.0+] CheckApplicationIdRegistered
 
|-
 
|-
| 2011 || [2.0.0+] RegisterAppletResourceUserId ||
+
| 2101 || [2.0.0+] [[#GenerateCurrentAlbumFileId]]
 
|-
 
|-
| 2012 || [2.0.0+] UnregisterAppletResourceUserId ||
+
| 2102 || [2.0.0+] GenerateApplicationAlbumEnrty
 
|-
 
|-
| 2013 || [2.0.0+] GetApplicationIdFromAruid ||
+
| 2103 || [19.0.0+]
 
|-
 
|-
| 2014 || [2.0.0+] CheckApplicationIdRegistered ||
+
| 2104 || [19.0.0+]
 
|-
 
|-
| 2101 || [2.0.0+] GenerateCurrentAlbumFileId || Takes an input u8 and u64, returns a 0x18-byte struct.
+
| 2201 || [2.0.0-3.0.2] SaveAlbumScreenShotFile
 
|-
 
|-
| 2102 || [2.0.0+] GenerateApplicationAlbumEnrty ||
+
| 2202 || [4.0.0+] SaveAlbumScreenShotFileEx
 
|-
 
|-
| [2.0.0-3.0.2] 2201 || SaveAlbumScreenShotFile ||
+
| 2301 || [2.0.0+] SetOverlayScreenShotThumbnailData
 
|-
 
|-
| 2202 || [4.0.0+] SaveAlbumScreenShotFileEx ||
+
| 2302 || [4.0.0+] SetOverlayMovieThumbnailData
 
|-
 
|-
| 2301 || [2.0.0+] SetOverlayScreenShotThumbnailData ||
+
| 2401 || [19.0.0+]
 
|-
 
|-
| 2302 || [4.0.0+] SetOverlayMovieThumbnailData ||
+
| 2501 || [19.0.0+] GetAlbumAccessResultForDebug
 
|-
 
|-
| 60001 || [4.0.0+] OpenControlSession || Takes a total of 8-bytes of input and a PID, returns an [[#IAlbumControlSession]].
+
| 60001 || [4.0.0+] [[#OpenControlSession]]
 
|}
 
|}
   −
=== Cmd33 ===
+
=== 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.
 +
 +
=== OpenControlSession ===
 +
Takes a total of 8-bytes of input and a PID, returns an [[#IAlbumControlSession]].
    
== IAlbumControlSession ==
 
== IAlbumControlSession ==
Line 201: Line 249:  
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
! Cmd || Name || Notes
+
! Cmd || Name
 
|-
 
|-
| 2001 || OpenAlbumMovieReadStream ||  
+
| 2001 || OpenAlbumMovieReadStream
 +
|-
 +
| 2002 || CloseAlbumMovieReadStream
 
|-
 
|-
| 2002 || CloseAlbumMovieReadStream ||  
+
| 2003 || GetAlbumMovieReadStreamMovieDataSize
 
|-
 
|-
| 2003 || GetAlbumMovieReadStreamMovieDataSize ||  
+
| 2004 || ReadMovieDataFromAlbumMovieReadStream
 
|-
 
|-
| 2004 || ReadMovieDataFromAlbumMovieReadStream ||  
+
| 2005 || GetAlbumMovieReadStreamBrokenReason
 
|-
 
|-
| 2005 || GetAlbumMovieReadStreamBrokenReason ||  
+
| 2006 || GetAlbumMovieReadStreamImageDataSize
 
|-
 
|-
| 2006 || GetAlbumMovieReadStreamImageDataSize ||  
+
| 2007 || ReadImageDataFromAlbumMovieReadStream
 
|-
 
|-
| 2007 || ReadImageDataFromAlbumMovieReadStream ||  
+
| 2008 || ReadFileAttributeFromAlbumMovieReadStream
 
|-
 
|-
| 2008 || ReadFileAttributeFromAlbumMovieReadStream ||  
+
| 2009 || [19.0.0+]
 
|-
 
|-
| 2345 || [18.0.0+] ||
+
| 2345 || [18.0.0+]
 
|-
 
|-
| 2401 || OpenAlbumMovieWriteStream ||
+
| 2401 || OpenAlbumMovieWriteStream
 
|-
 
|-
| 2402 || FinishAlbumMovieWriteStream ||
+
| 2402 || FinishAlbumMovieWriteStream
 
|-
 
|-
| 2403 || CommitAlbumMovieWriteStream ||
+
| 2403 || CommitAlbumMovieWriteStream
 
|-
 
|-
| 2404 || DiscardAlbumMovieWriteStream ||
+
| 2404 || DiscardAlbumMovieWriteStream
 
|-
 
|-
| 2405 || DiscardAlbumMovieWriteStreamNoDelete ||
+
| 2405 || DiscardAlbumMovieWriteStreamNoDelete
 
|-
 
|-
| 2406 || [7.0.0+] CommitAlbumMovieWriteStreamEx ||
+
| 2406 || [7.0.0+] CommitAlbumMovieWriteStreamEx
 
|-
 
|-
| 2411 || StartAlbumMovieWriteStreamDataSection ||
+
| 2411 || StartAlbumMovieWriteStreamDataSection
 
|-
 
|-
| 2412 || EndAlbumMovieWriteStreamDataSection ||
+
| 2412 || EndAlbumMovieWriteStreamDataSection
 
|-
 
|-
| 2413 || StartAlbumMovieWriteStreamMetaSection ||
+
| 2413 || StartAlbumMovieWriteStreamMetaSection
 
|-
 
|-
| 2414 || EndAlbumMovieWriteStreamMetaSection ||
+
| 2414 || EndAlbumMovieWriteStreamMetaSection
 
|-
 
|-
| 2421 || ReadDataFromAlbumMovieWriteStream ||
+
| 2421 || ReadDataFromAlbumMovieWriteStream
 
|-
 
|-
| 2422 || WriteDataToAlbumMovieWriteStream ||
+
| 2422 || WriteDataToAlbumMovieWriteStream
 
|-
 
|-
| 2424 || WriteMetaToAlbumMovieWriteStream ||
+
| 2424 || WriteMetaToAlbumMovieWriteStream  
 
|-
 
|-
| 2431 || GetAlbumMovieWriteStreamBrokenReason ||
+
| 2431 || GetAlbumMovieWriteStreamBrokenReason
 
|-
 
|-
| 2433 || GetAlbumMovieWriteStreamDataSize ||
+
| 2433 || GetAlbumMovieWriteStreamDataSize
 
|-
 
|-
| 2434 || SetAlbumMovieWriteStreamDataSize ||
+
| 2434 || SetAlbumMovieWriteStreamDataSize  
 
|-
 
|-
| 5000 || [18.0.0+] ||
+
| 5000 || [18.0.0+]
 
|}
 
|}
   Line 287: Line 337:  
| 141 || [6.0.0+] [[#GetAlbumFileList2AafeUidAruidDeprecated]]
 
| 141 || [6.0.0+] [[#GetAlbumFileList2AafeUidAruidDeprecated]]
 
|-
 
|-
| 142 || [7.0.0+] [[#GetAlbumFileList3AaeAruid]]
+
| 142 || [17.0.0+] GetAlbumFileList3AaeAruidDeprecated ([7.0.0-16.1.0] [[#GetAlbumFileList3AaeAruid]])
 
|-
 
|-
| 143 || [7.0.0+] [[#GetAlbumFileList4AaeUidAruid]]
+
| 143 || [17.0.0+] GetAlbumFileList4AaeUidAruidDeprecated ([7.0.0-16.1.0] [[#GetAlbumFileList4AaeUidAruid]])
 
|-
 
|-
| 144 || [11.0.0+] GetAllAlbumFileList3AaeAruid
+
| 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 308: Line 358:     
== GetAlbumFileList0AafeAruidDeprecated ==
 
== GetAlbumFileList0AafeAruidDeprecated ==
Takes a type-0x6 output buffer containing an array of [[#ApplicationAlbumFileEntry]], a PID, an u8 [[#ContentType]], 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).
+
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 [[#ContentType]], an [[#ApplicationAlbumFileEntry]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], and no output.
+
Takes a PID, an input u8 [[#AlbumFileContents]], an [[#ApplicationAlbumFileEntry]], an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], and no output.
   −
The [[#ContentType]] must match 3.
+
The [[#AlbumFileContents]] must match 3.
    
== GetAlbumFileSizeByAruid ==
 
== GetAlbumFileSizeByAruid ==
Line 338: Line 388:     
== PrecheckToCreateContentsByAruid ==
 
== PrecheckToCreateContentsByAruid ==
Takes a PID, an input u8 [[#ContentType]], an u64, an [[Applet_Manager_services#AppletResourceUserId|AppletResourceUserId]], and no output.
+
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 [[#ContentType]], 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).
+
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 [[#ContentType]], 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).
+
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 [[#ContentType]], 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).
+
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 [[#ContentType]], 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).
+
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 415: Line 465:  
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.
   −
= Enums =
+
= AlbumImageOrientation =
 +
This is "nn::album::ImageOrientation".
   −
=== AlbumImageOrientation ===
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 423: Line 473:  
!  Description
 
!  Description
 
|-
 
|-
| 0 || Unknown.
+
| 0 ||  
 
|-
 
|-
| 1 || Unknown.
+
| 1 ||  
 
|-
 
|-
| 2 || Unknown.
+
| 2 ||  
 
|-
 
|-
| 3 || Unknown.
+
| 3 ||  
 
|}
 
|}
   −
This is "nn::album::ImageOrientation".
+
= AlbumReportOption =
 +
This is "nn::album::AlbumReportOption".
   −
=== AlbumReportOption ===
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 445: Line 495:  
|}
 
|}
   −
This is "nn::album::AlbumReportOption".
+
= AlbumFileContents =
 +
This is "nn::capsrv::AlbumFileContents".
   −
=== ContentType ===
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 453: Line 503:  
!  Description
 
!  Description
 
|-
 
|-
| 0 || Screenshot. Album screenshots.
+
| 0 || Screenshot (album screenshots)
 
|-
 
|-
| 1 || Movie. Album videos.
+
| 1 || Movie (album videos)
 
|-
 
|-
| 3 || ExtraMovie. Videos recorded by the current Application title via [[GRC_services#IMovieMaker|GRC MovieMaker]].
+
| 3 || ExtraMovie (videos recorded by the current Application title via [[GRC_services#IMovieMaker|GRC MovieMaker]])
 
|}
 
|}
   −
=== AlbumStorage ===
+
= AlbumStorage =
 +
This is "nn::capsrv::AlbumStorage".
 +
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 466: Line 518:  
!  Description
 
!  Description
 
|-
 
|-
| 0 || Nand. ImageDirectory on the USER partition.
+
| 0 || Nand (ImageDirectory on the USER partition)
 
|-
 
|-
| 1 || Sd. ImageDirectory on the Sd card
+
| 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 488: Line 542:  
| 0x6 || 0x1 || Second
 
| 0x6 || 0x1 || Second
 
|-
 
|-
| 0x7 || 0x1 || Unique ID for when there's multiple Album files with the same timestamp.
+
| 0x7 || 0x1 || Id (unique ID for when there's multiple Album files with the same timestamp)
 
|}
 
|}
  −
This is "nn::capsrv::AlbumFileDateTime". This is a 0x8-byte struct.
      
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 || Size of the entry.
+
| 0x0 || 0x8 || [[NCM_services#ApplicationId|ApplicationId]]
 
|-
 
|-
| 0x8 || 0x8 || ApplicationId
+
| 0x8 || 0x8 || [[#AlbumFileDateTime|Time]]
 
|-
 
|-
| 0x10 || 0x8 || [[#AlbumFileDateTime]]
+
| 0x10 || 0x1 || [[#AlbumStorage|Storage]]
 
|-
 
|-
| 0x18 || 0x1 || [[#AlbumStorage]]
+
| 0x11 || 0x1 || [[#AlbumFileContents|Contents]]
 
|-
 
|-
| 0x19 || 0x1 || [[#ContentType]]
+
| 0x12 || 0x1 || [19.0.0+]
 
|-
 
|-
| 0x1A || 0x6 || Padding.
+
| 0x13 || 0x1 || [19.0.0+]
 +
|-
 +
| 0x14 || 0x4 || Reserved
 
|}
 
|}
   −
This is "nn::capsrv::AlbumEntry". This is a 0x20-byte struct.
+
[19.0.0+] [[#GenerateCurrentAlbumFileId|GenerateCurrentAlbumFileId]] copies the two u8s from instruct+0x8 to AlbumFileId+0x12.
    
= AlbumFileEntry =
 
= AlbumFileEntry =
Line 519: Line 587:     
= 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 of the entry.
+
| 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 || [[#ContentType]]
+
| 0x19 || 0x1 || [[#AlbumFileContents|Contents]]
 
|-
 
|-
| 0x1a || 0x5 || Padding.
+
| 0x1A || 0x5 || Reserved
 
|-
 
|-
| 0x1f || 0x1 || Unknown. Set to 1 by official software.
+
| 0x1F || 0x1 || Unknown (set to 1 by official software)
 
|}
 
|}
   −
This is "nn::capsrv::ApplicationAlbumEntry". This is a 0x20-byte struct. On older versions where [[#ShimLibraryVersion]] is 0, this was a plain AES256 with a random key generated at application launch.
+
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 551: Line 623:  
| 0x20 || 0x8 || [[#AlbumFileDateTime]]
 
| 0x20 || 0x8 || [[#AlbumFileDateTime]]
 
|-
 
|-
| 0x28 || 0x8 || Unknown.
+
| 0x28 || 0x8 || Unknown
 
|}
 
|}
  −
This is "nn::capsrv::ApplicationAlbumFileEntry". This is a 0x30-byte struct.
      
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 562: Line 632:     
= 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 577: Line 649:  
|}
 
|}
   −
This is "nn::capsrv::detail::ScreenShotAttributeEx0" / "nn::capsrv::ScreenShotAttribute". This is a 0x40-byte struct.
+
= ApplicationData =
 +
This is "nn::capsrv::ApplicationData". This is a 0x404-byte struct.
   −
= ApplicationData =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 589: Line 661:  
|}
 
|}
   −
This is "nn::capsrv::ApplicationData". This is a 0x404-byte struct.
+
= UserIdList =
 +
This is "nn::capsrv::UserIdList". This is a 0x88-byte struct.
   −
= UserIdList =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 603: Line 675:  
|}
 
|}
   −
This is "nn::capsrv::UserIdList". This is a 0x88-byte struct.
+
= LoadAlbumScreenShotImageOutputForApplication =
 +
This is "nn::capsrv::sf::LoadAlbumScreenShotImageOutputForApplication". This is a 0x500-byte struct.
   −
= LoadAlbumScreenShotImageOutputForApplication =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 620: Line 692:  
| 0x454 || 0xAC || Unused
 
| 0x454 || 0xAC || Unused
 
|}
 
|}
  −
This is "nn::capsrv::sf::LoadAlbumScreenShotImageOutputForApplication". This is a 0x500-byte struct.
      
= ScreenShotDecodeOption =
 
= ScreenShotDecodeOption =
Line 629: Line 699:     
= 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 || Unknown.
+
| 0x0 || 0x4 ||  
 
|-
 
|-
| 0x4 || 0x1 || Unknown.
+
| 0x4 || 0x1 ||  
 
|-
 
|-
| 0x5 || 0x1 || Unknown.
+
| 0x5 || 0x1 ||  
 
|-
 
|-
| 0x6 || 0x1 || Unknown.
+
| 0x6 || 0x1 ||  
 
|-
 
|-
| 0x7 || 0x1 || Padding.
+
| 0x7 || 0x1 ||  
 
|-
 
|-
| 0x8 || 0x4 || Unknown.
+
| 0x8 || 0x4 ||  
 
|-
 
|-
| 0xC || 0x4 || Unknown.
+
| 0xC || 0x4 ||  
 
|-
 
|-
| 0x10 || 0x4 || Unknown.
+
| 0x10 || 0x4 ||  
 
|-
 
|-
| 0x14 || 0x4 || Unknown.
+
| 0x14 || 0x4 ||  
 
|-
 
|-
| 0x18 || 0x4 || Unknown.
+
| 0x18 || 0x4 ||  
 
|-
 
|-
| 0x1C || 0x4 || Unknown.
+
| 0x1C || 0x4 ||  
 
|-
 
|-
| 0x20 || 0x2 || Unknown.
+
| 0x20 || 0x2 ||  
 
|-
 
|-
| 0x22 || 0x2 || Unknown.
+
| 0x22 || 0x2 ||  
 
|-
 
|-
| 0x24 || 0x2 || Unknown.
+
| 0x24 || 0x2 ||  
 
|-
 
|-
| 0x26 || 0x2 || Unknown.
+
| 0x26 || 0x2 ||  
 
|-
 
|-
| 0x28 || 0x18 || Always zero.
+
| 0x28 || 0x18 || Reserved
 
|}
 
|}
  −
This is "nn::capsrv::ScreenShotAttributeForApplication". This is a 0x40-byte struct.
      
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 680: Line 752:  
|}
 
|}
   −
This is "nn::album::AlbumFileAttribute". This is a 0x10-byte struct. See also [[#ScreenShotAttributeForApplication]].
+
See also [[#ScreenShotAttributeForApplication]].
    
= AlbumMovieReadStreamHandle =
 
= AlbumMovieReadStreamHandle =