Boot-Sequenz vermessen + Intro-Player gebaut, echten PCC-Decoder-Regressionsbug gefixt
- 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>
This commit is contained in:
@@ -778,3 +778,114 @@ zu einer Sequenz zusammengesetzt):**
|
||||
geht und einfach hier weitergelesen werden kann.
|
||||
|
||||
Laeuft jetzt selbstaendig weiter, keine Rueckfrage noetig.
|
||||
|
||||
## Boot-Sequenz vermessen + Intro-Player gebaut (2026-07-22 abends, Fortsetzung)
|
||||
|
||||
### 1) Echter Regressions-Bug gefunden + gefixt (tools/pcc_to_png.py)
|
||||
|
||||
Beim Draufschauen fuer die Intro-Arbeit aufgefallen: Commit `62af15e` hatte
|
||||
den PCC-Decoder korrekt auf ImageMagick umgestellt (nachdem zwei eigene
|
||||
Hand-RLE-Parser nachweislich falsche Pixel lieferten). Der naechste Commit
|
||||
`3410a53` (eigentlich nur fuer BOB/ICO/MAP gedacht) hat `pcc_to_png.py`
|
||||
aber **versehentlich durch eine AELTERE Version mit dem kaputten
|
||||
Hand-RLE-Decoder ueberschrieben** -- vermutlich ein Merge-/Copy-Fehler beim
|
||||
Zusammenfuehren von Aenderungen. Die bereits committeten 77 PNGs in
|
||||
`png_out/` waren zum Glueck NICHT betroffen (die stammen noch von der guten
|
||||
ImageMagick-Version), aber ein Rerun des Skripts haette wieder kaputte
|
||||
Bilder erzeugt, ohne dass es aufgefallen waere.
|
||||
|
||||
**Fix:** Statt ImageMagick-Subprocess jetzt `kellogg_formats.load_pcc()` --
|
||||
nutzt Pillows eingebauten, robusten PCX-Decoder direkt (`PIL.Image.open`
|
||||
erkennt PCX an den Magic-Bytes, nicht am Dateinamen). Kein eigener
|
||||
RLE-Parser mehr im Projekt, an keiner Stelle. Alle 77 PCC neu aus
|
||||
`PCKELL.DAT` gerendert und via `compare -metric AE` **byte-fuer-byte
|
||||
pixelidentisch (AE=0)** zu den alten (guten) PNGs verifiziert -- keine
|
||||
Regression, sauberer Fix. Neue Funktionen `load_pcc()` / `pcc_to_rgba()`
|
||||
in `kellogg_formats.py`, wiederverwendbar fuer den Intro-Player.
|
||||
|
||||
### 2) Boot-Sequenz per echter Screenshot-Serie vermessen (0.3s-Intervall)
|
||||
|
||||
`xvfb-run`-Setup (Xvfb + `import -window root` alle 0.3s) waehrend
|
||||
`START.EXE` bootet, ~90 Frames ueber ~27s. Ergebnis (Hash-Dedup + visuelle
|
||||
Pruefung der Uebergaenge):
|
||||
|
||||
1. **Rauser-Advertainment-Karte** -- Komposit aus `RAUSER1.PCC` (dunkle Box
|
||||
"RAUSER"), `RAUSER3.PCC` (blaue Box, Ausrufezeichen), `RAUSER2.PCC`
|
||||
("ADVERTAINMENT"-Schriftzug) auf weissem Grund. Statisch gehalten (kein
|
||||
Aufbau-Effekt beobachtet), ~3s.
|
||||
2. Kurze schwarze Pause (~0.3-0.5s).
|
||||
3. **Factor5-Studio-Logo** (`FACTOR5.PCC`, 320x199) -- **komplett statisches
|
||||
Bild**, keine Laufzeit-Animation. Das "Geister"-Doppellogo (zwei leicht
|
||||
versetzte FACTOR-Schriftzuege + Spiegelung am Boden) ist Teil des Assets
|
||||
selbst (Byte-Konsum exakt 100%, kein Bug). Lange gehalten, ~6s.
|
||||
4. Kurze schwarze Pause.
|
||||
5. **Kellogg's-Markenlogo** (`KELLOGGS.PCC`, 320x200) -- erscheint SOFORT
|
||||
komplett und bleibt die ganze Zeit scharf. **KORREKTUR einer fruehen
|
||||
Fehlannahme:** es gibt HIER keinen Vorhang-/Wipe-Effekt auf dem Logo
|
||||
selbst. Was tatsaechlich passiert: der Text **"praesentiert"** darunter
|
||||
faedet per **Palette-Animation** von blass (fast weiss) zu kraeftigem
|
||||
Rot ein (~3-4s beobachtet). Per Index-Analyse verifiziert: die Pixel des
|
||||
Textes nutzen exklusiv die Palette-Indizes **34, 42, 43, 44, 45** (Bbox
|
||||
x=71-241, y=108-141 im 320x200-Bild) -- alles andere im Bild bleibt
|
||||
waehrend des Fades unveraendert.
|
||||
6. Kurze schwarze Pause.
|
||||
7. **Titelbild "TONY & FRIENDS in Kellogg's Land"** -- **DAS ist der
|
||||
eigentliche Vorhang-Effekt**, den Stefan urspruenglich meinte. Wichtiger
|
||||
Fund: dieses Bild ist intern **320x480** (doppelt so hoch wie die
|
||||
anderen Screens!), zusammengesetzt aus den 4 PCC-Quadranten `KELL256A`
|
||||
(oben links) / `KELL256B` (oben rechts) / `KELL256C` (unten links) /
|
||||
`KELL256D` (unten rechts), je 160x240 -- durch Stitchen zu einem
|
||||
320x480-Gesamtbild verifiziert (siehe `/tmp/kell_full_stitch.png`
|
||||
waehrend der Session, zeigt exakt das erwartete Titelbild). Der
|
||||
Reveal-Effekt: **obere Bildhaelfte (A|B) faehrt von oben nach unten
|
||||
ein, untere Haelfte (C|D) von unten nach oben** -- wie ein Theater-
|
||||
vorhang, nur vertikal, beide Haelften treffen sich exakt in der Mitte
|
||||
(y=240 im 480px-Bild). Dauer ~3s (Frames 73->83 in der Aufnahme).
|
||||
DOSBox-Fenster ist fuer diesen Screen sichtbar groesser/anders
|
||||
proportioniert als bei den 320x240-Screens davor -- passt zur These
|
||||
eines eigenen 320x480-Modus nur fuer dieses Bild.
|
||||
|
||||
Alle anderen Screens (Rauser/Factor5/Kellogg's-Logo) laufen im
|
||||
Fenster-Seitenverhaeltnis 320x240 (aus Trim-Analyse des DOSBox-Fensters:
|
||||
640x480 Xvfb-Ausschnitt = exakt 2x 320x240) -- die PCC-Bilder selbst sind
|
||||
oft nur 320x199/200 und werden darin mit schwarzen Balken oben/unten
|
||||
letterboxed (gut sichtbar am schwarzen Rand um die Kellogg's-Box in den
|
||||
Screenshots).
|
||||
|
||||
### 3) Erster spielbarer Meilenstein: `tools/intro_sequence.py`
|
||||
|
||||
pygame-Player, der die komplette oben beschriebene Sequenz nachbaut:
|
||||
Asset-Loading aus `PCKELL.DAT` (ueber `kellogg_formats`), Bild-Rendering
|
||||
mit Palette, Timing/Sequenzer, Palette-Fade-Effekt (echte Index-Animation,
|
||||
kein Alpha-Crossfade-Hack), Vorhang-Wipe-Effekt fuer das Titelbild.
|
||||
Headless getestet (Xvfb + Screenshot-Serie) -- **visuell verifiziert,
|
||||
sieht in allen Phasen sehr nah am echten DOSBox-Boot aus**:
|
||||
|
||||
[FILE: /shared/uploads/aria_intro_rauser.png] (Rauser-Karte, Komposit)
|
||||
[FILE: /shared/uploads/aria_intro_factor5.png] (Factor5-Logo, statisch)
|
||||
[FILE: /shared/uploads/aria_intro_kelloggs_fade.png] ("praesentiert" mitten im Fade)
|
||||
[FILE: /shared/uploads/aria_intro_titel_wipe.png] (Titelbild-Vorhang mitten im Reveal)
|
||||
[FILE: /shared/uploads/aria_intro_titel_final.png] (Titelbild komplett offen)
|
||||
|
||||
**Bekannte Ungenauigkeiten (v1, nicht pixelperfekt, aber nah dran):**
|
||||
- Rauser-Komposit-Layout (Position von RAUSER1/2/3 zueinander) ist per
|
||||
Augenmass an die Screenshots angenaehert, nicht pixelgenau vermessen --
|
||||
bei Bedarf spaeter per genauerem Screenshot-Vergleich nachjustieren.
|
||||
- Fade-/Wipe-Dauern sind aus der 0.3s-Sample-Screenshot-Serie abgeleitet
|
||||
(+/- ein paar hundert ms Unschaerfe), nicht aus dem Originalcode gelesen
|
||||
(RTM.EXE ist compiliert, kein Quellcode verfuegbar).
|
||||
- Sound fehlt komplett (TFMX/SAM noch nicht decodiert, siehe unten).
|
||||
|
||||
**Ausfuehren:** `python3 tools/intro_sequence.py` auf `aria-wohnung`
|
||||
(pygame jetzt per `apt install python3-pygame` installiert, NICHT pip --
|
||||
System-Python ist "externally managed", pip-User-Install schlug fehl).
|
||||
`--once` fuer einen Durchlauf statt Endlosschleife wie im Original.
|
||||
|
||||
### Naechste Schritte (Prioritaet)
|
||||
1. Sound (SAM/TFX TFMX-Format) decodieren + an die Intro-Sequenz haengen --
|
||||
`tools/tfmx_player/` (C-Referenztool) liegt bereit.
|
||||
2. Rauser-Layout und Fade/Wipe-Timings feinjustieren falls gewuenscht.
|
||||
3. Danach: Uebergang von Intro zu echtem Gameplay -- Tony-Bewegung auf
|
||||
Level W1L0 als naechster grosser Meilenstein (MAP+ICO+BOB sind fertig).
|
||||
|
||||
Laeuft selbstaendig weiter, keine Rueckfrage noetig.
|
||||
|
||||
Reference in New Issue
Block a user