Home » Archimedes archive » Acorn User » AU 1997-07 A.adf » Regulars » info/Hollis/TextureARM
info/Hollis/TextureARM
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 1997-07 A.adf » Regulars |
Filename: | info/Hollis/TextureARM |
Read OK: | ✔ |
File size: | 24D2 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
MODE 15+128 PROCassemble PROCinit FOR m=1 TO textures P. STR$m ") " texture$(m) NEXT P. INPUT "Enter texture number", ref IF ref<1 ref=1 IF ref>textures ref=textures OFF sprite_data!0=80*1024 sprite_data!8=16 SYS "OS_SpriteOp", 256+9, sprite_data SYS "OS_SpriteOp", 256+10, sprite_data, "<Graphics$Dir>.Textures."+texture$(ref) SYS "OS_SpriteOp", 256+24, sprite_data, texture$(ref) TO , , addr !texture_address=addr+addr!32 CALLgraphics_init viewdist=1024 xdist=500 ydist=0 zdist=1024*2 xrot=40 yrot=0 zrot=30 xstep=0 ystep=0 zstep=4 REPEAT mx=COSRADxrot my=COSRADyrot mz=COSRADzrot nx=SINRADxrot ny=SINRADyrot nz=SINRADzrot PROCrotate_vector(1,0,0,xi,yi,zi) PROCrotate_vector(0,1,0,xj,yj,zj) PROCrotate_vector(0,0,1,xk,yk,zk) xrot+=xstep yrot+=ystep zrot+=zstep vectors!0=xi*256 vectors!4=xj*256 vectors!8=xk*256 vectors!12=yi*256 vectors!16=yj*256 vectors!20=yk*256 vectors!24=zi*256 vectors!28=zj*256 vectors!32=zk*256 vectors!36=xdist vectors!40=ydist vectors!44=zdist CALLgraphics_swap CALLgraphics_clear A%=vertices B%=vertex_data CALLtransform A%=faces B%=vertex_data C%=face_data CALLredraw UNTILFALSE DEF PROCassemble DIM code 1024*128 vertex_data=code+1024*4 face_data=code+1024*8 trace_data=code+1024*12 div_data=code+1024*16 recip_data=code+1024*32 sprite_data=code+1024*48 FOR pass=0 TO 2 STEP 2 P%=code [ OPTpass .transform STMFD R13!, {R14} LDR R10, recip_address MOV R12,R1 MOV R14,R0 .transform_main LDMIA R12!, {R3-R5} \ ADR R11, vectors LDMIA R11!, {R6-R8} MUL R0,R3,R6 MLA R0,R4,R7,R0 MLA R0,R5,R8,R0 \ LDMIA R11!, {R6-R8} MUL R1,R3,R6 MLA R1,R4,R7,R1 MLA R1,R5,R8,R1 \ LDMIA R11!, {R6-R8} MUL R2,R3,R6 MLA R2,R4,R7,R2 MLA R2,R5,R8,R2 \ STMIA R12!, {R0-R2} LDMIA R11!, {R3-R5} ADD R0,R0,R3,ASL #8 ADD R1,R1,R4,ASL #8 ADD R2,R2,R5,ASL #8 \ MOV R2,R2,ASR #10 LDR R7, [R10,R2,LSL #2] MUL R8,R0,R7 MOV R0,R8,ASR #10 MUL R8,R1,R7 MOV R1,R8,ASR #10 STMIA R12!, {R0-R1} \ SUBS R14,R14,#1 BGT transform_main LDMFD R13!, {R15} .redraw_texture STMFD R13!, {R10-R12,R14} BL transform_view LDR R1, ystart LDR R5, yend LDR R4, trace_address \ ADD R5,R5,#128 ADDS R1,R1,#128 SUBLT R4,R4,R1,ASL #3 MOVLT R1,#0 CMP R5,#256 MOVGT R5,#256 SUB R5,R5,R1 SUB R1,R1,#128 \ .redraw_texture_main LDMIA R4!, {R0,R2} BL texture ADD R1,R1,#1 SUBS R5,R5,#1 BGT redraw_texture_main LDMFD R13!, {R10-R12,R15} .transform_view STMFD R13!, {R14} ADR R11, vectors+36 LDMIA R11!, {R3-R5} ADR R11, vectors LDMIA R11!, {R6-R8} MUL R0,R3,R6 MUL R1,R3,R7 MUL R2,R3,R8 \ LDMIA R11!, {R6-R8} MLA R0,R4,R6,R0 MLA R1,R4,R7,R1 MLA R2,R4,R8,R2 \ LDMIA R11!, {R6-R8} MLA R0,R5,R6,R0 MLA R1,R5,R7,R1 MLA R2,R5,R8,R2 \ MOV R0,R0,ASR #8 MOV R1,R1,ASR #8 MOV R2,R2,ASR #8 \ ADR R11, vectors+92 STMIA R11, {R0-R2} \ ADR R11, vectors LDMIA R11, {R3-R5} MOV R3,R3,ASL #1 MOV R4,R4,ASL #1 MOV R5,R5,ASL #1 MUL R3,R2,R3 MUL R4,R2,R4 \ ADR R11, vectors+80 STMIA R11, {R3-R5} LDMFD R13!, {R15} .texture STMFD R13!, {R0-R5,R14} MOV R3,R0,ASL #1 MOV R4,R1,ASL #2 MOV R5,#1024 SUB R14,R2,R0 ADD R0,R0,#320 RSB R1,R1,#127 LDR R12, vdu_address ADD R12,R12,R1,ASL #9 ADD R12,R12,R1,ASL #7 ADD R12,R12,R0 ADR R11, vectors LDMIA R11!, {R6-R8} MUL R0,R3,R6 MUL R1,R3,R7 MUL R2,R3,R8 \ LDMIA R11!, {R6-R8} MLA R0,R4,R6,R0 MLA R1,R4,R7,R1 MLA R2,R4,R8,R2 \ LDMIA R11!, {R6-R8} MLA R0,R5,R6,R0 MLA R1,R5,R7,R1 MLA R2,R5,R8,R2 \ ADR R11, vectors+80 LDMIA R11, {R3-R8} MUL R0,R8,R0 MUL R1,R8,R1 MOV R6,R6,ASR #2 MOV R7,R7,ASR #2 SUB R6,R6,#128 ADD R7,R7,#127 .texture_main MOV R10,R2,ASR #8 LDR R11, div_address LDR R10, [R11,R10,LSL #2] MOV R8,R10,LSR #16 MOV R11,R1,ASR #16 MUL R9,R11,R8 MOV R11,R0,ASR #16 MUL R8,R11,R8 ADD R10,R10,#7+2 RSB R8,R6,R8,ASR R10 SUB R9,R7,R9,ASR R10 LDR R11, texture_address ADD R11,R11,R9,ASL #8 CMP R8,#256 CMPCC R9,#256 LDRCCB R10, [R11,R8] STRCCB R10, [R12] ADD R12,R12,#1 ADD R0,R0,R3 ADD R1,R1,R4 ADD R2,R2,R5 SUBS R14,R14,#1 BGT texture_main LDMFD R13!, {R0-R5,R15} .vectors EQUS STRING$(128,CHR$0) .redraw STMFD R13!, {R14} ADD R10,R1,#24 MOV R11,R2 MOV R12,R0 .redraw_main LDR R7, [R11,#0] ADD R7,R10,R7,LSL #5 LDMIA R7, {R0,R1} LDR R7, [R11,#4] ADD R7,R10,R7,LSL #5 LDMIA R7, {R2,R3} LDR R7, [R11,#8] ADD R7,R10,R7,LSL #5 LDMIA R7, {R4,R5} SUB R6,R2,R0 SUB R7,R3,R1 SUB R8,R4,R0 SUB R9,R5,R1 MUL R9,R6,R9 MUL R7,R8,R7 SUBS R7,R7,R9 BLT hidden LDR R7, [R11,#12] ADD R7,R10,R7,LSL #5 LDMIA R7, {R6,R7} BL graphics_quad LDR R0, [R11,#16] BL graphics_draw CMP R12,#1 BLEQ redraw_texture .hidden ADD R11,R11,#20 SUBS R12,R12,#1 BGT redraw_main LDMFD R13!, {R15} .graphics_draw STMFD R13!, {R14} LDR R1, ystart LDR R5, yend LDR R4, trace_address ADD R5,R5,#128 ADDS R1,R1,#128 \ SUBLT R4,R4,R1,ASL #3 MOVLT R1,#0 CMP R5,#256 MOVGT R5,#256 SUB R5,R5,R1 \ RSB R1,R1,#255 LDR R7, vdu_address ADD R7,R7,R1,ASL #9 ADD R7,R7,R1,ASL #7 ADD R7,R7,#320 \ .graphics_draw_main LDMIA R4!, {R2,R3} SUB R3,R3,R2 ADD R2,R2,R7 .graphics_draw_pixel STRB R0, [R2],#1 SUBS R3,R3,#1 BGT graphics_draw_pixel SUB R7,R7,#640 SUBS R5,R5,#1 BGT graphics_draw_main LDMFD R13!, {R15} .graphics_init STMFD R13!, {R14} MOV R0,#1 STR R0, bank BL graphics_swap ADR R0, vdu_data ADR R1, bank1 SWI "OS_ReadVduVariables" LDMFD R13!, {R15} .vdu_data EQUD 148 EQUD 149 EQUD -1 .bank1 EQUD 0 .bank2 EQUD 0 .bank EQUD 0 .graphics_swap STMFD R13!, {R14} MOV R0,#19 SWI "OS_Byte" LDR R1, bank EOR R7,R1,#3 STR R7, bank CMP R1,#1 LDREQ R0, bank1 LDRNE R0, bank2 STR R0, vdu_address MOV R0,#112 SWI "OS_Byte" MOV R0,#113 MOV R1,R7 SWI "OS_Byte" LDMFD R13!, {R15} .graphics_clear STMFD R13!, {R14} MOV R0,#0 MOV R1,#0 MOV R2,#0 MOV R3,#0 MOV R4,#0 MOV R5,#0 MOV R6,#0 MOV R7,#0 MOV R8,#0 MOV R9,#0 LDR R11, vdu_address MOV R12,#1024 .graphics_clear_main STMIA R11!, {R0-R9} STMIA R11!, {R0-R9} STMIA R11!, {R0-R9} STMIA R11!, {R0-R9} SUBS R12,R12,#1 BGT graphics_clear_main LDMFD R13!, {R15} .graphics_quad STMFD R13!, {R10-R12,R14} MOV R0,R0,ASR #7 MOV R1,R1,ASR #8 MOV R2,R2,ASR #7 MOV R3,R3,ASR #8 MOV R4,R4,ASR #7 MOV R5,R5,ASR #8 MOV R6,R6,ASR #7 MOV R7,R7,ASR #8 \ SUBS R11,R3,R1 MOVLT R3,R1 ADDLT R1,R1,R11 MOVLT R11,R2 MOVLT R2,R0 MOVLT R0,R11 \ SUBS R11,R7,R5 MOVLT R7,R5 ADDLT R5,R5,R11 MOVLT R11,R6 MOVLT R6,R4 MOVLT R4,R11 \ SUBS R11,R5,R1 MOVLT R5,R1 ADDLT R1,R1,R11 MOVLT R11,R4 MOVLT R4,R0 MOVLT R0,R11 \ SUBS R11,R7,R3 MOVLT R7,R3 ADDLT R3,R3,R11 MOVLT R11,R6 MOVLT R6,R2 MOVLT R2,R11 \ SUBS R11,R5,R3 MOVLT R5,R3 ADDLT R3,R3,R11 MOVLT R11,R4 MOVLT R4,R2 MOVLT R2,R11 \ STR R1, ystart STR R7, yend \ SUB R8,R6,R0 SUB R9,R7,R1 SUB R10,R2,R0 SUB R11,R3,R1 \ MUL R12,R8,R11 MUL R14,R10,R9 SUB R12,R12,R14 \ SUB R10,R4,R0 SUB R11,R5,R1 \ MUL R11,R8,R11 MUL R14,R10,R9 SUB R11,R11,R14 \ CMP R12,#0 LDR R10, trace_address ADDLT R8,R10,#4 ADDLT R9,R10,#0 ADDGE R8,R10,#0 ADDGE R9,R10,#4 STMFD R13!, {R9} EOR R11,R11,R12 CMP R11,#0 BLT graphics_quad22 .graphics_quad21 MOV R10,R0 SUB R11,R2,R0 SUBS R12,R3,R1 BLGT graphics_trace MOV R10,R2 SUB R11,R4,R2 SUBS R12,R5,R3 BLGT graphics_trace MOV R10,R4 SUB R11,R6,R4 SUBS R12,R7,R5 BLGT graphics_trace LDMFD R13!, {R8} MOV R10,R0 SUB R11,R6,R0 SUBS R12,R7,R1 BLGT graphics_trace LDMFD R13!, {R10-R12,R15} .graphics_quad22 MOV R10,R0 SUB R11,R2,R0 SUBS R12,R3,R1 BLGT graphics_trace MOV R10,R2 SUB R11,R6,R2 SUBS R12,R7,R3 BLGT graphics_trace LDMFD R13!, {R8} MOV R10,R0 SUB R11,R4,R0 SUBS R12,R5,R1 BLGT graphics_trace MOV R10,R4 SUB R11,R6,R4 SUBS R12,R7,R5 BLGT graphics_trace LDMFD R13!, {R10-R12,R15} .graphics_trace LDR R9, recip_address LDR R9, [R9,R12,LSL #2] MUL R11,R9,R11 MOV R10,R10,ASL #16 ADD R10,R10,R11,ASR #1 .graphics_trace_main MOV R9,R10,ASR #16 ADD R10,R10,R11 CMP R9,#320 MOVGT R9,#320 SUBGT R9,R9,#1 CMN R9,#320 MOVLT R9,#0 SUBLT R9,R9,#320 STR R9, [R8],#8 SUBS R12,R12,#1 BGT graphics_trace_main MOV R15,R14 .ystart EQUD 0 .yend EQUD 0 .vdu_address EQUD 0 .texture_address EQUD 0 .trace_address EQUD trace_data .div_address EQUD div_data .recip_address EQUD recip_data ] NEXTpass ENDPROC DEF PROCinit DIM texture$(20) m=0 REPEAT m+=1 READ m$ texture$(m)=m$ UNTIL m$="" textures=m-1 DATA "acorn", "arrow", "funkydraw", "stone" DATA "" vertices=8 faces=6 d=0 FOR m=1 TO 4*1024-1 IF m>(2^d) d+=1 mant=(1<<(15+d))/m !(div_data+m*4)=(mant<<16) OR d NEXT FOR m=1 TO 4*1024-1 !(recip_data+m*4)=2^16/m NEXT m=vertex_data FOR n=0 TO vertices-1 READ x,y,z m!0=x m!4=y m!8=z m+=32 NEXT m=face_data FOR n=0 TO faces-1 READ m0,m1,m2,m3,colour m!0=m0 m!4=m1 m!8=m2 m!12=m3 m!16=colour m+=20 NEXT ENDPROC DATA -512, 512, 0 DATA 512, 512, 0 DATA 512, -512, 0 DATA -512, -512, 0 DATA -512, 512, 256 DATA 512, 512, 256 DATA 512, -512, 256 DATA -512, -512, 256 DATA 4,5,1,0,20 DATA 6,7,3,2,20 DATA 5,6,2,1,18 DATA 7,4,0,3,18 DATA 7,6,5,4,16 DATA 0,1,2,3,16 DEF PROCrotate_vector(x, y, z, RETURN x, RETURN y, RETURN z) x0=x*mz-y*nz y0=x*nz+y*mz z0=z*my-x0*ny x=z*ny+x0*my y=y0*mx-z0*nx z=y0*nx+z0*mx ENDPROC
00000000 20 4d 4f 44 45 20 31 35 2b 31 32 38 0a 20 50 52 | MODE 15+128. PR| 00000010 4f 43 61 73 73 65 6d 62 6c 65 0a 20 50 52 4f 43 |OCassemble. PROC| 00000020 69 6e 69 74 0a 0a 20 46 4f 52 20 6d 3d 31 20 54 |init.. FOR m=1 T| 00000030 4f 20 74 65 78 74 75 72 65 73 0a 20 50 2e 20 53 |O textures. P. S| 00000040 54 52 24 6d 20 22 29 20 22 20 74 65 78 74 75 72 |TR$m ") " textur| 00000050 65 24 28 6d 29 0a 20 4e 45 58 54 0a 20 50 2e 0a |e$(m). NEXT. P..| 00000060 20 49 4e 50 55 54 20 22 45 6e 74 65 72 20 74 65 | INPUT "Enter te| 00000070 78 74 75 72 65 20 6e 75 6d 62 65 72 22 2c 20 72 |xture number", r| 00000080 65 66 0a 0a 20 49 46 20 72 65 66 3c 31 20 20 72 |ef.. IF ref<1 r| 00000090 65 66 3d 31 0a 20 49 46 20 72 65 66 3e 74 65 78 |ef=1. IF ref>tex| 000000a0 74 75 72 65 73 20 20 72 65 66 3d 74 65 78 74 75 |tures ref=textu| 000000b0 72 65 73 0a 0a 20 4f 46 46 0a 0a 20 73 70 72 69 |res.. OFF.. spri| 000000c0 74 65 5f 64 61 74 61 21 30 3d 38 30 2a 31 30 32 |te_data!0=80*102| 000000d0 34 0a 20 73 70 72 69 74 65 5f 64 61 74 61 21 38 |4. sprite_data!8| 000000e0 3d 31 36 0a 20 53 59 53 20 22 4f 53 5f 53 70 72 |=16. SYS "OS_Spr| 000000f0 69 74 65 4f 70 22 2c 20 32 35 36 2b 39 2c 20 73 |iteOp", 256+9, s| 00000100 70 72 69 74 65 5f 64 61 74 61 0a 20 53 59 53 20 |prite_data. SYS | 00000110 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c 20 32 |"OS_SpriteOp", 2| 00000120 35 36 2b 31 30 2c 20 73 70 72 69 74 65 5f 64 61 |56+10, sprite_da| 00000130 74 61 2c 20 22 3c 47 72 61 70 68 69 63 73 24 44 |ta, "<Graphics$D| 00000140 69 72 3e 2e 54 65 78 74 75 72 65 73 2e 22 2b 74 |ir>.Textures."+t| 00000150 65 78 74 75 72 65 24 28 72 65 66 29 0a 20 53 59 |exture$(ref). SY| 00000160 53 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c |S "OS_SpriteOp",| 00000170 20 32 35 36 2b 32 34 2c 20 73 70 72 69 74 65 5f | 256+24, sprite_| 00000180 64 61 74 61 2c 20 74 65 78 74 75 72 65 24 28 72 |data, texture$(r| 00000190 65 66 29 20 54 4f 20 2c 20 2c 20 61 64 64 72 0a |ef) TO , , addr.| 000001a0 20 21 74 65 78 74 75 72 65 5f 61 64 64 72 65 73 | !texture_addres| 000001b0 73 3d 61 64 64 72 2b 61 64 64 72 21 33 32 0a 0a |s=addr+addr!32..| 000001c0 20 43 41 4c 4c 67 72 61 70 68 69 63 73 5f 69 6e | CALLgraphics_in| 000001d0 69 74 0a 0a 20 76 69 65 77 64 69 73 74 3d 31 30 |it.. viewdist=10| 000001e0 32 34 0a 0a 20 78 64 69 73 74 3d 35 30 30 0a 20 |24.. xdist=500. | 000001f0 79 64 69 73 74 3d 30 0a 20 7a 64 69 73 74 3d 31 |ydist=0. zdist=1| 00000200 30 32 34 2a 32 0a 0a 20 78 72 6f 74 3d 34 30 0a |024*2.. xrot=40.| 00000210 20 79 72 6f 74 3d 30 0a 20 7a 72 6f 74 3d 33 30 | yrot=0. zrot=30| 00000220 0a 0a 20 78 73 74 65 70 3d 30 0a 20 79 73 74 65 |.. xstep=0. yste| 00000230 70 3d 30 0a 20 7a 73 74 65 70 3d 34 0a 0a 20 52 |p=0. zstep=4.. R| 00000240 45 50 45 41 54 0a 20 6d 78 3d 43 4f 53 52 41 44 |EPEAT. mx=COSRAD| 00000250 78 72 6f 74 0a 20 6d 79 3d 43 4f 53 52 41 44 79 |xrot. my=COSRADy| 00000260 72 6f 74 0a 20 6d 7a 3d 43 4f 53 52 41 44 7a 72 |rot. mz=COSRADzr| 00000270 6f 74 0a 0a 20 6e 78 3d 53 49 4e 52 41 44 78 72 |ot.. nx=SINRADxr| 00000280 6f 74 0a 20 6e 79 3d 53 49 4e 52 41 44 79 72 6f |ot. ny=SINRADyro| 00000290 74 0a 20 6e 7a 3d 53 49 4e 52 41 44 7a 72 6f 74 |t. nz=SINRADzrot| 000002a0 0a 0a 20 50 52 4f 43 72 6f 74 61 74 65 5f 76 65 |.. PROCrotate_ve| 000002b0 63 74 6f 72 28 31 2c 30 2c 30 2c 78 69 2c 79 69 |ctor(1,0,0,xi,yi| 000002c0 2c 7a 69 29 0a 20 50 52 4f 43 72 6f 74 61 74 65 |,zi). PROCrotate| 000002d0 5f 76 65 63 74 6f 72 28 30 2c 31 2c 30 2c 78 6a |_vector(0,1,0,xj| 000002e0 2c 79 6a 2c 7a 6a 29 0a 20 50 52 4f 43 72 6f 74 |,yj,zj). PROCrot| 000002f0 61 74 65 5f 76 65 63 74 6f 72 28 30 2c 30 2c 31 |ate_vector(0,0,1| 00000300 2c 78 6b 2c 79 6b 2c 7a 6b 29 0a 0a 20 78 72 6f |,xk,yk,zk).. xro| 00000310 74 2b 3d 78 73 74 65 70 0a 20 79 72 6f 74 2b 3d |t+=xstep. yrot+=| 00000320 79 73 74 65 70 0a 20 7a 72 6f 74 2b 3d 7a 73 74 |ystep. zrot+=zst| 00000330 65 70 0a 0a 20 76 65 63 74 6f 72 73 21 30 3d 78 |ep.. vectors!0=x| 00000340 69 2a 32 35 36 0a 20 76 65 63 74 6f 72 73 21 34 |i*256. vectors!4| 00000350 3d 78 6a 2a 32 35 36 0a 20 76 65 63 74 6f 72 73 |=xj*256. vectors| 00000360 21 38 3d 78 6b 2a 32 35 36 0a 20 76 65 63 74 6f |!8=xk*256. vecto| 00000370 72 73 21 31 32 3d 79 69 2a 32 35 36 0a 20 76 65 |rs!12=yi*256. ve| 00000380 63 74 6f 72 73 21 31 36 3d 79 6a 2a 32 35 36 0a |ctors!16=yj*256.| 00000390 20 76 65 63 74 6f 72 73 21 32 30 3d 79 6b 2a 32 | vectors!20=yk*2| 000003a0 35 36 0a 20 76 65 63 74 6f 72 73 21 32 34 3d 7a |56. vectors!24=z| 000003b0 69 2a 32 35 36 0a 20 76 65 63 74 6f 72 73 21 32 |i*256. vectors!2| 000003c0 38 3d 7a 6a 2a 32 35 36 0a 20 76 65 63 74 6f 72 |8=zj*256. vector| 000003d0 73 21 33 32 3d 7a 6b 2a 32 35 36 0a 20 76 65 63 |s!32=zk*256. vec| 000003e0 74 6f 72 73 21 33 36 3d 78 64 69 73 74 0a 20 76 |tors!36=xdist. v| 000003f0 65 63 74 6f 72 73 21 34 30 3d 79 64 69 73 74 0a |ectors!40=ydist.| 00000400 20 76 65 63 74 6f 72 73 21 34 34 3d 7a 64 69 73 | vectors!44=zdis| 00000410 74 0a 0a 20 43 41 4c 4c 67 72 61 70 68 69 63 73 |t.. CALLgraphics| 00000420 5f 73 77 61 70 0a 20 43 41 4c 4c 67 72 61 70 68 |_swap. CALLgraph| 00000430 69 63 73 5f 63 6c 65 61 72 0a 0a 20 41 25 3d 76 |ics_clear.. A%=v| 00000440 65 72 74 69 63 65 73 0a 20 42 25 3d 76 65 72 74 |ertices. B%=vert| 00000450 65 78 5f 64 61 74 61 0a 20 43 41 4c 4c 74 72 61 |ex_data. CALLtra| 00000460 6e 73 66 6f 72 6d 0a 0a 20 41 25 3d 66 61 63 65 |nsform.. A%=face| 00000470 73 0a 20 42 25 3d 76 65 72 74 65 78 5f 64 61 74 |s. B%=vertex_dat| 00000480 61 0a 20 43 25 3d 66 61 63 65 5f 64 61 74 61 0a |a. C%=face_data.| 00000490 20 43 41 4c 4c 72 65 64 72 61 77 0a 0a 20 55 4e | CALLredraw.. UN| 000004a0 54 49 4c 46 41 4c 53 45 0a 0a 0a 0a 20 44 45 46 |TILFALSE.... DEF| 000004b0 20 50 52 4f 43 61 73 73 65 6d 62 6c 65 0a 20 44 | PROCassemble. D| 000004c0 49 4d 20 63 6f 64 65 20 31 30 32 34 2a 31 32 38 |IM code 1024*128| 000004d0 0a 0a 20 76 65 72 74 65 78 5f 64 61 74 61 3d 63 |.. vertex_data=c| 000004e0 6f 64 65 2b 31 30 32 34 2a 34 0a 20 66 61 63 65 |ode+1024*4. face| 000004f0 5f 64 61 74 61 3d 63 6f 64 65 2b 31 30 32 34 2a |_data=code+1024*| 00000500 38 0a 20 74 72 61 63 65 5f 64 61 74 61 3d 63 6f |8. trace_data=co| 00000510 64 65 2b 31 30 32 34 2a 31 32 0a 20 64 69 76 5f |de+1024*12. div_| 00000520 64 61 74 61 3d 63 6f 64 65 2b 31 30 32 34 2a 31 |data=code+1024*1| 00000530 36 0a 20 72 65 63 69 70 5f 64 61 74 61 3d 63 6f |6. recip_data=co| 00000540 64 65 2b 31 30 32 34 2a 33 32 0a 20 73 70 72 69 |de+1024*32. spri| 00000550 74 65 5f 64 61 74 61 3d 63 6f 64 65 2b 31 30 32 |te_data=code+102| 00000560 34 2a 34 38 0a 0a 20 46 4f 52 20 70 61 73 73 3d |4*48.. FOR pass=| 00000570 30 20 54 4f 20 32 20 53 54 45 50 20 32 0a 20 50 |0 TO 2 STEP 2. P| 00000580 25 3d 63 6f 64 65 0a 20 5b 20 4f 50 54 70 61 73 |%=code. [ OPTpas| 00000590 73 0a 0a 20 2e 74 72 61 6e 73 66 6f 72 6d 0a 20 |s.. .transform. | 000005a0 53 54 4d 46 44 20 52 31 33 21 2c 20 7b 52 31 34 |STMFD R13!, {R14| 000005b0 7d 0a 20 4c 44 52 20 52 31 30 2c 20 72 65 63 69 |}. LDR R10, reci| 000005c0 70 5f 61 64 64 72 65 73 73 0a 20 4d 4f 56 20 52 |p_address. MOV R| 000005d0 31 32 2c 52 31 0a 20 4d 4f 56 20 52 31 34 2c 52 |12,R1. MOV R14,R| 000005e0 30 0a 20 2e 74 72 61 6e 73 66 6f 72 6d 5f 6d 61 |0. .transform_ma| 000005f0 69 6e 0a 20 4c 44 4d 49 41 20 52 31 32 21 2c 20 |in. LDMIA R12!, | 00000600 7b 52 33 2d 52 35 7d 0a 5c 0a 20 41 44 52 20 52 |{R3-R5}.\. ADR R| 00000610 31 31 2c 20 76 65 63 74 6f 72 73 0a 20 4c 44 4d |11, vectors. LDM| 00000620 49 41 20 52 31 31 21 2c 20 7b 52 36 2d 52 38 7d |IA R11!, {R6-R8}| 00000630 0a 20 4d 55 4c 20 52 30 2c 52 33 2c 52 36 0a 20 |. MUL R0,R3,R6. | 00000640 4d 4c 41 20 52 30 2c 52 34 2c 52 37 2c 52 30 0a |MLA R0,R4,R7,R0.| 00000650 20 4d 4c 41 20 52 30 2c 52 35 2c 52 38 2c 52 30 | MLA R0,R5,R8,R0| 00000660 0a 5c 0a 20 4c 44 4d 49 41 20 52 31 31 21 2c 20 |.\. LDMIA R11!, | 00000670 7b 52 36 2d 52 38 7d 0a 20 4d 55 4c 20 52 31 2c |{R6-R8}. MUL R1,| 00000680 52 33 2c 52 36 0a 20 4d 4c 41 20 52 31 2c 52 34 |R3,R6. MLA R1,R4| 00000690 2c 52 37 2c 52 31 0a 20 4d 4c 41 20 52 31 2c 52 |,R7,R1. MLA R1,R| 000006a0 35 2c 52 38 2c 52 31 0a 5c 0a 20 4c 44 4d 49 41 |5,R8,R1.\. LDMIA| 000006b0 20 52 31 31 21 2c 20 7b 52 36 2d 52 38 7d 0a 20 | R11!, {R6-R8}. | 000006c0 4d 55 4c 20 52 32 2c 52 33 2c 52 36 0a 20 4d 4c |MUL R2,R3,R6. ML| 000006d0 41 20 52 32 2c 52 34 2c 52 37 2c 52 32 0a 20 4d |A R2,R4,R7,R2. M| 000006e0 4c 41 20 52 32 2c 52 35 2c 52 38 2c 52 32 0a 5c |LA R2,R5,R8,R2.\| 000006f0 0a 20 53 54 4d 49 41 20 52 31 32 21 2c 20 7b 52 |. STMIA R12!, {R| 00000700 30 2d 52 32 7d 0a 20 4c 44 4d 49 41 20 52 31 31 |0-R2}. LDMIA R11| 00000710 21 2c 20 7b 52 33 2d 52 35 7d 0a 20 41 44 44 20 |!, {R3-R5}. ADD | 00000720 52 30 2c 52 30 2c 52 33 2c 41 53 4c 20 23 38 0a |R0,R0,R3,ASL #8.| 00000730 20 41 44 44 20 52 31 2c 52 31 2c 52 34 2c 41 53 | ADD R1,R1,R4,AS| 00000740 4c 20 23 38 0a 20 41 44 44 20 52 32 2c 52 32 2c |L #8. ADD R2,R2,| 00000750 52 35 2c 41 53 4c 20 23 38 0a 5c 0a 20 4d 4f 56 |R5,ASL #8.\. MOV| 00000760 20 52 32 2c 52 32 2c 41 53 52 20 23 31 30 0a 20 | R2,R2,ASR #10. | 00000770 4c 44 52 20 52 37 2c 20 5b 52 31 30 2c 52 32 2c |LDR R7, [R10,R2,| 00000780 4c 53 4c 20 23 32 5d 0a 20 4d 55 4c 20 52 38 2c |LSL #2]. MUL R8,| 00000790 52 30 2c 52 37 0a 20 4d 4f 56 20 52 30 2c 52 38 |R0,R7. MOV R0,R8| 000007a0 2c 41 53 52 20 23 31 30 0a 20 4d 55 4c 20 52 38 |,ASR #10. MUL R8| 000007b0 2c 52 31 2c 52 37 0a 20 4d 4f 56 20 52 31 2c 52 |,R1,R7. MOV R1,R| 000007c0 38 2c 41 53 52 20 23 31 30 0a 20 53 54 4d 49 41 |8,ASR #10. STMIA| 000007d0 20 52 31 32 21 2c 20 7b 52 30 2d 52 31 7d 0a 5c | R12!, {R0-R1}.\| 000007e0 0a 20 53 55 42 53 20 52 31 34 2c 52 31 34 2c 23 |. SUBS R14,R14,#| 000007f0 31 0a 20 42 47 54 20 74 72 61 6e 73 66 6f 72 6d |1. BGT transform| 00000800 5f 6d 61 69 6e 0a 20 4c 44 4d 46 44 20 52 31 33 |_main. LDMFD R13| 00000810 21 2c 20 7b 52 31 35 7d 0a 0a 0a 0a 20 2e 72 65 |!, {R15}.... .re| 00000820 64 72 61 77 5f 74 65 78 74 75 72 65 0a 20 53 54 |draw_texture. ST| 00000830 4d 46 44 20 52 31 33 21 2c 20 7b 52 31 30 2d 52 |MFD R13!, {R10-R| 00000840 31 32 2c 52 31 34 7d 0a 20 42 4c 20 74 72 61 6e |12,R14}. BL tran| 00000850 73 66 6f 72 6d 5f 76 69 65 77 0a 20 4c 44 52 20 |sform_view. LDR | 00000860 52 31 2c 20 79 73 74 61 72 74 0a 20 4c 44 52 20 |R1, ystart. LDR | 00000870 52 35 2c 20 79 65 6e 64 0a 20 4c 44 52 20 52 34 |R5, yend. LDR R4| 00000880 2c 20 74 72 61 63 65 5f 61 64 64 72 65 73 73 0a |, trace_address.| 00000890 5c 0a 20 41 44 44 20 52 35 2c 52 35 2c 23 31 32 |\. ADD R5,R5,#12| 000008a0 38 0a 20 41 44 44 53 20 52 31 2c 52 31 2c 23 31 |8. ADDS R1,R1,#1| 000008b0 32 38 0a 20 53 55 42 4c 54 20 52 34 2c 52 34 2c |28. SUBLT R4,R4,| 000008c0 52 31 2c 41 53 4c 20 23 33 0a 20 4d 4f 56 4c 54 |R1,ASL #3. MOVLT| 000008d0 20 52 31 2c 23 30 0a 20 43 4d 50 20 52 35 2c 23 | R1,#0. CMP R5,#| 000008e0 32 35 36 0a 20 4d 4f 56 47 54 20 52 35 2c 23 32 |256. MOVGT R5,#2| 000008f0 35 36 0a 20 53 55 42 20 52 35 2c 52 35 2c 52 31 |56. SUB R5,R5,R1| 00000900 0a 20 53 55 42 20 52 31 2c 52 31 2c 23 31 32 38 |. SUB R1,R1,#128| 00000910 0a 5c 0a 20 2e 72 65 64 72 61 77 5f 74 65 78 74 |.\. .redraw_text| 00000920 75 72 65 5f 6d 61 69 6e 0a 20 4c 44 4d 49 41 20 |ure_main. LDMIA | 00000930 52 34 21 2c 20 7b 52 30 2c 52 32 7d 0a 20 42 4c |R4!, {R0,R2}. BL| 00000940 20 74 65 78 74 75 72 65 0a 20 41 44 44 20 52 31 | texture. ADD R1| 00000950 2c 52 31 2c 23 31 0a 20 53 55 42 53 20 52 35 2c |,R1,#1. SUBS R5,| 00000960 52 35 2c 23 31 0a 20 42 47 54 20 72 65 64 72 61 |R5,#1. BGT redra| 00000970 77 5f 74 65 78 74 75 72 65 5f 6d 61 69 6e 0a 20 |w_texture_main. | 00000980 4c 44 4d 46 44 20 52 31 33 21 2c 20 7b 52 31 30 |LDMFD R13!, {R10| 00000990 2d 52 31 32 2c 52 31 35 7d 0a 0a 0a 0a 20 2e 74 |-R12,R15}.... .t| 000009a0 72 61 6e 73 66 6f 72 6d 5f 76 69 65 77 0a 20 53 |ransform_view. S| 000009b0 54 4d 46 44 20 52 31 33 21 2c 20 7b 52 31 34 7d |TMFD R13!, {R14}| 000009c0 0a 20 41 44 52 20 52 31 31 2c 20 76 65 63 74 6f |. ADR R11, vecto| 000009d0 72 73 2b 33 36 0a 20 4c 44 4d 49 41 20 52 31 31 |rs+36. LDMIA R11| 000009e0 21 2c 20 7b 52 33 2d 52 35 7d 0a 20 41 44 52 20 |!, {R3-R5}. ADR | 000009f0 52 31 31 2c 20 76 65 63 74 6f 72 73 0a 20 4c 44 |R11, vectors. LD| 00000a00 4d 49 41 20 52 31 31 21 2c 20 7b 52 36 2d 52 38 |MIA R11!, {R6-R8| 00000a10 7d 0a 20 4d 55 4c 20 52 30 2c 52 33 2c 52 36 0a |}. MUL R0,R3,R6.| 00000a20 20 4d 55 4c 20 52 31 2c 52 33 2c 52 37 0a 20 4d | MUL R1,R3,R7. M| 00000a30 55 4c 20 52 32 2c 52 33 2c 52 38 0a 5c 0a 20 4c |UL R2,R3,R8.\. L| 00000a40 44 4d 49 41 20 52 31 31 21 2c 20 7b 52 36 2d 52 |DMIA R11!, {R6-R| 00000a50 38 7d 0a 20 4d 4c 41 20 52 30 2c 52 34 2c 52 36 |8}. MLA R0,R4,R6| 00000a60 2c 52 30 0a 20 4d 4c 41 20 52 31 2c 52 34 2c 52 |,R0. MLA R1,R4,R| 00000a70 37 2c 52 31 0a 20 4d 4c 41 20 52 32 2c 52 34 2c |7,R1. MLA R2,R4,| 00000a80 52 38 2c 52 32 0a 5c 0a 20 4c 44 4d 49 41 20 52 |R8,R2.\. LDMIA R| 00000a90 31 31 21 2c 20 7b 52 36 2d 52 38 7d 0a 20 4d 4c |11!, {R6-R8}. ML| 00000aa0 41 20 52 30 2c 52 35 2c 52 36 2c 52 30 0a 20 4d |A R0,R5,R6,R0. M| 00000ab0 4c 41 20 52 31 2c 52 35 2c 52 37 2c 52 31 0a 20 |LA R1,R5,R7,R1. | 00000ac0 4d 4c 41 20 52 32 2c 52 35 2c 52 38 2c 52 32 0a |MLA R2,R5,R8,R2.| 00000ad0 5c 0a 20 4d 4f 56 20 52 30 2c 52 30 2c 41 53 52 |\. MOV R0,R0,ASR| 00000ae0 20 23 38 0a 20 4d 4f 56 20 52 31 2c 52 31 2c 41 | #8. MOV R1,R1,A| 00000af0 53 52 20 23 38 0a 20 4d 4f 56 20 52 32 2c 52 32 |SR #8. MOV R2,R2| 00000b00 2c 41 53 52 20 23 38 0a 5c 0a 20 41 44 52 20 52 |,ASR #8.\. ADR R| 00000b10 31 31 2c 20 76 65 63 74 6f 72 73 2b 39 32 0a 20 |11, vectors+92. | 00000b20 53 54 4d 49 41 20 52 31 31 2c 20 7b 52 30 2d 52 |STMIA R11, {R0-R| 00000b30 32 7d 0a 5c 0a 20 41 44 52 20 52 31 31 2c 20 76 |2}.\. ADR R11, v| 00000b40 65 63 74 6f 72 73 0a 20 4c 44 4d 49 41 20 52 31 |ectors. LDMIA R1| 00000b50 31 2c 20 7b 52 33 2d 52 35 7d 0a 20 4d 4f 56 20 |1, {R3-R5}. MOV | 00000b60 52 33 2c 52 33 2c 41 53 4c 20 23 31 0a 20 4d 4f |R3,R3,ASL #1. MO| 00000b70 56 20 52 34 2c 52 34 2c 41 53 4c 20 23 31 0a 20 |V R4,R4,ASL #1. | 00000b80 4d 4f 56 20 52 35 2c 52 35 2c 41 53 4c 20 23 31 |MOV R5,R5,ASL #1| 00000b90 0a 20 4d 55 4c 20 52 33 2c 52 32 2c 52 33 0a 20 |. MUL R3,R2,R3. | 00000ba0 4d 55 4c 20 52 34 2c 52 32 2c 52 34 0a 5c 0a 20 |MUL R4,R2,R4.\. | 00000bb0 41 44 52 20 52 31 31 2c 20 76 65 63 74 6f 72 73 |ADR R11, vectors| 00000bc0 2b 38 30 0a 20 53 54 4d 49 41 20 52 31 31 2c 20 |+80. STMIA R11, | 00000bd0 7b 52 33 2d 52 35 7d 0a 20 4c 44 4d 46 44 20 52 |{R3-R5}. LDMFD R| 00000be0 31 33 21 2c 20 7b 52 31 35 7d 0a 0a 0a 0a 20 2e |13!, {R15}.... .| 00000bf0 74 65 78 74 75 72 65 0a 20 53 54 4d 46 44 20 52 |texture. STMFD R| 00000c00 31 33 21 2c 20 7b 52 30 2d 52 35 2c 52 31 34 7d |13!, {R0-R5,R14}| 00000c10 0a 20 4d 4f 56 20 52 33 2c 52 30 2c 41 53 4c 20 |. MOV R3,R0,ASL | 00000c20 23 31 0a 20 4d 4f 56 20 52 34 2c 52 31 2c 41 53 |#1. MOV R4,R1,AS| 00000c30 4c 20 23 32 0a 20 4d 4f 56 20 52 35 2c 23 31 30 |L #2. MOV R5,#10| 00000c40 32 34 0a 0a 20 53 55 42 20 52 31 34 2c 52 32 2c |24.. SUB R14,R2,| 00000c50 52 30 0a 0a 20 41 44 44 20 52 30 2c 52 30 2c 23 |R0.. ADD R0,R0,#| 00000c60 33 32 30 0a 20 52 53 42 20 52 31 2c 52 31 2c 23 |320. RSB R1,R1,#| 00000c70 31 32 37 0a 0a 20 4c 44 52 20 52 31 32 2c 20 76 |127.. LDR R12, v| 00000c80 64 75 5f 61 64 64 72 65 73 73 0a 20 41 44 44 20 |du_address. ADD | 00000c90 52 31 32 2c 52 31 32 2c 52 31 2c 41 53 4c 20 23 |R12,R12,R1,ASL #| 00000ca0 39 0a 20 41 44 44 20 52 31 32 2c 52 31 32 2c 52 |9. ADD R12,R12,R| 00000cb0 31 2c 41 53 4c 20 23 37 0a 20 41 44 44 20 52 31 |1,ASL #7. ADD R1| 00000cc0 32 2c 52 31 32 2c 52 30 0a 0a 0a 20 41 44 52 20 |2,R12,R0... ADR | 00000cd0 52 31 31 2c 20 76 65 63 74 6f 72 73 0a 20 4c 44 |R11, vectors. LD| 00000ce0 4d 49 41 20 52 31 31 21 2c 20 7b 52 36 2d 52 38 |MIA R11!, {R6-R8| 00000cf0 7d 0a 20 4d 55 4c 20 52 30 2c 52 33 2c 52 36 0a |}. MUL R0,R3,R6.| 00000d00 20 4d 55 4c 20 52 31 2c 52 33 2c 52 37 0a 20 4d | MUL R1,R3,R7. M| 00000d10 55 4c 20 52 32 2c 52 33 2c 52 38 0a 5c 0a 20 4c |UL R2,R3,R8.\. L| 00000d20 44 4d 49 41 20 52 31 31 21 2c 20 7b 52 36 2d 52 |DMIA R11!, {R6-R| 00000d30 38 7d 0a 20 4d 4c 41 20 52 30 2c 52 34 2c 52 36 |8}. MLA R0,R4,R6| 00000d40 2c 52 30 0a 20 4d 4c 41 20 52 31 2c 52 34 2c 52 |,R0. MLA R1,R4,R| 00000d50 37 2c 52 31 0a 20 4d 4c 41 20 52 32 2c 52 34 2c |7,R1. MLA R2,R4,| 00000d60 52 38 2c 52 32 0a 5c 0a 20 4c 44 4d 49 41 20 52 |R8,R2.\. LDMIA R| 00000d70 31 31 21 2c 20 7b 52 36 2d 52 38 7d 0a 20 4d 4c |11!, {R6-R8}. ML| 00000d80 41 20 52 30 2c 52 35 2c 52 36 2c 52 30 0a 20 4d |A R0,R5,R6,R0. M| 00000d90 4c 41 20 52 31 2c 52 35 2c 52 37 2c 52 31 0a 20 |LA R1,R5,R7,R1. | 00000da0 4d 4c 41 20 52 32 2c 52 35 2c 52 38 2c 52 32 0a |MLA R2,R5,R8,R2.| 00000db0 5c 0a 20 41 44 52 20 52 31 31 2c 20 76 65 63 74 |\. ADR R11, vect| 00000dc0 6f 72 73 2b 38 30 0a 20 4c 44 4d 49 41 20 52 31 |ors+80. LDMIA R1| 00000dd0 31 2c 20 7b 52 33 2d 52 38 7d 0a 20 4d 55 4c 20 |1, {R3-R8}. MUL | 00000de0 52 30 2c 52 38 2c 52 30 0a 20 4d 55 4c 20 52 31 |R0,R8,R0. MUL R1| 00000df0 2c 52 38 2c 52 31 0a 0a 20 4d 4f 56 20 52 36 2c |,R8,R1.. MOV R6,| 00000e00 52 36 2c 41 53 52 20 23 32 0a 20 4d 4f 56 20 52 |R6,ASR #2. MOV R| 00000e10 37 2c 52 37 2c 41 53 52 20 23 32 0a 20 53 55 42 |7,R7,ASR #2. SUB| 00000e20 20 52 36 2c 52 36 2c 23 31 32 38 0a 20 41 44 44 | R6,R6,#128. ADD| 00000e30 20 52 37 2c 52 37 2c 23 31 32 37 0a 0a 20 2e 74 | R7,R7,#127.. .t| 00000e40 65 78 74 75 72 65 5f 6d 61 69 6e 0a 20 4d 4f 56 |exture_main. MOV| 00000e50 20 52 31 30 2c 52 32 2c 41 53 52 20 23 38 0a 0a | R10,R2,ASR #8..| 00000e60 20 4c 44 52 20 52 31 31 2c 20 64 69 76 5f 61 64 | LDR R11, div_ad| 00000e70 64 72 65 73 73 0a 20 4c 44 52 20 52 31 30 2c 20 |dress. LDR R10, | 00000e80 5b 52 31 31 2c 52 31 30 2c 4c 53 4c 20 23 32 5d |[R11,R10,LSL #2]| 00000e90 0a 20 4d 4f 56 20 52 38 2c 52 31 30 2c 4c 53 52 |. MOV R8,R10,LSR| 00000ea0 20 23 31 36 0a 0a 20 4d 4f 56 20 52 31 31 2c 52 | #16.. MOV R11,R| 00000eb0 31 2c 41 53 52 20 23 31 36 0a 20 4d 55 4c 20 52 |1,ASR #16. MUL R| 00000ec0 39 2c 52 31 31 2c 52 38 0a 20 4d 4f 56 20 52 31 |9,R11,R8. MOV R1| 00000ed0 31 2c 52 30 2c 41 53 52 20 23 31 36 0a 20 4d 55 |1,R0,ASR #16. MU| 00000ee0 4c 20 52 38 2c 52 31 31 2c 52 38 0a 0a 20 41 44 |L R8,R11,R8.. AD| 00000ef0 44 20 52 31 30 2c 52 31 30 2c 23 37 2b 32 0a 0a |D R10,R10,#7+2..| 00000f00 20 52 53 42 20 52 38 2c 52 36 2c 52 38 2c 41 53 | RSB R8,R6,R8,AS| 00000f10 52 20 52 31 30 0a 20 53 55 42 20 52 39 2c 52 37 |R R10. SUB R9,R7| 00000f20 2c 52 39 2c 41 53 52 20 52 31 30 0a 0a 20 4c 44 |,R9,ASR R10.. LD| 00000f30 52 20 52 31 31 2c 20 74 65 78 74 75 72 65 5f 61 |R R11, texture_a| 00000f40 64 64 72 65 73 73 0a 20 41 44 44 20 52 31 31 2c |ddress. ADD R11,| 00000f50 52 31 31 2c 52 39 2c 41 53 4c 20 23 38 0a 0a 20 |R11,R9,ASL #8.. | 00000f60 43 4d 50 20 52 38 2c 23 32 35 36 0a 20 43 4d 50 |CMP R8,#256. CMP| 00000f70 43 43 20 52 39 2c 23 32 35 36 0a 20 4c 44 52 43 |CC R9,#256. LDRC| 00000f80 43 42 20 52 31 30 2c 20 5b 52 31 31 2c 52 38 5d |CB R10, [R11,R8]| 00000f90 0a 20 53 54 52 43 43 42 20 52 31 30 2c 20 5b 52 |. STRCCB R10, [R| 00000fa0 31 32 5d 0a 20 41 44 44 20 52 31 32 2c 52 31 32 |12]. ADD R12,R12| 00000fb0 2c 23 31 0a 20 41 44 44 20 52 30 2c 52 30 2c 52 |,#1. ADD R0,R0,R| 00000fc0 33 0a 20 41 44 44 20 52 31 2c 52 31 2c 52 34 0a |3. ADD R1,R1,R4.| 00000fd0 20 41 44 44 20 52 32 2c 52 32 2c 52 35 0a 20 53 | ADD R2,R2,R5. S| 00000fe0 55 42 53 20 52 31 34 2c 52 31 34 2c 23 31 0a 20 |UBS R14,R14,#1. | 00000ff0 42 47 54 20 74 65 78 74 75 72 65 5f 6d 61 69 6e |BGT texture_main| 00001000 0a 20 4c 44 4d 46 44 20 52 31 33 21 2c 20 7b 52 |. LDMFD R13!, {R| 00001010 30 2d 52 35 2c 52 31 35 7d 0a 0a 20 2e 76 65 63 |0-R5,R15}.. .vec| 00001020 74 6f 72 73 0a 20 45 51 55 53 20 20 53 54 52 49 |tors. EQUS STRI| 00001030 4e 47 24 28 31 32 38 2c 43 48 52 24 30 29 0a 0a |NG$(128,CHR$0)..| 00001040 0a 0a 20 2e 72 65 64 72 61 77 0a 20 53 54 4d 46 |.. .redraw. STMF| 00001050 44 20 52 31 33 21 2c 20 7b 52 31 34 7d 0a 20 41 |D R13!, {R14}. A| 00001060 44 44 20 52 31 30 2c 52 31 2c 23 32 34 0a 20 4d |DD R10,R1,#24. M| 00001070 4f 56 20 52 31 31 2c 52 32 0a 20 4d 4f 56 20 52 |OV R11,R2. MOV R| 00001080 31 32 2c 52 30 0a 20 2e 72 65 64 72 61 77 5f 6d |12,R0. .redraw_m| 00001090 61 69 6e 0a 20 4c 44 52 20 52 37 2c 20 5b 52 31 |ain. LDR R7, [R1| 000010a0 31 2c 23 30 5d 0a 20 41 44 44 20 52 37 2c 52 31 |1,#0]. ADD R7,R1| 000010b0 30 2c 52 37 2c 4c 53 4c 20 23 35 0a 20 4c 44 4d |0,R7,LSL #5. LDM| 000010c0 49 41 20 52 37 2c 20 7b 52 30 2c 52 31 7d 0a 20 |IA R7, {R0,R1}. | 000010d0 4c 44 52 20 52 37 2c 20 5b 52 31 31 2c 23 34 5d |LDR R7, [R11,#4]| 000010e0 0a 20 41 44 44 20 52 37 2c 52 31 30 2c 52 37 2c |. ADD R7,R10,R7,| 000010f0 4c 53 4c 20 23 35 0a 20 4c 44 4d 49 41 20 52 37 |LSL #5. LDMIA R7| 00001100 2c 20 7b 52 32 2c 52 33 7d 0a 20 4c 44 52 20 52 |, {R2,R3}. LDR R| 00001110 37 2c 20 5b 52 31 31 2c 23 38 5d 0a 20 41 44 44 |7, [R11,#8]. ADD| 00001120 20 52 37 2c 52 31 30 2c 52 37 2c 4c 53 4c 20 23 | R7,R10,R7,LSL #| 00001130 35 0a 20 4c 44 4d 49 41 20 52 37 2c 20 7b 52 34 |5. LDMIA R7, {R4| 00001140 2c 52 35 7d 0a 20 53 55 42 20 52 36 2c 52 32 2c |,R5}. SUB R6,R2,| 00001150 52 30 0a 20 53 55 42 20 52 37 2c 52 33 2c 52 31 |R0. SUB R7,R3,R1| 00001160 0a 20 53 55 42 20 52 38 2c 52 34 2c 52 30 0a 20 |. SUB R8,R4,R0. | 00001170 53 55 42 20 52 39 2c 52 35 2c 52 31 0a 20 4d 55 |SUB R9,R5,R1. MU| 00001180 4c 20 52 39 2c 52 36 2c 52 39 0a 20 4d 55 4c 20 |L R9,R6,R9. MUL | 00001190 52 37 2c 52 38 2c 52 37 0a 20 53 55 42 53 20 52 |R7,R8,R7. SUBS R| 000011a0 37 2c 52 37 2c 52 39 0a 20 42 4c 54 20 68 69 64 |7,R7,R9. BLT hid| 000011b0 64 65 6e 0a 20 4c 44 52 20 52 37 2c 20 5b 52 31 |den. LDR R7, [R1| 000011c0 31 2c 23 31 32 5d 0a 20 41 44 44 20 52 37 2c 52 |1,#12]. ADD R7,R| 000011d0 31 30 2c 52 37 2c 4c 53 4c 20 23 35 0a 20 4c 44 |10,R7,LSL #5. LD| 000011e0 4d 49 41 20 52 37 2c 20 7b 52 36 2c 52 37 7d 0a |MIA R7, {R6,R7}.| 000011f0 20 42 4c 20 67 72 61 70 68 69 63 73 5f 71 75 61 | BL graphics_qua| 00001200 64 0a 20 4c 44 52 20 52 30 2c 20 5b 52 31 31 2c |d. LDR R0, [R11,| 00001210 23 31 36 5d 0a 20 42 4c 20 67 72 61 70 68 69 63 |#16]. BL graphic| 00001220 73 5f 64 72 61 77 0a 20 43 4d 50 20 52 31 32 2c |s_draw. CMP R12,| 00001230 23 31 0a 20 42 4c 45 51 20 72 65 64 72 61 77 5f |#1. BLEQ redraw_| 00001240 74 65 78 74 75 72 65 0a 20 2e 68 69 64 64 65 6e |texture. .hidden| 00001250 0a 20 41 44 44 20 52 31 31 2c 52 31 31 2c 23 32 |. ADD R11,R11,#2| 00001260 30 0a 20 53 55 42 53 20 52 31 32 2c 52 31 32 2c |0. SUBS R12,R12,| 00001270 23 31 0a 20 42 47 54 20 72 65 64 72 61 77 5f 6d |#1. BGT redraw_m| 00001280 61 69 6e 0a 20 4c 44 4d 46 44 20 52 31 33 21 2c |ain. LDMFD R13!,| 00001290 20 7b 52 31 35 7d 0a 0a 0a 0a 20 2e 67 72 61 70 | {R15}.... .grap| 000012a0 68 69 63 73 5f 64 72 61 77 0a 20 53 54 4d 46 44 |hics_draw. STMFD| 000012b0 20 52 31 33 21 2c 20 7b 52 31 34 7d 0a 20 4c 44 | R13!, {R14}. LD| 000012c0 52 20 52 31 2c 20 79 73 74 61 72 74 0a 20 4c 44 |R R1, ystart. LD| 000012d0 52 20 52 35 2c 20 79 65 6e 64 0a 20 4c 44 52 20 |R R5, yend. LDR | 000012e0 52 34 2c 20 74 72 61 63 65 5f 61 64 64 72 65 73 |R4, trace_addres| 000012f0 73 0a 20 41 44 44 20 52 35 2c 52 35 2c 23 31 32 |s. ADD R5,R5,#12| 00001300 38 0a 20 41 44 44 53 20 52 31 2c 52 31 2c 23 31 |8. ADDS R1,R1,#1| 00001310 32 38 0a 5c 0a 20 53 55 42 4c 54 20 52 34 2c 52 |28.\. SUBLT R4,R| 00001320 34 2c 52 31 2c 41 53 4c 20 23 33 0a 20 4d 4f 56 |4,R1,ASL #3. MOV| 00001330 4c 54 20 52 31 2c 23 30 0a 20 43 4d 50 20 52 35 |LT R1,#0. CMP R5| 00001340 2c 23 32 35 36 0a 20 4d 4f 56 47 54 20 52 35 2c |,#256. MOVGT R5,| 00001350 23 32 35 36 0a 20 53 55 42 20 52 35 2c 52 35 2c |#256. SUB R5,R5,| 00001360 52 31 0a 5c 0a 20 52 53 42 20 52 31 2c 52 31 2c |R1.\. RSB R1,R1,| 00001370 23 32 35 35 0a 20 4c 44 52 20 52 37 2c 20 76 64 |#255. LDR R7, vd| 00001380 75 5f 61 64 64 72 65 73 73 0a 20 41 44 44 20 52 |u_address. ADD R| 00001390 37 2c 52 37 2c 52 31 2c 41 53 4c 20 23 39 0a 20 |7,R7,R1,ASL #9. | 000013a0 41 44 44 20 52 37 2c 52 37 2c 52 31 2c 41 53 4c |ADD R7,R7,R1,ASL| 000013b0 20 23 37 0a 20 41 44 44 20 52 37 2c 52 37 2c 23 | #7. ADD R7,R7,#| 000013c0 33 32 30 0a 5c 0a 20 2e 67 72 61 70 68 69 63 73 |320.\. .graphics| 000013d0 5f 64 72 61 77 5f 6d 61 69 6e 0a 20 4c 44 4d 49 |_draw_main. LDMI| 000013e0 41 20 52 34 21 2c 20 7b 52 32 2c 52 33 7d 0a 20 |A R4!, {R2,R3}. | 000013f0 53 55 42 20 52 33 2c 52 33 2c 52 32 0a 20 41 44 |SUB R3,R3,R2. AD| 00001400 44 20 52 32 2c 52 32 2c 52 37 0a 20 2e 67 72 61 |D R2,R2,R7. .gra| 00001410 70 68 69 63 73 5f 64 72 61 77 5f 70 69 78 65 6c |phics_draw_pixel| 00001420 0a 20 53 54 52 42 20 52 30 2c 20 5b 52 32 5d 2c |. STRB R0, [R2],| 00001430 23 31 0a 20 53 55 42 53 20 52 33 2c 52 33 2c 23 |#1. SUBS R3,R3,#| 00001440 31 0a 20 42 47 54 20 67 72 61 70 68 69 63 73 5f |1. BGT graphics_| 00001450 64 72 61 77 5f 70 69 78 65 6c 0a 20 53 55 42 20 |draw_pixel. SUB | 00001460 52 37 2c 52 37 2c 23 36 34 30 0a 20 53 55 42 53 |R7,R7,#640. SUBS| 00001470 20 52 35 2c 52 35 2c 23 31 0a 20 42 47 54 20 67 | R5,R5,#1. BGT g| 00001480 72 61 70 68 69 63 73 5f 64 72 61 77 5f 6d 61 69 |raphics_draw_mai| 00001490 6e 0a 20 4c 44 4d 46 44 20 52 31 33 21 2c 20 7b |n. LDMFD R13!, {| 000014a0 52 31 35 7d 0a 0a 0a 20 2e 67 72 61 70 68 69 63 |R15}... .graphic| 000014b0 73 5f 69 6e 69 74 0a 20 53 54 4d 46 44 20 52 31 |s_init. STMFD R1| 000014c0 33 21 2c 20 7b 52 31 34 7d 0a 20 4d 4f 56 20 52 |3!, {R14}. MOV R| 000014d0 30 2c 23 31 0a 20 53 54 52 20 52 30 2c 20 62 61 |0,#1. STR R0, ba| 000014e0 6e 6b 0a 20 42 4c 20 67 72 61 70 68 69 63 73 5f |nk. BL graphics_| 000014f0 73 77 61 70 0a 20 41 44 52 20 52 30 2c 20 76 64 |swap. ADR R0, vd| 00001500 75 5f 64 61 74 61 0a 20 41 44 52 20 52 31 2c 20 |u_data. ADR R1, | 00001510 62 61 6e 6b 31 0a 20 53 57 49 20 22 4f 53 5f 52 |bank1. SWI "OS_R| 00001520 65 61 64 56 64 75 56 61 72 69 61 62 6c 65 73 22 |eadVduVariables"| 00001530 0a 20 4c 44 4d 46 44 20 52 31 33 21 2c 20 7b 52 |. LDMFD R13!, {R| 00001540 31 35 7d 0a 0a 0a 20 2e 76 64 75 5f 64 61 74 61 |15}... .vdu_data| 00001550 0a 20 45 51 55 44 20 31 34 38 0a 20 45 51 55 44 |. EQUD 148. EQUD| 00001560 20 31 34 39 0a 20 45 51 55 44 20 2d 31 0a 0a 20 | 149. EQUD -1.. | 00001570 2e 62 61 6e 6b 31 20 20 45 51 55 44 20 30 0a 20 |.bank1 EQUD 0. | 00001580 2e 62 61 6e 6b 32 20 20 45 51 55 44 20 30 0a 20 |.bank2 EQUD 0. | 00001590 2e 62 61 6e 6b 20 20 20 20 45 51 55 44 20 30 0a |.bank EQUD 0.| 000015a0 0a 0a 20 2e 67 72 61 70 68 69 63 73 5f 73 77 61 |.. .graphics_swa| 000015b0 70 0a 20 53 54 4d 46 44 20 52 31 33 21 2c 20 7b |p. STMFD R13!, {| 000015c0 52 31 34 7d 0a 20 4d 4f 56 20 52 30 2c 23 31 39 |R14}. MOV R0,#19| 000015d0 0a 20 53 57 49 20 22 4f 53 5f 42 79 74 65 22 0a |. SWI "OS_Byte".| 000015e0 0a 20 4c 44 52 20 52 31 2c 20 62 61 6e 6b 0a 20 |. LDR R1, bank. | 000015f0 45 4f 52 20 52 37 2c 52 31 2c 23 33 0a 20 53 54 |EOR R7,R1,#3. ST| 00001600 52 20 52 37 2c 20 62 61 6e 6b 0a 20 43 4d 50 20 |R R7, bank. CMP | 00001610 52 31 2c 23 31 0a 20 4c 44 52 45 51 20 52 30 2c |R1,#1. LDREQ R0,| 00001620 20 62 61 6e 6b 31 0a 20 4c 44 52 4e 45 20 52 30 | bank1. LDRNE R0| 00001630 2c 20 62 61 6e 6b 32 0a 20 53 54 52 20 52 30 2c |, bank2. STR R0,| 00001640 20 76 64 75 5f 61 64 64 72 65 73 73 0a 0a 20 4d | vdu_address.. M| 00001650 4f 56 20 52 30 2c 23 31 31 32 0a 20 53 57 49 20 |OV R0,#112. SWI | 00001660 22 4f 53 5f 42 79 74 65 22 0a 0a 20 4d 4f 56 20 |"OS_Byte".. MOV | 00001670 52 30 2c 23 31 31 33 0a 20 4d 4f 56 20 52 31 2c |R0,#113. MOV R1,| 00001680 52 37 0a 20 53 57 49 20 22 4f 53 5f 42 79 74 65 |R7. SWI "OS_Byte| 00001690 22 0a 20 4c 44 4d 46 44 20 52 31 33 21 2c 20 7b |". LDMFD R13!, {| 000016a0 52 31 35 7d 0a 0a 0a 20 2e 67 72 61 70 68 69 63 |R15}... .graphic| 000016b0 73 5f 63 6c 65 61 72 0a 20 53 54 4d 46 44 20 52 |s_clear. STMFD R| 000016c0 31 33 21 2c 20 7b 52 31 34 7d 0a 20 4d 4f 56 20 |13!, {R14}. MOV | 000016d0 52 30 2c 23 30 0a 20 4d 4f 56 20 52 31 2c 23 30 |R0,#0. MOV R1,#0| 000016e0 0a 20 4d 4f 56 20 52 32 2c 23 30 0a 20 4d 4f 56 |. MOV R2,#0. MOV| 000016f0 20 52 33 2c 23 30 0a 20 4d 4f 56 20 52 34 2c 23 | R3,#0. MOV R4,#| 00001700 30 0a 20 4d 4f 56 20 52 35 2c 23 30 0a 20 4d 4f |0. MOV R5,#0. MO| 00001710 56 20 52 36 2c 23 30 0a 20 4d 4f 56 20 52 37 2c |V R6,#0. MOV R7,| 00001720 23 30 0a 20 4d 4f 56 20 52 38 2c 23 30 0a 20 4d |#0. MOV R8,#0. M| 00001730 4f 56 20 52 39 2c 23 30 0a 20 4c 44 52 20 52 31 |OV R9,#0. LDR R1| 00001740 31 2c 20 76 64 75 5f 61 64 64 72 65 73 73 0a 20 |1, vdu_address. | 00001750 4d 4f 56 20 52 31 32 2c 23 31 30 32 34 0a 20 2e |MOV R12,#1024. .| 00001760 67 72 61 70 68 69 63 73 5f 63 6c 65 61 72 5f 6d |graphics_clear_m| 00001770 61 69 6e 0a 20 53 54 4d 49 41 20 52 31 31 21 2c |ain. STMIA R11!,| 00001780 20 7b 52 30 2d 52 39 7d 0a 20 53 54 4d 49 41 20 | {R0-R9}. STMIA | 00001790 52 31 31 21 2c 20 7b 52 30 2d 52 39 7d 0a 20 53 |R11!, {R0-R9}. S| 000017a0 54 4d 49 41 20 52 31 31 21 2c 20 7b 52 30 2d 52 |TMIA R11!, {R0-R| 000017b0 39 7d 0a 20 53 54 4d 49 41 20 52 31 31 21 2c 20 |9}. STMIA R11!, | 000017c0 7b 52 30 2d 52 39 7d 0a 20 53 55 42 53 20 52 31 |{R0-R9}. SUBS R1| 000017d0 32 2c 52 31 32 2c 23 31 0a 20 42 47 54 20 67 72 |2,R12,#1. BGT gr| 000017e0 61 70 68 69 63 73 5f 63 6c 65 61 72 5f 6d 61 69 |aphics_clear_mai| 000017f0 6e 0a 20 4c 44 4d 46 44 20 52 31 33 21 2c 20 7b |n. LDMFD R13!, {| 00001800 52 31 35 7d 0a 0a 0a 20 0a 20 2e 67 72 61 70 68 |R15}... . .graph| 00001810 69 63 73 5f 71 75 61 64 0a 20 53 54 4d 46 44 20 |ics_quad. STMFD | 00001820 52 31 33 21 2c 20 7b 52 31 30 2d 52 31 32 2c 52 |R13!, {R10-R12,R| 00001830 31 34 7d 0a 20 4d 4f 56 20 52 30 2c 52 30 2c 41 |14}. MOV R0,R0,A| 00001840 53 52 20 23 37 0a 20 4d 4f 56 20 52 31 2c 52 31 |SR #7. MOV R1,R1| 00001850 2c 41 53 52 20 23 38 0a 20 4d 4f 56 20 52 32 2c |,ASR #8. MOV R2,| 00001860 52 32 2c 41 53 52 20 23 37 0a 20 4d 4f 56 20 52 |R2,ASR #7. MOV R| 00001870 33 2c 52 33 2c 41 53 52 20 23 38 0a 20 4d 4f 56 |3,R3,ASR #8. MOV| 00001880 20 52 34 2c 52 34 2c 41 53 52 20 23 37 0a 20 4d | R4,R4,ASR #7. M| 00001890 4f 56 20 52 35 2c 52 35 2c 41 53 52 20 23 38 0a |OV R5,R5,ASR #8.| 000018a0 20 4d 4f 56 20 52 36 2c 52 36 2c 41 53 52 20 23 | MOV R6,R6,ASR #| 000018b0 37 0a 20 4d 4f 56 20 52 37 2c 52 37 2c 41 53 52 |7. MOV R7,R7,ASR| 000018c0 20 23 38 0a 5c 0a 20 53 55 42 53 20 52 31 31 2c | #8.\. SUBS R11,| 000018d0 52 33 2c 52 31 0a 20 4d 4f 56 4c 54 20 52 33 2c |R3,R1. MOVLT R3,| 000018e0 52 31 0a 20 41 44 44 4c 54 20 52 31 2c 52 31 2c |R1. ADDLT R1,R1,| 000018f0 52 31 31 0a 20 4d 4f 56 4c 54 20 52 31 31 2c 52 |R11. MOVLT R11,R| 00001900 32 0a 20 4d 4f 56 4c 54 20 52 32 2c 52 30 0a 20 |2. MOVLT R2,R0. | 00001910 4d 4f 56 4c 54 20 52 30 2c 52 31 31 0a 5c 0a 20 |MOVLT R0,R11.\. | 00001920 53 55 42 53 20 52 31 31 2c 52 37 2c 52 35 0a 20 |SUBS R11,R7,R5. | 00001930 4d 4f 56 4c 54 20 52 37 2c 52 35 0a 20 41 44 44 |MOVLT R7,R5. ADD| 00001940 4c 54 20 52 35 2c 52 35 2c 52 31 31 0a 20 4d 4f |LT R5,R5,R11. MO| 00001950 56 4c 54 20 52 31 31 2c 52 36 0a 20 4d 4f 56 4c |VLT R11,R6. MOVL| 00001960 54 20 52 36 2c 52 34 0a 20 4d 4f 56 4c 54 20 52 |T R6,R4. MOVLT R| 00001970 34 2c 52 31 31 0a 5c 0a 20 53 55 42 53 20 52 31 |4,R11.\. SUBS R1| 00001980 31 2c 52 35 2c 52 31 0a 20 4d 4f 56 4c 54 20 52 |1,R5,R1. MOVLT R| 00001990 35 2c 52 31 0a 20 41 44 44 4c 54 20 52 31 2c 52 |5,R1. ADDLT R1,R| 000019a0 31 2c 52 31 31 0a 20 4d 4f 56 4c 54 20 52 31 31 |1,R11. MOVLT R11| 000019b0 2c 52 34 0a 20 4d 4f 56 4c 54 20 52 34 2c 52 30 |,R4. MOVLT R4,R0| 000019c0 0a 20 4d 4f 56 4c 54 20 52 30 2c 52 31 31 0a 5c |. MOVLT R0,R11.\| 000019d0 0a 20 53 55 42 53 20 52 31 31 2c 52 37 2c 52 33 |. SUBS R11,R7,R3| 000019e0 0a 20 4d 4f 56 4c 54 20 52 37 2c 52 33 0a 20 41 |. MOVLT R7,R3. A| 000019f0 44 44 4c 54 20 52 33 2c 52 33 2c 52 31 31 0a 20 |DDLT R3,R3,R11. | 00001a00 4d 4f 56 4c 54 20 52 31 31 2c 52 36 0a 20 4d 4f |MOVLT R11,R6. MO| 00001a10 56 4c 54 20 52 36 2c 52 32 0a 20 4d 4f 56 4c 54 |VLT R6,R2. MOVLT| 00001a20 20 52 32 2c 52 31 31 0a 5c 0a 20 53 55 42 53 20 | R2,R11.\. SUBS | 00001a30 52 31 31 2c 52 35 2c 52 33 0a 20 4d 4f 56 4c 54 |R11,R5,R3. MOVLT| 00001a40 20 52 35 2c 52 33 0a 20 41 44 44 4c 54 20 52 33 | R5,R3. ADDLT R3| 00001a50 2c 52 33 2c 52 31 31 0a 20 4d 4f 56 4c 54 20 52 |,R3,R11. MOVLT R| 00001a60 31 31 2c 52 34 0a 20 4d 4f 56 4c 54 20 52 34 2c |11,R4. MOVLT R4,| 00001a70 52 32 0a 20 4d 4f 56 4c 54 20 52 32 2c 52 31 31 |R2. MOVLT R2,R11| 00001a80 0a 5c 0a 20 53 54 52 20 52 31 2c 20 79 73 74 61 |.\. STR R1, ysta| 00001a90 72 74 0a 20 53 54 52 20 52 37 2c 20 79 65 6e 64 |rt. STR R7, yend| 00001aa0 0a 5c 0a 20 53 55 42 20 52 38 2c 52 36 2c 52 30 |.\. SUB R8,R6,R0| 00001ab0 0a 20 53 55 42 20 52 39 2c 52 37 2c 52 31 0a 20 |. SUB R9,R7,R1. | 00001ac0 53 55 42 20 52 31 30 2c 52 32 2c 52 30 0a 20 53 |SUB R10,R2,R0. S| 00001ad0 55 42 20 52 31 31 2c 52 33 2c 52 31 0a 5c 0a 20 |UB R11,R3,R1.\. | 00001ae0 4d 55 4c 20 52 31 32 2c 52 38 2c 52 31 31 0a 20 |MUL R12,R8,R11. | 00001af0 4d 55 4c 20 52 31 34 2c 52 31 30 2c 52 39 0a 20 |MUL R14,R10,R9. | 00001b00 53 55 42 20 52 31 32 2c 52 31 32 2c 52 31 34 0a |SUB R12,R12,R14.| 00001b10 5c 0a 20 53 55 42 20 52 31 30 2c 52 34 2c 52 30 |\. SUB R10,R4,R0| 00001b20 0a 20 53 55 42 20 52 31 31 2c 52 35 2c 52 31 0a |. SUB R11,R5,R1.| 00001b30 5c 0a 20 4d 55 4c 20 52 31 31 2c 52 38 2c 52 31 |\. MUL R11,R8,R1| 00001b40 31 0a 20 4d 55 4c 20 52 31 34 2c 52 31 30 2c 52 |1. MUL R14,R10,R| 00001b50 39 0a 20 53 55 42 20 52 31 31 2c 52 31 31 2c 52 |9. SUB R11,R11,R| 00001b60 31 34 0a 5c 0a 20 43 4d 50 20 52 31 32 2c 23 30 |14.\. CMP R12,#0| 00001b70 0a 20 4c 44 52 20 52 31 30 2c 20 74 72 61 63 65 |. LDR R10, trace| 00001b80 5f 61 64 64 72 65 73 73 0a 20 41 44 44 4c 54 20 |_address. ADDLT | 00001b90 52 38 2c 52 31 30 2c 23 34 0a 20 41 44 44 4c 54 |R8,R10,#4. ADDLT| 00001ba0 20 52 39 2c 52 31 30 2c 23 30 0a 20 41 44 44 47 | R9,R10,#0. ADDG| 00001bb0 45 20 52 38 2c 52 31 30 2c 23 30 0a 20 41 44 44 |E R8,R10,#0. ADD| 00001bc0 47 45 20 52 39 2c 52 31 30 2c 23 34 0a 20 53 54 |GE R9,R10,#4. ST| 00001bd0 4d 46 44 20 52 31 33 21 2c 20 7b 52 39 7d 0a 20 |MFD R13!, {R9}. | 00001be0 45 4f 52 20 52 31 31 2c 52 31 31 2c 52 31 32 0a |EOR R11,R11,R12.| 00001bf0 20 43 4d 50 20 52 31 31 2c 23 30 0a 20 42 4c 54 | CMP R11,#0. BLT| 00001c00 20 67 72 61 70 68 69 63 73 5f 71 75 61 64 32 32 | graphics_quad22| 00001c10 0a 0a 0a 20 2e 67 72 61 70 68 69 63 73 5f 71 75 |... .graphics_qu| 00001c20 61 64 32 31 0a 20 4d 4f 56 20 52 31 30 2c 52 30 |ad21. MOV R10,R0| 00001c30 0a 20 53 55 42 20 52 31 31 2c 52 32 2c 52 30 0a |. SUB R11,R2,R0.| 00001c40 20 53 55 42 53 20 52 31 32 2c 52 33 2c 52 31 0a | SUBS R12,R3,R1.| 00001c50 20 42 4c 47 54 20 67 72 61 70 68 69 63 73 5f 74 | BLGT graphics_t| 00001c60 72 61 63 65 0a 20 4d 4f 56 20 52 31 30 2c 52 32 |race. MOV R10,R2| 00001c70 0a 20 53 55 42 20 52 31 31 2c 52 34 2c 52 32 0a |. SUB R11,R4,R2.| 00001c80 20 53 55 42 53 20 52 31 32 2c 52 35 2c 52 33 0a | SUBS R12,R5,R3.| 00001c90 20 42 4c 47 54 20 67 72 61 70 68 69 63 73 5f 74 | BLGT graphics_t| 00001ca0 72 61 63 65 0a 20 4d 4f 56 20 52 31 30 2c 52 34 |race. MOV R10,R4| 00001cb0 0a 20 53 55 42 20 52 31 31 2c 52 36 2c 52 34 0a |. SUB R11,R6,R4.| 00001cc0 20 53 55 42 53 20 52 31 32 2c 52 37 2c 52 35 0a | SUBS R12,R7,R5.| 00001cd0 20 42 4c 47 54 20 67 72 61 70 68 69 63 73 5f 74 | BLGT graphics_t| 00001ce0 72 61 63 65 0a 20 4c 44 4d 46 44 20 52 31 33 21 |race. LDMFD R13!| 00001cf0 2c 20 7b 52 38 7d 0a 20 4d 4f 56 20 52 31 30 2c |, {R8}. MOV R10,| 00001d00 52 30 0a 20 53 55 42 20 52 31 31 2c 52 36 2c 52 |R0. SUB R11,R6,R| 00001d10 30 0a 20 53 55 42 53 20 52 31 32 2c 52 37 2c 52 |0. SUBS R12,R7,R| 00001d20 31 0a 20 42 4c 47 54 20 67 72 61 70 68 69 63 73 |1. BLGT graphics| 00001d30 5f 74 72 61 63 65 0a 20 4c 44 4d 46 44 20 52 31 |_trace. LDMFD R1| 00001d40 33 21 2c 20 7b 52 31 30 2d 52 31 32 2c 52 31 35 |3!, {R10-R12,R15| 00001d50 7d 0a 0a 0a 20 2e 67 72 61 70 68 69 63 73 5f 71 |}... .graphics_q| 00001d60 75 61 64 32 32 0a 20 4d 4f 56 20 52 31 30 2c 52 |uad22. MOV R10,R| 00001d70 30 0a 20 53 55 42 20 52 31 31 2c 52 32 2c 52 30 |0. SUB R11,R2,R0| 00001d80 0a 20 53 55 42 53 20 52 31 32 2c 52 33 2c 52 31 |. SUBS R12,R3,R1| 00001d90 0a 20 42 4c 47 54 20 67 72 61 70 68 69 63 73 5f |. BLGT graphics_| 00001da0 74 72 61 63 65 0a 20 4d 4f 56 20 52 31 30 2c 52 |trace. MOV R10,R| 00001db0 32 0a 20 53 55 42 20 52 31 31 2c 52 36 2c 52 32 |2. SUB R11,R6,R2| 00001dc0 0a 20 53 55 42 53 20 52 31 32 2c 52 37 2c 52 33 |. SUBS R12,R7,R3| 00001dd0 0a 20 42 4c 47 54 20 67 72 61 70 68 69 63 73 5f |. BLGT graphics_| 00001de0 74 72 61 63 65 0a 20 4c 44 4d 46 44 20 52 31 33 |trace. LDMFD R13| 00001df0 21 2c 20 7b 52 38 7d 0a 20 4d 4f 56 20 52 31 30 |!, {R8}. MOV R10| 00001e00 2c 52 30 0a 20 53 55 42 20 52 31 31 2c 52 34 2c |,R0. SUB R11,R4,| 00001e10 52 30 0a 20 53 55 42 53 20 52 31 32 2c 52 35 2c |R0. SUBS R12,R5,| 00001e20 52 31 0a 20 42 4c 47 54 20 67 72 61 70 68 69 63 |R1. BLGT graphic| 00001e30 73 5f 74 72 61 63 65 0a 20 4d 4f 56 20 52 31 30 |s_trace. MOV R10| 00001e40 2c 52 34 0a 20 53 55 42 20 52 31 31 2c 52 36 2c |,R4. SUB R11,R6,| 00001e50 52 34 0a 20 53 55 42 53 20 52 31 32 2c 52 37 2c |R4. SUBS R12,R7,| 00001e60 52 35 0a 20 42 4c 47 54 20 67 72 61 70 68 69 63 |R5. BLGT graphic| 00001e70 73 5f 74 72 61 63 65 0a 20 4c 44 4d 46 44 20 52 |s_trace. LDMFD R| 00001e80 31 33 21 2c 20 7b 52 31 30 2d 52 31 32 2c 52 31 |13!, {R10-R12,R1| 00001e90 35 7d 0a 0a 0a 0a 20 2e 67 72 61 70 68 69 63 73 |5}.... .graphics| 00001ea0 5f 74 72 61 63 65 0a 20 4c 44 52 20 52 39 2c 20 |_trace. LDR R9, | 00001eb0 72 65 63 69 70 5f 61 64 64 72 65 73 73 0a 20 4c |recip_address. L| 00001ec0 44 52 20 52 39 2c 20 5b 52 39 2c 52 31 32 2c 4c |DR R9, [R9,R12,L| 00001ed0 53 4c 20 23 32 5d 0a 20 4d 55 4c 20 52 31 31 2c |SL #2]. MUL R11,| 00001ee0 52 39 2c 52 31 31 0a 20 4d 4f 56 20 52 31 30 2c |R9,R11. MOV R10,| 00001ef0 52 31 30 2c 41 53 4c 20 23 31 36 0a 20 41 44 44 |R10,ASL #16. ADD| 00001f00 20 52 31 30 2c 52 31 30 2c 52 31 31 2c 41 53 52 | R10,R10,R11,ASR| 00001f10 20 23 31 0a 20 2e 67 72 61 70 68 69 63 73 5f 74 | #1. .graphics_t| 00001f20 72 61 63 65 5f 6d 61 69 6e 0a 20 4d 4f 56 20 52 |race_main. MOV R| 00001f30 39 2c 52 31 30 2c 41 53 52 20 23 31 36 0a 20 41 |9,R10,ASR #16. A| 00001f40 44 44 20 52 31 30 2c 52 31 30 2c 52 31 31 0a 20 |DD R10,R10,R11. | 00001f50 43 4d 50 20 52 39 2c 23 33 32 30 0a 20 4d 4f 56 |CMP R9,#320. MOV| 00001f60 47 54 20 52 39 2c 23 33 32 30 0a 20 53 55 42 47 |GT R9,#320. SUBG| 00001f70 54 20 52 39 2c 52 39 2c 23 31 0a 20 43 4d 4e 20 |T R9,R9,#1. CMN | 00001f80 52 39 2c 23 33 32 30 0a 20 4d 4f 56 4c 54 20 52 |R9,#320. MOVLT R| 00001f90 39 2c 23 30 0a 20 53 55 42 4c 54 20 52 39 2c 52 |9,#0. SUBLT R9,R| 00001fa0 39 2c 23 33 32 30 0a 20 53 54 52 20 52 39 2c 20 |9,#320. STR R9, | 00001fb0 5b 52 38 5d 2c 23 38 0a 20 53 55 42 53 20 52 31 |[R8],#8. SUBS R1| 00001fc0 32 2c 52 31 32 2c 23 31 0a 20 42 47 54 20 67 72 |2,R12,#1. BGT gr| 00001fd0 61 70 68 69 63 73 5f 74 72 61 63 65 5f 6d 61 69 |aphics_trace_mai| 00001fe0 6e 0a 20 4d 4f 56 20 52 31 35 2c 52 31 34 0a 0a |n. MOV R15,R14..| 00001ff0 0a 0a 20 2e 79 73 74 61 72 74 20 20 20 20 45 51 |.. .ystart EQ| 00002000 55 44 20 30 0a 20 2e 79 65 6e 64 20 20 20 20 20 |UD 0. .yend | 00002010 45 51 55 44 20 30 0a 0a 20 2e 76 64 75 5f 61 64 |EQUD 0.. .vdu_ad| 00002020 64 72 65 73 73 20 20 20 20 20 20 20 20 20 45 51 |dress EQ| 00002030 55 44 20 20 30 0a 20 2e 74 65 78 74 75 72 65 5f |UD 0. .texture_| 00002040 61 64 64 72 65 73 73 20 20 20 20 45 51 55 44 20 |address EQUD | 00002050 20 30 0a 20 2e 74 72 61 63 65 5f 61 64 64 72 65 | 0. .trace_addre| 00002060 73 73 20 20 20 20 20 20 45 51 55 44 20 20 74 72 |ss EQUD tr| 00002070 61 63 65 5f 64 61 74 61 0a 20 2e 64 69 76 5f 61 |ace_data. .div_a| 00002080 64 64 72 65 73 73 20 20 20 20 20 20 20 20 20 45 |ddress E| 00002090 51 55 44 20 20 64 69 76 5f 64 61 74 61 0a 20 2e |QUD div_data. .| 000020a0 72 65 63 69 70 5f 61 64 64 72 65 73 73 20 20 20 |recip_address | 000020b0 20 20 20 45 51 55 44 20 20 72 65 63 69 70 5f 64 | EQUD recip_d| 000020c0 61 74 61 0a 20 0a 20 5d 20 4e 45 58 54 70 61 73 |ata. . ] NEXTpas| 000020d0 73 0a 20 45 4e 44 50 52 4f 43 0a 0a 0a 0a 20 44 |s. ENDPROC.... D| 000020e0 45 46 20 50 52 4f 43 69 6e 69 74 0a 0a 20 44 49 |EF PROCinit.. DI| 000020f0 4d 20 74 65 78 74 75 72 65 24 28 32 30 29 0a 20 |M texture$(20). | 00002100 6d 3d 30 0a 20 52 45 50 45 41 54 0a 20 20 20 20 |m=0. REPEAT. | 00002110 20 6d 2b 3d 31 0a 20 20 20 20 20 52 45 41 44 20 | m+=1. READ | 00002120 6d 24 0a 20 20 20 20 20 74 65 78 74 75 72 65 24 |m$. texture$| 00002130 28 6d 29 3d 6d 24 0a 20 55 4e 54 49 4c 20 6d 24 |(m)=m$. UNTIL m$| 00002140 3d 22 22 0a 20 74 65 78 74 75 72 65 73 3d 6d 2d |="". textures=m-| 00002150 31 0a 0a 20 44 41 54 41 20 22 61 63 6f 72 6e 22 |1.. DATA "acorn"| 00002160 2c 20 22 61 72 72 6f 77 22 2c 20 22 66 75 6e 6b |, "arrow", "funk| 00002170 79 64 72 61 77 22 2c 20 22 73 74 6f 6e 65 22 0a |ydraw", "stone".| 00002180 20 44 41 54 41 20 22 22 0a 0a 0a 20 76 65 72 74 | DATA ""... vert| 00002190 69 63 65 73 3d 38 0a 20 66 61 63 65 73 3d 36 0a |ices=8. faces=6.| 000021a0 0a 20 64 3d 30 0a 20 46 4f 52 20 6d 3d 31 20 54 |. d=0. FOR m=1 T| 000021b0 4f 20 34 2a 31 30 32 34 2d 31 0a 20 49 46 20 6d |O 4*1024-1. IF m| 000021c0 3e 28 32 5e 64 29 20 20 64 2b 3d 31 0a 20 6d 61 |>(2^d) d+=1. ma| 000021d0 6e 74 3d 28 31 3c 3c 28 31 35 2b 64 29 29 2f 6d |nt=(1<<(15+d))/m| 000021e0 0a 20 21 28 64 69 76 5f 64 61 74 61 2b 6d 2a 34 |. !(div_data+m*4| 000021f0 29 3d 28 6d 61 6e 74 3c 3c 31 36 29 20 4f 52 20 |)=(mant<<16) OR | 00002200 64 0a 20 4e 45 58 54 0a 0a 20 46 4f 52 20 6d 3d |d. NEXT.. FOR m=| 00002210 31 20 54 4f 20 34 2a 31 30 32 34 2d 31 0a 20 21 |1 TO 4*1024-1. !| 00002220 28 72 65 63 69 70 5f 64 61 74 61 2b 6d 2a 34 29 |(recip_data+m*4)| 00002230 3d 32 5e 31 36 2f 6d 0a 20 4e 45 58 54 0a 0a 20 |=2^16/m. NEXT.. | 00002240 6d 3d 76 65 72 74 65 78 5f 64 61 74 61 0a 20 46 |m=vertex_data. F| 00002250 4f 52 20 6e 3d 30 20 54 4f 20 76 65 72 74 69 63 |OR n=0 TO vertic| 00002260 65 73 2d 31 0a 20 52 45 41 44 20 78 2c 79 2c 7a |es-1. READ x,y,z| 00002270 0a 20 6d 21 30 3d 78 0a 20 6d 21 34 3d 79 0a 20 |. m!0=x. m!4=y. | 00002280 6d 21 38 3d 7a 0a 20 6d 2b 3d 33 32 0a 20 4e 45 |m!8=z. m+=32. NE| 00002290 58 54 0a 0a 20 6d 3d 66 61 63 65 5f 64 61 74 61 |XT.. m=face_data| 000022a0 0a 20 46 4f 52 20 6e 3d 30 20 54 4f 20 66 61 63 |. FOR n=0 TO fac| 000022b0 65 73 2d 31 0a 20 52 45 41 44 20 6d 30 2c 6d 31 |es-1. READ m0,m1| 000022c0 2c 6d 32 2c 6d 33 2c 63 6f 6c 6f 75 72 0a 20 6d |,m2,m3,colour. m| 000022d0 21 30 3d 6d 30 0a 20 6d 21 34 3d 6d 31 0a 20 6d |!0=m0. m!4=m1. m| 000022e0 21 38 3d 6d 32 0a 20 6d 21 31 32 3d 6d 33 0a 20 |!8=m2. m!12=m3. | 000022f0 6d 21 31 36 3d 63 6f 6c 6f 75 72 0a 20 6d 2b 3d |m!16=colour. m+=| 00002300 32 30 0a 20 4e 45 58 54 0a 20 45 4e 44 50 52 4f |20. NEXT. ENDPRO| 00002310 43 0a 0a 0a 20 44 41 54 41 20 2d 35 31 32 2c 20 |C... DATA -512, | 00002320 20 20 35 31 32 2c 20 30 0a 20 44 41 54 41 20 20 | 512, 0. DATA | 00002330 20 35 31 32 2c 20 20 20 35 31 32 2c 20 30 0a 20 | 512, 512, 0. | 00002340 44 41 54 41 20 20 20 35 31 32 2c 20 2d 35 31 32 |DATA 512, -512| 00002350 2c 20 30 0a 20 44 41 54 41 20 2d 35 31 32 2c 20 |, 0. DATA -512, | 00002360 2d 35 31 32 2c 20 30 0a 0a 20 44 41 54 41 20 2d |-512, 0.. DATA -| 00002370 35 31 32 2c 20 20 20 35 31 32 2c 20 32 35 36 0a |512, 512, 256.| 00002380 20 44 41 54 41 20 20 20 35 31 32 2c 20 20 20 35 | DATA 512, 5| 00002390 31 32 2c 20 32 35 36 0a 20 44 41 54 41 20 20 20 |12, 256. DATA | 000023a0 35 31 32 2c 20 2d 35 31 32 2c 20 32 35 36 0a 20 |512, -512, 256. | 000023b0 44 41 54 41 20 2d 35 31 32 2c 20 2d 35 31 32 2c |DATA -512, -512,| 000023c0 20 32 35 36 0a 0a 0a 20 44 41 54 41 20 34 2c 35 | 256... DATA 4,5| 000023d0 2c 31 2c 30 2c 32 30 0a 20 44 41 54 41 20 36 2c |,1,0,20. DATA 6,| 000023e0 37 2c 33 2c 32 2c 32 30 0a 0a 20 44 41 54 41 20 |7,3,2,20.. DATA | 000023f0 35 2c 36 2c 32 2c 31 2c 31 38 0a 20 44 41 54 41 |5,6,2,1,18. DATA| 00002400 20 37 2c 34 2c 30 2c 33 2c 31 38 0a 0a 20 44 41 | 7,4,0,3,18.. DA| 00002410 54 41 20 37 2c 36 2c 35 2c 34 2c 31 36 0a 20 44 |TA 7,6,5,4,16. D| 00002420 41 54 41 20 30 2c 31 2c 32 2c 33 2c 31 36 0a 0a |ATA 0,1,2,3,16..| 00002430 0a 0a 20 44 45 46 20 50 52 4f 43 72 6f 74 61 74 |.. DEF PROCrotat| 00002440 65 5f 76 65 63 74 6f 72 28 78 2c 20 79 2c 20 7a |e_vector(x, y, z| 00002450 2c 20 52 45 54 55 52 4e 20 78 2c 20 52 45 54 55 |, RETURN x, RETU| 00002460 52 4e 20 79 2c 20 52 45 54 55 52 4e 20 7a 29 0a |RN y, RETURN z).| 00002470 20 78 30 3d 78 2a 6d 7a 2d 79 2a 6e 7a 0a 20 79 | x0=x*mz-y*nz. y| 00002480 30 3d 78 2a 6e 7a 2b 79 2a 6d 7a 0a 0a 20 7a 30 |0=x*nz+y*mz.. z0| 00002490 3d 7a 2a 6d 79 2d 78 30 2a 6e 79 0a 20 78 3d 7a |=z*my-x0*ny. x=z| 000024a0 2a 6e 79 2b 78 30 2a 6d 79 0a 0a 20 79 3d 79 30 |*ny+x0*my.. y=y0| 000024b0 2a 6d 78 2d 7a 30 2a 6e 78 0a 20 7a 3d 79 30 2a |*mx-z0*nx. z=y0*| 000024c0 6e 78 2b 7a 30 2a 6d 78 0a 20 45 4e 44 50 52 4f |nx+z0*mx. ENDPRO| 000024d0 43 0a |C.| 000024d2