REM Acorn Invaders REM Packed by MH's BASCrunch v1.31c 30/1/08 On 19 Feb 2008 ONERRORREPORT:PRINT" at line ";ERL:END S%=FALSE:c$=".":IFFNe(c$+"Resources.Gfx0")<>1THENS%=TRUE IFFNe(c$+"Resources.Gfx1")<>1THENS%=TRUE IFS%THENERROR255,"File Missing!!" S%=FALSE:aa%=TRUE:ba%=0:DIMa$(10),b%(10):DIMc%(10):SYS"OS_SWINumberFromString",,"OS_SpriteOp"TOca%:da%=FNj(c$+"Resources.Gfx0"):ea%=FNj(c$+"Resources.Gfx1"):fa%=da%:IFFNe(c$+"Resources.HiTable")<>1THEN IFNOTFNmTHENaa%=FALSE ELSE:PROCo ENDIF b%=0:c%=4:e%=8:h%=12:v%=16:w%=20:m%=24:T%=28:ga%=32:ha%=36:ia%=40:ja%=44:ka%=48:la%=16:ma%=20:na%=24:D%=28:L%=32:oa%=ga%:pa%=ha%:DIMd% 36,I% 52:MODE28:OFF:PROCh:d%!D%=FNa(8,1):d%!L%=FNa(8,2)+7:I%!e%=FNa(6,1):I%!h%=FNa(6,2):I%!oa%=d%!h%-50 I%!pa%=30:REPEAT:CLS:S%=FNn:IFNOTS%THENCLS:PROCp UNTILS%:CLS:PROCi("GOODBYE!!!",10):END DEFFNn:LOCALi%,M%,O%,k%,p%,a$,x%,a%,H%,U%:LOCALqa%,t%,y%,s$:DIMM% 16,O% 16,k% 16:DIMa% 16,H% 16:M%!e%=FNa(100,1):M%!h%=FNa(40,2):M%!b%=FNc(M%,d%):M%!c%=800:O%!e%=FNa(150,1):O%!h%=FNa(40,2):O%!b%=FNc(O%,d%):O%!c%=M%!c%-O%!h% k%!e%=630:k%!h%=500:k%!b%=FNc(k%,d%):k%!c%=200:a%!e%=FNa(40,1):a%!h%=FNa(20,2):a%!b%=k%!b%+150:a%!c%=(k%!c%+k%!h%)-160:H%!e%=FNa(20,1):H%!h%=FNa(20,2):H%!b%=k%!b%+150+FNc(H%,a%):U%=FNf(H%,16):qa%=FNf(H%,16) H%!c%=k%!c%+100:U%!c%=H%!c%+H%!h%+40:qa%!c%=U%!c%+U%!h%+40:PROCe(I%!oa%):PROCe(I%!pa%):FORi%=0-M%!e%TOM%!b%STEP5:PROCa("space",i%,M%!c%):PROCd(1):WAIT:NEXTi%:FORi%=d%!e%TOO%!b%STEP-5:PROCa("invaders",i%,O%!c%):PROCd(1):WAIT:NEXTi%:a$="PRESS SPACE TO PLAY" p%=LEN(a$)*d%!D%:y%=170:PROCb(FNb(p%,d%!e%),y%,a$,11):a$="OR Q TO QUIT":p%=LEN(a$)*d%!D%:y%-=d%!L%:PROCb(FNb(p%,d%!e%),y%,a$,11):WHILENOTINKEY(-99)ANDNOTINKEY(-17)ANDNOTINKEY(-82):PROCc(k%):a$="SCORE ADVANCE":p%=LEN(a$)*d%!D%:x%=k%!b%+FNb(p%,k%!e%):y%=k%!c%+k%!h%-20 PROCb(x%,y%,a$,0):a$="TABLE":y%-=d%!L%:p%=LEN(a$)*d%!D%:x%=k%!b%+FNb(p%,k%!e%):PROCb(x%,y%,a$,0):x%=a%!b%+a%!e%+10:PROCa("saucer_0",a%!b%,a%!c%):PROCb(x%,a%!c%+10,"= 500 POINTS !",0):PROCa("inv_3",qa%!b%,qa%!c%):PROCb(x%,qa%!c%+12,"= 100 POINTS !",0) PROCa("inv_2",U%!b%,U%!c%):PROCb(x%,U%!c%+12,"= 75 POINTS !",0):PROCa("inv_1",H%!b%,H%!c%):PROCb(x%,H%!c%+12,"= 50 POINTS !",0):t%=TIME+750:REPEAT:IFINKEY(-82)THENPROCg UNTILTIME=t%ORINKEY(-17)ORINKEY(-99):IFINKEY(-17)THEN=TRUE IFINKEY(-99)THEN=FALSE PROCc(k%):a$="TODAY'S":IFaa%THENa$="ALL TIME" p%=LEN(a$)*d%!D%:x%=k%!b%+FNb(p%,k%!e%):y%=k%!c%+k%!h%-20:PROCb(x%,y%,a$,0):a$="HI SCORES":y%-=d%!L%:p%=LEN(a$)*d%!D%:x%=k%!b%+FNb(p%,k%!e%):PROCb(x%,y%,a$,0):y%=(k%!c%+k%!h%)-100:a$=" POS."+STRING$(21," ")+"SCORE."+STRING$(3," ")+"RACK." p%=LEN(a$)*d%!D%:x%=k%!b%+FNb(p%,k%!e%):PROCb(x%,y%,a$,0):y%-=2*d%!L%:FORi%=1TO10:IFi%<10THEN a$=" "+STR$(i%)+". " ELSE:a$=" "+STR$(i%)+". " ENDIF s$=FNk(a$(i%)):a$+=FNd(s$,8," ",FALSE):a$+=" .... ":a$+=FNl(STR$(b%(i%)),10):a$+=" ... "+FNl(STR$(c%(i%)),3):p%=LEN(a$)*d%!D%:x%=k%!b%+FNb(p%,k%!e%):PROCb(x%,y%-(i%*(d%!L%+5)),a$,0):NEXTi%:t%=TIME+750:REPEAT:IFINKEY(-82)THENPROCg UNTILTIME=t%ORINKEY(-17)ORINKEY(-99):IFINKEY(-17)THEN=TRUE IFINKEY(-99)THEN=FALSE ENDWHILE:IFINKEY(-17)THEN=TRUE =FALSE DEFPROCp:LOCALg%,j%,a%,f%,q%:LOCALE%,V%:LOCALa%():LOCALQ%,ra%,N%,sa%:LOCALta%,p%,a$,x%,y%:DIMg% 52,j% 52,a% 52,f% 52,E% 16,a%(10,6):DIMq% 16,V% 16:Q%=0:ua%=4:ra%=8:va%=12:N%=ga%:sa%=ha%:A%=ia%:Y%=ja%:wa%=ka%:g%!e%=FNa(30,1):g%!h%=FNa(15,2) g%!b%=FNc(g%,d%):g%!c%=50:g%!w%=6:g%!v%=g%!w%:V%!e%=FNa(124,1):V%!h%=FNa(24,2):E%!e%=FNa(20,1):E%!h%=FNa(20,2):a%!e%=FNa(40,1):a%!h%=FNa(20,2):a%!c%=I%!oa%-(10+a%!h%):a%!w%=5:a%!m%=FALSE:a%!ja%=TRUE j%!e%=FNa(5,1):j%!h%=FNa(20,2):j%!m%=FALSE:j%!w%=10:q%!ra%=1:q%!ua%=0:q%!Q%=3:q%!va%=FALSE:f%!sa%=FNa(20,1):f%!Y%=10:f%!wa%=6:f%!m%=TRUE:PROCe(I%!oa%):PROCe(I%!pa%):PROCq(0,b%(1),q%!Q%,q%!ra%):PROCj:PROCk:PROCa("base",g%!b%,g%!c%) REPEAT:ta%=FALSE:IFINKEY(-74)THENPROCr(g%!b%,g%!c%) IFINKEY(-98)THENPROCs:ta%=TRUE IFINKEY(-67)THENPROCt:ta%=TRUE IFINKEY(-82)THENPROCg IFINKEY(-17)THENPROCu IFINKEY(-35)THENPROCl IFta%THEN g%!b%+=g%!v%:PROCa("base",g%!b%,g%!c%) ENDIF IFq%!Q%>0THEN PROCv:PROCw:PROCx ENDIF WAIT:UNTILq%!Q%=0:V%=FNo(V%,d%):PROCa("box",V%!b%,V%!c%):PROCi("GAME OVER!!!",11):PROCd(750):ENDPROC DEFPROCs:IFg%!b%<=0THEN g%!b%=0 ELSE:g%!v%=0-g%!w% ENDIF ENDPROC DEFPROCt:IFg%!b%>=d%!e%-g%!e%THEN g%!b%=d%!e%-g%!e% ELSE:g%!v%=0+g%!w% ENDIF ENDPROC DEFPROCr(x%,y%):IFNOTj%!m%THEN j%!m%=TRUE:j%!b%=x%+(g%!e%/2):j%!c%=y%+g%!h% ENDIF ENDPROC DEFPROCg:REPEAT:UNTILNOTINKEY(-82):OSCLI"ScreenSave .Dump"+STR$(ba%):ba%+=1:ENDPROC DEFPROCu:q%!Q%=0:q%!va%=TRUE:ENDPROC DEFPROCv:LOCALxa%,ya%:xa%=ga%:IFj%!m%THEN j%!xa%=FALSE:IFj%!c%>=I%!oa%-j%!h%THEN j%!m%=FALSE:j%!xa%=TRUE ENDIF IFj%!xa%THEN ya%=FNf(j%,52):ya%!c%-=2:PROCc(ya%) ELSE:PROCa("shell",j%!b%,j%!c%) ENDIF j%!c%+=j%!w% ENDIF ENDPROC DEFPROCw:LOCALP%,A%,Z%,_%:P%=ga%:A%=ha%:Z%=ia%:_%=ja%:IFNOTa%!m%THEN IFFNg(4)ANDFNg(5)THEN a%!m%=TRUE:a%!T%=FALSE:a%!Z%=0:a%!_%=0:IFFNg(50)THEN a%!v%=0-a%!w%:a%!b%=d%!e% ELSE:a%!v%=0+a%!w%:a%!b%=0-a%!e% ENDIF ENDIF ELSE:a%!Z%+=1:a%!A%+=1:IFa%!b%<=0-a%!e%ANDSGN(a%!v%)=-1THEN a%!P%=FALSE:a%!m%=FALSE:a%!A%=0:ENDPROC ENDIF IFa%!b%>d%!e%ANDSGN(a%!v%)=1THEN a%!P%=FALSE:a%!m%=FALSE:a%!A%=0:ENDPROC ENDIF IFNOTa%!T%THEN IFFNh(j%,a%)THEN PROCc(j%):PROCa("saucer_2",a%!b%,a%!c%):a%!P%=a%!A%:a%!T%=TRUE:j%!m%=FALSE:PROCf(500) ENDIF ELSE:IFFNh(j%,a%)THEN PROCc(j%):j%!m%=FALSE ENDIF ENDIF IFNOTa%!T%THEN IFa%!Z%>=100THENa%!Z%=0 IFa%!Z%MOD10=0THEN a%!_%=FNi(a%!_%) ENDIF IFa%!_%=0THEN PROCa("saucer_0",a%!b%,a%!c%) ELSE:PROCa("saucer_1",a%!b%,a%!c%) ENDIF a%!b%+=a%!v% ELSE:IFa%!A%>=a%!P%+125THEN PROCc(a%):a%!m%=FALSE:a%!P%=FALSE:a%!A%=0:a%!_%=TRUE ELSE:IFa%!A%>=a%!P%+100THEN PROCa("saucer_5",a%!b%,a%!c%) ELSE:IFa%!A%>=a%!P%+75THEN PROCa("saucer_4",a%!b%,a%!c%) ELSE:IFa%!A%>=a%!P%+50THEN PROCa("saucer_3",a%!b%,a%!c%) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC DEFPROCx:LOCALA%,za%,z%,o%,u%:A%=ia%:f%!A%+=1:IFf%!A%MOD5=0THENf%!N%=FNi(f%!N%) IFf%!A%>10000THENf%!A%=0 za%=f%!b%+f%!e%:IFza%>=d%!e%THEN f%!v%=0-f%!w%:f%!c%-=5 ENDIF IFf%!b%<=0THEN f%!v%=0+f%!w%:f%!c%-=5 ENDIF IFf%!c%=g%!c%+g%!h%THEN PROCl:ENDPROC ENDIF IFFNh(j%,f%)THEN z%=E%!e%+f%!sa%:IF(j%!b%-f%!b%)MODz%<=E%!e%THEN o%=((j%!c%-f%!c%)DIVE%!h%)+1:u%=((j%!b%-f%!b%)DIVz%)+1:IFSGN(a%(u%,o%))=1THEN a%(u%,o%)=-5:PROCc(j%):j%!m%=FALSE:f%!T%+=1:CASEo%OF WHEN1,2:PROCf(50) WHEN3,4:PROCf(75) WHEN5,6:PROCf(100) ENDCASE ENDIF ENDIF ENDIF IFf%!T%>=f%!Y%*f%!wa%THEN q%!ra%+=1:PROCm(q%!ra%):PROCc(f%):PROCj ENDIF f%!b%+=f%!v%:PROCk:ENDPROC DEFFNm:LOCALi%,B%,n$:FORi%=1TO10:IFi%MOD2=0THENn$="Software"ELSEn$="DynaByte" a$(i%)=FNk(n$):b%(i%)=(11-i%)*1000:c%(i%)=0:NEXTi%:B%=OPENOUT".Resources.HiTable":IFB%=0THEN=FALSE FORi%=1TO10:PRINT#B%,a$(i%),b%(i%):PRINT#B%,c%(i%):NEXTi%:CLOSE#B%:=TRUE DEFPROCo:LOCALi%,B%:B%=OPENIN".Resources.HiTable":FORi%=1TO10:INPUT#B%,a$(i%),b%(i%):INPUT#B%,c%(i%):NEXTi%:CLOSE#B%:ENDPROC DEFPROCz:LOCALi%,B%:B%=OPENOUT".Resources.HiTable":FORi%=1TO10:PRINT#B%,a$(i%),b%(i%):PRINT#B%,c%(i%):NEXTi%:CLOSE#B%:ENDPROC DEFPROCq(Aa%,Ba%,l%,r%):LOCALx%,a$:a$="SCORE :-"+FNd(STR$(Aa%),10," ",TRUE):PROCb(0,d%!h%-d%!L%,a$,0):a$="HI SCORE :-":a$+=FNd(STR$(Ba%),10," ",TRUE):x%=d%!e%-LEN(a$)*d%!D%:PROCb(x%,d%!h%-d%!L%,a$,0):PROCn(l%):PROCm(r%):ENDPROC DEFPROCn(Ca%):LOCALa$:PROCa("base",0,0):a$=" = "+STR$(Ca%):PROCb(g%!e%,0,a$,0):ENDPROC DEFPROCm(Ca%):LOCALx%,a$:a$="RACK :-"+FNd(STR$(Ca%),3,"0",TRUE):x%=d%!e%-LEN(a$)*d%!D%:PROCb(x%,0,a$,0):ENDPROC DEFPROCf(Da%):LOCALx%,a$:q%!ua%+=Da%:a$="SCORE :-"+FNd(STR$(q%!ua%),10," ",TRUE):PROCb(0,d%!h%-d%!L%,a$,0):IFq%!ua%>b%(1)THEN a$="HI SCORE :-":a$+=FNd(STR$(q%!ua%),10," ",TRUE):x%=d%!e%-LEN(a$)*d%!D%:PROCb(x%,d%!h%-d%!L%,a$,0) ENDIF ENDPROC DEFPROCj:LOCALo%,u%,s%:f%!b%=50:f%!c%=550:f%!N%=0:f%!T%=0:f%!w%=3:f%!v%=f%!w%:s%=(f%!Y%*E%!e%)+((f%!Y%-1)*f%!sa%):f%!e%=s%:f%!h%=f%!wa%*E%!h%:FORu%=1TOf%!Y%:FORo%=1TOf%!wa%:a%(u%,o%)=((o%+1)/2)+(f%!N%*10):NEXTo%:NEXTu%:ENDPROC DEFPROCk:LOCALo%,u%,x%,y%:FORu%=1TOf%!Y%:x%=f%!b%+((u%-1)*(E%!e%+f%!sa%)):FORo%=1TOf%!wa%:y%=f%!c%+((o%-1)*E%!h%):IFa%(u%,o%)>0THEN a%(u%,o%)=((o%+1)/2)+(f%!N%*10) ENDIF IFa%(u%,o%)<>0THEN CASESGN(a%(u%,o%))OF WHEN-1:PROCy(x%,y%) WHEN1:PROCa("inv_"+STR$(a%(u%,o%)),x%,y%) ENDCASE ENDIF NEXTo%:NEXTu%:ENDPROC DEFPROCy(x%,y%):LOCAL`%:DIM`% 16:a%(u%,o%)+=1:PROCa("inv_4",x%,y%):IFa%(u%,o%)=0THEN `%!b%=x%:`%!c%=y%:`%!e%=E%!e%:`%!h%=E%!h%:PROCc(`%) ENDIF ENDPROC DEFPROCA:ENDPROC DEFPROCB:ENDPROC DEFPROCl:LOCALC%,J%,N%,Ea%,w%,i%,d$:w%=1:Fa%=24:DIMC% 28,J% 28:PROCc(f%):PROCc(g%):IFj%!m%THEN PROCc(j%):j%!m%=FALSE ENDIF IFa%!m%THEN PROCc(a%):a%!m%=FALSE ENDIF g%!b%=FNc(g%,d%):C%!b%=0-E%!e%:C%!c%=g%!c%:C%!v%=w%:J%!b%=d%!e%:J%!c%=g%!c%:J%!v%=0-w%:q%!Q%=0:PROCn(q%!Q%):PROCa("base",g%!b%,g%!c%):N%=0:Ea%=FALSE:REPEAT:C%!b%+=C%!v%:C%!Fa%=C%!b%+E%!e%:J%!b%+=J%!v%:N%+=1:IFN%MOD20=0THENEa%=FNi(Ea%) IFEa%THENd$="inv_11"ELSEd$="inv_1" PROCa(d$,C%!b%,C%!c%):PROCa(d$,J%!b%,J%!c%):PROCd(2):WAIT:UNTILC%!Fa%>=g%!b%:FORi%=1TO10:PROCa("inv_1",C%!b%,C%!c%):PROCa("inv_1",J%!b%,J%!c%):PROCd(20):PROCa("inv_11",C%!b%,C%!c%):PROCa("inv_11",J%!b%,J%!c%):PROCd(20):WAIT:NEXTi%:FORi%=1TO3 PROCa("base_"+STR$(i%),g%!b%,g%!c%):PROCd(20):WAIT:NEXTi%:PROCd(20):PROCc(g%):ENDPROC DEFPROCe(c%):LOCALi%,Ga%:Ga%=d%!e%/I%!e%:FORi%=1TOGa%+1:PROCa("rail",(i%-1)*I%!e%,c%):NEXTi%:ENDPROC DEFPROCh:LOCALF%:DIMF% 20:F%!0=4:F%!4=5:F%!8=11:F%!12=12:F%!16=-1:SYS"OS_ReadVduVariables",F%,F%:d%!la%=F%!0:d%!ma%=F%!4:d%!e%=(F%!8)+1<d%!na%THENPROCh CASEHa%OF WHEN1:Ia%=G%<>d%!la% WHEN4:Ia%=G%>>d%!ma% OTHERWISE:ERROR255,"Unknown FNconv_units() operation : "+STR$(Ha%) ENDCASE =Ia% DEFFNj(f$):LOCALR%,G%:G%=FNp(f$)+256:DIMR% G%:!R%=G%:R%!4=0:R%!8=16:R%!12=16:SYSca%,256+10,R%,f$:SYSca%,256+17,R%:=R% DEFPROCb(x%,y%,a$,Ka%):LOCALi%,La%:fa%=ea%:La%=d%!D%:FORi%=1TOLEN(a$):PROCa(STR$(ASC(MID$(a$,i%,1))),x%+((i%-1)*La%),y%):IFKa%>0THENPROCd(Ka%) NEXTi%:fa%=da%:ENDPROC DEFFNh(K%,W%):LOCALMa%,Na%,Oa%,Pa%:Oa%=FALSE:Pa%=FALSE:IFK%!m%ANDW%!m%THEN Ma%=W%!b%+W%!e%:Na%=W%!c%+W%!h%:IFK%!b%>=W%!b%ANDK%!b%=W%!c%ANDK%!c%=t%:ENDPROC DEFFNi(n%):=n%EOR1 DEFFNd(a$,Xa%,h$,Ya%):LOCALZa%,b$:Za%=Xa%-LEN(a$):IFZa%<=0THEN b$=LEFT$(a$,Xa%) ELSE:IFYa%THEN b$=STRING$(Xa%,h$):RIGHT$(b$,LEN(a$))=a$ ELSE:b$=a$+STRING$(Za%,h$) ENDIF ENDIF =b$ DEFFNl(a$,Xa%):LOCALb$:b$=STRING$(Xa%," "):RIGHT$(b$,LEN(a$))=a$:=b$ DEFFNe(e$):LOCAL_a%:SYS"XOS_File",17,e$TO_a%:=_a% DEFFNp(e$):LOCALG%:SYS"XOS_File",5,e$TO,,,,G%:=G%