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/).
|
audio/).
|
||||||
|
|
||||||
Naechster Schritt unveraendert: echtes Gameplay (Tony auf `W1L0`).
|
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
|
`game/formats.py` ist das gemeinsame Fundament: sowohl das Spiel als auch die
|
||||||
Dev-Werkzeuge in `tools/` importieren daraus. Zur Laufzeit braucht das Spiel
|
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/`
|
Artefakte, keine Laufzeit-Abhängigkeit. Auch die Musik unter `preview/audio/`
|
||||||
wird vom Spiel nicht gelesen: `game/tfmx_player/` rendert sie zur Laufzeit
|
wird vom Spiel nicht gelesen: `game/tfmx_player/` rendert sie zur Laufzeit
|
||||||
frisch aus `PCKELL.DAT` (nach `audio_cache/`).
|
frisch aus `PCKELL.DAT` (nach `audio_cache/`).
|
||||||
|
|||||||
Reference in New Issue
Block a user