Home » Archimedes archive » Acorn User » AU 1998-01 B.adf » Features » DiffDim/Triangle4b
DiffDim/Triangle4b
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-01 B.adf » Features |
Filename: | DiffDim/Triangle4b |
Read OK: | ✔ |
File size: | 3924 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM Triangle 4 20REM 30REM Demonstrate more advanced uses of triangles 40: 50ON ERROR MODE0:PRINT REPORT$;" at line ";ERL:END 60MODE 13:OFF 70lx=0.707:ly=0.707 80PROCassemble 90CALL setup 100FORx%=0 TO 3 110FORy%=0 TO 3 120p_table%!((x%+y%*4)<<3)=37+x%*75 130p_table%!(4+((x%+y%*4)<<3))=12+y%*75 140NEXT 150NEXT 160: 170bk%=1 180PROCdraw 190PROCdraw 200MOUSE ON 210REPEAT 220REPEAT 230MOUSE mx%,my%,b% 240UNTIL b%=4 250: 260fx%=-1:md%=10000 270FORx%=0 TO 3 280FORy%=0 TO 3 290px%=p_table%!((x%+y%*4)<<3)*4 300py%=1024-p_table%!(4+((x%+y%*4)<<3))*4 310dx%=mx%-px%:dy%=my%-py% 320d%=dx%*dx%+dy%*dy% 330IF d%<md% md%=d%:fx%=x%:fy%=y% 340NEXT 350NEXT 360IF fx%<>-1 THEN PROCchange(fx%,fy%) 370UNTIL FALSE 380END 390: 400DEFPROCchange(fx%,fy%) 410REPEAT 420MOUSE mx%,my%,b% 430p_table%!((fx%+fy%*4)<<3)=mx%>>2 440p_table%!(4+((fx%+fy%*4)<<3))=256-(my%>>2) 450PROCdraw 460UNTIL b%=0 470PROCdraw 480ENDPROC 490: 500DEFPROCdraw 510SYS"OS_Byte",112,bk% 520SWAP !screenadr,screenadr!4 530bk%=3-bk% 540WAIT 550SYS"OS_Byte",113,bk% 560CLS 570CALL bezier 580FORx%=0 TO 3 590FORy%=0 TO 3 600CIRCLE p_table%!((x%+y%*4)<<3)*4,1024-p_table%!(4+((x%+y%*4)<<3))*4,8 610NEXT 620NEXT 630ENDPROC 640: 650DEFPROCassemble 660q_step%=16:sstep%=256/q_step% 670log2_q_step%=LOG(q_step%)/LOG(2) 680DIM code% 16384,p_table% 128,output% q_step%*q_step%*8,normal% q_step%*q_step%*5,div_table% 32768*4,big_normal_table% 128*128*8,sprite% 65592,coltab% 8192 690FOR pass%=0 TO 2 STEP 2 700P%=code% 710[OPT pass% 720.setup 730ldr r12,big_normal_table 740mov r1,#0 750.ny_loop 760mov r0,#0 770.nx_loop 780 790mul r2,r0,r0 800mla r2,r1,r1,r2 810mov r2,r2,lsl#10 820 830; r3 = SQR(r2) 840mov r3,#0 850mov r4,#1<<30 860.lp 870add r5,r3,r4 880cmp r5,r2 890suble r2,r2,r5 900addle r3,r5,r4 910mov r3,r3,asr#1 920movs r4,r4,asr#2 930bne lp 940 950; r2 = 1048576/r3 960mov r4,#1048576 970mov r5,#0 980mov r2,#0 990mov r7,#1<<31 1000.lp 1010movs r4,r4,lsl#1 1020adc r5,r5,r5 1030cmp r5,r3 1040subge r5,r5,r3 1050orrge r2,r2,r7 1060movs r7,r7,lsr#1 1070bne lp 1080 1090mul r3,r1,r2 1100mul r2,r0,r2 1110 1120stmia r12!,{r2,r3} 1130 1140add r0,r0,#1 1150cmp r0,#128 1160blt nx_loop 1170 1180add r1,r1,#1 1190cmp r1,#128 1200blt ny_loop 1210 1220ldr r0,div_table 1230mov r2,#1 1240 1250.dl 1260mov r4,#1<<20 1270mov r5,#0 ; remainder 1280mov r6,#0 ; quotient 1290mov r7,#1<<31 1300.div_loop 1310movs r4,r4,lsl#1 1320adc r5,r5,r5 1330cmp r5,r2 1340subge r5,r5,r2 1350orrge r6,r6,r7 1360movs r7,r7,lsr#1 1370bne div_loop 1380 1390; r6 = r4 div r2 = s 1400 1410str r6,[r0,#4]! 1420add r2,r2,#1 1430cmp r2,#32768 1440ble dl 1450 1460.main1 1470mov pc,r14 1480 1490 1500mov pc,r14 1510 1520.big_normal_table 1530dcd big_normal_table% 1540 1550.bezier 1560stmfd r13!,{r14} 1570str r13,stackp 1580adr r5,q_start 1590 1600mov r4,#q_step% 1610str r4,u_count 1620 1630ldr r4,index_base 1640str r4,in 1650 1660.uloop 1670ldmia r5!,{r0-r3} 1680str r5,u_ptr 1690ldr r14,p_start 1700ldmia r14!,{r6-r13} 1710 1720mul r6,r0,r6 1730mla r6,r8,r1,r6 1740mla r6,r10,r2,r6 1750mla r6,r12,r3,r6 1760 1770mul r7,r0,r7 1780mla r7,r9,r1,r7 1790mla r7,r11,r2,r7 1800mla r7,r13,r3,r7 1810 1820ldmia r14!,{r4,r5,r8-r13} 1830 1840mul r8,r1,r8 1850mla r8,r4,r0,r8 1860mla r8,r10,r2,r8 1870mla r8,r12,r3,r8 1880 1890mul r9,r1,r9 1900mla r9,r5,r0,r9 1910mla r9,r11,r2,r9 1920mla r9,r13,r3,r9 1930 1940ldmia r14!,{r4,r5,r10-r13} 1950 1960mul r10,r1,r10 1970mla r10,r4,r0,r10 1980mla r10,r12,r2,r10 1990 2000mul r11,r1,r11 2010mla r11,r5,r0,r11 2020mla r11,r13,r2,r11 2030 2040ldmia r14!,{r12,r13} 2050 2060mla r10,r12,r3,r10 2070mla r11,r13,r3,r11 2080 2090ldmia r14!,{r4,r5,r12,r13} 2100 2110mul r12,r1,r12 2120mla r12,r4,r0,r12 2130 2140mul r13,r1,r13 2150mla r13,r5,r0,r13 2160 2170ldmia r14!,{r0,r1} 2180mla r12,r0,r2,r12 2190mla r13,r1,r2,r13 2200 2210ldmia r14!,{r0,r1} 2220mla r12,r0,r3,r12 2230mla r13,r1,r3,r13 2240 2250adr r3,q_start 2260mov r5,#q_step% 2270 2280mov r6,r6,asr#20 2290mov r7,r7,asr#20 2300mov r8,r8,asr#20 2310mov r9,r9,asr#20 2320mov r10,r10,asr#20 2330mov r11,r11,asr#20 2340mov r12,r12,asr#20 2350mov r13,r13,asr#20 2360ldr r4,in 2370 2380.vloop 2390ldr r2,[r3],#4 2400mul r0,r6,r2 ; ax 2410mul r1,r7,r2 ; ay 2420 2430ldr r2,[r3],#4 2440mla r0,r8,r2,r0 ; bx 2450mla r1,r9,r2,r1 ; by 2460 2470ldr r2,[r3],#4 2480mla r0,r10,r2,r0 ; cx 2490mla r1,r11,r2,r1 ; cy 2500 2510ldr r2,[r3],#4 2520mla r0,r12,r2,r0 ; dx 2530mla r1,r13,r2,r1 ; dy 2540 2550mov r0,r0,asr#20 2560mov r1,r1,asr#20 2570stmia r4!,{r0,r1} 2580 2590subs r5,r5,#1 2600bgt vloop 2610 2620ldr r5,u_count 2630subs r5,r5,#1 2640strgt r5,u_count 2650ldrgt r5,u_ptr 2660strgt r4,in 2670bgt uloop 2680 2690ldr r0,index_base 2700ldr r9,index_normal 2710ldr r12,big_normal_table 2720ldr r13,l_x 2730ldr r14,l_y 2740mov r1,#0 2750.u_loop 2760add r2,r0,r1,lsl#log2_q_step%+3 2770add r10,r9,r1,lsl#log2_q_step%+2 2780add r3,r2,#4 2790mov r4,#0 2800ldr r5,[r2,r4,lsl#3] 2810ldr r6,[r3,r4,lsl#3] 2820mov r4,#1 2830.v_loop 2840ldr r7,[r2,r4,lsl#3] ; x 2850ldr r8,[r3,r4,lsl#3] ; y 2860subs r5,r7,r5 2870rsblt r5,r5,#0 2880;movlt r11,#1 2890subs r6,r8,r6 2900rsblt r6,r6,#0 2910;orrlt r11,r11,#2 2920.lp 2930cmp r5,#128 2940cmplt r6,#128 2950movge r5,r5,lsr#1 2960movge r6,r6,lsr#1 2970bge lp 2980 2990add r5,r5,r6,lsl#7 3000add r5,r12,r5,lsl#3 3010ldmia r5,{r5,r6} ; get normalised vectors 3020 3030mul r5,r13,r5 3040mla r5,r14,r6,r5 ; nx*lx+ny*ly << 25 3050movs r5,r5,asr#14 ; normal * shd 3060subs r5,r5,#1024+384 3070movlt r5,#0 3080cmp r5,#223 3090movgt r5,#223 3100str r5,[r10],#4 3110 3120mov r5,r7 3130mov r6,r8 3140add r4,r4,#1 3150cmp r4,#q_step% 3160ble v_loop 3170add r1,r1,#1 3180cmp r1,#q_step% 3190ble u_loop 3200 3210ldr r13,stackp 3220 3230ldr r3,index_normal 3240ldr r6,index_base 3250mov r0,#0 ; x 3260.xloop 3270mov r1,#0 ; y 3280.yloop 3290add r2,r0,r1,lsl#4 ; x+y*q_step%, q_step%=16 3300add r4,r3,r2,lsl#2 ; normal+ofs%<<2 3310 3320ldr r5,[r4,#4] ; l1 3330str r5,ac 3340 3350ldr r5,[r4] ; l2 3360str r5,bc 3370 3380ldr r5,[r4,#4+16*4] ; l3 3390str r5,cc 3400 3410add r7,r6,r2,lsl#3 ; output+ofs%<<3 3420 3430ldmia r7,{r8,r9,r10,r11} ; bx,by,ax,ay 3440str r8,bx 3450str r9,by 3460str r10,ax 3470str r11,ay 3480 3490ldr r8,[r7,#8+16*8] 3500str r8,cx 3510 3520ldr r8,[r7,#12+16*8] 3530str r8,cy 3540 3550mov r8,r0,lsl#4 ; x*sstep%, sstep%=16 3560str r8,bv 3570add r8,r8,#16 3580str r8,av 3590str r8,cv 3600 3610mov r8,r1,lsl#4 ; y*sstep% 3620str r8,au 3630str r8,bu 3640add r8,r8,#16 3650str r8,cu 3660 3670stmfd r13!,{r0,r1,r3,r4,r6-r8} 3680bl texture_triangle 3690ldmfd r13!,{r0,r1,r3,r4,r6-r8} 3700 3710str r8,au 3720ldr r8,[r4,#16*4] ; l4 3730str r8,ac 3740mov r8,r0,lsl#4 3750str r8,av 3760 3770ldr r8,[r7,#16*8] 3780str r8,ax 3790ldr r8,[r7,#4+16*8] 3800str r8,ay 3810 3820stmfd r13!,{r0,r1,r3,r6} 3830 3840adr r0,by 3850ldmia r0,{r1,r2,r3,r4,r5} 3860 3870adr r6,cy 3880ldmia r6,{r7,r8,r9,r10,r11} 3890 3900stmia r6,{r1-r5} 3910stmia r0,{r7-r11} 3920 3930bl texture_triangle 3940ldmfd r13!,{r0,r1,r3,r6} 3950 3960add r1,r1,#1 3970cmp r1,#14 3980ble yloop 3990 4000add r0,r0,#1 4010cmp r0,#14 4020ble xloop 4030 4040ldmfd r13!,{r15} 4050 4060.u_count 4070dcd 0 4080 4090.u_ptr 4100dcd 0 4110 4120.l_x 4130dcd lx*1024 4140.l_y 4150dcd ly*1024 4160 4170.in 4180dcd 0 4190 4200.stackp 4210dcd 0 4220 4230.p_start 4240dcd p_table% 4250 4260.index_base 4270dcd output% 4280 4290.index_normal 4300dcd normal% 4310 4320.q_start 4330] 4340P%+=8192/q_step% 4350[OPT pass% 4360.div_table 4370dcd div_table% 4380 4390 4400.stackp 4410dcd 0 4420.link 4430dcd 0 4440.div_table 4450dcd div_table% 4460.coltable 4470dcd coltab% 4480.r_index 4490dcd 0 4500.l_index 4510dcd 0 4520 4530.y_end 4540dcd 0 4550 4560.sprite 4570dcd sprite%+56 4580.screenadr 4590dcd FNscreenadr(2) 4600dcd FNscreenadr(1) 4610 4620.ay:dcd 0:.ax:dcd 0 4630.ac:dcd 0 4640.au:dcd 0:.av:dcd 0 4650dcd 0:dcd 0:dcd 0 4660 4670.by:dcd 0:.bx:dcd 0 4680.bc:dcd 0 4690.bu:dcd 0:.bv:dcd 0 4700dcd 0:dcd 0:dcd 0 4710 4720.cy:dcd 0:.cx:dcd 0 4730.cc:dcd 0 4740.cu:dcd 0:.cv:dcd 0 4750dcd 0:dcd 0:dcd 0 4760 4770.texture_triangle 4780adr r0,ay 4790ldr r10,[r0,#0] 4800ldr r11,[r0,#32] 4810cmp r11,r10 4820movlt r1,r11 4830movge r1,r10 4840movlt r2,#1 4850movge r2,#0 4860ldr r12,[r0,#64] 4870cmp r12,r1 4880movlt r1,r12 4890movlt r2,#2 4900cmp r1,#512 4910movge pc,r14 4920cmp r10,#0 4930cmplt r11,#0 4940cmplt r12,#0 4950movlt pc,r14 4960 4970str r13,stackp 4980 4990subs r3,r2,#1 5000movlt r3,#2 5010 5020add r2,r0,r2,lsl#5 5030ldmib r2,{r5,r6,r7,r8} ; x_k,c_k,u_k,v_k 5040add r4,r0,r3,lsl#5 5050str r4,l_index 5060subs r3,r3,#1 5070movlt r3,#2 5080add r0,r0,r3,lsl#5 5090str r0,r_index 5100ldmia r4,{r9,r10,r11,r12,r13} ; y_l,x_l,c_l,u_l,v_l 5110 5120str r14,link 5130ldr r14,div_table 5140subs r2,r9,r1 ; dly 5150ldrgt r2,[r14,r2,lsl#2] ; 1<<20/dly 5160 5170movgt r3,r5,lsl#10 5180moveq r3,r10,lsl#10 5190subgt r4,r10,r5 5200mul r4,r2,r4 ; dlx<<20 5210str r4,dlx 5220 5230movgt r10,r6,lsl#10 5240moveq r10,r11,lsl#10 5250str r10,lc 5260subgt r4,r11,r6 5270mul r4,r2,r4 ; dlc<<20 5280str r4,dlc 5290 5300movgt r10,r7,lsl#10 5310moveq r10,r12,lsl#10 5320str r10,lu 5330subgt r4,r12,r7 5340mul r4,r2,r4 ; dlu<<20 5350str r4,dlu 5360 5370movgt r10,r8,lsl#10 5380moveq r10,r13,lsl#10 5390str r10,lv 5400subgt r4,r13,r8 5410mul r4,r2,r4 ; dlv<<20 5420str r4,dlv 5430 5440ldmia r0,{r0,r10,r11,r12,r13} ; y_r,x_r,c_r,u_r,v_r 5450subs r2,r0,r1 ; dry 5460ldrgt r2,[r14,r2,lsl#2] ; 1<<20/dry 5470 5480movgt r4,r5,lsl#10 5490moveq r4,r10,lsl#10 5500subgt r10,r10,r5 5510mul r10,r2,r10 ; drx<<20 5520str r10,drx 5530 5540movgt r10,r6,lsl#10 5550moveq r10,r11,lsl#10 5560str r10,rc 5570subgt r10,r11,r6 5580mul r10,r2,r10 ; drc<<20 5590str r10,drc 5600 5610movgt r10,r7,lsl#10 5620moveq r10,r12,lsl#10 5630str r10,ru 5640subgt r10,r12,r7 5650mul r10,r2,r10 ; dru<<20 5660str r10,dru 5670 5680movgt r10,r8,lsl#10 5690moveq r10,r13,lsl#10 5700str r10,rv 5710subgt r10,r13,r8 5720mul r10,r2,r10 ; drv<<20 5730str r10,drv 5740 5750ldr r2,screenadr 5760add r2,r2,r1,lsl#6 5770add r2,r2,r1,lsl#8 ; screen line 5780 5790MOV R14,R1 5800ldr r10,sprite 5810 5820cmp r9,r0 5830strlt r9,y_end 5840strge r0,y_end 5850 5860bgt method_2 5870beq last_bit 5880 5890.method_1 ; left_y<right_y 5900 5910FNyloop 5920 5930; r0 = y_l 5940; r2 = scline 5950; r3 = lx 5960; r4 = rx 5970; r1,r5-r14 = empty 5980 5990; recalcuate dlx,dlu,dlv,dlc 6000ldr r1,l_index 6010ldmib r1,{r3,r10,r11,r12} ; x_l,c_l,u_l,v_l 6020ldr r1,r_index 6030ldmia r1,{r1,r5,r6,r7,r8} ; y_r,x_r,c_r,u_r,v_r 6040str r1,y_end 6050 6060subs r1,r1,r0 ; dly 6070ldr r14,div_table 6080 6090ldrgt r1,[r14,r1,lsl#2] ; 1<<20/dly 6100subgt r7,r7,r11 6110mul r7,r1,r7 ; dlu<<20 6120str r7,dlu 6130subgt r5,r5,r3 6140mov r3,r3,lsl#10 6150mul r5,r1,r5 ; dlx<<20 6160str r5,dlx 6170subgt r5,r6,r10 6180mul r5,r1,r5 ; dlc<<20 6190str r5,dlc 6200 6210subgt r5,r8,r12 6220mul r5,r1,r5 ; dlv<<20 6230str r5,dlv 6240 6250ldr r10,sprite 6260 6270MOV R14,R0 6280.last_bit 6290FNyloop 6300 6310ldr r13,stackp 6320ldr r15,link 6330 6340 6350.method_2 ; right_y< left_y 6360FNyloop 6370 6380; r0 = y_l 6390; r2 = scline 6400; r3 = lx 6410; r4 = rx 6420; r1,r5-r14 = empty 6430 6440; recalcuate drx,dru,drv,drc 6450ldr r1,r_index 6460ldmib r1,{r4,r10,r11,r12} ; x_r,c_r,u_r,v_r 6470ldr r1,l_index 6480ldmia r1,{r1,r5,r6,r7,r8} ; y_l,x_l,c_l,u_l,v_l 6490str r1,y_end 6500 6510subs r1,r1,r0 ; dly 6520ldr r14,div_table 6530 6540ldrgt r1,[r14,r1,lsl#2] ; 1<<20/dly 6550subgt r5,r5,r4 6560mov r4,r4,lsl#10 6570mul r5,r1,r5 ; dlx<<20 6580str r5,drx 6590subgt r5,r6,r10 6600mul r5,r1,r5 ; dlc<<20 6610str r5,drc 6620subgt r5,r7,r11 6630mul r5,r1,r5 ; dlu<<20 6640str r5,dru 6650subgt r5,r8,r12 6660mul r5,r1,r5 ; dlv<<20 6670str r5,drv 6680 6690ldr r10,sprite 6700MOV R14,R0 6710FNyloop 6720 6730ldr r13,stackp 6740ldr r15,link 6750 6760.line 6770dcd 0 6780 6790.coords 6800.lu:dcd 0:.ru:dcd 0 6810.lc:dcd 0:.rc:dcd 0 6820.lv:dcd 0:.rv:dcd 0 6830.dlx:dcd 0:.drx:dcd 0 6840.dlc:dcd 0:.drc:dcd 0 6850.dlu:dcd 0:.dru:dcd 0 6860.dlv:dcd 0:.drv:dcd 0 6870 6880] 6890NEXT 6900p%=q_start:stp=1024/q_step% 6910FORn%=0 TO 1024 STEP stp 6920qn%=1024-n%:qs%=(qn%*qn%)>>10:ns%=(n%*n%)>>10 6930!p%=qs%*qn% 6940p%!4=3*qs%*n% 6950p%!8=3*ns%*qn% 6960p%!12=ns%*n% 6970p%+=16 6980NEXT 6990SYS"OS_File",16,"Picture",sprite% 7000SYS"OS_File",16,"ColTab",coltab% 7010ENDPROC 7020: 7030DEFFNyloop 7040[OPT pass% 7050; r2 = sc 7060; r3 = lx 7070; r4 = rx 7080; r14 = y_k 7090 7100.yloop 7110subs r0,r4,r3 ; dx<<10 7120add r12,r2,r3,asr#10 ; left adr 7130ldr r13,dlx 7140add r3,r3,r13,asr#10 ; lx+=dlx 7150ldr r11,drx 7160add r13,r2,r4,asr#10 ; right adr 7170add r4,r4,r11,asr#10 ; rx+=drx 7180ldr r11,div_table 7190mov r0,r0,asr#4 7200ldrgt r0,[r11,r0,lsl#2] ; 1<<18/dx 7210ldr r11,lc 7220ldr r9,rc 7230sub r5,r9,r11 ; dc<<10 7240mul r5,r0,r5 ; dc<<30 7250ldr r8,drc 7260add r9,r9,r8,asr#10 7270str r9,rc 7280ldr r8,dlc 7290add r9,r11,r8,asr#10 7300str r9,lc 7310ldr r9,lu 7320ldr r8,ru 7330 7340sub r6,r8,r9 ; du<<10 7350mul r6,r0,r6 ; du<<24 7360 7370ldr r7,dru 7380add r8,r8,r7,asr#10 7390str r8,ru 7400 7410ldr r7,dlu 7420add r8,r9,r7,asr#10 7430str r8,lu 7440 7450ldr r8,lv 7460ldr r1,rv 7470sub r7,r1,r8 ; dv<<10 7480mul r7,r0,r7 ; dv<<21 7490ldr r0,drv 7500add r1,r1,r0,asr#10 7510str r1,rv 7520ldr r0,dlv 7530add r0,r8,r0,asr#10 7540str r0,lv 7550add r2,r2,#320 7560str r2,line 7570 7580mov r9,r9,lsl#14 7590mov r8,r8,lsl#14 7600mov r11,r11,lsl#14 7610 7620; dc = r5 7630; du = r6 7640; dv = r7 7650; v = r8 7660; u = r9 7670; sprite = r10 7680; c = r11 7690; left_adr = r12 7700; right_adr = r13 7710; r1 = col table 7720 7730ldr r1,coltable 7740tst r12,#1 7750moveq r2,#1<<31 7760movne r2,#0 7770.xloop 7780and r0,r8,#255<<24 7790orr r0,r0,r9,lsr#8 7800ldrb r0,[r10,r0,lsr#16] 7810add r0,r1,r0,lsl#5 ; 32 levels 7820add r0,r0,r2,lsr#31 7830ldrb r0,[r0,r11,lsr#27] ; 32 levels 7840strb r0,[r12],#1 7850cmp r12,r13 7860addle r2,r2,#1<<31 7870addle r8,r8,r7 7880addle r9,r9,r6 7890addle r11,r11,r5 7900ble xloop 7910 7920ldr r2,line 7930ldr r0,y_end 7940add r14,r14,#1 7950cmp r14,r0 7960blt yloop 7970 7980] 7990=0 8000: 8010DEFFNscreenadr(bk%) 8020SYS"OS_Byte",112,bk% 8030SYS"OS_Byte",113,bk% 8040DIM q% 8 8050!q%=148:q%!4=-1 8060SYS"OS_ReadVduVariables",q%,q% 8070=!q%
� Triangle 4 � 1� Demonstrate more advanced uses of triangles (: 2� � �0:� �$;" at line ";�:� < � 13:� Flx=0.707:ly=0.707 P �assemble Z� setup d �x%=0 � 3 n �y%=0 � 3 x$p_table%!((x%+y%*4)<<3)=37+x%*75 �(p_table%!(4+((x%+y%*4)<<3))=12+y%*75 �� �� �: � bk%=1 � �draw � �draw �ȗ � �� �� �ȗ mx%,my%,b% � � b%=4 �: fx%=-1:md%=10000 �x%=0 � 3 �y%=0 � 3 "!px%=p_table%!((x%+y%*4)<<3)*4 ,*py%=1024-p_table%!(4+((x%+y%*4)<<3))*4 6dx%=mx%-px%:dy%=my%-py% @d%=dx%*dx%+dy%*dy% J!� d%<md% md%=d%:fx%=x%:fy%=y% T� ^� h � fx%<>-1 � �change(fx%,fy%) r� � |� �: ���change(fx%,fy%) �� �ȗ mx%,my%,b% �$p_table%!((fx%+fy%*4)<<3)=mx%>>2 �.p_table%!(4+((fx%+fy%*4)<<3))=256-(my%>>2) � �draw � � b%=0 � �draw �� �: � ��draw �ș"OS_Byte",112,bk% Ȕ !screenadr,screenadr!4 bk%=3-bk% Ȗ &ș"OS_Byte",113,bk% 0� :� bezier D �x%=0 � 3 N �y%=0 � 3 XEȏ p_table%!((x%+y%*4)<<3)*4,1024-p_table%!(4+((x%+y%*4)<<3))*4,8 b� l� v� �: ���assemble �!q_step%=16:sstep%=256/q_step% � log2_q_step%=�(q_step%)/�(2) ��� code% 16384,p_table% 128,output% q_step%*q_step%*8,normal% q_step%*q_step%*5,div_table% 32768*4,big_normal_table% 128*128*8,sprite% 65592,coltab% 8192 �� pass%=0 � 2 � 2 �P%=code% �[OPT pass% � .setup �ldr r12,big_normal_table � mov r1,#0 �.ny_loop � mov r0,#0 .nx_loop mul r2,r0,r0 mla r2,r1,r1,r2 *mov r2,r2,lsl#10 4 >; r3 = �(r2) H mov r3,#0 Rmov r4,#1<<30 \.lp fadd r5,r3,r4 p cmp r5,r2 zsuble r2,r2,r5 �addle r3,r5,r4 �mov r3,r3,asr#1 �movs r4,r4,asr#2 � bne lp � �; r2 = 1048576/r3 �mov r4,#1048576 � mov r5,#0 � mov r2,#0 �mov r7,#1<<31 �.lp �movs r4,r4,lsl#1 �adc r5,r5,r5 cmp r5,r3 subge r5,r5,r3 orrge r2,r2,r7 $movs r7,r7,lsr#1 . bne lp 8 Bmul r3,r1,r2 Lmul r2,r0,r2 V `stmia r12!,{r2,r3} j tadd r0,r0,#1 ~cmp r0,#128 �blt nx_loop � �add r1,r1,#1 �cmp r1,#128 �blt ny_loop � �ldr r0,div_table � mov r2,#1 � �.dl �mov r4,#1<<20 �'mov r5,#0 ; remainder &mov r6,#0 ; quotient mov r7,#1<<31 .div_loop movs r4,r4,lsl#1 (adc r5,r5,r5 2 cmp r5,r2 <subge r5,r5,r2 Forrge r6,r6,r7 Pmovs r7,r7,lsr#1 Zbne div_loop d n; r6 = r4 div r2 = s x �str r6,[r0,#4]! �add r2,r2,#1 �cmp r2,#32768 � ble dl � � .main1 �mov pc,r14 � � �mov pc,r14 � �.big_normal_table �dcd big_normal_table% .bezier stmfd r13!,{r14} "str r13,stackp ,adr r5,q_start 6 @mov r4,#q_step% Jstr r4,u_count T ^ldr r4,index_base h str r4,in r | .uloop �ldmia r5!,{r0-r3} �str r5,u_ptr �ldr r14,p_start �ldmia r14!,{r6-r13} � �mul r6,r0,r6 �mla r6,r8,r1,r6 �mla r6,r10,r2,r6 �mla r6,r12,r3,r6 � �mul r7,r0,r7 �mla r7,r9,r1,r7 �mla r7,r11,r2,r7 mla r7,r13,r3,r7 ldmia r14!,{r4,r5,r8-r13} & 0mul r8,r1,r8 :mla r8,r4,r0,r8 Dmla r8,r10,r2,r8 Nmla r8,r12,r3,r8 X bmul r9,r1,r9 lmla r9,r5,r0,r9 vmla r9,r11,r2,r9 �mla r9,r13,r3,r9 � �ldmia r14!,{r4,r5,r10-r13} � �mul r10,r1,r10 �mla r10,r4,r0,r10 �mla r10,r12,r2,r10 � �mul r11,r1,r11 �mla r11,r5,r0,r11 �mla r11,r13,r2,r11 � �ldmia r14!,{r12,r13} mla r10,r12,r3,r10 mla r11,r13,r3,r11 *ldmia r14!,{r4,r5,r12,r13} 4 >mul r12,r1,r12 Hmla r12,r4,r0,r12 R \mul r13,r1,r13 fmla r13,r5,r0,r13 p zldmia r14!,{r0,r1} �mla r12,r0,r2,r12 �mla r13,r1,r2,r13 � �ldmia r14!,{r0,r1} �mla r12,r0,r3,r12 �mla r13,r1,r3,r13 � �adr r3,q_start �mov r5,#q_step% � �mov r6,r6,asr#20 �mov r7,r7,asr#20 �mov r8,r8,asr#20 mov r9,r9,asr#20 mov r10,r10,asr#20 mov r11,r11,asr#20 $mov r12,r12,asr#20 .mov r13,r13,asr#20 8 ldr r4,in B L .vloop Vldr r2,[r3],#4 `(mul r0,r6,r2 ; ax j(mul r1,r7,r2 ; ay t ~ldr r2,[r3],#4 �(mla r0,r8,r2,r0 ; bx �(mla r1,r9,r2,r1 ; by � �ldr r2,[r3],#4 �(mla r0,r10,r2,r0 ; cx �(mla r1,r11,r2,r1 ; cy � �ldr r2,[r3],#4 �(mla r0,r12,r2,r0 ; dx �(mla r1,r13,r2,r1 ; dy � �mov r0,r0,asr#20 mov r1,r1,asr#20 stmia r4!,{r0,r1} subs r5,r5,#1 ( bgt vloop 2 <ldr r5,u_count Fsubs r5,r5,#1 Pstrgt r5,u_count Zldrgt r5,u_ptr dstrgt r4,in n bgt uloop x �ldr r0,index_base �ldr r9,index_normal �ldr r12,big_normal_table �ldr r13,l_x �ldr r14,l_y � mov r1,#0 �.u_loop �#add r2,r0,r1,lsl#log2_q_step%+3 �$add r10,r9,r1,lsl#log2_q_step%+2 �add r3,r2,#4 � mov r4,#0 �ldr r5,[r2,r4,lsl#3] �ldr r6,[r3,r4,lsl#3] mov r4,#1 .v_loop /ldr r7,[r2,r4,lsl#3] ; x "/ldr r8,[r3,r4,lsl#3] ; y ,subs r5,r7,r5 6rsblt r5,r5,#0 @;movlt r11,#1 Jsubs r6,r8,r6 Trsblt r6,r6,#0 ^;orrlt r11,r11,#2 h.lp rcmp r5,#128 |cmplt r6,#128 �movge r5,r5,lsr#1 �movge r6,r6,lsr#1 � bge lp � �add r5,r5,r6,lsl#7 �add r5,r12,r5,lsl#3 �Dldmia r5,{r5,r6} ; get normalised vectors � �mul r5,r13,r5 �?mla r5,r14,r6,r5 ; nx*lx+ny*ly << 25 �:movs r5,r5,asr#14 ; normal * shd �subs r5,r5,#1024+384 �movlt r5,#0 cmp r5,#223 movgt r5,#223 str r5,[r10],#4 & 0 mov r5,r7 : mov r6,r8 Dadd r4,r4,#1 Ncmp r4,#q_step% Xble v_loop badd r1,r1,#1 lcmp r1,#q_step% vble u_loop � �ldr r13,stackp � �ldr r3,index_normal �ldr r6,index_base �'mov r0,#0 ; x � .xloop �'mov r1,#0 ; y � .yloop �=add r2,r0,r1,lsl#4 ; x+y*q_step%, q_step%=16 �4add r4,r3,r2,lsl#2 ; normal+ofs%<<2 � �(ldr r5,[r4,#4] ; l1 str r5,ac (ldr r5,[r4] ; l2 str r5,bc * 4(ldr r5,[r4,#4+16*4] ; l3 > str r5,cc H R4add r7,r6,r2,lsl#3 ; output+ofs%<<3 \ f1ldmia r7,{r8,r9,r10,r11} ; bx,by,ax,ay p str r8,bx z str r9,by �str r10,ax �str r11,ay � �ldr r8,[r7,#8+16*8] � str r8,cx � �ldr r8,[r7,#12+16*8] � str r8,cy � �9mov r8,r0,lsl#4 ; x*sstep%, sstep%=16 � str r8,bv �add r8,r8,#16 � str r8,av str r8,cv .mov r8,r1,lsl#4 ; y*sstep% $ str r8,au . str r8,bu 8add r8,r8,#16 B str r8,cu L V"stmfd r13!,{r0,r1,r3,r4,r6-r8} `bl texture_triangle j"ldmfd r13!,{r0,r1,r3,r4,r6-r8} t ~ str r8,au �(ldr r8,[r4,#16*4] ; l4 � str r8,ac �mov r8,r0,lsl#4 � str r8,av � �ldr r8,[r7,#16*8] � str r8,ax �ldr r8,[r7,#4+16*8] � str r8,ay � �stmfd r13!,{r0,r1,r3,r6} � adr r0,by ldmia r0,{r1,r2,r3,r4,r5} adr r6,cy (ldmia r6,{r7,r8,r9,r10,r11} 2 <stmia r6,{r1-r5} Fstmia r0,{r7-r11} P Zbl texture_triangle dldmfd r13!,{r0,r1,r3,r6} n xadd r1,r1,#1 �cmp r1,#14 � ble yloop � �add r0,r0,#1 �cmp r0,#14 � ble xloop � �ldmfd r13!,{r15} � �.u_count � dcd 0 � � .u_ptr dcd 0 .l_x "dcd lx*1024 ,.l_y 6dcd ly*1024 @ J.in T dcd 0 ^ h.stackp r dcd 0 | �.p_start �dcd p_table% � �.index_base �dcd output% � �.index_normal �dcd normal% � �.q_start �] �P%+=8192/q_step% �[OPT pass% .div_table dcd div_table% & 0.stackp : dcd 0 D .link N dcd 0 X.div_table bdcd div_table% l .coltable vdcd coltab% �.r_index � dcd 0 �.l_index � dcd 0 � � .y_end � dcd 0 � �.sprite �dcd sprite%+56 �.screenadr �dcd �screenadr(2) �dcd �screenadr(1) .ay:dcd 0:.ax:dcd 0 .ac:dcd 0 .au:dcd 0:.av:dcd 0 *dcd 0:dcd 0:dcd 0 4 >.by:dcd 0:.bx:dcd 0 H .bc:dcd 0 R.bu:dcd 0:.bv:dcd 0 \dcd 0:dcd 0:dcd 0 f p.cy:dcd 0:.cx:dcd 0 z .cc:dcd 0 �.cu:dcd 0:.cv:dcd 0 �dcd 0:dcd 0:dcd 0 � �.texture_triangle � adr r0,ay �ldr r10,[r0,#0] �ldr r11,[r0,#32] �cmp r11,r10 �movlt r1,r11 �movge r1,r10 �movlt r2,#1 �movge r2,#0 �ldr r12,[r0,#64] cmp r12,r1 movlt r1,r12 movlt r2,#2 $cmp r1,#512 .movge pc,r14 8cmp r10,#0 Bcmplt r11,#0 Lcmplt r12,#0 Vmovlt pc,r14 ` jstr r13,stackp t ~subs r3,r2,#1 �movlt r3,#2 � �add r2,r0,r2,lsl#5 �=ldmib r2,{r5,r6,r7,r8} ; x_k,c_k,u_k,v_k �add r4,r0,r3,lsl#5 �str r4,l_index �subs r3,r3,#1 �movlt r3,#2 �add r0,r0,r3,lsl#5 �str r0,r_index �Aldmia r4,{r9,r10,r11,r12,r13} ; y_l,x_l,c_l,u_l,v_l � str r14,link ldr r14,div_table 1subs r2,r9,r1 ; dly 7ldrgt r2,[r14,r2,lsl#2] ; 1<<20/dly ( 2movgt r3,r5,lsl#10 <moveq r3,r10,lsl#10 Fsubgt r4,r10,r5 P5mul r4,r2,r4 ; dlx<<20 Zstr r4,dlx d nmovgt r10,r6,lsl#10 xmoveq r10,r11,lsl#10 �str r10,lc �subgt r4,r11,r6 �5mul r4,r2,r4 ; dlc<<20 �str r4,dlc � �movgt r10,r7,lsl#10 �moveq r10,r12,lsl#10 �str r10,lu �subgt r4,r12,r7 �5mul r4,r2,r4 ; dlu<<20 �str r4,dlu � �movgt r10,r8,lsl#10 moveq r10,r13,lsl#10 str r10,lv subgt r4,r13,r8 "5mul r4,r2,r4 ; dlv<<20 ,str r4,dlv 6 @Aldmia r0,{r0,r10,r11,r12,r13} ; y_r,x_r,c_r,u_r,v_r J1subs r2,r0,r1 ; dry T7ldrgt r2,[r14,r2,lsl#2] ; 1<<20/dry ^ hmovgt r4,r5,lsl#10 rmoveq r4,r10,lsl#10 |subgt r10,r10,r5 �5mul r10,r2,r10 ; drx<<20 �str r10,drx � �movgt r10,r6,lsl#10 �moveq r10,r11,lsl#10 �str r10,rc �subgt r10,r11,r6 �5mul r10,r2,r10 ; drc<<20 �str r10,drc � �movgt r10,r7,lsl#10 �moveq r10,r12,lsl#10 �str r10,ru subgt r10,r12,r7 5mul r10,r2,r10 ; dru<<20 str r10,dru & 0movgt r10,r8,lsl#10 :moveq r10,r13,lsl#10 Dstr r10,rv Nsubgt r10,r13,r8 X5mul r10,r2,r10 ; drv<<20 bstr r10,drv l vldr r2,screenadr �add r2,r2,r1,lsl#6 �9add r2,r2,r1,lsl#8 ; screen line � �MOV R14,R1 �ldr r10,sprite � � cmp r9,r0 �strlt r9,y_end �strge r0,y_end � �bgt method_2 �beq last_bit � <.method_1 ; left_y<right_y �yloop *; r0 = y_l 4; r2 = scline > ; r3 = lx H ; r4 = rx R; r1,r5-r14 = empty \ f ; recalcuate dlx,dlu,dlv,dlc pldr r1,l_index z=ldmib r1,{r3,r10,r11,r12} ; x_l,c_l,u_l,v_l �ldr r1,r_index �Aldmia r1,{r1,r5,r6,r7,r8} ; y_r,x_r,c_r,u_r,v_r �str r1,y_end � �1subs r1,r1,r0 ; dly �ldr r14,div_table � �7ldrgt r1,[r14,r1,lsl#2] ; 1<<20/dly �subgt r7,r7,r11 �5mul r7,r1,r7 ; dlu<<20 �str r7,dlu �subgt r5,r5,r3 �mov r3,r3,lsl#10 5mul r5,r1,r5 ; dlx<<20 str r5,dlx subgt r5,r6,r10 $5mul r5,r1,r5 ; dlc<<20 .str r5,dlc 8 Bsubgt r5,r8,r12 L5mul r5,r1,r5 ; dlv<<20 Vstr r5,dlv ` jldr r10,sprite t ~MOV R14,R0 � .last_bit � �yloop � �ldr r13,stackp �ldr r15,link � � �=.method_2 ; right_y< left_y � �yloop � �; r0 = y_l �; r2 = scline ; r3 = lx ; r4 = rx ; r1,r5-r14 = empty ( ; recalcuate drx,dru,drv,drc 2ldr r1,r_index <=ldmib r1,{r4,r10,r11,r12} ; x_r,c_r,u_r,v_r Fldr r1,l_index PAldmia r1,{r1,r5,r6,r7,r8} ; y_l,x_l,c_l,u_l,v_l Zstr r1,y_end d n1subs r1,r1,r0 ; dly xldr r14,div_table � �7ldrgt r1,[r14,r1,lsl#2] ; 1<<20/dly �subgt r5,r5,r4 �mov r4,r4,lsl#10 �5mul r5,r1,r5 ; dlx<<20 �str r5,drx �subgt r5,r6,r10 �5mul r5,r1,r5 ; dlc<<20 �str r5,drc �subgt r5,r7,r11 �5mul r5,r1,r5 ; dlu<<20 �str r5,dru �subgt r5,r8,r12 5mul r5,r1,r5 ; dlv<<20 str r5,drv "ldr r10,sprite ,MOV R14,R0 6 �yloop @ Jldr r13,stackp Tldr r15,link ^ h .line r dcd 0 | �.coords �.lu:dcd 0:.ru:dcd 0 �.lc:dcd 0:.rc:dcd 0 �.lv:dcd 0:.rv:dcd 0 �.dlx:dcd 0:.drx:dcd 0 �.dlc:dcd 0:.drc:dcd 0 �.dlu:dcd 0:.dru:dcd 0 �.dlv:dcd 0:.drv:dcd 0 � �] �� �p%=q_start:stp=1024/q_step% ��n%=0 � 1024 � stp 1qn%=1024-n%:qs%=(qn%*qn%)>>10:ns%=(n%*n%)>>10 !p%=qs%*qn% p%!4=3*qs%*n% &p%!8=3*ns%*qn% 0p%!12=ns%*n% : p%+=16 D� N$ș"OS_File",16,"Picture",sprite% X#ș"OS_File",16,"ColTab",coltab% b� l: vݤyloop �[OPT pass% � ; r2 = sc � ; r3 = lx � ; r4 = rx �; r14 = y_k � � .yloop �,subs r0,r4,r3 ; dx<<10 �.add r12,r2,r3,asr#10 ; left adr �ldr r13,dlx �-add r3,r3,r13,asr#10 ; lx+=dlx �ldr r11,drx �/add r13,r2,r4,asr#10 ; right adr -add r4,r4,r11,asr#10 ; rx+=drx ldr r11,div_table mov r0,r0,asr#4 .ldrgt r0,[r11,r0,lsl#2] ; 1<<18/dx *ldr r11,lc 4 ldr r9,rc >,sub r5,r9,r11 ; dc<<10 H,mul r5,r0,r5 ; dc<<30 Rldr r8,drc \add r9,r9,r8,asr#10 f str r9,rc pldr r8,dlc zadd r9,r11,r8,asr#10 � str r9,lc � ldr r9,lu � ldr r8,ru � �,sub r6,r8,r9 ; du<<10 �,mul r6,r0,r6 ; du<<24 � �ldr r7,dru �add r8,r8,r7,asr#10 � str r8,ru � �ldr r7,dlu �add r8,r9,r7,asr#10 str r8,lu ldr r8,lv $ ldr r1,rv .,sub r7,r1,r8 ; dv<<10 8,mul r7,r0,r7 ; dv<<21 Bldr r0,drv Ladd r1,r1,r0,asr#10 V str r1,rv `ldr r0,dlv jadd r0,r8,r0,asr#10 t str r0,lv ~add r2,r2,#320 �str r2,line � �mov r9,r9,lsl#14 �mov r8,r8,lsl#14 �mov r11,r11,lsl#14 � � ; dc = r5 � ; du = r6 � ; dv = r7 �; v = r8 �; u = r9 �; sprite = r10 ; c = r11 ; left_adr = r12 ; right_adr = r13 ; r1 = col table ( 2ldr r1,coltable <tst r12,#1 Fmoveq r2,#1<<31 Pmovne r2,#0 Z .xloop dand r0,r8,#255<<24 norr r0,r0,r9,lsr#8 xldrb r0,[r10,r0,lsr#16] �/add r0,r1,r0,lsl#5 ; 32 levels �add r0,r0,r2,lsr#31 �/ldrb r0,[r0,r11,lsr#27] ; 32 levels �strb r0,[r12],#1 �cmp r12,r13 �addle r2,r2,#1<<31 �addle r8,r8,r7 �addle r9,r9,r6 �addle r11,r11,r5 � ble xloop � �ldr r2,line �ldr r0,y_end add r14,r14,#1 cmp r14,r0 blt yloop " ,] 6=0 @: Jݤscreenadr(bk%) Tș"OS_Byte",112,bk% ^ș"OS_Byte",113,bk% h � q% 8 r!q%=148:q%!4=-1 |!ș"OS_ReadVduVariables",q%,q% �=!q% �
00000000 0d 00 0a 10 f4 20 54 72 69 61 6e 67 6c 65 20 34 |..... Triangle 4| 00000010 0d 00 14 05 f4 0d 00 1e 31 f4 20 44 65 6d 6f 6e |........1. Demon| 00000020 73 74 72 61 74 65 20 6d 6f 72 65 20 61 64 76 61 |strate more adva| 00000030 6e 63 65 64 20 75 73 65 73 20 6f 66 20 74 72 69 |nced uses of tri| 00000040 61 6e 67 6c 65 73 0d 00 28 05 3a 0d 00 32 1f ee |angles..(.:..2..| 00000050 20 85 20 eb 30 3a f1 20 f6 24 3b 22 20 61 74 20 | . .0:. .$;" at | 00000060 6c 69 6e 65 20 22 3b 9e 3a e0 0d 00 3c 0a eb 20 |line ";.:...<.. | 00000070 31 33 3a 87 0d 00 46 15 6c 78 3d 30 2e 37 30 37 |13:...F.lx=0.707| 00000080 3a 6c 79 3d 30 2e 37 30 37 0d 00 50 0d f2 61 73 |:ly=0.707..P..as| 00000090 73 65 6d 62 6c 65 0d 00 5a 0b d6 20 73 65 74 75 |semble..Z.. setu| 000000a0 70 0d 00 64 0d e3 78 25 3d 30 20 b8 20 33 0d 00 |p..d..x%=0 . 3..| 000000b0 6e 0d e3 79 25 3d 30 20 b8 20 33 0d 00 78 24 70 |n..y%=0 . 3..x$p| 000000c0 5f 74 61 62 6c 65 25 21 28 28 78 25 2b 79 25 2a |_table%!((x%+y%*| 000000d0 34 29 3c 3c 33 29 3d 33 37 2b 78 25 2a 37 35 0d |4)<<3)=37+x%*75.| 000000e0 00 82 28 70 5f 74 61 62 6c 65 25 21 28 34 2b 28 |..(p_table%!(4+(| 000000f0 28 78 25 2b 79 25 2a 34 29 3c 3c 33 29 29 3d 31 |(x%+y%*4)<<3))=1| 00000100 32 2b 79 25 2a 37 35 0d 00 8c 05 ed 0d 00 96 05 |2+y%*75.........| 00000110 ed 0d 00 a0 05 3a 0d 00 aa 09 62 6b 25 3d 31 0d |.....:....bk%=1.| 00000120 00 b4 09 f2 64 72 61 77 0d 00 be 09 f2 64 72 61 |....draw.....dra| 00000130 77 0d 00 c8 08 c8 97 20 ee 0d 00 d2 05 f5 0d 00 |w...... ........| 00000140 dc 05 f5 0d 00 e6 11 c8 97 20 6d 78 25 2c 6d 79 |......... mx%,my| 00000150 25 2c 62 25 0d 00 f0 0a fd 20 62 25 3d 34 0d 00 |%,b%..... b%=4..| 00000160 fa 05 3a 0d 01 04 14 66 78 25 3d 2d 31 3a 6d 64 |..:....fx%=-1:md| 00000170 25 3d 31 30 30 30 30 0d 01 0e 0d e3 78 25 3d 30 |%=10000.....x%=0| 00000180 20 b8 20 33 0d 01 18 0d e3 79 25 3d 30 20 b8 20 | . 3.....y%=0 . | 00000190 33 0d 01 22 21 70 78 25 3d 70 5f 74 61 62 6c 65 |3.."!px%=p_table| 000001a0 25 21 28 28 78 25 2b 79 25 2a 34 29 3c 3c 33 29 |%!((x%+y%*4)<<3)| 000001b0 2a 34 0d 01 2c 2a 70 79 25 3d 31 30 32 34 2d 70 |*4..,*py%=1024-p| 000001c0 5f 74 61 62 6c 65 25 21 28 34 2b 28 28 78 25 2b |_table%!(4+((x%+| 000001d0 79 25 2a 34 29 3c 3c 33 29 29 2a 34 0d 01 36 1b |y%*4)<<3))*4..6.| 000001e0 64 78 25 3d 6d 78 25 2d 70 78 25 3a 64 79 25 3d |dx%=mx%-px%:dy%=| 000001f0 6d 79 25 2d 70 79 25 0d 01 40 16 64 25 3d 64 78 |my%-py%..@.d%=dx| 00000200 25 2a 64 78 25 2b 64 79 25 2a 64 79 25 0d 01 4a |%*dx%+dy%*dy%..J| 00000210 21 e7 20 64 25 3c 6d 64 25 20 6d 64 25 3d 64 25 |!. d%<md% md%=d%| 00000220 3a 66 78 25 3d 78 25 3a 66 79 25 3d 79 25 0d 01 |:fx%=x%:fy%=y%..| 00000230 54 05 ed 0d 01 5e 05 ed 0d 01 68 20 e7 20 66 78 |T....^....h . fx| 00000240 25 3c 3e 2d 31 20 8c 20 f2 63 68 61 6e 67 65 28 |%<>-1 . .change(| 00000250 66 78 25 2c 66 79 25 29 0d 01 72 07 fd 20 a3 0d |fx%,fy%)..r.. ..| 00000260 01 7c 05 e0 0d 01 86 05 3a 0d 01 90 15 dd f2 63 |.|......:......c| 00000270 68 61 6e 67 65 28 66 78 25 2c 66 79 25 29 0d 01 |hange(fx%,fy%)..| 00000280 9a 05 f5 0d 01 a4 11 c8 97 20 6d 78 25 2c 6d 79 |......... mx%,my| 00000290 25 2c 62 25 0d 01 ae 24 70 5f 74 61 62 6c 65 25 |%,b%...$p_table%| 000002a0 21 28 28 66 78 25 2b 66 79 25 2a 34 29 3c 3c 33 |!((fx%+fy%*4)<<3| 000002b0 29 3d 6d 78 25 3e 3e 32 0d 01 b8 2e 70 5f 74 61 |)=mx%>>2....p_ta| 000002c0 62 6c 65 25 21 28 34 2b 28 28 66 78 25 2b 66 79 |ble%!(4+((fx%+fy| 000002d0 25 2a 34 29 3c 3c 33 29 29 3d 32 35 36 2d 28 6d |%*4)<<3))=256-(m| 000002e0 79 25 3e 3e 32 29 0d 01 c2 09 f2 64 72 61 77 0d |y%>>2).....draw.| 000002f0 01 cc 0a fd 20 62 25 3d 30 0d 01 d6 09 f2 64 72 |.... b%=0.....dr| 00000300 61 77 0d 01 e0 05 e1 0d 01 ea 05 3a 0d 01 f4 0a |aw.........:....| 00000310 dd f2 64 72 61 77 0d 01 fe 17 c8 99 22 4f 53 5f |..draw......"OS_| 00000320 42 79 74 65 22 2c 31 31 32 2c 62 6b 25 0d 02 08 |Byte",112,bk%...| 00000330 1d c8 94 20 21 73 63 72 65 65 6e 61 64 72 2c 73 |... !screenadr,s| 00000340 63 72 65 65 6e 61 64 72 21 34 0d 02 12 0d 62 6b |creenadr!4....bk| 00000350 25 3d 33 2d 62 6b 25 0d 02 1c 06 c8 96 0d 02 26 |%=3-bk%........&| 00000360 17 c8 99 22 4f 53 5f 42 79 74 65 22 2c 31 31 33 |..."OS_Byte",113| 00000370 2c 62 6b 25 0d 02 30 05 db 0d 02 3a 0c d6 20 62 |,bk%..0....:.. b| 00000380 65 7a 69 65 72 0d 02 44 0d e3 78 25 3d 30 20 b8 |ezier..D..x%=0 .| 00000390 20 33 0d 02 4e 0d e3 79 25 3d 30 20 b8 20 33 0d | 3..N..y%=0 . 3.| 000003a0 02 58 45 c8 8f 20 70 5f 74 61 62 6c 65 25 21 28 |.XE.. p_table%!(| 000003b0 28 78 25 2b 79 25 2a 34 29 3c 3c 33 29 2a 34 2c |(x%+y%*4)<<3)*4,| 000003c0 31 30 32 34 2d 70 5f 74 61 62 6c 65 25 21 28 34 |1024-p_table%!(4| 000003d0 2b 28 28 78 25 2b 79 25 2a 34 29 3c 3c 33 29 29 |+((x%+y%*4)<<3))| 000003e0 2a 34 2c 38 0d 02 62 05 ed 0d 02 6c 05 ed 0d 02 |*4,8..b....l....| 000003f0 76 05 e1 0d 02 80 05 3a 0d 02 8a 0e dd f2 61 73 |v......:......as| 00000400 73 65 6d 62 6c 65 0d 02 94 21 71 5f 73 74 65 70 |semble...!q_step| 00000410 25 3d 31 36 3a 73 73 74 65 70 25 3d 32 35 36 2f |%=16:sstep%=256/| 00000420 71 5f 73 74 65 70 25 0d 02 9e 20 6c 6f 67 32 5f |q_step%... log2_| 00000430 71 5f 73 74 65 70 25 3d ab 28 71 5f 73 74 65 70 |q_step%=.(q_step| 00000440 25 29 2f ab 28 32 29 0d 02 a8 9c de 20 63 6f 64 |%)/.(2)..... cod| 00000450 65 25 20 31 36 33 38 34 2c 70 5f 74 61 62 6c 65 |e% 16384,p_table| 00000460 25 20 31 32 38 2c 6f 75 74 70 75 74 25 20 71 5f |% 128,output% q_| 00000470 73 74 65 70 25 2a 71 5f 73 74 65 70 25 2a 38 2c |step%*q_step%*8,| 00000480 6e 6f 72 6d 61 6c 25 20 71 5f 73 74 65 70 25 2a |normal% q_step%*| 00000490 71 5f 73 74 65 70 25 2a 35 2c 64 69 76 5f 74 61 |q_step%*5,div_ta| 000004a0 62 6c 65 25 20 33 32 37 36 38 2a 34 2c 62 69 67 |ble% 32768*4,big| 000004b0 5f 6e 6f 72 6d 61 6c 5f 74 61 62 6c 65 25 20 31 |_normal_table% 1| 000004c0 32 38 2a 31 32 38 2a 38 2c 73 70 72 69 74 65 25 |28*128*8,sprite%| 000004d0 20 36 35 35 39 32 2c 63 6f 6c 74 61 62 25 20 38 | 65592,coltab% 8| 000004e0 31 39 32 0d 02 b2 15 e3 20 70 61 73 73 25 3d 30 |192..... pass%=0| 000004f0 20 b8 20 32 20 88 20 32 0d 02 bc 0c 50 25 3d 63 | . 2 . 2....P%=c| 00000500 6f 64 65 25 0d 02 c6 0e 5b 4f 50 54 20 70 61 73 |ode%....[OPT pas| 00000510 73 25 0d 02 d0 0a 2e 73 65 74 75 70 0d 02 da 1c |s%.....setup....| 00000520 6c 64 72 20 72 31 32 2c 62 69 67 5f 6e 6f 72 6d |ldr r12,big_norm| 00000530 61 6c 5f 74 61 62 6c 65 0d 02 e4 0d 6d 6f 76 20 |al_table....mov | 00000540 72 31 2c 23 30 0d 02 ee 0c 2e 6e 79 5f 6c 6f 6f |r1,#0.....ny_loo| 00000550 70 0d 02 f8 0d 6d 6f 76 20 72 30 2c 23 30 0d 03 |p....mov r0,#0..| 00000560 02 0c 2e 6e 78 5f 6c 6f 6f 70 0d 03 0c 04 0d 03 |...nx_loop......| 00000570 16 10 6d 75 6c 20 72 32 2c 72 30 2c 72 30 0d 03 |..mul r2,r0,r0..| 00000580 20 13 6d 6c 61 20 72 32 2c 72 31 2c 72 31 2c 72 | .mla r2,r1,r1,r| 00000590 32 0d 03 2a 14 6d 6f 76 20 72 32 2c 72 32 2c 6c |2..*.mov r2,r2,l| 000005a0 73 6c 23 31 30 0d 03 34 04 0d 03 3e 10 3b 20 72 |sl#10..4...>.; r| 000005b0 33 20 3d 20 b6 28 72 32 29 0d 03 48 0d 6d 6f 76 |3 = .(r2)..H.mov| 000005c0 20 72 33 2c 23 30 0d 03 52 11 6d 6f 76 20 72 34 | r3,#0..R.mov r4| 000005d0 2c 23 31 3c 3c 33 30 0d 03 5c 07 2e 6c 70 0d 03 |,#1<<30..\..lp..| 000005e0 66 10 61 64 64 20 72 35 2c 72 33 2c 72 34 0d 03 |f.add r5,r3,r4..| 000005f0 70 0d 63 6d 70 20 72 35 2c 72 32 0d 03 7a 12 73 |p.cmp r5,r2..z.s| 00000600 75 62 6c 65 20 72 32 2c 72 32 2c 72 35 0d 03 84 |uble r2,r2,r5...| 00000610 12 61 64 64 6c 65 20 72 33 2c 72 35 2c 72 34 0d |.addle r3,r5,r4.| 00000620 03 8e 13 6d 6f 76 20 72 33 2c 72 33 2c 61 73 72 |...mov r3,r3,asr| 00000630 23 31 0d 03 98 14 6d 6f 76 73 20 72 34 2c 72 34 |#1....movs r4,r4| 00000640 2c 61 73 72 23 32 0d 03 a2 0a 62 6e 65 20 6c 70 |,asr#2....bne lp| 00000650 0d 03 ac 04 0d 03 b6 15 3b 20 72 32 20 3d 20 31 |........; r2 = 1| 00000660 30 34 38 35 37 36 2f 72 33 0d 03 c0 13 6d 6f 76 |048576/r3....mov| 00000670 20 72 34 2c 23 31 30 34 38 35 37 36 0d 03 ca 0d | r4,#1048576....| 00000680 6d 6f 76 20 72 35 2c 23 30 0d 03 d4 0d 6d 6f 76 |mov r5,#0....mov| 00000690 20 72 32 2c 23 30 0d 03 de 11 6d 6f 76 20 72 37 | r2,#0....mov r7| 000006a0 2c 23 31 3c 3c 33 31 0d 03 e8 07 2e 6c 70 0d 03 |,#1<<31.....lp..| 000006b0 f2 14 6d 6f 76 73 20 72 34 2c 72 34 2c 6c 73 6c |..movs r4,r4,lsl| 000006c0 23 31 0d 03 fc 10 61 64 63 20 72 35 2c 72 35 2c |#1....adc r5,r5,| 000006d0 72 35 0d 04 06 0d 63 6d 70 20 72 35 2c 72 33 0d |r5....cmp r5,r3.| 000006e0 04 10 12 73 75 62 67 65 20 72 35 2c 72 35 2c 72 |...subge r5,r5,r| 000006f0 33 0d 04 1a 12 6f 72 72 67 65 20 72 32 2c 72 32 |3....orrge r2,r2| 00000700 2c 72 37 0d 04 24 14 6d 6f 76 73 20 72 37 2c 72 |,r7..$.movs r7,r| 00000710 37 2c 6c 73 72 23 31 0d 04 2e 0a 62 6e 65 20 6c |7,lsr#1....bne l| 00000720 70 0d 04 38 04 0d 04 42 10 6d 75 6c 20 72 33 2c |p..8...B.mul r3,| 00000730 72 31 2c 72 32 0d 04 4c 10 6d 75 6c 20 72 32 2c |r1,r2..L.mul r2,| 00000740 72 30 2c 72 32 0d 04 56 04 0d 04 60 16 73 74 6d |r0,r2..V...`.stm| 00000750 69 61 20 72 31 32 21 2c 7b 72 32 2c 72 33 7d 0d |ia r12!,{r2,r3}.| 00000760 04 6a 04 0d 04 74 10 61 64 64 20 72 30 2c 72 30 |.j...t.add r0,r0| 00000770 2c 23 31 0d 04 7e 0f 63 6d 70 20 72 30 2c 23 31 |,#1..~.cmp r0,#1| 00000780 32 38 0d 04 88 0f 62 6c 74 20 6e 78 5f 6c 6f 6f |28....blt nx_loo| 00000790 70 0d 04 92 04 0d 04 9c 10 61 64 64 20 72 31 2c |p........add r1,| 000007a0 72 31 2c 23 31 0d 04 a6 0f 63 6d 70 20 72 31 2c |r1,#1....cmp r1,| 000007b0 23 31 32 38 0d 04 b0 0f 62 6c 74 20 6e 79 5f 6c |#128....blt ny_l| 000007c0 6f 6f 70 0d 04 ba 04 0d 04 c4 14 6c 64 72 20 72 |oop........ldr r| 000007d0 30 2c 64 69 76 5f 74 61 62 6c 65 0d 04 ce 0d 6d |0,div_table....m| 000007e0 6f 76 20 72 32 2c 23 31 0d 04 d8 04 0d 04 e2 07 |ov r2,#1........| 000007f0 2e 64 6c 0d 04 ec 11 6d 6f 76 20 72 34 2c 23 31 |.dl....mov r4,#1| 00000800 3c 3c 32 30 0d 04 f6 27 6d 6f 76 20 72 35 2c 23 |<<20...'mov r5,#| 00000810 30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |0 | 00000820 3b 20 72 65 6d 61 69 6e 64 65 72 0d 05 00 26 6d |; remainder...&m| 00000830 6f 76 20 72 36 2c 23 30 20 20 20 20 20 20 20 20 |ov r6,#0 | 00000840 20 20 20 20 20 20 20 3b 20 71 75 6f 74 69 65 6e | ; quotien| 00000850 74 0d 05 0a 11 6d 6f 76 20 72 37 2c 23 31 3c 3c |t....mov r7,#1<<| 00000860 33 31 0d 05 14 0d 2e 64 69 76 5f 6c 6f 6f 70 0d |31.....div_loop.| 00000870 05 1e 14 6d 6f 76 73 20 72 34 2c 72 34 2c 6c 73 |...movs r4,r4,ls| 00000880 6c 23 31 0d 05 28 10 61 64 63 20 72 35 2c 72 35 |l#1..(.adc r5,r5| 00000890 2c 72 35 0d 05 32 0d 63 6d 70 20 72 35 2c 72 32 |,r5..2.cmp r5,r2| 000008a0 0d 05 3c 12 73 75 62 67 65 20 72 35 2c 72 35 2c |..<.subge r5,r5,| 000008b0 72 32 0d 05 46 12 6f 72 72 67 65 20 72 36 2c 72 |r2..F.orrge r6,r| 000008c0 36 2c 72 37 0d 05 50 14 6d 6f 76 73 20 72 37 2c |6,r7..P.movs r7,| 000008d0 72 37 2c 6c 73 72 23 31 0d 05 5a 10 62 6e 65 20 |r7,lsr#1..Z.bne | 000008e0 64 69 76 5f 6c 6f 6f 70 0d 05 64 04 0d 05 6e 18 |div_loop..d...n.| 000008f0 3b 20 72 36 20 3d 20 72 34 20 64 69 76 20 72 32 |; r6 = r4 div r2| 00000900 20 3d 20 73 0d 05 78 04 0d 05 82 13 73 74 72 20 | = s..x.....str | 00000910 72 36 2c 5b 72 30 2c 23 34 5d 21 0d 05 8c 10 61 |r6,[r0,#4]!....a| 00000920 64 64 20 72 32 2c 72 32 2c 23 31 0d 05 96 11 63 |dd r2,r2,#1....c| 00000930 6d 70 20 72 32 2c 23 33 32 37 36 38 0d 05 a0 0a |mp r2,#32768....| 00000940 62 6c 65 20 64 6c 0d 05 aa 04 0d 05 b4 0a 2e 6d |ble dl.........m| 00000950 61 69 6e 31 0d 05 be 0e 6d 6f 76 20 70 63 2c 72 |ain1....mov pc,r| 00000960 31 34 0d 05 c8 04 0d 05 d2 04 0d 05 dc 0e 6d 6f |14............mo| 00000970 76 20 70 63 2c 72 31 34 0d 05 e6 04 0d 05 f0 15 |v pc,r14........| 00000980 2e 62 69 67 5f 6e 6f 72 6d 61 6c 5f 74 61 62 6c |.big_normal_tabl| 00000990 65 0d 05 fa 19 64 63 64 20 62 69 67 5f 6e 6f 72 |e....dcd big_nor| 000009a0 6d 61 6c 5f 74 61 62 6c 65 25 0d 06 04 04 0d 06 |mal_table%......| 000009b0 0e 0b 2e 62 65 7a 69 65 72 0d 06 18 14 73 74 6d |...bezier....stm| 000009c0 66 64 20 72 31 33 21 2c 7b 72 31 34 7d 0d 06 22 |fd r13!,{r14}.."| 000009d0 12 73 74 72 20 72 31 33 2c 73 74 61 63 6b 70 0d |.str r13,stackp.| 000009e0 06 2c 12 61 64 72 20 72 35 2c 71 5f 73 74 61 72 |.,.adr r5,q_star| 000009f0 74 0d 06 36 04 0d 06 40 13 6d 6f 76 20 72 34 2c |t..6...@.mov r4,| 00000a00 23 71 5f 73 74 65 70 25 0d 06 4a 12 73 74 72 20 |#q_step%..J.str | 00000a10 72 34 2c 75 5f 63 6f 75 6e 74 0d 06 54 04 0d 06 |r4,u_count..T...| 00000a20 5e 15 6c 64 72 20 72 34 2c 69 6e 64 65 78 5f 62 |^.ldr r4,index_b| 00000a30 61 73 65 0d 06 68 0d 73 74 72 20 72 34 2c 69 6e |ase..h.str r4,in| 00000a40 0d 06 72 04 0d 06 7c 0a 2e 75 6c 6f 6f 70 0d 06 |..r...|..uloop..| 00000a50 86 15 6c 64 6d 69 61 20 72 35 21 2c 7b 72 30 2d |..ldmia r5!,{r0-| 00000a60 72 33 7d 0d 06 90 10 73 74 72 20 72 35 2c 75 5f |r3}....str r5,u_| 00000a70 70 74 72 0d 06 9a 13 6c 64 72 20 72 31 34 2c 70 |ptr....ldr r14,p| 00000a80 5f 73 74 61 72 74 0d 06 a4 17 6c 64 6d 69 61 20 |_start....ldmia | 00000a90 72 31 34 21 2c 7b 72 36 2d 72 31 33 7d 0d 06 ae |r14!,{r6-r13}...| 00000aa0 04 0d 06 b8 10 6d 75 6c 20 72 36 2c 72 30 2c 72 |.....mul r6,r0,r| 00000ab0 36 0d 06 c2 13 6d 6c 61 20 72 36 2c 72 38 2c 72 |6....mla r6,r8,r| 00000ac0 31 2c 72 36 0d 06 cc 14 6d 6c 61 20 72 36 2c 72 |1,r6....mla r6,r| 00000ad0 31 30 2c 72 32 2c 72 36 0d 06 d6 14 6d 6c 61 20 |10,r2,r6....mla | 00000ae0 72 36 2c 72 31 32 2c 72 33 2c 72 36 0d 06 e0 04 |r6,r12,r3,r6....| 00000af0 0d 06 ea 10 6d 75 6c 20 72 37 2c 72 30 2c 72 37 |....mul r7,r0,r7| 00000b00 0d 06 f4 13 6d 6c 61 20 72 37 2c 72 39 2c 72 31 |....mla r7,r9,r1| 00000b10 2c 72 37 0d 06 fe 14 6d 6c 61 20 72 37 2c 72 31 |,r7....mla r7,r1| 00000b20 31 2c 72 32 2c 72 37 0d 07 08 14 6d 6c 61 20 72 |1,r2,r7....mla r| 00000b30 37 2c 72 31 33 2c 72 33 2c 72 37 0d 07 12 04 0d |7,r13,r3,r7.....| 00000b40 07 1c 1d 6c 64 6d 69 61 20 72 31 34 21 2c 7b 72 |...ldmia r14!,{r| 00000b50 34 2c 72 35 2c 72 38 2d 72 31 33 7d 0d 07 26 04 |4,r5,r8-r13}..&.| 00000b60 0d 07 30 10 6d 75 6c 20 72 38 2c 72 31 2c 72 38 |..0.mul r8,r1,r8| 00000b70 0d 07 3a 13 6d 6c 61 20 72 38 2c 72 34 2c 72 30 |..:.mla r8,r4,r0| 00000b80 2c 72 38 0d 07 44 14 6d 6c 61 20 72 38 2c 72 31 |,r8..D.mla r8,r1| 00000b90 30 2c 72 32 2c 72 38 0d 07 4e 14 6d 6c 61 20 72 |0,r2,r8..N.mla r| 00000ba0 38 2c 72 31 32 2c 72 33 2c 72 38 0d 07 58 04 0d |8,r12,r3,r8..X..| 00000bb0 07 62 10 6d 75 6c 20 72 39 2c 72 31 2c 72 39 0d |.b.mul r9,r1,r9.| 00000bc0 07 6c 13 6d 6c 61 20 72 39 2c 72 35 2c 72 30 2c |.l.mla r9,r5,r0,| 00000bd0 72 39 0d 07 76 14 6d 6c 61 20 72 39 2c 72 31 31 |r9..v.mla r9,r11| 00000be0 2c 72 32 2c 72 39 0d 07 80 14 6d 6c 61 20 72 39 |,r2,r9....mla r9| 00000bf0 2c 72 31 33 2c 72 33 2c 72 39 0d 07 8a 04 0d 07 |,r13,r3,r9......| 00000c00 94 1e 6c 64 6d 69 61 20 72 31 34 21 2c 7b 72 34 |..ldmia r14!,{r4| 00000c10 2c 72 35 2c 72 31 30 2d 72 31 33 7d 0d 07 9e 04 |,r5,r10-r13}....| 00000c20 0d 07 a8 12 6d 75 6c 20 72 31 30 2c 72 31 2c 72 |....mul r10,r1,r| 00000c30 31 30 0d 07 b2 15 6d 6c 61 20 72 31 30 2c 72 34 |10....mla r10,r4| 00000c40 2c 72 30 2c 72 31 30 0d 07 bc 16 6d 6c 61 20 72 |,r0,r10....mla r| 00000c50 31 30 2c 72 31 32 2c 72 32 2c 72 31 30 0d 07 c6 |10,r12,r2,r10...| 00000c60 04 0d 07 d0 12 6d 75 6c 20 72 31 31 2c 72 31 2c |.....mul r11,r1,| 00000c70 72 31 31 0d 07 da 15 6d 6c 61 20 72 31 31 2c 72 |r11....mla r11,r| 00000c80 35 2c 72 30 2c 72 31 31 0d 07 e4 16 6d 6c 61 20 |5,r0,r11....mla | 00000c90 72 31 31 2c 72 31 33 2c 72 32 2c 72 31 31 0d 07 |r11,r13,r2,r11..| 00000ca0 ee 04 0d 07 f8 18 6c 64 6d 69 61 20 72 31 34 21 |......ldmia r14!| 00000cb0 2c 7b 72 31 32 2c 72 31 33 7d 0d 08 02 04 0d 08 |,{r12,r13}......| 00000cc0 0c 16 6d 6c 61 20 72 31 30 2c 72 31 32 2c 72 33 |..mla r10,r12,r3| 00000cd0 2c 72 31 30 0d 08 16 16 6d 6c 61 20 72 31 31 2c |,r10....mla r11,| 00000ce0 72 31 33 2c 72 33 2c 72 31 31 0d 08 20 04 0d 08 |r13,r3,r11.. ...| 00000cf0 2a 1e 6c 64 6d 69 61 20 72 31 34 21 2c 7b 72 34 |*.ldmia r14!,{r4| 00000d00 2c 72 35 2c 72 31 32 2c 72 31 33 7d 0d 08 34 04 |,r5,r12,r13}..4.| 00000d10 0d 08 3e 12 6d 75 6c 20 72 31 32 2c 72 31 2c 72 |..>.mul r12,r1,r| 00000d20 31 32 0d 08 48 15 6d 6c 61 20 72 31 32 2c 72 34 |12..H.mla r12,r4| 00000d30 2c 72 30 2c 72 31 32 0d 08 52 04 0d 08 5c 12 6d |,r0,r12..R...\.m| 00000d40 75 6c 20 72 31 33 2c 72 31 2c 72 31 33 0d 08 66 |ul r13,r1,r13..f| 00000d50 15 6d 6c 61 20 72 31 33 2c 72 35 2c 72 30 2c 72 |.mla r13,r5,r0,r| 00000d60 31 33 0d 08 70 04 0d 08 7a 16 6c 64 6d 69 61 20 |13..p...z.ldmia | 00000d70 72 31 34 21 2c 7b 72 30 2c 72 31 7d 0d 08 84 15 |r14!,{r0,r1}....| 00000d80 6d 6c 61 20 72 31 32 2c 72 30 2c 72 32 2c 72 31 |mla r12,r0,r2,r1| 00000d90 32 0d 08 8e 15 6d 6c 61 20 72 31 33 2c 72 31 2c |2....mla r13,r1,| 00000da0 72 32 2c 72 31 33 0d 08 98 04 0d 08 a2 16 6c 64 |r2,r13........ld| 00000db0 6d 69 61 20 72 31 34 21 2c 7b 72 30 2c 72 31 7d |mia r14!,{r0,r1}| 00000dc0 0d 08 ac 15 6d 6c 61 20 72 31 32 2c 72 30 2c 72 |....mla r12,r0,r| 00000dd0 33 2c 72 31 32 0d 08 b6 15 6d 6c 61 20 72 31 33 |3,r12....mla r13| 00000de0 2c 72 31 2c 72 33 2c 72 31 33 0d 08 c0 04 0d 08 |,r1,r3,r13......| 00000df0 ca 12 61 64 72 20 72 33 2c 71 5f 73 74 61 72 74 |..adr r3,q_start| 00000e00 0d 08 d4 13 6d 6f 76 20 72 35 2c 23 71 5f 73 74 |....mov r5,#q_st| 00000e10 65 70 25 0d 08 de 04 0d 08 e8 14 6d 6f 76 20 72 |ep%........mov r| 00000e20 36 2c 72 36 2c 61 73 72 23 32 30 0d 08 f2 14 6d |6,r6,asr#20....m| 00000e30 6f 76 20 72 37 2c 72 37 2c 61 73 72 23 32 30 0d |ov r7,r7,asr#20.| 00000e40 08 fc 14 6d 6f 76 20 72 38 2c 72 38 2c 61 73 72 |...mov r8,r8,asr| 00000e50 23 32 30 0d 09 06 14 6d 6f 76 20 72 39 2c 72 39 |#20....mov r9,r9| 00000e60 2c 61 73 72 23 32 30 0d 09 10 16 6d 6f 76 20 72 |,asr#20....mov r| 00000e70 31 30 2c 72 31 30 2c 61 73 72 23 32 30 0d 09 1a |10,r10,asr#20...| 00000e80 16 6d 6f 76 20 72 31 31 2c 72 31 31 2c 61 73 72 |.mov r11,r11,asr| 00000e90 23 32 30 0d 09 24 16 6d 6f 76 20 72 31 32 2c 72 |#20..$.mov r12,r| 00000ea0 31 32 2c 61 73 72 23 32 30 0d 09 2e 16 6d 6f 76 |12,asr#20....mov| 00000eb0 20 72 31 33 2c 72 31 33 2c 61 73 72 23 32 30 0d | r13,r13,asr#20.| 00000ec0 09 38 0d 6c 64 72 20 72 34 2c 69 6e 0d 09 42 04 |.8.ldr r4,in..B.| 00000ed0 0d 09 4c 0a 2e 76 6c 6f 6f 70 0d 09 56 12 6c 64 |..L..vloop..V.ld| 00000ee0 72 20 72 32 2c 5b 72 33 5d 2c 23 34 0d 09 60 28 |r r2,[r3],#4..`(| 00000ef0 6d 75 6c 20 72 30 2c 72 36 2c 72 32 20 20 20 20 |mul r0,r6,r2 | 00000f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000f10 3b 20 61 78 0d 09 6a 28 6d 75 6c 20 72 31 2c 72 |; ax..j(mul r1,r| 00000f20 37 2c 72 32 20 20 20 20 20 20 20 20 20 20 20 20 |7,r2 | 00000f30 20 20 20 20 20 20 20 20 3b 20 61 79 0d 09 74 04 | ; ay..t.| 00000f40 0d 09 7e 12 6c 64 72 20 72 32 2c 5b 72 33 5d 2c |..~.ldr r2,[r3],| 00000f50 23 34 0d 09 88 28 6d 6c 61 20 72 30 2c 72 38 2c |#4...(mla r0,r8,| 00000f60 72 32 2c 72 30 20 20 20 20 20 20 20 20 20 20 20 |r2,r0 | 00000f70 20 20 20 20 20 20 3b 20 62 78 0d 09 92 28 6d 6c | ; bx...(ml| 00000f80 61 20 72 31 2c 72 39 2c 72 32 2c 72 31 20 20 20 |a r1,r9,r2,r1 | 00000f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 | ; | 00000fa0 62 79 0d 09 9c 04 0d 09 a6 12 6c 64 72 20 72 32 |by........ldr r2| 00000fb0 2c 5b 72 33 5d 2c 23 34 0d 09 b0 28 6d 6c 61 20 |,[r3],#4...(mla | 00000fc0 72 30 2c 72 31 30 2c 72 32 2c 72 30 20 20 20 20 |r0,r10,r2,r0 | 00000fd0 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 63 78 | ; cx| 00000fe0 0d 09 ba 28 6d 6c 61 20 72 31 2c 72 31 31 2c 72 |...(mla r1,r11,r| 00000ff0 32 2c 72 31 20 20 20 20 20 20 20 20 20 20 20 20 |2,r1 | 00001000 20 20 20 20 3b 20 63 79 0d 09 c4 04 0d 09 ce 12 | ; cy........| 00001010 6c 64 72 20 72 32 2c 5b 72 33 5d 2c 23 34 0d 09 |ldr r2,[r3],#4..| 00001020 d8 28 6d 6c 61 20 72 30 2c 72 31 32 2c 72 32 2c |.(mla r0,r12,r2,| 00001030 72 30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |r0 | 00001040 20 20 3b 20 64 78 0d 09 e2 28 6d 6c 61 20 72 31 | ; dx...(mla r1| 00001050 2c 72 31 33 2c 72 32 2c 72 31 20 20 20 20 20 20 |,r13,r2,r1 | 00001060 20 20 20 20 20 20 20 20 20 20 3b 20 64 79 0d 09 | ; dy..| 00001070 ec 04 0d 09 f6 14 6d 6f 76 20 72 30 2c 72 30 2c |......mov r0,r0,| 00001080 61 73 72 23 32 30 0d 0a 00 14 6d 6f 76 20 72 31 |asr#20....mov r1| 00001090 2c 72 31 2c 61 73 72 23 32 30 0d 0a 0a 15 73 74 |,r1,asr#20....st| 000010a0 6d 69 61 20 72 34 21 2c 7b 72 30 2c 72 31 7d 0d |mia r4!,{r0,r1}.| 000010b0 0a 14 04 0d 0a 1e 11 73 75 62 73 20 72 35 2c 72 |.......subs r5,r| 000010c0 35 2c 23 31 0d 0a 28 0d 62 67 74 20 76 6c 6f 6f |5,#1..(.bgt vloo| 000010d0 70 0d 0a 32 04 0d 0a 3c 12 6c 64 72 20 72 35 2c |p..2...<.ldr r5,| 000010e0 75 5f 63 6f 75 6e 74 0d 0a 46 11 73 75 62 73 20 |u_count..F.subs | 000010f0 72 35 2c 72 35 2c 23 31 0d 0a 50 14 73 74 72 67 |r5,r5,#1..P.strg| 00001100 74 20 72 35 2c 75 5f 63 6f 75 6e 74 0d 0a 5a 12 |t r5,u_count..Z.| 00001110 6c 64 72 67 74 20 72 35 2c 75 5f 70 74 72 0d 0a |ldrgt r5,u_ptr..| 00001120 64 0f 73 74 72 67 74 20 72 34 2c 69 6e 0d 0a 6e |d.strgt r4,in..n| 00001130 0d 62 67 74 20 75 6c 6f 6f 70 0d 0a 78 04 0d 0a |.bgt uloop..x...| 00001140 82 15 6c 64 72 20 72 30 2c 69 6e 64 65 78 5f 62 |..ldr r0,index_b| 00001150 61 73 65 0d 0a 8c 17 6c 64 72 20 72 39 2c 69 6e |ase....ldr r9,in| 00001160 64 65 78 5f 6e 6f 72 6d 61 6c 0d 0a 96 1c 6c 64 |dex_normal....ld| 00001170 72 20 72 31 32 2c 62 69 67 5f 6e 6f 72 6d 61 6c |r r12,big_normal| 00001180 5f 74 61 62 6c 65 0d 0a a0 0f 6c 64 72 20 72 31 |_table....ldr r1| 00001190 33 2c 6c 5f 78 0d 0a aa 0f 6c 64 72 20 72 31 34 |3,l_x....ldr r14| 000011a0 2c 6c 5f 79 0d 0a b4 0d 6d 6f 76 20 72 31 2c 23 |,l_y....mov r1,#| 000011b0 30 0d 0a be 0b 2e 75 5f 6c 6f 6f 70 0d 0a c8 23 |0.....u_loop...#| 000011c0 61 64 64 20 72 32 2c 72 30 2c 72 31 2c 6c 73 6c |add r2,r0,r1,lsl| 000011d0 23 6c 6f 67 32 5f 71 5f 73 74 65 70 25 2b 33 0d |#log2_q_step%+3.| 000011e0 0a d2 24 61 64 64 20 72 31 30 2c 72 39 2c 72 31 |..$add r10,r9,r1| 000011f0 2c 6c 73 6c 23 6c 6f 67 32 5f 71 5f 73 74 65 70 |,lsl#log2_q_step| 00001200 25 2b 32 0d 0a dc 10 61 64 64 20 72 33 2c 72 32 |%+2....add r3,r2| 00001210 2c 23 34 0d 0a e6 0d 6d 6f 76 20 72 34 2c 23 30 |,#4....mov r4,#0| 00001220 0d 0a f0 18 6c 64 72 20 72 35 2c 5b 72 32 2c 72 |....ldr r5,[r2,r| 00001230 34 2c 6c 73 6c 23 33 5d 0d 0a fa 18 6c 64 72 20 |4,lsl#3]....ldr | 00001240 72 36 2c 5b 72 33 2c 72 34 2c 6c 73 6c 23 33 5d |r6,[r3,r4,lsl#3]| 00001250 0d 0b 04 0d 6d 6f 76 20 72 34 2c 23 31 0d 0b 0e |....mov r4,#1...| 00001260 0b 2e 76 5f 6c 6f 6f 70 0d 0b 18 2f 6c 64 72 20 |..v_loop.../ldr | 00001270 72 37 2c 5b 72 32 2c 72 34 2c 6c 73 6c 23 33 5d |r7,[r2,r4,lsl#3]| 00001280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001290 20 20 20 20 3b 20 78 0d 0b 22 2f 6c 64 72 20 72 | ; x.."/ldr r| 000012a0 38 2c 5b 72 33 2c 72 34 2c 6c 73 6c 23 33 5d 20 |8,[r3,r4,lsl#3] | 000012b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000012c0 20 20 20 3b 20 79 0d 0b 2c 11 73 75 62 73 20 72 | ; y..,.subs r| 000012d0 35 2c 72 37 2c 72 35 0d 0b 36 12 72 73 62 6c 74 |5,r7,r5..6.rsblt| 000012e0 20 72 35 2c 72 35 2c 23 30 0d 0b 40 11 3b 6d 6f | r5,r5,#0..@.;mo| 000012f0 76 6c 74 20 72 31 31 2c 23 31 0d 0b 4a 11 73 75 |vlt r11,#1..J.su| 00001300 62 73 20 72 36 2c 72 38 2c 72 36 0d 0b 54 12 72 |bs r6,r8,r6..T.r| 00001310 73 62 6c 74 20 72 36 2c 72 36 2c 23 30 0d 0b 5e |sblt r6,r6,#0..^| 00001320 15 3b 6f 72 72 6c 74 20 72 31 31 2c 72 31 31 2c |.;orrlt r11,r11,| 00001330 23 32 0d 0b 68 07 2e 6c 70 0d 0b 72 0f 63 6d 70 |#2..h..lp..r.cmp| 00001340 20 72 35 2c 23 31 32 38 0d 0b 7c 11 63 6d 70 6c | r5,#128..|.cmpl| 00001350 74 20 72 36 2c 23 31 32 38 0d 0b 86 15 6d 6f 76 |t r6,#128....mov| 00001360 67 65 20 72 35 2c 72 35 2c 6c 73 72 23 31 0d 0b |ge r5,r5,lsr#1..| 00001370 90 15 6d 6f 76 67 65 20 72 36 2c 72 36 2c 6c 73 |..movge r6,r6,ls| 00001380 72 23 31 0d 0b 9a 0a 62 67 65 20 6c 70 0d 0b a4 |r#1....bge lp...| 00001390 04 0d 0b ae 16 61 64 64 20 72 35 2c 72 35 2c 72 |.....add r5,r5,r| 000013a0 36 2c 6c 73 6c 23 37 0d 0b b8 17 61 64 64 20 72 |6,lsl#7....add r| 000013b0 35 2c 72 31 32 2c 72 35 2c 6c 73 6c 23 33 0d 0b |5,r12,r5,lsl#3..| 000013c0 c2 44 6c 64 6d 69 61 20 72 35 2c 7b 72 35 2c 72 |.Dldmia r5,{r5,r| 000013d0 36 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |6} | 000013e0 20 20 20 20 20 20 20 20 20 20 3b 20 67 65 74 20 | ; get | 000013f0 6e 6f 72 6d 61 6c 69 73 65 64 20 76 65 63 74 6f |normalised vecto| 00001400 72 73 0d 0b cc 04 0d 0b d6 11 6d 75 6c 20 72 35 |rs........mul r5| 00001410 2c 72 31 33 2c 72 35 0d 0b e0 3f 6d 6c 61 20 72 |,r13,r5...?mla r| 00001420 35 2c 72 31 34 2c 72 36 2c 72 35 20 20 20 20 20 |5,r14,r6,r5 | 00001430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001440 20 20 20 3b 20 6e 78 2a 6c 78 2b 6e 79 2a 6c 79 | ; nx*lx+ny*ly| 00001450 20 3c 3c 20 32 35 0d 0b ea 3a 6d 6f 76 73 20 72 | << 25...:movs r| 00001460 35 2c 72 35 2c 61 73 72 23 31 34 20 20 20 20 20 |5,r5,asr#14 | 00001470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001480 20 20 3b 20 6e 6f 72 6d 61 6c 20 2a 20 73 68 64 | ; normal * shd| 00001490 0d 0b f4 18 73 75 62 73 20 72 35 2c 72 35 2c 23 |....subs r5,r5,#| 000014a0 31 30 32 34 2b 33 38 34 0d 0b fe 0f 6d 6f 76 6c |1024+384....movl| 000014b0 74 20 72 35 2c 23 30 0d 0c 08 0f 63 6d 70 20 72 |t r5,#0....cmp r| 000014c0 35 2c 23 32 32 33 0d 0c 12 11 6d 6f 76 67 74 20 |5,#223....movgt | 000014d0 72 35 2c 23 32 32 33 0d 0c 1c 13 73 74 72 20 72 |r5,#223....str r| 000014e0 35 2c 5b 72 31 30 5d 2c 23 34 0d 0c 26 04 0d 0c |5,[r10],#4..&...| 000014f0 30 0d 6d 6f 76 20 72 35 2c 72 37 0d 0c 3a 0d 6d |0.mov r5,r7..:.m| 00001500 6f 76 20 72 36 2c 72 38 0d 0c 44 10 61 64 64 20 |ov r6,r8..D.add | 00001510 72 34 2c 72 34 2c 23 31 0d 0c 4e 13 63 6d 70 20 |r4,r4,#1..N.cmp | 00001520 72 34 2c 23 71 5f 73 74 65 70 25 0d 0c 58 0e 62 |r4,#q_step%..X.b| 00001530 6c 65 20 76 5f 6c 6f 6f 70 0d 0c 62 10 61 64 64 |le v_loop..b.add| 00001540 20 72 31 2c 72 31 2c 23 31 0d 0c 6c 13 63 6d 70 | r1,r1,#1..l.cmp| 00001550 20 72 31 2c 23 71 5f 73 74 65 70 25 0d 0c 76 0e | r1,#q_step%..v.| 00001560 62 6c 65 20 75 5f 6c 6f 6f 70 0d 0c 80 04 0d 0c |ble u_loop......| 00001570 8a 12 6c 64 72 20 72 31 33 2c 73 74 61 63 6b 70 |..ldr r13,stackp| 00001580 0d 0c 94 04 0d 0c 9e 17 6c 64 72 20 72 33 2c 69 |........ldr r3,i| 00001590 6e 64 65 78 5f 6e 6f 72 6d 61 6c 0d 0c a8 15 6c |ndex_normal....l| 000015a0 64 72 20 72 36 2c 69 6e 64 65 78 5f 62 61 73 65 |dr r6,index_base| 000015b0 0d 0c b2 27 6d 6f 76 20 72 30 2c 23 30 20 20 20 |...'mov r0,#0 | 000015c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000015d0 20 20 20 20 3b 20 78 0d 0c bc 0a 2e 78 6c 6f 6f | ; x.....xloo| 000015e0 70 0d 0c c6 27 6d 6f 76 20 72 31 2c 23 30 20 20 |p...'mov r1,#0 | 000015f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00001600 20 20 20 20 20 3b 20 79 0d 0c d0 0a 2e 79 6c 6f | ; y.....ylo| 00001610 6f 70 0d 0c da 3d 61 64 64 20 72 32 2c 72 30 2c |op...=add r2,r0,| 00001620 72 31 2c 6c 73 6c 23 34 20 20 20 20 20 20 20 20 |r1,lsl#4 | 00001630 20 20 20 20 20 20 3b 20 78 2b 79 2a 71 5f 73 74 | ; x+y*q_st| 00001640 65 70 25 2c 20 71 5f 73 74 65 70 25 3d 31 36 0d |ep%, q_step%=16.| 00001650 0c e4 34 61 64 64 20 72 34 2c 72 33 2c 72 32 2c |..4add r4,r3,r2,| 00001660 6c 73 6c 23 32 20 20 20 20 20 20 20 20 20 20 20 |lsl#2 | 00001670 20 20 20 3b 20 6e 6f 72 6d 61 6c 2b 6f 66 73 25 | ; normal+ofs%| 00001680 3c 3c 32 0d 0c ee 04 0d 0c f8 28 6c 64 72 20 72 |<<2.......(ldr r| 00001690 35 2c 5b 72 34 2c 23 34 5d 20 20 20 20 20 20 20 |5,[r4,#4] | 000016a0 20 20 20 20 20 20 20 20 20 20 20 3b 20 6c 31 0d | ; l1.| 000016b0 0d 02 0d 73 74 72 20 72 35 2c 61 63 0d 0d 0c 04 |...str r5,ac....| 000016c0 0d 0d 16 28 6c 64 72 20 72 35 2c 5b 72 34 5d 20 |...(ldr r5,[r4] | 000016d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000016e0 20 20 20 20 3b 20 6c 32 0d 0d 20 0d 73 74 72 20 | ; l2.. .str | 000016f0 72 35 2c 62 63 0d 0d 2a 04 0d 0d 34 28 6c 64 72 |r5,bc..*...4(ldr| 00001700 20 72 35 2c 5b 72 34 2c 23 34 2b 31 36 2a 34 5d | r5,[r4,#4+16*4]| 00001710 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 6c | ; l| 00001720 33 0d 0d 3e 0d 73 74 72 20 72 35 2c 63 63 0d 0d |3..>.str r5,cc..| 00001730 48 04 0d 0d 52 34 61 64 64 20 72 37 2c 72 36 2c |H...R4add r7,r6,| 00001740 72 32 2c 6c 73 6c 23 33 20 20 20 20 20 20 20 20 |r2,lsl#3 | 00001750 20 20 20 20 20 20 3b 20 6f 75 74 70 75 74 2b 6f | ; output+o| 00001760 66 73 25 3c 3c 33 0d 0d 5c 04 0d 0d 66 31 6c 64 |fs%<<3..\...f1ld| 00001770 6d 69 61 20 72 37 2c 7b 72 38 2c 72 39 2c 72 31 |mia r7,{r8,r9,r1| 00001780 30 2c 72 31 31 7d 20 20 20 20 20 20 20 20 3b 20 |0,r11} ; | 00001790 62 78 2c 62 79 2c 61 78 2c 61 79 0d 0d 70 0d 73 |bx,by,ax,ay..p.s| 000017a0 74 72 20 72 38 2c 62 78 0d 0d 7a 0d 73 74 72 20 |tr r8,bx..z.str | 000017b0 72 39 2c 62 79 0d 0d 84 0e 73 74 72 20 72 31 30 |r9,by....str r10| 000017c0 2c 61 78 0d 0d 8e 0e 73 74 72 20 72 31 31 2c 61 |,ax....str r11,a| 000017d0 79 0d 0d 98 04 0d 0d a2 17 6c 64 72 20 72 38 2c |y........ldr r8,| 000017e0 5b 72 37 2c 23 38 2b 31 36 2a 38 5d 0d 0d ac 0d |[r7,#8+16*8]....| 000017f0 73 74 72 20 72 38 2c 63 78 0d 0d b6 04 0d 0d c0 |str r8,cx.......| 00001800 18 6c 64 72 20 72 38 2c 5b 72 37 2c 23 31 32 2b |.ldr r8,[r7,#12+| 00001810 31 36 2a 38 5d 0d 0d ca 0d 73 74 72 20 72 38 2c |16*8]....str r8,| 00001820 63 79 0d 0d d4 04 0d 0d de 39 6d 6f 76 20 72 38 |cy.......9mov r8| 00001830 2c 72 30 2c 6c 73 6c 23 34 20 20 20 20 20 20 20 |,r0,lsl#4 | 00001840 20 20 20 20 20 20 20 20 20 20 3b 20 78 2a 73 73 | ; x*ss| 00001850 74 65 70 25 2c 20 73 73 74 65 70 25 3d 31 36 0d |tep%, sstep%=16.| 00001860 0d e8 0d 73 74 72 20 72 38 2c 62 76 0d 0d f2 11 |...str r8,bv....| 00001870 61 64 64 20 72 38 2c 72 38 2c 23 31 36 0d 0d fc |add r8,r8,#16...| 00001880 0d 73 74 72 20 72 38 2c 61 76 0d 0e 06 0d 73 74 |.str r8,av....st| 00001890 72 20 72 38 2c 63 76 0d 0e 10 04 0d 0e 1a 2e 6d |r r8,cv........m| 000018a0 6f 76 20 72 38 2c 72 31 2c 6c 73 6c 23 34 20 20 |ov r8,r1,lsl#4 | 000018b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b | ;| 000018c0 20 79 2a 73 73 74 65 70 25 0d 0e 24 0d 73 74 72 | y*sstep%..$.str| 000018d0 20 72 38 2c 61 75 0d 0e 2e 0d 73 74 72 20 72 38 | r8,au....str r8| 000018e0 2c 62 75 0d 0e 38 11 61 64 64 20 72 38 2c 72 38 |,bu..8.add r8,r8| 000018f0 2c 23 31 36 0d 0e 42 0d 73 74 72 20 72 38 2c 63 |,#16..B.str r8,c| 00001900 75 0d 0e 4c 04 0d 0e 56 22 73 74 6d 66 64 20 72 |u..L...V"stmfd r| 00001910 31 33 21 2c 7b 72 30 2c 72 31 2c 72 33 2c 72 34 |13!,{r0,r1,r3,r4| 00001920 2c 72 36 2d 72 38 7d 0d 0e 60 17 62 6c 20 74 65 |,r6-r8}..`.bl te| 00001930 78 74 75 72 65 5f 74 72 69 61 6e 67 6c 65 0d 0e |xture_triangle..| 00001940 6a 22 6c 64 6d 66 64 20 72 31 33 21 2c 7b 72 30 |j"ldmfd r13!,{r0| 00001950 2c 72 31 2c 72 33 2c 72 34 2c 72 36 2d 72 38 7d |,r1,r3,r4,r6-r8}| 00001960 0d 0e 74 04 0d 0e 7e 0d 73 74 72 20 72 38 2c 61 |..t...~.str r8,a| 00001970 75 0d 0e 88 28 6c 64 72 20 72 38 2c 5b 72 34 2c |u...(ldr r8,[r4,| 00001980 23 31 36 2a 34 5d 20 20 20 20 20 20 20 20 20 20 |#16*4] | 00001990 20 20 20 20 20 3b 20 6c 34 0d 0e 92 0d 73 74 72 | ; l4....str| 000019a0 20 72 38 2c 61 63 0d 0e 9c 13 6d 6f 76 20 72 38 | r8,ac....mov r8| 000019b0 2c 72 30 2c 6c 73 6c 23 34 0d 0e a6 0d 73 74 72 |,r0,lsl#4....str| 000019c0 20 72 38 2c 61 76 0d 0e b0 04 0d 0e ba 15 6c 64 | r8,av........ld| 000019d0 72 20 72 38 2c 5b 72 37 2c 23 31 36 2a 38 5d 0d |r r8,[r7,#16*8].| 000019e0 0e c4 0d 73 74 72 20 72 38 2c 61 78 0d 0e ce 17 |...str r8,ax....| 000019f0 6c 64 72 20 72 38 2c 5b 72 37 2c 23 34 2b 31 36 |ldr r8,[r7,#4+16| 00001a00 2a 38 5d 0d 0e d8 0d 73 74 72 20 72 38 2c 61 79 |*8]....str r8,ay| 00001a10 0d 0e e2 04 0d 0e ec 1c 73 74 6d 66 64 20 72 31 |........stmfd r1| 00001a20 33 21 2c 7b 72 30 2c 72 31 2c 72 33 2c 72 36 7d |3!,{r0,r1,r3,r6}| 00001a30 0d 0e f6 04 0d 0f 00 0d 61 64 72 20 72 30 2c 62 |........adr r0,b| 00001a40 79 0d 0f 0a 1d 6c 64 6d 69 61 20 72 30 2c 7b 72 |y....ldmia r0,{r| 00001a50 31 2c 72 32 2c 72 33 2c 72 34 2c 72 35 7d 0d 0f |1,r2,r3,r4,r5}..| 00001a60 14 04 0d 0f 1e 0d 61 64 72 20 72 36 2c 63 79 0d |......adr r6,cy.| 00001a70 0f 28 1f 6c 64 6d 69 61 20 72 36 2c 7b 72 37 2c |.(.ldmia r6,{r7,| 00001a80 72 38 2c 72 39 2c 72 31 30 2c 72 31 31 7d 0d 0f |r8,r9,r10,r11}..| 00001a90 32 04 0d 0f 3c 14 73 74 6d 69 61 20 72 36 2c 7b |2...<.stmia r6,{| 00001aa0 72 31 2d 72 35 7d 0d 0f 46 15 73 74 6d 69 61 20 |r1-r5}..F.stmia | 00001ab0 72 30 2c 7b 72 37 2d 72 31 31 7d 0d 0f 50 04 0d |r0,{r7-r11}..P..| 00001ac0 0f 5a 17 62 6c 20 74 65 78 74 75 72 65 5f 74 72 |.Z.bl texture_tr| 00001ad0 69 61 6e 67 6c 65 0d 0f 64 1c 6c 64 6d 66 64 20 |iangle..d.ldmfd | 00001ae0 72 31 33 21 2c 7b 72 30 2c 72 31 2c 72 33 2c 72 |r13!,{r0,r1,r3,r| 00001af0 36 7d 0d 0f 6e 04 0d 0f 78 10 61 64 64 20 72 31 |6}..n...x.add r1| 00001b00 2c 72 31 2c 23 31 0d 0f 82 0e 63 6d 70 20 72 31 |,r1,#1....cmp r1| 00001b10 2c 23 31 34 0d 0f 8c 0d 62 6c 65 20 79 6c 6f 6f |,#14....ble yloo| 00001b20 70 0d 0f 96 04 0d 0f a0 10 61 64 64 20 72 30 2c |p........add r0,| 00001b30 72 30 2c 23 31 0d 0f aa 0e 63 6d 70 20 72 30 2c |r0,#1....cmp r0,| 00001b40 23 31 34 0d 0f b4 0d 62 6c 65 20 78 6c 6f 6f 70 |#14....ble xloop| 00001b50 0d 0f be 04 0d 0f c8 14 6c 64 6d 66 64 20 72 31 |........ldmfd r1| 00001b60 33 21 2c 7b 72 31 35 7d 0d 0f d2 04 0d 0f dc 0c |3!,{r15}........| 00001b70 2e 75 5f 63 6f 75 6e 74 0d 0f e6 09 64 63 64 20 |.u_count....dcd | 00001b80 30 0d 0f f0 04 0d 0f fa 0a 2e 75 5f 70 74 72 0d |0.........u_ptr.| 00001b90 10 04 09 64 63 64 20 30 0d 10 0e 04 0d 10 18 08 |...dcd 0........| 00001ba0 2e 6c 5f 78 0d 10 22 0f 64 63 64 20 6c 78 2a 31 |.l_x..".dcd lx*1| 00001bb0 30 32 34 0d 10 2c 08 2e 6c 5f 79 0d 10 36 0f 64 |024..,..l_y..6.d| 00001bc0 63 64 20 6c 79 2a 31 30 32 34 0d 10 40 04 0d 10 |cd ly*1024..@...| 00001bd0 4a 07 2e 69 6e 0d 10 54 09 64 63 64 20 30 0d 10 |J..in..T.dcd 0..| 00001be0 5e 04 0d 10 68 0b 2e 73 74 61 63 6b 70 0d 10 72 |^...h..stackp..r| 00001bf0 09 64 63 64 20 30 0d 10 7c 04 0d 10 86 0c 2e 70 |.dcd 0..|......p| 00001c00 5f 73 74 61 72 74 0d 10 90 10 64 63 64 20 70 5f |_start....dcd p_| 00001c10 74 61 62 6c 65 25 0d 10 9a 04 0d 10 a4 0f 2e 69 |table%.........i| 00001c20 6e 64 65 78 5f 62 61 73 65 0d 10 ae 0f 64 63 64 |ndex_base....dcd| 00001c30 20 6f 75 74 70 75 74 25 0d 10 b8 04 0d 10 c2 11 | output%........| 00001c40 2e 69 6e 64 65 78 5f 6e 6f 72 6d 61 6c 0d 10 cc |.index_normal...| 00001c50 0f 64 63 64 20 6e 6f 72 6d 61 6c 25 0d 10 d6 04 |.dcd normal%....| 00001c60 0d 10 e0 0c 2e 71 5f 73 74 61 72 74 0d 10 ea 05 |.....q_start....| 00001c70 5d 0d 10 f4 14 50 25 2b 3d 38 31 39 32 2f 71 5f |]....P%+=8192/q_| 00001c80 73 74 65 70 25 0d 10 fe 0e 5b 4f 50 54 20 70 61 |step%....[OPT pa| 00001c90 73 73 25 0d 11 08 0e 2e 64 69 76 5f 74 61 62 6c |ss%.....div_tabl| 00001ca0 65 0d 11 12 12 64 63 64 20 64 69 76 5f 74 61 62 |e....dcd div_tab| 00001cb0 6c 65 25 0d 11 1c 04 0d 11 26 04 0d 11 30 0b 2e |le%......&...0..| 00001cc0 73 74 61 63 6b 70 0d 11 3a 09 64 63 64 20 30 0d |stackp..:.dcd 0.| 00001cd0 11 44 09 2e 6c 69 6e 6b 0d 11 4e 09 64 63 64 20 |.D..link..N.dcd | 00001ce0 30 0d 11 58 0e 2e 64 69 76 5f 74 61 62 6c 65 0d |0..X..div_table.| 00001cf0 11 62 12 64 63 64 20 64 69 76 5f 74 61 62 6c 65 |.b.dcd div_table| 00001d00 25 0d 11 6c 0d 2e 63 6f 6c 74 61 62 6c 65 0d 11 |%..l..coltable..| 00001d10 76 0f 64 63 64 20 63 6f 6c 74 61 62 25 0d 11 80 |v.dcd coltab%...| 00001d20 0c 2e 72 5f 69 6e 64 65 78 0d 11 8a 09 64 63 64 |..r_index....dcd| 00001d30 20 30 0d 11 94 0c 2e 6c 5f 69 6e 64 65 78 0d 11 | 0.....l_index..| 00001d40 9e 09 64 63 64 20 30 0d 11 a8 04 0d 11 b2 0a 2e |..dcd 0.........| 00001d50 79 5f 65 6e 64 0d 11 bc 09 64 63 64 20 30 0d 11 |y_end....dcd 0..| 00001d60 c6 04 0d 11 d0 0b 2e 73 70 72 69 74 65 0d 11 da |.......sprite...| 00001d70 12 64 63 64 20 73 70 72 69 74 65 25 2b 35 36 0d |.dcd sprite%+56.| 00001d80 11 e4 0e 2e 73 63 72 65 65 6e 61 64 72 0d 11 ee |....screenadr...| 00001d90 15 64 63 64 20 a4 73 63 72 65 65 6e 61 64 72 28 |.dcd .screenadr(| 00001da0 32 29 0d 11 f8 15 64 63 64 20 a4 73 63 72 65 65 |2)....dcd .scree| 00001db0 6e 61 64 72 28 31 29 0d 12 02 04 0d 12 0c 17 2e |nadr(1).........| 00001dc0 61 79 3a 64 63 64 20 30 3a 2e 61 78 3a 64 63 64 |ay:dcd 0:.ax:dcd| 00001dd0 20 30 0d 12 16 0d 2e 61 63 3a 64 63 64 20 30 0d | 0.....ac:dcd 0.| 00001de0 12 20 17 2e 61 75 3a 64 63 64 20 30 3a 2e 61 76 |. ..au:dcd 0:.av| 00001df0 3a 64 63 64 20 30 0d 12 2a 15 64 63 64 20 30 3a |:dcd 0..*.dcd 0:| 00001e00 64 63 64 20 30 3a 64 63 64 20 30 0d 12 34 04 0d |dcd 0:dcd 0..4..| 00001e10 12 3e 17 2e 62 79 3a 64 63 64 20 30 3a 2e 62 78 |.>..by:dcd 0:.bx| 00001e20 3a 64 63 64 20 30 0d 12 48 0d 2e 62 63 3a 64 63 |:dcd 0..H..bc:dc| 00001e30 64 20 30 0d 12 52 17 2e 62 75 3a 64 63 64 20 30 |d 0..R..bu:dcd 0| 00001e40 3a 2e 62 76 3a 64 63 64 20 30 0d 12 5c 15 64 63 |:.bv:dcd 0..\.dc| 00001e50 64 20 30 3a 64 63 64 20 30 3a 64 63 64 20 30 0d |d 0:dcd 0:dcd 0.| 00001e60 12 66 04 0d 12 70 17 2e 63 79 3a 64 63 64 20 30 |.f...p..cy:dcd 0| 00001e70 3a 2e 63 78 3a 64 63 64 20 30 0d 12 7a 0d 2e 63 |:.cx:dcd 0..z..c| 00001e80 63 3a 64 63 64 20 30 0d 12 84 17 2e 63 75 3a 64 |c:dcd 0.....cu:d| 00001e90 63 64 20 30 3a 2e 63 76 3a 64 63 64 20 30 0d 12 |cd 0:.cv:dcd 0..| 00001ea0 8e 15 64 63 64 20 30 3a 64 63 64 20 30 3a 64 63 |..dcd 0:dcd 0:dc| 00001eb0 64 20 30 0d 12 98 04 0d 12 a2 15 2e 74 65 78 74 |d 0.........text| 00001ec0 75 72 65 5f 74 72 69 61 6e 67 6c 65 0d 12 ac 0d |ure_triangle....| 00001ed0 61 64 72 20 72 30 2c 61 79 0d 12 b6 13 6c 64 72 |adr r0,ay....ldr| 00001ee0 20 72 31 30 2c 5b 72 30 2c 23 30 5d 0d 12 c0 14 | r10,[r0,#0]....| 00001ef0 6c 64 72 20 72 31 31 2c 5b 72 30 2c 23 33 32 5d |ldr r11,[r0,#32]| 00001f00 0d 12 ca 0f 63 6d 70 20 72 31 31 2c 72 31 30 0d |....cmp r11,r10.| 00001f10 12 d4 10 6d 6f 76 6c 74 20 72 31 2c 72 31 31 0d |...movlt r1,r11.| 00001f20 12 de 10 6d 6f 76 67 65 20 72 31 2c 72 31 30 0d |...movge r1,r10.| 00001f30 12 e8 0f 6d 6f 76 6c 74 20 72 32 2c 23 31 0d 12 |...movlt r2,#1..| 00001f40 f2 0f 6d 6f 76 67 65 20 72 32 2c 23 30 0d 12 fc |..movge r2,#0...| 00001f50 14 6c 64 72 20 72 31 32 2c 5b 72 30 2c 23 36 34 |.ldr r12,[r0,#64| 00001f60 5d 0d 13 06 0e 63 6d 70 20 72 31 32 2c 72 31 0d |]....cmp r12,r1.| 00001f70 13 10 10 6d 6f 76 6c 74 20 72 31 2c 72 31 32 0d |...movlt r1,r12.| 00001f80 13 1a 0f 6d 6f 76 6c 74 20 72 32 2c 23 32 0d 13 |...movlt r2,#2..| 00001f90 24 0f 63 6d 70 20 72 31 2c 23 35 31 32 0d 13 2e |$.cmp r1,#512...| 00001fa0 10 6d 6f 76 67 65 20 70 63 2c 72 31 34 0d 13 38 |.movge pc,r14..8| 00001fb0 0e 63 6d 70 20 72 31 30 2c 23 30 0d 13 42 10 63 |.cmp r10,#0..B.c| 00001fc0 6d 70 6c 74 20 72 31 31 2c 23 30 0d 13 4c 10 63 |mplt r11,#0..L.c| 00001fd0 6d 70 6c 74 20 72 31 32 2c 23 30 0d 13 56 10 6d |mplt r12,#0..V.m| 00001fe0 6f 76 6c 74 20 70 63 2c 72 31 34 0d 13 60 04 0d |ovlt pc,r14..`..| 00001ff0 13 6a 12 73 74 72 20 72 31 33 2c 73 74 61 63 6b |.j.str r13,stack| 00002000 70 0d 13 74 04 0d 13 7e 11 73 75 62 73 20 72 33 |p..t...~.subs r3| 00002010 2c 72 32 2c 23 31 0d 13 88 0f 6d 6f 76 6c 74 20 |,r2,#1....movlt | 00002020 72 33 2c 23 32 0d 13 92 04 0d 13 9c 16 61 64 64 |r3,#2........add| 00002030 20 72 32 2c 72 30 2c 72 32 2c 6c 73 6c 23 35 0d | r2,r0,r2,lsl#5.| 00002040 13 a6 3d 6c 64 6d 69 62 20 72 32 2c 7b 72 35 2c |..=ldmib r2,{r5,| 00002050 72 36 2c 72 37 2c 72 38 7d 20 20 20 20 20 20 20 |r6,r7,r8} | 00002060 20 20 20 20 20 20 20 20 20 20 20 3b 20 78 5f 6b | ; x_k| 00002070 2c 63 5f 6b 2c 75 5f 6b 2c 76 5f 6b 0d 13 b0 16 |,c_k,u_k,v_k....| 00002080 61 64 64 20 72 34 2c 72 30 2c 72 33 2c 6c 73 6c |add r4,r0,r3,lsl| 00002090 23 35 0d 13 ba 12 73 74 72 20 72 34 2c 6c 5f 69 |#5....str r4,l_i| 000020a0 6e 64 65 78 0d 13 c4 11 73 75 62 73 20 72 33 2c |ndex....subs r3,| 000020b0 72 33 2c 23 31 0d 13 ce 0f 6d 6f 76 6c 74 20 72 |r3,#1....movlt r| 000020c0 33 2c 23 32 0d 13 d8 16 61 64 64 20 72 30 2c 72 |3,#2....add r0,r| 000020d0 30 2c 72 33 2c 6c 73 6c 23 35 0d 13 e2 12 73 74 |0,r3,lsl#5....st| 000020e0 72 20 72 30 2c 72 5f 69 6e 64 65 78 0d 13 ec 41 |r r0,r_index...A| 000020f0 6c 64 6d 69 61 20 72 34 2c 7b 72 39 2c 72 31 30 |ldmia r4,{r9,r10| 00002100 2c 72 31 31 2c 72 31 32 2c 72 31 33 7d 20 20 20 |,r11,r12,r13} | 00002110 20 20 20 20 20 20 20 20 3b 20 79 5f 6c 2c 78 5f | ; y_l,x_| 00002120 6c 2c 63 5f 6c 2c 75 5f 6c 2c 76 5f 6c 0d 13 f6 |l,c_l,u_l,v_l...| 00002130 04 0d 14 00 10 73 74 72 20 72 31 34 2c 6c 69 6e |.....str r14,lin| 00002140 6b 0d 14 0a 15 6c 64 72 20 72 31 34 2c 64 69 76 |k....ldr r14,div| 00002150 5f 74 61 62 6c 65 0d 14 14 31 73 75 62 73 20 72 |_table...1subs r| 00002160 32 2c 72 39 2c 72 31 20 20 20 20 20 20 20 20 20 |2,r9,r1 | 00002170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002180 20 20 3b 20 64 6c 79 0d 14 1e 37 6c 64 72 67 74 | ; dly...7ldrgt| 00002190 20 72 32 2c 5b 72 31 34 2c 72 32 2c 6c 73 6c 23 | r2,[r14,r2,lsl#| 000021a0 32 5d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |2] | 000021b0 20 20 20 3b 20 31 3c 3c 32 30 2f 64 6c 79 0d 14 | ; 1<<20/dly..| 000021c0 28 04 0d 14 32 16 6d 6f 76 67 74 20 72 33 2c 72 |(...2.movgt r3,r| 000021d0 35 2c 6c 73 6c 23 31 30 0d 14 3c 17 6d 6f 76 65 |5,lsl#10..<.move| 000021e0 71 20 72 33 2c 72 31 30 2c 6c 73 6c 23 31 30 0d |q r3,r10,lsl#10.| 000021f0 14 46 13 73 75 62 67 74 20 72 34 2c 72 31 30 2c |.F.subgt r4,r10,| 00002200 72 35 0d 14 50 35 6d 75 6c 20 72 34 2c 72 32 2c |r5..P5mul r4,r2,| 00002210 72 34 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |r4 | 00002220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 | ; | 00002230 64 6c 78 3c 3c 32 30 0d 14 5a 0e 73 74 72 20 72 |dlx<<20..Z.str r| 00002240 34 2c 64 6c 78 0d 14 64 04 0d 14 6e 17 6d 6f 76 |4,dlx..d...n.mov| 00002250 67 74 20 72 31 30 2c 72 36 2c 6c 73 6c 23 31 30 |gt r10,r6,lsl#10| 00002260 0d 14 78 18 6d 6f 76 65 71 20 72 31 30 2c 72 31 |..x.moveq r10,r1| 00002270 31 2c 6c 73 6c 23 31 30 0d 14 82 0e 73 74 72 20 |1,lsl#10....str | 00002280 72 31 30 2c 6c 63 0d 14 8c 13 73 75 62 67 74 20 |r10,lc....subgt | 00002290 72 34 2c 72 31 31 2c 72 36 0d 14 96 35 6d 75 6c |r4,r11,r6...5mul| 000022a0 20 72 34 2c 72 32 2c 72 34 20 20 20 20 20 20 20 | r4,r2,r4 | 000022b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000022c0 20 20 20 20 20 3b 20 64 6c 63 3c 3c 32 30 0d 14 | ; dlc<<20..| 000022d0 a0 0e 73 74 72 20 72 34 2c 64 6c 63 0d 14 aa 04 |..str r4,dlc....| 000022e0 0d 14 b4 17 6d 6f 76 67 74 20 72 31 30 2c 72 37 |....movgt r10,r7| 000022f0 2c 6c 73 6c 23 31 30 0d 14 be 18 6d 6f 76 65 71 |,lsl#10....moveq| 00002300 20 72 31 30 2c 72 31 32 2c 6c 73 6c 23 31 30 0d | r10,r12,lsl#10.| 00002310 14 c8 0e 73 74 72 20 72 31 30 2c 6c 75 0d 14 d2 |...str r10,lu...| 00002320 13 73 75 62 67 74 20 72 34 2c 72 31 32 2c 72 37 |.subgt r4,r12,r7| 00002330 0d 14 dc 35 6d 75 6c 20 72 34 2c 72 32 2c 72 34 |...5mul r4,r2,r4| 00002340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002350 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 64 6c | ; dl| 00002360 75 3c 3c 32 30 0d 14 e6 0e 73 74 72 20 72 34 2c |u<<20....str r4,| 00002370 64 6c 75 0d 14 f0 04 0d 14 fa 17 6d 6f 76 67 74 |dlu........movgt| 00002380 20 72 31 30 2c 72 38 2c 6c 73 6c 23 31 30 0d 15 | r10,r8,lsl#10..| 00002390 04 18 6d 6f 76 65 71 20 72 31 30 2c 72 31 33 2c |..moveq r10,r13,| 000023a0 6c 73 6c 23 31 30 0d 15 0e 0e 73 74 72 20 72 31 |lsl#10....str r1| 000023b0 30 2c 6c 76 0d 15 18 13 73 75 62 67 74 20 72 34 |0,lv....subgt r4| 000023c0 2c 72 31 33 2c 72 38 0d 15 22 35 6d 75 6c 20 72 |,r13,r8.."5mul r| 000023d0 34 2c 72 32 2c 72 34 20 20 20 20 20 20 20 20 20 |4,r2,r4 | 000023e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000023f0 20 20 20 3b 20 64 6c 76 3c 3c 32 30 0d 15 2c 0e | ; dlv<<20..,.| 00002400 73 74 72 20 72 34 2c 64 6c 76 0d 15 36 04 0d 15 |str r4,dlv..6...| 00002410 40 41 6c 64 6d 69 61 20 72 30 2c 7b 72 30 2c 72 |@Aldmia r0,{r0,r| 00002420 31 30 2c 72 31 31 2c 72 31 32 2c 72 31 33 7d 20 |10,r11,r12,r13} | 00002430 20 20 20 20 20 20 20 20 20 20 3b 20 79 5f 72 2c | ; y_r,| 00002440 78 5f 72 2c 63 5f 72 2c 75 5f 72 2c 76 5f 72 0d |x_r,c_r,u_r,v_r.| 00002450 15 4a 31 73 75 62 73 20 72 32 2c 72 30 2c 72 31 |.J1subs r2,r0,r1| 00002460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002470 20 20 20 20 20 20 20 20 20 20 20 3b 20 64 72 79 | ; dry| 00002480 0d 15 54 37 6c 64 72 67 74 20 72 32 2c 5b 72 31 |..T7ldrgt r2,[r1| 00002490 34 2c 72 32 2c 6c 73 6c 23 32 5d 20 20 20 20 20 |4,r2,lsl#2] | 000024a0 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 31 3c | ; 1<| 000024b0 3c 32 30 2f 64 72 79 0d 15 5e 04 0d 15 68 16 6d |<20/dry..^...h.m| 000024c0 6f 76 67 74 20 72 34 2c 72 35 2c 6c 73 6c 23 31 |ovgt r4,r5,lsl#1| 000024d0 30 0d 15 72 17 6d 6f 76 65 71 20 72 34 2c 72 31 |0..r.moveq r4,r1| 000024e0 30 2c 6c 73 6c 23 31 30 0d 15 7c 14 73 75 62 67 |0,lsl#10..|.subg| 000024f0 74 20 72 31 30 2c 72 31 30 2c 72 35 0d 15 86 35 |t r10,r10,r5...5| 00002500 6d 75 6c 20 72 31 30 2c 72 32 2c 72 31 30 20 20 |mul r10,r2,r10 | 00002510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002520 20 20 20 20 20 20 20 20 3b 20 64 72 78 3c 3c 32 | ; drx<<2| 00002530 30 0d 15 90 0f 73 74 72 20 72 31 30 2c 64 72 78 |0....str r10,drx| 00002540 0d 15 9a 04 0d 15 a4 17 6d 6f 76 67 74 20 72 31 |........movgt r1| 00002550 30 2c 72 36 2c 6c 73 6c 23 31 30 0d 15 ae 18 6d |0,r6,lsl#10....m| 00002560 6f 76 65 71 20 72 31 30 2c 72 31 31 2c 6c 73 6c |oveq r10,r11,lsl| 00002570 23 31 30 0d 15 b8 0e 73 74 72 20 72 31 30 2c 72 |#10....str r10,r| 00002580 63 0d 15 c2 14 73 75 62 67 74 20 72 31 30 2c 72 |c....subgt r10,r| 00002590 31 31 2c 72 36 0d 15 cc 35 6d 75 6c 20 72 31 30 |11,r6...5mul r10| 000025a0 2c 72 32 2c 72 31 30 20 20 20 20 20 20 20 20 20 |,r2,r10 | 000025b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000025c0 20 3b 20 64 72 63 3c 3c 32 30 0d 15 d6 0f 73 74 | ; drc<<20....st| 000025d0 72 20 72 31 30 2c 64 72 63 0d 15 e0 04 0d 15 ea |r r10,drc.......| 000025e0 17 6d 6f 76 67 74 20 72 31 30 2c 72 37 2c 6c 73 |.movgt r10,r7,ls| 000025f0 6c 23 31 30 0d 15 f4 18 6d 6f 76 65 71 20 72 31 |l#10....moveq r1| 00002600 30 2c 72 31 32 2c 6c 73 6c 23 31 30 0d 15 fe 0e |0,r12,lsl#10....| 00002610 73 74 72 20 72 31 30 2c 72 75 0d 16 08 14 73 75 |str r10,ru....su| 00002620 62 67 74 20 72 31 30 2c 72 31 32 2c 72 37 0d 16 |bgt r10,r12,r7..| 00002630 12 35 6d 75 6c 20 72 31 30 2c 72 32 2c 72 31 30 |.5mul r10,r2,r10| 00002640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002650 20 20 20 20 20 20 20 20 20 20 3b 20 64 72 75 3c | ; dru<| 00002660 3c 32 30 0d 16 1c 0f 73 74 72 20 72 31 30 2c 64 |<20....str r10,d| 00002670 72 75 0d 16 26 04 0d 16 30 17 6d 6f 76 67 74 20 |ru..&...0.movgt | 00002680 72 31 30 2c 72 38 2c 6c 73 6c 23 31 30 0d 16 3a |r10,r8,lsl#10..:| 00002690 18 6d 6f 76 65 71 20 72 31 30 2c 72 31 33 2c 6c |.moveq r10,r13,l| 000026a0 73 6c 23 31 30 0d 16 44 0e 73 74 72 20 72 31 30 |sl#10..D.str r10| 000026b0 2c 72 76 0d 16 4e 14 73 75 62 67 74 20 72 31 30 |,rv..N.subgt r10| 000026c0 2c 72 31 33 2c 72 38 0d 16 58 35 6d 75 6c 20 72 |,r13,r8..X5mul r| 000026d0 31 30 2c 72 32 2c 72 31 30 20 20 20 20 20 20 20 |10,r2,r10 | 000026e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000026f0 20 20 20 3b 20 64 72 76 3c 3c 32 30 0d 16 62 0f | ; drv<<20..b.| 00002700 73 74 72 20 72 31 30 2c 64 72 76 0d 16 6c 04 0d |str r10,drv..l..| 00002710 16 76 14 6c 64 72 20 72 32 2c 73 63 72 65 65 6e |.v.ldr r2,screen| 00002720 61 64 72 0d 16 80 16 61 64 64 20 72 32 2c 72 32 |adr....add r2,r2| 00002730 2c 72 31 2c 6c 73 6c 23 36 0d 16 8a 39 61 64 64 |,r1,lsl#6...9add| 00002740 20 72 32 2c 72 32 2c 72 31 2c 6c 73 6c 23 38 20 | r2,r2,r1,lsl#8 | 00002750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002760 20 20 20 20 20 3b 20 73 63 72 65 65 6e 20 6c 69 | ; screen li| 00002770 6e 65 0d 16 94 04 0d 16 9e 0e 4d 4f 56 20 52 31 |ne........MOV R1| 00002780 34 2c 52 31 0d 16 a8 12 6c 64 72 20 72 31 30 2c |4,R1....ldr r10,| 00002790 73 70 72 69 74 65 0d 16 b2 04 0d 16 bc 0d 63 6d |sprite........cm| 000027a0 70 20 72 39 2c 72 30 0d 16 c6 12 73 74 72 6c 74 |p r9,r0....strlt| 000027b0 20 72 39 2c 79 5f 65 6e 64 0d 16 d0 12 73 74 72 | r9,y_end....str| 000027c0 67 65 20 72 30 2c 79 5f 65 6e 64 0d 16 da 04 0d |ge r0,y_end.....| 000027d0 16 e4 10 62 67 74 20 6d 65 74 68 6f 64 5f 32 0d |...bgt method_2.| 000027e0 16 ee 10 62 65 71 20 6c 61 73 74 5f 62 69 74 0d |...beq last_bit.| 000027f0 16 f8 04 0d 17 02 3c 2e 6d 65 74 68 6f 64 5f 31 |......<.method_1| 00002800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b | ;| 00002820 20 6c 65 66 74 5f 79 3c 72 69 67 68 74 5f 79 0d | left_y<right_y.| 00002830 17 0c 04 0d 17 16 0a a4 79 6c 6f 6f 70 0d 17 20 |........yloop.. | 00002840 04 0d 17 2a 0e 3b 20 72 30 20 3d 20 79 5f 6c 0d |...*.; r0 = y_l.| 00002850 17 34 11 3b 20 72 32 20 3d 20 73 63 6c 69 6e 65 |.4.; r2 = scline| 00002860 0d 17 3e 0d 3b 20 72 33 20 3d 20 6c 78 0d 17 48 |..>.; r3 = lx..H| 00002870 0d 3b 20 72 34 20 3d 20 72 78 0d 17 52 17 3b 20 |.; r4 = rx..R.; | 00002880 72 31 2c 72 35 2d 72 31 34 20 3d 20 65 6d 70 74 |r1,r5-r14 = empt| 00002890 79 0d 17 5c 04 0d 17 66 20 3b 20 72 65 63 61 6c |y..\...f ; recal| 000028a0 63 75 61 74 65 20 64 6c 78 2c 64 6c 75 2c 64 6c |cuate dlx,dlu,dl| 000028b0 76 2c 64 6c 63 0d 17 70 12 6c 64 72 20 72 31 2c |v,dlc..p.ldr r1,| 000028c0 6c 5f 69 6e 64 65 78 0d 17 7a 3d 6c 64 6d 69 62 |l_index..z=ldmib| 000028d0 20 72 31 2c 7b 72 33 2c 72 31 30 2c 72 31 31 2c | r1,{r3,r10,r11,| 000028e0 72 31 32 7d 20 20 20 20 20 20 20 20 20 20 20 20 |r12} | 000028f0 20 20 20 3b 20 78 5f 6c 2c 63 5f 6c 2c 75 5f 6c | ; x_l,c_l,u_l| 00002900 2c 76 5f 6c 0d 17 84 12 6c 64 72 20 72 31 2c 72 |,v_l....ldr r1,r| 00002910 5f 69 6e 64 65 78 0d 17 8e 41 6c 64 6d 69 61 20 |_index...Aldmia | 00002920 72 31 2c 7b 72 31 2c 72 35 2c 72 36 2c 72 37 2c |r1,{r1,r5,r6,r7,| 00002930 72 38 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 |r8} | 00002940 20 20 3b 20 79 5f 72 2c 78 5f 72 2c 63 5f 72 2c | ; y_r,x_r,c_r,| 00002950 75 5f 72 2c 76 5f 72 0d 17 98 10 73 74 72 20 72 |u_r,v_r....str r| 00002960 31 2c 79 5f 65 6e 64 0d 17 a2 04 0d 17 ac 31 73 |1,y_end.......1s| 00002970 75 62 73 20 72 31 2c 72 31 2c 72 30 20 20 20 20 |ubs r1,r1,r0 | 00002980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002990 20 20 20 20 20 20 20 3b 20 64 6c 79 0d 17 b6 15 | ; dly....| 000029a0 6c 64 72 20 72 31 34 2c 64 69 76 5f 74 61 62 6c |ldr r14,div_tabl| 000029b0 65 0d 17 c0 04 0d 17 ca 37 6c 64 72 67 74 20 72 |e.......7ldrgt r| 000029c0 31 2c 5b 72 31 34 2c 72 31 2c 6c 73 6c 23 32 5d |1,[r14,r1,lsl#2]| 000029d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000029e0 20 3b 20 31 3c 3c 32 30 2f 64 6c 79 0d 17 d4 13 | ; 1<<20/dly....| 000029f0 73 75 62 67 74 20 72 37 2c 72 37 2c 72 31 31 0d |subgt r7,r7,r11.| 00002a00 17 de 35 6d 75 6c 20 72 37 2c 72 31 2c 72 37 20 |..5mul r7,r1,r7 | 00002a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002a20 20 20 20 20 20 20 20 20 20 20 20 3b 20 64 6c 75 | ; dlu| 00002a30 3c 3c 32 30 0d 17 e8 0e 73 74 72 20 72 37 2c 64 |<<20....str r7,d| 00002a40 6c 75 0d 17 f2 12 73 75 62 67 74 20 72 35 2c 72 |lu....subgt r5,r| 00002a50 35 2c 72 33 0d 17 fc 14 6d 6f 76 20 72 33 2c 72 |5,r3....mov r3,r| 00002a60 33 2c 6c 73 6c 23 31 30 0d 18 06 35 6d 75 6c 20 |3,lsl#10...5mul | 00002a70 72 35 2c 72 31 2c 72 35 20 20 20 20 20 20 20 20 |r5,r1,r5 | 00002a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002a90 20 20 20 20 3b 20 64 6c 78 3c 3c 32 30 0d 18 10 | ; dlx<<20...| 00002aa0 0e 73 74 72 20 72 35 2c 64 6c 78 0d 18 1a 13 73 |.str r5,dlx....s| 00002ab0 75 62 67 74 20 72 35 2c 72 36 2c 72 31 30 0d 18 |ubgt r5,r6,r10..| 00002ac0 24 35 6d 75 6c 20 72 35 2c 72 31 2c 72 35 20 20 |$5mul r5,r1,r5 | 00002ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002ae0 20 20 20 20 20 20 20 20 20 20 3b 20 64 6c 63 3c | ; dlc<| 00002af0 3c 32 30 0d 18 2e 0e 73 74 72 20 72 35 2c 64 6c |<20....str r5,dl| 00002b00 63 0d 18 38 04 0d 18 42 13 73 75 62 67 74 20 72 |c..8...B.subgt r| 00002b10 35 2c 72 38 2c 72 31 32 0d 18 4c 35 6d 75 6c 20 |5,r8,r12..L5mul | 00002b20 72 35 2c 72 31 2c 72 35 20 20 20 20 20 20 20 20 |r5,r1,r5 | 00002b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002b40 20 20 20 20 3b 20 64 6c 76 3c 3c 32 30 0d 18 56 | ; dlv<<20..V| 00002b50 0e 73 74 72 20 72 35 2c 64 6c 76 0d 18 60 04 0d |.str r5,dlv..`..| 00002b60 18 6a 12 6c 64 72 20 72 31 30 2c 73 70 72 69 74 |.j.ldr r10,sprit| 00002b70 65 0d 18 74 04 0d 18 7e 0e 4d 4f 56 20 52 31 34 |e..t...~.MOV R14| 00002b80 2c 52 30 0d 18 88 0d 2e 6c 61 73 74 5f 62 69 74 |,R0.....last_bit| 00002b90 0d 18 92 0a a4 79 6c 6f 6f 70 0d 18 9c 04 0d 18 |.....yloop......| 00002ba0 a6 12 6c 64 72 20 72 31 33 2c 73 74 61 63 6b 70 |..ldr r13,stackp| 00002bb0 0d 18 b0 10 6c 64 72 20 72 31 35 2c 6c 69 6e 6b |....ldr r15,link| 00002bc0 0d 18 ba 04 0d 18 c4 04 0d 18 ce 3d 2e 6d 65 74 |...........=.met| 00002bd0 68 6f 64 5f 32 20 20 20 20 20 20 20 20 20 20 20 |hod_2 | 00002be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002bf0 20 20 20 20 3b 20 72 69 67 68 74 5f 79 3c 20 6c | ; right_y< l| 00002c00 65 66 74 5f 79 0d 18 d8 0a a4 79 6c 6f 6f 70 0d |eft_y.....yloop.| 00002c10 18 e2 04 0d 18 ec 0e 3b 20 72 30 20 3d 20 79 5f |.......; r0 = y_| 00002c20 6c 0d 18 f6 11 3b 20 72 32 20 3d 20 73 63 6c 69 |l....; r2 = scli| 00002c30 6e 65 0d 19 00 0d 3b 20 72 33 20 3d 20 6c 78 0d |ne....; r3 = lx.| 00002c40 19 0a 0d 3b 20 72 34 20 3d 20 72 78 0d 19 14 17 |...; r4 = rx....| 00002c50 3b 20 72 31 2c 72 35 2d 72 31 34 20 3d 20 65 6d |; r1,r5-r14 = em| 00002c60 70 74 79 0d 19 1e 04 0d 19 28 20 3b 20 72 65 63 |pty......( ; rec| 00002c70 61 6c 63 75 61 74 65 20 64 72 78 2c 64 72 75 2c |alcuate drx,dru,| 00002c80 64 72 76 2c 64 72 63 0d 19 32 12 6c 64 72 20 72 |drv,drc..2.ldr r| 00002c90 31 2c 72 5f 69 6e 64 65 78 0d 19 3c 3d 6c 64 6d |1,r_index..<=ldm| 00002ca0 69 62 20 72 31 2c 7b 72 34 2c 72 31 30 2c 72 31 |ib r1,{r4,r10,r1| 00002cb0 31 2c 72 31 32 7d 20 20 20 20 20 20 20 20 20 20 |1,r12} | 00002cc0 20 20 20 20 20 3b 20 78 5f 72 2c 63 5f 72 2c 75 | ; x_r,c_r,u| 00002cd0 5f 72 2c 76 5f 72 0d 19 46 12 6c 64 72 20 72 31 |_r,v_r..F.ldr r1| 00002ce0 2c 6c 5f 69 6e 64 65 78 0d 19 50 41 6c 64 6d 69 |,l_index..PAldmi| 00002cf0 61 20 72 31 2c 7b 72 31 2c 72 35 2c 72 36 2c 72 |a r1,{r1,r5,r6,r| 00002d00 37 2c 72 38 7d 20 20 20 20 20 20 20 20 20 20 20 |7,r8} | 00002d10 20 20 20 20 3b 20 79 5f 6c 2c 78 5f 6c 2c 63 5f | ; y_l,x_l,c_| 00002d20 6c 2c 75 5f 6c 2c 76 5f 6c 0d 19 5a 10 73 74 72 |l,u_l,v_l..Z.str| 00002d30 20 72 31 2c 79 5f 65 6e 64 0d 19 64 04 0d 19 6e | r1,y_end..d...n| 00002d40 31 73 75 62 73 20 72 31 2c 72 31 2c 72 30 20 20 |1subs r1,r1,r0 | 00002d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002d60 20 20 20 20 20 20 20 20 20 3b 20 64 6c 79 0d 19 | ; dly..| 00002d70 78 15 6c 64 72 20 72 31 34 2c 64 69 76 5f 74 61 |x.ldr r14,div_ta| 00002d80 62 6c 65 0d 19 82 04 0d 19 8c 37 6c 64 72 67 74 |ble.......7ldrgt| 00002d90 20 72 31 2c 5b 72 31 34 2c 72 31 2c 6c 73 6c 23 | r1,[r14,r1,lsl#| 00002da0 32 5d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |2] | 00002db0 20 20 20 3b 20 31 3c 3c 32 30 2f 64 6c 79 0d 19 | ; 1<<20/dly..| 00002dc0 96 12 73 75 62 67 74 20 72 35 2c 72 35 2c 72 34 |..subgt r5,r5,r4| 00002dd0 0d 19 a0 14 6d 6f 76 20 72 34 2c 72 34 2c 6c 73 |....mov r4,r4,ls| 00002de0 6c 23 31 30 0d 19 aa 35 6d 75 6c 20 72 35 2c 72 |l#10...5mul r5,r| 00002df0 31 2c 72 35 20 20 20 20 20 20 20 20 20 20 20 20 |1,r5 | 00002e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002e10 3b 20 64 6c 78 3c 3c 32 30 0d 19 b4 0e 73 74 72 |; dlx<<20....str| 00002e20 20 72 35 2c 64 72 78 0d 19 be 13 73 75 62 67 74 | r5,drx....subgt| 00002e30 20 72 35 2c 72 36 2c 72 31 30 0d 19 c8 35 6d 75 | r5,r6,r10...5mu| 00002e40 6c 20 72 35 2c 72 31 2c 72 35 20 20 20 20 20 20 |l r5,r1,r5 | 00002e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002e60 20 20 20 20 20 20 3b 20 64 6c 63 3c 3c 32 30 0d | ; dlc<<20.| 00002e70 19 d2 0e 73 74 72 20 72 35 2c 64 72 63 0d 19 dc |...str r5,drc...| 00002e80 13 73 75 62 67 74 20 72 35 2c 72 37 2c 72 31 31 |.subgt r5,r7,r11| 00002e90 0d 19 e6 35 6d 75 6c 20 72 35 2c 72 31 2c 72 35 |...5mul r5,r1,r5| 00002ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002eb0 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 64 6c | ; dl| 00002ec0 75 3c 3c 32 30 0d 19 f0 0e 73 74 72 20 72 35 2c |u<<20....str r5,| 00002ed0 64 72 75 0d 19 fa 13 73 75 62 67 74 20 72 35 2c |dru....subgt r5,| 00002ee0 72 38 2c 72 31 32 0d 1a 04 35 6d 75 6c 20 72 35 |r8,r12...5mul r5| 00002ef0 2c 72 31 2c 72 35 20 20 20 20 20 20 20 20 20 20 |,r1,r5 | 00002f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002f10 20 20 3b 20 64 6c 76 3c 3c 32 30 0d 1a 0e 0e 73 | ; dlv<<20....s| 00002f20 74 72 20 72 35 2c 64 72 76 0d 1a 18 04 0d 1a 22 |tr r5,drv......"| 00002f30 12 6c 64 72 20 72 31 30 2c 73 70 72 69 74 65 0d |.ldr r10,sprite.| 00002f40 1a 2c 0e 4d 4f 56 20 52 31 34 2c 52 30 0d 1a 36 |.,.MOV R14,R0..6| 00002f50 0a a4 79 6c 6f 6f 70 0d 1a 40 04 0d 1a 4a 12 6c |..yloop..@...J.l| 00002f60 64 72 20 72 31 33 2c 73 74 61 63 6b 70 0d 1a 54 |dr r13,stackp..T| 00002f70 10 6c 64 72 20 72 31 35 2c 6c 69 6e 6b 0d 1a 5e |.ldr r15,link..^| 00002f80 04 0d 1a 68 09 2e 6c 69 6e 65 0d 1a 72 09 64 63 |...h..line..r.dc| 00002f90 64 20 30 0d 1a 7c 04 0d 1a 86 0b 2e 63 6f 6f 72 |d 0..|......coor| 00002fa0 64 73 0d 1a 90 17 2e 6c 75 3a 64 63 64 20 30 3a |ds.....lu:dcd 0:| 00002fb0 2e 72 75 3a 64 63 64 20 30 0d 1a 9a 17 2e 6c 63 |.ru:dcd 0.....lc| 00002fc0 3a 64 63 64 20 30 3a 2e 72 63 3a 64 63 64 20 30 |:dcd 0:.rc:dcd 0| 00002fd0 0d 1a a4 17 2e 6c 76 3a 64 63 64 20 30 3a 2e 72 |.....lv:dcd 0:.r| 00002fe0 76 3a 64 63 64 20 30 0d 1a ae 19 2e 64 6c 78 3a |v:dcd 0.....dlx:| 00002ff0 64 63 64 20 30 3a 2e 64 72 78 3a 64 63 64 20 30 |dcd 0:.drx:dcd 0| 00003000 0d 1a b8 19 2e 64 6c 63 3a 64 63 64 20 30 3a 2e |.....dlc:dcd 0:.| 00003010 64 72 63 3a 64 63 64 20 30 0d 1a c2 19 2e 64 6c |drc:dcd 0.....dl| 00003020 75 3a 64 63 64 20 30 3a 2e 64 72 75 3a 64 63 64 |u:dcd 0:.dru:dcd| 00003030 20 30 0d 1a cc 19 2e 64 6c 76 3a 64 63 64 20 30 | 0.....dlv:dcd 0| 00003040 3a 2e 64 72 76 3a 64 63 64 20 30 0d 1a d6 04 0d |:.drv:dcd 0.....| 00003050 1a e0 05 5d 0d 1a ea 05 ed 0d 1a f4 1f 70 25 3d |...].........p%=| 00003060 71 5f 73 74 61 72 74 3a 73 74 70 3d 31 30 32 34 |q_start:stp=1024| 00003070 2f 71 5f 73 74 65 70 25 0d 1a fe 16 e3 6e 25 3d |/q_step%.....n%=| 00003080 30 20 b8 20 31 30 32 34 20 88 20 73 74 70 0d 1b |0 . 1024 . stp..| 00003090 08 31 71 6e 25 3d 31 30 32 34 2d 6e 25 3a 71 73 |.1qn%=1024-n%:qs| 000030a0 25 3d 28 71 6e 25 2a 71 6e 25 29 3e 3e 31 30 3a |%=(qn%*qn%)>>10:| 000030b0 6e 73 25 3d 28 6e 25 2a 6e 25 29 3e 3e 31 30 0d |ns%=(n%*n%)>>10.| 000030c0 1b 12 0f 21 70 25 3d 71 73 25 2a 71 6e 25 0d 1b |...!p%=qs%*qn%..| 000030d0 1c 11 70 25 21 34 3d 33 2a 71 73 25 2a 6e 25 0d |..p%!4=3*qs%*n%.| 000030e0 1b 26 12 70 25 21 38 3d 33 2a 6e 73 25 2a 71 6e |.&.p%!8=3*ns%*qn| 000030f0 25 0d 1b 30 10 70 25 21 31 32 3d 6e 73 25 2a 6e |%..0.p%!12=ns%*n| 00003100 25 0d 1b 3a 0a 70 25 2b 3d 31 36 0d 1b 44 05 ed |%..:.p%+=16..D..| 00003110 0d 1b 4e 24 c8 99 22 4f 53 5f 46 69 6c 65 22 2c |..N$.."OS_File",| 00003120 31 36 2c 22 50 69 63 74 75 72 65 22 2c 73 70 72 |16,"Picture",spr| 00003130 69 74 65 25 0d 1b 58 23 c8 99 22 4f 53 5f 46 69 |ite%..X#.."OS_Fi| 00003140 6c 65 22 2c 31 36 2c 22 43 6f 6c 54 61 62 22 2c |le",16,"ColTab",| 00003150 63 6f 6c 74 61 62 25 0d 1b 62 05 e1 0d 1b 6c 05 |coltab%..b....l.| 00003160 3a 0d 1b 76 0b dd a4 79 6c 6f 6f 70 0d 1b 80 0e |:..v...yloop....| 00003170 5b 4f 50 54 20 70 61 73 73 25 0d 1b 8a 0d 3b 20 |[OPT pass%....; | 00003180 72 32 20 3d 20 73 63 0d 1b 94 0d 3b 20 72 33 20 |r2 = sc....; r3 | 00003190 3d 20 6c 78 0d 1b 9e 0d 3b 20 72 34 20 3d 20 72 |= lx....; r4 = r| 000031a0 78 0d 1b a8 0f 3b 20 72 31 34 20 3d 20 79 5f 6b |x....; r14 = y_k| 000031b0 0d 1b b2 04 0d 1b bc 0a 2e 79 6c 6f 6f 70 0d 1b |.........yloop..| 000031c0 c6 2c 73 75 62 73 20 72 30 2c 72 34 2c 72 33 20 |.,subs r0,r4,r3 | 000031d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000031e0 20 20 3b 20 64 78 3c 3c 31 30 0d 1b d0 2e 61 64 | ; dx<<10....ad| 000031f0 64 20 72 31 32 2c 72 32 2c 72 33 2c 61 73 72 23 |d r12,r2,r3,asr#| 00003200 31 30 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 |10 ; | 00003210 6c 65 66 74 20 61 64 72 0d 1b da 0f 6c 64 72 20 |left adr....ldr | 00003220 72 31 33 2c 64 6c 78 0d 1b e4 2d 61 64 64 20 72 |r13,dlx...-add r| 00003230 33 2c 72 33 2c 72 31 33 2c 61 73 72 23 31 30 20 |3,r3,r13,asr#10 | 00003240 20 20 20 20 20 20 20 20 20 20 20 3b 20 6c 78 2b | ; lx+| 00003250 3d 64 6c 78 0d 1b ee 0f 6c 64 72 20 72 31 31 2c |=dlx....ldr r11,| 00003260 64 72 78 0d 1b f8 2f 61 64 64 20 72 31 33 2c 72 |drx.../add r13,r| 00003270 32 2c 72 34 2c 61 73 72 23 31 30 20 20 20 20 20 |2,r4,asr#10 | 00003280 20 20 20 20 20 20 20 3b 20 72 69 67 68 74 20 61 | ; right a| 00003290 64 72 0d 1c 02 2d 61 64 64 20 72 34 2c 72 34 2c |dr...-add r4,r4,| 000032a0 72 31 31 2c 61 73 72 23 31 30 20 20 20 20 20 20 |r11,asr#10 | 000032b0 20 20 20 20 20 20 3b 20 72 78 2b 3d 64 72 78 0d | ; rx+=drx.| 000032c0 1c 0c 15 6c 64 72 20 72 31 31 2c 64 69 76 5f 74 |...ldr r11,div_t| 000032d0 61 62 6c 65 0d 1c 16 13 6d 6f 76 20 72 30 2c 72 |able....mov r0,r| 000032e0 30 2c 61 73 72 23 34 0d 1c 20 2e 6c 64 72 67 74 |0,asr#4.. .ldrgt| 000032f0 20 72 30 2c 5b 72 31 31 2c 72 30 2c 6c 73 6c 23 | r0,[r11,r0,lsl#| 00003300 32 5d 20 20 20 20 20 20 20 20 20 3b 20 31 3c 3c |2] ; 1<<| 00003310 31 38 2f 64 78 0d 1c 2a 0e 6c 64 72 20 72 31 31 |18/dx..*.ldr r11| 00003320 2c 6c 63 0d 1c 34 0d 6c 64 72 20 72 39 2c 72 63 |,lc..4.ldr r9,rc| 00003330 0d 1c 3e 2c 73 75 62 20 72 35 2c 72 39 2c 72 31 |..>,sub r5,r9,r1| 00003340 31 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |1 | 00003350 20 20 20 20 3b 20 64 63 3c 3c 31 30 0d 1c 48 2c | ; dc<<10..H,| 00003360 6d 75 6c 20 72 35 2c 72 30 2c 72 35 20 20 20 20 |mul r5,r0,r5 | 00003370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00003380 3b 20 64 63 3c 3c 33 30 0d 1c 52 0e 6c 64 72 20 |; dc<<30..R.ldr | 00003390 72 38 2c 64 72 63 0d 1c 5c 17 61 64 64 20 72 39 |r8,drc..\.add r9| 000033a0 2c 72 39 2c 72 38 2c 61 73 72 23 31 30 0d 1c 66 |,r9,r8,asr#10..f| 000033b0 0d 73 74 72 20 72 39 2c 72 63 0d 1c 70 0e 6c 64 |.str r9,rc..p.ld| 000033c0 72 20 72 38 2c 64 6c 63 0d 1c 7a 18 61 64 64 20 |r r8,dlc..z.add | 000033d0 72 39 2c 72 31 31 2c 72 38 2c 61 73 72 23 31 30 |r9,r11,r8,asr#10| 000033e0 0d 1c 84 0d 73 74 72 20 72 39 2c 6c 63 0d 1c 8e |....str r9,lc...| 000033f0 0d 6c 64 72 20 72 39 2c 6c 75 0d 1c 98 0d 6c 64 |.ldr r9,lu....ld| 00003400 72 20 72 38 2c 72 75 0d 1c a2 04 0d 1c ac 2c 73 |r r8,ru.......,s| 00003410 75 62 20 72 36 2c 72 38 2c 72 39 20 20 20 20 20 |ub r6,r8,r9 | 00003420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b | ;| 00003430 20 64 75 3c 3c 31 30 0d 1c b6 2c 6d 75 6c 20 72 | du<<10...,mul r| 00003440 36 2c 72 30 2c 72 36 20 20 20 20 20 20 20 20 20 |6,r0,r6 | 00003450 20 20 20 20 20 20 20 20 20 20 20 3b 20 64 75 3c | ; du<| 00003460 3c 32 34 0d 1c c0 04 0d 1c ca 0e 6c 64 72 20 72 |<24........ldr r| 00003470 37 2c 64 72 75 0d 1c d4 17 61 64 64 20 72 38 2c |7,dru....add r8,| 00003480 72 38 2c 72 37 2c 61 73 72 23 31 30 0d 1c de 0d |r8,r7,asr#10....| 00003490 73 74 72 20 72 38 2c 72 75 0d 1c e8 04 0d 1c f2 |str r8,ru.......| 000034a0 0e 6c 64 72 20 72 37 2c 64 6c 75 0d 1c fc 17 61 |.ldr r7,dlu....a| 000034b0 64 64 20 72 38 2c 72 39 2c 72 37 2c 61 73 72 23 |dd r8,r9,r7,asr#| 000034c0 31 30 0d 1d 06 0d 73 74 72 20 72 38 2c 6c 75 0d |10....str r8,lu.| 000034d0 1d 10 04 0d 1d 1a 0d 6c 64 72 20 72 38 2c 6c 76 |.......ldr r8,lv| 000034e0 0d 1d 24 0d 6c 64 72 20 72 31 2c 72 76 0d 1d 2e |..$.ldr r1,rv...| 000034f0 2c 73 75 62 20 72 37 2c 72 31 2c 72 38 20 20 20 |,sub r7,r1,r8 | 00003500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00003510 20 3b 20 64 76 3c 3c 31 30 0d 1d 38 2c 6d 75 6c | ; dv<<10..8,mul| 00003520 20 72 37 2c 72 30 2c 72 37 20 20 20 20 20 20 20 | r7,r0,r7 | 00003530 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 20 64 | ; d| 00003540 76 3c 3c 32 31 0d 1d 42 0e 6c 64 72 20 72 30 2c |v<<21..B.ldr r0,| 00003550 64 72 76 0d 1d 4c 17 61 64 64 20 72 31 2c 72 31 |drv..L.add r1,r1| 00003560 2c 72 30 2c 61 73 72 23 31 30 0d 1d 56 0d 73 74 |,r0,asr#10..V.st| 00003570 72 20 72 31 2c 72 76 0d 1d 60 0e 6c 64 72 20 72 |r r1,rv..`.ldr r| 00003580 30 2c 64 6c 76 0d 1d 6a 17 61 64 64 20 72 30 2c |0,dlv..j.add r0,| 00003590 72 38 2c 72 30 2c 61 73 72 23 31 30 0d 1d 74 0d |r8,r0,asr#10..t.| 000035a0 73 74 72 20 72 30 2c 6c 76 0d 1d 7e 12 61 64 64 |str r0,lv..~.add| 000035b0 20 72 32 2c 72 32 2c 23 33 32 30 0d 1d 88 0f 73 | r2,r2,#320....s| 000035c0 74 72 20 72 32 2c 6c 69 6e 65 0d 1d 92 04 0d 1d |tr r2,line......| 000035d0 9c 14 6d 6f 76 20 72 39 2c 72 39 2c 6c 73 6c 23 |..mov r9,r9,lsl#| 000035e0 31 34 0d 1d a6 14 6d 6f 76 20 72 38 2c 72 38 2c |14....mov r8,r8,| 000035f0 6c 73 6c 23 31 34 0d 1d b0 16 6d 6f 76 20 72 31 |lsl#14....mov r1| 00003600 31 2c 72 31 31 2c 6c 73 6c 23 31 34 0d 1d ba 04 |1,r11,lsl#14....| 00003610 0d 1d c4 0d 3b 20 64 63 20 3d 20 72 35 0d 1d ce |....; dc = r5...| 00003620 0d 3b 20 64 75 20 3d 20 72 36 0d 1d d8 0d 3b 20 |.; du = r6....; | 00003630 64 76 20 3d 20 72 37 0d 1d e2 0c 3b 20 76 20 3d |dv = r7....; v =| 00003640 20 72 38 0d 1d ec 0c 3b 20 75 20 3d 20 72 39 0d | r8....; u = r9.| 00003650 1d f6 12 3b 20 73 70 72 69 74 65 20 3d 20 72 31 |...; sprite = r1| 00003660 30 0d 1e 00 0d 3b 20 63 20 3d 20 72 31 31 0d 1e |0....; c = r11..| 00003670 0a 14 3b 20 6c 65 66 74 5f 61 64 72 20 3d 20 72 |..; left_adr = r| 00003680 31 32 0d 1e 14 15 3b 20 72 69 67 68 74 5f 61 64 |12....; right_ad| 00003690 72 20 3d 20 72 31 33 0d 1e 1e 14 3b 20 72 31 20 |r = r13....; r1 | 000036a0 3d 20 63 6f 6c 20 74 61 62 6c 65 0d 1e 28 04 0d |= col table..(..| 000036b0 1e 32 13 6c 64 72 20 72 31 2c 63 6f 6c 74 61 62 |.2.ldr r1,coltab| 000036c0 6c 65 0d 1e 3c 0e 74 73 74 20 72 31 32 2c 23 31 |le..<.tst r12,#1| 000036d0 0d 1e 46 13 6d 6f 76 65 71 20 72 32 2c 23 31 3c |..F.moveq r2,#1<| 000036e0 3c 33 31 0d 1e 50 0f 6d 6f 76 6e 65 20 72 32 2c |<31..P.movne r2,| 000036f0 23 30 0d 1e 5a 0a 2e 78 6c 6f 6f 70 0d 1e 64 16 |#0..Z..xloop..d.| 00003700 61 6e 64 20 72 30 2c 72 38 2c 23 32 35 35 3c 3c |and r0,r8,#255<<| 00003710 32 34 0d 1e 6e 16 6f 72 72 20 72 30 2c 72 30 2c |24..n.orr r0,r0,| 00003720 72 39 2c 6c 73 72 23 38 0d 1e 78 1b 6c 64 72 62 |r9,lsr#8..x.ldrb| 00003730 20 72 30 2c 5b 72 31 30 2c 72 30 2c 6c 73 72 23 | r0,[r10,r0,lsr#| 00003740 31 36 5d 0d 1e 82 2f 61 64 64 20 72 30 2c 72 31 |16].../add r0,r1| 00003750 2c 72 30 2c 6c 73 6c 23 35 20 20 20 20 20 20 20 |,r0,lsl#5 | 00003760 20 20 20 20 20 20 20 3b 20 33 32 20 6c 65 76 65 | ; 32 leve| 00003770 6c 73 0d 1e 8c 17 61 64 64 20 72 30 2c 72 30 2c |ls....add r0,r0,| 00003780 72 32 2c 6c 73 72 23 33 31 0d 1e 96 2f 6c 64 72 |r2,lsr#31.../ldr| 00003790 62 20 72 30 2c 5b 72 30 2c 72 31 31 2c 6c 73 72 |b r0,[r0,r11,lsr| 000037a0 23 32 37 5d 20 20 20 20 20 20 20 20 20 3b 20 33 |#27] ; 3| 000037b0 32 20 6c 65 76 65 6c 73 0d 1e a0 14 73 74 72 62 |2 levels....strb| 000037c0 20 72 30 2c 5b 72 31 32 5d 2c 23 31 0d 1e aa 0f | r0,[r12],#1....| 000037d0 63 6d 70 20 72 31 32 2c 72 31 33 0d 1e b4 16 61 |cmp r12,r13....a| 000037e0 64 64 6c 65 20 72 32 2c 72 32 2c 23 31 3c 3c 33 |ddle r2,r2,#1<<3| 000037f0 31 0d 1e be 12 61 64 64 6c 65 20 72 38 2c 72 38 |1....addle r8,r8| 00003800 2c 72 37 0d 1e c8 12 61 64 64 6c 65 20 72 39 2c |,r7....addle r9,| 00003810 72 39 2c 72 36 0d 1e d2 14 61 64 64 6c 65 20 72 |r9,r6....addle r| 00003820 31 31 2c 72 31 31 2c 72 35 0d 1e dc 0d 62 6c 65 |11,r11,r5....ble| 00003830 20 78 6c 6f 6f 70 0d 1e e6 04 0d 1e f0 0f 6c 64 | xloop........ld| 00003840 72 20 72 32 2c 6c 69 6e 65 0d 1e fa 10 6c 64 72 |r r2,line....ldr| 00003850 20 72 30 2c 79 5f 65 6e 64 0d 1f 04 12 61 64 64 | r0,y_end....add| 00003860 20 72 31 34 2c 72 31 34 2c 23 31 0d 1f 0e 0e 63 | r14,r14,#1....c| 00003870 6d 70 20 72 31 34 2c 72 30 0d 1f 18 0d 62 6c 74 |mp r14,r0....blt| 00003880 20 79 6c 6f 6f 70 0d 1f 22 04 0d 1f 2c 05 5d 0d | yloop.."...,.].| 00003890 1f 36 06 3d 30 0d 1f 40 05 3a 0d 1f 4a 14 dd a4 |.6.=0..@.:..J...| 000038a0 73 63 72 65 65 6e 61 64 72 28 62 6b 25 29 0d 1f |screenadr(bk%)..| 000038b0 54 17 c8 99 22 4f 53 5f 42 79 74 65 22 2c 31 31 |T..."OS_Byte",11| 000038c0 32 2c 62 6b 25 0d 1f 5e 17 c8 99 22 4f 53 5f 42 |2,bk%..^..."OS_B| 000038d0 79 74 65 22 2c 31 31 33 2c 62 6b 25 0d 1f 68 0a |yte",113,bk%..h.| 000038e0 de 20 71 25 20 38 0d 1f 72 13 21 71 25 3d 31 34 |. q% 8..r.!q%=14| 000038f0 38 3a 71 25 21 34 3d 2d 31 0d 1f 7c 21 c8 99 22 |8:q%!4=-1..|!.."| 00003900 4f 53 5f 52 65 61 64 56 64 75 56 61 72 69 61 62 |OS_ReadVduVariab| 00003910 6c 65 73 22 2c 71 25 2c 71 25 0d 1f 86 08 3d 21 |les",q%,q%....=!| 00003920 71 25 0d ff |q%..| 00003924