Home » Archimedes archive » Acorn User » AU 1998-02 B.adf » Regulars » StarInfo/winter/Alexandrou/WinterPic

StarInfo/winter/Alexandrou/WinterPic

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-02 B.adf » Regulars
Filename: StarInfo/winter/Alexandrou/WinterPic
Read OK:
File size: 20E3 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM *** Written by Dean Alexandrou
   20
   30
   40
   50ON ERROR MODE8:REPORT:PRINT ERL:END
   60
   70REPEAT:MODE8:INPUT"What is the step setting for your picture? (2-50) (2-smooth polygons, 50-blocky)"'"(I recommend 10 - but it will take a while):"fine%
   80UNTIL fine%>=2 AND fine%<=50
   90PRINT''"High Res or Low res? (H/L)"'"(I recommend High Res - but it takes alot longer with defocussing):";
  100REPEAT:R$=GET$:UNTIL R$="H" OR R$="L":PRINT R$:res%=2:IF R$="L" res%=4
  110PRINT''"Would you like defocussing on? (Y/N)"'"(I recommend Yes - but it will take a while):"
  120REPEAT:defocus$=GET$:UNTIL defocus$="Y" OR defocus$="N"
  130:
  140IF res%=2 MODE20
  150IF res%=4 MODE9
  160ORIGIN 640,212
  170FOR n%=0 TO 15
  180 COLOUR n%,n%*17,n%*17,n%*8+135
  190NEXT
  200:
  210PROCdisplay_message1
  220:
  230FOR detail%=1 TO 3
  240 IF detail%=2 AND fine%<5 detail%=3
  250 IF detail%=3 PROCspray_snow(4000)
  260 PROCmake_horizon(300,detail%)
  270 :
  280 FOR x%=-640 TO 640 STEP 100
  290  PROCmake_cuboid(x%,0,-500,30,120,30,detail%)
  300  PROCmake_cuboid(x%+30,60,-510,70,20,20,detail%)
  310 NEXT
  320 IF detail%=3 PROCblend(80,220)
  330 :
  340 PROCmake_cone(-400,0,0,45,-1,100,detail%)
  350 FOR n%=1 TO 6
  360  PROCmake_cone(-400,n%*80+50,0,(7-n%+2)/9*400,200,100,detail%)
  370  FOR c%=-80 TO 120 STEP 360/(10-n%)
  380   a=c%*PI/180
  390   x%=SIN(a)*(7-n%+2)/9*300
  400   z%=COS(a)*(7-n%+2)/9*300
  410   PROCmake_sphere(x%-400,n%*80+110,z%,20,detail%)
  420  NEXT
  430 NEXT
  440 PROCmake_cone(-400,610,0,800/9,200,200,detail%)
  450 IF detail%=3 PROCblend(0,810)
  460 :
  470 PROCmake_cone(550,0,-100,170,175,100,detail%)
  480 PROCmake_cone(550,100,-100,130,150,100,detail%)
  490 PROCmake_cone(550,200,-100,80,125,100,detail%)
  500 PROCmake_cone(550,300,-100,40,100,100,detail%)
  510 IF detail%=3 PROCblend(-20,810)
  520 :
  530 PROCmake_sphere(0,200,200,200,detail%)
  540 PROCmake_sphere(0,480,200,100,detail%)
  550 PROCmake_sphere(0,480,300,30,detail%)
  560 PROCmake_inverse_sphere(-35,520,285,20,detail%)
  570 PROCmake_inverse_sphere(35,520,285,20,detail%)
  580 PROCmake_inverse_sphere(0,360,319,20,detail%)
  590 PROCmake_inverse_sphere(0,300,373,20,detail%)
  600 PROCmake_inverse_sphere(0,240,395,20,detail%)
  610 PROCmake_inverse_sphere(0,180,398,20,detail%)
  620NEXT
  630REM PROCdisplay_message2
  640:
  650A=GET:PROCmelt
  660END
  670
  680DEFPROCmake_sphere(xc%,yc%,zc%,size%,detail%)
  690LOCAL b%,s%,x%,y%,z%,c%,step%
  700:
  710IF xc%+size%<-640 OR xc%+size%>640 ENDPROC
  720step%=fine%/2
  730IF detail%=1 step%=fine%*2
  740IF detail%=2 step%=fine%*2
  750IF step%<size% AND size%<30 step%=size%
  760FOR b%=-180 TO 180 STEP step%
  770 s%=COS(RAD(b%/2))*size%
  780 s2%=COS(RAD((b%-step%)/2))*size%
  790 FOR c%=0 TO 360 STEP step%
  800  :
  810  a=c%*PI/180
  820  x%=SIN(a)*s%+xc%
  830  y%=COS(a)*s%+yc%
  840  z%=(b%/180*size%)+zc%
  850  :
  860  a2=(c%+step%)*PI/180
  870  x2%=SIN(a2)*s%+xc%
  880  y2%=COS(a2)*s%+yc%
  890  :
  900  a3=(c%+step%)*PI/180
  910  x3%=SIN(a3)*s2%+xc%
  920  y3%=COS(a3)*s2%+yc%
  930  :
  940  a4=c%*PI/180
  950  x4%=SIN(a4)*s2%+xc%
  960  y4%=COS(a4)*s2%+yc%
  970  :
  980  IF detail%=1 THEN
  990   GCOL0,8
 1000   PLOT69,x%,y%-(z%/5)
 1010  ENDIF
 1020  IF detail%=2 THEN
 1030   GCOL0,8
 1040   MOVE x%,y%-(z%/5)
 1050   DRAW x2%,y2%-(z%/5)
 1060   DRAW x3%,y3%-(z%/5)
 1070   DRAW x4%,y4%-(z%/5)
 1080   DRAW x%,y%-(z%/5)
 1090  ENDIF
 1100  IF detail%=3 THEN
 1110   GCOL0,FNsphere_trace_light(c%,b%)
 1120   MOVE x%,y%-(z%/5)
 1130   MOVE x2%,y2%-(z%/5)
 1140   PLOT85,x3%,y3%-(z%/5)
 1150   MOVE x4%,y4%-(z%/5)
 1160   PLOT85,x%,y%-(z%/5)
 1170  ENDIF
 1180 NEXT
 1190NEXT
 1200ENDPROC
 1210
 1220DEFPROCmake_inverse_sphere(xc%,yc%,zc%,size%,detail%)
 1230LOCAL b%,s%,x%,y%,z%,c%,step%,a,a2,a3,a4,x2%,x3%,x4%,y2%,y3%,y4%,z2%,z3%,z4%
 1240:
 1250step%=fine%/2
 1260IF detail%=1 step%=fine%*2
 1270IF detail%=2 step%=fine%*2
 1280IF step%<size% AND size%<30 step%=size%
 1290FOR b%=-180 TO 0 STEP step%
 1300 s%=COS(RAD(b%/2))*size%
 1310 s2%=COS(RAD((b%-step%)/2))*size%
 1320 FOR c%=0 TO 360 STEP step%
 1330  :
 1340  a=c%*PI/180
 1350  x%=SIN(a)*s%+xc%
 1360  y%=COS(a)*s%+yc%
 1370  z%=(b%/180*size%)+zc%
 1380  :
 1390  a2=(c%+step%)*PI/180
 1400  x2%=SIN(a2)*s%+xc%
 1410  y2%=COS(a2)*s%+yc%
 1420  :
 1430  a3=(c%+step%)*PI/180
 1440  x3%=SIN(a3)*s2%+xc%
 1450  y3%=COS(a3)*s2%+yc%
 1460  :
 1470  a4=c%*PI/180
 1480  x4%=SIN(a4)*s2%+xc%
 1490  y4%=COS(a4)*s2%+yc%
 1500  :
 1510  IF detail%=1 THEN
 1520   GCOL0,8
 1530   PLOT69,x%,y%-(z%/5)
 1540  ENDIF
 1550  IF detail%=2 THEN
 1560   GCOL0,8
 1570   MOVE x%,y%-(z%/5)
 1580   DRAW x2%,y2%-(z%/5)
 1590   DRAW x3%,y3%-(z%/5)
 1600   DRAW x4%,y4%-(z%/5)
 1610   DRAW x%,y%-(z%/5)
 1620  ENDIF
 1630  IF detail%=3 THEN
 1640   GCOL0,FNsphere_trace_light((c%+180)MOD 360,(b%+180)MOD 360)
 1650   MOVE x%,y%-(z%/5)
 1660   MOVE x2%,y2%-(z%/5)
 1670   PLOT85,x3%,y3%-(z%/5)
 1680   MOVE x4%,y4%-(z%/5)
 1690   PLOT85,x%,y%-(z%/5)
 1700  ENDIF
 1710 NEXT
 1720NEXT
 1730ENDPROC
 1740
 1750DEFFNsphere_trace_light(c%,b%)
 1760LOCAL cl1%,cl2%,cl%
 1770:
 1780c%=c%+45+RND(21)-11
 1790c%=c% MOD 360
 1800cl1%=COS(RAD(ABS(180-c%)))*15
 1810:
 1820b%=b%-20+RND(21)-11
 1830b%=b% MOD 360
 1840cl2%=COS(RAD(ABS(b%)))*15
 1850:
 1860cl%=(cl1%+cl2%)/2
 1870IF cl%>15 cl%=15
 1880IF cl%<0 cl%=0
 1890:
 1900=15-cl%
 1910
 1920DEFFNcone_trace_light(c%,p)
 1930LOCAL cl1%,cl2%,cl%
 1940:
 1950c%=c%+90+RND(21)-11
 1960c%=c% MOD 360
 1970cl1%=COS(RAD(ABS(180-c%)))*15
 1980:
 1990cl2%=15-(SIN(RAD(p*90))*15)
 2000:
 2010cl%=(cl1%+cl2%)/2
 2020:
 2030IF cl%>15 cl%=15
 2040IF cl%<0 cl%=0
 2050:
 2060=15-cl%
 2070
 2080DEFPROCmake_cone(xc%,yc%,zc%,r%,h%,cmp%,detail%)
 2090LOCAL step%,y%,c%,a,x%,z%,s%,s2%,a2,a3,a4,x2%,x3%,x4%,y2%,y3%,y4%,z2%,z3%,z4%
 2100:
 2110step%=fine%/2
 2120IF detail%=1 step%=fine%*2
 2130IF detail%=2 step%=fine%*2
 2140IF step%<r% AND r%<30 step%=r%
 2150FOR y%=0 TO (cmp%-step%) STEP step%
 2160 s%=((h%-y%)/h%)*r%
 2170 y2%=y%+step%
 2180 s2%=(h%-y2%)/h%*r%
 2190 IF h%=-1 s%=r%:s2%=r%
 2200 FOR c%=0 TO 360 STEP step%
 2210  a=c%*PI/180
 2220  x%=SIN(a)*s%+xc%
 2230  z%=COS(a)*s%+zc%
 2240  :
 2250  a2=(c%+step%)*PI/180
 2260  x2%=SIN(a2)*s%+xc%
 2270  z2%=COS(a2)*s%+zc%
 2280  :
 2290  a3=(c%+step%)*PI/180
 2300  x3%=SIN(a3)*s2%+xc%
 2310  z3%=COS(a3)*s2%+zc%
 2320  :
 2330  a4=c%*PI/180
 2340  x4%=SIN(a4)*s2%+xc%
 2350  z4%=COS(a4)*s2%+zc%
 2360  :
 2370  IF detail%=1 THEN
 2380   GCOL0,8
 2390   PLOT 69,x%,y%+yc%-(z%/5)
 2400  ENDIF
 2410  IF detail%=2 THEN
 2420   GCOL0,8
 2430   MOVE x%,y%+yc%-(z%/5)
 2440   DRAW x2%,y%+yc%-(z2%/5)
 2450   DRAW x3%,y2%+yc%-(z3%/5)
 2460   DRAW x4%,y2%+yc%-(z4%/5)
 2470   DRAW x%,y%+yc%-(z%/5)
 2480  ENDIF
 2490  IF detail%=3 THEN
 2500   IF h%>-1 GCOL0,FNcone_trace_light(c%,y%/h%) ELSE GCOL0,FNcone_trace_light(c%,0.01)
 2510   MOVE x%,y%+yc%-(z%/5)
 2520   MOVE x2%,y%+yc%-(z2%/5)
 2530   PLOT85,x3%,y2%+yc%-(z3%/5)
 2540   MOVE x4%,y2%+yc%-(z4%/5)
 2550   PLOT85,x%,y%+yc%-(z%/5)
 2560  ENDIF
 2570 NEXT
 2580NEXT
 2590ENDPROC
 2600
 2610DEFPROCmake_cuboid(x%,y%,z%,w%,h%,d%,detail%)
 2620LOCAL n%
 2630:
 2640GCOL0,8
 2650IF detail%=1 THEN
 2660 PLOT69,x%,y%-(z%/5)
 2670 PLOT69,x%+w%,y%-(z%/5)
 2680 PLOT69,x%+w%,y%+h%-(z%/5)
 2690 PLOT69,x%,y%+h%-(z%/5)
 2700 PLOT69,x%-(d%/5),y%-((z%+d%)/5)
 2710 PLOT69,x%-(d%/5),y%+h%-((z%+d%)/5)
 2720 PLOT69,x%+w%-(d%/5),y%-((z%+d%)/5)
 2730 PLOT69,x%+w%-(d%/5),y%+h%-((z%+d%)/5)
 2740ENDIF
 2750IF detail%=2 THEN
 2760 RECTANGLE x%,y%-(z%/5),w%,h%
 2770 RECTANGLE x%-(d%/5),y%-((z%+d%)/5),w%,h%
 2780 MOVE x%-(d%/5),y%+h%-((z%+d%)/5)
 2790 DRAW x%,y%+h%-(z%/5)
 2800 MOVE x%+w%-(d%/5),y%+h%-((z%+d%)/5)
 2810 DRAW x%+w%,y%+h%-(z%/5)
 2820 MOVE x%-(d%/5),y%-((z%+d%)/5)
 2830 DRAW x%,y%-(z%/5)
 2840 MOVE x%+w%-(d%/5),y%-((z%+d%)/5)
 2850 DRAW x%+w%,y%-(z%/5)
 2860ENDIF
 2870IF detail%=3 THEN
 2880 FOR n%=0 TO d% STEP 2
 2890  GCOL0,14
 2900  RECTANGLE FILL x%-(n%/5),y%-((z%+n%)/5),w%,h%
 2910  GCOL0,8
 2920  MOVE x%-(n%/5),y%+h%-((z%+n%)/5)
 2930  DRAW x%+w%-(n%/5),y%+h%-((z%+n%)/5)
 2940  GCOL0,2
 2950  DRAW x%+w%-(n%/5),y%-((z%+n%)/5)
 2960 NEXT
 2970ENDIF
 2980ENDPROC
 2990
 3000DEFPROCmake_horizon(h%,detail%)
 3010LOCAL n%
 3020:
 3030IF detail%=1 THEN
 3040 FOR n%=-640 TO 640 STEP 10
 3050  PLOT69,n%,h%
 3060 NEXT
 3070ENDIF
 3080IF detail%=2 THEN
 3090 MOVE -640,h%:DRAW 640,h%
 3100ENDIF
 3110IF detail%=3 THEN
 3120 GCOL0,15
 3130 RECTANGLE FILL -640,-1000,1280,h%+1000
 3140ENDIF
 3150ENDPROC
 3160
 3170DEFPROCspray_snow(spray%)
 3180LOCAL n%
 3190:
 3200FOR n%=0 TO spray%
 3210 GCOL0,RND(15)
 3220 PLOT69,RND(1280)-640,RND(1024)-212
 3230NEXT
 3240ENDPROC
 3250
 3260DEFPROCdisplay_message1
 3270COLOUR 15
 3280IF res%=2 THEN
 3290 PRINTTAB(36,3) "This program was written by Dean Alexandrou"
 3300ELSE
 3310 PRINTTAB(20,1)"By Dean Alexandrou"
 3320ENDIF
 3330ENDPROC
 3340
 3350DEFPROCdisplay_message2
 3360COLOUR 15
 3370IF res%=2 THEN
 3380 PRINTTAB(36,3) "This program was written by Dean Alexandrou"
 3390 PRINTTAB(37,5) "Does anyone have any jobs that a talented"
 3400 PRINTTAB(38,6) "18 year-old BASIC programmer could do? "
 3410 PRINTTAB(46,7) "- write to me at..."
 3420 PRINTTAB(45,9) "96 Sheaveshill Avenue"
 3430 PRINTTAB(45,10) "Colindale"
 3440 PRINTTAB(45,11) "London"
 3450 PRINTTAB(45,12) "NW9 6RY"
 3460 PRINTTAB(43,14) "(Press SPACE to continue)"
 3470ELSE
 3480 PRINTTAB(19,1)"By Dean Alexandrou."
 3490 PRINTTAB(19,3)"Try it in High res."
 3500 PRINTTAB(21,6)"(Press SPACE)"
 3510ENDIF
 3520ENDPROC
 3530
 3540DEFPROCblend(ys%,yf%)
 3550LOCAL x%,y%,p%
 3560:
 3570IF defocus$="N" ENDPROC
 3580FOR y%=ys% TO yf% STEP res%
 3590 FOR xs%=0 TO res% STEP res%
 3600  FOR x%=-640+xs% TO 640 STEP res%*2
 3610   p%=(POINT(x%,y%)+POINT(x%+res%*2,y%))/2
 3620   GCOL0,p%
 3630   PLOT69,x%+res%,y%
 3640  NEXT
 3650  FOR x%=640+xs% TO -640 STEP -res%*2
 3660   p%=(POINT(x%,y%)+POINT(x%-res%*2,y%))/2
 3670   GCOL0,p%
 3680   PLOT69,x%-res%,y%
 3690  NEXT
 3700 NEXT
 3710NEXT
 3720ENDPROC
 3730
 3740DEFPROCmelt
 3750LOCAL x%,y%,w%,p%,yy%,n%
 3760:
 3770REPEAT
 3780 x%=RND(1280)-640
 3790 w%=RND(4)*4
 3800 y%=RND(1024)-216
 3810 p%=POINT(x%,y%)
 3820 yy%=y%
 3830 REPEAT
 3840  yy%+=res%
 3850 UNTIL POINT(x%,yy%)<>p% OR yy%>=808
 3860 RECTANGLE x%,y%,w%,yy%-y%+res% TO x%,y%-res%
 3870 FOR n%=x% TO x%+w% STEP res%
 3880  p%=(POINT(n%,yy%-res%)+POINT(n%,yy%))/2
 3890  GCOL0,p%
 3900  PLOT69,n%,yy%
 3910 NEXT
 3920UNTIL FALSE
 3930ENDPROC

$� *** Written by Dean Alexandrou


(
2� � �8:�:� �:�
<
F��:�8:�"What is the step setting for your picture? (2-50) (2-smooth polygons, 50-blocky)"'"(I recommend 10 - but it will take a while):"fine%
P� fine%>=2 � fine%<=50
Zj�''"High Res or Low res? (H/L)"'"(I recommend High Res - but it takes alot longer with defocussing):";
d8�:R$=�:� R$="H" � R$="L":� R$:res%=2:� R$="L" res%=4
n]�''"Would you like defocussing on? (Y/N)"'"(I recommend Yes - but it will take a while):"
x.�:defocus$=�:� defocus$="Y" � defocus$="N"
�:
�� res%=2 �20
�� res%=4 �9
�ȑ 640,212
�� n%=0 � 15
� � n%,n%*17,n%*17,n%*8+135
��
�:
��display_message1
�:
�� detail%=1 � 3
�$ � detail%=2 � fine%<5 detail%=3
�" � detail%=3 �spray_snow(4000)
 �make_horizon(300,detail%)
 :
 � x%=-640 � 640 � 100
"/  �make_cuboid(x%,0,-500,30,120,30,detail%)
,2  �make_cuboid(x%+30,60,-510,70,20,20,detail%)
6 �
@ � detail%=3 �blend(80,220)
J :
T+ �make_cone(-400,0,0,45,-1,100,detail%)
^ � n%=1 � 6
h@  �make_cone(-400,n%*80+50,0,(7-n%+2)/9*400,200,100,detail%)
r"  � c%=-80 � 120 � 360/(10-n%)
|   a=c%*�/180
�   x%=�(a)*(7-n%+2)/9*300
�   z%=�(a)*(7-n%+2)/9*300
�3   �make_sphere(x%-400,n%*80+110,z%,20,detail%)
�  �
� �
�1 �make_cone(-400,610,0,800/9,200,200,detail%)
� � detail%=3 �blend(0,810)
� :
�/ �make_cone(550,0,-100,170,175,100,detail%)
�1 �make_cone(550,100,-100,130,150,100,detail%)
�0 �make_cone(550,200,-100,80,125,100,detail%)
�0 �make_cone(550,300,-100,40,100,100,detail%)
�  � detail%=3 �blend(-20,810)
 :
( �make_sphere(0,200,200,200,detail%)
( �make_sphere(0,480,200,100,detail%)
&' �make_sphere(0,480,300,30,detail%)
01 �make_inverse_sphere(-35,520,285,20,detail%)
:0 �make_inverse_sphere(35,520,285,20,detail%)
D/ �make_inverse_sphere(0,360,319,20,detail%)
N/ �make_inverse_sphere(0,300,373,20,detail%)
X/ �make_inverse_sphere(0,240,395,20,detail%)
b/ �make_inverse_sphere(0,180,398,20,detail%)
l�
v� PROCdisplay_message2
�:
�
A=�:�melt
��
�
�,��make_sphere(xc%,yc%,zc%,size%,detail%)
�� b%,s%,x%,y%,z%,c%,step%
�:
�&� xc%+size%<-640 � xc%+size%>640 �
�step%=fine%/2
�� detail%=1 step%=fine%*2
�� detail%=2 step%=fine%*2
�(� step%<size% � size%<30 step%=size%
�� b%=-180 � 180 � step%
 s%=�(�(b%/2))*size%
! s2%=�(�((b%-step%)/2))*size%
 � c%=0 � 360 � step%
   :
*  a=c%*�/180
4  x%=�(a)*s%+xc%
>  y%=�(a)*s%+yc%
H  z%=(b%/180*size%)+zc%
R  :
\  a2=(c%+step%)*�/180
f  x2%=�(a2)*s%+xc%
p  y2%=�(a2)*s%+yc%
z  :
�  a3=(c%+step%)*�/180
�  x3%=�(a3)*s2%+xc%
�  y3%=�(a3)*s2%+yc%
�  :
�  a4=c%*�/180
�  x4%=�(a4)*s2%+xc%
�  y4%=�(a4)*s2%+yc%
�  :
�  � detail%=1 �
�   �0,8
�   �69,x%,y%-(z%/5)
�  �
�  � detail%=2 �
   �0,8
   � x%,y%-(z%/5)
   � x2%,y2%-(z%/5)
$   � x3%,y3%-(z%/5)
.   � x4%,y4%-(z%/5)
8   � x%,y%-(z%/5)
B  �
L  � detail%=3 �
V$   �0,�sphere_trace_light(c%,b%)
`   � x%,y%-(z%/5)
j   � x2%,y2%-(z%/5)
t   �85,x3%,y3%-(z%/5)
~   � x4%,y4%-(z%/5)
�   �85,x%,y%-(z%/5)
�  �
� �
��
��
�
�4��make_inverse_sphere(xc%,yc%,zc%,size%,detail%)
�L� b%,s%,x%,y%,z%,c%,step%,a,a2,a3,a4,x2%,x3%,x4%,y2%,y3%,y4%,z2%,z3%,z4%
�:
�step%=fine%/2
�� detail%=1 step%=fine%*2
�� detail%=2 step%=fine%*2
(� step%<size% � size%<30 step%=size%

� b%=-180 � 0 � step%
 s%=�(�(b%/2))*size%
! s2%=�(�((b%-step%)/2))*size%
( � c%=0 � 360 � step%
2  :
<  a=c%*�/180
F  x%=�(a)*s%+xc%
P  y%=�(a)*s%+yc%
Z  z%=(b%/180*size%)+zc%
d  :
n  a2=(c%+step%)*�/180
x  x2%=�(a2)*s%+xc%
�  y2%=�(a2)*s%+yc%
�  :
�  a3=(c%+step%)*�/180
�  x3%=�(a3)*s2%+xc%
�  y3%=�(a3)*s2%+yc%
�  :
�  a4=c%*�/180
�  x4%=�(a4)*s2%+xc%
�  y4%=�(a4)*s2%+yc%
�  :
�  � detail%=1 �
�   �0,8
�   �69,x%,y%-(z%/5)
  �
  � detail%=2 �
   �0,8
"   � x%,y%-(z%/5)
,   � x2%,y2%-(z%/5)
6   � x3%,y3%-(z%/5)
@   � x4%,y4%-(z%/5)
J   � x%,y%-(z%/5)
T  �
^  � detail%=3 �
h:   �0,�sphere_trace_light((c%+180)� 360,(b%+180)� 360)
r   � x%,y%-(z%/5)
|   � x2%,y2%-(z%/5)
�   �85,x3%,y3%-(z%/5)
�   � x4%,y4%-(z%/5)
�   �85,x%,y%-(z%/5)
�  �
� �
��
��
�
�ݤsphere_trace_light(c%,b%)
�� cl1%,cl2%,cl%
�:
�c%=c%+45+�(21)-11
�c%=c% � 360
cl1%=�(�(�(180-c%)))*15
:
b%=b%-20+�(21)-11
&b%=b% � 360
0cl2%=�(�(�(b%)))*15
::
Dcl%=(cl1%+cl2%)/2
N� cl%>15 cl%=15
X� cl%<0 cl%=0
b:
l=15-cl%
v
�ݤcone_trace_light(c%,p)
�� cl1%,cl2%,cl%
�:
�c%=c%+90+�(21)-11
�c%=c% � 360
�cl1%=�(�(�(180-c%)))*15
�:
�cl2%=15-(�(�(p*90))*15)
�:
�cl%=(cl1%+cl2%)/2
�:
�� cl%>15 cl%=15
�� cl%<0 cl%=0
:
=15-cl%

 /��make_cone(xc%,yc%,zc%,r%,h%,cmp%,detail%)
*M� step%,y%,c%,a,x%,z%,s%,s2%,a2,a3,a4,x2%,x3%,x4%,y2%,y3%,y4%,z2%,z3%,z4%
4:
>step%=fine%/2
H� detail%=1 step%=fine%*2
R� detail%=2 step%=fine%*2
\� step%<r% � r%<30 step%=r%
f!� y%=0 � (cmp%-step%) � step%
p s%=((h%-y%)/h%)*r%
z y2%=y%+step%
� s2%=(h%-y2%)/h%*r%
� � h%=-1 s%=r%:s2%=r%
� � c%=0 � 360 � step%
�  a=c%*�/180
�  x%=�(a)*s%+xc%
�  z%=�(a)*s%+zc%
�  :
�  a2=(c%+step%)*�/180
�  x2%=�(a2)*s%+xc%
�  z2%=�(a2)*s%+zc%
�  :
�  a3=(c%+step%)*�/180
�  x3%=�(a3)*s2%+xc%
	  z3%=�(a3)*s2%+zc%
	  :
	  a4=c%*�/180
	$  x4%=�(a4)*s2%+xc%
	.  z4%=�(a4)*s2%+zc%
	8  :
	B  � detail%=1 �
	L   �0,8
	V   � 69,x%,y%+yc%-(z%/5)
	`  �
	j  � detail%=2 �
	t   �0,8
	~   � x%,y%+yc%-(z%/5)
	�   � x2%,y%+yc%-(z2%/5)
	�   � x3%,y2%+yc%-(z3%/5)
	�   � x4%,y2%+yc%-(z4%/5)
	�   � x%,y%+yc%-(z%/5)
	�  �
	�  � detail%=3 �
	�M   � h%>-1 �0,�cone_trace_light(c%,y%/h%) � �0,�cone_trace_light(c%,0.01)
	�   � x%,y%+yc%-(z%/5)
	�   � x2%,y%+yc%-(z2%/5)
	�   �85,x3%,y2%+yc%-(z3%/5)
	�   � x4%,y2%+yc%-(z4%/5)
	�   �85,x%,y%+yc%-(z%/5)
  �

 �
�
�
(
2,��make_cuboid(x%,y%,z%,w%,h%,d%,detail%)
<� n%
F:
P�0,8
Z� detail%=1 �
d �69,x%,y%-(z%/5)
n �69,x%+w%,y%-(z%/5)
x �69,x%+w%,y%+h%-(z%/5)
� �69,x%,y%+h%-(z%/5)
�! �69,x%-(d%/5),y%-((z%+d%)/5)
�$ �69,x%-(d%/5),y%+h%-((z%+d%)/5)
�$ �69,x%+w%-(d%/5),y%-((z%+d%)/5)
�' �69,x%+w%-(d%/5),y%+h%-((z%+d%)/5)
��
�� detail%=2 �
� ȓ x%,y%-(z%/5),w%,h%
�& ȓ x%-(d%/5),y%-((z%+d%)/5),w%,h%
�" � x%-(d%/5),y%+h%-((z%+d%)/5)
� � x%,y%+h%-(z%/5)
�% � x%+w%-(d%/5),y%+h%-((z%+d%)/5)
� � x%+w%,y%+h%-(z%/5)
 � x%-(d%/5),y%-((z%+d%)/5)
 � x%,y%-(z%/5)
" � x%+w%-(d%/5),y%-((z%+d%)/5)
" � x%+w%,y%-(z%/5)
,�
6� detail%=3 �
@ � n%=0 � d% � 2
J  �0,14
T*  ȓ Ȑ x%-(n%/5),y%-((z%+n%)/5),w%,h%
^
  �0,8
h#  � x%-(n%/5),y%+h%-((z%+n%)/5)
r&  � x%+w%-(n%/5),y%+h%-((z%+n%)/5)
|
  �0,2
�#  � x%+w%-(n%/5),y%-((z%+n%)/5)
� �
��
��
�
���make_horizon(h%,detail%)
�� n%
�:
�� detail%=1 �
� � n%=-640 � 640 � 10
�  �69,n%,h%
� �
��
� detail%=2 �
 � -640,h%:� 640,h%
�
&� detail%=3 �
0
 �0,15
:" ȓ Ȑ -640,-1000,1280,h%+1000
D�
N�
X
b��spray_snow(spray%)
l� n%
v:
�� n%=0 � spray%
�
 �0,�(15)
�  �69,�(1280)-640,�(1024)-212
��
��
�
���display_message1
�� 15
�� res%=2 �
�: �36,3) "This program was written by Dean Alexandrou"
��
�  �20,1)"By Dean Alexandrou"
��

�



��display_message2

 � 15

*� res%=2 �

4: �36,3) "This program was written by Dean Alexandrou"

>8 �37,5) "Does anyone have any jobs that a talented"

H6 �38,6) "18 year-old BASIC programmer could do? "

R" �46,7) "- write to me at..."

\$ �45,9) "96 Sheaveshill Avenue"

f �45,10) "Colindale"

p �45,11) "London"

z �45,12) "NW9 6RY"

�) �43,14) "(Press SPACE to continue)"

��

�! �19,1)"By Dean Alexandrou."

�! �19,3)"Try it in High res."

� �21,6)"(Press SPACE)"

��

��

�

���blend(ys%,yf%)

�� x%,y%,p%

�:

�� defocus$="N" �

�� y%=ys% � yf% � res%
 � xs%=0 � res% � res%
"  � x%=-640+xs% � 640 � res%*2
$   p%=(�x%,y%)+�x%+res%*2,y%))/2
$   �0,p%
.   �69,x%+res%,y%
8  �
B#  � x%=640+xs% � -640 � -res%*2
L$   p%=(�x%,y%)+�x%-res%*2,y%))/2
V   �0,p%
`   �69,x%-res%,y%
j  �
t �
~�
��
�
�
��melt
�� x%,y%,w%,p%,yy%,n%
�:
��
� x%=�(1280)-640
� w%=�(4)*4
� y%=�(1024)-216
� p%=�x%,y%)
� yy%=y%
� �
  yy%+=res%

 � �x%,yy%)<>p% � yy%>=808
) ȓ x%,y%,w%,yy%-y%+res% � x%,y%-res%
 � n%=x% � x%+w% � res%
(#  p%=(�n%,yy%-res%)+�n%,yy%))/2
2  �0,p%
<  �69,n%,yy%
F �
P� �
Z�
�
00000000  0d 00 0a 24 f4 20 2a 2a  2a 20 57 72 69 74 74 65  |...$. *** Writte|
00000010  6e 20 62 79 20 44 65 61  6e 20 41 6c 65 78 61 6e  |n by Dean Alexan|
00000020  64 72 6f 75 0d 00 14 04  0d 00 1e 04 0d 00 28 04  |drou..........(.|
00000030  0d 00 32 12 ee 20 85 20  eb 38 3a f6 3a f1 20 9e  |..2.. . .8:.:. .|
00000040  3a e0 0d 00 3c 04 0d 00  46 90 f5 3a eb 38 3a e8  |:...<...F..:.8:.|
00000050  22 57 68 61 74 20 69 73  20 74 68 65 20 73 74 65  |"What is the ste|
00000060  70 20 73 65 74 74 69 6e  67 20 66 6f 72 20 79 6f  |p setting for yo|
00000070  75 72 20 70 69 63 74 75  72 65 3f 20 28 32 2d 35  |ur picture? (2-5|
00000080  30 29 20 28 32 2d 73 6d  6f 6f 74 68 20 70 6f 6c  |0) (2-smooth pol|
00000090  79 67 6f 6e 73 2c 20 35  30 2d 62 6c 6f 63 6b 79  |ygons, 50-blocky|
000000a0  29 22 27 22 28 49 20 72  65 63 6f 6d 6d 65 6e 64  |)"'"(I recommend|
000000b0  20 31 30 20 2d 20 62 75  74 20 69 74 20 77 69 6c  | 10 - but it wil|
000000c0  6c 20 74 61 6b 65 20 61  20 77 68 69 6c 65 29 3a  |l take a while):|
000000d0  22 66 69 6e 65 25 0d 00  50 1a fd 20 66 69 6e 65  |"fine%..P.. fine|
000000e0  25 3e 3d 32 20 80 20 66  69 6e 65 25 3c 3d 35 30  |%>=2 . fine%<=50|
000000f0  0d 00 5a 6a f1 27 27 22  48 69 67 68 20 52 65 73  |..Zj.''"High Res|
00000100  20 6f 72 20 4c 6f 77 20  72 65 73 3f 20 28 48 2f  | or Low res? (H/|
00000110  4c 29 22 27 22 28 49 20  72 65 63 6f 6d 6d 65 6e  |L)"'"(I recommen|
00000120  64 20 48 69 67 68 20 52  65 73 20 2d 20 62 75 74  |d High Res - but|
00000130  20 69 74 20 74 61 6b 65  73 20 61 6c 6f 74 20 6c  | it takes alot l|
00000140  6f 6e 67 65 72 20 77 69  74 68 20 64 65 66 6f 63  |onger with defoc|
00000150  75 73 73 69 6e 67 29 3a  22 3b 0d 00 64 38 f5 3a  |ussing):";..d8.:|
00000160  52 24 3d be 3a fd 20 52  24 3d 22 48 22 20 84 20  |R$=.:. R$="H" . |
00000170  52 24 3d 22 4c 22 3a f1  20 52 24 3a 72 65 73 25  |R$="L":. R$:res%|
00000180  3d 32 3a e7 20 52 24 3d  22 4c 22 20 72 65 73 25  |=2:. R$="L" res%|
00000190  3d 34 0d 00 6e 5d f1 27  27 22 57 6f 75 6c 64 20  |=4..n].''"Would |
000001a0  79 6f 75 20 6c 69 6b 65  20 64 65 66 6f 63 75 73  |you like defocus|
000001b0  73 69 6e 67 20 6f 6e 3f  20 28 59 2f 4e 29 22 27  |sing on? (Y/N)"'|
000001c0  22 28 49 20 72 65 63 6f  6d 6d 65 6e 64 20 59 65  |"(I recommend Ye|
000001d0  73 20 2d 20 62 75 74 20  69 74 20 77 69 6c 6c 20  |s - but it will |
000001e0  74 61 6b 65 20 61 20 77  68 69 6c 65 29 3a 22 0d  |take a while):".|
000001f0  00 78 2e f5 3a 64 65 66  6f 63 75 73 24 3d be 3a  |.x..:defocus$=.:|
00000200  fd 20 64 65 66 6f 63 75  73 24 3d 22 59 22 20 84  |. defocus$="Y" .|
00000210  20 64 65 66 6f 63 75 73  24 3d 22 4e 22 0d 00 82  | defocus$="N"...|
00000220  05 3a 0d 00 8c 10 e7 20  72 65 73 25 3d 32 20 eb  |.:..... res%=2 .|
00000230  32 30 0d 00 96 0f e7 20  72 65 73 25 3d 34 20 eb  |20..... res%=4 .|
00000240  39 0d 00 a0 0e c8 91 20  36 34 30 2c 32 31 32 0d  |9...... 640,212.|
00000250  00 aa 0f e3 20 6e 25 3d  30 20 b8 20 31 35 0d 00  |.... n%=0 . 15..|
00000260  b4 1e 20 fb 20 6e 25 2c  6e 25 2a 31 37 2c 6e 25  |.. . n%,n%*17,n%|
00000270  2a 31 37 2c 6e 25 2a 38  2b 31 33 35 0d 00 be 05  |*17,n%*8+135....|
00000280  ed 0d 00 c8 05 3a 0d 00  d2 15 f2 64 69 73 70 6c  |.....:.....displ|
00000290  61 79 5f 6d 65 73 73 61  67 65 31 0d 00 dc 05 3a  |ay_message1....:|
000002a0  0d 00 e6 13 e3 20 64 65  74 61 69 6c 25 3d 31 20  |..... detail%=1 |
000002b0  b8 20 33 0d 00 f0 24 20  e7 20 64 65 74 61 69 6c  |. 3...$ . detail|
000002c0  25 3d 32 20 80 20 66 69  6e 65 25 3c 35 20 64 65  |%=2 . fine%<5 de|
000002d0  74 61 69 6c 25 3d 33 0d  00 fa 22 20 e7 20 64 65  |tail%=3..." . de|
000002e0  74 61 69 6c 25 3d 33 20  f2 73 70 72 61 79 5f 73  |tail%=3 .spray_s|
000002f0  6e 6f 77 28 34 30 30 30  29 0d 01 04 1f 20 f2 6d  |now(4000).... .m|
00000300  61 6b 65 5f 68 6f 72 69  7a 6f 6e 28 33 30 30 2c  |ake_horizon(300,|
00000310  64 65 74 61 69 6c 25 29  0d 01 0e 06 20 3a 0d 01  |detail%).... :..|
00000320  18 1a 20 e3 20 78 25 3d  2d 36 34 30 20 b8 20 36  |.. . x%=-640 . 6|
00000330  34 30 20 88 20 31 30 30  0d 01 22 2f 20 20 f2 6d  |40 . 100.."/  .m|
00000340  61 6b 65 5f 63 75 62 6f  69 64 28 78 25 2c 30 2c  |ake_cuboid(x%,0,|
00000350  2d 35 30 30 2c 33 30 2c  31 32 30 2c 33 30 2c 64  |-500,30,120,30,d|
00000360  65 74 61 69 6c 25 29 0d  01 2c 32 20 20 f2 6d 61  |etail%)..,2  .ma|
00000370  6b 65 5f 63 75 62 6f 69  64 28 78 25 2b 33 30 2c  |ke_cuboid(x%+30,|
00000380  36 30 2c 2d 35 31 30 2c  37 30 2c 32 30 2c 32 30  |60,-510,70,20,20|
00000390  2c 64 65 74 61 69 6c 25  29 0d 01 36 06 20 ed 0d  |,detail%)..6. ..|
000003a0  01 40 1f 20 e7 20 64 65  74 61 69 6c 25 3d 33 20  |.@. . detail%=3 |
000003b0  f2 62 6c 65 6e 64 28 38  30 2c 32 32 30 29 0d 01  |.blend(80,220)..|
000003c0  4a 06 20 3a 0d 01 54 2b  20 f2 6d 61 6b 65 5f 63  |J. :..T+ .make_c|
000003d0  6f 6e 65 28 2d 34 30 30  2c 30 2c 30 2c 34 35 2c  |one(-400,0,0,45,|
000003e0  2d 31 2c 31 30 30 2c 64  65 74 61 69 6c 25 29 0d  |-1,100,detail%).|
000003f0  01 5e 0f 20 e3 20 6e 25  3d 31 20 b8 20 36 0d 01  |.^. . n%=1 . 6..|
00000400  68 40 20 20 f2 6d 61 6b  65 5f 63 6f 6e 65 28 2d  |h@  .make_cone(-|
00000410  34 30 30 2c 6e 25 2a 38  30 2b 35 30 2c 30 2c 28  |400,n%*80+50,0,(|
00000420  37 2d 6e 25 2b 32 29 2f  39 2a 34 30 30 2c 32 30  |7-n%+2)/9*400,20|
00000430  30 2c 31 30 30 2c 64 65  74 61 69 6c 25 29 0d 01  |0,100,detail%)..|
00000440  72 22 20 20 e3 20 63 25  3d 2d 38 30 20 b8 20 31  |r"  . c%=-80 . 1|
00000450  32 30 20 88 20 33 36 30  2f 28 31 30 2d 6e 25 29  |20 . 360/(10-n%)|
00000460  0d 01 7c 11 20 20 20 61  3d 63 25 2a af 2f 31 38  |..|.   a=c%*./18|
00000470  30 0d 01 86 1d 20 20 20  78 25 3d b5 28 61 29 2a  |0....   x%=.(a)*|
00000480  28 37 2d 6e 25 2b 32 29  2f 39 2a 33 30 30 0d 01  |(7-n%+2)/9*300..|
00000490  90 1d 20 20 20 7a 25 3d  9b 28 61 29 2a 28 37 2d  |..   z%=.(a)*(7-|
000004a0  6e 25 2b 32 29 2f 39 2a  33 30 30 0d 01 9a 33 20  |n%+2)/9*300...3 |
000004b0  20 20 f2 6d 61 6b 65 5f  73 70 68 65 72 65 28 78  |  .make_sphere(x|
000004c0  25 2d 34 30 30 2c 6e 25  2a 38 30 2b 31 31 30 2c  |%-400,n%*80+110,|
000004d0  7a 25 2c 32 30 2c 64 65  74 61 69 6c 25 29 0d 01  |z%,20,detail%)..|
000004e0  a4 07 20 20 ed 0d 01 ae  06 20 ed 0d 01 b8 31 20  |..  ..... ....1 |
000004f0  f2 6d 61 6b 65 5f 63 6f  6e 65 28 2d 34 30 30 2c  |.make_cone(-400,|
00000500  36 31 30 2c 30 2c 38 30  30 2f 39 2c 32 30 30 2c  |610,0,800/9,200,|
00000510  32 30 30 2c 64 65 74 61  69 6c 25 29 0d 01 c2 1e  |200,detail%)....|
00000520  20 e7 20 64 65 74 61 69  6c 25 3d 33 20 f2 62 6c  | . detail%=3 .bl|
00000530  65 6e 64 28 30 2c 38 31  30 29 0d 01 cc 06 20 3a  |end(0,810).... :|
00000540  0d 01 d6 2f 20 f2 6d 61  6b 65 5f 63 6f 6e 65 28  |.../ .make_cone(|
00000550  35 35 30 2c 30 2c 2d 31  30 30 2c 31 37 30 2c 31  |550,0,-100,170,1|
00000560  37 35 2c 31 30 30 2c 64  65 74 61 69 6c 25 29 0d  |75,100,detail%).|
00000570  01 e0 31 20 f2 6d 61 6b  65 5f 63 6f 6e 65 28 35  |..1 .make_cone(5|
00000580  35 30 2c 31 30 30 2c 2d  31 30 30 2c 31 33 30 2c  |50,100,-100,130,|
00000590  31 35 30 2c 31 30 30 2c  64 65 74 61 69 6c 25 29  |150,100,detail%)|
000005a0  0d 01 ea 30 20 f2 6d 61  6b 65 5f 63 6f 6e 65 28  |...0 .make_cone(|
000005b0  35 35 30 2c 32 30 30 2c  2d 31 30 30 2c 38 30 2c  |550,200,-100,80,|
000005c0  31 32 35 2c 31 30 30 2c  64 65 74 61 69 6c 25 29  |125,100,detail%)|
000005d0  0d 01 f4 30 20 f2 6d 61  6b 65 5f 63 6f 6e 65 28  |...0 .make_cone(|
000005e0  35 35 30 2c 33 30 30 2c  2d 31 30 30 2c 34 30 2c  |550,300,-100,40,|
000005f0  31 30 30 2c 31 30 30 2c  64 65 74 61 69 6c 25 29  |100,100,detail%)|
00000600  0d 01 fe 20 20 e7 20 64  65 74 61 69 6c 25 3d 33  |...  . detail%=3|
00000610  20 f2 62 6c 65 6e 64 28  2d 32 30 2c 38 31 30 29  | .blend(-20,810)|
00000620  0d 02 08 06 20 3a 0d 02  12 28 20 f2 6d 61 6b 65  |.... :...( .make|
00000630  5f 73 70 68 65 72 65 28  30 2c 32 30 30 2c 32 30  |_sphere(0,200,20|
00000640  30 2c 32 30 30 2c 64 65  74 61 69 6c 25 29 0d 02  |0,200,detail%)..|
00000650  1c 28 20 f2 6d 61 6b 65  5f 73 70 68 65 72 65 28  |.( .make_sphere(|
00000660  30 2c 34 38 30 2c 32 30  30 2c 31 30 30 2c 64 65  |0,480,200,100,de|
00000670  74 61 69 6c 25 29 0d 02  26 27 20 f2 6d 61 6b 65  |tail%)..&' .make|
00000680  5f 73 70 68 65 72 65 28  30 2c 34 38 30 2c 33 30  |_sphere(0,480,30|
00000690  30 2c 33 30 2c 64 65 74  61 69 6c 25 29 0d 02 30  |0,30,detail%)..0|
000006a0  31 20 f2 6d 61 6b 65 5f  69 6e 76 65 72 73 65 5f  |1 .make_inverse_|
000006b0  73 70 68 65 72 65 28 2d  33 35 2c 35 32 30 2c 32  |sphere(-35,520,2|
000006c0  38 35 2c 32 30 2c 64 65  74 61 69 6c 25 29 0d 02  |85,20,detail%)..|
000006d0  3a 30 20 f2 6d 61 6b 65  5f 69 6e 76 65 72 73 65  |:0 .make_inverse|
000006e0  5f 73 70 68 65 72 65 28  33 35 2c 35 32 30 2c 32  |_sphere(35,520,2|
000006f0  38 35 2c 32 30 2c 64 65  74 61 69 6c 25 29 0d 02  |85,20,detail%)..|
00000700  44 2f 20 f2 6d 61 6b 65  5f 69 6e 76 65 72 73 65  |D/ .make_inverse|
00000710  5f 73 70 68 65 72 65 28  30 2c 33 36 30 2c 33 31  |_sphere(0,360,31|
00000720  39 2c 32 30 2c 64 65 74  61 69 6c 25 29 0d 02 4e  |9,20,detail%)..N|
00000730  2f 20 f2 6d 61 6b 65 5f  69 6e 76 65 72 73 65 5f  |/ .make_inverse_|
00000740  73 70 68 65 72 65 28 30  2c 33 30 30 2c 33 37 33  |sphere(0,300,373|
00000750  2c 32 30 2c 64 65 74 61  69 6c 25 29 0d 02 58 2f  |,20,detail%)..X/|
00000760  20 f2 6d 61 6b 65 5f 69  6e 76 65 72 73 65 5f 73  | .make_inverse_s|
00000770  70 68 65 72 65 28 30 2c  32 34 30 2c 33 39 35 2c  |phere(0,240,395,|
00000780  32 30 2c 64 65 74 61 69  6c 25 29 0d 02 62 2f 20  |20,detail%)..b/ |
00000790  f2 6d 61 6b 65 5f 69 6e  76 65 72 73 65 5f 73 70  |.make_inverse_sp|
000007a0  68 65 72 65 28 30 2c 31  38 30 2c 33 39 38 2c 32  |here(0,180,398,2|
000007b0  30 2c 64 65 74 61 69 6c  25 29 0d 02 6c 05 ed 0d  |0,detail%)..l...|
000007c0  02 76 1a f4 20 50 52 4f  43 64 69 73 70 6c 61 79  |.v.. PROCdisplay|
000007d0  5f 6d 65 73 73 61 67 65  32 0d 02 80 05 3a 0d 02  |_message2....:..|
000007e0  8a 0d 41 3d a5 3a f2 6d  65 6c 74 0d 02 94 05 e0  |..A=.:.melt.....|
000007f0  0d 02 9e 04 0d 02 a8 2c  dd f2 6d 61 6b 65 5f 73  |.......,..make_s|
00000800  70 68 65 72 65 28 78 63  25 2c 79 63 25 2c 7a 63  |phere(xc%,yc%,zc|
00000810  25 2c 73 69 7a 65 25 2c  64 65 74 61 69 6c 25 29  |%,size%,detail%)|
00000820  0d 02 b2 1d ea 20 62 25  2c 73 25 2c 78 25 2c 79  |..... b%,s%,x%,y|
00000830  25 2c 7a 25 2c 63 25 2c  73 74 65 70 25 0d 02 bc  |%,z%,c%,step%...|
00000840  05 3a 0d 02 c6 26 e7 20  78 63 25 2b 73 69 7a 65  |.:...&. xc%+size|
00000850  25 3c 2d 36 34 30 20 84  20 78 63 25 2b 73 69 7a  |%<-640 . xc%+siz|
00000860  65 25 3e 36 34 30 20 e1  0d 02 d0 11 73 74 65 70  |e%>640 .....step|
00000870  25 3d 66 69 6e 65 25 2f  32 0d 02 da 1d e7 20 64  |%=fine%/2..... d|
00000880  65 74 61 69 6c 25 3d 31  20 73 74 65 70 25 3d 66  |etail%=1 step%=f|
00000890  69 6e 65 25 2a 32 0d 02  e4 1d e7 20 64 65 74 61  |ine%*2..... deta|
000008a0  69 6c 25 3d 32 20 73 74  65 70 25 3d 66 69 6e 65  |il%=2 step%=fine|
000008b0  25 2a 32 0d 02 ee 28 e7  20 73 74 65 70 25 3c 73  |%*2...(. step%<s|
000008c0  69 7a 65 25 20 80 20 73  69 7a 65 25 3c 33 30 20  |ize% . size%<30 |
000008d0  73 74 65 70 25 3d 73 69  7a 65 25 0d 02 f8 1b e3  |step%=size%.....|
000008e0  20 62 25 3d 2d 31 38 30  20 b8 20 31 38 30 20 88  | b%=-180 . 180 .|
000008f0  20 73 74 65 70 25 0d 03  02 18 20 73 25 3d 9b 28  | step%.... s%=.(|
00000900  b2 28 62 25 2f 32 29 29  2a 73 69 7a 65 25 0d 03  |.(b%/2))*size%..|
00000910  0c 21 20 73 32 25 3d 9b  28 b2 28 28 62 25 2d 73  |.! s2%=.(.((b%-s|
00000920  74 65 70 25 29 2f 32 29  29 2a 73 69 7a 65 25 0d  |tep%)/2))*size%.|
00000930  03 16 19 20 e3 20 63 25  3d 30 20 b8 20 33 36 30  |... . c%=0 . 360|
00000940  20 88 20 73 74 65 70 25  0d 03 20 07 20 20 3a 0d  | . step%.. .  :.|
00000950  03 2a 10 20 20 61 3d 63  25 2a af 2f 31 38 30 0d  |.*.  a=c%*./180.|
00000960  03 34 14 20 20 78 25 3d  b5 28 61 29 2a 73 25 2b  |.4.  x%=.(a)*s%+|
00000970  78 63 25 0d 03 3e 14 20  20 79 25 3d 9b 28 61 29  |xc%..>.  y%=.(a)|
00000980  2a 73 25 2b 79 63 25 0d  03 48 1b 20 20 7a 25 3d  |*s%+yc%..H.  z%=|
00000990  28 62 25 2f 31 38 30 2a  73 69 7a 65 25 29 2b 7a  |(b%/180*size%)+z|
000009a0  63 25 0d 03 52 07 20 20  3a 0d 03 5c 19 20 20 61  |c%..R.  :..\.  a|
000009b0  32 3d 28 63 25 2b 73 74  65 70 25 29 2a af 2f 31  |2=(c%+step%)*./1|
000009c0  38 30 0d 03 66 16 20 20  78 32 25 3d b5 28 61 32  |80..f.  x2%=.(a2|
000009d0  29 2a 73 25 2b 78 63 25  0d 03 70 16 20 20 79 32  |)*s%+xc%..p.  y2|
000009e0  25 3d 9b 28 61 32 29 2a  73 25 2b 79 63 25 0d 03  |%=.(a2)*s%+yc%..|
000009f0  7a 07 20 20 3a 0d 03 84  19 20 20 61 33 3d 28 63  |z.  :....  a3=(c|
00000a00  25 2b 73 74 65 70 25 29  2a af 2f 31 38 30 0d 03  |%+step%)*./180..|
00000a10  8e 17 20 20 78 33 25 3d  b5 28 61 33 29 2a 73 32  |..  x3%=.(a3)*s2|
00000a20  25 2b 78 63 25 0d 03 98  17 20 20 79 33 25 3d 9b  |%+xc%....  y3%=.|
00000a30  28 61 33 29 2a 73 32 25  2b 79 63 25 0d 03 a2 07  |(a3)*s2%+yc%....|
00000a40  20 20 3a 0d 03 ac 11 20  20 61 34 3d 63 25 2a af  |  :....  a4=c%*.|
00000a50  2f 31 38 30 0d 03 b6 17  20 20 78 34 25 3d b5 28  |/180....  x4%=.(|
00000a60  61 34 29 2a 73 32 25 2b  78 63 25 0d 03 c0 17 20  |a4)*s2%+xc%.... |
00000a70  20 79 34 25 3d 9b 28 61  34 29 2a 73 32 25 2b 79  | y4%=.(a4)*s2%+y|
00000a80  63 25 0d 03 ca 07 20 20  3a 0d 03 d4 13 20 20 e7  |c%....  :....  .|
00000a90  20 64 65 74 61 69 6c 25  3d 31 20 8c 0d 03 de 0b  | detail%=1 .....|
00000aa0  20 20 20 e6 30 2c 38 0d  03 e8 17 20 20 20 f0 36  |   .0,8....   .6|
00000ab0  39 2c 78 25 2c 79 25 2d  28 7a 25 2f 35 29 0d 03  |9,x%,y%-(z%/5)..|
00000ac0  f2 07 20 20 cd 0d 03 fc  13 20 20 e7 20 64 65 74  |..  .....  . det|
00000ad0  61 69 6c 25 3d 32 20 8c  0d 04 06 0b 20 20 20 e6  |ail%=2 .....   .|
00000ae0  30 2c 38 0d 04 10 15 20  20 20 ec 20 78 25 2c 79  |0,8....   . x%,y|
00000af0  25 2d 28 7a 25 2f 35 29  0d 04 1a 17 20 20 20 df  |%-(z%/5)....   .|
00000b00  20 78 32 25 2c 79 32 25  2d 28 7a 25 2f 35 29 0d  | x2%,y2%-(z%/5).|
00000b10  04 24 17 20 20 20 df 20  78 33 25 2c 79 33 25 2d  |.$.   . x3%,y3%-|
00000b20  28 7a 25 2f 35 29 0d 04  2e 17 20 20 20 df 20 78  |(z%/5)....   . x|
00000b30  34 25 2c 79 34 25 2d 28  7a 25 2f 35 29 0d 04 38  |4%,y4%-(z%/5)..8|
00000b40  15 20 20 20 df 20 78 25  2c 79 25 2d 28 7a 25 2f  |.   . x%,y%-(z%/|
00000b50  35 29 0d 04 42 07 20 20  cd 0d 04 4c 13 20 20 e7  |5)..B.  ...L.  .|
00000b60  20 64 65 74 61 69 6c 25  3d 33 20 8c 0d 04 56 24  | detail%=3 ...V$|
00000b70  20 20 20 e6 30 2c a4 73  70 68 65 72 65 5f 74 72  |   .0,.sphere_tr|
00000b80  61 63 65 5f 6c 69 67 68  74 28 63 25 2c 62 25 29  |ace_light(c%,b%)|
00000b90  0d 04 60 15 20 20 20 ec  20 78 25 2c 79 25 2d 28  |..`.   . x%,y%-(|
00000ba0  7a 25 2f 35 29 0d 04 6a  17 20 20 20 ec 20 78 32  |z%/5)..j.   . x2|
00000bb0  25 2c 79 32 25 2d 28 7a  25 2f 35 29 0d 04 74 19  |%,y2%-(z%/5)..t.|
00000bc0  20 20 20 f0 38 35 2c 78  33 25 2c 79 33 25 2d 28  |   .85,x3%,y3%-(|
00000bd0  7a 25 2f 35 29 0d 04 7e  17 20 20 20 ec 20 78 34  |z%/5)..~.   . x4|
00000be0  25 2c 79 34 25 2d 28 7a  25 2f 35 29 0d 04 88 17  |%,y4%-(z%/5)....|
00000bf0  20 20 20 f0 38 35 2c 78  25 2c 79 25 2d 28 7a 25  |   .85,x%,y%-(z%|
00000c00  2f 35 29 0d 04 92 07 20  20 cd 0d 04 9c 06 20 ed  |/5)....  ..... .|
00000c10  0d 04 a6 05 ed 0d 04 b0  05 e1 0d 04 ba 04 0d 04  |................|
00000c20  c4 34 dd f2 6d 61 6b 65  5f 69 6e 76 65 72 73 65  |.4..make_inverse|
00000c30  5f 73 70 68 65 72 65 28  78 63 25 2c 79 63 25 2c  |_sphere(xc%,yc%,|
00000c40  7a 63 25 2c 73 69 7a 65  25 2c 64 65 74 61 69 6c  |zc%,size%,detail|
00000c50  25 29 0d 04 ce 4c ea 20  62 25 2c 73 25 2c 78 25  |%)...L. b%,s%,x%|
00000c60  2c 79 25 2c 7a 25 2c 63  25 2c 73 74 65 70 25 2c  |,y%,z%,c%,step%,|
00000c70  61 2c 61 32 2c 61 33 2c  61 34 2c 78 32 25 2c 78  |a,a2,a3,a4,x2%,x|
00000c80  33 25 2c 78 34 25 2c 79  32 25 2c 79 33 25 2c 79  |3%,x4%,y2%,y3%,y|
00000c90  34 25 2c 7a 32 25 2c 7a  33 25 2c 7a 34 25 0d 04  |4%,z2%,z3%,z4%..|
00000ca0  d8 05 3a 0d 04 e2 11 73  74 65 70 25 3d 66 69 6e  |..:....step%=fin|
00000cb0  65 25 2f 32 0d 04 ec 1d  e7 20 64 65 74 61 69 6c  |e%/2..... detail|
00000cc0  25 3d 31 20 73 74 65 70  25 3d 66 69 6e 65 25 2a  |%=1 step%=fine%*|
00000cd0  32 0d 04 f6 1d e7 20 64  65 74 61 69 6c 25 3d 32  |2..... detail%=2|
00000ce0  20 73 74 65 70 25 3d 66  69 6e 65 25 2a 32 0d 05  | step%=fine%*2..|
00000cf0  00 28 e7 20 73 74 65 70  25 3c 73 69 7a 65 25 20  |.(. step%<size% |
00000d00  80 20 73 69 7a 65 25 3c  33 30 20 73 74 65 70 25  |. size%<30 step%|
00000d10  3d 73 69 7a 65 25 0d 05  0a 19 e3 20 62 25 3d 2d  |=size%..... b%=-|
00000d20  31 38 30 20 b8 20 30 20  88 20 73 74 65 70 25 0d  |180 . 0 . step%.|
00000d30  05 14 18 20 73 25 3d 9b  28 b2 28 62 25 2f 32 29  |... s%=.(.(b%/2)|
00000d40  29 2a 73 69 7a 65 25 0d  05 1e 21 20 73 32 25 3d  |)*size%...! s2%=|
00000d50  9b 28 b2 28 28 62 25 2d  73 74 65 70 25 29 2f 32  |.(.((b%-step%)/2|
00000d60  29 29 2a 73 69 7a 65 25  0d 05 28 19 20 e3 20 63  |))*size%..(. . c|
00000d70  25 3d 30 20 b8 20 33 36  30 20 88 20 73 74 65 70  |%=0 . 360 . step|
00000d80  25 0d 05 32 07 20 20 3a  0d 05 3c 10 20 20 61 3d  |%..2.  :..<.  a=|
00000d90  63 25 2a af 2f 31 38 30  0d 05 46 14 20 20 78 25  |c%*./180..F.  x%|
00000da0  3d b5 28 61 29 2a 73 25  2b 78 63 25 0d 05 50 14  |=.(a)*s%+xc%..P.|
00000db0  20 20 79 25 3d 9b 28 61  29 2a 73 25 2b 79 63 25  |  y%=.(a)*s%+yc%|
00000dc0  0d 05 5a 1b 20 20 7a 25  3d 28 62 25 2f 31 38 30  |..Z.  z%=(b%/180|
00000dd0  2a 73 69 7a 65 25 29 2b  7a 63 25 0d 05 64 07 20  |*size%)+zc%..d. |
00000de0  20 3a 0d 05 6e 19 20 20  61 32 3d 28 63 25 2b 73  | :..n.  a2=(c%+s|
00000df0  74 65 70 25 29 2a af 2f  31 38 30 0d 05 78 16 20  |tep%)*./180..x. |
00000e00  20 78 32 25 3d b5 28 61  32 29 2a 73 25 2b 78 63  | x2%=.(a2)*s%+xc|
00000e10  25 0d 05 82 16 20 20 79  32 25 3d 9b 28 61 32 29  |%....  y2%=.(a2)|
00000e20  2a 73 25 2b 79 63 25 0d  05 8c 07 20 20 3a 0d 05  |*s%+yc%....  :..|
00000e30  96 19 20 20 61 33 3d 28  63 25 2b 73 74 65 70 25  |..  a3=(c%+step%|
00000e40  29 2a af 2f 31 38 30 0d  05 a0 17 20 20 78 33 25  |)*./180....  x3%|
00000e50  3d b5 28 61 33 29 2a 73  32 25 2b 78 63 25 0d 05  |=.(a3)*s2%+xc%..|
00000e60  aa 17 20 20 79 33 25 3d  9b 28 61 33 29 2a 73 32  |..  y3%=.(a3)*s2|
00000e70  25 2b 79 63 25 0d 05 b4  07 20 20 3a 0d 05 be 11  |%+yc%....  :....|
00000e80  20 20 61 34 3d 63 25 2a  af 2f 31 38 30 0d 05 c8  |  a4=c%*./180...|
00000e90  17 20 20 78 34 25 3d b5  28 61 34 29 2a 73 32 25  |.  x4%=.(a4)*s2%|
00000ea0  2b 78 63 25 0d 05 d2 17  20 20 79 34 25 3d 9b 28  |+xc%....  y4%=.(|
00000eb0  61 34 29 2a 73 32 25 2b  79 63 25 0d 05 dc 07 20  |a4)*s2%+yc%.... |
00000ec0  20 3a 0d 05 e6 13 20 20  e7 20 64 65 74 61 69 6c  | :....  . detail|
00000ed0  25 3d 31 20 8c 0d 05 f0  0b 20 20 20 e6 30 2c 38  |%=1 .....   .0,8|
00000ee0  0d 05 fa 17 20 20 20 f0  36 39 2c 78 25 2c 79 25  |....   .69,x%,y%|
00000ef0  2d 28 7a 25 2f 35 29 0d  06 04 07 20 20 cd 0d 06  |-(z%/5)....  ...|
00000f00  0e 13 20 20 e7 20 64 65  74 61 69 6c 25 3d 32 20  |..  . detail%=2 |
00000f10  8c 0d 06 18 0b 20 20 20  e6 30 2c 38 0d 06 22 15  |.....   .0,8..".|
00000f20  20 20 20 ec 20 78 25 2c  79 25 2d 28 7a 25 2f 35  |   . x%,y%-(z%/5|
00000f30  29 0d 06 2c 17 20 20 20  df 20 78 32 25 2c 79 32  |)..,.   . x2%,y2|
00000f40  25 2d 28 7a 25 2f 35 29  0d 06 36 17 20 20 20 df  |%-(z%/5)..6.   .|
00000f50  20 78 33 25 2c 79 33 25  2d 28 7a 25 2f 35 29 0d  | x3%,y3%-(z%/5).|
00000f60  06 40 17 20 20 20 df 20  78 34 25 2c 79 34 25 2d  |.@.   . x4%,y4%-|
00000f70  28 7a 25 2f 35 29 0d 06  4a 15 20 20 20 df 20 78  |(z%/5)..J.   . x|
00000f80  25 2c 79 25 2d 28 7a 25  2f 35 29 0d 06 54 07 20  |%,y%-(z%/5)..T. |
00000f90  20 cd 0d 06 5e 13 20 20  e7 20 64 65 74 61 69 6c  | ...^.  . detail|
00000fa0  25 3d 33 20 8c 0d 06 68  3a 20 20 20 e6 30 2c a4  |%=3 ...h:   .0,.|
00000fb0  73 70 68 65 72 65 5f 74  72 61 63 65 5f 6c 69 67  |sphere_trace_lig|
00000fc0  68 74 28 28 63 25 2b 31  38 30 29 83 20 33 36 30  |ht((c%+180). 360|
00000fd0  2c 28 62 25 2b 31 38 30  29 83 20 33 36 30 29 0d  |,(b%+180). 360).|
00000fe0  06 72 15 20 20 20 ec 20  78 25 2c 79 25 2d 28 7a  |.r.   . x%,y%-(z|
00000ff0  25 2f 35 29 0d 06 7c 17  20 20 20 ec 20 78 32 25  |%/5)..|.   . x2%|
00001000  2c 79 32 25 2d 28 7a 25  2f 35 29 0d 06 86 19 20  |,y2%-(z%/5).... |
00001010  20 20 f0 38 35 2c 78 33  25 2c 79 33 25 2d 28 7a  |  .85,x3%,y3%-(z|
00001020  25 2f 35 29 0d 06 90 17  20 20 20 ec 20 78 34 25  |%/5)....   . x4%|
00001030  2c 79 34 25 2d 28 7a 25  2f 35 29 0d 06 9a 17 20  |,y4%-(z%/5).... |
00001040  20 20 f0 38 35 2c 78 25  2c 79 25 2d 28 7a 25 2f  |  .85,x%,y%-(z%/|
00001050  35 29 0d 06 a4 07 20 20  cd 0d 06 ae 06 20 ed 0d  |5)....  ..... ..|
00001060  06 b8 05 ed 0d 06 c2 05  e1 0d 06 cc 04 0d 06 d6  |................|
00001070  1f dd a4 73 70 68 65 72  65 5f 74 72 61 63 65 5f  |...sphere_trace_|
00001080  6c 69 67 68 74 28 63 25  2c 62 25 29 0d 06 e0 13  |light(c%,b%)....|
00001090  ea 20 63 6c 31 25 2c 63  6c 32 25 2c 63 6c 25 0d  |. cl1%,cl2%,cl%.|
000010a0  06 ea 05 3a 0d 06 f4 15  63 25 3d 63 25 2b 34 35  |...:....c%=c%+45|
000010b0  2b b3 28 32 31 29 2d 31  31 0d 06 fe 0f 63 25 3d  |+.(21)-11....c%=|
000010c0  63 25 20 83 20 33 36 30  0d 07 08 1b 63 6c 31 25  |c% . 360....cl1%|
000010d0  3d 9b 28 b2 28 94 28 31  38 30 2d 63 25 29 29 29  |=.(.(.(180-c%)))|
000010e0  2a 31 35 0d 07 12 05 3a  0d 07 1c 15 62 25 3d 62  |*15....:....b%=b|
000010f0  25 2d 32 30 2b b3 28 32  31 29 2d 31 31 0d 07 26  |%-20+.(21)-11..&|
00001100  0f 62 25 3d 62 25 20 83  20 33 36 30 0d 07 30 17  |.b%=b% . 360..0.|
00001110  63 6c 32 25 3d 9b 28 b2  28 94 28 62 25 29 29 29  |cl2%=.(.(.(b%)))|
00001120  2a 31 35 0d 07 3a 05 3a  0d 07 44 15 63 6c 25 3d  |*15..:.:..D.cl%=|
00001130  28 63 6c 31 25 2b 63 6c  32 25 29 2f 32 0d 07 4e  |(cl1%+cl2%)/2..N|
00001140  13 e7 20 63 6c 25 3e 31  35 20 63 6c 25 3d 31 35  |.. cl%>15 cl%=15|
00001150  0d 07 58 11 e7 20 63 6c  25 3c 30 20 63 6c 25 3d  |..X.. cl%<0 cl%=|
00001160  30 0d 07 62 05 3a 0d 07  6c 0b 3d 31 35 2d 63 6c  |0..b.:..l.=15-cl|
00001170  25 0d 07 76 04 0d 07 80  1c dd a4 63 6f 6e 65 5f  |%..v.......cone_|
00001180  74 72 61 63 65 5f 6c 69  67 68 74 28 63 25 2c 70  |trace_light(c%,p|
00001190  29 0d 07 8a 13 ea 20 63  6c 31 25 2c 63 6c 32 25  |)..... cl1%,cl2%|
000011a0  2c 63 6c 25 0d 07 94 05  3a 0d 07 9e 15 63 25 3d  |,cl%....:....c%=|
000011b0  63 25 2b 39 30 2b b3 28  32 31 29 2d 31 31 0d 07  |c%+90+.(21)-11..|
000011c0  a8 0f 63 25 3d 63 25 20  83 20 33 36 30 0d 07 b2  |..c%=c% . 360...|
000011d0  1b 63 6c 31 25 3d 9b 28  b2 28 94 28 31 38 30 2d  |.cl1%=.(.(.(180-|
000011e0  63 25 29 29 29 2a 31 35  0d 07 bc 05 3a 0d 07 c6  |c%)))*15....:...|
000011f0  1b 63 6c 32 25 3d 31 35  2d 28 b5 28 b2 28 70 2a  |.cl2%=15-(.(.(p*|
00001200  39 30 29 29 2a 31 35 29  0d 07 d0 05 3a 0d 07 da  |90))*15)....:...|
00001210  15 63 6c 25 3d 28 63 6c  31 25 2b 63 6c 32 25 29  |.cl%=(cl1%+cl2%)|
00001220  2f 32 0d 07 e4 05 3a 0d  07 ee 13 e7 20 63 6c 25  |/2....:..... cl%|
00001230  3e 31 35 20 63 6c 25 3d  31 35 0d 07 f8 11 e7 20  |>15 cl%=15..... |
00001240  63 6c 25 3c 30 20 63 6c  25 3d 30 0d 08 02 05 3a  |cl%<0 cl%=0....:|
00001250  0d 08 0c 0b 3d 31 35 2d  63 6c 25 0d 08 16 04 0d  |....=15-cl%.....|
00001260  08 20 2f dd f2 6d 61 6b  65 5f 63 6f 6e 65 28 78  |. /..make_cone(x|
00001270  63 25 2c 79 63 25 2c 7a  63 25 2c 72 25 2c 68 25  |c%,yc%,zc%,r%,h%|
00001280  2c 63 6d 70 25 2c 64 65  74 61 69 6c 25 29 0d 08  |,cmp%,detail%)..|
00001290  2a 4d ea 20 73 74 65 70  25 2c 79 25 2c 63 25 2c  |*M. step%,y%,c%,|
000012a0  61 2c 78 25 2c 7a 25 2c  73 25 2c 73 32 25 2c 61  |a,x%,z%,s%,s2%,a|
000012b0  32 2c 61 33 2c 61 34 2c  78 32 25 2c 78 33 25 2c  |2,a3,a4,x2%,x3%,|
000012c0  78 34 25 2c 79 32 25 2c  79 33 25 2c 79 34 25 2c  |x4%,y2%,y3%,y4%,|
000012d0  7a 32 25 2c 7a 33 25 2c  7a 34 25 0d 08 34 05 3a  |z2%,z3%,z4%..4.:|
000012e0  0d 08 3e 11 73 74 65 70  25 3d 66 69 6e 65 25 2f  |..>.step%=fine%/|
000012f0  32 0d 08 48 1d e7 20 64  65 74 61 69 6c 25 3d 31  |2..H.. detail%=1|
00001300  20 73 74 65 70 25 3d 66  69 6e 65 25 2a 32 0d 08  | step%=fine%*2..|
00001310  52 1d e7 20 64 65 74 61  69 6c 25 3d 32 20 73 74  |R.. detail%=2 st|
00001320  65 70 25 3d 66 69 6e 65  25 2a 32 0d 08 5c 1f e7  |ep%=fine%*2..\..|
00001330  20 73 74 65 70 25 3c 72  25 20 80 20 72 25 3c 33  | step%<r% . r%<3|
00001340  30 20 73 74 65 70 25 3d  72 25 0d 08 66 21 e3 20  |0 step%=r%..f!. |
00001350  79 25 3d 30 20 b8 20 28  63 6d 70 25 2d 73 74 65  |y%=0 . (cmp%-ste|
00001360  70 25 29 20 88 20 73 74  65 70 25 0d 08 70 17 20  |p%) . step%..p. |
00001370  73 25 3d 28 28 68 25 2d  79 25 29 2f 68 25 29 2a  |s%=((h%-y%)/h%)*|
00001380  72 25 0d 08 7a 11 20 79  32 25 3d 79 25 2b 73 74  |r%..z. y2%=y%+st|
00001390  65 70 25 0d 08 84 17 20  73 32 25 3d 28 68 25 2d  |ep%.... s2%=(h%-|
000013a0  79 32 25 29 2f 68 25 2a  72 25 0d 08 8e 19 20 e7  |y2%)/h%*r%.... .|
000013b0  20 68 25 3d 2d 31 20 73  25 3d 72 25 3a 73 32 25  | h%=-1 s%=r%:s2%|
000013c0  3d 72 25 0d 08 98 19 20  e3 20 63 25 3d 30 20 b8  |=r%.... . c%=0 .|
000013d0  20 33 36 30 20 88 20 73  74 65 70 25 0d 08 a2 10  | 360 . step%....|
000013e0  20 20 61 3d 63 25 2a af  2f 31 38 30 0d 08 ac 14  |  a=c%*./180....|
000013f0  20 20 78 25 3d b5 28 61  29 2a 73 25 2b 78 63 25  |  x%=.(a)*s%+xc%|
00001400  0d 08 b6 14 20 20 7a 25  3d 9b 28 61 29 2a 73 25  |....  z%=.(a)*s%|
00001410  2b 7a 63 25 0d 08 c0 07  20 20 3a 0d 08 ca 19 20  |+zc%....  :.... |
00001420  20 61 32 3d 28 63 25 2b  73 74 65 70 25 29 2a af  | a2=(c%+step%)*.|
00001430  2f 31 38 30 0d 08 d4 16  20 20 78 32 25 3d b5 28  |/180....  x2%=.(|
00001440  61 32 29 2a 73 25 2b 78  63 25 0d 08 de 16 20 20  |a2)*s%+xc%....  |
00001450  7a 32 25 3d 9b 28 61 32  29 2a 73 25 2b 7a 63 25  |z2%=.(a2)*s%+zc%|
00001460  0d 08 e8 07 20 20 3a 0d  08 f2 19 20 20 61 33 3d  |....  :....  a3=|
00001470  28 63 25 2b 73 74 65 70  25 29 2a af 2f 31 38 30  |(c%+step%)*./180|
00001480  0d 08 fc 17 20 20 78 33  25 3d b5 28 61 33 29 2a  |....  x3%=.(a3)*|
00001490  73 32 25 2b 78 63 25 0d  09 06 17 20 20 7a 33 25  |s2%+xc%....  z3%|
000014a0  3d 9b 28 61 33 29 2a 73  32 25 2b 7a 63 25 0d 09  |=.(a3)*s2%+zc%..|
000014b0  10 07 20 20 3a 0d 09 1a  11 20 20 61 34 3d 63 25  |..  :....  a4=c%|
000014c0  2a af 2f 31 38 30 0d 09  24 17 20 20 78 34 25 3d  |*./180..$.  x4%=|
000014d0  b5 28 61 34 29 2a 73 32  25 2b 78 63 25 0d 09 2e  |.(a4)*s2%+xc%...|
000014e0  17 20 20 7a 34 25 3d 9b  28 61 34 29 2a 73 32 25  |.  z4%=.(a4)*s2%|
000014f0  2b 7a 63 25 0d 09 38 07  20 20 3a 0d 09 42 13 20  |+zc%..8.  :..B. |
00001500  20 e7 20 64 65 74 61 69  6c 25 3d 31 20 8c 0d 09  | . detail%=1 ...|
00001510  4c 0b 20 20 20 e6 30 2c  38 0d 09 56 1c 20 20 20  |L.   .0,8..V.   |
00001520  f0 20 36 39 2c 78 25 2c  79 25 2b 79 63 25 2d 28  |. 69,x%,y%+yc%-(|
00001530  7a 25 2f 35 29 0d 09 60  07 20 20 cd 0d 09 6a 13  |z%/5)..`.  ...j.|
00001540  20 20 e7 20 64 65 74 61  69 6c 25 3d 32 20 8c 0d  |  . detail%=2 ..|
00001550  09 74 0b 20 20 20 e6 30  2c 38 0d 09 7e 19 20 20  |.t.   .0,8..~.  |
00001560  20 ec 20 78 25 2c 79 25  2b 79 63 25 2d 28 7a 25  | . x%,y%+yc%-(z%|
00001570  2f 35 29 0d 09 88 1b 20  20 20 df 20 78 32 25 2c  |/5)....   . x2%,|
00001580  79 25 2b 79 63 25 2d 28  7a 32 25 2f 35 29 0d 09  |y%+yc%-(z2%/5)..|
00001590  92 1c 20 20 20 df 20 78  33 25 2c 79 32 25 2b 79  |..   . x3%,y2%+y|
000015a0  63 25 2d 28 7a 33 25 2f  35 29 0d 09 9c 1c 20 20  |c%-(z3%/5)....  |
000015b0  20 df 20 78 34 25 2c 79  32 25 2b 79 63 25 2d 28  | . x4%,y2%+yc%-(|
000015c0  7a 34 25 2f 35 29 0d 09  a6 19 20 20 20 df 20 78  |z4%/5)....   . x|
000015d0  25 2c 79 25 2b 79 63 25  2d 28 7a 25 2f 35 29 0d  |%,y%+yc%-(z%/5).|
000015e0  09 b0 07 20 20 cd 0d 09  ba 13 20 20 e7 20 64 65  |...  .....  . de|
000015f0  74 61 69 6c 25 3d 33 20  8c 0d 09 c4 4d 20 20 20  |tail%=3 ....M   |
00001600  e7 20 68 25 3e 2d 31 20  e6 30 2c a4 63 6f 6e 65  |. h%>-1 .0,.cone|
00001610  5f 74 72 61 63 65 5f 6c  69 67 68 74 28 63 25 2c  |_trace_light(c%,|
00001620  79 25 2f 68 25 29 20 8b  20 e6 30 2c a4 63 6f 6e  |y%/h%) . .0,.con|
00001630  65 5f 74 72 61 63 65 5f  6c 69 67 68 74 28 63 25  |e_trace_light(c%|
00001640  2c 30 2e 30 31 29 0d 09  ce 19 20 20 20 ec 20 78  |,0.01)....   . x|
00001650  25 2c 79 25 2b 79 63 25  2d 28 7a 25 2f 35 29 0d  |%,y%+yc%-(z%/5).|
00001660  09 d8 1b 20 20 20 ec 20  78 32 25 2c 79 25 2b 79  |...   . x2%,y%+y|
00001670  63 25 2d 28 7a 32 25 2f  35 29 0d 09 e2 1e 20 20  |c%-(z2%/5)....  |
00001680  20 f0 38 35 2c 78 33 25  2c 79 32 25 2b 79 63 25  | .85,x3%,y2%+yc%|
00001690  2d 28 7a 33 25 2f 35 29  0d 09 ec 1c 20 20 20 ec  |-(z3%/5)....   .|
000016a0  20 78 34 25 2c 79 32 25  2b 79 63 25 2d 28 7a 34  | x4%,y2%+yc%-(z4|
000016b0  25 2f 35 29 0d 09 f6 1b  20 20 20 f0 38 35 2c 78  |%/5)....   .85,x|
000016c0  25 2c 79 25 2b 79 63 25  2d 28 7a 25 2f 35 29 0d  |%,y%+yc%-(z%/5).|
000016d0  0a 00 07 20 20 cd 0d 0a  0a 06 20 ed 0d 0a 14 05  |...  ..... .....|
000016e0  ed 0d 0a 1e 05 e1 0d 0a  28 04 0d 0a 32 2c dd f2  |........(...2,..|
000016f0  6d 61 6b 65 5f 63 75 62  6f 69 64 28 78 25 2c 79  |make_cuboid(x%,y|
00001700  25 2c 7a 25 2c 77 25 2c  68 25 2c 64 25 2c 64 65  |%,z%,w%,h%,d%,de|
00001710  74 61 69 6c 25 29 0d 0a  3c 08 ea 20 6e 25 0d 0a  |tail%)..<.. n%..|
00001720  46 05 3a 0d 0a 50 08 e6  30 2c 38 0d 0a 5a 11 e7  |F.:..P..0,8..Z..|
00001730  20 64 65 74 61 69 6c 25  3d 31 20 8c 0d 0a 64 15  | detail%=1 ...d.|
00001740  20 f0 36 39 2c 78 25 2c  79 25 2d 28 7a 25 2f 35  | .69,x%,y%-(z%/5|
00001750  29 0d 0a 6e 18 20 f0 36  39 2c 78 25 2b 77 25 2c  |)..n. .69,x%+w%,|
00001760  79 25 2d 28 7a 25 2f 35  29 0d 0a 78 1b 20 f0 36  |y%-(z%/5)..x. .6|
00001770  39 2c 78 25 2b 77 25 2c  79 25 2b 68 25 2d 28 7a  |9,x%+w%,y%+h%-(z|
00001780  25 2f 35 29 0d 0a 82 18  20 f0 36 39 2c 78 25 2c  |%/5).... .69,x%,|
00001790  79 25 2b 68 25 2d 28 7a  25 2f 35 29 0d 0a 8c 21  |y%+h%-(z%/5)...!|
000017a0  20 f0 36 39 2c 78 25 2d  28 64 25 2f 35 29 2c 79  | .69,x%-(d%/5),y|
000017b0  25 2d 28 28 7a 25 2b 64  25 29 2f 35 29 0d 0a 96  |%-((z%+d%)/5)...|
000017c0  24 20 f0 36 39 2c 78 25  2d 28 64 25 2f 35 29 2c  |$ .69,x%-(d%/5),|
000017d0  79 25 2b 68 25 2d 28 28  7a 25 2b 64 25 29 2f 35  |y%+h%-((z%+d%)/5|
000017e0  29 0d 0a a0 24 20 f0 36  39 2c 78 25 2b 77 25 2d  |)...$ .69,x%+w%-|
000017f0  28 64 25 2f 35 29 2c 79  25 2d 28 28 7a 25 2b 64  |(d%/5),y%-((z%+d|
00001800  25 29 2f 35 29 0d 0a aa  27 20 f0 36 39 2c 78 25  |%)/5)...' .69,x%|
00001810  2b 77 25 2d 28 64 25 2f  35 29 2c 79 25 2b 68 25  |+w%-(d%/5),y%+h%|
00001820  2d 28 28 7a 25 2b 64 25  29 2f 35 29 0d 0a b4 05  |-((z%+d%)/5)....|
00001830  cd 0d 0a be 11 e7 20 64  65 74 61 69 6c 25 3d 32  |...... detail%=2|
00001840  20 8c 0d 0a c8 1a 20 c8  93 20 78 25 2c 79 25 2d  | ..... .. x%,y%-|
00001850  28 7a 25 2f 35 29 2c 77  25 2c 68 25 0d 0a d2 26  |(z%/5),w%,h%...&|
00001860  20 c8 93 20 78 25 2d 28  64 25 2f 35 29 2c 79 25  | .. x%-(d%/5),y%|
00001870  2d 28 28 7a 25 2b 64 25  29 2f 35 29 2c 77 25 2c  |-((z%+d%)/5),w%,|
00001880  68 25 0d 0a dc 22 20 ec  20 78 25 2d 28 64 25 2f  |h%..." . x%-(d%/|
00001890  35 29 2c 79 25 2b 68 25  2d 28 28 7a 25 2b 64 25  |5),y%+h%-((z%+d%|
000018a0  29 2f 35 29 0d 0a e6 16  20 df 20 78 25 2c 79 25  |)/5).... . x%,y%|
000018b0  2b 68 25 2d 28 7a 25 2f  35 29 0d 0a f0 25 20 ec  |+h%-(z%/5)...% .|
000018c0  20 78 25 2b 77 25 2d 28  64 25 2f 35 29 2c 79 25  | x%+w%-(d%/5),y%|
000018d0  2b 68 25 2d 28 28 7a 25  2b 64 25 29 2f 35 29 0d  |+h%-((z%+d%)/5).|
000018e0  0a fa 19 20 df 20 78 25  2b 77 25 2c 79 25 2b 68  |... . x%+w%,y%+h|
000018f0  25 2d 28 7a 25 2f 35 29  0d 0b 04 1f 20 ec 20 78  |%-(z%/5).... . x|
00001900  25 2d 28 64 25 2f 35 29  2c 79 25 2d 28 28 7a 25  |%-(d%/5),y%-((z%|
00001910  2b 64 25 29 2f 35 29 0d  0b 0e 13 20 df 20 78 25  |+d%)/5).... . x%|
00001920  2c 79 25 2d 28 7a 25 2f  35 29 0d 0b 18 22 20 ec  |,y%-(z%/5)..." .|
00001930  20 78 25 2b 77 25 2d 28  64 25 2f 35 29 2c 79 25  | x%+w%-(d%/5),y%|
00001940  2d 28 28 7a 25 2b 64 25  29 2f 35 29 0d 0b 22 16  |-((z%+d%)/5)..".|
00001950  20 df 20 78 25 2b 77 25  2c 79 25 2d 28 7a 25 2f  | . x%+w%,y%-(z%/|
00001960  35 29 0d 0b 2c 05 cd 0d  0b 36 11 e7 20 64 65 74  |5)..,....6.. det|
00001970  61 69 6c 25 3d 33 20 8c  0d 0b 40 14 20 e3 20 6e  |ail%=3 ...@. . n|
00001980  25 3d 30 20 b8 20 64 25  20 88 20 32 0d 0b 4a 0b  |%=0 . d% . 2..J.|
00001990  20 20 e6 30 2c 31 34 0d  0b 54 2a 20 20 c8 93 20  |  .0,14..T*  .. |
000019a0  c8 90 20 78 25 2d 28 6e  25 2f 35 29 2c 79 25 2d  |.. x%-(n%/5),y%-|
000019b0  28 28 7a 25 2b 6e 25 29  2f 35 29 2c 77 25 2c 68  |((z%+n%)/5),w%,h|
000019c0  25 0d 0b 5e 0a 20 20 e6  30 2c 38 0d 0b 68 23 20  |%..^.  .0,8..h# |
000019d0  20 ec 20 78 25 2d 28 6e  25 2f 35 29 2c 79 25 2b  | . x%-(n%/5),y%+|
000019e0  68 25 2d 28 28 7a 25 2b  6e 25 29 2f 35 29 0d 0b  |h%-((z%+n%)/5)..|
000019f0  72 26 20 20 df 20 78 25  2b 77 25 2d 28 6e 25 2f  |r&  . x%+w%-(n%/|
00001a00  35 29 2c 79 25 2b 68 25  2d 28 28 7a 25 2b 6e 25  |5),y%+h%-((z%+n%|
00001a10  29 2f 35 29 0d 0b 7c 0a  20 20 e6 30 2c 32 0d 0b  |)/5)..|.  .0,2..|
00001a20  86 23 20 20 df 20 78 25  2b 77 25 2d 28 6e 25 2f  |.#  . x%+w%-(n%/|
00001a30  35 29 2c 79 25 2d 28 28  7a 25 2b 6e 25 29 2f 35  |5),y%-((z%+n%)/5|
00001a40  29 0d 0b 90 06 20 ed 0d  0b 9a 05 cd 0d 0b a4 05  |).... ..........|
00001a50  e1 0d 0b ae 04 0d 0b b8  1e dd f2 6d 61 6b 65 5f  |...........make_|
00001a60  68 6f 72 69 7a 6f 6e 28  68 25 2c 64 65 74 61 69  |horizon(h%,detai|
00001a70  6c 25 29 0d 0b c2 08 ea  20 6e 25 0d 0b cc 05 3a  |l%)..... n%....:|
00001a80  0d 0b d6 11 e7 20 64 65  74 61 69 6c 25 3d 31 20  |..... detail%=1 |
00001a90  8c 0d 0b e0 19 20 e3 20  6e 25 3d 2d 36 34 30 20  |..... . n%=-640 |
00001aa0  b8 20 36 34 30 20 88 20  31 30 0d 0b ea 0f 20 20  |. 640 . 10....  |
00001ab0  f0 36 39 2c 6e 25 2c 68  25 0d 0b f4 06 20 ed 0d  |.69,n%,h%.... ..|
00001ac0  0b fe 05 cd 0d 0c 08 11  e7 20 64 65 74 61 69 6c  |......... detail|
00001ad0  25 3d 32 20 8c 0d 0c 12  17 20 ec 20 2d 36 34 30  |%=2 ..... . -640|
00001ae0  2c 68 25 3a df 20 36 34  30 2c 68 25 0d 0c 1c 05  |,h%:. 640,h%....|
00001af0  cd 0d 0c 26 11 e7 20 64  65 74 61 69 6c 25 3d 33  |...&.. detail%=3|
00001b00  20 8c 0d 0c 30 0a 20 e6  30 2c 31 35 0d 0c 3a 22  | ...0. .0,15..:"|
00001b10  20 c8 93 20 c8 90 20 2d  36 34 30 2c 2d 31 30 30  | .. .. -640,-100|
00001b20  30 2c 31 32 38 30 2c 68  25 2b 31 30 30 30 0d 0c  |0,1280,h%+1000..|
00001b30  44 05 cd 0d 0c 4e 05 e1  0d 0c 58 04 0d 0c 62 18  |D....N....X...b.|
00001b40  dd f2 73 70 72 61 79 5f  73 6e 6f 77 28 73 70 72  |..spray_snow(spr|
00001b50  61 79 25 29 0d 0c 6c 08  ea 20 6e 25 0d 0c 76 05  |ay%)..l.. n%..v.|
00001b60  3a 0d 0c 80 13 e3 20 6e  25 3d 30 20 b8 20 73 70  |:..... n%=0 . sp|
00001b70  72 61 79 25 0d 0c 8a 0d  20 e6 30 2c b3 28 31 35  |ray%.... .0,.(15|
00001b80  29 0d 0c 94 20 20 f0 36  39 2c b3 28 31 32 38 30  |)...  .69,.(1280|
00001b90  29 2d 36 34 30 2c b3 28  31 30 32 34 29 2d 32 31  |)-640,.(1024)-21|
00001ba0  32 0d 0c 9e 05 ed 0d 0c  a8 05 e1 0d 0c b2 04 0d  |2...............|
00001bb0  0c bc 16 dd f2 64 69 73  70 6c 61 79 5f 6d 65 73  |.....display_mes|
00001bc0  73 61 67 65 31 0d 0c c6  08 fb 20 31 35 0d 0c d0  |sage1..... 15...|
00001bd0  0e e7 20 72 65 73 25 3d  32 20 8c 0d 0c da 3a 20  |.. res%=2 ....: |
00001be0  f1 8a 33 36 2c 33 29 20  22 54 68 69 73 20 70 72  |..36,3) "This pr|
00001bf0  6f 67 72 61 6d 20 77 61  73 20 77 72 69 74 74 65  |ogram was writte|
00001c00  6e 20 62 79 20 44 65 61  6e 20 41 6c 65 78 61 6e  |n by Dean Alexan|
00001c10  64 72 6f 75 22 0d 0c e4  05 cc 0d 0c ee 20 20 f1  |drou"........  .|
00001c20  8a 32 30 2c 31 29 22 42  79 20 44 65 61 6e 20 41  |.20,1)"By Dean A|
00001c30  6c 65 78 61 6e 64 72 6f  75 22 0d 0c f8 05 cd 0d  |lexandrou"......|
00001c40  0d 02 05 e1 0d 0d 0c 04  0d 0d 16 16 dd f2 64 69  |..............di|
00001c50  73 70 6c 61 79 5f 6d 65  73 73 61 67 65 32 0d 0d  |splay_message2..|
00001c60  20 08 fb 20 31 35 0d 0d  2a 0e e7 20 72 65 73 25  | .. 15..*.. res%|
00001c70  3d 32 20 8c 0d 0d 34 3a  20 f1 8a 33 36 2c 33 29  |=2 ...4: ..36,3)|
00001c80  20 22 54 68 69 73 20 70  72 6f 67 72 61 6d 20 77  | "This program w|
00001c90  61 73 20 77 72 69 74 74  65 6e 20 62 79 20 44 65  |as written by De|
00001ca0  61 6e 20 41 6c 65 78 61  6e 64 72 6f 75 22 0d 0d  |an Alexandrou"..|
00001cb0  3e 38 20 f1 8a 33 37 2c  35 29 20 22 44 6f 65 73  |>8 ..37,5) "Does|
00001cc0  20 61 6e 79 6f 6e 65 20  68 61 76 65 20 61 6e 79  | anyone have any|
00001cd0  20 6a 6f 62 73 20 74 68  61 74 20 61 20 74 61 6c  | jobs that a tal|
00001ce0  65 6e 74 65 64 22 0d 0d  48 36 20 f1 8a 33 38 2c  |ented"..H6 ..38,|
00001cf0  36 29 20 22 31 38 20 79  65 61 72 2d 6f 6c 64 20  |6) "18 year-old |
00001d00  42 41 53 49 43 20 70 72  6f 67 72 61 6d 6d 65 72  |BASIC programmer|
00001d10  20 63 6f 75 6c 64 20 64  6f 3f 20 22 0d 0d 52 22  | could do? "..R"|
00001d20  20 f1 8a 34 36 2c 37 29  20 22 2d 20 77 72 69 74  | ..46,7) "- writ|
00001d30  65 20 74 6f 20 6d 65 20  61 74 2e 2e 2e 22 0d 0d  |e to me at..."..|
00001d40  5c 24 20 f1 8a 34 35 2c  39 29 20 22 39 36 20 53  |\$ ..45,9) "96 S|
00001d50  68 65 61 76 65 73 68 69  6c 6c 20 41 76 65 6e 75  |heaveshill Avenu|
00001d60  65 22 0d 0d 66 19 20 f1  8a 34 35 2c 31 30 29 20  |e"..f. ..45,10) |
00001d70  22 43 6f 6c 69 6e 64 61  6c 65 22 0d 0d 70 16 20  |"Colindale"..p. |
00001d80  f1 8a 34 35 2c 31 31 29  20 22 4c 6f 6e 64 6f 6e  |..45,11) "London|
00001d90  22 0d 0d 7a 17 20 f1 8a  34 35 2c 31 32 29 20 22  |"..z. ..45,12) "|
00001da0  4e 57 39 20 36 52 59 22  0d 0d 84 29 20 f1 8a 34  |NW9 6RY"...) ..4|
00001db0  33 2c 31 34 29 20 22 28  50 72 65 73 73 20 53 50  |3,14) "(Press SP|
00001dc0  41 43 45 20 74 6f 20 63  6f 6e 74 69 6e 75 65 29  |ACE to continue)|
00001dd0  22 0d 0d 8e 05 cc 0d 0d  98 21 20 f1 8a 31 39 2c  |"........! ..19,|
00001de0  31 29 22 42 79 20 44 65  61 6e 20 41 6c 65 78 61  |1)"By Dean Alexa|
00001df0  6e 64 72 6f 75 2e 22 0d  0d a2 21 20 f1 8a 31 39  |ndrou."...! ..19|
00001e00  2c 33 29 22 54 72 79 20  69 74 20 69 6e 20 48 69  |,3)"Try it in Hi|
00001e10  67 68 20 72 65 73 2e 22  0d 0d ac 1b 20 f1 8a 32  |gh res.".... ..2|
00001e20  31 2c 36 29 22 28 50 72  65 73 73 20 53 50 41 43  |1,6)"(Press SPAC|
00001e30  45 29 22 0d 0d b6 05 cd  0d 0d c0 05 e1 0d 0d ca  |E)".............|
00001e40  04 0d 0d d4 14 dd f2 62  6c 65 6e 64 28 79 73 25  |.......blend(ys%|
00001e50  2c 79 66 25 29 0d 0d de  0e ea 20 78 25 2c 79 25  |,yf%)..... x%,y%|
00001e60  2c 70 25 0d 0d e8 05 3a  0d 0d f2 14 e7 20 64 65  |,p%....:..... de|
00001e70  66 6f 63 75 73 24 3d 22  4e 22 20 e1 0d 0d fc 19  |focus$="N" .....|
00001e80  e3 20 79 25 3d 79 73 25  20 b8 20 79 66 25 20 88  |. y%=ys% . yf% .|
00001e90  20 72 65 73 25 0d 0e 06  1a 20 e3 20 78 73 25 3d  | res%.... . xs%=|
00001ea0  30 20 b8 20 72 65 73 25  20 88 20 72 65 73 25 0d  |0 . res% . res%.|
00001eb0  0e 10 22 20 20 e3 20 78  25 3d 2d 36 34 30 2b 78  |.."  . x%=-640+x|
00001ec0  73 25 20 b8 20 36 34 30  20 88 20 72 65 73 25 2a  |s% . 640 . res%*|
00001ed0  32 0d 0e 1a 24 20 20 20  70 25 3d 28 b0 78 25 2c  |2...$   p%=(.x%,|
00001ee0  79 25 29 2b b0 78 25 2b  72 65 73 25 2a 32 2c 79  |y%)+.x%+res%*2,y|
00001ef0  25 29 29 2f 32 0d 0e 24  0c 20 20 20 e6 30 2c 70  |%))/2..$.   .0,p|
00001f00  25 0d 0e 2e 15 20 20 20  f0 36 39 2c 78 25 2b 72  |%....   .69,x%+r|
00001f10  65 73 25 2c 79 25 0d 0e  38 07 20 20 ed 0d 0e 42  |es%,y%..8.  ...B|
00001f20  23 20 20 e3 20 78 25 3d  36 34 30 2b 78 73 25 20  |#  . x%=640+xs% |
00001f30  b8 20 2d 36 34 30 20 88  20 2d 72 65 73 25 2a 32  |. -640 . -res%*2|
00001f40  0d 0e 4c 24 20 20 20 70  25 3d 28 b0 78 25 2c 79  |..L$   p%=(.x%,y|
00001f50  25 29 2b b0 78 25 2d 72  65 73 25 2a 32 2c 79 25  |%)+.x%-res%*2,y%|
00001f60  29 29 2f 32 0d 0e 56 0c  20 20 20 e6 30 2c 70 25  |))/2..V.   .0,p%|
00001f70  0d 0e 60 15 20 20 20 f0  36 39 2c 78 25 2d 72 65  |..`.   .69,x%-re|
00001f80  73 25 2c 79 25 0d 0e 6a  07 20 20 ed 0d 0e 74 06  |s%,y%..j.  ...t.|
00001f90  20 ed 0d 0e 7e 05 ed 0d  0e 88 05 e1 0d 0e 92 04  | ...~...........|
00001fa0  0d 0e 9c 0a dd f2 6d 65  6c 74 0d 0e a6 18 ea 20  |......melt..... |
00001fb0  78 25 2c 79 25 2c 77 25  2c 70 25 2c 79 79 25 2c  |x%,y%,w%,p%,yy%,|
00001fc0  6e 25 0d 0e b0 05 3a 0d  0e ba 05 f5 0d 0e c4 13  |n%....:.........|
00001fd0  20 78 25 3d b3 28 31 32  38 30 29 2d 36 34 30 0d  | x%=.(1280)-640.|
00001fe0  0e ce 0e 20 77 25 3d b3  28 34 29 2a 34 0d 0e d8  |... w%=.(4)*4...|
00001ff0  13 20 79 25 3d b3 28 31  30 32 34 29 2d 32 31 36  |. y%=.(1024)-216|
00002000  0d 0e e2 0f 20 70 25 3d  b0 78 25 2c 79 25 29 0d  |.... p%=.x%,y%).|
00002010  0e ec 0b 20 79 79 25 3d  79 25 0d 0e f6 06 20 f5  |... yy%=y%.... .|
00002020  0d 0f 00 0f 20 20 79 79  25 2b 3d 72 65 73 25 0d  |....  yy%+=res%.|
00002030  0f 0a 1e 20 fd 20 b0 78  25 2c 79 79 25 29 3c 3e  |... . .x%,yy%)<>|
00002040  70 25 20 84 20 79 79 25  3e 3d 38 30 38 0d 0f 14  |p% . yy%>=808...|
00002050  29 20 c8 93 20 78 25 2c  79 25 2c 77 25 2c 79 79  |) .. x%,y%,w%,yy|
00002060  25 2d 79 25 2b 72 65 73  25 20 b8 20 78 25 2c 79  |%-y%+res% . x%,y|
00002070  25 2d 72 65 73 25 0d 0f  1e 1b 20 e3 20 6e 25 3d  |%-res%.... . n%=|
00002080  78 25 20 b8 20 78 25 2b  77 25 20 88 20 72 65 73  |x% . x%+w% . res|
00002090  25 0d 0f 28 23 20 20 70  25 3d 28 b0 6e 25 2c 79  |%..(#  p%=(.n%,y|
000020a0  79 25 2d 72 65 73 25 29  2b b0 6e 25 2c 79 79 25  |y%-res%)+.n%,yy%|
000020b0  29 29 2f 32 0d 0f 32 0b  20 20 e6 30 2c 70 25 0d  |))/2..2.  .0,p%.|
000020c0  0f 3c 10 20 20 f0 36 39  2c 6e 25 2c 79 79 25 0d  |.<.  .69,n%,yy%.|
000020d0  0f 46 06 20 ed 0d 0f 50  07 fd 20 a3 0d 0f 5a 05  |.F. ...P.. ...Z.|
000020e0  e1 0d ff                                          |...|
000020e3