Home » Archimedes archive » Acorn User » AU 1998-10.adf » Regulars » StarInfo/Wareham/!Tunnel/!RunImage

StarInfo/Wareham/!Tunnel/!RunImage

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Acorn User » AU 1998-10.adf » Regulars
Filename: StarInfo/Wareham/!Tunnel/!RunImage
Read OK:
File size: 13CE bytes
Load address: 0000
Exec address: 0000
File contents
    1REM>ADFS::Richard.$.Develop4.Tunnel.!Tunnel.!RunImage squished by MH's BASIC cruncher v1.30 16/9/89 On 26 Apr 1998
    2PROCc:aa%=(H%-n%)>>1:R%=(z%-(f%-16))>>1:R%+=8:ba%=aa%+(H%*R%):S%=(H%-n%)<<(h%-1):T%=(z%-f%)<<(e%-1):CLS:MOUSESTEP(1<<h%):MOUSERECTANGLE0,0,63<<(3+h%),1<<e%:GCOL0TINT0:a%=0:t%=0:v%=0:L%=FALSE:CLS:U%=1:V%=2:PROCa:CLS:PROCa:REPEAT:t%+=(v%>>2):IFt%>63t%-=64
  230IFt%<0t%+=64
  240MOUSEM%,y%,b%:IFb%=4v%+=1
  260IFb%=1v%-=1
  270IFb%=2REPEAT:MOUSEi%,j%,k%:UNTILk%=0:L%=NOTL%
  280IFv%<-50v%=-50
  290IFv%>50v%=50
  300IFL%M%=((31*SIN(RAD(a%)))+32)<<(3+h%)
  320a%+=10:PRINTTAB(0,0);"Velocity = ";v%;" m/s     ":PRINTTAB(0,1);"Roll     = ";(90*M%)>>(9+h%);"�    ":GCOL63TINT255:IFN%SYS46,34+256,w%,"back",S%,T%
  380IFNOTN%RECTANGLEFILLS%,T%,(n%<<h%)-1,(f%<<e%)-1
  390A%=W%:B%=E%+(t%<<6)+(M%>>(3+h%)):C%=ba%:CALLca%:IFO%THEN
  420PROCd(J%):A%=J%:CALLda%:A%=J%:B%=E%:C%=X%:CALLea%:A%=E%:CALLfa%
  500ENDIF
  500IFINKEY$(0)="*"THEN*bc
  510WAIT:PROCa:UNTIL0:END
  540
  560DEFPROCe:DIMga% 4048:x%=8:y%=9:F%=10:Y%=11:Z%=12:FORI%=0TO2STEP2:P%=ga%:[OPT I%:.ca%:STMFD13!,{0-12,14}:MOV Y%,0:MOV Z%,1:ADR0,ha%:ADR1,ia%:SWI "OS_ReadVduVariables":LDR F%,[1]:ADD F%,F%,2:MOV y%,#0:MOV5,#0:MOV6,#0:MOV1,#H%:.ja%:MOV x%,#0:.ka%:MOV2,#0: ]
  900FORla%=0TO3:s%=la%*8:[OPT I%:LDR4,[Y%,5,ASL#2]:LDRB3,[Z%,4]:ORR2,2,3,LSL#s%:ADD5,5,#1: ]:NEXT:[OPT I%:LDR4,[F%,6]:AND2,2,4:STR2,[F%,6]:ADD6,6,#4:ADD x%,x%,#4:CMP x%,#(n%):BLT ka%:ADD y%,y%,#1:MUL 6,y%,1:CMP y%,#(f%):BLT ja%:LDMFD13!,{0-12,pc}
 1150.fa%:STMFD13!,{0-12,14}:MOV1,0:MOV0,#0:ADD2,1,#o%*o%:.ma%:LDMIA1!,{3-10}:STMIA2!,{3-10}:ADD0,0,#8*4:CMP0,#o%*o%:BLT ma%:LDMFD13!,{0-12,pc}:.da%:STMFD13!,{0-12,14}:MOV1,#o%*o%:.na%:MOV2,#0:.oa%:LDRB3,[0,1]:SUB4,1,#o%+1:LDRB5,[0,4]
 1450ADD3,3,5:ADD4,4,#1:LDRB5,[0,4]:ADD3,3,5:ADD4,4,#1:LDRB5,[0,4]:ADD3,3,5:MOV3,3,LSR#2:CMP3,#1:SUBGE3,3,#1:STRB3,[0,1]:SUB1,1,#1:ADD2,2,#1:CMP2,#o%:BLT oa%:CMP1,#0:BGT na%:LDMFD13!,{0-12,pc}:.ea%:STMFD13!,{0-12,14}:MOV3,#0:.pa%:LDRB4,[0,3]
 1770LDRB5,[2,4]:STRB5,[1,3]:ADD3,3,#1:CMP3,#o%*o%:BLT pa%:LDMFD13!,{0-12,pc}:.ha%:EQUD148:EQUD-1:.ia%:EQUD0:EQUD0: ]:NEXT:ENDPROC
 1920
 1940DEFPROCf:DIMW% n%*f%*4:v%=0:FORy%=-(f%>>1)TO(f%>>1)-1:u%=0:FORx%=-(n%>>1)TO(n%>>1)-1:_%=FALSE:IFy%=0y%=1:_%=TRUE
 2010r%=Q%-SQR((x%*x%)+(y%*y%)):a%=((DEG(ATN(x%/y%))+180)*256)/360:IF_%y%=0
 2040q%=FNa(r%):K%=(a%):PROCg(x%+(n%>>1),y%+(f%>>1),K%AND63,q%AND63):W%!((u%+(v%*n%))<<2)=(K%AND63)OR((q%AND63)<<6):u%+=1:NEXT:v%+=1:NEXT:ENDPROC
 2130
 2150DEFFNf(x%,q%):=(q%*x%*qa%)>>10
 2180DEFFNa(y%):LOCALt%,d%:d%=Q%-y%:t%=(y%*`%)/d%:=t%
 2240DEFPROCc:ONERRORMODE0:REPORT:PRINT" : ";ERL:END
 2260PRINT"Tunnel program (small version)":PRINT"by Richard Wareham 1998":PRINT:PRINT"Do you want depth cueing?":PRINT"WARNING:This can slow the display down by half":PRINT"(Y/N) : ";:REPEAT:G$=GET$:UNTILG$="Y"ORG$="y"ORG$="N"ORG$="n":PRINTG$:IFG$="Y"ORG$="y"THENN%=TRUEELSEN%=FALSE
 2380PRINT:PRINT"Do you want to set the walls on fire":PRINT"WARNING:This makes the screen _very_ hot":PRINT"(Y/N) : ";:REPEAT:G$=GET$:UNTILG$="Y"ORG$="y"ORG$="N"ORG$="n":PRINTG$:IFG$="Y"ORG$="y"THENO%=TRUEELSEO%=FALSE
 2470PRINT"Size:":PRINT" 1 - Small, 2 - Large":REPEAT:G$=GET$:UNTILG$="1"ORG$="2":IFG$="1"THENm=1.5ELSEm=3.5
 2550n%=64*m:f%=64*m:h%=2:e%=2:H%=320:z%=240:G%=13:ra%=9:MODEra%:OFF:Q%=f%:a=1:sa%=60:`%=(Q%>>4)/TAN(RAD(90-sa%)):qa%=((1<<10))/(`%*a):o%=64:PRINT"Assembling... ";:PROCe:PRINT"Done":FORc%=0TO15:COLOURc%,c%<<4,c%<<4,c%<<4:NEXT:IFO%THEN
 2920PRINT"Which fire palette:":PRINT" 1) Standard":PRINT" 2) Predator":PRINT" 3) Yellow & Blue":PRINT" 4) Predator 2":REPEAT:G$=GET$:UNTILG$="1"ORG$="2"ORG$="3"ORG$="4":IFG$="1"p%=2
 3000IFG$="2"p%=1
 3010IFG$="3"p%=3
 3020IFG$="4"p%=4
 3021DIMX% 256:FORi%=0TO255:IFp%=1SYS"ColourTrans_ReturnColourNumberForMode",FNb(i%),G%TOc%
 3050IFp%=2SYS"ColourTrans_ReturnColourNumberForMode",FNc(i%),G%TOc%
 3060IFp%=3SYS"ColourTrans_ReturnColourNumberForMode",FNd(i%),G%TOc%
 3070IFp%=4SYS"ColourTrans_ReturnColourNumberForMode",FNe(i%),G%TOc%
 3071X%?i%=c%:NEXT
 3100ENDIF
 3100PRINT"Generating map...":PROCf:MODEG%:OFF
 3160*screenload <Tunnel$Dir>.texture
 3160PRINT"Generating texture(s)... ";:GCOL63TINT255:DIME% 256*512:DIMJ% 256*512+256:FORy%=0TO64:FORx%=0TO64:c%=POINT(x%<<h%,y%<<e%)<<2:c%+=TINT(x%<<h%,y%<<e%)>>6:SYS"ColourTrans_GCOLToColourNumber",c%TOc%:E%?(x%+(y%<<6))=c%:J%?(x%+(y%<<6))=0:NEXT
 3280LINE0,y%<<e%,64<<h%,y%<<e%:NEXT:FORx%=64*64TO64*128-1STEP4:E%!x%=E%!(x%-64*64):NEXT:PRINT"Done":CLS:PRINT"Generating depth cueing... ";:PROCb(255,255,255):x%=n%<<h%:y%=f%<<e%:RECTANGLEFILL0,(z%<<e%)-y%,x%,y%:FORr%=f%/3TO0STEP-2:s%=(r%<<8)/(f%/3):s%=(s%*3)/4:s%+=63
 3460PROCb(s%,s%,s%):CIRCLEFILLx%>>1,(z%<<e%)-(y%>>1),r%<<e%:NEXT:ta%=n%*f%*4:DIMw% ta%:!w%=ta%:w%!4=0:w%!8=16:w%!12=16:SYS"OS_SpriteOp",9+256,w%:MOVE0,(z%<<e%)-y%:MOVEx%-1,(z%<<e%)-1:SYS"OS_SpriteOp",14+256,w%,"back":PRINTTAB(0,1);"Press space":ENDPROC
 3630
 3650DEFPROCd(t%):LOCALx%:FORx%=0TOo%-1:t%?x%=RND(256)-1:NEXT:ENDPROC
 3700
 3720DEFFNb(i%):LOCALr%,g%,b%,l%,m%:LOCALua%,va%,wa%:IFi%<128i%=(i%<<1)ELSEi%=255
 3750r%=i%:b%=255-i%:IFi%<128g%=i%<<1ELSEg%=(255-i%)<<1
 3780=(r%<<8)+(g%<<16)+(b%<<24)
 3810DEFFNc(i%):LOCALr%,g%,b%:IFi%<128i%=(i%<<1)ELSEi%=255
 3840IFi%<128ANDi%>0r%=(i%<<1)ELSEIFi%>0r%=255ELSEr%=0
 3850IFi%>0g%=((i%)<<0)ELSEg%=0
 3860b%=0:=(r%<<8)+(g%<<16)+(b%<<24)
 3910DEFFNd(i%):LOCALr%,g%,b%:IFi%<128i%=(i%<<1)ELSEi%=255
 3940IFi%<128r%=i%<<1ELSEr%=(255-i%)<<1
 3950IFi%>128b%=i%<<1ELSEb%=(255-i%)<<1
 3960g%=255:=(r%<<8)+(g%<<16)+(b%<<24)
 4010DEFFNe(i%):LOCALr%,g%,b%,D%:IFi%<128i%=(i%<<1)ELSEi%=255
 4040IFi%<128r%=i%<<1ELSEr%=(255-i%)<<1
 4050IFi%>128b%=i%<<1ELSEb%=(255-i%)<<1
 4060D%=(i%<<1)AND255:IFD%<128g%=D%<<1ELSEg%=(255-D%)<<1
 4071=(r%<<8)+(g%<<16)+(b%<<24)
 4110DEFPROCa:SWAPU%,V%:SYS6,112,U%:SYS6,113,V%:ENDPROC
 4150
 4170DEFPROCb(r%,g%,b%):SYS"ColourTrans_SetGCOL",(r%<<8)+(g%<<16)+(b%<<24),,,(1<<8):ENDPROC
 4190
 4210DEFPROCg(x%,y%,K%,q%):c%=(K%+q%)<<1:GCOLc%>>4:POINTx%<<h%,y%<<e%:ENDPROC
 4270
 4290DEFPROCh(y%,q%):GCOLq%>>4:LINE0,y%<<e%,n%<<h%,y%<<e%:ENDPROC
t�>ADFS::Richard.$.Develop4.Tunnel.!Tunnel.!RunImage squished by MH's BASIC cruncher v1.30 16/9/89 On 26 Apr 1998
��c:aa%=(H%-n%)>>1:R%=(z%-(f%-16))>>1:R%+=8:ba%=aa%+(H%*R%):S%=(H%-n%)<<(h%-1):T%=(z%-f%)<<(e%-1):�:ȗ�(1<<h%):ȗȓ0,0,63<<(3+h%),1<<e%:�0Ȝ0:a%=0:t%=0:v%=0:L%=�:�:U%=1:V%=2:�a:�:�a:�:t%+=(v%>>2):�t%>63t%-=64
��t%<0t%+=64
�ȗM%,y%,b%:�b%=4v%+=1
�b%=1v%-=1
"�b%=2�:ȗi%,j%,k%:�k%=0:L%=�L%
�v%<-50v%=-50
"�v%>50v%=50
,$�L%M%=((31*�(�(a%)))+32)<<(3+h%)
@�a%+=10:�0,0);"Velocity = ";v%;" m/s     ":�0,1);"Roll     = ";(90*M%)>>(9+h%);"�    ":�63Ȝ255:�N%ș46,34+256,w%,"back",S%,T%
|'�N%ȓȐS%,T%,(n%<<h%)-1,(f%<<e%)-1
�5A%=W%:B%=E%+(t%<<6)+(M%>>(3+h%)):C%=ba%:�ca%:�O%�
�7�d(J%):A%=J%:�da%:A%=J%:B%=E%:C%=X%:�ea%:A%=E%:�fa%
��
��(0)="*"�*bc
�Ȗ:�a:�0:�

0���e:�ga% 4048:x%=8:y%=9:F%=10:Y%=11:Z%=12:�I%=0�2�2:P%=ga%:[OPT I%:.ca%:STMFD13!,{0-12,14}:MOV Y%,0:MOV Z%,1:ADR0,ha%:ADR1,ia%:SWI "OS_ReadVduVariables":LDR F%,[1]:ADD F%,F%,2:MOV y%,#0:MOV5,#0:MOV6,#0:MOV1,#H%:.ja%:MOV x%,#0:.ka%:MOV2,#0: ]
���la%=0�3:s%=la%*8:[OPT I%:LDR4,[Y%,5,ASL#2]:LDRB3,[Z%,4]:�R2,2,3,LSL#s%:ADD5,5,#1: ]:�:[OPT I%:LDR4,[F%,6]:�2,2,4:STR2,[F%,6]:ADD6,6,#4:ADD x%,x%,#4:CMP x%,#(n%):BLT ka%:ADD y%,y%,#1:MUL 6,y%,1:CMP y%,#(f%):BLT ja%:LDMFD13!,{0-12,pc}
~�.fa%:STMFD13!,{0-12,14}:MOV1,0:MOV0,#0:ADD2,1,#o%*o%:.ma%:LDMIA1!,{3-10}:STMIA2!,{3-10}:ADD0,0,#8*4:CMP0,#o%*o%:BLT ma%:LDMFD13!,{0-12,pc}:.da%:STMFD13!,{0-12,14}:MOV1,#o%*o%:.na%:MOV2,#0:.oa%:LDRB3,[0,1]:SUB4,1,#o%+1:LDRB5,[0,4]
��ADD3,3,5:ADD4,4,#1:LDRB5,[0,4]:ADD3,3,5:ADD4,4,#1:LDRB5,[0,4]:ADD3,3,5:MOV3,3,LSR#2:CMP3,#1:SUBGE3,3,#1:STRB3,[0,1]:SUB1,1,#1:ADD2,2,#1:CMP2,#o%:BLT oa%:CMP1,#0:BGT na%:LDMFD13!,{0-12,pc}:.ea%:STMFD13!,{0-12,14}:MOV3,#0:.pa%:LDRB4,[0,3]
�xLDRB5,[2,4]:STRB5,[1,3]:ADD3,3,#1:CMP3,#o%*o%:BLT pa%:LDMFD13!,{0-12,pc}:.ha%:EQUD148:EQUD-1:.ia%:EQUD0:EQUD0: ]:�:�
�
�_��f:�W% n%*f%*4:v%=0:�y%=-(f%>>1)�(f%>>1)-1:u%=0:�x%=-(n%>>1)�(n%>>1)-1:_%=�:�y%=0y%=1:_%=�
�Cr%=Q%-�((x%*x%)+(y%*y%)):a%=((�(�(x%/y%))+180)*256)/360:�_%y%=0
�wq%=�a(r%):K%=(a%):�g(x%+(n%>>1),y%+(f%>>1),K%�63,q%�63):W%!((u%+(v%*n%))<<2)=(K%�63)�((q%�63)<<6):u%+=1:�:v%+=1:�:�
R
fݤf(x%,q%):=(q%*x%*qa%)>>10
�-ݤa(y%):�t%,d%:d%=Q%-y%:t%=(y%*`%)/d%:=t%
���c:��0:�:�" : ";�:�
���"Tunnel program (small version)":�"by Richard Wareham 1998":�:�"Do you want depth cueing?":�"WARNING:This can slow the display down by half":�"(Y/N) : ";:�:G$=�:�G$="Y"�G$="y"�G$="N"�G$="n":�G$:�G$="Y"�G$="y"�N%=��N%=�
	L��:�"Do you want to set the walls on fire":�"WARNING:This makes the screen _very_ hot":�"(Y/N) : ";:�:G$=�:�G$="Y"�G$="y"�G$="N"�G$="n":�G$:�G$="Y"�G$="y"�O%=��O%=�
	�O�"Size:":�" 1 - Small, 2 - Large":�:G$=�:�G$="1"�G$="2":�G$="1"�m=1.5�m=3.5
	��n%=64*m:f%=64*m:h%=2:e%=2:H%=320:z%=240:G%=13:ra%=9:�ra%:�:Q%=f%:a=1:sa%=60:`%=(Q%>>4)/�(�(90-sa%)):qa%=((1<<10))/(`%*a):o%=64:�"Assembling... ";:�e:�"Done":�c%=0�15:�c%,c%<<4,c%<<4,c%<<4:�:�O%�
h��"Which fire palette:":�" 1) Standard":�" 2) Predator":�" 3) Yellow & Blue":�" 4) Predator 2":�:G$=�:�G$="1"�G$="2"�G$="3"�G$="4":�G$="1"p%=2
��G$="2"p%=1
��G$="3"p%=3
��G$="4"p%=4
�Q�X% 256:�i%=0�255:�p%=1ș"ColourTrans_ReturnColourNumberForMode",�b(i%),G%�c%
�?�p%=2ș"ColourTrans_ReturnColourNumberForMode",�c(i%),G%�c%
�?�p%=3ș"ColourTrans_ReturnColourNumberForMode",�d(i%),G%�c%
�?�p%=4ș"ColourTrans_ReturnColourNumberForMode",�e(i%),G%�c%
�X%?i%=c%:�
�
!�"Generating map...":�f:�G%:�
X$*screenload <Tunnel$Dir>.texture
X��"Generating texture(s)... ";:�63Ȝ255:�E% 256*512:�J% 256*512+256:�y%=0�64:�x%=0�64:c%=�x%<<h%,y%<<e%)<<2:c%+=Ȝ(x%<<h%,y%<<e%)>>6:ș"ColourTrans_GCOLToColourNumber",c%�c%:E%?(x%+(y%<<6))=c%:J%?(x%+(y%<<6))=0:�
��0,y%<<e%,64<<h%,y%<<e%:�:�x%=64*64�64*128-1�4:E%!x%=E%!(x%-64*64):�:�"Done":�:�"Generating depth cueing... ";:�b(255,255,255):x%=n%<<h%:y%=f%<<e%:ȓȐ0,(z%<<e%)-y%,x%,y%:�r%=f%/3�0�-2:s%=(r%<<8)/(f%/3):s%=(s%*3)/4:s%+=63

���b(s%,s%,s%):ȏȐx%>>1,(z%<<e%)-(y%>>1),r%<<e%:�:ta%=n%*f%*4:�w% ta%:!w%=ta%:w%!4=0:w%!8=16:w%!12=16:ș"OS_SpriteOp",9+256,w%:�0,(z%<<e%)-y%:�x%-1,(z%<<e%)-1:ș"OS_SpriteOp",14+256,w%,"back":�0,1);"Press space":�
.
B-��d(t%):�x%:�x%=0�o%-1:t%?x%=�(256)-1:�:�
t
�Aݤb(i%):�r%,g%,b%,l%,m%:�ua%,va%,wa%:�i%<128i%=(i%<<1)�i%=255
�2r%=i%:b%=255-i%:�i%<128g%=i%<<1�g%=(255-i%)<<1
�=(r%<<8)+(g%<<16)+(b%<<24)
�.ݤc(i%):�r%,g%,b%:�i%<128i%=(i%<<1)�i%=255
+�i%<128�i%>0r%=(i%<<1)��i%>0r%=255�r%=0

�i%>0g%=((i%)<<0)�g%=0
#b%=0:=(r%<<8)+(g%<<16)+(b%<<24)
F.ݤd(i%):�r%,g%,b%:�i%<128i%=(i%<<1)�i%=255
d"�i%<128r%=i%<<1�r%=(255-i%)<<1
n"�i%>128b%=i%<<1�b%=(255-i%)<<1
x%g%=255:=(r%<<8)+(g%<<16)+(b%<<24)
�1ݤe(i%):�r%,g%,b%,D%:�i%<128i%=(i%<<1)�i%=255
�"�i%<128r%=i%<<1�r%=(255-i%)<<1
�"�i%>128b%=i%<<1�b%=(255-i%)<<1
�1D%=(i%<<1)�255:�D%<128g%=D%<<1�g%=(255-D%)<<1
�=(r%<<8)+(g%<<16)+(b%<<24)
'��a:ȔU%,V%:ș6,112,U%:ș6,113,V%:�
6
JN��b(r%,g%,b%):ș"ColourTrans_SetGCOL",(r%<<8)+(g%<<16)+(b%<<24),,,(1<<8):�
^
r;��g(x%,y%,K%,q%):c%=(K%+q%)<<1:�c%>>4:Ȓx%<<h%,y%<<e%:�
�
�/��h(y%,q%):�q%>>4:�0,y%<<e%,n%<<h%,y%<<e%:�
�
00000000  0d 00 01 74 f4 3e 41 44  46 53 3a 3a 52 69 63 68  |...t.>ADFS::Rich|
00000010  61 72 64 2e 24 2e 44 65  76 65 6c 6f 70 34 2e 54  |ard.$.Develop4.T|
00000020  75 6e 6e 65 6c 2e 21 54  75 6e 6e 65 6c 2e 21 52  |unnel.!Tunnel.!R|
00000030  75 6e 49 6d 61 67 65 20  73 71 75 69 73 68 65 64  |unImage squished|
00000040  20 62 79 20 4d 48 27 73  20 42 41 53 49 43 20 63  | by MH's BASIC c|
00000050  72 75 6e 63 68 65 72 20  76 31 2e 33 30 20 31 36  |runcher v1.30 16|
00000060  2f 39 2f 38 39 20 4f 6e  20 32 36 20 41 70 72 20  |/9/89 On 26 Apr |
00000070  31 39 39 38 0d 00 02 d3  f2 63 3a 61 61 25 3d 28  |1998.....c:aa%=(|
00000080  48 25 2d 6e 25 29 3e 3e  31 3a 52 25 3d 28 7a 25  |H%-n%)>>1:R%=(z%|
00000090  2d 28 66 25 2d 31 36 29  29 3e 3e 31 3a 52 25 2b  |-(f%-16))>>1:R%+|
000000a0  3d 38 3a 62 61 25 3d 61  61 25 2b 28 48 25 2a 52  |=8:ba%=aa%+(H%*R|
000000b0  25 29 3a 53 25 3d 28 48  25 2d 6e 25 29 3c 3c 28  |%):S%=(H%-n%)<<(|
000000c0  68 25 2d 31 29 3a 54 25  3d 28 7a 25 2d 66 25 29  |h%-1):T%=(z%-f%)|
000000d0  3c 3c 28 65 25 2d 31 29  3a db 3a c8 97 88 28 31  |<<(e%-1):.:...(1|
000000e0  3c 3c 68 25 29 3a c8 97  c8 93 30 2c 30 2c 36 33  |<<h%):....0,0,63|
000000f0  3c 3c 28 33 2b 68 25 29  2c 31 3c 3c 65 25 3a e6  |<<(3+h%),1<<e%:.|
00000100  30 c8 9c 30 3a 61 25 3d  30 3a 74 25 3d 30 3a 76  |0..0:a%=0:t%=0:v|
00000110  25 3d 30 3a 4c 25 3d a3  3a db 3a 55 25 3d 31 3a  |%=0:L%=.:.:U%=1:|
00000120  56 25 3d 32 3a f2 61 3a  db 3a f2 61 3a f5 3a 74  |V%=2:.a:.:.a:.:t|
00000130  25 2b 3d 28 76 25 3e 3e  32 29 3a e7 74 25 3e 36  |%+=(v%>>2):.t%>6|
00000140  33 74 25 2d 3d 36 34 0d  00 e6 0f e7 74 25 3c 30  |3t%-=64.....t%<0|
00000150  74 25 2b 3d 36 34 0d 00  f0 19 c8 97 4d 25 2c 79  |t%+=64......M%,y|
00000160  25 2c 62 25 3a e7 62 25  3d 34 76 25 2b 3d 31 0d  |%,b%:.b%=4v%+=1.|
00000170  01 04 0e e7 62 25 3d 31  76 25 2d 3d 31 0d 01 0e  |....b%=1v%-=1...|
00000180  22 e7 62 25 3d 32 f5 3a  c8 97 69 25 2c 6a 25 2c  |".b%=2.:..i%,j%,|
00000190  6b 25 3a fd 6b 25 3d 30  3a 4c 25 3d ac 4c 25 0d  |k%:.k%=0:L%=.L%.|
000001a0  01 18 11 e7 76 25 3c 2d  35 30 76 25 3d 2d 35 30  |....v%<-50v%=-50|
000001b0  0d 01 22 0f e7 76 25 3e  35 30 76 25 3d 35 30 0d  |.."..v%>50v%=50.|
000001c0  01 2c 24 e7 4c 25 4d 25  3d 28 28 33 31 2a b5 28  |.,$.L%M%=((31*.(|
000001d0  b2 28 61 25 29 29 29 2b  33 32 29 3c 3c 28 33 2b  |.(a%)))+32)<<(3+|
000001e0  68 25 29 0d 01 40 83 61  25 2b 3d 31 30 3a f1 8a  |h%)..@.a%+=10:..|
000001f0  30 2c 30 29 3b 22 56 65  6c 6f 63 69 74 79 20 3d  |0,0);"Velocity =|
00000200  20 22 3b 76 25 3b 22 20  6d 2f 73 20 20 20 20 20  | ";v%;" m/s     |
00000210  22 3a f1 8a 30 2c 31 29  3b 22 52 6f 6c 6c 20 20  |":..0,1);"Roll  |
00000220  20 20 20 3d 20 22 3b 28  39 30 2a 4d 25 29 3e 3e  |   = ";(90*M%)>>|
00000230  28 39 2b 68 25 29 3b 22  b0 20 20 20 20 22 3a e6  |(9+h%);".    ":.|
00000240  36 33 c8 9c 32 35 35 3a  e7 4e 25 c8 99 34 36 2c  |63..255:.N%..46,|
00000250  33 34 2b 32 35 36 2c 77  25 2c 22 62 61 63 6b 22  |34+256,w%,"back"|
00000260  2c 53 25 2c 54 25 0d 01  7c 27 e7 ac 4e 25 c8 93  |,S%,T%..|'..N%..|
00000270  c8 90 53 25 2c 54 25 2c  28 6e 25 3c 3c 68 25 29  |..S%,T%,(n%<<h%)|
00000280  2d 31 2c 28 66 25 3c 3c  65 25 29 2d 31 0d 01 86  |-1,(f%<<e%)-1...|
00000290  35 41 25 3d 57 25 3a 42  25 3d 45 25 2b 28 74 25  |5A%=W%:B%=E%+(t%|
000002a0  3c 3c 36 29 2b 28 4d 25  3e 3e 28 33 2b 68 25 29  |<<6)+(M%>>(3+h%)|
000002b0  29 3a 43 25 3d 62 61 25  3a d6 63 61 25 3a e7 4f  |):C%=ba%:.ca%:.O|
000002c0  25 8c 0d 01 a4 37 f2 64  28 4a 25 29 3a 41 25 3d  |%....7.d(J%):A%=|
000002d0  4a 25 3a d6 64 61 25 3a  41 25 3d 4a 25 3a 42 25  |J%:.da%:A%=J%:B%|
000002e0  3d 45 25 3a 43 25 3d 58  25 3a d6 65 61 25 3a 41  |=E%:C%=X%:.ea%:A|
000002f0  25 3d 45 25 3a d6 66 61  25 0d 01 f4 05 cd 0d 01  |%=E%:.fa%.......|
00000300  f4 11 e7 bf 28 30 29 3d  22 2a 22 8c 2a 62 63 0d  |....(0)="*".*bc.|
00000310  01 fe 0e c8 96 3a f2 61  3a fd 30 3a e0 0d 02 1c  |.....:.a:.0:....|
00000320  04 0d 02 30 f5 dd f2 65  3a de 67 61 25 20 34 30  |...0...e:.ga% 40|
00000330  34 38 3a 78 25 3d 38 3a  79 25 3d 39 3a 46 25 3d  |48:x%=8:y%=9:F%=|
00000340  31 30 3a 59 25 3d 31 31  3a 5a 25 3d 31 32 3a e3  |10:Y%=11:Z%=12:.|
00000350  49 25 3d 30 b8 32 88 32  3a 50 25 3d 67 61 25 3a  |I%=0.2.2:P%=ga%:|
00000360  5b 4f 50 54 20 49 25 3a  2e 63 61 25 3a 53 54 4d  |[OPT I%:.ca%:STM|
00000370  46 44 31 33 21 2c 7b 30  2d 31 32 2c 31 34 7d 3a  |FD13!,{0-12,14}:|
00000380  4d 4f 56 20 59 25 2c 30  3a 4d 4f 56 20 5a 25 2c  |MOV Y%,0:MOV Z%,|
00000390  31 3a 41 44 52 30 2c 68  61 25 3a 41 44 52 31 2c  |1:ADR0,ha%:ADR1,|
000003a0  69 61 25 3a 53 57 49 20  22 4f 53 5f 52 65 61 64  |ia%:SWI "OS_Read|
000003b0  56 64 75 56 61 72 69 61  62 6c 65 73 22 3a 4c 44  |VduVariables":LD|
000003c0  52 20 46 25 2c 5b 31 5d  3a 41 44 44 20 46 25 2c  |R F%,[1]:ADD F%,|
000003d0  46 25 2c 32 3a 4d 4f 56  20 79 25 2c 23 30 3a 4d  |F%,2:MOV y%,#0:M|
000003e0  4f 56 35 2c 23 30 3a 4d  4f 56 36 2c 23 30 3a 4d  |OV5,#0:MOV6,#0:M|
000003f0  4f 56 31 2c 23 48 25 3a  2e 6a 61 25 3a 4d 4f 56  |OV1,#H%:.ja%:MOV|
00000400  20 78 25 2c 23 30 3a 2e  6b 61 25 3a 4d 4f 56 32  | x%,#0:.ka%:MOV2|
00000410  2c 23 30 3a 20 5d 0d 03  84 ed e3 6c 61 25 3d 30  |,#0: ].....la%=0|
00000420  b8 33 3a 73 25 3d 6c 61  25 2a 38 3a 5b 4f 50 54  |.3:s%=la%*8:[OPT|
00000430  20 49 25 3a 4c 44 52 34  2c 5b 59 25 2c 35 2c 41  | I%:LDR4,[Y%,5,A|
00000440  53 4c 23 32 5d 3a 4c 44  52 42 33 2c 5b 5a 25 2c  |SL#2]:LDRB3,[Z%,|
00000450  34 5d 3a 84 52 32 2c 32  2c 33 2c 4c 53 4c 23 73  |4]:.R2,2,3,LSL#s|
00000460  25 3a 41 44 44 35 2c 35  2c 23 31 3a 20 5d 3a ed  |%:ADD5,5,#1: ]:.|
00000470  3a 5b 4f 50 54 20 49 25  3a 4c 44 52 34 2c 5b 46  |:[OPT I%:LDR4,[F|
00000480  25 2c 36 5d 3a 80 32 2c  32 2c 34 3a 53 54 52 32  |%,6]:.2,2,4:STR2|
00000490  2c 5b 46 25 2c 36 5d 3a  41 44 44 36 2c 36 2c 23  |,[F%,6]:ADD6,6,#|
000004a0  34 3a 41 44 44 20 78 25  2c 78 25 2c 23 34 3a 43  |4:ADD x%,x%,#4:C|
000004b0  4d 50 20 78 25 2c 23 28  6e 25 29 3a 42 4c 54 20  |MP x%,#(n%):BLT |
000004c0  6b 61 25 3a 41 44 44 20  79 25 2c 79 25 2c 23 31  |ka%:ADD y%,y%,#1|
000004d0  3a 4d 55 4c 20 36 2c 79  25 2c 31 3a 43 4d 50 20  |:MUL 6,y%,1:CMP |
000004e0  79 25 2c 23 28 66 25 29  3a 42 4c 54 20 6a 61 25  |y%,#(f%):BLT ja%|
000004f0  3a 4c 44 4d 46 44 31 33  21 2c 7b 30 2d 31 32 2c  |:LDMFD13!,{0-12,|
00000500  70 63 7d 0d 04 7e e9 2e  66 61 25 3a 53 54 4d 46  |pc}..~..fa%:STMF|
00000510  44 31 33 21 2c 7b 30 2d  31 32 2c 31 34 7d 3a 4d  |D13!,{0-12,14}:M|
00000520  4f 56 31 2c 30 3a 4d 4f  56 30 2c 23 30 3a 41 44  |OV1,0:MOV0,#0:AD|
00000530  44 32 2c 31 2c 23 6f 25  2a 6f 25 3a 2e 6d 61 25  |D2,1,#o%*o%:.ma%|
00000540  3a 4c 44 4d 49 41 31 21  2c 7b 33 2d 31 30 7d 3a  |:LDMIA1!,{3-10}:|
00000550  53 54 4d 49 41 32 21 2c  7b 33 2d 31 30 7d 3a 41  |STMIA2!,{3-10}:A|
00000560  44 44 30 2c 30 2c 23 38  2a 34 3a 43 4d 50 30 2c  |DD0,0,#8*4:CMP0,|
00000570  23 6f 25 2a 6f 25 3a 42  4c 54 20 6d 61 25 3a 4c  |#o%*o%:BLT ma%:L|
00000580  44 4d 46 44 31 33 21 2c  7b 30 2d 31 32 2c 70 63  |DMFD13!,{0-12,pc|
00000590  7d 3a 2e 64 61 25 3a 53  54 4d 46 44 31 33 21 2c  |}:.da%:STMFD13!,|
000005a0  7b 30 2d 31 32 2c 31 34  7d 3a 4d 4f 56 31 2c 23  |{0-12,14}:MOV1,#|
000005b0  6f 25 2a 6f 25 3a 2e 6e  61 25 3a 4d 4f 56 32 2c  |o%*o%:.na%:MOV2,|
000005c0  23 30 3a 2e 6f 61 25 3a  4c 44 52 42 33 2c 5b 30  |#0:.oa%:LDRB3,[0|
000005d0  2c 31 5d 3a 53 55 42 34  2c 31 2c 23 6f 25 2b 31  |,1]:SUB4,1,#o%+1|
000005e0  3a 4c 44 52 42 35 2c 5b  30 2c 34 5d 0d 05 aa f0  |:LDRB5,[0,4]....|
000005f0  41 44 44 33 2c 33 2c 35  3a 41 44 44 34 2c 34 2c  |ADD3,3,5:ADD4,4,|
00000600  23 31 3a 4c 44 52 42 35  2c 5b 30 2c 34 5d 3a 41  |#1:LDRB5,[0,4]:A|
00000610  44 44 33 2c 33 2c 35 3a  41 44 44 34 2c 34 2c 23  |DD3,3,5:ADD4,4,#|
00000620  31 3a 4c 44 52 42 35 2c  5b 30 2c 34 5d 3a 41 44  |1:LDRB5,[0,4]:AD|
00000630  44 33 2c 33 2c 35 3a 4d  4f 56 33 2c 33 2c 4c 53  |D3,3,5:MOV3,3,LS|
00000640  52 23 32 3a 43 4d 50 33  2c 23 31 3a 53 55 42 47  |R#2:CMP3,#1:SUBG|
00000650  45 33 2c 33 2c 23 31 3a  53 54 52 42 33 2c 5b 30  |E3,3,#1:STRB3,[0|
00000660  2c 31 5d 3a 53 55 42 31  2c 31 2c 23 31 3a 41 44  |,1]:SUB1,1,#1:AD|
00000670  44 32 2c 32 2c 23 31 3a  43 4d 50 32 2c 23 6f 25  |D2,2,#1:CMP2,#o%|
00000680  3a 42 4c 54 20 6f 61 25  3a 43 4d 50 31 2c 23 30  |:BLT oa%:CMP1,#0|
00000690  3a 42 47 54 20 6e 61 25  3a 4c 44 4d 46 44 31 33  |:BGT na%:LDMFD13|
000006a0  21 2c 7b 30 2d 31 32 2c  70 63 7d 3a 2e 65 61 25  |!,{0-12,pc}:.ea%|
000006b0  3a 53 54 4d 46 44 31 33  21 2c 7b 30 2d 31 32 2c  |:STMFD13!,{0-12,|
000006c0  31 34 7d 3a 4d 4f 56 33  2c 23 30 3a 2e 70 61 25  |14}:MOV3,#0:.pa%|
000006d0  3a 4c 44 52 42 34 2c 5b  30 2c 33 5d 0d 06 ea 78  |:LDRB4,[0,3]...x|
000006e0  4c 44 52 42 35 2c 5b 32  2c 34 5d 3a 53 54 52 42  |LDRB5,[2,4]:STRB|
000006f0  35 2c 5b 31 2c 33 5d 3a  41 44 44 33 2c 33 2c 23  |5,[1,3]:ADD3,3,#|
00000700  31 3a 43 4d 50 33 2c 23  6f 25 2a 6f 25 3a 42 4c  |1:CMP3,#o%*o%:BL|
00000710  54 20 70 61 25 3a 4c 44  4d 46 44 31 33 21 2c 7b  |T pa%:LDMFD13!,{|
00000720  30 2d 31 32 2c 70 63 7d  3a 2e 68 61 25 3a 45 51  |0-12,pc}:.ha%:EQ|
00000730  55 44 31 34 38 3a 45 51  55 44 2d 31 3a 2e 69 61  |UD148:EQUD-1:.ia|
00000740  25 3a 45 51 55 44 30 3a  45 51 55 44 30 3a 20 5d  |%:EQUD0:EQUD0: ]|
00000750  3a ed 3a e1 0d 07 80 04  0d 07 94 5f dd f2 66 3a  |:.:........_..f:|
00000760  de 57 25 20 6e 25 2a 66  25 2a 34 3a 76 25 3d 30  |.W% n%*f%*4:v%=0|
00000770  3a e3 79 25 3d 2d 28 66  25 3e 3e 31 29 b8 28 66  |:.y%=-(f%>>1).(f|
00000780  25 3e 3e 31 29 2d 31 3a  75 25 3d 30 3a e3 78 25  |%>>1)-1:u%=0:.x%|
00000790  3d 2d 28 6e 25 3e 3e 31  29 b8 28 6e 25 3e 3e 31  |=-(n%>>1).(n%>>1|
000007a0  29 2d 31 3a 5f 25 3d a3  3a e7 79 25 3d 30 79 25  |)-1:_%=.:.y%=0y%|
000007b0  3d 31 3a 5f 25 3d b9 0d  07 da 43 72 25 3d 51 25  |=1:_%=....Cr%=Q%|
000007c0  2d b6 28 28 78 25 2a 78  25 29 2b 28 79 25 2a 79  |-.((x%*x%)+(y%*y|
000007d0  25 29 29 3a 61 25 3d 28  28 9d 28 99 28 78 25 2f  |%)):a%=((.(.(x%/|
000007e0  79 25 29 29 2b 31 38 30  29 2a 32 35 36 29 2f 33  |y%))+180)*256)/3|
000007f0  36 30 3a e7 5f 25 79 25  3d 30 0d 07 f8 77 71 25  |60:._%y%=0...wq%|
00000800  3d a4 61 28 72 25 29 3a  4b 25 3d 28 61 25 29 3a  |=.a(r%):K%=(a%):|
00000810  f2 67 28 78 25 2b 28 6e  25 3e 3e 31 29 2c 79 25  |.g(x%+(n%>>1),y%|
00000820  2b 28 66 25 3e 3e 31 29  2c 4b 25 80 36 33 2c 71  |+(f%>>1),K%.63,q|
00000830  25 80 36 33 29 3a 57 25  21 28 28 75 25 2b 28 76  |%.63):W%!((u%+(v|
00000840  25 2a 6e 25 29 29 3c 3c  32 29 3d 28 4b 25 80 36  |%*n%))<<2)=(K%.6|
00000850  33 29 84 28 28 71 25 80  36 33 29 3c 3c 36 29 3a  |3).((q%.63)<<6):|
00000860  75 25 2b 3d 31 3a ed 3a  76 25 2b 3d 31 3a ed 3a  |u%+=1:.:v%+=1:.:|
00000870  e1 0d 08 52 04 0d 08 66  1f dd a4 66 28 78 25 2c  |...R...f...f(x%,|
00000880  71 25 29 3a 3d 28 71 25  2a 78 25 2a 71 61 25 29  |q%):=(q%*x%*qa%)|
00000890  3e 3e 31 30 0d 08 84 2d  dd a4 61 28 79 25 29 3a  |>>10...-..a(y%):|
000008a0  ea 74 25 2c 64 25 3a 64  25 3d 51 25 2d 79 25 3a  |.t%,d%:d%=Q%-y%:|
000008b0  74 25 3d 28 79 25 2a 60  25 29 2f 64 25 3a 3d 74  |t%=(y%*`%)/d%:=t|
000008c0  25 0d 08 c0 19 dd f2 63  3a ee 85 eb 30 3a f6 3a  |%......c:...0:.:|
000008d0  f1 22 20 3a 20 22 3b 9e  3a e0 0d 08 d4 df f1 22  |." : ";.:......"|
000008e0  54 75 6e 6e 65 6c 20 70  72 6f 67 72 61 6d 20 28  |Tunnel program (|
000008f0  73 6d 61 6c 6c 20 76 65  72 73 69 6f 6e 29 22 3a  |small version)":|
00000900  f1 22 62 79 20 52 69 63  68 61 72 64 20 57 61 72  |."by Richard War|
00000910  65 68 61 6d 20 31 39 39  38 22 3a f1 3a f1 22 44  |eham 1998":.:."D|
00000920  6f 20 79 6f 75 20 77 61  6e 74 20 64 65 70 74 68  |o you want depth|
00000930  20 63 75 65 69 6e 67 3f  22 3a f1 22 57 41 52 4e  | cueing?":."WARN|
00000940  49 4e 47 3a 54 68 69 73  20 63 61 6e 20 73 6c 6f  |ING:This can slo|
00000950  77 20 74 68 65 20 64 69  73 70 6c 61 79 20 64 6f  |w the display do|
00000960  77 6e 20 62 79 20 68 61  6c 66 22 3a f1 22 28 59  |wn by half":."(Y|
00000970  2f 4e 29 20 3a 20 22 3b  3a f5 3a 47 24 3d be 3a  |/N) : ";:.:G$=.:|
00000980  fd 47 24 3d 22 59 22 84  47 24 3d 22 79 22 84 47  |.G$="Y".G$="y".G|
00000990  24 3d 22 4e 22 84 47 24  3d 22 6e 22 3a f1 47 24  |$="N".G$="n":.G$|
000009a0  3a e7 47 24 3d 22 59 22  84 47 24 3d 22 79 22 8c  |:.G$="Y".G$="y".|
000009b0  4e 25 3d b9 8b 4e 25 3d  a3 0d 09 4c a7 f1 3a f1  |N%=..N%=...L..:.|
000009c0  22 44 6f 20 79 6f 75 20  77 61 6e 74 20 74 6f 20  |"Do you want to |
000009d0  73 65 74 20 74 68 65 20  77 61 6c 6c 73 20 6f 6e  |set the walls on|
000009e0  20 66 69 72 65 22 3a f1  22 57 41 52 4e 49 4e 47  | fire":."WARNING|
000009f0  3a 54 68 69 73 20 6d 61  6b 65 73 20 74 68 65 20  |:This makes the |
00000a00  73 63 72 65 65 6e 20 5f  76 65 72 79 5f 20 68 6f  |screen _very_ ho|
00000a10  74 22 3a f1 22 28 59 2f  4e 29 20 3a 20 22 3b 3a  |t":."(Y/N) : ";:|
00000a20  f5 3a 47 24 3d be 3a fd  47 24 3d 22 59 22 84 47  |.:G$=.:.G$="Y".G|
00000a30  24 3d 22 79 22 84 47 24  3d 22 4e 22 84 47 24 3d  |$="y".G$="N".G$=|
00000a40  22 6e 22 3a f1 47 24 3a  e7 47 24 3d 22 59 22 84  |"n":.G$:.G$="Y".|
00000a50  47 24 3d 22 79 22 8c 4f  25 3d b9 8b 4f 25 3d a3  |G$="y".O%=..O%=.|
00000a60  0d 09 a6 4f f1 22 53 69  7a 65 3a 22 3a f1 22 20  |...O."Size:":." |
00000a70  31 20 2d 20 53 6d 61 6c  6c 2c 20 32 20 2d 20 4c  |1 - Small, 2 - L|
00000a80  61 72 67 65 22 3a f5 3a  47 24 3d be 3a fd 47 24  |arge":.:G$=.:.G$|
00000a90  3d 22 31 22 84 47 24 3d  22 32 22 3a e7 47 24 3d  |="1".G$="2":.G$=|
00000aa0  22 31 22 8c 6d 3d 31 2e  35 8b 6d 3d 33 2e 35 0d  |"1".m=1.5.m=3.5.|
00000ab0  09 f6 c6 6e 25 3d 36 34  2a 6d 3a 66 25 3d 36 34  |...n%=64*m:f%=64|
00000ac0  2a 6d 3a 68 25 3d 32 3a  65 25 3d 32 3a 48 25 3d  |*m:h%=2:e%=2:H%=|
00000ad0  33 32 30 3a 7a 25 3d 32  34 30 3a 47 25 3d 31 33  |320:z%=240:G%=13|
00000ae0  3a 72 61 25 3d 39 3a eb  72 61 25 3a 87 3a 51 25  |:ra%=9:.ra%:.:Q%|
00000af0  3d 66 25 3a 61 3d 31 3a  73 61 25 3d 36 30 3a 60  |=f%:a=1:sa%=60:`|
00000b00  25 3d 28 51 25 3e 3e 34  29 2f b7 28 b2 28 39 30  |%=(Q%>>4)/.(.(90|
00000b10  2d 73 61 25 29 29 3a 71  61 25 3d 28 28 31 3c 3c  |-sa%)):qa%=((1<<|
00000b20  31 30 29 29 2f 28 60 25  2a 61 29 3a 6f 25 3d 36  |10))/(`%*a):o%=6|
00000b30  34 3a f1 22 41 73 73 65  6d 62 6c 69 6e 67 2e 2e  |4:."Assembling..|
00000b40  2e 20 22 3b 3a f2 65 3a  f1 22 44 6f 6e 65 22 3a  |. ";:.e:."Done":|
00000b50  e3 63 25 3d 30 b8 31 35  3a fb 63 25 2c 63 25 3c  |.c%=0.15:.c%,c%<|
00000b60  3c 34 2c 63 25 3c 3c 34  2c 63 25 3c 3c 34 3a ed  |<4,c%<<4,c%<<4:.|
00000b70  3a e7 4f 25 8c 0d 0b 68  91 f1 22 57 68 69 63 68  |:.O%...h.."Which|
00000b80  20 66 69 72 65 20 70 61  6c 65 74 74 65 3a 22 3a  | fire palette:":|
00000b90  f1 22 20 31 29 20 53 74  61 6e 64 61 72 64 22 3a  |." 1) Standard":|
00000ba0  f1 22 20 32 29 20 50 72  65 64 61 74 6f 72 22 3a  |." 2) Predator":|
00000bb0  f1 22 20 33 29 20 59 65  6c 6c 6f 77 20 26 20 42  |." 3) Yellow & B|
00000bc0  6c 75 65 22 3a f1 22 20  34 29 20 50 72 65 64 61  |lue":." 4) Preda|
00000bd0  74 6f 72 20 32 22 3a f5  3a 47 24 3d be 3a fd 47  |tor 2":.:G$=.:.G|
00000be0  24 3d 22 31 22 84 47 24  3d 22 32 22 84 47 24 3d  |$="1".G$="2".G$=|
00000bf0  22 33 22 84 47 24 3d 22  34 22 3a e7 47 24 3d 22  |"3".G$="4":.G$="|
00000c00  31 22 70 25 3d 32 0d 0b  b8 0f e7 47 24 3d 22 32  |1"p%=2.....G$="2|
00000c10  22 70 25 3d 31 0d 0b c2  0f e7 47 24 3d 22 33 22  |"p%=1.....G$="3"|
00000c20  70 25 3d 33 0d 0b cc 0f  e7 47 24 3d 22 34 22 70  |p%=3.....G$="4"p|
00000c30  25 3d 34 0d 0b cd 51 de  58 25 20 32 35 36 3a e3  |%=4...Q.X% 256:.|
00000c40  69 25 3d 30 b8 32 35 35  3a e7 70 25 3d 31 c8 99  |i%=0.255:.p%=1..|
00000c50  22 43 6f 6c 6f 75 72 54  72 61 6e 73 5f 52 65 74  |"ColourTrans_Ret|
00000c60  75 72 6e 43 6f 6c 6f 75  72 4e 75 6d 62 65 72 46  |urnColourNumberF|
00000c70  6f 72 4d 6f 64 65 22 2c  a4 62 28 69 25 29 2c 47  |orMode",.b(i%),G|
00000c80  25 b8 63 25 0d 0b ea 3f  e7 70 25 3d 32 c8 99 22  |%.c%...?.p%=2.."|
00000c90  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 52 65 74 75  |ColourTrans_Retu|
00000ca0  72 6e 43 6f 6c 6f 75 72  4e 75 6d 62 65 72 46 6f  |rnColourNumberFo|
00000cb0  72 4d 6f 64 65 22 2c a4  63 28 69 25 29 2c 47 25  |rMode",.c(i%),G%|
00000cc0  b8 63 25 0d 0b f4 3f e7  70 25 3d 33 c8 99 22 43  |.c%...?.p%=3.."C|
00000cd0  6f 6c 6f 75 72 54 72 61  6e 73 5f 52 65 74 75 72  |olourTrans_Retur|
00000ce0  6e 43 6f 6c 6f 75 72 4e  75 6d 62 65 72 46 6f 72  |nColourNumberFor|
00000cf0  4d 6f 64 65 22 2c a4 64  28 69 25 29 2c 47 25 b8  |Mode",.d(i%),G%.|
00000d00  63 25 0d 0b fe 3f e7 70  25 3d 34 c8 99 22 43 6f  |c%...?.p%=4.."Co|
00000d10  6c 6f 75 72 54 72 61 6e  73 5f 52 65 74 75 72 6e  |lourTrans_Return|
00000d20  43 6f 6c 6f 75 72 4e 75  6d 62 65 72 46 6f 72 4d  |ColourNumberForM|
00000d30  6f 64 65 22 2c a4 65 28  69 25 29 2c 47 25 b8 63  |ode",.e(i%),G%.c|
00000d40  25 0d 0b ff 0e 58 25 3f  69 25 3d 63 25 3a ed 0d  |%....X%?i%=c%:..|
00000d50  0c 1c 05 cd 0d 0c 1c 21  f1 22 47 65 6e 65 72 61  |.......!."Genera|
00000d60  74 69 6e 67 20 6d 61 70  2e 2e 2e 22 3a f2 66 3a  |ting map...":.f:|
00000d70  eb 47 25 3a 87 0d 0c 58  24 2a 73 63 72 65 65 6e  |.G%:...X$*screen|
00000d80  6c 6f 61 64 20 3c 54 75  6e 6e 65 6c 24 44 69 72  |load <Tunnel$Dir|
00000d90  3e 2e 74 65 78 74 75 72  65 0d 0c 58 d7 f1 22 47  |>.texture..X.."G|
00000da0  65 6e 65 72 61 74 69 6e  67 20 74 65 78 74 75 72  |enerating textur|
00000db0  65 28 73 29 2e 2e 2e 20  22 3b 3a e6 36 33 c8 9c  |e(s)... ";:.63..|
00000dc0  32 35 35 3a de 45 25 20  32 35 36 2a 35 31 32 3a  |255:.E% 256*512:|
00000dd0  de 4a 25 20 32 35 36 2a  35 31 32 2b 32 35 36 3a  |.J% 256*512+256:|
00000de0  e3 79 25 3d 30 b8 36 34  3a e3 78 25 3d 30 b8 36  |.y%=0.64:.x%=0.6|
00000df0  34 3a 63 25 3d b0 78 25  3c 3c 68 25 2c 79 25 3c  |4:c%=.x%<<h%,y%<|
00000e00  3c 65 25 29 3c 3c 32 3a  63 25 2b 3d c8 9c 28 78  |<e%)<<2:c%+=..(x|
00000e10  25 3c 3c 68 25 2c 79 25  3c 3c 65 25 29 3e 3e 36  |%<<h%,y%<<e%)>>6|
00000e20  3a c8 99 22 43 6f 6c 6f  75 72 54 72 61 6e 73 5f  |:.."ColourTrans_|
00000e30  47 43 4f 4c 54 6f 43 6f  6c 6f 75 72 4e 75 6d 62  |GCOLToColourNumb|
00000e40  65 72 22 2c 63 25 b8 63  25 3a 45 25 3f 28 78 25  |er",c%.c%:E%?(x%|
00000e50  2b 28 79 25 3c 3c 36 29  29 3d 63 25 3a 4a 25 3f  |+(y%<<6))=c%:J%?|
00000e60  28 78 25 2b 28 79 25 3c  3c 36 29 29 3d 30 3a ed  |(x%+(y%<<6))=0:.|
00000e70  0d 0c d0 e1 86 30 2c 79  25 3c 3c 65 25 2c 36 34  |.....0,y%<<e%,64|
00000e80  3c 3c 68 25 2c 79 25 3c  3c 65 25 3a ed 3a e3 78  |<<h%,y%<<e%:.:.x|
00000e90  25 3d 36 34 2a 36 34 b8  36 34 2a 31 32 38 2d 31  |%=64*64.64*128-1|
00000ea0  88 34 3a 45 25 21 78 25  3d 45 25 21 28 78 25 2d  |.4:E%!x%=E%!(x%-|
00000eb0  36 34 2a 36 34 29 3a ed  3a f1 22 44 6f 6e 65 22  |64*64):.:."Done"|
00000ec0  3a db 3a f1 22 47 65 6e  65 72 61 74 69 6e 67 20  |:.:."Generating |
00000ed0  64 65 70 74 68 20 63 75  65 69 6e 67 2e 2e 2e 20  |depth cueing... |
00000ee0  22 3b 3a f2 62 28 32 35  35 2c 32 35 35 2c 32 35  |";:.b(255,255,25|
00000ef0  35 29 3a 78 25 3d 6e 25  3c 3c 68 25 3a 79 25 3d  |5):x%=n%<<h%:y%=|
00000f00  66 25 3c 3c 65 25 3a c8  93 c8 90 30 2c 28 7a 25  |f%<<e%:....0,(z%|
00000f10  3c 3c 65 25 29 2d 79 25  2c 78 25 2c 79 25 3a e3  |<<e%)-y%,x%,y%:.|
00000f20  72 25 3d 66 25 2f 33 b8  30 88 2d 32 3a 73 25 3d  |r%=f%/3.0.-2:s%=|
00000f30  28 72 25 3c 3c 38 29 2f  28 66 25 2f 33 29 3a 73  |(r%<<8)/(f%/3):s|
00000f40  25 3d 28 73 25 2a 33 29  2f 34 3a 73 25 2b 3d 36  |%=(s%*3)/4:s%+=6|
00000f50  33 0d 0d 84 d9 f2 62 28  73 25 2c 73 25 2c 73 25  |3.....b(s%,s%,s%|
00000f60  29 3a c8 8f c8 90 78 25  3e 3e 31 2c 28 7a 25 3c  |):....x%>>1,(z%<|
00000f70  3c 65 25 29 2d 28 79 25  3e 3e 31 29 2c 72 25 3c  |<e%)-(y%>>1),r%<|
00000f80  3c 65 25 3a ed 3a 74 61  25 3d 6e 25 2a 66 25 2a  |<e%:.:ta%=n%*f%*|
00000f90  34 3a de 77 25 20 74 61  25 3a 21 77 25 3d 74 61  |4:.w% ta%:!w%=ta|
00000fa0  25 3a 77 25 21 34 3d 30  3a 77 25 21 38 3d 31 36  |%:w%!4=0:w%!8=16|
00000fb0  3a 77 25 21 31 32 3d 31  36 3a c8 99 22 4f 53 5f  |:w%!12=16:.."OS_|
00000fc0  53 70 72 69 74 65 4f 70  22 2c 39 2b 32 35 36 2c  |SpriteOp",9+256,|
00000fd0  77 25 3a ec 30 2c 28 7a  25 3c 3c 65 25 29 2d 79  |w%:.0,(z%<<e%)-y|
00000fe0  25 3a ec 78 25 2d 31 2c  28 7a 25 3c 3c 65 25 29  |%:.x%-1,(z%<<e%)|
00000ff0  2d 31 3a c8 99 22 4f 53  5f 53 70 72 69 74 65 4f  |-1:.."OS_SpriteO|
00001000  70 22 2c 31 34 2b 32 35  36 2c 77 25 2c 22 62 61  |p",14+256,w%,"ba|
00001010  63 6b 22 3a f1 8a 30 2c  31 29 3b 22 50 72 65 73  |ck":..0,1);"Pres|
00001020  73 20 73 70 61 63 65 22  3a e1 0d 0e 2e 04 0d 0e  |s space":.......|
00001030  42 2d dd f2 64 28 74 25  29 3a ea 78 25 3a e3 78  |B-..d(t%):.x%:.x|
00001040  25 3d 30 b8 6f 25 2d 31  3a 74 25 3f 78 25 3d b3  |%=0.o%-1:t%?x%=.|
00001050  28 32 35 36 29 2d 31 3a  ed 3a e1 0d 0e 74 04 0d  |(256)-1:.:...t..|
00001060  0e 88 41 dd a4 62 28 69  25 29 3a ea 72 25 2c 67  |..A..b(i%):.r%,g|
00001070  25 2c 62 25 2c 6c 25 2c  6d 25 3a ea 75 61 25 2c  |%,b%,l%,m%:.ua%,|
00001080  76 61 25 2c 77 61 25 3a  e7 69 25 3c 31 32 38 69  |va%,wa%:.i%<128i|
00001090  25 3d 28 69 25 3c 3c 31  29 8b 69 25 3d 32 35 35  |%=(i%<<1).i%=255|
000010a0  0d 0e a6 32 72 25 3d 69  25 3a 62 25 3d 32 35 35  |...2r%=i%:b%=255|
000010b0  2d 69 25 3a e7 69 25 3c  31 32 38 67 25 3d 69 25  |-i%:.i%<128g%=i%|
000010c0  3c 3c 31 8b 67 25 3d 28  32 35 35 2d 69 25 29 3c  |<<1.g%=(255-i%)<|
000010d0  3c 31 0d 0e c4 1e 3d 28  72 25 3c 3c 38 29 2b 28  |<1....=(r%<<8)+(|
000010e0  67 25 3c 3c 31 36 29 2b  28 62 25 3c 3c 32 34 29  |g%<<16)+(b%<<24)|
000010f0  0d 0e e2 2e dd a4 63 28  69 25 29 3a ea 72 25 2c  |......c(i%):.r%,|
00001100  67 25 2c 62 25 3a e7 69  25 3c 31 32 38 69 25 3d  |g%,b%:.i%<128i%=|
00001110  28 69 25 3c 3c 31 29 8b  69 25 3d 32 35 35 0d 0f  |(i%<<1).i%=255..|
00001120  00 2b e7 69 25 3c 31 32  38 80 69 25 3e 30 72 25  |.+.i%<128.i%>0r%|
00001130  3d 28 69 25 3c 3c 31 29  8b e7 69 25 3e 30 72 25  |=(i%<<1)..i%>0r%|
00001140  3d 32 35 35 8b 72 25 3d  30 0d 0f 0a 1a e7 69 25  |=255.r%=0.....i%|
00001150  3e 30 67 25 3d 28 28 69  25 29 3c 3c 30 29 8b 67  |>0g%=((i%)<<0).g|
00001160  25 3d 30 0d 0f 14 23 62  25 3d 30 3a 3d 28 72 25  |%=0...#b%=0:=(r%|
00001170  3c 3c 38 29 2b 28 67 25  3c 3c 31 36 29 2b 28 62  |<<8)+(g%<<16)+(b|
00001180  25 3c 3c 32 34 29 0d 0f  46 2e dd a4 64 28 69 25  |%<<24)..F...d(i%|
00001190  29 3a ea 72 25 2c 67 25  2c 62 25 3a e7 69 25 3c  |):.r%,g%,b%:.i%<|
000011a0  31 32 38 69 25 3d 28 69  25 3c 3c 31 29 8b 69 25  |128i%=(i%<<1).i%|
000011b0  3d 32 35 35 0d 0f 64 22  e7 69 25 3c 31 32 38 72  |=255..d".i%<128r|
000011c0  25 3d 69 25 3c 3c 31 8b  72 25 3d 28 32 35 35 2d  |%=i%<<1.r%=(255-|
000011d0  69 25 29 3c 3c 31 0d 0f  6e 22 e7 69 25 3e 31 32  |i%)<<1..n".i%>12|
000011e0  38 62 25 3d 69 25 3c 3c  31 8b 62 25 3d 28 32 35  |8b%=i%<<1.b%=(25|
000011f0  35 2d 69 25 29 3c 3c 31  0d 0f 78 25 67 25 3d 32  |5-i%)<<1..x%g%=2|
00001200  35 35 3a 3d 28 72 25 3c  3c 38 29 2b 28 67 25 3c  |55:=(r%<<8)+(g%<|
00001210  3c 31 36 29 2b 28 62 25  3c 3c 32 34 29 0d 0f aa  |<16)+(b%<<24)...|
00001220  31 dd a4 65 28 69 25 29  3a ea 72 25 2c 67 25 2c  |1..e(i%):.r%,g%,|
00001230  62 25 2c 44 25 3a e7 69  25 3c 31 32 38 69 25 3d  |b%,D%:.i%<128i%=|
00001240  28 69 25 3c 3c 31 29 8b  69 25 3d 32 35 35 0d 0f  |(i%<<1).i%=255..|
00001250  c8 22 e7 69 25 3c 31 32  38 72 25 3d 69 25 3c 3c  |.".i%<128r%=i%<<|
00001260  31 8b 72 25 3d 28 32 35  35 2d 69 25 29 3c 3c 31  |1.r%=(255-i%)<<1|
00001270  0d 0f d2 22 e7 69 25 3e  31 32 38 62 25 3d 69 25  |...".i%>128b%=i%|
00001280  3c 3c 31 8b 62 25 3d 28  32 35 35 2d 69 25 29 3c  |<<1.b%=(255-i%)<|
00001290  3c 31 0d 0f dc 31 44 25  3d 28 69 25 3c 3c 31 29  |<1...1D%=(i%<<1)|
000012a0  80 32 35 35 3a e7 44 25  3c 31 32 38 67 25 3d 44  |.255:.D%<128g%=D|
000012b0  25 3c 3c 31 8b 67 25 3d  28 32 35 35 2d 44 25 29  |%<<1.g%=(255-D%)|
000012c0  3c 3c 31 0d 0f e7 1e 3d  28 72 25 3c 3c 38 29 2b  |<<1....=(r%<<8)+|
000012d0  28 67 25 3c 3c 31 36 29  2b 28 62 25 3c 3c 32 34  |(g%<<16)+(b%<<24|
000012e0  29 0d 10 0e 27 dd f2 61  3a c8 94 55 25 2c 56 25  |)...'..a:..U%,V%|
000012f0  3a c8 99 36 2c 31 31 32  2c 55 25 3a c8 99 36 2c  |:..6,112,U%:..6,|
00001300  31 31 33 2c 56 25 3a e1  0d 10 36 04 0d 10 4a 4e  |113,V%:...6...JN|
00001310  dd f2 62 28 72 25 2c 67  25 2c 62 25 29 3a c8 99  |..b(r%,g%,b%):..|
00001320  22 43 6f 6c 6f 75 72 54  72 61 6e 73 5f 53 65 74  |"ColourTrans_Set|
00001330  47 43 4f 4c 22 2c 28 72  25 3c 3c 38 29 2b 28 67  |GCOL",(r%<<8)+(g|
00001340  25 3c 3c 31 36 29 2b 28  62 25 3c 3c 32 34 29 2c  |%<<16)+(b%<<24),|
00001350  2c 2c 28 31 3c 3c 38 29  3a e1 0d 10 5e 04 0d 10  |,,(1<<8):...^...|
00001360  72 3b dd f2 67 28 78 25  2c 79 25 2c 4b 25 2c 71  |r;..g(x%,y%,K%,q|
00001370  25 29 3a 63 25 3d 28 4b  25 2b 71 25 29 3c 3c 31  |%):c%=(K%+q%)<<1|
00001380  3a e6 63 25 3e 3e 34 3a  c8 92 78 25 3c 3c 68 25  |:.c%>>4:..x%<<h%|
00001390  2c 79 25 3c 3c 65 25 3a  e1 0d 10 ae 04 0d 10 c2  |,y%<<e%:........|
000013a0  2f dd f2 68 28 79 25 2c  71 25 29 3a e6 71 25 3e  |/..h(y%,q%):.q%>|
000013b0  3e 34 3a 86 30 2c 79 25  3c 3c 65 25 2c 6e 25 3c  |>4:.0,y%<<e%,n%<|
000013c0  3c 68 25 2c 79 25 3c 3c  65 25 3a e1 0d ff        |<h%,y%<<e%:...|
000013ce