NOTES.md: Factor5-Tail + Menuesystem-Session dokumentiert; README: raw/-Restverweis

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
duffyduck
2026-07-24 23:13:49 +02:00
co-authored by Claude Fable 5
parent c8f7d4d990
commit 4517efbdf8
2 changed files with 57 additions and 1 deletions
+56
View File
@@ -1315,3 +1315,59 @@ im Anschluss ebenfalls ins Repo committet (gleiche Copyright-Begruendung wie
audio/).
Naechster Schritt unveraendert: echtes Gameplay (Tony auf `W1L0`).
## 24.07.2026 (Nacht) -- Factor5-Tail, Menuesystem + Weltkarte (Referenz-getrieben)
**1) Factor5-Sound "nicht ganz abgespielt" -- Renderer-Fix.** real_song_end
markiert nur das Ende der TRACK-SEQUENZ (2.4s); die noch klingenden Samples
wurden hart abgeschnitten (RMS stieg bis zum letzten Frame). render_tfmx.c
kann jetzt einen Ausklang-Tail rendern (6. CLI-Arg): loop_mode=0 stoppt den
Sequencer bei song_end, die Paula-Voices klingen weiter (erster Versuch OHNE
loop_mode-Stopp nahm die naechste Loop-Iteration auf -- per RMS-Selbst-
aehnlichkeit von 3 Anschwell-Mustern nachgewiesen). Das Factor5-"Brausen"
loopt auf Paula-Ebene endlos (kein natuerliches Ende!) -> Tail 2.6s = exakt
5.0s Gesamt (DOSBox-Screendauer ~4.8s) mit 600ms-Fade-out. Rauser-Sting endet
natuerlich bei 2.34s (Stille-Erkennung). Cache-Suffix `_tail` invalidiert
alte abgeschnittene WAVs. Commit `949a7ee`.
**2) Kompletter Menuefluss per DOSBox-Referenz erfasst** (Xvfb + python3-Xlib
XTEST-Tasten -- xdotool ist auf Stefans Rechner nicht installiert; WICHTIG:
ohne Window-Manager ist der X-Fokus PointerRoot, also erst Pointer in die
Fenstermitte bewegen + set_input_focus, sonst kommen Keys nie an):
- Titelbild wartet ENDLOS (115s passiv, kein Attract-Loop). NUR ESC oeffnet
das Hauptmenue (Space/Return tun nichts -- per Einzeltasten-Sessions
verifiziert). Menue faedet ein.
- Hauptmenue: HIGHSCORES/ANLEITUNG/OPTIONEN/START/QUIT, Default-Auswahl
START, der selektierte Eintrag BLINKT (= der Cursor). PARTY1/PARTY2 links/
rechts, unten Credits-Ticker (gelb): "FREEGAMES #3", "REALISATION RAUSER
ADVERTAINMENT GMBH REUTLINGEN", "PRODUZIERT VON FACTOR 5", "ANIMATIONEN
UND ILLUSTRATIONEN HARTWIG NIEDERGASSEL".
- OPTIONEN: MUSIK EIN/AUS, EFFEKTE EIN/AUS, EXIT. ANLEITUNG: gelbe Texttafel
(Joystick-Text, Faehigkeiten TONY=RENNEN/SMACKS=WASSERBLASEN/COCO=HANGELN
+KLETTERN/TOUCAN=FLIEGEN). HIGHSCORES: NAME/SCORE/ITEMS/LEV-Tabelle
(MATTHIAS 100000 ... BORIS 2500). START -> Weltkarte (KARTE.PCC, mit
Charakter-Animationen im Original).
- Nebenfund: Copyright-Tafel ("DIESES SPIEL IST INNERHALB DEUTSCHLANDS FREI
KOPIERBAR...") erschien in einer Session vor dem Menue -- Ausloeser noch
unklar (nicht Return, nicht Space), evtl. zyklische Attract-Tafel im Menue.
Noch nicht nachgebaut.
**3) Implementiert in game/menu.py** (Commit `c8f7d4d`): BitmapFont-Parser
fuer FON_1/FON_1B (9x7-Zellen, ABER 8px-Vorschub -- sonst passen die
32-Zeichen-Anleitungszeilen nicht in die Box) und FON_2 (16x15, 3 Reihen:
A-T / U-Z.,:!?- / 1-0). Gelbe Schrift mit schwarzem Outline-Rendering.
PARTY-Sprites per make_border_bg_transparent freistellen (papierweisser BG;
ein Schwarz-Replace loescht die KONTUREN -- sichtbar kaputt, verworfen).
intro.py: Zustandsautomat Titelbild <-> Menue <-> Karte; QUIT beendet.
**Verifiziert:** End-to-End-Lauf des REMAKES unter Xvfb mit echten XTEST-
Tasten: Intro -> ESC -> Menue -> START -> Karte -> zurueck -> Optionen ->
Anleitung -> Highscores -> QUIT (rc=0). Alle Screens visuell gegen die
DOSBox-Referenz geprueft (Menue/Highscores/Anleitung/Karte praktisch
deckungsgleich).
**Offen/naechste Schritte:**
1. Weltkarte: KARTE0-9-Animationen + Levelauswahl (Cursor auf der Karte).
2. Gameplay: Tony auf W1L0 (Map/Tiles/Sprites laengst dekodiert).
3. Copyright-Tafel-Ausloeser im Original klaeren (niedrig).
4. Highscores persistent machen + Eintrag-Eingabe (erst mit Gameplay relevant).
+1 -1
View File
@@ -107,7 +107,7 @@ NOTES.md Vollständiges Reverse-Engineering-Log
`game/formats.py` ist das gemeinsame Fundament: sowohl das Spiel als auch die
Dev-Werkzeuge in `tools/` importieren daraus. Zur Laufzeit braucht das Spiel
**nur** `raw/PCKELL.DAT` — alles unter `preview/` sind Verifikations-/Archiv-
**nur** `game/original/PCKELL.DAT` — alles unter `preview/` sind Verifikations-/Archiv-
Artefakte, keine Laufzeit-Abhängigkeit. Auch die Musik unter `preview/audio/`
wird vom Spiel nicht gelesen: `game/tfmx_player/` rendert sie zur Laufzeit
frisch aus `PCKELL.DAT` (nach `audio_cache/`).