Static palette-pairing findings: stripe-aware oracle + cross-port docs #213
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "refs/pull/213/head"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Static research pass on the console/Amiga/FM-Towns image-colour pairing (the Phase 7 colour-resolution item), preparing the next emulation/capture session. One code commit, one docs commit.
Code — stripe-aware palette oracle
palette_oracle_matchpreviously fed whole PalIrgb records topredict(), which samples indices 0..15 — so the six 96-entry per-environment banks only ever contributed their base stripe, and the five lighting-gradient stripes were never candidates. The unresolved per-scene CRAM line 1 near-misses (small ±1-level residuals) have exactly the wrong-stripe signature. Candidates are now keyed(ent1_index, Option<stripe>); 96-entry banks yield six labeled stripe candidates, 16-/256-entry palettes are unchanged. Sega CD US fixture pins the shape: 156 LUTs, 11 whole sub-palettes + 6 banks × 6 stripes. 8/8 tests, clippy/fmt clean.Docs — findings from the static session
dungeon-dat.md—map_graphics_style(w14 bits 7:4) is the palette-environment selector, used verbatim as the category-0x08 sub-index (engine-verified via [SKPROJECT]:sklodlvl.cpp:720-726,skdungn.cpp:822,skbltgfx.cpp:359-361). DOS-EN 44-map distribution {0:1, 1:9, 2:10, 3:20, 4:1, 5:3}.graphics-dat.md— the pairing model restated as static-data + enumerable runtime state (bank = per-map field; stripe = 6-state light level; per-image Palette16; per-object LUT-cls4 residue).palette-lut.md— the lighting-stripe hypothesis for CRAM line 1 (test target:CRAM line 1 == conv(bank[map_graphics_style][light_stripe])); Amiga cross-port corroboration (VDEO palette loader fully read: PalIrgb quadruples in, high-nibble conv, copper+shadow+$DFF180 out; SKUL policy sites match the Sega CD ABI instruction-for-instruction — same C codebase; the LUT cls4 selector is computed per drawn object from its record); FM-TownsSKULL.EXPidentified as a "P3" flat-386 RUN386 executable.dos-en-beta.md— new "Palette architecture" section: the Beta is the only LE/PC witness of the console bank model — the six 96-entry banks at the console tuples, 3,357 standalone Palette16 records pairing statically (exact tuple elsecls4=0xfefamily default, 100% family coverage), and zero 0x0E LUTs (pins the LUT layer as console-hardware-specific). Also corrects the stalesfx=0row (39 console-family dtSnd since #187).amiga-eu.md— engine palette-pipeline section (module hardware roles from the chip-register scan).ROADMAP.md— Phase 7 colour item narrowed to the actual residue: (a) stripe confirmation against one fresh capture set with known (map, light); (b) per-object cls4 helper decode; (c) wiring the model into the decoders.