Sound (TFMX) geloest: MIT-lizenzierter Player eingebunden, Titelmusik in Intro-Sequenz
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user