File Formats
TODO:
- More filetypes
- Double-check course data block names
- Perhaps info on control bytes and slope controllers?
This page lists file formats used by New Super Mario Bros., what they're used for, and their structures.
Do recall that the NDS uses little endian, so values are read starting from the least significant byte.
Tilesets
These files contain information about tilesets.
Tile Object Definition Files
AKA unt files. These define a tileset's tile objects and can be found in the BG_unt/
folder. These are distinct from the unt_hd files.
These consist of an object block, which contain object row blocks, which can contain either a slope controller — a byte greater than or equal to 0x80
, or a tile — defined like so:
Length | Description |
---|---|
0x1 | Control byte |
0x2 | Map16 tile; can be from any of the loaded tilesets — 0x0000-0x00FF = jyotyu, 0x0100-0x03FF = main tileset, 0x0400-0x05FF = subnohara |
The end of an object row block is denoted with 0xFE
, while the end of an object block is denoted with 0xFF
.
Unt_hd Files
Contain supplementary information about a tileset's tile objects. Can be found in the BG_unt/
folder and will be suffixed with "_hd". Each block is defined suchly:
Length | Description |
---|---|
0x2 | Offset of tile object (in unt file) |
0x1 | Width |
0x1 | Height |
There is a block for each object defined in the tilesets unt file.
Courses
These files contain information about course areas and can be found in the course/
folder.
Course Data Files
Course data files contain all the information about a course area bar tile object layout. Files are named X##_#
.bin, where X
is a letter corresponding to the world, ##
is a number corresponding to the course, and #
is the area.
Blocks are counted starting from 1, a la NSMBe. Header:
Length | Description |
---|---|
0x4 | Block 1 (general settings) offset |
0x4 | Block 1 (general settings) length |
0x4 | Block 2 offset |
0x4 | Block 2 length |
0x4 | Block 3 (bottom backgrounds) offset |
0x4 | Block 3 (bottom backgrounds) length |
0x4 | Block 4 (tilesets) offset |
0x4 | Block 4 (tilesets) length |
0x4 | Block 5 (top backgrounds) offset |
0x4 | Block 5 (top backgrounds) length |
0x4 | Block 6 (entrances) offset |
0x4 | Block 6 (entrances) length |
0x4 | Block 7 (stage objects) offset |
0x4 | Block 7 (stage objects) length |
0x4 | Block 8 (views) offset |
0x4 | Block 8 (views) length |
0x4 | Block 9 (zones) offset |
0x4 | Block 9 (zones) length |
0x4 | Block 10 (progress paths) offset |
0x4 | Block 10 (progress paths) length |
0x4 | Block 11 (paths) offset |
0x4 | Block 11 (paths) length |
0x4 | Block 12 (progress path nodes) offset |
0x4 | Block 12 (progress path nodes) length |
0x4 | Block 13 (path nodes) offset |
0x4 | Block 13 (path nodes) length |
0x4 | Block 14 (object banks) offset |
0x4 | Block 14 (object banks) length |
Course BgDat Files
These files contain information about the placement of tile objects in a course area. Their filenames follow the same convention as the course data files but are suffixed with "_bgdat" Each tile object is defined as such:
Length | Description |
---|---|
0x1 | Tile object number |
0x1 | Leftmost nybble determines which tileset the object comes from — 0x0 for jyotyu, 0x1 for the main tileset, 0x2 for subnohara |
0x2 | X position of tile object (top left, relative to top left of stage) |
0x2 | Y position of tile object (top left, relative to top left of stage) |
0x2 | Width of tile object |
0x2 | Height of tile object |
Each file is terminated with 0xFFFF
.
No Comments