mnlscript.py
Compiler and decompiler for the Mario & Luigi scripting language from and to Python.
Installation
pip3 install mnlscript
Usage
Bowser's Inside Story
First, you'll need mnltools.py in order to unpack and repack the ROM:
pip3 install mnltools
Then you can unpack and decompile the game:
mnl-nds-unpack bis.rom
mnlscript-bis-decompile
Afterwards, to compile and repack:
mnlscript-bis-compile [SCRIPTS TO COMPILE]
mnl-nds-pack -o bis.rom
[SCRIPTS TO COMPILE] should be a space-separated list of the scripts to compile (e.g. scripts/fevent/009c.py scripts/fevent/021d.py, or scripts/fevent/{009c,021d}.py if your shell supports it).
Although you can leave this blank to recompile all scripts, this is not recommended as it is slow and unnecessary.
Dream Team (Bros.)
First, you'll need to extract the RomFS, for example through Azahar (or any Citra fork). Unfortunately, Azahar doesn't support extracting the ExeFS, so you'll have to extract it separately, e.g. with CTRTool:
ctrtool --exefsdir=exefs dt.cci
You'll want to put these exefs and romfs folders side by side inside the Mods directory for your game (to locate this directory in Azahar, right-click on the game and press “Open > Mods Location”).
Take note of the name of the directory (the title ID), as you'll need to substitute it in the following commands.
Now, open the directory where you would like to work on your mod in a terminal.
If your system supports it, you should create a symbolic link to the game's Mods directory named data:
- Windows (PowerShell, may need to run as Administrator):
New-Item -ItemType SymbolicLink -Path .\data -Target $env:APPDATA\Azahar\load\mods\<TitleID> - Linux:
ln -s ~/.local/share/azahar-emu/load/mods/<TitleID> data - macOS:
ln -s "$HOME/Library/Application Support/Azahar/load/mods/<TitleID>" data
And then you can decompile and compile the game:
mnlscript-dt-decompile
mnlscript-dt-compile [SCRIPTS TO COMPILE]
If you can't use symlinks, add the -d /path/to/mods/<TitleID> argument to both of the above commands.
[SCRIPTS TO COMPILE] should be a space-separated list of the scripts to compile (e.g. scripts/fevent/0082.py scripts/fevent/00a0.py, or scripts/fevent/{0082,00a0}.py if your shell supports it).
Although you can leave this blank to recompile all scripts, this is not recommended as it is very slow and unnecessary.
There is no need to repack the ROM, as it is loaded as a mod.
Metadata
Release files for mnlscript 0.2.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mnlscript-0.2.5.tar.gz | 45.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mnlscript-0.2.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 105.0 kB
Release files / mnlscript-0.2.5.tar.gz
| Download URL | mnlscript-0.2.5.tar.gz |
|---|---|
| Size | 45.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
461c369a65b7f30a9238acecc495add44ce2f257cc1cf3e8e977ade85ea95a76
|
|
BLAKE2b-256 checksum How to use checksums |
104d73c99c177a4b8ccd9be4d8595d5cff77bce9fb1cffb196ef9532379083df
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.2 CPython/3.13.3 Linux/6.13.7-arch1-1
|
Release files / mnlscript-0.2.5-py3-none-any.whl
| Download URL | mnlscript-0.2.5-py3-none-any.whl |
|---|---|
| Size | 59.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5a83e29c00e20f90de9289a0e30e677511d104233bd0dbd7a458913101d172f1
|
|
BLAKE2b-256 checksum How to use checksums |
09bc6953cc621033f31b62bd398388a4dd756f0a918265e1e0b702aa231ed2d4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.2 CPython/3.13.3 Linux/6.13.7-arch1-1
|