Home » Archimedes archive » Acorn User » AU 1993-10.adf » !3DGraphic_3DGraphic » Source/SWI07
Source/SWI07
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 1993-10.adf » !3DGraphic_3DGraphic |
Filename: | Source/SWI07 |
Read OK: | ✔ |
File size: | 680C bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM >Source.SWI07 20REM BAU3D_Render source 30REM by DCA 40REM for 32-bit machines 50REM (c) BAU August 1993 60: 70DEF FNswi07_name 80="Render" 90: 100DEF FNswi07_vars 110poly_chunk=1024 120poly_point=FNwk(4) 130poly_point_size=FNwk(4) 140poly_faces=FNwk(4) 150angles=&10000 160ang_bits=16 170ang_acc=12 180real_ang_bits=10 190ang_shift=ang_bits-real_ang_bits 200real_angles=1<<real_ang_bits 210gwx0=FNwk(4) 220gwy0=FNwk(4) 230gwx1=FNwk(4) 240gwy1=FNwk(4) 250orgx=FNwk(4) 260orgy=FNwk(4) 270xeig=FNwk(4) 280yeig=FNwk(4) 290scr_minx=FNwk(4) 300scr_miny=FNwk(4) 310scr_maxx=FNwk(4) 320scr_maxy=FNwk(4) 330rp_ptr=FNwk(4) 340persp_flags=FNwk(4) 350ang_list=FNwk(64) 360 370bit_merge=64 380bit_surf=128 390bit_disp=256 400bit_dispall=512 410bit_closed=1024 420 430obj_list=0 440obj_name=4 450obj_req=8 460surf_type=0 470surf_colour=4 480surf_n=8 490surf_coords=12 500surf_req=12 510subobj_next=0 520subobj_type=4 530subobj_flags=8 540subobj_offset=12 550subobj_angle=24 560subobj_surfreq=36 570subobj_bounds=36 580subobj_req=132 590slide_limit=16^2 600 610disp_minz=0 620disp_maxz=4 630disp_n=8 640disp_norm=12 650disp_pt1=24 660disp_dat=36 670disp_req=disp_dat 680 690DIM rot_lab(2) 700=0 710: 720DEF FNswi07_code 730LOCAL i,a 740[OPT pass% 750.render 760 STMFD (sp)!,{r0-r11,link} 770 MOV r0,#0 780.main_render 790 FNadrl(14,persp_flags) 800 STR r0,[r14] 810 MOV r0,#poly_chunk 820 BL malloc 830 LDMVSFD (sp)!,{r0-r11,pc} 840 MOV r3,r0 850 MOV r4,#poly_chunk 860 MOV r5,#0 870 FNadrl(14,poly_point) 880 STMIA r14,{r3-r5} 890 BL read_screen_limits 900 910 FNadrl(8,ang_list) 920 LDR r2,[sp,#4*2] 930 MVN r0,#0 940 STMIA r8!,{r0,r2} 950 LDR r7,[sp,#4*1] 960 MOV r9,#0 970 LDR r10,[sp] 980 BL clip 990 1000 FNadrl(8,ang_list) 1010 LDR r1,[sp,#4*2] 1020 MVN r0,#0 1030 STMIA r8!,{r0,r2} 1040 MOV r9,#0 1050 LDR r7,[sp,#4*1] 1060 LDR r10,[sp] 1070 BL do_render_obj 1080 1090 BL plot_faces 1100 FNadrl(10,poly_point) 1110 LDMIA r10,{r4-r6} 1120.free_poly_loop 1130 SUBS r6,r6,#1 1140 BMI freed_poly_list 1150 LDR r0,[r4],#4 1160 BL free 1170 B free_poly_loop 1180.freed_poly_list 1190 LDR r0,[r10] 1200 BL free 1210.render_done 1220 STRVS r0,[sp] 1230 LDMFD (sp)!,{r0-r11,pc} 1240 1250.do_render_obj 1260 STMFD (sp)!,{r0-r11,link} 1270 BL render_obj 1280 LDMFD (sp)!,{r0-r11,pc} 1290 1300 ; r8-> angle list, full descending stack of pointers to 12-byte angles, 1310 ; terminated by -1 1320 ; r7-> offset 1330 ; r9=flags (including bit_dispall) 1340 ; r10-> tree to render 1350 1360.render_obj 1370 STMFD (sp)!,{r7,r8,link} 1380 LDR r10,[r10,#obj_list] 1390.render_obj_loop 1400 CMP r10,#0 1410 LDMEQFD (sp)!,{r7,r8,pc} 1420 LDR r0,[r10,#subobj_flags] 1430 TST r0,#bit_disp 1440 TSTEQ r9,#bit_dispall 1450 ; BEQ render_next 1460 TST r0,#bit_surf 1470 BEQ render_subobj 1480.render_surf 1490 LDR r0,[r10,#subobj_type] 1500 MOV r1,r7 1510 BL register_polygon 1520 ADD r14,sp,#4*2 1530 LDMIA r14,{r3,r4} 1540 B render_next 1550.render_subobj 1560 SUB sp,sp,#12 1570 1580 ADD r0,r10,#subobj_offset 1590 MOV r2,sp 1600 BL rotate_by_list 1610 MOV r0,sp 1620 MOV r1,r7 1630 BL add 1640 1650 ADD r14,r10,#subobj_angle 1660 LDMIA r14,{r0-r2} 1670 ORRS r0,r0,r1 1680 CMPEQ r2,#0 1690 STRNE r14,[r8],#4 ; add angle to list 1700 1710 TST r9,#bit_closed 1720 BEQ not_flat 1730 1740 FNldr(0,persp_flags) 1750 TST r0,#%1 1760 BNE not_flat 1770 1780 LDR r0,[r10,#subobj_bounds+8] 1790 LDR r1,[r10,#subobj_bounds+20] 1800 CMP r0,r1 1810 BNE not_flat 1820 1830 MOV r0,#0 1840 MOV r1,#0 1850 MOV r2,#&100 1860 STMDB (sp)!,{r0-r2} 1870 MOV r0,sp 1880 MOV r2,r0 1890 BL rotate_by_list 1900 1910 ; now find scalar product between vector to origin of bounding cube 1920 ; and this normal... 1930 1940 LDMIA r7,{r0-r2} 1950 ADD r14,r10,#subobj_bounds 1960 LDMIA r14,{r3-r5} 1970 ADD r0,r0,r3 1980 ADD r1,r1,r4 1990 ADD r2,r2,r5 2000 LDMIA (sp)!,{r3-r5} 2010 MUL r3,r0,r3 2020 MLA r3,r1,r4,r3 2030 MLAS r3,r2,r5,r3 2040 BMI rendered_sub_obj 2050 2060.not_flat 2070 2080 MOV r7,sp 2090 STMFD (sp)!,{r9-r11} 2100 LDR r14,[r10,#subobj_flags] 2110 ORR r9,r9,r14 2120 LDR r10,[r10,#subobj_type] 2130 BL render_obj 2140 LDMFD (sp)!,{r9-r11} 2150 2160.rendered_sub_obj 2170 ADD sp,sp,#12 2180 LDMIA sp,{r7,r8} 2190.render_next 2200 LDR r10,[r10,#subobj_next] 2210 B render_obj_loop 2220 2230 ; r7->offset, r8->angle list, r10->object 2240 ; r9=wholly visible flags 2250 2260.clip STMFD (sp)!,{r0-r11,link} 2270 SUB sp,sp,#12+12+96 2280 LDR r10,[r10,#obj_list] 2290.clip_loop 2300 CMP r10,#0 2310 BEQ clip_exit 2320 LDR r11,[r10,#subobj_flags] 2330 BIC r11,r11,#bit_disp+bit_dispall 2340 TST r11,#bit_surf 2350 BNE register_clip 2360.clip_subobj 2370 ADD r14,r10,#subobj_angle 2380 LDMIA r14,{r0-r2} 2390 ORRS r0,r0,r1 2400 CMPEQ r2,#0 2410 STRNE r14,[r8],#4 ; add angle to list 2420 2430 ADD r0,r10,#subobj_offset 2440 ADD r2,sp,#12 2450 BL rotate_by_list 2460 MOV r0,r2 2470 MOV r1,r7 2480 BL add 2490 2500 ; sp+12 now contains correct origin of subobject 2510 2520 MOV r3,#12+12 2530 ADD r4,r10,#subobj_bounds 2540.rotate_bounds 2550 MOV r0,r4 2560 ADD r2,sp,r3 2570 BL rotate_by_list 2580 MOV r0,r2 2590 ADD r1,sp,#12 2600 BL add 2610 ADD r4,r4,#12 2620 ADD r3,r3,#12 2630 CMP r3,#12+12+96 2640 BLT rotate_bounds 2650 2660 MOV r5,#0 2670 MOV r7,#0 2680.check_bound_loop1 2690 MOV r14,#1 2700 TST r9,r14,LSL r7 2710 BNE wholly_visible 2720 2730 MOV r3,#12+12 2740 MOV r6,#0 2750.check_bound_loop2 2760 MOV r5,r5,LSL #1 2770 TST r5,#%100000000 2780 BNE was_badz 2790 ADD r0,sp,r3 2800 MOV r1,r7 2810 BL invisible 2820 BNE not_invis 2830 ADD r6,r6,#1 2840 CMP r7,#2 2850 ORRLT r5,r5,#1 2860.not_invis 2870.was_badz 2880 ADD r3,r3,#12 2890 CMP r3,#12+12+96 2900 BLT check_bound_loop2 2910 ORR r5,r5,r5,LSR #8 2920 BIC r5,r5,#&FF00 2930 CMP r6,#8 2940 BEQ clip_next 2950 CMP r5,#0 2960 BNE whacky_zeds 2970 CMP r6,#0 2980 MOVEQ r14,#1 2990 ORREQ r9,r9,r14,LSL r7 3000.whacky_zeds 3010.wholly_visible 3020 ADD r7,r7,#1 3030 CMP r7,#6 3040 BLT check_bound_loop1 3050 CMP r9,#%111111 ; completely visible 3060 ORREQ r11,r11,#bit_dispall 3070 BEQ register_clip 3080 ADD r7,sp,#12 3090 STMFD (sp)!,{r10} 3100 LDR r10,[r10,#subobj_type] 3110 BL clip 3120 LDMFD (sp)!,{r10} 3130.register_clip 3140 ORR r11,r11,#bit_disp 3150.clip_next 3160 STR r11,[r10,#subobj_flags] 3170 ADD r14,sp,#12+12+96+4*7 3180 LDMIA r14,{r7,r8} 3190 LDR r10,[r10,#subobj_next] 3200 B clip_loop 3210.clip_exit 3220 ADD sp,sp,#12+12+96 3230 LDMFD (sp)!,{r0-r11,pc} 3240 3250.add STMFD (sp)!,{r0-r8,link} 3260 LDMIA r0,{r3-r5} 3270 LDMIA r1,{r6-r8} 3280 ADD r3,r3,r6 3290 ADD r4,r4,r7 3300 ADD r5,r5,r8 3310 STMIA r2,{r3-r5} 3320 LDMFD (sp)!,{r0-r8,pc} 3330 3340.free_tree 3350 STMFD (sp)!,{r0-r11,link} 3360 LDR r0,[r11,#obj_name] 3370 CMP r0,#0 3380 BLNE free 3390 LDR r8,[r11,#obj_list] 3400.free_tree_loop 3410 CMP r8,#0 3420 BEQ freed_list 3430 LDR r0,[r8,#subobj_flags] 3440 TST r0,#bit_surf 3450 BNE free_tree2 3460 MOV r10,r11 3470 LDR r11,[r8,#subobj_type] 3480 BL free_tree 3490 MOV r11,r10 3500.free_tree2 3510 LDR r7,[r8,#subobj_next] 3520 MOV r0,r8 3530 BL free 3540 MOV r8,r7 3550 B free_tree_loop 3560.freed_list 3570 MOV r0,r11 3580 BL free 3590 LDMFD (sp)!,{r0-r11,pc} 3600 3610.plot_faces 3620 STMFD (sp)!,{r0-r11,link} 3630 FNadrl(14,poly_point) 3640 LDMIA r14,{r9-r11} 3650 CMP r11,#0 3660 CMPNE r9,#0 3670 LDMEQFD (sp)!,{r0-r11,pc} 3680 MOV r0,r11 3690 MOV r1,r9 3700 ADR r2,compare 3710 SWI "XOS_HeapSort" 3720 FNadrl(14,flags) 3730 LDR r3,[r14] 3740.plot_face_loop 3750 LDR r8,[r9],#4 3760 LDR r7,[r8,#disp_n] 3770 ADD r8,r8,#disp_dat 3780.plot_face_loop2 3790 LDMIA r8!,{r2,r6} 3800 MOV r0,r6 3810 MOV r1,r8 3820 BL swi(00) 3830 ADD r8,r8,r6,LSL #3 3840 SUBS r7,r7,#1 3850 BNE plot_face_loop2 3860 SUBS r11,r11,#1 3870 BNE plot_face_loop 3880 LDMFD (sp)!,{r0-r11,pc} 3890 3900.compare 3910 LDR r2,[r0,#disp_minz] 3920 LDR r3,[r1,#disp_maxz] 3930 CMP r2,r3 3940 BGE comp_retlt 3950 LDR r2,[r1,#disp_minz] 3960 LDR r3,[r0,#disp_maxz] 3970 CMP r2,r3 3980 BGE comp_retgt 3990 LDR r2,[r0,#disp_minz] 4000 LDR r3,[r1,#disp_minz] 4010 CMP r2,r3 4020 BLT comp_retgt 4030.comp_retlt 4040 RSBS r0,r0,#0 4050 MOV pc,link 4060.comp_retgt 4070 CMP r0,#0 4080 MOV pc,link 4090 4100.invisible 4110 STMFD (sp)!,{r0-r11,link} 4120 LDMIA r0,{r7-r9} 4130 FNadrl(14,s) 4140 LDMIA r14,{r10,r11} 4150 FNldr(14,persp_flags) 4160 TST r14,#1 4170 ADDNE r1,r1,#6 4180 ADD pc,pc,r1,LSL #2 4190 DCD 0 4200 B check_maxz 4210 B check_minz 4220 B check_minx 4230 B check_maxx 4240 B check_miny 4250 B check_maxy 4260 B check_maxz 4270 B check_minz 4280 B check_minx_two_dee 4290 B check_maxx_two_dee 4300 B check_miny_two_dee 4310 B check_maxy_two_dee 4320.check_maxz 4330 LDR r2,[r0,#8] 4340 FNadrl(3,max_z) 4350 LDR r3,[r3] 4360 CMP r2,r3 4370 BLT is_visible 4380 B is_invisible 4390.check_minz 4400 LDR r2,[r0,#8] 4410 FNadrl(3,min_z) 4420 LDR r3,[r3] 4430 CMP r2,r3 4440 BGT is_visible 4450 B is_invisible 4460.check_minx 4470 MUL r0,r10,r7 4480 ADD r1,r9,r11 4490 BL divide 4500 FNadrl(14,scr_minx) 4510 LDR r14,[r14] 4520 CMP r2,r14 4530 BGT is_visible 4540 B is_invisible 4550.check_minx_two_dee 4560 MOV r0,r7 4570 FNldr(1,scale_2d) 4580 BL divide 4590 FNadrl(14,scr_minx) 4600 LDR r14,[r14] 4610 CMP r2,r14 4620 BGT is_visible 4630 B is_invisible 4640.check_maxx 4650 MUL r0,r10,r7 4660 ADD r1,r9,r11 4670 BL divide 4680 FNadrl(14,scr_maxx) 4690 LDR r14,[r14] 4700 CMP r2,r14 4710 BLT is_visible 4720 B is_invisible 4730.check_maxx_two_dee 4740 MOV r0,r7 4750 FNldr(1,scale_2d) 4760 BL divide 4770 FNadrl(14,scr_maxx) 4780 LDR r14,[r14] 4790 CMP r2,r14 4800 BLT is_visible 4810 B is_invisible 4820.check_miny 4830 MUL r0,r10,r8 4840 ADD r1,r9,r11 4850 BL divide 4860 FNadrl(14,scr_miny) 4870 LDR r14,[r14] 4880 CMP r2,r14 4890 BGT is_visible 4900 B is_invisible 4910.check_miny_two_dee 4920 MOV r0,r8 4930 FNldr(1,scale_2d) 4940 BL divide 4950 FNadrl(14,scr_miny) 4960 LDR r14,[r14] 4970 CMP r2,r14 4980 BGT is_visible 4990 B is_invisible 5000.check_maxy 5010 MUL r0,r10,r8 5020 ADD r1,r9,r11 5030 BL divide 5040 FNadrl(14,scr_maxy) 5050 LDR r14,[r14] 5060 CMP r2,r14 5070 BLT is_visible 5080 B is_invisible 5090.check_maxy_two_dee 5100 MOV r0,r8 5110 FNldr(1,scale_2d) 5120 BL divide 5130 FNadrl(14,scr_maxy) 5140 LDR r14,[r14] 5150 CMP r2,r14 5160 BLT is_visible 5170 B is_invisible 5180 5190.is_invisible 5200 CMP r0,r0 5210 LDMFD (sp)!,{r0-r11,pc} 5220.is_visible 5230 CMN pc,#0 5240 LDMFD (sp)!,{r0-r11,pc} 5250 5260.slide STMFD (sp)!,{r0-r11,link} 5270 MOV r11,r3 5280 LDMIA r0,{r5-r7} 5290 LDMIA r1,{r8-r10} 5300.slide_loop 5310 ADD r2,r5,r8 5320 ADD r3,r6,r9 5330 ADD r4,r7,r10 5340 MOV r2,r2,ASR #1 5350 MOV r3,r3,ASR #1 5360 MOV r4,r4,ASR #1 5370 SUB r0,r5,r8 5380 MOV r14,r0 5390 MUL r1,r0,r14 5400 SUB r0,r6,r9 5410 MOV r14,r0 5420 MLA r1,r0,r14,r1 5430 SUB r0,r7,r10 5440 MOV r14,r0 5450 MLA r1,r0,r14,r1 5460 CMP r1,#slide_limit 5470 BLT well_slid 5480 STMFD (sp)!,{r2-r4} 5490 MOV r0,sp 5500 MOV r1,r11 5510 BL invisible 5520 LDMEQFD (sp)!,{r5-r7} 5530 LDMNEFD (sp)!,{r8-r10} 5540 B slide_loop 5550.well_slid 5560 LDR r0,[sp,#4*2] 5570 STMIA r0,{r2-r4} 5580 LDMFD (sp)!,{r0-r11,pc} 5590 5600 ; r8->angle list,r2 *not* now used 5610 5620.register_polygon 5630 STMFD (sp)!,{r0-r11,link} 5640 MOV r10,r0 5650 LDR r9,[r10,#surf_n] 5660 FNadrl(5,vertices) 5670 MOV r3,r9 5680 MOV r4,#0 5690.rp_copy_vertices 5700 ADD r0,r10,#surf_req 5710 ADD r0,r0,r4 5720 ADD r2,r5,r4 5730 BL rotate_by_list 5740 MOV r0,r2 5750 LDR r1,[sp,#4*1] 5760 BL add 5770 ADD r4,r4,#12 5780 SUBS r3,r3,#1 5790 BNE rp_copy_vertices 5800 MOV r1,#0 5810.rp_clip_loop 5820 LDR r0,[sp,#4*9] 5830 MOV r14,#1 5840 TST r0,r14,LSL r1 5850 BNE rp_no_need_to_clip 5860 MOV r3,#0 5870.rp_loop1 5880 CMP r9,#2 5890 LDMLEFD (sp)!,{r0-r11,pc} 5900 CMP r3,r9 5910 BGE done_rp_loop1 5920 ADD r0,r5,r3,LSL #3 5930 ADD r0,r0,r3,LSL #2 5940 BL invisible 5950 BNE next_rp_loop1 5960 ADD r14,r3,#1 5970 CMP r14,r9 5980 MOVEQ r14,#0 5990 ADD r0,r5,r14,LSL #3 6000 ADD r0,r0,r14,LSL #2 6010 BL invisible 6020 BNE next_rp_loop1 6030 SUBS r14,r3,#1 6040 ADDMI r14,r14,r9 6050 ADD r0,r5,r14,LSL #3 6060 ADD r0,r0,r14,LSL #2 6070 BL invisible 6080 BNE next_rp_loop1 6090 ADD r14,r3,#1 6100 CMP r14,r9 6110 BGE rp_is_last_anyway 6120 STMFD (sp)!,{r1,r7,r8,r10-r11} 6130 MOV r10,r3 6140 SUB r11,r9,#2 6150 ADD r7,r5,r3,LSL #3 6160 ADD r7,r7,r3,LSL #2 6170 ADD r8,r7,#12 6180.rp_del_loop 6190 LDMIA r8!,{r0-r2} 6200 STMIA r7!,{r0-r2} 6210 ADD r10,r10,#1 6220 CMP r10,r11 6230 BLE rp_del_loop 6240 LDMFD (sp)!,{r1,r7,r8,r10-r11} 6250.rp_is_last_anyway 6260 SUB r9,r9,#1 6270 B rp_loop1 6280.next_rp_loop1 6290 ADD r3,r3,#1 6300 B rp_loop1 6310.done_rp_loop1 6320 MOV r3,#0 6330.rp_loop2 6340 CMP r3,r9 6350 BGE done_rp_loop2 6360 ADD r0,r5,r3,LSL #3 6370 ADD r0,r0,r3,LSL #2 6380 BL invisible 6390 BNE next_rp_loop2 6400 SUBS r14,r3,#1 6410 ADDMI r14,r14,r9 6420 ADD r0,r5,r14,LSL #3 6430 ADD r0,r0,r14,LSL #2 6440 BL invisible 6450 BEQ next_rp_loop2 6460 ADD r14,r3,#1 6470 CMP r14,r9 6480 MOVEQ r14,#0 6490 ADD r0,r5,r14,LSL #3 6500 ADD r0,r0,r14,LSL #2 6510 BL invisible 6520 BEQ no_need_to_ins 6530 STMFD (sp)!,{r1,r7,r8,r10} 6540 SUB r10,r9,#1 6550 ADD r7,r5,r10,LSL #3 6560 ADD r7,r7,r10,LSL #2 6570 ADD r8,r7,#12 6580.rp_ins_loop 6590 LDMIA r7,{r0-r2} 6600 STMIA r8,{r0-r2} 6610 SUB r7,r7,#12 6620 SUB r8,r8,#12 6630 SUB r10,r10,#1 6640 CMP r10,r3 6650 BGE rp_ins_loop 6660 LDMFD (sp)!,{r1,r7,r8,r10} 6670 ADD r9,r9,#1 6680.no_need_to_ins 6690 STMFD (sp)!,{r0-r3} 6700 ADD r0,r5,r3,LSL #3 6710 ADD r0,r0,r3,LSL #2 6720 SUBS r14,r3,#1 6730 ADDMI r14,r14,r9 6740 ADD r1,r5,r14,LSL #3 6750 ADD r1,r1,r14,LSL #2 6760 MOV r2,r0 6770 LDR r3,[sp,#4] 6780 BL slide 6790 LDR r3,[sp,#12] 6800 ADD r3,r3,#1 6810 CMP r3,r9 6820 MOVEQ r3,#0 6830 ADD r0,r5,r3,LSL #3 6840 ADD r0,r0,r3,LSL #2 6850 ADD r14,r3,#1 6860 CMP r14,r9 6870 MOVEQ r14,#0 6880 ADD r1,r5,r14,LSL #3 6890 ADD r1,r1,r14,LSL #2 6900 MOV r2,r0 6910 LDR r3,[sp,#4] 6920 BL slide 6930 LDMFD (sp)!,{r0-r3} 6940 ADD r3,r3,#2 6950.next_rp_loop2 6960 ADD r3,r3,#1 6970 B rp_loop2 6980.done_rp_loop2 6990.rp_no_need_to_clip 7000 ADD r1,r1,#1 7010 CMP r1,#6 7020 BLT rp_clip_loop 7030 FNadrl(11,poly_point) 7040 LDMIA r11,{r6-r8} 7050 LDR r0,[sp,#4*9] 7060 TST r0,#bit_merge 7070 LDREQ r0,[r10,#surf_type] 7080 CMPEQ r0,#0 7090 BNE not_new_poly 7100 MOV r0,#disp_req 7110 BL malloc 7120 STRVS r0,[sp] 7130 LDMVSFD (sp)!,{r0-r11,pc} 7140 MOV r4,r0 7150 MOV r0,#&70000000 7160 RSB r1,r0,#0 7170 MOV r2,#0 7180 STMIA r4,{r0-r2} 7190 CMP r7,r8,LSL #2 7200 BNE dont_extend_rp_table 7210 MOV r0,r6 7220 MOV r1,#poly_chunk 7230 BL realloc 7240 STRVS r0,[sp] 7250 LDMVSFD (sp)!,{r0-r11,pc} 7260 MOV r6,r0 7270 ADD r7,r7,#poly_chunk 7280 STMIA r11,{r6-r8} 7290.dont_extend_rp_table 7300 STR r4,[r6,r8,LSL #2] 7310 ADD r8,r8,#1 7320 STR r8,[r11,#8] 7330 MOV r0,#disp_dat 7340 FNstr(0,rp_ptr) 7350.not_new_poly 7360 SUB r2,r8,#1 7370 LDR r0,[r6,r2,LSL #2] 7380 MOV r1,r9,LSL #3 7390 ADD r1,r1,#8 7400 BL realloc 7410 STRVS r0,[sp] 7420 LDMVSFD (sp)!,{r0-r11,pc} 7430 STR r0,[r6,r2,LSL #2] 7440 MOV r4,r0 7450 FNldr(3,rp_ptr) 7460 LDR r0,[r10,#surf_colour] 7470 STR r0,[r4,r3] 7480 ADD r3,r3,#4 7490 STR r9,[r4,r3] 7500 ADD r3,r3,#4 7510 7520 LDR r0,[r4,#disp_n] 7530 CMP r0,#0 7540 ADD r0,r0,#1 7550 STR r0,[r4,#disp_n] 7560 BNE not_first_poly 7570 7580 LDMIA r5,{r0-r2,r6-r8} 7590 MOV r6,r6,ASR #8 7600 MOV r7,r7,ASR #8 7610 MOV r8,r8,ASR #8 7620 ADD r14,r4,#disp_pt1 7630 STMIA r14,{r6-r8} 7640 SUB r6,r6,r0,ASR #8 7650 SUB r7,r7,r1,ASR #8 7660 SUB r8,r8,r2,ASR #8 7670 STMFD (sp)!,{r6-r8} 7680 ADD r6,r5,#24 7690 LDMIA r6,{r6-r8} 7700 MOV r6,r6,ASR #8 7710 MOV r7,r7,ASR #8 7720 MOV r8,r8,ASR #8 7730 SUB r6,r6,r0,ASR #8 7740 SUB r7,r7,r1,ASR #8 7750 SUB r8,r8,r2,ASR #8 7760 LDMFD (sp)!,{r0-r2} 7770 7780 MUL r14,r2,r7 7790 RSB r14,r14,#0 7800 MLA r14,r1,r8,r14 7810 MOV r14,r14,ASR #8 7820 STR r14,[r4,#disp_norm+0] 7830 MUL r14,r0,r8 7840 RSB r14,r14,#0 7850 MLA r14,r2,r6,r14 7860 MOV r14,r14,ASR #8 7870 STR r14,[r4,#disp_norm+4] 7880 MUL r14,r1,r6 7890 RSB r14,r14,#0 7900 MLA r14,r0,r7,r14 7910 MOV r14,r14,ASR #8 7920 STR r14,[r4,#disp_norm+8] 7930 7940.not_first_poly 7950 FNadrl(14,s) 7960 LDMIA r14,{r10,r11} 7970 FNadrl(14,persp_flags) 7980 LDR r14,[r14] 7990 TST r14,#%1 8000 BNE two_dee 8010.persp_loop 8020 LDMIA r5!,{r6-r8} 8030 LDMIA r4,{r0,r1} 8040 CMP r8,r0 8050 MOVLT r0,r8 8060 CMP r8,r1 8070 MOVGT r1,r8 8080 STMIA r4,{r0,r1} 8090 MUL r0,r6,r10 8100 ADD r1,r8,r11 8110 BL divide 8120 STR r2,[r4,r3] 8130 ADD r3,r3,#4 8140 MUL r0,r7,r10 8150 ADD r1,r8,r11 8160 BL divide 8170 STR r2,[r4,r3] 8180 ADD r3,r3,#4 8190 SUBS r9,r9,#1 8200 BNE persp_loop 8210 FNstr(3,rp_ptr) 8220 LDMFD (sp)!,{r0-r11,pc} 8230 8240.two_dee 8250 FNadrl(14,scale_2d) 8260 LDR r11,[r14] 8270.two_dee_loop 8280 LDMIA r5!,{r6-r8} 8290 LDMIA r4,{r0,r1} 8300 CMP r8,r0 8310 MOVLT r0,r8 8320 CMP r8,r1 8330 MOVGT r1,r8 8340 STMIA r4,{r0,r1} 8350 MOV r0,r6 8360 MOV r1,r11 8370 BL divide 8380 STR r2,[r4,r3] 8390 ADD r3,r3,#4 8400 MOV r0,r7 8410 MOV r1,r11 8420 BL divide 8430 STR r2,[r4,r3] 8440 ADD r3,r3,#4 8450 SUBS r9,r9,#1 8460 BNE two_dee_loop 8470 FNstr(3,rp_ptr) 8480 LDMFD (sp)!,{r0-r11,pc} 8490 8500.zmin DCD 0 8510.zmax DCD 0 8520 8530.read_screen_limits 8540 STMFD (sp)!,{r0-r11,link} 8550 ADR r0,vdu_list 8560 FNadrl(1,gwx0) 8570 SWI "XOS_ReadVduVariables" 8580 LDMIA r1,{r2-r9} 8590 MOV r2,r2,LSL r8 8600 SUB r2,r2,r6 8610 SUB r2,r2,#64 8620 MOV r3,r3,LSL r9 8630 SUB r3,r3,r7 8640 SUB r3,r3,#64 8650 MOV r4,r4,LSL r8 8660 SUB r4,r4,r6 8670 ADD r4,r4,#64 8680 MOV r5,r5,LSL r9 8690 SUB r5,r5,r7 8700 ADD r5,r5,#64 8710 FNadrl(1,scr_minx) 8720 STMIA r1,{r2-r5} 8730 LDMFD (sp)!,{r0-r11,pc} 8740 8750.vdu_list 8760 DCD 128 8770 DCD 129 8780 DCD 130 8790 DCD 131 8800 DCD 136 8810 DCD 137 8820 DCD 4 8830 DCD 5 8840 DCD -1 8850 8860 ; r8->list of angles, r0->point to rotate, r2->where to put result 8870 8880.rotate_by_list 8890 STMFD (sp)!,{r0-r2,r8,link} 8900.rotate_by_list_loop 8910 LDR r1,[r8,#-4]! 8920 CMP r1,#0 8930 LDMLTFD (sp)!,{r0-r2,r8,pc} 8940 BL rotate 8950 MOV r0,r2 8960 B rotate_by_list_loop 8970 8980.rotate STMFD (sp)!,{r0-r11,link} 8990 LDMIA r0,{r3-r5} 9000 9010 MOVS r6,r3 9020 RSBMI r6,r6,#0 9030 MOVS r7,r4 9040 RSBMI r7,r7,#0 9050 ORR r6,r6,r7 9060 MOVS r8,r5 9070 RSBMI r8,r8,#0 9080 ORR r6,r6,r8 9090 9100 MOV r11,#0 9110 MOV r14,#(1<<(30-ang_acc)) 9120.rotate_reduce 9130 CMP r14,r6,ASR r11 9140 ADDLE r11,r11,#1 9150 BLE rotate_reduce 9160 9170 LDR r8,[r1,#0] 9180 FNrotate(0,1,2,FALSE) 9190 LDR r8,[r1,#4] 9200 FNrotate(1,0,2,TRUE) 9210 LDR r8,[r1,#8] 9220 FNrotate(2,0,1,FALSE) 9230 9240 STMIA r2,{r3-r5} 9250 LDMFD (sp)!,{r0-r11,pc} 9260 9270 9280.sin_tab FNtable(4*real_angles) 9290] 9300IF pass%>4 THEN 9310 FOR i=0 TO real_angles-1 9320 a=2*PI*(i/real_angles) 9330 sin_tab!(code%+4*i)=(1<<ang_acc)*SINa 9340 NEXT 9350ENDIF 9360=0 9370: 9380DEF FNrotate(r,a0,a1,minus) 9390LOCAL x,y,x2,y2 9400x=a0+3 9410y=a1+3 9420x2=a0+6 9430y2=a1+6 9440[OPT pass% 9450 CMP r8,#0 9460 BEQ rot_lab(r) 9470 FNsin(9,8) 9480 FNcos(10,8) 9490 MOV x,x,ASR r11 9500 MOV y,y,ASR r11 9510 MUL x2,x,r10 9520] 9530IF minus THEN 9540 [OPT pass% 9550 RSB r9,r9,#0 9560 ] 9570ENDIF 9580[OPT pass% 9590 MLA x2,y,r9,x2 9600 RSB r9,r9,#0 9610 MUL y2,x,r9 9620 MLA y2,y,r10,y2 9630 RSB r14,r11,#ang_acc 9640 MOV x,x2,ASR r14 9650 MOV y,y2,ASR r14 9660.rot_lab(r) 9670] 9680=0 9690: 9700DEF FNsin(reg1,reg2) 9710[OPT pass% 9720 MOV r14,reg2,LSL #(32-ang_bits) 9730 MOV r14,r14,LSR #(32-ang_bits+ang_shift) 9740 ADR reg1,sin_tab 9750 LDR reg1,[reg1,r14,LSL #2] 9760] 9770=0 9780: 9790DEF FNcos(reg1,reg2) 9800[OPT pass% 9810 ADD r14,reg2,#angles DIV 4 9820 MOV r14,r14,LSL #(32-ang_bits) 9830 MOV r14,r14,LSR #(32-ang_bits+ang_shift) 9840 ADR reg1,sin_tab 9850 LDR reg1,[reg1,r14,LSL #2] 9860] 9870=0 9880: 9890DEF FNstr(reg,off) 9900[OPT pass% 9910 ADD r14,wp,#off AND &FF00 9920 STR reg,[r14,#off AND &00FF] 9930] 9940=0 9950: 9960DEF FNldr(reg,off) 9970[OPT pass% 9980 ADD r14,wp,#off AND &FF00 9990 LDR reg,[r14,#off AND &00FF] 10000] 10010=0
� >Source.SWI07 � BAU3D_Render source � by DCA (� for 32-bit machines 2� (c) BAU August 1993 <: F� �swi07_name P ="Render" Z: d� �swi07_vars npoly_chunk=1024 xpoly_point=�wk(4) �poly_point_size=�wk(4) �poly_faces=�wk(4) �angles=&10000 �ang_bits=16 �ang_acc=12 �real_ang_bits=10 �$ang_shift=ang_bits-real_ang_bits � real_angles=1<<real_ang_bits �gwx0=�wk(4) �gwy0=�wk(4) �gwx1=�wk(4) �gwy1=�wk(4) �orgx=�wk(4) orgy=�wk(4) xeig=�wk(4) yeig=�wk(4) "scr_minx=�wk(4) ,scr_miny=�wk(4) 6scr_maxx=�wk(4) @scr_maxy=�wk(4) Jrp_ptr=�wk(4) Tpersp_flags=�wk(4) ^ang_list=�wk(64) h rbit_merge=64 |bit_surf=128 �bit_disp=256 �bit_dispall=512 �bit_closed=1024 � �obj_list=0 �obj_name=4 � obj_req=8 �surf_type=0 �surf_colour=4 �surf_n=8 �surf_coords=12 �surf_req=12 �subobj_next=0 subobj_type=4 subobj_flags=8 subobj_offset=12 &subobj_angle=24 0subobj_surfreq=36 :subobj_bounds=36 Dsubobj_req=132 Nslide_limit=16^2 X bdisp_minz=0 ldisp_maxz=4 vdisp_n=8 �disp_norm=12 �disp_pt1=24 �disp_dat=36 �disp_req=disp_dat � �� rot_lab(2) �=0 �: �� �swi07_code � � i,a �[OPT pass% �.render �' STMFD (sp)!,{r0-r11,link} MOV r0,#0 .main_render ! �adrl(14,persp_flags) STR r0,[r14] *" MOV r0,#poly_chunk 4 BL malloc >% LDMVSFD (sp)!,{r0-r11,pc} H MOV r3,r0 R" MOV r4,#poly_chunk \ MOV r5,#0 f �adrl(14,poly_point) p STMIA r14,{r3-r5} z& BL read_screen_limits � � �adrl(8,ang_list) � LDR r2,[sp,#4*2] � MVN r0,#0 � STMIA r8!,{r0,r2} � LDR r7,[sp,#4*1] � MOV r9,#0 � LDR r10,[sp] � BL clip � � �adrl(8,ang_list) � LDR r1,[sp,#4*2] � MVN r0,#0 STMIA r8!,{r0,r2} MOV r9,#0 LDR r7,[sp,#4*1] $ LDR r10,[sp] .! BL do_render_obj 8 B BL plot_faces L �adrl(10,poly_point) V LDMIA r10,{r4-r6} `.free_poly_loop j SUBS r6,r6,#1 t# BMI freed_poly_list ~ LDR r0,[r4],#4 � BL free �" B free_poly_loop �.freed_poly_list � LDR r0,[r10] � BL free �.render_done � STRVS r0,[sp] �% LDMFD (sp)!,{r0-r11,pc} � �.do_render_obj �' STMFD (sp)!,{r0-r11,link} � BL render_obj % LDMFD (sp)!,{r0-r11,pc} L ; r8-> angle list, full descending stack of pointers to 12-byte angles, ; terminated by -1 ( ; r7-> offset 2' ; r9=flags (including bit_dispall) < ; r10-> tree to render F P.render_obj Z& STMFD (sp)!,{r7,r8,link} d' LDR r10,[r10,#obj_list] n.render_obj_loop x CMP r10,#0 �$ LDMEQFD (sp)!,{r7,r8,pc} �* LDR r0,[r10,#subobj_flags] � TST r0,#bit_disp �# TSTEQ r9,#bit_dispall � ; BEQ render_next � TST r0,#bit_surf �! BEQ render_subobj �.render_surf �) LDR r0,[r10,#subobj_type] � MOV r1,r7 �$ BL register_polygon � ADD r14,sp,#4*2 � LDMIA r14,{r3,r4} B render_next .render_subobj SUB sp,sp,#12 " ,) ADD r0,r10,#subobj_offset 6 MOV r2,sp @" BL rotate_by_list J MOV r0,sp T MOV r1,r7 ^ BL add h r) ADD r14,r10,#subobj_angle | LDMIA r14,{r0-r2} � �RS r0,r0,r1 � CMPEQ r2,#0 �3 STRNE r14,[r8],#4 ; add angle to list � �" TST r9,#bit_closed � BEQ not_flat � � �ldr(0,persp_flags) � TST r0,#%1 � BNE not_flat � �- LDR r0,[r10,#subobj_bounds+8] �. LDR r1,[r10,#subobj_bounds+20] CMP r0,r1 BNE not_flat & MOV r0,#0 0 MOV r1,#0 : MOV r2,#&100 D! STMDB (sp)!,{r0-r2} N MOV r0,sp X MOV r2,r0 b" BL rotate_by_list l vI ; now find scalar product between vector to origin of bounding cube � ; and this normal... � � LDMIA r7,{r0-r2} �* ADD r14,r10,#subobj_bounds � LDMIA r14,{r3-r5} � ADD r0,r0,r3 � ADD r1,r1,r4 � ADD r2,r2,r5 �! LDMIA (sp)!,{r3-r5} � MUL r3,r0,r3 � MLA r3,r1,r4,r3 � MLAS r3,r2,r5,r3 �$ BMI rendered_sub_obj .not_flat MOV r7,sp *" STMFD (sp)!,{r9-r11} 4+ LDR r14,[r10,#subobj_flags] > �R r9,r9,r14 H* LDR r10,[r10,#subobj_type] R BL render_obj \" LDMFD (sp)!,{r9-r11} f p.rendered_sub_obj z ADD sp,sp,#12 � LDMIA sp,{r7,r8} �.render_next �* LDR r10,[r10,#subobj_next] �# B render_obj_loop � �. ; r7->offset, r8->angle list, r10->object � ; r9=wholly visible flags � �'.clip STMFD (sp)!,{r0-r11,link} �# SUB sp,sp,#12+12+96 �' LDR r10,[r10,#obj_list] �.clip_loop � CMP r10,#0 BEQ clip_exit + LDR r11,[r10,#subobj_flags] 1 BIC r11,r11,#bit_disp+bit_dispall $! TST r11,#bit_surf .! BNE register_clip 8.clip_subobj B) ADD r14,r10,#subobj_angle L LDMIA r14,{r0-r2} V �RS r0,r0,r1 ` CMPEQ r2,#0 j3 STRNE r14,[r8],#4 ; add angle to list t ~) ADD r0,r10,#subobj_offset � ADD r2,sp,#12 �" BL rotate_by_list � MOV r0,r2 � MOV r1,r7 � BL add � �5 ; sp+12 now contains correct origin of subobject � � MOV r3,#12+12 �) ADD r4,r10,#subobj_bounds �.rotate_bounds � MOV r0,r4 ADD r2,sp,r3 " BL rotate_by_list MOV r0,r2 ADD r1,sp,#12 ( BL add 2 ADD r4,r4,#12 < ADD r3,r3,#12 F CMP r3,#12+12+96 P! BLT rotate_bounds Z d MOV r5,#0 n MOV r7,#0 x.check_bound_loop1 � MOV r14,#1 �! TST r9,r14,LSL r7 �" BNE wholly_visible � � MOV r3,#12+12 � MOV r6,#0 �.check_bound_loop2 � MOV r5,r5,LSL #1 �" TST r5,#%100000000 � BNE was_badz � ADD r0,sp,r3 � MOV r1,r7 � BL invisible BNE not_invis ADD r6,r6,#1 CMP r7,#2 " �RLT r5,r5,#1 ,.not_invis 6 .was_badz @ ADD r3,r3,#12 J CMP r3,#12+12+96 T% BLT check_bound_loop2 ^" �R r5,r5,r5,LSR #8 h BIC r5,r5,#&FF00 r CMP r6,#8 | BEQ clip_next � CMP r5,#0 � BNE whacky_zeds � CMP r6,#0 � �Q r14,#1 �# �REQ r9,r9,r14,LSL r7 �.whacky_zeds �.wholly_visible � ADD r7,r7,#1 � CMP r7,#6 �% BLT check_bound_loop1 �4 CMP r9,#%111111 ; completely visible �' �REQ r11,r11,#bit_dispall �! BEQ register_clip ADD r7,sp,#12 STMFD (sp)!,{r10} * LDR r10,[r10,#subobj_type] & BL clip 0 LDMFD (sp)!,{r10} :.register_clip D$ �R r11,r11,#bit_disp N.clip_next X+ STR r11,[r10,#subobj_flags] b( ADD r14,sp,#12+12+96+4*7 l LDMIA r14,{r7,r8} v* LDR r10,[r10,#subobj_next] � B clip_loop �.clip_exit �# ADD sp,sp,#12+12+96 �% LDMFD (sp)!,{r0-r11,pc} � �&.add STMFD (sp)!,{r0-r8,link} � LDMIA r0,{r3-r5} � LDMIA r1,{r6-r8} � ADD r3,r3,r6 � ADD r4,r4,r7 � ADD r5,r5,r8 � STMIA r2,{r3-r5} �$ LDMFD (sp)!,{r0-r8,pc} .free_tree ' STMFD (sp)!,{r0-r11,link} & LDR r0,[r11,#obj_name] * CMP r0,#0 4 BLNE free >& LDR r8,[r11,#obj_list] H.free_tree_loop R CMP r8,#0 \ BEQ freed_list f) LDR r0,[r8,#subobj_flags] p TST r0,#bit_surf z BNE free_tree2 � MOV r10,r11 �) LDR r11,[r8,#subobj_type] � BL free_tree � MOV r11,r10 �.free_tree2 �( LDR r7,[r8,#subobj_next] � MOV r0,r8 � BL free � MOV r8,r7 �" B free_tree_loop �.freed_list � MOV r0,r11 � BL free % LDMFD (sp)!,{r0-r11,pc} .plot_faces $' STMFD (sp)!,{r0-r11,link} . �adrl(14,poly_point) 8 LDMIA r14,{r9-r11} B CMP r11,#0 L CMPNE r9,#0 V% LDMEQFD (sp)!,{r0-r11,pc} ` MOV r0,r11 j MOV r1,r9 t ADR r2,compare ~" SWI "XOS_HeapSort" � �adrl(14,flags) � LDR r3,[r14] �.plot_face_loop � LDR r8,[r9],#4 �# LDR r7,[r8,#disp_n] �# ADD r8,r8,#disp_dat �.plot_face_loop2 � LDMIA r8!,{r2,r6} � MOV r0,r6 � MOV r1,r8 � BL swi(00) �# ADD r8,r8,r6,LSL #3 SUBS r7,r7,#1 # BNE plot_face_loop2 SUBS r11,r11,#1 " BNE plot_face_loop (% LDMFD (sp)!,{r0-r11,pc} 2 <.compare F& LDR r2,[r0,#disp_minz] P& LDR r3,[r1,#disp_maxz] Z CMP r2,r3 d BGE comp_retlt n& LDR r2,[r1,#disp_minz] x& LDR r3,[r0,#disp_maxz] � CMP r2,r3 � BGE comp_retgt �& LDR r2,[r0,#disp_minz] �& LDR r3,[r1,#disp_minz] � CMP r2,r3 � BLT comp_retgt �.comp_retlt � RSBS r0,r0,#0 � MOV pc,link �.comp_retgt � CMP r0,#0 � MOV pc,link � .invisible ' STMFD (sp)!,{r0-r11,link} LDMIA r0,{r7-r9} " �adrl(14,s) ,! LDMIA r14,{r10,r11} 6 �ldr(14,persp_flags) @ TST r14,#1 J ADDNE r1,r1,#6 T# ADD pc,pc,r1,LSL #2 ^ DCD 0 h B check_maxz r B check_minz | B check_minx � B check_maxx � B check_miny � B check_maxy � B check_maxz � B check_minz �& B check_minx_two_dee �& B check_maxx_two_dee �& B check_miny_two_dee �& B check_maxy_two_dee �.check_maxz � LDR r2,[r0,#8] � �adrl(3,max_z) � LDR r3,[r3] CMP r2,r3 BLT is_visible B is_invisible &.check_minz 0 LDR r2,[r0,#8] : �adrl(3,min_z) D LDR r3,[r3] N CMP r2,r3 X BGT is_visible b B is_invisible l.check_minx v MUL r0,r10,r7 � ADD r1,r9,r11 � BL divide � �adrl(14,scr_minx) � LDR r14,[r14] � CMP r2,r14 � BGT is_visible � B is_invisible �.check_minx_two_dee � MOV r0,r7 � �ldr(1,scale_2d) � BL divide � �adrl(14,scr_minx) � LDR r14,[r14] CMP r2,r14 BGT is_visible B is_invisible .check_maxx * MUL r0,r10,r7 4 ADD r1,r9,r11 > BL divide H �adrl(14,scr_maxx) R LDR r14,[r14] \ CMP r2,r14 f BLT is_visible p B is_invisible z.check_maxx_two_dee � MOV r0,r7 � �ldr(1,scale_2d) � BL divide � �adrl(14,scr_maxx) � LDR r14,[r14] � CMP r2,r14 � BLT is_visible � B is_invisible �.check_miny � MUL r0,r10,r8 � ADD r1,r9,r11 � BL divide � �adrl(14,scr_miny) LDR r14,[r14] CMP r2,r14 BGT is_visible $ B is_invisible ..check_miny_two_dee 8 MOV r0,r8 B �ldr(1,scale_2d) L BL divide V �adrl(14,scr_miny) ` LDR r14,[r14] j CMP r2,r14 t BGT is_visible ~ B is_invisible �.check_maxy � MUL r0,r10,r8 � ADD r1,r9,r11 � BL divide � �adrl(14,scr_maxy) � LDR r14,[r14] � CMP r2,r14 � BLT is_visible � B is_invisible �.check_maxy_two_dee � MOV r0,r8 � �ldr(1,scale_2d) BL divide �adrl(14,scr_maxy) LDR r14,[r14] CMP r2,r14 ( BLT is_visible 2 B is_invisible < F.is_invisible P CMP r0,r0 Z% LDMFD (sp)!,{r0-r11,pc} d.is_visible n CMN pc,#0 x% LDMFD (sp)!,{r0-r11,pc} � �'.slide STMFD (sp)!,{r0-r11,link} � MOV r11,r3 � LDMIA r0,{r5-r7} � LDMIA r1,{r8-r10} �.slide_loop � ADD r2,r5,r8 � ADD r3,r6,r9 � ADD r4,r7,r10 � MOV r2,r2,ASR #1 � MOV r3,r3,ASR #1 � MOV r4,r4,ASR #1 � SUB r0,r5,r8 MOV r14,r0 MUL r1,r0,r14 SUB r0,r6,r9 " MOV r14,r0 , MLA r1,r0,r14,r1 6 SUB r0,r7,r10 @ MOV r14,r0 J MLA r1,r0,r14,r1 T# CMP r1,#slide_limit ^ BLT well_slid h! STMFD (sp)!,{r2-r4} r MOV r0,sp | MOV r1,r11 � BL invisible �! LDMEQFD (sp)!,{r5-r7} �" LDMNEFD (sp)!,{r8-r10} � B slide_loop �.well_slid � LDR r0,[sp,#4*2] � STMIA r0,{r2-r4} �% LDMFD (sp)!,{r0-r11,pc} � �' ; r8->angle list,r2 *not* now used � �.register_polygon �' STMFD (sp)!,{r0-r11,link} MOV r10,r0 $ LDR r9,[r10,#surf_n] �adrl(5,vertices) & MOV r3,r9 0 MOV r4,#0 :.rp_copy_vertices D$ ADD r0,r10,#surf_req N ADD r0,r0,r4 X ADD r2,r5,r4 b" BL rotate_by_list l MOV r0,r2 v LDR r1,[sp,#4*1] � BL add � ADD r4,r4,#12 � SUBS r3,r3,#1 �$ BNE rp_copy_vertices � MOV r1,#0 �.rp_clip_loop � LDR r0,[sp,#4*9] � MOV r14,#1 �! TST r0,r14,LSL r1 �& BNE rp_no_need_to_clip � MOV r3,#0 � .rp_loop1 � CMP r9,#2 % LDMLEFD (sp)!,{r0-r11,pc} CMP r3,r9 ! BGE done_rp_loop1 # ADD r0,r5,r3,LSL #3 *# ADD r0,r0,r3,LSL #2 4 BL invisible >! BNE next_rp_loop1 H ADD r14,r3,#1 R CMP r14,r9 \ �Q r14,#0 f$ ADD r0,r5,r14,LSL #3 p$ ADD r0,r0,r14,LSL #2 z BL invisible �! BNE next_rp_loop1 � SUBS r14,r3,#1 � ADDMI r14,r14,r9 �$ ADD r0,r5,r14,LSL #3 �$ ADD r0,r0,r14,LSL #2 � BL invisible �! BNE next_rp_loop1 � ADD r14,r3,#1 � CMP r14,r9 �% BGE rp_is_last_anyway �, STMFD (sp)!,{r1,r7,r8,r10-r11} � MOV r10,r3 � SUB r11,r9,#2 # ADD r7,r5,r3,LSL #3 # ADD r7,r7,r3,LSL #2 ADD r8,r7,#12 $.rp_del_loop . LDMIA r8!,{r0-r2} 8 STMIA r7!,{r0-r2} B ADD r10,r10,#1 L CMP r10,r11 V BLE rp_del_loop `, LDMFD (sp)!,{r1,r7,r8,r10-r11} j.rp_is_last_anyway t SUB r9,r9,#1 ~ B rp_loop1 �.next_rp_loop1 � ADD r3,r3,#1 � B rp_loop1 �.done_rp_loop1 � MOV r3,#0 � .rp_loop2 � CMP r3,r9 �! BGE done_rp_loop2 �# ADD r0,r5,r3,LSL #3 �# ADD r0,r0,r3,LSL #2 � BL invisible �! BNE next_rp_loop2 SUBS r14,r3,#1 ADDMI r14,r14,r9 $ ADD r0,r5,r14,LSL #3 $ ADD r0,r0,r14,LSL #2 ( BL invisible 2! BEQ next_rp_loop2 < ADD r14,r3,#1 F CMP r14,r9 P �Q r14,#0 Z$ ADD r0,r5,r14,LSL #3 d$ ADD r0,r0,r14,LSL #2 n BL invisible x" BEQ no_need_to_ins �( STMFD (sp)!,{r1,r7,r8,r10} � SUB r10,r9,#1 �$ ADD r7,r5,r10,LSL #3 �$ ADD r7,r7,r10,LSL #2 � ADD r8,r7,#12 �.rp_ins_loop � LDMIA r7,{r0-r2} � STMIA r8,{r0-r2} � SUB r7,r7,#12 � SUB r8,r8,#12 � SUB r10,r10,#1 � CMP r10,r3 � BGE rp_ins_loop ( LDMFD (sp)!,{r1,r7,r8,r10} ADD r9,r9,#1 .no_need_to_ins "! STMFD (sp)!,{r0-r3} ,# ADD r0,r5,r3,LSL #3 6# ADD r0,r0,r3,LSL #2 @ SUBS r14,r3,#1 J ADDMI r14,r14,r9 T$ ADD r1,r5,r14,LSL #3 ^$ ADD r1,r1,r14,LSL #2 h MOV r2,r0 r LDR r3,[sp,#4] | BL slide � LDR r3,[sp,#12] � ADD r3,r3,#1 � CMP r3,r9 � �Q r3,#0 �# ADD r0,r5,r3,LSL #3 �# ADD r0,r0,r3,LSL #2 � ADD r14,r3,#1 � CMP r14,r9 � �Q r14,#0 �$ ADD r1,r5,r14,LSL #3 �$ ADD r1,r1,r14,LSL #2 � MOV r2,r0 � LDR r3,[sp,#4] BL slide ! LDMFD (sp)!,{r0-r3} ADD r3,r3,#2 &.next_rp_loop2 0 ADD r3,r3,#1 : B rp_loop2 D.done_rp_loop2 N.rp_no_need_to_clip X ADD r1,r1,#1 b CMP r1,#6 l BLT rp_clip_loop v �adrl(11,poly_point) � LDMIA r11,{r6-r8} � LDR r0,[sp,#4*9] �! TST r0,#bit_merge �' LDREQ r0,[r10,#surf_type] � CMPEQ r0,#0 � BNE not_new_poly � MOV r0,#disp_req � BL malloc � STRVS r0,[sp] �% LDMVSFD (sp)!,{r0-r11,pc} � MOV r4,r0 �! MOV r0,#&70000000 � RSB r1,r0,#0 MOV r2,#0 STMIA r4,{r0-r2} CMP r7,r8,LSL #2 ( BNE dont_extend_rp_table * MOV r0,r6 4" MOV r1,#poly_chunk > BL realloc H STRVS r0,[sp] R% LDMVSFD (sp)!,{r0-r11,pc} \ MOV r6,r0 f% ADD r7,r7,#poly_chunk p STMIA r11,{r6-r8} z.dont_extend_rp_table �% STR r4,[r6,r8,LSL #2] � ADD r8,r8,#1 � STR r8,[r11,#8] � MOV r0,#disp_dat � �str(0,rp_ptr) �.not_new_poly � SUB r2,r8,#1 �% LDR r0,[r6,r2,LSL #2] � MOV r1,r9,LSL #3 � ADD r1,r1,#8 � BL realloc � STRVS r0,[sp] �% LDMVSFD (sp)!,{r0-r11,pc} % STR r0,[r6,r2,LSL #2] MOV r4,r0 �ldr(3,rp_ptr) $) LDR r0,[r10,#surf_colour] . STR r0,[r4,r3] 8 ADD r3,r3,#4 B STR r9,[r4,r3] L ADD r3,r3,#4 V `# LDR r0,[r4,#disp_n] j CMP r0,#0 t ADD r0,r0,#1 ~# STR r0,[r4,#disp_n] �" BNE not_first_poly � �$ LDMIA r5,{r0-r2,r6-r8} � MOV r6,r6,ASR #8 � MOV r7,r7,ASR #8 � MOV r8,r8,ASR #8 �$ ADD r14,r4,#disp_pt1 � STMIA r14,{r6-r8} �# SUB r6,r6,r0,ASR #8 �# SUB r7,r7,r1,ASR #8 �# SUB r8,r8,r2,ASR #8 �! STMFD (sp)!,{r6-r8} ADD r6,r5,#24 LDMIA r6,{r6-r8} MOV r6,r6,ASR #8 MOV r7,r7,ASR #8 ( MOV r8,r8,ASR #8 2# SUB r6,r6,r0,ASR #8 <# SUB r7,r7,r1,ASR #8 F# SUB r8,r8,r2,ASR #8 P! LDMFD (sp)!,{r0-r2} Z d MUL r14,r2,r7 n RSB r14,r14,#0 x! MLA r14,r1,r8,r14 �" MOV r14,r14,ASR #8 �) STR r14,[r4,#disp_norm+0] � MUL r14,r0,r8 � RSB r14,r14,#0 �! MLA r14,r2,r6,r14 �" MOV r14,r14,ASR #8 �) STR r14,[r4,#disp_norm+4] � MUL r14,r1,r6 � RSB r14,r14,#0 �! MLA r14,r0,r7,r14 �" MOV r14,r14,ASR #8 �) STR r14,[r4,#disp_norm+8] � .not_first_poly �adrl(14,s) ! LDMIA r14,{r10,r11} "! �adrl(14,persp_flags) , LDR r14,[r14] 6 TST r14,#%1 @ BNE two_dee J.persp_loop T LDMIA r5!,{r6-r8} ^ LDMIA r4,{r0,r1} h CMP r8,r0 r MOVLT r0,r8 | CMP r8,r1 � MOVGT r1,r8 � STMIA r4,{r0,r1} � MUL r0,r6,r10 � ADD r1,r8,r11 � BL divide � STR r2,[r4,r3] � ADD r3,r3,#4 � MUL r0,r7,r10 � ADD r1,r8,r11 � BL divide � STR r2,[r4,r3] � ADD r3,r3,#4 � SUBS r9,r9,#1 BNE persp_loop �str(3,rp_ptr) % LDMFD (sp)!,{r0-r11,pc} & 0.two_dee : �adrl(14,scale_2d) D LDR r11,[r14] N.two_dee_loop X LDMIA r5!,{r6-r8} b LDMIA r4,{r0,r1} l CMP r8,r0 v MOVLT r0,r8 � CMP r8,r1 � MOVGT r1,r8 � STMIA r4,{r0,r1} � MOV r0,r6 � MOV r1,r11 � BL divide � STR r2,[r4,r3] � ADD r3,r3,#4 � MOV r0,r7 � MOV r1,r11 � BL divide � STR r2,[r4,r3] � ADD r3,r3,#4 ! SUBS r9,r9,#1 ! BNE two_dee_loop ! �str(3,rp_ptr) ! % LDMFD (sp)!,{r0-r11,pc} !* !4.zmin DCD 0 !>.zmax DCD 0 !H !R.read_screen_limits !\' STMFD (sp)!,{r0-r11,link} !f ADR r0,vdu_list !p �adrl(1,gwx0) !z* SWI "XOS_ReadVduVariables" !� LDMIA r1,{r2-r9} !� MOV r2,r2,LSL r8 !� SUB r2,r2,r6 !� SUB r2,r2,#64 !� MOV r3,r3,LSL r9 !� SUB r3,r3,r7 !� SUB r3,r3,#64 !� MOV r4,r4,LSL r8 !� SUB r4,r4,r6 !� ADD r4,r4,#64 !� MOV r5,r5,LSL r9 !� SUB r5,r5,r7 !� ADD r5,r5,#64 " �adrl(1,scr_minx) " STMIA r1,{r2-r5} "% LDMFD (sp)!,{r0-r11,pc} "$ ". .vdu_list "8 DCD 128 "B DCD 129 "L DCD 130 "V DCD 131 "` DCD 136 "j DCD 137 "t DCD 4 "~ DCD 5 "� DCD -1 "� "�G ; r8->list of angles, r0->point to rotate, r2->where to put result "� "�.rotate_by_list "�) STMFD (sp)!,{r0-r2,r8,link} "�.rotate_by_list_loop "� LDR r1,[r8,#-4]! "� CMP r1,#0 "�' LDMLTFD (sp)!,{r0-r2,r8,pc} "� BL rotate "� MOV r0,r2 # ' B rotate_by_list_loop # #'.rotate STMFD (sp)!,{r0-r11,link} # LDMIA r0,{r3-r5} #( #2 MOVS r6,r3 #< RSBMI r6,r6,#0 #F MOVS r7,r4 #P RSBMI r7,r7,#0 #Z �R r6,r6,r7 #d MOVS r8,r5 #n RSBMI r8,r8,#0 #x �R r6,r6,r8 #� #� MOV r11,#0 #�* MOV r14,#(1<<(30-ang_acc)) #�.rotate_reduce #�" CMP r14,r6,ASR r11 #� ADDLE r11,r11,#1 #�! BLE rotate_reduce #� #� LDR r8,[r1,#0] #� �rotate(0,1,2,�) #� LDR r8,[r1,#4] #� �rotate(1,0,2,�) #� LDR r8,[r1,#8] $ �rotate(2,0,1,�) $ $ STMIA r2,{r3-r5} $"% LDMFD (sp)!,{r0-r11,pc} $, $6 $@".sin_tab �table(4*real_angles) $J] $T� pass%>4 � $^ � i=0 � real_angles-1 $h a=2*�*(i/real_angles) $r) sin_tab!(code%+4*i)=(1<<ang_acc)*�a $| � $�� $�=0 $�: $�� �rotate(r,a0,a1,minus) $�� x,y,x2,y2 $� x=a0+3 $� y=a1+3 $�x2=a0+6 $�y2=a1+6 $�[OPT pass% $� CMP r8,#0 $� BEQ rot_lab(r) $� �sin(9,8) % �cos(10,8) % MOV x,x,ASR r11 % MOV y,y,ASR r11 %& MUL x2,x,r10 %0] %: � minus � %D [OPT pass% %N RSB r9,r9,#0 %X ] %b� %l[OPT pass% %v MLA x2,y,r9,x2 %� RSB r9,r9,#0 %� MUL y2,x,r9 %� MLA y2,y,r10,y2 %�$ RSB r14,r11,#ang_acc %� MOV x,x2,ASR r14 %� MOV y,y2,ASR r14 %�.rot_lab(r) %�] %�=0 %�: %�� �sin(reg1,reg2) %�[OPT pass% %�/ MOV r14,reg2,LSL #(32-ang_bits) &8 MOV r14,r14,LSR #(32-ang_bits+ang_shift) & ADR reg1,sin_tab &* LDR reg1,[reg1,r14,LSL #2] & ] &*=0 &4: &>� �cos(reg1,reg2) &H[OPT pass% &R( ADD r14,reg2,#angles � 4 &\. MOV r14,r14,LSL #(32-ang_bits) &f8 MOV r14,r14,LSR #(32-ang_bits+ang_shift) &p ADR reg1,sin_tab &z* LDR reg1,[reg1,r14,LSL #2] &�] &�=0 &�: &�� �str(reg,off) &�[OPT pass% &�' ADD r14,wp,#off � &FF00 &�* STR reg,[r14,#off � &00FF] &�] &�=0 &�: &�� �ldr(reg,off) &�[OPT pass% &�' ADD r14,wp,#off � &FF00 '* LDR reg,[r14,#off � &00FF] '] '=0 �
00000000 0d 00 0a 13 f4 20 3e 53 6f 75 72 63 65 2e 53 57 |..... >Source.SW| 00000010 49 30 37 0d 00 14 19 f4 20 42 41 55 33 44 5f 52 |I07..... BAU3D_R| 00000020 65 6e 64 65 72 20 73 6f 75 72 63 65 0d 00 1e 0c |ender source....| 00000030 f4 20 62 79 20 44 43 41 0d 00 28 19 f4 20 66 6f |. by DCA..(.. fo| 00000040 72 20 33 32 2d 62 69 74 20 6d 61 63 68 69 6e 65 |r 32-bit machine| 00000050 73 0d 00 32 19 f4 20 28 63 29 20 42 41 55 20 41 |s..2.. (c) BAU A| 00000060 75 67 75 73 74 20 31 39 39 33 0d 00 3c 05 3a 0d |ugust 1993..<.:.| 00000070 00 46 11 dd 20 a4 73 77 69 30 37 5f 6e 61 6d 65 |.F.. .swi07_name| 00000080 0d 00 50 0d 3d 22 52 65 6e 64 65 72 22 0d 00 5a |..P.="Render"..Z| 00000090 05 3a 0d 00 64 11 dd 20 a4 73 77 69 30 37 5f 76 |.:..d.. .swi07_v| 000000a0 61 72 73 0d 00 6e 13 70 6f 6c 79 5f 63 68 75 6e |ars..n.poly_chun| 000000b0 6b 3d 31 30 32 34 0d 00 78 15 70 6f 6c 79 5f 70 |k=1024..x.poly_p| 000000c0 6f 69 6e 74 3d a4 77 6b 28 34 29 0d 00 82 1a 70 |oint=.wk(4)....p| 000000d0 6f 6c 79 5f 70 6f 69 6e 74 5f 73 69 7a 65 3d a4 |oly_point_size=.| 000000e0 77 6b 28 34 29 0d 00 8c 15 70 6f 6c 79 5f 66 61 |wk(4)....poly_fa| 000000f0 63 65 73 3d a4 77 6b 28 34 29 0d 00 96 11 61 6e |ces=.wk(4)....an| 00000100 67 6c 65 73 3d 26 31 30 30 30 30 0d 00 a0 0f 61 |gles=&10000....a| 00000110 6e 67 5f 62 69 74 73 3d 31 36 0d 00 aa 0e 61 6e |ng_bits=16....an| 00000120 67 5f 61 63 63 3d 31 32 0d 00 b4 14 72 65 61 6c |g_acc=12....real| 00000130 5f 61 6e 67 5f 62 69 74 73 3d 31 30 0d 00 be 24 |_ang_bits=10...$| 00000140 61 6e 67 5f 73 68 69 66 74 3d 61 6e 67 5f 62 69 |ang_shift=ang_bi| 00000150 74 73 2d 72 65 61 6c 5f 61 6e 67 5f 62 69 74 73 |ts-real_ang_bits| 00000160 0d 00 c8 20 72 65 61 6c 5f 61 6e 67 6c 65 73 3d |... real_angles=| 00000170 31 3c 3c 72 65 61 6c 5f 61 6e 67 5f 62 69 74 73 |1<<real_ang_bits| 00000180 0d 00 d2 0f 67 77 78 30 3d a4 77 6b 28 34 29 0d |....gwx0=.wk(4).| 00000190 00 dc 0f 67 77 79 30 3d a4 77 6b 28 34 29 0d 00 |...gwy0=.wk(4)..| 000001a0 e6 0f 67 77 78 31 3d a4 77 6b 28 34 29 0d 00 f0 |..gwx1=.wk(4)...| 000001b0 0f 67 77 79 31 3d a4 77 6b 28 34 29 0d 00 fa 0f |.gwy1=.wk(4)....| 000001c0 6f 72 67 78 3d a4 77 6b 28 34 29 0d 01 04 0f 6f |orgx=.wk(4)....o| 000001d0 72 67 79 3d a4 77 6b 28 34 29 0d 01 0e 0f 78 65 |rgy=.wk(4)....xe| 000001e0 69 67 3d a4 77 6b 28 34 29 0d 01 18 0f 79 65 69 |ig=.wk(4)....yei| 000001f0 67 3d a4 77 6b 28 34 29 0d 01 22 13 73 63 72 5f |g=.wk(4)..".scr_| 00000200 6d 69 6e 78 3d a4 77 6b 28 34 29 0d 01 2c 13 73 |minx=.wk(4)..,.s| 00000210 63 72 5f 6d 69 6e 79 3d a4 77 6b 28 34 29 0d 01 |cr_miny=.wk(4)..| 00000220 36 13 73 63 72 5f 6d 61 78 78 3d a4 77 6b 28 34 |6.scr_maxx=.wk(4| 00000230 29 0d 01 40 13 73 63 72 5f 6d 61 78 79 3d a4 77 |)..@.scr_maxy=.w| 00000240 6b 28 34 29 0d 01 4a 11 72 70 5f 70 74 72 3d a4 |k(4)..J.rp_ptr=.| 00000250 77 6b 28 34 29 0d 01 54 16 70 65 72 73 70 5f 66 |wk(4)..T.persp_f| 00000260 6c 61 67 73 3d a4 77 6b 28 34 29 0d 01 5e 14 61 |lags=.wk(4)..^.a| 00000270 6e 67 5f 6c 69 73 74 3d a4 77 6b 28 36 34 29 0d |ng_list=.wk(64).| 00000280 01 68 04 0d 01 72 10 62 69 74 5f 6d 65 72 67 65 |.h...r.bit_merge| 00000290 3d 36 34 0d 01 7c 10 62 69 74 5f 73 75 72 66 3d |=64..|.bit_surf=| 000002a0 31 32 38 0d 01 86 10 62 69 74 5f 64 69 73 70 3d |128....bit_disp=| 000002b0 32 35 36 0d 01 90 13 62 69 74 5f 64 69 73 70 61 |256....bit_dispa| 000002c0 6c 6c 3d 35 31 32 0d 01 9a 13 62 69 74 5f 63 6c |ll=512....bit_cl| 000002d0 6f 73 65 64 3d 31 30 32 34 0d 01 a4 04 0d 01 ae |osed=1024.......| 000002e0 0e 6f 62 6a 5f 6c 69 73 74 3d 30 0d 01 b8 0e 6f |.obj_list=0....o| 000002f0 62 6a 5f 6e 61 6d 65 3d 34 0d 01 c2 0d 6f 62 6a |bj_name=4....obj| 00000300 5f 72 65 71 3d 38 0d 01 cc 0f 73 75 72 66 5f 74 |_req=8....surf_t| 00000310 79 70 65 3d 30 0d 01 d6 11 73 75 72 66 5f 63 6f |ype=0....surf_co| 00000320 6c 6f 75 72 3d 34 0d 01 e0 0c 73 75 72 66 5f 6e |lour=4....surf_n| 00000330 3d 38 0d 01 ea 12 73 75 72 66 5f 63 6f 6f 72 64 |=8....surf_coord| 00000340 73 3d 31 32 0d 01 f4 0f 73 75 72 66 5f 72 65 71 |s=12....surf_req| 00000350 3d 31 32 0d 01 fe 11 73 75 62 6f 62 6a 5f 6e 65 |=12....subobj_ne| 00000360 78 74 3d 30 0d 02 08 11 73 75 62 6f 62 6a 5f 74 |xt=0....subobj_t| 00000370 79 70 65 3d 34 0d 02 12 12 73 75 62 6f 62 6a 5f |ype=4....subobj_| 00000380 66 6c 61 67 73 3d 38 0d 02 1c 14 73 75 62 6f 62 |flags=8....subob| 00000390 6a 5f 6f 66 66 73 65 74 3d 31 32 0d 02 26 13 73 |j_offset=12..&.s| 000003a0 75 62 6f 62 6a 5f 61 6e 67 6c 65 3d 32 34 0d 02 |ubobj_angle=24..| 000003b0 30 15 73 75 62 6f 62 6a 5f 73 75 72 66 72 65 71 |0.subobj_surfreq| 000003c0 3d 33 36 0d 02 3a 14 73 75 62 6f 62 6a 5f 62 6f |=36..:.subobj_bo| 000003d0 75 6e 64 73 3d 33 36 0d 02 44 12 73 75 62 6f 62 |unds=36..D.subob| 000003e0 6a 5f 72 65 71 3d 31 33 32 0d 02 4e 14 73 6c 69 |j_req=132..N.sli| 000003f0 64 65 5f 6c 69 6d 69 74 3d 31 36 5e 32 0d 02 58 |de_limit=16^2..X| 00000400 04 0d 02 62 0f 64 69 73 70 5f 6d 69 6e 7a 3d 30 |...b.disp_minz=0| 00000410 0d 02 6c 0f 64 69 73 70 5f 6d 61 78 7a 3d 34 0d |..l.disp_maxz=4.| 00000420 02 76 0c 64 69 73 70 5f 6e 3d 38 0d 02 80 10 64 |.v.disp_n=8....d| 00000430 69 73 70 5f 6e 6f 72 6d 3d 31 32 0d 02 8a 0f 64 |isp_norm=12....d| 00000440 69 73 70 5f 70 74 31 3d 32 34 0d 02 94 0f 64 69 |isp_pt1=24....di| 00000450 73 70 5f 64 61 74 3d 33 36 0d 02 9e 15 64 69 73 |sp_dat=36....dis| 00000460 70 5f 72 65 71 3d 64 69 73 70 5f 64 61 74 0d 02 |p_req=disp_dat..| 00000470 a8 04 0d 02 b2 10 de 20 72 6f 74 5f 6c 61 62 28 |....... rot_lab(| 00000480 32 29 0d 02 bc 06 3d 30 0d 02 c6 05 3a 0d 02 d0 |2)....=0....:...| 00000490 11 dd 20 a4 73 77 69 30 37 5f 63 6f 64 65 0d 02 |.. .swi07_code..| 000004a0 da 09 ea 20 69 2c 61 0d 02 e4 0e 5b 4f 50 54 20 |... i,a....[OPT | 000004b0 70 61 73 73 25 0d 02 ee 0b 2e 72 65 6e 64 65 72 |pass%.....render| 000004c0 0d 02 f8 27 20 20 20 20 20 20 20 20 53 54 4d 46 |...' STMF| 000004d0 44 20 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 31 |D (sp)!,{r0-r1| 000004e0 31 2c 6c 69 6e 6b 7d 0d 03 02 19 20 20 20 20 20 |1,link}.... | 000004f0 20 20 20 4d 4f 56 20 20 20 20 20 72 30 2c 23 30 | MOV r0,#0| 00000500 0d 03 0c 10 2e 6d 61 69 6e 5f 72 65 6e 64 65 72 |.....main_render| 00000510 0d 03 16 21 20 20 20 20 20 20 20 20 a4 61 64 72 |...! .adr| 00000520 6c 28 31 34 2c 70 65 72 73 70 5f 66 6c 61 67 73 |l(14,persp_flags| 00000530 29 0d 03 20 1c 20 20 20 20 20 20 20 20 53 54 52 |).. . STR| 00000540 20 20 20 20 20 72 30 2c 5b 72 31 34 5d 0d 03 2a | r0,[r14]..*| 00000550 22 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 |" MOV | 00000560 20 72 30 2c 23 70 6f 6c 79 5f 63 68 75 6e 6b 0d | r0,#poly_chunk.| 00000570 03 34 1a 20 20 20 20 20 20 20 20 42 4c 20 20 20 |.4. BL | 00000580 20 20 20 6d 61 6c 6c 6f 63 0d 03 3e 25 20 20 20 | malloc..>% | 00000590 20 20 20 20 20 4c 44 4d 56 53 46 44 20 28 73 70 | LDMVSFD (sp| 000005a0 29 21 2c 7b 72 30 2d 72 31 31 2c 70 63 7d 0d 03 |)!,{r0-r11,pc}..| 000005b0 48 19 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 |H. MOV | 000005c0 20 20 72 33 2c 72 30 0d 03 52 22 20 20 20 20 20 | r3,r0..R" | 000005d0 20 20 20 4d 4f 56 20 20 20 20 20 72 34 2c 23 70 | MOV r4,#p| 000005e0 6f 6c 79 5f 63 68 75 6e 6b 0d 03 5c 19 20 20 20 |oly_chunk..\. | 000005f0 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 35 2c | MOV r5,| 00000600 23 30 0d 03 66 20 20 20 20 20 20 20 20 20 a4 61 |#0..f .a| 00000610 64 72 6c 28 31 34 2c 70 6f 6c 79 5f 70 6f 69 6e |drl(14,poly_poin| 00000620 74 29 0d 03 70 1f 20 20 20 20 20 20 20 20 53 54 |t)..p. ST| 00000630 4d 49 41 20 20 20 72 31 34 2c 7b 72 33 2d 72 35 |MIA r14,{r3-r5| 00000640 7d 0d 03 7a 26 20 20 20 20 20 20 20 20 42 4c 20 |}..z& BL | 00000650 20 20 20 20 20 72 65 61 64 5f 73 63 72 65 65 6e | read_screen| 00000660 5f 6c 69 6d 69 74 73 0d 03 84 04 0d 03 8e 1d 20 |_limits........ | 00000670 20 20 20 20 20 20 20 a4 61 64 72 6c 28 38 2c 61 | .adrl(8,a| 00000680 6e 67 5f 6c 69 73 74 29 0d 03 98 20 20 20 20 20 |ng_list)... | 00000690 20 20 20 20 4c 44 52 20 20 20 20 20 72 32 2c 5b | LDR r2,[| 000006a0 73 70 2c 23 34 2a 32 5d 0d 03 a2 19 20 20 20 20 |sp,#4*2].... | 000006b0 20 20 20 20 4d 56 4e 20 20 20 20 20 72 30 2c 23 | MVN r0,#| 000006c0 30 0d 03 ac 1f 20 20 20 20 20 20 20 20 53 54 4d |0.... STM| 000006d0 49 41 20 20 20 72 38 21 2c 7b 72 30 2c 72 32 7d |IA r8!,{r0,r2}| 000006e0 0d 03 b6 20 20 20 20 20 20 20 20 20 4c 44 52 20 |... LDR | 000006f0 20 20 20 20 72 37 2c 5b 73 70 2c 23 34 2a 31 5d | r7,[sp,#4*1]| 00000700 0d 03 c0 19 20 20 20 20 20 20 20 20 4d 4f 56 20 |.... MOV | 00000710 20 20 20 20 72 39 2c 23 30 0d 03 ca 1c 20 20 20 | r9,#0.... | 00000720 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 31 30 | LDR r10| 00000730 2c 5b 73 70 5d 0d 03 d4 18 20 20 20 20 20 20 20 |,[sp].... | 00000740 20 42 4c 20 20 20 20 20 20 63 6c 69 70 0d 03 de | BL clip...| 00000750 04 0d 03 e8 1d 20 20 20 20 20 20 20 20 a4 61 64 |..... .ad| 00000760 72 6c 28 38 2c 61 6e 67 5f 6c 69 73 74 29 0d 03 |rl(8,ang_list)..| 00000770 f2 20 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 |. LDR | 00000780 20 20 72 31 2c 5b 73 70 2c 23 34 2a 32 5d 0d 03 | r1,[sp,#4*2]..| 00000790 fc 19 20 20 20 20 20 20 20 20 4d 56 4e 20 20 20 |.. MVN | 000007a0 20 20 72 30 2c 23 30 0d 04 06 1f 20 20 20 20 20 | r0,#0.... | 000007b0 20 20 20 53 54 4d 49 41 20 20 20 72 38 21 2c 7b | STMIA r8!,{| 000007c0 72 30 2c 72 32 7d 0d 04 10 19 20 20 20 20 20 20 |r0,r2}.... | 000007d0 20 20 4d 4f 56 20 20 20 20 20 72 39 2c 23 30 0d | MOV r9,#0.| 000007e0 04 1a 20 20 20 20 20 20 20 20 20 4c 44 52 20 20 |.. LDR | 000007f0 20 20 20 72 37 2c 5b 73 70 2c 23 34 2a 31 5d 0d | r7,[sp,#4*1].| 00000800 04 24 1c 20 20 20 20 20 20 20 20 4c 44 52 20 20 |.$. LDR | 00000810 20 20 20 72 31 30 2c 5b 73 70 5d 0d 04 2e 21 20 | r10,[sp]...! | 00000820 20 20 20 20 20 20 20 42 4c 20 20 20 20 20 20 64 | BL d| 00000830 6f 5f 72 65 6e 64 65 72 5f 6f 62 6a 0d 04 38 04 |o_render_obj..8.| 00000840 0d 04 42 1e 20 20 20 20 20 20 20 20 42 4c 20 20 |..B. BL | 00000850 20 20 20 20 70 6c 6f 74 5f 66 61 63 65 73 0d 04 | plot_faces..| 00000860 4c 20 20 20 20 20 20 20 20 20 a4 61 64 72 6c 28 |L .adrl(| 00000870 31 30 2c 70 6f 6c 79 5f 70 6f 69 6e 74 29 0d 04 |10,poly_point)..| 00000880 56 1f 20 20 20 20 20 20 20 20 4c 44 4d 49 41 20 |V. LDMIA | 00000890 20 20 72 31 30 2c 7b 72 34 2d 72 36 7d 0d 04 60 | r10,{r4-r6}..`| 000008a0 13 2e 66 72 65 65 5f 70 6f 6c 79 5f 6c 6f 6f 70 |..free_poly_loop| 000008b0 0d 04 6a 1c 20 20 20 20 20 20 20 20 53 55 42 53 |..j. SUBS| 000008c0 20 20 20 20 72 36 2c 72 36 2c 23 31 0d 04 74 23 | r6,r6,#1..t#| 000008d0 20 20 20 20 20 20 20 20 42 4d 49 20 20 20 20 20 | BMI | 000008e0 66 72 65 65 64 5f 70 6f 6c 79 5f 6c 69 73 74 0d |freed_poly_list.| 000008f0 04 7e 1e 20 20 20 20 20 20 20 20 4c 44 52 20 20 |.~. LDR | 00000900 20 20 20 72 30 2c 5b 72 34 5d 2c 23 34 0d 04 88 | r0,[r4],#4...| 00000910 18 20 20 20 20 20 20 20 20 42 4c 20 20 20 20 20 |. BL | 00000920 20 66 72 65 65 0d 04 92 22 20 20 20 20 20 20 20 | free..." | 00000930 20 42 20 20 20 20 20 20 20 66 72 65 65 5f 70 6f | B free_po| 00000940 6c 79 5f 6c 6f 6f 70 0d 04 9c 14 2e 66 72 65 65 |ly_loop.....free| 00000950 64 5f 70 6f 6c 79 5f 6c 69 73 74 0d 04 a6 1c 20 |d_poly_list.... | 00000960 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 | LDR r| 00000970 30 2c 5b 72 31 30 5d 0d 04 b0 18 20 20 20 20 20 |0,[r10].... | 00000980 20 20 20 42 4c 20 20 20 20 20 20 66 72 65 65 0d | BL free.| 00000990 04 ba 10 2e 72 65 6e 64 65 72 5f 64 6f 6e 65 0d |....render_done.| 000009a0 04 c4 1b 20 20 20 20 20 20 20 20 53 54 52 56 53 |... STRVS| 000009b0 20 20 20 72 30 2c 5b 73 70 5d 0d 04 ce 25 20 20 | r0,[sp]...% | 000009c0 20 20 20 20 20 20 4c 44 4d 46 44 20 20 20 28 73 | LDMFD (s| 000009d0 70 29 21 2c 7b 72 30 2d 72 31 31 2c 70 63 7d 0d |p)!,{r0-r11,pc}.| 000009e0 04 d8 05 20 0d 04 e2 12 2e 64 6f 5f 72 65 6e 64 |... .....do_rend| 000009f0 65 72 5f 6f 62 6a 0d 04 ec 27 20 20 20 20 20 20 |er_obj...' | 00000a00 20 20 53 54 4d 46 44 20 20 20 28 73 70 29 21 2c | STMFD (sp)!,| 00000a10 7b 72 30 2d 72 31 31 2c 6c 69 6e 6b 7d 0d 04 f6 |{r0-r11,link}...| 00000a20 1e 20 20 20 20 20 20 20 20 42 4c 20 20 20 20 20 |. BL | 00000a30 20 72 65 6e 64 65 72 5f 6f 62 6a 0d 05 00 25 20 | render_obj...% | 00000a40 20 20 20 20 20 20 20 4c 44 4d 46 44 20 20 20 28 | LDMFD (| 00000a50 73 70 29 21 2c 7b 72 30 2d 72 31 31 2c 70 63 7d |sp)!,{r0-r11,pc}| 00000a60 0d 05 0a 04 0d 05 14 4c 20 3b 20 72 38 2d 3e 20 |.......L ; r8-> | 00000a70 61 6e 67 6c 65 20 6c 69 73 74 2c 20 66 75 6c 6c |angle list, full| 00000a80 20 64 65 73 63 65 6e 64 69 6e 67 20 73 74 61 63 | descending stac| 00000a90 6b 20 6f 66 20 70 6f 69 6e 74 65 72 73 20 74 6f |k of pointers to| 00000aa0 20 31 32 2d 62 79 74 65 20 61 6e 67 6c 65 73 2c | 12-byte angles,| 00000ab0 0d 05 1e 17 20 3b 20 74 65 72 6d 69 6e 61 74 65 |.... ; terminate| 00000ac0 64 20 62 79 20 2d 31 0d 05 28 12 20 3b 20 72 37 |d by -1..(. ; r7| 00000ad0 2d 3e 20 6f 66 66 73 65 74 0d 05 32 27 20 3b 20 |-> offset..2' ; | 00000ae0 72 39 3d 66 6c 61 67 73 20 28 69 6e 63 6c 75 64 |r9=flags (includ| 00000af0 69 6e 67 20 62 69 74 5f 64 69 73 70 61 6c 6c 29 |ing bit_dispall)| 00000b00 0d 05 3c 1b 20 3b 20 72 31 30 2d 3e 20 74 72 65 |..<. ; r10-> tre| 00000b10 65 20 74 6f 20 72 65 6e 64 65 72 0d 05 46 04 0d |e to render..F..| 00000b20 05 50 0f 2e 72 65 6e 64 65 72 5f 6f 62 6a 0d 05 |.P..render_obj..| 00000b30 5a 26 20 20 20 20 20 20 20 20 53 54 4d 46 44 20 |Z& STMFD | 00000b40 20 20 28 73 70 29 21 2c 7b 72 37 2c 72 38 2c 6c | (sp)!,{r7,r8,l| 00000b50 69 6e 6b 7d 0d 05 64 27 20 20 20 20 20 20 20 20 |ink}..d' | 00000b60 4c 44 52 20 20 20 20 20 72 31 30 2c 5b 72 31 30 |LDR r10,[r10| 00000b70 2c 23 6f 62 6a 5f 6c 69 73 74 5d 0d 05 6e 14 2e |,#obj_list]..n..| 00000b80 72 65 6e 64 65 72 5f 6f 62 6a 5f 6c 6f 6f 70 0d |render_obj_loop.| 00000b90 05 78 1a 20 20 20 20 20 20 20 20 43 4d 50 20 20 |.x. CMP | 00000ba0 20 20 20 72 31 30 2c 23 30 0d 05 82 24 20 20 20 | r10,#0...$ | 00000bb0 20 20 20 20 20 4c 44 4d 45 51 46 44 20 28 73 70 | LDMEQFD (sp| 00000bc0 29 21 2c 7b 72 37 2c 72 38 2c 70 63 7d 0d 05 8c |)!,{r7,r8,pc}...| 00000bd0 2a 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 |* LDR | 00000be0 20 72 30 2c 5b 72 31 30 2c 23 73 75 62 6f 62 6a | r0,[r10,#subobj| 00000bf0 5f 66 6c 61 67 73 5d 0d 05 96 20 20 20 20 20 20 |_flags]... | 00000c00 20 20 20 54 53 54 20 20 20 20 20 72 30 2c 23 62 | TST r0,#b| 00000c10 69 74 5f 64 69 73 70 0d 05 a0 23 20 20 20 20 20 |it_disp...# | 00000c20 20 20 20 54 53 54 45 51 20 20 20 72 39 2c 23 62 | TSTEQ r9,#b| 00000c30 69 74 5f 64 69 73 70 61 6c 6c 0d 05 aa 1f 20 3b |it_dispall.... ;| 00000c40 20 20 20 20 20 20 42 45 51 20 20 20 20 20 72 65 | BEQ re| 00000c50 6e 64 65 72 5f 6e 65 78 74 0d 05 b4 20 20 20 20 |nder_next... | 00000c60 20 20 20 20 20 54 53 54 20 20 20 20 20 72 30 2c | TST r0,| 00000c70 23 62 69 74 5f 73 75 72 66 0d 05 be 21 20 20 20 |#bit_surf...! | 00000c80 20 20 20 20 20 42 45 51 20 20 20 20 20 72 65 6e | BEQ ren| 00000c90 64 65 72 5f 73 75 62 6f 62 6a 0d 05 c8 10 2e 72 |der_subobj.....r| 00000ca0 65 6e 64 65 72 5f 73 75 72 66 0d 05 d2 29 20 20 |ender_surf...) | 00000cb0 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 30 | LDR r0| 00000cc0 2c 5b 72 31 30 2c 23 73 75 62 6f 62 6a 5f 74 79 |,[r10,#subobj_ty| 00000cd0 70 65 5d 0d 05 dc 19 20 20 20 20 20 20 20 20 4d |pe].... M| 00000ce0 4f 56 20 20 20 20 20 72 31 2c 72 37 0d 05 e6 24 |OV r1,r7...$| 00000cf0 20 20 20 20 20 20 20 20 42 4c 20 20 20 20 20 20 | BL | 00000d00 72 65 67 69 73 74 65 72 5f 70 6f 6c 79 67 6f 6e |register_polygon| 00000d10 0d 05 f0 1f 20 20 20 20 20 20 20 20 41 44 44 20 |.... ADD | 00000d20 20 20 20 20 72 31 34 2c 73 70 2c 23 34 2a 32 0d | r14,sp,#4*2.| 00000d30 05 fa 1f 20 20 20 20 20 20 20 20 4c 44 4d 49 41 |... LDMIA| 00000d40 20 20 20 72 31 34 2c 7b 72 33 2c 72 34 7d 0d 06 | r14,{r3,r4}..| 00000d50 04 1f 20 20 20 20 20 20 20 20 42 20 20 20 20 20 |.. B | 00000d60 20 20 72 65 6e 64 65 72 5f 6e 65 78 74 0d 06 0e | render_next...| 00000d70 12 2e 72 65 6e 64 65 72 5f 73 75 62 6f 62 6a 0d |..render_subobj.| 00000d80 06 18 1d 20 20 20 20 20 20 20 20 53 55 42 20 20 |... SUB | 00000d90 20 20 20 73 70 2c 73 70 2c 23 31 32 0d 06 22 04 | sp,sp,#12..".| 00000da0 0d 06 2c 29 20 20 20 20 20 20 20 20 41 44 44 20 |..,) ADD | 00000db0 20 20 20 20 72 30 2c 72 31 30 2c 23 73 75 62 6f | r0,r10,#subo| 00000dc0 62 6a 5f 6f 66 66 73 65 74 0d 06 36 19 20 20 20 |bj_offset..6. | 00000dd0 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 32 2c | MOV r2,| 00000de0 73 70 0d 06 40 22 20 20 20 20 20 20 20 20 42 4c |sp..@" BL| 00000df0 20 20 20 20 20 20 72 6f 74 61 74 65 5f 62 79 5f | rotate_by_| 00000e00 6c 69 73 74 0d 06 4a 19 20 20 20 20 20 20 20 20 |list..J. | 00000e10 4d 4f 56 20 20 20 20 20 72 30 2c 73 70 0d 06 54 |MOV r0,sp..T| 00000e20 19 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 |. MOV | 00000e30 20 72 31 2c 72 37 0d 06 5e 17 20 20 20 20 20 20 | r1,r7..^. | 00000e40 20 20 42 4c 20 20 20 20 20 20 61 64 64 0d 06 68 | BL add..h| 00000e50 05 20 0d 06 72 29 20 20 20 20 20 20 20 20 41 44 |. ..r) AD| 00000e60 44 20 20 20 20 20 72 31 34 2c 72 31 30 2c 23 73 |D r14,r10,#s| 00000e70 75 62 6f 62 6a 5f 61 6e 67 6c 65 0d 06 7c 1f 20 |ubobj_angle..|. | 00000e80 20 20 20 20 20 20 20 4c 44 4d 49 41 20 20 20 72 | LDMIA r| 00000e90 31 34 2c 7b 72 30 2d 72 32 7d 0d 06 86 1b 20 20 |14,{r0-r2}.... | 00000ea0 20 20 20 20 20 20 84 52 53 20 20 20 20 72 30 2c | .RS r0,| 00000eb0 72 30 2c 72 31 0d 06 90 19 20 20 20 20 20 20 20 |r0,r1.... | 00000ec0 20 43 4d 50 45 51 20 20 20 72 32 2c 23 30 0d 06 | CMPEQ r2,#0..| 00000ed0 9a 33 20 20 20 20 20 20 20 20 53 54 52 4e 45 20 |.3 STRNE | 00000ee0 20 20 72 31 34 2c 5b 72 38 5d 2c 23 34 20 3b 20 | r14,[r8],#4 ; | 00000ef0 61 64 64 20 61 6e 67 6c 65 20 74 6f 20 6c 69 73 |add angle to lis| 00000f00 74 0d 06 a4 04 0d 06 ae 22 20 20 20 20 20 20 20 |t......." | 00000f10 20 54 53 54 20 20 20 20 20 72 39 2c 23 62 69 74 | TST r9,#bit| 00000f20 5f 63 6c 6f 73 65 64 0d 06 b8 1c 20 20 20 20 20 |_closed.... | 00000f30 20 20 20 42 45 51 20 20 20 20 20 6e 6f 74 5f 66 | BEQ not_f| 00000f40 6c 61 74 0d 06 c2 04 0d 06 cc 1f 20 20 20 20 20 |lat........ | 00000f50 20 20 20 a4 6c 64 72 28 30 2c 70 65 72 73 70 5f | .ldr(0,persp_| 00000f60 66 6c 61 67 73 29 0d 06 d6 1a 20 20 20 20 20 20 |flags).... | 00000f70 20 20 54 53 54 20 20 20 20 20 72 30 2c 23 25 31 | TST r0,#%1| 00000f80 0d 06 e0 1c 20 20 20 20 20 20 20 20 42 4e 45 20 |.... BNE | 00000f90 20 20 20 20 6e 6f 74 5f 66 6c 61 74 0d 06 ea 04 | not_flat....| 00000fa0 0d 06 f4 2d 20 20 20 20 20 20 20 20 4c 44 52 20 |...- LDR | 00000fb0 20 20 20 20 72 30 2c 5b 72 31 30 2c 23 73 75 62 | r0,[r10,#sub| 00000fc0 6f 62 6a 5f 62 6f 75 6e 64 73 2b 38 5d 0d 06 fe |obj_bounds+8]...| 00000fd0 2e 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 |. LDR | 00000fe0 20 72 31 2c 5b 72 31 30 2c 23 73 75 62 6f 62 6a | r1,[r10,#subobj| 00000ff0 5f 62 6f 75 6e 64 73 2b 32 30 5d 0d 07 08 19 20 |_bounds+20].... | 00001000 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 | CMP r| 00001010 30 2c 72 31 0d 07 12 1c 20 20 20 20 20 20 20 20 |0,r1.... | 00001020 42 4e 45 20 20 20 20 20 6e 6f 74 5f 66 6c 61 74 |BNE not_flat| 00001030 0d 07 1c 05 20 0d 07 26 19 20 20 20 20 20 20 20 |.... ..&. | 00001040 20 4d 4f 56 20 20 20 20 20 72 30 2c 23 30 0d 07 | MOV r0,#0..| 00001050 30 19 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 |0. MOV | 00001060 20 20 72 31 2c 23 30 0d 07 3a 1c 20 20 20 20 20 | r1,#0..:. | 00001070 20 20 20 4d 4f 56 20 20 20 20 20 72 32 2c 23 26 | MOV r2,#&| 00001080 31 30 30 0d 07 44 21 20 20 20 20 20 20 20 20 53 |100..D! S| 00001090 54 4d 44 42 20 20 20 28 73 70 29 21 2c 7b 72 30 |TMDB (sp)!,{r0| 000010a0 2d 72 32 7d 0d 07 4e 19 20 20 20 20 20 20 20 20 |-r2}..N. | 000010b0 4d 4f 56 20 20 20 20 20 72 30 2c 73 70 0d 07 58 |MOV r0,sp..X| 000010c0 19 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 |. MOV | 000010d0 20 72 32 2c 72 30 0d 07 62 22 20 20 20 20 20 20 | r2,r0..b" | 000010e0 20 20 42 4c 20 20 20 20 20 20 72 6f 74 61 74 65 | BL rotate| 000010f0 5f 62 79 5f 6c 69 73 74 0d 07 6c 05 20 0d 07 76 |_by_list..l. ..v| 00001100 49 20 20 3b 20 6e 6f 77 20 66 69 6e 64 20 73 63 |I ; now find sc| 00001110 61 6c 61 72 20 70 72 6f 64 75 63 74 20 62 65 74 |alar product bet| 00001120 77 65 65 6e 20 76 65 63 74 6f 72 20 74 6f 20 6f |ween vector to o| 00001130 72 69 67 69 6e 20 6f 66 20 62 6f 75 6e 64 69 6e |rigin of boundin| 00001140 67 20 63 75 62 65 0d 07 80 1a 20 20 3b 20 61 6e |g cube.... ; an| 00001150 64 20 74 68 69 73 20 6e 6f 72 6d 61 6c 2e 2e 2e |d this normal...| 00001160 0d 07 8a 05 20 0d 07 94 1e 20 20 20 20 20 20 20 |.... .... | 00001170 20 4c 44 4d 49 41 20 20 20 72 37 2c 7b 72 30 2d | LDMIA r7,{r0-| 00001180 72 32 7d 0d 07 9e 2a 20 20 20 20 20 20 20 20 41 |r2}...* A| 00001190 44 44 20 20 20 20 20 72 31 34 2c 72 31 30 2c 23 |DD r14,r10,#| 000011a0 73 75 62 6f 62 6a 5f 62 6f 75 6e 64 73 0d 07 a8 |subobj_bounds...| 000011b0 1f 20 20 20 20 20 20 20 20 4c 44 4d 49 41 20 20 |. LDMIA | 000011c0 20 72 31 34 2c 7b 72 33 2d 72 35 7d 0d 07 b2 1c | r14,{r3-r5}....| 000011d0 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 000011e0 72 30 2c 72 30 2c 72 33 0d 07 bc 1c 20 20 20 20 |r0,r0,r3.... | 000011f0 20 20 20 20 41 44 44 20 20 20 20 20 72 31 2c 72 | ADD r1,r| 00001200 31 2c 72 34 0d 07 c6 1c 20 20 20 20 20 20 20 20 |1,r4.... | 00001210 41 44 44 20 20 20 20 20 72 32 2c 72 32 2c 72 35 |ADD r2,r2,r5| 00001220 0d 07 d0 21 20 20 20 20 20 20 20 20 4c 44 4d 49 |...! LDMI| 00001230 41 20 20 20 28 73 70 29 21 2c 7b 72 33 2d 72 35 |A (sp)!,{r3-r5| 00001240 7d 0d 07 da 1c 20 20 20 20 20 20 20 20 4d 55 4c |}.... MUL| 00001250 20 20 20 20 20 72 33 2c 72 30 2c 72 33 0d 07 e4 | r3,r0,r3...| 00001260 1f 20 20 20 20 20 20 20 20 4d 4c 41 20 20 20 20 |. MLA | 00001270 20 72 33 2c 72 31 2c 72 34 2c 72 33 0d 07 ee 1f | r3,r1,r4,r3....| 00001280 20 20 20 20 20 20 20 20 4d 4c 41 53 20 20 20 20 | MLAS | 00001290 72 33 2c 72 32 2c 72 35 2c 72 33 0d 07 f8 24 20 |r3,r2,r5,r3...$ | 000012a0 20 20 20 20 20 20 20 42 4d 49 20 20 20 20 20 72 | BMI r| 000012b0 65 6e 64 65 72 65 64 5f 73 75 62 5f 6f 62 6a 0d |endered_sub_obj.| 000012c0 08 02 05 20 0d 08 0c 0d 2e 6e 6f 74 5f 66 6c 61 |... .....not_fla| 000012d0 74 0d 08 16 05 20 0d 08 20 19 20 20 20 20 20 20 |t.... .. . | 000012e0 20 20 4d 4f 56 20 20 20 20 20 72 37 2c 73 70 0d | MOV r7,sp.| 000012f0 08 2a 22 20 20 20 20 20 20 20 20 53 54 4d 46 44 |.*" STMFD| 00001300 20 20 20 28 73 70 29 21 2c 7b 72 39 2d 72 31 31 | (sp)!,{r9-r11| 00001310 7d 0d 08 34 2b 20 20 20 20 20 20 20 20 4c 44 52 |}..4+ LDR| 00001320 20 20 20 20 20 72 31 34 2c 5b 72 31 30 2c 23 73 | r14,[r10,#s| 00001330 75 62 6f 62 6a 5f 66 6c 61 67 73 5d 0d 08 3e 1c |ubobj_flags]..>.| 00001340 20 20 20 20 20 20 20 20 84 52 20 20 20 20 20 72 | .R r| 00001350 39 2c 72 39 2c 72 31 34 0d 08 48 2a 20 20 20 20 |9,r9,r14..H* | 00001360 20 20 20 20 4c 44 52 20 20 20 20 20 72 31 30 2c | LDR r10,| 00001370 5b 72 31 30 2c 23 73 75 62 6f 62 6a 5f 74 79 70 |[r10,#subobj_typ| 00001380 65 5d 0d 08 52 1e 20 20 20 20 20 20 20 20 42 4c |e]..R. BL| 00001390 20 20 20 20 20 20 72 65 6e 64 65 72 5f 6f 62 6a | render_obj| 000013a0 0d 08 5c 22 20 20 20 20 20 20 20 20 4c 44 4d 46 |..\" LDMF| 000013b0 44 20 20 20 28 73 70 29 21 2c 7b 72 39 2d 72 31 |D (sp)!,{r9-r1| 000013c0 31 7d 0d 08 66 05 20 0d 08 70 15 2e 72 65 6e 64 |1}..f. ..p..rend| 000013d0 65 72 65 64 5f 73 75 62 5f 6f 62 6a 0d 08 7a 1d |ered_sub_obj..z.| 000013e0 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 000013f0 73 70 2c 73 70 2c 23 31 32 0d 08 84 1e 20 20 20 |sp,sp,#12.... | 00001400 20 20 20 20 20 4c 44 4d 49 41 20 20 20 73 70 2c | LDMIA sp,| 00001410 7b 72 37 2c 72 38 7d 0d 08 8e 10 2e 72 65 6e 64 |{r7,r8}.....rend| 00001420 65 72 5f 6e 65 78 74 0d 08 98 2a 20 20 20 20 20 |er_next...* | 00001430 20 20 20 4c 44 52 20 20 20 20 20 72 31 30 2c 5b | LDR r10,[| 00001440 72 31 30 2c 23 73 75 62 6f 62 6a 5f 6e 65 78 74 |r10,#subobj_next| 00001450 5d 0d 08 a2 23 20 20 20 20 20 20 20 20 42 20 20 |]...# B | 00001460 20 20 20 20 20 72 65 6e 64 65 72 5f 6f 62 6a 5f | render_obj_| 00001470 6c 6f 6f 70 0d 08 ac 04 0d 08 b6 2e 20 3b 20 72 |loop........ ; r| 00001480 37 2d 3e 6f 66 66 73 65 74 2c 20 72 38 2d 3e 61 |7->offset, r8->a| 00001490 6e 67 6c 65 20 6c 69 73 74 2c 20 72 31 30 2d 3e |ngle list, r10->| 000014a0 6f 62 6a 65 63 74 0d 08 c0 1e 20 3b 20 72 39 3d |object.... ; r9=| 000014b0 77 68 6f 6c 6c 79 20 76 69 73 69 62 6c 65 20 66 |wholly visible f| 000014c0 6c 61 67 73 0d 08 ca 04 0d 08 d4 27 2e 63 6c 69 |lags.......'.cli| 000014d0 70 20 20 20 53 54 4d 46 44 20 20 20 28 73 70 29 |p STMFD (sp)| 000014e0 21 2c 7b 72 30 2d 72 31 31 2c 6c 69 6e 6b 7d 0d |!,{r0-r11,link}.| 000014f0 08 de 23 20 20 20 20 20 20 20 20 53 55 42 20 20 |..# SUB | 00001500 20 20 20 73 70 2c 73 70 2c 23 31 32 2b 31 32 2b | sp,sp,#12+12+| 00001510 39 36 0d 08 e8 27 20 20 20 20 20 20 20 20 4c 44 |96...' LD| 00001520 52 20 20 20 20 20 72 31 30 2c 5b 72 31 30 2c 23 |R r10,[r10,#| 00001530 6f 62 6a 5f 6c 69 73 74 5d 0d 08 f2 0e 2e 63 6c |obj_list].....cl| 00001540 69 70 5f 6c 6f 6f 70 0d 08 fc 1a 20 20 20 20 20 |ip_loop.... | 00001550 20 20 20 43 4d 50 20 20 20 20 20 72 31 30 2c 23 | CMP r10,#| 00001560 30 0d 09 06 1d 20 20 20 20 20 20 20 20 42 45 51 |0.... BEQ| 00001570 20 20 20 20 20 63 6c 69 70 5f 65 78 69 74 0d 09 | clip_exit..| 00001580 10 2b 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 |.+ LDR | 00001590 20 20 72 31 31 2c 5b 72 31 30 2c 23 73 75 62 6f | r11,[r10,#subo| 000015a0 62 6a 5f 66 6c 61 67 73 5d 0d 09 1a 31 20 20 20 |bj_flags]...1 | 000015b0 20 20 20 20 20 42 49 43 20 20 20 20 20 72 31 31 | BIC r11| 000015c0 2c 72 31 31 2c 23 62 69 74 5f 64 69 73 70 2b 62 |,r11,#bit_disp+b| 000015d0 69 74 5f 64 69 73 70 61 6c 6c 0d 09 24 21 20 20 |it_dispall..$! | 000015e0 20 20 20 20 20 20 54 53 54 20 20 20 20 20 72 31 | TST r1| 000015f0 31 2c 23 62 69 74 5f 73 75 72 66 0d 09 2e 21 20 |1,#bit_surf...! | 00001600 20 20 20 20 20 20 20 42 4e 45 20 20 20 20 20 72 | BNE r| 00001610 65 67 69 73 74 65 72 5f 63 6c 69 70 0d 09 38 10 |egister_clip..8.| 00001620 2e 63 6c 69 70 5f 73 75 62 6f 62 6a 0d 09 42 29 |.clip_subobj..B)| 00001630 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 00001640 72 31 34 2c 72 31 30 2c 23 73 75 62 6f 62 6a 5f |r14,r10,#subobj_| 00001650 61 6e 67 6c 65 0d 09 4c 1f 20 20 20 20 20 20 20 |angle..L. | 00001660 20 4c 44 4d 49 41 20 20 20 72 31 34 2c 7b 72 30 | LDMIA r14,{r0| 00001670 2d 72 32 7d 0d 09 56 1b 20 20 20 20 20 20 20 20 |-r2}..V. | 00001680 84 52 53 20 20 20 20 72 30 2c 72 30 2c 72 31 0d |.RS r0,r0,r1.| 00001690 09 60 19 20 20 20 20 20 20 20 20 43 4d 50 45 51 |.`. CMPEQ| 000016a0 20 20 20 72 32 2c 23 30 0d 09 6a 33 20 20 20 20 | r2,#0..j3 | 000016b0 20 20 20 20 53 54 52 4e 45 20 20 20 72 31 34 2c | STRNE r14,| 000016c0 5b 72 38 5d 2c 23 34 20 3b 20 61 64 64 20 61 6e |[r8],#4 ; add an| 000016d0 67 6c 65 20 74 6f 20 6c 69 73 74 0d 09 74 04 0d |gle to list..t..| 000016e0 09 7e 29 20 20 20 20 20 20 20 20 41 44 44 20 20 |.~) ADD | 000016f0 20 20 20 72 30 2c 72 31 30 2c 23 73 75 62 6f 62 | r0,r10,#subob| 00001700 6a 5f 6f 66 66 73 65 74 0d 09 88 1d 20 20 20 20 |j_offset.... | 00001710 20 20 20 20 41 44 44 20 20 20 20 20 72 32 2c 73 | ADD r2,s| 00001720 70 2c 23 31 32 0d 09 92 22 20 20 20 20 20 20 20 |p,#12..." | 00001730 20 42 4c 20 20 20 20 20 20 72 6f 74 61 74 65 5f | BL rotate_| 00001740 62 79 5f 6c 69 73 74 0d 09 9c 19 20 20 20 20 20 |by_list.... | 00001750 20 20 20 4d 4f 56 20 20 20 20 20 72 30 2c 72 32 | MOV r0,r2| 00001760 0d 09 a6 19 20 20 20 20 20 20 20 20 4d 4f 56 20 |.... MOV | 00001770 20 20 20 20 72 31 2c 72 37 0d 09 b0 17 20 20 20 | r1,r7.... | 00001780 20 20 20 20 20 42 4c 20 20 20 20 20 20 61 64 64 | BL add| 00001790 0d 09 ba 04 0d 09 c4 35 20 3b 20 73 70 2b 31 32 |.......5 ; sp+12| 000017a0 20 6e 6f 77 20 63 6f 6e 74 61 69 6e 73 20 63 6f | now contains co| 000017b0 72 72 65 63 74 20 6f 72 69 67 69 6e 20 6f 66 20 |rrect origin of | 000017c0 73 75 62 6f 62 6a 65 63 74 0d 09 ce 04 0d 09 d8 |subobject.......| 000017d0 1d 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 |. MOV | 000017e0 20 72 33 2c 23 31 32 2b 31 32 0d 09 e2 29 20 20 | r3,#12+12...) | 000017f0 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 34 | ADD r4| 00001800 2c 72 31 30 2c 23 73 75 62 6f 62 6a 5f 62 6f 75 |,r10,#subobj_bou| 00001810 6e 64 73 0d 09 ec 12 2e 72 6f 74 61 74 65 5f 62 |nds.....rotate_b| 00001820 6f 75 6e 64 73 0d 09 f6 19 20 20 20 20 20 20 20 |ounds.... | 00001830 20 4d 4f 56 20 20 20 20 20 72 30 2c 72 34 0d 0a | MOV r0,r4..| 00001840 00 1c 20 20 20 20 20 20 20 20 41 44 44 20 20 20 |.. ADD | 00001850 20 20 72 32 2c 73 70 2c 72 33 0d 0a 0a 22 20 20 | r2,sp,r3..." | 00001860 20 20 20 20 20 20 42 4c 20 20 20 20 20 20 72 6f | BL ro| 00001870 74 61 74 65 5f 62 79 5f 6c 69 73 74 0d 0a 14 19 |tate_by_list....| 00001880 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 | MOV | 00001890 72 30 2c 72 32 0d 0a 1e 1d 20 20 20 20 20 20 20 |r0,r2.... | 000018a0 20 41 44 44 20 20 20 20 20 72 31 2c 73 70 2c 23 | ADD r1,sp,#| 000018b0 31 32 0d 0a 28 17 20 20 20 20 20 20 20 20 42 4c |12..(. BL| 000018c0 20 20 20 20 20 20 61 64 64 0d 0a 32 1d 20 20 20 | add..2. | 000018d0 20 20 20 20 20 41 44 44 20 20 20 20 20 72 34 2c | ADD r4,| 000018e0 72 34 2c 23 31 32 0d 0a 3c 1d 20 20 20 20 20 20 |r4,#12..<. | 000018f0 20 20 41 44 44 20 20 20 20 20 72 33 2c 72 33 2c | ADD r3,r3,| 00001900 23 31 32 0d 0a 46 20 20 20 20 20 20 20 20 20 43 |#12..F C| 00001910 4d 50 20 20 20 20 20 72 33 2c 23 31 32 2b 31 32 |MP r3,#12+12| 00001920 2b 39 36 0d 0a 50 21 20 20 20 20 20 20 20 20 42 |+96..P! B| 00001930 4c 54 20 20 20 20 20 72 6f 74 61 74 65 5f 62 6f |LT rotate_bo| 00001940 75 6e 64 73 0d 0a 5a 04 0d 0a 64 19 20 20 20 20 |unds..Z...d. | 00001950 20 20 20 20 4d 4f 56 20 20 20 20 20 72 35 2c 23 | MOV r5,#| 00001960 30 0d 0a 6e 19 20 20 20 20 20 20 20 20 4d 4f 56 |0..n. MOV| 00001970 20 20 20 20 20 72 37 2c 23 30 0d 0a 78 16 2e 63 | r7,#0..x..c| 00001980 68 65 63 6b 5f 62 6f 75 6e 64 5f 6c 6f 6f 70 31 |heck_bound_loop1| 00001990 0d 0a 82 1a 20 20 20 20 20 20 20 20 4d 4f 56 20 |.... MOV | 000019a0 20 20 20 20 72 31 34 2c 23 31 0d 0a 8c 21 20 20 | r14,#1...! | 000019b0 20 20 20 20 20 20 54 53 54 20 20 20 20 20 72 39 | TST r9| 000019c0 2c 72 31 34 2c 4c 53 4c 20 72 37 0d 0a 96 22 20 |,r14,LSL r7..." | 000019d0 20 20 20 20 20 20 20 42 4e 45 20 20 20 20 20 77 | BNE w| 000019e0 68 6f 6c 6c 79 5f 76 69 73 69 62 6c 65 0d 0a a0 |holly_visible...| 000019f0 04 0d 0a aa 1d 20 20 20 20 20 20 20 20 4d 4f 56 |..... MOV| 00001a00 20 20 20 20 20 72 33 2c 23 31 32 2b 31 32 0d 0a | r3,#12+12..| 00001a10 b4 19 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 |.. MOV | 00001a20 20 20 72 36 2c 23 30 0d 0a be 16 2e 63 68 65 63 | r6,#0.....chec| 00001a30 6b 5f 62 6f 75 6e 64 5f 6c 6f 6f 70 32 0d 0a c8 |k_bound_loop2...| 00001a40 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 | MOV | 00001a50 20 72 35 2c 72 35 2c 4c 53 4c 20 23 31 0d 0a d2 | r5,r5,LSL #1...| 00001a60 22 20 20 20 20 20 20 20 20 54 53 54 20 20 20 20 |" TST | 00001a70 20 72 35 2c 23 25 31 30 30 30 30 30 30 30 30 0d | r5,#%100000000.| 00001a80 0a dc 1c 20 20 20 20 20 20 20 20 42 4e 45 20 20 |... BNE | 00001a90 20 20 20 77 61 73 5f 62 61 64 7a 0d 0a e6 1c 20 | was_badz.... | 00001aa0 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 | ADD r| 00001ab0 30 2c 73 70 2c 72 33 0d 0a f0 19 20 20 20 20 20 |0,sp,r3.... | 00001ac0 20 20 20 4d 4f 56 20 20 20 20 20 72 31 2c 72 37 | MOV r1,r7| 00001ad0 0d 0a fa 1d 20 20 20 20 20 20 20 20 42 4c 20 20 |.... BL | 00001ae0 20 20 20 20 69 6e 76 69 73 69 62 6c 65 0d 0b 04 | invisible...| 00001af0 1d 20 20 20 20 20 20 20 20 42 4e 45 20 20 20 20 |. BNE | 00001b00 20 6e 6f 74 5f 69 6e 76 69 73 0d 0b 0e 1c 20 20 | not_invis.... | 00001b10 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 36 | ADD r6| 00001b20 2c 72 36 2c 23 31 0d 0b 18 19 20 20 20 20 20 20 |,r6,#1.... | 00001b30 20 20 43 4d 50 20 20 20 20 20 72 37 2c 23 32 0d | CMP r7,#2.| 00001b40 0b 22 1b 20 20 20 20 20 20 20 20 84 52 4c 54 20 |.". .RLT | 00001b50 20 20 72 35 2c 72 35 2c 23 31 0d 0b 2c 0e 2e 6e | r5,r5,#1..,..n| 00001b60 6f 74 5f 69 6e 76 69 73 0d 0b 36 0d 2e 77 61 73 |ot_invis..6..was| 00001b70 5f 62 61 64 7a 0d 0b 40 1d 20 20 20 20 20 20 20 |_badz..@. | 00001b80 20 41 44 44 20 20 20 20 20 72 33 2c 72 33 2c 23 | ADD r3,r3,#| 00001b90 31 32 0d 0b 4a 20 20 20 20 20 20 20 20 20 43 4d |12..J CM| 00001ba0 50 20 20 20 20 20 72 33 2c 23 31 32 2b 31 32 2b |P r3,#12+12+| 00001bb0 39 36 0d 0b 54 25 20 20 20 20 20 20 20 20 42 4c |96..T% BL| 00001bc0 54 20 20 20 20 20 63 68 65 63 6b 5f 62 6f 75 6e |T check_boun| 00001bd0 64 5f 6c 6f 6f 70 32 0d 0b 5e 22 20 20 20 20 20 |d_loop2..^" | 00001be0 20 20 20 84 52 20 20 20 20 20 72 35 2c 72 35 2c | .R r5,r5,| 00001bf0 72 35 2c 4c 53 52 20 23 38 0d 0b 68 20 20 20 20 |r5,LSR #8..h | 00001c00 20 20 20 20 20 42 49 43 20 20 20 20 20 72 35 2c | BIC r5,| 00001c10 72 35 2c 23 26 46 46 30 30 0d 0b 72 19 20 20 20 |r5,#&FF00..r. | 00001c20 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 36 2c | CMP r6,| 00001c30 23 38 0d 0b 7c 1d 20 20 20 20 20 20 20 20 42 45 |#8..|. BE| 00001c40 51 20 20 20 20 20 63 6c 69 70 5f 6e 65 78 74 0d |Q clip_next.| 00001c50 0b 86 19 20 20 20 20 20 20 20 20 43 4d 50 20 20 |... CMP | 00001c60 20 20 20 72 35 2c 23 30 0d 0b 90 1f 20 20 20 20 | r5,#0.... | 00001c70 20 20 20 20 42 4e 45 20 20 20 20 20 77 68 61 63 | BNE whac| 00001c80 6b 79 5f 7a 65 64 73 0d 0b 9a 19 20 20 20 20 20 |ky_zeds.... | 00001c90 20 20 20 43 4d 50 20 20 20 20 20 72 36 2c 23 30 | CMP r6,#0| 00001ca0 0d 0b a4 17 20 20 20 20 20 20 20 20 ec 51 20 20 |.... .Q | 00001cb0 20 72 31 34 2c 23 31 0d 0b ae 23 20 20 20 20 20 | r14,#1...# | 00001cc0 20 20 20 84 52 45 51 20 20 20 72 39 2c 72 39 2c | .REQ r9,r9,| 00001cd0 72 31 34 2c 4c 53 4c 20 72 37 0d 0b b8 10 2e 77 |r14,LSL r7.....w| 00001ce0 68 61 63 6b 79 5f 7a 65 64 73 0d 0b c2 13 2e 77 |hacky_zeds.....w| 00001cf0 68 6f 6c 6c 79 5f 76 69 73 69 62 6c 65 0d 0b cc |holly_visible...| 00001d00 1c 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 |. ADD | 00001d10 20 72 37 2c 72 37 2c 23 31 0d 0b d6 19 20 20 20 | r7,r7,#1.... | 00001d20 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 37 2c | CMP r7,| 00001d30 23 36 0d 0b e0 25 20 20 20 20 20 20 20 20 42 4c |#6...% BL| 00001d40 54 20 20 20 20 20 63 68 65 63 6b 5f 62 6f 75 6e |T check_boun| 00001d50 64 5f 6c 6f 6f 70 31 0d 0b ea 34 20 20 20 20 20 |d_loop1...4 | 00001d60 20 20 20 43 4d 50 20 20 20 20 20 72 39 2c 23 25 | CMP r9,#%| 00001d70 31 31 31 31 31 31 20 3b 20 63 6f 6d 70 6c 65 74 |111111 ; complet| 00001d80 65 6c 79 20 76 69 73 69 62 6c 65 0d 0b f4 27 20 |ely visible...' | 00001d90 20 20 20 20 20 20 20 84 52 45 51 20 20 20 72 31 | .REQ r1| 00001da0 31 2c 72 31 31 2c 23 62 69 74 5f 64 69 73 70 61 |1,r11,#bit_dispa| 00001db0 6c 6c 0d 0b fe 21 20 20 20 20 20 20 20 20 42 45 |ll...! BE| 00001dc0 51 20 20 20 20 20 72 65 67 69 73 74 65 72 5f 63 |Q register_c| 00001dd0 6c 69 70 0d 0c 08 1d 20 20 20 20 20 20 20 20 41 |lip.... A| 00001de0 44 44 20 20 20 20 20 72 37 2c 73 70 2c 23 31 32 |DD r7,sp,#12| 00001df0 0d 0c 12 1f 20 20 20 20 20 20 20 20 53 54 4d 46 |.... STMF| 00001e00 44 20 20 20 28 73 70 29 21 2c 7b 72 31 30 7d 0d |D (sp)!,{r10}.| 00001e10 0c 1c 2a 20 20 20 20 20 20 20 20 4c 44 52 20 20 |..* LDR | 00001e20 20 20 20 72 31 30 2c 5b 72 31 30 2c 23 73 75 62 | r10,[r10,#sub| 00001e30 6f 62 6a 5f 74 79 70 65 5d 0d 0c 26 18 20 20 20 |obj_type]..&. | 00001e40 20 20 20 20 20 42 4c 20 20 20 20 20 20 63 6c 69 | BL cli| 00001e50 70 0d 0c 30 1f 20 20 20 20 20 20 20 20 4c 44 4d |p..0. LDM| 00001e60 46 44 20 20 20 28 73 70 29 21 2c 7b 72 31 30 7d |FD (sp)!,{r10}| 00001e70 0d 0c 3a 12 2e 72 65 67 69 73 74 65 72 5f 63 6c |..:..register_cl| 00001e80 69 70 0d 0c 44 24 20 20 20 20 20 20 20 20 84 52 |ip..D$ .R| 00001e90 20 20 20 20 20 72 31 31 2c 72 31 31 2c 23 62 69 | r11,r11,#bi| 00001ea0 74 5f 64 69 73 70 0d 0c 4e 0e 2e 63 6c 69 70 5f |t_disp..N..clip_| 00001eb0 6e 65 78 74 0d 0c 58 2b 20 20 20 20 20 20 20 20 |next..X+ | 00001ec0 53 54 52 20 20 20 20 20 72 31 31 2c 5b 72 31 30 |STR r11,[r10| 00001ed0 2c 23 73 75 62 6f 62 6a 5f 66 6c 61 67 73 5d 0d |,#subobj_flags].| 00001ee0 0c 62 28 20 20 20 20 20 20 20 20 41 44 44 20 20 |.b( ADD | 00001ef0 20 20 20 72 31 34 2c 73 70 2c 23 31 32 2b 31 32 | r14,sp,#12+12| 00001f00 2b 39 36 2b 34 2a 37 0d 0c 6c 1f 20 20 20 20 20 |+96+4*7..l. | 00001f10 20 20 20 4c 44 4d 49 41 20 20 20 72 31 34 2c 7b | LDMIA r14,{| 00001f20 72 37 2c 72 38 7d 0d 0c 76 2a 20 20 20 20 20 20 |r7,r8}..v* | 00001f30 20 20 4c 44 52 20 20 20 20 20 72 31 30 2c 5b 72 | LDR r10,[r| 00001f40 31 30 2c 23 73 75 62 6f 62 6a 5f 6e 65 78 74 5d |10,#subobj_next]| 00001f50 0d 0c 80 1d 20 20 20 20 20 20 20 20 42 20 20 20 |.... B | 00001f60 20 20 20 20 63 6c 69 70 5f 6c 6f 6f 70 0d 0c 8a | clip_loop...| 00001f70 0e 2e 63 6c 69 70 5f 65 78 69 74 0d 0c 94 23 20 |..clip_exit...# | 00001f80 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 73 | ADD s| 00001f90 70 2c 73 70 2c 23 31 32 2b 31 32 2b 39 36 0d 0c |p,sp,#12+12+96..| 00001fa0 9e 25 20 20 20 20 20 20 20 20 4c 44 4d 46 44 20 |.% LDMFD | 00001fb0 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 31 31 2c | (sp)!,{r0-r11,| 00001fc0 70 63 7d 0d 0c a8 04 0d 0c b2 26 2e 61 64 64 20 |pc}.......&.add | 00001fd0 20 20 20 53 54 4d 46 44 20 20 20 28 73 70 29 21 | STMFD (sp)!| 00001fe0 2c 7b 72 30 2d 72 38 2c 6c 69 6e 6b 7d 0d 0c bc |,{r0-r8,link}...| 00001ff0 1e 20 20 20 20 20 20 20 20 4c 44 4d 49 41 20 20 |. LDMIA | 00002000 20 72 30 2c 7b 72 33 2d 72 35 7d 0d 0c c6 1e 20 | r0,{r3-r5}.... | 00002010 20 20 20 20 20 20 20 4c 44 4d 49 41 20 20 20 72 | LDMIA r| 00002020 31 2c 7b 72 36 2d 72 38 7d 0d 0c d0 1c 20 20 20 |1,{r6-r8}.... | 00002030 20 20 20 20 20 41 44 44 20 20 20 20 20 72 33 2c | ADD r3,| 00002040 72 33 2c 72 36 0d 0c da 1c 20 20 20 20 20 20 20 |r3,r6.... | 00002050 20 41 44 44 20 20 20 20 20 72 34 2c 72 34 2c 72 | ADD r4,r4,r| 00002060 37 0d 0c e4 1c 20 20 20 20 20 20 20 20 41 44 44 |7.... ADD| 00002070 20 20 20 20 20 72 35 2c 72 35 2c 72 38 0d 0c ee | r5,r5,r8...| 00002080 1e 20 20 20 20 20 20 20 20 53 54 4d 49 41 20 20 |. STMIA | 00002090 20 72 32 2c 7b 72 33 2d 72 35 7d 0d 0c f8 24 20 | r2,{r3-r5}...$ | 000020a0 20 20 20 20 20 20 20 4c 44 4d 46 44 20 20 20 28 | LDMFD (| 000020b0 73 70 29 21 2c 7b 72 30 2d 72 38 2c 70 63 7d 0d |sp)!,{r0-r8,pc}.| 000020c0 0d 02 04 0d 0d 0c 0e 2e 66 72 65 65 5f 74 72 65 |........free_tre| 000020d0 65 0d 0d 16 27 20 20 20 20 20 20 20 20 53 54 4d |e...' STM| 000020e0 46 44 20 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 |FD (sp)!,{r0-r| 000020f0 31 31 2c 6c 69 6e 6b 7d 0d 0d 20 26 20 20 20 20 |11,link}.. & | 00002100 20 20 20 20 4c 44 52 20 20 20 20 20 72 30 2c 5b | LDR r0,[| 00002110 72 31 31 2c 23 6f 62 6a 5f 6e 61 6d 65 5d 0d 0d |r11,#obj_name]..| 00002120 2a 19 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 |*. CMP | 00002130 20 20 72 30 2c 23 30 0d 0d 34 18 20 20 20 20 20 | r0,#0..4. | 00002140 20 20 20 42 4c 4e 45 20 20 20 20 66 72 65 65 0d | BLNE free.| 00002150 0d 3e 26 20 20 20 20 20 20 20 20 4c 44 52 20 20 |.>& LDR | 00002160 20 20 20 72 38 2c 5b 72 31 31 2c 23 6f 62 6a 5f | r8,[r11,#obj_| 00002170 6c 69 73 74 5d 0d 0d 48 13 2e 66 72 65 65 5f 74 |list]..H..free_t| 00002180 72 65 65 5f 6c 6f 6f 70 0d 0d 52 19 20 20 20 20 |ree_loop..R. | 00002190 20 20 20 20 43 4d 50 20 20 20 20 20 72 38 2c 23 | CMP r8,#| 000021a0 30 0d 0d 5c 1e 20 20 20 20 20 20 20 20 42 45 51 |0..\. BEQ| 000021b0 20 20 20 20 20 66 72 65 65 64 5f 6c 69 73 74 0d | freed_list.| 000021c0 0d 66 29 20 20 20 20 20 20 20 20 4c 44 52 20 20 |.f) LDR | 000021d0 20 20 20 72 30 2c 5b 72 38 2c 23 73 75 62 6f 62 | r0,[r8,#subob| 000021e0 6a 5f 66 6c 61 67 73 5d 0d 0d 70 20 20 20 20 20 |j_flags]..p | 000021f0 20 20 20 20 54 53 54 20 20 20 20 20 72 30 2c 23 | TST r0,#| 00002200 62 69 74 5f 73 75 72 66 0d 0d 7a 1e 20 20 20 20 |bit_surf..z. | 00002210 20 20 20 20 42 4e 45 20 20 20 20 20 66 72 65 65 | BNE free| 00002220 5f 74 72 65 65 32 0d 0d 84 1b 20 20 20 20 20 20 |_tree2.... | 00002230 20 20 4d 4f 56 20 20 20 20 20 72 31 30 2c 72 31 | MOV r10,r1| 00002240 31 0d 0d 8e 29 20 20 20 20 20 20 20 20 4c 44 52 |1...) LDR| 00002250 20 20 20 20 20 72 31 31 2c 5b 72 38 2c 23 73 75 | r11,[r8,#su| 00002260 62 6f 62 6a 5f 74 79 70 65 5d 0d 0d 98 1d 20 20 |bobj_type].... | 00002270 20 20 20 20 20 20 42 4c 20 20 20 20 20 20 66 72 | BL fr| 00002280 65 65 5f 74 72 65 65 0d 0d a2 1b 20 20 20 20 20 |ee_tree.... | 00002290 20 20 20 4d 4f 56 20 20 20 20 20 72 31 31 2c 72 | MOV r11,r| 000022a0 31 30 0d 0d ac 0f 2e 66 72 65 65 5f 74 72 65 65 |10.....free_tree| 000022b0 32 0d 0d b6 28 20 20 20 20 20 20 20 20 4c 44 52 |2...( LDR| 000022c0 20 20 20 20 20 72 37 2c 5b 72 38 2c 23 73 75 62 | r7,[r8,#sub| 000022d0 6f 62 6a 5f 6e 65 78 74 5d 0d 0d c0 19 20 20 20 |obj_next].... | 000022e0 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 30 2c | MOV r0,| 000022f0 72 38 0d 0d ca 18 20 20 20 20 20 20 20 20 42 4c |r8.... BL| 00002300 20 20 20 20 20 20 66 72 65 65 0d 0d d4 19 20 20 | free.... | 00002310 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 38 | MOV r8| 00002320 2c 72 37 0d 0d de 22 20 20 20 20 20 20 20 20 42 |,r7..." B| 00002330 20 20 20 20 20 20 20 66 72 65 65 5f 74 72 65 65 | free_tree| 00002340 5f 6c 6f 6f 70 0d 0d e8 0f 2e 66 72 65 65 64 5f |_loop.....freed_| 00002350 6c 69 73 74 0d 0d f2 1a 20 20 20 20 20 20 20 20 |list.... | 00002360 4d 4f 56 20 20 20 20 20 72 30 2c 72 31 31 0d 0d |MOV r0,r11..| 00002370 fc 18 20 20 20 20 20 20 20 20 42 4c 20 20 20 20 |.. BL | 00002380 20 20 66 72 65 65 0d 0e 06 25 20 20 20 20 20 20 | free...% | 00002390 20 20 4c 44 4d 46 44 20 20 20 28 73 70 29 21 2c | LDMFD (sp)!,| 000023a0 7b 72 30 2d 72 31 31 2c 70 63 7d 0d 0e 10 04 0d |{r0-r11,pc}.....| 000023b0 0e 1a 0f 2e 70 6c 6f 74 5f 66 61 63 65 73 0d 0e |....plot_faces..| 000023c0 24 27 20 20 20 20 20 20 20 20 53 54 4d 46 44 20 |$' STMFD | 000023d0 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 31 31 2c | (sp)!,{r0-r11,| 000023e0 6c 69 6e 6b 7d 0d 0e 2e 20 20 20 20 20 20 20 20 |link}... | 000023f0 20 a4 61 64 72 6c 28 31 34 2c 70 6f 6c 79 5f 70 | .adrl(14,poly_p| 00002400 6f 69 6e 74 29 0d 0e 38 20 20 20 20 20 20 20 20 |oint)..8 | 00002410 20 4c 44 4d 49 41 20 20 20 72 31 34 2c 7b 72 39 | LDMIA r14,{r9| 00002420 2d 72 31 31 7d 0d 0e 42 1a 20 20 20 20 20 20 20 |-r11}..B. | 00002430 20 43 4d 50 20 20 20 20 20 72 31 31 2c 23 30 0d | CMP r11,#0.| 00002440 0e 4c 19 20 20 20 20 20 20 20 20 43 4d 50 4e 45 |.L. CMPNE| 00002450 20 20 20 72 39 2c 23 30 0d 0e 56 25 20 20 20 20 | r9,#0..V% | 00002460 20 20 20 20 4c 44 4d 45 51 46 44 20 28 73 70 29 | LDMEQFD (sp)| 00002470 21 2c 7b 72 30 2d 72 31 31 2c 70 63 7d 0d 0e 60 |!,{r0-r11,pc}..`| 00002480 1a 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 |. MOV | 00002490 20 72 30 2c 72 31 31 0d 0e 6a 19 20 20 20 20 20 | r0,r11..j. | 000024a0 20 20 20 4d 4f 56 20 20 20 20 20 72 31 2c 72 39 | MOV r1,r9| 000024b0 0d 0e 74 1e 20 20 20 20 20 20 20 20 41 44 52 20 |..t. ADR | 000024c0 20 20 20 20 72 32 2c 63 6f 6d 70 61 72 65 0d 0e | r2,compare..| 000024d0 7e 22 20 20 20 20 20 20 20 20 53 57 49 20 20 20 |~" SWI | 000024e0 20 20 22 58 4f 53 5f 48 65 61 70 53 6f 72 74 22 | "XOS_HeapSort"| 000024f0 0d 0e 88 1b 20 20 20 20 20 20 20 20 a4 61 64 72 |.... .adr| 00002500 6c 28 31 34 2c 66 6c 61 67 73 29 0d 0e 92 1c 20 |l(14,flags).... | 00002510 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 | LDR r| 00002520 33 2c 5b 72 31 34 5d 0d 0e 9c 13 2e 70 6c 6f 74 |3,[r14].....plot| 00002530 5f 66 61 63 65 5f 6c 6f 6f 70 0d 0e a6 1e 20 20 |_face_loop.... | 00002540 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 38 | LDR r8| 00002550 2c 5b 72 39 5d 2c 23 34 0d 0e b0 23 20 20 20 20 |,[r9],#4...# | 00002560 20 20 20 20 4c 44 52 20 20 20 20 20 72 37 2c 5b | LDR r7,[| 00002570 72 38 2c 23 64 69 73 70 5f 6e 5d 0d 0e ba 23 20 |r8,#disp_n]...# | 00002580 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 | ADD r| 00002590 38 2c 72 38 2c 23 64 69 73 70 5f 64 61 74 0d 0e |8,r8,#disp_dat..| 000025a0 c4 14 2e 70 6c 6f 74 5f 66 61 63 65 5f 6c 6f 6f |...plot_face_loo| 000025b0 70 32 0d 0e ce 1f 20 20 20 20 20 20 20 20 4c 44 |p2.... LD| 000025c0 4d 49 41 20 20 20 72 38 21 2c 7b 72 32 2c 72 36 |MIA r8!,{r2,r6| 000025d0 7d 0d 0e d8 19 20 20 20 20 20 20 20 20 4d 4f 56 |}.... MOV| 000025e0 20 20 20 20 20 72 30 2c 72 36 0d 0e e2 19 20 20 | r0,r6.... | 000025f0 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 31 | MOV r1| 00002600 2c 72 38 0d 0e ec 1b 20 20 20 20 20 20 20 20 42 |,r8.... B| 00002610 4c 20 20 20 20 20 20 73 77 69 28 30 30 29 0d 0e |L swi(00)..| 00002620 f6 23 20 20 20 20 20 20 20 20 41 44 44 20 20 20 |.# ADD | 00002630 20 20 72 38 2c 72 38 2c 72 36 2c 4c 53 4c 20 23 | r8,r8,r6,LSL #| 00002640 33 0d 0f 00 1c 20 20 20 20 20 20 20 20 53 55 42 |3.... SUB| 00002650 53 20 20 20 20 72 37 2c 72 37 2c 23 31 0d 0f 0a |S r7,r7,#1...| 00002660 23 20 20 20 20 20 20 20 20 42 4e 45 20 20 20 20 |# BNE | 00002670 20 70 6c 6f 74 5f 66 61 63 65 5f 6c 6f 6f 70 32 | plot_face_loop2| 00002680 0d 0f 14 1e 20 20 20 20 20 20 20 20 53 55 42 53 |.... SUBS| 00002690 20 20 20 20 72 31 31 2c 72 31 31 2c 23 31 0d 0f | r11,r11,#1..| 000026a0 1e 22 20 20 20 20 20 20 20 20 42 4e 45 20 20 20 |." BNE | 000026b0 20 20 70 6c 6f 74 5f 66 61 63 65 5f 6c 6f 6f 70 | plot_face_loop| 000026c0 0d 0f 28 25 20 20 20 20 20 20 20 20 4c 44 4d 46 |..(% LDMF| 000026d0 44 20 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 31 |D (sp)!,{r0-r1| 000026e0 31 2c 70 63 7d 0d 0f 32 04 0d 0f 3c 0c 2e 63 6f |1,pc}..2...<..co| 000026f0 6d 70 61 72 65 0d 0f 46 26 20 20 20 20 20 20 20 |mpare..F& | 00002700 20 4c 44 52 20 20 20 20 20 72 32 2c 5b 72 30 2c | LDR r2,[r0,| 00002710 23 64 69 73 70 5f 6d 69 6e 7a 5d 0d 0f 50 26 20 |#disp_minz]..P& | 00002720 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 | LDR r| 00002730 33 2c 5b 72 31 2c 23 64 69 73 70 5f 6d 61 78 7a |3,[r1,#disp_maxz| 00002740 5d 0d 0f 5a 19 20 20 20 20 20 20 20 20 43 4d 50 |]..Z. CMP| 00002750 20 20 20 20 20 72 32 2c 72 33 0d 0f 64 1e 20 20 | r2,r3..d. | 00002760 20 20 20 20 20 20 42 47 45 20 20 20 20 20 63 6f | BGE co| 00002770 6d 70 5f 72 65 74 6c 74 0d 0f 6e 26 20 20 20 20 |mp_retlt..n& | 00002780 20 20 20 20 4c 44 52 20 20 20 20 20 72 32 2c 5b | LDR r2,[| 00002790 72 31 2c 23 64 69 73 70 5f 6d 69 6e 7a 5d 0d 0f |r1,#disp_minz]..| 000027a0 78 26 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 |x& LDR | 000027b0 20 20 72 33 2c 5b 72 30 2c 23 64 69 73 70 5f 6d | r3,[r0,#disp_m| 000027c0 61 78 7a 5d 0d 0f 82 19 20 20 20 20 20 20 20 20 |axz].... | 000027d0 43 4d 50 20 20 20 20 20 72 32 2c 72 33 0d 0f 8c |CMP r2,r3...| 000027e0 1e 20 20 20 20 20 20 20 20 42 47 45 20 20 20 20 |. BGE | 000027f0 20 63 6f 6d 70 5f 72 65 74 67 74 0d 0f 96 26 20 | comp_retgt...& | 00002800 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 | LDR r| 00002810 32 2c 5b 72 30 2c 23 64 69 73 70 5f 6d 69 6e 7a |2,[r0,#disp_minz| 00002820 5d 0d 0f a0 26 20 20 20 20 20 20 20 20 4c 44 52 |]...& LDR| 00002830 20 20 20 20 20 72 33 2c 5b 72 31 2c 23 64 69 73 | r3,[r1,#dis| 00002840 70 5f 6d 69 6e 7a 5d 0d 0f aa 19 20 20 20 20 20 |p_minz].... | 00002850 20 20 20 43 4d 50 20 20 20 20 20 72 32 2c 72 33 | CMP r2,r3| 00002860 0d 0f b4 1f 20 20 20 20 20 20 20 20 42 4c 54 20 |.... BLT | 00002870 20 20 20 20 20 63 6f 6d 70 5f 72 65 74 67 74 0d | comp_retgt.| 00002880 0f be 0f 2e 63 6f 6d 70 5f 72 65 74 6c 74 0d 0f |....comp_retlt..| 00002890 c8 1c 20 20 20 20 20 20 20 20 52 53 42 53 20 20 |.. RSBS | 000028a0 20 20 72 30 2c 72 30 2c 23 30 0d 0f d2 1b 20 20 | r0,r0,#0.... | 000028b0 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 70 63 | MOV pc| 000028c0 2c 6c 69 6e 6b 0d 0f dc 0f 2e 63 6f 6d 70 5f 72 |,link.....comp_r| 000028d0 65 74 67 74 0d 0f e6 19 20 20 20 20 20 20 20 20 |etgt.... | 000028e0 43 4d 50 20 20 20 20 20 72 30 2c 23 30 0d 0f f0 |CMP r0,#0...| 000028f0 1b 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 |. MOV | 00002900 20 70 63 2c 6c 69 6e 6b 0d 0f fa 04 0d 10 04 0e | pc,link........| 00002910 2e 69 6e 76 69 73 69 62 6c 65 0d 10 0e 27 20 20 |.invisible...' | 00002920 20 20 20 20 20 20 53 54 4d 46 44 20 20 20 28 73 | STMFD (s| 00002930 70 29 21 2c 7b 72 30 2d 72 31 31 2c 6c 69 6e 6b |p)!,{r0-r11,link| 00002940 7d 0d 10 18 1e 20 20 20 20 20 20 20 20 4c 44 4d |}.... LDM| 00002950 49 41 20 20 20 72 30 2c 7b 72 37 2d 72 39 7d 0d |IA r0,{r7-r9}.| 00002960 10 22 17 20 20 20 20 20 20 20 20 a4 61 64 72 6c |.". .adrl| 00002970 28 31 34 2c 73 29 0d 10 2c 21 20 20 20 20 20 20 |(14,s)..,! | 00002980 20 20 4c 44 4d 49 41 20 20 20 72 31 34 2c 7b 72 | LDMIA r14,{r| 00002990 31 30 2c 72 31 31 7d 0d 10 36 20 20 20 20 20 20 |10,r11}..6 | 000029a0 20 20 20 a4 6c 64 72 28 31 34 2c 70 65 72 73 70 | .ldr(14,persp| 000029b0 5f 66 6c 61 67 73 29 0d 10 40 1a 20 20 20 20 20 |_flags)..@. | 000029c0 20 20 20 54 53 54 20 20 20 20 20 72 31 34 2c 23 | TST r14,#| 000029d0 31 0d 10 4a 1c 20 20 20 20 20 20 20 20 41 44 44 |1..J. ADD| 000029e0 4e 45 20 20 20 72 31 2c 72 31 2c 23 36 0d 10 54 |NE r1,r1,#6..T| 000029f0 23 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 |# ADD | 00002a00 20 70 63 2c 70 63 2c 72 31 2c 4c 53 4c 20 23 32 | pc,pc,r1,LSL #2| 00002a10 0d 10 5e 15 20 20 20 20 20 20 20 20 44 43 44 20 |..^. DCD | 00002a20 20 20 20 20 30 0d 10 68 1e 20 20 20 20 20 20 20 | 0..h. | 00002a30 20 42 20 20 20 20 20 20 20 63 68 65 63 6b 5f 6d | B check_m| 00002a40 61 78 7a 0d 10 72 1e 20 20 20 20 20 20 20 20 42 |axz..r. B| 00002a50 20 20 20 20 20 20 20 63 68 65 63 6b 5f 6d 69 6e | check_min| 00002a60 7a 0d 10 7c 1e 20 20 20 20 20 20 20 20 42 20 20 |z..|. B | 00002a70 20 20 20 20 20 63 68 65 63 6b 5f 6d 69 6e 78 0d | check_minx.| 00002a80 10 86 1e 20 20 20 20 20 20 20 20 42 20 20 20 20 |... B | 00002a90 20 20 20 63 68 65 63 6b 5f 6d 61 78 78 0d 10 90 | check_maxx...| 00002aa0 1e 20 20 20 20 20 20 20 20 42 20 20 20 20 20 20 |. B | 00002ab0 20 63 68 65 63 6b 5f 6d 69 6e 79 0d 10 9a 1e 20 | check_miny.... | 00002ac0 20 20 20 20 20 20 20 42 20 20 20 20 20 20 20 63 | B c| 00002ad0 68 65 63 6b 5f 6d 61 78 79 0d 10 a4 1e 20 20 20 |heck_maxy.... | 00002ae0 20 20 20 20 20 42 20 20 20 20 20 20 20 63 68 65 | B che| 00002af0 63 6b 5f 6d 61 78 7a 0d 10 ae 1e 20 20 20 20 20 |ck_maxz.... | 00002b00 20 20 20 42 20 20 20 20 20 20 20 63 68 65 63 6b | B check| 00002b10 5f 6d 69 6e 7a 0d 10 b8 26 20 20 20 20 20 20 20 |_minz...& | 00002b20 20 42 20 20 20 20 20 20 20 63 68 65 63 6b 5f 6d | B check_m| 00002b30 69 6e 78 5f 74 77 6f 5f 64 65 65 0d 10 c2 26 20 |inx_two_dee...& | 00002b40 20 20 20 20 20 20 20 42 20 20 20 20 20 20 20 63 | B c| 00002b50 68 65 63 6b 5f 6d 61 78 78 5f 74 77 6f 5f 64 65 |heck_maxx_two_de| 00002b60 65 0d 10 cc 26 20 20 20 20 20 20 20 20 42 20 20 |e...& B | 00002b70 20 20 20 20 20 63 68 65 63 6b 5f 6d 69 6e 79 5f | check_miny_| 00002b80 74 77 6f 5f 64 65 65 0d 10 d6 26 20 20 20 20 20 |two_dee...& | 00002b90 20 20 20 42 20 20 20 20 20 20 20 63 68 65 63 6b | B check| 00002ba0 5f 6d 61 78 79 5f 74 77 6f 5f 64 65 65 0d 10 e0 |_maxy_two_dee...| 00002bb0 0f 2e 63 68 65 63 6b 5f 6d 61 78 7a 0d 10 ea 1e |..check_maxz....| 00002bc0 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 | LDR | 00002bd0 72 32 2c 5b 72 30 2c 23 38 5d 0d 10 f4 1a 20 20 |r2,[r0,#8].... | 00002be0 20 20 20 20 20 20 a4 61 64 72 6c 28 33 2c 6d 61 | .adrl(3,ma| 00002bf0 78 5f 7a 29 0d 10 fe 1b 20 20 20 20 20 20 20 20 |x_z).... | 00002c00 4c 44 52 20 20 20 20 20 72 33 2c 5b 72 33 5d 0d |LDR r3,[r3].| 00002c10 11 08 19 20 20 20 20 20 20 20 20 43 4d 50 20 20 |... CMP | 00002c20 20 20 20 72 32 2c 72 33 0d 11 12 1e 20 20 20 20 | r2,r3.... | 00002c30 20 20 20 20 42 4c 54 20 20 20 20 20 69 73 5f 76 | BLT is_v| 00002c40 69 73 69 62 6c 65 0d 11 1c 20 20 20 20 20 20 20 |isible... | 00002c50 20 20 42 20 20 20 20 20 20 20 69 73 5f 69 6e 76 | B is_inv| 00002c60 69 73 69 62 6c 65 0d 11 26 0f 2e 63 68 65 63 6b |isible..&..check| 00002c70 5f 6d 69 6e 7a 0d 11 30 1e 20 20 20 20 20 20 20 |_minz..0. | 00002c80 20 4c 44 52 20 20 20 20 20 72 32 2c 5b 72 30 2c | LDR r2,[r0,| 00002c90 23 38 5d 0d 11 3a 1a 20 20 20 20 20 20 20 20 a4 |#8]..:. .| 00002ca0 61 64 72 6c 28 33 2c 6d 69 6e 5f 7a 29 0d 11 44 |adrl(3,min_z)..D| 00002cb0 1b 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 |. LDR | 00002cc0 20 72 33 2c 5b 72 33 5d 0d 11 4e 19 20 20 20 20 | r3,[r3]..N. | 00002cd0 20 20 20 20 43 4d 50 20 20 20 20 20 72 32 2c 72 | CMP r2,r| 00002ce0 33 0d 11 58 1e 20 20 20 20 20 20 20 20 42 47 54 |3..X. BGT| 00002cf0 20 20 20 20 20 69 73 5f 76 69 73 69 62 6c 65 0d | is_visible.| 00002d00 11 62 20 20 20 20 20 20 20 20 20 42 20 20 20 20 |.b B | 00002d10 20 20 20 69 73 5f 69 6e 76 69 73 69 62 6c 65 0d | is_invisible.| 00002d20 11 6c 0f 2e 63 68 65 63 6b 5f 6d 69 6e 78 0d 11 |.l..check_minx..| 00002d30 76 1d 20 20 20 20 20 20 20 20 4d 55 4c 20 20 20 |v. MUL | 00002d40 20 20 72 30 2c 72 31 30 2c 72 37 0d 11 80 1d 20 | r0,r10,r7.... | 00002d50 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 | ADD r| 00002d60 31 2c 72 39 2c 72 31 31 0d 11 8a 1a 20 20 20 20 |1,r9,r11.... | 00002d70 20 20 20 20 42 4c 20 20 20 20 20 20 64 69 76 69 | BL divi| 00002d80 64 65 0d 11 94 1e 20 20 20 20 20 20 20 20 a4 61 |de.... .a| 00002d90 64 72 6c 28 31 34 2c 73 63 72 5f 6d 69 6e 78 29 |drl(14,scr_minx)| 00002da0 0d 11 9e 1d 20 20 20 20 20 20 20 20 4c 44 52 20 |.... LDR | 00002db0 20 20 20 20 72 31 34 2c 5b 72 31 34 5d 0d 11 a8 | r14,[r14]...| 00002dc0 1a 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 |. CMP | 00002dd0 20 72 32 2c 72 31 34 0d 11 b2 1e 20 20 20 20 20 | r2,r14.... | 00002de0 20 20 20 42 47 54 20 20 20 20 20 69 73 5f 76 69 | BGT is_vi| 00002df0 73 69 62 6c 65 0d 11 bc 20 20 20 20 20 20 20 20 |sible... | 00002e00 20 42 20 20 20 20 20 20 20 69 73 5f 69 6e 76 69 | B is_invi| 00002e10 73 69 62 6c 65 0d 11 c6 17 2e 63 68 65 63 6b 5f |sible.....check_| 00002e20 6d 69 6e 78 5f 74 77 6f 5f 64 65 65 0d 11 d0 19 |minx_two_dee....| 00002e30 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 | MOV | 00002e40 72 30 2c 72 37 0d 11 da 1c 20 20 20 20 20 20 20 |r0,r7.... | 00002e50 20 a4 6c 64 72 28 31 2c 73 63 61 6c 65 5f 32 64 | .ldr(1,scale_2d| 00002e60 29 0d 11 e4 1a 20 20 20 20 20 20 20 20 42 4c 20 |).... BL | 00002e70 20 20 20 20 20 64 69 76 69 64 65 0d 11 ee 1e 20 | divide.... | 00002e80 20 20 20 20 20 20 20 a4 61 64 72 6c 28 31 34 2c | .adrl(14,| 00002e90 73 63 72 5f 6d 69 6e 78 29 0d 11 f8 1d 20 20 20 |scr_minx).... | 00002ea0 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 31 34 | LDR r14| 00002eb0 2c 5b 72 31 34 5d 0d 12 02 1a 20 20 20 20 20 20 |,[r14].... | 00002ec0 20 20 43 4d 50 20 20 20 20 20 72 32 2c 72 31 34 | CMP r2,r14| 00002ed0 0d 12 0c 1e 20 20 20 20 20 20 20 20 42 47 54 20 |.... BGT | 00002ee0 20 20 20 20 69 73 5f 76 69 73 69 62 6c 65 0d 12 | is_visible..| 00002ef0 16 20 20 20 20 20 20 20 20 20 42 20 20 20 20 20 |. B | 00002f00 20 20 69 73 5f 69 6e 76 69 73 69 62 6c 65 0d 12 | is_invisible..| 00002f10 20 0f 2e 63 68 65 63 6b 5f 6d 61 78 78 0d 12 2a | ..check_maxx..*| 00002f20 1d 20 20 20 20 20 20 20 20 4d 55 4c 20 20 20 20 |. MUL | 00002f30 20 72 30 2c 72 31 30 2c 72 37 0d 12 34 1d 20 20 | r0,r10,r7..4. | 00002f40 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 31 | ADD r1| 00002f50 2c 72 39 2c 72 31 31 0d 12 3e 1a 20 20 20 20 20 |,r9,r11..>. | 00002f60 20 20 20 42 4c 20 20 20 20 20 20 64 69 76 69 64 | BL divid| 00002f70 65 0d 12 48 1e 20 20 20 20 20 20 20 20 a4 61 64 |e..H. .ad| 00002f80 72 6c 28 31 34 2c 73 63 72 5f 6d 61 78 78 29 0d |rl(14,scr_maxx).| 00002f90 12 52 1d 20 20 20 20 20 20 20 20 4c 44 52 20 20 |.R. LDR | 00002fa0 20 20 20 72 31 34 2c 5b 72 31 34 5d 0d 12 5c 1a | r14,[r14]..\.| 00002fb0 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 | CMP | 00002fc0 72 32 2c 72 31 34 0d 12 66 1e 20 20 20 20 20 20 |r2,r14..f. | 00002fd0 20 20 42 4c 54 20 20 20 20 20 69 73 5f 76 69 73 | BLT is_vis| 00002fe0 69 62 6c 65 0d 12 70 20 20 20 20 20 20 20 20 20 |ible..p | 00002ff0 42 20 20 20 20 20 20 20 69 73 5f 69 6e 76 69 73 |B is_invis| 00003000 69 62 6c 65 0d 12 7a 17 2e 63 68 65 63 6b 5f 6d |ible..z..check_m| 00003010 61 78 78 5f 74 77 6f 5f 64 65 65 0d 12 84 19 20 |axx_two_dee.... | 00003020 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 | MOV r| 00003030 30 2c 72 37 0d 12 8e 1c 20 20 20 20 20 20 20 20 |0,r7.... | 00003040 a4 6c 64 72 28 31 2c 73 63 61 6c 65 5f 32 64 29 |.ldr(1,scale_2d)| 00003050 0d 12 98 1a 20 20 20 20 20 20 20 20 42 4c 20 20 |.... BL | 00003060 20 20 20 20 64 69 76 69 64 65 0d 12 a2 1e 20 20 | divide.... | 00003070 20 20 20 20 20 20 a4 61 64 72 6c 28 31 34 2c 73 | .adrl(14,s| 00003080 63 72 5f 6d 61 78 78 29 0d 12 ac 1d 20 20 20 20 |cr_maxx).... | 00003090 20 20 20 20 4c 44 52 20 20 20 20 20 72 31 34 2c | LDR r14,| 000030a0 5b 72 31 34 5d 0d 12 b6 1a 20 20 20 20 20 20 20 |[r14].... | 000030b0 20 43 4d 50 20 20 20 20 20 72 32 2c 72 31 34 0d | CMP r2,r14.| 000030c0 12 c0 1e 20 20 20 20 20 20 20 20 42 4c 54 20 20 |... BLT | 000030d0 20 20 20 69 73 5f 76 69 73 69 62 6c 65 0d 12 ca | is_visible...| 000030e0 20 20 20 20 20 20 20 20 20 42 20 20 20 20 20 20 | B | 000030f0 20 69 73 5f 69 6e 76 69 73 69 62 6c 65 0d 12 d4 | is_invisible...| 00003100 0f 2e 63 68 65 63 6b 5f 6d 69 6e 79 0d 12 de 1d |..check_miny....| 00003110 20 20 20 20 20 20 20 20 4d 55 4c 20 20 20 20 20 | MUL | 00003120 72 30 2c 72 31 30 2c 72 38 0d 12 e8 1d 20 20 20 |r0,r10,r8.... | 00003130 20 20 20 20 20 41 44 44 20 20 20 20 20 72 31 2c | ADD r1,| 00003140 72 39 2c 72 31 31 0d 12 f2 1a 20 20 20 20 20 20 |r9,r11.... | 00003150 20 20 42 4c 20 20 20 20 20 20 64 69 76 69 64 65 | BL divide| 00003160 0d 12 fc 1e 20 20 20 20 20 20 20 20 a4 61 64 72 |.... .adr| 00003170 6c 28 31 34 2c 73 63 72 5f 6d 69 6e 79 29 0d 13 |l(14,scr_miny)..| 00003180 06 1d 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 |.. LDR | 00003190 20 20 72 31 34 2c 5b 72 31 34 5d 0d 13 10 1a 20 | r14,[r14].... | 000031a0 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 | CMP r| 000031b0 32 2c 72 31 34 0d 13 1a 1e 20 20 20 20 20 20 20 |2,r14.... | 000031c0 20 42 47 54 20 20 20 20 20 69 73 5f 76 69 73 69 | BGT is_visi| 000031d0 62 6c 65 0d 13 24 20 20 20 20 20 20 20 20 20 42 |ble..$ B| 000031e0 20 20 20 20 20 20 20 69 73 5f 69 6e 76 69 73 69 | is_invisi| 000031f0 62 6c 65 0d 13 2e 17 2e 63 68 65 63 6b 5f 6d 69 |ble.....check_mi| 00003200 6e 79 5f 74 77 6f 5f 64 65 65 0d 13 38 19 20 20 |ny_two_dee..8. | 00003210 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 30 | MOV r0| 00003220 2c 72 38 0d 13 42 1c 20 20 20 20 20 20 20 20 a4 |,r8..B. .| 00003230 6c 64 72 28 31 2c 73 63 61 6c 65 5f 32 64 29 0d |ldr(1,scale_2d).| 00003240 13 4c 1a 20 20 20 20 20 20 20 20 42 4c 20 20 20 |.L. BL | 00003250 20 20 20 64 69 76 69 64 65 0d 13 56 1e 20 20 20 | divide..V. | 00003260 20 20 20 20 20 a4 61 64 72 6c 28 31 34 2c 73 63 | .adrl(14,sc| 00003270 72 5f 6d 69 6e 79 29 0d 13 60 1d 20 20 20 20 20 |r_miny)..`. | 00003280 20 20 20 4c 44 52 20 20 20 20 20 72 31 34 2c 5b | LDR r14,[| 00003290 72 31 34 5d 0d 13 6a 1a 20 20 20 20 20 20 20 20 |r14]..j. | 000032a0 43 4d 50 20 20 20 20 20 72 32 2c 72 31 34 0d 13 |CMP r2,r14..| 000032b0 74 1e 20 20 20 20 20 20 20 20 42 47 54 20 20 20 |t. BGT | 000032c0 20 20 69 73 5f 76 69 73 69 62 6c 65 0d 13 7e 20 | is_visible..~ | 000032d0 20 20 20 20 20 20 20 20 42 20 20 20 20 20 20 20 | B | 000032e0 69 73 5f 69 6e 76 69 73 69 62 6c 65 0d 13 88 0f |is_invisible....| 000032f0 2e 63 68 65 63 6b 5f 6d 61 78 79 0d 13 92 1d 20 |.check_maxy.... | 00003300 20 20 20 20 20 20 20 4d 55 4c 20 20 20 20 20 72 | MUL r| 00003310 30 2c 72 31 30 2c 72 38 0d 13 9c 1d 20 20 20 20 |0,r10,r8.... | 00003320 20 20 20 20 41 44 44 20 20 20 20 20 72 31 2c 72 | ADD r1,r| 00003330 39 2c 72 31 31 0d 13 a6 1a 20 20 20 20 20 20 20 |9,r11.... | 00003340 20 42 4c 20 20 20 20 20 20 64 69 76 69 64 65 0d | BL divide.| 00003350 13 b0 1e 20 20 20 20 20 20 20 20 a4 61 64 72 6c |... .adrl| 00003360 28 31 34 2c 73 63 72 5f 6d 61 78 79 29 0d 13 ba |(14,scr_maxy)...| 00003370 1d 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 |. LDR | 00003380 20 72 31 34 2c 5b 72 31 34 5d 0d 13 c4 1a 20 20 | r14,[r14].... | 00003390 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 32 | CMP r2| 000033a0 2c 72 31 34 0d 13 ce 1e 20 20 20 20 20 20 20 20 |,r14.... | 000033b0 42 4c 54 20 20 20 20 20 69 73 5f 76 69 73 69 62 |BLT is_visib| 000033c0 6c 65 0d 13 d8 20 20 20 20 20 20 20 20 20 42 20 |le... B | 000033d0 20 20 20 20 20 20 69 73 5f 69 6e 76 69 73 69 62 | is_invisib| 000033e0 6c 65 0d 13 e2 17 2e 63 68 65 63 6b 5f 6d 61 78 |le.....check_max| 000033f0 79 5f 74 77 6f 5f 64 65 65 0d 13 ec 19 20 20 20 |y_two_dee.... | 00003400 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 30 2c | MOV r0,| 00003410 72 38 0d 13 f6 1c 20 20 20 20 20 20 20 20 a4 6c |r8.... .l| 00003420 64 72 28 31 2c 73 63 61 6c 65 5f 32 64 29 0d 14 |dr(1,scale_2d)..| 00003430 00 1a 20 20 20 20 20 20 20 20 42 4c 20 20 20 20 |.. BL | 00003440 20 20 64 69 76 69 64 65 0d 14 0a 1e 20 20 20 20 | divide.... | 00003450 20 20 20 20 a4 61 64 72 6c 28 31 34 2c 73 63 72 | .adrl(14,scr| 00003460 5f 6d 61 78 79 29 0d 14 14 1d 20 20 20 20 20 20 |_maxy).... | 00003470 20 20 4c 44 52 20 20 20 20 20 72 31 34 2c 5b 72 | LDR r14,[r| 00003480 31 34 5d 0d 14 1e 1a 20 20 20 20 20 20 20 20 43 |14].... C| 00003490 4d 50 20 20 20 20 20 72 32 2c 72 31 34 0d 14 28 |MP r2,r14..(| 000034a0 1e 20 20 20 20 20 20 20 20 42 4c 54 20 20 20 20 |. BLT | 000034b0 20 69 73 5f 76 69 73 69 62 6c 65 0d 14 32 20 20 | is_visible..2 | 000034c0 20 20 20 20 20 20 20 42 20 20 20 20 20 20 20 69 | B i| 000034d0 73 5f 69 6e 76 69 73 69 62 6c 65 0d 14 3c 04 0d |s_invisible..<..| 000034e0 14 46 11 2e 69 73 5f 69 6e 76 69 73 69 62 6c 65 |.F..is_invisible| 000034f0 0d 14 50 19 20 20 20 20 20 20 20 20 43 4d 50 20 |..P. CMP | 00003500 20 20 20 20 72 30 2c 72 30 0d 14 5a 25 20 20 20 | r0,r0..Z% | 00003510 20 20 20 20 20 4c 44 4d 46 44 20 20 20 28 73 70 | LDMFD (sp| 00003520 29 21 2c 7b 72 30 2d 72 31 31 2c 70 63 7d 0d 14 |)!,{r0-r11,pc}..| 00003530 64 0f 2e 69 73 5f 76 69 73 69 62 6c 65 0d 14 6e |d..is_visible..n| 00003540 19 20 20 20 20 20 20 20 20 43 4d 4e 20 20 20 20 |. CMN | 00003550 20 70 63 2c 23 30 0d 14 78 25 20 20 20 20 20 20 | pc,#0..x% | 00003560 20 20 4c 44 4d 46 44 20 20 20 28 73 70 29 21 2c | LDMFD (sp)!,| 00003570 7b 72 30 2d 72 31 31 2c 70 63 7d 0d 14 82 04 0d |{r0-r11,pc}.....| 00003580 14 8c 27 2e 73 6c 69 64 65 20 20 53 54 4d 46 44 |..'.slide STMFD| 00003590 20 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 31 31 | (sp)!,{r0-r11| 000035a0 2c 6c 69 6e 6b 7d 0d 14 96 1a 20 20 20 20 20 20 |,link}.... | 000035b0 20 20 4d 4f 56 20 20 20 20 20 72 31 31 2c 72 33 | MOV r11,r3| 000035c0 0d 14 a0 1e 20 20 20 20 20 20 20 20 4c 44 4d 49 |.... LDMI| 000035d0 41 20 20 20 72 30 2c 7b 72 35 2d 72 37 7d 0d 14 |A r0,{r5-r7}..| 000035e0 aa 1f 20 20 20 20 20 20 20 20 4c 44 4d 49 41 20 |.. LDMIA | 000035f0 20 20 72 31 2c 7b 72 38 2d 72 31 30 7d 0d 14 b4 | r1,{r8-r10}...| 00003600 0f 2e 73 6c 69 64 65 5f 6c 6f 6f 70 0d 14 be 1c |..slide_loop....| 00003610 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 00003620 72 32 2c 72 35 2c 72 38 0d 14 c8 1c 20 20 20 20 |r2,r5,r8.... | 00003630 20 20 20 20 41 44 44 20 20 20 20 20 72 33 2c 72 | ADD r3,r| 00003640 36 2c 72 39 0d 14 d2 1d 20 20 20 20 20 20 20 20 |6,r9.... | 00003650 41 44 44 20 20 20 20 20 72 34 2c 72 37 2c 72 31 |ADD r4,r7,r1| 00003660 30 0d 14 dc 20 20 20 20 20 20 20 20 20 4d 4f 56 |0... MOV| 00003670 20 20 20 20 20 72 32 2c 72 32 2c 41 53 52 20 23 | r2,r2,ASR #| 00003680 31 0d 14 e6 20 20 20 20 20 20 20 20 20 4d 4f 56 |1... MOV| 00003690 20 20 20 20 20 72 33 2c 72 33 2c 41 53 52 20 23 | r3,r3,ASR #| 000036a0 31 0d 14 f0 20 20 20 20 20 20 20 20 20 4d 4f 56 |1... MOV| 000036b0 20 20 20 20 20 72 34 2c 72 34 2c 41 53 52 20 23 | r4,r4,ASR #| 000036c0 31 0d 14 fa 1c 20 20 20 20 20 20 20 20 53 55 42 |1.... SUB| 000036d0 20 20 20 20 20 72 30 2c 72 35 2c 72 38 0d 15 04 | r0,r5,r8...| 000036e0 1a 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 |. MOV | 000036f0 20 72 31 34 2c 72 30 0d 15 0e 1d 20 20 20 20 20 | r14,r0.... | 00003700 20 20 20 4d 55 4c 20 20 20 20 20 72 31 2c 72 30 | MUL r1,r0| 00003710 2c 72 31 34 0d 15 18 1c 20 20 20 20 20 20 20 20 |,r14.... | 00003720 53 55 42 20 20 20 20 20 72 30 2c 72 36 2c 72 39 |SUB r0,r6,r9| 00003730 0d 15 22 1a 20 20 20 20 20 20 20 20 4d 4f 56 20 |..". MOV | 00003740 20 20 20 20 72 31 34 2c 72 30 0d 15 2c 20 20 20 | r14,r0.., | 00003750 20 20 20 20 20 20 4d 4c 41 20 20 20 20 20 72 31 | MLA r1| 00003760 2c 72 30 2c 72 31 34 2c 72 31 0d 15 36 1d 20 20 |,r0,r14,r1..6. | 00003770 20 20 20 20 20 20 53 55 42 20 20 20 20 20 72 30 | SUB r0| 00003780 2c 72 37 2c 72 31 30 0d 15 40 1a 20 20 20 20 20 |,r7,r10..@. | 00003790 20 20 20 4d 4f 56 20 20 20 20 20 72 31 34 2c 72 | MOV r14,r| 000037a0 30 0d 15 4a 20 20 20 20 20 20 20 20 20 4d 4c 41 |0..J MLA| 000037b0 20 20 20 20 20 72 31 2c 72 30 2c 72 31 34 2c 72 | r1,r0,r14,r| 000037c0 31 0d 15 54 23 20 20 20 20 20 20 20 20 43 4d 50 |1..T# CMP| 000037d0 20 20 20 20 20 72 31 2c 23 73 6c 69 64 65 5f 6c | r1,#slide_l| 000037e0 69 6d 69 74 0d 15 5e 1d 20 20 20 20 20 20 20 20 |imit..^. | 000037f0 42 4c 54 20 20 20 20 20 77 65 6c 6c 5f 73 6c 69 |BLT well_sli| 00003800 64 0d 15 68 21 20 20 20 20 20 20 20 20 53 54 4d |d..h! STM| 00003810 46 44 20 20 20 28 73 70 29 21 2c 7b 72 32 2d 72 |FD (sp)!,{r2-r| 00003820 34 7d 0d 15 72 19 20 20 20 20 20 20 20 20 4d 4f |4}..r. MO| 00003830 56 20 20 20 20 20 72 30 2c 73 70 0d 15 7c 1a 20 |V r0,sp..|. | 00003840 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 | MOV r| 00003850 31 2c 72 31 31 0d 15 86 1d 20 20 20 20 20 20 20 |1,r11.... | 00003860 20 42 4c 20 20 20 20 20 20 69 6e 76 69 73 69 62 | BL invisib| 00003870 6c 65 0d 15 90 21 20 20 20 20 20 20 20 20 4c 44 |le...! LD| 00003880 4d 45 51 46 44 20 28 73 70 29 21 2c 7b 72 35 2d |MEQFD (sp)!,{r5-| 00003890 72 37 7d 0d 15 9a 22 20 20 20 20 20 20 20 20 4c |r7}..." L| 000038a0 44 4d 4e 45 46 44 20 28 73 70 29 21 2c 7b 72 38 |DMNEFD (sp)!,{r8| 000038b0 2d 72 31 30 7d 0d 15 a4 1e 20 20 20 20 20 20 20 |-r10}.... | 000038c0 20 42 20 20 20 20 20 20 20 73 6c 69 64 65 5f 6c | B slide_l| 000038d0 6f 6f 70 0d 15 ae 0e 2e 77 65 6c 6c 5f 73 6c 69 |oop.....well_sli| 000038e0 64 0d 15 b8 20 20 20 20 20 20 20 20 20 4c 44 52 |d... LDR| 000038f0 20 20 20 20 20 72 30 2c 5b 73 70 2c 23 34 2a 32 | r0,[sp,#4*2| 00003900 5d 0d 15 c2 1e 20 20 20 20 20 20 20 20 53 54 4d |].... STM| 00003910 49 41 20 20 20 72 30 2c 7b 72 32 2d 72 34 7d 0d |IA r0,{r2-r4}.| 00003920 15 cc 25 20 20 20 20 20 20 20 20 4c 44 4d 46 44 |..% LDMFD| 00003930 20 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 31 31 | (sp)!,{r0-r11| 00003940 2c 70 63 7d 0d 15 d6 04 0d 15 e0 27 20 3b 20 72 |,pc}.......' ; r| 00003950 38 2d 3e 61 6e 67 6c 65 20 6c 69 73 74 2c 72 32 |8->angle list,r2| 00003960 20 2a 6e 6f 74 2a 20 6e 6f 77 20 75 73 65 64 0d | *not* now used.| 00003970 15 ea 04 0d 15 f4 15 2e 72 65 67 69 73 74 65 72 |........register| 00003980 5f 70 6f 6c 79 67 6f 6e 0d 15 fe 27 20 20 20 20 |_polygon...' | 00003990 20 20 20 20 53 54 4d 46 44 20 20 20 28 73 70 29 | STMFD (sp)| 000039a0 21 2c 7b 72 30 2d 72 31 31 2c 6c 69 6e 6b 7d 0d |!,{r0-r11,link}.| 000039b0 16 08 1a 20 20 20 20 20 20 20 20 4d 4f 56 20 20 |... MOV | 000039c0 20 20 20 72 31 30 2c 72 30 0d 16 12 24 20 20 20 | r10,r0...$ | 000039d0 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 39 2c | LDR r9,| 000039e0 5b 72 31 30 2c 23 73 75 72 66 5f 6e 5d 0d 16 1c |[r10,#surf_n]...| 000039f0 1d 20 20 20 20 20 20 20 20 a4 61 64 72 6c 28 35 |. .adrl(5| 00003a00 2c 76 65 72 74 69 63 65 73 29 0d 16 26 19 20 20 |,vertices)..&. | 00003a10 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 33 | MOV r3| 00003a20 2c 72 39 0d 16 30 19 20 20 20 20 20 20 20 20 4d |,r9..0. M| 00003a30 4f 56 20 20 20 20 20 72 34 2c 23 30 0d 16 3a 15 |OV r4,#0..:.| 00003a40 2e 72 70 5f 63 6f 70 79 5f 76 65 72 74 69 63 65 |.rp_copy_vertice| 00003a50 73 0d 16 44 24 20 20 20 20 20 20 20 20 41 44 44 |s..D$ ADD| 00003a60 20 20 20 20 20 72 30 2c 72 31 30 2c 23 73 75 72 | r0,r10,#sur| 00003a70 66 5f 72 65 71 0d 16 4e 1c 20 20 20 20 20 20 20 |f_req..N. | 00003a80 20 41 44 44 20 20 20 20 20 72 30 2c 72 30 2c 72 | ADD r0,r0,r| 00003a90 34 0d 16 58 1c 20 20 20 20 20 20 20 20 41 44 44 |4..X. ADD| 00003aa0 20 20 20 20 20 72 32 2c 72 35 2c 72 34 0d 16 62 | r2,r5,r4..b| 00003ab0 22 20 20 20 20 20 20 20 20 42 4c 20 20 20 20 20 |" BL | 00003ac0 20 72 6f 74 61 74 65 5f 62 79 5f 6c 69 73 74 0d | rotate_by_list.| 00003ad0 16 6c 19 20 20 20 20 20 20 20 20 4d 4f 56 20 20 |.l. MOV | 00003ae0 20 20 20 72 30 2c 72 32 0d 16 76 20 20 20 20 20 | r0,r2..v | 00003af0 20 20 20 20 4c 44 52 20 20 20 20 20 72 31 2c 5b | LDR r1,[| 00003b00 73 70 2c 23 34 2a 31 5d 0d 16 80 17 20 20 20 20 |sp,#4*1].... | 00003b10 20 20 20 20 42 4c 20 20 20 20 20 20 61 64 64 0d | BL add.| 00003b20 16 8a 1d 20 20 20 20 20 20 20 20 41 44 44 20 20 |... ADD | 00003b30 20 20 20 72 34 2c 72 34 2c 23 31 32 0d 16 94 1c | r4,r4,#12....| 00003b40 20 20 20 20 20 20 20 20 53 55 42 53 20 20 20 20 | SUBS | 00003b50 72 33 2c 72 33 2c 23 31 0d 16 9e 24 20 20 20 20 |r3,r3,#1...$ | 00003b60 20 20 20 20 42 4e 45 20 20 20 20 20 72 70 5f 63 | BNE rp_c| 00003b70 6f 70 79 5f 76 65 72 74 69 63 65 73 0d 16 a8 19 |opy_vertices....| 00003b80 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 | MOV | 00003b90 72 31 2c 23 30 0d 16 b2 11 2e 72 70 5f 63 6c 69 |r1,#0.....rp_cli| 00003ba0 70 5f 6c 6f 6f 70 0d 16 bc 20 20 20 20 20 20 20 |p_loop... | 00003bb0 20 20 4c 44 52 20 20 20 20 20 72 30 2c 5b 73 70 | LDR r0,[sp| 00003bc0 2c 23 34 2a 39 5d 0d 16 c6 1a 20 20 20 20 20 20 |,#4*9].... | 00003bd0 20 20 4d 4f 56 20 20 20 20 20 72 31 34 2c 23 31 | MOV r14,#1| 00003be0 0d 16 d0 21 20 20 20 20 20 20 20 20 54 53 54 20 |...! TST | 00003bf0 20 20 20 20 72 30 2c 72 31 34 2c 4c 53 4c 20 72 | r0,r14,LSL r| 00003c00 31 0d 16 da 26 20 20 20 20 20 20 20 20 42 4e 45 |1...& BNE| 00003c10 20 20 20 20 20 72 70 5f 6e 6f 5f 6e 65 65 64 5f | rp_no_need_| 00003c20 74 6f 5f 63 6c 69 70 0d 16 e4 19 20 20 20 20 20 |to_clip.... | 00003c30 20 20 20 4d 4f 56 20 20 20 20 20 72 33 2c 23 30 | MOV r3,#0| 00003c40 0d 16 ee 0d 2e 72 70 5f 6c 6f 6f 70 31 0d 16 f8 |.....rp_loop1...| 00003c50 19 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 |. CMP | 00003c60 20 72 39 2c 23 32 0d 17 02 25 20 20 20 20 20 20 | r9,#2...% | 00003c70 20 20 4c 44 4d 4c 45 46 44 20 28 73 70 29 21 2c | LDMLEFD (sp)!,| 00003c80 7b 72 30 2d 72 31 31 2c 70 63 7d 0d 17 0c 19 20 |{r0-r11,pc}.... | 00003c90 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 | CMP r| 00003ca0 33 2c 72 39 0d 17 16 21 20 20 20 20 20 20 20 20 |3,r9...! | 00003cb0 42 47 45 20 20 20 20 20 64 6f 6e 65 5f 72 70 5f |BGE done_rp_| 00003cc0 6c 6f 6f 70 31 0d 17 20 23 20 20 20 20 20 20 20 |loop1.. # | 00003cd0 20 41 44 44 20 20 20 20 20 72 30 2c 72 35 2c 72 | ADD r0,r5,r| 00003ce0 33 2c 4c 53 4c 20 23 33 0d 17 2a 23 20 20 20 20 |3,LSL #3..*# | 00003cf0 20 20 20 20 41 44 44 20 20 20 20 20 72 30 2c 72 | ADD r0,r| 00003d00 30 2c 72 33 2c 4c 53 4c 20 23 32 0d 17 34 1d 20 |0,r3,LSL #2..4. | 00003d10 20 20 20 20 20 20 20 42 4c 20 20 20 20 20 20 69 | BL i| 00003d20 6e 76 69 73 69 62 6c 65 0d 17 3e 21 20 20 20 20 |nvisible..>! | 00003d30 20 20 20 20 42 4e 45 20 20 20 20 20 6e 65 78 74 | BNE next| 00003d40 5f 72 70 5f 6c 6f 6f 70 31 0d 17 48 1d 20 20 20 |_rp_loop1..H. | 00003d50 20 20 20 20 20 41 44 44 20 20 20 20 20 72 31 34 | ADD r14| 00003d60 2c 72 33 2c 23 31 0d 17 52 1a 20 20 20 20 20 20 |,r3,#1..R. | 00003d70 20 20 43 4d 50 20 20 20 20 20 72 31 34 2c 72 39 | CMP r14,r9| 00003d80 0d 17 5c 17 20 20 20 20 20 20 20 20 ec 51 20 20 |..\. .Q | 00003d90 20 72 31 34 2c 23 30 0d 17 66 24 20 20 20 20 20 | r14,#0..f$ | 00003da0 20 20 20 41 44 44 20 20 20 20 20 72 30 2c 72 35 | ADD r0,r5| 00003db0 2c 72 31 34 2c 4c 53 4c 20 23 33 0d 17 70 24 20 |,r14,LSL #3..p$ | 00003dc0 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 | ADD r| 00003dd0 30 2c 72 30 2c 72 31 34 2c 4c 53 4c 20 23 32 0d |0,r0,r14,LSL #2.| 00003de0 17 7a 1d 20 20 20 20 20 20 20 20 42 4c 20 20 20 |.z. BL | 00003df0 20 20 20 69 6e 76 69 73 69 62 6c 65 0d 17 84 21 | invisible...!| 00003e00 20 20 20 20 20 20 20 20 42 4e 45 20 20 20 20 20 | BNE | 00003e10 6e 65 78 74 5f 72 70 5f 6c 6f 6f 70 31 0d 17 8e |next_rp_loop1...| 00003e20 1d 20 20 20 20 20 20 20 20 53 55 42 53 20 20 20 |. SUBS | 00003e30 20 72 31 34 2c 72 33 2c 23 31 0d 17 98 1e 20 20 | r14,r3,#1.... | 00003e40 20 20 20 20 20 20 41 44 44 4d 49 20 20 20 72 31 | ADDMI r1| 00003e50 34 2c 72 31 34 2c 72 39 0d 17 a2 24 20 20 20 20 |4,r14,r9...$ | 00003e60 20 20 20 20 41 44 44 20 20 20 20 20 72 30 2c 72 | ADD r0,r| 00003e70 35 2c 72 31 34 2c 4c 53 4c 20 23 33 0d 17 ac 24 |5,r14,LSL #3...$| 00003e80 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 00003e90 72 30 2c 72 30 2c 72 31 34 2c 4c 53 4c 20 23 32 |r0,r0,r14,LSL #2| 00003ea0 0d 17 b6 1d 20 20 20 20 20 20 20 20 42 4c 20 20 |.... BL | 00003eb0 20 20 20 20 69 6e 76 69 73 69 62 6c 65 0d 17 c0 | invisible...| 00003ec0 21 20 20 20 20 20 20 20 20 42 4e 45 20 20 20 20 |! BNE | 00003ed0 20 6e 65 78 74 5f 72 70 5f 6c 6f 6f 70 31 0d 17 | next_rp_loop1..| 00003ee0 ca 1d 20 20 20 20 20 20 20 20 41 44 44 20 20 20 |.. ADD | 00003ef0 20 20 72 31 34 2c 72 33 2c 23 31 0d 17 d4 1a 20 | r14,r3,#1.... | 00003f00 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 | CMP r| 00003f10 31 34 2c 72 39 0d 17 de 25 20 20 20 20 20 20 20 |14,r9...% | 00003f20 20 42 47 45 20 20 20 20 20 72 70 5f 69 73 5f 6c | BGE rp_is_l| 00003f30 61 73 74 5f 61 6e 79 77 61 79 0d 17 e8 2c 20 20 |ast_anyway..., | 00003f40 20 20 20 20 20 20 53 54 4d 46 44 20 20 20 28 73 | STMFD (s| 00003f50 70 29 21 2c 7b 72 31 2c 72 37 2c 72 38 2c 72 31 |p)!,{r1,r7,r8,r1| 00003f60 30 2d 72 31 31 7d 0d 17 f2 1a 20 20 20 20 20 20 |0-r11}.... | 00003f70 20 20 4d 4f 56 20 20 20 20 20 72 31 30 2c 72 33 | MOV r10,r3| 00003f80 0d 17 fc 1d 20 20 20 20 20 20 20 20 53 55 42 20 |.... SUB | 00003f90 20 20 20 20 72 31 31 2c 72 39 2c 23 32 0d 18 06 | r11,r9,#2...| 00003fa0 23 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 |# ADD | 00003fb0 20 72 37 2c 72 35 2c 72 33 2c 4c 53 4c 20 23 33 | r7,r5,r3,LSL #3| 00003fc0 0d 18 10 23 20 20 20 20 20 20 20 20 41 44 44 20 |...# ADD | 00003fd0 20 20 20 20 72 37 2c 72 37 2c 72 33 2c 4c 53 4c | r7,r7,r3,LSL| 00003fe0 20 23 32 0d 18 1a 1d 20 20 20 20 20 20 20 20 41 | #2.... A| 00003ff0 44 44 20 20 20 20 20 72 38 2c 72 37 2c 23 31 32 |DD r8,r7,#12| 00004000 0d 18 24 10 2e 72 70 5f 64 65 6c 5f 6c 6f 6f 70 |..$..rp_del_loop| 00004010 0d 18 2e 1f 20 20 20 20 20 20 20 20 4c 44 4d 49 |.... LDMI| 00004020 41 20 20 20 72 38 21 2c 7b 72 30 2d 72 32 7d 0d |A r8!,{r0-r2}.| 00004030 18 38 1f 20 20 20 20 20 20 20 20 53 54 4d 49 41 |.8. STMIA| 00004040 20 20 20 72 37 21 2c 7b 72 30 2d 72 32 7d 0d 18 | r7!,{r0-r2}..| 00004050 42 1e 20 20 20 20 20 20 20 20 41 44 44 20 20 20 |B. ADD | 00004060 20 20 72 31 30 2c 72 31 30 2c 23 31 0d 18 4c 1b | r10,r10,#1..L.| 00004070 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 | CMP | 00004080 72 31 30 2c 72 31 31 0d 18 56 1f 20 20 20 20 20 |r10,r11..V. | 00004090 20 20 20 42 4c 45 20 20 20 20 20 72 70 5f 64 65 | BLE rp_de| 000040a0 6c 5f 6c 6f 6f 70 0d 18 60 2c 20 20 20 20 20 20 |l_loop..`, | 000040b0 20 20 4c 44 4d 46 44 20 20 20 28 73 70 29 21 2c | LDMFD (sp)!,| 000040c0 7b 72 31 2c 72 37 2c 72 38 2c 72 31 30 2d 72 31 |{r1,r7,r8,r10-r1| 000040d0 31 7d 0d 18 6a 16 2e 72 70 5f 69 73 5f 6c 61 73 |1}..j..rp_is_las| 000040e0 74 5f 61 6e 79 77 61 79 0d 18 74 1c 20 20 20 20 |t_anyway..t. | 000040f0 20 20 20 20 53 55 42 20 20 20 20 20 72 39 2c 72 | SUB r9,r| 00004100 39 2c 23 31 0d 18 7e 1c 20 20 20 20 20 20 20 20 |9,#1..~. | 00004110 42 20 20 20 20 20 20 20 72 70 5f 6c 6f 6f 70 31 |B rp_loop1| 00004120 0d 18 88 12 2e 6e 65 78 74 5f 72 70 5f 6c 6f 6f |.....next_rp_loo| 00004130 70 31 0d 18 92 1c 20 20 20 20 20 20 20 20 41 44 |p1.... AD| 00004140 44 20 20 20 20 20 72 33 2c 72 33 2c 23 31 0d 18 |D r3,r3,#1..| 00004150 9c 1c 20 20 20 20 20 20 20 20 42 20 20 20 20 20 |.. B | 00004160 20 20 72 70 5f 6c 6f 6f 70 31 0d 18 a6 12 2e 64 | rp_loop1.....d| 00004170 6f 6e 65 5f 72 70 5f 6c 6f 6f 70 31 0d 18 b0 19 |one_rp_loop1....| 00004180 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 | MOV | 00004190 72 33 2c 23 30 0d 18 ba 0d 2e 72 70 5f 6c 6f 6f |r3,#0.....rp_loo| 000041a0 70 32 0d 18 c4 19 20 20 20 20 20 20 20 20 43 4d |p2.... CM| 000041b0 50 20 20 20 20 20 72 33 2c 72 39 0d 18 ce 21 20 |P r3,r9...! | 000041c0 20 20 20 20 20 20 20 42 47 45 20 20 20 20 20 64 | BGE d| 000041d0 6f 6e 65 5f 72 70 5f 6c 6f 6f 70 32 0d 18 d8 23 |one_rp_loop2...#| 000041e0 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 000041f0 72 30 2c 72 35 2c 72 33 2c 4c 53 4c 20 23 33 0d |r0,r5,r3,LSL #3.| 00004200 18 e2 23 20 20 20 20 20 20 20 20 41 44 44 20 20 |..# ADD | 00004210 20 20 20 72 30 2c 72 30 2c 72 33 2c 4c 53 4c 20 | r0,r0,r3,LSL | 00004220 23 32 0d 18 ec 1d 20 20 20 20 20 20 20 20 42 4c |#2.... BL| 00004230 20 20 20 20 20 20 69 6e 76 69 73 69 62 6c 65 0d | invisible.| 00004240 18 f6 21 20 20 20 20 20 20 20 20 42 4e 45 20 20 |..! BNE | 00004250 20 20 20 6e 65 78 74 5f 72 70 5f 6c 6f 6f 70 32 | next_rp_loop2| 00004260 0d 19 00 1d 20 20 20 20 20 20 20 20 53 55 42 53 |.... SUBS| 00004270 20 20 20 20 72 31 34 2c 72 33 2c 23 31 0d 19 0a | r14,r3,#1...| 00004280 1e 20 20 20 20 20 20 20 20 41 44 44 4d 49 20 20 |. ADDMI | 00004290 20 72 31 34 2c 72 31 34 2c 72 39 0d 19 14 24 20 | r14,r14,r9...$ | 000042a0 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 | ADD r| 000042b0 30 2c 72 35 2c 72 31 34 2c 4c 53 4c 20 23 33 0d |0,r5,r14,LSL #3.| 000042c0 19 1e 24 20 20 20 20 20 20 20 20 41 44 44 20 20 |..$ ADD | 000042d0 20 20 20 72 30 2c 72 30 2c 72 31 34 2c 4c 53 4c | r0,r0,r14,LSL| 000042e0 20 23 32 0d 19 28 1d 20 20 20 20 20 20 20 20 42 | #2..(. B| 000042f0 4c 20 20 20 20 20 20 69 6e 76 69 73 69 62 6c 65 |L invisible| 00004300 0d 19 32 21 20 20 20 20 20 20 20 20 42 45 51 20 |..2! BEQ | 00004310 20 20 20 20 6e 65 78 74 5f 72 70 5f 6c 6f 6f 70 | next_rp_loop| 00004320 32 0d 19 3c 1d 20 20 20 20 20 20 20 20 41 44 44 |2..<. ADD| 00004330 20 20 20 20 20 72 31 34 2c 72 33 2c 23 31 0d 19 | r14,r3,#1..| 00004340 46 1a 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 |F. CMP | 00004350 20 20 72 31 34 2c 72 39 0d 19 50 17 20 20 20 20 | r14,r9..P. | 00004360 20 20 20 20 ec 51 20 20 20 72 31 34 2c 23 30 0d | .Q r14,#0.| 00004370 19 5a 24 20 20 20 20 20 20 20 20 41 44 44 20 20 |.Z$ ADD | 00004380 20 20 20 72 30 2c 72 35 2c 72 31 34 2c 4c 53 4c | r0,r5,r14,LSL| 00004390 20 23 33 0d 19 64 24 20 20 20 20 20 20 20 20 41 | #3..d$ A| 000043a0 44 44 20 20 20 20 20 72 30 2c 72 30 2c 72 31 34 |DD r0,r0,r14| 000043b0 2c 4c 53 4c 20 23 32 0d 19 6e 1d 20 20 20 20 20 |,LSL #2..n. | 000043c0 20 20 20 42 4c 20 20 20 20 20 20 69 6e 76 69 73 | BL invis| 000043d0 69 62 6c 65 0d 19 78 22 20 20 20 20 20 20 20 20 |ible..x" | 000043e0 42 45 51 20 20 20 20 20 6e 6f 5f 6e 65 65 64 5f |BEQ no_need_| 000043f0 74 6f 5f 69 6e 73 0d 19 82 28 20 20 20 20 20 20 |to_ins...( | 00004400 20 20 53 54 4d 46 44 20 20 20 28 73 70 29 21 2c | STMFD (sp)!,| 00004410 7b 72 31 2c 72 37 2c 72 38 2c 72 31 30 7d 0d 19 |{r1,r7,r8,r10}..| 00004420 8c 1d 20 20 20 20 20 20 20 20 53 55 42 20 20 20 |.. SUB | 00004430 20 20 72 31 30 2c 72 39 2c 23 31 0d 19 96 24 20 | r10,r9,#1...$ | 00004440 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 | ADD r| 00004450 37 2c 72 35 2c 72 31 30 2c 4c 53 4c 20 23 33 0d |7,r5,r10,LSL #3.| 00004460 19 a0 24 20 20 20 20 20 20 20 20 41 44 44 20 20 |..$ ADD | 00004470 20 20 20 72 37 2c 72 37 2c 72 31 30 2c 4c 53 4c | r7,r7,r10,LSL| 00004480 20 23 32 0d 19 aa 1d 20 20 20 20 20 20 20 20 41 | #2.... A| 00004490 44 44 20 20 20 20 20 72 38 2c 72 37 2c 23 31 32 |DD r8,r7,#12| 000044a0 0d 19 b4 10 2e 72 70 5f 69 6e 73 5f 6c 6f 6f 70 |.....rp_ins_loop| 000044b0 0d 19 be 1e 20 20 20 20 20 20 20 20 4c 44 4d 49 |.... LDMI| 000044c0 41 20 20 20 72 37 2c 7b 72 30 2d 72 32 7d 0d 19 |A r7,{r0-r2}..| 000044d0 c8 1e 20 20 20 20 20 20 20 20 53 54 4d 49 41 20 |.. STMIA | 000044e0 20 20 72 38 2c 7b 72 30 2d 72 32 7d 0d 19 d2 1d | r8,{r0-r2}....| 000044f0 20 20 20 20 20 20 20 20 53 55 42 20 20 20 20 20 | SUB | 00004500 72 37 2c 72 37 2c 23 31 32 0d 19 dc 1d 20 20 20 |r7,r7,#12.... | 00004510 20 20 20 20 20 53 55 42 20 20 20 20 20 72 38 2c | SUB r8,| 00004520 72 38 2c 23 31 32 0d 19 e6 1e 20 20 20 20 20 20 |r8,#12.... | 00004530 20 20 53 55 42 20 20 20 20 20 72 31 30 2c 72 31 | SUB r10,r1| 00004540 30 2c 23 31 0d 19 f0 1a 20 20 20 20 20 20 20 20 |0,#1.... | 00004550 43 4d 50 20 20 20 20 20 72 31 30 2c 72 33 0d 19 |CMP r10,r3..| 00004560 fa 1f 20 20 20 20 20 20 20 20 42 47 45 20 20 20 |.. BGE | 00004570 20 20 72 70 5f 69 6e 73 5f 6c 6f 6f 70 0d 1a 04 | rp_ins_loop...| 00004580 28 20 20 20 20 20 20 20 20 4c 44 4d 46 44 20 20 |( LDMFD | 00004590 20 28 73 70 29 21 2c 7b 72 31 2c 72 37 2c 72 38 | (sp)!,{r1,r7,r8| 000045a0 2c 72 31 30 7d 0d 1a 0e 1c 20 20 20 20 20 20 20 |,r10}.... | 000045b0 20 41 44 44 20 20 20 20 20 72 39 2c 72 39 2c 23 | ADD r9,r9,#| 000045c0 31 0d 1a 18 13 2e 6e 6f 5f 6e 65 65 64 5f 74 6f |1.....no_need_to| 000045d0 5f 69 6e 73 0d 1a 22 21 20 20 20 20 20 20 20 20 |_ins.."! | 000045e0 53 54 4d 46 44 20 20 20 28 73 70 29 21 2c 7b 72 |STMFD (sp)!,{r| 000045f0 30 2d 72 33 7d 0d 1a 2c 23 20 20 20 20 20 20 20 |0-r3}..,# | 00004600 20 41 44 44 20 20 20 20 20 72 30 2c 72 35 2c 72 | ADD r0,r5,r| 00004610 33 2c 4c 53 4c 20 23 33 0d 1a 36 23 20 20 20 20 |3,LSL #3..6# | 00004620 20 20 20 20 41 44 44 20 20 20 20 20 72 30 2c 72 | ADD r0,r| 00004630 30 2c 72 33 2c 4c 53 4c 20 23 32 0d 1a 40 1d 20 |0,r3,LSL #2..@. | 00004640 20 20 20 20 20 20 20 53 55 42 53 20 20 20 20 72 | SUBS r| 00004650 31 34 2c 72 33 2c 23 31 0d 1a 4a 1e 20 20 20 20 |14,r3,#1..J. | 00004660 20 20 20 20 41 44 44 4d 49 20 20 20 72 31 34 2c | ADDMI r14,| 00004670 72 31 34 2c 72 39 0d 1a 54 24 20 20 20 20 20 20 |r14,r9..T$ | 00004680 20 20 41 44 44 20 20 20 20 20 72 31 2c 72 35 2c | ADD r1,r5,| 00004690 72 31 34 2c 4c 53 4c 20 23 33 0d 1a 5e 24 20 20 |r14,LSL #3..^$ | 000046a0 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 31 | ADD r1| 000046b0 2c 72 31 2c 72 31 34 2c 4c 53 4c 20 23 32 0d 1a |,r1,r14,LSL #2..| 000046c0 68 19 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 |h. MOV | 000046d0 20 20 72 32 2c 72 30 0d 1a 72 1e 20 20 20 20 20 | r2,r0..r. | 000046e0 20 20 20 4c 44 52 20 20 20 20 20 72 33 2c 5b 73 | LDR r3,[s| 000046f0 70 2c 23 34 5d 0d 1a 7c 19 20 20 20 20 20 20 20 |p,#4]..|. | 00004700 20 42 4c 20 20 20 20 20 20 73 6c 69 64 65 0d 1a | BL slide..| 00004710 86 1f 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 |.. LDR | 00004720 20 20 72 33 2c 5b 73 70 2c 23 31 32 5d 0d 1a 90 | r3,[sp,#12]...| 00004730 1c 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 |. ADD | 00004740 20 72 33 2c 72 33 2c 23 31 0d 1a 9a 19 20 20 20 | r3,r3,#1.... | 00004750 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 33 2c | CMP r3,| 00004760 72 39 0d 1a a4 16 20 20 20 20 20 20 20 20 ec 51 |r9.... .Q| 00004770 20 20 20 72 33 2c 23 30 0d 1a ae 23 20 20 20 20 | r3,#0...# | 00004780 20 20 20 20 41 44 44 20 20 20 20 20 72 30 2c 72 | ADD r0,r| 00004790 35 2c 72 33 2c 4c 53 4c 20 23 33 0d 1a b8 23 20 |5,r3,LSL #3...# | 000047a0 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 | ADD r| 000047b0 30 2c 72 30 2c 72 33 2c 4c 53 4c 20 23 32 0d 1a |0,r0,r3,LSL #2..| 000047c0 c2 1d 20 20 20 20 20 20 20 20 41 44 44 20 20 20 |.. ADD | 000047d0 20 20 72 31 34 2c 72 33 2c 23 31 0d 1a cc 1a 20 | r14,r3,#1.... | 000047e0 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 | CMP r| 000047f0 31 34 2c 72 39 0d 1a d6 17 20 20 20 20 20 20 20 |14,r9.... | 00004800 20 ec 51 20 20 20 72 31 34 2c 23 30 0d 1a e0 24 | .Q r14,#0...$| 00004810 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 00004820 72 31 2c 72 35 2c 72 31 34 2c 4c 53 4c 20 23 33 |r1,r5,r14,LSL #3| 00004830 0d 1a ea 24 20 20 20 20 20 20 20 20 41 44 44 20 |...$ ADD | 00004840 20 20 20 20 72 31 2c 72 31 2c 72 31 34 2c 4c 53 | r1,r1,r14,LS| 00004850 4c 20 23 32 0d 1a f4 19 20 20 20 20 20 20 20 20 |L #2.... | 00004860 4d 4f 56 20 20 20 20 20 72 32 2c 72 30 0d 1a fe |MOV r2,r0...| 00004870 1e 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 |. LDR | 00004880 20 72 33 2c 5b 73 70 2c 23 34 5d 0d 1b 08 19 20 | r3,[sp,#4].... | 00004890 20 20 20 20 20 20 20 42 4c 20 20 20 20 20 20 73 | BL s| 000048a0 6c 69 64 65 0d 1b 12 21 20 20 20 20 20 20 20 20 |lide...! | 000048b0 4c 44 4d 46 44 20 20 20 28 73 70 29 21 2c 7b 72 |LDMFD (sp)!,{r| 000048c0 30 2d 72 33 7d 0d 1b 1c 1c 20 20 20 20 20 20 20 |0-r3}.... | 000048d0 20 41 44 44 20 20 20 20 20 72 33 2c 72 33 2c 23 | ADD r3,r3,#| 000048e0 32 0d 1b 26 12 2e 6e 65 78 74 5f 72 70 5f 6c 6f |2..&..next_rp_lo| 000048f0 6f 70 32 0d 1b 30 1c 20 20 20 20 20 20 20 20 41 |op2..0. A| 00004900 44 44 20 20 20 20 20 72 33 2c 72 33 2c 23 31 0d |DD r3,r3,#1.| 00004910 1b 3a 1c 20 20 20 20 20 20 20 20 42 20 20 20 20 |.:. B | 00004920 20 20 20 72 70 5f 6c 6f 6f 70 32 0d 1b 44 12 2e | rp_loop2..D..| 00004930 64 6f 6e 65 5f 72 70 5f 6c 6f 6f 70 32 0d 1b 4e |done_rp_loop2..N| 00004940 17 2e 72 70 5f 6e 6f 5f 6e 65 65 64 5f 74 6f 5f |..rp_no_need_to_| 00004950 63 6c 69 70 0d 1b 58 1c 20 20 20 20 20 20 20 20 |clip..X. | 00004960 41 44 44 20 20 20 20 20 72 31 2c 72 31 2c 23 31 |ADD r1,r1,#1| 00004970 0d 1b 62 19 20 20 20 20 20 20 20 20 43 4d 50 20 |..b. CMP | 00004980 20 20 20 20 72 31 2c 23 36 0d 1b 6c 20 20 20 20 | r1,#6..l | 00004990 20 20 20 20 20 42 4c 54 20 20 20 20 20 72 70 5f | BLT rp_| 000049a0 63 6c 69 70 5f 6c 6f 6f 70 0d 1b 76 20 20 20 20 |clip_loop..v | 000049b0 20 20 20 20 20 a4 61 64 72 6c 28 31 31 2c 70 6f | .adrl(11,po| 000049c0 6c 79 5f 70 6f 69 6e 74 29 0d 1b 80 1f 20 20 20 |ly_point).... | 000049d0 20 20 20 20 20 4c 44 4d 49 41 20 20 20 72 31 31 | LDMIA r11| 000049e0 2c 7b 72 36 2d 72 38 7d 0d 1b 8a 20 20 20 20 20 |,{r6-r8}... | 000049f0 20 20 20 20 4c 44 52 20 20 20 20 20 72 30 2c 5b | LDR r0,[| 00004a00 73 70 2c 23 34 2a 39 5d 0d 1b 94 21 20 20 20 20 |sp,#4*9]...! | 00004a10 20 20 20 20 54 53 54 20 20 20 20 20 72 30 2c 23 | TST r0,#| 00004a20 62 69 74 5f 6d 65 72 67 65 0d 1b 9e 27 20 20 20 |bit_merge...' | 00004a30 20 20 20 20 20 4c 44 52 45 51 20 20 20 72 30 2c | LDREQ r0,| 00004a40 5b 72 31 30 2c 23 73 75 72 66 5f 74 79 70 65 5d |[r10,#surf_type]| 00004a50 0d 1b a8 19 20 20 20 20 20 20 20 20 43 4d 50 45 |.... CMPE| 00004a60 51 20 20 20 72 30 2c 23 30 0d 1b b2 20 20 20 20 |Q r0,#0... | 00004a70 20 20 20 20 20 42 4e 45 20 20 20 20 20 6e 6f 74 | BNE not| 00004a80 5f 6e 65 77 5f 70 6f 6c 79 0d 1b bc 20 20 20 20 |_new_poly... | 00004a90 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 30 2c | MOV r0,| 00004aa0 23 64 69 73 70 5f 72 65 71 0d 1b c6 1a 20 20 20 |#disp_req.... | 00004ab0 20 20 20 20 20 42 4c 20 20 20 20 20 20 6d 61 6c | BL mal| 00004ac0 6c 6f 63 0d 1b d0 1b 20 20 20 20 20 20 20 20 53 |loc.... S| 00004ad0 54 52 56 53 20 20 20 72 30 2c 5b 73 70 5d 0d 1b |TRVS r0,[sp]..| 00004ae0 da 25 20 20 20 20 20 20 20 20 4c 44 4d 56 53 46 |.% LDMVSF| 00004af0 44 20 28 73 70 29 21 2c 7b 72 30 2d 72 31 31 2c |D (sp)!,{r0-r11,| 00004b00 70 63 7d 0d 1b e4 19 20 20 20 20 20 20 20 20 4d |pc}.... M| 00004b10 4f 56 20 20 20 20 20 72 34 2c 72 30 0d 1b ee 21 |OV r4,r0...!| 00004b20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 | MOV | 00004b30 72 30 2c 23 26 37 30 30 30 30 30 30 30 0d 1b f8 |r0,#&70000000...| 00004b40 1c 20 20 20 20 20 20 20 20 52 53 42 20 20 20 20 |. RSB | 00004b50 20 72 31 2c 72 30 2c 23 30 0d 1c 02 19 20 20 20 | r1,r0,#0.... | 00004b60 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 32 2c | MOV r2,| 00004b70 23 30 0d 1c 0c 1e 20 20 20 20 20 20 20 20 53 54 |#0.... ST| 00004b80 4d 49 41 20 20 20 72 34 2c 7b 72 30 2d 72 32 7d |MIA r4,{r0-r2}| 00004b90 0d 1c 16 20 20 20 20 20 20 20 20 20 43 4d 50 20 |... CMP | 00004ba0 20 20 20 20 72 37 2c 72 38 2c 4c 53 4c 20 23 32 | r7,r8,LSL #2| 00004bb0 0d 1c 20 28 20 20 20 20 20 20 20 20 42 4e 45 20 |.. ( BNE | 00004bc0 20 20 20 20 64 6f 6e 74 5f 65 78 74 65 6e 64 5f | dont_extend_| 00004bd0 72 70 5f 74 61 62 6c 65 0d 1c 2a 19 20 20 20 20 |rp_table..*. | 00004be0 20 20 20 20 4d 4f 56 20 20 20 20 20 72 30 2c 72 | MOV r0,r| 00004bf0 36 0d 1c 34 22 20 20 20 20 20 20 20 20 4d 4f 56 |6..4" MOV| 00004c00 20 20 20 20 20 72 31 2c 23 70 6f 6c 79 5f 63 68 | r1,#poly_ch| 00004c10 75 6e 6b 0d 1c 3e 1b 20 20 20 20 20 20 20 20 42 |unk..>. B| 00004c20 4c 20 20 20 20 20 20 72 65 61 6c 6c 6f 63 0d 1c |L realloc..| 00004c30 48 1b 20 20 20 20 20 20 20 20 53 54 52 56 53 20 |H. STRVS | 00004c40 20 20 72 30 2c 5b 73 70 5d 0d 1c 52 25 20 20 20 | r0,[sp]..R% | 00004c50 20 20 20 20 20 4c 44 4d 56 53 46 44 20 28 73 70 | LDMVSFD (sp| 00004c60 29 21 2c 7b 72 30 2d 72 31 31 2c 70 63 7d 0d 1c |)!,{r0-r11,pc}..| 00004c70 5c 19 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 |\. MOV | 00004c80 20 20 72 36 2c 72 30 0d 1c 66 25 20 20 20 20 20 | r6,r0..f% | 00004c90 20 20 20 41 44 44 20 20 20 20 20 72 37 2c 72 37 | ADD r7,r7| 00004ca0 2c 23 70 6f 6c 79 5f 63 68 75 6e 6b 0d 1c 70 1f |,#poly_chunk..p.| 00004cb0 20 20 20 20 20 20 20 20 53 54 4d 49 41 20 20 20 | STMIA | 00004cc0 72 31 31 2c 7b 72 36 2d 72 38 7d 0d 1c 7a 19 2e |r11,{r6-r8}..z..| 00004cd0 64 6f 6e 74 5f 65 78 74 65 6e 64 5f 72 70 5f 74 |dont_extend_rp_t| 00004ce0 61 62 6c 65 0d 1c 84 25 20 20 20 20 20 20 20 20 |able...% | 00004cf0 53 54 52 20 20 20 20 20 72 34 2c 5b 72 36 2c 72 |STR r4,[r6,r| 00004d00 38 2c 4c 53 4c 20 23 32 5d 0d 1c 8e 1c 20 20 20 |8,LSL #2].... | 00004d10 20 20 20 20 20 41 44 44 20 20 20 20 20 72 38 2c | ADD r8,| 00004d20 72 38 2c 23 31 0d 1c 98 1f 20 20 20 20 20 20 20 |r8,#1.... | 00004d30 20 53 54 52 20 20 20 20 20 72 38 2c 5b 72 31 31 | STR r8,[r11| 00004d40 2c 23 38 5d 0d 1c a2 20 20 20 20 20 20 20 20 20 |,#8]... | 00004d50 4d 4f 56 20 20 20 20 20 72 30 2c 23 64 69 73 70 |MOV r0,#disp| 00004d60 5f 64 61 74 0d 1c ac 1a 20 20 20 20 20 20 20 20 |_dat.... | 00004d70 a4 73 74 72 28 30 2c 72 70 5f 70 74 72 29 0d 1c |.str(0,rp_ptr)..| 00004d80 b6 11 2e 6e 6f 74 5f 6e 65 77 5f 70 6f 6c 79 0d |...not_new_poly.| 00004d90 1c c0 1c 20 20 20 20 20 20 20 20 53 55 42 20 20 |... SUB | 00004da0 20 20 20 72 32 2c 72 38 2c 23 31 0d 1c ca 25 20 | r2,r8,#1...% | 00004db0 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 | LDR r| 00004dc0 30 2c 5b 72 36 2c 72 32 2c 4c 53 4c 20 23 32 5d |0,[r6,r2,LSL #2]| 00004dd0 0d 1c d4 20 20 20 20 20 20 20 20 20 4d 4f 56 20 |... MOV | 00004de0 20 20 20 20 72 31 2c 72 39 2c 4c 53 4c 20 23 33 | r1,r9,LSL #3| 00004df0 0d 1c de 1c 20 20 20 20 20 20 20 20 41 44 44 20 |.... ADD | 00004e00 20 20 20 20 72 31 2c 72 31 2c 23 38 0d 1c e8 1b | r1,r1,#8....| 00004e10 20 20 20 20 20 20 20 20 42 4c 20 20 20 20 20 20 | BL | 00004e20 72 65 61 6c 6c 6f 63 0d 1c f2 1b 20 20 20 20 20 |realloc.... | 00004e30 20 20 20 53 54 52 56 53 20 20 20 72 30 2c 5b 73 | STRVS r0,[s| 00004e40 70 5d 0d 1c fc 25 20 20 20 20 20 20 20 20 4c 44 |p]...% LD| 00004e50 4d 56 53 46 44 20 28 73 70 29 21 2c 7b 72 30 2d |MVSFD (sp)!,{r0-| 00004e60 72 31 31 2c 70 63 7d 0d 1d 06 25 20 20 20 20 20 |r11,pc}...% | 00004e70 20 20 20 53 54 52 20 20 20 20 20 72 30 2c 5b 72 | STR r0,[r| 00004e80 36 2c 72 32 2c 4c 53 4c 20 23 32 5d 0d 1d 10 19 |6,r2,LSL #2]....| 00004e90 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 | MOV | 00004ea0 72 34 2c 72 30 0d 1d 1a 1a 20 20 20 20 20 20 20 |r4,r0.... | 00004eb0 20 a4 6c 64 72 28 33 2c 72 70 5f 70 74 72 29 0d | .ldr(3,rp_ptr).| 00004ec0 1d 24 29 20 20 20 20 20 20 20 20 4c 44 52 20 20 |.$) LDR | 00004ed0 20 20 20 72 30 2c 5b 72 31 30 2c 23 73 75 72 66 | r0,[r10,#surf| 00004ee0 5f 63 6f 6c 6f 75 72 5d 0d 1d 2e 1e 20 20 20 20 |_colour].... | 00004ef0 20 20 20 20 53 54 52 20 20 20 20 20 72 30 2c 5b | STR r0,[| 00004f00 72 34 2c 72 33 5d 0d 1d 38 1c 20 20 20 20 20 20 |r4,r3]..8. | 00004f10 20 20 41 44 44 20 20 20 20 20 72 33 2c 72 33 2c | ADD r3,r3,| 00004f20 23 34 0d 1d 42 1e 20 20 20 20 20 20 20 20 53 54 |#4..B. ST| 00004f30 52 20 20 20 20 20 72 39 2c 5b 72 34 2c 72 33 5d |R r9,[r4,r3]| 00004f40 0d 1d 4c 1c 20 20 20 20 20 20 20 20 41 44 44 20 |..L. ADD | 00004f50 20 20 20 20 72 33 2c 72 33 2c 23 34 0d 1d 56 04 | r3,r3,#4..V.| 00004f60 0d 1d 60 23 20 20 20 20 20 20 20 20 4c 44 52 20 |..`# LDR | 00004f70 20 20 20 20 72 30 2c 5b 72 34 2c 23 64 69 73 70 | r0,[r4,#disp| 00004f80 5f 6e 5d 0d 1d 6a 19 20 20 20 20 20 20 20 20 43 |_n]..j. C| 00004f90 4d 50 20 20 20 20 20 72 30 2c 23 30 0d 1d 74 1c |MP r0,#0..t.| 00004fa0 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 00004fb0 72 30 2c 72 30 2c 23 31 0d 1d 7e 23 20 20 20 20 |r0,r0,#1..~# | 00004fc0 20 20 20 20 53 54 52 20 20 20 20 20 72 30 2c 5b | STR r0,[| 00004fd0 72 34 2c 23 64 69 73 70 5f 6e 5d 0d 1d 88 22 20 |r4,#disp_n]..." | 00004fe0 20 20 20 20 20 20 20 42 4e 45 20 20 20 20 20 6e | BNE n| 00004ff0 6f 74 5f 66 69 72 73 74 5f 70 6f 6c 79 0d 1d 92 |ot_first_poly...| 00005000 04 0d 1d 9c 24 20 20 20 20 20 20 20 20 4c 44 4d |....$ LDM| 00005010 49 41 20 20 20 72 35 2c 7b 72 30 2d 72 32 2c 72 |IA r5,{r0-r2,r| 00005020 36 2d 72 38 7d 0d 1d a6 20 20 20 20 20 20 20 20 |6-r8}... | 00005030 20 4d 4f 56 20 20 20 20 20 72 36 2c 72 36 2c 41 | MOV r6,r6,A| 00005040 53 52 20 23 38 0d 1d b0 20 20 20 20 20 20 20 20 |SR #8... | 00005050 20 4d 4f 56 20 20 20 20 20 72 37 2c 72 37 2c 41 | MOV r7,r7,A| 00005060 53 52 20 23 38 0d 1d ba 20 20 20 20 20 20 20 20 |SR #8... | 00005070 20 4d 4f 56 20 20 20 20 20 72 38 2c 72 38 2c 41 | MOV r8,r8,A| 00005080 53 52 20 23 38 0d 1d c4 24 20 20 20 20 20 20 20 |SR #8...$ | 00005090 20 41 44 44 20 20 20 20 20 72 31 34 2c 72 34 2c | ADD r14,r4,| 000050a0 23 64 69 73 70 5f 70 74 31 0d 1d ce 1f 20 20 20 |#disp_pt1.... | 000050b0 20 20 20 20 20 53 54 4d 49 41 20 20 20 72 31 34 | STMIA r14| 000050c0 2c 7b 72 36 2d 72 38 7d 0d 1d d8 23 20 20 20 20 |,{r6-r8}...# | 000050d0 20 20 20 20 53 55 42 20 20 20 20 20 72 36 2c 72 | SUB r6,r| 000050e0 36 2c 72 30 2c 41 53 52 20 23 38 0d 1d e2 23 20 |6,r0,ASR #8...# | 000050f0 20 20 20 20 20 20 20 53 55 42 20 20 20 20 20 72 | SUB r| 00005100 37 2c 72 37 2c 72 31 2c 41 53 52 20 23 38 0d 1d |7,r7,r1,ASR #8..| 00005110 ec 23 20 20 20 20 20 20 20 20 53 55 42 20 20 20 |.# SUB | 00005120 20 20 72 38 2c 72 38 2c 72 32 2c 41 53 52 20 23 | r8,r8,r2,ASR #| 00005130 38 0d 1d f6 21 20 20 20 20 20 20 20 20 53 54 4d |8...! STM| 00005140 46 44 20 20 20 28 73 70 29 21 2c 7b 72 36 2d 72 |FD (sp)!,{r6-r| 00005150 38 7d 0d 1e 00 1d 20 20 20 20 20 20 20 20 41 44 |8}.... AD| 00005160 44 20 20 20 20 20 72 36 2c 72 35 2c 23 32 34 0d |D r6,r5,#24.| 00005170 1e 0a 1e 20 20 20 20 20 20 20 20 4c 44 4d 49 41 |... LDMIA| 00005180 20 20 20 72 36 2c 7b 72 36 2d 72 38 7d 0d 1e 14 | r6,{r6-r8}...| 00005190 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 | MOV | 000051a0 20 72 36 2c 72 36 2c 41 53 52 20 23 38 0d 1e 1e | r6,r6,ASR #8...| 000051b0 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 | MOV | 000051c0 20 72 37 2c 72 37 2c 41 53 52 20 23 38 0d 1e 28 | r7,r7,ASR #8..(| 000051d0 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 | MOV | 000051e0 20 72 38 2c 72 38 2c 41 53 52 20 23 38 0d 1e 32 | r8,r8,ASR #8..2| 000051f0 23 20 20 20 20 20 20 20 20 53 55 42 20 20 20 20 |# SUB | 00005200 20 72 36 2c 72 36 2c 72 30 2c 41 53 52 20 23 38 | r6,r6,r0,ASR #8| 00005210 0d 1e 3c 23 20 20 20 20 20 20 20 20 53 55 42 20 |..<# SUB | 00005220 20 20 20 20 72 37 2c 72 37 2c 72 31 2c 41 53 52 | r7,r7,r1,ASR| 00005230 20 23 38 0d 1e 46 23 20 20 20 20 20 20 20 20 53 | #8..F# S| 00005240 55 42 20 20 20 20 20 72 38 2c 72 38 2c 72 32 2c |UB r8,r8,r2,| 00005250 41 53 52 20 23 38 0d 1e 50 21 20 20 20 20 20 20 |ASR #8..P! | 00005260 20 20 4c 44 4d 46 44 20 20 20 28 73 70 29 21 2c | LDMFD (sp)!,| 00005270 7b 72 30 2d 72 32 7d 0d 1e 5a 04 0d 1e 64 1d 20 |{r0-r2}..Z...d. | 00005280 20 20 20 20 20 20 20 4d 55 4c 20 20 20 20 20 72 | MUL r| 00005290 31 34 2c 72 32 2c 72 37 0d 1e 6e 1e 20 20 20 20 |14,r2,r7..n. | 000052a0 20 20 20 20 52 53 42 20 20 20 20 20 72 31 34 2c | RSB r14,| 000052b0 72 31 34 2c 23 30 0d 1e 78 21 20 20 20 20 20 20 |r14,#0..x! | 000052c0 20 20 4d 4c 41 20 20 20 20 20 72 31 34 2c 72 31 | MLA r14,r1| 000052d0 2c 72 38 2c 72 31 34 0d 1e 82 22 20 20 20 20 20 |,r8,r14..." | 000052e0 20 20 20 4d 4f 56 20 20 20 20 20 72 31 34 2c 72 | MOV r14,r| 000052f0 31 34 2c 41 53 52 20 23 38 0d 1e 8c 29 20 20 20 |14,ASR #8...) | 00005300 20 20 20 20 20 53 54 52 20 20 20 20 20 72 31 34 | STR r14| 00005310 2c 5b 72 34 2c 23 64 69 73 70 5f 6e 6f 72 6d 2b |,[r4,#disp_norm+| 00005320 30 5d 0d 1e 96 1d 20 20 20 20 20 20 20 20 4d 55 |0].... MU| 00005330 4c 20 20 20 20 20 72 31 34 2c 72 30 2c 72 38 0d |L r14,r0,r8.| 00005340 1e a0 1e 20 20 20 20 20 20 20 20 52 53 42 20 20 |... RSB | 00005350 20 20 20 72 31 34 2c 72 31 34 2c 23 30 0d 1e aa | r14,r14,#0...| 00005360 21 20 20 20 20 20 20 20 20 4d 4c 41 20 20 20 20 |! MLA | 00005370 20 72 31 34 2c 72 32 2c 72 36 2c 72 31 34 0d 1e | r14,r2,r6,r14..| 00005380 b4 22 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 |." MOV | 00005390 20 20 72 31 34 2c 72 31 34 2c 41 53 52 20 23 38 | r14,r14,ASR #8| 000053a0 0d 1e be 29 20 20 20 20 20 20 20 20 53 54 52 20 |...) STR | 000053b0 20 20 20 20 72 31 34 2c 5b 72 34 2c 23 64 69 73 | r14,[r4,#dis| 000053c0 70 5f 6e 6f 72 6d 2b 34 5d 0d 1e c8 1d 20 20 20 |p_norm+4].... | 000053d0 20 20 20 20 20 4d 55 4c 20 20 20 20 20 72 31 34 | MUL r14| 000053e0 2c 72 31 2c 72 36 0d 1e d2 1e 20 20 20 20 20 20 |,r1,r6.... | 000053f0 20 20 52 53 42 20 20 20 20 20 72 31 34 2c 72 31 | RSB r14,r1| 00005400 34 2c 23 30 0d 1e dc 21 20 20 20 20 20 20 20 20 |4,#0...! | 00005410 4d 4c 41 20 20 20 20 20 72 31 34 2c 72 30 2c 72 |MLA r14,r0,r| 00005420 37 2c 72 31 34 0d 1e e6 22 20 20 20 20 20 20 20 |7,r14..." | 00005430 20 4d 4f 56 20 20 20 20 20 72 31 34 2c 72 31 34 | MOV r14,r14| 00005440 2c 41 53 52 20 23 38 0d 1e f0 29 20 20 20 20 20 |,ASR #8...) | 00005450 20 20 20 53 54 52 20 20 20 20 20 72 31 34 2c 5b | STR r14,[| 00005460 72 34 2c 23 64 69 73 70 5f 6e 6f 72 6d 2b 38 5d |r4,#disp_norm+8]| 00005470 0d 1e fa 04 0d 1f 04 13 2e 6e 6f 74 5f 66 69 72 |.........not_fir| 00005480 73 74 5f 70 6f 6c 79 0d 1f 0e 17 20 20 20 20 20 |st_poly.... | 00005490 20 20 20 a4 61 64 72 6c 28 31 34 2c 73 29 0d 1f | .adrl(14,s)..| 000054a0 18 21 20 20 20 20 20 20 20 20 4c 44 4d 49 41 20 |.! LDMIA | 000054b0 20 20 72 31 34 2c 7b 72 31 30 2c 72 31 31 7d 0d | r14,{r10,r11}.| 000054c0 1f 22 21 20 20 20 20 20 20 20 20 a4 61 64 72 6c |."! .adrl| 000054d0 28 31 34 2c 70 65 72 73 70 5f 66 6c 61 67 73 29 |(14,persp_flags)| 000054e0 0d 1f 2c 1d 20 20 20 20 20 20 20 20 4c 44 52 20 |..,. LDR | 000054f0 20 20 20 20 72 31 34 2c 5b 72 31 34 5d 0d 1f 36 | r14,[r14]..6| 00005500 1b 20 20 20 20 20 20 20 20 54 53 54 20 20 20 20 |. TST | 00005510 20 72 31 34 2c 23 25 31 0d 1f 40 1b 20 20 20 20 | r14,#%1..@. | 00005520 20 20 20 20 42 4e 45 20 20 20 20 20 74 77 6f 5f | BNE two_| 00005530 64 65 65 0d 1f 4a 0f 2e 70 65 72 73 70 5f 6c 6f |dee..J..persp_lo| 00005540 6f 70 0d 1f 54 1f 20 20 20 20 20 20 20 20 4c 44 |op..T. LD| 00005550 4d 49 41 20 20 20 72 35 21 2c 7b 72 36 2d 72 38 |MIA r5!,{r6-r8| 00005560 7d 0d 1f 5e 1e 20 20 20 20 20 20 20 20 4c 44 4d |}..^. LDM| 00005570 49 41 20 20 20 72 34 2c 7b 72 30 2c 72 31 7d 0d |IA r4,{r0,r1}.| 00005580 1f 68 19 20 20 20 20 20 20 20 20 43 4d 50 20 20 |.h. CMP | 00005590 20 20 20 72 38 2c 72 30 0d 1f 72 19 20 20 20 20 | r8,r0..r. | 000055a0 20 20 20 20 4d 4f 56 4c 54 20 20 20 72 30 2c 72 | MOVLT r0,r| 000055b0 38 0d 1f 7c 19 20 20 20 20 20 20 20 20 43 4d 50 |8..|. CMP| 000055c0 20 20 20 20 20 72 38 2c 72 31 0d 1f 86 19 20 20 | r8,r1.... | 000055d0 20 20 20 20 20 20 4d 4f 56 47 54 20 20 20 72 31 | MOVGT r1| 000055e0 2c 72 38 0d 1f 90 1e 20 20 20 20 20 20 20 20 53 |,r8.... S| 000055f0 54 4d 49 41 20 20 20 72 34 2c 7b 72 30 2c 72 31 |TMIA r4,{r0,r1| 00005600 7d 0d 1f 9a 1d 20 20 20 20 20 20 20 20 4d 55 4c |}.... MUL| 00005610 20 20 20 20 20 72 30 2c 72 36 2c 72 31 30 0d 1f | r0,r6,r10..| 00005620 a4 1d 20 20 20 20 20 20 20 20 41 44 44 20 20 20 |.. ADD | 00005630 20 20 72 31 2c 72 38 2c 72 31 31 0d 1f ae 1a 20 | r1,r8,r11.... | 00005640 20 20 20 20 20 20 20 42 4c 20 20 20 20 20 20 64 | BL d| 00005650 69 76 69 64 65 0d 1f b8 1e 20 20 20 20 20 20 20 |ivide.... | 00005660 20 53 54 52 20 20 20 20 20 72 32 2c 5b 72 34 2c | STR r2,[r4,| 00005670 72 33 5d 0d 1f c2 1c 20 20 20 20 20 20 20 20 41 |r3].... A| 00005680 44 44 20 20 20 20 20 72 33 2c 72 33 2c 23 34 0d |DD r3,r3,#4.| 00005690 1f cc 1d 20 20 20 20 20 20 20 20 4d 55 4c 20 20 |... MUL | 000056a0 20 20 20 72 30 2c 72 37 2c 72 31 30 0d 1f d6 1d | r0,r7,r10....| 000056b0 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 000056c0 72 31 2c 72 38 2c 72 31 31 0d 1f e0 1a 20 20 20 |r1,r8,r11.... | 000056d0 20 20 20 20 20 42 4c 20 20 20 20 20 20 64 69 76 | BL div| 000056e0 69 64 65 0d 1f ea 1e 20 20 20 20 20 20 20 20 53 |ide.... S| 000056f0 54 52 20 20 20 20 20 72 32 2c 5b 72 34 2c 72 33 |TR r2,[r4,r3| 00005700 5d 0d 1f f4 1c 20 20 20 20 20 20 20 20 41 44 44 |].... ADD| 00005710 20 20 20 20 20 72 33 2c 72 33 2c 23 34 0d 1f fe | r3,r3,#4...| 00005720 1c 20 20 20 20 20 20 20 20 53 55 42 53 20 20 20 |. SUBS | 00005730 20 72 39 2c 72 39 2c 23 31 0d 20 08 1e 20 20 20 | r9,r9,#1. .. | 00005740 20 20 20 20 20 42 4e 45 20 20 20 20 20 70 65 72 | BNE per| 00005750 73 70 5f 6c 6f 6f 70 0d 20 12 1a 20 20 20 20 20 |sp_loop. .. | 00005760 20 20 20 a4 73 74 72 28 33 2c 72 70 5f 70 74 72 | .str(3,rp_ptr| 00005770 29 0d 20 1c 25 20 20 20 20 20 20 20 20 4c 44 4d |). .% LDM| 00005780 46 44 20 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 |FD (sp)!,{r0-r| 00005790 31 31 2c 70 63 7d 0d 20 26 04 0d 20 30 0c 2e 74 |11,pc}. &.. 0..t| 000057a0 77 6f 5f 64 65 65 0d 20 3a 1e 20 20 20 20 20 20 |wo_dee. :. | 000057b0 20 20 a4 61 64 72 6c 28 31 34 2c 73 63 61 6c 65 | .adrl(14,scale| 000057c0 5f 32 64 29 0d 20 44 1d 20 20 20 20 20 20 20 20 |_2d). D. | 000057d0 4c 44 52 20 20 20 20 20 72 31 31 2c 5b 72 31 34 |LDR r11,[r14| 000057e0 5d 0d 20 4e 11 2e 74 77 6f 5f 64 65 65 5f 6c 6f |]. N..two_dee_lo| 000057f0 6f 70 0d 20 58 1f 20 20 20 20 20 20 20 20 4c 44 |op. X. LD| 00005800 4d 49 41 20 20 20 72 35 21 2c 7b 72 36 2d 72 38 |MIA r5!,{r6-r8| 00005810 7d 0d 20 62 1e 20 20 20 20 20 20 20 20 4c 44 4d |}. b. LDM| 00005820 49 41 20 20 20 72 34 2c 7b 72 30 2c 72 31 7d 0d |IA r4,{r0,r1}.| 00005830 20 6c 19 20 20 20 20 20 20 20 20 43 4d 50 20 20 | l. CMP | 00005840 20 20 20 72 38 2c 72 30 0d 20 76 19 20 20 20 20 | r8,r0. v. | 00005850 20 20 20 20 4d 4f 56 4c 54 20 20 20 72 30 2c 72 | MOVLT r0,r| 00005860 38 0d 20 80 19 20 20 20 20 20 20 20 20 43 4d 50 |8. .. CMP| 00005870 20 20 20 20 20 72 38 2c 72 31 0d 20 8a 19 20 20 | r8,r1. .. | 00005880 20 20 20 20 20 20 4d 4f 56 47 54 20 20 20 72 31 | MOVGT r1| 00005890 2c 72 38 0d 20 94 1e 20 20 20 20 20 20 20 20 53 |,r8. .. S| 000058a0 54 4d 49 41 20 20 20 72 34 2c 7b 72 30 2c 72 31 |TMIA r4,{r0,r1| 000058b0 7d 0d 20 9e 19 20 20 20 20 20 20 20 20 4d 4f 56 |}. .. MOV| 000058c0 20 20 20 20 20 72 30 2c 72 36 0d 20 a8 1a 20 20 | r0,r6. .. | 000058d0 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 31 | MOV r1| 000058e0 2c 72 31 31 0d 20 b2 1a 20 20 20 20 20 20 20 20 |,r11. .. | 000058f0 42 4c 20 20 20 20 20 20 64 69 76 69 64 65 0d 20 |BL divide. | 00005900 bc 1e 20 20 20 20 20 20 20 20 53 54 52 20 20 20 |.. STR | 00005910 20 20 72 32 2c 5b 72 34 2c 72 33 5d 0d 20 c6 1c | r2,[r4,r3]. ..| 00005920 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 00005930 72 33 2c 72 33 2c 23 34 0d 20 d0 19 20 20 20 20 |r3,r3,#4. .. | 00005940 20 20 20 20 4d 4f 56 20 20 20 20 20 72 30 2c 72 | MOV r0,r| 00005950 37 0d 20 da 1a 20 20 20 20 20 20 20 20 4d 4f 56 |7. .. MOV| 00005960 20 20 20 20 20 72 31 2c 72 31 31 0d 20 e4 1a 20 | r1,r11. .. | 00005970 20 20 20 20 20 20 20 42 4c 20 20 20 20 20 20 64 | BL d| 00005980 69 76 69 64 65 0d 20 ee 1e 20 20 20 20 20 20 20 |ivide. .. | 00005990 20 53 54 52 20 20 20 20 20 72 32 2c 5b 72 34 2c | STR r2,[r4,| 000059a0 72 33 5d 0d 20 f8 1c 20 20 20 20 20 20 20 20 41 |r3]. .. A| 000059b0 44 44 20 20 20 20 20 72 33 2c 72 33 2c 23 34 0d |DD r3,r3,#4.| 000059c0 21 02 1c 20 20 20 20 20 20 20 20 53 55 42 53 20 |!.. SUBS | 000059d0 20 20 20 72 39 2c 72 39 2c 23 31 0d 21 0c 20 20 | r9,r9,#1.!. | 000059e0 20 20 20 20 20 20 20 42 4e 45 20 20 20 20 20 74 | BNE t| 000059f0 77 6f 5f 64 65 65 5f 6c 6f 6f 70 0d 21 16 1a 20 |wo_dee_loop.!.. | 00005a00 20 20 20 20 20 20 20 a4 73 74 72 28 33 2c 72 70 | .str(3,rp| 00005a10 5f 70 74 72 29 0d 21 20 25 20 20 20 20 20 20 20 |_ptr).! % | 00005a20 20 4c 44 4d 46 44 20 20 20 28 73 70 29 21 2c 7b | LDMFD (sp)!,{| 00005a30 72 30 2d 72 31 31 2c 70 63 7d 0d 21 2a 04 0d 21 |r0-r11,pc}.!*..!| 00005a40 34 15 2e 7a 6d 69 6e 20 20 20 44 43 44 20 20 20 |4..zmin DCD | 00005a50 20 20 30 0d 21 3e 15 2e 7a 6d 61 78 20 20 20 44 | 0.!>..zmax D| 00005a60 43 44 20 20 20 20 20 30 0d 21 48 04 0d 21 52 17 |CD 0.!H..!R.| 00005a70 2e 72 65 61 64 5f 73 63 72 65 65 6e 5f 6c 69 6d |.read_screen_lim| 00005a80 69 74 73 0d 21 5c 27 20 20 20 20 20 20 20 20 53 |its.!\' S| 00005a90 54 4d 46 44 20 20 20 28 73 70 29 21 2c 7b 72 30 |TMFD (sp)!,{r0| 00005aa0 2d 72 31 31 2c 6c 69 6e 6b 7d 0d 21 66 1f 20 20 |-r11,link}.!f. | 00005ab0 20 20 20 20 20 20 41 44 52 20 20 20 20 20 72 30 | ADR r0| 00005ac0 2c 76 64 75 5f 6c 69 73 74 0d 21 70 19 20 20 20 |,vdu_list.!p. | 00005ad0 20 20 20 20 20 a4 61 64 72 6c 28 31 2c 67 77 78 | .adrl(1,gwx| 00005ae0 30 29 0d 21 7a 2a 20 20 20 20 20 20 20 20 53 57 |0).!z* SW| 00005af0 49 20 20 20 20 20 22 58 4f 53 5f 52 65 61 64 56 |I "XOS_ReadV| 00005b00 64 75 56 61 72 69 61 62 6c 65 73 22 0d 21 84 1e |duVariables".!..| 00005b10 20 20 20 20 20 20 20 20 4c 44 4d 49 41 20 20 20 | LDMIA | 00005b20 72 31 2c 7b 72 32 2d 72 39 7d 0d 21 8e 20 20 20 |r1,{r2-r9}.!. | 00005b30 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 32 | MOV r2| 00005b40 2c 72 32 2c 4c 53 4c 20 72 38 0d 21 98 1c 20 20 |,r2,LSL r8.!.. | 00005b50 20 20 20 20 20 20 53 55 42 20 20 20 20 20 72 32 | SUB r2| 00005b60 2c 72 32 2c 72 36 0d 21 a2 1d 20 20 20 20 20 20 |,r2,r6.!.. | 00005b70 20 20 53 55 42 20 20 20 20 20 72 32 2c 72 32 2c | SUB r2,r2,| 00005b80 23 36 34 0d 21 ac 20 20 20 20 20 20 20 20 20 4d |#64.!. M| 00005b90 4f 56 20 20 20 20 20 72 33 2c 72 33 2c 4c 53 4c |OV r3,r3,LSL| 00005ba0 20 72 39 0d 21 b6 1c 20 20 20 20 20 20 20 20 53 | r9.!.. S| 00005bb0 55 42 20 20 20 20 20 72 33 2c 72 33 2c 72 37 0d |UB r3,r3,r7.| 00005bc0 21 c0 1d 20 20 20 20 20 20 20 20 53 55 42 20 20 |!.. SUB | 00005bd0 20 20 20 72 33 2c 72 33 2c 23 36 34 0d 21 ca 20 | r3,r3,#64.!. | 00005be0 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 | MOV | 00005bf0 72 34 2c 72 34 2c 4c 53 4c 20 72 38 0d 21 d4 1c |r4,r4,LSL r8.!..| 00005c00 20 20 20 20 20 20 20 20 53 55 42 20 20 20 20 20 | SUB | 00005c10 72 34 2c 72 34 2c 72 36 0d 21 de 1d 20 20 20 20 |r4,r4,r6.!.. | 00005c20 20 20 20 20 41 44 44 20 20 20 20 20 72 34 2c 72 | ADD r4,r| 00005c30 34 2c 23 36 34 0d 21 e8 20 20 20 20 20 20 20 20 |4,#64.!. | 00005c40 20 4d 4f 56 20 20 20 20 20 72 35 2c 72 35 2c 4c | MOV r5,r5,L| 00005c50 53 4c 20 72 39 0d 21 f2 1c 20 20 20 20 20 20 20 |SL r9.!.. | 00005c60 20 53 55 42 20 20 20 20 20 72 35 2c 72 35 2c 72 | SUB r5,r5,r| 00005c70 37 0d 21 fc 1d 20 20 20 20 20 20 20 20 41 44 44 |7.!.. ADD| 00005c80 20 20 20 20 20 72 35 2c 72 35 2c 23 36 34 0d 22 | r5,r5,#64."| 00005c90 06 1d 20 20 20 20 20 20 20 20 a4 61 64 72 6c 28 |.. .adrl(| 00005ca0 31 2c 73 63 72 5f 6d 69 6e 78 29 0d 22 10 1e 20 |1,scr_minx).".. | 00005cb0 20 20 20 20 20 20 20 53 54 4d 49 41 20 20 20 72 | STMIA r| 00005cc0 31 2c 7b 72 32 2d 72 35 7d 0d 22 1a 25 20 20 20 |1,{r2-r5}.".% | 00005cd0 20 20 20 20 20 4c 44 4d 46 44 20 20 20 28 73 70 | LDMFD (sp| 00005ce0 29 21 2c 7b 72 30 2d 72 31 31 2c 70 63 7d 0d 22 |)!,{r0-r11,pc}."| 00005cf0 24 04 0d 22 2e 0d 2e 76 64 75 5f 6c 69 73 74 0d |$.."...vdu_list.| 00005d00 22 38 17 20 20 20 20 20 20 20 20 44 43 44 20 20 |"8. DCD | 00005d10 20 20 20 31 32 38 0d 22 42 17 20 20 20 20 20 20 | 128."B. | 00005d20 20 20 44 43 44 20 20 20 20 20 31 32 39 0d 22 4c | DCD 129."L| 00005d30 17 20 20 20 20 20 20 20 20 44 43 44 20 20 20 20 |. DCD | 00005d40 20 31 33 30 0d 22 56 17 20 20 20 20 20 20 20 20 | 130."V. | 00005d50 44 43 44 20 20 20 20 20 31 33 31 0d 22 60 17 20 |DCD 131."`. | 00005d60 20 20 20 20 20 20 20 44 43 44 20 20 20 20 20 31 | DCD 1| 00005d70 33 36 0d 22 6a 17 20 20 20 20 20 20 20 20 44 43 |36."j. DC| 00005d80 44 20 20 20 20 20 31 33 37 0d 22 74 15 20 20 20 |D 137."t. | 00005d90 20 20 20 20 20 44 43 44 20 20 20 20 20 34 0d 22 | DCD 4."| 00005da0 7e 15 20 20 20 20 20 20 20 20 44 43 44 20 20 20 |~. DCD | 00005db0 20 20 35 0d 22 88 16 20 20 20 20 20 20 20 20 44 | 5.".. D| 00005dc0 43 44 20 20 20 20 20 2d 31 0d 22 92 05 20 0d 22 |CD -1.".. ."| 00005dd0 9c 47 20 3b 20 72 38 2d 3e 6c 69 73 74 20 6f 66 |.G ; r8->list of| 00005de0 20 61 6e 67 6c 65 73 2c 20 72 30 2d 3e 70 6f 69 | angles, r0->poi| 00005df0 6e 74 20 74 6f 20 72 6f 74 61 74 65 2c 20 72 32 |nt to rotate, r2| 00005e00 2d 3e 77 68 65 72 65 20 74 6f 20 70 75 74 20 72 |->where to put r| 00005e10 65 73 75 6c 74 0d 22 a6 05 20 0d 22 b0 13 2e 72 |esult.".. ."...r| 00005e20 6f 74 61 74 65 5f 62 79 5f 6c 69 73 74 0d 22 ba |otate_by_list.".| 00005e30 29 20 20 20 20 20 20 20 20 53 54 4d 46 44 20 20 |) STMFD | 00005e40 20 28 73 70 29 21 2c 7b 72 30 2d 72 32 2c 72 38 | (sp)!,{r0-r2,r8| 00005e50 2c 6c 69 6e 6b 7d 0d 22 c4 18 2e 72 6f 74 61 74 |,link}."...rotat| 00005e60 65 5f 62 79 5f 6c 69 73 74 5f 6c 6f 6f 70 0d 22 |e_by_list_loop."| 00005e70 ce 20 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 |. LDR | 00005e80 20 20 72 31 2c 5b 72 38 2c 23 2d 34 5d 21 0d 22 | r1,[r8,#-4]!."| 00005e90 d8 19 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 |.. CMP | 00005ea0 20 20 72 31 2c 23 30 0d 22 e2 27 20 20 20 20 20 | r1,#0.".' | 00005eb0 20 20 20 4c 44 4d 4c 54 46 44 20 28 73 70 29 21 | LDMLTFD (sp)!| 00005ec0 2c 7b 72 30 2d 72 32 2c 72 38 2c 70 63 7d 0d 22 |,{r0-r2,r8,pc}."| 00005ed0 ec 1a 20 20 20 20 20 20 20 20 42 4c 20 20 20 20 |.. BL | 00005ee0 20 20 72 6f 74 61 74 65 0d 22 f6 19 20 20 20 20 | rotate.".. | 00005ef0 20 20 20 20 4d 4f 56 20 20 20 20 20 72 30 2c 72 | MOV r0,r| 00005f00 32 0d 23 00 27 20 20 20 20 20 20 20 20 42 20 20 |2.#.' B | 00005f10 20 20 20 20 20 72 6f 74 61 74 65 5f 62 79 5f 6c | rotate_by_l| 00005f20 69 73 74 5f 6c 6f 6f 70 0d 23 0a 04 0d 23 14 27 |ist_loop.#...#.'| 00005f30 2e 72 6f 74 61 74 65 20 53 54 4d 46 44 20 20 20 |.rotate STMFD | 00005f40 28 73 70 29 21 2c 7b 72 30 2d 72 31 31 2c 6c 69 |(sp)!,{r0-r11,li| 00005f50 6e 6b 7d 0d 23 1e 1e 20 20 20 20 20 20 20 20 4c |nk}.#.. L| 00005f60 44 4d 49 41 20 20 20 72 30 2c 7b 72 33 2d 72 35 |DMIA r0,{r3-r5| 00005f70 7d 0d 23 28 04 0d 23 32 19 20 20 20 20 20 20 20 |}.#(..#2. | 00005f80 20 4d 4f 56 53 20 20 20 20 72 36 2c 72 33 0d 23 | MOVS r6,r3.#| 00005f90 3c 1c 20 20 20 20 20 20 20 20 52 53 42 4d 49 20 |<. RSBMI | 00005fa0 20 20 72 36 2c 72 36 2c 23 30 0d 23 46 19 20 20 | r6,r6,#0.#F. | 00005fb0 20 20 20 20 20 20 4d 4f 56 53 20 20 20 20 72 37 | MOVS r7| 00005fc0 2c 72 34 0d 23 50 1c 20 20 20 20 20 20 20 20 52 |,r4.#P. R| 00005fd0 53 42 4d 49 20 20 20 72 37 2c 72 37 2c 23 30 0d |SBMI r7,r7,#0.| 00005fe0 23 5a 1b 20 20 20 20 20 20 20 20 84 52 20 20 20 |#Z. .R | 00005ff0 20 20 72 36 2c 72 36 2c 72 37 0d 23 64 19 20 20 | r6,r6,r7.#d. | 00006000 20 20 20 20 20 20 4d 4f 56 53 20 20 20 20 72 38 | MOVS r8| 00006010 2c 72 35 0d 23 6e 1c 20 20 20 20 20 20 20 20 52 |,r5.#n. R| 00006020 53 42 4d 49 20 20 20 72 38 2c 72 38 2c 23 30 0d |SBMI r8,r8,#0.| 00006030 23 78 1b 20 20 20 20 20 20 20 20 84 52 20 20 20 |#x. .R | 00006040 20 20 72 36 2c 72 36 2c 72 38 0d 23 82 04 0d 23 | r6,r6,r8.#...#| 00006050 8c 1a 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 |.. MOV | 00006060 20 20 72 31 31 2c 23 30 0d 23 96 2a 20 20 20 20 | r11,#0.#.* | 00006070 20 20 20 20 4d 4f 56 20 20 20 20 20 72 31 34 2c | MOV r14,| 00006080 23 28 31 3c 3c 28 33 30 2d 61 6e 67 5f 61 63 63 |#(1<<(30-ang_acc| 00006090 29 29 0d 23 a0 12 2e 72 6f 74 61 74 65 5f 72 65 |)).#...rotate_re| 000060a0 64 75 63 65 0d 23 aa 22 20 20 20 20 20 20 20 20 |duce.#." | 000060b0 43 4d 50 20 20 20 20 20 72 31 34 2c 72 36 2c 41 |CMP r14,r6,A| 000060c0 53 52 20 72 31 31 0d 23 b4 1e 20 20 20 20 20 20 |SR r11.#.. | 000060d0 20 20 41 44 44 4c 45 20 20 20 72 31 31 2c 72 31 | ADDLE r11,r1| 000060e0 31 2c 23 31 0d 23 be 21 20 20 20 20 20 20 20 20 |1,#1.#.! | 000060f0 42 4c 45 20 20 20 20 20 72 6f 74 61 74 65 5f 72 |BLE rotate_r| 00006100 65 64 75 63 65 0d 23 c8 04 0d 23 d2 1e 20 20 20 |educe.#...#.. | 00006110 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 38 2c | LDR r8,| 00006120 5b 72 31 2c 23 30 5d 0d 23 dc 1c 20 20 20 20 20 |[r1,#0].#.. | 00006130 20 20 20 a4 72 6f 74 61 74 65 28 30 2c 31 2c 32 | .rotate(0,1,2| 00006140 2c a3 29 0d 23 e6 1e 20 20 20 20 20 20 20 20 4c |,.).#.. L| 00006150 44 52 20 20 20 20 20 72 38 2c 5b 72 31 2c 23 34 |DR r8,[r1,#4| 00006160 5d 0d 23 f0 1c 20 20 20 20 20 20 20 20 a4 72 6f |].#.. .ro| 00006170 74 61 74 65 28 31 2c 30 2c 32 2c b9 29 0d 23 fa |tate(1,0,2,.).#.| 00006180 1e 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 |. LDR | 00006190 20 72 38 2c 5b 72 31 2c 23 38 5d 0d 24 04 1c 20 | r8,[r1,#8].$.. | 000061a0 20 20 20 20 20 20 20 a4 72 6f 74 61 74 65 28 32 | .rotate(2| 000061b0 2c 30 2c 31 2c a3 29 0d 24 0e 04 0d 24 18 1e 20 |,0,1,.).$...$.. | 000061c0 20 20 20 20 20 20 20 53 54 4d 49 41 20 20 20 72 | STMIA r| 000061d0 32 2c 7b 72 33 2d 72 35 7d 0d 24 22 25 20 20 20 |2,{r3-r5}.$"% | 000061e0 20 20 20 20 20 4c 44 4d 46 44 20 20 20 28 73 70 | LDMFD (sp| 000061f0 29 21 2c 7b 72 30 2d 72 31 31 2c 70 63 7d 0d 24 |)!,{r0-r11,pc}.$| 00006200 2c 04 0d 24 36 04 0d 24 40 22 2e 73 69 6e 5f 74 |,..$6..$@".sin_t| 00006210 61 62 20 a4 74 61 62 6c 65 28 34 2a 72 65 61 6c |ab .table(4*real| 00006220 5f 61 6e 67 6c 65 73 29 0d 24 4a 05 5d 0d 24 54 |_angles).$J.].$T| 00006230 0f e7 20 70 61 73 73 25 3e 34 20 8c 0d 24 5e 1a |.. pass%>4 ..$^.| 00006240 20 e3 20 69 3d 30 20 b8 20 72 65 61 6c 5f 61 6e | . i=0 . real_an| 00006250 67 6c 65 73 2d 31 0d 24 68 1b 20 20 61 3d 32 2a |gles-1.$h. a=2*| 00006260 af 2a 28 69 2f 72 65 61 6c 5f 61 6e 67 6c 65 73 |.*(i/real_angles| 00006270 29 0d 24 72 29 20 20 73 69 6e 5f 74 61 62 21 28 |).$r) sin_tab!(| 00006280 63 6f 64 65 25 2b 34 2a 69 29 3d 28 31 3c 3c 61 |code%+4*i)=(1<<a| 00006290 6e 67 5f 61 63 63 29 2a b5 61 0d 24 7c 06 20 ed |ng_acc)*.a.$|. .| 000062a0 0d 24 86 05 cd 0d 24 90 06 3d 30 0d 24 9a 05 3a |.$....$..=0.$..:| 000062b0 0d 24 a4 1c dd 20 a4 72 6f 74 61 74 65 28 72 2c |.$... .rotate(r,| 000062c0 61 30 2c 61 31 2c 6d 69 6e 75 73 29 0d 24 ae 0f |a0,a1,minus).$..| 000062d0 ea 20 78 2c 79 2c 78 32 2c 79 32 0d 24 b8 0a 78 |. x,y,x2,y2.$..x| 000062e0 3d 61 30 2b 33 0d 24 c2 0a 79 3d 61 31 2b 33 0d |=a0+3.$..y=a1+3.| 000062f0 24 cc 0b 78 32 3d 61 30 2b 36 0d 24 d6 0b 79 32 |$..x2=a0+6.$..y2| 00006300 3d 61 31 2b 36 0d 24 e0 0e 5b 4f 50 54 20 70 61 |=a1+6.$..[OPT pa| 00006310 73 73 25 0d 24 ea 19 20 20 20 20 20 20 20 20 43 |ss%.$.. C| 00006320 4d 50 20 20 20 20 20 72 38 2c 23 30 0d 24 f4 1e |MP r8,#0.$..| 00006330 20 20 20 20 20 20 20 20 42 45 51 20 20 20 20 20 | BEQ | 00006340 72 6f 74 5f 6c 61 62 28 72 29 0d 24 fe 15 20 20 |rot_lab(r).$.. | 00006350 20 20 20 20 20 20 a4 73 69 6e 28 39 2c 38 29 0d | .sin(9,8).| 00006360 25 08 16 20 20 20 20 20 20 20 20 a4 63 6f 73 28 |%.. .cos(| 00006370 31 30 2c 38 29 0d 25 12 1f 20 20 20 20 20 20 20 |10,8).%.. | 00006380 20 4d 4f 56 20 20 20 20 20 78 2c 78 2c 41 53 52 | MOV x,x,ASR| 00006390 20 72 31 31 0d 25 1c 1f 20 20 20 20 20 20 20 20 | r11.%.. | 000063a0 4d 4f 56 20 20 20 20 20 79 2c 79 2c 41 53 52 20 |MOV y,y,ASR | 000063b0 72 31 31 0d 25 26 1c 20 20 20 20 20 20 20 20 4d |r11.%&. M| 000063c0 55 4c 20 20 20 20 20 78 32 2c 78 2c 72 31 30 0d |UL x2,x,r10.| 000063d0 25 30 05 5d 0d 25 3a 0d e7 20 6d 69 6e 75 73 20 |%0.].%:.. minus | 000063e0 8c 0d 25 44 0f 20 5b 4f 50 54 20 70 61 73 73 25 |..%D. [OPT pass%| 000063f0 0d 25 4e 1c 20 20 20 20 20 20 20 20 52 53 42 20 |.%N. RSB | 00006400 20 20 20 20 72 39 2c 72 39 2c 23 30 0d 25 58 06 | r9,r9,#0.%X.| 00006410 20 5d 0d 25 62 05 cd 0d 25 6c 0e 5b 4f 50 54 20 | ].%b...%l.[OPT | 00006420 70 61 73 73 25 0d 25 76 1e 20 20 20 20 20 20 20 |pass%.%v. | 00006430 20 4d 4c 41 20 20 20 20 20 78 32 2c 79 2c 72 39 | MLA x2,y,r9| 00006440 2c 78 32 0d 25 80 1c 20 20 20 20 20 20 20 20 52 |,x2.%.. R| 00006450 53 42 20 20 20 20 20 72 39 2c 72 39 2c 23 30 0d |SB r9,r9,#0.| 00006460 25 8a 1b 20 20 20 20 20 20 20 20 4d 55 4c 20 20 |%.. MUL | 00006470 20 20 20 79 32 2c 78 2c 72 39 0d 25 94 1f 20 20 | y2,x,r9.%.. | 00006480 20 20 20 20 20 20 4d 4c 41 20 20 20 20 20 79 32 | MLA y2| 00006490 2c 79 2c 72 31 30 2c 79 32 0d 25 9e 24 20 20 20 |,y,r10,y2.%.$ | 000064a0 20 20 20 20 20 52 53 42 20 20 20 20 20 72 31 34 | RSB r14| 000064b0 2c 72 31 31 2c 23 61 6e 67 5f 61 63 63 0d 25 a8 |,r11,#ang_acc.%.| 000064c0 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 | MOV | 000064d0 20 78 2c 78 32 2c 41 53 52 20 72 31 34 0d 25 b2 | x,x2,ASR r14.%.| 000064e0 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 | MOV | 000064f0 20 79 2c 79 32 2c 41 53 52 20 72 31 34 0d 25 bc | y,y2,ASR r14.%.| 00006500 0f 2e 72 6f 74 5f 6c 61 62 28 72 29 0d 25 c6 05 |..rot_lab(r).%..| 00006510 5d 0d 25 d0 06 3d 30 0d 25 da 05 3a 0d 25 e4 15 |].%..=0.%..:.%..| 00006520 dd 20 a4 73 69 6e 28 72 65 67 31 2c 72 65 67 32 |. .sin(reg1,reg2| 00006530 29 0d 25 ee 0e 5b 4f 50 54 20 70 61 73 73 25 0d |).%..[OPT pass%.| 00006540 25 f8 2f 20 20 20 20 20 20 20 20 4d 4f 56 20 20 |%./ MOV | 00006550 20 20 20 72 31 34 2c 72 65 67 32 2c 4c 53 4c 20 | r14,reg2,LSL | 00006560 23 28 33 32 2d 61 6e 67 5f 62 69 74 73 29 0d 26 |#(32-ang_bits).&| 00006570 02 38 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 |.8 MOV | 00006580 20 20 72 31 34 2c 72 31 34 2c 4c 53 52 20 23 28 | r14,r14,LSR #(| 00006590 33 32 2d 61 6e 67 5f 62 69 74 73 2b 61 6e 67 5f |32-ang_bits+ang_| 000065a0 73 68 69 66 74 29 0d 26 0c 20 20 20 20 20 20 20 |shift).&. | 000065b0 20 20 41 44 52 20 20 20 20 20 72 65 67 31 2c 73 | ADR reg1,s| 000065c0 69 6e 5f 74 61 62 0d 26 16 2a 20 20 20 20 20 20 |in_tab.&.* | 000065d0 20 20 4c 44 52 20 20 20 20 20 72 65 67 31 2c 5b | LDR reg1,[| 000065e0 72 65 67 31 2c 72 31 34 2c 4c 53 4c 20 23 32 5d |reg1,r14,LSL #2]| 000065f0 0d 26 20 05 5d 0d 26 2a 06 3d 30 0d 26 34 05 3a |.& .].&*.=0.&4.:| 00006600 0d 26 3e 15 dd 20 a4 63 6f 73 28 72 65 67 31 2c |.&>.. .cos(reg1,| 00006610 72 65 67 32 29 0d 26 48 0e 5b 4f 50 54 20 70 61 |reg2).&H.[OPT pa| 00006620 73 73 25 0d 26 52 28 20 20 20 20 20 20 20 20 41 |ss%.&R( A| 00006630 44 44 20 20 20 20 20 72 31 34 2c 72 65 67 32 2c |DD r14,reg2,| 00006640 23 61 6e 67 6c 65 73 20 81 20 34 0d 26 5c 2e 20 |#angles . 4.&\. | 00006650 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 | MOV r| 00006660 31 34 2c 72 31 34 2c 4c 53 4c 20 23 28 33 32 2d |14,r14,LSL #(32-| 00006670 61 6e 67 5f 62 69 74 73 29 0d 26 66 38 20 20 20 |ang_bits).&f8 | 00006680 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 31 34 | MOV r14| 00006690 2c 72 31 34 2c 4c 53 52 20 23 28 33 32 2d 61 6e |,r14,LSR #(32-an| 000066a0 67 5f 62 69 74 73 2b 61 6e 67 5f 73 68 69 66 74 |g_bits+ang_shift| 000066b0 29 0d 26 70 20 20 20 20 20 20 20 20 20 41 44 52 |).&p ADR| 000066c0 20 20 20 20 20 72 65 67 31 2c 73 69 6e 5f 74 61 | reg1,sin_ta| 000066d0 62 0d 26 7a 2a 20 20 20 20 20 20 20 20 4c 44 52 |b.&z* LDR| 000066e0 20 20 20 20 20 72 65 67 31 2c 5b 72 65 67 31 2c | reg1,[reg1,| 000066f0 72 31 34 2c 4c 53 4c 20 23 32 5d 0d 26 84 05 5d |r14,LSL #2].&..]| 00006700 0d 26 8e 06 3d 30 0d 26 98 05 3a 0d 26 a2 13 dd |.&..=0.&..:.&...| 00006710 20 a4 73 74 72 28 72 65 67 2c 6f 66 66 29 0d 26 | .str(reg,off).&| 00006720 ac 0e 5b 4f 50 54 20 70 61 73 73 25 0d 26 b6 27 |..[OPT pass%.&.'| 00006730 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 00006740 72 31 34 2c 77 70 2c 23 6f 66 66 20 80 20 26 46 |r14,wp,#off . &F| 00006750 46 30 30 0d 26 c0 2a 20 20 20 20 20 20 20 20 53 |F00.&.* S| 00006760 54 52 20 20 20 20 20 72 65 67 2c 5b 72 31 34 2c |TR reg,[r14,| 00006770 23 6f 66 66 20 80 20 26 30 30 46 46 5d 0d 26 ca |#off . &00FF].&.| 00006780 05 5d 0d 26 d4 06 3d 30 0d 26 de 05 3a 0d 26 e8 |.].&..=0.&..:.&.| 00006790 13 dd 20 a4 6c 64 72 28 72 65 67 2c 6f 66 66 29 |.. .ldr(reg,off)| 000067a0 0d 26 f2 0e 5b 4f 50 54 20 70 61 73 73 25 0d 26 |.&..[OPT pass%.&| 000067b0 fc 27 20 20 20 20 20 20 20 20 41 44 44 20 20 20 |.' ADD | 000067c0 20 20 72 31 34 2c 77 70 2c 23 6f 66 66 20 80 20 | r14,wp,#off . | 000067d0 26 46 46 30 30 0d 27 06 2a 20 20 20 20 20 20 20 |&FF00.'.* | 000067e0 20 4c 44 52 20 20 20 20 20 72 65 67 2c 5b 72 31 | LDR reg,[r1| 000067f0 34 2c 23 6f 66 66 20 80 20 26 30 30 46 46 5d 0d |4,#off . &00FF].| 00006800 27 10 05 5d 0d 27 1a 06 3d 30 0d ff |'..].'..=0..| 0000680c