Pfade relativ statt hardcodiert + Rauser/Titelbild-Korrektur per Pixelvermessung
- intro_sequence.py, tfmx_audio.py, render_assets.py, dat_extract.py: /home/aria/kellogg_remake/... durch PROJECT_ROOT-relative Pfade ersetzt (mit optionalem ENV-Override), laeuft jetzt von jedem Checkout aus. - Rauser-Logo: war 1:1 nativ gezeichnet (viel zu gross) und weisser statt grauer Hintergrund. Per frischer DOSBox-Referenzaufnahme (Xvfb-Screenshot- Serie) neu vermessen: 0.5x Skalierung, Slide-in-Animation (RAUSER-Box von links, "!"-Box von oben, ADVERTAINMENT steht fest), Sound-Sting (TITEL2, einmalig) bei Ankunft, danach Fade weiss->grau. - Titelbild: fruehere Annahme (4 Quadranten voll gestapelt = 320x480) war falsch und die Ursache fuer den gemeldeten Squish-Bug. Per Pixel- Rekonstruktion verifiziert: jeder Quadrant wird nur auf halber HOEHE (160x120 statt 160x240, Breite bleibt nativ) im 2x2-Raster angeordnet -> korrektes 320x240-Bild. Zusaetzlich neu entdeckter und nachgebauter Scanline/Graustufen-Reveal-Effekt auf der unteren Bildhaelfte. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -948,3 +948,106 @@ kompilierte Binary -- Build-Artefakt, per `.gitignore` draussen wie
|
||||
3. ARE/Kollisionsformat klaeren, wenn Spiellogik es braucht.
|
||||
|
||||
Laeuft selbstaendig weiter, keine Rueckfrage noetig.
|
||||
|
||||
## Pfade relativ gemacht + Rauser/Titelbild-Korrektur (22.07.2026, Nacht)
|
||||
|
||||
Stefan meldete zwei Dinge: (1) alle Tools haben `/home/aria/kellogg_remake/...`
|
||||
hardcodiert -- muss relativ zum Projektordner sein; (2) 6 Screenshots als
|
||||
Beleg fuer Bild-Bugs (Rauser zu gross, Titelbild "gestaucht", Original hat
|
||||
Scanlines die verschwinden). **Wichtig: von den 6 Screenshots ist wegen eines
|
||||
Upload-Bugs (alle 6 landeten unter demselben Dateinamen und ueberschrieben
|
||||
sich gegenseitig) nur der LETZTE erhalten geblieben** -- ich hab Stefan das
|
||||
gemeldet und ihn gebeten, die anderen 5 bei Bedarf nochmal zu schicken. Statt
|
||||
zu raten hab ich stattdessen selbst frische DOSBox-Referenzaufnahmen gemacht
|
||||
(Xvfb + `import -window root`, 0.12s-Intervall) und daraus die echten Werte
|
||||
gemessen -- Details unten.
|
||||
|
||||
**1) Pfade:** `intro_sequence.py`, `tfmx_audio.py`, `render_assets.py`,
|
||||
`dat_extract.py` hatten `/home/aria/kellogg_remake/...` fest im Code. Jetzt
|
||||
ueberall `PROJECT_ROOT = dirname(dirname(abspath(__file__)))` + optionales
|
||||
ENV-Override (`KELLOGG_DAT`, `KELLOGG_AUDIO_CACHE`, `KELLOGG_RENDER_OUT`,
|
||||
`KELLOGG_EXTRACT_OUT`). Laeuft jetzt von jedem Pfad aus (VM, Container,
|
||||
woanders geklont).
|
||||
|
||||
**2) Rauser -- per Pixelvermessung neu gebaut:**
|
||||
- Echte Groesse per Bounding-Box-Analyse gegen eine frische DOSBox-Aufnahme
|
||||
gemessen: das komplette Rauser-Logo (RAUSER1+2+3 zusammen) ist im Original
|
||||
nur ca. 105x40px auf einer 320x240-Leinwand -- mein v1-Code hat die
|
||||
PCC-Assets 1:1 nativ gezeichnet (182x46 fuer RAUSER1 allein!), viel zu
|
||||
gross. **Alle drei Rauser-Assets werden jetzt bei 0.5x Nativgroesse
|
||||
gezeichnet** (`ASSET_DISPLAY_SCALE`).
|
||||
- Hintergrund war in v1 WEISS die ganze Zeit -- tatsaechlich: WEISS waehrend
|
||||
Slide-in+Halten, dann kurzer Fade zu GRAU (73,73,73), dann Grau halten,
|
||||
dann Schwarzblende (bestehende Pause).
|
||||
- **Neu: Slide-in-Animation.** Per Screenshot-Serie entdeckt: RAUSER1
|
||||
("RAUSER"-Box) faehrt von LINKS ins Bild, RAUSER3 (blaue Box mit "!")
|
||||
faehrt von OBEN rein, RAUSER2 ("ADVERTAINMENT") steht von Anfang an fest.
|
||||
Nachgebaut mit smoothstep-Ease ueber `RAUSER_SLIDE_SECONDS=0.9s`.
|
||||
- **Neu: Sound-Sting.** `TITEL2.TFX/.SAM` (das kuerzeste der 3 Musikstuecke,
|
||||
724 Byte TFX) ist kein Loop-Track, sondern ein kurzer ~1s-Jingle (RMS-
|
||||
Analyse zeigt: Burst 0-0.9s, dann Stille, dann Wiederholung -- typisch fuer
|
||||
ein kurzes Sample, das die Tracker-Engine in einer Schleife rendert). Wird
|
||||
jetzt exakt beim Erreichen der Endposition (Slide-in fertig) EINMAL
|
||||
abgespielt (`pygame.mixer.Sound`, nicht geloopt).
|
||||
|
||||
**3) Titelbild -- KORREKTUR einer fruehen Fehlannahme (das war der Bug hinter
|
||||
Stefans "gestaucht"-Meldung):**
|
||||
- v1 hat die 4 Quadranten KELL256A/B/C/D (je 160x240 PCC-nativ) 1:1 zu einem
|
||||
320x**480**-Bild gestapelt (A|B oben, C|D unten) und das komplett 480 hoch
|
||||
angezeigt. Das war falsch.
|
||||
- Per Pixel-Rekonstruktion gegen eine echte DOSBox-Aufnahme verifiziert
|
||||
(mehrere Hypothesen durchprobiert, mit numpy MSE + visuellem Abgleich):
|
||||
**die 4 Quadranten werden je auf HALBE Hoehe (160x120) skaliert** (Breite
|
||||
bleibt nativ, NUR die Hoehe wird halbiert -- anders als beim Rauser-Fix,
|
||||
wo beide Achsen gleichmaessig skaliert werden!) und im 2x2-Raster
|
||||
angeordnet: A oben-links, B oben-rechts, C unten-links, D unten-rechts ->
|
||||
ergibt ein korrektes 320x240-Bild. Screenshot-Vergleich (Rekonstruktion
|
||||
vs. echte DOSBox-Aufnahme) war praktisch deckungsgleich.
|
||||
ACHTUNG fuer kuenftige Aenderungen: bei den Rauser-Assets ist die
|
||||
0.5x-Skalierung GLEICHMAESSIG (Breite+Hoehe), bei den Titelbild-Quadranten
|
||||
ist es NUR die Hoehe -- zwei verschiedene Funktionen im Code
|
||||
(`pcc_surface_scaled` vs. `pcc_surface_half_height`), nicht verwechseln.
|
||||
- **Neu entdeckter Scanline-Effekt** (das ist genau Stefans "Screenshot 4/5/6"
|
||||
-Beobachtung): waehrend die untere Bildhaelfte einwaechst, ist sie zuerst
|
||||
komplett entsaettigt (graustichig) UND mit sichtbaren horizontalen
|
||||
Scanlines ueberzogen -- das loest sich in einer zweiten Animationsphase zu
|
||||
vollen Farben auf, bis das Bild komplett scharf ist. Per 0.12s-Screenshot-
|
||||
Serie ueber die komplette Wipe-Animation hinweg entdeckt und nachgebaut
|
||||
(`_scanline_desaturate()`, per numpy: Graustufen-Mix + jede zweite Zeile
|
||||
abgedunkelt, Intensitaet faedet ueber die zweite Haelfte der Wipe-Dauer von
|
||||
1.0 auf 0.0).
|
||||
- Reveal-Mechanik selbst (oben waechst 0->120 von oben, unten waechst 0->120
|
||||
von unten, treffen sich in der Mitte) war in der urspruenglichen
|
||||
Beobachtung schon richtig -- nur die falsche 480px-Endgroesse und der
|
||||
fehlende Scanline-Effekt waren der Bug.
|
||||
|
||||
**Verifiziert:** eigene DOSBox-Referenzaufnahme (Xvfb, 0.12s-Serie) gegen den
|
||||
neu gebauten `intro_sequence.py`-Output verglichen -- Rauser-Slide-in, Rauser-
|
||||
Groesse/Farben und Titelbild (inkl. Scanline-Phase) sehen jetzt sehr nah am
|
||||
Original aus. Screenshots liegen als Beleg bei:
|
||||
|
||||
[FILE: /shared/uploads/aria_rauser_fixed.png] (Rauser, neu: klein, weiss, Slide-in-Mitte)
|
||||
[FILE: /shared/uploads/aria_title_wipe_scanline_fixed.png] (Titelbild-Wipe MIT Scanline-Effekt)
|
||||
[FILE: /shared/uploads/aria_title_final_fixed.png] (Titelbild komplett, korrekt 320x240 statt 320x480)
|
||||
|
||||
**Noch offen / bewusste Vereinfachungen:**
|
||||
- Die feine Choreografie von RAUSER3 (slidet vermutlich als "!" und blaue Box
|
||||
getrennt, siehe Screenshot-Beobachtung) wurde vereinfacht zu EINEM Element,
|
||||
das von oben reinfaehrt -- sieht in der Praxis schon sehr nah dran aus,
|
||||
waere aber bei Bedarf noch weiter verfeinerbar.
|
||||
- Kleiner kosmetischer Rest: RAUSER2/RAUSER3 haben weissen Hintergrund IN
|
||||
ihrer eigenen PCC-Bounding-Box (kein Alpha-Kanal). Auf weiss (waehrend
|
||||
Slide-in+Halten) faellt das nicht auf, nach dem Fade zu Grau sieht man
|
||||
einen schwachen weissen Kasten drumrum. Versuch mit `set_colorkey()`
|
||||
wieder verworfen (hat auch die weissen BUCHSTABEN in RAUSER1 durchsichtig
|
||||
gemacht -- schlimmer als der Kasten). Braucht eine echte Alpha-Maske pro
|
||||
Asset, low priority.
|
||||
- Der Scanline-Clear-Effekt ist als gleichmaessige Intensitaet ueber die
|
||||
ganze untere Haelfte umgesetzt, nicht als praezise von-der-Mitte-nach-
|
||||
aussen wandernde Grenze (im Original loest sich ein duenner Reststreifen
|
||||
am unteren Bildrand als letztes auf) -- optische Wirkung ist aber schon
|
||||
sehr aehnlich.
|
||||
- VM-Testverzeichnisse (`boot_frames2/`, `intro_check_frames/`,
|
||||
`title_check_frames/`) nach der Analyse wieder aufgeraeumt, nicht im Repo.
|
||||
|
||||
Laeuft selbstaendig weiter, keine Rueckfrage noetig.
|
||||
|
||||
Reference in New Issue
Block a user