REM Acorn Invaders REM Packed by MH's BASCrunch v1.31c 30/1/08 On 30 Jan 2008 ONERRORREPORT:PRINT" at line ";ERL:END aa%=FALSE:ba%=TRUE:ca%=0:DIMa$(10),a%(10):DIMc%(10):SYS"OS_SWINumberFromString",,"OS_SpriteOp"TO`%:da%=FNl(".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 IFNOTFNmTHENba%=FALSE ELSE:PROCj ENDIF c%=0:d%=4:e%=8:h%=12:B%=16:C%=20:q%=24:T%=28:ea%=32:fa%=36:ga%=40:ha%=44:ia%=48:ja%=16:ka%=20:la%=24:w%=28:H%=32:U%=ea%:ma%=fa%:DIMb% 36,F% 52:MODE28:OFF:PROCg:b%!w%=FNa(8,1):b%!H%=FNa(8,2)+7:F%!e%=FNa(6,1):F%!h%=FNa(6,2):F%!U%=b%!h%-50:F%!ma%=30 REPEAT:CLS:aa%=FNn:IFNOTaa%THENCLS:PROCk UNTILaa%:CLS:PROCh("GOODBYE!!!",10):END DEFFNn:LOCALi%,I%,J%,j%,o%,a$,x%,a%,D%,M%:LOCALV%,t%,y%,s$:DIMI% 16,J% 16,j% 16:DIMa% 16,D% 16:I%!e%=FNa(100,1):I%!h%=FNa(40,2):I%!c%=FNd(I%,b%):I%!d%=800:J%!e%=FNa(150,1):J%!h%=FNa(40,2):J%!c%=FNd(J%,b%):J%!d%=I%!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:D%!e%=FNa(20,1):D%!h%=FNa(20,2):D%!c%=j%!c%+150+FNd(D%,a%):M%=FNf(D%,16):V%=FNf(D%,16) D%!d%=j%!d%+100:M%!d%=D%!d%+D%!h%+40:V%!d%=M%!d%+M%!h%+40:PROCd(F%!U%):PROCd(F%!ma%):FORi%=0-I%!e%TOI%!c%STEP5:PROCa("space",i%,I%!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%!w%:y%=170:PROCb(FNb(o%,b%!e%),y%,a$,11):a$="OR Q TO QUIT":o%=LEN(a$)*b%!w%:y%-=b%!H%:PROCb(FNb(o%,b%!e%),y%,a$,11):WHILENOTINKEY(-99)ANDNOTINKEY(-17)ANDNOTINKEY(-82):PROCc(j%):a$="SCORE ADVANCE":o%=LEN(a$)*b%!w%:x%=j%!c%+FNb(o%,j%!e%):y%=j%!d%+j%!h%-20 PROCb(x%,y%,a$,0):a$="TABLE":y%-=b%!H%:o%=LEN(a$)*b%!w%: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",V%!c%,V%!d%):PROCb(x%,V%!d%+20,"= 100 POINTS !",0) PROCa("inv_2",M%!c%,M%!d%):PROCb(x%,M%!d%+20,"= 75 POINTS !",0):PROCa("inv_1",D%!c%,D%!d%):PROCb(x%,D%!d%+20,"= 50 POINTS !",0):t%=TIME+750:REPEAT:IFINKEY(-82)THENPROCf UNTILTIME=t%ORINKEY(-17)ORINKEY(-99):IFINKEY(-17)THEN=TRUE IFINKEY(-99)THEN=FALSE PROCc(j%):a$="TODAY'S":IFba%THENa$="ALL TIME" o%=LEN(a$)*b%!w%:x%=j%!c%+FNb(o%,j%!e%):y%=j%!d%+j%!h%-20:PROCb(x%,y%,a$,0):a$="HI SCORES":y%-=b%!H%:o%=LEN(a$)*b%!w%: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%!w%:x%=j%!c%+FNb(o%,j%!e%):PROCb(x%,y%,a$,0):y%-=2*b%!H%: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$(c%(i%)),3):o%=LEN(a$)*b%!w%:x%=j%!c%+FNb(o%,j%!e%):PROCb(x%,y%-(i%*(b%!H%+5)),a$,0):NEXTi%:t%=TIME+750:REPEAT:IFINKEY(-82)THENPROCf UNTILTIME=t%ORINKEY(-17)ORINKEY(-99):IFINKEY(-17)THEN=TRUE IFINKEY(-99)THEN=FALSE ENDWHILE:IFINKEY(-17)THEN=TRUE =FALSE DEFPROCk:LOCALk%,m%,a%,g%,z%:LOCALN%:LOCALb%():LOCALW%,na%,Q%,oa%:LOCALpa%,o%,a$,x%,y%:DIMk% 52,m% 52,a% 52,g% 52,N% 16,b%(10,6):DIMz% 16:W%=0:X%=4:na%=8:qa%=12:Q%=ea%:oa%=fa%:p%=ga%:Y%=ha%:ra%=ia%:k%!e%=FNa(30,1):k%!h%=FNa(15,2):k%!c%=FNd(k%,b%) k%!d%=50:k%!C%=6:k%!B%=k%!C%:m%!e%=FNa(5,1):m%!h%=FNa(20,2):m%!q%=FALSE:m%!C%=10:a%!e%=FNa(40,1):a%!h%=FNa(20,2):a%!d%=F%!U%-(10+a%!h%):a%!C%=5:a%!q%=FALSE:a%!ha%=TRUE:N%!e%=FNa(20,1):N%!h%=FNa(20,2) g%!oa%=FNa(20,1):g%!Y%=10:g%!ra%=6:z%!na%=1:z%!X%=0:z%!W%=3:z%!qa%=FALSE:PROCd(F%!U%):PROCd(F%!ma%):PROCl(0,a%(1),z%!W%,z%!na%):PROCm:PROCi:PROCa("base",k%!c%,k%!d%):REPEAT:pa%=FALSE:IFINKEY(-74)THENPROCn(k%!c%,k%!d%) IFINKEY(-98)THENPROCo:pa%=TRUE IFINKEY(-67)THENPROCp:pa%=TRUE IFINKEY(-82)THENPROCf IFINKEY(-17)THENPROCq IFpa%THEN k%!c%+=k%!B%:PROCa("base",k%!c%,k%!d%) ENDIF PROCr:PROCs:PROCt:UNTILz%!W%=0:PROCh("GAME OVER!!!",11):PROCe(750):ENDPROC DEFPROCo:IFk%!c%<=0THEN k%!c%=0 ELSE:k%!B%=0-k%!C% ENDIF ENDPROC DEFPROCp:IFk%!c%>=b%!e%-k%!e%THEN k%!c%=b%!e%-k%!e% ELSE:k%!B%=0+k%!C% 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:z%!W%=0:z%!qa%=TRUE:ENDPROC DEFPROCr:LOCALsa%,ta%:sa%=ea%:IFm%!q%THEN m%!sa%=FALSE:IFm%!d%>=F%!U%-m%!h%THEN m%!q%=FALSE:m%!sa%=TRUE ENDIF IFm%!sa%THEN ta%=FNf(m%,52):ta%!d%-=2:PROCc(ta%) ELSE:PROCa("shell",m%!c%,m%!d%) ENDIF m%!d%+=m%!C% ENDIF ENDPROC DEFPROCs:LOCALK%,p%,R%,S%:K%=ea%:p%=fa%:R%=ga%:S%=ha%:IFNOTa%!q%THEN IFFNg(4)ANDFNg(5)THEN a%!q%=TRUE:a%!T%=FALSE:a%!R%=0:a%!S%=0:IFFNg(50)THEN a%!B%=0-a%!C%:a%!c%=b%!e% ELSE:a%!B%=0+a%!C%:a%!c%=0-a%!e% ENDIF ENDIF ELSE:a%!R%+=1:a%!p%+=1:IFa%!c%<=0-a%!e%ANDSGN(a%!B%)=-1THEN a%!K%=FALSE:a%!q%=FALSE:a%!p%=0:ENDPROC ENDIF IFa%!c%>b%!e%ANDSGN(a%!B%)=1THEN a%!K%=FALSE:a%!q%=FALSE:a%!p%=0:ENDPROC ENDIF IFNOTa%!T%THEN IFFNj(m%,a%)THEN PROCc(m%):PROCa("saucer_2",a%!c%,a%!d%):a%!K%=a%!p%:a%!T%=TRUE:m%!q%=FALSE:PROCu(500) ENDIF ELSE:IFFNj(m%,a%)THEN PROCc(m%):m%!q%=FALSE ENDIF ENDIF IFNOTa%!T%THEN IFa%!R%>=100THENa%!R%=0 IFa%!R%MOD10=0THEN a%!S%=FNk(a%!S%) ENDIF IFa%!S%=0THEN PROCa("saucer_0",a%!c%,a%!d%) ELSE:PROCa("saucer_1",a%!c%,a%!d%) ENDIF a%!c%+=a%!B% ELSE:IFa%!p%>=a%!K%+125THEN PROCc(a%):a%!q%=FALSE:a%!K%=FALSE:a%!p%=0:a%!S%=TRUE ELSE:IFa%!p%>=a%!K%+100THEN PROCa("saucer_5",a%!c%,a%!d%) ELSE:IFa%!p%>=a%!K%+75THEN PROCa("saucer_4",a%!c%,a%!d%) ELSE:IFa%!p%>=a%!K%+50THEN PROCa("saucer_3",a%!c%,a%!d%) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC DEFPROCt:LOCALp%,ua%,va%,u%,E%,x%,y%:p%=ga%:g%!p%+=1:IFg%!p%MOD5=0THENg%!Q%=FNk(g%!Q%) IFg%!p%>10000THENg%!p%=0 ua%=g%!c%+g%!e%:IFua%>=b%!e%THENg%!B%=0-g%!C% IFg%!c%<=0THENg%!B%=0+g%!C% g%!c%+=g%!B%:PROCi:ENDPROC DEFFNm:LOCALi%,v%,n$:FORi%=1TO10:IFi%MOD2=0THENn$="Software"ELSEn$="DynaByte" a$(i%)=FNh(n$):a%(i%)=(11-i%)*1000:c%(i%)=0:NEXTi%:v%=OPENOUT".Resources.HiTable":IFv%=0THEN=FALSE FORi%=1TO10:PRINT#v%,a$(i%),a%(i%):PRINT#v%,c%(i%):NEXTi%:CLOSE#v%:=TRUE DEFPROCj:LOCALi%,v%:v%=OPENIN".Resources.HiTable":FORi%=1TO10:INPUT#v%,a$(i%),a%(i%):INPUT#v%,c%(i%):NEXTi%:CLOSE#v%:ENDPROC DEFPROCx:LOCALi%,v%:v%=OPENOUT".Resources.HiTable":FORi%=1TO10:PRINT#v%,a$(i%),a%(i%):PRINT#v%,c%(i%):NEXTi%:CLOSE#v%:ENDPROC DEFPROCl(wa%,xa%,l%,r%):LOCALx%,a$:a$="SCORE :-"+FNc(STR$(wa%),10," ",TRUE):PROCb(0,b%!h%-b%!H%,a$,0):a$="HI SCORE :-":a$+=FNc(STR$(xa%),10," ",TRUE):x%=b%!e%-LEN(a$)*b%!w%:PROCb(x%,b%!h%-b%!H%,a$,0):PROCv(l%):PROCw(r%):ENDPROC DEFPROCv(ya%):LOCALa$:PROCa("base",0,0):a$=" = "+STR$(ya%):PROCb(k%!e%,0,a$,0):ENDPROC DEFPROCw(ya%):LOCALx%,a$:a$="RACK :-"+FNc(STR$(ya%),3,"0",TRUE):x%=b%!e%-LEN(a$)*b%!w%:PROCb(x%,0,a$,0):ENDPROC DEFPROCu(za%):LOCALx%,a$:z%!X%+=za%:a$="SCORE :-"+FNc(STR$(z%!X%),10," ",TRUE):PROCb(0,b%!h%-b%!H%,a$,0):IFz%!X%>a%(1)THEN a$="HI SCORE :-":a$+=FNc(STR$(z%!X%),10," ",TRUE):x%=b%!e%-LEN(a$)*b%!w%:PROCb(x%,b%!h%-b%!H%,a$,0) ENDIF ENDPROC DEFPROCm:LOCALu%,E%,s%:g%!c%=50:g%!d%=550:g%!Q%=0:g%!T%=0:g%!C%=3:g%!B%=g%!C%:s%=(g%!Y%*N%!e%)+((g%!Y%-1)*g%!oa%):g%!e%=s%:g%!h%=g%!ra%*N%!h%:FORE%=1TOg%!Y%:FORu%=1TOg%!ra%:b%(E%,u%)=((u%+1)/2)+(g%!Q%*10):NEXTu%:NEXTE%:ENDPROC DEFPROCi:LOCALu%,E%,x%,y%:FORE%=1TOg%!Y%:x%=g%!c%+((E%-1)*(N%!e%+g%!oa%)):FORu%=1TOg%!ra%:y%=g%!d%+((u%-1)*N%!h%):IFb%(E%,u%)>0THEN b%(E%,u%)=((u%+1)/2)+(g%!Q%*10) ENDIF IFb%(E%,u%)<>0THEN IFb%(E%,u%)=-1THEN PROCa("inv_4",x%,y%) ELSE:PROCa("inv_"+STR$(b%(E%,u%)),x%,y%) ENDIF ENDIF NEXTu%:NEXTE%:ENDPROC DEFPROCy:ENDPROC DEFPROCz:ENDPROC DEFPROCd(d%):LOCALi%,Aa%:Aa%=b%!e%/F%!e%:FORi%=1TOAa%+1:PROCa("rail",(i%-1)*F%!e%,d%):NEXTi%:ENDPROC DEFPROCg:LOCALA%:DIMA% 20:A%!0=4:A%!4=5:A%!8=11:A%!12=12:A%!16=-1:SYS"OS_ReadVduVariables",A%,A%:b%!ja%=A%!0:b%!ka%=A%!4:b%!e%=(A%!8)+1<b%!la%THENPROCg CASEBa%OF WHEN1:Z%=O%<>b%!ja% WHEN4:Z%=O%>>b%!ka% OTHERWISE:ERROR255,"Unknown FNconv_units() operation : "+STR$(Ba%) ENDCASE =Z% DEFPROCb(x%,y%,a$,Da%):LOCALi%,Ea%:Ea%=b%!w%:FORi%=1TOLEN(a$):PROCa(STR$(ASC(MID$(a$,i%,1))),x%+((i%-1)*Ea%),y%):IFDa%>0THENPROCe(Da%) NEXTi%:ENDPROC DEFFNj(G%,P%):LOCALFa%,Ga%,Ha%,Ia%:Ha%=FALSE:Ia%=FALSE:IFG%!q%ANDP%!q%THEN Fa%=P%!c%+P%!e%:Ga%=P%!d%+P%!h%:IFG%!c%>=P%!c%ANDG%!c%<=Fa%THENHa%=TRUE IFG%!d%>=P%!d%ANDG%!d%<=Ga%THENIa%=TRUE ENDIF =Ha%ANDIa% DEFFNf(G%,O%):LOCALJa%,Ka%:DIMKa% O%:FORJa%=0TOO%-4STEP4:Ka%!Ja%=G%!Ja%:NEXTJa%:=Ka% DEFPROCc(G%):GCOL0,0TINT0:RECTANGLEFILLG%!c%,G%!d%,G%!e%,G%!h%:ENDPROC DEFFNb(La%,b%):=(b%/2)-(La%/2) DEFPROCh(a$,Ma%):LOCALo%,y%:o%=LEN(a$)*b%!w%:y%=(b%!h%/2)-(b%!H%/2):PROCb(FNb(o%,b%!e%),y%,a$,Ma%):ENDPROC DEFFNd(Na%,Oa%):=(Oa%!e%/2)-(Na%!e%/2) DEFPROCa(e$,x%,y%):LOCALPa%:SYS`%,256+24,L%,e$TO,,Pa%:SYS`%,512+34,L%,Pa%,x%,y%,0:ENDPROC DEFFNg(n%):LOCALQa%:Qa%=RND(100):=Qa%<=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 DEFFNk(n%):=n%EOR1 DEFFNc(a$,_%,d$,Ra%):LOCALSa%,b$:Sa%=_%-LEN(a$):IFSa%<=0THEN b$=LEFT$(a$,_%) ELSE:IFRa%THEN b$=STRING$(_%,d$):RIGHT$(b$,LEN(a$))=a$ ELSE:b$=a$+STRING$(Sa%,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% DEFFNl(f$):LOCALs%:IFFNe(f$)=0THEN=0 SYS"XOS_File",5,f$TO,,,,s%:=s%