REM Acorn Invaders REM Packed by MH's BASCrunch v1.31c 30/1/08 On 13 Feb 2008 ONERRORREPORT:PRINT" at line ";ERL:END T%=FALSE:c$=".":IFFNe(c$+"Resources.Gfx0")<>1THENT%=TRUE IFFNe(c$+"Resources.Gfx1")<>1THENT%=TRUE IFT%THENERROR255,"File Missing!!" T%=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:PROCm ENDIF b%=0:c%=4:g%=8:j%=12:v%=16:w%=20:p%=24:U%=28:ga%=32:ha%=36:ia%=40:ja%=44:ka%=48:la%=16:ma%=20:na%=24:E%=28:L%=32:oa%=ga%:pa%=ha%:DIMd% 36,I% 52:MODE28:OFF:PROCh:d%!E%=FNa(8,1):d%!L%=FNa(8,2)+7:I%!g%=FNa(6,1):I%!j%=FNa(6,2):I%!oa%=d%!j%-50 I%!pa%=30:REPEAT:CLS:T%=FNn:IFNOTT%THENCLS:PROCn UNTILT%:CLS:PROCi("GOODBYE!!!",10):END DEFFNn:LOCALi%,N%,P%,m%,q%,a$,x%,a%,H%,V%:LOCALqa%,t%,y%,s$:DIMN% 16,P% 16,m% 16:DIMa% 16,H% 16:N%!g%=FNa(100,1):N%!j%=FNa(40,2):N%!b%=FNc(N%,d%):N%!c%=800:P%!g%=FNa(150,1):P%!j%=FNa(40,2):P%!b%=FNc(P%,d%):P%!c%=N%!c%-P%!j% m%!g%=630:m%!j%=500:m%!b%=FNc(m%,d%):m%!c%=200:a%!g%=FNa(40,1):a%!j%=FNa(20,2):a%!b%=m%!b%+150:a%!c%=(m%!c%+m%!j%)-160:H%!g%=FNa(20,1):H%!j%=FNa(20,2):H%!b%=m%!b%+150+FNc(H%,a%):V%=FNf(H%,16):qa%=FNf(H%,16) H%!c%=m%!c%+100:V%!c%=H%!c%+H%!j%+40:qa%!c%=V%!c%+V%!j%+40:PROCe(I%!oa%):PROCe(I%!pa%):FORi%=0-N%!g%TON%!b%STEP5:PROCa("space",i%,N%!c%):PROCd(1):NEXTi%:FORi%=d%!g%TOP%!b%STEP-5:PROCa("invaders",i%,P%!c%):PROCd(1):NEXTi%:a$="PRESS SPACE TO PLAY" q%=LEN(a$)*d%!E%:y%=170:PROCb(FNb(q%,d%!g%),y%,a$,11):a$="OR Q TO QUIT":q%=LEN(a$)*d%!E%:y%-=d%!L%:PROCb(FNb(q%,d%!g%),y%,a$,11):WHILENOTINKEY(-99)ANDNOTINKEY(-17)ANDNOTINKEY(-82):PROCc(m%):a$="SCORE ADVANCE":q%=LEN(a$)*d%!E%:x%=m%!b%+FNb(q%,m%!g%):y%=m%!c%+m%!j%-20 PROCb(x%,y%,a$,0):a$="TABLE":y%-=d%!L%:q%=LEN(a$)*d%!E%:x%=m%!b%+FNb(q%,m%!g%):PROCb(x%,y%,a$,0):x%=a%!b%+a%!g%+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%+20,"= 100 POINTS !",0) PROCa("inv_2",V%!b%,V%!c%):PROCb(x%,V%!c%+20,"= 75 POINTS !",0):PROCa("inv_1",H%!b%,H%!c%):PROCb(x%,H%!c%+20,"= 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(m%):a$="TODAY'S":IFaa%THENa$="ALL TIME" q%=LEN(a$)*d%!E%:x%=m%!b%+FNb(q%,m%!g%):y%=m%!c%+m%!j%-20:PROCb(x%,y%,a$,0):a$="HI SCORES":y%-=d%!L%:q%=LEN(a$)*d%!E%:x%=m%!b%+FNb(q%,m%!g%):PROCb(x%,y%,a$,0):y%=(m%!c%+m%!j%)-100:a$=" POS."+STRING$(21," ")+"SCORE."+STRING$(3," ")+"RACK." q%=LEN(a$)*d%!E%:x%=m%!b%+FNb(q%,m%!g%):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):q%=LEN(a$)*d%!E%:x%=m%!b%+FNb(q%,m%!g%):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 DEFPROCn:LOCALh%,k%,a%,e%,A%:LOCALF%:LOCALa%():LOCALY%,ra%,O%,sa%:LOCALta%,q%,a$,x%,y%:DIMh% 52,k% 52,a% 52,e% 52,F% 16,a%(10,6):DIMA% 16:Y%=0:ua%=4:ra%=8:va%=12:O%=ga%:sa%=ha%:B%=ia%:R%=ja%:W%=ka%:h%!g%=FNa(30,1):h%!j%=FNa(15,2):h%!b%=FNc(h%,d%) h%!c%=50:h%!w%=6:h%!v%=h%!w%:k%!g%=FNa(5,1):k%!j%=FNa(20,2):k%!p%=FALSE:k%!w%=10:a%!g%=FNa(40,1):a%!j%=FNa(20,2):a%!c%=I%!oa%-(10+a%!j%):a%!w%=5:a%!p%=FALSE:a%!ja%=TRUE:F%!g%=FNa(20,1):F%!j%=FNa(20,2) e%!sa%=FNa(20,1):e%!R%=10:e%!W%=6:e%!p%=TRUE:A%!ra%=1:A%!ua%=0:A%!Y%=3:A%!va%=FALSE:PROCe(I%!oa%):PROCe(I%!pa%):PROCo(0,b%(1),A%!Y%,A%!ra%):PROCj:PROCk:PROCa("base",h%!b%,h%!c%):REPEAT:ta%=FALSE:IFINKEY(-74)THENPROCp(h%!b%,h%!c%) IFINKEY(-98)THENPROCq:ta%=TRUE IFINKEY(-67)THENPROCr:ta%=TRUE IFINKEY(-82)THENPROCg IFINKEY(-17)THENPROCs IFta%THEN h%!b%+=h%!v%:PROCa("base",h%!b%,h%!c%) ENDIF PROCt:PROCu:PROCv:UNTILA%!Y%=0:PROCi("GAME OVER!!!",11):PROCd(750):ENDPROC DEFPROCq:IFh%!b%<=0THEN h%!b%=0 ELSE:h%!v%=0-h%!w% ENDIF ENDPROC DEFPROCr:IFh%!b%>=d%!g%-h%!g%THEN h%!b%=d%!g%-h%!g% ELSE:h%!v%=0+h%!w% ENDIF ENDPROC DEFPROCp(x%,y%):IFNOTk%!p%THEN k%!p%=TRUE:k%!b%=x%+(h%!g%/2):k%!c%=y%+h%!j% ENDIF ENDPROC DEFPROCg:REPEAT:UNTILNOTINKEY(-82):OSCLI"ScreenSave .Dump"+STR$(ba%):ba%+=1:ENDPROC DEFPROCs:A%!Y%=0:A%!va%=TRUE:ENDPROC DEFPROCt:LOCALwa%,xa%:wa%=ga%:IFk%!p%THEN k%!wa%=FALSE:IFk%!c%>=I%!oa%-k%!j%THEN k%!p%=FALSE:k%!wa%=TRUE ENDIF IFk%!wa%THEN xa%=FNf(k%,52):xa%!c%-=2:PROCc(xa%) ELSE:PROCa("shell",k%!b%,k%!c%) ENDIF k%!c%+=k%!w% ENDIF ENDPROC DEFPROCu:LOCALQ%,B%,Z%,_%:Q%=ga%:B%=ha%:Z%=ia%:_%=ja%:IFNOTa%!p%THEN IFFNg(4)ANDFNg(5)THEN a%!p%=TRUE:a%!U%=FALSE:a%!Z%=0:a%!_%=0:IFFNg(50)THEN a%!v%=0-a%!w%:a%!b%=d%!g% ELSE:a%!v%=0+a%!w%:a%!b%=0-a%!g% ENDIF ENDIF ELSE:a%!Z%+=1:a%!B%+=1:IFa%!b%<=0-a%!g%ANDSGN(a%!v%)=-1THEN a%!Q%=FALSE:a%!p%=FALSE:a%!B%=0:ENDPROC ENDIF IFa%!b%>d%!g%ANDSGN(a%!v%)=1THEN a%!Q%=FALSE:a%!p%=FALSE:a%!B%=0:ENDPROC ENDIF IFNOTa%!U%THEN IFFNh(k%,a%)THEN PROCc(k%):PROCa("saucer_2",a%!b%,a%!c%):a%!Q%=a%!B%:a%!U%=TRUE:k%!p%=FALSE:PROCf(500) ENDIF ELSE:IFFNh(k%,a%)THEN PROCc(k%):k%!p%=FALSE ENDIF ENDIF IFNOTa%!U%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%!B%>=a%!Q%+125THEN PROCc(a%):a%!p%=FALSE:a%!Q%=FALSE:a%!B%=0:a%!_%=TRUE ELSE:IFa%!B%>=a%!Q%+100THEN PROCa("saucer_5",a%!b%,a%!c%) ELSE:IFa%!B%>=a%!Q%+75THEN PROCa("saucer_4",a%!b%,a%!c%) ELSE:IFa%!B%>=a%!Q%+50THEN PROCa("saucer_3",a%!b%,a%!c%) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC DEFPROCv:LOCALB%,ya%,z%,o%,u%:B%=ia%:e%!B%+=1:IFe%!B%MOD5=0THENe%!O%=FNi(e%!O%) IFe%!B%>10000THENe%!B%=0 ya%=e%!b%+e%!g%:IFya%>=d%!g%THEN e%!v%=0-e%!w%:e%!c%-=3 ENDIF IFe%!b%<=0THEN e%!v%=0+e%!w%:e%!c%-=3 ENDIF IFe%!c%=h%!c%+h%!j%THEN PROCw:A%!Y%=0:ENDPROC ENDIF IFFNh(k%,e%)THEN z%=F%!g%+e%!sa%:IF(k%!b%-e%!b%)MODz%<=F%!g%THEN o%=((k%!c%-e%!c%)DIVF%!j%)+1:u%=((k%!b%-e%!b%)DIVz%)+1:IFo%>e%!W%THENo%=e%!W% IFu%>e%!R%THENu%=e%!R% IFSGN(a%(u%,o%))=1THEN a%(u%,o%)=-5:PROCc(k%):k%!p%=FALSE:e%!U%+=1:CASEo%OF WHEN1,2:PROCf(50) WHEN3,4:PROCf(75) WHEN5,6:PROCf(100) ENDCASE ENDIF ENDIF ENDIF IFe%!U%>=e%!R%*e%!W%THEN A%!ra%+=1:PROCl(A%!ra%):PROCj ENDIF e%!b%+=e%!v%:PROCk:ENDPROC DEFFNm:LOCALi%,C%,n$:FORi%=1TO10:IFi%MOD2=0THENn$="Software"ELSEn$="DynaByte" a$(i%)=FNk(n$):b%(i%)=(11-i%)*1000:c%(i%)=0:NEXTi%:C%=OPENOUT".Resources.HiTable":IFC%=0THEN=FALSE FORi%=1TO10:PRINT#C%,a$(i%),b%(i%):PRINT#C%,c%(i%):NEXTi%:CLOSE#C%:=TRUE DEFPROCm:LOCALi%,C%:C%=OPENIN".Resources.HiTable":FORi%=1TO10:INPUT#C%,a$(i%),b%(i%):INPUT#C%,c%(i%):NEXTi%:CLOSE#C%:ENDPROC DEFPROCz:LOCALi%,C%:C%=OPENOUT".Resources.HiTable":FORi%=1TO10:PRINT#C%,a$(i%),b%(i%):PRINT#C%,c%(i%):NEXTi%:CLOSE#C%:ENDPROC DEFPROCo(za%,Aa%,l%,r%):LOCALx%,a$:a$="SCORE :-"+FNd(STR$(za%),10," ",TRUE):PROCb(0,d%!j%-d%!L%,a$,0):a$="HI SCORE :-":a$+=FNd(STR$(Aa%),10," ",TRUE):x%=d%!g%-LEN(a$)*d%!E%:PROCb(x%,d%!j%-d%!L%,a$,0):PROCx(l%):PROCl(r%):ENDPROC DEFPROCx(Ba%):LOCALa$:PROCa("base",0,0):a$=" = "+STR$(Ba%):PROCb(h%!g%,0,a$,0):ENDPROC DEFPROCl(Ba%):LOCALx%,a$:a$="RACK :-"+FNd(STR$(Ba%),3,"0",TRUE):x%=d%!g%-LEN(a$)*d%!E%:PROCb(x%,0,a$,0):ENDPROC DEFPROCf(Ca%):LOCALx%,a$:A%!ua%+=Ca%:a$="SCORE :-"+FNd(STR$(A%!ua%),10," ",TRUE):PROCb(0,d%!j%-d%!L%,a$,0):IFA%!ua%>b%(1)THEN a$="HI SCORE :-":a$+=FNd(STR$(A%!ua%),10," ",TRUE):x%=d%!g%-LEN(a$)*d%!E%:PROCb(x%,d%!j%-d%!L%,a$,0) ENDIF ENDPROC DEFPROCj:LOCALo%,u%,s%:e%!b%=50:e%!c%=550:e%!O%=0:e%!U%=0:e%!w%=3:e%!v%=e%!w%:s%=(e%!R%*F%!g%)+((e%!R%-1)*e%!sa%):e%!g%=s%:e%!j%=e%!W%*F%!j%:FORu%=1TOe%!R%:FORo%=1TOe%!W%:a%(u%,o%)=((o%+1)/2)+(e%!O%*10):NEXTo%:NEXTu%:ENDPROC DEFPROCk:LOCALo%,u%,x%,y%:FORu%=1TOe%!R%:x%=e%!b%+((u%-1)*(F%!g%+e%!sa%)):FORo%=1TOe%!W%:y%=e%!c%+((o%-1)*F%!j%):IFa%(u%,o%)>0THEN a%(u%,o%)=((o%+1)/2)+(e%!O%*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%:`%!g%=F%!g%:`%!j%=F%!j%:PROCc(`%) ENDIF ENDPROC DEFPROCA:ENDPROC DEFPROCB:ENDPROC DEFPROCw:LOCALD%,J%,O%,Da%,w%,Ea%,i%,d$:w%=1:Fa%=24:DIMD% 28,J% 28:PROCc(e%):PROCc(h%):IFk%!p%THEN PROCc(k%):k%!p%=FALSE ENDIF IFa%!p%THEN PROCc(a%):a%!p%=FALSE ENDIF h%!b%=FNc(h%,d%):D%!b%=0-F%!g%:D%!c%=h%!c%:D%!v%=w%:J%!b%=d%!g%:J%!c%=h%!c%:J%!v%=0-w%:PROCa("base",h%!b%,h%!c%):O%=0:Da%=FALSE:REPEAT:D%!b%+=D%!v%:D%!Fa%=D%!b%+F%!g%:J%!b%+=J%!v%:O%+=1:IFO%MOD20=0THENDa%=FNi(Da%) IFDa%THENd$="inv_11"ELSEd$="inv_1" PROCa(d$,D%!b%,D%!c%):PROCa(d$,J%!b%,J%!c%):PROCd(2):UNTILD%!Fa%>=h%!b%:FORi%=1TO10:PROCa("inv_1",D%!b%,D%!c%):PROCa("inv_1",J%!b%,J%!c%):PROCd(20):PROCa("inv_11",D%!b%,D%!c%):PROCa("inv_11",J%!b%,J%!c%):PROCd(20):NEXTi%:FORi%=1TO3:PROCa("base_"+STR$(i%),h%!b%,h%!c%):PROCd(20):NEXTi% PROCd(20):PROCc(h%):ENDPROC DEFPROCe(c%):LOCALi%,Ga%:Ga%=d%!g%/I%!g%:FORi%=1TOGa%+1:PROCa("rail",(i%-1)*I%!g%,c%):NEXTi%:ENDPROC DEFPROCh:LOCALG%:DIMG% 20:G%!0=4:G%!4=5:G%!8=11:G%!12=12:G%!16=-1:SYS"OS_ReadVduVariables",G%,G%:d%!la%=G%!0:d%!ma%=G%!4:d%!g%=(G%!8)+1<d%!na%THENPROCh CASEHa%OF WHEN1:Ia%=M%<>d%!la% WHEN4:Ia%=M%>>d%!ma% OTHERWISE:ERROR255,"Unknown FNconv_units() operation : "+STR$(Ha%) ENDCASE =Ia% DEFFNj(e$):LOCALS%,M%:M%=FNo(e$)+256:DIMS% M%:!S%=M%:S%!4=0:S%!8=16:S%!12=16:SYSca%,256+10,S%,e$:SYSca%,256+17,S%:=S% DEFPROCb(x%,y%,a$,Ka%):LOCALi%,La%:fa%=ea%:La%=d%!E%:FORi%=1TOLEN(a$):PROCa(STR$(ASC(MID$(a$,i%,1))),x%+((i%-1)*La%),y%):IFKa%>0THENPROCd(Ka%) NEXTi%:fa%=da%:ENDPROC DEFFNh(K%,X%):LOCALMa%,Na%,Oa%,Pa%:Oa%=FALSE:Pa%=FALSE:IFK%!p%ANDX%!p%THEN Ma%=X%!b%+X%!g%:Na%=X%!c%+X%!j%:IFK%!b%>=X%!b%ANDK%!b%<=Ma%THENOa%=TRUE IFK%!c%>=X%!c%ANDK%!c%<=Na%THENPa%=TRUE ENDIF =Oa%ANDPa% DEFFNf(K%,M%):LOCALQa%,Ra%:DIMRa% M%:FORQa%=0TOM%-4STEP4:Ra%!Qa%=K%!Qa%:NEXTQa%:=Ra% DEFPROCc(K%):GCOL0,0TINT0:RECTANGLEFILLK%!b%,K%!c%,K%!g%,K%!j%:ENDPROC DEFFNb(Sa%,d%):=(d%/2)-(Sa%/2) DEFPROCi(a$,Ta%):LOCALq%,y%:q%=LEN(a$)*d%!E%:y%=(d%!j%/2)-(d%!L%/2):PROCb(FNb(q%,d%!g%),y%,a$,Ta%):ENDPROC DEFFNc(Ua%,Va%):=(Va%!g%/2)-(Ua%!g%/2) DEFPROCa(i$,x%,y%):LOCALWa%:SYSca%,256+24,fa%,i$TO,,Wa%:SYSca%,512+34,fa%,Wa%,x%,y%,0:ENDPROC DEFFNg(n%):LOCALXa%:Xa%=RND(100):=Xa%<=n% DEFFNk(a$):LOCALi%,g$:FORi%=1TOLEN(a$):g$+=CHR$(ASC(MID$(a$,i%,1))EOR131):NEXTi%:=g$ DEFPROCd(n%):LOCALt%:t%=TIME+n%:REPEAT:UNTILTIME>=t%:ENDPROC DEFFNi(n%):=n%EOR1 DEFFNd(a$,Ya%,h$,Za%):LOCAL_a%,b$:_a%=Ya%-LEN(a$):IF_a%<=0THEN b$=LEFT$(a$,Ya%) ELSE:IFZa%THEN b$=STRING$(Ya%,h$):RIGHT$(b$,LEN(a$))=a$ ELSE:b$=a$+STRING$(_a%,h$) ENDIF ENDIF =b$ DEFFNl(a$,Ya%):LOCALb$:b$=STRING$(Ya%," "):RIGHT$(b$,LEN(a$))=a$:=b$ DEFFNe(f$):LOCALf%:SYS"XOS_File",17,f$TOf%:=f% DEFFNo(f$):LOCALs%:IFFNe(f$)=0THEN=0 SYS"XOS_File",5,f$TO,,,,s%:=s%