Files
tony-remake/tools/wip_bob_sprite_research/dat_analyze2.py
T
ARIA 5efba4b165 PCC-Decoder-Bugfix: RLE-Runs duerfen Zeilengrenzen ueberschreiten (Row-Reset war falsch)
Stefan hat zurecht bemaengelt dass KARTE.PCC/KELLOGGS.PCC verzerrt/verrutscht
aussehen (Smacks-Frosch an falscher Position, Notch-Fehlstelle im Logo-Rahmen).

Root Cause: Der Decoder hat RLE-Runs am Ende jeder Bildzeile hart abgeschnitten
und den Rest verworfen (klassisches PCX-Verhalten angenommen). Dieses Format
haelt sich aber NICHT an die PCX-Konvention 'ein Run ueberschreitet nie eine
Zeile' -- Runs laufen frei ueber Zeilengrenzen. Verifiziert per Pixel-fuer-Pixel-
Vergleich gegen echten DOSBox-Screenshot (world map): mit durchgehender
Dekodierung (kein Row-Reset) ist das Ergebnis jetzt pixel-identisch zur Referenz.

- tools/pcc_to_png.py: Row-Reset entfernt, decodiert jetzt width*height Pixel
  am Stueck aus dem RLE-Strom
- png_out/: alle 77 PNGs mit dem Fix neu generiert
- tools/wip_bob_sprite_research/: Backup der laufenden (noch ungeloesten)
  BOB-Sprite-Format-Exploration von aria-wohnung, damit nichts bei einem
  VM-Neustart verloren geht
- NOTES.md: Root-Cause-Analyse dokumentiert, alte Fehldiagnose ('byte-identisch
  zwischen Row-Reset und kontinuierlich') korrigiert, Rauser-Intro-Frage
  beantwortet (3 Frames vorhanden, Text-Logo, keine Video-Datei)
2026-07-22 07:33:01 +00:00

25 lines
689 B
Python

import struct
path = "/home/aria/kellogg_remake/raw/PCKELL.DAT"
data = open(path, "rb").read()
vals = []
off = 0
while off + 2 <= len(data):
v = struct.unpack_from("<H", data, off)[0]
vals.append(v)
off += 2
start = 6 # skip first 6 uint16 (12 bytes) which look like a header
mono_len = start+1
for i in range(start+1, len(vals)):
if vals[i] >= vals[i-1]:
mono_len = i+1
else:
break
print("monotonic non-decreasing run starting at idx", start, "-> length", mono_len-start, "entries")
print("breaks at idx", mono_len, "byte offset", mono_len*2)
print("values around break:", vals[mono_len-5:mono_len+15])
print("last mono value:", vals[mono_len-1])