AAMP (File Format)

From Wexos's Wiki
Revision as of 16:48, 1 May 2024 by Wexos (talk | contribs) (Imported from avsys wiki)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

AAMP is a file format used on Wii U and Nintendo Switch games. Like BYAML, it stores archived parameters, most commonly used along with resources from AGL.

File Format

The file byte order is always little endian.

Header

Offset Type Description
0x00 Char[4] File magic. Always AAMP in ASCII.
0x04 UInt32 Version number.
0x08 UInt32 Flags. Each one seems to be one bit long. Always 1 in Mario Kart 8; 3 in Mario Kart 8 Deluxe, Super Mario Odyssey and The Legend of Zelda: Breath of the Wild.
0x0C Int32 Size of file in bytes.
0x10 Int32 ParameterIO version.
0x14 Int32 Size of ParameterIO in bytes, including padding.
If version ≥ 2
0x18 Int32 Total number of branches.
0x1C Int32 Total number of parameter lists.
0x20 Int32 Total number of parameters.
0x24 Int32 Size of parameter data.
0x28 Int32 Size of string table.
0x2C Int32 Number of entries on unknown section.

ParameterIO

AAMP files are categorized by their first node, ParameterIO, which consists of a null-terminated string aligned to 4 bytes. This category is present as the file extension as well, most of the times (.b + category name). Here is a list of AAMP categories:

Identifier Description Games where it is used
aglatex Auto exposure information 1-2-Switch, Animal Crossing: New Horizons, ARMS, Game Builder Garage, Nintendo Labo - Toy-Con 01: Variety Kit, Nintendo Labo - Toy-Con 02: Robot Kit, Nintendo Labo - Toy-Con 03: Vehicle Kit, Nintendo Labo - Toy-Con 04: VR Kit, Ring Fit Adventure, Splatoon 2, Splatoon 3, Super Mario 3D All-Stars
aglblm Bloom information 1-2-Switch, Animal Crossing: New Horizons, ARMS, Game Builder Garage, Mario Kart 8/Deluxe, Nintendo Labo - Toy-Con 01: Variety Kit, Nintendo Labo - Toy-Con 02: Robot Kit, Nintendo Labo - Toy-Con 03: Vehicle Kit, Nintendo Labo - Toy-Con 04: VR Kit, Nintendo Switch Sports, Pikmin 3 Deluxe, Ring Fit Adventure, Splatoon 2, Splatoon 3, Super Mario 3D All-Stars, Super Mario Bros. Wonder, The Legend of Zelda: Breath of the Wild (Nintendo Switch), The Legend of Zelda: Tears of the Kingdom
aglccr Color correction information 1-2-Switch, Animal Crossing: New Horizons, ARMS, Mario Kart 8/Deluxe, Nintendo Switch Sports, Splatoon 2, Splatoon 3, Super Mario 3D World, Super Mario Bros. Wonder, Super Mario Odyssey, The Legend of Zelda: Breath of the Wild (Nintendo Switch), The Legend of Zelda: Tears of the Kingdom
aglcloud Unknown Unknown
aglclwd Cloud drawer information The Legend of Zelda: Breath of the Wild (Nintendo Switch), The Legend of Zelda: Tears of the Kingdom
aglcube Cube map information 1-2-Switch, Animal Crossing: New Horizons, ARMS, Captain Toad: Treasure Tracker, Game Builder Garage, Mario Kart 8/Deluxe, Nintendo Labo - Toy-Con 01: Variety Kit, Nintendo Labo - Toy-Con 02: Robot Kit, Nintendo Labo - Toy-Con 03: Vehicle Kit, Nintendo Labo - Toy-Con 04: VR Kit, Nintendo Switch Sports, Ring Fit Adventure, Splatoon 2, Splatoon 3, Super Mario 3D All-Stars, Super Mario 3D World, Super Mario Bros. Wonder, Super Mario Odyssey, The Legend of Zelda: Breath of the Wild (Nintendo Switch), The Legend of Zelda: Tears of the Kingdom
agldecd Unknown Unknown
agldof Depth of field information 1-2-Switch, Animal Crossing: New Horizons, ARMS, Captain Toad: Treasure Tracker, Game Builder Garage, Mario Kart 8/Deluxe, Nintendo Labo - Toy-Con 01: Variety Kit, Nintendo Labo - Toy-Con 02: Robot Kit, Nintendo Labo - Toy-Con 03: Vehicle Kit, Nintendo Labo - Toy-Con 04: VR Kit, Nintendo Switch Sports, Pikmin 3 Deluxe, Ring Fit Adventure, Splatoon 2, Splatoon 3, Super Mario 3D All-Stars, Super Mario 3D World, Super Mario Bros. Wonder, The Legend of Zelda: Breath of the Wild (Nintendo Switch), The Legend of Zelda: Tears of the Kingdom
aglenv Environment information 1-2-Switch, Animal Crossing: New Horizons, ARMS, Game Builder Garage, Mario Kart 8/Deluxe, Nintendo Labo - Toy-Con 01: Variety Kit, Nintendo Labo - Toy-Con 02: Robot Kit, Nintendo Labo - Toy-Con 03: Vehicle Kit, Nintendo Labo - Toy-Con 04: VR Kit, Nintendo Switch Sports, Pikmin 3 Deluxe, Ring Fit Adventure, Splatoon 2, Splatoon 3, Super Mario 3D All-Stars, Super Mario Bros. Wonder, The Legend of Zelda: Breath of the Wild (Nintendo Switch), The Legend of Zelda: Tears of the Kingdom
aglenvset Environment controller 1-2-Switch, Animal Crossing: New Horizons, ARMS, Game Builder Garage, Mario Kart 8/Deluxe, Nintendo Labo - Toy-Con 01: Variety Kit, Nintendo Labo - Toy-Con 02: Robot Kit, Nintendo Labo - Toy-Con 03: Vehicle Kit, Nintendo Labo - Toy-Con 04: VR Kit, Nintendo Switch Sports, Pikmin 3 Deluxe, Ring Fit Adventure, Splatoon 2, Splatoon 3, Super Mario 3D All-Stars, Super Mario Bros. Wonder, The Legend of Zelda: Breath of the Wild (Nintendo Switch), The Legend of Zelda: Tears of the Kingdom
aglfila Anti-aliasing filter information 1-2-Switch, Animal Crossing: New Horizons, ARMS, Game Builder Garage, Mario Kart 8/Deluxe, Nintendo Labo - Toy-Con 01: Variety Kit, Nintendo Labo - Toy-Con 02: Robot Kit, Nintendo Labo - Toy-Con 03: Vehicle Kit, Nintendo Labo - Toy-Con 04: VR Kit, Ring Fit Adventure, Super Mario Bros. Wonder, The Legend of Zelda: Breath of the Wild (Nintendo Switch), The Legend of Zelda: Tears of the Kingdom
aglflr Unknown Unknown
aglglr Glare filter information Unknown
agllmap Light map information 1-2-Switch, Animal Crossing: New Horizons, ARMS, Game Builder Garage, Mario Kart 8/Deluxe, Nintendo Labo - Toy-Con 01: Variety Kit, Nintendo Labo - Toy-Con 02: Robot Kit, Nintendo Labo - Toy-Con 03: Vehicle Kit, Nintendo Labo - Toy-Con 04: VR Kit, Nintendo Switch Sports, Pikmin 3 Deluxe, Ring Fit Adventure, Super Mario Bros. Wonder, The Legend of Zelda: Breath of the Wild (Nintendo Switch), The Legend of Zelda: Tears of the Kingdom
agllref Light reflection information The Legend of Zelda: Breath of the Wild (Nintendo Switch)
aglmf Multi-filter information 1-2-Switch, Animal Crossing: New Horizons, ARMS, Captain Toad: Treasure Tracker, Game Builder Garage, Mario Kart 8/Deluxe, Nintendo Labo - Toy-Con 01: Variety Kit, Nintendo Labo - Toy-Con 02: Robot Kit, Nintendo Labo - Toy-Con 03: Vehicle Kit, Nintendo Labo - Toy-Con 04: VR Kit, Nintendo Switch Sports, Pikmin 3 Deluxe, Ring Fit Adventure, Splatoon 2, Splatoon 3, Super Mario 3D All-Stars, Super Mario Bros. Wonder, The Legend of Zelda: Breath of the Wild (Nintendo Switch), The Legend of Zelda: Tears of the Kingdom
aglNmdw Normal drawer information Unknown
aglofx Occlusion effects information 1-2-Switch, ARMS, Game Builder Garage, Mario Kart 8/Deluxe, Nintendo Labo - Toy-Con 01: Variety Kit, Nintendo Labo - Toy-Con 02: Robot Kit, Nintendo Labo - Toy-Con 03: Vehicle Kit, Nintendo Labo - Toy-Con 04: VR Kit, Nintendo Switch Sports, Pikmin 3 Deluxe, Ring Fit Adventure, Splatoon 2, Splatoon 3, Super Mario 3D World, The Legend of Zelda: Breath of the Wild]] (Nintendo Switch), The Legend of Zelda: Tears of the Kingdom
aglprojsdw Unknown Unknown
aglsdw Unknown Unknown
aglshpp Shadow pre-pass information 1-2-Switch, ARMS, Game Builder Garage, Mario Kart 8/Deluxe, Nintendo Labo - Toy-Con 01: Variety Kit, Nintendo Labo - Toy-Con 02: Robot Kit, Nintendo Labo - Toy-Con 03: Vehicle Kit, 'Nintendo Labo - Toy-Con 04: VR Kit, Nintendo Switch Sports, Ring Fit Adventure, Splatoon 2, Splatoon 3, Super Mario 3D All-Stars, The Legend of Zelda: Breath of the Wild (Nintendo Switch), The Legend of Zelda: Tears of the Kingdom
aglsky Skybox information Nintendo Switch Sports, Super Mario Bros. Wonder, The Legend of Zelda: Tears of the Kingdom
aglssao Screen space ambient occlusion settings Super Mario 3D World, Super Mario Odyssey
envpal Environment Palette Super Mario Maker 2
gapkginfo App package information 1-2-Switch, Animal Crossing: New Horizons, ARMS, Game Builder Garage, Mario Kart 8/Deluxe, Nintendo Labo - Toy-Con 01: Variety Kit, Nintendo Labo - Toy-Con 02: Robot Kit, Nintendo Labo - Toy-Con 03: Vehicle Kit, Nintendo Labo - Toy-Con 04: VR Kit, Nintendo Switch Sports, Ring Fit Adventure, Splatoon 2, Splatoon 3, Super Mario 3D All-Stars, Super Mario Bros. Wonder, The Legend of Zelda: Breath of the Wild (Nintendo Switch), The Legend of Zelda: Tears of the Kingdom
gapkglist App package list 1-2-Switch, Animal Crossing: New Horizons, ARMS, Game Builder Garage, Mario Kart 8/Deluxe, Nintendo Labo - Toy-Con 01: Variety Kit, Nintendo Labo - Toy-Con 02: Robot Kit, Nintendo Labo - Toy-Con 03: Vehicle Kit, Nintendo Labo - Toy-Con 04: VR Kit, Nintendo Switch Sports, Ring Fit Adventure, Splatoon 2, Splatoon 3, Super Mario 3D All-Stars, Super Mario Bros. Wonder, The Legend of Zelda: Breath of the Wild (Nintendo Switch), The Legend of Zelda: Tears of the Kingdom
genv Global environment parameters 1-2-Switch, ARMS, Game Builder Garage, Mario Kart 8/Deluxe, Nintendo Labo - Toy-Con 01: Variety Kit, Nintendo Labo - Toy-Con 02: Robot Kit, Nintendo Labo - Toy-Con 03: Vehicle Kit, Nintendo Labo - Toy-Con 04: VR Kit, Nintendo Switch Sports, Ring Fit Adventure, Splatoon 2, Splatoon 3, Super Mario 3D All-Stars, Super Mario Bros. Wonder, The Legend of Zelda: Breath of the Wild (Nintendo Switch), The Legend of Zelda: Tears of the Kingdom
glght Lighting information 1-2-Switch, Animal Crossing: New Horizons, ARMS, Game Builder Garage, Mario Kart 8/Deluxe, Nintendo Labo - Toy-Con 01: Variety Kit, Nintendo Labo - Toy-Con 02: Robot Kit, Nintendo Labo - Toy-Con 03: Vehicle Kit, Nintendo Labo - Toy-Con 04: VR Kit, Nintendo Switch Sports, Ring Fit Adventure, Splatoon 2, Splatoon 3, Super Mario 3D All-Stars, Super Mario Bros. Wonder, The Legend of Zelda: Breath of the Wild (Nintendo Switch), The Legend of Zelda: Tears of the Kingdom
glpbd Light probe data Mario Kart 8/Deluxe
glpbm Movable light probe Mario Kart 8 Deluxe
gmsconf Set of configuration templates 1-2-Switch, Animal Crossing: New Horizons, ARMS, Game Builder Garage, Mario Kart 8/Deluxe, Nintendo Labo - Toy-Con 01: Variety Kit, Nintendo Labo - Toy-Con 02: Robot Kit, Nintendo Labo - Toy-Con 03: Vehicle Kit, Nintendo Labo - Toy-Con 04: VR Kit, Nintendo Switch Sports, Ring Fit Adventure, Splatoon 2, Splatoon 3, Super Mario 3D All-Stars, Super Mario Bros. Wonder, The Legend of Zelda: Breath of the Wild (Nintendo Switch), The Legend of Zelda: Tears of the Kingdom
gsdw Shadow parameters 1-2-Switch, Animal Crossing: New Horizons, ARMS, Game Builder Garage, Mario Kart 8/Deluxe, Nintendo Labo - Toy-Con 01: Variety Kit, Nintendo Labo - Toy-Con 02: Robot Kit, Nintendo Labo - Toy-Con 03: Vehicle Kit, Nintendo Labo - Toy-Con 04: VR Kit, Nintendo Switch Sports, Ring Fit Adventure, Splatoon 2, Splatoon 3, Super Mario 3D All-Stars, Super Mario Bros. Wonder, The Legend of Zelda: Breath of the Wild (Nintendo Switch), The Legend of Zelda: Tears of the Kingdom
gssao Screen space ambient occlusion information Super Mario Bros. Wonder
gsysefx Unknown Unknown
ksky Sky parameters Splatoon 2, The Legend of Zelda: Breath of the Wild (Nintendo Switch)
mscinfo Music information The Legend of Zelda: Breath of the Wild (Nintendo Switch)
phcl Phive cloth physics Nintendo Switch Sports
phhb Phive helper bone parameters Nintendo Switch Sports
pref Unknown Animal Crossing: New Horizons, ARMS, Nintendo Switch Sports, Ring Fit Adventure, Splatoon 2
ptclconf Unknown 1-2-Switch, Animal Crossing: New Horizons, ARMS, Game Builder Garage, Mario Kart 8/Deluxe, Nintendo Labo - Toy-Con 01: Variety Kit, Nintendo Labo - Toy-Con 02: Robot Kit, Nintendo Labo - Toy-Con 03: Vehicle Kit, Nintendo Labo - Toy-Con 04: VR Kit, Nintendo Switch Sports, Ring Fit Adventure, Splatoon 2, Splatoon 3, Super Mario 3D All-Stars, Super Mario Bros. Wonder, The Legend of Zelda: Breath of the Wild (Nintendo Switch), The Legend of Zelda: Tears of the Kingdom
vege Vegetation parameters Game Builder Garage, Nintendo Labo - Toy-Con 03: Vehicle Kit, Nintendo Labo - Toy-Con 04: VR Kit, The Legend of Zelda: Breath of the Wild (Nintendo Switch)
winfo World information The Legend of Zelda: Breath of the Wild (Nintendo Switch)
xml Various parameters Captain Toad: Treasure Tracker, Super Mario 3D World, Super Mario Odyssey, The Legend of Zelda: Breath of the Wild (Nintendo Switch)

Note: on version 1 the ParameterIO string seems to be padded after the null-terminator with 0xCD bytes. The 0xCD bytes seem to are also be null-terminated.

Version 1

The first version of AAMP files is used in Mario Kart 8. Unlike Version 2, the data is not aligned.

Branch

Branches are the main nodes of the AAMP tree. They can only contain other branches or parameter lists.

Offset Type Description
0x00 UInt32 Size of the branch, including all child branches and parameter lists.
0x04 Byte[4] CRC-32 checksum of the branch's name.
0x08 Int32 Number of child branches.
0x0C Int32 Number of parameter lists.

After the structure, the child branches are stored, and then the parameter lists.

Parameter List

Parameter lists are similar to branches, except that they can only contain parameters.

Offset Type Description
0x00 UInt32 Size of the parameter list, including all parameters.
0x04 Int32 Number of parameters.
0x08 Byte[4] CRC-32 checksum of the parameter list's name.
0x0C Byte[4] Padding. Always 0xCDCDCDCD.

Parameter

Parameters contain data that can be stored in many different formats.

Offset Type Description
0x00 UInt32 Size of the parameter entry, including the data that follows.
0x04 UInt32 Parameter type.
0x08 UInt32 CRC-32 checksum of the parameter's name.

Followed by the parameter entry, there's the parameter data. Parameters of type string are always null-terminated.

Version 2

The second version of AAMP is used on many games, such as Mario Kart 8 Deluxe, Super Mario Odyssey and The Legend of Zelda: Breath of the Wild. It has the data sorted in a slightly different way that makes it more optimized. The data is also aligned by 4 now.

Branch

All offsets are divided by 4 and relative to the start of the branch.

Offset Type Description
0x00 Byte[4] CRC-32 checksum of the branch's name.
0x04 UInt16 Offset to the set of child branches. Unknown usage for the branches without any of them.
0x06 UInt16 Number of child branches.
0x08 UInt16 Offset to the set of parameter lists. Unknown usage for the branches without any of them.
0x0A UInt16 Number of parameter lists.

Parameter List

All offsets are divided by 4 and relative to the start of the parameter list.

Offset Type Description
0x00 Byte[4] CRC-32 checksum of the parameter list's name.
0x04 UInt16 Offset to the set of child parameters.
0x06 UInt16 Number of child parameters.

Parameter

Unlike in version 1, the parameter data is separated from the parameter entries. This was probably made in order to optimize the usage of equal values for multiple parameters. All offsets are divided by 4 and relative to the start of the parameter entry.

Offset Type Description
0x00 Byte[4] CRC-32 checksum of the parameter's name.
0x04 UInt24 Offset to the value at parameter data or string table.
0x07 Byte Parameter type.

Parameter Data

All non-string values seem to be placed on this section.

String Table

All strings are placed into this section. They're null-terminated and aligned by 4.

Unknown Section

In some files, there is an extra section with more data. It is unknown for now if this data is used by certain parameter types, or if it's user data, or if it's not used at all.

Parameter Types

This is a list of parameters used by AAMP files:

List of AAMP parameter types
ID Name Description
0x00 Parameter<bool> Boolean; a byte that is either 0 or 1.
0x01 Parameter<float> 32-bit single precision float.
0x02 Parameter<int> 32-bit signed integer.
0x03 Parameter<sead::Vector2<float>> Two 32-bit single precision float.
0x04 Parameter<sead::Vector3<float>> Three 32-bit single precision float.
0x05 Parameter<sead::Vector4<float>> Four 32-bit single precision float.
0x06 Parameter<sead::Color4f> Four 32-bit single precision float that represent RGBA color data.
0x07 Parameter<sead::FixedSafeString<32>> Null-terminated string with a maximum buffer of 32 bytes.
0x08 Parameter<sead::FixedSafeString<64>> Null-terminated string with a maximum buffer of 64 bytes.
0x09 ParameterCurve<1u> Unknown. Seems to be some kind of array with a sub-type.
0x0A ParameterCurve<2u> Unknown. Seems to be some kind of array with a sub-type.
0x0B ParameterCurve<3u> Unknown. Seems to be some kind of array with a sub-type.
0x0C ParameterCurve<4u> Unknown. Seems to be some kind of array with a sub-type.
0x0D ParameterBuffer<int> Array of 32-bit signed integers. The number of element types are stored before array as an Int32.
0x0E ParameterBuffer<float> Array of 32-bit single precision floats. The number of element types are stored before array as an Int32.
0x0F Parameter<sead::FixedSafeString<256>> Null-terminated string with a maximum buffer of 256 bytes.
0x10 Parameter<sead::Quat<float>> Quaternion.
0x11 Parameter<uint> 32-bit unsigned integer.
0x12 ParameterBuffer<unsigned int> Array of 32-bit unsigned integers. The number of element types are stored before array as an Int32.
0x13 ParameterBuffer<unsigned char> Array of bytes. The number of element types are stored before array as an Int32.
0x14 Parameter<sead::SafeStringBase<char>> Null-terminated string.
0x15
  • Parameter<int *>
  • Parameter<float *>
  • Parameter<unsigned int *>
  • Parameter<unsigned char *>
Unknown. Seems to be pointers or user data.

Version List

Version Found in
1.0
2.0

Tools

The following tools can handle AAMP files:

  • (none)