Files
duffyduckandClaude Opus 4.8 85404c91f4 Projektstruktur: game/-Package angelegt, README ergaenzt
Laufzeit-Code vom Dev-Werkzeug getrennt:
- game/: das eigentliche Spiel, startbar per `python -m game [--once]`.
  - formats.py  (war tools/kellogg_formats.py) -- Asset-Parser, Kern-Bibliothek
  - audio.py    (war tools/tfmx_audio.py)      -- TFMX-Musik-Wrapper
  - intro.py    (war tools/intro_sequence.py)  -- Boot-/Intro-Sequenz
  - tfmx_player/(war tools/tfmx_player/)        -- MIT-C-Renderer
  - __init__.py / __main__.py fuer `python -m game`
- tools/: nur noch Dev-Werkzeuge (dat_extract, pcc_to_png, render_assets),
  importieren jetzt aus game.formats.
- README.md: Ueberblick, Start, Struktur, Voraussetzungen, Rechtliches.
- .gitignore: tfmx_player-Binary-Pfad auf game/ nachgezogen.

Intro laeuft unveraendert (headless-Smoke-Test `python -m game --once` exit 0).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 00:29:03 +02:00

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 game.formats.load_pcc().
Nutzung: python3 pcc_to_png.py <input.PCC> <output.png>
"""
import sys, os
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from game.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()