Anleitung zur Ermittlung absoluter Hex-Adressen

Antworten
Benutzeravatar
wurmonkelchen
Fähnrich zur See
Administrator
Beiträge: 1754
Registriert: 07.09.2019
Wohnort: Fulda
Hat sich bedankt: 116 Mal
Danksagung erhalten: 99 Mal

Anleitung zur Ermittlung absoluter Hex-Adressen

Beitrag von wurmonkelchen »

Anleitung zur Ermittlung absoluter Hex-Adressen, ursprünglich erstellt von Rowi58

Der SH3_Cmdr von Jaeson Jones verändert über die Datei „Randomised events.cfg“ (im folgenden kurz RE genannt)
in DAT- und SIM-Dateien Werte von gewissen Eigenschaften. Dafür müssen in der RE die absoluten Hex-Adressen der
Startbytes dieser zu ändernden Werte eingetragen werden.
Ich beziehe mich in den folgenden Erläuterungen auf die „AI_Sensors.dat“ aus LSH3 V5.x und die „Cameras.dat“ aus
LSH3 V5.x und Stock SH3.
Der HexEditor ist der „XVI32“ von Christian Maas (Download).
Weiter wird „S3D“ von skwasjer in der finalen Version benötigt (Download).

Am Beispiel der „Thermal Layer Funktion“ der RE soll das dargestellt werden.
Zunächst die „AI_Sensors.dat“ aus LSH3 V5.x mit S3D öffnen:

Bild

Der Wert für die Simulation der Thermalschichten steht bei der Eigenschaft „MinHight“, hier bei -300
(das ist die Tiefe, bis zu der das AI_Hydrophone funktioniert. In der originalen RE hat dieser Wert die absolute
Hex-Adresse: 0470 (Jaeson Jones verwendet grundsätzlich vierstellige Adressen, daher auch die führenden Nullen).

Jetzt wird die Adresse eben dieses Wertes in der AI_Sensors.dat von LSH3 V5.x ermittelt.
Dazu muss die Datei mit dem HexEditor geöffnet werden:

Bild

Über den Menüpunkt „Search“ → „Find“ wird der Suchbegriff AI_Hydro (das reicht schon, es muss aber korrekt geschrieben
sein was Groß- und Kleinschreibung betrifft) eingegeben.
Orange markiert im rechten Fenster des HexEditors (Darstellung in ASCII-Zeichen) sieht man den Begriff „AI_Hydrophone“.

Bild

Kurz darunter sieht man den Namen der Eigenschaft „MinHight“. Und nun das Wichtigste: nach dem letzten
Buchstaben T von MinHight kommt ein Stoppbyte und als zweites Zeichen das erste Byte des gesuchten Wertes.
Das ist hier mit dem Cursor blau markiert und rot umrandet (der Cursor markiert dieses Zeichen in beiden Fenstern
des HexEditors, also auch im linken Fenster, wo alle Zeichen mit ihren Hexwerten dargestellt sind.
Gegenprobe: der Cursor bleibt auf diesem Byte und man öffnet das Menü „Tools“ → „Decode number...“ und scrollt
dann im Ergebnisfenster etwas runter, bis man den grün umrahmten Wert für 00 00 96 C3 as 32 bit IEEE single: -300 sieht.
Das ist genau der Wert, wie er auch in S3D ermittelt wurde (nebenbei – die Werte sind alle von diesem Typ).

Nun brauchen wir die absolute Hex-Adresse genau dieses ersten Byte von vier Bytes des Wertes.
Ganz einfach. Jetzt braucht man nur das Fenster im HexEditor zu wechseln:

Bild

Dazu mit der Maus auf das im linken Fenster schon markierte Byte klicken (damit der Cursor nicht verschoben wird).
Die absolute Hex-Adresse steht unten links: 4B7. Bitte ganz genau hinsehen – denn die 8 und das B können sehr leicht
verwechselt werden (bei der kleinen Schrift). Der HexEditor stellt das nur ohne führende Null dar, also muss in der RE
für das AI_Hydrophone fünf mal der Wert 04B7 anstelle von 0470 eingetragen werden:

0_x04B7=-105 ;AI_Hydrophone

Nach diesem Muster müssen nun alle absoluten HexAdressen der originalen RE überprüft und ggf. geändert werden.
Jaeson Jones hat sich ja sehr große Mühe gegeben, das, was und wo die RE macht, exakt zu beschreiben.
Manchmal ist es aber nicht ganz leicht dahinter zu kommen, welchen Wert er meint.
Um im Zweifelsfall die richtige Eigenschaft und deren Wert zu ermitteln, muss man mit dem
HexEditor in der originalen DAT- oder SIM-Datei (aus Stock-SH3) nachschauen.

Beispiel:

Code: Alles auswählen

[Mal0:data\Library\Cameras.dat]
;Randomly adjusts blur duration time to simulate periscope seal/lens
;integrity,also disables attack scope zoom, simulates periscope magnification
;breakdown
;1939 8% randomization
ApplyToPeriod=19390101|19391231
ChooseFrom=90
RndMidPat=0
0_x2ECD=20 ;Attack Periscope Drops duration[4]
Gesucht wird die HexAdresse 2ECD. Mit dem HexEditor findet man sie auf diese Weise sehr schnell.
Dazu muss die originale Cameras.dat im HexEditor geöffnet werden:

Bild

Über das Menu „Address“ → „Go to...“ kommt man zu diesem Eingabefenster. Bitte unbedingt beachten:
die Buttons müssen so gesetzt sein wie auf obigen Screenshot. Über „Ok“ springt der Cursor zur angegebenen
Hex-Adresse (ein Nachteil des „XVI32“ ist, dass diese Adresse dann in der obersten Zeile des Bildes erscheint –
beim scrollen nach oben wandert leider der Cursor mit.
Kein Problem – so ungefähr 10 Zeilen nach oben scrollen und nochmals „Address → Go to...“ ausführen.

Bild

So sieht dann das Ergebnis aus: der Wert bezieht sich auf die Eigenschaft „DropsDuartion“ des Objektes
„Dummy_Cam_Periscope“ (gemeint ist das Angriffssehrohr, was bei Ubi nur Periscope heißt).

Da wir nun wissen, wo der Wert hingehört, können wir ihn in der „Cameras.dat“ von LSH3 V5.x suchen.
Dazu diese Datei öffnen und über das Menü „Search → Find“ nach dem Text-String: Dummy_Cam_Periscope suchen.

Bild

Der Wert steht ja bei „DropsDuration“ und wie oben geschrieben beginnt er mit dem
zweiten Zeichen (Byte) nach dem letzten Buchstaben von „DropsDuration:

Bild

Links unten – wieder wie oben beschrieben das linke Fenster aktivieren – sieht man die absolute Hex-Adresse,
die dieser Wert in der Cameras.dat von LSH3 V5.1 hat: 334F. Und diesen Wert trägt
man dann in die zu überarbeitende RE ein.

0_x334F=20 ;Attack Periscope Drops duration[4]

Und das natürlich wieder an allen Stellen, wo in der originalen RE dieser Wert hinterlegt ist.

Zum Schuss noch drei wichtige Hinweise:
– bitte genau im Hexeditor die Adressen lesen, 8 und B können leicht verwechselt werden;
– beim Eintrag in die RE darauf achten, dass die absolute Hex-Adresse vierstellig sein muss und
zur Not durch eine führende Null zu ergänzen ist,
– dass unbedingt vor der Hex-Adresse die Vorzeichen _x vorhanden sein müssen, sonst erkennt der
SH3Cmdr den Wert nicht als „integer“ an. Die Ziffer vor dem _x zählt nur die Varianten des Wertes durch,
die es in der RE gibt. Und man beginnt mit der NULL, nie mit der EINS.

Ich hoffe, dass dies ein bisschen zum Verständnis und Erleichterung der Arbeit beiträgt.
Bild
"Habe Mut, dich deines eigenen Verstandes zu bedienen." (Immanuel Kant)
Mein Mediafire
Antworten