Rauser-Fade-Bug (Alpha-Cutout), Musik-Laenge-Bug (real_song_end-Erkennung) und Factor5-Melodie gefixt
This commit is contained in:
@@ -1051,3 +1051,70 @@ Original aus. Screenshots liegen als Beleg bei:
|
||||
`title_check_frames/`) nach der Analyse wieder aufgeraeumt, nicht im Repo.
|
||||
|
||||
Laeuft selbstaendig weiter, keine Rueckfrage noetig.
|
||||
|
||||
## 22.07.2026, spaeter Abend (2): drei Feedback-Bugs von Stefan gefixt
|
||||
|
||||
Stefan hatte nach dem letzten Pfade-relativ/Rauser/Titelbild-Fix drei neue
|
||||
Beobachtungen gemeldet, alle drei bestaetigt und behoben:
|
||||
|
||||
**1. "Rauser-Text fadet nicht mit aus, bleibt hart umrandet stehen."**
|
||||
Ursache endlich richtig verstanden (der oben als "kosmetischer Rest, low
|
||||
priority" dokumentierte Kasten): RAUSER1/2/3.PCC haben keinen Alphakanal, ihr
|
||||
papierweisser Hintergrund sitzt als hartes Rechteck um die Box-Grafik. Fix:
|
||||
neue Funktion `make_border_bg_transparent()` in `intro_sequence.py` -- Flood-
|
||||
Fill vom Bildrand aus ueber alle "papierweissen" Pixel (Schwelle 235/255 je
|
||||
Kanal), NUR die vom Rand aus zusammenhaengende Flaeche wird transparent.
|
||||
Isolierte weisse Pixel MITTEN im Motiv (z.B. die weissen Buchstaben in
|
||||
RAUSER1) beruehren den Rand nicht und bleiben unangetastet -- genau das
|
||||
Problem, an dem der fruehere `set_colorkey()`-Versuch gescheitert war.
|
||||
Verifiziert per direktem Pixel-Test (nicht nur behauptet): Eckpixel neben der
|
||||
Box liegt nach dem Fix exakt bei RAUSER_GREY (73,73,73) statt weiss, und im
|
||||
Bild bleiben klar sichtbare, fast voll opake Buchstaben-Pixel (Alpha bis 254)
|
||||
erhalten. Screenshot der Grau-Phase zum Beleg:
|
||||
[FILE: /shared/uploads/aria_rauser_fade_grey_check.png]
|
||||
|
||||
**2. "Musik ist zu kurz, da fehlt der Rest" + Cache-Bug gefunden.**
|
||||
Zwei uebereinanderliegende Ursachen:
|
||||
a) `render_wav()` cached per Dateiname OHNE den `seconds`-Parameter zu
|
||||
beruecksichtigen -- ein alter Test-Render (TITEL mit 8s, TITEL2 mit 15s
|
||||
aus einer frueheren Debug-Session) blieb im `audio_cache/` liegen und
|
||||
wurde bei jedem Aufruf stillschweigend weiterverwendet, egal welche
|
||||
`seconds` der Aufrufer diesmal wollte.
|
||||
b) selbst ein frischer Render haette bei den frueher verwendeten festen
|
||||
Werten (TITEL: 60s) abgeschnitten -- **TITEL ist tatsaechlich ~109s
|
||||
lang, ONGAME2 ~123s**, beides deutlich laenger als angenommen.
|
||||
Echter Fix in `render_tfmx.c`: statt stur `seconds` lang zu rendern, wird
|
||||
jetzt in kleinen 64-Frame-Haeppchen gerendert und tfmx.h's eigenes
|
||||
`real_song_end`-Flag beobachtet (wird pro Tick gesetzt, sobald die
|
||||
Track-Sequenz einmal komplett durchgelaufen ist und intern neu startet) --
|
||||
sobald es feuert, ist GENAU eine vollstaendige natuerliche Song-Schleife im
|
||||
Kasten, egal wie lang das Stueck wirklich ist. `seconds`/`max_seconds` ist
|
||||
jetzt nur noch eine Sicherheits-Obergrenze (Default 180s, grosszuegig ueber
|
||||
allen 3 bekannten Stuecken). Getestet und verifiziert:
|
||||
- TITEL: 109.44s (natuerliches Ende erkannt)
|
||||
- TITEL2 (Rauser-Sting): 2.04s (natuerliches Ende erkannt)
|
||||
- ONGAME2: 122.88s (natuerliches Ende erkannt)
|
||||
Alte falschen Cache-Dateien geloescht, mit dem gefixten Tool neu gerendert
|
||||
und die Laengen direkt per `pygame.mixer.Sound(...).get_length()` verifiziert
|
||||
(nicht nur die WAV-Header-Bytes ausgerechnet).
|
||||
|
||||
**3. "Bei Factor5 gibt's auch noch ne Melodie, solange das Lied ist Factor5
|
||||
anzeigen und dann zum Kellogg's-praesentiert."**
|
||||
`ONGAME2` war bis jetzt der einzige der 3 TFMX-Tracks ohne zugeordneten
|
||||
Screen (TITEL2 = Rauser-Sting, TITEL = Kellogg's-Logo/Titelbild-Loop) --
|
||||
genau das ist offenbar die Factor5-Melodie. `run_once()` in
|
||||
`intro_sequence.py` spielt ONGAME2 jetzt beim Erscheinen des Factor5-Logos
|
||||
einmal komplett ab und haelt den Screen exakt so lange (`sound.get_length()`,
|
||||
~123s statt der alten festen 3.0s), bevor es zur schwarzen Pause + Kellogg's-
|
||||
Logo weitergeht.
|
||||
|
||||
**Alle 3 Fixes verifiziert, nicht nur behauptet:**
|
||||
- Rauser-Alpha-Fix: direkter Pixel-Test + Screenshot (oben verlinkt).
|
||||
- Musik-Laengen: `render_tfmx`-Stderr-Ausgabe UND `pygame.mixer.Sound.get_length()`
|
||||
geben identische Werte.
|
||||
- Kompletter Smoke-Test (`xvfb-run python3 tools/intro_sequence.py --once`)
|
||||
laeuft ohne Traceback durch (headless ohne Audio-Geraet, laeuft dann
|
||||
erwartungsgemaess stumm mit Fallback-Dauern).
|
||||
|
||||
Committet + gepusht. Naechster Schritt weiterhin offen: echtes Gameplay
|
||||
(Tony auf `W1L0` bewegen).
|
||||
|
||||
Reference in New Issue
Block a user