home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Best of Select: Games 9
/
CD_1.iso
/
wads
/
doom
/
lmp.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1995-08-22
|
7KB
|
214 lines
uses crt,extras;
const
desc:array [1..13] of string=
(('1: Version '),
('2: Skill level (0-4)'),
('3: Episode (always 1 in Doom 2)'),
('4: Map# (1-9 Doom 1-32 Doom 2)'),
('5: Mode (0=single or coop 1=deathmatch 2=altdeath)'),
('6: Respawn (0=no else yes)'),
('7: Fast (0=no else yes)'),
('8: Nomonsters (0=no else yes)'),
('9: Viewpoint (0-3)'),
('10: Player 1 present (0=no 1=yes)'),
('11: Player 2 present (0=no 1=yes)'),
('12: Player 3 present (0=no 1=yes)'),
('13: Player 4 present (0=no 1=yes)'));
desc2:array[1..8] of string=
(('1: Skill level (0-4)'),
('2: Episode (always 1 in Doom 2)'),
('3: Map# (1-9 Doom 1-32 Doom 2)'),
('4: Player 1 present (0=no 1=yes)'),
('5: Player 2 present (0=no 1=yes)'),
('6: Player 3 present (0=no 1=yes)'),
('7: Player 4 present (0=no 1=yes)'),
('8 Version = 1.2 and before'));
var
inlmp,outlmp:text;
i,ln:integer;
FromF, ToF: file;
NumRead, NumWritten: Word;
buf: array[1..2048] of Char;
num,new,bytenum,ver:byte;
done,fileexists:boolean;
vers:string;
procedure usage;
begin
clrscr;
writeln(center('Lmp fiddler 1.0 by Ryan Robinson'));
writeln;
if not fileexists then writeln((paramstr(1)+'.lmp'),' not found!');
if (paramcount <> 0) and (paramcount <> 2) then writeln('Invalid parameter');
writeln('Usage: lmp <source file> <target file or -v to view>');
writeln('Filenames should not have an extension.');
writeln('An lmp extension is assumed');
halt;
end;
procedure change;
begin
Write ('Which Number? ');
Readln (num);
if (num < 0) or (num >= 14) then exit;
if (ord(buf[1]) >= 104) and (Num=1) then
begin
repeat
write('Which version? (10#=first decimal) > ');
readln(ver);
until (ver<=109) and (ver>=100);
if ver >= 104 then
begin
if not yes('Are you sure? ') then exit;
buf[1]:=chr(ver);
end
else
begin
if not yes('Are you sure? ') then exit;
Writeln('Converting...');
buf[1]:=buf[2];
buf[2]:=buf[3];
buf[3]:=buf[4];
buf[4]:=buf[10];
buf[5]:=buf[11];
buf[6]:=buf[12];
buf[7]:=buf[13];
buf[8]:=#0;
buf[9]:=#0;
buf[10]:=#0;
buf[11]:=#0;
buf[12]:=#0;
buf[13]:=#0;
exit;
end;
end
else
Begin
if num=8 then
begin
writeln(desc2[8]);
repeat
write('Version? (10#=first decimal) ');
readln(ver);
until (ver<=109) and (ver>=100);
if (ver<104) then
begin
Writeln('Before 1.4 beta, version didn''t matter!');
writeln('No need to do anything. Press a key');
repeat until keypressed;
exit;
end
else
begin
if not yes('Are you sure? ') then exit;
writeln('Converting...');
buf[13]:=buf[7];
buf[12]:=buf[6];
buf[11]:=buf[5];
buf[10]:=buf[4];
buf[9]:=chr(0);
buf[8]:=chr(0);
buf[7]:=chr(0);
buf[6]:=chr(0);
buf[5]:=chr(0);
buf[4]:=buf[3];
buf[3]:=buf[2];
buf[2]:=buf[1];
buf[1]:=chr(ver);
exit;
end;
end;
writeln;
if (ord(buf[1]) >= 104) then
writeln(desc[num],' = ',ord(buf[num]))
else
writeln(desc2[num],' = ',ord(buf[num]));
write ('New Setting? ');
readln(new);
if yes('Correct? ') then buf[num]:=chr(new);
End;
end;
begin {main program}
if paramcount<>2 then usage;
ln:=0;
fileexists:=exist(paramstr(1)+'.lmp');
if not fileexists then usage;
assign(FromF, (ParamStr(1)+'.lmp'));
Reset(FromF, 1);
if (paramstr(2))<>'-v' then
begin
Assign(ToF, (ParamStr(2)+'.lmp'));
Rewrite(ToF, 1);
end;
repeat
begin;
ln:=ln+1;
BlockRead(FromF,buf, SizeOf(buf),NumRead);
if ln=1 then
begin
repeat
begin
clrscr;
writeln(center('Lmp fiddler 1.0 by Ryan Robinson'));
writeln;
writeln((paramstr(1)+'.lmp'));
writeln(repeatchar('=',length((paramstr(1)+'.lmp'))));
if (ord(buf[1]) >= 100) and (ord(buf[1]) <= 109) then
begin
for i:=1 to 13 do
begin
write(desc[i],' = ');
case i of
1:
begin
writeln('1.',((ord(buf[1]))-100));
end
else writeln(ord(buf[i]))
end{case}
end;
end
else if ord(buf[1]) <= 4 then
begin
for i:=1 to 8 do
begin
if i=8 then writeln(desc2[i])
else write(desc2[i]);
if i <> 8 then write(' = ',ord(buf[i]))
end;
end
else
begin
writeln('Invalid Demo File!');
halt;
end;
if (paramstr(2)='-v') then halt;
done:=not(yes('Change settings? '));
if done=false then
begin
ver:=ord(buf[1]);
change;
end
end
until done=true;
WriteLn('Copying ', FileSize(FromF),' bytes...');
Write((paramstr(1)+'.lmp'),'==>',(paramstr(2)+'.lmp '));
end;
BlockWrite(ToF,buf,NumRead,NumWritten);
end
until (NumRead = 0) or (NumWritten <> NumRead);
if filesize(fromf)=filesize(tof) then writeln('OK')
else
if filesize(fromf)=(filesize(tof)+6) then writeln('OK')
else writeln('Error! File sizes do not match!');
Close(FromF);
Close(ToF);
end.