How Legend of Legaia's engine actually works under the hood - what happens when you walk into a door, how a battle turn resolves, why the world-map ocean shimmers, how a cutscene plays - and how this project's from-scratch Rust port reimplements each piece. Each card is a self-contained page on one subsystem: what it does in the game, where its code lives, and how it connects to the rest. Start with Boot path if you're new to the project, or Engine reimplementation if you're here for the port.
The shape of the engine
Every page here comes from tracing the original PlayStation code with a disassembler and reimplementing the behaviour in Rust. The game shipped without symbols, so a routine's RAM address is its name: FUN_8002735c points at one specific traced function you can find in the project's dumps.
Half the runtime lives in the main executable SCUS_942.54: boot, disc I/O, the asset dispatcher, two of the VMs, the audio and rendering libraries. The other half is RAM overlays - chunks of code streamed from the disc into one shared window on demand, one at a time. Field, battle, menu, cutscene and minigame each load into that window and never coexist; the world map, save, shop, level-up and options screens are subsystems inside the field and menu overlays, not overlays of their own.
The slot-A family loads at 0x801CE818 and never coexists: battle loads on top of the field overlay, the menu on top of either. The title overlay is the tail of PROT entry 899 (see boot); PROT 0971 is the dev debug-menu overlay. Minigames have their own playable page; the randomizer's injected vendor screen lives in 0899's dead space (write-up).
Boot, loading, drawing, sound
The plumbing every other subsystem stands on: getting the archive directory into RAM, turning a scene name into meshes and palettes, putting triangles on screen, and getting music out of the speaker.
Most in-game behaviour is authored as scripts in the data files and run by a handful of small bytecode interpreters, so designers could change behaviour without recompiling. Four are clean opcode dispatchers; the effect VM is a per-slot state machine with the same role.