This release is a pre-release and may not be stable for production use.
FF9 Map Kit (ff9mapkit)
Author custom Final Fantasy IX content (Steam/GOG, via the Memoria engine) from declarative TOML projects, compiled into drop-in Memoria mods. Part of the Dream World IX project.
Capabilities: author any field camera from scratch (single / scrolling / multi-camera) with a
pixel-accurate paint guide · fork any of ~674 real fields — camera, walkmesh, art, exits,
encounters, music, and (verbatim mode) the real script and dialogue · NPCs, dialogue choices,
gateways, events, story branching, cutscenes, shops, save points from one field.toml · custom
3D battle backgrounds + battle tuning · multi-field campaigns and journeys ·
custom 3D character models (Blender round-trip) and playable characters · overworld
island/terrain/coast/entrance authoring · custom music/SFX · experimental two-player
co-op · save and story-state editing.
Authoring surfaces: TOML by hand, the form editor (ff9mapkit edit), the
Blender add-on, and the one-window
PySide6 Workspace.
What it does
Given a field.toml describing one field — camera, painted background layers, walkmesh, NPCs,
dialogue, gateways, encounter, music — ff9mapkit build emits everything a custom field needs:
- the background scene (
.bgx/.bgs+ overlay PNGs or atlas) and walkmesh (.bgi), - the field event script (
.eb) for all seven languages, - dialogue text (
.mes), - the
DictionaryPatch/BattlePatchregistration +ModDescription.xml.
Battle maps (battle.toml), campaigns (campaign.toml), and journeys (journeys.toml) compile
the same way at their own scopes.
Two steps stay manual, matching how the original pre-rendered backgrounds were made: painting the background art (over the kit's projected paint guide) and judging final in-game alignment. The pipeline rationale is in docs/PIPELINE.md.
Quickstart
pip install "ff9mapkit[assets]" # or from this dir: pip install -e ".[assets]"
ff9mapkit setup # find the FF9 install, extract base assets
ff9mapkit import <field> --out myroom --verbatim # fork a real field — or `new` for original art
Full setup (extras, game-path resolution, the engine bundle) → SETUP.md.
First-time walkthroughs → docs/tutorials/.
Commands
119 subcommands — ff9mapkit -h lists them; the grouped reference with flags is in
SETUP.md §7. The families:
- Setup —
setup·doctor·extract-templates - Author —
new·guide/paint-template·walkmesh·edit·camera·disasm - Build & ship —
build·deploy·lint·pack·export-art·repaint-native - Fork real fields —
import(--editable/--native/--verbatim) ·import-all·import-chain·fork-report·list-fields/find-field/find-rooms·logic-map/lint-eb·chocobo-export - Campaigns & journeys —
new-campaign/add-field/build-all/lint-campaign·gen-hub/lint-journey/assemble-journey/reference-arcs·deploy-campaign/deploy-journey/newgame - Battle —
battle-import/battle-build·battle-list/battle-scene/battle-ai/battle-seq·battle-patch/battle-telemetry/characters/ability-gems/ability-features - 3D models —
model-gltf/model-import/model-mint/model-anim/model-anim-new/model-preview/model-reskin/model-deployed/model-export/playable-anims·image-field· summon transplants (experimental):summon-export/summon-rig-ref/summon-import/summon-deploy· recolour/reframe a stock summon in place:summon-reskin/summon-rescore(scaffold/plan/build/verify/deploy/revert) - Overworld —
world-terrain/world-reclaim/world-coast/world-transplant/world-water/world-island/world-forest/world-hill/world-mountain/world-entrance/world-encountersand the rest of theworld-*suite - Multiplayer —
coop(host / join / show; experimental) - Audio —
audio-import·music-list/sfx-list - Catalogs & dialogue —
catalog/models/animations/archetypes/items/scenes/encounters/flags/sps·dialogue/dialogue-import - Saves —
flags-inspect/flags-diff/save-edit·items-inspect/items-set-*
Docs
SETUP.md— install, configure, the CLI reference.docs/tutorials/— single-goal walkthroughs (start with 01 — First fork).docs/FEATURES.md— the full capability list.docs/FORMAT.md— thefield.toml/battle.tomlschema reference.docs/PIPELINE.md— the from-scratch authoring workflow.docs/ENGINE.md— stock vs. patched Memoria; the engine bundle.docs/FORK_FIDELITY.md— what forks do and don't reproduce.docs/PROVENANCE.md— the kit ships no game data; how base assets are regenerated from the local install.docs/TECHNICAL.md— the reverse-engineered foundations (camera math,.ebformat, import frame).docs/GLOSSARY.md— terms used across the docs.docs/TROUBLESHOOTING.md·docs/KNOWN_ISSUES.mddocs/gallery/— screenshots/GIFs.examples/vivi-hut/— a complete worked example.blender/— the Blender add-on (camera, walkmesh, markers, model round-trip; Blender 4.2+/5.x).
Validation
The package is organized by domain: eb (event-script codec + content injectors), scene
(camera math, .bgx/.bgs, .bgi walkmesh, paint guides), build (the field.toml compiler),
plus battle/, world/, models/, content/, deploy/journey orchestration, and the
editor/+workspace/ front-ends.
Correctness is proven offline by a golden-master test suite (~4,400 tests): every codec
round-trips real install assets byte-for-byte (regenerated locally via extract-templates — the
repo ships none), and compiling the bundled examples reproduces in-game-verified output exactly.
pip install -e ".[dev]"
py -m pytest -n 6
Metadata
Release files for ff9mapkit 1.0.0b22
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| ff9mapkit-1.0.0b22.tar.gz | 8.1 MB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ff9mapkit-1.0.0b22-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.7 MB
Release files / ff9mapkit-1.0.0b22.tar.gz
| Download URL | ff9mapkit-1.0.0b22.tar.gz |
|---|---|
| Size | 8.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
531fecc89d3e75c4991bcdadd5514d34269598683e5e83c8962d84a4bdde11c8
|
|
BLAKE2b-256 checksum How to use checksums |
89e31f9a6cc937f13dcaed9b234636e1e56e851e1997948c8ea64f89626d9195
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / ff9mapkit-1.0.0b22-py3-none-any.whl
| Download URL | ff9mapkit-1.0.0b22-py3-none-any.whl |
|---|---|
| Size | 4.6 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7c1b7bd7428123c6aef2ad9ad145aadd72f2d33f4086cad91b463535b53f2f9c
|
|
BLAKE2b-256 checksum How to use checksums |
45d34e5fed0a34aac1a77e5b647ffa2f4eb7f8040c1c01f732dc3253e991b1e8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logSecurity for ff9mapkit 1.0.0b22
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for ff9mapkit-1.0.0b22.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.