BOSS Savegame: Difference between revisions

No edit summary
DaniElectra (talk | contribs)
Expand proper documentation
 
Line 1: Line 1:
This page describes the content of the [[SpotPass|BOSS]] sysmodule savegame.
This page describes the content of the [[SpotPass|BOSS]] sysmodule savegame.


The savegame contains 7 files and no directories
The savegame contains the following files with no directories:


==BOSS_A.db==
==BOSS_A.db==
This file is a database containing information about applications and their session on BOSS.
{| class="wikitable"
! Offset !! Size !! Description
|-
| 0x0 || 0x4 || Magic Number (0x12348000)
|}
After that, an array of data entries with a size of 0x800 follow.
{| class="wikitable"
! Offset !! Size !! Description
|-
| 0x0 || 0x10 || [[#BOSS_A_EntryHeader|BOSS_A_EntryHeader]]
|-
| 0x10 || 0x120 || [[#BOSS_A_TitleInfo|BOSS_A_TitleInfo]]
|-
| 0x130 || 0x304 || [[#BOSS_A_Certs|BOSS_A_Certs]]
|-
| 0x434 || 0x4 || u32, Unknown. Unused?
|-
| 0x438 || 0x3C8 || Padding
|}
===BOSS_A_EntryHeader===
{| class="wikitable"
! Offset !! Size !! Description
|-
| 0x0 || 0x8 || u64, Program ID
|-
| 0x8 || 0x1 || bool, Valid
|-
| 0x9 || 0x1 || u8, Version. Latest version is 3
|-
| 0xA || 0x6 || Padding?
|}
===BOSS_A_TitleInfo===
{| class="wikitable"
! Offset !! Size !! Description
|-
| 0x0 || 0x8 || u64, Program ID
|-
| 0x8 || 0x1 || u8, Session maker (1: User, 2: Privileged)
|-
| 0x9 || 0x1 || bool, Optout flag
|-
| 0xA || 0x1 || bool, Arrival flag
|-
| 0xB || 0x5 || Unknown
|-
| 0x10 || 0x20 || [[#StorageEntry|StorageEntry]]
|-
| 0x30 || 0xF0 || Unknown
|}
===StorageEntry===
{| class="wikitable"
! Offset !! Size !! Description
|-
| 0x0 || 0x1 || bool, Registered
|-
| 0x1 || 0x1 || u8, MediaType (0: NAND, 1: SD)
|-
| 0x2 || 0x2 || u16, Entry ID
|-
| 0x4 || 0x4 || u32, Storage size
|-
| 0x8 || 0x8 || u64, Extdata ID
|-
| 0x10 || 0x1 || u8, Unknown
|-
| 0x11 || 0x3 || Padding
|-
| 0x14 || 0x4 || u32, Unknown
|-
| 0x18 || 0x2 || u16, Unknown
|-
| 0x1A || 0x2 || u16, Unknown
|-
| 0x1C || 0x4 || Unknown
|}
===BOSS_A_Certs===
{| class="wikitable"
! Offset !! Size !! Description
|-
| 0x0 || 0x1 || u8, Root CA count (stubbed to 0)
|-
| 0x1 || 0x3 || Padding
|-
| 0x4 || 0x100 || char[256][1], Root CA path
|-
| 0x104 || 0x100 || char[256], Client certificate path
|-
| 0x204 || 0x100 || char[256], Client certificate key path
|}


==BOSS_SS.db==
==BOSS_SS.db==
SS could stand for subscriptions
This file is a database containing static information about tasks.
{|class=wikitable
{| class="wikitable"
!Offset!!Size!!Description
! Offset !! Size !! Description
|-
| 0x0 || 0x4 || Magic Number (0x12348000)
|}
 
After that, an array of data entries with a size of 0xC00 follow. An index of this array corresponds to the data with same index in BOSS_SV.db
{| class="wikitable"
! Offset !! Size !! Description
|-
| 0x0 || 0x4 || [[#BOSS_SS_EntryHeader|BOSS_SS_EntryHeader]]
|-
| 0x4 || 0x7D4 || [[#TaskActionConfig|TaskActionConfig]]
|-
| 0x7D8 || 0xC || [[#TaskOptionConfig|TaskOptionConfig]]
|-
| 0x7E4 || 0x60 || [[#TaskQueryConfig|TaskQueryConfig]]
|-
| 0x844 || 0x3BC || Padding
|}
 
===BOSS_SS_EntryHeader===
{| class="wikitable"
! Offset !! Size !! Description
|-
| 0x0 || 0x1 || u8, Version. Latest version is 3
|-
|-
|0x00||4||Magic Number (0x12348000)
| 0x1 || 0x3 || Padding
|}
 
===TaskActionConfig===
Check the matching [[BOSS_Services#PropertyIDs|properties]] for more information about these fields.
{| class="wikitable"
! Offset !! Size !! Description
|-
| 0x0 || 0x1 || u8, [[BOSS_Services#ActionCode|ActionCode]]
|-
| 0x1 || 0x1 || u8, FS Root CA
|-
| 0x2 || 0x1 || u8, FS Client Cert
|-
| 0x3 || 0x1 || u8, [[BOSS_Services#ApInfoType|ApInfoType]]
|-
| 0x4 || 0x1 || u8, Property 0x9
|-
| 0x5 || 0x1 || u8, [[BOSS_Services#CfgInfoType|CfgInfoType]]
|-
| 0x6 || 0x2 || Padding
|-
| 0x8 || 0x4 || u32, Property 0x16
|-
| 0xC || 0x4 || u32, Property 0x8
|-
| 0x10 || 0x4 || u32, Property 0x3B
|-
| 0x14 || 0x4 || Handle, File handle
|-
| 0x18 || 0x200 || Action data
|-
| 0x218 || 0x200 || char[512], URL
|-
| 0x418 || 0x360 || HeaderFields
|-
| 0x790 || 0xC || u32[3], Root CAs
|-
| 0x79C || 0x4 || u32[1], Client certificates
|-
| 0x7A0 || 0x4 || u32, Root CA Count
|-
| 0x7A4 || 0x4 || u32, Client certificate count
|-
| 0x7A8 || 0x4 || Unknown
|-
| 0x7AC || 0x40 || Property 0x15
|}
 
===TaskOptionConfig===
Check the matching [[BOSS_Services#PropertyIDs|properties]] for more information about these fields.
{| class="wikitable"
! Offset !! Size !! Description
|-
| 0x0 || 0x1 || u8, Property 0x18
|-
| 0x1 || 0x1 || u8, Property 0x19
|-
| 0x2 || 0x1 || u8, Property 0x1A
|-
| 0x3 || 0x1 || Padding
|-
| 0x4 || 0x4 || u32, Property 0x1B
|-
| 0x8 || 0x4 || u32, Property 0x1C
|}
 
===TaskQueryConfig===
{| class="wikitable"
! Offset !! Size !! Description
|-
| 0x0 || 0x60 || QueryField[3]. Structure:
{| class="wikitable"
! Offset !! Size !! Description
|-
| 0x0 || 0x1 || bool, Used
|-
| 0x1 || 0xF || char[15], Query name
|-
| 0x10 || 0x10 || char[16], Query value
|}
|}
|}
After an array of data chunks with a chunk size of 0xC00 follow.
An index of this array seem to correspond to the data with same index in BOSS_SV.db


==BOSS_SV.db==
==BOSS_SV.db==
{|class=wikitable
This file is a database containing variable information about tasks.
!Offset!!Size!!Description
{| class="wikitable"
! Offset !! Size !! Description
|-
|-
|0x00||4||Magic Number (0x12348000)
| 0x0 || 0x4 || Magic Number (0x12348000)
|}
|}
After an array of data chunks with a chunk size of 0xC00 follow.


An index of this array seem to correspond to the data with same index in BOSS_SS.db
After that, an array of data entries with a size of 0xC00 follow. An index of this array corresponds to the data with same index in BOSS_SS.db
===Data Chunk===
{| class="wikitable"
{|class=wikitable
! Offset !! Size !! Description
!Offset!!Size!!Description
|-
|-
|0x00||16||Unknown
| 0x0 || 0x20 || [[#BOSS_SV_EntryHeader|BOSS_SV_EntryHeader]]
|-
|-
|0x10||8||Title ID
| 0x20 || 0x10 || [[#TaskPolicyConfig|TaskPolicyConfig]]
|-
| 0x30 || 0x78 || [[#TaskStatusInfo|TaskStatusInfo]]
|-
| 0xA8 || 0x1E0 || [[#BOSS_SV_Unk1|BOSS_SV_Unk1]]
|-
| 0x288 || 0x5A8 || [[#BOSS_SV_Unk2|BOSS_SV_Unk2]]
|-
| 0x830 || 0x108 || [[#BOSS_SV_Unk3|BOSS_SV_Unk3]]
|-
| 0x938 || 0x2C8 || Padding
|}
 
===BOSS_SV_EntryHeader===
{| class="wikitable"
! Offset !! Size !! Description
|-
|-
|0x18||8||Task ID (ASCII String)
| 0x0 || 0x3 || Magic: [0x41, 0x01, 0x01]
|-
|-
|0x20||8||Unknown
| 0x3 || 0x1 || u8, Version. Latest version is 3
|-
|-
|0x28||4||Intervall/Wait time until this task should be executed again (in seconds)
| 0x4 || 0xC || Padding?
|-
|-
|0x2C||4||Unknown
| 0x10 || 0x8 || u64, Program ID
|-
|-
|0x30||8||Timestamp. Seconds since year 2000 of the user setable time (RTC + user time offset). Time of the last successful download/execution of the task.
| 0x18 || 0x8 || char[8], Task ID
|}
|}
====Task sprelay====
 
{|class=wikitable
===TaskPolicyConfig===
!Offset!!Size!!Description
Check the matching [[BOSS_Services#PropertyIDs|properties]] for more information about these fields.
{| class="wikitable"
! Offset !! Size !! Description
|-
|-
|0x288||4||Unknown
| 0x0 || 0x1 || u8 [[BOSS_Services#PriorityLevel|PriorityLevel]]
|-
|-
|0x28C||4||Padding?
| 0x1 || 0x1 || u8, SchedulingPolicy
|-
|-
|0x290||8||Timestamp. Seconds since year 2000 of the RTC (no user time offset). Time of the last successful download of StreetPass Relay data.
| 0x2 || 0x1 || u8, TaskPermission
|-
|-
|0x298||4|| (?) Intervall/Wait time (in seconds) until the same access point (defined by its MAC address) will be used again.
| 0x3 || 0x1 || Padding?
|-
|-
|0x29C||4||Number of items in the visited access points list
| 0x4 || 0x4 || u32, TaskTargetDuration
|-
|-
|0x2A0||?||Visited Access Points List
| 0x8 || 0x4 || u32, Interval
|-
| 0xC || 0x4 || u32, Count
|}
|}


Visited Access Points List Entry
===TaskStatusInfo===
{|class=wikitable
Check the matching [[BOSS_Services#PropertyIDs|properties]] for more information about these fields.
!Offset!!Size!!Description
{| class="wikitable"
! Offset !! Size !! Description
|-
|-
|0x2A0||8||MAC address of access point
| 0x0 || 0x8 || u64, LastSuccessfulTimestamp
|-
|-
|0x2A8||4||Timestamp. Seconds since year 2000 of the RTC (no user time offset). Time of the last download from this access point.
| 0x8 || 0x8 || u64, Property 0x29
|-
|-
|0x2AC||4||Padding?
| 0x10 || 0x1 || u8, [[BOSS_Services#TaskStateCode|TaskStateCode]]
|-
| 0x11 || 0x1 || u8, Property 0x1E
|-
| 0x12 || 0x1 || u8, property 0x1F
|-
| 0x13 || 0x1 || u8, TaskServiceStatus
|-
| 0x14 || 0x1 || u8, Property 0x22
|-
| 0x15 || 0x1 || u8, TaskResultCode
|-
| 0x16 || 0x2 || Padding
|-
| 0x18 || 0x4 || u32, CommErrorCode
|-
| 0x1C || 0x4 || u32, Property 0x25
|-
| 0x20 || 0x4 || u32, Property 0x26
|-
| 0x24 || 0x4 || u32, Property 0x27
|-
| 0x28 || 0x4 || u32, Property 0x2A
|-
| 0x2C || 0x4 || u32, Property 0x2B
|-
| 0x30 || 0x2 || u16, Property 0x2D
|-
| 0x32 || 0x2 || u16, Property 0x2E
|-
| 0x34 || 0x1 || u8, Property 0x2C
|-
| 0x35 || 0x1 || u8, Property 0x24
|-
| 0x36 || 0x2 || Padding
|-
| 0x38 || 0x40 || char[64], LastModifiedHeader
|}
 
===BOSS_SV_Unk1===
{| class="wikitable"
! Offset !! Size !! Description
|-
| 0x0 || 0x3 || Unknown
|-
| 0x3 || 0x1 || u8, Task type (0: Normal, 1: Immediate, 2: Background immediate)
|-
| 0x4 || 0x4 || u32, Unknown
|-
| 0x8 || 0x4 || u32, Unknown
|-
| 0xC || 0x4 || u32, Unknown
|-
| 0x10 || 0x10 || Unknown
|-
| 0x20 || 0x40 || char[64], Timestamp?
|-
| 0x60 || 0x180 || Unknown
|}
 
===BOSS_SV_Unk2===
{| class="wikitable"
! Offset !! Size !! Description
|-
| 0x0 || 0x4 || u32, Unknown
|-
| 0x4 || 0x4 || u32, Unknown
|-
| 0x8 || 0x220 || Unknown
|-
| 0x228 || 0x20 || [[#StorageEntry|StorageEntry]]
|-
| 0x248 || 0x360 || Unknown
|}
 
===BOSS_SV_Unk3===
{| class="wikitable"
! Offset !! Size !! Description
|-
| 0x0 || 0x4 || u32, Unknown
|-
| 0x4 || 0x4 || u32, Unknown result
|-
| 0x8 || 0x4 || u32, Unknown
|-
| 0xC || 0xFC || Unknown
|}
|}
The last entry of this list should have the same timestamp as the timestamp at offset 0x290.


==BOSS_PH_INFO.db==
==BOSS_PH_INFO.db==
Line 76: Line 376:


==BOSS_SP_INFO.db==
==BOSS_SP_INFO.db==
==sendmgn00.up==