A mechanics-overhaul ROM hack of Final Fantasy VI (SNES, US "FF3" ROM). It keeps FF6's cast, story, and world, and replaces the combat system with Octopath Traveler's: per-character job identities, shield/break tactics, and a boost-point turn economy.
v0.26 is the current release (tag); this housekeeping release improves the Phantom Train fight, boosted damage, Special weapon weaknesses and boosted Magicite (details in the release notes). The game is playable from the start through the end of the World of Balance: the whole Thamasa arc, the world tour aboard the repaired Blackjack, the IAF gauntlet, the Floating Continent and AtmaWeapon, and the escape — and into the World of Ruin as far as the Falcon, with Setzer back and Darill's Tomb cleared.
Main is v0.27 development; the latest published release is v0.26.
Break and boost are the two central systems. Enemies carry shields and hidden weaknesses, hitting a weakness chips a shield, and breaking drops defenses hard. Boost banks turns and folds spell tiers (Fire → Fira → Firaga). Magicite work as sub-jobs: equip an esper and its spells join your Magic list, along with a stat bump, while you hold it — in battle and in the field menu. Blitz is a menu, Steal guarantees the rare at three boost pips, and level-ups fully restore HP and MP.
See docs/DESIGN.md for the mechanics design and docs/TOOLING.md for tool installation.
Each release carries ot6-vX.Y.apk, OT6 Patcher: a small app that makes
OT6.sfc from your own ROM and keeps it current. To get updates without
lifting a finger, subscribe in Obtainium:
- Add an app with the URL
https://github.com/mtklein/ot6, and under "Filter APKs by regular expression" enterot6-.*\.apk. - Install it, open OT6 Patcher once, and choose the folder that holds your
own Final Fantasy III (USA) v1.0 ROM (it's never included, and never
changed). The app finds the ROM there and writes
OT6.sfcbeside it. If it can't find it, it lists what it checked, and you can pick the ROM file yourself. - From then on, each update Obtainium installs quietly rewrites
OT6.sfc, with no notifications; open the app any time to see the last result.
OT6.sfc keeps its name across updates, so your saves and save states
carry over. RetroArch: put the ROM in a folder its playlist scans, and
re-scan once so OT6.sfc shows up. If you used to soft-patch, delete the
Final Fantasy III (USA).bps beside your vanilla ROM so vanilla stays
vanilla, and keep any OT6.bps (or .ips, .ups, .xdelta, or a numbered
one like OT6.ips1) out of OT6.sfc's folder, since RetroArch would apply it
on top; the app warns if it sees one.
See AGENTS.md.
You supply your own ROM; it is not included. The build verifies it by SHA-1
and refuses anything else: Final Fantasy III (USA).sfc, sha1
4f37e4274ac3b2ea1bedb08aa149d8fc5bb676e7, at the repo root.
brew bundle # cc65, sdl2, ninja, ffmpeg
python3 -m pip install numpy
python3 configure.py # writes build.ninja
ninja # builds and tests everything (qualification)
ninja release # ...then the release preflights and the zipMesen and Flips are not brew-installable; docs/TOOLING.md has those steps.
ninja runs the whole graph: both ROMs, every generated savestate (the
story-chain fixtures are multi-minute scripted playthroughs; a cold build
takes upward of an hour and a half), all 94 suite tests, the audits and
selftests. ninja release adds the release preflights and packaging.
Anything narrower is a real output path:
ninja ff6/rom/ff6-en.sfc # just the ROM
ninja build/results/suite/battle_break.ok # one suite test (and what it needs)
ninja build/states/vargas_entry.mss.lua # one savestate (and its chain)tools/gui.sh opens the built ROM in the Mesen GUI.
OT6_RECORD=1 tools/tests/run.sh tools/tests/<test>.lua records a run as a
watchable video with a pad-input panel; see
tools/stream/README.md.
OT6 code lives in feature modules emitted from
ff6/src/battle/ot6.asm into expanded bank $F0;
ot6_memory.inc owns the shared WRAM/SRAM
map. ff6/ is a vendored copy of the everything8215/ff6 disassembly
(GPL-3.0). The headless play harness is
docs/playing-headless.md;
tools/tests/README.md covers the test harness.
Relm's Sketch carries Final Fantasy VI 1.0's most famous bug, deliberately left in place: when a Sketch misses, the game can rarely corrupt your inventory or save. Save before experimenting with Sketch; the world map saves anywhere.
OT6's own code is MIT (see LICENSE). The Final Fantasy VI
disassembly under ff6/ is GPL v3, and so are the built ROM and release
patch that include it.