 ;-----------------------------\
 ;escape 4k demo                 \
 ;made for code craft contest      \
 ;code - tom/kulture 1999            \
 ;------------------------------------ \

 ;Data creator--------------------------------------------------------------|

 ;r0 - points to free memory at the end of the code

 adr r0,bss

 ;*****************************************************************
 ;Lookup table for the tunnel plotter
 ;127*127*4
 ;32/SQR(dx^2+dy^2)<<8 + angle*(256/360)*57.3

 ;57.3*255/360 to convet radians to 0->255
 ldfs f4,f_deg
 ;for some reason the fp cant cope with mov f0,#16384...
 ldfs f5,f_16384

 mov r14,#-64
.y_tlook
 flts f1,r14
 mufs f3,f1,f1
 mov r13,#-64
.x_tlook
 ;Calculate angle of x,y
 flts f0,r13
 cmf f0,#0
 polnes f2,f0,f1
 mufnes f2,f2,f4
 fixne r1,f2
 moveq r1,#64

 ;Calculate 1/sqr(....)
 mufs f2,f0,f0
 adfs f2,f2,f3
 sqts f2,f2
 cmf f2,#0
 frdnes f2,f2,#0.5
 mufnes f2,f2,f5
 fixne r2,f2
 moveq r2,#1<<17
 mov r2,r2,lsl #5 ;(32/...)
 ;and store
 and r1,r1,#255
 orr r1,r1,r2,lsl #8
 str r1,[r0],#4

 add r13,r13,#1
 cmp r13,#64
 bne x_tlook

 add r14,r14,#1
 cmp r14,#64
 bne y_tlook

 ;*****************************************************************
 ;Cos
 ;256*4+256*4
.cosine
 str r0,cos
 mov r1,r0
 add r0,r0,#256*4
 mov r2,#0
 ldfs f1,f_rad
 ldfs f2,f_16384
.coslook
 flts f0,r2
 mufs f0,f1,f0
 coss f0,f0
 mufs f0,f2,f0
 fix r3,f0
 str r3,[r0],#4
 str r3,[r1],#4
 add r2,r2,#1
 cmp r2,#256
 bne coslook

 ;*****************************************************************
 ;make a 64*64 texture

 str r0,tex
 ldfs f2,f_7
 ldfs f4,f_rad64
 mov r14,#64
.t_yloop2
 flts f1,r14
 mufs f1,f1,f4
 coss f1,f1
 mov r13,#64
.t_xloop2
 flts f0,r13
 mufs f0,f0,f4
 coss f0,f0
 mufs f0,f0,f1
 mufs f0,f0,f2
 fix r1,f0
 add r1,r1,#8
 orr r1,r1,r1,lsl #4
 strb r1,[r0],#1
 subs r13,r13,#1
 bne t_xloop2
 subs r14,r14,#1
 bne t_yloop2

 adr r0,pal
 mov r1,#16*6
 swi OS_WriteN

 ;the end
 b loop


.f_rad
 dcfs (360/255)/57.3
.f_rad64
 dcfs (360/64)/57.3
.f_deg
 dcfs 57.3*(255/360)
.f_16384
 dcfs 16384
.f_7
 dcfs 7

.pal

 dcb 19,&0,16,&ff,&ff,&ff
 dcb 19,&1,16,&e0,&e0,&e0
 dcb 19,&2,16,&c0,&c0,&d0
 dcb 19,&3,16,&a0,&a0,&c0
 dcb 19,&4,16,&80,&80,&b0
 dcb 19,&5,16,&60,&60,&a0
 dcb 19,&6,16,&40,&40,&90
 dcb 19,&7,16,&20,&20,&80
 dcb 19,&8,16,&10,&10,&70
 dcb 19,&9,16,&05,&05,&60
 dcb 19,&a,16,&00,&00,&50
 dcb 19,&b,16,&00,&00,&40
 dcb 19,&c,16,&00,&00,&30
 dcb 19,&d,16,&00,&00,&20
 dcb 19,&e,16,&00,&00,&10
 dcb 19,&f,16,&00,&00,&00

