Shared Database services
pl:u
This is "nn::pl::detail::IPlatformServiceManager".
Cmd | Name |
---|---|
0 | #RequestSharedFontLoad |
1 | #GetSharedFontLoadState |
2 | #GetSharedFontSize |
3 | #GetSharedFontAddress |
4 | #GetSharedFontSharedMemoryHandle |
5 | #GetSharedFontInOrderOfPriority |
6 | [4.0.0+] GetSharedFontInOrderOfPriorityForSystem |
100 | [8.0.0+] RequestApplicationFunctionAuthorization |
101 | [8.0.0+] RequestApplicationFunctionAuthorizationForSystem |
Takes a #SharedFontType (uint32), no output.
Takes a #SharedFontType (uint32), returns the #LoadState (uint32).
LoadState
Value | Description |
---|---|
0x00 | Loading |
0x01 | Loaded |
Takes a #SharedFontType (uint32), returns the Font Size (uint32).
Takes a #SharedFontType (uint32), returns the offset (uint32) to the Font Address.
No input, returns an output SharedMemory handle.
User-processes map this SharedMemory with size=0x1100000 and permissions=R--.
Font data is TTF, located at the offset returned by #GetSharedFontAddress.
Takes an input u64 LanguageCode and 3 type-0x6 output buffers, returns an output u8 and u32. The u8 is a bool to specify if the fonts are loaded or not and the u32 is the font count. The first buffer contains a list of Shared font types, the second buffer contains the font offsets and the final buffer contains the font sizes. The buffers are an array of u32s which specify information about a specific font. Buffer1[n] is related to Buffer2[n] and Buffer3[n]. Example: Font index 0s offset is at Buffer2[0], size is at Buffer3[0]. The fonts are relative to the shared memory created by #GetSharedFontSharedMemoryHandle
Value | Description |
---|---|
0x00 | Japan, US and Europe (Standard) |
0x01 | Chinese Simplified |
0x02 | Extended Chinese Simplified |
0x03 | Chinese Traditional |
0x04 | Korean (Hangul) |
0x05 | Nintendo Extended |
- Nintendo Extended: Contains Nintendo-specific characters, including HID buttons, HID controller styles, applet icons, Wii(U) icons, etc.
mii:u, mii:e
This is "nn::mii::detail::IStaticService".
Cmd | Name |
---|---|
0 | GetDatabaseService |
IDatabaseService
This is "nn::mii::detail::IDatabaseService".
Cmd | Name |
---|---|
0 | IsUpdated |
1 | IsFullDatabase |
2 | GetCount |
3 | Get |
4 | Get1 |
5 | UpdateLatest |
6 | BuildRandom |
7 | BuildDefault |
8 | Get2 |
9 | Get3 |
10 | UpdateLatest1 |
11 | FindIndex |
12 | Move |
13 | AddOrReplace |
14 | Delete |
15 | DestroyFile |
16 | DeleteFile |
17 | Format |
18 | Import |
19 | Export |
20 | IsBrokenDatabaseWithClearFlag |
21 | GetIndex |
22 | [5.0.0+] SetInterfaceVersion |
23 | [5.0.0+] Convert |
24 | [7.0.0+] ConvertCoreDataToCharInfo |
25 | [7.0.0+] ConvertCharInfoToCoreData |
miiimg
This is "nn::mii::detail::IImageDatabaseService".
This was added with [5.0.0+].
Cmd | Name |
---|---|
0 | Initialize |
10 | Reload |
11 | GetCount |
12 | IsEmpty |
13 | IsFull |
14 | GetAttribute |
15 | LoadImage |
16 | AddOrUpdateImage |
17 | DeleteImages |
100 | DeleteFile |
101 | DestroyFile |
102 | ImportFile |
103 | ExportFile |
104 | ForceInitialize |
pdm:ntfy
This is "nn::pdm::detail::INotifyService".
Cmd | Name |
---|---|
0 | NotifyAppletEvent |
2 | NotifyOperationModeChangeEvent |
3 | NotifyPowerStateChangeEvent |
4 | NotifyClearAllEvent |
5 | #NotifyEventForDebug |
6 | [4.0.0+] SuspendUserAccountEventService |
7 | [4.0.0+] ResumeUserAccountEventService |
8 | [6.0.0+] |
9 | [8.0.0+] |
NotifyEventForDebug
Takes an input type-0x5 buffer containing an array of #PlayEvent, no output.
Gets the system-setting pdm!is_production
, the size must be 1 and the value must be 0, otherwise an error is returned.
Each #PlayEvent entry is validated, throwing an error on failure. After an entry is successfully validated, it is written to the log.
pdm:qry
This is "nn::pdm::detail::IQueryService".
Cmd | Name |
---|---|
0 | #QueryApplicationEvent |
[1.0.0-6.2.0] 1 | QueryPlayStatistics |
[1.0.0-6.2.0] 2 | QueryPlayStatisticsByUserAccountId |
[1.0.0-6.2.0] 3 | QueryPlayStatisticsByNetworkServiceAccountId |
4 | #QueryPlayStatisticsByApplicationId |
5 | #QueryPlayStatisticsByApplicationIdAndUserAccountId |
[1.0.0-6.2.0] 6 | QueryPlayStatisticsByApplicationIdAndNetworkServiceAccountId |
7 | #QueryLastPlayTime |
8 | #QueryPlayEvent |
9 | #GetAvailablePlayEventRange |
10 | #QueryAccountEvent |
11 | [4.0.0+] #QueryAccountPlayEvent |
12 | [4.0.0+] #GetAvailableAccountPlayEventRange |
13 | [5.0.0+] #QueryApplicationPlayStatisticsForSystem |
14 | [6.0.0+] |
15 | [6.0.0+] |
16 | [6.0.0+] |
QueryApplicationEvent
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.
QueryPlayStatisticsByApplicationId
Takes an input u64 titleID and returns an output #PlayStatistics.
QueryPlayStatisticsByApplicationIdAndUserAccountId
Takes an input u64 titleID, an input u128 userID, and returns an output #PlayStatistics.
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.
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.
GetAvailablePlayEventRange
No input, returns 3 output u32s: total_entries, start_entryindex, and end_entryindex.
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.
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.
GetAvailableAccountPlayEventRange
Takes an input u128 userID and returns 3 output u32s: total_entries, start_entryindex, and end_entryindex.
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.
The number of entries in each array is the same.
Cmd14
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.
Returns a list of titles played by the specified user.
Cmd15
No input, returns an output handle.
Cmd16
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.
Same as #QueryApplicationPlayStatisticsForSystem except this gets playstats specific to userIDs.
avm
This is "nn::avm::srv::IAvmService".
This was added with [6.0.0+].
Cmd | Name |
---|---|
100 | |
101 | |
102 | |
103 | No input, returns an #IVersionListImporter. |
200 | |
202 | |
1000 | |
1001 | |
1002 |
IVersionListImporter
This is "nn::avm::srv::IVersionListImporter".
This was added with [6.0.0+].
Cmd | Name |
---|---|
0 | |
1 | |
2 |
ApplicationEvent
Offset | Size | Description |
---|---|---|
0x0 | 0x8 | titleID |
0x8 | 0x4 | entryindex |
0xC | 0x4 | timestamp0 |
0x10 | 0x4 | timestamp1 |
0x14 | 0x1 | #PlayEvent +0xF |
0x15 | 0x3 | Padding |
This is a 0x18-byte struct.
Timestamp format, converted from PosixTime: total minutes since epoch UTC 1999/12/31 00:00.
PlayStatistics
Offset | Size | Description |
---|---|---|
0x0 | 0x8 | titleID |
0x8 | 0x4 | First entryindex |
0xC | 0x4 | First timestamp0. Same as the first #ApplicationEvent timestamp. |
0x10 | 0x4 | First timestamp1. Same as the second #ApplicationEvent timestamp. |
0x14 | 0x4 | Last entryindex |
0x18 | 0x4 | Last timestamp0. Same as the first #ApplicationEvent timestamp. |
0x1C | 0x4 | Last timestamp1. Same as the second #ApplicationEvent timestamp. |
0x20 | 0x4 | Total play-time in minutes. |
0x24 | 0x4 | Total times the application title was launched. |
This is a 0x28-byte struct.
LastPlayTime
Offset | Size | Description |
---|---|---|
0x0 | 0x8 | titleID |
0x8 | 0x4 | Same as the first #ApplicationEvent timestamp. |
0xC | 0x4 | Same as the second #ApplicationEvent timestamp. |
0x10 | 0x4 | Total minutes since the title was last played. |
0x14 | 0x1 | Flag indicating whether the above field is set. |
0x15 | 0x3 | Padding |
This is a 0x18-byte struct. This contains data from the last time the title was played.
PlayEvent
Offset | Size | Description |
---|---|---|
0x0 | 0x0x10 | titleID or userID, with the u32 low/high words swapped in each u64. |
0xC | 0x1 | ? |
0xD | 0x1 | ? |
0xE | 0x1 | ? |
0xF | 0x1 | ? |
0x18 | 0x1 | ? |
0x1C | 0x1 | ? |
0x1D | 0x3 | ? |
0x20 | 0x8 | PosixTime timestamp0 |
0x28 | 0x8 | PosixTime timestamp1 |
0x30 | 0x8 | Timestamp in seconds derived from 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:
- #QueryApplicationEvent and #QueryLastPlayTime: 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.
- #QueryAccountEvent: PlayEvent +0x1C must be 1 and PlayEvent +0x18 must be <=1.
AccountEvent
Offset | Size | Description |
---|---|---|
0x0 | 0x10 | userID |
0x10 | 0x4 | entryindex |
0x14 | 0x4 | Padding |
0x18 | 0x8 | #PlayEvent +0x20 |
0x20 | 0x8 | #PlayEvent +0x28 |
0x28 | 0x8 | #PlayEvent +0x30 |
0x30 | 0x1 | #PlayEvent +0x18 |
0x31 | 0x7 | Padding |
This is a 0x38-byte struct.
AccountPlayEvent
Offset | Size | Description |
---|---|---|
0x0 | 0x4 | ? |
0x4 | 0x8 | titleID, with the u32 low/high words swapped. |
0xC | 0xC | ? |
0x18 | 0x8 | POSIX timestamp |
0x20 | 0x8 | POSIX timestamp |
This is a 0x28-byte struct.
This is the raw entry struct directly read from FS, without any entry filtering. This is separate from #PlayEvent.
ApplicationPlayStatistics
Offset | Size | Description |
---|---|---|
0x0 | 0x8 | titleID |
0x8 | 0x8 | Total play-time in nanoseconds. |
0x10 | 0x8 | Total times the application title was launched. |
This is "nn::pdm::ApplicationPlayStatistics".
This is a 0x18-byte struct.