Created
June 17, 2021 22:01
-
-
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{$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