Home » Archimedes archive » Acorn User » AU 1994-06.adf » !WriteDemo_WriteDemo » Modules/FastSprite/Source
Modules/FastSprite/Source
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 1994-06.adf » !WriteDemo_WriteDemo |
Filename: | Modules/FastSprite/Source |
Read OK: | ✔ |
File size: | 0E5E bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM >FastSprite 20 30ON ERROR SYS "Hourglass_Smash":ERROR 0,(REPORT$+" (internal error code "+STR$(ERL)+")") 40 50REM Fixed variables : 60 70 trigger$ = "x" 80 trigger% = TRUE 90 100 REM width of sprite in pixels (must be divisable by 4) 110 width% = 236 120 130 REM height of sprite in pixels 140 height% = 69 150 160 REM x position of sprite in pixels (must be divisible by 4) 170 x% = 44 180 190 REM y position of sprite in pixels 200 y% = 32 210 220 REM start y position of sprite in pixels 230 start_y% = 170 240 250 260 270module$ = "FastSprite" 280 290SYS "Hourglass_On" 300LIBRARY "<Demo$Dir>.FNconvert" 310SYS "OS_File",13,"<Modules$Dir>."+module$+".Sprites" TO spr_exists%,,,,spr_len% 320IF spr_exists% = 0 THEN ERROR 0,(module$+": Sprite file not found") 330PROCassemble 340 350CASE FNconvert(module$,sprites%) OF 360 WHEN 0 370 OSCLI "SAVE <Modules$Dir>."+module$+".Module "+STR$~code%+" "+STR$~P% 380 OSCLI "SETTYPE <Modules$Dir>."+module$+".Module Data" 390 WHEN -1 400 ERROR 0,(module$+": Sprite file not found") 410 OTHERWISE 420 ERROR 0,(module$+": Sprite width not divisible by 4") 430ENDCASE 440 450SYS "Hourglass_Off" 460END 470 480 490 500DEF PROCassemble 510 len% = 1024 + spr_len% 520 DIM code% len% 530 FOR pass% = 8 TO 10 STEP 2 540 P% = code% 550 L% = code% + len% 560 [ OPT pass% 570 580 590.init EQUD 0 600.frame EQUD fastsprite - code% 610.end EQUD 0 620 630 640.fastsprite STMFD R13!,{R0-R11,R14} 650 ] 660 IF trigger% THEN 670 [OPT pass% 680 TST R11,#(1 << ( ASC("z") - ASC(trigger$) )) 690 BEQ sprite_end 700 ] 710 ENDIF 720 [OPT pass% 730 LDR R0,var% 740 CMP R0,#y% 750 SUBGT R0,R0,#1 760 STR R0,var% 770 ADD R1,R12,R0,LSL#6 ; r1=screen address+(y_pos*320) 780 ADD R1,R1,R0,LSL#8 790 ADD R1,R1,#x% 800 MOV R2,#height% ; r2=height of logo in pixels 810 820 ADR R0,sprites% ; r0=address of logo sprite 830.sprite_1 FNfast_line(width%) ; plot one line 840 ADD R1,R1,#(320-width%) ; move scr pos to next line 850 SUBS R2,R2,#1 ; check if another row left 860 BNE sprite_1 ; if so, go to 'au_logo_1' 870.sprite_end LDMFD R13!,{R0-R11,PC} ; exit 880 890 900.var% EQUD start_y% 910 920.sprites% FNarray(spr_len%) ; array containing logo sprite 930 940 950 960 ] 970 NEXT 980ENDPROC 990 1000 1010 1020DEF FNarray(size%) 1030 P% += size% 1040= 0 1050 1060 1070 1080DEF FNfast_line(width%) 1090 IF (width% MOD 4) <> 0 THEN PRINT module$": Sprite width must be divisable by 4":END 1100 1110 WHILE width%>0 1120 1130 CASE width% OF 1140 WHEN 4 1150 [ OPT pass% 1160 LDR R3,[R0],#4 1170 STR R3,[R1],#4 1180 ] 1190 WHEN 8 1200 [ OPT pass% 1210 LDMIA R0!,{R3-R4} 1220 STMIA R1!,{R3-R4} 1230 ] 1240 WHEN 12 1250 [ OPT pass% 1260 LDMIA R0!,{R3-R5} 1270 STMIA R1!,{R3-R5} 1280 ] 1290 WHEN 16 1300 [ OPT pass% 1310 LDMIA R0!,{R3-R6} 1320 STMIA R1!,{R3-R6} 1330 ] 1340 WHEN 20 1350 [ OPT pass% 1360 LDMIA R0!,{R3-R7} 1370 STMIA R1!,{R3-R7} 1380 ] 1390 WHEN 24 1400 [ OPT pass% 1410 LDMIA R0!,{R3-R8} 1420 STMIA R1!,{R3-R8} 1430 ] 1440 WHEN 28 1450 [ OPT pass% 1460 LDMIA R0!,{R3-R9} 1470 STMIA R1!,{R3-R9} 1480 ] 1490 OTHERWISE 1500 [ OPT pass% 1510 LDMIA R0!,{R3-R10} 1520 STMIA R1!,{R3-R10} 1530 ] 1540 ENDCASE 1550 1560 IF width% > 32 THEN width% -= 32 ELSE width% -= width% 1570 1580 ENDWHILE 1590 1600= 0
� >FastSprite G� � ș "Hourglass_Smash":� 0,(�$+" (internal error code "+�(�)+")") ( 2� Fixed variables : < F trigger$ = "x" P trigger% = � Z d: � width of sprite in pixels (must be divisable by 4) n width% = 236 x �" � height of sprite in pixels � height% = 69 � �? � x position of sprite in pixels (must be divisible by 4) � x% = 44 � �& � y position of sprite in pixels � y% = 32 � �, � start y position of sprite in pixels � start_y% = 170 � � module$ = "FastSprite" "ș "Hourglass_On" ,ț "<Demo$Dir>.FNconvert" 6Qș "OS_File",13,"<Modules$Dir>."+module$+".Sprites" � spr_exists%,,,,spr_len% @?� spr_exists% = 0 � � 0,(module$+": Sprite file not found") J �assemble T ^#Ȏ �convert(module$,sprites%) � h � 0 rF � "SAVE <Modules$Dir>."+module$+".Module "+�~code%+" "+�~P% |9 � "SETTYPE <Modules$Dir>."+module$+".Module Data" � � -1 �/ � 0,(module$+": Sprite file not found") � �9 � 0,(module$+": Sprite width not divisible by 4") �� � �ș "Hourglass_Off" �� � � � �� �assemble � len% = 1024 + spr_len% � code% len% � pass% = 8 � 10 � 2 P% = code% & L% = code% + len% 0 [ OPT pass% : D N.init EQUD 0 X(.frame EQUD fastsprite - code% b.end EQUD 0 l v �'.fastsprite STMFD R13!,{R0-R11,R14} � ] � � trigger% � � [OPT pass% �< TST R11,#(1 << ( �("z") - �(trigger$) )) �" BEQ sprite_end � ] � � � [OPT pass% � LDR R0,var% � CMP R0,#y% � SUBGT R0,R0,#1 � STR R0,var% F ADD R1,R12,R0,LSL#6 ; r1=screen address+(y_pos*320) $ ADD R1,R1,R0,LSL#8 ADD R1,R1,#x% D MOV R2,#height% ; r2=height of logo in pixels * 4B ADR R0,sprites% ; r0=address of logo sprite >5.sprite_1 �fast_line(width%) ; plot one line HE ADD R1,R1,#(320-width%) ; move scr pos to next line RB SUBS R2,R2,#1 ; check if another row left \A BNE sprite_1 ; if so, go to 'au_logo_1' f-.sprite_end LDMFD R13!,{R0-R11,PC} ; exit p z �.var% EQUD start_y% � �D.sprites% �array(spr_len%) ; array containing logo sprite � � � � ] � � �� � � � �� �array(size%) P% += size% = 0 $ . 8� �fast_line(width%) BN � (width% � 4) <> 0 � � module$": Sprite width must be divisable by 4":� L V ȕ width%>0 ` j Ȏ width% � t � 4 ~ [ OPT pass% � LDR R3,[R0],#4 � STR R3,[R1],#4 � ] � � 8 � [ OPT pass% � LDMIA R0!,{R3-R4} � STMIA R1!,{R3-R4} � ] � � 12 � [ OPT pass% � LDMIA R0!,{R3-R5} � STMIA R1!,{R3-R5} ] � 16 [ OPT pass% LDMIA R0!,{R3-R6} ( STMIA R1!,{R3-R6} 2 ] < � 20 F [ OPT pass% P LDMIA R0!,{R3-R7} Z STMIA R1!,{R3-R7} d ] n � 24 x [ OPT pass% � LDMIA R0!,{R3-R8} � STMIA R1!,{R3-R8} � ] � � 28 � [ OPT pass% � LDMIA R0!,{R3-R9} � STMIA R1!,{R3-R9} � ] � � [ OPT pass% � LDMIA R0!,{R3-R10} � STMIA R1!,{R3-R10} � ] � 7 � width% > 32 � width% -= 32 � width% -= width% " , � 6 @= 0 �
00000000 0d 00 0a 11 f4 20 3e 46 61 73 74 53 70 72 69 74 |..... >FastSprit| 00000010 65 0d 00 14 04 0d 00 1e 47 ee 20 85 20 c8 99 20 |e.......G. . .. | 00000020 22 48 6f 75 72 67 6c 61 73 73 5f 53 6d 61 73 68 |"Hourglass_Smash| 00000030 22 3a 85 20 30 2c 28 f6 24 2b 22 20 28 69 6e 74 |":. 0,(.$+" (int| 00000040 65 72 6e 61 6c 20 65 72 72 6f 72 20 63 6f 64 65 |ernal error code| 00000050 20 22 2b c3 28 9e 29 2b 22 29 22 29 0d 00 28 04 | "+.(.)+")")..(.| 00000060 0d 00 32 17 f4 20 46 69 78 65 64 20 76 61 72 69 |..2.. Fixed vari| 00000070 61 62 6c 65 73 20 3a 0d 00 3c 04 0d 00 46 14 20 |ables :..<...F. | 00000080 20 74 72 69 67 67 65 72 24 20 3d 20 22 78 22 0d | trigger$ = "x".| 00000090 00 50 12 20 20 74 72 69 67 67 65 72 25 20 3d 20 |.P. trigger% = | 000000a0 b9 0d 00 5a 04 0d 00 64 3a 20 20 f4 20 77 69 64 |...Z...d: . wid| 000000b0 74 68 20 6f 66 20 73 70 72 69 74 65 20 69 6e 20 |th of sprite in | 000000c0 70 69 78 65 6c 73 20 28 6d 75 73 74 20 62 65 20 |pixels (must be | 000000d0 64 69 76 69 73 61 62 6c 65 20 62 79 20 34 29 0d |divisable by 4).| 000000e0 00 6e 14 20 20 77 69 64 74 68 25 20 20 20 3d 20 |.n. width% = | 000000f0 32 33 36 0d 00 78 04 0d 00 82 22 20 20 f4 20 68 |236..x...." . h| 00000100 65 69 67 68 74 20 6f 66 20 73 70 72 69 74 65 20 |eight of sprite | 00000110 69 6e 20 70 69 78 65 6c 73 0d 00 8c 13 20 20 68 |in pixels.... h| 00000120 65 69 67 68 74 25 20 20 3d 20 36 39 0d 00 96 04 |eight% = 69....| 00000130 0d 00 a0 3f 20 20 f4 20 78 20 70 6f 73 69 74 69 |...? . x positi| 00000140 6f 6e 20 6f 66 20 73 70 72 69 74 65 20 69 6e 20 |on of sprite in | 00000150 70 69 78 65 6c 73 20 28 6d 75 73 74 20 62 65 20 |pixels (must be | 00000160 64 69 76 69 73 69 62 6c 65 20 62 79 20 34 29 0d |divisible by 4).| 00000170 00 aa 13 20 20 78 25 20 20 20 20 20 20 20 3d 20 |... x% = | 00000180 34 34 0d 00 b4 04 0d 00 be 26 20 20 f4 20 79 20 |44.......& . y | 00000190 70 6f 73 69 74 69 6f 6e 20 6f 66 20 73 70 72 69 |position of spri| 000001a0 74 65 20 69 6e 20 70 69 78 65 6c 73 0d 00 c8 13 |te in pixels....| 000001b0 20 20 79 25 20 20 20 20 20 20 20 3d 20 33 32 0d | y% = 32.| 000001c0 00 d2 04 0d 00 dc 2c 20 20 f4 20 73 74 61 72 74 |......, . start| 000001d0 20 79 20 70 6f 73 69 74 69 6f 6e 20 6f 66 20 73 | y position of s| 000001e0 70 72 69 74 65 20 69 6e 20 70 69 78 65 6c 73 0d |prite in pixels.| 000001f0 00 e6 14 20 20 73 74 61 72 74 5f 79 25 20 3d 20 |... start_y% = | 00000200 31 37 30 0d 00 f0 04 0d 00 fa 04 0d 01 04 04 0d |170.............| 00000210 01 0e 1a 6d 6f 64 75 6c 65 24 20 3d 20 22 46 61 |...module$ = "Fa| 00000220 73 74 53 70 72 69 74 65 22 0d 01 18 04 0d 01 22 |stSprite"......"| 00000230 15 c8 99 20 22 48 6f 75 72 67 6c 61 73 73 5f 4f |... "Hourglass_O| 00000240 6e 22 0d 01 2c 1d c8 9b 20 22 3c 44 65 6d 6f 24 |n"..,... "<Demo$| 00000250 44 69 72 3e 2e 46 4e 63 6f 6e 76 65 72 74 22 0d |Dir>.FNconvert".| 00000260 01 36 51 c8 99 20 22 4f 53 5f 46 69 6c 65 22 2c |.6Q.. "OS_File",| 00000270 31 33 2c 22 3c 4d 6f 64 75 6c 65 73 24 44 69 72 |13,"<Modules$Dir| 00000280 3e 2e 22 2b 6d 6f 64 75 6c 65 24 2b 22 2e 53 70 |>."+module$+".Sp| 00000290 72 69 74 65 73 22 20 b8 20 73 70 72 5f 65 78 69 |rites" . spr_exi| 000002a0 73 74 73 25 2c 2c 2c 2c 73 70 72 5f 6c 65 6e 25 |sts%,,,,spr_len%| 000002b0 0d 01 40 3f e7 20 73 70 72 5f 65 78 69 73 74 73 |..@?. spr_exists| 000002c0 25 20 3d 20 30 20 8c 20 85 20 30 2c 28 6d 6f 64 |% = 0 . . 0,(mod| 000002d0 75 6c 65 24 2b 22 3a 20 53 70 72 69 74 65 20 66 |ule$+": Sprite f| 000002e0 69 6c 65 20 6e 6f 74 20 66 6f 75 6e 64 22 29 0d |ile not found").| 000002f0 01 4a 0d f2 61 73 73 65 6d 62 6c 65 0d 01 54 04 |.J..assemble..T.| 00000300 0d 01 5e 23 c8 8e 20 a4 63 6f 6e 76 65 72 74 28 |..^#.. .convert(| 00000310 6d 6f 64 75 6c 65 24 2c 73 70 72 69 74 65 73 25 |module$,sprites%| 00000320 29 20 ca 0d 01 68 09 20 20 c9 20 30 0d 01 72 46 |) ...h. . 0..rF| 00000330 20 20 20 20 ff 20 22 53 41 56 45 20 20 20 20 3c | . "SAVE <| 00000340 4d 6f 64 75 6c 65 73 24 44 69 72 3e 2e 22 2b 6d |Modules$Dir>."+m| 00000350 6f 64 75 6c 65 24 2b 22 2e 4d 6f 64 75 6c 65 20 |odule$+".Module | 00000360 22 2b c3 7e 63 6f 64 65 25 2b 22 20 22 2b c3 7e |"+.~code%+" "+.~| 00000370 50 25 0d 01 7c 39 20 20 20 20 ff 20 22 53 45 54 |P%..|9 . "SET| 00000380 54 59 50 45 20 3c 4d 6f 64 75 6c 65 73 24 44 69 |TYPE <Modules$Di| 00000390 72 3e 2e 22 2b 6d 6f 64 75 6c 65 24 2b 22 2e 4d |r>."+module$+".M| 000003a0 6f 64 75 6c 65 20 44 61 74 61 22 0d 01 86 0a 20 |odule Data".... | 000003b0 20 c9 20 2d 31 0d 01 90 2f 20 20 20 20 85 20 30 | . -1.../ . 0| 000003c0 2c 28 6d 6f 64 75 6c 65 24 2b 22 3a 20 53 70 72 |,(module$+": Spr| 000003d0 69 74 65 20 66 69 6c 65 20 6e 6f 74 20 66 6f 75 |ite file not fou| 000003e0 6e 64 22 29 0d 01 9a 07 20 20 7f 0d 01 a4 39 20 |nd").... ....9 | 000003f0 20 20 20 85 20 30 2c 28 6d 6f 64 75 6c 65 24 2b | . 0,(module$+| 00000400 22 3a 20 53 70 72 69 74 65 20 77 69 64 74 68 20 |": Sprite width | 00000410 6e 6f 74 20 64 69 76 69 73 69 62 6c 65 20 62 79 |not divisible by| 00000420 20 34 22 29 0d 01 ae 05 cb 0d 01 b8 04 0d 01 c2 | 4")............| 00000430 16 c8 99 20 22 48 6f 75 72 67 6c 61 73 73 5f 4f |... "Hourglass_O| 00000440 66 66 22 0d 01 cc 05 e0 0d 01 d6 04 0d 01 e0 04 |ff".............| 00000450 0d 01 ea 04 0d 01 f4 0f dd 20 f2 61 73 73 65 6d |......... .assem| 00000460 62 6c 65 0d 01 fe 1c 20 20 6c 65 6e 25 20 3d 20 |ble.... len% = | 00000470 31 30 32 34 20 2b 20 73 70 72 5f 6c 65 6e 25 0d |1024 + spr_len%.| 00000480 02 08 12 20 20 de 20 63 6f 64 65 25 20 6c 65 6e |... . code% len| 00000490 25 0d 02 12 1a 20 20 e3 20 70 61 73 73 25 20 3d |%.... . pass% =| 000004a0 20 38 20 b8 20 31 30 20 88 20 32 0d 02 1c 12 20 | 8 . 10 . 2.... | 000004b0 20 20 20 50 25 20 3d 20 63 6f 64 65 25 0d 02 26 | P% = code%..&| 000004c0 19 20 20 20 20 4c 25 20 3d 20 63 6f 64 65 25 20 |. L% = code% | 000004d0 2b 20 6c 65 6e 25 0d 02 30 13 20 20 20 20 5b 20 |+ len%..0. [ | 000004e0 4f 50 54 20 70 61 73 73 25 0d 02 3a 04 0d 02 44 |OPT pass%..:...D| 000004f0 04 0d 02 4e 17 2e 69 6e 69 74 20 20 20 20 20 20 |...N..init | 00000500 20 45 51 55 44 20 20 30 0d 02 58 28 2e 66 72 61 | EQUD 0..X(.fra| 00000510 6d 65 20 20 20 20 20 20 45 51 55 44 20 20 66 61 |me EQUD fa| 00000520 73 74 73 70 72 69 74 65 20 2d 20 63 6f 64 65 25 |stsprite - code%| 00000530 0d 02 62 18 2e 65 6e 64 20 20 20 20 20 20 20 20 |..b..end | 00000540 45 51 55 44 20 20 30 20 0d 02 6c 04 0d 02 76 04 |EQUD 0 ..l...v.| 00000550 0d 02 80 27 2e 66 61 73 74 73 70 72 69 74 65 20 |...'.fastsprite | 00000560 53 54 4d 46 44 20 52 31 33 21 2c 7b 52 30 2d 52 |STMFD R13!,{R0-R| 00000570 31 31 2c 52 31 34 7d 0d 02 8a 11 20 20 20 20 20 |11,R14}.... | 00000580 20 20 20 20 20 20 20 5d 0d 02 94 1c 20 20 20 20 | ].... | 00000590 20 20 20 20 20 20 20 20 e7 20 74 72 69 67 67 65 | . trigge| 000005a0 72 25 20 8c 0d 02 9e 1c 20 20 20 20 20 20 20 20 |r% ..... | 000005b0 20 20 20 20 20 20 5b 4f 50 54 20 70 61 73 73 25 | [OPT pass%| 000005c0 0d 02 a8 3c 20 20 20 20 20 20 20 20 20 20 20 20 |...< | 000005d0 20 20 54 53 54 20 20 20 52 31 31 2c 23 28 31 20 | TST R11,#(1 | 000005e0 3c 3c 20 28 20 97 28 22 7a 22 29 20 2d 20 97 28 |<< ( .("z") - .(| 000005f0 74 72 69 67 67 65 72 24 29 20 29 29 0d 02 b2 22 |trigger$) ))..."| 00000600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 45 | BE| 00000610 51 20 20 20 73 70 72 69 74 65 5f 65 6e 64 0d 02 |Q sprite_end..| 00000620 bc 13 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |.. | 00000630 5d 0d 02 c6 11 20 20 20 20 20 20 20 20 20 20 20 |].... | 00000640 20 cd 0d 02 d0 1a 20 20 20 20 20 20 20 20 20 20 | ..... | 00000650 20 20 5b 4f 50 54 20 70 61 73 73 25 0d 02 da 1d | [OPT pass%....| 00000660 20 20 20 20 20 20 20 20 20 20 20 20 4c 44 52 20 | LDR | 00000670 20 20 52 30 2c 76 61 72 25 0d 02 e4 1c 20 20 20 | R0,var%.... | 00000680 20 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 52 | CMP R| 00000690 30 2c 23 79 25 0d 02 ee 1e 20 20 20 20 20 20 20 |0,#y%.... | 000006a0 20 20 20 20 20 53 55 42 47 54 20 52 30 2c 52 30 | SUBGT R0,R0| 000006b0 2c 23 31 0d 02 f8 1d 20 20 20 20 20 20 20 20 20 |,#1.... | 000006c0 20 20 20 53 54 52 20 20 20 52 30 2c 76 61 72 25 | STR R0,var%| 000006d0 0d 03 02 46 20 20 20 20 20 20 20 20 20 20 20 20 |...F | 000006e0 41 44 44 20 20 20 52 31 2c 52 31 32 2c 52 30 2c |ADD R1,R12,R0,| 000006f0 4c 53 4c 23 36 20 20 3b 20 72 31 3d 73 63 72 65 |LSL#6 ; r1=scre| 00000700 65 6e 20 61 64 64 72 65 73 73 2b 28 79 5f 70 6f |en address+(y_po| 00000710 73 2a 33 32 30 29 0d 03 0c 24 20 20 20 20 20 20 |s*320)...$ | 00000720 20 20 20 20 20 20 41 44 44 20 20 20 52 31 2c 52 | ADD R1,R| 00000730 31 2c 52 30 2c 4c 53 4c 23 38 0d 03 16 1f 20 20 |1,R0,LSL#8.... | 00000740 20 20 20 20 20 20 20 20 20 20 41 44 44 20 20 20 | ADD | 00000750 52 31 2c 52 31 2c 23 78 25 0d 03 20 44 20 20 20 |R1,R1,#x%.. D | 00000760 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 52 | MOV R| 00000770 32 2c 23 68 65 69 67 68 74 25 20 20 20 20 20 20 |2,#height% | 00000780 3b 20 72 32 3d 68 65 69 67 68 74 20 6f 66 20 6c |; r2=height of l| 00000790 6f 67 6f 20 69 6e 20 70 69 78 65 6c 73 0d 03 2a |ogo in pixels..*| 000007a0 10 20 20 20 20 20 20 20 20 20 20 20 20 0d 03 34 |. ..4| 000007b0 42 20 20 20 20 20 20 20 20 20 20 20 20 41 44 52 |B ADR| 000007c0 20 20 20 52 30 2c 73 70 72 69 74 65 73 25 20 20 | R0,sprites% | 000007d0 20 20 20 20 3b 20 72 30 3d 61 64 64 72 65 73 73 | ; r0=address| 000007e0 20 6f 66 20 6c 6f 67 6f 20 73 70 72 69 74 65 0d | of logo sprite.| 000007f0 03 3e 35 2e 73 70 72 69 74 65 5f 31 20 20 20 a4 |.>5.sprite_1 .| 00000800 66 61 73 74 5f 6c 69 6e 65 28 77 69 64 74 68 25 |fast_line(width%| 00000810 29 20 20 20 20 3b 20 70 6c 6f 74 20 6f 6e 65 20 |) ; plot one | 00000820 6c 69 6e 65 0d 03 48 45 20 20 20 20 20 20 20 20 |line..HE | 00000830 20 20 20 20 41 44 44 20 20 20 52 31 2c 52 31 2c | ADD R1,R1,| 00000840 23 28 33 32 30 2d 77 69 64 74 68 25 29 20 3b 20 |#(320-width%) ; | 00000850 6d 6f 76 65 20 73 63 72 20 70 6f 73 20 74 6f 20 |move scr pos to | 00000860 6e 65 78 74 20 6c 69 6e 65 0d 03 52 42 20 20 20 |next line..RB | 00000870 20 20 20 20 20 20 20 20 20 53 55 42 53 20 20 52 | SUBS R| 00000880 32 2c 52 32 2c 23 31 20 20 20 20 20 20 20 20 20 |2,R2,#1 | 00000890 3b 20 63 68 65 63 6b 20 69 66 20 61 6e 6f 74 68 |; check if anoth| 000008a0 65 72 20 72 6f 77 20 6c 65 66 74 0d 03 5c 41 20 |er row left..\A | 000008b0 20 20 20 20 20 20 20 20 20 20 20 42 4e 45 20 20 | BNE | 000008c0 20 73 70 72 69 74 65 5f 31 20 20 20 20 20 20 20 | sprite_1 | 000008d0 20 20 3b 20 69 66 20 73 6f 2c 20 67 6f 20 74 6f | ; if so, go to| 000008e0 20 27 61 75 5f 6c 6f 67 6f 5f 31 27 0d 03 66 2d | 'au_logo_1'..f-| 000008f0 2e 73 70 72 69 74 65 5f 65 6e 64 20 4c 44 4d 46 |.sprite_end LDMF| 00000900 44 20 52 31 33 21 2c 7b 52 30 2d 52 31 31 2c 50 |D R13!,{R0-R11,P| 00000910 43 7d 20 3b 20 65 78 69 74 0d 03 70 04 0d 03 7a |C} ; exit..p...z| 00000920 04 0d 03 84 1e 2e 76 61 72 25 20 20 20 20 20 20 |......var% | 00000930 20 45 51 55 44 20 20 73 74 61 72 74 5f 79 25 0d | EQUD start_y%.| 00000940 03 8e 04 0d 03 98 44 2e 73 70 72 69 74 65 73 25 |......D.sprites%| 00000950 20 20 20 a4 61 72 72 61 79 28 73 70 72 5f 6c 65 | .array(spr_le| 00000960 6e 25 29 20 20 20 20 20 20 3b 20 61 72 72 61 79 |n%) ; array| 00000970 20 63 6f 6e 74 61 69 6e 69 6e 67 20 6c 6f 67 6f | containing logo| 00000980 20 73 70 72 69 74 65 0d 03 a2 04 0d 03 ac 04 0d | sprite.........| 00000990 03 b6 04 0d 03 c0 09 20 20 20 20 5d 0d 03 ca 07 |....... ]....| 000009a0 20 20 ed 0d 03 d4 05 e1 0d 03 de 04 0d 03 e8 04 | ..............| 000009b0 0d 03 f2 04 0d 03 fc 13 dd 20 a4 61 72 72 61 79 |......... .array| 000009c0 28 73 69 7a 65 25 29 0d 04 06 11 20 20 50 25 20 |(size%).... P% | 000009d0 2b 3d 20 73 69 7a 65 25 0d 04 10 07 3d 20 30 0d |+= size%....= 0.| 000009e0 04 1a 04 0d 04 24 04 0d 04 2e 04 0d 04 38 18 dd |.....$.......8..| 000009f0 20 a4 66 61 73 74 5f 6c 69 6e 65 28 77 69 64 74 | .fast_line(widt| 00000a00 68 25 29 0d 04 42 4e 20 20 e7 20 28 77 69 64 74 |h%)..BN . (widt| 00000a10 68 25 20 83 20 34 29 20 3c 3e 20 30 20 8c 20 f1 |h% . 4) <> 0 . .| 00000a20 20 6d 6f 64 75 6c 65 24 22 3a 20 53 70 72 69 74 | module$": Sprit| 00000a30 65 20 77 69 64 74 68 20 6d 75 73 74 20 62 65 20 |e width must be | 00000a40 64 69 76 69 73 61 62 6c 65 20 62 79 20 34 22 3a |divisable by 4":| 00000a50 e0 0d 04 4c 06 20 20 0d 04 56 11 20 20 c8 95 20 |...L. ..V. .. | 00000a60 77 69 64 74 68 25 3e 30 0d 04 60 06 20 20 0d 04 |width%>0..`. ..| 00000a70 6a 13 20 20 20 20 c8 8e 20 77 69 64 74 68 25 20 |j. .. width% | 00000a80 ca 0d 04 74 0d 20 20 20 20 20 20 c9 20 34 0d 04 |...t. . 4..| 00000a90 7e 17 20 20 20 20 20 20 20 20 5b 20 4f 50 54 20 |~. [ OPT | 00000aa0 70 61 73 73 25 0d 04 88 1e 20 20 20 20 20 20 20 |pass%.... | 00000ab0 20 20 20 4c 44 52 20 20 20 52 33 2c 5b 52 30 5d | LDR R3,[R0]| 00000ac0 2c 23 34 0d 04 92 1e 20 20 20 20 20 20 20 20 20 |,#4.... | 00000ad0 20 53 54 52 20 20 20 52 33 2c 5b 52 31 5d 2c 23 | STR R3,[R1],#| 00000ae0 34 0d 04 9c 0d 20 20 20 20 20 20 20 20 5d 0d 04 |4.... ]..| 00000af0 a6 0d 20 20 20 20 20 20 c9 20 38 0d 04 b0 17 20 |.. . 8.... | 00000b00 20 20 20 20 20 20 20 5b 20 4f 50 54 20 70 61 73 | [ OPT pas| 00000b10 73 25 0d 04 ba 1f 20 20 20 20 20 20 20 20 20 20 |s%.... | 00000b20 4c 44 4d 49 41 20 52 30 21 2c 7b 52 33 2d 52 34 |LDMIA R0!,{R3-R4| 00000b30 7d 0d 04 c4 1f 20 20 20 20 20 20 20 20 20 20 53 |}.... S| 00000b40 54 4d 49 41 20 52 31 21 2c 7b 52 33 2d 52 34 7d |TMIA R1!,{R3-R4}| 00000b50 0d 04 ce 0d 20 20 20 20 20 20 20 20 5d 0d 04 d8 |.... ]...| 00000b60 0e 20 20 20 20 20 20 c9 20 31 32 0d 04 e2 17 20 |. . 12.... | 00000b70 20 20 20 20 20 20 20 5b 20 4f 50 54 20 70 61 73 | [ OPT pas| 00000b80 73 25 0d 04 ec 1f 20 20 20 20 20 20 20 20 20 20 |s%.... | 00000b90 4c 44 4d 49 41 20 52 30 21 2c 7b 52 33 2d 52 35 |LDMIA R0!,{R3-R5| 00000ba0 7d 0d 04 f6 1f 20 20 20 20 20 20 20 20 20 20 53 |}.... S| 00000bb0 54 4d 49 41 20 52 31 21 2c 7b 52 33 2d 52 35 7d |TMIA R1!,{R3-R5}| 00000bc0 0d 05 00 0d 20 20 20 20 20 20 20 20 5d 0d 05 0a |.... ]...| 00000bd0 0e 20 20 20 20 20 20 c9 20 31 36 0d 05 14 17 20 |. . 16.... | 00000be0 20 20 20 20 20 20 20 5b 20 4f 50 54 20 70 61 73 | [ OPT pas| 00000bf0 73 25 0d 05 1e 1f 20 20 20 20 20 20 20 20 20 20 |s%.... | 00000c00 4c 44 4d 49 41 20 52 30 21 2c 7b 52 33 2d 52 36 |LDMIA R0!,{R3-R6| 00000c10 7d 0d 05 28 1f 20 20 20 20 20 20 20 20 20 20 53 |}..(. S| 00000c20 54 4d 49 41 20 52 31 21 2c 7b 52 33 2d 52 36 7d |TMIA R1!,{R3-R6}| 00000c30 0d 05 32 0d 20 20 20 20 20 20 20 20 5d 0d 05 3c |..2. ]..<| 00000c40 0e 20 20 20 20 20 20 c9 20 32 30 0d 05 46 17 20 |. . 20..F. | 00000c50 20 20 20 20 20 20 20 5b 20 4f 50 54 20 70 61 73 | [ OPT pas| 00000c60 73 25 0d 05 50 1f 20 20 20 20 20 20 20 20 20 20 |s%..P. | 00000c70 4c 44 4d 49 41 20 52 30 21 2c 7b 52 33 2d 52 37 |LDMIA R0!,{R3-R7| 00000c80 7d 0d 05 5a 1f 20 20 20 20 20 20 20 20 20 20 53 |}..Z. S| 00000c90 54 4d 49 41 20 52 31 21 2c 7b 52 33 2d 52 37 7d |TMIA R1!,{R3-R7}| 00000ca0 0d 05 64 0d 20 20 20 20 20 20 20 20 5d 0d 05 6e |..d. ]..n| 00000cb0 0e 20 20 20 20 20 20 c9 20 32 34 0d 05 78 17 20 |. . 24..x. | 00000cc0 20 20 20 20 20 20 20 5b 20 4f 50 54 20 70 61 73 | [ OPT pas| 00000cd0 73 25 0d 05 82 1f 20 20 20 20 20 20 20 20 20 20 |s%.... | 00000ce0 4c 44 4d 49 41 20 52 30 21 2c 7b 52 33 2d 52 38 |LDMIA R0!,{R3-R8| 00000cf0 7d 0d 05 8c 1f 20 20 20 20 20 20 20 20 20 20 53 |}.... S| 00000d00 54 4d 49 41 20 52 31 21 2c 7b 52 33 2d 52 38 7d |TMIA R1!,{R3-R8}| 00000d10 0d 05 96 0d 20 20 20 20 20 20 20 20 5d 0d 05 a0 |.... ]...| 00000d20 0e 20 20 20 20 20 20 c9 20 32 38 0d 05 aa 17 20 |. . 28.... | 00000d30 20 20 20 20 20 20 20 5b 20 4f 50 54 20 70 61 73 | [ OPT pas| 00000d40 73 25 0d 05 b4 1f 20 20 20 20 20 20 20 20 20 20 |s%.... | 00000d50 4c 44 4d 49 41 20 52 30 21 2c 7b 52 33 2d 52 39 |LDMIA R0!,{R3-R9| 00000d60 7d 0d 05 be 1f 20 20 20 20 20 20 20 20 20 20 53 |}.... S| 00000d70 54 4d 49 41 20 52 31 21 2c 7b 52 33 2d 52 39 7d |TMIA R1!,{R3-R9}| 00000d80 0d 05 c8 0d 20 20 20 20 20 20 20 20 5d 0d 05 d2 |.... ]...| 00000d90 09 20 20 20 20 7f 0d 05 dc 17 20 20 20 20 20 20 |. ..... | 00000da0 20 20 5b 20 4f 50 54 20 70 61 73 73 25 0d 05 e6 | [ OPT pass%...| 00000db0 20 20 20 20 20 20 20 20 20 20 20 4c 44 4d 49 41 | LDMIA| 00000dc0 20 52 30 21 2c 7b 52 33 2d 52 31 30 7d 0d 05 f0 | R0!,{R3-R10}...| 00000dd0 20 20 20 20 20 20 20 20 20 20 20 53 54 4d 49 41 | STMIA| 00000de0 20 52 31 21 2c 7b 52 33 2d 52 31 30 7d 0d 05 fa | R1!,{R3-R10}...| 00000df0 0d 20 20 20 20 20 20 20 20 5d 0d 06 04 09 20 20 |. ].... | 00000e00 20 20 cb 0d 06 0e 08 20 20 20 20 0d 06 18 37 20 | ..... ...7 | 00000e10 20 20 20 e7 20 77 69 64 74 68 25 20 3e 20 33 32 | . width% > 32| 00000e20 20 8c 20 77 69 64 74 68 25 20 2d 3d 20 33 32 20 | . width% -= 32 | 00000e30 8b 20 77 69 64 74 68 25 20 2d 3d 20 77 69 64 74 |. width% -= widt| 00000e40 68 25 0d 06 22 08 20 20 20 20 0d 06 2c 07 20 20 |h%..". ..,. | 00000e50 ce 0d 06 36 04 0d 06 40 07 3d 20 30 0d ff |...6...@.= 0..| 00000e5e