BOSS Services: Difference between revisions

Make links of all named BOSS commands
 
(14 intermediate revisions by 4 users not shown)
Line 1: Line 1:
==BOSS Service "boss:U"==
==BOSS User Service "boss:U"==
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 9: Line 9:
|-
|-
| 0x00020100
| 0x00020100
| [[BOSS:SetStorageInfo|SetStorageInfo]]
| [[BOSSU:SetStorageInfo|SetStorageInfo]]
|-
|-
| 0x00030000
| 0x00030000
| [[BOSS:UnregisterStorage|UnregisterStorage]]
| [[BOSSU:UnregisterStorage|UnregisterStorage]]
|-
|-
| 0x00040000
| 0x00040000
| GetTaskStorageInfo
| [[BOSSU:GetStorageInfo|GetStorageInfo]]
|-
|-
| 0x00050042
| 0x00050042
| ?
| [[BOSSU:RegisterPrivateRootCa|RegisterPrivateRootCa]]
|-
|-
| 0x00060084
| 0x00060084
| <nowiki>(u32 Size0, u32 Size1, ((Size0<<4) | 10), Buf0, ((Size1<<4) | 10), Buf1)</nowiki> This writes the content of the input buffers into files "bossdb:/%s_CL" and "bossdb:/%s_CLK", where "%s" is generated from the programID.
| [[BOSSU:RegisterPrivateClientCert|RegisterPrivateClientCert]] <nowiki>(u32 Size0, u32 Size1, ((Size0<<4) | 10), Buf0, ((Size1<<4) | 10), Buf1)</nowiki> This writes the content of the input buffers into files "bossdb:/%s_CL" and "bossdb:/%s_CLK", where "%s" is generated from the programID.
|-
|-
| 0x00070000
| 0x00070000
| ?
| [[BOSSU:GetNewArrivalFlag|GetNewArrivalFlag]]
|-
|-
| 0x00080002
| 0x00080002
| Used for sending a handle. This is used with a table of programIDs etc with a maximum of 5 entries.
| [[BOSSU:RegisterNewArrivalEvent|RegisterNewArrivalEvent]]: Used for sending a handle. This is used with a table of programIDs etc with a maximum of 5 entries.
|-
|-
| 0x00090040
| 0x00090040
| [[BOSS:SetOptoutFlag|SetOptoutFlag]]
| [[BOSSU:SetOptoutFlag|SetOptoutFlag]]
|-
|-
| 0x000A0000
| 0x000A0000
| [[BOSS:GetOptoutFlag|GetOptoutFlag]]
| [[BOSSU:GetOptoutFlag|GetOptoutFlag]]
|-
|-
| 0x000B00C2
| 0x000B00C2
Line 48: Line 48:
|-
|-
| 0x000F0042
| 0x000F0042
| ?
| [[BOSSU:GetStepIdList|GetStepIdList]]
|-
|-
| 0x00100102
| 0x00100102
Line 54: Line 54:
|-
|-
| 0x00110102
| 0x00110102
| ?
| [[BOSSU:GetNsDataIdList1|GetNsDataIdList1]]
|-
|-
| 0x00120102
| 0x00120102
| ?
| [[BOSSU:GetNsDataIdList2|GetNsDataIdList2]]
|-
|-
| 0x00130102
| 0x00130102
| ?
| [[BOSSU:GetNsDataIdList3|GetNsDataIdList3]]
|-
|-
| 0x00140082
| 0x00140082
Line 72: Line 72:
|-
|-
| 0x00170082
| 0x00170082
| ?
| [[BOSSU:UpdateTaskInterval|UpdateTaskInterval]]
|-
|-
| 0x00180082
| 0x00180082
| UpdateTaskCount
| [[BOSSU:UpdateTaskCount|UpdateTaskCount]]
|-
|-
| 0x00190042
| 0x00190042
| ?
| [[BOSSU:GetTaskInterval|GetTaskInterval]]
|-
|-
| 0x001A0042
| 0x001A0042
| GetTaskCount
| [[BOSSU:GetTaskCount|GetTaskCount]]
|-
|-
| 0x001B0042
| 0x001B0042
| GetTaskServiceStatus
| [[BOSSU:GetTaskServiceStatus|GetTaskServiceStatus]]
|-
|-
| 0x001C0042
| 0x001C0042
Line 96: Line 96:
|-
|-
| 0x001F0000
| 0x001F0000
| [[BOSS:GetTaskFinishHandle|GetTaskFinishHandle]]
| [[BOSSU:GetTaskFinishHandle|GetTaskFinishHandle]]
|-
|-
| 0x00200082
| 0x00200082
Line 102: Line 102:
|-
|-
| 0x00210042
| 0x00210042
| GetTaskResult
| [[BOSSU:GetTaskResult|GetTaskResult]]
|-
|-
| 0x00220042
| 0x00220042
| ?
| [[BOSSU:GetTaskCommErrorCode|GetTaskCommErrorCode]]
|-
|-
| 0x002300C2
| 0x002300C2
| GetTaskStatus
| [[BOSSU:GetTaskStatus|GetTaskStatus]]
|-
|-
| 0x00240082
| 0x00240082
| ?
| [[BOSSU:GetTaskError|GetTaskError]]
|-
|-
| 0x00250082
| 0x00250082
| ?
| [[BOSSU:GetTaskInfo|GetTaskInfo]]
|-
|-
| 0x00260040
| 0x00260040
| [[BOSS:DeleteNsData|DeleteNsData]]
| [[BOSSU:DeleteNsData|DeleteNsData]]
|-
|-
| 0x002700C2
| 0x002700C2
Line 126: Line 126:
|-
|-
| 0x00290080
| 0x00290080
| ?
| [[BOSSU:SetNsDataAdditionalInfo|SetNsDataAdditionalInfo]]
|-
|-
| 0x002A0040
| 0x002A0040
| Unknown. Writes an output u32 to cmdreply[2].
| [[BOSSU:GetNsDataAdditionalInfo|GetNsDataAdditionalInfo]]. Writes an output u32 to cmdreply[2].
|-
|-
| 0x002B0080
| 0x002B0080
| SetNsDataNewFlag
| [[BOSSU:SetNsDataNewFlag|SetNsDataNewFlag]]
|-
|-
| 0x002C0040
| 0x002C0040
| GetNsDataNewFlag
| [[BOSSU:GetNsDataNewFlag|GetNsDataNewFlag]]
|-
|-
| 0x002D0040
| 0x002D0040
| (u32 NsDataId) Writes an output u64 to cmdreply[2-3], from the content file in extdata.
| [[BOSSU:GetNsDataLastUpdate|GetNsDataLastUpdate]] (u32 NsDataId) Writes an output u64 to cmdreply[2-3], from the content file in extdata.
|-
|-
| 0x002E0040
| 0x002E0040
| [[BOSS:GetErrorCode|GetErrorCode]]
| [[BOSSU:GetErrorCode|GetErrorCode]]
|-
|-
| 0x002F0140
| 0x002F0140
| RegisterStorageEntry
| [[BOSSU:RegisterStorageEntry|RegisterStorageEntry]]
|-
|-
| 0x00300000
| 0x00300000
| unknown...
| [[BOSSU:GetStorageEntryInfo|GetStorageEntryInfo]]
|-
|-
| 0x00310100
| 0x00310100
| ?
| [[BOSSU:SetStorageOption|SetStorageOption]]
|-
|-
| 0x00320000
| 0x00320000
| ?
| [[BOSSU:GetStorageOption|GetStorageOption]]
|-
|-
| 0x00330042
| 0x00330042
| [[BOSS:StartBgImmediate|StartBgImmediate]]
| [[BOSSU:StartBgImmediate|StartBgImmediate]]
|-
|-
| 0x00340042
| 0x00340042
| [[BOSS:GetTaskProperty0|GetTaskProperty0]]
| [[BOSSU:GetTaskPriority|GetTaskPriority]]
|-
|-
| 0x003500C2
| 0x003500C2
| RegisterImmediateTask
| [[BOSSU:RegisterImmediateTask|RegisterImmediateTask]]
|-
|-
| 0x00360084
| 0x00360084
| <nowiki>(u32 TaskID_Size, u32 BufSize, ((TaskID_Size<<4) | 10), TaskID_buf, ((BufSize<<4) | 10), Buf)</nowiki> BufSize must match 0x60.
| [[BOSSU:SetTaskQuery|SetTaskQuery]] <nowiki>(u32 TaskID_Size, u32 BufSize, ((TaskID_Size<<4) | 10), TaskID_buf, ((BufSize<<4) | 10), Buf)</nowiki> BufSize must match 0x60.
|-
|-
| 0x00370084
| 0x00370084
| <nowiki>(u32 TaskID_Size, u32 BufSize, ((TaskID_Size<<4) | 10), TaskID_buf, ((BufSize<<4) | 10), Buf)</nowiki> BufSize must match 0x60.
| [[BOSSU:GetTaskQuery|GetTaskQuery]] <nowiki>(u32 TaskID_Size, u32 BufSize, ((TaskID_Size<<4) | 10), TaskID_buf, ((BufSize<<4) | 10), Buf)</nowiki> BufSize must match 0x60.
|}
|}


==Privileged BOSS Service "boss:P"==
==BOSS Privileged Service "boss:P"==
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 179: Line 179:
| 0x04010082
| 0x04010082
| [[BOSSP:InitializeSessionPrivileged|InitializeSessionPrivileged]]
| [[BOSSP:InitializeSessionPrivileged|InitializeSessionPrivileged]]
|-
| 0x04020000
| ?
|-
| 0x04030000
| ?
|-
|-
| 0x04040080
| 0x04040080
Line 184: Line 190:
|-
|-
| 0x040500C0
| 0x040500C0
| unknown...
| [[BOSSP:SetAppNewFlag|SetAppNewFlag]]
|-
|-
| 0x040600C0
| 0x040600C0
| unknown...
| [[BOSSP:SetOptoutFlagPrivileged|SetOptoutFlagPrivileged]]
|-
|-
| 0x04070080
| 0x04070080
| unknown...
| [[BOSSP:GetOptoutFlagPrivileged|GetOptoutFlagPrivileged]]
|-
| 0x04080040
| (u8 optout) Sets the optout flag to all apps?
|-
|-
| 0x04090102
| 0x04090102
| unknown...
| [[BOSSP:UnregisterTaskPrivileged|UnregisterTaskPrivileged]]
|-
| 0x040A0000
| [[BOSSP:GetAppIdList|GetAppIdList]]
|-
|-
| 0x040B0080
| 0x040B0080
| unknown...
| [[BOSSP:GetTaskIdListPrivileged|GetTaskIdListPrivileged]]
|-
| 0x040C00C2
| [[BOSSP:GetStepIdListPrivileged|GetStepIdListPrivileged]]
|-
|-
| 0x040D0182
| 0x040D0182
| unknown...
| [[BOSSP:GetNsDataIdListPrivileged|GetNsDataIdListPrivileged]]
|-
| 0x040E0182
| [[BOSSP:GetNsDataIdListPrivileged1|GetNsDataIdListPrivileged1]]
|-
| 0x040F0102
| [[BOSSP:GetTaskInfoPrivileged|GetTaskInfoPrivileged]]
|-
| 0x04100102
| [[BOSSP:GetTaskStatusPrivileged1|GetTaskStatusPrivileged1]] Same as GetTaskStatusPrivileged, but the input bool is set to false
|-
| 0x04110102
| [[BOSSP:GetTaskErrorPrivileged|GetTaskErrorPrivileged]]
|-
| 0x04120000
| Related to the sysmodule savedata?
|-
|-
| 0x04130082
| 0x04130082
| [[BOSSP:SendPropertyPrivileged|SendPropertyPrivileged]]
| [[BOSSP:SendPropertyPrivileged|SendPropertyPrivileged]]
|-
| 0x04140082
| [[BOSSP:ReceivePropertyPrivileged|ReceivePropertyPrivileged]]
|-
|-
| 0x041500C0
| 0x041500C0
| DeleteNsDataPrivileged
| [[BOSSP:DeleteNsDataPrivileged|DeleteNsDataPrivileged]]
|-
|-
| 0x04160142
| 0x04160142
Line 212: Line 245:
| 0x04170182
| 0x04170182
| [[BOSSP:ReadNsDataPrivileged|ReadNsDataPrivileged]]
| [[BOSSP:ReadNsDataPrivileged|ReadNsDataPrivileged]]
|-
| 0x04180100
| [[BOSSP:SetNsDataAdditionalInfoPrivileged|SetNsDataAdditionalInfoPrivileged]]
|-
| 0x041900C0
| [[BOSSP:GetNsDataAdditionalInfoPrivileged|GetNsDataAdditionalInfoPrivileged]]
|-
|-
| 0x041A0100
| 0x041A0100
| SetNsDataNewFlagPrivileged
| [[BOSSP:SetNsDataNewFlagPrivileged|SetNsDataNewFlagPrivileged]]
|-
|-
| 0x041B00C0
| 0x041B00C0
| GetNsDataNewFlagPrivileged
| [[BOSSP:GetNsDataNewFlagPrivileged|GetNsDataNewFlagPrivileged]]
|-
|-
| 0x041C00C0
| 0x041C00C0
| unknown...
| [[BOSSP:GetNsDataLastUpdatePrivileged|GetNsDataLastUpdatePrivileged]]
|-
| 0x041D0040
| (bool unk_flag1)
|-
| 0x041E0000
| Returns: bool unk_flag1
|-
| 0x041F0040
| [[BOSSP:SetTestModeAvailability|SetTestModeAvailability]] (bool test_mode_flag)
|-
| 0x04200000
| [[BOSSP:GetTestModeAvailability|GetTestModeAvailability]]. Returns: bool test_mode_flag
|-
| 0x04210000?
| Stubbed
|-
| 0x04220000
| ?
|-
| 0x04230000?
| Stubbed
|-
| 0x04240000
| ?
|-
| 0x04250042
| [[BOSSP:SetPolicyListEnvId|SetPolicyListEnvId]]. Sets the policylist env ID (default env ID is "p01"): strncpy("p01", in, 8)
|-
| 0x04260042
| [[BOSSP:GetPolicyListEnvId|GetPolicyListEnvId]]. Gets the policylist env ID (default env ID is "p01"): strcpy(out, "p01")
|-
| 0x04270042
| [[BOSSP:SetPolicyListUrl|SetPolicyListUrl]]. Sets a custom policylist URL. Max of 0x200 chars
|-
| 0x04280042
| [[BOSSP:GetPolicyListUrl|GetPolicyListUrl]]. Gets the custom policylist URL
|-
| 0x04290002
| (Handle unk)
|-
| 0x042A0000
| Closes the previous handle
|-
| 0x042B0000
| Returns: u8 unk
|-
| 0x042C0042
| <nowiki>(u32 Size, ((Size<<4)|0xC), Buf)</nowiki>
|-
| 0x042D0000
| Returns: u32 unk
|-
|-
| 0x042E00C2
| 0x042E00C2
| unknown...
| [[BOSSP:StartTaskPrivileged|StartTaskPrivileged]]
|-
|-
| 0x042F00C2
| 0x042F00C2
| unknown...
| [[BOSSP:StartTaskImmediatePrivileged|StartTaskImmediatePrivileged]]
|-
|-
| 0x043000C2
| 0x043000C2
| unknown...
| [[BOSSP:CancelTaskPrivileged|CancelTaskPrivileged]]
|-
| 0x04310040
| (u32 unk_4) The input is stored in a variable whose default value is 0x70
|-
| 0x04320040
| Returns: u32 unk_4
|-
| 0x04330080
| [[BOSSP:GetStorageOptionPrivileged|GetStorageOptionPrivileged]]
|-
| 0x043400C2
| [[BOSSP:StartBgImmediatePrivileged|StartBgImmediatePrivileged]]
|-
| 0x04350042
| <nowiki>(u32 Size, ((Size<<4)|0xA), Buf)</nowiki>. Stubbed
|-
| 0x04360042
| <nowiki>(u32 Size, ((Size<<4)|0xC), Buf)</nowiki>. Stubbed
|-
| 0x043700C2
| [[BOSSP:GetTaskPriorityPrivileged|GetTaskPriorityPrivileged]]
|-
| 0x04380000
| ?
|-
| 0x04390104
| [[BOSSP:GetTaskQueryPrivileged|GetTaskQueryPrivileged]]
|-
| 0x043A0042
| <nowiki>(u32 Size, ((Size<<4)|0xA), Buf)</nowiki>. Stubbed
|-
| 0x043B0042
| <nowiki>(u32 Size, ((Size<<4)|0xC), Buf)</nowiki>. Stubbed
|-
| 0x043C0080
| (u64 title_id)
|-
| 0x043D0080
| (u64 title_id)
|-
| 0x043E0042
| [[BOSSP:SetSprelayUrl|SetSprelayUrl]] <nowiki>(u32 Size, ((Size<<4)|0xA), Buf)</nowiki>. Sets the sprelay URL
|-
| 0x043F0042
| [[BOSSP:GetSprelayUrl|GetSprelayUrl]] <nowiki>(u32 Size, ((Size<<4)|0xC), Buf)</nowiki>. Gets the sprelay URL
|-
| 0x04400080
| [[BOSSP:SetSprelayInterval|SetSprelayInterval]] (u32 interval, u32 unk). Sets the sprelay interval, and other things
|-
| 0x04410000
| [[BOSSP:GetSprelayInterval|GetSprelayInterval]] Returns: u32 interval, u32 unk. Gets the sprelay interval, and other things
|-
| 0x04420000
| ?
|-
| 0x04430042
| <nowiki>(u32 Size, ((Size<<4)|0xC), Buf)</nowiki>. Size must be at least 0x208
|-
| 0x04440042
| <nowiki>(u32 Size, ((Size<<4)|0xC), Buf)</nowiki>. Size must be at least 0x130
|-
| 0x04450040
| (u8 unk_5)
|-
| 0x04460000
| Returns: u8 unk_5
|-
| 0x04470002
| [[BOSSP:RegisterNewArrivalEventPrivileged|RegisterNewArrivalEventPrivileged]]
|-
| 0x04480000?
| Stubbed
|-
|-
| 0x04490142
| 0x04490142
| unknown...
| [[BOSSP:RegisterTaskPrivileged|RegisterTaskPrivileged]]
|-
|-
| 0x044A0180
| 0x044A0180
| unknown...
| [[BOSSP:SetStorageInfoPrivileged|SetStorageInfoPrivileged]]
|-
| 0x044B01C0
| [[BOSSP:RegisterStorageEntryPrivileged|RegisterStorageEntryPrivileged]]
|-
| 0x044C0080
| [[BOSSP:UnregisterStoragePrivileged|UnregisterStoragePrivileged]]
|-
|-
| 0x044D0080
| 0x044D0080
| unknown...
| [[BOSSP:GetStorageInfoPrivileged|GetStorageInfoPrivileged]]
|-
| 0x044E0080
| [[BOSSP:GetStorageEntryInfoPrivileged|GetStorageEntryInfoPrivileged]]
|-
| 0x044F0102
| [[BOSSP:UpdateTaskIntervalPrivileged|UpdateTaskIntervalPrivileged]]
|-
|-
| 0x04500102
| 0x04500102
| unknown...
| [[BOSSP:UpdateTaskCountPrivileged|UpdateTaskCountPrivileged]]
|-
| 0x045100C2
| [[BOSSP:GetTaskIntervalPrivileged|GetTaskIntervalPrivileged]]
|-
| 0x045200C2
| [[BOSSP:GetTaskCountPrivileged|GetTaskCountPrivileged]]
|-
| 0x045300C2
| [[BOSSP:GetTaskServiceStatusPrivileged|GetTaskServiceStatusPrivileged]]
|-
|-
| 0x04540102
| 0x04540102
| unknown...
| [[BOSSP:GetTaskStatePrivileged|GetTaskStatePrivileged]]
|-
|-
| 0x045500C2
| 0x045500C2
| unknown...
| [[BOSSP:GetTaskResultPrivileged|GetTaskResultPrivileged]]
|-
| 0x045600C2
| [[BOSSP:GetTaskCommErrorCodePrivileged|GetTaskCommErrorCodePrivileged]]
|-
| 0x04570142
| [[BOSSP:GetTaskStatusPrivileged|GetTaskStatusPrivileged]]
|-
|-
| 0x04580104
| 0x04580104
| ?
| [[BOSSP:SetTaskQueryPrivileged|SetTaskQueryPrivileged]]
|}
|}


Line 258: Line 447:


==BOSS Service "boss:M"==
==BOSS Service "boss:M"==
{| class="wikitable" border="1"
|-
!  Command Header
!  Description
|-
| 0x00010002
| ?
|-
| 0x00020000
| ?
|-
| 0x00030040
| ?
|-
| 0x00040000
| ?
|-
| 0x00050000
| ?
|-
| 0x00060000
| ?
|-
| 0x00070000
| ?
|}
==programIDs==
BOSS uses programIDs raw without any handling for the New3DS programID-low bitmask. For example, attempting a NsDataId listing with the New3DS bitmask set will fail, if BOSS is only setup for that programID with the New3DS bitmask clear.
When [[BOSSU:InitializeSession|initializing]] BOSS with the default programID, the New3DS programID-low bitmask is always clear for New3DS titles since that's how it was originally registered with [[Filesystem_services|FS]]. Hence, the programID in the [[SpotPass|BOSS-container]] must always have the New3DS bitmask clear. This also means everything using the BOSSP commands with the raw programIDs loaded from AM title-listing are broken with New3DS titles, for example [[Extended_Banner]].


==Content Data Storage==
==Content Data Storage==
Line 263: Line 484:


All of these commands using [[FS:CheckAuthorityToAccessExtSaveData]] are: [[BOSS:SetStorageInfo]] and RegisterStorageEntry, for both BOSSU and BOSSP.
All of these commands using [[FS:CheckAuthorityToAccessExtSaveData]] are: [[BOSS:SetStorageInfo]] and RegisterStorageEntry, for both BOSSU and BOSSP.
BOSS-container content is stored in the extdata registered for the programID specified in the BOSS-container, what task it's associated with / what title registered it is irrelevant with BOSS-container data storage.


==Custom SpotPass content==
==Custom SpotPass content==
Line 332: Line 555:
| 0x0
| 0x0
| 0x4
| 0x4
| ?
| Content data-type, originally from the [[SpotPass|BOSS-container]].
|}
|}


Line 581: Line 804:
| 0xC8A0F833
| 0xC8A0F833
| taskID not found.
| taskID not found.
|-
| 0xC8A0F836
| taskID already exists, for task creation.
|-
| 0xC8A0F842
| The specified programID is not setup for BOSS.
|-
| 0xC8A0F843
| The specified NsDataId was not found.
|}
|}
[[Category:Services]]