REM Acorn Invaders REM Squished by MH's BASIC cruncher v1.30 16/9/89 On 02 Jan 2008 ONERRORREPORT:PRINT" at line ";ERL:END aa%=FALSE:ba%=TRUE:ca%=0:DIMa$(10),a%(10):DIMb%(10):SYS"OS_SWINumberFromString",,"OS_SpriteOp"TO`%:da%=FNk(".Resources.Gfx0"):da%+=256:DIML% da%:!L%=da%:L%!4=0:L%!8=16:L%!12=16:f$=".Resources.Gfx0" IFFNe(f$)<>1THENERROR255,"File Missing!!" SYS`%,256+10,L%,f$:SYS`%,256+17,L%:IFFNe(".Resources.HiTable")<>1THEN IFNOTFNlTHENba%=FALSE ELSE:PROCj ENDIF c%=0:d%=4:e%=8:h%=12:z%=16:A%=20:q%=24:S%=28:ea%=32:fa%=36:ga%=40:ha%=44:ia%=48:ja%=16:ka%=20:la%=24:v%=28:G%=32:T%=ea%:ma%=fa%:DIMb% 36,C% 52:MODE28:OFF:PROCg:b%!v%=FNa(8,1):b%!G%=FNa(8,2)+7:C%!e%=FNa(6,1):C%!h%=FNa(6,2):C%!T%=b%!h%-50:C%!ma%=30 REPEAT:CLS:aa%=FNm:IFNOTaa%THENCLS:PROCk UNTILaa%:CLS:PROCh("GOODBYE!!!",10):END DEFFNm:LOCALi%,H%,J%,j%,o%,a$,x%,a%,B%,M%:LOCALU%,t%,y%,s$:DIMH% 16,J% 16,j% 16:DIMa% 16,B% 16:H%!e%=FNa(100,1):H%!h%=FNa(40,2):H%!c%=FNd(H%,b%):H%!d%=800:J%!e%=FNa(150,1):J%!h%=FNa(40,2):J%!c%=FNd(J%,b%):J%!d%=H%!d%-J%!h% j%!e%=630:j%!h%=500:j%!c%=FNd(j%,b%):j%!d%=200:a%!e%=FNa(40,1):a%!h%=FNa(20,2):a%!c%=j%!c%+150:a%!d%=(j%!d%+j%!h%)-160:B%!e%=FNa(20,1):B%!h%=FNa(20,2):B%!c%=j%!c%+150+FNd(B%,a%):M%=FNf(B%,16):U%=FNf(B%,16) B%!d%=j%!d%+100:M%!d%=B%!d%+B%!h%+40:U%!d%=M%!d%+M%!h%+40:PROCd(C%!T%):PROCd(C%!ma%):FORi%=0-H%!e%TOH%!c%STEP5:PROCa("space",i%,H%!d%):PROCe(1):NEXTi%:FORi%=b%!e%TOJ%!c%STEP-5:PROCa("invaders",i%,J%!d%):PROCe(1):NEXTi%:a$="PRESS SPACE TO PLAY" o%=LEN(a$)*b%!v%:y%=170:PROCb(FNb(o%,b%!e%),y%,a$,11):a$="OR Q TO QUIT":o%=LEN(a$)*b%!v%:y%-=b%!G%:PROCb(FNb(o%,b%!e%),y%,a$,11):WHILENOTINKEY(-99)ANDNOTINKEY(-17)ANDNOTINKEY(-82):PROCc(j%):a$="SCORE ADVANCE":o%=LEN(a$)*b%!v%:x%=j%!c%+FNb(o%,j%!e%):y%=j%!d%+j%!h%-20 PROCb(x%,y%,a$,0):a$="TABLE":y%-=b%!G%:o%=LEN(a$)*b%!v%:x%=j%!c%+FNb(o%,j%!e%):PROCb(x%,y%,a$,0):x%=a%!c%+a%!e%+10:PROCa("saucer_0",a%!c%,a%!d%):PROCb(x%,a%!d%+10,"= 500 POINTS !",0):PROCa("inv_3",U%!c%,U%!d%):PROCb(x%,U%!d%+20,"= 100 POINTS !",0) PROCa("inv_2",M%!c%,M%!d%):PROCb(x%,M%!d%+20,"= 75 POINTS !",0):PROCa("inv_1",B%!c%,B%!d%):PROCb(x%,B%!d%+20,"= 50 POINTS !",0):t%=TIME+750:REPEAT:UNTILTIME=t%ORINKEY(-17)ORINKEY(-99):IFINKEY(-17)THEN=TRUE IFINKEY(-99)THEN=FALSE IFINKEY(-82)THENPROCf PROCc(j%):a$="TODAY'S":IFba%THENa$="ALL TIME" o%=LEN(a$)*b%!v%:x%=j%!c%+FNb(o%,j%!e%):y%=j%!d%+j%!h%-20:PROCb(x%,y%,a$,0):a$="HI SCORES":y%-=b%!G%:o%=LEN(a$)*b%!v%:x%=j%!c%+FNb(o%,j%!e%):PROCb(x%,y%,a$,0):y%=(j%!d%+j%!h%)-100:a$=" POS."+STRING$(21," ")+"SCORE."+STRING$(3," ")+"RACK." o%=LEN(a$)*b%!v%:x%=j%!c%+FNb(o%,j%!e%):PROCb(x%,y%,a$,0):y%-=2*b%!G%:FORi%=1TO10:IFi%<10THEN a$=" "+STR$(i%)+". " ELSE:a$=" "+STR$(i%)+". " ENDIF s$=FNh(a$(i%)):a$+=FNc(s$,8," ",FALSE):a$+=" .... ":a$+=FNi(STR$(a%(i%)),10):a$+=" ... "+FNi(STR$(b%(i%)),3):o%=LEN(a$)*b%!v%:x%=j%!c%+FNb(o%,j%!e%):PROCb(x%,y%-(i%*(b%!G%+5)),a$,0):NEXTi%:t%=TIME+750:REPEAT:UNTILTIME=t%ORINKEY(-17)ORINKEY(-99) IFINKEY(-17)THEN=TRUE IFINKEY(-99)THEN=FALSE IFINKEY(-82)THENPROCf ENDWHILE:IFINKEY(-17)THEN=TRUE =FALSE DEFPROCk:LOCALk%,m%,a%,g%,D%:LOCALN%:LOCALV%,na%,O%,oa%:LOCALW%,o%,a$,x%,y%:DIMk% 52,m% 52,a% 52,g% 52,N% 16,c%(10,6):DIMD% 12:V%=0:X%=4:na%=8:O%=ea%:oa%=fa%:p%=ga%:Y%=ha%:pa%=ia%:k%!e%=FNa(30,1):k%!h%=FNa(15,2):k%!c%=FNd(k%,b%) k%!d%=50:k%!A%=6:k%!z%=k%!A%:m%!e%=FNa(5,1):m%!h%=FNa(20,2):m%!q%=FALSE:m%!A%=10:a%!e%=FNa(40,1):a%!h%=FNa(20,2):a%!d%=C%!T%-(10+a%!h%):a%!A%=5:a%!q%=FALSE:N%!e%=FNa(20,1):N%!h%=FNa(20,2):g%!oa%=FNa(20,1):g%!Y%=10:g%!pa%=6 D%!na%=1:D%!X%=0:D%!V%=3:PROCd(C%!T%):PROCd(C%!ma%):PROCl(0,a%(1),D%!V%,D%!na%):PROCm:PROCi:PROCa("base",k%!c%,k%!d%):REPEAT:W%=0:IFINKEY(-74)THENPROCn(k%!c%,k%!d%) IFINKEY(-98)THENPROCo:W%=1 IFINKEY(-67)THENPROCp:W%=2 IFINKEY(-82)THENPROCf IFINKEY(-17)THEND%!V%=0 IFW%>0THEN IFW%<=2THEN k%!c%+=k%!z%:PROCa("base",k%!c%,k%!d%) ENDIF ENDIF PROCq:PROCr:PROCs:UNTILD%!V%=0:PROCh("GAME OVER!!!",11):PROCe(750):ENDPROC DEFPROCo:IFk%!c%<=0THENk%!c%=0:ENDPROC k%!z%=0-k%!A%:ENDPROC DEFPROCp:IFk%!c%>=b%!e%-k%!e%THEN k%!c%=b%!e%-k%!e%:ENDPROC ELSE:k%!z%=0+k%!A% ENDIF ENDPROC DEFPROCn(x%,y%):IFNOTm%!q%THEN m%!q%=TRUE:m%!c%=x%+(k%!e%/2):m%!d%=y%+k%!h% ENDIF ENDPROC DEFPROCf:REPEAT:UNTILNOTINKEY(-82):OSCLI"ScreenSave .Dump"+STR$(ca%):ca%+=1:ENDPROC DEFPROCq:LOCALqa%,ra%:qa%=ea%:IFm%!q%THEN m%!qa%=FALSE:IFm%!d%>=C%!T%-m%!h%THEN m%!q%=FALSE:m%!qa%=TRUE ENDIF IFm%!qa%THEN ra%=FNf(m%,52):ra%!d%-=2:PROCc(ra%) ELSE:PROCa("shell",m%!c%,m%!d%) ENDIF m%!d%+=m%!A% ENDIF ENDPROC DEFPROCr:LOCALK%,p%,R%:K%=ea%:p%=fa%:R%=ga%:IFNOTa%!q%THEN IFFNg(3)ANDFNg(1)THEN a%!q%=TRUE:a%!S%=FALSE:a%!R%=0:IFFNg(50)THEN a%!z%=0-a%!A%:a%!c%=b%!e% ELSE:a%!z%=0+a%!A%:a%!c%=0-a%!e% ENDIF ENDIF ELSE:a%!R%+=1:a%!p%+=1:IFa%!c%<=0-a%!e%ANDSGN(a%!z%)=-1THEN a%!K%=FALSE:a%!q%=FALSE:a%!p%=0:ENDPROC ENDIF IFa%!c%>b%!e%ANDSGN(a%!z%)=1THEN a%!K%=FALSE:a%!q%=FALSE:a%!p%=0:ENDPROC ENDIF IFNOTa%!S%THEN IFFNj(m%,a%)THEN PROCc(m%):PROCa("saucer_2",a%!c%,a%!d%):a%!K%=a%!p%:a%!S%=TRUE:m%!q%=FALSE:PROCt(500) ENDIF ELSE:IFFNj(m%,a%)THEN PROCc(m%):m%!q%=FALSE ENDIF ENDIF IFNOTa%!S%THEN IFa%!R%>=100THENa%!R%=0 IFa%!R%<50THEN PROCa("saucer_0",a%!c%,a%!d%) ELSE:PROCa("saucer_1",a%!c%,a%!d%) ENDIF a%!c%+=a%!z% ELSE:IFa%!p%>=a%!K%+200THEN PROCc(a%):a%!q%=FALSE:a%!K%=FALSE:a%!p%=0 ELSE:IFa%!p%>=a%!K%+175THEN PROCa("saucer_5",a%!c%,a%!d%) ELSE:IFa%!p%>=a%!K%+150THEN PROCa("saucer_4",a%!c%,a%!d%) ELSE:IFa%!p%>=a%!K%+100THEN PROCa("saucer_3",a%!c%,a%!d%) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC DEFPROCs:LOCALp%,sa%:p%=ga%:g%!p%+=1:IFg%!p%MOD5=0THENPROCu IFg%!p%>10000THENg%!p%=0 sa%=g%!c%+g%!e%:IFsa%>=b%!e%THENg%!z%=0-g%!A% IFg%!c%<=0THENg%!z%=0+g%!A% g%!c%+=g%!z%:PROCi:ENDPROC DEFFNl:LOCALi%,u%,n$:FORi%=1TO10:IFi%MOD2=0THENn$="Software"ELSEn$="DynaByte" a$(i%)=FNh(n$):a%(i%)=(11-i%)*1000:b%(i%)=0:NEXTi%:u%=OPENOUT".Resources.HiTable":IFu%=0THEN=FALSE FORi%=1TO10:PRINT#u%,a$(i%),a%(i%):PRINT#u%,b%(i%):NEXTi%:CLOSE#u%:=TRUE DEFPROCj:LOCALi%,u%:u%=OPENIN".Resources.HiTable":FORi%=1TO10:INPUT#u%,a$(i%),a%(i%):INPUT#u%,b%(i%):NEXTi%:CLOSE#u%:ENDPROC DEFPROCx:LOCALi%,u%:u%=OPENOUT".Resources.HiTable":FORi%=1TO10:PRINT#u%,a$(i%),a%(i%):PRINT#u%,b%(i%):NEXTi%:CLOSE#u%:ENDPROC DEFPROCl(ta%,ua%,l%,r%):LOCALx%,a$:a$="SCORE :-"+FNc(STR$(ta%),10," ",TRUE):PROCb(0,b%!h%-b%!G%,a$,0):a$="HI SCORE :-":a$+=FNc(STR$(ua%),10," ",TRUE):x%=b%!e%-LEN(a$)*b%!v%:PROCb(x%,b%!h%-b%!G%,a$,0):PROCv(l%):PROCw(r%):ENDPROC DEFPROCv(va%):LOCALa$:PROCa("base",0,0):a$=" = "+STR$(va%):PROCb(k%!e%,0,a$,0):ENDPROC DEFPROCw(va%):LOCALx%,a$:a$="RACK :-"+FNc(STR$(va%),3,"0",TRUE):x%=b%!e%-LEN(a$)*b%!v%:PROCb(x%,0,a$,0):ENDPROC DEFPROCt(wa%):LOCALx%,a$:D%!X%+=wa%:a$="SCORE :-"+FNc(STR$(D%!X%),10," ",TRUE):PROCb(0,b%!h%-b%!G%,a$,0):IFD%!X%>a%(1)THEN a$="HI SCORE :-":a$+=FNc(STR$(D%!X%),10," ",TRUE):x%=b%!e%-LEN(a$)*b%!v%:PROCb(x%,b%!h%-b%!G%,a$,0) ENDIF ENDPROC DEFPROCm:LOCALE%,I%,s%:g%!c%=50:g%!d%=550:g%!O%=0:g%!S%=0:g%!A%=3:g%!z%=g%!A%:s%=(g%!Y%*N%!e%)+((g%!Y%-1)*g%!oa%):g%!e%=s%:g%!h%=g%!pa%*N%!h%:FORI%=1TOg%!Y%:FORE%=1TOg%!pa%:c%(I%,E%)=((E%+1)/2)+(g%!O%*10):NEXTE%:NEXTI%:ENDPROC DEFPROCi:LOCALE%,I%,x%,y%:FORI%=1TOg%!Y%:x%=g%!c%+((I%-1)*(N%!e%+g%!oa%)):FORE%=1TOg%!pa%:y%=g%!d%+((E%-1)*N%!h%):IFc%(I%,E%)>0THEN c%(I%,E%)=((E%+1)/2)+(g%!O%*10) ENDIF PROCa("inv_"+STR$(c%(I%,E%)),x%,y%):NEXTE%:NEXTI%:ENDPROC DEFPROCu:IFg%!O%=0THEN g%!O%=1 ELSE:g%!O%=0 ENDIF ENDPROC DEFPROCy:ENDPROC DEFPROCz:ENDPROC DEFPROCd(d%):LOCALi%,xa%:xa%=b%!e%/C%!e%:FORi%=1TOxa%+1:PROCa("rail",(i%-1)*C%!e%,d%):NEXTi%:ENDPROC DEFPROCg:LOCALw%:DIMw% 20:w%!0=4:w%!4=5:w%!8=11:w%!12=12:w%!16=-1:SYS"OS_ReadVduVariables",w%,w%:b%!ja%=w%!0:b%!ka%=w%!4:b%!e%=(w%!8)+1<b%!la%THENPROCg CASEya%OF WHEN1:Z%=P%<>b%!ja% WHEN4:Z%=P%>>b%!ka% OTHERWISE:ERROR255,"Unknown FNconv_units() operation : "+STR$(ya%) ENDCASE =Z% DEFPROCb(x%,y%,a$,Aa%):LOCALi%,Ba%:Ba%=b%!v%:FORi%=1TOLEN(a$):PROCa(STR$(ASC(MID$(a$,i%,1))),x%+((i%-1)*Ba%),y%):IFAa%>0THENPROCe(Aa%) NEXTi%:ENDPROC DEFFNj(F%,Q%):LOCALCa%,Da%,Ea%,Fa%:Ea%=FALSE:Fa%=FALSE:IFF%!q%ANDQ%!q%THEN Ca%=Q%!c%+Q%!e%:Da%=Q%!d%+Q%!h%:IFF%!c%>=Q%!c%ANDF%!c%<=Ca%THENEa%=TRUE IFF%!d%>=Q%!d%ANDF%!d%<=Da%THENFa%=TRUE ENDIF =Ea%ANDFa% DEFFNf(F%,P%):LOCALGa%,Ha%:DIMHa% P%:FORGa%=0TOP%-4STEP4:Ha%!Ga%=F%!Ga%:NEXTGa%:=Ha% DEFPROCc(F%):GCOL0,0TINT0:RECTANGLEFILLF%!c%,F%!d%,F%!e%,F%!h%:ENDPROC DEFFNb(Ia%,b%):=(b%/2)-(Ia%/2) DEFPROCh(a$,Ja%):LOCALo%,y%:o%=LEN(a$)*b%!v%:y%=(b%!h%/2)-(b%!G%/2):PROCb(FNb(o%,b%!e%),y%,a$,Ja%):ENDPROC DEFFNd(Ka%,La%):=(La%!e%/2)-(Ka%!e%/2) DEFPROCa(e$,x%,y%):LOCALMa%:SYS`%,256+24,L%,e$TO,,Ma%:SYS`%,512+34,L%,Ma%,x%,y%,0:ENDPROC DEFFNg(n%):LOCALNa%:Na%=RND(100):=Na%<=n% DEFFNh(a$):LOCALi%,c$:FORi%=1TOLEN(a$):c$+=CHR$(ASC(MID$(a$,i%,1))EOR131):NEXTi%:=c$ DEFPROCe(n%):LOCALt%:t%=TIME+n%:REPEAT:UNTILTIME>=t%:ENDPROC DEFFNc(a$,_%,d$,Oa%):LOCALPa%,b$:Pa%=_%-LEN(a$):IFPa%<=0THEN b$=LEFT$(a$,_%) ELSE:IFOa%THEN b$=STRING$(_%,d$):RIGHT$(b$,LEN(a$))=a$ ELSE:b$=a$+STRING$(Pa%,d$) ENDIF ENDIF =b$ DEFFNi(a$,_%):LOCALb$:b$=STRING$(_%," "):RIGHT$(b$,LEN(a$))=a$:=b$ DEFFNe(f$):LOCALf%:SYS"XOS_File",17,f$TOf%:=f% DEFFNk(f$):LOCALs%:IFFNe(f$)=0THEN=0 SYS"XOS_File",5,f$TO,,,,s%:=s%