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
Wrap
Pascal/Delphi Source File
|
1992-03-12
|
3KB
|
126 lines
program keenpatch;
(* Erleichtert Commander Keen 4 von Apogee
Ertüftelt 12.03.1992, Daniel Tietze
Prinzip: Die gespeicherten Spielstände beinhalten eine Fülle an
Daten, die auszuwerten und zu modifizieren sind, um das
Spiel ein Bisschen spielbarer zu gestalten.
Gefundene Werte in SAVEGAMx.CK4 :
Filepos Bedeutung
-------------------------------------------------------
ab $8 : Name des Spielstandes (Nullterminiert)
$60/$61 : Punkte (Int?)
$68 : Anzahl der Schüsse
$6A : Anzahl der Tropfen
$6C : Scheint was mit Items zu tun zu haben
$6E : Anzahl der geretteten
$70 : Roter Schlüssel gefunden? (=1, wenn ja)
$72 : dito, gelber Schlüssel
$74 : dito, blauer Schlüssel
$76 : dito, grüner Schlüssel
$7A : Anzahl der Leben
$7C : Level (1 : Easy, 2 : Normal, 3 : Hard)
Wer mehr rauskriegt, möge doch bitte das Programm ergänzen und
wieder in die MB1 uploaden, damit ich davon auch profitiere
*)
uses crt;
type bfile = file of byte;
var f : bfile;
name : string;
function getbyte (var f : bfile;position : integer) : byte;
var b : byte;
begin
seek (f,position);
read (f,b);
getbyte:=b;
end;
procedure display;
(* Ausgeben der enthaltenen Informationen und ggf. patchen *)
var b1,b2 : byte;
pts : word;
ch : char;
begin
assign (f,name);
{$I-} reset (f); {$I+}
if ioresult<>0 then
begin
writeln ('Konnte '+name+' nicht öffnen!');
exit;
end;
seek (f,8);
write ('Titel : ');
repeat
read (f,b1);
if b1<>0 then
write (chr(b1));
until b1=0;
writeln;
seek (f,$7C);
read (f,b1);
write ('Level : ');
case b1 of
1 : writeln ('Easy');
2 : writeln ('Normal');
3 : writeln ('Hard');
else writeln ('Unbekannt');
end;
pts:=getbyte (f,$60)+(256*getbyte (f,$61));
writeln ('Punkte : ',pts);
writeln ('Leben : ',getbyte (f,$7A));
writeln ('Shots : ',getbyte (f,$68));
writeln ('Tropfen: ',getbyte (f,$6A));
writeln ('Saved : ',getbyte (f,$6E));
write ('Schlüssel: ');
if getbyte (f,$70)=1 then
write ('Rot ');
if getbyte (f,$72)=1 then
write ('Gelb ');
if getbyte (f,$74)=1 then
write ('Blau ');
if getbyte (f,$76)=1 then
writeln ('Grün');
writeln;
write ('Patch (J/N) : ');
ch:=upcase(readkey);
if ch='J' then
begin
writeln;
b1:=255;
writeln ('Patche 255 Leben, 255 Shots und alle Schlüssel');
seek (f,$7A); write (f,b1); (* Anz. Leben *)
seek (f,$68); write (f,b1); (* Anz. Schüsse *)
b1:=1;
seek (f,$70); write (f,b1); (* Roter Schlüssel *)
seek (f,$72); write (f,b1); (* Gelber " *)
seek (f,$74); write (f,b1); (* Blauer " *)
seek (f,$76); write (f,b1); (* Grüner " *)
end;
close (f);
end;
begin
writeln ('KEEN4PATCH - Daniel Tietze');
write ('Nummer der Spielstanddatei (z.B. 0 für SAVEGAM0.CK4) : ');
readln (name);
name:='SAVEGAM'+name+'.CK4';
display;
end.