NOTES.md: Factor5-Tail + Menuesystem-Session dokumentiert; README: raw/-Restverweis
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
c8f7d4d990
commit
4517efbdf8
@@ -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).
|
||||
|
||||
@@ -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/`).
|
||||
|
||||
Reference in New Issue
Block a user