Skip to main content

Nintendo parameter archive (AAMP) library

Everything should work correctly for BotW parameter archives, though this hasn't been tested a lot.

Some more esoteric parameter types are left unsupported currently.

Setup

Install with pip install aamp or on Windows py -m pip install aamp.

Converter usage

aamp_to_yml will convert an AAMP to a human readable representation. yml_to_aamp will do the opposite.

Library usage

To read a parameter archive, create a Reader and give it the binary archive data, then call parse() to get a ParameterIO. This API is purposefully very similar to Nintendo's official parameter utils to help with reverse engineering and re-implementing parts of the game code.

Parameter is a simple value, for example a boolean or an integer.

ParameterObject is a key-value mapping where keys are strings and values are always Parameters.

ParameterList is also a key-value mapping, but it contains objects and other lists rather than Parameters.

ParameterIO is a special ParameterList with some extra attributes, like a version number and a type string (usually xml).

>>> import aamp
>>> reader = aamp.Reader(open('test_data/DamageReactionTable.bxml', 'rb').read())
>>> pio = reader.parse()
>>> pio.list('param_root').list('Basic').object('Edge')
ParameterObject(params={375673178: True, 2982974660: True, 4022901097: True, 2861907126: True, 3947755327: True, 1529444359: False})
>>> pio.list('param_root').list('Basic').object('Edge').param('Damage')
True

ParameterObject:

  • .param(param_name) returns a parameter. KeyError is raised if the parameter doesn't exist.
  • .set_param(param_name, value)

ParameterList:

  • .list(list_name) returns a parameter list. KeyError is raised if the list doesn't exist.
  • .object(object_name) returns a parameter object. KeyError is raised if the object doesn't exist.
  • .set_list(list_name, param_list)
  • .set_object(object_name, param_object)

ParameterIO:

  • Same as ParameterList, but with extra attributes version (usually 0) and type (usually xml).

For writing a binary parameter archive, create a Writer and pass it a ParameterIO, then call write(stream) with a seekable stream.

License

This software is licensed under the terms of the GNU General Public License, version 2 or later.

Metadata

Release files for aamp 1.4.1.post1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for aamp 1.4.1.post1
File Interpreter ABI Platform
aamp-1.4.1.post1-py3-none-any.whl Python 3 none any Details

Release files / aamp-1.4.1.post1-py3-none-any.whl

Download URL aamp-1.4.1.post1-py3-none-any.whl
Size 337.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4061181c352f5952597971bd79807bc3c0c3df7baf1ce993f8936dad39d67e7d
BLAKE2b-256 checksum
How to use checksums
0d3c79f5a28902ca5adcbf8255dec183c73457858daf08bad461af4fff33cecb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.12.4

Release history Release notifications | RSS feed

This release

1.4.1.post1 This release

1 release file

1.4.1

1 release file

1.4.0

1 release file

1.3.1

1 release file

1.3.0

1 release file

1.2.5

1 release file

1.2.4

1 release file

1.2.2

1 release file

1.2.1

1 release file

1.2.0

1 release file

1.1.3

1 release file

1.1.2

1 release file

1.1.1

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page