Battle model prefixes
Battle model prefixes
battle.lgp names nothing. Every model in it is addressed by a two-letter prefix, and
its files are that prefix plus two more letters: the skeleton araa.hrc, its meshes
arab.p, arac.p, its textures arad.tex. The prefix is the whole address.
The prefix is an index, and for an enemy the index is its enemy id
Read the two letters as base-26 with a as zero:
index = (first - 'a') * 26 + (second - 'a')
ar is 17, gi is 164, mm is 324. For any prefix in the enemy range, that index is the
enemy id scene.bin declares — the same number a scene setup writes beside the record that
carries the creature's stats, drops and attack table.
That matters because it means a page can claim its battle model without anybody comparing
names. The claim is arithmetic against a number the corpus already stores in game_id, so
it holds in any language and survives a retranslation.
How the alignment was checked
The corpus holds 342 creature pages that declare an enemy id. Resolving each battle model prefix to an index and looking up the page at that id:
| Prefix index lands on a page whose name matches the model's | 314 |
| Prefix index lands on a page, and the model list has no name to compare | 28 |
| Prefix index lands on a page whose name contradicts the model's | 0 |
Zero contradictions across 342 lookups is the measurement. The 28 are entries a community
model index left as Unknown; the page names them, and nothing disagrees.
Enemy id 17 is the one page the arithmetic finds nothing at, because
Guard Hound was hand-written before the seed and the
importer merged the record into it by name rather than giving it a game_id. The binding is
recorded there anyway, with that reason on it.
Three other ranges live in the same archive
Not every prefix is an enemy. battle.lgp also holds:
- The playable models, at prefixes
rsthroughsm— 21 of them, whichff7.exe's own model table names in romaji:CLOUD,EARITH,SEFIROS,DEATHGIG. The party's four Barret models and three Vincent models are separate entries, as are Vincent's four transformations and the frog a party member becomes under Frog status. - The battle arenas, at prefixes
ogthroughrr— 90 of them, one per battle location a scene can select. Nothing in any file names an arena in any language. - Models nothing names at all — 26 prefixes that either no encounter references or that a
scene declares under bytes no English name table has letters for. The ten at
aathroughajare test dummies.
Only the first two ranges have an entity to belong to, which is why the arenas do not appear in the model index: a battle location is not a page here, for the same reason 702 field maps are not.
The prefix is not a field model prefix
char.lgp uses four-letter names for skeletons directly — aaaa.hrc is Cloud's field
model. battle.lgp uses two letters plus a two-letter member suffix. aaaa.hrc therefore
exists in both archives and means different things: Cloud in one, test dummy 0 in the other.
Anything resolving a member by name has to know which archive it is reading.
Facts
- Relates to
- Source
- measured
- Status
- verified
- Targets
- pc-1998
- pc-steam
- Updated
- 2026-09-05
technical/archive/battle-lgp