Changes

6,659 bytes added ,  00:19, 18 December 2022
Create Nintendo Badge Arcade (PrizeCollection structure currently missing)
'''Nintendo Badge Arcade''' is an application that allows getting badges for the 3DS's [[Home Menu]] via a claw machine-like game.

== [[SpotPass]] usage ==
The game can use four different URLs to retrieve game data.
* <nowiki>https://npdl.cdn.nintendowifi.net/p01/nsa/<regionID>/FGONLYT/playinfo_<gameVersion>.dat</nowiki>
* <nowiki>https://npdl.cdn.nintendowifi.net/p01/nsa/<regionID>/data/data_<gameVersion>.dat</nowiki> This file is a SARC archive with all game data (like machines and [[Miiverse]] posts) that is available within a period of one week. This data is updated every Friday at 1:40 AM GMT
* <nowiki>https://npdl.cdn.nintendowifi.net/p01/nsa/<regionID>/data/allbadge_<gameVersion>.dat</nowiki> This has a SARC archive with all game badges and machines for the game.
* <nowiki>https://npdl.cdn.nintendowifi.net/p01/nsa/<regionID>/news/<language>/news_<gameVersion>.dat</nowiki>

Where gameVersion goes the version of the game, which can be v130 or v131, langcode is the two-character language codes from [[Config Savegame#Languages|config]], and regionID is from the below table.

{| class="wikitable"
|-
! Region
! ID
|-
| JPN
| ?
|-
| USA
| OvbmGLZ9senvgV3K
|-
| EUR
| J6la9Kj8iqTvAPOq
|}

== RomFS ==
Inside the romfs data, we can find the following folders:

root
├── message
├── primitive_renderer
├── region_common
└── region_XXX

* "message" has all in-game dialogues
* "region_common" has a similar scheme to data.dat, but has all in-game assets
* "region_XXX" is similar as region_common, but has all region specific files, like the first badge machine. Where XXX goes the region name (EUR, JPN, USA)

== ExtData ==

Inside the extdata, we can find the following files:
* "addSaveData"
* "allbadge.sarc" A register of all badges retrieved from data_<gameVersion>.dat file?
* "boss.sarc" The data_<gameVersion>.dat file retrieved from SpotPass
* "savedata"

=== allbadge.sarc ===
This file uses the PrizeCollection structure.

=== boss.sarc ===
All game data stored here has the following structure:
root
├── message
├── post
├── sharc
├── talkpic
├── xml
└── Schedule.xml

==== message ====
This folder stored all online-related game dialogues on each language supported by the region. It goes down the following directories:

message
└── boss_XXX
└── XXxx
└── boss
└── slotAXX
├── BossText.msbt
├── Emergency.msbf
├── HallAd.msbf
├── PaidTalk.msbf
├── PostComment.msbf
├── RetnHall.msbf
├── StartUp.msbf
├── ThemeShop.msbf
└── Training.msbf

Where X goes the region, and x belongs to the language.
Within slotAXX, A is a letter and XX are numbers.

==== post ====
This folder stored all Miiverse posts related to customizing the Home Menu with themes and badges. Each SARC file inside here has the following sructure:

root
├── Image.jpg
├── Mii.Etc1_a4
└── post.xml

The post.xml file contains the following data:
<?xml version="1.0" encoding="utf-8"?>
<DistributablePost xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<index>x</index>
<Id><Post ID></Id>
<Name>Mii name</Name>
<PathMii>Mii.Etc1_a4</PathMii>
<PathImage>Image.jpg</PathImage>
</DistributablePost>

==== sharc ====
This folder stores the PrizeCollection file with the badges and machines available for the belonging week.

The file is named like this: YYmmdd_YYmmdd.sarc, where the first date is the starting day and the second one the ending.

==== talkpic ====
This folder contains some images inside SARC files. Each SARC file has the following content:

root
└── talkpic
└── <Name of SARC file>
└── The images...

==== xml ====
This folder has some XML data that controls some of the features inside this structure. It has the following structure:

xml
└── talkpic
└── TalkPic.xml

The TalkPic.xml file has the following data:

<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<CenterTalkPicProperty>
<TalkPicSet>
<TalkPic Key='<Name of image>' Arc='<Name of SARC file>' Width='512' Height='256' Format='Etc1 or Etc1_a4 or Rgb565' Type='400x240 (Original image resolution?)' Path='path/to/image'/>
</TalkPicSet>
</CenterTalkPicProperty>

==== Schedule.xml ====
This file controls the availability of each of the features inside this structure within the specified dates. It has the following data:

<?xml version="1.0" encoding="utf-8"?>
<FileItems xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Items>
<FileItem>
<DateStartText>YYYYmmdd</DateStartText>
<DateExpireText>YYYYmmdd</DateExpireText>
<ColorText>#aaaaff</ColorText>
<Comment />
<RegexSetName>MessageDir</RegexSetName>
<Expression>boss/output/message/(?&lt;Region&gt;boss_(JPN|EUR|USA))/(?&lt;Locale&gt;[a-zA-Z]+)/boss/(?&lt;Dir&gt;.+)</Expression>
<KeyVariable>Boss/</KeyVariable>
<ValueVariable>boss/$(Dir)/</ValueVariable>
<OutputVariable>boss/archive_src/$(ArchiveName)/message/$(Region)/$(Locale)/boss/$(Dir)/</OutputVariable>
<PreviewVariable />
<CommandVariable>path/to/command_used.bat</CommandVariable>
<ArgumentsVariable />
<Key>Boss/</Key>
<Value>boss/slotAXX/</Value>
<Output>boss/archive_src/BossYYYYmmdd_YYYYmmdd/message/boss_XXX/XXxx/boss/slotAXX/</Output>
<Preview />
<SrcPath>boss/output/message/boss_EUR/EUde/boss/slotD07</SrcPath>
<Command>path/to/command_used.bat</Command>
<Arguments />
</FileItem>
</Items>
<ItemsCount><Number of items></ItemsCount>
<BasePath>%CTR_CENTER_ROOT%/</BasePath>
<XMLPath>boss/archive_src/$(ArchiveName)/Schedule.xml</XMLPath>
<ArchiveName>Boss$(DateFrom)_$(DateTo)</ArchiveName>
<DateFrom>YYYY-mm-ddT00:00:00</DateFrom>
<DateTo>YYYY-mm-ddT00:00:00</DateTo>
</FileItems>

Each FileItem's content varies depending on its RegexSetName. Below are the possible values:

{| class="wikitable"
|-
! RegexSetName
! Key
! Value
|-
| MessageDir
| Boss/
| boss/slotAXX/
|-
| TalkPicTex
| TalkPicTex/
| TalkPicTex/
|-
| PrizeCollection
| sharc/pc00.sarc
| sharc/YYmmdd_YYmmdd.sarc
|-
| Post
| post/PostXX.sarc
| post/<Post ID>.sarc
|-
| BonusStage
| BonusStageName
| <Stage Name>
|-
| DefaultStage
| DefaultStageNameXXX
| <Stage Name>
|}
106

edits