-
-
Notifications
You must be signed in to change notification settings - Fork 4
CSBWin Preservation Worklist
CSBWin is the reference for CSB-specific Windows extensions. It is not interchangeable with ReDMCSB: ReDMCSB covers original CSB engine behaviour; CSBWin adds DSA, extended saves, custom graphics and host UI decisions.
| Area | Main files | Evidence still needed |
|---|---|---|
| Viewport and panels |
Viewport.cpp, CSBCode.cpp, Graphics.cpp, Data.h
|
Runtime tables, planar blit and presentation order |
| DSA |
DSA.cpp, DSA.h, data.cpp
|
Full opcode/filter semantics |
| Saves |
SaveGame.cpp, Character.cpp, Data.h
|
GAMEBLOCKs, DB0-DB15, EXPOOL and writes |
| Graphics package |
Graphics.cpp, CSBCode.cpp
|
DMCSB1 catalogue and post-expand table layout |
| UI/platform |
CSBUI.cpp, Win32/input/audio modules |
Version-specific message/device behaviour |
Graphics.cpp::TAG0088b2 is the planar copy primitive. It takes a RectPos,
source offset and source stride, operates on four Atari-ST planes and can
apply a transparent colour. CSBCode.cpp routes walls through
BltShapeToViewport, BltRectangleToViewport, MirrorShapeBltToViewport
and GraphicToViewport.
Viewport.cpp::StdRectanglePointers selects wall rectangles exactly as:
F3L2=13 F3L1=1 F3=0 F3R1=2 F3R2=12
F2L1=4 F2=3 F2R1=5
F1L1=7 F1=6 F1R1=8
F0L1=10 F0=9 F0R1=11
That mapping is not yet a full renderer. A complete preservation trace needs,
per rectangle: byte-coordinate destination, source byte stride/height/X/Y,
UseByteCoordinates, source bitmap identity, MakeMirror state and final
viewport-plane bytes. Do not treat a convenient C-struct offset as proof of
the original table layout.
Standard CSBWin/Atari packages use a 563-item DMCSB1 catalogue. Important expanded records include:
| Item | Size | Role |
|---|---|---|
0x22e |
0x1270 |
viewport tables and derived graphics metadata |
0x230 |
0x4e8 |
spell/configuration tables |
0x231 |
0x7d4 or 0x804
|
button and key tables |
0x232 |
0x722 |
HUD geometry, icon positions and graphic defaults |
Preservation tooling must bind these to an archive hash, validate item count and expanded size, and retain all post-expansion swaps. PC3.4 IMG2/IMG3 assumptions must not be reused for CSBWin HUD or viewport layouts.
The save tail is structured: dungeon prefix, compressed text, cell flags and
DB0-DB15, with extended features altering layouts. DSA actions, EXPOOL,
ITEM16, skins, GAMEBLOCK2 and timer queues have distinct owners.
For a reproducible DSA claim, retain:
CSBWin build/hash, save hash, extension flags, timer slot,
DSA index/state/column/action, stack/bank inputs, mutation and output bytes
Unsupported opcodes should remain rejected until this witness exists. An interpreter that runs a plausible action but cannot round-trip its save owner is not preservation-complete.
- Versioned legal save corpus covering DB0-DB15 and extension combinations.
- Standalone
0x22etable decoder plus exact TAG0088b2 operation traces. - DSA traces for timer, filter, monster and custom-dungeon paths.
- VBL-indexed title, Entrance, HUD, door and dungeon captures with palette.
- Documented host UI, disk-path and custom-graphics policies.