dm2-graphics: decode the (1,0,7,0x0a) creature frame table #271

Merged
jqueuniet merged 0 commits from refs/pull/271/head into main 2026-07-17 20:15:18 +02:00
jqueuniet commented 2026-07-17 20:10:36 +02:00 (Migrated from codeberg.org)

Decodes the last unidentified entry type in graphics.dat: cls = (1, 0, 7, 0x0A) is the V4 engine's global creature animation frame table (tblCreatureFrameInfo14 / _4976_5a98), loaded from this exact GDAT entry by SKWIN/SkWinCore.cpp:54795-54796 and consumed per facing direction by QUERY_CREATURE_PICST.

  • dm2_graphics::CreatureFrameTable / CreatureFrame typed decoder + Archive::creature_frame_table()
  • tests/creature_frame_fixture.rs pins the 8-port byte identity (all Japanese-lineage archives), the 8-port absence (all Western V5-lineage archives), the 118-frame decode, and per-field invariants
  • graphics-dat.md § "Slot 0x0a" documents the 14-byte record layout and engine references; ROADMAP entry checked off with the corrected distribution (the record is a V4-lineage marker, not console-only)

Full investigation details in the issue comment.

Closes #266

Decodes the last unidentified entry type in `graphics.dat`: `cls = (1, 0, 7, 0x0A)` is the V4 engine's global creature animation frame table (`tblCreatureFrameInfo14` / `_4976_5a98`), loaded from this exact GDAT entry by `SKWIN/SkWinCore.cpp:54795-54796` and consumed per facing direction by `QUERY_CREATURE_PICST`. - `dm2_graphics::CreatureFrameTable` / `CreatureFrame` typed decoder + `Archive::creature_frame_table()` - `tests/creature_frame_fixture.rs` pins the 8-port byte identity (all Japanese-lineage archives), the 8-port absence (all Western V5-lineage archives), the 118-frame decode, and per-field invariants - `graphics-dat.md` § "Slot 0x0a" documents the 14-byte record layout and engine references; ROADMAP entry checked off with the corrected distribution (the record is a V4-lineage marker, not console-only) Full investigation details in the issue comment. Closes #266
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
jqueuniet/dm2-tools!271
No description provided.