BINARY-DURCHBRUCH: NE-Overlay geparst, Original-Animationstabellen gefunden
START.EXE = MZ-Stub + ungepackte NE-Executable (Borland DPMI16). Im DATA-Segment liegen die ANIMATIONSTABELLEN im Klartext (Format [delay_ticks][frames...]ffff, 70Hz): Engine-Frame x2 = BOB-Frame. Bestaetigt: Gehzyklus 0-14/17.5fps, Idle 16, Sprung 18, Renn-Rad 26-32. Uebernommen: ECHTE Frosties-Idle-Sequenz (46,48,46,44,...,20x5, 2.8fps) und Original-Anim-Timings (17.5fps Gehen/Rad). Ausserdem im Binary gefunden: kompletter WELTKARTEN-LAUFPFAD + LEVELPUNKT- Koordinaten + 22 Levelnamen (Grundlage fuer die Karten-Levelauswahl) und den "Kellogg's Cheat-Mode" (Level-Waehler). Dump + Offsets in NOTES.md. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1641,3 +1641,43 @@ Stefans Frage: Animations-Zuordnungen aus dem Binary disassemblieren?
|
||||
JUMP_SQUAT_SECONDS=0.09 zeigt kurz den Duck-Frame.
|
||||
2. Die TUER-SEQUENZ DIMMT DEN LEVEL AB (Szene dunkel waehrend der
|
||||
Interaktion) -- eingebaut (Overlay waehrend door_open_t).
|
||||
|
||||
## 25.07.2026 (12) -- BINARY-DURCHBRUCH: NE-Overlay + Original-Animationstabellen
|
||||
|
||||
Stefans Frage "sollen wir Disassembly versuchen?" -- JA, und es hat sich
|
||||
gelohnt (kein Voll-Disassembly noetig!):
|
||||
|
||||
**START.EXE-Struktur:** MZ-Stub (3.6KB) + NE-Executable als Overlay ab
|
||||
Offset 3646 (Borland DPMI16, UNGEPACKT, 7 Segmente: 5 CODE ~100KB, 2 DATA).
|
||||
Borland-Pascal-Shortstrings ("GAMEDATA\" + Name + ".BOB" wird zur Laufzeit
|
||||
konkateniert -- deshalb fand die fruehe Dateinamen-Suche keine .ARE/.MAP).
|
||||
String-Fund: "Willkommen im Kellogg's Cheat-Mode" -- Level-Waehler per
|
||||
Pfeiltasten existiert im Original!
|
||||
|
||||
**ANIMATIONSTABELLEN im DATA-Segment (@143858 ff., Format
|
||||
[delay_ticks][frame...] 0xffff, 70Hz-Ticks):**
|
||||
FORMEL: Engine-Frame x2 = unser BOB-Frame (gerade=rechts, +1=links)!
|
||||
- [0,4] 0..7 -> Gehzyklus 0,2..14, delay 4 = 17.5 fps
|
||||
- [4] 8,8,8 -> Idle 16 (bestaetigt unsere Zuordnung)
|
||||
- [4] 9 -> Sprung 18 (bestaetigt)
|
||||
- [4] 10,10,10 -> Frontal 20
|
||||
- [4] 13,14,15,16 -> RENN-RAD 26,28,30,32 (bestaetigt!)
|
||||
- [25] 23,24,23,22,...,10x5 -> ECHTE Frosties-Sequenz
|
||||
46,48,46,44,...,20x5 (delay 25 = 2.8 fps) -- uebernommen.
|
||||
- Weitere Listen mit globalen Sprite-Indizes (100er/200er/400er/500er/
|
||||
900er) = andere BOBs/Items/Karten-Sprites (Basis-Offsets noch offen).
|
||||
|
||||
**WELTKARTEN-DATEN (@145114-146760):** kompletter Karten-LAUFPFAD als
|
||||
Records [x,y,flag,25] ((58,40)->...ueber die ganze Karte), dazwischen
|
||||
[x,y]-Paare = LEVELPUNKT-Positionen ((53,56),(108,51),(126,81),(142,53)
|
||||
...), am Ende die 22 Levelnamen W1L0..W3L7 als Pascal-Strings. => Die
|
||||
Weltkarten-Levelauswahl liegt komplett im Binary -- perfekte Grundlage
|
||||
fuer den naechsten Meilenstein! Voll-Dump gesichert (Session-Scratchpad
|
||||
anim_tables.txt; bei Bedarf neu erzeugbar, Offsets dokumentiert).
|
||||
|
||||
**Angewendet:** Walk/Rad-FPS auf 17.5 (Original-Timing), Frosties-Sequenz
|
||||
exakt uebernommen, Idle 2.8 fps.
|
||||
|
||||
**Offen:** globale Sprite-Basis-Offsets pro BOB entschluesseln (dann sind
|
||||
ALLE Animationszuordnungen inkl. Smacks-Sprung exakt abzulesen); Karten-
|
||||
pfad in die Weltkarte einbauen; Cheat-Mode-Aktivierung finden.
|
||||
|
||||
+6
-4
@@ -41,10 +41,10 @@ GRAVITY = 900.0
|
||||
JUMP_VELOCITY = -360.0
|
||||
SWIM_GRAVITY = 240.0 # Smacks im Wasser: traege sinken
|
||||
SWIM_KICK = -140.0 # Schwimmstoss mit Space
|
||||
WALK_ANIM_FPS = 12.0
|
||||
RUN_ANIM_FPS = 14.0
|
||||
WALK_ANIM_FPS = 17.5 # Original: delay 4 Ticks @70Hz (Binary-Tabelle)
|
||||
RUN_ANIM_FPS = 17.5 # Rad hat dasselbe delay 4
|
||||
IDLE_ANIM_AFTER = 5.0 # Sekunden Stillstand bis zur Idle-Animation
|
||||
IDLE_ANIM_FPS = 2.5
|
||||
IDLE_ANIM_FPS = 2.8 # Original: delay 25 Ticks @70Hz
|
||||
WATER_DAMAGE_EVERY = 1.5 # im Wasser: alle 1.5s ein Herz (Stefan: 5s war arg lang)
|
||||
SPAWN_ANIM_SECONDS = 1.1 # Start-Sprite beim Levelstart/Charakterwechsel
|
||||
SPRITE_SINK = 4 # Fuesse sinken optisch in die Blaetter/Gras ein
|
||||
@@ -73,7 +73,9 @@ CHAR_DEFS = {
|
||||
# Lauf-Frame bleibt stehen"-Bug)
|
||||
idle_r=16, idle_l=17, jump_r=18, jump_l=19, duck_r=24, duck_l=25,
|
||||
swim_r=None, swim_l=None,
|
||||
idle_anim_r=[44, 46, 48], idle_anim_l=[45, 47, 49],
|
||||
# ECHTE Sequenz aus der Binary-Animationstabelle (@143966, x2):
|
||||
idle_anim_r=[46, 48, 46, 44, 46, 44, 46, 44, 46, 48, 46, 44, 46, 20, 20, 20, 20, 20],
|
||||
idle_anim_l=[47, 49, 47, 45, 47, 45, 47, 45, 47, 49, 47, 45, 47, 21, 21, 21, 21, 21],
|
||||
spawn_frame=22, # Arm nach oben gestreckt
|
||||
death_frame=38, drop_frame=40, # erschrocken; fallendes HALSTUCH
|
||||
peek_frame=50, # in die Tuer reinschauen (Rueckenansicht -- Stefans Fund)
|
||||
|
||||
Reference in New Issue
Block a user