Skip to main content

Compiler and decompiler for the Mario & Luigi scripting language from and to Python.

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mnlscript-0.2.4.tar.gz (45.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mnlscript-0.2.4-py3-none-any.whl (59.6 kB view details)

Uploaded Python 3

File details

Details for the file mnlscript-0.2.4.tar.gz.

File metadata

  • Download URL: mnlscript-0.2.4.tar.gz
  • Upload date:
  • Size: 45.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.13.2 Linux/6.13.7-arch1-1

File hashes

Hashes for mnlscript-0.2.4.tar.gz
Algorithm Hash digest
SHA256 caadf66e21d14ca180e035e0c129c797a34a9168fe76b3e366ec927386eb996a
MD5 0e5e0c44da1dd3c633baf806f0db2fc4
BLAKE2b-256 614a84abb79e7c6b3c30f11b67ec700b3542d8710e196a29ab369f1f234cf7ce

See more details on using hashes here.

File details

Details for the file mnlscript-0.2.4-py3-none-any.whl.

File metadata

  • Download URL: mnlscript-0.2.4-py3-none-any.whl
  • Upload date:
  • Size: 59.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.2 CPython/3.13.2 Linux/6.13.7-arch1-1

File hashes

Hashes for mnlscript-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 3bcc183cefe6ca5b2963eabfb6090ecc08cab05133c69da76a1ceb228a4c088d
MD5 3cc9cd8ae32836596f56d9c5ae2ba669
BLAKE2b-256 1755d10dc4236296a999159e99102f1f1cca3c35d9ad6ca52f50ef7a9396ea89

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page