ff9mapkit 1.0.0b3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ff9mapkit/__init__.py +18 -0
- ff9mapkit/__main__.py +36 -0
- ff9mapkit/_animdb.py +2994 -0
- ff9mapkit/_animdb_all.py +14125 -0
- ff9mapkit/_fieldtable.py +1516 -0
- ff9mapkit/_fieldtext.py +845 -0
- ff9mapkit/_held_poses.py +44 -0
- ff9mapkit/_itemdb.py +65 -0
- ff9mapkit/_modeldb.py +725 -0
- ff9mapkit/_narrowmap_data.py +10 -0
- ff9mapkit/_npcparams.py +634 -0
- ff9mapkit/_regen_animdb.py +72 -0
- ff9mapkit/_regen_animdb_all.py +66 -0
- ff9mapkit/_regen_fieldtable.py +95 -0
- ff9mapkit/_regen_fieldtext.py +66 -0
- ff9mapkit/_regen_modeldb.py +67 -0
- ff9mapkit/_regen_npcparams.py +123 -0
- ff9mapkit/_regen_scenedb.py +57 -0
- ff9mapkit/_scenedb.py +869 -0
- ff9mapkit/abilities.py +225 -0
- ff9mapkit/animations.py +120 -0
- ff9mapkit/archetypes.py +218 -0
- ff9mapkit/areatitle.py +76 -0
- ff9mapkit/battle/__init__.py +21 -0
- ff9mapkit/battle/abilityfeatures.py +294 -0
- ff9mapkit/battle/actiondelta.py +441 -0
- ff9mapkit/battle/aiauthor.py +305 -0
- ff9mapkit/battle/ailint.py +140 -0
- ff9mapkit/battle/aipatch.py +175 -0
- ff9mapkit/battle/battleai.py +148 -0
- ff9mapkit/battle/battlecsv.py +390 -0
- ff9mapkit/battle/battlepatch.py +395 -0
- ff9mapkit/battle/build.py +558 -0
- ff9mapkit/battle/camera_codec.py +332 -0
- ff9mapkit/battle/camera_data.py +128 -0
- ff9mapkit/battle/characterdelta.py +789 -0
- ff9mapkit/battle/event_data.py +72 -0
- ff9mapkit/battle/extract.py +540 -0
- ff9mapkit/battle/fbx.py +223 -0
- ff9mapkit/battle/reskin.py +149 -0
- ff9mapkit/battle/scene_codec.py +314 -0
- ff9mapkit/battle/scene_data.py +369 -0
- ff9mapkit/battle/scenelint.py +125 -0
- ff9mapkit/battle/seqasm.py +131 -0
- ff9mapkit/battle/seqauthor.py +220 -0
- ff9mapkit/battle/seqcodec.py +300 -0
- ff9mapkit/battle/seqdis.py +106 -0
- ff9mapkit/battle/seqpatch.py +137 -0
- ff9mapkit/battle_bgm.py +133 -0
- ff9mapkit/binutils.py +60 -0
- ff9mapkit/build.py +5445 -0
- ff9mapkit/campaign.py +1276 -0
- ff9mapkit/catalog.py +316 -0
- ff9mapkit/chain.py +358 -0
- ff9mapkit/cli.py +3114 -0
- ff9mapkit/config.py +360 -0
- ff9mapkit/content/__init__.py +13 -0
- ff9mapkit/content/areatitle.py +36 -0
- ff9mapkit/content/ate.py +118 -0
- ff9mapkit/content/camera.py +123 -0
- ff9mapkit/content/chest.py +186 -0
- ff9mapkit/content/choice.py +163 -0
- ff9mapkit/content/conductor.py +217 -0
- ff9mapkit/content/cutscene.py +290 -0
- ff9mapkit/content/encounter.py +41 -0
- ff9mapkit/content/entry_settle.py +50 -0
- ff9mapkit/content/equipment.py +93 -0
- ff9mapkit/content/event.py +191 -0
- ff9mapkit/content/gateway.py +101 -0
- ff9mapkit/content/inventory.py +59 -0
- ff9mapkit/content/itemdata.py +644 -0
- ff9mapkit/content/itemtext.py +168 -0
- ff9mapkit/content/jump.py +114 -0
- ff9mapkit/content/ladder.py +633 -0
- ff9mapkit/content/movement.py +53 -0
- ff9mapkit/content/music.py +97 -0
- ff9mapkit/content/npc.py +348 -0
- ff9mapkit/content/object.py +340 -0
- ff9mapkit/content/onentry.py +135 -0
- ff9mapkit/content/party.py +111 -0
- ff9mapkit/content/pathfind.py +138 -0
- ff9mapkit/content/platform.py +314 -0
- ff9mapkit/content/player.py +168 -0
- ff9mapkit/content/prop.py +75 -0
- ff9mapkit/content/region.py +340 -0
- ff9mapkit/content/reinit.py +59 -0
- ff9mapkit/content/savepoint.py +90 -0
- ff9mapkit/content/shop.py +178 -0
- ff9mapkit/content/sps_trigger.py +66 -0
- ff9mapkit/content/startup.py +71 -0
- ff9mapkit/content/synthesis.py +106 -0
- ff9mapkit/content/text.py +183 -0
- ff9mapkit/content/textcarry.py +290 -0
- ff9mapkit/content/verbatim.py +86 -0
- ff9mapkit/content/walkmesh_hotfix.py +38 -0
- ff9mapkit/data/__init__.py +48 -0
- ff9mapkit/data/_regen_provenance.py +142 -0
- ff9mapkit/data/provenance/blank.es.patch +1 -0
- ff9mapkit/data/provenance/blank.fr.patch +1 -0
- ff9mapkit/data/provenance/blank.gr.patch +1 -0
- ff9mapkit/data/provenance/blank.it.patch +1 -0
- ff9mapkit/data/provenance/blank.jp.patch +1 -0
- ff9mapkit/data/provenance/blank.uk.patch +1 -0
- ff9mapkit/data/provenance/blank.us.patch +1 -0
- ff9mapkit/data/provenance/manifest.json +65 -0
- ff9mapkit/data/provenance/region_template.patch +1 -0
- ff9mapkit/data/reference_arcs.toml +89 -0
- ff9mapkit/data/region_catalog.toml +593 -0
- ff9mapkit/deploystack.py +358 -0
- ff9mapkit/dialogue.py +803 -0
- ff9mapkit/eb/__init__.py +12 -0
- ff9mapkit/eb/_exprtable.py +59 -0
- ff9mapkit/eb/_membertable.py +38 -0
- ff9mapkit/eb/_optables.py +537 -0
- ff9mapkit/eb/_regen_optables.py +76 -0
- ff9mapkit/eb/cmdasm.py +323 -0
- ff9mapkit/eb/disasm.py +332 -0
- ff9mapkit/eb/edit.py +439 -0
- ff9mapkit/eb/exprasm.py +158 -0
- ff9mapkit/eb/model.py +178 -0
- ff9mapkit/eb/opcodes.py +463 -0
- ff9mapkit/eblint.py +177 -0
- ff9mapkit/editor/__init__.py +20 -0
- ff9mapkit/editor/app.py +950 -0
- ff9mapkit/editor/battle_forms.py +240 -0
- ff9mapkit/editor/breadcrumb.py +89 -0
- ff9mapkit/editor/dialogs.py +116 -0
- ff9mapkit/editor/feedback.py +208 -0
- ff9mapkit/editor/forms.py +632 -0
- ff9mapkit/editor/graphview.py +350 -0
- ff9mapkit/editor/jobs.py +342 -0
- ff9mapkit/editor/model.py +243 -0
- ff9mapkit/editor/picker.py +120 -0
- ff9mapkit/editor/theme.py +212 -0
- ff9mapkit/eventscan.py +1441 -0
- ff9mapkit/extract.py +2279 -0
- ff9mapkit/flags.py +693 -0
- ff9mapkit/forkreport.py +1383 -0
- ff9mapkit/hub.py +477 -0
- ff9mapkit/idgated.py +101 -0
- ff9mapkit/infohub.py +580 -0
- ff9mapkit/items.py +63 -0
- ff9mapkit/itemstats.py +346 -0
- ff9mapkit/journey.py +1902 -0
- ff9mapkit/keyitems.py +93 -0
- ff9mapkit/logic_add.py +632 -0
- ff9mapkit/logic_edit.py +728 -0
- ff9mapkit/logic_map.py +526 -0
- ff9mapkit/pack.py +175 -0
- ff9mapkit/playerswap.py +231 -0
- ff9mapkit/prop_archetypes.py +228 -0
- ff9mapkit/provision.py +282 -0
- ff9mapkit/refarc.py +825 -0
- ff9mapkit/save.py +337 -0
- ff9mapkit/save_items.py +1673 -0
- ff9mapkit/scene/__init__.py +11 -0
- ff9mapkit/scene/arena.py +63 -0
- ff9mapkit/scene/bgart.py +140 -0
- ff9mapkit/scene/bgi.py +732 -0
- ff9mapkit/scene/bgs.py +174 -0
- ff9mapkit/scene/bgx.py +185 -0
- ff9mapkit/scene/cam.py +345 -0
- ff9mapkit/scene/guide.py +311 -0
- ff9mapkit/scene/paint.py +506 -0
- ff9mapkit/scene/placeholder.py +107 -0
- ff9mapkit/sjbinary.py +285 -0
- ff9mapkit/sps/__init__.py +17 -0
- ff9mapkit/sps/author.py +294 -0
- ff9mapkit/sps/catalog.py +88 -0
- ff9mapkit/sps/codec.py +264 -0
- ff9mapkit/sps/edit.py +184 -0
- ff9mapkit/sps/lint.py +58 -0
- ff9mapkit/sps/render.py +116 -0
- ff9mapkit/sps/templates.py +47 -0
- ff9mapkit/sps/texture.py +131 -0
- ff9mapkit/walkmesh_hotfixes.py +163 -0
- ff9mapkit/workspace/__init__.py +18 -0
- ff9mapkit/workspace/battledoc.py +985 -0
- ff9mapkit/workspace/builddoc.py +607 -0
- ff9mapkit/workspace/forms_qt.py +586 -0
- ff9mapkit/workspace/importdoc.py +665 -0
- ff9mapkit/workspace/mapview.py +131 -0
- ff9mapkit/workspace/palette.py +85 -0
- ff9mapkit/workspace/savedoc.py +664 -0
- ff9mapkit/workspace/shell.py +6907 -0
- ff9mapkit/workspace/style.py +105 -0
- ff9mapkit/workspace/tuningdialog.py +223 -0
- ff9mapkit-1.0.0b3.dist-info/METADATA +155 -0
- ff9mapkit-1.0.0b3.dist-info/RECORD +193 -0
- ff9mapkit-1.0.0b3.dist-info/WHEEL +5 -0
- ff9mapkit-1.0.0b3.dist-info/entry_points.txt +5 -0
- ff9mapkit-1.0.0b3.dist-info/licenses/LICENSE +31 -0
- ff9mapkit-1.0.0b3.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_note": "ff9mapkit ships NO Final Fantasy IX game data. These entries describe how to regenerate the small set of base assets the kit needs from YOUR OWN install via `ff9mapkit extract-templates`. The .patch files contain only our edits + copy offsets (never game bytes). See docs/PROVENANCE.md.",
|
|
3
|
+
"blank": {
|
|
4
|
+
"source_fbg": "fbg_n11_ldbm_map203_lb_hng_0",
|
|
5
|
+
"patch": "blank.{lang}.patch",
|
|
6
|
+
"sha256": {
|
|
7
|
+
"us": "2289085a5dc1030d8cd1541619e34a0bd722a0957d0849bfaf077c7e30e90452",
|
|
8
|
+
"uk": "2289085a5dc1030d8cd1541619e34a0bd722a0957d0849bfaf077c7e30e90452",
|
|
9
|
+
"fr": "b06d7768c8485ee4c48443e2384730a0d447d2af8e84d87a20a3ee2a23c45f6b",
|
|
10
|
+
"gr": "5676ef381393767a4fef715cdfe1eca947fef10b1d0ec80dd247a0301fa66a34",
|
|
11
|
+
"it": "d968b0d1bafe3b2c60ee02c91a435986f71c23b4afb1e78fa65a67294c5b290b",
|
|
12
|
+
"es": "eb6ac7333a273333b9d7e296408a2cfad41b059acd06679c3fb2a50b815234ac",
|
|
13
|
+
"jp": "e5595df0fcd0685bf8702b2286ac28bc0f8c54169e4c881e61ff5c0ec09c1219"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"region_template": {
|
|
17
|
+
"source_fbg": "fbg_n01_alxt_map031_at_wpn_0",
|
|
18
|
+
"lang": "us",
|
|
19
|
+
"patch": "region_template.patch",
|
|
20
|
+
"sha256": "c170b2664771d697c0dbfd728c306e3c2059695ce4eb68e8f1dcf0f0c1e3e914"
|
|
21
|
+
},
|
|
22
|
+
"fixtures": {
|
|
23
|
+
"alex100-us.eb.bytes": {
|
|
24
|
+
"source_fbg": "fbg_n01_alxt_map016_at_msa_0",
|
|
25
|
+
"kind": "event_with_gateway",
|
|
26
|
+
"lang": "us",
|
|
27
|
+
"gateway": {
|
|
28
|
+
"target": 4000,
|
|
29
|
+
"entrance": 0,
|
|
30
|
+
"zone": [
|
|
31
|
+
[
|
|
32
|
+
-700,
|
|
33
|
+
2200
|
|
34
|
+
],
|
|
35
|
+
[
|
|
36
|
+
200,
|
|
37
|
+
2200
|
|
38
|
+
],
|
|
39
|
+
[
|
|
40
|
+
200,
|
|
41
|
+
3400
|
|
42
|
+
],
|
|
43
|
+
[
|
|
44
|
+
-700,
|
|
45
|
+
3400
|
|
46
|
+
]
|
|
47
|
+
]
|
|
48
|
+
},
|
|
49
|
+
"sha256": "015258162cc8d28afc3b025d7b06037d1cead63778c611acc2cb834e26b70076"
|
|
50
|
+
},
|
|
51
|
+
"grgr.bgx": {
|
|
52
|
+
"source_fbg": "fbg_n21_grgr_map420_gr_cen_0",
|
|
53
|
+
"kind": "camera_bgx",
|
|
54
|
+
"sha256": "2d6acbd6963514b41eb0103fc885a113a59af7b9d2fc57eb43324c9d955d48ab"
|
|
55
|
+
},
|
|
56
|
+
"multifloor.bgi.bytes": {
|
|
57
|
+
"source_fbg": "fbg_n00_tshp_map008_th_upr_0",
|
|
58
|
+
"kind": "walkmesh_verbatim",
|
|
59
|
+
"sha256": "ec6bc267950284ccf68adfd531ff923b42eb2aef90e603e53e463afd8a99fd18"
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"goldens": {
|
|
63
|
+
"EVT_HUT_INT.eb.bytes/us": "d23b507fdf75d12d8bf6762b0a4d834da61beab83cfd31c0df97f443fe533513"
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"src_sha256": "136694da842d4ec61a48268cad65c6d4664b8216ea95a3447f9933029601743d", "out_len": 272, "out_sha256": "c170b2664771d697c0dbfd728c306e3c2059695ce4eb68e8f1dcf0f0c1e3e914", "insert_bytes": 5, "ops": [["c", 21732, 104], ["i", "6700"], ["c", 21838, 4], ["i", "6700"], ["c", 21844, 157], ["i", "67"], ["c", 22015, 2]]}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# FF9 reference arc -- the DISC 1 STORY SPINE, laid out as a chain of forkable arcs / REGIONS.
|
|
2
|
+
#
|
|
3
|
+
# DUAL USE: each [[arc]] below is a forkable FF9 REGION. The GUI's "Browse FF9 regions…" catalog (Import tab,
|
|
4
|
+
# or Ctrl-K "Fork FF9 regions") reads this table to fork a region as a campaign -- pick one, or several to
|
|
5
|
+
# compose into one. The CLI `reference-arcs` instead chains the same arcs into a multi-campaign journeys.toml.
|
|
6
|
+
#
|
|
7
|
+
# This is the north-star planning + fork-and-test harness (CLAUDE.md "fork FIDELITY, not a release"):
|
|
8
|
+
# each [[arc]] below is ONE campaign you produce with `import-chain <seed> --verbatim`, and the arcs chain
|
|
9
|
+
# in order as a multi-campaign JOURNEY. The loop is: fork an arc -> deploy the journey -> walk it -> ask
|
|
10
|
+
# "does it play identically?" -> refine -> move to the next arc. It is NOT a one-click rebuild of FF9 (the
|
|
11
|
+
# world map is unmoddable and the narrative-state layer is the weak axis -- docs/FORK_FIDELITY.md).
|
|
12
|
+
#
|
|
13
|
+
# Seeds are drafted from reference/field-manifest.tsv + the in-game-proven import-chain seeds. EDIT freely
|
|
14
|
+
# (this is YOUR game knowledge): correct a `seed`, add an optional `zone = "<FBG token>"` to widen the fork
|
|
15
|
+
# past the seed's own zone, or add `beat = <ScenarioCounter>` to seed an arc's story state on entry.
|
|
16
|
+
|
|
17
|
+
title = "FF9 -- Disc 1 spine"
|
|
18
|
+
|
|
19
|
+
[[arc]]
|
|
20
|
+
key = "alexandria"
|
|
21
|
+
name = "Alexandria / Prima Vista"
|
|
22
|
+
seed = 100
|
|
23
|
+
note = "The opening: the Tantalus play, kidnapping Garnet, the escape from Alexandria. (Prima Vista = 50.)"
|
|
24
|
+
|
|
25
|
+
[[arc]]
|
|
26
|
+
key = "evil_forest"
|
|
27
|
+
name = "Evil Forest"
|
|
28
|
+
seed = 250
|
|
29
|
+
note = "The crash-landing, Blank, the petrification -- the party first comes together. (seed = ef_ent, the forest ENTRANCE; field 152/ef_fr6 is an isolated cutscene screen.)"
|
|
30
|
+
|
|
31
|
+
[[arc]]
|
|
32
|
+
key = "ice_cavern"
|
|
33
|
+
name = "Ice Cavern"
|
|
34
|
+
seed = 300
|
|
35
|
+
note = "Through the Ice Cavern to the world map. PROVEN forkable (the 300 -> Outside 312 arc, in-game proven)."
|
|
36
|
+
|
|
37
|
+
[[arc]]
|
|
38
|
+
key = "dali"
|
|
39
|
+
name = "Dali"
|
|
40
|
+
seed = 350
|
|
41
|
+
note = "Dali village + the underground black-mage production line. PROVEN forkable (Dali Inn / Weapon Shop)."
|
|
42
|
+
|
|
43
|
+
[[arc]]
|
|
44
|
+
key = "cargo_ship"
|
|
45
|
+
name = "Cargo Ship"
|
|
46
|
+
seed = 507
|
|
47
|
+
note = "The cargo ship out of Dali toward Lindblum. (seed = ca_dck_0, the walkable deck; field 500/ca_dck_1 is an isolated cutscene variant.)"
|
|
48
|
+
|
|
49
|
+
[[arc]]
|
|
50
|
+
key = "lindblum"
|
|
51
|
+
name = "Lindblum"
|
|
52
|
+
seed = 550
|
|
53
|
+
note = "Lindblum: the Festival of the Hunt and Lindblum Castle. (--whole-zone forks the whole ldbm zone, ~70 screens across discs; Lindblum CASTLE is its own zone -- add it as a separate arc if you want it.)"
|
|
54
|
+
|
|
55
|
+
[[arc]]
|
|
56
|
+
key = "gizamaluke"
|
|
57
|
+
name = "Gizamaluke's Grotto"
|
|
58
|
+
seed = 701
|
|
59
|
+
note = "The grotto guardian and the broken bell gate, on the road to Burmecia."
|
|
60
|
+
|
|
61
|
+
[[arc]]
|
|
62
|
+
key = "burmecia"
|
|
63
|
+
name = "Burmecia"
|
|
64
|
+
seed = 750
|
|
65
|
+
note = "The rain-ruined kingdom of Burmecia; the first encounter with Beatrix."
|
|
66
|
+
|
|
67
|
+
[[arc]]
|
|
68
|
+
key = "south_gate"
|
|
69
|
+
name = "South Gate"
|
|
70
|
+
seed = 800
|
|
71
|
+
note = "The South Gate / Bohden Station road (North Gate = 851)."
|
|
72
|
+
|
|
73
|
+
[[arc]]
|
|
74
|
+
key = "treno"
|
|
75
|
+
name = "Treno"
|
|
76
|
+
seed = 1908
|
|
77
|
+
note = "The City of Nobles: the auction house, Queen Stella's cards, Dr. Tot's tower. (seed = tr_gat, the city gate; field 916/tr_whf is an isolated screen.)"
|
|
78
|
+
|
|
79
|
+
[[arc]]
|
|
80
|
+
key = "gargan_roo"
|
|
81
|
+
name = "Gargan Roo"
|
|
82
|
+
seed = 950
|
|
83
|
+
note = "The gargant tunnel linking the Treno region to Cleyra."
|
|
84
|
+
|
|
85
|
+
[[arc]]
|
|
86
|
+
key = "cleyra"
|
|
87
|
+
name = "Cleyra"
|
|
88
|
+
seed = 1000
|
|
89
|
+
note = "The sandstorm-shrouded sanctuary and Alexandria's attack -- the disc-1 climax."
|