home *** CD-ROM | disk | FTP | other *** search
- 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 !
-
-