home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
GameStar Special 2004 January
/
GSSH0104TT.iso
/
Programme
/
Seck
/
_SETUP.1
/
men2_2W.txt
< prev
next >
Wrap
Text File
|
1997-09-08
|
8KB
|
190 lines
SECK 4.00 Savegame Editor Construction Kit THEORIE
--------------------------------------------------------------------------------------------------------------------------
Wie verΣndert man Savegames ?
--------------------------------------------------------------------------------------------------------------------------
Savegames lassen sich von Hand nicht einfach "mal eben so" verΣndern.
Es handelt sich hier um binΣre Dateien,die man nicht mit einem
Texteditor (wie MS-DOS EDIT) oder anderen anzeigen,verΣndern und wieder
speichern kann.Die Texteditoren sind fⁿr TEXTdateien zustΣndig, also
Dateien im ASCII (American Standard Code for Information Interchange)
Format.
Um binΣre Dateien zu modifizieren, ben÷tigt man einen HEX-Editor.
Dieser liest die Werte der Dateien ein und lΣ▀t Sie beliebige
Manipulationen vornehmen, die Sie dann auch speichern k÷nnen.
Solche HEX-Editoren gibt es in Massen auf dem Shareware und
Public - Domain Sektor.Sie kosten oftmals unter 20,- DM.
SECK stellt Ihnen als Bonus ebenfalls einen HEX-Editor zur Verfⁿgung.
Haben Sie nun ein SAVEGAME vorliegen, so k÷nnen Sie es in den
HEX-Editor einlesen und sehen dann seinen "binΣren Gehalt".
Angenommen, Sie wissen von einem Bekannten oder aus einer Spiele-
Zeitschrift, in den SAVEGAMES des Spieles, welches sie gerade spielen
und nicht weiter kommen, befindet sich an der Dateiposition 14227 der
Wert fⁿr die Spielleben.
Sie lesen also ihr SAVEGAME mittels eines HEX-Editors ein und bewegen
sich darin - mittels den Befehlen des Editors - an die besagte Position.
Dort steht beispielsweise der Wert 03.Und Sie erinnern sich, dieses war
genau der Wert ihrer Spielleben, als Sie abgespeichert haben.
Nun schreiben Sie an die Stelle eine 99.
Sie speichern die Datei, verlassen den Editor, laden ihr Spiel und
im Anschlu▀ daran da▀ SAVEGAME.
Und Sie sehen,es hat sich tatsΣchlich etwas getan - statt 3 Spielleben
haben Sie nun 153.
(Es kann aber durchaus auch sein,da▀ das Programm z.B. nur die hinterste
Stelle anzeigt, weil es vielleicht nur bis 9 gedacht war!Es wΣre somit
denkbar,da▀ sie nur die 3 sehen, oder, bei zwei Stellen, nur die 53 !)
Aber Sie haben doch eine 99 ins Savegame eingetragen ?
Die L÷sung besteht darin, da▀ in Hex-Editoren
HEXADEZIMALE Zahlen eingegeben werden (Aha,daher der Name!).
Diese haben normalerweise zur Erkennung ein $-Zeichen als Vorzeichen.
Das HEXADEZIMAL System ist ein eigenes Zahlensystem, im Unterschied
zu unserem gebrΣuchlichen DEZIMAL System oder dem DUALSYSTEM
(nicht dualES System!!!).
WENN SIE DAS HEXADEZIMALSYSTEM EINFACH EINMAL ALS GEGEBEN
HINNEHMEN UND LIEBER SCHNELL WEITERLESEN M╓CHTEN, SO
BL─TTERN SIE BITTE WEITER BIS ZUR MARKIERUNG!
HABEN SIE ABER INTERESSE DARAN, GENAUERES ZU ERFAHREN, SO
LESEN SIE BITTE HIER WEITER !
Das HEXADEZIMAL System ist ein Zahlensystem mit der Basis 16.
Das DEZIMAL System ist ein Zahlensystem mit der Basis 10.
Das bedeutet:
---------------------
Im DEZ. gibt es 10 Ziffern ( nΣmlich 0 bis 9)
Im HEX. gibt es hingegen 16 "Ziffern" : 0-9 und A-F.
GezΣhlt wird also :
---------------------------
Im DEZ. : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...
Im HEX. : $01 $02 $03 $04 $05 $06 $07 $08 $09 $0A $0B $0C $0D $0E $0F
$10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $1A $1B $1C $1D $1E ...
Bei der Berechnung einer Zahl geht man vor wie folgt :
--------------------------------------------------------------------------------
Wenn wir 1467 im DEZ.sagen, meinen wir eigentlich die folgende Rechnung :
1467 = 1*10^3 + 4 * 10^2 + 6 * 10^1 + 7*10^0
= 1*1000 + 4 * 100 + 6 * 10 + 7*1
= 1000 + 400 + 60 + 7
= 1467
Im HEX. steht nun ⁿberall statt 10^ eine 16^ !
Das hei▀t, wenn wir im HEX. $2912 sagen, so meinen wir eigentlich :
$2912 = 2 * 16^3 + 9 * 16^2 + 1 * 16^1 + 2 * 16^0
Um nun eine HEX. Zahl in eine DEZ. Zahl umzuwandeln :
HEX: DEZ:
------------ -------------
$2A4B = 2*16^3 + 10 *16^2 + 4 * 16^1 + 11 * 16^0
= 2*4096 + 10 * 256 + 4 * 16 + 11 * 1
= 8192 + 2560 + 64 + 11
= 10827
Um eine DEZ. Zahl in eine HEX. Zahl umzuwandeln :
DEZ. HEX.
------------ ------------
14488 = 3 * 16^3 + 8 * 16^2 + 9 * 16^1 + 8 * 16^0
= 3 * 4096 + 8 * 256 + 9 * 16 + 8 * 1
= $ 3898
SO, HIER GEHT ES NUN F▄R ALLE EINHEITLICH WEITER IM LESEN !
Allerdings k÷nnen Sie sich das Umrechnen von Hand sparen, da nahezu jeder
bessere wissenschaftliche Taschenrechner Zahlen aus den beiden Systemen
in das jeweilige andere umsetzen kann.Und , richtig, auch SECK hat einen
HEX/DEC Umwandler in seinem Repertoire ... Sie finden ihn im Menu Tools !
WICHTIG ist nur, da▀ sie stets daran denken,in den HEX - Editoren
von vornherein (Grundeinstellung) immer HEX - Zahlen einzugeben.
M÷chten Sie also - um auf das obige Beispiel zurⁿckzukommen -
99 Spielleben eintragen, so rechnen sie die (dezimale) 99 um und
erhalten die (hexadezimale) $63 .
Speicherten Sie den Wert in jenem fiktiven SAVEGAME, so wⁿrden Sie im
Spiel 99 stehen haben!
Eine Speicherzelle kann maximal Werte bis 255 aufnehmen (1 Byte!).
Also kann es passieren, da▀ dies auch der Maximalwert fⁿr bestimmte
─nderungen ist, wenn das Spiel selbst im SAVEGAME nur eine Speicherzelle
(also 1 Byte) fⁿr den entsprechenden Wert vorsieht.Das ist in sofern
vernⁿnftig,weil der Programmierer nicht mehrere Stellen zu verschwenden
braucht, hat er nur bsp. 5 Spielleben vorgesehen!
Ein Byte kann aber wie gesagt nur werte von 0 - 255 aufnehmen.
Stellt ein SAVEGAME hingegen zwei Speicherzellen zur Verfⁿgung, k÷nnen
durchaus h÷here Werte (z.B. GeldbetrΣge u.Σ.) gespeichert werden.
Dabei ergibt sich eine weitere Besonderheit:
Bei zwei aufeinanderfolgenden Speicherzellen fⁿr einen Wert wird dieser
im Format LOW-Byte und dann HIGH-Byte abgespeichert,zu deutsch
NIEDERW─RTIGES-Byte und H╓HERWERTIGES-Byte.
(Puh,lieber LOW und HIGH!).
Es gilt: Das HIGH-Byte ist um 256 mal "gr÷▀er" als das LOW-Byte.
Als Beispiel :
Angenommen Sie wissen, da▀ bei einem SAVEGAME an den Positionen
157 und 158 der Geldbetrag, den Sie im Spiel zur Verfⁿgung haben,
gespeichert steht. Sie schauen sich die Stellen an und finden : in 157 eine
$40 und in 158 eine $9C.
Um den Betrag daraus ersehen zu k÷nnen, wandeln sie die HEX .Werte zunΣchst
in DEZ. Werte um :
$40 = 64
$9C =156
Da $40 vor der $9C steht, ist also $40 das LOW-Byte und $9C das HIGH-Byte.
Das hei▀t, der Geldbetrag, der spΣter im Spiel aus diesen beiden
Speicherzellen ausgeleses wird, lautet:
156 * 256 + 64 = 40000
HIGH LOW
Wenn Sie sich nun 50000 geben wollen, mⁿssen Sie diesen Wert entsprechend
auf die zwei Stellen aufteilen : 50000 geteilt durch 256 ergibt
195.3125 Die Nachkommastellen werden ignoriert!
Das HIGH-Byte lautet also 195.
Dann bleibt fⁿr das LOW-Byte noch ⁿbrig : 50000 - 195 * 256 = 80.
Somit lautet dieses also 80.
Nun werden die DEZ. Werte wieder in HEX. Werte umgewandelt ...
195 = $C3
80 = $50
... und in die Speicherzellen 157 und 158 in der Reihenfolge LOW-Byte und
dann HIGH-Byte eingetragen.
Also steht nach dieser (fiktiven) VerΣnderung in 157 eine $50 und in 158
eine $C3 !