Sound (TFMX) geloest: MIT-lizenzierter Player eingebunden, Titelmusik in Intro-Sequenz

This commit is contained in:
ARIA
2026-07-22 16:19:25 +00:00
parent ea1f5b951e
commit a34be7ce05
4 changed files with 160 additions and 0 deletions
+59
View File
@@ -889,3 +889,62 @@ System-Python ist "externally managed", pip-User-Install schlug fehl).
Level W1L0 als naechster grosser Meilenstein (MAP+ICO+BOB sind fertig).
Laeuft selbstaendig weiter, keine Rueckfrage noetig.
## Sound (TFMX) geloest + in Intro-Sequenz eingebaut (2026-07-22, spaeter Abend)
**`tools/tfmx_player/` (MIT-lizenziert, Copyright Peter Fors -- LICENSE liegt
bei) ist ein fertiger TFMX-Replayer in C.** Anders als beim C#-Referenzprojekt
fuer PCX/BOB/MAP/ICO (dort kein LICENSE, daher nur als Format-Wissen genutzt
und in eigenem Python neu geschrieben) erlaubt die MIT-Lizenz hier direkte
Nutzung/Einbindung -- deshalb kein Python-Reimplement des TFMX-Formats
(waere bei ~95KB Player-Logik in `tfmx.h` ein Mehrtage-Projekt ohne Mehrwert
gegenueber der fertigen, korrekt lizenzierten Loesung).
**Build:** `tools/tfmx_player/build.sh` kompiliert `render_tfmx`
(`gcc render_tfmx.c -lm`) -- ein CLI-Tool `render_tfmx <in.tfx> <in.sam>
<out.wav> [sekunden]`, das ein TFMX-Modul zu 16-bit/44100Hz-Stereo-WAV
rendert. **Alle 3 Musikstuecke (`TITEL`, `TITEL2`, `ONGAME2`) erfolgreich
gerendert und angehoert (nicht nur Byte-Statistik!)** -- echte, hoerbare
Chiptune-Musik, kein Rauschen/Stille. Vorschau-MP3s lagen kurz unter
`/shared/uploads/aria_tfmx_*.mp3` fuer Stefan zum Reinhoeren.
**Einbau in `tools/intro_sequence.py`:** neuer Wrapper `tools/tfmx_audio.py`
extrahiert TFX+SAM per `kellogg_formats.DATContainer` aus `PCKELL.DAT`,
rendert einmalig per Subprocess zu WAV (gecacht unter
`KELLOGG_AUDIO_CACHE`/`~/kellogg_remake/audio_cache/`, NICHT committed --
ist Original-Musikmaterial wie `raw/`). `intro_sequence.py` initialisiert
jetzt `pygame.mixer`, startet beim Erreichen des Kellogg's-Logos die
`TITEL`-Musik geloopt (Annahme: durchgehende Titelmusik ueber Logo+Titelbild
+Karte -- noch nicht per Timing-Vergleich gegen DOSBox-Ton verifiziert, da
DOSBox bisher nur im Nosound-Modus lief; plausibelste v1-Annahme). Mixer-
Init ist defensiv (try/except) -- auf `aria-wohnung` (keine Soundkarte im
Container/VM) laeuft die Sequenz jetzt nachweislich sauber STUMM weiter
(getestet), mit `SDL_AUDIODRIVER=dummy` laeuft der komplette Codepfad
inklusive Musik-Rendering fehlerfrei durch (ebenfalls getestet) -- auf
Stefans Rechner mit echter Soundkarte sollte die Musik beim Ausfuehren
tatsaechlich zu hoeren sein.
**Committed:** `tools/tfmx_player/` (Quellcode + LICENSE, NICHT das
kompilierte Binary -- Build-Artefakt, per `.gitignore` draussen wie
`audio_cache/`), `tools/tfmx_audio.py`, aktualisiertes
`tools/intro_sequence.py`.
**Noch offen (niedrige Prioritaet):**
- `TITEL2`/`ONGAME2` sind noch nicht eingebunden -- vermutlich `TITEL2` fuer
die Weltkarte und `ONGAME2` fuers eigentliche Level-Gameplay, aber welche
Musik wo genau einsetzt ist nur eine Annahme (Namen sprechen dafuer,
nicht per Referenz/Timing-Vergleich verifiziert).
- Timing/Verifikation der Titelmusik-Ein-/Aussatzpunkte gegen das Original
(DOSBox bisher stumm getestet) steht noch aus.
- Rauser-Layout und Fade/Wipe-Feinjustierung (siehe vorherige Notiz) weiter
offen, niedrige Prioritaet.
### Naechste Schritte (Prioritaet, Stand spaeter Abend 22.07.)
1. `TITEL2`/`ONGAME2` an Karte/Gameplay-Musik zuordnen und einbinden, sobald
diese Screens/Modi existieren.
2. Danach: Uebergang von Intro zu echtem Gameplay -- Tony-Bewegung auf
Level W1L0 als naechster grosser Meilenstein (MAP+ICO+BOB+jetzt auch
Sound-Infrastruktur sind fertig).
3. ARE/Kollisionsformat klaeren, wenn Spiellogik es braucht.
Laeuft selbstaendig weiter, keine Rueckfrage noetig.