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>
4.3 KiB
Tony & Friends in Kellogg's Land — Remake
Ein plattformunabhängiges Remake (Python / pygame) des DOS-Jump'n'Runs „Kellogg's Tony and Friends in Kellogg's Land" (1994). Ziel ist eine lauffähige Neuimplementierung auf modernem x64, ohne DOS/DOSBox/QEMU — das Original crasht in unserer FreeDOS-VM (RTM.EXE-Engine vs. QEMU-VGA-Emulation).
Das Remake liest die Grafiken, Sprites, Level und Musik direkt aus den
Original-Spieldateien (raw/PCKELL.DAT) und dekodiert sie zur Laufzeit — es
werden keine vorab entpackten Assets benötigt.
Status
- ✅ Alle Asset-Formate geknackt & verifiziert: PCC (Bilder), BOB (Sprites), ICO (Tilesets), MAP (Level), TFMX (Musik).
- ✅ Boot-/Intro-Sequenz spielbar (Rauser → Factor5 → Kellogg's-Logo → Titelbild, mit Fades, Vorhang-Wipe und Musik).
- ⏳ Nächster Meilenstein: echter Gameplay-Loop — Tony auf Level
W1L0bewegen (Physik, Kollision, Level-Scrolling). Existiert noch nicht.
Die vollständige, chronologische Reverse-Engineering-Historie mit allen Format-Details steht in NOTES.md.
Rechtliches
„Kellogg's Tony and Friends in Kellogg's Land" war ein kostenloses Werbespiel
und ist innerhalb Deutschlands frei kopierbar. Die im Repo enthaltenen
gerenderten Musik-WAVs (audio/) wurden lediglich aus den Original-Daten
extrahiert. Die eigentlichen Original-Spieldateien (raw/) sind nicht im
Repo (siehe .gitignore) — sie werden lokal benötigt, um das Remake zu starten.
Der TFMX-Musik-Renderer unter game/tfmx_player/ ist Fremdcode (MIT-Lizenz, © Peter Fors) und liegt mit seiner LICENSE bei. Die Format-Kenntnisse zu PCC/BOB/MAP/ICO stammen als Referenz aus movAX13h/tony-and-friends-in-kelloggs-land; der Python-Code hier ist eine eigenständige Neuimplementierung.
Voraussetzungen
- Python 3,
pygame Pillow(PCX-Dekodierung),numpy(optional, für den Scanline-Effekt im Intro)gcc(einmalig, um den TFMX-Renderer zu bauen — passiert automatisch beim ersten Start)- Die Original-Datei
PCKELL.DATunterraw/(nicht im Repo)
sudo apt install python3-pygame python3-pil python3-numpy gcc
Starten
python3 -m game # Intro in Endlosschleife (wie Original-Titelbildschirm)
python3 -m game --once # ein Durchlauf, dann beenden
Abbruch jederzeit per ESC. Ohne Soundkarte (z.B. headless) läuft das Spiel
stumm weiter statt abzustürzen.
Liegt PCKELL.DAT woanders, kann der Pfad per Umgebungsvariable gesetzt werden:
KELLOGG_DAT=/pfad/zu/PCKELL.DAT python3 -m game
Projektstruktur
game/ Das eigentliche Spiel (startbar per `python -m game`)
formats.py Parser/Decoder für alle Asset-Formate aus PCKELL.DAT
audio.py Wrapper um den TFMX-Musik-Renderer (rendert & cached WAVs)
intro.py Boot-/Intro-Sequenz
tfmx_player/ MIT-lizenzierter C-Renderer für TFMX-Musik
tools/ Reine Dev-Werkzeuge (Assets auspacken / als PNG ansehen)
dat_extract.py PCKELL.DAT → alle 178 Einzeldateien (nach extracted_dat/)
pcc_to_png.py Eine PCC-Bilddatei → PNG
render_assets.py Batch-Render aller BOB/ICO/MAP → render_out/
raw/ Original-Spieldateien (PCKELL.DAT etc.) — NICHT im Repo
audio/ Aus PCKELL.DAT gerenderte Musik-WAVs (Archiv)
png_out/ Vorab gerenderte PCC-Bilder (Dev-Ausgabe)
render_out/ Vorab gerenderte BOB/ICO/MAP (Dev-Ausgabe)
dosbox/ DOSBox-Konfiguration zum Laufenlassen des Originals (Referenz)
NOTES.md Vollständiges Reverse-Engineering-Log
game/formats.py ist das gemeinsame Fundament: sowohl das Spiel als auch die
Dev-Werkzeuge in tools/ importieren daraus. Zur Laufzeit braucht das Spiel
nur raw/PCKELL.DAT — die Ausgaben unter png_out/, render_out/ und
audio/ sind Verifikations-/Archiv-Artefakte, keine Laufzeit-Abhängigkeit.
Original als Referenz laufen lassen (DOSBox)
Unter dosbox/ liegt eine funktionierende Konfiguration, um das
Original zum visuellen Abgleich zu starten. Wichtig: In KELLOGG.INI IRQ=5
statt 7 setzen (sonst hängt sich das Spiel nach dem Factor-5-Logo auf) und die
[sblaster]-IRQ in der dosbox.conf passend dazu — Details in
NOTES.md.