home *** CD-ROM | disk | FTP | other *** search
/ Der Mediaplex Sampler - Die 6 von Plex / 6_v_plex.zip / 6_v_plex / DISK1 / GAMES_12 / CK4_P1.ZIP / PATCHCK4.PAS < prev   
Pascal/Delphi Source File  |  1992-03-12  |  3KB  |  126 lines

  1. program keenpatch;
  2.  
  3. (* Erleichtert Commander Keen 4 von Apogee
  4.  
  5.    Ertüftelt 12.03.1992, Daniel Tietze
  6.  
  7.    Prinzip: Die gespeicherten Spielstände beinhalten eine Fülle an
  8.             Daten, die auszuwerten und zu modifizieren sind, um das
  9.             Spiel ein Bisschen spielbarer zu gestalten.
  10.  
  11.    Gefundene Werte in SAVEGAMx.CK4 :
  12.  
  13.    Filepos   Bedeutung
  14.    -------------------------------------------------------
  15.    ab $8   : Name des Spielstandes (Nullterminiert)
  16.    $60/$61 : Punkte (Int?)
  17.    $68     : Anzahl der Schüsse
  18.    $6A     : Anzahl der Tropfen
  19.    $6C     : Scheint was mit Items zu tun zu haben
  20.    $6E     : Anzahl der geretteten
  21.    $70     : Roter Schlüssel gefunden? (=1, wenn ja)
  22.    $72     : dito, gelber Schlüssel
  23.    $74     : dito, blauer Schlüssel
  24.    $76     : dito, grüner Schlüssel
  25.    $7A     : Anzahl der Leben
  26.    $7C     : Level (1 : Easy, 2 : Normal, 3 : Hard)
  27.  
  28.  
  29.  
  30.    Wer mehr rauskriegt, möge doch bitte das Programm ergänzen und
  31.    wieder in die MB1 uploaden, damit ich davon auch profitiere
  32. *)
  33.  
  34.  
  35. uses crt;
  36.  
  37. type bfile = file of byte;
  38.  
  39. var f    : bfile;
  40.     name : string;
  41.  
  42. function getbyte (var f : bfile;position : integer) : byte;
  43.  
  44. var b : byte;
  45.  
  46. begin
  47.   seek (f,position);
  48.   read (f,b);
  49.   getbyte:=b;
  50. end;
  51.  
  52. procedure display;
  53. (* Ausgeben der enthaltenen Informationen und ggf. patchen *)
  54.  
  55. var b1,b2 : byte;
  56.     pts   : word;
  57.     ch    : char;
  58.  
  59. begin
  60.   assign (f,name);
  61.   {$I-} reset (f); {$I+}
  62.   if ioresult<>0 then
  63.   begin
  64.     writeln ('Konnte '+name+' nicht öffnen!');
  65.     exit;
  66.   end;
  67.   seek (f,8);
  68.   write   ('Titel  : ');
  69.   repeat
  70.     read (f,b1);
  71.     if b1<>0 then
  72.       write (chr(b1));
  73.   until b1=0;
  74.   writeln;
  75.   seek (f,$7C);
  76.   read (f,b1);
  77.   write   ('Level  : ');
  78.   case b1 of
  79.     1 : writeln ('Easy');
  80.     2 : writeln ('Normal');
  81.     3 : writeln ('Hard');
  82.     else writeln ('Unbekannt');
  83.   end;
  84.   pts:=getbyte (f,$60)+(256*getbyte (f,$61));
  85.   writeln ('Punkte : ',pts);
  86.   writeln ('Leben  : ',getbyte (f,$7A));
  87.   writeln ('Shots  : ',getbyte (f,$68));
  88.   writeln ('Tropfen: ',getbyte (f,$6A));
  89.   writeln ('Saved  : ',getbyte (f,$6E));
  90.   write ('Schlüssel: ');
  91.   if getbyte (f,$70)=1 then
  92.     write ('Rot ');
  93.   if getbyte (f,$72)=1 then
  94.     write ('Gelb ');
  95.   if getbyte (f,$74)=1 then
  96.     write ('Blau ');
  97.   if getbyte (f,$76)=1 then
  98.     writeln ('Grün');
  99.   writeln;
  100.   write ('Patch (J/N) : ');
  101.   ch:=upcase(readkey);
  102.   if ch='J' then
  103.   begin
  104.     writeln;
  105.     b1:=255;
  106.     writeln ('Patche 255 Leben, 255 Shots und alle Schlüssel');
  107.     seek (f,$7A); write (f,b1);  (* Anz. Leben *)
  108.     seek (f,$68); write (f,b1);  (* Anz. Schüsse *)
  109.     b1:=1;
  110.     seek (f,$70);  write (f,b1);  (* Roter Schlüssel *)
  111.     seek (f,$72);  write (f,b1);  (* Gelber   "      *)
  112.     seek (f,$74);  write (f,b1);  (* Blauer   "      *)
  113.     seek (f,$76);  write (f,b1);  (* Grüner   "      *)
  114.   end;
  115.   close (f);
  116. end;
  117.  
  118.  
  119.  
  120. begin
  121.   writeln ('KEEN4PATCH - Daniel Tietze');
  122.   write ('Nummer der Spielstanddatei (z.B. 0 für SAVEGAM0.CK4) : ');
  123.   readln (name);
  124.   name:='SAVEGAM'+name+'.CK4';
  125.   display;
  126. end.