Skip to content

CSBWin Preservation Worklist

Daniel Nylander edited this page Jul 30, 2026 · 1 revision

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.

Source Map

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

Viewport and TAG0088b2

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.

GRAPHICS.DAT Tables

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.

DSA and Extended Saves

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.

Highest-Value Contributions

  1. Versioned legal save corpus covering DB0-DB15 and extension combinations.
  2. Standalone 0x22e table decoder plus exact TAG0088b2 operation traces.
  3. DSA traces for timer, filter, monster and custom-dungeon paths.
  4. VBL-indexed title, Entrance, HUD, door and dungeon captures with palette.
  5. Documented host UI, disk-path and custom-graphics policies.

Related Pages

Clone this wiki locally