Changes

Jump to navigation Jump to search
no edit summary
Line 1: Line 1: −
= pl:u =
+
= pl:u, pl:s =
This is "nn::pl::detail::IPlatformServiceManager".
+
These are "nn::pl::detail::IPlatformServiceManager".
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 23: Line 23:  
|-
 
|-
 
| 101 || [8.0.0+] RequestApplicationFunctionAuthorizationForSystem
 
| 101 || [8.0.0+] RequestApplicationFunctionAuthorizationForSystem
 +
|-
 +
| 1000 || [9.0.0+] LoadNgWordDataForPlatformRegionChina
 +
|-
 +
| 1001 || [9.0.0+] GetNgWordDataSizeForPlatformRegionChina
 
|}
 
|}
   Line 253: Line 257:     
== Cmd8 ==
 
== Cmd8 ==
Takes an input u8 [[#AppletEventType]], an u8 '''event_x9''', an u8 [[Applet_Manager_services#AppletId|AppletId]], an u8 [[Filesystem_services#StorageId|StorageId]], an u8 [[#PlayLogPolicy]], and an u64 '''titleID'''. Returns no output.
+
Takes an input u8 [[#AppletEventType]], an u8 [[Applet_Manager_services#LibraryAppletMode|LibraryAppletMode]], an u8 [[Applet_Manager_services#AppletId|AppletId]], an u8 [[Filesystem_services#StorageId|StorageId]], an u8 [[#PlayLogPolicy]], and an u64 '''titleID'''. Returns no output.
    
This is similar to [[#NotifyAppletEvent]].
 
This is similar to [[#NotifyAppletEvent]].
Line 264: Line 268:  
* Sets the 3 timestamps.
 
* Sets the 3 timestamps.
 
* Converts '''titleID''' and writes it to +0x0.
 
* Converts '''titleID''' and writes it to +0x0.
* u8 +0x9 = '''event_x9'''.
+
* u8 +0x9 = [[Applet_Manager_services#LibraryAppletMode|LibraryAppletMode]].
 
* u8 +0x8 = 1.
 
* u8 +0x8 = 1.
 
* u8 +0xC = [[Applet_Manager_services#AppletId|AppletId]], u8 +0xD = [[Filesystem_services#StorageId|StorageId]], and u8 +0xE = [[#PlayLogPolicy]].
 
* u8 +0xC = [[Applet_Manager_services#AppletId|AppletId]], u8 +0xD = [[Filesystem_services#StorageId|StorageId]], and u8 +0xE = [[#PlayLogPolicy]].
Line 284: Line 288:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || [[#QueryApplicationEvent]]
+
| 0 || [[#QueryAppletEvent]] ([1.0.0-7.0.1] QueryApplicationEvent)
 
|-
 
|-
| [1.0.0-6.2.0] 1 || QueryPlayStatistics
+
| [1.0.0-6.2.0] 1 || [[#QueryPlayStatistics]]
 
|-
 
|-
| [1.0.0-6.2.0] 2 || QueryPlayStatisticsByUserAccountId
+
| [1.0.0-6.2.0] 2 || [[#QueryPlayStatisticsByUserAccountId]]
 
|-
 
|-
| [1.0.0-6.2.0] 3 || QueryPlayStatisticsByNetworkServiceAccountId
+
| [1.0.0-6.2.0] 3 || [[#QueryPlayStatisticsByNetworkServiceAccountId]]
 
|-
 
|-
 
| 4 || [[#QueryPlayStatisticsByApplicationId]]
 
| 4 || [[#QueryPlayStatisticsByApplicationId]]
Line 296: Line 300:  
| 5 || [[#QueryPlayStatisticsByApplicationIdAndUserAccountId]]
 
| 5 || [[#QueryPlayStatisticsByApplicationIdAndUserAccountId]]
 
|-
 
|-
| [1.0.0-6.2.0] 6 || QueryPlayStatisticsByApplicationIdAndNetworkServiceAccountId
+
| [1.0.0-6.2.0] 6 || [[#QueryPlayStatisticsByApplicationIdAndNetworkServiceAccountId]]
 
|-
 
|-
 
| 7 || [[#QueryLastPlayTime]]
 
| 7 || [[#QueryLastPlayTime]]
Line 312: Line 316:  
| 13 || [5.0.0+] [[#QueryApplicationPlayStatisticsForSystem]]
 
| 13 || [5.0.0+] [[#QueryApplicationPlayStatisticsForSystem]]
 
|-
 
|-
| 14 || [6.0.0+]
+
| 14 || [6.0.0+] [[#QueryRecentlyPlayedApplication]]
 
|-
 
|-
| 15 || [6.0.0+]
+
| 15 || [6.0.0+] [[#GetRecentlyPlayedApplicationUpdateEvent]]
 
|-
 
|-
| 16 || [6.0.0+]
+
| 16 || [6.0.0+] [[#QueryApplicationPlayStatisticsByUserAccountIdForSystem]]
 
|}
 
|}
   −
== QueryApplicationEvent ==
+
== QueryAppletEvent ==
Takes an input u32 entryindex, a type-0x6 output buffer containing an array of [[#ApplicationEvent]], and returns an output s32 for actual total output entries.
+
Takes an input s32 entry_index, a type-0x6 output buffer containing an array of [[#AppletEvent]], and returns an output s32 for actual total output entries.
 +
 
 +
== QueryPlayStatistics ==
 +
Takes a type-0x6 output buffer containing an array of [[#PlayStatistics]] and returns an output s32 for actual total output entries.
 +
 
 +
[6.2.0+] This command was removed.
 +
 
 +
== QueryPlayStatisticsByUserAccountId ==
 +
Takes an input u128 '''Uid''', a type-0x6 output buffer containing an array of [[#PlayStatistics]] and returns an output s32 for actual total output entries.
 +
 
 +
[6.2.0+] This command was removed.
 +
 
 +
== QueryPlayStatisticsByNetworkServiceAccountId ==
 +
Takes an input u64 '''NetworkServiceAccountId''', a type-0x6 output buffer containing an array of [[#PlayStatistics]] and returns an output s32 for actual total output entries.
 +
 
 +
[6.2.0+] This command was removed.
    
== QueryPlayStatisticsByApplicationId ==
 
== QueryPlayStatisticsByApplicationId ==
Takes an input u64 titleID and returns an output [[#PlayStatistics]].
+
Takes an input u64 '''ApplicationId''' and returns an output [[#PlayStatistics]].
    
== QueryPlayStatisticsByApplicationIdAndUserAccountId ==
 
== QueryPlayStatisticsByApplicationIdAndUserAccountId ==
Takes an input u64 titleID, an input u128 userID, and returns an output [[#PlayStatistics]].
+
Takes an input u64 '''ApplicationId''', an input u128 '''Uid''' and returns an output [[#PlayStatistics]].
 +
 
 +
== QueryPlayStatisticsByApplicationIdAndNetworkServiceAccountId ==
 +
Takes an input u64 '''ApplicationId''', an input u64 '''NetworkServiceAccountId''' and returns an output [[#PlayStatistics]].
 +
 
 +
[6.2.0+] This command was removed.
    
== QueryLastPlayTime ==
 
== QueryLastPlayTime ==
Takes a type-0x6 output buffer containing an array of [[#LastPlayTime]], and a type-0x5 input buffer containing an array of u64 titleIDs. Returns an output s32 for actual total output entries.
+
Takes a type-0x6 output buffer containing an array of [[#LastPlayTime]], and a type-0x5 input buffer containing an array of u64 '''ApplicationId'''. Returns an output s32 for actual total output entries.
    
== QueryPlayEvent ==
 
== QueryPlayEvent ==
Takes an input u32 entryindex, a type-0x6 output buffer containing an array of [[#PlayEvent]], and returns an output u32 for actual total output entries.
+
Takes an input s32 entry_index, a type-0x6 output buffer containing an array of [[#PlayEvent]], and returns an output s32 for actual total output entries.
    
== GetAvailablePlayEventRange ==
 
== GetAvailablePlayEventRange ==
No input, returns 3 output u32s: total_entries, start_entryindex, and end_entryindex.
+
No input, returns 3 output s32s: total_entries, start_entry_index, and end_entry_index.
    
== QueryAccountEvent ==
 
== QueryAccountEvent ==
Takes an input u32 entryindex, a type-0x6 output buffer containing an array of [[#AccountEvent]], and returns an output s32 for actual total output entries.
+
Takes an input s32 entry_index, a type-0x6 output buffer containing an array of [[#AccountEvent]], and returns an output s32 for actual total output entries.
    
== QueryAccountPlayEvent ==
 
== QueryAccountPlayEvent ==
Takes an input u32 entryoffset, an input u128 userID, a type-0x6 output buffer containing an array of [[#AccountPlayEvent]], and returns an output u32 for actual total output entries.
+
Takes an input s32 entry_offset, an input u128 '''Uid''', a type-0x6 output buffer containing an array of [[#AccountPlayEvent]], and returns an output s32 for actual total output entries.
    
== GetAvailableAccountPlayEventRange ==
 
== GetAvailableAccountPlayEventRange ==
Takes an input u128 userID and returns 3 output u32s: total_entries, start_entryindex, and end_entryindex.
+
Takes an input u128 '''Uid''' and returns 3 output s32s: total_entries, start_entry_index, and end_entry_index.
    
== QueryApplicationPlayStatisticsForSystem ==
 
== QueryApplicationPlayStatisticsForSystem ==
Takes a type-0x6 output buffer containing an array of [[#ApplicationPlayStatistics]] and a type-0x5 input buffer containing an array of u64 titleIDs. Returns an output s32 for actual total output entries.
+
Takes a type-0x6 output buffer containing an array of [[#ApplicationPlayStatistics]] and a type-0x5 input buffer containing an array of u64 '''ApplicationId'''. Returns an output s32 for actual total output entries.
    
The number of entries in each array is the same.
 
The number of entries in each array is the same.
   −
== Cmd14 ==
+
== QueryRecentlyPlayedApplication ==
Takes an input u128 userID, a type-0x6 output buffer containing an array of u64 titleIDs, and returns an output u32 for actual total output entries.
+
Takes an input u128 '''Uid''', a type-0x6 output buffer containing an array of u64 '''ApplicationId''', and returns an output s32 for actual total output entries.
    
Returns a list of titles played by the specified user.
 
Returns a list of titles played by the specified user.
   −
== Cmd15 ==
+
== GetRecentlyPlayedApplicationUpdateEvent ==
 
No input, returns an output Event handle with autoclear=false.
 
No input, returns an output Event handle with autoclear=false.
    
This is signaled when logging a new [[#PlayEvent]] which would be available via [[#QueryAccountEvent]], where [[#PlayEvent]] +0x18 is 0.
 
This is signaled when logging a new [[#PlayEvent]] which would be available via [[#QueryAccountEvent]], where [[#PlayEvent]] +0x18 is 0.
   −
== Cmd16 ==
+
== QueryApplicationPlayStatisticsByUserAccountIdForSystem ==
Takes a u128 userID, a type-0x6 output buffer containing an array of [[#ApplicationPlayStatistics]] and a type-0x5 input buffer containing an array of u64 titleIDs. Returns an output s32 for actual total output entries.
+
Takes a u128 '''Uid''', a type-0x6 output buffer containing an array of [[#ApplicationPlayStatistics]] and a type-0x5 input buffer containing an array of u64 '''ApplicationId'''. Returns an output s32 for actual total output entries.
   −
Same as [[#QueryApplicationPlayStatisticsForSystem]] except this gets playstats specific to userIDs.
+
Same as [[#QueryApplicationPlayStatisticsForSystem]] except this gets playstats specific to '''Uid'''.
    
= avm =
 
= avm =
Line 410: Line 434:  
|}
 
|}
   −
= ApplicationEvent =
+
= AppletEvent =
 +
This is "nn::pdm::AppletEvent" ([1.0.0-7.0.1] "nn::pdm::ApplicationEvent").
 +
 
 +
This is a 0x18-byte struct.
 +
 
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 429: Line 457:  
| 0x15 || 0x3 || Padding
 
| 0x15 || 0x3 || Padding
 
|}
 
|}
  −
This is a 0x18-byte struct.
      
Timestamp format, converted from PosixTime: total minutes since epoch UTC 1999/12/31 00:00.
 
Timestamp format, converted from PosixTime: total minutes since epoch UTC 1999/12/31 00:00.
    
= PlayStatistics =
 
= PlayStatistics =
 +
This is "nn::pdm::PlayStatistics".
 +
 +
This is a 0x28-byte struct.
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 445: Line 475:  
| 0x8 || 0x4 || First entryindex
 
| 0x8 || 0x4 || First entryindex
 
|-
 
|-
| 0xC || 0x4 || First timestamp0. Same as the first [[#ApplicationEvent]] timestamp.
+
| 0xC || 0x4 || First timestamp0. Same as the first [[#AppletEvent]] timestamp.
 
|-
 
|-
| 0x10 || 0x4 || First timestamp1. Same as the second [[#ApplicationEvent]] timestamp.
+
| 0x10 || 0x4 || First timestamp1. Same as the second [[#AppletEvent]] timestamp.
 
|-
 
|-
 
| 0x14 || 0x4 || Last entryindex
 
| 0x14 || 0x4 || Last entryindex
 
|-
 
|-
| 0x18 || 0x4 || Last timestamp0. Same as the first [[#ApplicationEvent]] timestamp.
+
| 0x18 || 0x4 || Last timestamp0. Same as the first [[#AppletEvent]] timestamp.
 
|-
 
|-
| 0x1C || 0x4 || Last timestamp1. Same as the second [[#ApplicationEvent]] timestamp.
+
| 0x1C || 0x4 || Last timestamp1. Same as the second [[#AppletEvent]] timestamp.
 
|-
 
|-
 
| 0x20 || 0x4 || Total play-time in minutes.
 
| 0x20 || 0x4 || Total play-time in minutes.
Line 460: Line 490:  
|}
 
|}
   −
This is a 0x28-byte struct.
+
= LastPlayTime =
 +
This is "nn::pdm::LastPlayTime".
 +
 
 +
This is a 0x18-byte struct and contains data from the last time the title was played.
   −
= LastPlayTime =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 471: Line 503:  
| 0x0 || 0x8 || titleID
 
| 0x0 || 0x8 || titleID
 
|-
 
|-
| 0x8 || 0x4 || Same as the first [[#ApplicationEvent]] timestamp.
+
| 0x8 || 0x4 || Same as the first [[#AppletEvent]] timestamp.
 
|-
 
|-
| 0xC || 0x4 || Same as the second [[#ApplicationEvent]] timestamp.
+
| 0xC || 0x4 || Same as the second [[#AppletEvent]] timestamp.
 
|-
 
|-
 
| 0x10 || 0x4 || Total minutes since the title was last played.
 
| 0x10 || 0x4 || Total minutes since the title was last played.
Line 482: Line 514:  
|}
 
|}
   −
This is a 0x18-byte struct. This contains data from the last time the title was played.
+
= PlayEventType =
 +
This is an enum for [[#PlayEvent]] +0x1C, which indicates the type of [[#PlayEvent]].
   −
= PlayEventType =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 497: Line 529:  
|-
 
|-
 
| 3 || OperationModeChange
 
| 3 || OperationModeChange
 +
|-
 +
| 4 || Initialize. Used for the very first [[#PlayEvent]] entry in the log.
 
|}
 
|}
   −
This is an enum for [[#PlayEvent]] +0x1C, which indicates the type of [[#PlayEvent]].
+
= AppletEventType =
 +
This is an enum for [[#PlayEvent]] +0xF with [[#PlayEventType]] = Applet, this indicates the type of the Applet event.
   −
= AppletEventType =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 521: Line 555:  
| 6 || "exit"
 
| 6 || "exit"
 
|}
 
|}
  −
This is an enum for [[#PlayEvent]] +0xF with [[#PlayEventType]] = Applet, this indicates the type of the Applet event.
      
= PlayLogPolicy =
 
= PlayLogPolicy =
Line 541: Line 573:     
= PlayEvent =
 
= PlayEvent =
 +
This is "nn::pdm::PlayEvent".
 +
 +
This is a 0x38-byte struct and is the raw entry struct directly read from FS, without any entry filtering. The other structs are extracted+converted from this one, with filtering.
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 557: Line 593:  
| 0x30 || 0x8 || Timestamp in seconds derived from [[PCV_services|StandardSteadyClock]].
 
| 0x30 || 0x8 || Timestamp in seconds derived from [[PCV_services|StandardSteadyClock]].
 
|}
 
|}
  −
This is a 0x38-byte struct.
  −
  −
This is the raw entry struct directly read from FS, without any entry filtering. The other structs are extracted+converted from this one, with filtering.
      
Filtering:
 
Filtering:
* [[#QueryApplicationEvent]], [[#QueryLastPlayTime]], and [[#QueryApplicationPlayStatisticsForSystem]]: PlayEvent +0x1C must be 0, +0xC must be 1, and +0xE must be 0.
+
* [[#QueryAppletEvent]], [[#QueryLastPlayTime]], and [[#QueryApplicationPlayStatisticsForSystem]]: PlayEvent +0x1C must be 0, +0xC must be 1, and +0xE must be 0.
 
* [[#QueryPlayStatisticsByApplicationId]]: PlayEvent +0x1C must be 0, +0xC must be 1, and the titleID must match.
 
* [[#QueryPlayStatisticsByApplicationId]]: PlayEvent +0x1C must be 0, +0xC must be 1, and the titleID must match.
 
* [[#QueryAccountEvent]]: PlayEvent +0x1C must be 1 and PlayEvent +0x18 must be <=1.
 
* [[#QueryAccountEvent]]: PlayEvent +0x1C must be 1 and PlayEvent +0x18 must be <=1.
Line 571: Line 603:     
Applet:
 
Applet:
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 580: Line 611:  
| 0x0 || 0x8 || titleID
 
| 0x0 || 0x8 || titleID
 
|-
 
|-
| 0x8 || 0x4 || When set to u8 0x1 by pdm:ntfy [[#Cmd8]], this indicates that +0x9 is set.
+
| 0x8 || 0x4 || Title version, set by pdm:ntfy [[#NotifyAppletEvent]] and [[#Cmd9]].
 
|-
 
|-
| 0x9 || 0x1 || See above.
+
| 0x8 || 0x1 || When set to u8 0x1 by pdm:ntfy [[#Cmd8]], this indicates that +0x9 is set. Only used for non-applications.
 +
|-
 +
| 0x9 || 0x1 || See above. [[Applet_Manager_services#LibraryAppletMode|LibraryAppletMode]]
 
|-
 
|-
 
| 0xC || 0x1 || [[Applet_Manager_services#AppletId|AppletId]]
 
| 0xC || 0x1 || [[Applet_Manager_services#AppletId|AppletId]]
Line 596: Line 629:     
Account:
 
Account:
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 615: Line 647:     
= AccountEvent =
 
= AccountEvent =
 +
This is "nn::pdm::AccountEvent".
 +
 +
This is a 0x38-byte struct.
 +
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 638: Line 674:  
|}
 
|}
   −
This is a 0x38-byte struct.
+
= AccountPlayEvent =
 +
This is "nn::pdm::AccountPlayEvent".
 +
 
 +
This is a 0x28-byte struct and is the raw entry struct directly read from FS, without any entry filtering. This is separate from [[#PlayEvent]].
   −
= AccountPlayEvent =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 658: Line 696:  
|}
 
|}
   −
This is a 0x28-byte struct.
+
= ApplicationPlayStatistics =
 +
This is "nn::pdm::ApplicationPlayStatistics".
   −
This is the raw entry struct directly read from FS, without any entry filtering. This is separate from [[#PlayEvent]].
+
This is a 0x18-byte struct.
   −
= ApplicationPlayStatistics =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 675: Line 713:  
| 0x10 || 0x8 || Total times the application title was launched.
 
| 0x10 || 0x8 || Total times the application title was launched.
 
|}
 
|}
  −
This is "nn::pdm::ApplicationPlayStatistics".
  −
  −
This is a 0x18-byte struct.
      
[[Category:Services]]
 
[[Category:Services]]

Navigation menu