-
-
Notifications
You must be signed in to change notification settings - Fork 4
skproject Preservation Worklist
skproject is Firestaff's source-level reference for Dungeon Master II:
Skullkeep. It is a major reconstruction and porting effort, not a replacement
for a hash-identified SKULL.EXE and its original media.
Use skproject to recover names, structures, dispatches and intended data flow. Use original executables, GDAT assets and captures to prove release-specific behaviour. A port can match broad design yet differ in pointer arithmetic, packed fields, palette timing, save writeback or input scheduling.
| Area | Principal material | Missing preservation evidence |
|---|---|---|
| GDAT |
SKWIN/SkWinCore.cpp, SkGlobal.h, defines.h
|
Raw spans, decoder, palette, destination and draw order |
| Dungeon |
DME.h, SkWinCore.cpp, SKULL.ASM
|
G1 fields and c_record addressing/ownership |
| Menu/title | UI and dialog code, SKULL.ASM
|
Original timing, hit testing, palette and audio sequence |
| AI/combat |
DME.h, SkWinCore.cpp
|
State transitions, random stream and writeback traces |
| Saves | SKSAVE routes and corpus | Full byte-level import/export and backup/error behaviour |
| Audio | sound/midi modules and media | Trigger semantics, device timing and sample routing |
DM2 rendering is data-driven. A preservation-quality material record should name the complete path:
G1/scene selector -> GDAT category/subtype/entry -> raw address/span ->
decoder -> indexed pixels + palette -> destination Rect14 -> draw order ->
frame hash
This must cover title, menu, HUD, walls, floors, doors, creatures, items, outdoor sky/ground and weather. A bitmap without palette, clipping and scene owner is not enough to prove a rendered frame.
Every G1 field and c_record needs a release-aware cross-reference: offset,
width/type, base/index rule, readers, writers, observed values and a trace
witness. A field may be a graphics selector, gameplay flag, script reference
or transient cache key. Treating all of them as generic tile IDs loses the
semantics needed for compatible loading and rendering.
SKSAVE preservation needs legal saves for early game, indoor/outdoor scenes, shops, scripts, active projectiles, timers, companions and failure states. Keep complete before/after bytes, not only deserialised structures.
Title and menu preservation needs VBL-indexed input, palette writes, audio calls and rendered-frame hashes. Modern host UI must not be assumed to have the same timing as DOS merely because it looks similar.
- Annotated
SKULL.ASManchors mapped to skproject functions and GDAT readers. - A hash-indexed, legally sourced DM2 media and save corpus.
- A GDAT inspector that reports raw spans before decoding.
- Scene captures tying G1/c_record state to HUD and viewport commands.
- Differential traces for menu, audio, creature AI, weather and save writes.