Skip to content

About

Big FF8 Tool to edit the game

Resources

Stars

12 stars

Watchers

1 watching

Forks

Latest commit

 

History

758 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FF8 Ultimate Editor

A collection of tools for modding Final Fantasy VIII (PC/Remaster), all bundled behind one launcher: FF8UltimateEditor.exe (or python main.py). Pick a tool from the "Hobbit tools" dropdown at the top of the window, or launch one of the external programs from the toolbar next to it.

A command-line interface (cli.py) is also available for scripting text import/export without opening the GUI (see CLI below).

Make your choice!

Tools made by HobbitDur

These are built into the app and selected from the "Hobbit tools" dropdown.

Ifrit — monster / battle model editor (c0m*.dat)

All-in-one editor for monster and summon battle files, organized as tabs sharing one file toolbar:

  • AI — decompiles and edits monster AI scripts (conditions/commands) as readable pseudo-code.
  • Seq — edits animation sequences (the byte-code that drives monster/summon animations).
  • 3D — views the monster's 3D model and animations (mesh/wireframe, playback speed, bone list), with glTF export.
  • Texture / Dynamic Texture — edits the monster's textures and palette-animation (VRAM) effects.
  • Xlsx — exports/imports monster stats to/from an Excel spreadsheet for easy bulk editing.
  • Cronos — shows that mod's configuration instead of the game's: its AI definitions, and the spells and items its kernel.bin renames (FF8GameData/kernelnames.py reads those out of a kernel.bin; unticked, every name is the one the game ships).
  • Extract sections… / Apply sections… — writes every section of the open file as its own editable file (ai.md, anim_seq.xml, camera.xml, info_stat.xlsx, texture_00.tim…) in a folder named after it, and applies section files back onto a file — you pick the files you want (selecting all of a folder works), the other sections stay as they are. That is how a mod keeps its changes next to the game files and re-applies them to a fresh .dat. The stats keep their spreadsheet format: info_stat.xlsx is this one monster in the workbook format of the Xlsx tab (stats and battle texts), so a workbook covering the whole game can be applied as a section file too.



ShumiTranslator — text editor (all in-game text)

Edits every text string in the game (dialogue, menus, items, names…), with CSV export/import for bulk translation work.

TonberryShop — shop editor (shop.bin)

Edits which items each shop sells (Balamb, Dollet, Timber, Deling City…), and the per-slot "rare" flag. (Item prices live in price.bin — see the Siren tool.)

CCGroup — Triple Triad card editor

Edits Triple Triad card values (ranks/elements) and which cards NPCs play with.

Cid — draw point editor

Edits every draw point in the game (field and world map), including which spell/quantity/refill rate it gives, and its position on the world map.

SolomonRing — Guardian Force editor (kernel.bin)

Edits GF data: general stats, learnable abilities, and character/GF junction compatibility.

PuPuCargo — item menu editor (mitem.bin)

Edits how items behave in menus (what they refine into, what they do when used, their parameters).

Seed — field character model viewer

Views field character models and their animations (NPCs from chara.one and main characters from main_chr.fs).

Pandemona — refine ability editor

Edits GF refine abilities: which items/cards convert into which magic, and in what quantity.

Alexander — battle stage viewer

Views and edits battle stage geometry/textures (a0stgXXX.x files from battle.fs).

Julia — sound editor

Edits the battle sound archive (audio.fmt / audio.dat), the main files on both tabs. Import opens the pair; Import complementary opens the side file battle_actor_sounds.bin. The Actor sound IDs tab shows seven world sound IDs per actor through c0m199, with a panel explaining the selected slot's category, offset, hardcoded starting archive sound and final archive index. Play slot previews it using the loaded archive. New tables preserve original sounds and leave added monster rows empty; copy an actor's row to reuse its sounds. The shared Save writes audio.fmt / audio.dat on Audio archive, and writes the BIN on Actor sound IDs (asking for a destination for a new file). Save the BIN in your mod's direct/exe/ folder.

Siren — item price editor (price.bin)

Edits each item's buy price and sell price multiplier (the sell price the shop pays back is round((buy price / 10 / 2) * sell multiplier)). Ported from the original Siren tool.

Nida — SeeD written test editor (mngrp.bin)

Edits the 30 SeeD written tests (tutorial menu): the question texts, the expected answer of each question, and the selectable choices (cursor stops) — the engine counts the stops at display time, so a question can offer more than the standard YES/NO. Also edits the shared exam UI text. A live in-game preview (using the real FF8 font widths from sysfnt.tdw) shows how each question lays out and flags text that would overflow the vanilla window. Excel/CSV export/import for bulk editing.

Chocoboy — world map script editor (wmsetxx.obj)

Edits the world map's own event bytecode, which is where every world-map side quest lives (the UFO, the Obel Lake rock, Chocobo forests, the train stations, boarding the Ragnarok) along with the field warps, forced battles and item rewards it triggers. Four script sections are shown side by side with the pseudo-code the game actually walks (an IF / THEN / ELSE tree), and each instruction is edited as an opcode and its parameters.

The hard part of these scripts is that the parameters are bare numbers, so every one the tool can resolve is spelled out next to it: the dialog a SHOW_TEXT_BOX opens, the item an ADD_ITEM hands out, the buttons a CHECK_BUTTON_INPUT mask stands for, where an ADD_ENTITY puts what it spawns, and which instruction of which script a GOTO lands on. Selecting a line also lists everywhere else in the file that touches the same save flag, script variable, dialog or message window — which for a side quest spread over a dozen scripts is the only way to see the whole of it.

Each line of the script list says what its script does ("gives Three Stars", "warps to rgcock4", "sets flag 61"), and Ctrl+F searches those, so finding the script behind a side quest takes a few letters rather than opening all 92. Opening wm2field.tbl and field/mapdata/maplist alongside (both read-only, both found by "Open folder") is what turns a warp's entrance number into the field it lands on, with the spawn position and facing. Whole scripts can be added, duplicated, removed and reordered — which matters, because in sections 7 and 11 the first script whose conditions pass is the one that runs, so the order of the table decides the answer.

Double-clicking a GOTO follows it; double-clicking a cross-reference line goes to that instruction. "Check section" looks for what would actually break the game — a jump to nowhere, a script not ending on RETURN, a branch whose conditions can pass with no actions to run — and reports nothing on the untouched game file. Ctrl+Z / Ctrl+Shift+Z undo and redo, including a whole text import.

A whole section can be written out as a text file, annotated and edited in any editor, and read back in. Jump targets are written as labels there rather than byte offsets, so instructions can be inserted, deleted, and whole scripts added or removed, and the jumps still land where they were meant to. Editing in the table does the same fix-ups in place. The dialog texts and location names the scripts show are on a second tab, each listed with the scripts that open it.

Other tools made by other modders (launched from the toolbar)

These are external, standalone programs. The launcher can check for and download updates for them automatically (see the update button in the toolbar).

  • IfritGui — the original Ifrit tool for editing monster stats.

  • Siren — price.bin editor (shop/item prices). Now also built in (see the Siren tool above); the standalone launcher is kept for reference.

  • Doomtrain — kernel.bin editor (general game/battle data).

  • Junkshop — mweapon.bin editor (weapon data).

  • Quezacotl — init.out editor (new-game starting data).

  • Jumbo Cactuar — Scene.out editor (field encounters).

  • Deling — archive editor (browse/extract/repack the game's .fs/.fi/.fl archives).

  • Hyne — save file editor.

  • VincentTim — command-line texture converter for FF7/FF8 .tim/.tex files (see its own README).

CLI

cli.py exposes GUI features as scriptable commands, useful for batch processing, translation work, or CI pipelines without opening any window. Every tool runs headless (no Qt window) and edits the same files as its GUI counterpart.

python cli.py <tool> <command> [options]
  • python cli.py --help lists every tool.
  • python cli.py <tool> --help lists a tool's commands and their options.

Run it from the repo root (with the project's virtualenv active). The tools that need the game's reference data load it automatically from FF8GameData/.

Conventions

  • CSV exports use | as the delimiter; imports auto-detect |, ; or ,, so a file edited in Excel still re-imports cleanly. The shumi-translator and cid CSV formats match what the GUIs produce, so files are interchangeable between CLI and GUI.
  • --output/-o is optional on most in-place editors: omit it to overwrite the input file, or give a path to write a copy. Import commands only touch the fields you changed, and a no-edit round-trip reproduces the original file byte-for-byte (except kernel.bin, whose text offsets are recomputed, and init.out, which is grown to its full size so every item slot is editable — both matching the GUI's own save behaviour).

Available tools

Tool Edits Commands
shumi-translator all in-game text (kernel.bin, mngrp.bin, namedic.bin, field/world/battle, exe) export-csv, import-csv, export-all, export-all-{field,battle,kernel,namedic,mngrp,exe,world}, compress, uncompress
ifrit monster/summon c0m*.dat (stats, model, animation seq) export-xlsx, import-xlsx, export-gltf, import-gltf, export-seq-xml, import-seq-xml, export-sections, apply-sections
ifrit-ai monster AI scripts in c0m*.dat export-md, compile-md
solomon-ring kernel.bin (all data sections, field-level) list-sections, list-fields, get, set, export-csv, import-csv
tonberry-shop shop inventories (shop.bin) export-csv, import-csv
siren item prices (price.bin) export-csv, import-csv, set-price
junkshop weapon-upgrade recipes (mwepon.bin) export-csv, import-csv
pupu-cargo item menu behaviour (mitem.bin) export-csv, import-csv
pandemona GF refine formulas (mngrp.bin) export-csv, import-csv
nida SeeD written tests (mngrp.bin) show, export-csv, import-csv, set-answer
quezacotl new-game starting data (init.out) export-json, import-json
ccgroup Triple Triad NPC card players (field .jsm) list, export-csv, import-csv, set-param
cid draw points (exe .hext + world positions in wmset) export-csv, import-csv
julia battle sounds (audio.fmt / audio.dat) list, export-wav, export-all, replace
alexander battle stages (a0stgXXX.x) export-glb, import-glb
seed field model containers (chara.one) list-models
jp-font-builder JP font atlas for the ILP-JP mod build, decode

Examples

Text (translation workflow):

python cli.py shumi-translator export-csv --input kernel.bin --output kernel.csv
python cli.py shumi-translator import-csv --input kernel.bin --csv kernel.csv
python cli.py shumi-translator compress   --input kernel.bin --output kernel_compressed.bin
python cli.py shumi-translator export-all  --input-dir game_lang --output-dir csv_out

Binary editors (CSV round-trip, --output optional):

python cli.py tonberry-shop export-csv --input shop.bin   --output shops.csv
python cli.py tonberry-shop import-csv --input shop.bin   --csv shops.csv --output shops_new.bin
python cli.py siren         set-price  --input price.bin  --item-id 24 --buy-price 3000
python cli.py junkshop      export-csv --input mwepon.bin --output weapons.csv
python cli.py pupu-cargo    export-csv --input mitem.bin  --output items.csv
python cli.py pandemona     export-csv --input mngrp.bin  --output refine.csv
python cli.py nida          show       --input mngrp.bin  --test 1
python cli.py nida          set-answer --input mngrp.bin  --test 5 --question 3 --answer 1

kernel.bin field editing (addressed by section → entry → field):

python cli.py solomon-ring list-sections
python cli.py solomon-ring list-fields --section 2
python cli.py solomon-ring get --input kernel.bin --section 2 --entry 1
python cli.py solomon-ring set --input kernel.bin --section 2 --entry 1 --field spell_power --value 99
python cli.py solomon-ring export-csv --input kernel.bin --section 2 --output magic.csv

New-game data as JSON:

python cli.py quezacotl export-json --input init.out --output init.json
python cli.py quezacotl import-json --input init.out --json init.json

NPC card players (a literal value, or var:N to read a savemap variable):

python cli.py ccgroup list       --folder extracted_files/field/mapdata
python cli.py ccgroup export-csv  --folder extracted_files/field/mapdata --output players.csv
python cli.py ccgroup import-csv  --folder extracted_files/field/mapdata --csv players.csv
python cli.py ccgroup set-param   --jsm bghall_1.jsm --player 0 --param rare-chance --value 99

Draw points (exe byte + world map position):

python cli.py cid export-csv --exe FF8_EN.exe --wmset wmset.obj --output draws.csv
python cli.py cid import-csv --csv draws.csv --exe FF8_EN.exe --wmset wmset.obj \
    --output-hext draw.hext --output-wmset wmset_new.obj

3D models and sound:

python cli.py ifrit     export-gltf --input c0m071.dat --output c0m071.glb
python cli.py ifrit     export-xlsx --input extracted_files/battle --output monsters.xlsx
python cli.py alexander export-glb  --input a0stg001.x --output stage.glb
python cli.py julia      export-wav  --fmt audio.fmt --index 1 --output sound.wav
python cli.py julia      replace     --fmt audio.fmt --index 1 --wav new.wav

Donate

You can help me releasing those tools on my Patreon

About

Big FF8 Tool to edit the game

Resources

Stars

12 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages