Skip to main content

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.