Global lists (warriors.glr)¶
Verified against: SLUS_212.15 (NTSC-U, SHA1 e9cb2cc49aa046b9e494313dce2f5038ed17b2f4) and the NTSC-U disc's
WARRIORS.WAD. Disc checks made with coney-tools extract (2026-10-07), counts only.
Purpose¶
The global resource warriors.glr holds the tables the resource manager keeps for the whole game: which resources
make a character or an object, which clips and sprite sheets can be loaded on demand, and which resources are always
resident. This page gathers their layouts in one place for an extractor; what the game does with each is on the
pages linked from each section. The resource's sound tables (chunks 0x29, 0x31, 0x48, 0x49) are on
Audio data. The WAD holds two different resources with this hash (the second has a smaller Static Sounds
chunk, otherwise the same lists).
Original structure¶
Each list is a chunk whose handler pops it and keeps pointers in the resource manager (0x0050cd4c)
(Chunk system). Names are ours.
| Address | Name | Role | Evidence |
|---|---|---|---|
0x00178098 |
Character List handler | chunk 0x44: manager +0x80 chunk, +0x84 count, +0x88 records |
confirmed (code) |
0x00181170 |
Object List handler | chunk 0x46: manager +0x8c chunk, +0x90 count, +0x94 records |
confirmed (code) |
0x00178ee8 |
AnimList_OnLoaded |
chunk 0x4E: manager +0x98 chunk, +0x9c count, +0xa0 records at chunk +4 |
confirmed (code) |
0x00178b30 |
DependencyList_OnLoaded |
chunk 0x4F: manager +0xa4 chunk, +0xa8 count, +0xac records at chunk +0x10; then wants the always group |
confirmed (code) |
0x00178bc8 |
DependencyList_SetGroup(hash, state) |
sets the state of every record whose group or resource is the hash | confirmed (code) |
0x00182820 |
Particle Page Header handler | chunk 0x4D: the sprite sheet table |
confirmed (code) |
Data¶
All values little-endian; a hash is a CRC-32 of a lower-case name (Name hashing).
Character List (chunk 0x44)¶
A 16-byte header whose first word is the count, then 32-byte records {model name, character data, model, texture
dictionary, four sizes}. Layout and uses: Characters.
Object List (chunk 0x46)¶
A 16-byte header whose first word is the count, then 36-byte records {type name, damaged model's record, model,
texture dictionary, second dictionary, four sizes}. Layout and uses:
WAD contents.
Anim List (chunk 0x4E)¶
A count word, then {u32 hash, u32 size} per loadable clip resource. Confirmed (code) for the layout at
0x00178ee8; that it lists the clips SetDynamicAnimation can load is inferred (Animation).
Dependency List (chunk 0x4F)¶
A 16-byte header whose first word is the count, then 12-byte records:
| Offset | Type | Meaning |
|---|---|---|
+0x00 |
u32 | the group hash: what wants the resource (always at load; on the disc mostly a model or dictionary name, so a resource lists its own dependencies) |
+0x04 |
u32 | the resource hash |
+0x08 |
u16 | state: written by DependencyList_SetGroup (1 = wanted) |
+0x0a |
u16 | loaded |
Confirmed (code) at 0x00178bc8 (the record size, the two hashes and the two half-words), 0x00178c48 (a binary
search by resource) and 0x00178d48 (the next wanted, unloaded record becomes a load request named "%u" of its
hash) (Graphics). Disc check (corroboration): 9,223 records under 1,441 groups, padded to a
multiple of 16 bytes; every state and loaded word is 0 on the disc. Of the group hashes, the recovered names are
model (dyn_beerbottle_geo, 98 records) and dictionary (dyn_crate_b_tex, 71) names; 1,419 records' groups are not
named yet.
Sprite sheet table (chunk 0x4D)¶
A count word, then {u32 size, u32 name hash} per sprite sheet: GUI.
Coney's implementation¶
coney-tools extract (type data) writes each list as data/global/<list>.json with every hash in hex and its
recovered name (python/src/coney_tools/extract_data.py).
Open questions¶
- What groups other than
alwaysthe game asks the Dependency List for, and when.