NACP: Difference between revisions
Add info from Unity source |
Added info from a GameShare S2 NACP, etc. |
||
(33 intermediate revisions by 7 users not shown) | |||
Line 1: | Line 1: | ||
This is '''control.nacp''', "nn::ns::ApplicationControlProperty". | |||
Roughly equivalent to non-gfx areas of 3DS SMDH. All strings for language-entries are UTF-8, unlike SMDH which uses UTF-16. | Roughly equivalent to non-gfx areas of 3DS SMDH. All strings for language-entries are UTF-8, unlike SMDH which uses UTF-16. | ||
Line 11: | Line 13: | ||
|- | |- | ||
| 0x0 | | 0x0 | ||
| 0x3000 (0x300* | | 0x3000 (0x300 * 16) | ||
| [[# | | [[#ApplicationTitle|Title]] | ||
|- | |- | ||
| 0x3000 | | 0x3000 | ||
Line 24: | Line 26: | ||
| 0x3026 | | 0x3026 | ||
| 0x1 | | 0x1 | ||
| | | UserAccountSwitchLock | ||
|- | |- | ||
| 0x3027 | | 0x3027 | ||
| 0x1 | | 0x1 | ||
| | | AddOnContentRegistrationType | ||
|- | |- | ||
| 0x3028 | | 0x3028 | ||
| 0x4 | | 0x4 | ||
| | | AttributeFlag | ||
|- | |- | ||
| 0x302C | | 0x302C | ||
| 0x4 | | 0x4 | ||
| | | SupportedLanguageFlag | ||
|- | |- | ||
| 0x3030 | | 0x3030 | ||
| 0x4 | | 0x4 | ||
| | | ParentalControlFlag | ||
|- | |- | ||
| 0x3034 | | 0x3034 | ||
| 0x1 | | 0x1 | ||
| | | Screenshot | ||
|- | |- | ||
| 0x3035 | | 0x3035 | ||
| 0x1 | | 0x1 | ||
| | | [[#VideoCapture]] | ||
|- | |- | ||
| 0x3036 | | 0x3036 | ||
| 0x1 | | 0x1 | ||
| | | DataLossConfirmation | ||
|- | |- | ||
| 0x3037 | | 0x3037 | ||
| 0x1 | | 0x1 | ||
| | | [[#PlayLogPolicy]] | ||
|- | |- | ||
| 0x3038 | | 0x3038 | ||
Line 88: | Line 90: | ||
| 0x3090 | | 0x3090 | ||
| 0x8 | | 0x8 | ||
| | | DeviceSaveDataSize | ||
|- | |- | ||
| 0x3098 | | 0x3098 | ||
| 0x8 | | 0x8 | ||
| | | DeviceSaveDataJournalSize | ||
|- | |- | ||
| 0x30A0 | | 0x30A0 | ||
| 0x8 | | 0x8 | ||
| | | BcatDeliveryCacheStorageSize | ||
|- | |- | ||
| 0x30A8 | | 0x30A8 | ||
Line 103: | Line 105: | ||
|- | |- | ||
| 0x30B0 | | 0x30B0 | ||
| 0x40 (0x8* | | 0x40 (0x8 * 8) | ||
| | | LocalCommunicationId | ||
|- | |- | ||
| 0x30F0 | | 0x30F0 | ||
Line 116: | Line 118: | ||
| 0x30F2 | | 0x30F2 | ||
| 0x1 | | 0x1 | ||
| | | RuntimeAddOnContentInstall | ||
|- | |- | ||
| 0x30F3 | | 0x30F3 | ||
| | | 0x1 | ||
| | | RuntimeParameterDelivery | ||
|- | |||
| 0x30F4 | |||
| 0x1 | |||
| AppropriateAgeForChina | |||
|- | |||
| 0x30F5 | |||
| 0x1 | |||
| Reserved | |||
|- | |- | ||
| 0x30F6 | | 0x30F6 | ||
| 0x1 | | 0x1 | ||
| | | CrashReport | ||
|- | |- | ||
| 0x30F7 | | 0x30F7 | ||
| 0x1 | | 0x1 | ||
| | | Hdcp | ||
|- | |- | ||
| 0x30F8 | | 0x30F8 | ||
Line 136: | Line 146: | ||
| 0x3100 | | 0x3100 | ||
| 0x41 | | 0x41 | ||
| [[BCAT_Content_Container|BcatPassphrase]] | | [[BCAT_Content_Container|BcatPassphrase]] (all-zero when unused) | ||
|- | |- | ||
| 0x3141 | | 0x3141 | ||
| 0x1 | | 0x1 | ||
| | | StartupUserAccountOption | ||
|- | |- | ||
| 0x3142 | | 0x3142 | ||
| 0x6 | | 0x6 | ||
| | | ReservedForUserAccountSaveDataOperation | ||
|- | |- | ||
| 0x3148 | | 0x3148 | ||
| 0x8 | | 0x8 | ||
| | | UserAccountSaveDataSizeMax | ||
|- | |- | ||
| 0x3150 | | 0x3150 | ||
| 0x8 | | 0x8 | ||
| | | UserAccountSaveDataJournalSizeMax | ||
|- | |- | ||
| 0x3158 | | 0x3158 | ||
| 0x8 | | 0x8 | ||
| | | DeviceSaveDataSizeMax | ||
|- | |- | ||
| 0x3160 | | 0x3160 | ||
| 0x8 | | 0x8 | ||
| | | DeviceSaveDataJournalSizeMax | ||
|- | |- | ||
| 0x3168 | | 0x3168 | ||
| 0x8 | | 0x8 | ||
| | | TemporaryStorageSize | ||
|- | |- | ||
| 0x3170 | | 0x3170 | ||
| 0x8 | | 0x8 | ||
| | | CacheStorageSize | ||
|- | |- | ||
| 0x3178 | | 0x3178 | ||
| 0x8 | | 0x8 | ||
| | | CacheStorageJournalSize | ||
|- | |- | ||
| 0x3180 | | 0x3180 | ||
| | | 0x8 | ||
| | | CacheStorageDataAndJournalSizeMax | ||
|- | |||
| 0x3188 | |||
| 0x2 | |||
| CacheStorageIndexMax | |||
|- | |||
| 0x318A | |||
| 0x1 | |||
| Reserved | |||
|- | |||
| 0x318B | |||
| 0x1 | |||
| RuntimeUpgrade | |||
|- | |||
| 0x318C | |||
| 0x4 | |||
| SupportingLimitedApplicationLicenses | |||
|- | |||
| 0x3190 | |||
| 0x80 (0x8 * 16) | |||
| PlayLogQueryableApplicationId | |||
|- | |||
| 0x3210 | |||
| 0x1 | |||
| PlayLogQueryCapability | |||
|- | |||
| 0x3211 | |||
| 0x1 | |||
| RepairFlag | |||
|- | |||
| 0x3212 | |||
| 0x1 | |||
| ProgramIndex | |||
|- | |||
| 0x3213 | |||
| 0x1 | |||
| RequiredNetworkServiceLicenseOnLaunchFlag | |||
|- | |||
| 0x3214 | |||
| 0x1 | |||
| [20.0.0+] [[#ApplicationErrorCodePrefix|ApplicationErrorCodePrefix]] | |||
|- | |||
| 0x3215 | |||
| 0x1 | |||
| Reserved | |||
|- | |||
| 0x3216 | |||
| 0x1 | |||
| [20.0.0+] AcdIndex | |||
|- | |||
| 0x3217 | |||
| 0x1 | |||
| [20.0.0+] [[#ApparentPlatform|ApparentPlatform]] | |||
|- | |||
| 0x3218 | |||
| 0x198 | |||
| [[#ApplicationNeighborDetectionClientConfiguration|NeighborDetectionClientConfiguration]] | |||
|- | |||
| 0x33B0 | |||
| 0x10 | |||
| [[#ApplicationJitConfiguration|JitConfiguration]] | |||
|- | |||
| 0x33C0 | |||
| 0x40 | |||
| [[#RequiredAddOnContentsSetBinaryDescriptor|RequiredAddOnContentsSetBinaryDescriptor]] | |||
|- | |||
| 0x3400 | |||
| 0x1 | |||
| PlayReportPermission | |||
|- | |||
| 0x3401 | |||
| 0x1 | |||
| CrashScreenshotForProd | |||
|- | |||
| 0x3402 | |||
| 0x1 | |||
| CrashScreenshotForDev | |||
|- | |||
| 0x3403 | |||
| 0x1 | |||
| ContentsAvailabilityTransitionPolicy | |||
|- | |||
| 0x3404 | |||
| 0x4 | |||
| Reserved | |||
|- | |||
| 0x3408 | |||
| 0x40 | |||
| [[#AccessibleLaunchRequiredVersionValue|AccessibleLaunchRequiredVersion]] | |||
|- | |||
| 0x3448 | |||
| 0x89 | |||
| [20.0.0+] [[#ApplicationControlDataCondition|ApplicationControlDataCondition]] | |||
|- | |||
| 0x34D1 | |||
| 0x1 | |||
| [20.0.0+] InitialProgramIndex | |||
|- | |||
| 0x34D2 | |||
| 0x2 | |||
| Reserved | |||
|- | |||
| 0x34D4 | |||
| 0x4 | |||
| [20.0.0+] AccessibleProgramIndexFlags | |||
|- | |||
| 0x34D8 | |||
| 0x1 | |||
| [20.0.0+] AlbumFileExport | |||
|- | |||
| 0x34D9 | |||
| 0x7 | |||
| Reserved | |||
|- | |||
| 0x34E0 | |||
| 0x80 | |||
| [20.0.0+] [[#SaveDataCertificateBytes|SaveDataCertificateBytes]] | |||
|- | |||
| 0x3560 | |||
| 0x1 | |||
| [20.0.0+] HasInGameVoiceChat | |||
|- | |||
| 0x3561 | |||
| 0x3 | |||
| Reserved | |||
|- | |||
| 0x3564 | |||
| 0x4 | |||
| [20.0.0+] SupportedExtraAddOnContentFlag | |||
|- | |||
| 0x3568 | |||
| 0x698 | |||
| Reserved | |||
|- | |||
| 0x3C00 | |||
| 0x400 | |||
| [20.0.0+] [[#PlatformSpecificRegion|PlatformSpecificRegion]] | |||
|} | |} | ||
== | == ApplicationTitle == | ||
Total size is 0x300-bytes. | Total size is 0x300-bytes. | ||
Line 229: | Line 375: | ||
| 12 || "Korean" | | 12 || "Korean" | ||
|- | |- | ||
| 13 || " | | 13 || "TraditionalChinese" | ||
|- | |||
| 14 || "SimplifiedChinese" | |||
|- | |||
| 15 || [10.1.0+] "BrazilianPortuguese" | |||
|} | |||
Official apps tend to have most of the title entries' strings set only to English. Some apps don't have certain title entries set at all. | |||
== VideoCapture == | |||
This is the enum used to determine how gameplay recording can occur, if at all. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Meaning | |||
|- | |||
| 0 || Disabled | |||
|- | |||
| 1 || Enabled | |||
|- | |||
| 2 || Automatic | |||
|} | |||
When this value is 0, gameplay cannot be recorded. When this value is 1, the game must manually sacrifice some of its heap as transfer memory for AM's IApplicationProxy->InitializeGamePlayRecording(). When this value is 2, AM will call NS->BoostSystemMemoryResourceSize(), and allocate the required memory for recording automatically without the usermode process having to do anything. | |||
== PlayLogPolicy == | |||
[[Applet_Manager_services|AM]] passes [[Shared_Database_services#PlayLogPolicy|this]] to [[Shared_Database_services|pdm:ntfy]] cmd9. | |||
== PlayLogQueryCapability == | |||
This is used with [[Applet_Manager_services|AM]] commands QueryApplicationPlayStatistics and QueryApplicationPlayStatisticsByUid, to verify whether querying the specified titleIDs are allowed. When not allowed, error 0x3E880 is returned. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value || Meaning || Description | |||
|- | |||
| 0 || None || The specified titleIDs must match the user-process titleID. | |||
|- | |||
| 1 || WhiteList || The specified titleIDs must match the user-process titleID, or one of the titleIDs from PlayLogQueryableApplicationId. | |||
|- | |||
| 2 || All || All titleIDs are allowed. | |||
|} | |||
== ApplicationErrorCodePrefix == | |||
S1 games (including S2-Edition) built for [20.0.0+] set this to 0x2. This is set to 0x3 with S2-only games. | |||
== ApparentPlatform == | |||
This is 0x0 with S1 games. This is set to 0x1 with S2-only and Switch 2 Edition games. | |||
== ApplicationNeighborDetectionClientConfiguration == | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x18 | |||
| [[#ApplicationNeighborDetectionGroupConfiguration|SendGroupConfiguration]] | |||
|- | |||
| 0x18 | |||
| 0x180 (0x18 * 16) | |||
| [[#ApplicationNeighborDetectionGroupConfiguration|ReceivableGroupConfigurations]] | |||
|} | |||
=== ApplicationNeighborDetectionGroupConfiguration === | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| GroupId | |||
|- | |||
| 0x8 | |||
| 0x10 | |||
| Key | |||
|} | |||
== ApplicationJitConfiguration == | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 | |||
| Flags | |||
|- | |||
| 0x8 | |||
| 0x8 | |||
| MemorySize | |||
|} | |||
== RequiredAddOnContentsSetBinaryDescriptor == | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x40 (0x2 * 32) | |||
| Descriptors | |||
|} | |||
== AccessibleLaunchRequiredVersionValue == | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |- | ||
| | | 0x0 | ||
| 0x40 (0x8 * 8) | |||
| Array of [[NCM_services#ApplicationId|ApplicationId]] | |||
|} | |} | ||
== ApplicationControlDataCondition == | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x8 (0x1 * 8) | |||
| Type | |||
|- | |||
| 0x8 | |||
| 0x80 (0x10 * 8) | |||
| [[#ApplicationControlDataConditionData|Data]] | |||
|- | |||
| 0x88 | |||
| 0x1 | |||
| Count | |||
|} | |||
=== ApplicationControlDataConditionData === | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 | |||
| 0x1 | |||
| Priority | |||
|- | |||
| 0x1 | |||
| 0x7 | |||
| Reserved | |||
|- | |||
| 0x8 | |||
| 0x2 | |||
| AocIndex | |||
|- | |||
| 0xA | |||
| 0x6 | |||
| Reserved | |||
|} | |||
== SaveDataCertificateBytes == | |||
When initialized, the first two bytes here are both 0x1. With S2-only games, the second byte is instead set to 0x4. | |||
u8 +0x11 is 0x0 with S1 games, this is 0x1 with S2-only games. | |||
== PlatformSpecificRegion == | |||
Data here is only initialized with S2-only games. |
Latest revision as of 20:49, 21 July 2025
This is control.nacp, "nn::ns::ApplicationControlProperty".
Roughly equivalent to non-gfx areas of 3DS SMDH. All strings for language-entries are UTF-8, unlike SMDH which uses UTF-16.
Total size is 0x4000-bytes.
Structure
Offset | Size | Description |
---|---|---|
0x0 | 0x3000 (0x300 * 16) | Title |
0x3000 | 0x25 | Isbn |
0x3025 | 0x1 | StartupUserAccount |
0x3026 | 0x1 | UserAccountSwitchLock |
0x3027 | 0x1 | AddOnContentRegistrationType |
0x3028 | 0x4 | AttributeFlag |
0x302C | 0x4 | SupportedLanguageFlag |
0x3030 | 0x4 | ParentalControlFlag |
0x3034 | 0x1 | Screenshot |
0x3035 | 0x1 | #VideoCapture |
0x3036 | 0x1 | DataLossConfirmation |
0x3037 | 0x1 | #PlayLogPolicy |
0x3038 | 0x8 | PresenceGroupId |
0x3040 | 0x20 | RatingAge |
0x3060 | 0x10 | DisplayVersion |
0x3070 | 0x8 | AddOnContentBaseId |
0x3078 | 0x8 | SaveDataOwnerId |
0x3080 | 0x8 | UserAccountSaveDataSize |
0x3088 | 0x8 | UserAccountSaveDataJournalSize |
0x3090 | 0x8 | DeviceSaveDataSize |
0x3098 | 0x8 | DeviceSaveDataJournalSize |
0x30A0 | 0x8 | BcatDeliveryCacheStorageSize |
0x30A8 | 0x8 | ApplicationErrorCodeCategory |
0x30B0 | 0x40 (0x8 * 8) | LocalCommunicationId |
0x30F0 | 0x1 | LogoType |
0x30F1 | 0x1 | LogoHandling |
0x30F2 | 0x1 | RuntimeAddOnContentInstall |
0x30F3 | 0x1 | RuntimeParameterDelivery |
0x30F4 | 0x1 | AppropriateAgeForChina |
0x30F5 | 0x1 | Reserved |
0x30F6 | 0x1 | CrashReport |
0x30F7 | 0x1 | Hdcp |
0x30F8 | 0x8 | SeedForPseudoDeviceId |
0x3100 | 0x41 | BcatPassphrase (all-zero when unused) |
0x3141 | 0x1 | StartupUserAccountOption |
0x3142 | 0x6 | ReservedForUserAccountSaveDataOperation |
0x3148 | 0x8 | UserAccountSaveDataSizeMax |
0x3150 | 0x8 | UserAccountSaveDataJournalSizeMax |
0x3158 | 0x8 | DeviceSaveDataSizeMax |
0x3160 | 0x8 | DeviceSaveDataJournalSizeMax |
0x3168 | 0x8 | TemporaryStorageSize |
0x3170 | 0x8 | CacheStorageSize |
0x3178 | 0x8 | CacheStorageJournalSize |
0x3180 | 0x8 | CacheStorageDataAndJournalSizeMax |
0x3188 | 0x2 | CacheStorageIndexMax |
0x318A | 0x1 | Reserved |
0x318B | 0x1 | RuntimeUpgrade |
0x318C | 0x4 | SupportingLimitedApplicationLicenses |
0x3190 | 0x80 (0x8 * 16) | PlayLogQueryableApplicationId |
0x3210 | 0x1 | PlayLogQueryCapability |
0x3211 | 0x1 | RepairFlag |
0x3212 | 0x1 | ProgramIndex |
0x3213 | 0x1 | RequiredNetworkServiceLicenseOnLaunchFlag |
0x3214 | 0x1 | [20.0.0+] ApplicationErrorCodePrefix |
0x3215 | 0x1 | Reserved |
0x3216 | 0x1 | [20.0.0+] AcdIndex |
0x3217 | 0x1 | [20.0.0+] ApparentPlatform |
0x3218 | 0x198 | NeighborDetectionClientConfiguration |
0x33B0 | 0x10 | JitConfiguration |
0x33C0 | 0x40 | RequiredAddOnContentsSetBinaryDescriptor |
0x3400 | 0x1 | PlayReportPermission |
0x3401 | 0x1 | CrashScreenshotForProd |
0x3402 | 0x1 | CrashScreenshotForDev |
0x3403 | 0x1 | ContentsAvailabilityTransitionPolicy |
0x3404 | 0x4 | Reserved |
0x3408 | 0x40 | AccessibleLaunchRequiredVersion |
0x3448 | 0x89 | [20.0.0+] ApplicationControlDataCondition |
0x34D1 | 0x1 | [20.0.0+] InitialProgramIndex |
0x34D2 | 0x2 | Reserved |
0x34D4 | 0x4 | [20.0.0+] AccessibleProgramIndexFlags |
0x34D8 | 0x1 | [20.0.0+] AlbumFileExport |
0x34D9 | 0x7 | Reserved |
0x34E0 | 0x80 | [20.0.0+] SaveDataCertificateBytes |
0x3560 | 0x1 | [20.0.0+] HasInGameVoiceChat |
0x3561 | 0x3 | Reserved |
0x3564 | 0x4 | [20.0.0+] SupportedExtraAddOnContentFlag |
0x3568 | 0x698 | Reserved |
0x3C00 | 0x400 | [20.0.0+] PlatformSpecificRegion |
ApplicationTitle
Total size is 0x300-bytes.
Offset | Size | Description |
---|---|---|
0x0 | 0x200 | Application name strings |
0x200 | 0x100 | Application publisher strings |
Entry index for each language:
Entry-index | Icon language filename |
---|---|
0 | "AmericanEnglish" |
1 | "BritishEnglish" |
2 | "Japanese" |
3 | "French" |
4 | "German" |
5 | "LatinAmericanSpanish" |
6 | "Spanish" |
7 | "Italian" |
8 | "Dutch" |
9 | "CanadianFrench" |
10 | "Portuguese" |
11 | "Russian" |
12 | "Korean" |
13 | "TraditionalChinese" |
14 | "SimplifiedChinese" |
15 | [10.1.0+] "BrazilianPortuguese" |
Official apps tend to have most of the title entries' strings set only to English. Some apps don't have certain title entries set at all.
VideoCapture
This is the enum used to determine how gameplay recording can occur, if at all.
Value | Meaning |
---|---|
0 | Disabled |
1 | Enabled |
2 | Automatic |
When this value is 0, gameplay cannot be recorded. When this value is 1, the game must manually sacrifice some of its heap as transfer memory for AM's IApplicationProxy->InitializeGamePlayRecording(). When this value is 2, AM will call NS->BoostSystemMemoryResourceSize(), and allocate the required memory for recording automatically without the usermode process having to do anything.
PlayLogPolicy
AM passes this to pdm:ntfy cmd9.
PlayLogQueryCapability
This is used with AM commands QueryApplicationPlayStatistics and QueryApplicationPlayStatisticsByUid, to verify whether querying the specified titleIDs are allowed. When not allowed, error 0x3E880 is returned.
Value | Meaning | Description |
---|---|---|
0 | None | The specified titleIDs must match the user-process titleID. |
1 | WhiteList | The specified titleIDs must match the user-process titleID, or one of the titleIDs from PlayLogQueryableApplicationId. |
2 | All | All titleIDs are allowed. |
ApplicationErrorCodePrefix
S1 games (including S2-Edition) built for [20.0.0+] set this to 0x2. This is set to 0x3 with S2-only games.
ApparentPlatform
This is 0x0 with S1 games. This is set to 0x1 with S2-only and Switch 2 Edition games.
ApplicationNeighborDetectionClientConfiguration
Offset | Size | Description |
---|---|---|
0x0 | 0x18 | SendGroupConfiguration |
0x18 | 0x180 (0x18 * 16) | ReceivableGroupConfigurations |
ApplicationNeighborDetectionGroupConfiguration
Offset | Size | Description |
---|---|---|
0x0 | 0x8 | GroupId |
0x8 | 0x10 | Key |
ApplicationJitConfiguration
Offset | Size | Description |
---|---|---|
0x0 | 0x8 | Flags |
0x8 | 0x8 | MemorySize |
RequiredAddOnContentsSetBinaryDescriptor
Offset | Size | Description |
---|---|---|
0x0 | 0x40 (0x2 * 32) | Descriptors |
AccessibleLaunchRequiredVersionValue
Offset | Size | Description |
---|---|---|
0x0 | 0x40 (0x8 * 8) | Array of ApplicationId |
ApplicationControlDataCondition
Offset | Size | Description |
---|---|---|
0x0 | 0x8 (0x1 * 8) | Type |
0x8 | 0x80 (0x10 * 8) | Data |
0x88 | 0x1 | Count |
ApplicationControlDataConditionData
Offset | Size | Description |
---|---|---|
0x0 | 0x1 | Priority |
0x1 | 0x7 | Reserved |
0x8 | 0x2 | AocIndex |
0xA | 0x6 | Reserved |
SaveDataCertificateBytes
When initialized, the first two bytes here are both 0x1. With S2-only games, the second byte is instead set to 0x4.
u8 +0x11 is 0x0 with S1 games, this is 0x1 with S2-only games.
PlatformSpecificRegion
Data here is only initialized with S2-only games.