REM Acorn Invaders REM Packed by MH's BASCrunch v1.31c 30/1/08 On 14 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:PROCm ENDIF b%=0:c%=4:e%=8:j%=12:v%=16:w%=20:o%=24:T%=28:ga%=32:ha%=36:ia%=40:ja%=44:ka%=48:la%=16:ma%=20:na%=24:E%=28:L%=32:`%=ga%:oa%=ha%:DIMd% 36,I% 52:MODE28:OFF:PROCh:d%!E%=FNa(8,1):d%!L%=FNa(8,2)+7:I%!e%=FNa(6,1):I%!j%=FNa(6,2):I%!`%=d%!j%-50:I%!oa%=30 REPEAT:CLS:S%=FNn:IFNOTS%THENCLS:PROCn UNTILS%:CLS:PROCi("GOODBYE!!!",10):END DEFFNn:LOCALi%,N%,P%,m%,q%,a$,x%,a%,H%,U%:LOCALpa%,t%,y%,s$:DIMN% 16,P% 16,m% 16:DIMa% 16,H% 16:N%!e%=FNa(100,1):N%!j%=FNa(40,2):N%!b%=FNc(N%,d%):N%!c%=800:P%!e%=FNa(150,1):P%!j%=FNa(40,2):P%!b%=FNc(P%,d%):P%!c%=N%!c%-P%!j% m%!e%=630:m%!j%=500:m%!b%=FNc(m%,d%):m%!c%=200:a%!e%=FNa(40,1):a%!j%=FNa(20,2):a%!b%=m%!b%+150:a%!c%=(m%!c%+m%!j%)-160:H%!e%=FNa(20,1):H%!j%=FNa(20,2):H%!b%=m%!b%+150+FNc(H%,a%):U%=FNf(H%,16):pa%=FNf(H%,16) H%!c%=m%!c%+100:U%!c%=H%!c%+H%!j%+40:pa%!c%=U%!c%+U%!j%+40:PROCe(I%!`%):PROCe(I%!oa%):FORi%=0-N%!e%TON%!b%STEP5:PROCa("space",i%,N%!c%):PROCd(1):NEXTi%:FORi%=d%!e%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%!e%),y%,a$,11):a$="OR Q TO QUIT":q%=LEN(a$)*d%!E%:y%-=d%!L%:PROCb(FNb(q%,d%!e%),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%!e%):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%!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",pa%!b%,pa%!c%):PROCb(x%,pa%!c%+20,"= 100 POINTS !",0) PROCa("inv_2",U%!b%,U%!c%):PROCb(x%,U%!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%!e%):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%!e%):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%!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):q%=LEN(a$)*d%!E%:x%=m%!b%+FNb(q%,m%!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 DEFPROCn:LOCALh%,k%,a%,g%,A%:LOCALF%:LOCALa%():LOCALW%,qa%,O%,ra%:LOCALsa%,q%,a$,x%,y%:DIMh% 52,k% 52,a% 52,g% 52,F% 16,a%(10,6):DIMA% 16:W%=0:ta%=4:qa%=8:ua%=12:O%=ga%:ra%=ha%:B%=ia%:X%=ja%:va%=ka%:h%!e%=FNa(30,1):h%!j%=FNa(15,2):h%!b%=FNc(h%,d%) h%!c%=50:h%!w%=6:h%!v%=h%!w%:k%!e%=FNa(5,1):k%!j%=FNa(20,2):k%!o%=FALSE:k%!w%=10:a%!e%=FNa(40,1):a%!j%=FNa(20,2):a%!c%=I%!`%-(10+a%!j%):a%!w%=5:a%!o%=FALSE:a%!ja%=TRUE:F%!e%=FNa(20,1):F%!j%=FNa(20,2) g%!ra%=FNa(20,1):g%!X%=10:g%!va%=6:g%!o%=TRUE:A%!qa%=1:A%!ta%=0:A%!W%=3:A%!ua%=FALSE:PROCe(I%!`%):PROCe(I%!oa%):PROCo(0,b%(1),A%!W%,A%!qa%):PROCj:PROCk:PROCa("base",h%!b%,h%!c%):REPEAT:sa%=FALSE:IFINKEY(-74)THENPROCp(h%!b%,h%!c%) IFINKEY(-98)THENPROCq:sa%=TRUE IFINKEY(-67)THENPROCr:sa%=TRUE IFINKEY(-82)THENPROCg IFINKEY(-17)THENPROCs IFsa%THEN h%!b%+=h%!v%:PROCa("base",h%!b%,h%!c%) ENDIF PROCt:PROCu:PROCv:UNTILA%!W%=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%!e%-h%!e%THEN h%!b%=d%!e%-h%!e% ELSE:h%!v%=0+h%!w% ENDIF ENDPROC DEFPROCp(x%,y%):IFNOTk%!o%THEN k%!o%=TRUE:k%!b%=x%+(h%!e%/2):k%!c%=y%+h%!j% ENDIF ENDPROC DEFPROCg:REPEAT:UNTILNOTINKEY(-82):OSCLI"ScreenSave .Dump"+STR$(ba%):ba%+=1:ENDPROC DEFPROCs:A%!W%=0:A%!ua%=TRUE:ENDPROC DEFPROCt:LOCALwa%,xa%:wa%=ga%:IFk%!o%THEN k%!wa%=FALSE:IFk%!c%>=I%!`%-k%!j%THEN k%!o%=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%,Y%,Z%:Q%=ga%:B%=ha%:Y%=ia%:Z%=ja%:IFNOTa%!o%THEN IFFNg(4)ANDFNg(5)THEN a%!o%=TRUE:a%!T%=FALSE:a%!Y%=0:a%!Z%=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%!Y%+=1:a%!B%+=1:IFa%!b%<=0-a%!e%ANDSGN(a%!v%)=-1THEN a%!Q%=FALSE:a%!o%=FALSE:a%!B%=0:ENDPROC ENDIF IFa%!b%>d%!e%ANDSGN(a%!v%)=1THEN a%!Q%=FALSE:a%!o%=FALSE:a%!B%=0:ENDPROC ENDIF IFNOTa%!T%THEN IFFNh(k%,a%)THEN PROCc(k%):PROCa("saucer_2",a%!b%,a%!c%):a%!Q%=a%!B%:a%!T%=TRUE:k%!o%=FALSE:PROCf(500) ENDIF ELSE:IFFNh(k%,a%)THEN PROCc(k%):k%!o%=FALSE ENDIF ENDIF IFNOTa%!T%THEN IFa%!Y%>=100THENa%!Y%=0 IFa%!Y%MOD10=0THEN a%!Z%=FNi(a%!Z%) ENDIF IFa%!Z%=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%!o%=FALSE:a%!Q%=FALSE:a%!B%=0:a%!Z%=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%,p%,u%:B%=ia%:g%!B%+=1:IFg%!B%MOD5=0THENg%!O%=FNi(g%!O%) IFg%!B%>10000THENg%!B%=0 ya%=g%!b%+g%!e%:IFya%>=d%!e%THEN g%!v%=0-g%!w%:g%!c%-=5 ENDIF IFg%!b%<=0THEN g%!v%=0+g%!w%:g%!c%-=5 ENDIF IFg%!c%=h%!c%+h%!j%THEN PROCw:A%!W%=0:ENDPROC ENDIF IFFNh(k%,g%)THEN z%=F%!e%+g%!ra%:IF(k%!b%-g%!b%)MODz%<=F%!e%THEN p%=((k%!c%-g%!c%)DIVF%!j%)+1:u%=((k%!b%-g%!b%)DIVz%)+1:IFSGN(a%(u%,p%))=1THEN a%(u%,p%)=-5:PROCc(k%):k%!o%=FALSE:g%!T%+=1:CASEp%OF WHEN1,2:PROCf(50) WHEN3,4:PROCf(75) WHEN5,6:PROCf(100) ENDCASE ENDIF ENDIF ENDIF IFg%!T%>=g%!X%*g%!va%THEN A%!qa%+=1:PROCl(A%!qa%):PROCj ENDIF g%!b%+=g%!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%!e%-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%!e%,0,a$,0):ENDPROC DEFPROCl(Ba%):LOCALx%,a$:a$="RACK :-"+FNd(STR$(Ba%),3,"0",TRUE):x%=d%!e%-LEN(a$)*d%!E%:PROCb(x%,0,a$,0):ENDPROC DEFPROCf(Ca%):LOCALx%,a$:A%!ta%+=Ca%:a$="SCORE :-"+FNd(STR$(A%!ta%),10," ",TRUE):PROCb(0,d%!j%-d%!L%,a$,0):IFA%!ta%>b%(1)THEN a$="HI SCORE :-":a$+=FNd(STR$(A%!ta%),10," ",TRUE):x%=d%!e%-LEN(a$)*d%!E%:PROCb(x%,d%!j%-d%!L%,a$,0) ENDIF ENDPROC DEFPROCj:LOCALp%,u%,s%:g%!b%=50:g%!c%=550:g%!O%=0:g%!T%=0:g%!w%=3:g%!v%=g%!w%:s%=(g%!X%*F%!e%)+((g%!X%-1)*g%!ra%):g%!e%=s%:g%!j%=g%!va%*F%!j%:FORu%=1TOg%!X%:FORp%=1TOg%!va%:a%(u%,p%)=((p%+1)/2)+(g%!O%*10):NEXTp%:NEXTu%:ENDPROC DEFPROCk:LOCALp%,u%,x%,y%:FORu%=1TOg%!X%:x%=g%!b%+((u%-1)*(F%!e%+g%!ra%)):FORp%=1TOg%!va%:y%=g%!c%+((p%-1)*F%!j%):IFa%(u%,p%)>0THEN a%(u%,p%)=((p%+1)/2)+(g%!O%*10) ENDIF IFa%(u%,p%)<>0THEN CASESGN(a%(u%,p%))OF WHEN-1:PROCy(x%,y%) WHEN1:PROCa("inv_"+STR$(a%(u%,p%)),x%,y%) ENDCASE ENDIF NEXTp%:NEXTu%:ENDPROC DEFPROCy(x%,y%):LOCAL_%:DIM_% 16:a%(u%,p%)+=1:PROCa("inv_4",x%,y%):IFa%(u%,p%)=0THEN _%!b%=x%:_%!c%=y%:_%!e%=F%!e%:_%!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(g%):PROCc(h%):IFk%!o%THEN PROCc(k%):k%!o%=FALSE ENDIF IFa%!o%THEN PROCc(a%):a%!o%=FALSE ENDIF h%!b%=FNc(h%,d%):D%!b%=0-F%!e%:D%!c%=h%!c%:D%!v%=w%:J%!b%=d%!e%: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%!e%: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%!e%/I%!e%:FORi%=1TOGa%+1:PROCa("rail",(i%-1)*I%!e%,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%!e%=(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$):LOCALR%,M%:M%=FNo(e$)+256:DIMR% M%:!R%=M%:R%!4=0:R%!8=16:R%!12=16:SYSca%,256+10,R%,e$:SYSca%,256+17,R%:=R% 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%,V%):LOCALMa%,Na%,Oa%,Pa%:Oa%=FALSE:Pa%=FALSE:IFK%!o%ANDV%!o%THEN Ma%=V%!b%+V%!e%:Na%=V%!c%+V%!j%:IFK%!b%>=V%!b%ANDK%!b%=V%!c%ANDK%!c%=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%