- Regression gefunden+gefixt: pcc_to_png.py war durch einen frueheren Commit versehentlich auf den kaputten Hand-RLE-Decoder zurueckgefallen (der ImageMagick-Fix ging verloren). Jetzt: kellogg_formats.load_pcc() nutzt Pillows PCX-Decoder direkt, kein eigener RLE-Code mehr im Projekt. Alle 77 PCC neu gerendert, AE=0 (pixelidentisch) zu den alten guten PNGs. - Boot-Sequenz per echter DOSBox-Screenshot-Serie (0.3s-Intervall) vermessen: Rauser-Karte -> Factor5-Logo (statisch, keine Animation) -> Kellogg's-Logo mit Palette-Fade des "praesentiert"-Texts (Indizes 34/42/43/44/45) -> Titelbild "Tony & Friends in Kellogg's Land" mit echtem Vorhang-Wipe-Effekt (320x480 aus 4 Quadranten KELL256A-D, obere Haelfte faehrt runter, untere hoch, treffen sich in der Mitte). Korrigiert eine fruehere Fehlannahme: der Wipe sitzt auf dem TITELBILD, nicht auf dem Kellogg's-Markenlogo. - tools/intro_sequence.py: erster spielbarer pygame-Meilenstein, baut die komplette Sequenz nach (Asset-Loading, Palette-Rendering, Timing, echter Palette-Fade, Wipe-Effekt). Headless getestet, visuell verifiziert. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
43 lines
1.7 KiB
Python
43 lines
1.7 KiB
Python
#!/usr/bin/env python3
|
|
"""PCC-Decoder fuer Kellogg's Tony and Friends -- nutzt Pillows PCX-Decoder.
|
|
|
|
.PCC ist stinknormales PCX v5 (8bpp, RLE, eigene 256-Farb-Palette am
|
|
Dateiende) -- bestaetigt gegen https://github.com/movAX13h/tony-and-friends-in-kelloggs-land.
|
|
|
|
REGRESSIONS-WARNUNG (gefunden 2026-07-22 abends): Commit 62af15e hatte hier
|
|
schon mal korrekt auf ImageMagick (`convert pcx:...`) umgestellt, nachdem
|
|
ZWEI eigene Hand-RLE-Parser nachweislich falsche Pixel lieferten (Bild
|
|
verschoben/dupliziert bei Vollbild-Screens wie KARTE.PCC/KELLOGGS.PCC).
|
|
Der naechste Commit (3410a53, eigentlich nur fuer BOB/ICO/MAP gedacht) hat
|
|
diese Datei aber versehentlich durch eine AELTERE Version mit dem kaputten
|
|
Hand-Decoder ersetzt -- die bereits committeten PNGs in png_out/ waren davon
|
|
zum Glueck nicht betroffen (die sind noch von der guten ImageMagick-Version),
|
|
aber ein Rerun dieses Skripts haette wieder kaputte Bilder erzeugt. Fix jetzt:
|
|
Pillow statt Hand-RLE oder externem `convert`-Subprocess -- kein Format-
|
|
Parsing mehr in eigenem Code, nutzt tools/kellogg_formats.load_pcc().
|
|
|
|
Nutzung: python3 pcc_to_png.py <input.PCC> <output.png>
|
|
"""
|
|
import sys, os
|
|
sys.path.insert(0, os.path.dirname(__file__))
|
|
from kellogg_formats import load_pcc
|
|
|
|
|
|
def main():
|
|
inp, outp = sys.argv[1], sys.argv[2]
|
|
with open(inp, 'rb') as f:
|
|
data = f.read()
|
|
width, height, indices, palette = load_pcc(data)
|
|
print(f"{inp}: {width}x{height}")
|
|
|
|
from PIL import Image
|
|
img = Image.new('P', (width, height))
|
|
img.putpalette([c for rgb in palette for c in rgb])
|
|
img.putdata(indices)
|
|
img.convert('RGB').save(outp)
|
|
print(f"-> {outp}")
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|