Changes

Jump to navigation Jump to search
m
Minor improvements
Line 83: Line 83:  
| 0x4
 
| 0x4
 
| Header magic (CIBS)
 
| Header magic (CIBS)
 +
|-
 +
| 0x4
 +
| 0x4
 +
| File version (0x3)
 +
|-
 +
| 0x8
 +
| 0x4
 +
| File length
 +
|-
 +
| 0xC
 +
| 0x4
 +
| Start address of header data (starting at ID)
 +
|-
 +
| 0x10
 +
| 0x4
 +
| End address of header data
 +
|-
 +
| 0x14
 +
| 0x4
 +
| Start address of display names
 +
|-
 +
| 0x18
 +
| 0x4
 +
| End address of display names
 +
|-
 +
| 0x1C
 +
| 0x4
 +
| Start address of component names
 +
|-
 +
| 0x20
 +
| 0x4
 +
| End address of component names
 +
|-
 +
| 0x24
 +
| 0x4
 +
| Start address of crane instance properties
 +
|-
 +
| 0x28
 +
| 0x4
 +
| End address of crane instance properties
 +
|-
 +
| 0x2C
 +
| 0x4
 +
| Crane instance ID
 
|-
 
|-
 
| 0x30
 
| 0x30
Line 95: Line 139:  
| 0x30
 
| 0x30
 
| Crane Icon name
 
| Crane Icon name
 +
|-
 +
| 0xC0
 +
| 0x4
 +
| [[#Crane availability|Crane availability]]
 +
|-
 +
| 0xC4
 +
| 0x4
 +
| Unknown (usually 0x3?)
 +
|-
 +
| 0xC8
 +
| 0xC
 +
| [[#Crane color|Crane color]]
 +
|-
 +
| 0xD4
 +
| 0x4
 +
| [[#Crane type|Crane type]]
 +
|-
 +
| 0xD8
 +
| 0x8
 +
| Unknown (usually zero?)
 +
|-
 +
| 0xE0
 +
| 0x4
 +
| Number of prizes
 +
|-
 +
| 0xE4
 +
| 0x4
 +
| Number of attachments
 +
|-
 +
| 0xE8
 +
| 0x4
 +
| Number of fixed objects
 +
|-
 +
| 0xEC
 +
| 0x4
 +
| Number of on-machine prizes
 +
|-
 +
| 0xF0
 +
| 0x4
 +
| Number of on-collection prizes
 +
|-
 +
| 0xF4
 +
| 0x4
 +
| Number of on-machine attachments
 +
|-
 +
| 0xF8
 +
| 0x4
 +
| Number of on-machine fixed objects
 +
|-
 +
| 0xFC
 +
| 0x4
 +
| Number of attachment badges
 
|-
 
|-
 
| 0x100
 
| 0x100
 
| 0x1000
 
| 0x1000
| [[#Language Names|Language Names]]
+
| [[#Language Names|Display names]]
 +
|-
 +
| 0x1100
 +
| 0xB40
 +
| [[#Component Names|Component names]]
 +
|-
 +
| 0x1C40
 +
| 0x2440
 +
| [[#Crane Instance Properties|Crane instance properties]]
 +
|}
 +
 
 +
=== Crane availability ===
 +
This section defines where a machine is available to be used.
 +
 
 +
{| class="wikitable"
 +
|-
 +
! Value
 +
! Crane availability
 +
|-
 +
| 0x0
 +
| Available on crane game
 +
|-
 +
| 0x1
 +
| Unknown
 +
|-
 +
| 0x2
 +
| Available on tutorial crane
 +
|}
 +
 
 +
=== Crane color ===
 +
This section defines the color of a crane. The color is set with three float32 values with a range from 0 to 1 corresponding to RGB values.
 +
 
 +
{| class="wikitable"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0xC8
 +
| 0x4
 +
| Crane red color
 +
|-
 +
| 0xCC
 +
| 0x4
 +
| Crane green color
 
|-
 
|-
| 0x1100 + Offset
+
| 0xD0
 +
| 0x4
 +
| Crane blue color
 +
|}
 +
 
 +
=== Crane type ===
 +
This section selects the crane used on the machine.
 +
 
 +
{| class="wikitable"
 +
|-
 +
! Value
 +
! Crane type
 +
|-
 +
| 0x0
 +
| Standard crane
 +
|-
 +
| 0x1
 +
| Hammer crane
 +
|-
 +
| 0x2
 +
| Unused crane
 +
|-
 +
| 0x3
 +
| Stick crane
 +
|-
 +
| 0x4
 +
| Bomb crane
 +
|}
 +
 
 +
=== Component Names ===
 +
This section has the names of all the components (prizes, attachments and fixed objects) used within a crane instance. Attachments are optional, others are unknown.
 +
 +
Each list of components is then zero-indexed for later use on setting its properties.
 +
 
 +
{| class="wikitable"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x1100
 +
| 0x30
 +
| Prize name
 +
|-
 +
|
 +
| 0x30
 +
| Optional prize name(s)
 +
|-
 +
| 0x14C0
 +
| 0x30
 +
| Attachment name
 +
|-
 +
|
 
| 0x30
 
| 0x30
| Prize name x
+
| Optional attachment name(s)
 
|-
 
|-
| 0x1880 + Offset
+
| 0x1880
 
| 0x30
 
| 0x30
| Fixed Object name x
+
| Fixed object name
 +
|-
 +
|
 +
| 0x30
 +
| Optional fixed object name(s)
 
|}
 
|}
   −
Offset = 0x30 * x
+
=== Crane Instance Properties ===
 +
This section has the properties of all the components (prizes, attachments and fixed objects) and defines how many of them are used within a set.
 +
 
 +
{| class="wikitable"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x1C40
 +
| 0x60
 +
| On-machine prize property
 +
|-
 +
|
 +
| 0x60
 +
| Optional on-machine prize properties
 +
|-
 +
| 0x23C0
 +
| 0x60
 +
| On-collection prize property
 +
|-
 +
|
 +
| 0x60
 +
| Optional on-collection prize properties
 +
|-
 +
| 0x2F00
 +
| 0x60
 +
| On-machine attachment property
 +
|-
 +
|
 +
| 0x60
 +
| Optional on-machine attachment properties
 +
|-
 +
| 0x3680
 +
| 0x60
 +
| On-machine fixed object property
 +
|-
 +
|
 +
| 0x60
 +
| Optional on-machine fixed object properties
 +
|-
 +
| 0x3E00
 +
| 0x20
 +
| Attachment badge property
 +
|-
 +
|
 +
| 0x20
 +
| Optional attachment badge properties
 +
|}
 +
 
 +
==== Component properties ====
 +
All component-related properties set the visible components on the crane instance or the collection. Each component can be set more than once with different properties.
 +
 
 +
In case of prizes, this allows the player to get a prize more than once or repeat it inside the collection.
 +
 
 +
Unless stated otherwise, all of the properties are saved as float32 values.
 +
 
 +
{| class="wikitable"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x4
 +
| Component index (u32)
 +
|-
 +
| 0x4
 +
| 0x4
 +
| Width scale
 +
|-
 +
| 0x8
 +
| 0x4
 +
| Height scale
 +
|-
 +
| 0xC
 +
| 0x4
 +
| Component rotation (clockwise)
 +
|-
 +
| 0x10
 +
| 0x4
 +
| Width position (zero means left)
 +
|-
 +
| 0x14
 +
| 0x4
 +
| Height position (zero means top)
 +
|-
 +
| 0x18
 +
| 0x4
 +
| Unknown property (usually around 0.2?)
 +
|-
 +
| 0x1C
 +
| 0x4
 +
| Unknown property
 +
|-
 +
| 0x20
 +
| 0x4
 +
| Unknown property (usually 0.5?)
 +
|-
 +
| 0x24
 +
| 0x4
 +
| Unknown property (linked with 0x28?)
 +
|-
 +
| 0x28
 +
| 0x4
 +
| Unknown property (linked with 0x24?)
 +
|-
 +
| 0x2C
 +
| 0x4
 +
| Component gravity at start (0x0 = gravity, 0x1 = no gravity)
 +
|-
 +
| 0x30
 +
| 0x30
 +
| Unknown properties
 +
|}
 +
 
 +
The position is calculated using the 3DS screen as a reference (400x240).
 +
 
 +
==== Attachment badge properties ====
 +
This property sets the union of a badge with an attachment.
 +
 
 +
{| class="wikitable"
 +
|-
 +
! Offset
 +
! Size
 +
! Description
 +
|-
 +
| 0x0
 +
| 0x4
 +
| Unknown (usually zero?)
 +
|-
 +
| 0x4
 +
| 0x4
 +
| Unknown (usually 1?)
 +
|-
 +
| 0x8
 +
| 0x4
 +
| Unknown
 +
|-
 +
| 0xC
 +
| 0x4
 +
| Index of attachment selected
 +
|-
 +
| 0x10
 +
| 0x4
 +
| Index of badge selected
 +
|-
 +
| 0x14
 +
| 0x4
 +
| Width position of attachment (float32)
 +
|-
 +
| 0x18
 +
| 0x4
 +
| Height position of attachment (float32)
 +
|-
 +
| 0x1C
 +
| 0x4
 +
| Unknown (usually zero?)
 +
|}
    
== Attachment (atb) ==
 
== Attachment (atb) ==
An attachment file stores the data of an immovable object and its image.
+
An attachment file stores the data of an object with badges attached and its image.
    
{| class="wikitable"
 
{| class="wikitable"
Line 123: Line 477:  
| 0x4
 
| 0x4
 
| Header magic (ATBS)
 
| Header magic (ATBS)
 +
|-
 +
| 0x4
 +
| 0x4
 +
| File version (0x3)
 +
|-
 +
| 0x8
 +
| 0x4
 +
| File length
 +
|-
 +
| 0xC
 +
| 0x4
 +
| Start address of header data (starts at name)
 +
|-
 +
| 0x10
 +
| 0x4
 +
| End address of header data
 +
|-
 +
| 0x14
 +
| 0x4
 +
| Start address of image
 +
|-
 +
| 0x18
 +
| 0x4
 +
| End address of image
 +
|-
 +
| 0x1C
 +
| 0x4
 +
| Start address of A8 data
 +
|-
 +
| 0x20
 +
| 0x4
 +
| End address of A8 data
 +
|-
 +
| 0x24
 +
| 0x4
 +
| Start address of collision data
 +
|-
 +
| 0x28
 +
| 0x4
 +
| End address of collision data
 
|-
 
|-
 
| 0x2C
 
| 0x2C
Line 135: Line 529:  
| 0x4
 
| 0x4
 
| Image height
 
| Image height
 +
|-
 +
| 0x64
 +
| 0x1C
 +
| Padding
 
|-
 
|-
 
| 0x80
 
| 0x80
Line 143: Line 541:  
| w * h
 
| w * h
 
| A8 data of previous image
 
| A8 data of previous image
 +
|-
 +
| 0x80 + 2 * (w * h)
 +
|
 +
| [[#Collision data|Collision data]]
 
|}
 
|}
   Line 157: Line 559:  
| 0x4
 
| 0x4
 
| Header magic (ICBS)
 
| Header magic (ICBS)
 +
|-
 +
| 0x4
 +
| 0x4
 +
| File version (0x3)
 +
|-
 +
| 0x8
 +
| 0x4
 +
| File length
 +
|-
 +
| 0xC
 +
| 0x4
 +
| Start address of header data (starts at name)
 +
|-
 +
| 0x10
 +
| 0x4
 +
| End address of header data (ORed with 0x80?)
 +
|-
 +
| 0x14
 +
| 0x4
 +
| Start address of image
 +
|-
 +
| 0x18
 +
| 0x4
 +
| End address of image
 
|-
 
|-
 
| 0x1C
 
| 0x1C
 
| 0x30
 
| 0x30
 
| Crane icon name
 
| Crane icon name
 +
|-
 +
| 0x4C
 +
| 0xB4
 +
| Padding
 
|-
 
|-
 
| 0x100
 
| 0x100
Line 179: Line 609:  
| 0x4
 
| 0x4
 
| Header magic (CABS)
 
| Header magic (CABS)
 +
|-
 +
| 0x4
 +
| 0x4
 +
| File version (0x3)
 +
|-
 +
| 0x8
 +
| 0x4
 +
| File length
 +
|-
 +
| 0xC
 +
| 0x4
 +
| Start address of header data (starts at ID)
 +
|-
 +
| 0x10
 +
| 0x4
 +
| End address of header data
 +
|-
 +
| 0x14
 +
| 0x4
 +
| Start address of display names
 +
|-
 +
| 0x18
 +
| 0x4
 +
| End address of display names
 +
|-
 +
| 0x1C
 +
| 0x4
 +
| Start address of image
 +
|-
 +
| 0x20
 +
| 0x4
 +
| End address of image
 
|-
 
|-
 
| 0x24
 
| 0x24
 
| 0x4
 
| 0x4
 
| Category ID
 
| Category ID
 +
|-
 +
| 0x28
 +
| 0x4
 +
| Unknown
 
|-
 
|-
 
| 0x2C
 
| 0x2C
Line 195: Line 661:  
| 0x4
 
| 0x4
 
| Number of sets (crane instances)
 
| Number of sets (crane instances)
 +
|-
 +
| 0x64
 +
| 0x4
 +
| Unknown (related to category ID?)
 
|-
 
|-
 
| 0x68
 
| 0x68
 
| 0x1000
 
| 0x1000
| [[#Language Names|Language Names]]
+
| [[#Language Names|Category display names]]
 +
|-
 +
| 0x1068
 +
| 0x1018
 +
| Padding
 
|-
 
|-
 
| 0x2080
 
| 0x2080
Line 217: Line 691:  
| 0x4
 
| 0x4
 
| Header magic (CRBS)
 
| Header magic (CRBS)
 +
|-
 +
| 0x4
 +
| 0x4
 +
| File version (0x3)
 +
|-
 +
| 0x8
 +
| 0x4
 +
| File length
 +
|-
 +
| 0xC
 +
| 0x4
 +
| Start address of header data (starts at name)
 +
|-
 +
| 0x10
 +
| 0x4
 +
| End address of header data
 +
|-
 +
| 0x14
 +
| 0x4
 +
| Start address of image
 +
|-
 +
| 0x18
 +
| 0x4
 +
| End address of image
 
|-
 
|-
 
| 0x1C
 
| 0x1C
Line 222: Line 720:  
| Crane name
 
| Crane name
 
|-
 
|-
| 0x800
+
| 0x4C
 +
| 0x34
 +
| Padding
 +
|-
 +
| 0x80
 
| 0x10000
 
| 0x10000
| ETC1 image? (Unknown resolution)
+
| 512x256 ETC1 image
 
|}
 
|}
 +
 +
The ETC1 image has a custom layout for distributing the contents of the background:
 +
 +
* Pink (400x240): background image
 +
 +
* Purple: unused
 +
 +
* Red (14x256): crane overlay
 +
 +
* Dark red: unused
 +
 +
[[File:Crane_image_layout.png]]
    
== Fixed Object (fob) ==
 
== Fixed Object (fob) ==
A fixed object file stores the data of the terrain and its image.
+
A fixed object file stores the data of an immovable object and its image.
    
{| class="wikitable"
 
{| class="wikitable"
Line 239: Line 753:  
| 0x4
 
| 0x4
 
| Header magic (FOBS)
 
| Header magic (FOBS)
 +
|-
 +
| 0x4
 +
| 0x4
 +
| File version (0x3)
 +
|-
 +
| 0x8
 +
| 0x4
 +
| File length
 +
|-
 +
| 0xC
 +
| 0x4
 +
| Start address of header data (starts at name)
 +
|-
 +
| 0x10
 +
| 0x4
 +
| End address of header data
 +
|-
 +
| 0x14
 +
| 0x4
 +
| Start address of image
 +
|-
 +
| 0x18
 +
| 0x4
 +
| End address of image
 +
|-
 +
| 0x1C
 +
| 0x4
 +
| Start address of collision data
 +
|-
 +
| 0x20
 +
| 0x4
 +
| End address of collision data
 
|-
 
|-
 
| 0x24
 
| 0x24
Line 251: Line 797:  
| 0x4
 
| 0x4
 
| Image height
 
| Image height
 +
|-
 +
| 0x5C
 +
| 0x24
 +
| Padding
 
|-
 
|-
 
| 0x80
 
| 0x80
 
| w * h
 
| w * h
 
| ETC1A4 image of fixed object
 
| ETC1A4 image of fixed object
 +
|-
 +
| 0x80 + (w * h)
 +
|
 +
| [[#Collision data|Collision data]]
 
|}
 
|}
   Line 271: Line 825:  
|-
 
|-
 
| 0x4
 
| 0x4
 +
| 0x4
 +
| File version (0x3)
 +
|-
 +
| 0x8
 +
| 0x4
 +
| File length (stuck at 0x45XX, but correct value works)
 +
|-
 +
| 0xC
 +
| 0x4
 +
| Start address of header data (starts at ID)
 +
|-
 +
| 0x10
 +
| 0x4
 +
| End address of header data
 +
|-
 +
| 0x14
 +
| 0x4
 +
| Start address of display names
 +
|-
 +
| 0x18
 +
| 0x4
 +
| End address of display names
 +
|-
 +
| 0x1C
 +
| 0x4
 +
| Start address of full RGB565+A4 images (64x64 and 32x32)
 +
|-
 +
| 0x20
 +
| 0x4
 +
| End address of full RGB565+A4 images
 +
|-
 +
| 0x24
 +
| 0x4
 +
| Start address of optional images (same as 0x20 if none)
 +
|-
 +
| 0x28
 +
| 0x4
 +
| End address of optional images (same as 0x20 if none)
 +
|-
 +
| 0x2C
 +
| 0x4
 +
| Start address of ETC1A4+A8 image
 +
|-
 +
| 0x30
 +
| 0x4
 +
| End address of ETC1A4+A8 image
 +
|-
 +
| 0x34
 +
| 0x4
 +
| Start address of collision data
 +
|-
 
| 0x38
 
| 0x38
| Unknown
+
| 0x4
 +
| End address of collision data (stuck at 0x45XX, but correct value works)
 
|-
 
|-
 
| 0x3C
 
| 0x3C
Line 280: Line 886:  
| 0x40
 
| 0x40
 
| 0x4
 
| 0x4
| Unknown
+
| Unknown. Same as value in offset 0x0 in [[Home_Menu#BadgeIdentifier|BadgeIdentifier]]
 
|-
 
|-
 
| 0x44
 
| 0x44
Line 295: Line 901:  
|-
 
|-
 
| 0xAC
 
| 0xAC
| 0xC
+
| 0x4
| Unknown
+
| Same as 0x40?
 +
|-
 +
| 0xB0
 +
| 0x4
 +
| Unknown (signed int)
 +
|-
 +
| 0xB4
 +
| 0x4
 +
| Unknown (signed int)
 
|-
 
|-
 
| 0xB8
 
| 0xB8
Line 305: Line 919:  
| 0x4
 
| 0x4
 
| Number of vertical tiles
 
| Number of vertical tiles
 +
|-
 +
| 0xC0
 +
| 0x10
 +
| Unknown (always zero when 1x1 tile?)
 +
|-
 +
| 0xD0
 +
| 0x4
 +
| Full image width scale (float32)
 +
|-
 +
| 0xD4
 +
| 0x4
 +
| Full image height scale (float32)
 +
|-
 +
| 0xD8
 +
| 0x8
 +
| Unknown (always zero when 1x1 tile?)
 
|-
 
|-
 
| 0xE0
 
| 0xE0
Line 312: Line 942:  
| 0x10E0
 
| 0x10E0
 
| 0x20
 
| 0x20
| Unknown (usually zero?)
+
| Padding
 
|-
 
|-
 
| 0x1100
 
| 0x1100
 
|  
 
|  
| Image data
+
| [[#Badge image data|Image data]]
 +
|-
 +
|
 +
|
 +
| [[#Collision data|Collision data]]
 
|}
 
|}
 +
 +
=== Badge image data ===
    
Following the badges metadata is it's image data. Each badge contains multiple images used in different places during gameplay
 
Following the badges metadata is it's image data. Each badge contains multiple images used in different places during gameplay
Line 347: Line 983:  
| 0x3900
 
| 0x3900
 
| 0x800
 
| 0x800
| 32x32 RGB565 image of full badge (used in badge selector in Home Menu)
+
| 32x32 RGB565 image of full badge (used in badge selector in Home Menu if badge is 1x1)
 
|-
 
|-
 
| 0x4100
 
| 0x4100
Line 363: Line 999:  
|  
 
|  
 
| 0x800
 
| 0x800
| 32x32 Optional additional RGB565 image tile(s). Only exists if badge is not 1x1 (unknown use)
+
| 32x32 Optional additional RGB565 image tile(s). Only exists if badge is not 1x1 (used in badge selector in Home Menu if badge is not 1x1)
 
|-
 
|-
 
|  
 
|  
Line 379: Line 1,015:     
== Language Names ==
 
== Language Names ==
Some files, like the badge and the category, store its name displayed on different languages. Here is the language list:
+
Some files, like the badge and the category file, store its display name in a set of 16 different languages.
 +
 
 +
Each language is stored as a little-endian utf16 string, in an allocated 0x100 byte section stacked on top of each other.
 +
 
 +
A string does not need to fill the entire 0x100 byte section, the remaining data is set to null bytes
 +
 
 +
The languages are ordered as follows:
 +
 
 +
# Japanese
 +
# English
 +
# French
 +
# German
 +
# Italian
 +
# Spanish
 +
# Chinese (simple)
 +
# Korean
 +
# Dutch
 +
# Portuguese
 +
# Russian
 +
# Chinese (traditional)
 +
# Unknown
 +
# Unknown
 +
# Unknown
 +
# Unknown
 +
 
 +
== Collision data ==
 +
The collision of an object is defined by a set of polygons combined together.
 +
 
 +
The polygons are represented using the vertices of each polygon, and those vertices are represented using their coordinates according to the in game image resolution.
    
{| class="wikitable"
 
{| class="wikitable"
Line 385: Line 1,049:  
! Offset
 
! Offset
 
! Size
 
! Size
! Language
+
! Description
 
|-
 
|-
 
| 0x0
 
| 0x0
| 0x100
+
| 0x4
| Japanese
+
| Number of polygons
 
|-
 
|-
| 0x100
+
| 0x4
| 0x100
+
| 0x44
| English
+
| Polygon data
 
|-
 
|-
| 0x200
+
|  
| 0x100
+
| 0x44
| French
+
| Additional polygons data
 +
|}
 +
 
 +
=== Polygon data ===
 +
The data of a polygon starts with the number of vertices. The coordinates of each vertice are then stored as float32 values on an allocated 0x40 byte section.
 +
 
 +
The vertices can't be next to each other, there is a 2 pixel circular restricted area around each vertice. If the coordinates don't fill the 0x40 byte section, the remaining data is set to null bytes.
 +
 
 +
{| class="wikitable"
 
|-
 
|-
| 0x300
+
! Offset
| 0x100
+
! Size
| German
+
! Description
 
|-
 
|-
| 0x400
+
| 0x0
| 0x100
+
| 0x4
| Italian
+
| Number of vertices
 
|-
 
|-
| 0x500
+
| 0x4
| 0x100
+
| 0x4
| Spanish
+
| X coordinate of vertice
 
|-
 
|-
| 0x600
+
| 0x8
| 0x100
+
| 0x4
| Unknown
+
| Y coordinate of vertice
 
|-
 
|-
| 0x700
+
|  
| 0x100
+
| 0x4
| Unknown
+
| X coordinate of additional vertices
 
|-
 
|-
| 0x800
+
|  
| 0x100
+
| 0x4
| Netherlands
+
| Y coordinate of additional vertices
|-
  −
| 0x900
  −
| 0x100
  −
| Portuguese
  −
|-
  −
| 0xA00
  −
| 0x100
  −
| Russian
  −
|-
  −
| 0xB00
  −
| 0x100
  −
| Unknown
  −
|-
  −
| 0xC00
  −
| 0x100
  −
| Unknown
  −
|-
  −
| 0xD00
  −
| 0x100
  −
| Unknown
  −
|-
  −
| 0xE00
  −
| 0x100
  −
| Unknown
  −
|-
  −
| 0xF00
  −
| 0x100
  −
| Unknown
   
|}
 
|}
125

edits

Navigation menu