Skip to content

Characters & Creatures

Every named entity in Spirit of Excalibur is driven by an FSME bytecode VM — a tiny per-class script (one of 24 _prgm classes compiled into the executable) that decides which frame of a shared FRML sprite sheet to draw and for how long. Unlike Conan the Cimmerian and Warriors of Legend, where walk/attack/death frame ranges had to be inferred from frame geometry, this game’s segments below come directly from disassembling and hand-tracing that VM for each of the ten hero/character classes that pair with a real sprite — see docs/spirit/amiga/bytecode-vm.md § “Animation-frame ranges — confirmed per character class” in the main repo (not part of this site) for the full derivation, and src/assets/formats/spirit-frml-animations.ts for the resulting per-class segment table this page renders.

Which named _aForces entities (or generic troop labels) actually use each class’s sprite id, per classInfo.f2E in spirit-game-data.json, is read straight off the real extracted entity table below — not invented for this page: every hero/troop name is one that some real entity record carries with this exact sprite id. Generic repeated labels (“knight”, “Men at Arm”, “guard”) are folded into a trailing count rather than listed once per duplicate.

Each _aForces entity record carries an iPoseSet byte selecting one of the game’s 24 _prgm bytecode classes; ten of those classes pair 1:1 with a real PLAYA32A.RES/OVERA32A.RES sprite id. Click a segment pill under a card to switch which named animation loops — walk is shown by default. Segment confidence follows this project’s standard scale: a pill’s title attribute (hover) shows confirmed (a real traced loop/ramp read directly off _Anim_Draw frame arguments), rendered (a real bytecode boundary exists, only the name is inferred), or hypothesis (neither is independently confirmed) — see docs/spirit/amiga/bytecode-vm.md for the full evidence behind every segment.

Every one of the 40 confirmed FRML animation-frame resources across PLAYA32A.RES and OVERA32A.RES — army formations, terrain-backdrop creatures and the ten hero classes above, all decoded by src/assets/formats/frml.ts. Every resource here also carries an animations classification; for the 30 not covered by the confirmed bytecode trace above, it falls back to a single whole-resource loop (confidence: 'hypothesis') rather than asserting a walk/attack/death split that isn’t evidenced — see classifySpiritFrmlAnimations()’s fallback in src/assets/formats/spirit-frml-animations.ts.