The map

Almost all of the game happens in the field - walking a town, talking to people, opening doors. Everything else is a place the field hands you off to and gets you back from: a battle, the world map, a movie, a minigame, a menu. Under all of it sit three services that every mode uses: the asset loader, the renderer and the sound stack.

menu overlay (PROT 0899) Bootdisc to mode machine Title screenNew Game / Continue Minigamesfishing, casino, dance CutscenesSTR movies + XA audio World mapoverworld walk + fog Field / townsscript VM, walking, NPCs Battlecommand ring + arts Inna scripted dialogue Pause menustatus, equip, options Shopbuy / sell / quantity Level-upEXP split + stat growth Save screenmemory-card flow Inventoryone 256-slot bag underneath every mode Asset loaderscene name to VRAM + RAM RendererTMD meshes via the GTE Shading + palettestexel to screen colour Audiomusic, effects, voices New Game door warp script cue exit / enter encounter innkeeper Start merchant victory
The field is the hub. Every arrow out of it is a hand-off the scene's own script or the pad makes, and each round trip ends with the field scene reloaded or resumed. The world map can start battles too (its regions roll encounters the same way a town floor does). Shops and the save screen are drawn by the menu overlay; an inn is not - it is an ordinary conversation in the town's script.

Where the code lives

The game shipped without symbols, so a routine's RAM address is its name: FUN_8002735C is one specific traced function in the project's dumps. Half the runtime lives in the main executable SCUS_942.54 and is always in memory: boot, disc reads, the asset router, two of the bytecode VMs, the audio and rendering libraries. The other half is overlays - chunks of code streamed off the disc into one shared RAM window when a mode starts. Only one of them is resident at a time, which is why the world map, save, shop and level-up screens are parts of the field, menu and battle overlays rather than overlays of their own.

slot A at 0x801CE818 - exactly one of these at a time Field / town - 0897field VM, world map Battle - 0898action SM, effect VM Menu + title - 0899pause, save, shop, title Cutscene - 0970STR / MDEC movies Minigames - 0972..0980one overlay per warp sub-id World-map head - 0981swapped over 0897's first 16 KB Debug menu - 0971dev only, unreachable in retail slot B: summon-render pair 0900 / 0901, plus the battle side-band streams SCUS_942.54, always resident: boot, disc I/O, asset router, move + motion VMs, battle setup, libsnd / libspu / libgpu
Battle loads over the field overlay and the menu over either, so the game never holds two of them at once. The title screen is the tail of PROT entry 0899 (boot); the world map keeps 0897 and swaps only its first 0x4000 bytes for 0981. "Zero callers in the executable" therefore never means dead code - the caller is usually in an overlay.

How this section is organised

The pages follow a player's path through the game: power on, walk a town, the interpreters that script it, a fight, the overworld, the menus and the side games, then the picture and sound under all of it. Pages about the Rust port and the site's own viewers sit apart in the last group, so every group before it describes only the shipped game. The sidebar uses the same groups in the same order.

  1. Startup and loadingdisc to title screen; door to loaded room
  2. Fieldwalking, ambient motion, grid mode
  3. Script enginesthe bytecode interpreters
  4. Battle: rulesencounter to level-up
  5. Battle: on screenstage, actors, HUD
  6. World map and cutscenesthe overworld, movies, the opening
  7. Menus and town servicespause menu, bag, save, shop, inn
  8. Minigamesfishing, casino, dance, dome
  9. Sound and picturerenderer, shading, audio
  10. The portthe Rust engine and the site's hosts

A large subsystem has a readable tour page plus companion pages: internals for the reference tables a tour leaves out, and capture notes for the measurements behind its claims. Companions are indented under their tour in the sidebar and marked below; read the tour first.

Startup and loading

From the disc spinning up to the title screen, and what every later mode leans on to get its assets into memory.

Field: towns and dungeons

Almost all of the game is spent here: walking a map that moves around you. The scripts that drive NPCs, doors and story beats are in the next group.

Script engines

Most in-game behaviour is authored as data - scripts the designers could change without recompiling - and run by a handful of small interpreters. Four are clean opcode dispatchers; the effect VM is a per-slot state machine with the same role. The VM inventory lists every interpreter-shaped subsystem, including the ones too small for a page of their own.

VMDrivesLives inOps
Field / event VMNPC lines, cutscenes, doors, story flagsField overlay 089743 (+ 0x4C sub-dispatch)
Motion VMsPursue / patrol / face-target; scripted motion + flag writesSCUStwo small dispatchers
Move-table VMPer-actor animation, motion and Tactical ArtsSCUS + an overlay extension71 + 61
Window-widget VMMenu window choreographyMenu overlay 089913
Effect VMBattle effect spawnsBattle overlay 0898state machine

Battle: rules

From the encounter flash to the level-up window, in the order a fight runs: the overview, one round end to end, the command menu, the action machine and its byte queue, the summon modules, the arithmetic, and the spoils.

Battle overview
The guided tour: loading a fight, the roster, the round loop, the command ring, and how a battle ends.
Companion to Battle overview
Battle: internals
The roster table and actor struct, the battle context, the records the loader reads, the heap ledger that bounds a formation, and the status bits.
Companion to Battle overview
Battle: capture notes
The save-state diffs and watchpoint captures behind the battle pages' claims, kept for anyone re-deriving one.
Battle round loop
One fight from the outside in: encounter roll or scripted entry, the two bands of a round, initiative, monster AI, the results sequence and what a wipe really does.
Battle command flow
The menu half of a battle: Begin / Run, the D-pad command ring, the commit log and confirm, plus the tutorial and Cort stage overlays that hook it.
Companion to Battle command flow
Arts command gauge
Why one Arts-bar button is wider than the others: the weapon-hand command's AP cost is also its pennant width.
Battle action state machine
The state machine between “picked Attack” and “HP deducted” - swing timing, Arts chains, Magic, Summons, Spirit, Run and capture.
Companion to Battle action state machine
Battle action: helpers
Where a turn’s arithmetic lives: the range metric, damage wrappers, escape roll, AI picks, effect spawns, pose driver and voice cues.
Companion to Battle action state machine
Battle action: exit gates
The two states that wait with no timeout - the HP-readout settle and the attack approach - and exactly how each one parks.
Battle action queue
The byte string every action is: swing bytes, art starters and art constants, how the builder rewrites combos, and how hit events turn it into damage.
A cast, end to end
One Seru spell from the command ring to the HP bar: the command flow, the action bytes, the action state machine's three cast bands, the paged cast module and the Done band.
Cast modules
The 64 small overlay programs behind every summon and capture-class special: how an action reaches one, its phase machine, damage shapes and camera.
Battle formulas
Damage, MP cost, accuracy, escape and the RNG - the exact arithmetic.
Level-up
EXP split among survivors, a closed-form XP curve, and growth curves that land every stat on its level-99 ceiling.

Battle: on screen

How the same fight is drawn: the arena and its camera, the combatants, and the chrome around them.

World map and cutscenes

The two places the field hands you to between towns: the overworld you walk, and the movies and scripted scenes you watch.

Minigames

All five are playable on the minigames page and inside the port.

Sound and picture

The two services every mode draws on, as the retail game runs them.

The port

The from-scratch Rust engine and the site's own viewers. These pages describe this project's code, not the retail game; each links back to the retail page it reimplements.