 
  ͻ
  TEXT               Savegame Editor Construction Kit                 TEXT
  ͹
  Thema : How do I modify savegames ?                   date : 20.10.1995 
  ͼ
                   ( english conversion date : 07-31-1996 )

  It it not that easy to modify savegames without any help by certain 
  programs.They are binary files which you cannot load, change and save with 
  a normal text - editor.The text - editors are used for text files, which 
  are ASCII files (American Standard Code for Information Interchange).
  To modify binary files, you need a hex - editor.With this tool, you're
  able to load savegames like other binary files, modify them the way you 
  want and to save them finally again to disk.You can find lots of these
  hex-editors on the shareware market, but SECK also do contain an own 
  hex-editor, which I advise to use,of course.When you've identified a file
  to be your savegame, you can start manipulation of its binary content.
  Suppose, a gamers magazine told you, that at position 14227 in a savegame
  you find the number of lives you've got in game.Then you can read out the 
  savegame, move to this position and replace the value with a new value
  of your choice (using the hex-editor.If the value was 03 and you wrote 99 
  in there, you'd find out that in game there are now 153 lives.(It is 
  possible that you'll only see the 3 if the programmer's didn't leave 
  space enought for higher numbers than 9)
  But why, if you've written a 99 to the position ? The reason is, that
  you are editing HEX values into the savegames (=> HEX-editor).
  To get 99 lives in game, you would have to write a (hexadecimal) $63 instead
  of the (decimal) 99! So this is what you'd have to do to get 99 lives
  in that fictional savegame.
  A single memory adress in the savegames may only hold numbers up to 255 
  (1 Byte).So it is possible, that 255 is the maximal number you can 
  edit into a savegame.This is the case, if there is only one adress in the
  savegames reserved for the lives.Often programmers behave very economic
  with the place reserved for values.And if you should only have e.g. 5 lives,
  why should a programmer reserve more than one byte ?
  But if there are two bytes reserved, the byte more right than the other 
  (it's called the HIGH-Byte) is 256 times higher than the other byte (which
  is - you're right - called LOW-Byte).
  Suppose, at position 157 and 158 in a savegame, your money is stored.
  Editing these positions, you find a $40 in 157 and a $9c in 158.
  To get the value, you have to transform the values into the decimal system.
  
  $40 = 64
  $9C = 156

  The LOW-Byte is $40, the HIGH-Byte is $9C.

  If you want to know the ammount of money, you have to calculate :

  156 * 256  +  64  = 40000
  HIGH          LOW

  If you want to change this value to 50000, you have to divide this ammount
  in LOW and HIGH: 50000 divided by 256 is 195,3125. The numbers on the 
  right side of the kommata are ignored.the HIGH-Byte is 195.
  So the LOW-Byte will be : 50000 - 195 * 256 = 80.
  The LOW-Byte is 80.
  Now, the decimal values are changed to the hexadecimal system :
  
  195 = $C3
  80  = $50

  The last thing to do is to enter those Byte values into the position 157
  and 158 in the savegames (first LOW-Byte, then HIGH-Byte).

       You can also use the integrated HEX-DEC calculator in SECK !
       

   
  
  ADDITIONAL THEROY : THE HEXADECIMAL SYSTEM
  
  The hexadecimal system is a system based on 16.
  The decimal system is a system basen on 10.

  This means : 

  in DEC we've got 10 figures   ( 0 - 9 ), 
  in HEX we've got 16 "figures" ( 0 - 9 AND A - F ).

  So the difference in counting comparing the two systems is :
  DEZ : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...
  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 ...

  concerning the transformation, you have to know : 

  If we call 1467 in DEC, we do want to express : 
  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

  in the hexadecimal system, you'll have to write a ^16 everywhere instead
  of the ^10 !

  If we call $2912 on hex, we do want to express : 
  $2912 = 2 *16^3 + 9*16^2 + 1*16^1 + 2*16^0

  The transformation from HEX to DEC an the other way round is : 

  HEX       DEC
  $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

  DEC       HEX
  14488  =  3*16^3 + 8*16^2 + 9*16^1 + 8*16^0
         =  3*4096 + 8*256  + 9*16   + 8*1
         =  $ 3898

  But you do not need to transfer the numbers on your own, all scientific
  calculators are able to do this transformation, or, even better, you 
  can use the HEX-DEC calculator integrated in SECK !

  

