home *** CD-ROM | disk | FTP | other *** search
- { ────────────────────────────────────────────────────────────────────────
- SHADOW WARRIOR 3DFX PATCHED SEEKER!
- (c)1998 by Pope-X
-
- Homepage : http://huizen.dds.nl/~dbg
- Email : dbg@dds.nl
- CopyRight : U can distribute and use this aslong as u don't ask
- any money for the programs coded with this source!
- Warrenty : I don't Give ANY. if it doesn't work for u then its to bad!
- Note : This is NOT illegal!
- ──────────────────────────────────────────────────────────────────────── }
-
- { ────────────────────────────────────────────────────────────────────────
- I Have made this because shadowwarrior did not work on a voodoo rush!.
- the basic theory is to replace all JE's with JNE's and all JNE's with
- JE's (assember speaking). offcause these are $74 and $75. so i came up
- with the following program that would patch a $74 and $75 to the oposite
- and then run the program.. this program then always reports "Only Voodoo
- graphics supported". so i searched the screeen for this string. and if
- it was not there then i would dump the intyre screen to a logfile.
- i've runned the program.. and when i woke up.. shadow warrior was
- RUNNING!.. i quited.. looked into my logfile and yes there it was on the
- position 1350385.. it had runned sw already for about 10.000 times..!
- WOW!!!!!! ohwel..! now it works! voodoo rush rules the world! and
- shame on the 3dfx compagny for not making it work in the firstplace..
- because it runs pritty smoooth on my rush!
-
- oh there is one sideeffect!.. once patched.. it doesnt work on a 3dfx!
- ──────────────────────────────────────────────────────────────────────── }
- uses dos,crt,rafdradd;
- const letter:array[1..3,0..10] of string[7]=(
- ('┌╦═══╦┐',' ═╦┐ ','┌════╦┐',' ═══╦┐','┌╗ ╔╕ ','┌╦═══─ ','┌╦═══╦┐','┌════╦┐',' ┌╦═╦┐ ','┌╦═══╦┐',' '),
- ('│║ Θ ║│',' ║│ ','┌╔═══╝┘',' ══╬┐','└╩═╤╬╤╛','└╩═══╦┐','├╠═══╗┐',' ╔╤╝┘','┌╔╩═╩╗┐','└╩═══╬┤',' '),
- ('└╩═══╩┘',' ╩┘ ','└╚════┘','╘═══╩┘',' └╩┘ ','└╩═══╩┘','└╩═══╩┘',' ╝┘ ','└╩═══╩┘','└╩═══╩┘','└╝ '));
-
- procedure showpos(st:string;p:integer);
- var y,x:longint;
- tmpstr:string;
- begin
- st:=comastr(st,3,'.');
- for y:=1 to 3 do
- begin
- tmpstr:='';
- for x:=1 to length(st) do
- case st[x] of
- '0'..'9' :tmpstr:=tmpstr+(letter[y,str2int(st[x])]);
- '.' :tmpstr:=tmpstr+(letter[y,10]);
- end;
- colorwrite(1,p+y,15,0,max('',15)+max(tmpstr,80-15));
- end;
- end;
-
- function getmemstring(regel:integer):string;
- var s:string;
- x:longint;
- begin
- s:='';
- for x:=0 to 78 do addstr(s,char(mem[$b800:(regel*160)+(x*2)]));
- getmemstring:=s;
- end;
-
- var f:file of byte;
- c,d,z:byte;
- times:longint;
- poz:longint;
- starter:file of longint;
- startpos:longint;
- t:text;
- begin
- filemode:=fmreadwrite+fmdenynone;
- clrscr;
- {$I-}
- assign(starter,'starter.dat');
- Reset(starter);
- read(starter,startpos);
- read(starter,times);
- close(starter);
- {$I+}
- if ioresult<>0 then
- begin
- startpos:=230000; {SIZE OF DOS4GW!}
- times:=0;
- end;
-
- assign(f,'sw3dfx.exe');
- reset(f);
- seek(f,startpos);
- repeat
- read(f,c);
- if c in [$75,$74] then
- begin
- inc(times);
- poz:=filepos(f);
- seek(f,poz-1);
- case c of
- $75:d:=$74;
- $74:d:=$75;
- end;
- Write(f,d);
- Close(f);
-
- rewrite(starter);
- startpos:=poz+1;
- write(starter,startpos);
- write(starter,times);
- close(starter);
-
- clrscr;
- showpos(int2str(poz),13);
- showpos(int2str(times),19);
- Exec('sw3dfx.exe');
- showpos(int2str(poz),13);
- showpos(int2str(times),19);
- if (pos('Only Voodoo',getmemstring(0))=0) then
- begin
- {$I-}
- assign(t,'Debug.log');
- append(t);
- {$I+} if ioresult<>0 then Rewrite(t);
- Writeln(t,max('───<'+int2str(poz)+'>'+makestr('─',70),79));
- for z:=0 to 24 do Writeln(t,getmemstring(z));
- close(t);
- end;
- reset(f);
- seek(f,poz-1);
- Write(f,c);
- end;
- until eof(f) or keypressed;
-
- close(f);
- end.