Skip to content

Instantly share code, notes, and snippets.

@ssg
Created June 17, 2021 22:01
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ssg/f00cabc543ec8dc869aea11df424625d to your computer and use it in GitHub Desktop.
Save ssg/f00cabc543ec8dc869aea11df424625d to your computer and use it in GitHub Desktop.
Street Fighter II Cracktro - 1993 - This is probably the first intro I coded on PC as my coding looks really messy and basic.
{$M $4000,0,200000}
uses crt {Screen handler}
,dos {Memory handler}
,ssgstr {String handler}
,ssgbios {Keyboard & Screen handler}
,ssgcel {CEL handler}
,ssgpal; {Palette handler}
const game='Street Fighter II';
cracker='SSG';
version='4.5';
vseg=$a000; {320x200x256 buffer segment}
var buf:^buftype;
pal:^paltype;
count,busy:word;
oldhandler:procedure;
delta:shortint;
y,yd:integer;
blank:string;
rgb:byte;
procedure celdata;external;
{$L celdata.obj}
procedure eyeballs;external;
{$L eyeballs.obj}
procedure DoneTitle;
var rgb,n,r,g,b:byte;
pad:word;
begin
for rgb:=63 downto 0 do begin
for n:=0 to 255 do begin
pad:=n*3;
r:=pal^[pad];g:=pal^[pad+1];b:=pal^[pad+2];
if rgb<r then r:=rgb;
if rgb<g then g:=rgb;
if rgb<b then b:=rgb;
setrgb(n,r,g,b);
end;
delay(100);
end;
end;
procedure alone;
var ch:char;
xs,ys,csz:word;
begin
if keypressed then begin
ch:=readkey;
setintvec(28,@oldhandler);
donetitle;
setvideomode($13);
buf:=ptr(seg(eyeballs),ofs(eyeballs));
setcelpal(@buf^);
getcelsettings(xs,ys,csz,@buf^);
putcel((320-xs) div 2,(200-ys) div 2,@buf^);
delay(500);
gotext;
textcolor(7);
writeln('Have a nice INT 21h');
delay(1000);
writeln('(Function 4Bh)');
halt;
end;
end;
procedure guybrush(st:string;xt:integer);
begin
gotoxy(1,y);
write(blank);
y:=y+yd;
if y>15 then yd:=-1;
if y<12 then yd:=1;
gotoxy(1,y);
write(copy(st,xt,40));
end;
procedure flash(s:string);
var x,c,sp,l:integer;
ch:char;
begin
l:=length(s);
sp:=(40-l) div 2;
s:=multistr(' ',sp)+s+multistr(' ',sp);
s:=multistr(' ',39)+s+multistr(' ',20);
textcolor(1);
for x:=1 to 40 do guybrush(s,x);
alone;
delay(2500);
alone;
for x:=40 to 100 do guybrush(s,x);
alone;
delay(100);
end;
{$F+}
procedure myhandler;interrupt;
var n:shortint;
begin
move(buf^[32+count],pal^,count);
move(buf^[32],pal^[count],sizeof(pal^)-count);
for n:=0 to 2 do pal^[n]:=0;
for n:=3 to 5 do pal^[n]:=63;
setpal(pal^);
count:=count+delta;
if count>=450 then delta:=-3;
if count=0 then delta:=3;
end;
{$F-}
procedure InitTitle;
var rgb,n,r,g,b:byte;
pad:word;
begin
for n:=0 to 255 do setrgb(n,0,0,0);
putcel(8,0,@buf^);
for rgb:=0 to 63 do begin
for n:=0 to 255 do begin
r:=rgb;g:=rgb;b:=rgb;
pad:=n*3;
if r>pal^[pad] then r:=pal^[pad];
if g>pal^[pad+1] then g:=pal^[pad+1];
if b>pal^[pad+2] then b:=pal^[pad+2];
setrgb(n,r,g,b);
end;
delay(100);
end;
end;
begin
for rgb:=40 downto 0 do begin setrgb(7,rgb,rgb,rgb);delay(100);end;
y:=11;yd:=1;
count:=0;delta:=3;
checkbreak:=false; {No Break(s) Available}
directvideo:=false; {BIOS calls enabled for true addressing}
blank:=multistr(' ',40);
inittitle;
getintvec(28,@oldhandler);
setintvec(28,addr(myhandler));
repeat
flash('Gen-Sys & SSG Presents');
flash(game);
flash('Cracked by '+cracker);
flash('Intro by SSG');
flash('Intro Version '+version);
flash('Coded in Turbo Pascal 6.0');
flash('Greetings to');
flash('Fatalica');
flash('Stranger');
flash('KayaSoft');
flash('Sunflash');
flash('Kemal''s System');
flash('A.S.T');
flash('Zombie Eren');
flash('D53 at TRANAVM1');
flash('Erhan & His Workgroup');
delay(500);
flash('Didn''t you bored?');
flash('Runtime error 200 at 0:125');
delay(500);
flash('System Halted?');
flash('Hard Disk Destroyed?');
flash('ROM X-Rayed?');
flash('RAM Wiped?');
flash('Drive A: Damaged?');
flash('General failure?');
flash('Sector not found?');
flash('Monitor interlaced?');
flash('SoundBlaster Blasted?');
flash('COM1 parity error?');
flash('Keyboard crashed?');
flash('Press F1 to resume?');
flash('Reset Button stuck?');
flash('Turbo Button jammed?');
flash('Cooling Fans frozen?');
flash('Motherboard not found?');
flash('Video driver locked?');
flash('CD-Player gone to hell?');
flash('Speaker exploded?');
flash('ModPlayer deleted?');
flash('Your car stolen?');
flash('A Three Headed Monkey?');
flash('SpeedDisk speeded your disk?');
flash('Birds are chirping?');
flash('Cows are giving milk?');
flash('Divide overflow?');
flash('Stack overflow?');
flash('Heap overflow?');
flash('8087 emulator not loaded?');
flash('Weitek coprocessor absent?');
flash('This intro fucked your brain?');
flash('Global color table invalid?');
flash('Syntax error?');
flash('AT BUS too slow for CPU?');
flash('Out of memory?');
flash('Insufficient disk space?');
flash('Good sector is now bad?');
flash('Cylinder 0,Track 0,Sector 0?');
flash('Clock cycle too fast?');
flash('Illegal function call?');
flash('Who you gonna call?');
flash('Floppy controller out of control?');
flash('CMOS battery empty?');
flash('Micro Channels filled with water?');
flash('Baby case detected in bedroom?');
flash('Intel OverDrive overdriven?');
flash('Flags escaped from stack?');
flash('Overlay manager not installed?');
flash('Overlay assistant not installed?');
flash('Overlay 2nd assistant director?');
flash('Supervisor?');
flash('Producer?');
flash('Executive Producer?');
flash('2nd Assistant Executive Supervisor?');
flash('and others?');
flash('I think you''ll not be happy anymore?');
flash('HAPPY_H and HAPPY_L regs destroyed?');
flash('Why don''t you answer?');
flash('Are you afraid of intros?');
flash('Oh, I see.');
flash('But there''s nothing to afraid of..');
flash('except scrolling texts ,');
flash('moving color palettes,');
flash('Bulgy eyes,');
flash('Greeting messages,');
flash('Logos,');
flash('Coding informations');
flash('Closing screen,');
flash('Graphic mode,');
flash('Digitized sound,');
flash('Digitized pictures,');
flash('Texts explaining why intro is horror?');
flash('I think the list is continued...');
flash('I will repeat everything until');
flash('You press any key...');
flash('Bye');
until false;
end.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment