Lokale Skripte in .lfl-Dateien

Der Anlaufpunkt für alle, die selbst ein Adventure programmieren wollen.
Antworten
Guy.brush
Komplettlösungsnutzer
Komplettlösungsnutzer
Beiträge: 23
Registriert: 12.06.2007, 00:17
Wohnort: Bad Frankenhausen

Lokale Skripte in .lfl-Dateien

Beitrag von Guy.brush »

kennt sich da jemand mit aus wie die aufgebaut sind bzw kennt ne quelle wo das dokumentiert ist?
mir würde auch schon reichen zu wissen welche Hex-Codes was bewirken (Textausgabe, Sprünge, etc.)

greetz Guy
Die Mehrheit bevorzugt die Option A gegenüber B, und B gegenüber C. Dennoch möchte die Mehrheit lieber C als A.
Benutzeravatar
john_doe
Logik-Lord
Logik-Lord
Beiträge: 1302
Registriert: 06.05.2001, 20:58

Re: Lokale Skripte in .lfl-Dateien

Beitrag von john_doe »

Ich würde mir den Quellcode von ScummVM ansehen (http://www.scummvm.org), und dort den der SCUMM-Engine.
Save the Cheerleader, save the World!
Guy.brush
Komplettlösungsnutzer
Komplettlösungsnutzer
Beiträge: 23
Registriert: 12.06.2007, 00:17
Wohnort: Bad Frankenhausen

Re: Lokale Skripte in .lfl-Dateien

Beitrag von Guy.brush »

Das klingt zwar möglich, aber seeeehr umständlich sich den ganzen ScummVM Code zu pressen ;)

Deswegen hier mal ein lokales Skript in Hex und Plain, vielleicht kann mir ja jmd beim entschlüsseln behilflich sein....
Auszug aus der 83.lfl von Indiana Jones - The last Crusade

Im folgenden gilt
Hex: XX XX XX XX
Plain: text (editor, leerzeichen durch punkte ersetzt, wie sie im Hexeditor angezeigt werden)
{?Vermutung?/Wissen was es tut}

64 00 00 00
d...
{Gibt die Länge des Skripts an}

4C 53 CA 80 18 1F 00 16 00 00 05 28 00 00 16 00
LSÊ€...(..
{Steuerzeichen LS, ?...?}

D8 0F 5A 75 72 20 42 75 E1 65 20 62 65 72 65 69 74 5E 00
Zur Buáe bereit^.
{Ego spricht (D8), 00 stoppt}

18 31 00
1.
{18 gibt laut Scumm-Engine nen relativen Sprung an, also wahrscheinlich innerhalb der datei bzw des Skripts, 00 terminiert die Länge, also wird hier um Hex 31 (entspricht Dezimal 49) gesprungen, was genau der Länge der zweiten Sprachausgabe enstpricht}

D8 0F 60 4E 75 72 20 64 65 72 20 7A 75 72 20 42 75 E1 65 20 62 65 72 65 69 74 65 20 4D 61 6E 6E 20 77 69 72 64 20 62 65 73 74 65 68 65 6E 2E 60 00
Ø"Nur der zur Buáe bereite Mann wird bestehen.".
{Ego spricht (D8), 00 stoppt}

AE 2E 2C 01 00 18 A8
®.,.¨
{?...? , ?Pause erzeugt (2E) mit Länge 44 oder 300 (H 2C oder 012C wenn 00 terminiert)ms?!, wenn aber 18 nen Sprung ist, wohin wird dann hier gesprungen #-o }

FF A0
ÿ.
{Skript-Ende - alle Lokalen Skripte der 83.lfl enden mit diesen beiden Zeichen}




mit Hilfe von folgender Quelle:
http://scumm.mixnmojo.com/?page=specs&file=addlfl.txt

SCUMM Commands:
Note: These are just guesses. [] is a 8-bit, {} is a 16-bit, () is 32-bit.
05 {Object #} - Draws object.

07 {Object #} - Enables "open" flag (0x80).

11 [Actor][Command] - Commands actor:
10 Normal face
1C Frown
F5 Face right
F6 Face front
F7 Face back
F8 Face left
FF Stop walking

13 [Actor][Value][Property] - Set property of actor:
02 Body color
04 Costume
05 Text color

14 [Actor] - Actor # speaks, 00 terminated.

1E [Actor][LocX][LocY] - Actor walks to location.

1C [Sound #] - Plays sound.

2E (Delay) - Pauses.

33 [Value1][Value2][Option] - Applies values according to option:
2 Changes color #1 & #2 of screen.
Why lo-res 46.LFL looks wrong.
In SCRIPT #127: 33 09 0B 02.
Want to be able to change manually
in viewer?

42 [Script #] - Calls or loads script.

47 {Object #} - Disables "open" flag (0x80).

54 {Object #} - Renames object.

72 [Room #] - Loads room.

D8 - Current ego speaks, 00 terminated.
Die Mehrheit bevorzugt die Option A gegenüber B, und B gegenüber C. Dennoch möchte die Mehrheit lieber C als A.
Antworten