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.
Files changed (193) hide show
  1. ff9mapkit/__init__.py +18 -0
  2. ff9mapkit/__main__.py +36 -0
  3. ff9mapkit/_animdb.py +2994 -0
  4. ff9mapkit/_animdb_all.py +14125 -0
  5. ff9mapkit/_fieldtable.py +1516 -0
  6. ff9mapkit/_fieldtext.py +845 -0
  7. ff9mapkit/_held_poses.py +44 -0
  8. ff9mapkit/_itemdb.py +65 -0
  9. ff9mapkit/_modeldb.py +725 -0
  10. ff9mapkit/_narrowmap_data.py +10 -0
  11. ff9mapkit/_npcparams.py +634 -0
  12. ff9mapkit/_regen_animdb.py +72 -0
  13. ff9mapkit/_regen_animdb_all.py +66 -0
  14. ff9mapkit/_regen_fieldtable.py +95 -0
  15. ff9mapkit/_regen_fieldtext.py +66 -0
  16. ff9mapkit/_regen_modeldb.py +67 -0
  17. ff9mapkit/_regen_npcparams.py +123 -0
  18. ff9mapkit/_regen_scenedb.py +57 -0
  19. ff9mapkit/_scenedb.py +869 -0
  20. ff9mapkit/abilities.py +225 -0
  21. ff9mapkit/animations.py +120 -0
  22. ff9mapkit/archetypes.py +218 -0
  23. ff9mapkit/areatitle.py +76 -0
  24. ff9mapkit/battle/__init__.py +21 -0
  25. ff9mapkit/battle/abilityfeatures.py +294 -0
  26. ff9mapkit/battle/actiondelta.py +441 -0
  27. ff9mapkit/battle/aiauthor.py +305 -0
  28. ff9mapkit/battle/ailint.py +140 -0
  29. ff9mapkit/battle/aipatch.py +175 -0
  30. ff9mapkit/battle/battleai.py +148 -0
  31. ff9mapkit/battle/battlecsv.py +390 -0
  32. ff9mapkit/battle/battlepatch.py +395 -0
  33. ff9mapkit/battle/build.py +558 -0
  34. ff9mapkit/battle/camera_codec.py +332 -0
  35. ff9mapkit/battle/camera_data.py +128 -0
  36. ff9mapkit/battle/characterdelta.py +789 -0
  37. ff9mapkit/battle/event_data.py +72 -0
  38. ff9mapkit/battle/extract.py +540 -0
  39. ff9mapkit/battle/fbx.py +223 -0
  40. ff9mapkit/battle/reskin.py +149 -0
  41. ff9mapkit/battle/scene_codec.py +314 -0
  42. ff9mapkit/battle/scene_data.py +369 -0
  43. ff9mapkit/battle/scenelint.py +125 -0
  44. ff9mapkit/battle/seqasm.py +131 -0
  45. ff9mapkit/battle/seqauthor.py +220 -0
  46. ff9mapkit/battle/seqcodec.py +300 -0
  47. ff9mapkit/battle/seqdis.py +106 -0
  48. ff9mapkit/battle/seqpatch.py +137 -0
  49. ff9mapkit/battle_bgm.py +133 -0
  50. ff9mapkit/binutils.py +60 -0
  51. ff9mapkit/build.py +5445 -0
  52. ff9mapkit/campaign.py +1276 -0
  53. ff9mapkit/catalog.py +316 -0
  54. ff9mapkit/chain.py +358 -0
  55. ff9mapkit/cli.py +3114 -0
  56. ff9mapkit/config.py +360 -0
  57. ff9mapkit/content/__init__.py +13 -0
  58. ff9mapkit/content/areatitle.py +36 -0
  59. ff9mapkit/content/ate.py +118 -0
  60. ff9mapkit/content/camera.py +123 -0
  61. ff9mapkit/content/chest.py +186 -0
  62. ff9mapkit/content/choice.py +163 -0
  63. ff9mapkit/content/conductor.py +217 -0
  64. ff9mapkit/content/cutscene.py +290 -0
  65. ff9mapkit/content/encounter.py +41 -0
  66. ff9mapkit/content/entry_settle.py +50 -0
  67. ff9mapkit/content/equipment.py +93 -0
  68. ff9mapkit/content/event.py +191 -0
  69. ff9mapkit/content/gateway.py +101 -0
  70. ff9mapkit/content/inventory.py +59 -0
  71. ff9mapkit/content/itemdata.py +644 -0
  72. ff9mapkit/content/itemtext.py +168 -0
  73. ff9mapkit/content/jump.py +114 -0
  74. ff9mapkit/content/ladder.py +633 -0
  75. ff9mapkit/content/movement.py +53 -0
  76. ff9mapkit/content/music.py +97 -0
  77. ff9mapkit/content/npc.py +348 -0
  78. ff9mapkit/content/object.py +340 -0
  79. ff9mapkit/content/onentry.py +135 -0
  80. ff9mapkit/content/party.py +111 -0
  81. ff9mapkit/content/pathfind.py +138 -0
  82. ff9mapkit/content/platform.py +314 -0
  83. ff9mapkit/content/player.py +168 -0
  84. ff9mapkit/content/prop.py +75 -0
  85. ff9mapkit/content/region.py +340 -0
  86. ff9mapkit/content/reinit.py +59 -0
  87. ff9mapkit/content/savepoint.py +90 -0
  88. ff9mapkit/content/shop.py +178 -0
  89. ff9mapkit/content/sps_trigger.py +66 -0
  90. ff9mapkit/content/startup.py +71 -0
  91. ff9mapkit/content/synthesis.py +106 -0
  92. ff9mapkit/content/text.py +183 -0
  93. ff9mapkit/content/textcarry.py +290 -0
  94. ff9mapkit/content/verbatim.py +86 -0
  95. ff9mapkit/content/walkmesh_hotfix.py +38 -0
  96. ff9mapkit/data/__init__.py +48 -0
  97. ff9mapkit/data/_regen_provenance.py +142 -0
  98. ff9mapkit/data/provenance/blank.es.patch +1 -0
  99. ff9mapkit/data/provenance/blank.fr.patch +1 -0
  100. ff9mapkit/data/provenance/blank.gr.patch +1 -0
  101. ff9mapkit/data/provenance/blank.it.patch +1 -0
  102. ff9mapkit/data/provenance/blank.jp.patch +1 -0
  103. ff9mapkit/data/provenance/blank.uk.patch +1 -0
  104. ff9mapkit/data/provenance/blank.us.patch +1 -0
  105. ff9mapkit/data/provenance/manifest.json +65 -0
  106. ff9mapkit/data/provenance/region_template.patch +1 -0
  107. ff9mapkit/data/reference_arcs.toml +89 -0
  108. ff9mapkit/data/region_catalog.toml +593 -0
  109. ff9mapkit/deploystack.py +358 -0
  110. ff9mapkit/dialogue.py +803 -0
  111. ff9mapkit/eb/__init__.py +12 -0
  112. ff9mapkit/eb/_exprtable.py +59 -0
  113. ff9mapkit/eb/_membertable.py +38 -0
  114. ff9mapkit/eb/_optables.py +537 -0
  115. ff9mapkit/eb/_regen_optables.py +76 -0
  116. ff9mapkit/eb/cmdasm.py +323 -0
  117. ff9mapkit/eb/disasm.py +332 -0
  118. ff9mapkit/eb/edit.py +439 -0
  119. ff9mapkit/eb/exprasm.py +158 -0
  120. ff9mapkit/eb/model.py +178 -0
  121. ff9mapkit/eb/opcodes.py +463 -0
  122. ff9mapkit/eblint.py +177 -0
  123. ff9mapkit/editor/__init__.py +20 -0
  124. ff9mapkit/editor/app.py +950 -0
  125. ff9mapkit/editor/battle_forms.py +240 -0
  126. ff9mapkit/editor/breadcrumb.py +89 -0
  127. ff9mapkit/editor/dialogs.py +116 -0
  128. ff9mapkit/editor/feedback.py +208 -0
  129. ff9mapkit/editor/forms.py +632 -0
  130. ff9mapkit/editor/graphview.py +350 -0
  131. ff9mapkit/editor/jobs.py +342 -0
  132. ff9mapkit/editor/model.py +243 -0
  133. ff9mapkit/editor/picker.py +120 -0
  134. ff9mapkit/editor/theme.py +212 -0
  135. ff9mapkit/eventscan.py +1441 -0
  136. ff9mapkit/extract.py +2279 -0
  137. ff9mapkit/flags.py +693 -0
  138. ff9mapkit/forkreport.py +1383 -0
  139. ff9mapkit/hub.py +477 -0
  140. ff9mapkit/idgated.py +101 -0
  141. ff9mapkit/infohub.py +580 -0
  142. ff9mapkit/items.py +63 -0
  143. ff9mapkit/itemstats.py +346 -0
  144. ff9mapkit/journey.py +1902 -0
  145. ff9mapkit/keyitems.py +93 -0
  146. ff9mapkit/logic_add.py +632 -0
  147. ff9mapkit/logic_edit.py +728 -0
  148. ff9mapkit/logic_map.py +526 -0
  149. ff9mapkit/pack.py +175 -0
  150. ff9mapkit/playerswap.py +231 -0
  151. ff9mapkit/prop_archetypes.py +228 -0
  152. ff9mapkit/provision.py +282 -0
  153. ff9mapkit/refarc.py +825 -0
  154. ff9mapkit/save.py +337 -0
  155. ff9mapkit/save_items.py +1673 -0
  156. ff9mapkit/scene/__init__.py +11 -0
  157. ff9mapkit/scene/arena.py +63 -0
  158. ff9mapkit/scene/bgart.py +140 -0
  159. ff9mapkit/scene/bgi.py +732 -0
  160. ff9mapkit/scene/bgs.py +174 -0
  161. ff9mapkit/scene/bgx.py +185 -0
  162. ff9mapkit/scene/cam.py +345 -0
  163. ff9mapkit/scene/guide.py +311 -0
  164. ff9mapkit/scene/paint.py +506 -0
  165. ff9mapkit/scene/placeholder.py +107 -0
  166. ff9mapkit/sjbinary.py +285 -0
  167. ff9mapkit/sps/__init__.py +17 -0
  168. ff9mapkit/sps/author.py +294 -0
  169. ff9mapkit/sps/catalog.py +88 -0
  170. ff9mapkit/sps/codec.py +264 -0
  171. ff9mapkit/sps/edit.py +184 -0
  172. ff9mapkit/sps/lint.py +58 -0
  173. ff9mapkit/sps/render.py +116 -0
  174. ff9mapkit/sps/templates.py +47 -0
  175. ff9mapkit/sps/texture.py +131 -0
  176. ff9mapkit/walkmesh_hotfixes.py +163 -0
  177. ff9mapkit/workspace/__init__.py +18 -0
  178. ff9mapkit/workspace/battledoc.py +985 -0
  179. ff9mapkit/workspace/builddoc.py +607 -0
  180. ff9mapkit/workspace/forms_qt.py +586 -0
  181. ff9mapkit/workspace/importdoc.py +665 -0
  182. ff9mapkit/workspace/mapview.py +131 -0
  183. ff9mapkit/workspace/palette.py +85 -0
  184. ff9mapkit/workspace/savedoc.py +664 -0
  185. ff9mapkit/workspace/shell.py +6907 -0
  186. ff9mapkit/workspace/style.py +105 -0
  187. ff9mapkit/workspace/tuningdialog.py +223 -0
  188. ff9mapkit-1.0.0b3.dist-info/METADATA +155 -0
  189. ff9mapkit-1.0.0b3.dist-info/RECORD +193 -0
  190. ff9mapkit-1.0.0b3.dist-info/WHEEL +5 -0
  191. ff9mapkit-1.0.0b3.dist-info/entry_points.txt +5 -0
  192. ff9mapkit-1.0.0b3.dist-info/licenses/LICENSE +31 -0
  193. 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."