Home » Archimedes archive » Acorn User » AU 1993-05.adf » !GameDes/Files/Rocky
!GameDes/Files/Rocky
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-05.adf |
Filename: | !GameDes/Files/Rocky |
Read OK: | ✔ |
File size: | 89F0 bytes |
Load address: | FFFFFB44 |
Exec address: | 7B5430ED |
Duplicates
There is 1 duplicate copy of this file in the archive:
- Archimedes archive » Acorn User » AU 1993-05.adf » !GameDes/Files/Rocky
- Archimedes archive » Acorn User » AU 1993-05 (2).adf » !GameDes/Files/Rocky
File contents
10REM >Rocky 20REM by Antony Bruce Lytis 30REM for 32 bit machines 40REM (c) BAU May 1993 50: 60MODE 9+128 70MODE 9 80OFF 90PRINT"Loading..." 100PROCinit 110PROCload_game("Rocky") 120PROCass 130PROCset_palette 140high_score=0 150REPEAT 160 FOR i%=1 TO 2 170 SYS "OS_Byte",112,i% 180 CLS 190 NEXT 200 SYS "OS_Byte",113,2 210 PROCcentre(3,"Rocky Trade",15) 220 PROCcentre(7,"Keys:",11) 230 PROCcentre(10,"Up - A ",10) 240 PROCcentre(12,"Down - Z ",10) 250 PROCcentre(14,"Fire - RETURN",10) 260 PROCcentre(16,"Bomb - TAB ",10) 270 PROCcentre(18,"Thrust - SHIFT ",10) 280 PROCcentre(20,"Brake - SPACE ",10) 290 PROCcentre(24,"High score: "+STR$high_score,11) 300 PROCcentre(29,"Press SPACE to start",1) 310 *FX 15 320 REPEAT UNTIL GET=32 330 lives%=3 340 PROCnew_game 350 COLOUR 1 360 REPEAT 370 PROCnew_round 380 result=USR(game) 390 IF result=0 lives%-=1 400 IF result=1 THEN 410 *FX 112,1 420 *FX 113,1 430 CLS 440 PROCcentre(8,"Well done!",10) 450 PROCcentre(12,"You completed your mission",15) 460 PROCcentre(14,"with flying colours",15) 470 PROCcentre(20,"Press SPACE to try again",1) 480 REPEAT UNTIL GET=32 490 ENDIF 500 UNTIL result=-1 OR lives%=0 510 IF lives%=0 AND !score>high_score high_score=!score 520UNTIL FALSE 530END 540: 550DEF PROCset_palette 560SYS "OS_SpriteOp",&118,scenery,"palette" TO ,,pal_spr 570FOR i=0 TO 15 580 a=pal_spr+44+8*i 590 COLOUR i,a?1,a?2,a?3 600NEXT 610ENDPROC 620: 630DEF PROCcentre(y%,t$,c%) 640COLOUR c% 650PRINTTAB(20-LEN(t$)/2,y%);t$ 660ENDPROC 670: 680DEF PROCinit 690DIM land 64*1024,scenery 64*1024,scene_spr 4*256,temp% &100 700!scenery=64*1024 710scenery!4=0 720scenery!8=16 730scenery!12=16 740max_energy=120 750ENDPROC 760: 770DEF PROCload_game(game$) 780LOCAL in% 790in%=OPENIN("Games."+game$) 800WHILE NOT EOF#in% 810 s$=FNstrip(GET$#in%) 820 i%=INSTR(s$,":") 830 IF i%>0 THEN 840 r$=FNstrip(MID$(s$,i%+1)) 850 CASE LEFT$(s$,i%-1) OF 860 WHEN "Maps": 870 PROCload_map(r$) 880 WHEN "Sprites": 890 PROCload_sprites(r$) 900 WHEN "Movement": 910 PROCload_movement(r$) 920 WHEN "Patterns": 930 PROCload_patterns(r$) 940 WHEN "Layout": 950 PROCload_layout(r$) 960 ENDCASE 970 ENDIF 980ENDWHILE 990CLOSE#in% 1000ENDPROC 1010: 1020DEF PROCload_sprites(file$) 1030SYS "OS_File",5,"Sprites."+file$ TO ,,,,spr_len% 1040spr_len%=5*spr_len% 1050DIM spr% spr_len% 1060!spr%=spr_len% 1070spr%!4=0 1080spr%!8=16 1090spr%!12=16 1100SYS "OS_SpriteOp",&10A,spr%,"Sprites."+file$ 1110SYS "OS_SpriteOp",&108,spr% TO ,,,sprites% 1120DIM spr_name$(sprites%-1) 1130FOR i%=0 TO sprites%-1 1140 SYS "OS_SpriteOp",&10D,spr%,temp%,&100,i%+1 TO ,,,j% 1150 temp%?j%=13 1160 spr_name$(i%)=$temp% 1170NEXT 1180FOR i%=0 TO sprites%-1 1190 IF spr_name$(i%)<>"!" AND LEFT$(spr_name$(i%),4)<>"fade" THEN 1200 IF LEN(spr_name$(i%))=12 root$=LEFT$(spr_name$(i%),11) ELSE root$=spr_name$(i%) 1210 SYS "OS_SpriteOp",&11A,spr%,spr_name$(i%),root$+"a" 1220 FOR j%=1 TO 3 1230 shift$=root$+CHR$(ASC"a"+j%) 1240 SYS "OS_SpriteOp",&11B,spr%,root$+"a",shift$ 1250 FOR k%=1 TO 2*j% 1260 SYS "OS_SpriteOp",&12D,spr%,shift$,0 1270 NEXT 1280 NEXT 1290 FOR j%=0 TO 3 1300 shift$=root$+CHR$(ASC"a"+j%) 1310 REPEAT 1320 SYS "OS_SpriteOp",&128,spr%,shift$ TO ,,,w%,h% 1330 IF w% MOD 8<>0 SYS "OS_SpriteOp",&12D,spr%,shift$,w% 1340 UNTIL w% MOD 8=0 1350 NEXT 1360 ENDIF 1370NEXT 1380fade_stages%=12 1390DIM fade_tab 4*fade_stages% 1400FOR i%=0 TO fade_stages%-1 1410 SYS "OS_SpriteOp",&118,spr%,"fade"+STR$(i%+1) TO ,,fade_tab!(4*i%) 1420NEXT 1430ENDPROC 1440: 1450DEF PROCload_movement(file$) 1460LOCAL in% 1470movements%=0 1480DIM move_name$(255),move_dat% &1000,move_ptr% &400,move_sprite% &1000 1490in%=OPENIN("Movement."+file$) 1500p%=move_dat% 1510WHILE NOT EOF#in% 1520 s$=FNstrip(GET$#in%) 1530 IF LEFT$(s$,1)<>";" AND s$<>"" THEN 1540 par1$=FNget_par(s$) 1550 par2$=FNget_par(s$) 1560 par3$=FNget_par(s$) 1570 IF par3$="" THEN par3$=par2$:par2$=par1$ 1580 move_name$(movements%)=par1$ 1590 FOR i%=0 TO 3 1600 SYS "OS_SpriteOp",&118,spr%,par2$+CHR$(ASC"a"+i%) TO ,,sa% 1610 move_sprite%!(16*movements%+4*i%)=sa% 1620 NEXT 1630 move_ptr%!(4*movements%)=p% 1640 par3$=MID$(par3$,3) 1650 WHILE par3$<>"" 1660 a%=ASC(par3$) 1670 IF a%>96 THEN ?p%=127-(a%-96) ELSE ?p%=127+(a%-64) 1680 p%+=1 1690 par3$=MID$(par3$,2) 1700 ENDWHILE 1710 p%?0=&FF 1720 p%?1=&FF 1730 p%+=2 1740 movements%+=1 1750 ENDIF 1760ENDWHILE 1770CLOSE#in% 1780ENDPROC 1790: 1800DEF FNidentify_movement(move$) 1810LOCAL i%,found% 1820found%=FALSE 1830i%=0 1840IF move$="(LOOP)" THEN =-2 1850WHILE i%<movements% AND NOT found% 1860 IF move_name$(i%)=move$ THEN found%=TRUE ELSE i%+=1 1870ENDWHILE 1880IF NOT found% THEN ERROR 0,"Don't know movement '"+move$+"'" 1890=i% 1900: 1910DEF FNidentify_pattern(pat$) 1920LOCAL i%,found% 1930found%=FALSE 1940i%=0 1950WHILE i%<patterns% AND NOT found% 1960 IF pat_name$(i%)=pat$ THEN found%=TRUE ELSE i%+=1 1970ENDWHILE 1980IF NOT found% THEN ERROR 0,"Don't know pattern '"+pat$+"'" 1990=i% 2000: 2010DEF FNget_par(RETURN s$) 2020LOCAL p$,i% 2030s$=FNstrip(s$) 2040i%=INSTR(s$," ") 2050IF i%=0 THEN p$=FNstrip(s$):s$="" ELSE p$=FNstrip(LEFT$(s$,i%-1)):s$=FNstrip(MID$(s$,i%+1)) 2060=p$ 2070: 2080DEF PROCload_layout(file$) 2090LOCAL in% 2100in%=OPENIN("Layout."+file$) 2110m%=-1 2120max_pop%=1024 2130DIM layout_pat%(255),pop_dat% 24*max_pop%,lay_par%(5) 2140pop%=0 2150line%=0 2160bad$="" 2170WHILE NOT EOF#in% AND bad$="" 2180 s$=FNstrip(GET$#in%) 2190 CASE s$ OF 2200 WHEN "Patterns:":m%=0 2210 WHEN "Layout:":m%=1 2220 OTHERWISE 2230 IF s$<>"" THEN 2240 CASE m% OF 2250 WHEN 0: 2260 i%=INSTR(s$," ") 2270 layout_pat%(VAL(MID$(s$,i%+1)))=FNidentify_pattern(FNstrip(LEFT$(s$,i%-1))) 2280 WHEN 1: 2290 FOR i%=0 TO 5 2300 IF i%=3 i%+=1 2310 lay_par%(i%)=FNget_num_par(s$) 2320 NEXT 2330 IF lay_par%(2)=-1 bad$="not enough parameters":bad_line%=line% 2340 lay_par%(0)=layout_pat%(lay_par%(0)) 2350 lay_par%(1)=lay_par%(1) DIV 2 2360 lay_par%(2)=240-16-lay_par%(2) 2370 FOR i%=0 TO 5 2380 pop_dat%!(24*pop%+4*i%)=lay_par%(i%) 2390 NEXT 2400 pop%+=1 2410 OTHERWISE 2420 IF LEFT$(s$,1)<>";" AND s$<>"" bad$="syntax error":bad_line%=line% 2430 ENDCASE 2440 ENDIF 2450 ENDCASE 2460 line%+=1 2470ENDWHILE 2480CLOSE#in% 2490IF bad$<>"" ERROR 0,"Error in layout file: "+bad$+" at line "+STR$bad_line% 2500pop_dat%!(24*pop%)=-1 2510ENDPROC 2520: 2530DEF FNget_num_par(RETURN s$) 2540LOCAL n% 2550s$=FNstrip(s$) 2560IF s$="" THEN =-1 2570n%=VAL(s$) 2580s$=MID$(s$,INSTR(s$," ")+1) 2590=n% 2600: 2610DEF PROCload_patterns(file$) 2620LOCAL in% 2630DIM pat_name$(255),pat_dat% &1000,pat_ptr% &400 2640patterns%=0 2650p%=pat_dat% 2660bad$="" 2670in%=OPENIN("Patterns."+file$) 2680line%=0 2690cur_pat%=-1 2700WHILE NOT EOF#in% 2710 s$=GET$#in% 2720 IF LEFT$(s$,1)<>";" AND s$<>"" THEN 2730 IF LEFT$(s$,1)<>" " THEN 2740 IF cur_pat%<>-1 THEN !p%=-1:p%+=4 2750 cur_pat%=patterns% 2760 pat_name$(cur_pat%)=FNget_par(s$) 2770 pat_ptr%!(4*cur_pat%)=p% 2780 patterns%+=1 2790 ENDIF 2800 IF s$<>"" AND patterns%=0 THEN 2810 bad$="syntax error" 2820 bad_line%=line% 2830 ELSE 2840 par1$=FNget_par(s$) 2850 par2$=FNget_par(s$) 2860 par3$=FNget_par(s$) 2870 !p%=FNidentify_movement(par1$) 2880 IF par2$<>"" p%!4=VAL(par2$) ELSE p%!4=-1 2890 IF par3$<>"" p%!8=VAL(par3$) ELSE p%!8=-1 2900 p%+=12 2910 ENDIF 2920 ENDIF 2930 line%+=1 2940ENDWHILE 2950CLOSE#in% 2960IF bad$<>"" ERROR 0,"Error in pattern file: "+bad$+" at line "+STR$bad_line% 2970!p%=-1:p%+=4 2980ENDPROC 2990: 3000DEF PROCload_map(file$) 3010LOCAL in% 3020in%=OPENIN("Maps."+file$) 3030x%=0 3040m%=0 3050FOR i=0 TO 255 3060 scene_spr!(4*i)=-1 3070NEXT 3080WHILE NOT EOF#in% 3090 s$=FNstrip(GET$#in%) 3100 IF s$<>"" THEN 3110 CASE s$ OF 3120 WHEN "Files:":m%=1 3130 WHEN "Used:":m%=2 3140 WHEN "Map:":m%=3 3150 WHEN "Type:":m%=4 3160 OTHERWISE 3170 CASE m% OF 3180 WHEN 1:SYS "OS_SpriteOp",&10B,scenery,"Scenery."+s$ 3190 WHEN 2: 3200 i=EVAL("&"+LEFT$(s$,2)) 3210 s$=FNstrip(MID$(s$,3)) 3220 SYS "OS_SpriteOp",&118,scenery,s$ TO ,,d% 3230 scene_spr!(4*i)=d% 3240 IF s$="blank" THEN 3250 blnk=i 3260 SYS "OS_SpriteOp",&128,scenery,s$ TO ,,,,,,mode 3270 ENDIF 3280 WHEN 3: 3290 dash%=INSTR(s$,"-") 3300 IF dash%>0 THEN 3310 s1$=LEFT$(s$,dash%-1) 3320 s3$=MID$(s$,dash%+1) 3330 s2$=RIGHT$("0"+STR$~blnk,2) 3340 s$=s1$+STRING$(no-LEN(s1$+s3$)/2,s2$)+s3$ 3350 ENDIF 3360 a%=land+no*x% 3370 FOR i=0 TO no-1 3380 a%?i=blnk 3390 NEXT 3400 y%=no-1 3410 WHILE s$<>"" 3420 a%?y%=EVAL("&"+LEFT$(s$,2)) 3430 s$=MID$(s$,3) 3440 y%-=1 3450 ENDWHILE 3460 x%+=1 3470 WHEN 4: 3480 size=VALMID$(s$,2) 3490 IF LEFT$(s$,1)="H" THEN 3500 IF size=32 total_size=224 ELSE total_size=240 3510 ELSE 3520 ERROR 17,"Only horizontal landscapes please!" 3530 ENDIF 3540 no=total_size DIV size 3550 ENDCASE 3560 ENDCASE 3570 ENDIF 3580ENDWHILE 3590SYS "OS_ReadModeVariable",mode,6 TO ,,bytes_per_row 3600screen_size=total_size*bytes_per_row 3610IF mode=9 sprite_width=size DIV 2 ELSE sprite_width=size 3620land_ext=x%*sprite_width 3630FOR i=0 TO 255 3640 IF scene_spr!(4*i)=-1 THEN scene_spr!(4*i)=blnk 3650NEXT 3660CLOSE#in% 3670ENDPROC 3680: 3690DEF FNstrip(s$) 3700WHILE LEFT$(s$,1)=" " 3710 s$=MID$(s$,2) 3720ENDWHILE 3730WHILE RIGHT$(s$)=" " 3740 s$=LEFT$(s$) 3750ENDWHILE 3760=s$ 3770: 3780DEF PROCass 3790dat_next=0 3800dat_type=4 3810dat_x=8 3820dat_y=12 3830dat_go=16 3840dat_pat_pc=20 3850dat_mov_pc=24 3860dat_active=28 3870dat_pat_count=32 3880dat_class=36 3890dat_spr=40 3900dat_size=44 3910max_aliens=96 3920DIM code% &4000+4*screen_size 3930sp=13:link=14:pc=15 3940FOR pass%=0 TO 2 STEP 2 3950P%=code% 3960[OPT pass% 3970.game STMFD (sp)!,{r0-r12,link} 3980 LDR r0,Apop_dat 3990 STR r0,pop_next 4000 MOV r9,#0 4010 MOV r10,#0 4020 STR r10,life_lost_count 4030 STR r10,finished_count 4040 MOV r11,#1 4050.game_loop 4060 BL swap_banks 4070 BL copy_bank 4080 LDR r0,finished_count 4090 CMP r0,#0 4100 BEQ not_finished 4110 SUBS r0,r0,#1 4120 STR r0,finished_count 4130 BNE not_finished 4140 LDMFD (sp)!,{r0-r12,link} 4150 MOV r0,#1 4160 MOV pc,link 4170.not_finished 4180 LDR r0,life_lost_count 4190 CMP r0,#0 4200 BEQ not_life_lost 4210 SUBS r0,r0,#1 4220 STR r0,life_lost_count 4230 BNE nearly_over 4240 LDMFD (sp)!,{r0-r12,link} 4250 MOV r0,#0 4260 MOV pc,link 4270.not_life_lost 4280 BL scroll_on 4290.nearly_over 4300 BL do_aliens 4310 BL back_collide 4320 BL fore_collide 4330 BL show_aliens 4340 LDR r0,fire_count 4350 CMP r0,#0 4360 SUBGT r0,r0,#1 4370 STRGT r0,fire_count 4380 LDR r0,energy 4390 TST r10,#31 4400 BNE no_drain 4410 SUBS r0,r0,#1 4420 MOVMI r0,#0 4430 STR r0,energy 4440.no_drain 4450 BL show_energy 4460 BL show_score 4470 SWI "XOS_ReadEscapeState" 4480 BCC game_loop 4490 MOV r0,#126 4500 SWI "XOS_Byte" 4510 LDMFD (sp)!,{r0-r12,link} 4520 MVN r0,#0 4530 MOV pc,link 4540 4550.life_lost_count 4560 DCD 0 4570.finished_count 4580 DCD 0 4590 4600.bomb_key 4610 DCD 0 4620.fire_count 4630 DCD 0 4640 4650.do_aliens 4660 STMFD (sp)!,{r0-r12,link} 4670 LDR r6,pop_next 4680 ADD r5,r10,#160+16 4690.check_for_new_entries 4700 LDMIA r6,{r0-r3} 4710 CMP r0,#0 4720 BLT done_new_entries 4730 CMP r1,r5 4740 BGE done_new_entries 4750 BL add_alien_to_list 4760 ADD r6,r6,#24 4770 B check_for_new_entries 4780.done_new_entries 4790 STR r6,pop_next 4800 ADR r7,list 4810 LDR r8,list 4820.do_alien_loop 4830 CMP r8,#0 4840 LDMEQFD (sp)!,{r0-r12,pc} 4850 4860 LDR r0,[r8,#dat_active] 4870 CMP r0,#0 4880 BLT alien_is_dying 4890 BGT alien_is_active 4900 LDR r0,[r8,#dat_go] 4910 CMP r10,r0 4920 BLT alien_is_active 4930 MOV r0,#1 4940 STR r0,[r8,#dat_active] 4950 B alien_is_active 4960.alien_is_dying 4970 ADDS r0,r0,#1 4980 STR r0,[r8,#dat_active] 4990 BEQ alien_is_off 5000 B do_next_alien 5010.alien_is_active 5020 LDR r2,[r8,#dat_x] 5030 LDR r3,[r8,#dat_y] 5040 SUB r14,r10,#32 5050 CMP r2,r14 5060 BLT alien_is_off 5070 ADD r14,r10,#160+48 5080 CMP r2,r14 5090 BGT alien_is_off 5100 CMP r3,#256+16 5110 BGT alien_is_off 5120 CMN r3,#15 5130 BLT alien_is_off 5140 5150 LDR r4,[r8,#dat_type] 5160 CMP r4,#FNidentify_pattern("ship") 5170 BNE not_ship 5180 MOV r1,#256-1 5190 BL inkey 5200 ADDEQ r2,r2,#2 5210 SUBNE r2,r2,#1 5220 MOV r1,#256-99 5230 BL inkey 5240 SUBEQ r2,r2,#1 5250 LDR r0,energy 5260 CMP r0,#0 5270 ADDLE r3,r3,#2 5280 BLE drop_from_sky 5290 MOV r1,#256-66 5300 BL inkey 5310 SUBEQ r3,r3,#2 5320 MOV r1,#256-98 5330 BL inkey 5340 ADDEQ r3,r3,#2 5350.drop_from_sky 5360 ADD r14,r10,#120 5370 CMP r2,r14 5380 MOVGT r2,r14 5390 CMP r2,r10 5400 MOVLT r2,r10 5410 CMP r3,#0 5420 MOVLT r3,#0 5430 CMP r3,#240-11 5440 MOVGT r3,#240-11 5450 ADD r14,r8,#dat_x 5460 STMIA r14,{r2,r3} 5470 LDR r1,fire_count 5480 CMP r1,#0 5490 BNE dont_fire 5500 MOV r1,#256-74 5510 BL inkey 5520 BNE dont_fire 5530 STMFD (sp)!,{r2-r3} 5540 MOV r0,#FNidentify_pattern("bullet") 5550 ADD r1,r2,#18 5560 ADD r2,r3,#5 5570 MOV r3,#0 5580 BL add_alien_to_list 5590 MOV r1,#10 5600 STR r1,fire_count 5610 LDMFD (sp)!,{r2-r3} 5620.dont_fire 5630 MOV r1,#256-97 5640 BL inkey 5650 MOVEQ r0,#1 5660 MOVNE r0,#0 5670 LDR r14,bomb_key 5680 CMP r0,r14 5690 BEQ dont_drop 5700 STR r0,bomb_key 5710 CMP r0,#1 5720 BNE dont_drop 5730 MOV r0,#FNidentify_pattern("bomb") 5740 ADD r1,r2,#8 5750 ADD r2,r3,#8 5760 MOV r3,#0 5770 BL add_alien_to_list 5780.dont_drop 5790 B apply_pat 5800.not_ship 5810.apply_pat 5820 LDR r1,Apat_ptr 5830 LDR r4,[r1,r4,LSL #2] 5840 LDR r3,[r8,#dat_pat_pc] 5850 CMP r3,#0 5860 BLT next_mov 5870 LDR r0,[r8,#dat_pat_count] 5880 CMP r0,#0 5890 BNE not_next_mov 5900.next_mov 5910 ADD r3,r3,#12 5920.do_pat_loop 5930 ADD r14,r4,r3 5940 LDR r0,[r14,#0] 5950 CMN r0,#1 5960 BEQ alien_is_off 5970 MOVLT r3,#0 5980 BLT do_pat_loop 5990 LDR r0,[r14,#4] 6000 STR r0,[r8,#dat_pat_count] 6010.not_next_mov 6020 STR r3,[r8,#dat_pat_pc] 6030 LDR r5,[r4,r3] 6040 CMP r5,#0 6050 BLT alien_is_off 6060 6070 LDR r1,Amov_ptr 6080 LDR r1,[r1,r5,LSL #2] 6090 LDR r2,[r8,#dat_mov_pc] 6100 LDR r3,[r8,#dat_x] 6110 LDR r4,[r8,#dat_y] 6120 6130 LDR r0,[r8,#dat_active] 6140 CMP r0,#0 6150 BEQ skip_alien_move 6160 6170.cycle_move 6180 LDRB r0,[r1,r2] 6190 CMP r0,#&FF 6200 BNE not_end_cycle 6210 LDR r0,[r8,#dat_pat_count] 6220 CMP r0,#0 6230 SUBGE r0,r0,#1 6240 STRGE r0,[r8,#dat_pat_count] 6250 MOV r2,#0 6260 B cycle_move 6270.not_end_cycle 6280 ADD r3,r3,r0 6290 SUB r3,r3,#&7F 6300 ADD r2,r2,#1 6310 LDRB r0,[r1,r2] 6320 SUB r4,r4,r0 6330 ADD r4,r4,#&7F 6340 ADD r2,r2,#1 6350 STR r2,[r8,#dat_mov_pc] 6360 STR r3,[r8,#dat_x] 6370 STR r4,[r8,#dat_y] 6380.skip_alien_move 6390 LDR r0,Amov_sprite 6400 ADD r0,r0,r5,LSL #4 6410 SUB r14,r3,r10 6420 AND r14,r14,#3 6430 LDR r0,[r0,r14,LSL #2] 6440 STR r0,[r8,#dat_spr] 6450.do_next_alien 6460 MOV r7,r8 6470 LDR r8,[r8,#dat_next] 6480 B do_alien_loop 6490.alien_is_off 6500 LDR r6,[r8,#dat_next] 6510 STR r6,[r7,#dat_next] 6520 LDR r5,free 6530 STR r5,[r8,#dat_next] 6540 STR r8,free 6550 MOV r8,r6 6560 B do_alien_loop 6570 6580.show_aliens 6590 STMFD (sp)!,{r0-r12,link} 6600 ADR r8,list 6610.show_aliens_loop 6620 LDR r8,[r8,#dat_next] 6630 CMP r8,#0 6640 LDMEQFD (sp)!,{r0-r12,pc} 6650 LDR r0,[r8,#dat_active] 6660 CMP r0,#0 6670 BGE show_alive 6680 ADD r3,r0,#fade_stages% 6690 LDR r0,[r8,#dat_spr] 6700 CMP r0,#0 6710 LDRNE r1,[r8,#dat_x] 6720 SUBNE r1,r1,r10 6730 LDRNE r2,[r8,#dat_y] 6740 BLNE show_sprite_dying 6750 B show_aliens_loop 6760.show_alive 6770 LDR r0,[r8,#dat_spr] 6780 CMP r0,#0 6790 LDRNE r1,[r8,#dat_x] 6800 SUBNE r1,r1,r10 6810 LDRNE r2,[r8,#dat_y] 6820 BLNE show_sprite 6830 B show_aliens_loop 6840 6850.back_collide 6860 STMFD (sp)!,{r0-r12,link} 6870 ADR r8,list 6880.back_collide_loop 6890 LDR r8,[r8,#dat_next] 6900 CMP r8,#0 6910 LDMEQFD (sp)!,{r0-r12,pc} 6920 LDR r0,[r8,#dat_active] 6930 CMP r0,#0 6940 BLE back_collide_loop 6950 LDR r0,[r8,#dat_class] 6960 CMP r0,#1 6970 CMPNE r0,#2 6980 BNE back_collide_loop 6990 LDR r0,[r8,#dat_spr] 7000 CMP r0,#0 7010 BEQ back_collide_loop 7020 LDR r1,[r8,#dat_x] 7030 SUB r1,r1,r10 7040 LDR r2,[r8,#dat_y] 7050 BL collide_check 7060 BEQ back_collide_loop 7070 LDR r5,[r8,#dat_type] 7080 CMP r5,#FNidentify_pattern("ship") 7090 BNE ship_hasnt_crashed 7100 BL ship_has_crashed 7110 B back_collide_loop 7120.ship_hasnt_crashed 7130 MVN r0,#fade_stages% 7140 STR r0,[r8,#dat_active] 7150 B back_collide_loop 7160 7170.list DCD 0 7180.free DCD 0 7190 7200.ship_has_crashed 7210 STMFD (sp)!,{r0-r12,link} 7220 ADR r8,list 7230.find_ship 7240 LDR r8,[r8,#dat_next] 7250 LDR r0,[r8,#dat_type] 7260 CMP r0,#FNidentify_pattern("ship") 7270 BNE find_ship 7280 MOV r0,#50 7290 STR r0,life_lost_count 7300 LDR r1,[r8,#dat_x] 7310 LDR r2,[r8,#dat_y] 7320 MOV r3,#0 7330 MOV r0,#FNidentify_pattern("shipdead1") 7340 BL add_alien_to_list 7350 MOV r0,#FNidentify_pattern("shipdead2") 7360 BL add_alien_to_list 7370 MOV r0,#FNidentify_pattern("shipdead3") 7380 BL add_alien_to_list 7390 MOV r0,#FNidentify_pattern("shipdead4") 7400 BL add_alien_to_list 7410 MVN r0,#fade_stages% 7420 STR r0,[r8,#dat_active] 7430 LDMFD (sp)!,{r0-r12,pc} 7440 7450.fore_collide 7460 STMFD (sp)!,{r0-r12,link} 7470 ADR r8,list 7480.fore_collide_loop 7490 LDR r8,[r8,#dat_next] 7500 CMP r8,#0 7510 LDMEQFD (sp)!,{r0-r12,pc} 7520 LDR r0,[r8,#dat_class] 7530 CMP r0,#1 7540 BNE fore_collide_loop 7550 LDR r0,[r8,#dat_active] 7560 CMP r0,#0 7570 BLT fore_collide_loop 7580 LDR r14,[r8,#dat_spr] 7590 CMP r14,#0 7600 BEQ fore_collide_loop 7610 ADD r14,r14,#16 7620 LDMIA r14,{r6-r7} 7630 ADD r14,r8,#dat_x 7640 LDMIA r14,{r4,r5} 7650 BIC r4,r4,#3 7660 ADD r6,r6,#1 7670 ADD r6,r4,r6,LSL #2 7680 ADD r7,r7,#1 7690 ADD r7,r5,r7 7700 ADR r9,list 7710.fore_collide_loopb 7720 LDR r9,[r9,#dat_next] 7730 CMP r9,#0 7740 BEQ fore_collide_loop 7750 LDR r0,[r9,#dat_class] 7760 CMP r0,#1 7770 BEQ fore_collide_loopb 7780 BLT not_a_meteor 7790 LDR r0,[r8,#dat_type] 7800 CMP r0,#FNidentify_pattern("bullet") 7810 CMPNE r0,#FNidentify_pattern("bomb") 7820 BEQ fore_collide_loopb 7830.not_a_meteor 7840 LDR r0,[r9,#dat_active] 7850 CMP r0,#0 7860 BLT fore_collide_loopb 7870 LDR r14,[r9,#dat_spr] 7880 CMP r14,#0 7890 BEQ fore_collide_loopb 7900 ADD r14,r14,#16 7910 LDMIA r14,{r2-r3} 7920 ADD r14,r9,#dat_x 7930 LDMIA r14,{r0-r1} 7940 BIC r0,r0,#3 7950 ADD r2,r2,#1 7960 ADD r2,r0,r2,LSL #2 7970 ADD r3,r3,#1 7980 ADD r3,r1,r3 7990 CMP r6,r0 8000 CMPGE r2,r4 8010 CMPGE r7,r1 8020 CMPGE r3,r5 8030 BLT fore_collide_loopb 8040 BL clear_small_screen 8050 STMFD (sp)!,{r4,r5} 8060 SUBS r0,r0,r4 8070 MOVPL r4,#0 8080 RSBMI r4,r0,#0 8090 MOVMI r0,#0 8100 SUBS r1,r1,r5 8110 MOVPL r5,#0 8120 RSBMI r5,r1,#0 8130 MOVMI r1,#0 8140 LDR r2,[r9,#dat_spr] 8150 BL plot_on_small_screen 8160 MOV r0,r4 8170 MOV r1,r5 8180 LDR r2,[r8,#dat_spr] 8190 BL plot_on_small_screen 8200 LDMFD (sp)!,{r4,r5} 8210 BL check_for_overlap 8220 BEQ fore_collide_loopb 8230 MVN r0,#fade_stages% 8240 STR r0,[r8,#dat_active] 8250 STR r0,[r9,#dat_active] 8260 LDR r0,[r8,#dat_type] 8270 CMP r0,#FNidentify_pattern("ship") 8280 BLEQ ship_has_crashed 8290 ADR r10,hit_tab 8300 LDR r0,[r9,#dat_type] 8310 CMP r0,#FNidentify_pattern("base") 8320 MOVEQ r14,#50 8330 STREQ r14,finished_count 8340.find_what_we_hit 8350 LDMIA r10!,{r1-r3} 8360 CMP r1,#0 8370 BLT fore_collide_loop 8380 CMP r1,r0 8390 BNE find_what_we_hit 8400 ADR r14,score 8410 LDMIA r14,{r0,r1} 8420 ADD r0,r0,r2 8430 ADD r1,r1,r3 8440 CMP r1,#max_energy 8450 MOVGT r1,#max_energy 8460 STMIA r14,{r0,r1} 8470 B fore_collide_loop 8480 8490.hit_tab 8500 DCD FNidentify_pattern("fuel") 8510 DCD 10 8520 DCD 20 8530 DCD FNidentify_pattern("dish") 8540 DCD 20 8550 DCD 0 8560 DCD FNidentify_pattern("rocket") 8570 DCD 40 8580 DCD 0 8590 DCD FNidentify_pattern("saucer") 8600 DCD 40 8610 DCD 0 8620 DCD FNidentify_pattern("base") 8630 DCD 1000 8640 DCD 0 8650 DCD -1 8660 8670.show_energy 8680 STMFD (sp)!,{r0-r12,link} 8690 LDR r11,vdu_o 8700 LDR r8,energy 8710 MOV r7,#0 8720 ADD r11,r11,#4 8730 ADD r11,r11,#248<<5 8740 ADD r11,r11,#248<<7 8750.show_energy_loop 8760 MOV r0,#&FF 8770 CMP r7,#40 8780 MOVLT r0,#&BB 8790 CMP r7,#20 8800 MOVLT r0,#&AA 8810 CMP r7,r8 8820 MOVGE r0,#&00 8830 STRB r0,[r11,#160] 8840 STRB r0,[r11,#320] 8850 STRB r0,[r11,#480] 8860 STRB r0,[r11],#1 8870 ADD r7,r7,#1 8880 CMP r7,#max_energy 8890 BLT show_energy_loop 8900 LDMFD (sp)!,{r0-r12,pc} 8910 8920.show_score 8930 STMFD (sp)!,{r0-r3,link} 8940 SUB sp,sp,#8 8950 LDR r0,score 8960 MOV r1,sp 8970 MOV r2,#8 8980 SWI "XOS_ConvertCardinal4" 8990 SUB r1,r1,r0 9000 SWI &100+31 9010 RSB r0,r1,#38 9020 SWI "XOS_WriteC" 9030 SWI &100+31 9040 MOV r0,sp 9050 SWI "XOS_Write0" 9060 ADD sp,sp,#8 9070 LDMFD (sp)!,{r0-r3,pc} 9080 9090.score DCD 0 9100.energy DCD 0 9110 9120.Amov_ptr 9130 DCD move_ptr% 9140.Amov_sprite 9150 DCD move_sprite% 9160.Apat_ptr 9170 DCD pat_ptr% 9180.Apop_dat 9190 DCD pop_dat% 9200.pop_next 9210 DCD 0 9220 9230.add_alien_to_list 9240 STMFD (sp)!,{r0-r12,link} 9250 LDR r8,free 9260 CMP r8,#0 9270 LDMEQFD (sp)!,{r0-r12,pc} 9280 LDR r7,list 9290 LDR r14,[r8,#dat_next] 9300 STR r14,free 9310 STR r7,[r8,#dat_next] 9320 STR r8,list 9330 ADD r14,r8,#4 9340 STMIA r14,{r0-r3} 9350 MOV r1,#0 9360 CMP r0,#FNidentify_pattern("ship") 9370 CMPNE r0,#FNidentify_pattern("bullet") 9380 CMPNE r0,#FNidentify_pattern("bomb") 9390 MOVEQ r1,#1 9400 CMP r0,#FNidentify_pattern("meteor") 9410 MOVEQ r1,#2 9420 STR r1,[r8,#dat_class] 9430 MOV r0,#0 9440 STR r0,[r8,#dat_mov_pc] 9450 STR r0,[r8,#dat_active] 9460 STR r0,[r8,#dat_pat_count] 9470 MVN r0,#11 9480 STR r0,[r8,#dat_pat_pc] 9490 MOV r0,#0 9500 STR r0,[r8,#dat_spr] 9510 LDMFD (sp)!,{r0-r12,pc} 9520 9530.scroll_on 9540 STMFD (sp)!,{r0-r7,link} 9550 LDR r14,lands_end 9560 CMP r10,r14 9570 LDMGEFD (sp)!,{r0-r7,pc} 9580 AND r0,r10,#3 9590 ADR r1,bank_dat 9600 LDR r0,[r1,r0,LSL #2] 9610 BIC r1,r9,#3 9620 ADD r0,r0,r1 9630 ADD r1,r10,#bytes_per_row 9640 LDR r2,land_addr 9650 LDR r3,spr_addr 9660 BL show_column 9670 ADD r9,r9,#1 9680 CMP r9,#bytes_per_row 9690 MOVEQ r9,#0 9700 ADD r10,r10,#1 9710 LDMFD (sp)!,{r0-r7,pc} 9720 9730.lands_end EQUD land_ext-bytes_per_row-16 9740.spr_addr EQUD scene_spr 9750.land_addr EQUD land 9760 9770.show_column 9780 STMFD (sp)!,{r0-r12,link} 9790 MOV r14,r1,LSR #FNlog2(sprite_width) 9800 AND r8,r1,#sprite_width-1 9810 MOV r6,#no 9820 MLA r7,r14,r6,r2 9830.show_col1 9840 LDRB r9,[r7],#1 9850 LDR r9,[r3,r9,LSL #2] 9860 LDR r14,[r9,#32] 9870 ADD r9,r9,r14 9880 BIC r14,r8,#3 9890 ADD r9,r9,r14 9900 CMP r8,#sprite_width-4 9910 ADDLT r10,r9,#4 9920 LDRGEB r10,[r7,#no-1] 9930 LDRGE r10,[r3,r10,LSL #2] 9940 LDRGE r14,[r10,#32] 9950 ADDGE r10,r10,r14 9960 AND r14,r1,#3 9970 MOV r14,r14,LSL #3 9980 RSB r4,r14,#32 9990]:FOR z%=0 TO size-1:[OPT pass% 10000 LDR r11,[r9],#sprite_width 10010 LDR r12,[r10],#sprite_width 10020 MOV r11,r11,LSR r14 10030 ORR r11,r11,r12,LSL r4 10040 STR r11,[r0],#bytes_per_row 10050]:NEXT z%:[OPT pass% 10060 SUBS r6,r6,#1 10070 BNE show_col1 10080 LDMFD (sp)!,{r0-r12,pc} 10090] 10100bank_dat=FNalloc(16,0) 10110[OPT pass% 10120.copy_bank 10130 STMFD (sp)!,{r0-r12,link} 10140 AND r0,r10,#3 10150 ADR r1,bank_dat 10160 LDR r10,[r1,r0,LSL #2] 10170 BIC r9,r9,#3 10180 ADD r10,r10,r9 10190 ADR r7,routine 10200 MOV r8,#bytes_per_row 10210 MVN r14,#0 10220 ADR r2,loadi 10230.make_route 10240 CMP r8,#0 10250 BEQ made_route 10260 RSB r6,r9,#bytes_per_row 10270 CMP r6,r8 10280 MOVGT r6,r8 10290 CMP r6,#40 10300 MOVGT r6,#40 10310 LDMIA r2,{r3,r4} 10320 MOV r0,r6,LSR #2 10330 RSB r0,r0,#10 10340 AND r3,r3,r14,LSL r0 10350 AND r4,r4,r14,LSL r0 10360 STMIA r7!,{r3,r4} 10370 SUB r8,r8,r6 10380 ADD r9,r9,r6 10390 CMP r9,#bytes_per_row 10400 LDREQ r0,subi 10410 STREQ r0,[r7],#4 10420 MOVEQ r9,#0 10430 B make_route 10440.made_route 10450 ADR r2,add10 10460 LDMIA r2,{r3-r6} 10470 ADR r5,routine-16 10480 SUB r5,r7,r5 10490 MOV r5,r5,ASR #2 10500 RSB r5,r5,#0 10510 BIC r5,r5,#&FF000000 10520 ORR r5,r5,#&1A000000 10530 STMIA r7,{r3-r6} 10540 LDR r11,vdu_o 10550 MOV r12,#total_size 10560 BL routine 10570 LDMFD (sp)!,{r0-r12,pc} 10580 10590.loadi LDMIA r10!,{r0-r9} 10600 STMIA r11!,{r0-r9} 10610.subi SUB r10,r10,#bytes_per_row 10620 10630.add10 ADD r10,r10,#bytes_per_row 10640 SUBS r12,r12,#1 10650 DCD 0 10660.reti MOV pc,link 10670 10680.swap_banks 10690 STMFD (sp)!,{r0-r2,link} 10700 MOV r0,#19 10710 SWI "XOS_Byte" 10720 MOV r0,#112 10730 MOV r1,r11 10740 SWI "XOS_Byte" 10750 RSB r11,r11,#3 10760 MOV r0,#113 10770 MOV r1,r11 10780 SWI "XOS_Byte" 10790 ADR r0,vdu_i 10800 ADR r1,vdu_o 10810 SWI "XOS_ReadVduVariables" 10820 LDMFD (sp)!,{r0-r2,pc} 10830 10840.vdu_i EQUD 148 10850 EQUD -1 10860.vdu_o EQUD 0 10870 EQUD 0 10880 10890.show_sprite 10900 STMFD (sp)!,{r0-r12,link} 10910 BL bounds_check_etc 10920 LDMLEFD (sp)!,{r0-r12,pc} 10930.ss_yloop 10940 MOV r7,r8 10950.ss_xloop 10960 LDR r0,[r10] 10970 LDR r1,[r12],#4 10980 BIC r0,r0,r1 10990 LDR r1,[r11],#4 11000 ORR r0,r0,r1 11010 STR r0,[r10],#4 11020 SUBS r7,r7,#4 11030 BNE ss_xloop 11040 SUB r10,r10,r8 11050 ADD r10,r10,#160 11060 ADD r11,r11,r5 11070 ADD r12,r12,r5 11080 SUBS r9,r9,#1 11090 BNE ss_yloop 11100 LDMFD (sp)!,{r0-r12,pc} 11110 11120.show_sprite_dying 11130 STMFD (sp)!,{r0-r12,link} 11140 BL bounds_check_etc 11150 LDMLEFD (sp)!,{r0-r12,pc} 11160 LDR r11,Afade_tab 11170 CMP r3,#0 11180 MOVLT r3,#0 11190 LDR r11,[r11,r3,LSL #2] 11200 LDR r14,[r11,#32] 11210 ADD r11,r11,r14 11220.sd_yloop 11230 MOV r7,r8 11240.sd_xloop 11250 LDR r0,[r10] 11260 LDR r1,[r12],#4 11270 BIC r0,r0,r1 11280 AND r2,r9,#7 11290 LDR r2,[r11,r2,LSL #2] 11300 AND r2,r2,r1 11310 ORR r0,r0,r2 11320 STR r0,[r10],#4 11330 SUBS r7,r7,#4 11340 BNE sd_xloop 11350 SUB r10,r10,r8 11360 ADD r10,r10,#160 11370 ADD r11,r11,r5 11380 ADD r12,r12,r5 11390 SUBS r9,r9,#1 11400 BNE sd_yloop 11410 LDMFD (sp)!,{r0-r12,pc} 11420 11430.Afade_tab 11440 DCD fade_tab 11450 11460.collide_check 11470 STMFD (sp)!,{r0-r12,link} 11480 BL bounds_check_etc 11490 CMPLT r0,r0 11500 LDMEQFD (sp)!,{r0-r12,pc} 11510.cc_yloop 11520 MOV r7,r8 11530.cc_xloop 11540 LDR r0,[r10],#4 11550 LDR r1,[r12],#4 11560 ANDS r0,r0,r1 11570 LDMNEFD (sp)!,{r0-r12,pc} 11580 SUBS r7,r7,#4 11590 BNE cc_xloop 11600 SUB r10,r10,r8 11610 ADD r10,r10,#160 11620 ADD r12,r12,r5 11630 SUBS r9,r9,#1 11640 BNE cc_yloop 11650 LDMFD (sp)!,{r0-r12,pc} 11660 11670.bounds_check_etc 11680 STMFD (sp)!,{link} 11690 BIC r1,r1,#3 11700 LDR r11,[r0,#32] 11710 ADD r11,r11,r0 11720 LDR r12,[r0,#36] 11730 ADD r12,r12,r0 11740 LDR r8,[r0,#16] 11750 ADD r8,r8,#1 11760 MOV r8,r8,LSL #2 11770 LDR r9,[r0,#20] 11780 ADD r9,r9,#1 11790 MOV r5,#0 11800 CMP r2,#0 11810 ADDLT r9,r9,r2 11820 MULLT r14,r2,r8 11830 SUBLT r11,r11,r14 11840 SUBLT r12,r12,r14 11850 MOVLT r2,#0 11860 ADD r14,r2,r9 11870 CMP r14,#240 11880 SUBGT r14,r14,#240 11890 SUBGT r9,r9,r14 11900 CMP r1,#0 11910 ADDLT r8,r8,r1 11920 SUBLT r11,r11,r1 11930 SUBLT r12,r12,r1 11940 SUBLT r5,r5,r1 11950 MOVLT r1,#0 11960 ADD r14,r1,r8 11970 CMP r14,#160 11980 SUBGT r14,r14,#160 11990 SUBGT r8,r8,r14 12000 ADDGT r5,r5,r14 12010 LDR r10,vdu_o 12020 ADD r10,r10,r2,LSL #7 12030 ADD r10,r10,r2,LSL #5 12040 ADD r10,r10,r1 12050 CMP r8,#0 12060 CMPGT r9,#0 12070 LDMFD (sp)!,{pc} 12080 12090.inkey STMFD (sp)!,{r0,r2,link} 12100 MOV r0,#129 12110 MOV r2,#255 12120 SWI "XOS_Byte" 12130 CMP r1,#255 12140 LDMFD (sp)!,{r0,r2,pc} 12150 12160.plot_on_small_screen 12170 STMFD (sp)!,{r0-r12,link} 12180 ADD r14,r2,#16 12190 LDMIA r14,{r8,r9} 12200 ADD r8,r8,#1 12210 MOV r8,r8,LSL #2 12220 ADD r9,r9,#1 12230 ADR r11,small_screen 12240 ADD r11,r11,r0 12250 ADD r11,r11,r1,LSL #6 12260 LDR r12,[r2,#36] 12270 ADD r12,r12,r2 12280 LDR r2,one_one_one_one 12290.plot_small_loop1 12300 MOV r7,r8 12310.plot_small_loop2 12320 LDR r0,[r12],#4 12330 AND r0,r0,r2 12340 LDR r1,[r11] 12350 ADD r0,r1,r0 12360 STR r0,[r11],#4 12370 SUBS r7,r7,#4 12380 BNE plot_small_loop2 12390 SUB r11,r11,r8 12400 ADD r11,r11,#64 12410 SUBS r9,r9,#1 12420 BNE plot_small_loop1 12430 LDMFD (sp)!,{r0-r12,pc} 12440 12450.check_for_overlap 12460 STMFD (sp)!,{r0-r12,link} 12470 ADR r12,small_screen 12480 MOV r11,#64*48 12490 LDR r14,two_two_two_two 12500.overlap_loop 12510 LDMIA r12!,{r0-r7} 12520 TST r0,r14 12530 TSTEQ r1,r14 12540 TSTEQ r2,r14 12550 TSTEQ r3,r14 12560 TSTEQ r4,r14 12570 TSTEQ r5,r14 12580 TSTEQ r6,r14 12590 TSTEQ r7,r14 12600 LDMNEFD (sp)!,{r0-r12,pc} 12610 SUBS r11,r11,#32 12620 BNE overlap_loop 12630 LDMFD (sp)!,{r0-r12,pc} 12640 12650.one_one_one_one 12660 DCD &11111111 12670.two_two_two_two 12680 DCD &22222222 12690 12700.clear_small_screen 12710 STMFD (sp)!,{r0-r12,link} 12720 ADR r12,small_screen 12730 MOV r11,#64*48 12740 MOV r0,#0 12750 MOV r1,#0 12760 MOV r2,#0 12770 MOV r3,#0 12780 MOV r4,#0 12790 MOV r5,#0 12800 MOV r6,#0 12810 MOV r7,#0 12820.clear_small_screen_loop 12830 STMIA r12!,{r0-r7} 12840 STMIA r12!,{r0-r7} 12850 STMIA r12!,{r0-r7} 12860 STMIA r12!,{r0-r7} 12870 SUBS r11,r11,#128 12880 BNE clear_small_screen_loop 12890 LDMFD (sp)!,{r0-r12,pc} 12900] 12910routine=FNalloc(128,0) 12920small_screen=FNalloc(64*48,0) 12930alien_list=FNalloc(max_aliens*dat_size,0) 12940banks=FNalloc(4*screen_size,0) 12950NEXT pass% 12960ENDPROC 12970: 12980DEF PROCnew_game 12990!score=0 13000PROCnew_round 13010ENDPROC 13020: 13030DEF PROCnew_round 13040FOR i%=0 TO max_aliens-1 13050 a%=alien_list+i%*dat_size 13060 IF i%=max_aliens-1 a%!dat_next=0 ELSE a%!dat_next=a%+dat_size 13070NEXT 13080!list=0 13090!free=alien_list 13100FOR b=0 TO 3 13110 bank_dat!(4*b)=banks+b*screen_size 13120 FOR col%=0 TO bytes_per_row STEP 4 13130 A%=banks+(screen_size*b)+col% 13140 B%=col%+b 13150 C%=land 13160 D%=scene_spr 13170 CALL show_column 13180 NEXT 13190NEXT 13200FOR i%=0 TO pop%-1 13210 a%=pop_dat%+24*i% 13220 go1%=a%!16 13230 go2%=a%!20 13240 IF go1%=-1 THEN 13250 a%!12=a%!4-160 13260 ELSE 13270 IF go2%=-1 THEN 13280 a%!12=a%!4-go1% 13290 ELSE 13300 a%!12=a%!4-(go2%+RND(go1%-go2%)-1) 13310 ENDIF 13320 ENDIF 13330NEXT 13340PROCadd_alien(FNidentify_pattern("ship"),0,32,0) 13350!energy=max_energy 13360ENDPROC 13370: 13380DEF PROCadd_alien(A%,B%,C%,D%) 13390CALL add_alien_to_list 13400ENDPROC 13410: 13420DEF FNalloc(size,align%) 13430WHILE P% MOD 16<>align% 13440 P%+=4 13450ENDWHILE 13460P%+=size 13470=P%-size 13480: 13490DEF FNlog2(a%)=LOG(a%)/LOG(2)
� >Rocky � by Antony Bruce Lytis � for 32 bit machines (� (c) BAU May 1993 2: <� 9+128 F� 9 P� Z�"Loading..." d �init n�load_game("Rocky") x�ass ��set_palette �high_score=0 �� � � i%=1 � 2 � ș "OS_Byte",112,i% � � � � � ș "OS_Byte",113,2 � �centre(3,"Rocky Trade",15) � �centre(7,"Keys:",11) �& �centre(10,"Up - A ",10) �& �centre(12,"Down - Z ",10) �& �centre(14,"Fire - RETURN",10) & �centre(16,"Bomb - TAB ",10) & �centre(18,"Thrust - SHIFT ",10) & �centre(20,"Brake - SPACE ",10) ". �centre(24,"High score: "+�high_score,11) ,) �centre(29,"Press SPACE to start",1) 6 *FX 15 @ � � �=32 J lives%=3 T �new_game ^ � 1 h � r �new_round | result=�(game) � � result=0 lives%-=1 � � result=1 � � *FX 112,1 � *FX 113,1 � � �! �centre(8,"Well done!",10) �2 �centre(12,"You completed your mission",15) �+ �centre(14,"with flying colours",15) �/ �centre(20,"Press SPACE to try again",1) � � � �=32 � � � � result=-1 � lives%=0 �5 � lives%=0 � !score>high_score high_score=!score � � � : &� �set_palette 07ș "OS_SpriteOp",&118,scenery,"palette" � ,,pal_spr :� i=0 � 15 D a=pal_spr+44+8*i N � i,a?1,a?2,a?3 X� b� l: v� �centre(y%,t$,c%) �� c% ��20-�(t$)/2,y%);t$ �� �: �� �init �=� land 64*1024,scenery 64*1024,scene_spr 4*256,temp% &100 �!scenery=64*1024 �scenery!4=0 �scenery!8=16 �scenery!12=16 �max_energy=120 �� �: � �load_game(game$) � in% in%=�("Games."+game$) ȕ � �#in% * s$=�strip(�#in%) 4 i%=�s$,":") > � i%>0 � H r$=�strip(�s$,i%+1)) R Ȏ �s$,i%-1) � \ � "Maps": f �load_map(r$) p � "Sprites": z �load_sprites(r$) � � "Movement": � �load_movement(r$) � � "Patterns": � �load_patterns(r$) � � "Layout": � �load_layout(r$) � � � � �� � �#in% �� �: �� �load_sprites(file$) 2ș "OS_File",5,"Sprites."+file$ � ,,,,spr_len% spr_len%=5*spr_len% � spr% spr_len% $!spr%=spr_len% .spr%!4=0 8 spr%!8=16 Bspr%!12=16 L/ș "OS_SpriteOp",&10A,spr%,"Sprites."+file$ V,ș "OS_SpriteOp",&108,spr% � ,,,sprites% `� spr_name$(sprites%-1) j� i%=0 � sprites%-1 t7 ș "OS_SpriteOp",&10D,spr%,temp%,&100,i%+1 � ,,,j% ~ temp%?j%=13 � spr_name$(i%)=$temp% �� �� i%=0 � sprites%-1 �7 � spr_name$(i%)<>"!" � �spr_name$(i%),4)<>"fade" � �J � �(spr_name$(i%))=12 root$=�spr_name$(i%),11) � root$=spr_name$(i%) �8 ș "OS_SpriteOp",&11A,spr%,spr_name$(i%),root$+"a" � � j%=1 � 3 � shift$=root$+�(�"a"+j%) �2 ș "OS_SpriteOp",&11B,spr%,root$+"a",shift$ � � k%=1 � 2*j% �+ ș "OS_SpriteOp",&12D,spr%,shift$,0 � � � � j%=0 � 3 shift$=root$+�(�"a"+j%) � (4 ș "OS_SpriteOp",&128,spr%,shift$ � ,,,w%,h% 28 � w% � 8<>0 ș "OS_SpriteOp",&12D,spr%,shift$,w% < � w% � 8=0 F � P � Z� dfade_stages%=12 n� fade_tab 4*fade_stages% x� i%=0 � fade_stages%-1 �B ș "OS_SpriteOp",&118,spr%,"fade"+�(i%+1) � ,,fade_tab!(4*i%) �� �� �: �� �load_movement(file$) � � in% �movements%=0 �G� move_name$(255),move_dat% &1000,move_ptr% &400,move_sprite% &1000 �in%=�("Movement."+file$) �p%=move_dat% �ȕ � �#in% � s$=�strip(�#in%) � � �s$,1)<>";" � s$<>"" � par1$=�get_par(s$) par2$=�get_par(s$) par3$=�get_par(s$) "* � par3$="" � par3$=par2$:par2$=par1$ ," move_name$(movements%)=par1$ 6 � i%=0 � 3 @: ș "OS_SpriteOp",&118,spr%,par2$+�(�"a"+i%) � ,,sa% J, move_sprite%!(16*movements%+4*i%)=sa% T � ^! move_ptr%!(4*movements%)=p% h par3$=�par3$,3) r ȕ par3$<>"" | a%=�(par3$) �2 � a%>96 � ?p%=127-(a%-96) � ?p%=127+(a%-64) � p%+=1 � par3$=�par3$,2) � � � p%?0=&FF � p%?1=&FF � p%+=2 � movements%+=1 � � �� � �#in% �� �: � �identify_movement(move$) � i%,found% found%=� &i%=0 0� move$="(LOOP)" � =-2 :ȕ i%<movements% � � found% D. � move_name$(i%)=move$ � found%=� � i%+=1 N� X6� � found% � � 0,"Don't know movement '"+move$+"'" b=i% l: v� �identify_pattern(pat$) �� i%,found% �found%=� �i%=0 �ȕ i%<patterns% � � found% �, � pat_name$(i%)=pat$ � found%=� � i%+=1 �� �4� � found% � � 0,"Don't know pattern '"+pat$+"'" �=i% �: �� �get_par(� s$) �� p$,i% �s$=�strip(s$) �i%=�s$," ") L� i%=0 � p$=�strip(s$):s$="" � p$=�strip(�s$,i%-1)):s$=�strip(�s$,i%+1)) =p$ : � �load_layout(file$) * � in% 4in%=�("Layout."+file$) > m%=-1 Hmax_pop%=1024 R7� layout_pat%(255),pop_dat% 24*max_pop%,lay_par%(5) \ pop%=0 fline%=0 pbad$="" zȕ � �#in% � bad$="" � s$=�strip(�#in%) � Ȏ s$ � � � "Patterns:":m%=0 � � "Layout:":m%=1 � � � s$<>"" � � Ȏ m% � � � 0: � i%=�s$," ") �G layout_pat%(�(�s$,i%+1)))=�identify_pattern(�strip(�s$,i%-1))) � � 1: � � i%=0 � 5 � � i%=3 i%+=1 ' lay_par%(i%)=�get_num_par(s$) � F � lay_par%(2)=-1 bad$="not enough parameters":bad_line%=line% $- lay_par%(0)=layout_pat%(lay_par%(0)) .$ lay_par%(1)=lay_par%(1) � 2 8' lay_par%(2)=240-16-lay_par%(2) B � i%=0 � 5 L. pop_dat%!(24*pop%+4*i%)=lay_par%(i%) V � ` pop%+=1 j tB � �s$,1)<>";" � s$<>"" bad$="syntax error":bad_line%=line% ~ � � � � � � line%+=1 �� � �#in% �G� bad$<>"" � 0,"Error in layout file: "+bad$+" at line "+�bad_line% �pop_dat%!(24*pop%)=-1 �� �: �� �get_num_par(� s$) �� n% �s$=�strip(s$) � s$="" � =-1 n%=�(s$) s$=�s$,�s$," ")+1) =n% (: 2� �load_patterns(file$) < � in% F1� pat_name$(255),pat_dat% &1000,pat_ptr% &400 Ppatterns%=0 Zp%=pat_dat% dbad$="" nin%=�("Patterns."+file$) xline%=0 �cur_pat%=-1 �ȕ � �#in% � s$=�#in% � � �s$,1)<>";" � s$<>"" � � � �s$,1)<>" " � �$ � cur_pat%<>-1 � !p%=-1:p%+=4 � cur_pat%=patterns% �' pat_name$(cur_pat%)=�get_par(s$) � pat_ptr%!(4*cur_pat%)=p% � patterns%+=1 � � � � s$<>"" � patterns%=0 � � bad$="syntax error" bad_line%=line% � par1$=�get_par(s$) " par2$=�get_par(s$) , par3$=�get_par(s$) 6$ !p%=�identify_movement(par1$) @* � par2$<>"" p%!4=�(par2$) � p%!4=-1 J* � par3$<>"" p%!8=�(par3$) � p%!8=-1 T p%+=12 ^ � h � r line%+=1 |� � �#in% �H� bad$<>"" � 0,"Error in pattern file: "+bad$+" at line "+�bad_line% �!p%=-1:p%+=4 �� �: �� �load_map(file$) � � in% �in%=�("Maps."+file$) �x%=0 �m%=0 �� i=0 � 255 � scene_spr!(4*i)=-1 �� ȕ � �#in% s$=�strip(�#in%) � s$<>"" � & Ȏ s$ � 0 � "Files:":m%=1 : � "Used:":m%=2 D � "Map:":m%=3 N � "Type:":m%=4 X b Ȏ m% � l7 � 1:ș "OS_SpriteOp",&10B,scenery,"Scenery."+s$ v � 2: � i=�("&"+�s$,2)) � s$=�strip(�s$,3)) �0 ș "OS_SpriteOp",&118,scenery,s$ � ,,d% � scene_spr!(4*i)=d% � � s$="blank" � � blnk=i �7 ș "OS_SpriteOp",&128,scenery,s$ � ,,,,,,mode � � � � 3: � dash%=�s$,"-") � � dash%>0 � � s1$=�s$,dash%-1) � s3$=�s$,dash%+1) s2$=�"0"+�~blnk,2) * s$=s1$+�no-�(s1$+s3$)/2,s2$)+s3$ � a%=land+no*x% * � i=0 � no-1 4 a%?i=blnk > � H y%=no-1 R ȕ s$<>"" \ a%?y%=�("&"+�s$,2)) f s$=�s$,3) p y%-=1 z � � x%+=1 � � 4: � size=��s$,2) � � �s$,1)="H" � �3 � size=32 total_size=224 � total_size=240 � � �3 � 17,"Only horizontal landscapes please!" � � � no=total_size � size � � � � � � �� 5ș "OS_ReadModeVariable",mode,6 � ,,bytes_per_row (screen_size=total_size*bytes_per_row 6� mode=9 sprite_width=size � 2 � sprite_width=size $land_ext=x%*sprite_width .� i=0 � 255 80 � scene_spr!(4*i)=-1 � scene_spr!(4*i)=blnk B� L �#in% V� `: j� �strip(s$) tȕ �s$,1)=" " ~ s$=�s$,2) �� �ȕ �s$)=" " � s$=�s$) �� �=s$ �: � � �ass �dat_next=0 �dat_type=4 �dat_x=8 �dat_y=12 � dat_go=16 dat_pat_pc=20 dat_mov_pc=24 dat_active=28 dat_pat_count=32 (dat_class=36 2dat_spr=40 <dat_size=44 Fmax_aliens=96 P� code% &4000+4*screen_size Zsp=13:link=14:pc=15 d� pass%=0 � 2 � 2 nP%=code% x[OPT pass% �'.game STMFD (sp)!,{r0-r12,link} � LDR r0,Apop_dat � STR r0,pop_next � MOV r9,#0 � MOV r10,#0 �' STR r10,life_lost_count �& STR r10,finished_count � MOV r11,#1 �.game_loop � BL swap_banks � BL copy_bank �% LDR r0,finished_count � CMP r0,#0 BEQ not_finished SUBS r0,r0,#1 % STR r0,finished_count " BNE not_finished ,' LDMFD (sp)!,{r0-r12,link} 6 MOV r0,#1 @ MOV pc,link J.not_finished T& LDR r0,life_lost_count ^ CMP r0,#0 h! BEQ not_life_lost r SUBS r0,r0,#1 |& STR r0,life_lost_count � BNE nearly_over �' LDMFD (sp)!,{r0-r12,link} � MOV r0,#0 � MOV pc,link �.not_life_lost � BL scroll_on �.nearly_over � BL do_aliens � BL back_collide � BL fore_collide � BL show_aliens �! LDR r0,fire_count � CMP r0,#0 SUBGT r0,r0,#1 ! STRGT r0,fire_count LDR r0,energy & TST r10,#31 0 BNE no_drain : SUBS r0,r0,#1 D MOVMI r0,#0 N STR r0,energy X .no_drain b BL show_energy l BL show_score v) SWI "XOS_ReadEscapeState" � BCC game_loop � MOV r0,#126 � SWI "XOS_Byte" �' LDMFD (sp)!,{r0-r12,link} � MVN r0,#0 � MOV pc,link � �.life_lost_count � DCD 0 �.finished_count � DCD 0 � � .bomb_key DCD 0 .fire_count DCD 0 *.do_aliens 4' STMFD (sp)!,{r0-r12,link} > LDR r6,pop_next H" ADD r5,r10,#160+16 R.check_for_new_entries \ LDMIA r6,{r0-r3} f CMP r0,#0 p$ BLT done_new_entries z CMP r1,r5 �$ BGE done_new_entries �% BL add_alien_to_list � ADD r6,r6,#24 �) B check_for_new_entries �.done_new_entries � STR r6,pop_next � ADR r7,list � LDR r8,list �.do_alien_loop � CMP r8,#0 �% LDMEQFD (sp)!,{r0-r12,pc} � �' LDR r0,[r8,#dat_active] CMP r0,#0 " BLT alien_is_dying # BGT alien_is_active $# LDR r0,[r8,#dat_go] . CMP r10,r0 8# BLT alien_is_active B MOV r0,#1 L' STR r0,[r8,#dat_active] V# B alien_is_active `.alien_is_dying j ADDS r0,r0,#1 t' STR r0,[r8,#dat_active] ~ BEQ alien_is_off �! B do_next_alien �.alien_is_active �" LDR r2,[r8,#dat_x] �" LDR r3,[r8,#dat_y] � SUB r14,r10,#32 � CMP r2,r14 � BLT alien_is_off �# ADD r14,r10,#160+48 � CMP r2,r14 � BGT alien_is_off � CMP r3,#256+16 � BGT alien_is_off CMN r3,#15 BLT alien_is_off % LDR r4,[r8,#dat_type] (1 CMP r4,#�identify_pattern("ship") 2 BNE not_ship < MOV r1,#256-1 F BL inkey P ADDEQ r2,r2,#2 Z SUBNE r2,r2,#1 d MOV r1,#256-99 n BL inkey x SUBEQ r2,r2,#1 � LDR r0,energy � CMP r0,#0 � ADDLE r3,r3,#2 �! BLE drop_from_sky � MOV r1,#256-66 � BL inkey � SUBEQ r3,r3,#2 � MOV r1,#256-98 � BL inkey � ADDEQ r3,r3,#2 �.drop_from_sky � ADD r14,r10,#120 � CMP r2,r14 MOVGT r2,r14 CMP r2,r10 MOVLT r2,r10 " CMP r3,#0 , MOVLT r3,#0 6 CMP r3,#240-11 @ MOVGT r3,#240-11 J! ADD r14,r8,#dat_x T STMIA r14,{r2,r3} ^! LDR r1,fire_count h CMP r1,#0 r BNE dont_fire | MOV r1,#256-74 � BL inkey � BNE dont_fire �! STMFD (sp)!,{r2-r3} �3 MOV r0,#�identify_pattern("bullet") � ADD r1,r2,#18 � ADD r2,r3,#5 � MOV r3,#0 �% BL add_alien_to_list � MOV r1,#10 �! STR r1,fire_count �! LDMFD (sp)!,{r2-r3} �.dont_fire � MOV r1,#256-97 BL inkey �Q r0,#1 MOVNE r0,#0 & LDR r14,bomb_key 0 CMP r0,r14 : BEQ dont_drop D STR r0,bomb_key N CMP r0,#1 X BNE dont_drop b1 MOV r0,#�identify_pattern("bomb") l ADD r1,r2,#8 v ADD r2,r3,#8 � MOV r3,#0 �% BL add_alien_to_list �.dont_drop � B apply_pat � .not_ship �.apply_pat � LDR r1,Apat_ptr �% LDR r4,[r1,r4,LSL #2] �' LDR r3,[r8,#dat_pat_pc] � CMP r3,#0 � BLT next_mov �* LDR r0,[r8,#dat_pat_count] � CMP r0,#0 BNE not_next_mov .next_mov ADD r3,r3,#12 .do_pat_loop * ADD r14,r4,r3 4 LDR r0,[r14,#0] > CMN r0,#1 H BEQ alien_is_off R MOVLT r3,#0 \ BLT do_pat_loop f LDR r0,[r14,#4] p* STR r0,[r8,#dat_pat_count] z.not_next_mov �' STR r3,[r8,#dat_pat_pc] � LDR r5,[r4,r3] � CMP r5,#0 � BLT alien_is_off � � LDR r1,Amov_ptr �% LDR r1,[r1,r5,LSL #2] �' LDR r2,[r8,#dat_mov_pc] �" LDR r3,[r8,#dat_x] �" LDR r4,[r8,#dat_y] � �' LDR r0,[r8,#dat_active] � CMP r0,#0 # BEQ skip_alien_move .cycle_move $ LDRB r0,[r1,r2] . CMP r0,#&FF 8! BNE not_end_cycle B* LDR r0,[r8,#dat_pat_count] L CMP r0,#0 V SUBGE r0,r0,#1 `* STRGE r0,[r8,#dat_pat_count] j MOV r2,#0 t B cycle_move ~.not_end_cycle � ADD r3,r3,r0 � SUB r3,r3,#&7F � ADD r2,r2,#1 � LDRB r0,[r1,r2] � SUB r4,r4,r0 � ADD r4,r4,#&7F � ADD r2,r2,#1 �' STR r2,[r8,#dat_mov_pc] �" STR r3,[r8,#dat_x] �" STR r4,[r8,#dat_y] �.skip_alien_move �" LDR r0,Amov_sprite # ADD r0,r0,r5,LSL #4 SUB r14,r3,r10 � r14,r14,#3 & LDR r0,[r0,r14,LSL #2] ($ STR r0,[r8,#dat_spr] 2.do_next_alien < MOV r7,r8 F% LDR r8,[r8,#dat_next] P! B do_alien_loop Z.alien_is_off d% LDR r6,[r8,#dat_next] n% STR r6,[r7,#dat_next] x LDR r5,free �% STR r5,[r8,#dat_next] � STR r8,free � MOV r8,r6 �! B do_alien_loop � �.show_aliens �' STMFD (sp)!,{r0-r12,link} � ADR r8,list �.show_aliens_loop �% LDR r8,[r8,#dat_next] � CMP r8,#0 �% LDMEQFD (sp)!,{r0-r12,pc} �' LDR r0,[r8,#dat_active] CMP r0,#0 BGE show_alive ' ADD r3,r0,#fade_stages% "$ LDR r0,[r8,#dat_spr] , CMP r0,#0 6" LDRNE r1,[r8,#dat_x] @ SUBNE r1,r1,r10 J" LDRNE r2,[r8,#dat_y] T% BLNE show_sprite_dying ^$ B show_aliens_loop h.show_alive r$ LDR r0,[r8,#dat_spr] | CMP r0,#0 �" LDRNE r1,[r8,#dat_x] � SUBNE r1,r1,r10 �" LDRNE r2,[r8,#dat_y] � BLNE show_sprite �$ B show_aliens_loop � �.back_collide �' STMFD (sp)!,{r0-r12,link} � ADR r8,list �.back_collide_loop �% LDR r8,[r8,#dat_next] � CMP r8,#0 �% LDMEQFD (sp)!,{r0-r12,pc} ' LDR r0,[r8,#dat_active] CMP r0,#0 % BLE back_collide_loop && LDR r0,[r8,#dat_class] 0 CMP r0,#1 : CMPNE r0,#2 D% BNE back_collide_loop N$ LDR r0,[r8,#dat_spr] X CMP r0,#0 b% BEQ back_collide_loop l" LDR r1,[r8,#dat_x] v SUB r1,r1,r10 �" LDR r2,[r8,#dat_y] �! BL collide_check �% BEQ back_collide_loop �% LDR r5,[r8,#dat_type] �1 CMP r5,#�identify_pattern("ship") �& BNE ship_hasnt_crashed �$ BL ship_has_crashed �% B back_collide_loop �.ship_hasnt_crashed �$ MVN r0,#fade_stages% �' STR r0,[r8,#dat_active] �% B back_collide_loop � .list DCD 0 .free DCD 0 .ship_has_crashed *' STMFD (sp)!,{r0-r12,link} 4 ADR r8,list >.find_ship H% LDR r8,[r8,#dat_next] R% LDR r0,[r8,#dat_type] \1 CMP r0,#�identify_pattern("ship") f BNE find_ship p MOV r0,#50 z& STR r0,life_lost_count �" LDR r1,[r8,#dat_x] �" LDR r2,[r8,#dat_y] � MOV r3,#0 �6 MOV r0,#�identify_pattern("shipdead1") �% BL add_alien_to_list �6 MOV r0,#�identify_pattern("shipdead2") �% BL add_alien_to_list �6 MOV r0,#�identify_pattern("shipdead3") �% BL add_alien_to_list �6 MOV r0,#�identify_pattern("shipdead4") �% BL add_alien_to_list �$ MVN r0,#fade_stages% �' STR r0,[r8,#dat_active] % LDMFD (sp)!,{r0-r12,pc} .fore_collide $' STMFD (sp)!,{r0-r12,link} . ADR r8,list 8.fore_collide_loop B% LDR r8,[r8,#dat_next] L CMP r8,#0 V% LDMEQFD (sp)!,{r0-r12,pc} `& LDR r0,[r8,#dat_class] j CMP r0,#1 t% BNE fore_collide_loop ~' LDR r0,[r8,#dat_active] � CMP r0,#0 �% BLT fore_collide_loop �% LDR r14,[r8,#dat_spr] � CMP r14,#0 �% BEQ fore_collide_loop � ADD r14,r14,#16 � LDMIA r14,{r6-r7} �! ADD r14,r8,#dat_x � LDMIA r14,{r4,r5} � BIC r4,r4,#3 � ADD r6,r6,#1 �# ADD r6,r4,r6,LSL #2 ADD r7,r7,#1 ADD r7,r5,r7 ADR r9,list .fore_collide_loopb (% LDR r9,[r9,#dat_next] 2 CMP r9,#0 <% BEQ fore_collide_loop F& LDR r0,[r9,#dat_class] P CMP r0,#1 Z& BEQ fore_collide_loopb d BLT not_a_meteor n% LDR r0,[r8,#dat_type] x3 CMP r0,#�identify_pattern("bullet") �1 CMPNE r0,#�identify_pattern("bomb") �& BEQ fore_collide_loopb �.not_a_meteor �' LDR r0,[r9,#dat_active] � CMP r0,#0 �& BLT fore_collide_loopb �% LDR r14,[r9,#dat_spr] � CMP r14,#0 �& BEQ fore_collide_loopb � ADD r14,r14,#16 � LDMIA r14,{r2-r3} �! ADD r14,r9,#dat_x � LDMIA r14,{r0-r1} BIC r0,r0,#3 ADD r2,r2,#1 # ADD r2,r0,r2,LSL #2 " ADD r3,r3,#1 , ADD r3,r1,r3 6 CMP r6,r0 @ CMPGE r2,r4 J CMPGE r7,r1 T CMPGE r3,r5 ^& BLT fore_collide_loopb h& BL clear_small_screen r! STMFD (sp)!,{r4,r5} | SUBS r0,r0,r4 � MOVPL r4,#0 � RSBMI r4,r0,#0 � MOVMI r0,#0 � SUBS r1,r1,r5 � MOVPL r5,#0 � RSBMI r5,r1,#0 � MOVMI r1,#0 �$ LDR r2,[r9,#dat_spr] �( BL plot_on_small_screen � MOV r0,r4 � MOV r1,r5 �$ LDR r2,[r8,#dat_spr] �( BL plot_on_small_screen ! LDMFD (sp)!,{r4,r5} % BL check_for_overlap & BEQ fore_collide_loopb &$ MVN r0,#fade_stages% 0' STR r0,[r8,#dat_active] :' STR r0,[r9,#dat_active] D% LDR r0,[r8,#dat_type] N1 CMP r0,#�identify_pattern("ship") X$ BLEQ ship_has_crashed b ADR r10,hit_tab l% LDR r0,[r9,#dat_type] v1 CMP r0,#�identify_pattern("base") � �Q r14,#50 �& STREQ r14,finished_count �.find_what_we_hit � LDMIA r10!,{r1-r3} � CMP r1,#0 �% BLT fore_collide_loop � CMP r1,r0 �$ BNE find_what_we_hit � ADR r14,score � LDMIA r14,{r0,r1} � ADD r0,r0,r2 � ADD r1,r1,r3 �" CMP r1,#max_energy !" MOVGT r1,#max_energy ! STMIA r14,{r0,r1} !% B fore_collide_loop ! !*.hit_tab !4- DCD �identify_pattern("fuel") !> DCD 10 !H DCD 20 !R- DCD �identify_pattern("dish") !\ DCD 20 !f DCD 0 !p/ DCD �identify_pattern("rocket") !z DCD 40 !� DCD 0 !�/ DCD �identify_pattern("saucer") !� DCD 40 !� DCD 0 !�- DCD �identify_pattern("base") !� DCD 1000 !� DCD 0 !� DCD -1 !� !�.show_energy !�' STMFD (sp)!,{r0-r12,link} !� LDR r11,vdu_o !� LDR r8,energy " MOV r7,#0 " ADD r11,r11,#4 "# ADD r11,r11,#248<<5 "$# ADD r11,r11,#248<<7 "..show_energy_loop "8 MOV r0,#&FF "B CMP r7,#40 "L MOVLT r0,#&BB "V CMP r7,#20 "` MOVLT r0,#&AA "j CMP r7,r8 "t MOVGE r0,#&00 "~! STRB r0,[r11,#160] "�! STRB r0,[r11,#320] "�! STRB r0,[r11,#480] "� STRB r0,[r11],#1 "� ADD r7,r7,#1 "�" CMP r7,#max_energy "�$ BLT show_energy_loop "�% LDMFD (sp)!,{r0-r12,pc} "� "�.show_score "�& STMFD (sp)!,{r0-r3,link} "� SUB sp,sp,#8 "� LDR r0,score # MOV r1,sp # MOV r2,#8 #* SWI "XOS_ConvertCardinal4" # SUB r1,r1,r0 #( SWI &100+31 #2 RSB r0,r1,#38 #< SWI "XOS_WriteC" #F SWI &100+31 #P MOV r0,sp #Z SWI "XOS_Write0" #d ADD sp,sp,#8 #n$ LDMFD (sp)!,{r0-r3,pc} #x #�.score DCD 0 #�.energy DCD 0 #� #� .Amov_ptr #� DCD move_ptr% #�.Amov_sprite #� DCD move_sprite% #� .Apat_ptr #� DCD pat_ptr% #� .Apop_dat #� DCD pop_dat% #� .pop_next #� DCD 0 $ $.add_alien_to_list $' STMFD (sp)!,{r0-r12,link} $" LDR r8,free $, CMP r8,#0 $6% LDMEQFD (sp)!,{r0-r12,pc} $@ LDR r7,list $J& LDR r14,[r8,#dat_next] $T STR r14,free $^% STR r7,[r8,#dat_next] $h STR r8,list $r ADD r14,r8,#4 $| STMIA r14,{r0-r3} $� MOV r1,#0 $�1 CMP r0,#�identify_pattern("ship") $�3 CMPNE r0,#�identify_pattern("bullet") $�1 CMPNE r0,#�identify_pattern("bomb") $� �Q r1,#1 $�3 CMP r0,#�identify_pattern("meteor") $� �Q r1,#2 $�& STR r1,[r8,#dat_class] $� MOV r0,#0 $�' STR r0,[r8,#dat_mov_pc] $�' STR r0,[r8,#dat_active] $�* STR r0,[r8,#dat_pat_count] $� MVN r0,#11 %' STR r0,[r8,#dat_pat_pc] % MOV r0,#0 %$ STR r0,[r8,#dat_spr] %&% LDMFD (sp)!,{r0-r12,pc} %0 %:.scroll_on %D& STMFD (sp)!,{r0-r7,link} %N! LDR r14,lands_end %X CMP r10,r14 %b$ LDMGEFD (sp)!,{r0-r7,pc} %l � r0,r10,#3 %v ADR r1,bank_dat %�% LDR r0,[r1,r0,LSL #2] %� BIC r1,r9,#3 %� ADD r0,r0,r1 %�) ADD r1,r10,#bytes_per_row %� LDR r2,land_addr %� LDR r3,spr_addr %� BL show_column %� ADD r9,r9,#1 %�% CMP r9,#bytes_per_row %� �Q r9,#0 %� ADD r10,r10,#1 %�$ LDMFD (sp)!,{r0-r7,pc} %� &5.lands_end EQUD land_ext-bytes_per_row-16 &%.spr_addr EQUD scene_spr & .land_addr EQUD land & &*.show_column &4' STMFD (sp)!,{r0-r12,link} &>3 MOV r14,r1,LSR #�log2(sprite_width) &H' � r8,r1,#sprite_width-1 &R MOV r6,#no &\ MLA r7,r14,r6,r2 &f.show_col1 &p LDRB r9,[r7],#1 &z% LDR r9,[r3,r9,LSL #2] &� LDR r14,[r9,#32] &� ADD r9,r9,r14 &� BIC r14,r8,#3 &� ADD r9,r9,r14 &�& CMP r8,#sprite_width-4 &� ADDLT r10,r9,#4 &�" LDRGEB r10,[r7,#no-1] &�' LDRGE r10,[r3,r10,LSL #2] &�! LDRGE r14,[r10,#32] &� ADDGE r10,r10,r14 &� � r14,r1,#3 &�" MOV r14,r14,LSL #3 &� RSB r4,r14,#32 ' ]:� z%=0 � size-1:[OPT pass% '* LDR r11,[r9],#sprite_width '+ LDR r12,[r10],#sprite_width '$# MOV r11,r11,LSR r14 '.% �R r11,r11,r12,LSL r4 '8+ STR r11,[r0],#bytes_per_row 'B]:� z%:[OPT pass% 'L SUBS r6,r6,#1 'V BNE show_col1 '`% LDMFD (sp)!,{r0-r12,pc} 'j] 'tbank_dat=�alloc(16,0) '~[OPT pass% '�.copy_bank '�' STMFD (sp)!,{r0-r12,link} '� � r0,r10,#3 '� ADR r1,bank_dat '�& LDR r10,[r1,r0,LSL #2] '� BIC r9,r9,#3 '� ADD r10,r10,r9 '� ADR r7,routine '�% MOV r8,#bytes_per_row '� MVN r14,#0 '� ADR r2,loadi '�.make_route ( CMP r8,#0 ( BEQ made_route (( RSB r6,r9,#bytes_per_row ( CMP r6,r8 (( MOVGT r6,r8 (2 CMP r6,#40 (< MOVGT r6,#40 (F LDMIA r2,{r3,r4} (P MOV r0,r6,LSR #2 (Z RSB r0,r0,#10 (d" � r3,r3,r14,LSL r0 (n" � r4,r4,r14,LSL r0 (x STMIA r7!,{r3,r4} (� SUB r8,r8,r6 (� ADD r9,r9,r6 (�% CMP r9,#bytes_per_row (� LDREQ r0,subi (� STREQ r0,[r7],#4 (� �Q r9,#0 (� B make_route (�.made_route (� ADR r2,add10 (� LDMIA r2,{r3-r6} (�! ADR r5,routine-16 (� SUB r5,r7,r5 (� MOV r5,r5,ASR #2 ) RSB r5,r5,#0 )$ BIC r5,r5,#&FF000000 )# �R r5,r5,#&1A000000 )" STMIA r7,{r3-r6} ), LDR r11,vdu_o )6# MOV r12,#total_size )@ BL routine )J% LDMFD (sp)!,{r0-r12,pc} )T )^ .loadi LDMIA r10!,{r0-r9} )h STMIA r11!,{r0-r9} )r*.subi SUB r10,r10,#bytes_per_row )| )�*.add10 ADD r10,r10,#bytes_per_row )� SUBS r12,r12,#1 )� DCD 0 )�.reti MOV pc,link )� )�.swap_banks )�& STMFD (sp)!,{r0-r2,link} )� MOV r0,#19 )� SWI "XOS_Byte" )� MOV r0,#112 )� MOV r1,r11 )� SWI "XOS_Byte" )� RSB r11,r11,#3 * MOV r0,#113 * MOV r1,r11 * SWI "XOS_Byte" *& ADR r0,vdu_i *0 ADR r1,vdu_o *:* SWI "XOS_ReadVduVariables" *D$ LDMFD (sp)!,{r0-r2,pc} *N *X.vdu_i EQUD 148 *b EQUD -1 *l.vdu_o EQUD 0 *v EQUD 0 *� *�.show_sprite *�' STMFD (sp)!,{r0-r12,link} *�$ BL bounds_check_etc *�% LDMLEFD (sp)!,{r0-r12,pc} *� .ss_yloop *� MOV r7,r8 *� .ss_xloop *� LDR r0,[r10] *� LDR r1,[r12],#4 *� BIC r0,r0,r1 *� LDR r1,[r11],#4 *� �R r0,r0,r1 + STR r0,[r10],#4 + SUBS r7,r7,#4 + BNE ss_xloop + SUB r10,r10,r8 +* ADD r10,r10,#160 +4 ADD r11,r11,r5 +> ADD r12,r12,r5 +H SUBS r9,r9,#1 +R BNE ss_yloop +\% LDMFD (sp)!,{r0-r12,pc} +f +p.show_sprite_dying +z' STMFD (sp)!,{r0-r12,link} +�$ BL bounds_check_etc +�% LDMLEFD (sp)!,{r0-r12,pc} +�! LDR r11,Afade_tab +� CMP r3,#0 +� MOVLT r3,#0 +�' LDR r11,[r11,r3,LSL #2] +�! LDR r14,[r11,#32] +� ADD r11,r11,r14 +� .sd_yloop +� MOV r7,r8 +� .sd_xloop +� LDR r0,[r10] +� LDR r1,[r12],#4 , BIC r0,r0,r1 , � r2,r9,#7 ,& LDR r2,[r11,r2,LSL #2] ,$ � r2,r2,r1 ,. �R r0,r0,r2 ,8 STR r0,[r10],#4 ,B SUBS r7,r7,#4 ,L BNE sd_xloop ,V SUB r10,r10,r8 ,` ADD r10,r10,#160 ,j ADD r11,r11,r5 ,t ADD r12,r12,r5 ,~ SUBS r9,r9,#1 ,� BNE sd_yloop ,�% LDMFD (sp)!,{r0-r12,pc} ,� ,�.Afade_tab ,� DCD fade_tab ,� ,�.collide_check ,�' STMFD (sp)!,{r0-r12,link} ,�$ BL bounds_check_etc ,� CMPLT r0,r0 ,�% LDMEQFD (sp)!,{r0-r12,pc} ,� .cc_yloop - MOV r7,r8 - .cc_xloop - LDR r0,[r10],#4 - LDR r1,[r12],#4 -( �S r0,r0,r1 -2% LDMNEFD (sp)!,{r0-r12,pc} -< SUBS r7,r7,#4 -F BNE cc_xloop -P SUB r10,r10,r8 -Z ADD r10,r10,#160 -d ADD r12,r12,r5 -n SUBS r9,r9,#1 -x BNE cc_yloop -�% LDMFD (sp)!,{r0-r12,pc} -� -�.bounds_check_etc -� STMFD (sp)!,{link} -� BIC r1,r1,#3 -� LDR r11,[r0,#32] -� ADD r11,r11,r0 -� LDR r12,[r0,#36] -� ADD r12,r12,r0 -� LDR r8,[r0,#16] -� ADD r8,r8,#1 -� MOV r8,r8,LSL #2 -� LDR r9,[r0,#20] . ADD r9,r9,#1 . MOV r5,#0 . CMP r2,#0 ." ADDLT r9,r9,r2 ., MULLT r14,r2,r8 .6 SUBLT r11,r11,r14 .@ SUBLT r12,r12,r14 .J MOVLT r2,#0 .T ADD r14,r2,r9 .^ CMP r14,#240 .h SUBGT r14,r14,#240 .r SUBGT r9,r9,r14 .| CMP r1,#0 .� ADDLT r8,r8,r1 .� SUBLT r11,r11,r1 .� SUBLT r12,r12,r1 .� SUBLT r5,r5,r1 .� MOVLT r1,#0 .� ADD r14,r1,r8 .� CMP r14,#160 .� SUBGT r14,r14,#160 .� SUBGT r8,r8,r14 .� ADDGT r5,r5,r14 .� LDR r10,vdu_o .�% ADD r10,r10,r2,LSL #7 .�% ADD r10,r10,r2,LSL #5 / ADD r10,r10,r1 / CMP r8,#0 / CMPGT r9,#0 /& LDMFD (sp)!,{pc} /0 /:&.inkey STMFD (sp)!,{r0,r2,link} /D MOV r0,#129 /N MOV r2,#255 /X SWI "XOS_Byte" /b CMP r1,#255 /l$ LDMFD (sp)!,{r0,r2,pc} /v /�.plot_on_small_screen /�' STMFD (sp)!,{r0-r12,link} /� ADD r14,r2,#16 /� LDMIA r14,{r8,r9} /� ADD r8,r8,#1 /� MOV r8,r8,LSL #2 /� ADD r9,r9,#1 /�$ ADR r11,small_screen /� ADD r11,r11,r0 /�% ADD r11,r11,r1,LSL #6 /� LDR r12,[r2,#36] /� ADD r12,r12,r2 /�& LDR r2,one_one_one_one 0.plot_small_loop1 0 MOV r7,r8 0.plot_small_loop2 0 LDR r0,[r12],#4 0* � r0,r0,r2 04 LDR r1,[r11] 0> ADD r0,r1,r0 0H STR r0,[r11],#4 0R SUBS r7,r7,#4 0\$ BNE plot_small_loop2 0f SUB r11,r11,r8 0p ADD r11,r11,#64 0z SUBS r9,r9,#1 0�$ BNE plot_small_loop1 0�% LDMFD (sp)!,{r0-r12,pc} 0� 0�.check_for_overlap 0�' STMFD (sp)!,{r0-r12,link} 0�$ ADR r12,small_screen 0� MOV r11,#64*48 0�' LDR r14,two_two_two_two 0�.overlap_loop 0� LDMIA r12!,{r0-r7} 0� TST r0,r14 0� TSTEQ r1,r14 0� TSTEQ r2,r14 1 TSTEQ r3,r14 1 TSTEQ r4,r14 1 TSTEQ r5,r14 1$ TSTEQ r6,r14 1. TSTEQ r7,r14 18% LDMNEFD (sp)!,{r0-r12,pc} 1B SUBS r11,r11,#32 1L BNE overlap_loop 1V% LDMFD (sp)!,{r0-r12,pc} 1` 1j.one_one_one_one 1t DCD &11111111 1~.two_two_two_two 1� DCD &22222222 1� 1�.clear_small_screen 1�' STMFD (sp)!,{r0-r12,link} 1�$ ADR r12,small_screen 1� MOV r11,#64*48 1� MOV r0,#0 1� MOV r1,#0 1� MOV r2,#0 1� MOV r3,#0 1� MOV r4,#0 1� MOV r5,#0 2 MOV r6,#0 2 MOV r7,#0 2.clear_small_screen_loop 2 STMIA r12!,{r0-r7} 2( STMIA r12!,{r0-r7} 22 STMIA r12!,{r0-r7} 2< STMIA r12!,{r0-r7} 2F SUBS r11,r11,#128 2P+ BNE clear_small_screen_loop 2Z% LDMFD (sp)!,{r0-r12,pc} 2d] 2nroutine=�alloc(128,0) 2x small_screen=�alloc(64*48,0) 2�,alien_list=�alloc(max_aliens*dat_size,0) 2�!banks=�alloc(4*screen_size,0) 2�� pass% 2�� 2�: 2�� �new_game 2�!score=0 2��new_round 2�� 2�: 2�� �new_round 2�� i%=0 � max_aliens-1 2� a%=alien_list+i%*dat_size 3> � i%=max_aliens-1 a%!dat_next=0 � a%!dat_next=a%+dat_size 3� 3!list=0 3"!free=alien_list 3, � b=0 � 3 36' bank_dat!(4*b)=banks+b*screen_size 3@! � col%=0 � bytes_per_row � 4 3J# A%=banks+(screen_size*b)+col% 3T B%=col%+b 3^ C%=land 3h D%=scene_spr 3r � show_column 3| � 3�� 3�� i%=0 � pop%-1 3� a%=pop_dat%+24*i% 3� go1%=a%!16 3� go2%=a%!20 3� � go1%=-1 � 3� a%!12=a%!4-160 3� � 3� � go2%=-1 � 3� a%!12=a%!4-go1% 3� � 3�' a%!12=a%!4-(go2%+�(go1%-go2%)-1) 3� � 4 � 4� 40�add_alien(�identify_pattern("ship"),0,32,0) 4&!energy=max_energy 40� 4:: 4D� �add_alien(A%,B%,C%,D%) 4N� add_alien_to_list 4X� 4b: 4l� �alloc(size,align%) 4vȕ P% � 16<>align% 4� P%+=4 4�� 4�P%+=size 4�=P%-size 4�: 4�� �log2(a%)=�(a%)/�(2) �
00000000 0d 00 0a 0c f4 20 3e 52 6f 63 6b 79 0d 00 14 1b |..... >Rocky....| 00000010 f4 20 62 79 20 41 6e 74 6f 6e 79 20 42 72 75 63 |. by Antony Bruc| 00000020 65 20 4c 79 74 69 73 0d 00 1e 19 f4 20 66 6f 72 |e Lytis..... for| 00000030 20 33 32 20 62 69 74 20 6d 61 63 68 69 6e 65 73 | 32 bit machines| 00000040 0d 00 28 16 f4 20 28 63 29 20 42 41 55 20 4d 61 |..(.. (c) BAU Ma| 00000050 79 20 31 39 39 33 0d 00 32 05 3a 0d 00 3c 0b eb |y 1993..2.:..<..| 00000060 20 39 2b 31 32 38 0d 00 46 07 eb 20 39 0d 00 50 | 9+128..F.. 9..P| 00000070 05 87 0d 00 5a 11 f1 22 4c 6f 61 64 69 6e 67 2e |....Z.."Loading.| 00000080 2e 2e 22 0d 00 64 09 f2 69 6e 69 74 0d 00 6e 17 |.."..d..init..n.| 00000090 f2 6c 6f 61 64 5f 67 61 6d 65 28 22 52 6f 63 6b |.load_game("Rock| 000000a0 79 22 29 0d 00 78 08 f2 61 73 73 0d 00 82 10 f2 |y")..x..ass.....| 000000b0 73 65 74 5f 70 61 6c 65 74 74 65 0d 00 8c 10 68 |set_palette....h| 000000c0 69 67 68 5f 73 63 6f 72 65 3d 30 0d 00 96 05 f5 |igh_score=0.....| 000000d0 0d 00 a0 0f 20 e3 20 69 25 3d 31 20 b8 20 32 0d |.... . i%=1 . 2.| 000000e0 00 aa 19 20 20 c8 99 20 22 4f 53 5f 42 79 74 65 |... .. "OS_Byte| 000000f0 22 2c 31 31 32 2c 69 25 0d 00 b4 07 20 20 db 0d |",112,i%.... ..| 00000100 00 be 06 20 ed 0d 00 c8 17 20 c8 99 20 22 4f 53 |... ..... .. "OS| 00000110 5f 42 79 74 65 22 2c 31 31 33 2c 32 0d 00 d2 20 |_Byte",113,2... | 00000120 20 f2 63 65 6e 74 72 65 28 33 2c 22 52 6f 63 6b | .centre(3,"Rock| 00000130 79 20 54 72 61 64 65 22 2c 31 35 29 0d 00 dc 1a |y Trade",15)....| 00000140 20 f2 63 65 6e 74 72 65 28 37 2c 22 4b 65 79 73 | .centre(7,"Keys| 00000150 3a 22 2c 31 31 29 0d 00 e6 26 20 f2 63 65 6e 74 |:",11)...& .cent| 00000160 72 65 28 31 30 2c 22 55 70 20 20 20 20 20 2d 20 |re(10,"Up - | 00000170 20 41 20 20 20 20 20 22 2c 31 30 29 0d 00 f0 26 | A ",10)...&| 00000180 20 f2 63 65 6e 74 72 65 28 31 32 2c 22 44 6f 77 | .centre(12,"Dow| 00000190 6e 20 20 20 2d 20 20 5a 20 20 20 20 20 22 2c 31 |n - Z ",1| 000001a0 30 29 0d 00 fa 26 20 f2 63 65 6e 74 72 65 28 31 |0)...& .centre(1| 000001b0 34 2c 22 46 69 72 65 20 20 20 2d 20 20 52 45 54 |4,"Fire - RET| 000001c0 55 52 4e 22 2c 31 30 29 0d 01 04 26 20 f2 63 65 |URN",10)...& .ce| 000001d0 6e 74 72 65 28 31 36 2c 22 42 6f 6d 62 20 20 20 |ntre(16,"Bomb | 000001e0 2d 20 20 54 41 42 20 20 20 22 2c 31 30 29 0d 01 |- TAB ",10)..| 000001f0 0e 26 20 f2 63 65 6e 74 72 65 28 31 38 2c 22 54 |.& .centre(18,"T| 00000200 68 72 75 73 74 20 2d 20 20 53 48 49 46 54 20 22 |hrust - SHIFT "| 00000210 2c 31 30 29 0d 01 18 26 20 f2 63 65 6e 74 72 65 |,10)...& .centre| 00000220 28 32 30 2c 22 42 72 61 6b 65 20 20 2d 20 20 53 |(20,"Brake - S| 00000230 50 41 43 45 20 22 2c 31 30 29 0d 01 22 2e 20 f2 |PACE ",10)..". .| 00000240 63 65 6e 74 72 65 28 32 34 2c 22 48 69 67 68 20 |centre(24,"High | 00000250 73 63 6f 72 65 3a 20 22 2b c3 68 69 67 68 5f 73 |score: "+.high_s| 00000260 63 6f 72 65 2c 31 31 29 0d 01 2c 29 20 f2 63 65 |core,11)..,) .ce| 00000270 6e 74 72 65 28 32 39 2c 22 50 72 65 73 73 20 53 |ntre(29,"Press S| 00000280 50 41 43 45 20 74 6f 20 73 74 61 72 74 22 2c 31 |PACE to start",1| 00000290 29 0d 01 36 0b 20 2a 46 58 20 31 35 0d 01 40 0d |)..6. *FX 15..@.| 000002a0 20 f5 20 fd 20 a5 3d 33 32 0d 01 4a 0d 20 6c 69 | . . .=32..J. li| 000002b0 76 65 73 25 3d 33 0d 01 54 0e 20 f2 6e 65 77 5f |ves%=3..T. .new_| 000002c0 67 61 6d 65 0d 01 5e 08 20 fb 20 31 0d 01 68 06 |game..^. . 1..h.| 000002d0 20 f5 0d 01 72 10 20 20 f2 6e 65 77 5f 72 6f 75 | ...r. .new_rou| 000002e0 6e 64 0d 01 7c 14 20 20 72 65 73 75 6c 74 3d ba |nd..|. result=.| 000002f0 28 67 61 6d 65 29 0d 01 86 1a 20 20 e7 20 72 65 |(game).... . re| 00000300 73 75 6c 74 3d 30 20 6c 69 76 65 73 25 2d 3d 31 |sult=0 lives%-=1| 00000310 0d 01 90 12 20 20 e7 20 72 65 73 75 6c 74 3d 31 |.... . result=1| 00000320 20 8c 0d 01 9a 10 20 20 20 2a 46 58 20 31 31 32 | ..... *FX 112| 00000330 2c 31 0d 01 a4 10 20 20 20 2a 46 58 20 31 31 33 |,1.... *FX 113| 00000340 2c 31 0d 01 ae 08 20 20 20 db 0d 01 b8 21 20 20 |,1.... ....! | 00000350 20 f2 63 65 6e 74 72 65 28 38 2c 22 57 65 6c 6c | .centre(8,"Well| 00000360 20 64 6f 6e 65 21 22 2c 31 30 29 0d 01 c2 32 20 | done!",10)...2 | 00000370 20 20 f2 63 65 6e 74 72 65 28 31 32 2c 22 59 6f | .centre(12,"Yo| 00000380 75 20 63 6f 6d 70 6c 65 74 65 64 20 79 6f 75 72 |u completed your| 00000390 20 6d 69 73 73 69 6f 6e 22 2c 31 35 29 0d 01 cc | mission",15)...| 000003a0 2b 20 20 20 f2 63 65 6e 74 72 65 28 31 34 2c 22 |+ .centre(14,"| 000003b0 77 69 74 68 20 66 6c 79 69 6e 67 20 63 6f 6c 6f |with flying colo| 000003c0 75 72 73 22 2c 31 35 29 0d 01 d6 2f 20 20 20 f2 |urs",15).../ .| 000003d0 63 65 6e 74 72 65 28 32 30 2c 22 50 72 65 73 73 |centre(20,"Press| 000003e0 20 53 50 41 43 45 20 74 6f 20 74 72 79 20 61 67 | SPACE to try ag| 000003f0 61 69 6e 22 2c 31 29 0d 01 e0 0f 20 20 20 f5 20 |ain",1).... . | 00000400 fd 20 a5 3d 33 32 0d 01 ea 07 20 20 cd 0d 01 f4 |. .=32.... ....| 00000410 1b 20 fd 20 72 65 73 75 6c 74 3d 2d 31 20 84 20 |. . result=-1 . | 00000420 6c 69 76 65 73 25 3d 30 0d 01 fe 35 20 e7 20 6c |lives%=0...5 . l| 00000430 69 76 65 73 25 3d 30 20 80 20 21 73 63 6f 72 65 |ives%=0 . !score| 00000440 3e 68 69 67 68 5f 73 63 6f 72 65 20 68 69 67 68 |>high_score high| 00000450 5f 73 63 6f 72 65 3d 21 73 63 6f 72 65 0d 02 08 |_score=!score...| 00000460 07 fd 20 a3 0d 02 12 05 e0 0d 02 1c 05 3a 0d 02 |.. ..........:..| 00000470 26 12 dd 20 f2 73 65 74 5f 70 61 6c 65 74 74 65 |&.. .set_palette| 00000480 0d 02 30 37 c8 99 20 22 4f 53 5f 53 70 72 69 74 |..07.. "OS_Sprit| 00000490 65 4f 70 22 2c 26 31 31 38 2c 73 63 65 6e 65 72 |eOp",&118,scener| 000004a0 79 2c 22 70 61 6c 65 74 74 65 22 20 b8 20 2c 2c |y,"palette" . ,,| 000004b0 70 61 6c 5f 73 70 72 0d 02 3a 0e e3 20 69 3d 30 |pal_spr..:.. i=0| 000004c0 20 b8 20 31 35 0d 02 44 15 20 61 3d 70 61 6c 5f | . 15..D. a=pal_| 000004d0 73 70 72 2b 34 34 2b 38 2a 69 0d 02 4e 14 20 fb |spr+44+8*i..N. .| 000004e0 20 69 2c 61 3f 31 2c 61 3f 32 2c 61 3f 33 0d 02 | i,a?1,a?2,a?3..| 000004f0 58 05 ed 0d 02 62 05 e1 0d 02 6c 05 3a 0d 02 76 |X....b....l.:..v| 00000500 17 dd 20 f2 63 65 6e 74 72 65 28 79 25 2c 74 24 |.. .centre(y%,t$| 00000510 2c 63 25 29 0d 02 80 08 fb 20 63 25 0d 02 8a 17 |,c%)..... c%....| 00000520 f1 8a 32 30 2d a9 28 74 24 29 2f 32 2c 79 25 29 |..20-.(t$)/2,y%)| 00000530 3b 74 24 0d 02 94 05 e1 0d 02 9e 05 3a 0d 02 a8 |;t$.........:...| 00000540 0b dd 20 f2 69 6e 69 74 0d 02 b2 3d de 20 6c 61 |.. .init...=. la| 00000550 6e 64 20 36 34 2a 31 30 32 34 2c 73 63 65 6e 65 |nd 64*1024,scene| 00000560 72 79 20 36 34 2a 31 30 32 34 2c 73 63 65 6e 65 |ry 64*1024,scene| 00000570 5f 73 70 72 20 34 2a 32 35 36 2c 74 65 6d 70 25 |_spr 4*256,temp%| 00000580 20 26 31 30 30 0d 02 bc 14 21 73 63 65 6e 65 72 | &100....!scener| 00000590 79 3d 36 34 2a 31 30 32 34 0d 02 c6 0f 73 63 65 |y=64*1024....sce| 000005a0 6e 65 72 79 21 34 3d 30 0d 02 d0 10 73 63 65 6e |nery!4=0....scen| 000005b0 65 72 79 21 38 3d 31 36 0d 02 da 11 73 63 65 6e |ery!8=16....scen| 000005c0 65 72 79 21 31 32 3d 31 36 0d 02 e4 12 6d 61 78 |ery!12=16....max| 000005d0 5f 65 6e 65 72 67 79 3d 31 32 30 0d 02 ee 05 e1 |_energy=120.....| 000005e0 0d 02 f8 05 3a 0d 03 02 17 dd 20 f2 6c 6f 61 64 |....:..... .load| 000005f0 5f 67 61 6d 65 28 67 61 6d 65 24 29 0d 03 0c 09 |_game(game$)....| 00000600 ea 20 69 6e 25 0d 03 16 19 69 6e 25 3d 8e 28 22 |. in%....in%=.("| 00000610 47 61 6d 65 73 2e 22 2b 67 61 6d 65 24 29 0d 03 |Games."+game$)..| 00000620 20 0e c8 95 20 ac 20 c5 23 69 6e 25 0d 03 2a 15 | ... . .#in%..*.| 00000630 20 73 24 3d a4 73 74 72 69 70 28 be 23 69 6e 25 | s$=.strip(.#in%| 00000640 29 0d 03 34 10 20 69 25 3d a7 73 24 2c 22 3a 22 |)..4. i%=.s$,":"| 00000650 29 0d 03 3e 0d 20 e7 20 69 25 3e 30 20 8c 0d 03 |)..>. . i%>0 ...| 00000660 48 1a 20 20 72 24 3d a4 73 74 72 69 70 28 c1 73 |H. r$=.strip(.s| 00000670 24 2c 69 25 2b 31 29 29 0d 03 52 14 20 20 c8 8e |$,i%+1))..R. ..| 00000680 20 c0 73 24 2c 69 25 2d 31 29 20 ca 0d 03 5c 10 | .s$,i%-1) ...\.| 00000690 20 20 20 c9 20 22 4d 61 70 73 22 3a 0d 03 66 15 | . "Maps":..f.| 000006a0 20 20 20 20 f2 6c 6f 61 64 5f 6d 61 70 28 72 24 | .load_map(r$| 000006b0 29 0d 03 70 13 20 20 20 c9 20 22 53 70 72 69 74 |)..p. . "Sprit| 000006c0 65 73 22 3a 0d 03 7a 19 20 20 20 20 f2 6c 6f 61 |es":..z. .loa| 000006d0 64 5f 73 70 72 69 74 65 73 28 72 24 29 0d 03 84 |d_sprites(r$)...| 000006e0 14 20 20 20 c9 20 22 4d 6f 76 65 6d 65 6e 74 22 |. . "Movement"| 000006f0 3a 0d 03 8e 1a 20 20 20 20 f2 6c 6f 61 64 5f 6d |:.... .load_m| 00000700 6f 76 65 6d 65 6e 74 28 72 24 29 0d 03 98 14 20 |ovement(r$).... | 00000710 20 20 c9 20 22 50 61 74 74 65 72 6e 73 22 3a 0d | . "Patterns":.| 00000720 03 a2 1a 20 20 20 20 f2 6c 6f 61 64 5f 70 61 74 |... .load_pat| 00000730 74 65 72 6e 73 28 72 24 29 0d 03 ac 12 20 20 20 |terns(r$).... | 00000740 c9 20 22 4c 61 79 6f 75 74 22 3a 0d 03 b6 18 20 |. "Layout":.... | 00000750 20 20 20 f2 6c 6f 61 64 5f 6c 61 79 6f 75 74 28 | .load_layout(| 00000760 72 24 29 0d 03 c0 07 20 20 cb 0d 03 ca 06 20 cd |r$).... ..... .| 00000770 0d 03 d4 05 ce 0d 03 de 09 d9 23 69 6e 25 0d 03 |..........#in%..| 00000780 e8 05 e1 0d 03 f2 05 3a 0d 03 fc 1a dd 20 f2 6c |.......:..... .l| 00000790 6f 61 64 5f 73 70 72 69 74 65 73 28 66 69 6c 65 |oad_sprites(file| 000007a0 24 29 0d 04 06 32 c8 99 20 22 4f 53 5f 46 69 6c |$)...2.. "OS_Fil| 000007b0 65 22 2c 35 2c 22 53 70 72 69 74 65 73 2e 22 2b |e",5,"Sprites."+| 000007c0 66 69 6c 65 24 20 b8 20 2c 2c 2c 2c 73 70 72 5f |file$ . ,,,,spr_| 000007d0 6c 65 6e 25 0d 04 10 17 73 70 72 5f 6c 65 6e 25 |len%....spr_len%| 000007e0 3d 35 2a 73 70 72 5f 6c 65 6e 25 0d 04 1a 13 de |=5*spr_len%.....| 000007f0 20 73 70 72 25 20 73 70 72 5f 6c 65 6e 25 0d 04 | spr% spr_len%..| 00000800 24 12 21 73 70 72 25 3d 73 70 72 5f 6c 65 6e 25 |$.!spr%=spr_len%| 00000810 0d 04 2e 0c 73 70 72 25 21 34 3d 30 0d 04 38 0d |....spr%!4=0..8.| 00000820 73 70 72 25 21 38 3d 31 36 0d 04 42 0e 73 70 72 |spr%!8=16..B.spr| 00000830 25 21 31 32 3d 31 36 0d 04 4c 2f c8 99 20 22 4f |%!12=16..L/.. "O| 00000840 53 5f 53 70 72 69 74 65 4f 70 22 2c 26 31 30 41 |S_SpriteOp",&10A| 00000850 2c 73 70 72 25 2c 22 53 70 72 69 74 65 73 2e 22 |,spr%,"Sprites."| 00000860 2b 66 69 6c 65 24 0d 04 56 2c c8 99 20 22 4f 53 |+file$..V,.. "OS| 00000870 5f 53 70 72 69 74 65 4f 70 22 2c 26 31 30 38 2c |_SpriteOp",&108,| 00000880 73 70 72 25 20 b8 20 2c 2c 2c 73 70 72 69 74 65 |spr% . ,,,sprite| 00000890 73 25 0d 04 60 1b de 20 73 70 72 5f 6e 61 6d 65 |s%..`.. spr_name| 000008a0 24 28 73 70 72 69 74 65 73 25 2d 31 29 0d 04 6a |$(sprites%-1)..j| 000008b0 17 e3 20 69 25 3d 30 20 b8 20 73 70 72 69 74 65 |.. i%=0 . sprite| 000008c0 73 25 2d 31 0d 04 74 37 20 c8 99 20 22 4f 53 5f |s%-1..t7 .. "OS_| 000008d0 53 70 72 69 74 65 4f 70 22 2c 26 31 30 44 2c 73 |SpriteOp",&10D,s| 000008e0 70 72 25 2c 74 65 6d 70 25 2c 26 31 30 30 2c 69 |pr%,temp%,&100,i| 000008f0 25 2b 31 20 b8 20 2c 2c 2c 6a 25 0d 04 7e 10 20 |%+1 . ,,,j%..~. | 00000900 74 65 6d 70 25 3f 6a 25 3d 31 33 0d 04 88 19 20 |temp%?j%=13.... | 00000910 73 70 72 5f 6e 61 6d 65 24 28 69 25 29 3d 24 74 |spr_name$(i%)=$t| 00000920 65 6d 70 25 0d 04 92 05 ed 0d 04 9c 17 e3 20 69 |emp%.......... i| 00000930 25 3d 30 20 b8 20 73 70 72 69 74 65 73 25 2d 31 |%=0 . sprites%-1| 00000940 0d 04 a6 37 20 e7 20 73 70 72 5f 6e 61 6d 65 24 |...7 . spr_name$| 00000950 28 69 25 29 3c 3e 22 21 22 20 80 20 c0 73 70 72 |(i%)<>"!" . .spr| 00000960 5f 6e 61 6d 65 24 28 69 25 29 2c 34 29 3c 3e 22 |_name$(i%),4)<>"| 00000970 66 61 64 65 22 20 8c 0d 04 b0 4a 20 20 e7 20 a9 |fade" ....J . .| 00000980 28 73 70 72 5f 6e 61 6d 65 24 28 69 25 29 29 3d |(spr_name$(i%))=| 00000990 31 32 20 72 6f 6f 74 24 3d c0 73 70 72 5f 6e 61 |12 root$=.spr_na| 000009a0 6d 65 24 28 69 25 29 2c 31 31 29 20 8b 20 72 6f |me$(i%),11) . ro| 000009b0 6f 74 24 3d 73 70 72 5f 6e 61 6d 65 24 28 69 25 |ot$=spr_name$(i%| 000009c0 29 0d 04 ba 38 20 20 c8 99 20 22 4f 53 5f 53 70 |)...8 .. "OS_Sp| 000009d0 72 69 74 65 4f 70 22 2c 26 31 31 41 2c 73 70 72 |riteOp",&11A,spr| 000009e0 25 2c 73 70 72 5f 6e 61 6d 65 24 28 69 25 29 2c |%,spr_name$(i%),| 000009f0 72 6f 6f 74 24 2b 22 61 22 0d 04 c4 10 20 20 e3 |root$+"a".... .| 00000a00 20 6a 25 3d 31 20 b8 20 33 0d 04 ce 1e 20 20 20 | j%=1 . 3.... | 00000a10 73 68 69 66 74 24 3d 72 6f 6f 74 24 2b bd 28 97 |shift$=root$+.(.| 00000a20 22 61 22 2b 6a 25 29 0d 04 d8 32 20 20 20 c8 99 |"a"+j%)...2 ..| 00000a30 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c 26 | "OS_SpriteOp",&| 00000a40 31 31 42 2c 73 70 72 25 2c 72 6f 6f 74 24 2b 22 |11B,spr%,root$+"| 00000a50 61 22 2c 73 68 69 66 74 24 0d 04 e2 14 20 20 20 |a",shift$.... | 00000a60 e3 20 6b 25 3d 31 20 b8 20 32 2a 6a 25 0d 04 ec |. k%=1 . 2*j%...| 00000a70 2b 20 20 20 20 c8 99 20 22 4f 53 5f 53 70 72 69 |+ .. "OS_Spri| 00000a80 74 65 4f 70 22 2c 26 31 32 44 2c 73 70 72 25 2c |teOp",&12D,spr%,| 00000a90 73 68 69 66 74 24 2c 30 0d 04 f6 08 20 20 20 ed |shift$,0.... .| 00000aa0 0d 05 00 07 20 20 ed 0d 05 0a 10 20 20 e3 20 6a |.... ..... . j| 00000ab0 25 3d 30 20 b8 20 33 0d 05 14 1e 20 20 20 73 68 |%=0 . 3.... sh| 00000ac0 69 66 74 24 3d 72 6f 6f 74 24 2b bd 28 97 22 61 |ift$=root$+.(."a| 00000ad0 22 2b 6a 25 29 0d 05 1e 08 20 20 20 f5 0d 05 28 |"+j%).... ...(| 00000ae0 34 20 20 20 20 c8 99 20 22 4f 53 5f 53 70 72 69 |4 .. "OS_Spri| 00000af0 74 65 4f 70 22 2c 26 31 32 38 2c 73 70 72 25 2c |teOp",&128,spr%,| 00000b00 73 68 69 66 74 24 20 b8 20 2c 2c 2c 77 25 2c 68 |shift$ . ,,,w%,h| 00000b10 25 0d 05 32 38 20 20 20 20 e7 20 77 25 20 83 20 |%..28 . w% . | 00000b20 38 3c 3e 30 20 c8 99 20 22 4f 53 5f 53 70 72 69 |8<>0 .. "OS_Spri| 00000b30 74 65 4f 70 22 2c 26 31 32 44 2c 73 70 72 25 2c |teOp",&12D,spr%,| 00000b40 73 68 69 66 74 24 2c 77 25 0d 05 3c 11 20 20 20 |shift$,w%..<. | 00000b50 fd 20 77 25 20 83 20 38 3d 30 0d 05 46 07 20 20 |. w% . 8=0..F. | 00000b60 ed 0d 05 50 06 20 cd 0d 05 5a 05 ed 0d 05 64 13 |...P. ...Z....d.| 00000b70 66 61 64 65 5f 73 74 61 67 65 73 25 3d 31 32 0d |fade_stages%=12.| 00000b80 05 6e 1d de 20 66 61 64 65 5f 74 61 62 20 34 2a |.n.. fade_tab 4*| 00000b90 66 61 64 65 5f 73 74 61 67 65 73 25 0d 05 78 1b |fade_stages%..x.| 00000ba0 e3 20 69 25 3d 30 20 b8 20 66 61 64 65 5f 73 74 |. i%=0 . fade_st| 00000bb0 61 67 65 73 25 2d 31 0d 05 82 42 20 c8 99 20 22 |ages%-1...B .. "| 00000bc0 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c 26 31 31 |OS_SpriteOp",&11| 00000bd0 38 2c 73 70 72 25 2c 22 66 61 64 65 22 2b c3 28 |8,spr%,"fade"+.(| 00000be0 69 25 2b 31 29 20 b8 20 2c 2c 66 61 64 65 5f 74 |i%+1) . ,,fade_t| 00000bf0 61 62 21 28 34 2a 69 25 29 0d 05 8c 05 ed 0d 05 |ab!(4*i%).......| 00000c00 96 05 e1 0d 05 a0 05 3a 0d 05 aa 1b dd 20 f2 6c |.......:..... .l| 00000c10 6f 61 64 5f 6d 6f 76 65 6d 65 6e 74 28 66 69 6c |oad_movement(fil| 00000c20 65 24 29 0d 05 b4 09 ea 20 69 6e 25 0d 05 be 10 |e$)..... in%....| 00000c30 6d 6f 76 65 6d 65 6e 74 73 25 3d 30 0d 05 c8 47 |movements%=0...G| 00000c40 de 20 6d 6f 76 65 5f 6e 61 6d 65 24 28 32 35 35 |. move_name$(255| 00000c50 29 2c 6d 6f 76 65 5f 64 61 74 25 20 26 31 30 30 |),move_dat% &100| 00000c60 30 2c 6d 6f 76 65 5f 70 74 72 25 20 26 34 30 30 |0,move_ptr% &400| 00000c70 2c 6d 6f 76 65 5f 73 70 72 69 74 65 25 20 26 31 |,move_sprite% &1| 00000c80 30 30 30 0d 05 d2 1c 69 6e 25 3d 8e 28 22 4d 6f |000....in%=.("Mo| 00000c90 76 65 6d 65 6e 74 2e 22 2b 66 69 6c 65 24 29 0d |vement."+file$).| 00000ca0 05 dc 10 70 25 3d 6d 6f 76 65 5f 64 61 74 25 0d |...p%=move_dat%.| 00000cb0 05 e6 0e c8 95 20 ac 20 c5 23 69 6e 25 0d 05 f0 |..... . .#in%...| 00000cc0 15 20 73 24 3d a4 73 74 72 69 70 28 be 23 69 6e |. s$=.strip(.#in| 00000cd0 25 29 0d 05 fa 1d 20 e7 20 c0 73 24 2c 31 29 3c |%).... . .s$,1)<| 00000ce0 3e 22 3b 22 20 80 20 73 24 3c 3e 22 22 20 8c 0d |>";" . s$<>"" ..| 00000cf0 06 04 18 20 20 70 61 72 31 24 3d a4 67 65 74 5f |... par1$=.get_| 00000d00 70 61 72 28 73 24 29 0d 06 0e 18 20 20 70 61 72 |par(s$).... par| 00000d10 32 24 3d a4 67 65 74 5f 70 61 72 28 73 24 29 0d |2$=.get_par(s$).| 00000d20 06 18 18 20 20 70 61 72 33 24 3d a4 67 65 74 5f |... par3$=.get_| 00000d30 70 61 72 28 73 24 29 0d 06 22 2a 20 20 e7 20 70 |par(s$).."* . p| 00000d40 61 72 33 24 3d 22 22 20 8c 20 70 61 72 33 24 3d |ar3$="" . par3$=| 00000d50 70 61 72 32 24 3a 70 61 72 32 24 3d 70 61 72 31 |par2$:par2$=par1| 00000d60 24 0d 06 2c 22 20 20 6d 6f 76 65 5f 6e 61 6d 65 |$..," move_name| 00000d70 24 28 6d 6f 76 65 6d 65 6e 74 73 25 29 3d 70 61 |$(movements%)=pa| 00000d80 72 31 24 0d 06 36 10 20 20 e3 20 69 25 3d 30 20 |r1$..6. . i%=0 | 00000d90 b8 20 33 0d 06 40 3a 20 20 20 c8 99 20 22 4f 53 |. 3..@: .. "OS| 00000da0 5f 53 70 72 69 74 65 4f 70 22 2c 26 31 31 38 2c |_SpriteOp",&118,| 00000db0 73 70 72 25 2c 70 61 72 32 24 2b bd 28 97 22 61 |spr%,par2$+.(."a| 00000dc0 22 2b 69 25 29 20 b8 20 2c 2c 73 61 25 0d 06 4a |"+i%) . ,,sa%..J| 00000dd0 2c 20 20 20 6d 6f 76 65 5f 73 70 72 69 74 65 25 |, move_sprite%| 00000de0 21 28 31 36 2a 6d 6f 76 65 6d 65 6e 74 73 25 2b |!(16*movements%+| 00000df0 34 2a 69 25 29 3d 73 61 25 0d 06 54 07 20 20 ed |4*i%)=sa%..T. .| 00000e00 0d 06 5e 21 20 20 6d 6f 76 65 5f 70 74 72 25 21 |..^! move_ptr%!| 00000e10 28 34 2a 6d 6f 76 65 6d 65 6e 74 73 25 29 3d 70 |(4*movements%)=p| 00000e20 25 0d 06 68 15 20 20 70 61 72 33 24 3d c1 70 61 |%..h. par3$=.pa| 00000e30 72 33 24 2c 33 29 0d 06 72 12 20 20 c8 95 20 70 |r3$,3)..r. .. p| 00000e40 61 72 33 24 3c 3e 22 22 0d 06 7c 12 20 20 20 61 |ar3$<>""..|. a| 00000e50 25 3d 97 28 70 61 72 33 24 29 0d 06 86 32 20 20 |%=.(par3$)...2 | 00000e60 20 e7 20 61 25 3e 39 36 20 8c 20 3f 70 25 3d 31 | . a%>96 . ?p%=1| 00000e70 32 37 2d 28 61 25 2d 39 36 29 20 8b 20 3f 70 25 |27-(a%-96) . ?p%| 00000e80 3d 31 32 37 2b 28 61 25 2d 36 34 29 0d 06 90 0c |=127+(a%-64)....| 00000e90 20 20 20 70 25 2b 3d 31 0d 06 9a 16 20 20 20 70 | p%+=1.... p| 00000ea0 61 72 33 24 3d c1 70 61 72 33 24 2c 32 29 0d 06 |ar3$=.par3$,2)..| 00000eb0 a4 07 20 20 ce 0d 06 ae 0e 20 20 70 25 3f 30 3d |.. ..... p%?0=| 00000ec0 26 46 46 0d 06 b8 0e 20 20 70 25 3f 31 3d 26 46 |&FF.... p%?1=&F| 00000ed0 46 0d 06 c2 0b 20 20 70 25 2b 3d 32 0d 06 cc 13 |F.... p%+=2....| 00000ee0 20 20 6d 6f 76 65 6d 65 6e 74 73 25 2b 3d 31 0d | movements%+=1.| 00000ef0 06 d6 06 20 cd 0d 06 e0 05 ce 0d 06 ea 09 d9 23 |... ...........#| 00000f00 69 6e 25 0d 06 f4 05 e1 0d 06 fe 05 3a 0d 07 08 |in%.........:...| 00000f10 1f dd 20 a4 69 64 65 6e 74 69 66 79 5f 6d 6f 76 |.. .identify_mov| 00000f20 65 6d 65 6e 74 28 6d 6f 76 65 24 29 0d 07 12 0f |ement(move$)....| 00000f30 ea 20 69 25 2c 66 6f 75 6e 64 25 0d 07 1c 0c 66 |. i%,found%....f| 00000f40 6f 75 6e 64 25 3d a3 0d 07 26 08 69 25 3d 30 0d |ound%=...&.i%=0.| 00000f50 07 30 1a e7 20 6d 6f 76 65 24 3d 22 28 4c 4f 4f |.0.. move$="(LOO| 00000f60 50 29 22 20 8c 20 3d 2d 32 0d 07 3a 1f c8 95 20 |P)" . =-2..:... | 00000f70 69 25 3c 6d 6f 76 65 6d 65 6e 74 73 25 20 80 20 |i%<movements% . | 00000f80 ac 20 66 6f 75 6e 64 25 0d 07 44 2e 20 e7 20 6d |. found%..D. . m| 00000f90 6f 76 65 5f 6e 61 6d 65 24 28 69 25 29 3d 6d 6f |ove_name$(i%)=mo| 00000fa0 76 65 24 20 8c 20 66 6f 75 6e 64 25 3d b9 20 8b |ve$ . found%=. .| 00000fb0 20 69 25 2b 3d 31 0d 07 4e 05 ce 0d 07 58 36 e7 | i%+=1..N....X6.| 00000fc0 20 ac 20 66 6f 75 6e 64 25 20 8c 20 85 20 30 2c | . found% . . 0,| 00000fd0 22 44 6f 6e 27 74 20 6b 6e 6f 77 20 6d 6f 76 65 |"Don't know move| 00000fe0 6d 65 6e 74 20 27 22 2b 6d 6f 76 65 24 2b 22 27 |ment '"+move$+"'| 00000ff0 22 0d 07 62 07 3d 69 25 0d 07 6c 05 3a 0d 07 76 |"..b.=i%..l.:..v| 00001000 1d dd 20 a4 69 64 65 6e 74 69 66 79 5f 70 61 74 |.. .identify_pat| 00001010 74 65 72 6e 28 70 61 74 24 29 0d 07 80 0f ea 20 |tern(pat$)..... | 00001020 69 25 2c 66 6f 75 6e 64 25 0d 07 8a 0c 66 6f 75 |i%,found%....fou| 00001030 6e 64 25 3d a3 0d 07 94 08 69 25 3d 30 0d 07 9e |nd%=.....i%=0...| 00001040 1e c8 95 20 69 25 3c 70 61 74 74 65 72 6e 73 25 |... i%<patterns%| 00001050 20 80 20 ac 20 66 6f 75 6e 64 25 0d 07 a8 2c 20 | . . found%..., | 00001060 e7 20 70 61 74 5f 6e 61 6d 65 24 28 69 25 29 3d |. pat_name$(i%)=| 00001070 70 61 74 24 20 8c 20 66 6f 75 6e 64 25 3d b9 20 |pat$ . found%=. | 00001080 8b 20 69 25 2b 3d 31 0d 07 b2 05 ce 0d 07 bc 34 |. i%+=1........4| 00001090 e7 20 ac 20 66 6f 75 6e 64 25 20 8c 20 85 20 30 |. . found% . . 0| 000010a0 2c 22 44 6f 6e 27 74 20 6b 6e 6f 77 20 70 61 74 |,"Don't know pat| 000010b0 74 65 72 6e 20 27 22 2b 70 61 74 24 2b 22 27 22 |tern '"+pat$+"'"| 000010c0 0d 07 c6 07 3d 69 25 0d 07 d0 05 3a 0d 07 da 14 |....=i%....:....| 000010d0 dd 20 a4 67 65 74 5f 70 61 72 28 f8 20 73 24 29 |. .get_par(. s$)| 000010e0 0d 07 e4 0b ea 20 70 24 2c 69 25 0d 07 ee 11 73 |..... p$,i%....s| 000010f0 24 3d a4 73 74 72 69 70 28 73 24 29 0d 07 f8 0f |$=.strip(s$)....| 00001100 69 25 3d a7 73 24 2c 22 20 22 29 0d 08 02 4c e7 |i%=.s$," ")...L.| 00001110 20 69 25 3d 30 20 8c 20 70 24 3d a4 73 74 72 69 | i%=0 . p$=.stri| 00001120 70 28 73 24 29 3a 73 24 3d 22 22 20 8b 20 70 24 |p(s$):s$="" . p$| 00001130 3d a4 73 74 72 69 70 28 c0 73 24 2c 69 25 2d 31 |=.strip(.s$,i%-1| 00001140 29 29 3a 73 24 3d a4 73 74 72 69 70 28 c1 73 24 |)):s$=.strip(.s$| 00001150 2c 69 25 2b 31 29 29 0d 08 0c 07 3d 70 24 0d 08 |,i%+1))....=p$..| 00001160 16 05 3a 0d 08 20 19 dd 20 f2 6c 6f 61 64 5f 6c |..:.. .. .load_l| 00001170 61 79 6f 75 74 28 66 69 6c 65 24 29 0d 08 2a 09 |ayout(file$)..*.| 00001180 ea 20 69 6e 25 0d 08 34 1a 69 6e 25 3d 8e 28 22 |. in%..4.in%=.("| 00001190 4c 61 79 6f 75 74 2e 22 2b 66 69 6c 65 24 29 0d |Layout."+file$).| 000011a0 08 3e 09 6d 25 3d 2d 31 0d 08 48 11 6d 61 78 5f |.>.m%=-1..H.max_| 000011b0 70 6f 70 25 3d 31 30 32 34 0d 08 52 37 de 20 6c |pop%=1024..R7. l| 000011c0 61 79 6f 75 74 5f 70 61 74 25 28 32 35 35 29 2c |ayout_pat%(255),| 000011d0 70 6f 70 5f 64 61 74 25 20 32 34 2a 6d 61 78 5f |pop_dat% 24*max_| 000011e0 70 6f 70 25 2c 6c 61 79 5f 70 61 72 25 28 35 29 |pop%,lay_par%(5)| 000011f0 0d 08 5c 0a 70 6f 70 25 3d 30 0d 08 66 0b 6c 69 |..\.pop%=0..f.li| 00001200 6e 65 25 3d 30 0d 08 70 0b 62 61 64 24 3d 22 22 |ne%=0..p.bad$=""| 00001210 0d 08 7a 18 c8 95 20 ac 20 c5 23 69 6e 25 20 80 |..z... . .#in% .| 00001220 20 62 61 64 24 3d 22 22 0d 08 84 15 20 73 24 3d | bad$="".... s$=| 00001230 a4 73 74 72 69 70 28 be 23 69 6e 25 29 0d 08 8e |.strip(.#in%)...| 00001240 0c 20 c8 8e 20 73 24 20 ca 0d 08 98 18 20 20 c9 |. .. s$ ..... .| 00001250 20 22 50 61 74 74 65 72 6e 73 3a 22 3a 6d 25 3d | "Patterns:":m%=| 00001260 30 0d 08 a2 16 20 20 c9 20 22 4c 61 79 6f 75 74 |0.... . "Layout| 00001270 3a 22 3a 6d 25 3d 31 0d 08 ac 06 20 7f 0d 08 b6 |:":m%=1.... ....| 00001280 10 20 20 e7 20 73 24 3c 3e 22 22 20 8c 0d 08 c0 |. . s$<>"" ....| 00001290 0e 20 20 20 c8 8e 20 6d 25 20 ca 0d 08 ca 0c 20 |. .. m% ..... | 000012a0 20 20 20 c9 20 30 3a 0d 08 d4 14 20 20 20 20 20 | . 0:.... | 000012b0 69 25 3d a7 73 24 2c 22 20 22 29 0d 08 de 47 20 |i%=.s$," ")...G | 000012c0 20 20 20 20 6c 61 79 6f 75 74 5f 70 61 74 25 28 | layout_pat%(| 000012d0 bb 28 c1 73 24 2c 69 25 2b 31 29 29 29 3d a4 69 |.(.s$,i%+1)))=.i| 000012e0 64 65 6e 74 69 66 79 5f 70 61 74 74 65 72 6e 28 |dentify_pattern(| 000012f0 a4 73 74 72 69 70 28 c0 73 24 2c 69 25 2d 31 29 |.strip(.s$,i%-1)| 00001300 29 29 0d 08 e8 0c 20 20 20 20 c9 20 31 3a 0d 08 |)).... . 1:..| 00001310 f2 13 20 20 20 20 20 e3 20 69 25 3d 30 20 b8 20 |.. . i%=0 . | 00001320 35 0d 08 fc 16 20 20 20 20 20 20 e7 20 69 25 3d |5.... . i%=| 00001330 33 20 69 25 2b 3d 31 0d 09 06 27 20 20 20 20 20 |3 i%+=1...' | 00001340 20 6c 61 79 5f 70 61 72 25 28 69 25 29 3d a4 67 | lay_par%(i%)=.g| 00001350 65 74 5f 6e 75 6d 5f 70 61 72 28 73 24 29 0d 09 |et_num_par(s$)..| 00001360 10 0a 20 20 20 20 20 ed 0d 09 1a 46 20 20 20 20 |.. ....F | 00001370 20 e7 20 6c 61 79 5f 70 61 72 25 28 32 29 3d 2d | . lay_par%(2)=-| 00001380 31 20 62 61 64 24 3d 22 6e 6f 74 20 65 6e 6f 75 |1 bad$="not enou| 00001390 67 68 20 70 61 72 61 6d 65 74 65 72 73 22 3a 62 |gh parameters":b| 000013a0 61 64 5f 6c 69 6e 65 25 3d 6c 69 6e 65 25 0d 09 |ad_line%=line%..| 000013b0 24 2d 20 20 20 20 20 6c 61 79 5f 70 61 72 25 28 |$- lay_par%(| 000013c0 30 29 3d 6c 61 79 6f 75 74 5f 70 61 74 25 28 6c |0)=layout_pat%(l| 000013d0 61 79 5f 70 61 72 25 28 30 29 29 0d 09 2e 24 20 |ay_par%(0))...$ | 000013e0 20 20 20 20 6c 61 79 5f 70 61 72 25 28 31 29 3d | lay_par%(1)=| 000013f0 6c 61 79 5f 70 61 72 25 28 31 29 20 81 20 32 0d |lay_par%(1) . 2.| 00001400 09 38 27 20 20 20 20 20 6c 61 79 5f 70 61 72 25 |.8' lay_par%| 00001410 28 32 29 3d 32 34 30 2d 31 36 2d 6c 61 79 5f 70 |(2)=240-16-lay_p| 00001420 61 72 25 28 32 29 0d 09 42 13 20 20 20 20 20 e3 |ar%(2)..B. .| 00001430 20 69 25 3d 30 20 b8 20 35 0d 09 4c 2e 20 20 20 | i%=0 . 5..L. | 00001440 20 20 20 70 6f 70 5f 64 61 74 25 21 28 32 34 2a | pop_dat%!(24*| 00001450 70 6f 70 25 2b 34 2a 69 25 29 3d 6c 61 79 5f 70 |pop%+4*i%)=lay_p| 00001460 61 72 25 28 69 25 29 0d 09 56 0a 20 20 20 20 20 |ar%(i%)..V. | 00001470 ed 0d 09 60 10 20 20 20 20 20 70 6f 70 25 2b 3d |...`. pop%+=| 00001480 31 0d 09 6a 08 20 20 20 7f 0d 09 74 42 20 20 20 |1..j. ...tB | 00001490 20 e7 20 c0 73 24 2c 31 29 3c 3e 22 3b 22 20 80 | . .s$,1)<>";" .| 000014a0 20 73 24 3c 3e 22 22 20 62 61 64 24 3d 22 73 79 | s$<>"" bad$="sy| 000014b0 6e 74 61 78 20 65 72 72 6f 72 22 3a 62 61 64 5f |ntax error":bad_| 000014c0 6c 69 6e 65 25 3d 6c 69 6e 65 25 0d 09 7e 08 20 |line%=line%..~. | 000014d0 20 20 cb 0d 09 88 07 20 20 cd 0d 09 92 06 20 cb | ..... ..... .| 000014e0 0d 09 9c 0d 20 6c 69 6e 65 25 2b 3d 31 0d 09 a6 |.... line%+=1...| 000014f0 05 ce 0d 09 b0 09 d9 23 69 6e 25 0d 09 ba 47 e7 |.......#in%...G.| 00001500 20 62 61 64 24 3c 3e 22 22 20 85 20 30 2c 22 45 | bad$<>"" . 0,"E| 00001510 72 72 6f 72 20 69 6e 20 6c 61 79 6f 75 74 20 66 |rror in layout f| 00001520 69 6c 65 3a 20 22 2b 62 61 64 24 2b 22 20 61 74 |ile: "+bad$+" at| 00001530 20 6c 69 6e 65 20 22 2b c3 62 61 64 5f 6c 69 6e | line "+.bad_lin| 00001540 65 25 0d 09 c4 19 70 6f 70 5f 64 61 74 25 21 28 |e%....pop_dat%!(| 00001550 32 34 2a 70 6f 70 25 29 3d 2d 31 0d 09 ce 05 e1 |24*pop%)=-1.....| 00001560 0d 09 d8 05 3a 0d 09 e2 18 dd 20 a4 67 65 74 5f |....:..... .get_| 00001570 6e 75 6d 5f 70 61 72 28 f8 20 73 24 29 0d 09 ec |num_par(. s$)...| 00001580 08 ea 20 6e 25 0d 09 f6 11 73 24 3d a4 73 74 72 |.. n%....s$=.str| 00001590 69 70 28 73 24 29 0d 0a 00 11 e7 20 73 24 3d 22 |ip(s$)..... s$="| 000015a0 22 20 8c 20 3d 2d 31 0d 0a 0a 0c 6e 25 3d bb 28 |" . =-1....n%=.(| 000015b0 73 24 29 0d 0a 14 16 73 24 3d c1 73 24 2c a7 73 |s$)....s$=.s$,.s| 000015c0 24 2c 22 20 22 29 2b 31 29 0d 0a 1e 07 3d 6e 25 |$," ")+1)....=n%| 000015d0 0d 0a 28 05 3a 0d 0a 32 1b dd 20 f2 6c 6f 61 64 |..(.:..2.. .load| 000015e0 5f 70 61 74 74 65 72 6e 73 28 66 69 6c 65 24 29 |_patterns(file$)| 000015f0 0d 0a 3c 09 ea 20 69 6e 25 0d 0a 46 31 de 20 70 |..<.. in%..F1. p| 00001600 61 74 5f 6e 61 6d 65 24 28 32 35 35 29 2c 70 61 |at_name$(255),pa| 00001610 74 5f 64 61 74 25 20 26 31 30 30 30 2c 70 61 74 |t_dat% &1000,pat| 00001620 5f 70 74 72 25 20 26 34 30 30 0d 0a 50 0f 70 61 |_ptr% &400..P.pa| 00001630 74 74 65 72 6e 73 25 3d 30 0d 0a 5a 0f 70 25 3d |tterns%=0..Z.p%=| 00001640 70 61 74 5f 64 61 74 25 0d 0a 64 0b 62 61 64 24 |pat_dat%..d.bad$| 00001650 3d 22 22 0d 0a 6e 1c 69 6e 25 3d 8e 28 22 50 61 |=""..n.in%=.("Pa| 00001660 74 74 65 72 6e 73 2e 22 2b 66 69 6c 65 24 29 0d |tterns."+file$).| 00001670 0a 78 0b 6c 69 6e 65 25 3d 30 0d 0a 82 0f 63 75 |.x.line%=0....cu| 00001680 72 5f 70 61 74 25 3d 2d 31 0d 0a 8c 0e c8 95 20 |r_pat%=-1...... | 00001690 ac 20 c5 23 69 6e 25 0d 0a 96 0d 20 73 24 3d be |. .#in%.... s$=.| 000016a0 23 69 6e 25 0d 0a a0 1d 20 e7 20 c0 73 24 2c 31 |#in%.... . .s$,1| 000016b0 29 3c 3e 22 3b 22 20 80 20 73 24 3c 3e 22 22 20 |)<>";" . s$<>"" | 000016c0 8c 0d 0a aa 15 20 20 e7 20 c0 73 24 2c 31 29 3c |..... . .s$,1)<| 000016d0 3e 22 20 22 20 8c 0d 0a b4 24 20 20 20 e7 20 63 |>" " ....$ . c| 000016e0 75 72 5f 70 61 74 25 3c 3e 2d 31 20 8c 20 21 70 |ur_pat%<>-1 . !p| 000016f0 25 3d 2d 31 3a 70 25 2b 3d 34 0d 0a be 19 20 20 |%=-1:p%+=4.... | 00001700 20 63 75 72 5f 70 61 74 25 3d 70 61 74 74 65 72 | cur_pat%=patter| 00001710 6e 73 25 0d 0a c8 27 20 20 20 70 61 74 5f 6e 61 |ns%...' pat_na| 00001720 6d 65 24 28 63 75 72 5f 70 61 74 25 29 3d a4 67 |me$(cur_pat%)=.g| 00001730 65 74 5f 70 61 72 28 73 24 29 0d 0a d2 1f 20 20 |et_par(s$).... | 00001740 20 70 61 74 5f 70 74 72 25 21 28 34 2a 63 75 72 | pat_ptr%!(4*cur| 00001750 5f 70 61 74 25 29 3d 70 25 0d 0a dc 13 20 20 20 |_pat%)=p%.... | 00001760 70 61 74 74 65 72 6e 73 25 2b 3d 31 0d 0a e6 07 |patterns%+=1....| 00001770 20 20 cd 0d 0a f0 1e 20 20 e7 20 73 24 3c 3e 22 | ..... . s$<>"| 00001780 22 20 80 20 70 61 74 74 65 72 6e 73 25 3d 30 20 |" . patterns%=0 | 00001790 8c 0d 0a fa 1a 20 20 20 62 61 64 24 3d 22 73 79 |..... bad$="sy| 000017a0 6e 74 61 78 20 65 72 72 6f 72 22 0d 0b 04 16 20 |ntax error".... | 000017b0 20 20 62 61 64 5f 6c 69 6e 65 25 3d 6c 69 6e 65 | bad_line%=line| 000017c0 25 0d 0b 0e 07 20 20 cc 0d 0b 18 19 20 20 20 70 |%.... ..... p| 000017d0 61 72 31 24 3d a4 67 65 74 5f 70 61 72 28 73 24 |ar1$=.get_par(s$| 000017e0 29 0d 0b 22 19 20 20 20 70 61 72 32 24 3d a4 67 |)..". par2$=.g| 000017f0 65 74 5f 70 61 72 28 73 24 29 0d 0b 2c 19 20 20 |et_par(s$)..,. | 00001800 20 70 61 72 33 24 3d a4 67 65 74 5f 70 61 72 28 | par3$=.get_par(| 00001810 73 24 29 0d 0b 36 24 20 20 20 21 70 25 3d a4 69 |s$)..6$ !p%=.i| 00001820 64 65 6e 74 69 66 79 5f 6d 6f 76 65 6d 65 6e 74 |dentify_movement| 00001830 28 70 61 72 31 24 29 0d 0b 40 2a 20 20 20 e7 20 |(par1$)..@* . | 00001840 70 61 72 32 24 3c 3e 22 22 20 70 25 21 34 3d bb |par2$<>"" p%!4=.| 00001850 28 70 61 72 32 24 29 20 8b 20 70 25 21 34 3d 2d |(par2$) . p%!4=-| 00001860 31 0d 0b 4a 2a 20 20 20 e7 20 70 61 72 33 24 3c |1..J* . par3$<| 00001870 3e 22 22 20 70 25 21 38 3d bb 28 70 61 72 33 24 |>"" p%!8=.(par3$| 00001880 29 20 8b 20 70 25 21 38 3d 2d 31 0d 0b 54 0d 20 |) . p%!8=-1..T. | 00001890 20 20 70 25 2b 3d 31 32 0d 0b 5e 07 20 20 cd 0d | p%+=12..^. ..| 000018a0 0b 68 06 20 cd 0d 0b 72 0d 20 6c 69 6e 65 25 2b |.h. ...r. line%+| 000018b0 3d 31 0d 0b 7c 05 ce 0d 0b 86 09 d9 23 69 6e 25 |=1..|.......#in%| 000018c0 0d 0b 90 48 e7 20 62 61 64 24 3c 3e 22 22 20 85 |...H. bad$<>"" .| 000018d0 20 30 2c 22 45 72 72 6f 72 20 69 6e 20 70 61 74 | 0,"Error in pat| 000018e0 74 65 72 6e 20 66 69 6c 65 3a 20 22 2b 62 61 64 |tern file: "+bad| 000018f0 24 2b 22 20 61 74 20 6c 69 6e 65 20 22 2b c3 62 |$+" at line "+.b| 00001900 61 64 5f 6c 69 6e 65 25 0d 0b 9a 10 21 70 25 3d |ad_line%....!p%=| 00001910 2d 31 3a 70 25 2b 3d 34 0d 0b a4 05 e1 0d 0b ae |-1:p%+=4........| 00001920 05 3a 0d 0b b8 16 dd 20 f2 6c 6f 61 64 5f 6d 61 |.:..... .load_ma| 00001930 70 28 66 69 6c 65 24 29 0d 0b c2 09 ea 20 69 6e |p(file$)..... in| 00001940 25 0d 0b cc 18 69 6e 25 3d 8e 28 22 4d 61 70 73 |%....in%=.("Maps| 00001950 2e 22 2b 66 69 6c 65 24 29 0d 0b d6 08 78 25 3d |."+file$)....x%=| 00001960 30 0d 0b e0 08 6d 25 3d 30 0d 0b ea 0f e3 20 69 |0....m%=0..... i| 00001970 3d 30 20 b8 20 32 35 35 0d 0b f4 17 20 73 63 65 |=0 . 255.... sce| 00001980 6e 65 5f 73 70 72 21 28 34 2a 69 29 3d 2d 31 0d |ne_spr!(4*i)=-1.| 00001990 0b fe 05 ed 0d 0c 08 0e c8 95 20 ac 20 c5 23 69 |.......... . .#i| 000019a0 6e 25 0d 0c 12 15 20 73 24 3d a4 73 74 72 69 70 |n%.... s$=.strip| 000019b0 28 be 23 69 6e 25 29 0d 0c 1c 0f 20 e7 20 73 24 |(.#in%).... . s$| 000019c0 3c 3e 22 22 20 8c 0d 0c 26 0d 20 20 c8 8e 20 73 |<>"" ...&. .. s| 000019d0 24 20 ca 0d 0c 30 16 20 20 20 c9 20 22 46 69 6c |$ ...0. . "Fil| 000019e0 65 73 3a 22 3a 6d 25 3d 31 0d 0c 3a 15 20 20 20 |es:":m%=1..:. | 000019f0 c9 20 22 55 73 65 64 3a 22 3a 6d 25 3d 32 0d 0c |. "Used:":m%=2..| 00001a00 44 14 20 20 20 c9 20 22 4d 61 70 3a 22 3a 6d 25 |D. . "Map:":m%| 00001a10 3d 33 0d 0c 4e 15 20 20 20 c9 20 22 54 79 70 65 |=3..N. . "Type| 00001a20 3a 22 3a 6d 25 3d 34 0d 0c 58 07 20 20 7f 0d 0c |:":m%=4..X. ...| 00001a30 62 0e 20 20 20 c8 8e 20 6d 25 20 ca 0d 0c 6c 37 |b. .. m% ...l7| 00001a40 20 20 20 20 c9 20 31 3a c8 99 20 22 4f 53 5f 53 | . 1:.. "OS_S| 00001a50 70 72 69 74 65 4f 70 22 2c 26 31 30 42 2c 73 63 |priteOp",&10B,sc| 00001a60 65 6e 65 72 79 2c 22 53 63 65 6e 65 72 79 2e 22 |enery,"Scenery."| 00001a70 2b 73 24 0d 0c 76 0c 20 20 20 20 c9 20 32 3a 0d |+s$..v. . 2:.| 00001a80 0c 80 18 20 20 20 20 20 69 3d a0 28 22 26 22 2b |... i=.("&"+| 00001a90 c0 73 24 2c 32 29 29 0d 0c 8a 1a 20 20 20 20 20 |.s$,2)).... | 00001aa0 73 24 3d a4 73 74 72 69 70 28 c1 73 24 2c 33 29 |s$=.strip(.s$,3)| 00001ab0 29 0d 0c 94 30 20 20 20 20 20 c8 99 20 22 4f 53 |)...0 .. "OS| 00001ac0 5f 53 70 72 69 74 65 4f 70 22 2c 26 31 31 38 2c |_SpriteOp",&118,| 00001ad0 73 63 65 6e 65 72 79 2c 73 24 20 b8 20 2c 2c 64 |scenery,s$ . ,,d| 00001ae0 25 0d 0c 9e 1b 20 20 20 20 20 73 63 65 6e 65 5f |%.... scene_| 00001af0 73 70 72 21 28 34 2a 69 29 3d 64 25 0d 0c a8 17 |spr!(4*i)=d%....| 00001b00 20 20 20 20 20 e7 20 73 24 3d 22 62 6c 61 6e 6b | . s$="blank| 00001b10 22 20 8c 0d 0c b2 10 20 20 20 20 20 20 62 6c 6e |" ..... bln| 00001b20 6b 3d 69 0d 0c bc 37 20 20 20 20 20 20 c8 99 20 |k=i...7 .. | 00001b30 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c 26 31 |"OS_SpriteOp",&1| 00001b40 32 38 2c 73 63 65 6e 65 72 79 2c 73 24 20 b8 20 |28,scenery,s$ . | 00001b50 2c 2c 2c 2c 2c 2c 6d 6f 64 65 0d 0c c6 0a 20 20 |,,,,,,mode.... | 00001b60 20 20 20 cd 0d 0c d0 0c 20 20 20 20 c9 20 33 3a | ..... . 3:| 00001b70 0d 0c da 17 20 20 20 20 20 64 61 73 68 25 3d a7 |.... dash%=.| 00001b80 73 24 2c 22 2d 22 29 0d 0c e4 14 20 20 20 20 20 |s$,"-").... | 00001b90 e7 20 64 61 73 68 25 3e 30 20 8c 0d 0c ee 1a 20 |. dash%>0 ..... | 00001ba0 20 20 20 20 20 73 31 24 3d c0 73 24 2c 64 61 73 | s1$=.s$,das| 00001bb0 68 25 2d 31 29 0d 0c f8 1a 20 20 20 20 20 20 73 |h%-1).... s| 00001bc0 33 24 3d c1 73 24 2c 64 61 73 68 25 2b 31 29 0d |3$=.s$,dash%+1).| 00001bd0 0d 02 1c 20 20 20 20 20 20 73 32 24 3d c2 22 30 |... s2$=."0| 00001be0 22 2b c3 7e 62 6c 6e 6b 2c 32 29 0d 0d 0c 2a 20 |"+.~blnk,2)...* | 00001bf0 20 20 20 20 20 73 24 3d 73 31 24 2b c4 6e 6f 2d | s$=s1$+.no-| 00001c00 a9 28 73 31 24 2b 73 33 24 29 2f 32 2c 73 32 24 |.(s1$+s3$)/2,s2$| 00001c10 29 2b 73 33 24 0d 0d 16 0a 20 20 20 20 20 cd 0d |)+s3$.... ..| 00001c20 0d 20 16 20 20 20 20 20 61 25 3d 6c 61 6e 64 2b |. . a%=land+| 00001c30 6e 6f 2a 78 25 0d 0d 2a 15 20 20 20 20 20 e3 20 |no*x%..*. . | 00001c40 69 3d 30 20 b8 20 6e 6f 2d 31 0d 0d 34 13 20 20 |i=0 . no-1..4. | 00001c50 20 20 20 20 61 25 3f 69 3d 62 6c 6e 6b 0d 0d 3e | a%?i=blnk..>| 00001c60 0a 20 20 20 20 20 ed 0d 0d 48 10 20 20 20 20 20 |. ...H. | 00001c70 79 25 3d 6e 6f 2d 31 0d 0d 52 12 20 20 20 20 20 |y%=no-1..R. | 00001c80 c8 95 20 73 24 3c 3e 22 22 0d 0d 5c 1d 20 20 20 |.. s$<>""..\. | 00001c90 20 20 20 61 25 3f 79 25 3d a0 28 22 26 22 2b c0 | a%?y%=.("&"+.| 00001ca0 73 24 2c 32 29 29 0d 0d 66 13 20 20 20 20 20 20 |s$,2))..f. | 00001cb0 73 24 3d c1 73 24 2c 33 29 0d 0d 70 0f 20 20 20 |s$=.s$,3)..p. | 00001cc0 20 20 20 79 25 2d 3d 31 0d 0d 7a 0a 20 20 20 20 | y%-=1..z. | 00001cd0 20 ce 0d 0d 84 0e 20 20 20 20 20 78 25 2b 3d 31 | ..... x%+=1| 00001ce0 0d 0d 8e 0c 20 20 20 20 c9 20 34 3a 0d 0d 98 15 |.... . 4:....| 00001cf0 20 20 20 20 20 73 69 7a 65 3d bb c1 73 24 2c 32 | size=..s$,2| 00001d00 29 0d 0d a2 17 20 20 20 20 20 e7 20 c0 73 24 2c |).... . .s$,| 00001d10 31 29 3d 22 48 22 20 8c 0d 0d ac 33 20 20 20 20 |1)="H" ....3 | 00001d20 20 20 e7 20 73 69 7a 65 3d 33 32 20 74 6f 74 61 | . size=32 tota| 00001d30 6c 5f 73 69 7a 65 3d 32 32 34 20 8b 20 74 6f 74 |l_size=224 . tot| 00001d40 61 6c 5f 73 69 7a 65 3d 32 34 30 0d 0d b6 0a 20 |al_size=240.... | 00001d50 20 20 20 20 cc 0d 0d c0 33 20 20 20 20 20 20 85 | ....3 .| 00001d60 20 31 37 2c 22 4f 6e 6c 79 20 68 6f 72 69 7a 6f | 17,"Only horizo| 00001d70 6e 74 61 6c 20 6c 61 6e 64 73 63 61 70 65 73 20 |ntal landscapes | 00001d80 70 6c 65 61 73 65 21 22 0d 0d ca 0a 20 20 20 20 |please!".... | 00001d90 20 cd 0d 0d d4 1d 20 20 20 20 20 6e 6f 3d 74 6f | ..... no=to| 00001da0 74 61 6c 5f 73 69 7a 65 20 81 20 73 69 7a 65 0d |tal_size . size.| 00001db0 0d de 08 20 20 20 cb 0d 0d e8 07 20 20 cb 0d 0d |... ..... ...| 00001dc0 f2 06 20 cd 0d 0d fc 05 ce 0d 0e 06 35 c8 99 20 |.. .........5.. | 00001dd0 22 4f 53 5f 52 65 61 64 4d 6f 64 65 56 61 72 69 |"OS_ReadModeVari| 00001de0 61 62 6c 65 22 2c 6d 6f 64 65 2c 36 20 b8 20 2c |able",mode,6 . ,| 00001df0 2c 62 79 74 65 73 5f 70 65 72 5f 72 6f 77 0d 0e |,bytes_per_row..| 00001e00 10 28 73 63 72 65 65 6e 5f 73 69 7a 65 3d 74 6f |.(screen_size=to| 00001e10 74 61 6c 5f 73 69 7a 65 2a 62 79 74 65 73 5f 70 |tal_size*bytes_p| 00001e20 65 72 5f 72 6f 77 0d 0e 1a 36 e7 20 6d 6f 64 65 |er_row...6. mode| 00001e30 3d 39 20 73 70 72 69 74 65 5f 77 69 64 74 68 3d |=9 sprite_width=| 00001e40 73 69 7a 65 20 81 20 32 20 8b 20 73 70 72 69 74 |size . 2 . sprit| 00001e50 65 5f 77 69 64 74 68 3d 73 69 7a 65 0d 0e 24 1c |e_width=size..$.| 00001e60 6c 61 6e 64 5f 65 78 74 3d 78 25 2a 73 70 72 69 |land_ext=x%*spri| 00001e70 74 65 5f 77 69 64 74 68 0d 0e 2e 0f e3 20 69 3d |te_width..... i=| 00001e80 30 20 b8 20 32 35 35 0d 0e 38 30 20 e7 20 73 63 |0 . 255..80 . sc| 00001e90 65 6e 65 5f 73 70 72 21 28 34 2a 69 29 3d 2d 31 |ene_spr!(4*i)=-1| 00001ea0 20 8c 20 73 63 65 6e 65 5f 73 70 72 21 28 34 2a | . scene_spr!(4*| 00001eb0 69 29 3d 62 6c 6e 6b 0d 0e 42 05 ed 0d 0e 4c 09 |i)=blnk..B....L.| 00001ec0 d9 23 69 6e 25 0d 0e 56 05 e1 0d 0e 60 05 3a 0d |.#in%..V....`.:.| 00001ed0 0e 6a 10 dd 20 a4 73 74 72 69 70 28 73 24 29 0d |.j.. .strip(s$).| 00001ee0 0e 74 11 c8 95 20 c0 73 24 2c 31 29 3d 22 20 22 |.t... .s$,1)=" "| 00001ef0 0d 0e 7e 0e 20 73 24 3d c1 73 24 2c 32 29 0d 0e |..~. s$=.s$,2)..| 00001f00 88 05 ce 0d 0e 92 0f c8 95 20 c2 73 24 29 3d 22 |......... .s$)="| 00001f10 20 22 0d 0e 9c 0c 20 73 24 3d c0 73 24 29 0d 0e | ".... s$=.s$)..| 00001f20 a6 05 ce 0d 0e b0 07 3d 73 24 0d 0e ba 05 3a 0d |.......=s$....:.| 00001f30 0e c4 0a dd 20 f2 61 73 73 0d 0e ce 0e 64 61 74 |.... .ass....dat| 00001f40 5f 6e 65 78 74 3d 30 0d 0e d8 0e 64 61 74 5f 74 |_next=0....dat_t| 00001f50 79 70 65 3d 34 0d 0e e2 0b 64 61 74 5f 78 3d 38 |ype=4....dat_x=8| 00001f60 0d 0e ec 0c 64 61 74 5f 79 3d 31 32 0d 0e f6 0d |....dat_y=12....| 00001f70 64 61 74 5f 67 6f 3d 31 36 0d 0f 00 11 64 61 74 |dat_go=16....dat| 00001f80 5f 70 61 74 5f 70 63 3d 32 30 0d 0f 0a 11 64 61 |_pat_pc=20....da| 00001f90 74 5f 6d 6f 76 5f 70 63 3d 32 34 0d 0f 14 11 64 |t_mov_pc=24....d| 00001fa0 61 74 5f 61 63 74 69 76 65 3d 32 38 0d 0f 1e 14 |at_active=28....| 00001fb0 64 61 74 5f 70 61 74 5f 63 6f 75 6e 74 3d 33 32 |dat_pat_count=32| 00001fc0 0d 0f 28 10 64 61 74 5f 63 6c 61 73 73 3d 33 36 |..(.dat_class=36| 00001fd0 0d 0f 32 0e 64 61 74 5f 73 70 72 3d 34 30 0d 0f |..2.dat_spr=40..| 00001fe0 3c 0f 64 61 74 5f 73 69 7a 65 3d 34 34 0d 0f 46 |<.dat_size=44..F| 00001ff0 11 6d 61 78 5f 61 6c 69 65 6e 73 3d 39 36 0d 0f |.max_aliens=96..| 00002000 50 1f de 20 63 6f 64 65 25 20 26 34 30 30 30 2b |P.. code% &4000+| 00002010 34 2a 73 63 72 65 65 6e 5f 73 69 7a 65 0d 0f 5a |4*screen_size..Z| 00002020 17 73 70 3d 31 33 3a 6c 69 6e 6b 3d 31 34 3a 70 |.sp=13:link=14:p| 00002030 63 3d 31 35 0d 0f 64 15 e3 20 70 61 73 73 25 3d |c=15..d.. pass%=| 00002040 30 20 b8 20 32 20 88 20 32 0d 0f 6e 0c 50 25 3d |0 . 2 . 2..n.P%=| 00002050 63 6f 64 65 25 0d 0f 78 0e 5b 4f 50 54 20 70 61 |code%..x.[OPT pa| 00002060 73 73 25 0d 0f 82 27 2e 67 61 6d 65 20 20 20 53 |ss%...'.game S| 00002070 54 4d 46 44 20 20 20 28 73 70 29 21 2c 7b 72 30 |TMFD (sp)!,{r0| 00002080 2d 72 31 32 2c 6c 69 6e 6b 7d 0d 0f 8c 1f 20 20 |-r12,link}.... | 00002090 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 30 | LDR r0| 000020a0 2c 41 70 6f 70 5f 64 61 74 0d 0f 96 1f 20 20 20 |,Apop_dat.... | 000020b0 20 20 20 20 20 53 54 52 20 20 20 20 20 72 30 2c | STR r0,| 000020c0 70 6f 70 5f 6e 65 78 74 0d 0f a0 19 20 20 20 20 |pop_next.... | 000020d0 20 20 20 20 4d 4f 56 20 20 20 20 20 72 39 2c 23 | MOV r9,#| 000020e0 30 0d 0f aa 1a 20 20 20 20 20 20 20 20 4d 4f 56 |0.... MOV| 000020f0 20 20 20 20 20 72 31 30 2c 23 30 0d 0f b4 27 20 | r10,#0...' | 00002100 20 20 20 20 20 20 20 53 54 52 20 20 20 20 20 72 | STR r| 00002110 31 30 2c 6c 69 66 65 5f 6c 6f 73 74 5f 63 6f 75 |10,life_lost_cou| 00002120 6e 74 0d 0f be 26 20 20 20 20 20 20 20 20 53 54 |nt...& ST| 00002130 52 20 20 20 20 20 72 31 30 2c 66 69 6e 69 73 68 |R r10,finish| 00002140 65 64 5f 63 6f 75 6e 74 0d 0f c8 1a 20 20 20 20 |ed_count.... | 00002150 20 20 20 20 4d 4f 56 20 20 20 20 20 72 31 31 2c | MOV r11,| 00002160 23 31 0d 0f d2 0e 2e 67 61 6d 65 5f 6c 6f 6f 70 |#1.....game_loop| 00002170 0d 0f dc 1e 20 20 20 20 20 20 20 20 42 4c 20 20 |.... BL | 00002180 20 20 20 20 73 77 61 70 5f 62 61 6e 6b 73 0d 0f | swap_banks..| 00002190 e6 1d 20 20 20 20 20 20 20 20 42 4c 20 20 20 20 |.. BL | 000021a0 20 20 63 6f 70 79 5f 62 61 6e 6b 0d 0f f0 25 20 | copy_bank...% | 000021b0 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 | LDR r| 000021c0 30 2c 66 69 6e 69 73 68 65 64 5f 63 6f 75 6e 74 |0,finished_count| 000021d0 0d 0f fa 19 20 20 20 20 20 20 20 20 43 4d 50 20 |.... CMP | 000021e0 20 20 20 20 72 30 2c 23 30 0d 10 04 20 20 20 20 | r0,#0... | 000021f0 20 20 20 20 20 42 45 51 20 20 20 20 20 6e 6f 74 | BEQ not| 00002200 5f 66 69 6e 69 73 68 65 64 0d 10 0e 1c 20 20 20 |_finished.... | 00002210 20 20 20 20 20 53 55 42 53 20 20 20 20 72 30 2c | SUBS r0,| 00002220 72 30 2c 23 31 0d 10 18 25 20 20 20 20 20 20 20 |r0,#1...% | 00002230 20 53 54 52 20 20 20 20 20 72 30 2c 66 69 6e 69 | STR r0,fini| 00002240 73 68 65 64 5f 63 6f 75 6e 74 0d 10 22 20 20 20 |shed_count.." | 00002250 20 20 20 20 20 20 42 4e 45 20 20 20 20 20 6e 6f | BNE no| 00002260 74 5f 66 69 6e 69 73 68 65 64 0d 10 2c 27 20 20 |t_finished..,' | 00002270 20 20 20 20 20 20 4c 44 4d 46 44 20 20 20 28 73 | LDMFD (s| 00002280 70 29 21 2c 7b 72 30 2d 72 31 32 2c 6c 69 6e 6b |p)!,{r0-r12,link| 00002290 7d 0d 10 36 19 20 20 20 20 20 20 20 20 4d 4f 56 |}..6. MOV| 000022a0 20 20 20 20 20 72 30 2c 23 31 0d 10 40 1b 20 20 | r0,#1..@. | 000022b0 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 70 63 | MOV pc| 000022c0 2c 6c 69 6e 6b 0d 10 4a 11 2e 6e 6f 74 5f 66 69 |,link..J..not_fi| 000022d0 6e 69 73 68 65 64 0d 10 54 26 20 20 20 20 20 20 |nished..T& | 000022e0 20 20 4c 44 52 20 20 20 20 20 72 30 2c 6c 69 66 | LDR r0,lif| 000022f0 65 5f 6c 6f 73 74 5f 63 6f 75 6e 74 0d 10 5e 19 |e_lost_count..^.| 00002300 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 | CMP | 00002310 72 30 2c 23 30 0d 10 68 21 20 20 20 20 20 20 20 |r0,#0..h! | 00002320 20 42 45 51 20 20 20 20 20 6e 6f 74 5f 6c 69 66 | BEQ not_lif| 00002330 65 5f 6c 6f 73 74 0d 10 72 1c 20 20 20 20 20 20 |e_lost..r. | 00002340 20 20 53 55 42 53 20 20 20 20 72 30 2c 72 30 2c | SUBS r0,r0,| 00002350 23 31 0d 10 7c 26 20 20 20 20 20 20 20 20 53 54 |#1..|& ST| 00002360 52 20 20 20 20 20 72 30 2c 6c 69 66 65 5f 6c 6f |R r0,life_lo| 00002370 73 74 5f 63 6f 75 6e 74 0d 10 86 1f 20 20 20 20 |st_count.... | 00002380 20 20 20 20 42 4e 45 20 20 20 20 20 6e 65 61 72 | BNE near| 00002390 6c 79 5f 6f 76 65 72 0d 10 90 27 20 20 20 20 20 |ly_over...' | 000023a0 20 20 20 4c 44 4d 46 44 20 20 20 28 73 70 29 21 | LDMFD (sp)!| 000023b0 2c 7b 72 30 2d 72 31 32 2c 6c 69 6e 6b 7d 0d 10 |,{r0-r12,link}..| 000023c0 9a 19 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 |.. MOV | 000023d0 20 20 72 30 2c 23 30 0d 10 a4 1b 20 20 20 20 20 | r0,#0.... | 000023e0 20 20 20 4d 4f 56 20 20 20 20 20 70 63 2c 6c 69 | MOV pc,li| 000023f0 6e 6b 0d 10 ae 12 2e 6e 6f 74 5f 6c 69 66 65 5f |nk.....not_life_| 00002400 6c 6f 73 74 0d 10 b8 1d 20 20 20 20 20 20 20 20 |lost.... | 00002410 42 4c 20 20 20 20 20 20 73 63 72 6f 6c 6c 5f 6f |BL scroll_o| 00002420 6e 0d 10 c2 10 2e 6e 65 61 72 6c 79 5f 6f 76 65 |n.....nearly_ove| 00002430 72 0d 10 cc 1d 20 20 20 20 20 20 20 20 42 4c 20 |r.... BL | 00002440 20 20 20 20 20 64 6f 5f 61 6c 69 65 6e 73 0d 10 | do_aliens..| 00002450 d6 20 20 20 20 20 20 20 20 20 42 4c 20 20 20 20 |. BL | 00002460 20 20 62 61 63 6b 5f 63 6f 6c 6c 69 64 65 0d 10 | back_collide..| 00002470 e0 20 20 20 20 20 20 20 20 20 42 4c 20 20 20 20 |. BL | 00002480 20 20 66 6f 72 65 5f 63 6f 6c 6c 69 64 65 0d 10 | fore_collide..| 00002490 ea 1f 20 20 20 20 20 20 20 20 42 4c 20 20 20 20 |.. BL | 000024a0 20 20 73 68 6f 77 5f 61 6c 69 65 6e 73 0d 10 f4 | show_aliens...| 000024b0 21 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 |! LDR | 000024c0 20 72 30 2c 66 69 72 65 5f 63 6f 75 6e 74 0d 10 | r0,fire_count..| 000024d0 fe 19 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 |.. CMP | 000024e0 20 20 72 30 2c 23 30 0d 11 08 1c 20 20 20 20 20 | r0,#0.... | 000024f0 20 20 20 53 55 42 47 54 20 20 20 72 30 2c 72 30 | SUBGT r0,r0| 00002500 2c 23 31 0d 11 12 21 20 20 20 20 20 20 20 20 53 |,#1...! S| 00002510 54 52 47 54 20 20 20 72 30 2c 66 69 72 65 5f 63 |TRGT r0,fire_c| 00002520 6f 75 6e 74 0d 11 1c 1d 20 20 20 20 20 20 20 20 |ount.... | 00002530 4c 44 52 20 20 20 20 20 72 30 2c 65 6e 65 72 67 |LDR r0,energ| 00002540 79 0d 11 26 1b 20 20 20 20 20 20 20 20 54 53 54 |y..&. TST| 00002550 20 20 20 20 20 72 31 30 2c 23 33 31 0d 11 30 1c | r10,#31..0.| 00002560 20 20 20 20 20 20 20 20 42 4e 45 20 20 20 20 20 | BNE | 00002570 6e 6f 5f 64 72 61 69 6e 0d 11 3a 1c 20 20 20 20 |no_drain..:. | 00002580 20 20 20 20 53 55 42 53 20 20 20 20 72 30 2c 72 | SUBS r0,r| 00002590 30 2c 23 31 0d 11 44 19 20 20 20 20 20 20 20 20 |0,#1..D. | 000025a0 4d 4f 56 4d 49 20 20 20 72 30 2c 23 30 0d 11 4e |MOVMI r0,#0..N| 000025b0 1d 20 20 20 20 20 20 20 20 53 54 52 20 20 20 20 |. STR | 000025c0 20 72 30 2c 65 6e 65 72 67 79 0d 11 58 0d 2e 6e | r0,energy..X..n| 000025d0 6f 5f 64 72 61 69 6e 0d 11 62 1f 20 20 20 20 20 |o_drain..b. | 000025e0 20 20 20 42 4c 20 20 20 20 20 20 73 68 6f 77 5f | BL show_| 000025f0 65 6e 65 72 67 79 0d 11 6c 1e 20 20 20 20 20 20 |energy..l. | 00002600 20 20 42 4c 20 20 20 20 20 20 73 68 6f 77 5f 73 | BL show_s| 00002610 63 6f 72 65 0d 11 76 29 20 20 20 20 20 20 20 20 |core..v) | 00002620 53 57 49 20 20 20 20 20 22 58 4f 53 5f 52 65 61 |SWI "XOS_Rea| 00002630 64 45 73 63 61 70 65 53 74 61 74 65 22 0d 11 80 |dEscapeState"...| 00002640 1d 20 20 20 20 20 20 20 20 42 43 43 20 20 20 20 |. BCC | 00002650 20 67 61 6d 65 5f 6c 6f 6f 70 0d 11 8a 1b 20 20 | game_loop.... | 00002660 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 30 | MOV r0| 00002670 2c 23 31 32 36 0d 11 94 1e 20 20 20 20 20 20 20 |,#126.... | 00002680 20 53 57 49 20 20 20 20 20 22 58 4f 53 5f 42 79 | SWI "XOS_By| 00002690 74 65 22 0d 11 9e 27 20 20 20 20 20 20 20 20 4c |te"...' L| 000026a0 44 4d 46 44 20 20 20 28 73 70 29 21 2c 7b 72 30 |DMFD (sp)!,{r0| 000026b0 2d 72 31 32 2c 6c 69 6e 6b 7d 0d 11 a8 19 20 20 |-r12,link}.... | 000026c0 20 20 20 20 20 20 4d 56 4e 20 20 20 20 20 72 30 | MVN r0| 000026d0 2c 23 30 0d 11 b2 1b 20 20 20 20 20 20 20 20 4d |,#0.... M| 000026e0 4f 56 20 20 20 20 20 70 63 2c 6c 69 6e 6b 0d 11 |OV pc,link..| 000026f0 bc 04 0d 11 c6 14 2e 6c 69 66 65 5f 6c 6f 73 74 |.......life_lost| 00002700 5f 63 6f 75 6e 74 0d 11 d0 15 20 20 20 20 20 20 |_count.... | 00002710 20 20 44 43 44 20 20 20 20 20 30 0d 11 da 13 2e | DCD 0.....| 00002720 66 69 6e 69 73 68 65 64 5f 63 6f 75 6e 74 0d 11 |finished_count..| 00002730 e4 15 20 20 20 20 20 20 20 20 44 43 44 20 20 20 |.. DCD | 00002740 20 20 30 0d 11 ee 04 0d 11 f8 0d 2e 62 6f 6d 62 | 0.........bomb| 00002750 5f 6b 65 79 0d 12 02 15 20 20 20 20 20 20 20 20 |_key.... | 00002760 44 43 44 20 20 20 20 20 30 0d 12 0c 0f 2e 66 69 |DCD 0.....fi| 00002770 72 65 5f 63 6f 75 6e 74 0d 12 16 15 20 20 20 20 |re_count.... | 00002780 20 20 20 20 44 43 44 20 20 20 20 20 30 0d 12 20 | DCD 0.. | 00002790 04 0d 12 2a 0e 2e 64 6f 5f 61 6c 69 65 6e 73 0d |...*..do_aliens.| 000027a0 12 34 27 20 20 20 20 20 20 20 20 53 54 4d 46 44 |.4' STMFD| 000027b0 20 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 31 32 | (sp)!,{r0-r12| 000027c0 2c 6c 69 6e 6b 7d 0d 12 3e 1f 20 20 20 20 20 20 |,link}..>. | 000027d0 20 20 4c 44 52 20 20 20 20 20 72 36 2c 70 6f 70 | LDR r6,pop| 000027e0 5f 6e 65 78 74 0d 12 48 22 20 20 20 20 20 20 20 |_next..H" | 000027f0 20 41 44 44 20 20 20 20 20 72 35 2c 72 31 30 2c | ADD r5,r10,| 00002800 23 31 36 30 2b 31 36 0d 12 52 1a 2e 63 68 65 63 |#160+16..R..chec| 00002810 6b 5f 66 6f 72 5f 6e 65 77 5f 65 6e 74 72 69 65 |k_for_new_entrie| 00002820 73 0d 12 5c 1e 20 20 20 20 20 20 20 20 4c 44 4d |s..\. LDM| 00002830 49 41 20 20 20 72 36 2c 7b 72 30 2d 72 33 7d 0d |IA r6,{r0-r3}.| 00002840 12 66 19 20 20 20 20 20 20 20 20 43 4d 50 20 20 |.f. CMP | 00002850 20 20 20 72 30 2c 23 30 0d 12 70 24 20 20 20 20 | r0,#0..p$ | 00002860 20 20 20 20 42 4c 54 20 20 20 20 20 64 6f 6e 65 | BLT done| 00002870 5f 6e 65 77 5f 65 6e 74 72 69 65 73 0d 12 7a 19 |_new_entries..z.| 00002880 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 | CMP | 00002890 72 31 2c 72 35 0d 12 84 24 20 20 20 20 20 20 20 |r1,r5...$ | 000028a0 20 42 47 45 20 20 20 20 20 64 6f 6e 65 5f 6e 65 | BGE done_ne| 000028b0 77 5f 65 6e 74 72 69 65 73 0d 12 8e 25 20 20 20 |w_entries...% | 000028c0 20 20 20 20 20 42 4c 20 20 20 20 20 20 61 64 64 | BL add| 000028d0 5f 61 6c 69 65 6e 5f 74 6f 5f 6c 69 73 74 0d 12 |_alien_to_list..| 000028e0 98 1d 20 20 20 20 20 20 20 20 41 44 44 20 20 20 |.. ADD | 000028f0 20 20 72 36 2c 72 36 2c 23 32 34 0d 12 a2 29 20 | r6,r6,#24...) | 00002900 20 20 20 20 20 20 20 42 20 20 20 20 20 20 20 63 | B c| 00002910 68 65 63 6b 5f 66 6f 72 5f 6e 65 77 5f 65 6e 74 |heck_for_new_ent| 00002920 72 69 65 73 0d 12 ac 15 2e 64 6f 6e 65 5f 6e 65 |ries.....done_ne| 00002930 77 5f 65 6e 74 72 69 65 73 0d 12 b6 1f 20 20 20 |w_entries.... | 00002940 20 20 20 20 20 53 54 52 20 20 20 20 20 72 36 2c | STR r6,| 00002950 70 6f 70 5f 6e 65 78 74 0d 12 c0 1b 20 20 20 20 |pop_next.... | 00002960 20 20 20 20 41 44 52 20 20 20 20 20 72 37 2c 6c | ADR r7,l| 00002970 69 73 74 0d 12 ca 1b 20 20 20 20 20 20 20 20 4c |ist.... L| 00002980 44 52 20 20 20 20 20 72 38 2c 6c 69 73 74 0d 12 |DR r8,list..| 00002990 d4 12 2e 64 6f 5f 61 6c 69 65 6e 5f 6c 6f 6f 70 |...do_alien_loop| 000029a0 0d 12 de 19 20 20 20 20 20 20 20 20 43 4d 50 20 |.... CMP | 000029b0 20 20 20 20 72 38 2c 23 30 0d 12 e8 25 20 20 20 | r8,#0...% | 000029c0 20 20 20 20 20 4c 44 4d 45 51 46 44 20 28 73 70 | LDMEQFD (sp| 000029d0 29 21 2c 7b 72 30 2d 72 31 32 2c 70 63 7d 0d 12 |)!,{r0-r12,pc}..| 000029e0 f2 04 0d 12 fc 27 20 20 20 20 20 20 20 20 4c 44 |.....' LD| 000029f0 52 20 20 20 20 20 72 30 2c 5b 72 38 2c 23 64 61 |R r0,[r8,#da| 00002a00 74 5f 61 63 74 69 76 65 5d 0d 13 06 19 20 20 20 |t_active].... | 00002a10 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 30 2c | CMP r0,| 00002a20 23 30 0d 13 10 22 20 20 20 20 20 20 20 20 42 4c |#0..." BL| 00002a30 54 20 20 20 20 20 61 6c 69 65 6e 5f 69 73 5f 64 |T alien_is_d| 00002a40 79 69 6e 67 0d 13 1a 23 20 20 20 20 20 20 20 20 |ying...# | 00002a50 42 47 54 20 20 20 20 20 61 6c 69 65 6e 5f 69 73 |BGT alien_is| 00002a60 5f 61 63 74 69 76 65 0d 13 24 23 20 20 20 20 20 |_active..$# | 00002a70 20 20 20 4c 44 52 20 20 20 20 20 72 30 2c 5b 72 | LDR r0,[r| 00002a80 38 2c 23 64 61 74 5f 67 6f 5d 0d 13 2e 1a 20 20 |8,#dat_go].... | 00002a90 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 31 | CMP r1| 00002aa0 30 2c 72 30 0d 13 38 23 20 20 20 20 20 20 20 20 |0,r0..8# | 00002ab0 42 4c 54 20 20 20 20 20 61 6c 69 65 6e 5f 69 73 |BLT alien_is| 00002ac0 5f 61 63 74 69 76 65 0d 13 42 19 20 20 20 20 20 |_active..B. | 00002ad0 20 20 20 4d 4f 56 20 20 20 20 20 72 30 2c 23 31 | MOV r0,#1| 00002ae0 0d 13 4c 27 20 20 20 20 20 20 20 20 53 54 52 20 |..L' STR | 00002af0 20 20 20 20 72 30 2c 5b 72 38 2c 23 64 61 74 5f | r0,[r8,#dat_| 00002b00 61 63 74 69 76 65 5d 0d 13 56 23 20 20 20 20 20 |active]..V# | 00002b10 20 20 20 42 20 20 20 20 20 20 20 61 6c 69 65 6e | B alien| 00002b20 5f 69 73 5f 61 63 74 69 76 65 0d 13 60 13 2e 61 |_is_active..`..a| 00002b30 6c 69 65 6e 5f 69 73 5f 64 79 69 6e 67 0d 13 6a |lien_is_dying..j| 00002b40 1c 20 20 20 20 20 20 20 20 41 44 44 53 20 20 20 |. ADDS | 00002b50 20 72 30 2c 72 30 2c 23 31 0d 13 74 27 20 20 20 | r0,r0,#1..t' | 00002b60 20 20 20 20 20 53 54 52 20 20 20 20 20 72 30 2c | STR r0,| 00002b70 5b 72 38 2c 23 64 61 74 5f 61 63 74 69 76 65 5d |[r8,#dat_active]| 00002b80 0d 13 7e 20 20 20 20 20 20 20 20 20 42 45 51 20 |..~ BEQ | 00002b90 20 20 20 20 61 6c 69 65 6e 5f 69 73 5f 6f 66 66 | alien_is_off| 00002ba0 0d 13 88 21 20 20 20 20 20 20 20 20 42 20 20 20 |...! B | 00002bb0 20 20 20 20 64 6f 5f 6e 65 78 74 5f 61 6c 69 65 | do_next_alie| 00002bc0 6e 0d 13 92 14 2e 61 6c 69 65 6e 5f 69 73 5f 61 |n.....alien_is_a| 00002bd0 63 74 69 76 65 0d 13 9c 22 20 20 20 20 20 20 20 |ctive..." | 00002be0 20 4c 44 52 20 20 20 20 20 72 32 2c 5b 72 38 2c | LDR r2,[r8,| 00002bf0 23 64 61 74 5f 78 5d 0d 13 a6 22 20 20 20 20 20 |#dat_x]..." | 00002c00 20 20 20 4c 44 52 20 20 20 20 20 72 33 2c 5b 72 | LDR r3,[r| 00002c10 38 2c 23 64 61 74 5f 79 5d 0d 13 b0 1f 20 20 20 |8,#dat_y].... | 00002c20 20 20 20 20 20 53 55 42 20 20 20 20 20 72 31 34 | SUB r14| 00002c30 2c 72 31 30 2c 23 33 32 0d 13 ba 1a 20 20 20 20 |,r10,#32.... | 00002c40 20 20 20 20 43 4d 50 20 20 20 20 20 72 32 2c 72 | CMP r2,r| 00002c50 31 34 0d 13 c4 20 20 20 20 20 20 20 20 20 42 4c |14... BL| 00002c60 54 20 20 20 20 20 61 6c 69 65 6e 5f 69 73 5f 6f |T alien_is_o| 00002c70 66 66 0d 13 ce 23 20 20 20 20 20 20 20 20 41 44 |ff...# AD| 00002c80 44 20 20 20 20 20 72 31 34 2c 72 31 30 2c 23 31 |D r14,r10,#1| 00002c90 36 30 2b 34 38 0d 13 d8 1a 20 20 20 20 20 20 20 |60+48.... | 00002ca0 20 43 4d 50 20 20 20 20 20 72 32 2c 72 31 34 0d | CMP r2,r14.| 00002cb0 13 e2 20 20 20 20 20 20 20 20 20 42 47 54 20 20 |.. BGT | 00002cc0 20 20 20 61 6c 69 65 6e 5f 69 73 5f 6f 66 66 0d | alien_is_off.| 00002cd0 13 ec 1e 20 20 20 20 20 20 20 20 43 4d 50 20 20 |... CMP | 00002ce0 20 20 20 72 33 2c 23 32 35 36 2b 31 36 0d 13 f6 | r3,#256+16...| 00002cf0 20 20 20 20 20 20 20 20 20 42 47 54 20 20 20 20 | BGT | 00002d00 20 61 6c 69 65 6e 5f 69 73 5f 6f 66 66 0d 14 00 | alien_is_off...| 00002d10 1a 20 20 20 20 20 20 20 20 43 4d 4e 20 20 20 20 |. CMN | 00002d20 20 72 33 2c 23 31 35 0d 14 0a 20 20 20 20 20 20 | r3,#15... | 00002d30 20 20 20 42 4c 54 20 20 20 20 20 61 6c 69 65 6e | BLT alien| 00002d40 5f 69 73 5f 6f 66 66 0d 14 14 04 0d 14 1e 25 20 |_is_off.......% | 00002d50 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 | LDR r| 00002d60 34 2c 5b 72 38 2c 23 64 61 74 5f 74 79 70 65 5d |4,[r8,#dat_type]| 00002d70 0d 14 28 31 20 20 20 20 20 20 20 20 43 4d 50 20 |..(1 CMP | 00002d80 20 20 20 20 72 34 2c 23 a4 69 64 65 6e 74 69 66 | r4,#.identif| 00002d90 79 5f 70 61 74 74 65 72 6e 28 22 73 68 69 70 22 |y_pattern("ship"| 00002da0 29 0d 14 32 1c 20 20 20 20 20 20 20 20 42 4e 45 |)..2. BNE| 00002db0 20 20 20 20 20 6e 6f 74 5f 73 68 69 70 0d 14 3c | not_ship..<| 00002dc0 1d 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 |. MOV | 00002dd0 20 72 31 2c 23 32 35 36 2d 31 0d 14 46 19 20 20 | r1,#256-1..F. | 00002de0 20 20 20 20 20 20 42 4c 20 20 20 20 20 20 69 6e | BL in| 00002df0 6b 65 79 0d 14 50 1c 20 20 20 20 20 20 20 20 41 |key..P. A| 00002e00 44 44 45 51 20 20 20 72 32 2c 72 32 2c 23 32 0d |DDEQ r2,r2,#2.| 00002e10 14 5a 1c 20 20 20 20 20 20 20 20 53 55 42 4e 45 |.Z. SUBNE| 00002e20 20 20 20 72 32 2c 72 32 2c 23 31 0d 14 64 1e 20 | r2,r2,#1..d. | 00002e30 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 | MOV r| 00002e40 31 2c 23 32 35 36 2d 39 39 0d 14 6e 19 20 20 20 |1,#256-99..n. | 00002e50 20 20 20 20 20 42 4c 20 20 20 20 20 20 69 6e 6b | BL ink| 00002e60 65 79 0d 14 78 1c 20 20 20 20 20 20 20 20 53 55 |ey..x. SU| 00002e70 42 45 51 20 20 20 72 32 2c 72 32 2c 23 31 0d 14 |BEQ r2,r2,#1..| 00002e80 82 1d 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 |.. LDR | 00002e90 20 20 72 30 2c 65 6e 65 72 67 79 0d 14 8c 19 20 | r0,energy.... | 00002ea0 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 | CMP r| 00002eb0 30 2c 23 30 0d 14 96 1c 20 20 20 20 20 20 20 20 |0,#0.... | 00002ec0 41 44 44 4c 45 20 20 20 72 33 2c 72 33 2c 23 32 |ADDLE r3,r3,#2| 00002ed0 0d 14 a0 21 20 20 20 20 20 20 20 20 42 4c 45 20 |...! BLE | 00002ee0 20 20 20 20 64 72 6f 70 5f 66 72 6f 6d 5f 73 6b | drop_from_sk| 00002ef0 79 0d 14 aa 1e 20 20 20 20 20 20 20 20 4d 4f 56 |y.... MOV| 00002f00 20 20 20 20 20 72 31 2c 23 32 35 36 2d 36 36 0d | r1,#256-66.| 00002f10 14 b4 19 20 20 20 20 20 20 20 20 42 4c 20 20 20 |... BL | 00002f20 20 20 20 69 6e 6b 65 79 0d 14 be 1c 20 20 20 20 | inkey.... | 00002f30 20 20 20 20 53 55 42 45 51 20 20 20 72 33 2c 72 | SUBEQ r3,r| 00002f40 33 2c 23 32 0d 14 c8 1e 20 20 20 20 20 20 20 20 |3,#2.... | 00002f50 4d 4f 56 20 20 20 20 20 72 31 2c 23 32 35 36 2d |MOV r1,#256-| 00002f60 39 38 0d 14 d2 19 20 20 20 20 20 20 20 20 42 4c |98.... BL| 00002f70 20 20 20 20 20 20 69 6e 6b 65 79 0d 14 dc 1c 20 | inkey.... | 00002f80 20 20 20 20 20 20 20 41 44 44 45 51 20 20 20 72 | ADDEQ r| 00002f90 33 2c 72 33 2c 23 32 0d 14 e6 12 2e 64 72 6f 70 |3,r3,#2.....drop| 00002fa0 5f 66 72 6f 6d 5f 73 6b 79 0d 14 f0 20 20 20 20 |_from_sky... | 00002fb0 20 20 20 20 20 41 44 44 20 20 20 20 20 72 31 34 | ADD r14| 00002fc0 2c 72 31 30 2c 23 31 32 30 0d 14 fa 1a 20 20 20 |,r10,#120.... | 00002fd0 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 32 2c | CMP r2,| 00002fe0 72 31 34 0d 15 04 1a 20 20 20 20 20 20 20 20 4d |r14.... M| 00002ff0 4f 56 47 54 20 20 20 72 32 2c 72 31 34 0d 15 0e |OVGT r2,r14...| 00003000 1a 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 |. CMP | 00003010 20 72 32 2c 72 31 30 0d 15 18 1a 20 20 20 20 20 | r2,r10.... | 00003020 20 20 20 4d 4f 56 4c 54 20 20 20 72 32 2c 72 31 | MOVLT r2,r1| 00003030 30 0d 15 22 19 20 20 20 20 20 20 20 20 43 4d 50 |0..". CMP| 00003040 20 20 20 20 20 72 33 2c 23 30 0d 15 2c 19 20 20 | r3,#0..,. | 00003050 20 20 20 20 20 20 4d 4f 56 4c 54 20 20 20 72 33 | MOVLT r3| 00003060 2c 23 30 0d 15 36 1e 20 20 20 20 20 20 20 20 43 |,#0..6. C| 00003070 4d 50 20 20 20 20 20 72 33 2c 23 32 34 30 2d 31 |MP r3,#240-1| 00003080 31 0d 15 40 1e 20 20 20 20 20 20 20 20 4d 4f 56 |1..@. MOV| 00003090 47 54 20 20 20 72 33 2c 23 32 34 30 2d 31 31 0d |GT r3,#240-11.| 000030a0 15 4a 21 20 20 20 20 20 20 20 20 41 44 44 20 20 |.J! ADD | 000030b0 20 20 20 72 31 34 2c 72 38 2c 23 64 61 74 5f 78 | r14,r8,#dat_x| 000030c0 0d 15 54 1f 20 20 20 20 20 20 20 20 53 54 4d 49 |..T. STMI| 000030d0 41 20 20 20 72 31 34 2c 7b 72 32 2c 72 33 7d 0d |A r14,{r2,r3}.| 000030e0 15 5e 21 20 20 20 20 20 20 20 20 4c 44 52 20 20 |.^! LDR | 000030f0 20 20 20 72 31 2c 66 69 72 65 5f 63 6f 75 6e 74 | r1,fire_count| 00003100 0d 15 68 19 20 20 20 20 20 20 20 20 43 4d 50 20 |..h. CMP | 00003110 20 20 20 20 72 31 2c 23 30 0d 15 72 1d 20 20 20 | r1,#0..r. | 00003120 20 20 20 20 20 42 4e 45 20 20 20 20 20 64 6f 6e | BNE don| 00003130 74 5f 66 69 72 65 0d 15 7c 1e 20 20 20 20 20 20 |t_fire..|. | 00003140 20 20 4d 4f 56 20 20 20 20 20 72 31 2c 23 32 35 | MOV r1,#25| 00003150 36 2d 37 34 0d 15 86 19 20 20 20 20 20 20 20 20 |6-74.... | 00003160 42 4c 20 20 20 20 20 20 69 6e 6b 65 79 0d 15 90 |BL inkey...| 00003170 1d 20 20 20 20 20 20 20 20 42 4e 45 20 20 20 20 |. BNE | 00003180 20 64 6f 6e 74 5f 66 69 72 65 0d 15 9a 21 20 20 | dont_fire...! | 00003190 20 20 20 20 20 20 53 54 4d 46 44 20 20 20 28 73 | STMFD (s| 000031a0 70 29 21 2c 7b 72 32 2d 72 33 7d 0d 15 a4 33 20 |p)!,{r2-r3}...3 | 000031b0 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 | MOV r| 000031c0 30 2c 23 a4 69 64 65 6e 74 69 66 79 5f 70 61 74 |0,#.identify_pat| 000031d0 74 65 72 6e 28 22 62 75 6c 6c 65 74 22 29 0d 15 |tern("bullet")..| 000031e0 ae 1d 20 20 20 20 20 20 20 20 41 44 44 20 20 20 |.. ADD | 000031f0 20 20 72 31 2c 72 32 2c 23 31 38 0d 15 b8 1c 20 | r1,r2,#18.... | 00003200 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 | ADD r| 00003210 32 2c 72 33 2c 23 35 0d 15 c2 19 20 20 20 20 20 |2,r3,#5.... | 00003220 20 20 20 4d 4f 56 20 20 20 20 20 72 33 2c 23 30 | MOV r3,#0| 00003230 0d 15 cc 25 20 20 20 20 20 20 20 20 42 4c 20 20 |...% BL | 00003240 20 20 20 20 61 64 64 5f 61 6c 69 65 6e 5f 74 6f | add_alien_to| 00003250 5f 6c 69 73 74 0d 15 d6 1a 20 20 20 20 20 20 20 |_list.... | 00003260 20 4d 4f 56 20 20 20 20 20 72 31 2c 23 31 30 0d | MOV r1,#10.| 00003270 15 e0 21 20 20 20 20 20 20 20 20 53 54 52 20 20 |..! STR | 00003280 20 20 20 72 31 2c 66 69 72 65 5f 63 6f 75 6e 74 | r1,fire_count| 00003290 0d 15 ea 21 20 20 20 20 20 20 20 20 4c 44 4d 46 |...! LDMF| 000032a0 44 20 20 20 28 73 70 29 21 2c 7b 72 32 2d 72 33 |D (sp)!,{r2-r3| 000032b0 7d 0d 15 f4 0e 2e 64 6f 6e 74 5f 66 69 72 65 0d |}.....dont_fire.| 000032c0 15 fe 1e 20 20 20 20 20 20 20 20 4d 4f 56 20 20 |... MOV | 000032d0 20 20 20 72 31 2c 23 32 35 36 2d 39 37 0d 16 08 | r1,#256-97...| 000032e0 19 20 20 20 20 20 20 20 20 42 4c 20 20 20 20 20 |. BL | 000032f0 20 69 6e 6b 65 79 0d 16 12 16 20 20 20 20 20 20 | inkey.... | 00003300 20 20 ec 51 20 20 20 72 30 2c 23 31 0d 16 1c 19 | .Q r0,#1....| 00003310 20 20 20 20 20 20 20 20 4d 4f 56 4e 45 20 20 20 | MOVNE | 00003320 72 30 2c 23 30 0d 16 26 20 20 20 20 20 20 20 20 |r0,#0..& | 00003330 20 4c 44 52 20 20 20 20 20 72 31 34 2c 62 6f 6d | LDR r14,bom| 00003340 62 5f 6b 65 79 0d 16 30 1a 20 20 20 20 20 20 20 |b_key..0. | 00003350 20 43 4d 50 20 20 20 20 20 72 30 2c 72 31 34 0d | CMP r0,r14.| 00003360 16 3a 1d 20 20 20 20 20 20 20 20 42 45 51 20 20 |.:. BEQ | 00003370 20 20 20 64 6f 6e 74 5f 64 72 6f 70 0d 16 44 1f | dont_drop..D.| 00003380 20 20 20 20 20 20 20 20 53 54 52 20 20 20 20 20 | STR | 00003390 72 30 2c 62 6f 6d 62 5f 6b 65 79 0d 16 4e 19 20 |r0,bomb_key..N. | 000033a0 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 | CMP r| 000033b0 30 2c 23 31 0d 16 58 1d 20 20 20 20 20 20 20 20 |0,#1..X. | 000033c0 42 4e 45 20 20 20 20 20 64 6f 6e 74 5f 64 72 6f |BNE dont_dro| 000033d0 70 0d 16 62 31 20 20 20 20 20 20 20 20 4d 4f 56 |p..b1 MOV| 000033e0 20 20 20 20 20 72 30 2c 23 a4 69 64 65 6e 74 69 | r0,#.identi| 000033f0 66 79 5f 70 61 74 74 65 72 6e 28 22 62 6f 6d 62 |fy_pattern("bomb| 00003400 22 29 0d 16 6c 1c 20 20 20 20 20 20 20 20 41 44 |")..l. AD| 00003410 44 20 20 20 20 20 72 31 2c 72 32 2c 23 38 0d 16 |D r1,r2,#8..| 00003420 76 1c 20 20 20 20 20 20 20 20 41 44 44 20 20 20 |v. ADD | 00003430 20 20 72 32 2c 72 33 2c 23 38 0d 16 80 19 20 20 | r2,r3,#8.... | 00003440 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 33 | MOV r3| 00003450 2c 23 30 0d 16 8a 25 20 20 20 20 20 20 20 20 42 |,#0...% B| 00003460 4c 20 20 20 20 20 20 61 64 64 5f 61 6c 69 65 6e |L add_alien| 00003470 5f 74 6f 5f 6c 69 73 74 0d 16 94 0e 2e 64 6f 6e |_to_list.....don| 00003480 74 5f 64 72 6f 70 0d 16 9e 1d 20 20 20 20 20 20 |t_drop.... | 00003490 20 20 42 20 20 20 20 20 20 20 61 70 70 6c 79 5f | B apply_| 000034a0 70 61 74 0d 16 a8 0d 2e 6e 6f 74 5f 73 68 69 70 |pat.....not_ship| 000034b0 0d 16 b2 0e 2e 61 70 70 6c 79 5f 70 61 74 0d 16 |.....apply_pat..| 000034c0 bc 1f 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 |.. LDR | 000034d0 20 20 72 31 2c 41 70 61 74 5f 70 74 72 0d 16 c6 | r1,Apat_ptr...| 000034e0 25 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 |% LDR | 000034f0 20 72 34 2c 5b 72 31 2c 72 34 2c 4c 53 4c 20 23 | r4,[r1,r4,LSL #| 00003500 32 5d 0d 16 d0 27 20 20 20 20 20 20 20 20 4c 44 |2]...' LD| 00003510 52 20 20 20 20 20 72 33 2c 5b 72 38 2c 23 64 61 |R r3,[r8,#da| 00003520 74 5f 70 61 74 5f 70 63 5d 0d 16 da 19 20 20 20 |t_pat_pc].... | 00003530 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 33 2c | CMP r3,| 00003540 23 30 0d 16 e4 1c 20 20 20 20 20 20 20 20 42 4c |#0.... BL| 00003550 54 20 20 20 20 20 6e 65 78 74 5f 6d 6f 76 0d 16 |T next_mov..| 00003560 ee 2a 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 |.* LDR | 00003570 20 20 72 30 2c 5b 72 38 2c 23 64 61 74 5f 70 61 | r0,[r8,#dat_pa| 00003580 74 5f 63 6f 75 6e 74 5d 0d 16 f8 19 20 20 20 20 |t_count].... | 00003590 20 20 20 20 43 4d 50 20 20 20 20 20 72 30 2c 23 | CMP r0,#| 000035a0 30 0d 17 02 20 20 20 20 20 20 20 20 20 42 4e 45 |0... BNE| 000035b0 20 20 20 20 20 6e 6f 74 5f 6e 65 78 74 5f 6d 6f | not_next_mo| 000035c0 76 0d 17 0c 0d 2e 6e 65 78 74 5f 6d 6f 76 0d 17 |v.....next_mov..| 000035d0 16 1d 20 20 20 20 20 20 20 20 41 44 44 20 20 20 |.. ADD | 000035e0 20 20 72 33 2c 72 33 2c 23 31 32 0d 17 20 10 2e | r3,r3,#12.. ..| 000035f0 64 6f 5f 70 61 74 5f 6c 6f 6f 70 0d 17 2a 1d 20 |do_pat_loop..*. | 00003600 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 | ADD r| 00003610 31 34 2c 72 34 2c 72 33 0d 17 34 1f 20 20 20 20 |14,r4,r3..4. | 00003620 20 20 20 20 4c 44 52 20 20 20 20 20 72 30 2c 5b | LDR r0,[| 00003630 72 31 34 2c 23 30 5d 0d 17 3e 19 20 20 20 20 20 |r14,#0]..>. | 00003640 20 20 20 43 4d 4e 20 20 20 20 20 72 30 2c 23 31 | CMN r0,#1| 00003650 0d 17 48 20 20 20 20 20 20 20 20 20 42 45 51 20 |..H BEQ | 00003660 20 20 20 20 61 6c 69 65 6e 5f 69 73 5f 6f 66 66 | alien_is_off| 00003670 0d 17 52 19 20 20 20 20 20 20 20 20 4d 4f 56 4c |..R. MOVL| 00003680 54 20 20 20 72 33 2c 23 30 0d 17 5c 1f 20 20 20 |T r3,#0..\. | 00003690 20 20 20 20 20 42 4c 54 20 20 20 20 20 64 6f 5f | BLT do_| 000036a0 70 61 74 5f 6c 6f 6f 70 0d 17 66 1f 20 20 20 20 |pat_loop..f. | 000036b0 20 20 20 20 4c 44 52 20 20 20 20 20 72 30 2c 5b | LDR r0,[| 000036c0 72 31 34 2c 23 34 5d 0d 17 70 2a 20 20 20 20 20 |r14,#4]..p* | 000036d0 20 20 20 53 54 52 20 20 20 20 20 72 30 2c 5b 72 | STR r0,[r| 000036e0 38 2c 23 64 61 74 5f 70 61 74 5f 63 6f 75 6e 74 |8,#dat_pat_count| 000036f0 5d 0d 17 7a 11 2e 6e 6f 74 5f 6e 65 78 74 5f 6d |]..z..not_next_m| 00003700 6f 76 0d 17 84 27 20 20 20 20 20 20 20 20 53 54 |ov...' ST| 00003710 52 20 20 20 20 20 72 33 2c 5b 72 38 2c 23 64 61 |R r3,[r8,#da| 00003720 74 5f 70 61 74 5f 70 63 5d 0d 17 8e 1e 20 20 20 |t_pat_pc].... | 00003730 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 35 2c | LDR r5,| 00003740 5b 72 34 2c 72 33 5d 0d 17 98 19 20 20 20 20 20 |[r4,r3].... | 00003750 20 20 20 43 4d 50 20 20 20 20 20 72 35 2c 23 30 | CMP r5,#0| 00003760 0d 17 a2 20 20 20 20 20 20 20 20 20 42 4c 54 20 |... BLT | 00003770 20 20 20 20 61 6c 69 65 6e 5f 69 73 5f 6f 66 66 | alien_is_off| 00003780 0d 17 ac 04 0d 17 b6 1f 20 20 20 20 20 20 20 20 |........ | 00003790 4c 44 52 20 20 20 20 20 72 31 2c 41 6d 6f 76 5f |LDR r1,Amov_| 000037a0 70 74 72 0d 17 c0 25 20 20 20 20 20 20 20 20 4c |ptr...% L| 000037b0 44 52 20 20 20 20 20 72 31 2c 5b 72 31 2c 72 35 |DR r1,[r1,r5| 000037c0 2c 4c 53 4c 20 23 32 5d 0d 17 ca 27 20 20 20 20 |,LSL #2]...' | 000037d0 20 20 20 20 4c 44 52 20 20 20 20 20 72 32 2c 5b | LDR r2,[| 000037e0 72 38 2c 23 64 61 74 5f 6d 6f 76 5f 70 63 5d 0d |r8,#dat_mov_pc].| 000037f0 17 d4 22 20 20 20 20 20 20 20 20 4c 44 52 20 20 |.." LDR | 00003800 20 20 20 72 33 2c 5b 72 38 2c 23 64 61 74 5f 78 | r3,[r8,#dat_x| 00003810 5d 0d 17 de 22 20 20 20 20 20 20 20 20 4c 44 52 |]..." LDR| 00003820 20 20 20 20 20 72 34 2c 5b 72 38 2c 23 64 61 74 | r4,[r8,#dat| 00003830 5f 79 5d 0d 17 e8 04 0d 17 f2 27 20 20 20 20 20 |_y].......' | 00003840 20 20 20 4c 44 52 20 20 20 20 20 72 30 2c 5b 72 | LDR r0,[r| 00003850 38 2c 23 64 61 74 5f 61 63 74 69 76 65 5d 0d 17 |8,#dat_active]..| 00003860 fc 19 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 |.. CMP | 00003870 20 20 72 30 2c 23 30 0d 18 06 23 20 20 20 20 20 | r0,#0...# | 00003880 20 20 20 42 45 51 20 20 20 20 20 73 6b 69 70 5f | BEQ skip_| 00003890 61 6c 69 65 6e 5f 6d 6f 76 65 0d 18 10 04 0d 18 |alien_move......| 000038a0 1a 0f 2e 63 79 63 6c 65 5f 6d 6f 76 65 0d 18 24 |...cycle_move..$| 000038b0 1e 20 20 20 20 20 20 20 20 4c 44 52 42 20 20 20 |. LDRB | 000038c0 20 72 30 2c 5b 72 31 2c 72 32 5d 0d 18 2e 1b 20 | r0,[r1,r2].... | 000038d0 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 | CMP r| 000038e0 30 2c 23 26 46 46 0d 18 38 21 20 20 20 20 20 20 |0,#&FF..8! | 000038f0 20 20 42 4e 45 20 20 20 20 20 6e 6f 74 5f 65 6e | BNE not_en| 00003900 64 5f 63 79 63 6c 65 0d 18 42 2a 20 20 20 20 20 |d_cycle..B* | 00003910 20 20 20 4c 44 52 20 20 20 20 20 72 30 2c 5b 72 | LDR r0,[r| 00003920 38 2c 23 64 61 74 5f 70 61 74 5f 63 6f 75 6e 74 |8,#dat_pat_count| 00003930 5d 0d 18 4c 19 20 20 20 20 20 20 20 20 43 4d 50 |]..L. CMP| 00003940 20 20 20 20 20 72 30 2c 23 30 0d 18 56 1c 20 20 | r0,#0..V. | 00003950 20 20 20 20 20 20 53 55 42 47 45 20 20 20 72 30 | SUBGE r0| 00003960 2c 72 30 2c 23 31 0d 18 60 2a 20 20 20 20 20 20 |,r0,#1..`* | 00003970 20 20 53 54 52 47 45 20 20 20 72 30 2c 5b 72 38 | STRGE r0,[r8| 00003980 2c 23 64 61 74 5f 70 61 74 5f 63 6f 75 6e 74 5d |,#dat_pat_count]| 00003990 0d 18 6a 19 20 20 20 20 20 20 20 20 4d 4f 56 20 |..j. MOV | 000039a0 20 20 20 20 72 32 2c 23 30 0d 18 74 1e 20 20 20 | r2,#0..t. | 000039b0 20 20 20 20 20 42 20 20 20 20 20 20 20 63 79 63 | B cyc| 000039c0 6c 65 5f 6d 6f 76 65 0d 18 7e 12 2e 6e 6f 74 5f |le_move..~..not_| 000039d0 65 6e 64 5f 63 79 63 6c 65 0d 18 88 1c 20 20 20 |end_cycle.... | 000039e0 20 20 20 20 20 41 44 44 20 20 20 20 20 72 33 2c | ADD r3,| 000039f0 72 33 2c 72 30 0d 18 92 1e 20 20 20 20 20 20 20 |r3,r0.... | 00003a00 20 53 55 42 20 20 20 20 20 72 33 2c 72 33 2c 23 | SUB r3,r3,#| 00003a10 26 37 46 0d 18 9c 1c 20 20 20 20 20 20 20 20 41 |&7F.... A| 00003a20 44 44 20 20 20 20 20 72 32 2c 72 32 2c 23 31 0d |DD r2,r2,#1.| 00003a30 18 a6 1e 20 20 20 20 20 20 20 20 4c 44 52 42 20 |... LDRB | 00003a40 20 20 20 72 30 2c 5b 72 31 2c 72 32 5d 0d 18 b0 | r0,[r1,r2]...| 00003a50 1c 20 20 20 20 20 20 20 20 53 55 42 20 20 20 20 |. SUB | 00003a60 20 72 34 2c 72 34 2c 72 30 0d 18 ba 1e 20 20 20 | r4,r4,r0.... | 00003a70 20 20 20 20 20 41 44 44 20 20 20 20 20 72 34 2c | ADD r4,| 00003a80 72 34 2c 23 26 37 46 0d 18 c4 1c 20 20 20 20 20 |r4,#&7F.... | 00003a90 20 20 20 41 44 44 20 20 20 20 20 72 32 2c 72 32 | ADD r2,r2| 00003aa0 2c 23 31 0d 18 ce 27 20 20 20 20 20 20 20 20 53 |,#1...' S| 00003ab0 54 52 20 20 20 20 20 72 32 2c 5b 72 38 2c 23 64 |TR r2,[r8,#d| 00003ac0 61 74 5f 6d 6f 76 5f 70 63 5d 0d 18 d8 22 20 20 |at_mov_pc]..." | 00003ad0 20 20 20 20 20 20 53 54 52 20 20 20 20 20 72 33 | STR r3| 00003ae0 2c 5b 72 38 2c 23 64 61 74 5f 78 5d 0d 18 e2 22 |,[r8,#dat_x]..."| 00003af0 20 20 20 20 20 20 20 20 53 54 52 20 20 20 20 20 | STR | 00003b00 72 34 2c 5b 72 38 2c 23 64 61 74 5f 79 5d 0d 18 |r4,[r8,#dat_y]..| 00003b10 ec 14 2e 73 6b 69 70 5f 61 6c 69 65 6e 5f 6d 6f |...skip_alien_mo| 00003b20 76 65 0d 18 f6 22 20 20 20 20 20 20 20 20 4c 44 |ve..." LD| 00003b30 52 20 20 20 20 20 72 30 2c 41 6d 6f 76 5f 73 70 |R r0,Amov_sp| 00003b40 72 69 74 65 0d 19 00 23 20 20 20 20 20 20 20 20 |rite...# | 00003b50 41 44 44 20 20 20 20 20 72 30 2c 72 30 2c 72 35 |ADD r0,r0,r5| 00003b60 2c 4c 53 4c 20 23 34 0d 19 0a 1e 20 20 20 20 20 |,LSL #4.... | 00003b70 20 20 20 53 55 42 20 20 20 20 20 72 31 34 2c 72 | SUB r14,r| 00003b80 33 2c 72 31 30 0d 19 14 1c 20 20 20 20 20 20 20 |3,r10.... | 00003b90 20 80 20 20 20 20 20 72 31 34 2c 72 31 34 2c 23 | . r14,r14,#| 00003ba0 33 0d 19 1e 26 20 20 20 20 20 20 20 20 4c 44 52 |3...& LDR| 00003bb0 20 20 20 20 20 72 30 2c 5b 72 30 2c 72 31 34 2c | r0,[r0,r14,| 00003bc0 4c 53 4c 20 23 32 5d 0d 19 28 24 20 20 20 20 20 |LSL #2]..($ | 00003bd0 20 20 20 53 54 52 20 20 20 20 20 72 30 2c 5b 72 | STR r0,[r| 00003be0 38 2c 23 64 61 74 5f 73 70 72 5d 0d 19 32 12 2e |8,#dat_spr]..2..| 00003bf0 64 6f 5f 6e 65 78 74 5f 61 6c 69 65 6e 0d 19 3c |do_next_alien..<| 00003c00 19 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 |. MOV | 00003c10 20 72 37 2c 72 38 0d 19 46 25 20 20 20 20 20 20 | r7,r8..F% | 00003c20 20 20 4c 44 52 20 20 20 20 20 72 38 2c 5b 72 38 | LDR r8,[r8| 00003c30 2c 23 64 61 74 5f 6e 65 78 74 5d 0d 19 50 21 20 |,#dat_next]..P! | 00003c40 20 20 20 20 20 20 20 42 20 20 20 20 20 20 20 64 | B d| 00003c50 6f 5f 61 6c 69 65 6e 5f 6c 6f 6f 70 0d 19 5a 11 |o_alien_loop..Z.| 00003c60 2e 61 6c 69 65 6e 5f 69 73 5f 6f 66 66 0d 19 64 |.alien_is_off..d| 00003c70 25 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 |% LDR | 00003c80 20 72 36 2c 5b 72 38 2c 23 64 61 74 5f 6e 65 78 | r6,[r8,#dat_nex| 00003c90 74 5d 0d 19 6e 25 20 20 20 20 20 20 20 20 53 54 |t]..n% ST| 00003ca0 52 20 20 20 20 20 72 36 2c 5b 72 37 2c 23 64 61 |R r6,[r7,#da| 00003cb0 74 5f 6e 65 78 74 5d 0d 19 78 1b 20 20 20 20 20 |t_next]..x. | 00003cc0 20 20 20 4c 44 52 20 20 20 20 20 72 35 2c 66 72 | LDR r5,fr| 00003cd0 65 65 0d 19 82 25 20 20 20 20 20 20 20 20 53 54 |ee...% ST| 00003ce0 52 20 20 20 20 20 72 35 2c 5b 72 38 2c 23 64 61 |R r5,[r8,#da| 00003cf0 74 5f 6e 65 78 74 5d 0d 19 8c 1b 20 20 20 20 20 |t_next].... | 00003d00 20 20 20 53 54 52 20 20 20 20 20 72 38 2c 66 72 | STR r8,fr| 00003d10 65 65 0d 19 96 19 20 20 20 20 20 20 20 20 4d 4f |ee.... MO| 00003d20 56 20 20 20 20 20 72 38 2c 72 36 0d 19 a0 21 20 |V r8,r6...! | 00003d30 20 20 20 20 20 20 20 42 20 20 20 20 20 20 20 64 | B d| 00003d40 6f 5f 61 6c 69 65 6e 5f 6c 6f 6f 70 0d 19 aa 04 |o_alien_loop....| 00003d50 0d 19 b4 10 2e 73 68 6f 77 5f 61 6c 69 65 6e 73 |.....show_aliens| 00003d60 0d 19 be 27 20 20 20 20 20 20 20 20 53 54 4d 46 |...' STMF| 00003d70 44 20 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 31 |D (sp)!,{r0-r1| 00003d80 32 2c 6c 69 6e 6b 7d 0d 19 c8 1b 20 20 20 20 20 |2,link}.... | 00003d90 20 20 20 41 44 52 20 20 20 20 20 72 38 2c 6c 69 | ADR r8,li| 00003da0 73 74 0d 19 d2 15 2e 73 68 6f 77 5f 61 6c 69 65 |st.....show_alie| 00003db0 6e 73 5f 6c 6f 6f 70 0d 19 dc 25 20 20 20 20 20 |ns_loop...% | 00003dc0 20 20 20 4c 44 52 20 20 20 20 20 72 38 2c 5b 72 | LDR r8,[r| 00003dd0 38 2c 23 64 61 74 5f 6e 65 78 74 5d 0d 19 e6 19 |8,#dat_next]....| 00003de0 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 | CMP | 00003df0 72 38 2c 23 30 0d 19 f0 25 20 20 20 20 20 20 20 |r8,#0...% | 00003e00 20 4c 44 4d 45 51 46 44 20 28 73 70 29 21 2c 7b | LDMEQFD (sp)!,{| 00003e10 72 30 2d 72 31 32 2c 70 63 7d 0d 19 fa 27 20 20 |r0-r12,pc}...' | 00003e20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 30 | LDR r0| 00003e30 2c 5b 72 38 2c 23 64 61 74 5f 61 63 74 69 76 65 |,[r8,#dat_active| 00003e40 5d 0d 1a 04 19 20 20 20 20 20 20 20 20 43 4d 50 |].... CMP| 00003e50 20 20 20 20 20 72 30 2c 23 30 0d 1a 0e 1e 20 20 | r0,#0.... | 00003e60 20 20 20 20 20 20 42 47 45 20 20 20 20 20 73 68 | BGE sh| 00003e70 6f 77 5f 61 6c 69 76 65 0d 1a 18 27 20 20 20 20 |ow_alive...' | 00003e80 20 20 20 20 41 44 44 20 20 20 20 20 72 33 2c 72 | ADD r3,r| 00003e90 30 2c 23 66 61 64 65 5f 73 74 61 67 65 73 25 0d |0,#fade_stages%.| 00003ea0 1a 22 24 20 20 20 20 20 20 20 20 4c 44 52 20 20 |."$ LDR | 00003eb0 20 20 20 72 30 2c 5b 72 38 2c 23 64 61 74 5f 73 | r0,[r8,#dat_s| 00003ec0 70 72 5d 0d 1a 2c 19 20 20 20 20 20 20 20 20 43 |pr]..,. C| 00003ed0 4d 50 20 20 20 20 20 72 30 2c 23 30 0d 1a 36 22 |MP r0,#0..6"| 00003ee0 20 20 20 20 20 20 20 20 4c 44 52 4e 45 20 20 20 | LDRNE | 00003ef0 72 31 2c 5b 72 38 2c 23 64 61 74 5f 78 5d 0d 1a |r1,[r8,#dat_x]..| 00003f00 40 1d 20 20 20 20 20 20 20 20 53 55 42 4e 45 20 |@. SUBNE | 00003f10 20 20 72 31 2c 72 31 2c 72 31 30 0d 1a 4a 22 20 | r1,r1,r10..J" | 00003f20 20 20 20 20 20 20 20 4c 44 52 4e 45 20 20 20 72 | LDRNE r| 00003f30 32 2c 5b 72 38 2c 23 64 61 74 5f 79 5d 0d 1a 54 |2,[r8,#dat_y]..T| 00003f40 25 20 20 20 20 20 20 20 20 42 4c 4e 45 20 20 20 |% BLNE | 00003f50 20 73 68 6f 77 5f 73 70 72 69 74 65 5f 64 79 69 | show_sprite_dyi| 00003f60 6e 67 0d 1a 5e 24 20 20 20 20 20 20 20 20 42 20 |ng..^$ B | 00003f70 20 20 20 20 20 20 73 68 6f 77 5f 61 6c 69 65 6e | show_alien| 00003f80 73 5f 6c 6f 6f 70 0d 1a 68 0f 2e 73 68 6f 77 5f |s_loop..h..show_| 00003f90 61 6c 69 76 65 0d 1a 72 24 20 20 20 20 20 20 20 |alive..r$ | 00003fa0 20 4c 44 52 20 20 20 20 20 72 30 2c 5b 72 38 2c | LDR r0,[r8,| 00003fb0 23 64 61 74 5f 73 70 72 5d 0d 1a 7c 19 20 20 20 |#dat_spr]..|. | 00003fc0 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 30 2c | CMP r0,| 00003fd0 23 30 0d 1a 86 22 20 20 20 20 20 20 20 20 4c 44 |#0..." LD| 00003fe0 52 4e 45 20 20 20 72 31 2c 5b 72 38 2c 23 64 61 |RNE r1,[r8,#da| 00003ff0 74 5f 78 5d 0d 1a 90 1d 20 20 20 20 20 20 20 20 |t_x].... | 00004000 53 55 42 4e 45 20 20 20 72 31 2c 72 31 2c 72 31 |SUBNE r1,r1,r1| 00004010 30 0d 1a 9a 22 20 20 20 20 20 20 20 20 4c 44 52 |0..." LDR| 00004020 4e 45 20 20 20 72 32 2c 5b 72 38 2c 23 64 61 74 |NE r2,[r8,#dat| 00004030 5f 79 5d 0d 1a a4 1f 20 20 20 20 20 20 20 20 42 |_y].... B| 00004040 4c 4e 45 20 20 20 20 73 68 6f 77 5f 73 70 72 69 |LNE show_spri| 00004050 74 65 0d 1a ae 24 20 20 20 20 20 20 20 20 42 20 |te...$ B | 00004060 20 20 20 20 20 20 73 68 6f 77 5f 61 6c 69 65 6e | show_alien| 00004070 73 5f 6c 6f 6f 70 0d 1a b8 04 0d 1a c2 11 2e 62 |s_loop.........b| 00004080 61 63 6b 5f 63 6f 6c 6c 69 64 65 0d 1a cc 27 20 |ack_collide...' | 00004090 20 20 20 20 20 20 20 53 54 4d 46 44 20 20 20 28 | STMFD (| 000040a0 73 70 29 21 2c 7b 72 30 2d 72 31 32 2c 6c 69 6e |sp)!,{r0-r12,lin| 000040b0 6b 7d 0d 1a d6 1b 20 20 20 20 20 20 20 20 41 44 |k}.... AD| 000040c0 52 20 20 20 20 20 72 38 2c 6c 69 73 74 0d 1a e0 |R r8,list...| 000040d0 16 2e 62 61 63 6b 5f 63 6f 6c 6c 69 64 65 5f 6c |..back_collide_l| 000040e0 6f 6f 70 0d 1a ea 25 20 20 20 20 20 20 20 20 4c |oop...% L| 000040f0 44 52 20 20 20 20 20 72 38 2c 5b 72 38 2c 23 64 |DR r8,[r8,#d| 00004100 61 74 5f 6e 65 78 74 5d 0d 1a f4 19 20 20 20 20 |at_next].... | 00004110 20 20 20 20 43 4d 50 20 20 20 20 20 72 38 2c 23 | CMP r8,#| 00004120 30 0d 1a fe 25 20 20 20 20 20 20 20 20 4c 44 4d |0...% LDM| 00004130 45 51 46 44 20 28 73 70 29 21 2c 7b 72 30 2d 72 |EQFD (sp)!,{r0-r| 00004140 31 32 2c 70 63 7d 0d 1b 08 27 20 20 20 20 20 20 |12,pc}...' | 00004150 20 20 4c 44 52 20 20 20 20 20 72 30 2c 5b 72 38 | LDR r0,[r8| 00004160 2c 23 64 61 74 5f 61 63 74 69 76 65 5d 0d 1b 12 |,#dat_active]...| 00004170 19 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 |. CMP | 00004180 20 72 30 2c 23 30 0d 1b 1c 25 20 20 20 20 20 20 | r0,#0...% | 00004190 20 20 42 4c 45 20 20 20 20 20 62 61 63 6b 5f 63 | BLE back_c| 000041a0 6f 6c 6c 69 64 65 5f 6c 6f 6f 70 0d 1b 26 26 20 |ollide_loop..&& | 000041b0 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 | LDR r| 000041c0 30 2c 5b 72 38 2c 23 64 61 74 5f 63 6c 61 73 73 |0,[r8,#dat_class| 000041d0 5d 0d 1b 30 19 20 20 20 20 20 20 20 20 43 4d 50 |]..0. CMP| 000041e0 20 20 20 20 20 72 30 2c 23 31 0d 1b 3a 19 20 20 | r0,#1..:. | 000041f0 20 20 20 20 20 20 43 4d 50 4e 45 20 20 20 72 30 | CMPNE r0| 00004200 2c 23 32 0d 1b 44 25 20 20 20 20 20 20 20 20 42 |,#2..D% B| 00004210 4e 45 20 20 20 20 20 62 61 63 6b 5f 63 6f 6c 6c |NE back_coll| 00004220 69 64 65 5f 6c 6f 6f 70 0d 1b 4e 24 20 20 20 20 |ide_loop..N$ | 00004230 20 20 20 20 4c 44 52 20 20 20 20 20 72 30 2c 5b | LDR r0,[| 00004240 72 38 2c 23 64 61 74 5f 73 70 72 5d 0d 1b 58 19 |r8,#dat_spr]..X.| 00004250 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 | CMP | 00004260 72 30 2c 23 30 0d 1b 62 25 20 20 20 20 20 20 20 |r0,#0..b% | 00004270 20 42 45 51 20 20 20 20 20 62 61 63 6b 5f 63 6f | BEQ back_co| 00004280 6c 6c 69 64 65 5f 6c 6f 6f 70 0d 1b 6c 22 20 20 |llide_loop..l" | 00004290 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 31 | LDR r1| 000042a0 2c 5b 72 38 2c 23 64 61 74 5f 78 5d 0d 1b 76 1d |,[r8,#dat_x]..v.| 000042b0 20 20 20 20 20 20 20 20 53 55 42 20 20 20 20 20 | SUB | 000042c0 72 31 2c 72 31 2c 72 31 30 0d 1b 80 22 20 20 20 |r1,r1,r10..." | 000042d0 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 32 2c | LDR r2,| 000042e0 5b 72 38 2c 23 64 61 74 5f 79 5d 0d 1b 8a 21 20 |[r8,#dat_y]...! | 000042f0 20 20 20 20 20 20 20 42 4c 20 20 20 20 20 20 63 | BL c| 00004300 6f 6c 6c 69 64 65 5f 63 68 65 63 6b 0d 1b 94 25 |ollide_check...%| 00004310 20 20 20 20 20 20 20 20 42 45 51 20 20 20 20 20 | BEQ | 00004320 62 61 63 6b 5f 63 6f 6c 6c 69 64 65 5f 6c 6f 6f |back_collide_loo| 00004330 70 0d 1b 9e 25 20 20 20 20 20 20 20 20 4c 44 52 |p...% LDR| 00004340 20 20 20 20 20 72 35 2c 5b 72 38 2c 23 64 61 74 | r5,[r8,#dat| 00004350 5f 74 79 70 65 5d 0d 1b a8 31 20 20 20 20 20 20 |_type]...1 | 00004360 20 20 43 4d 50 20 20 20 20 20 72 35 2c 23 a4 69 | CMP r5,#.i| 00004370 64 65 6e 74 69 66 79 5f 70 61 74 74 65 72 6e 28 |dentify_pattern(| 00004380 22 73 68 69 70 22 29 0d 1b b2 26 20 20 20 20 20 |"ship")...& | 00004390 20 20 20 42 4e 45 20 20 20 20 20 73 68 69 70 5f | BNE ship_| 000043a0 68 61 73 6e 74 5f 63 72 61 73 68 65 64 0d 1b bc |hasnt_crashed...| 000043b0 24 20 20 20 20 20 20 20 20 42 4c 20 20 20 20 20 |$ BL | 000043c0 20 73 68 69 70 5f 68 61 73 5f 63 72 61 73 68 65 | ship_has_crashe| 000043d0 64 0d 1b c6 25 20 20 20 20 20 20 20 20 42 20 20 |d...% B | 000043e0 20 20 20 20 20 62 61 63 6b 5f 63 6f 6c 6c 69 64 | back_collid| 000043f0 65 5f 6c 6f 6f 70 0d 1b d0 17 2e 73 68 69 70 5f |e_loop.....ship_| 00004400 68 61 73 6e 74 5f 63 72 61 73 68 65 64 0d 1b da |hasnt_crashed...| 00004410 24 20 20 20 20 20 20 20 20 4d 56 4e 20 20 20 20 |$ MVN | 00004420 20 72 30 2c 23 66 61 64 65 5f 73 74 61 67 65 73 | r0,#fade_stages| 00004430 25 0d 1b e4 27 20 20 20 20 20 20 20 20 53 54 52 |%...' STR| 00004440 20 20 20 20 20 72 30 2c 5b 72 38 2c 23 64 61 74 | r0,[r8,#dat| 00004450 5f 61 63 74 69 76 65 5d 0d 1b ee 25 20 20 20 20 |_active]...% | 00004460 20 20 20 20 42 20 20 20 20 20 20 20 62 61 63 6b | B back| 00004470 5f 63 6f 6c 6c 69 64 65 5f 6c 6f 6f 70 0d 1b f8 |_collide_loop...| 00004480 04 0d 1c 02 15 2e 6c 69 73 74 20 20 20 44 43 44 |......list DCD| 00004490 20 20 20 20 20 30 0d 1c 0c 15 2e 66 72 65 65 20 | 0.....free | 000044a0 20 20 44 43 44 20 20 20 20 20 30 0d 1c 16 04 0d | DCD 0.....| 000044b0 1c 20 15 2e 73 68 69 70 5f 68 61 73 5f 63 72 61 |. ..ship_has_cra| 000044c0 73 68 65 64 0d 1c 2a 27 20 20 20 20 20 20 20 20 |shed..*' | 000044d0 53 54 4d 46 44 20 20 20 28 73 70 29 21 2c 7b 72 |STMFD (sp)!,{r| 000044e0 30 2d 72 31 32 2c 6c 69 6e 6b 7d 0d 1c 34 1b 20 |0-r12,link}..4. | 000044f0 20 20 20 20 20 20 20 41 44 52 20 20 20 20 20 72 | ADR r| 00004500 38 2c 6c 69 73 74 0d 1c 3e 0e 2e 66 69 6e 64 5f |8,list..>..find_| 00004510 73 68 69 70 0d 1c 48 25 20 20 20 20 20 20 20 20 |ship..H% | 00004520 4c 44 52 20 20 20 20 20 72 38 2c 5b 72 38 2c 23 |LDR r8,[r8,#| 00004530 64 61 74 5f 6e 65 78 74 5d 0d 1c 52 25 20 20 20 |dat_next]..R% | 00004540 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 30 2c | LDR r0,| 00004550 5b 72 38 2c 23 64 61 74 5f 74 79 70 65 5d 0d 1c |[r8,#dat_type]..| 00004560 5c 31 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 |\1 CMP | 00004570 20 20 72 30 2c 23 a4 69 64 65 6e 74 69 66 79 5f | r0,#.identify_| 00004580 70 61 74 74 65 72 6e 28 22 73 68 69 70 22 29 0d |pattern("ship").| 00004590 1c 66 1d 20 20 20 20 20 20 20 20 42 4e 45 20 20 |.f. BNE | 000045a0 20 20 20 66 69 6e 64 5f 73 68 69 70 0d 1c 70 1a | find_ship..p.| 000045b0 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 | MOV | 000045c0 72 30 2c 23 35 30 0d 1c 7a 26 20 20 20 20 20 20 |r0,#50..z& | 000045d0 20 20 53 54 52 20 20 20 20 20 72 30 2c 6c 69 66 | STR r0,lif| 000045e0 65 5f 6c 6f 73 74 5f 63 6f 75 6e 74 0d 1c 84 22 |e_lost_count..."| 000045f0 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 | LDR | 00004600 72 31 2c 5b 72 38 2c 23 64 61 74 5f 78 5d 0d 1c |r1,[r8,#dat_x]..| 00004610 8e 22 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 |." LDR | 00004620 20 20 72 32 2c 5b 72 38 2c 23 64 61 74 5f 79 5d | r2,[r8,#dat_y]| 00004630 0d 1c 98 19 20 20 20 20 20 20 20 20 4d 4f 56 20 |.... MOV | 00004640 20 20 20 20 72 33 2c 23 30 0d 1c a2 36 20 20 20 | r3,#0...6 | 00004650 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 30 2c | MOV r0,| 00004660 23 a4 69 64 65 6e 74 69 66 79 5f 70 61 74 74 65 |#.identify_patte| 00004670 72 6e 28 22 73 68 69 70 64 65 61 64 31 22 29 0d |rn("shipdead1").| 00004680 1c ac 25 20 20 20 20 20 20 20 20 42 4c 20 20 20 |..% BL | 00004690 20 20 20 61 64 64 5f 61 6c 69 65 6e 5f 74 6f 5f | add_alien_to_| 000046a0 6c 69 73 74 0d 1c b6 36 20 20 20 20 20 20 20 20 |list...6 | 000046b0 4d 4f 56 20 20 20 20 20 72 30 2c 23 a4 69 64 65 |MOV r0,#.ide| 000046c0 6e 74 69 66 79 5f 70 61 74 74 65 72 6e 28 22 73 |ntify_pattern("s| 000046d0 68 69 70 64 65 61 64 32 22 29 0d 1c c0 25 20 20 |hipdead2")...% | 000046e0 20 20 20 20 20 20 42 4c 20 20 20 20 20 20 61 64 | BL ad| 000046f0 64 5f 61 6c 69 65 6e 5f 74 6f 5f 6c 69 73 74 0d |d_alien_to_list.| 00004700 1c ca 36 20 20 20 20 20 20 20 20 4d 4f 56 20 20 |..6 MOV | 00004710 20 20 20 72 30 2c 23 a4 69 64 65 6e 74 69 66 79 | r0,#.identify| 00004720 5f 70 61 74 74 65 72 6e 28 22 73 68 69 70 64 65 |_pattern("shipde| 00004730 61 64 33 22 29 0d 1c d4 25 20 20 20 20 20 20 20 |ad3")...% | 00004740 20 42 4c 20 20 20 20 20 20 61 64 64 5f 61 6c 69 | BL add_ali| 00004750 65 6e 5f 74 6f 5f 6c 69 73 74 0d 1c de 36 20 20 |en_to_list...6 | 00004760 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 30 | MOV r0| 00004770 2c 23 a4 69 64 65 6e 74 69 66 79 5f 70 61 74 74 |,#.identify_patt| 00004780 65 72 6e 28 22 73 68 69 70 64 65 61 64 34 22 29 |ern("shipdead4")| 00004790 0d 1c e8 25 20 20 20 20 20 20 20 20 42 4c 20 20 |...% BL | 000047a0 20 20 20 20 61 64 64 5f 61 6c 69 65 6e 5f 74 6f | add_alien_to| 000047b0 5f 6c 69 73 74 0d 1c f2 24 20 20 20 20 20 20 20 |_list...$ | 000047c0 20 4d 56 4e 20 20 20 20 20 72 30 2c 23 66 61 64 | MVN r0,#fad| 000047d0 65 5f 73 74 61 67 65 73 25 0d 1c fc 27 20 20 20 |e_stages%...' | 000047e0 20 20 20 20 20 53 54 52 20 20 20 20 20 72 30 2c | STR r0,| 000047f0 5b 72 38 2c 23 64 61 74 5f 61 63 74 69 76 65 5d |[r8,#dat_active]| 00004800 0d 1d 06 25 20 20 20 20 20 20 20 20 4c 44 4d 46 |...% LDMF| 00004810 44 20 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 31 |D (sp)!,{r0-r1| 00004820 32 2c 70 63 7d 0d 1d 10 04 0d 1d 1a 11 2e 66 6f |2,pc}.........fo| 00004830 72 65 5f 63 6f 6c 6c 69 64 65 0d 1d 24 27 20 20 |re_collide..$' | 00004840 20 20 20 20 20 20 53 54 4d 46 44 20 20 20 28 73 | STMFD (s| 00004850 70 29 21 2c 7b 72 30 2d 72 31 32 2c 6c 69 6e 6b |p)!,{r0-r12,link| 00004860 7d 0d 1d 2e 1b 20 20 20 20 20 20 20 20 41 44 52 |}.... ADR| 00004870 20 20 20 20 20 72 38 2c 6c 69 73 74 0d 1d 38 16 | r8,list..8.| 00004880 2e 66 6f 72 65 5f 63 6f 6c 6c 69 64 65 5f 6c 6f |.fore_collide_lo| 00004890 6f 70 0d 1d 42 25 20 20 20 20 20 20 20 20 4c 44 |op..B% LD| 000048a0 52 20 20 20 20 20 72 38 2c 5b 72 38 2c 23 64 61 |R r8,[r8,#da| 000048b0 74 5f 6e 65 78 74 5d 0d 1d 4c 19 20 20 20 20 20 |t_next]..L. | 000048c0 20 20 20 43 4d 50 20 20 20 20 20 72 38 2c 23 30 | CMP r8,#0| 000048d0 0d 1d 56 25 20 20 20 20 20 20 20 20 4c 44 4d 45 |..V% LDME| 000048e0 51 46 44 20 28 73 70 29 21 2c 7b 72 30 2d 72 31 |QFD (sp)!,{r0-r1| 000048f0 32 2c 70 63 7d 0d 1d 60 26 20 20 20 20 20 20 20 |2,pc}..`& | 00004900 20 4c 44 52 20 20 20 20 20 72 30 2c 5b 72 38 2c | LDR r0,[r8,| 00004910 23 64 61 74 5f 63 6c 61 73 73 5d 0d 1d 6a 19 20 |#dat_class]..j. | 00004920 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 | CMP r| 00004930 30 2c 23 31 0d 1d 74 25 20 20 20 20 20 20 20 20 |0,#1..t% | 00004940 42 4e 45 20 20 20 20 20 66 6f 72 65 5f 63 6f 6c |BNE fore_col| 00004950 6c 69 64 65 5f 6c 6f 6f 70 0d 1d 7e 27 20 20 20 |lide_loop..~' | 00004960 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 30 2c | LDR r0,| 00004970 5b 72 38 2c 23 64 61 74 5f 61 63 74 69 76 65 5d |[r8,#dat_active]| 00004980 0d 1d 88 19 20 20 20 20 20 20 20 20 43 4d 50 20 |.... CMP | 00004990 20 20 20 20 72 30 2c 23 30 0d 1d 92 25 20 20 20 | r0,#0...% | 000049a0 20 20 20 20 20 42 4c 54 20 20 20 20 20 66 6f 72 | BLT for| 000049b0 65 5f 63 6f 6c 6c 69 64 65 5f 6c 6f 6f 70 0d 1d |e_collide_loop..| 000049c0 9c 25 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 |.% LDR | 000049d0 20 20 72 31 34 2c 5b 72 38 2c 23 64 61 74 5f 73 | r14,[r8,#dat_s| 000049e0 70 72 5d 0d 1d a6 1a 20 20 20 20 20 20 20 20 43 |pr].... C| 000049f0 4d 50 20 20 20 20 20 72 31 34 2c 23 30 0d 1d b0 |MP r14,#0...| 00004a00 25 20 20 20 20 20 20 20 20 42 45 51 20 20 20 20 |% BEQ | 00004a10 20 66 6f 72 65 5f 63 6f 6c 6c 69 64 65 5f 6c 6f | fore_collide_lo| 00004a20 6f 70 0d 1d ba 1f 20 20 20 20 20 20 20 20 41 44 |op.... AD| 00004a30 44 20 20 20 20 20 72 31 34 2c 72 31 34 2c 23 31 |D r14,r14,#1| 00004a40 36 0d 1d c4 1f 20 20 20 20 20 20 20 20 4c 44 4d |6.... LDM| 00004a50 49 41 20 20 20 72 31 34 2c 7b 72 36 2d 72 37 7d |IA r14,{r6-r7}| 00004a60 0d 1d ce 21 20 20 20 20 20 20 20 20 41 44 44 20 |...! ADD | 00004a70 20 20 20 20 72 31 34 2c 72 38 2c 23 64 61 74 5f | r14,r8,#dat_| 00004a80 78 0d 1d d8 1f 20 20 20 20 20 20 20 20 4c 44 4d |x.... LDM| 00004a90 49 41 20 20 20 72 31 34 2c 7b 72 34 2c 72 35 7d |IA r14,{r4,r5}| 00004aa0 0d 1d e2 1c 20 20 20 20 20 20 20 20 42 49 43 20 |.... BIC | 00004ab0 20 20 20 20 72 34 2c 72 34 2c 23 33 0d 1d ec 1c | r4,r4,#3....| 00004ac0 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 00004ad0 72 36 2c 72 36 2c 23 31 0d 1d f6 23 20 20 20 20 |r6,r6,#1...# | 00004ae0 20 20 20 20 41 44 44 20 20 20 20 20 72 36 2c 72 | ADD r6,r| 00004af0 34 2c 72 36 2c 4c 53 4c 20 23 32 0d 1e 00 1c 20 |4,r6,LSL #2.... | 00004b00 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 | ADD r| 00004b10 37 2c 72 37 2c 23 31 0d 1e 0a 1c 20 20 20 20 20 |7,r7,#1.... | 00004b20 20 20 20 41 44 44 20 20 20 20 20 72 37 2c 72 35 | ADD r7,r5| 00004b30 2c 72 37 0d 1e 14 1b 20 20 20 20 20 20 20 20 41 |,r7.... A| 00004b40 44 52 20 20 20 20 20 72 39 2c 6c 69 73 74 0d 1e |DR r9,list..| 00004b50 1e 17 2e 66 6f 72 65 5f 63 6f 6c 6c 69 64 65 5f |...fore_collide_| 00004b60 6c 6f 6f 70 62 0d 1e 28 25 20 20 20 20 20 20 20 |loopb..(% | 00004b70 20 4c 44 52 20 20 20 20 20 72 39 2c 5b 72 39 2c | LDR r9,[r9,| 00004b80 23 64 61 74 5f 6e 65 78 74 5d 0d 1e 32 19 20 20 |#dat_next]..2. | 00004b90 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 39 | CMP r9| 00004ba0 2c 23 30 0d 1e 3c 25 20 20 20 20 20 20 20 20 42 |,#0..<% B| 00004bb0 45 51 20 20 20 20 20 66 6f 72 65 5f 63 6f 6c 6c |EQ fore_coll| 00004bc0 69 64 65 5f 6c 6f 6f 70 0d 1e 46 26 20 20 20 20 |ide_loop..F& | 00004bd0 20 20 20 20 4c 44 52 20 20 20 20 20 72 30 2c 5b | LDR r0,[| 00004be0 72 39 2c 23 64 61 74 5f 63 6c 61 73 73 5d 0d 1e |r9,#dat_class]..| 00004bf0 50 19 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 |P. CMP | 00004c00 20 20 72 30 2c 23 31 0d 1e 5a 26 20 20 20 20 20 | r0,#1..Z& | 00004c10 20 20 20 42 45 51 20 20 20 20 20 66 6f 72 65 5f | BEQ fore_| 00004c20 63 6f 6c 6c 69 64 65 5f 6c 6f 6f 70 62 0d 1e 64 |collide_loopb..d| 00004c30 20 20 20 20 20 20 20 20 20 42 4c 54 20 20 20 20 | BLT | 00004c40 20 6e 6f 74 5f 61 5f 6d 65 74 65 6f 72 0d 1e 6e | not_a_meteor..n| 00004c50 25 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 |% LDR | 00004c60 20 72 30 2c 5b 72 38 2c 23 64 61 74 5f 74 79 70 | r0,[r8,#dat_typ| 00004c70 65 5d 0d 1e 78 33 20 20 20 20 20 20 20 20 43 4d |e]..x3 CM| 00004c80 50 20 20 20 20 20 72 30 2c 23 a4 69 64 65 6e 74 |P r0,#.ident| 00004c90 69 66 79 5f 70 61 74 74 65 72 6e 28 22 62 75 6c |ify_pattern("bul| 00004ca0 6c 65 74 22 29 0d 1e 82 31 20 20 20 20 20 20 20 |let")...1 | 00004cb0 20 43 4d 50 4e 45 20 20 20 72 30 2c 23 a4 69 64 | CMPNE r0,#.id| 00004cc0 65 6e 74 69 66 79 5f 70 61 74 74 65 72 6e 28 22 |entify_pattern("| 00004cd0 62 6f 6d 62 22 29 0d 1e 8c 26 20 20 20 20 20 20 |bomb")...& | 00004ce0 20 20 42 45 51 20 20 20 20 20 66 6f 72 65 5f 63 | BEQ fore_c| 00004cf0 6f 6c 6c 69 64 65 5f 6c 6f 6f 70 62 0d 1e 96 11 |ollide_loopb....| 00004d00 2e 6e 6f 74 5f 61 5f 6d 65 74 65 6f 72 0d 1e a0 |.not_a_meteor...| 00004d10 27 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 |' LDR | 00004d20 20 72 30 2c 5b 72 39 2c 23 64 61 74 5f 61 63 74 | r0,[r9,#dat_act| 00004d30 69 76 65 5d 0d 1e aa 19 20 20 20 20 20 20 20 20 |ive].... | 00004d40 43 4d 50 20 20 20 20 20 72 30 2c 23 30 0d 1e b4 |CMP r0,#0...| 00004d50 26 20 20 20 20 20 20 20 20 42 4c 54 20 20 20 20 |& BLT | 00004d60 20 66 6f 72 65 5f 63 6f 6c 6c 69 64 65 5f 6c 6f | fore_collide_lo| 00004d70 6f 70 62 0d 1e be 25 20 20 20 20 20 20 20 20 4c |opb...% L| 00004d80 44 52 20 20 20 20 20 72 31 34 2c 5b 72 39 2c 23 |DR r14,[r9,#| 00004d90 64 61 74 5f 73 70 72 5d 0d 1e c8 1a 20 20 20 20 |dat_spr].... | 00004da0 20 20 20 20 43 4d 50 20 20 20 20 20 72 31 34 2c | CMP r14,| 00004db0 23 30 0d 1e d2 26 20 20 20 20 20 20 20 20 42 45 |#0...& BE| 00004dc0 51 20 20 20 20 20 66 6f 72 65 5f 63 6f 6c 6c 69 |Q fore_colli| 00004dd0 64 65 5f 6c 6f 6f 70 62 0d 1e dc 1f 20 20 20 20 |de_loopb.... | 00004de0 20 20 20 20 41 44 44 20 20 20 20 20 72 31 34 2c | ADD r14,| 00004df0 72 31 34 2c 23 31 36 0d 1e e6 1f 20 20 20 20 20 |r14,#16.... | 00004e00 20 20 20 4c 44 4d 49 41 20 20 20 72 31 34 2c 7b | LDMIA r14,{| 00004e10 72 32 2d 72 33 7d 0d 1e f0 21 20 20 20 20 20 20 |r2-r3}...! | 00004e20 20 20 41 44 44 20 20 20 20 20 72 31 34 2c 72 39 | ADD r14,r9| 00004e30 2c 23 64 61 74 5f 78 0d 1e fa 1f 20 20 20 20 20 |,#dat_x.... | 00004e40 20 20 20 4c 44 4d 49 41 20 20 20 72 31 34 2c 7b | LDMIA r14,{| 00004e50 72 30 2d 72 31 7d 0d 1f 04 1c 20 20 20 20 20 20 |r0-r1}.... | 00004e60 20 20 42 49 43 20 20 20 20 20 72 30 2c 72 30 2c | BIC r0,r0,| 00004e70 23 33 0d 1f 0e 1c 20 20 20 20 20 20 20 20 41 44 |#3.... AD| 00004e80 44 20 20 20 20 20 72 32 2c 72 32 2c 23 31 0d 1f |D r2,r2,#1..| 00004e90 18 23 20 20 20 20 20 20 20 20 41 44 44 20 20 20 |.# ADD | 00004ea0 20 20 72 32 2c 72 30 2c 72 32 2c 4c 53 4c 20 23 | r2,r0,r2,LSL #| 00004eb0 32 0d 1f 22 1c 20 20 20 20 20 20 20 20 41 44 44 |2..". ADD| 00004ec0 20 20 20 20 20 72 33 2c 72 33 2c 23 31 0d 1f 2c | r3,r3,#1..,| 00004ed0 1c 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 |. ADD | 00004ee0 20 72 33 2c 72 31 2c 72 33 0d 1f 36 19 20 20 20 | r3,r1,r3..6. | 00004ef0 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 36 2c | CMP r6,| 00004f00 72 30 0d 1f 40 19 20 20 20 20 20 20 20 20 43 4d |r0..@. CM| 00004f10 50 47 45 20 20 20 72 32 2c 72 34 0d 1f 4a 19 20 |PGE r2,r4..J. | 00004f20 20 20 20 20 20 20 20 43 4d 50 47 45 20 20 20 72 | CMPGE r| 00004f30 37 2c 72 31 0d 1f 54 19 20 20 20 20 20 20 20 20 |7,r1..T. | 00004f40 43 4d 50 47 45 20 20 20 72 33 2c 72 35 0d 1f 5e |CMPGE r3,r5..^| 00004f50 26 20 20 20 20 20 20 20 20 42 4c 54 20 20 20 20 |& BLT | 00004f60 20 66 6f 72 65 5f 63 6f 6c 6c 69 64 65 5f 6c 6f | fore_collide_lo| 00004f70 6f 70 62 0d 1f 68 26 20 20 20 20 20 20 20 20 42 |opb..h& B| 00004f80 4c 20 20 20 20 20 20 63 6c 65 61 72 5f 73 6d 61 |L clear_sma| 00004f90 6c 6c 5f 73 63 72 65 65 6e 0d 1f 72 21 20 20 20 |ll_screen..r! | 00004fa0 20 20 20 20 20 53 54 4d 46 44 20 20 20 28 73 70 | STMFD (sp| 00004fb0 29 21 2c 7b 72 34 2c 72 35 7d 0d 1f 7c 1c 20 20 |)!,{r4,r5}..|. | 00004fc0 20 20 20 20 20 20 53 55 42 53 20 20 20 20 72 30 | SUBS r0| 00004fd0 2c 72 30 2c 72 34 0d 1f 86 19 20 20 20 20 20 20 |,r0,r4.... | 00004fe0 20 20 4d 4f 56 50 4c 20 20 20 72 34 2c 23 30 0d | MOVPL r4,#0.| 00004ff0 1f 90 1c 20 20 20 20 20 20 20 20 52 53 42 4d 49 |... RSBMI| 00005000 20 20 20 72 34 2c 72 30 2c 23 30 0d 1f 9a 19 20 | r4,r0,#0.... | 00005010 20 20 20 20 20 20 20 4d 4f 56 4d 49 20 20 20 72 | MOVMI r| 00005020 30 2c 23 30 0d 1f a4 1c 20 20 20 20 20 20 20 20 |0,#0.... | 00005030 53 55 42 53 20 20 20 20 72 31 2c 72 31 2c 72 35 |SUBS r1,r1,r5| 00005040 0d 1f ae 19 20 20 20 20 20 20 20 20 4d 4f 56 50 |.... MOVP| 00005050 4c 20 20 20 72 35 2c 23 30 0d 1f b8 1c 20 20 20 |L r5,#0.... | 00005060 20 20 20 20 20 52 53 42 4d 49 20 20 20 72 35 2c | RSBMI r5,| 00005070 72 31 2c 23 30 0d 1f c2 19 20 20 20 20 20 20 20 |r1,#0.... | 00005080 20 4d 4f 56 4d 49 20 20 20 72 31 2c 23 30 0d 1f | MOVMI r1,#0..| 00005090 cc 24 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 |.$ LDR | 000050a0 20 20 72 32 2c 5b 72 39 2c 23 64 61 74 5f 73 70 | r2,[r9,#dat_sp| 000050b0 72 5d 0d 1f d6 28 20 20 20 20 20 20 20 20 42 4c |r]...( BL| 000050c0 20 20 20 20 20 20 70 6c 6f 74 5f 6f 6e 5f 73 6d | plot_on_sm| 000050d0 61 6c 6c 5f 73 63 72 65 65 6e 0d 1f e0 19 20 20 |all_screen.... | 000050e0 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 30 | MOV r0| 000050f0 2c 72 34 0d 1f ea 19 20 20 20 20 20 20 20 20 4d |,r4.... M| 00005100 4f 56 20 20 20 20 20 72 31 2c 72 35 0d 1f f4 24 |OV r1,r5...$| 00005110 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 | LDR | 00005120 72 32 2c 5b 72 38 2c 23 64 61 74 5f 73 70 72 5d |r2,[r8,#dat_spr]| 00005130 0d 1f fe 28 20 20 20 20 20 20 20 20 42 4c 20 20 |...( BL | 00005140 20 20 20 20 70 6c 6f 74 5f 6f 6e 5f 73 6d 61 6c | plot_on_smal| 00005150 6c 5f 73 63 72 65 65 6e 0d 20 08 21 20 20 20 20 |l_screen. .! | 00005160 20 20 20 20 4c 44 4d 46 44 20 20 20 28 73 70 29 | LDMFD (sp)| 00005170 21 2c 7b 72 34 2c 72 35 7d 0d 20 12 25 20 20 20 |!,{r4,r5}. .% | 00005180 20 20 20 20 20 42 4c 20 20 20 20 20 20 63 68 65 | BL che| 00005190 63 6b 5f 66 6f 72 5f 6f 76 65 72 6c 61 70 0d 20 |ck_for_overlap. | 000051a0 1c 26 20 20 20 20 20 20 20 20 42 45 51 20 20 20 |.& BEQ | 000051b0 20 20 66 6f 72 65 5f 63 6f 6c 6c 69 64 65 5f 6c | fore_collide_l| 000051c0 6f 6f 70 62 0d 20 26 24 20 20 20 20 20 20 20 20 |oopb. &$ | 000051d0 4d 56 4e 20 20 20 20 20 72 30 2c 23 66 61 64 65 |MVN r0,#fade| 000051e0 5f 73 74 61 67 65 73 25 0d 20 30 27 20 20 20 20 |_stages%. 0' | 000051f0 20 20 20 20 53 54 52 20 20 20 20 20 72 30 2c 5b | STR r0,[| 00005200 72 38 2c 23 64 61 74 5f 61 63 74 69 76 65 5d 0d |r8,#dat_active].| 00005210 20 3a 27 20 20 20 20 20 20 20 20 53 54 52 20 20 | :' STR | 00005220 20 20 20 72 30 2c 5b 72 39 2c 23 64 61 74 5f 61 | r0,[r9,#dat_a| 00005230 63 74 69 76 65 5d 0d 20 44 25 20 20 20 20 20 20 |ctive]. D% | 00005240 20 20 4c 44 52 20 20 20 20 20 72 30 2c 5b 72 38 | LDR r0,[r8| 00005250 2c 23 64 61 74 5f 74 79 70 65 5d 0d 20 4e 31 20 |,#dat_type]. N1 | 00005260 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 | CMP r| 00005270 30 2c 23 a4 69 64 65 6e 74 69 66 79 5f 70 61 74 |0,#.identify_pat| 00005280 74 65 72 6e 28 22 73 68 69 70 22 29 0d 20 58 24 |tern("ship"). X$| 00005290 20 20 20 20 20 20 20 20 42 4c 45 51 20 20 20 20 | BLEQ | 000052a0 73 68 69 70 5f 68 61 73 5f 63 72 61 73 68 65 64 |ship_has_crashed| 000052b0 0d 20 62 1f 20 20 20 20 20 20 20 20 41 44 52 20 |. b. ADR | 000052c0 20 20 20 20 72 31 30 2c 68 69 74 5f 74 61 62 0d | r10,hit_tab.| 000052d0 20 6c 25 20 20 20 20 20 20 20 20 4c 44 52 20 20 | l% LDR | 000052e0 20 20 20 72 30 2c 5b 72 39 2c 23 64 61 74 5f 74 | r0,[r9,#dat_t| 000052f0 79 70 65 5d 0d 20 76 31 20 20 20 20 20 20 20 20 |ype]. v1 | 00005300 43 4d 50 20 20 20 20 20 72 30 2c 23 a4 69 64 65 |CMP r0,#.ide| 00005310 6e 74 69 66 79 5f 70 61 74 74 65 72 6e 28 22 62 |ntify_pattern("b| 00005320 61 73 65 22 29 0d 20 80 18 20 20 20 20 20 20 20 |ase"). .. | 00005330 20 ec 51 20 20 20 72 31 34 2c 23 35 30 0d 20 8a | .Q r14,#50. .| 00005340 26 20 20 20 20 20 20 20 20 53 54 52 45 51 20 20 |& STREQ | 00005350 20 72 31 34 2c 66 69 6e 69 73 68 65 64 5f 63 6f | r14,finished_co| 00005360 75 6e 74 0d 20 94 15 2e 66 69 6e 64 5f 77 68 61 |unt. ...find_wha| 00005370 74 5f 77 65 5f 68 69 74 0d 20 9e 20 20 20 20 20 |t_we_hit. . | 00005380 20 20 20 20 4c 44 4d 49 41 20 20 20 72 31 30 21 | LDMIA r10!| 00005390 2c 7b 72 31 2d 72 33 7d 0d 20 a8 19 20 20 20 20 |,{r1-r3}. .. | 000053a0 20 20 20 20 43 4d 50 20 20 20 20 20 72 31 2c 23 | CMP r1,#| 000053b0 30 0d 20 b2 25 20 20 20 20 20 20 20 20 42 4c 54 |0. .% BLT| 000053c0 20 20 20 20 20 66 6f 72 65 5f 63 6f 6c 6c 69 64 | fore_collid| 000053d0 65 5f 6c 6f 6f 70 0d 20 bc 19 20 20 20 20 20 20 |e_loop. .. | 000053e0 20 20 43 4d 50 20 20 20 20 20 72 31 2c 72 30 0d | CMP r1,r0.| 000053f0 20 c6 24 20 20 20 20 20 20 20 20 42 4e 45 20 20 | .$ BNE | 00005400 20 20 20 66 69 6e 64 5f 77 68 61 74 5f 77 65 5f | find_what_we_| 00005410 68 69 74 0d 20 d0 1d 20 20 20 20 20 20 20 20 41 |hit. .. A| 00005420 44 52 20 20 20 20 20 72 31 34 2c 73 63 6f 72 65 |DR r14,score| 00005430 0d 20 da 1f 20 20 20 20 20 20 20 20 4c 44 4d 49 |. .. LDMI| 00005440 41 20 20 20 72 31 34 2c 7b 72 30 2c 72 31 7d 0d |A r14,{r0,r1}.| 00005450 20 e4 1c 20 20 20 20 20 20 20 20 41 44 44 20 20 | .. ADD | 00005460 20 20 20 72 30 2c 72 30 2c 72 32 0d 20 ee 1c 20 | r0,r0,r2. .. | 00005470 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 | ADD r| 00005480 31 2c 72 31 2c 72 33 0d 20 f8 22 20 20 20 20 20 |1,r1,r3. ." | 00005490 20 20 20 43 4d 50 20 20 20 20 20 72 31 2c 23 6d | CMP r1,#m| 000054a0 61 78 5f 65 6e 65 72 67 79 0d 21 02 22 20 20 20 |ax_energy.!." | 000054b0 20 20 20 20 20 4d 4f 56 47 54 20 20 20 72 31 2c | MOVGT r1,| 000054c0 23 6d 61 78 5f 65 6e 65 72 67 79 0d 21 0c 1f 20 |#max_energy.!.. | 000054d0 20 20 20 20 20 20 20 53 54 4d 49 41 20 20 20 72 | STMIA r| 000054e0 31 34 2c 7b 72 30 2c 72 31 7d 0d 21 16 25 20 20 |14,{r0,r1}.!.% | 000054f0 20 20 20 20 20 20 42 20 20 20 20 20 20 20 66 6f | B fo| 00005500 72 65 5f 63 6f 6c 6c 69 64 65 5f 6c 6f 6f 70 0d |re_collide_loop.| 00005510 21 20 04 0d 21 2a 0c 2e 68 69 74 5f 74 61 62 0d |! ..!*..hit_tab.| 00005520 21 34 2d 20 20 20 20 20 20 20 20 44 43 44 20 20 |!4- DCD | 00005530 20 20 20 a4 69 64 65 6e 74 69 66 79 5f 70 61 74 | .identify_pat| 00005540 74 65 72 6e 28 22 66 75 65 6c 22 29 0d 21 3e 16 |tern("fuel").!>.| 00005550 20 20 20 20 20 20 20 20 44 43 44 20 20 20 20 20 | DCD | 00005560 31 30 0d 21 48 16 20 20 20 20 20 20 20 20 44 43 |10.!H. DC| 00005570 44 20 20 20 20 20 32 30 0d 21 52 2d 20 20 20 20 |D 20.!R- | 00005580 20 20 20 20 44 43 44 20 20 20 20 20 a4 69 64 65 | DCD .ide| 00005590 6e 74 69 66 79 5f 70 61 74 74 65 72 6e 28 22 64 |ntify_pattern("d| 000055a0 69 73 68 22 29 0d 21 5c 16 20 20 20 20 20 20 20 |ish").!\. | 000055b0 20 44 43 44 20 20 20 20 20 32 30 0d 21 66 15 20 | DCD 20.!f. | 000055c0 20 20 20 20 20 20 20 44 43 44 20 20 20 20 20 30 | DCD 0| 000055d0 0d 21 70 2f 20 20 20 20 20 20 20 20 44 43 44 20 |.!p/ DCD | 000055e0 20 20 20 20 a4 69 64 65 6e 74 69 66 79 5f 70 61 | .identify_pa| 000055f0 74 74 65 72 6e 28 22 72 6f 63 6b 65 74 22 29 0d |ttern("rocket").| 00005600 21 7a 16 20 20 20 20 20 20 20 20 44 43 44 20 20 |!z. DCD | 00005610 20 20 20 34 30 0d 21 84 15 20 20 20 20 20 20 20 | 40.!.. | 00005620 20 44 43 44 20 20 20 20 20 30 0d 21 8e 2f 20 20 | DCD 0.!./ | 00005630 20 20 20 20 20 20 44 43 44 20 20 20 20 20 a4 69 | DCD .i| 00005640 64 65 6e 74 69 66 79 5f 70 61 74 74 65 72 6e 28 |dentify_pattern(| 00005650 22 73 61 75 63 65 72 22 29 0d 21 98 16 20 20 20 |"saucer").!.. | 00005660 20 20 20 20 20 44 43 44 20 20 20 20 20 34 30 0d | DCD 40.| 00005670 21 a2 15 20 20 20 20 20 20 20 20 44 43 44 20 20 |!.. DCD | 00005680 20 20 20 30 0d 21 ac 2d 20 20 20 20 20 20 20 20 | 0.!.- | 00005690 44 43 44 20 20 20 20 20 a4 69 64 65 6e 74 69 66 |DCD .identif| 000056a0 79 5f 70 61 74 74 65 72 6e 28 22 62 61 73 65 22 |y_pattern("base"| 000056b0 29 0d 21 b6 18 20 20 20 20 20 20 20 20 44 43 44 |).!.. DCD| 000056c0 20 20 20 20 20 31 30 30 30 0d 21 c0 15 20 20 20 | 1000.!.. | 000056d0 20 20 20 20 20 44 43 44 20 20 20 20 20 30 0d 21 | DCD 0.!| 000056e0 ca 16 20 20 20 20 20 20 20 20 44 43 44 20 20 20 |.. DCD | 000056f0 20 20 2d 31 0d 21 d4 04 0d 21 de 10 2e 73 68 6f | -1.!...!...sho| 00005700 77 5f 65 6e 65 72 67 79 0d 21 e8 27 20 20 20 20 |w_energy.!.' | 00005710 20 20 20 20 53 54 4d 46 44 20 20 20 28 73 70 29 | STMFD (sp)| 00005720 21 2c 7b 72 30 2d 72 31 32 2c 6c 69 6e 6b 7d 0d |!,{r0-r12,link}.| 00005730 21 f2 1d 20 20 20 20 20 20 20 20 4c 44 52 20 20 |!.. LDR | 00005740 20 20 20 72 31 31 2c 76 64 75 5f 6f 0d 21 fc 1d | r11,vdu_o.!..| 00005750 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 | LDR | 00005760 72 38 2c 65 6e 65 72 67 79 0d 22 06 19 20 20 20 |r8,energy.".. | 00005770 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 37 2c | MOV r7,| 00005780 23 30 0d 22 10 1e 20 20 20 20 20 20 20 20 41 44 |#0.".. AD| 00005790 44 20 20 20 20 20 72 31 31 2c 72 31 31 2c 23 34 |D r11,r11,#4| 000057a0 0d 22 1a 23 20 20 20 20 20 20 20 20 41 44 44 20 |.".# ADD | 000057b0 20 20 20 20 72 31 31 2c 72 31 31 2c 23 32 34 38 | r11,r11,#248| 000057c0 3c 3c 35 0d 22 24 23 20 20 20 20 20 20 20 20 41 |<<5."$# A| 000057d0 44 44 20 20 20 20 20 72 31 31 2c 72 31 31 2c 23 |DD r11,r11,#| 000057e0 32 34 38 3c 3c 37 0d 22 2e 15 2e 73 68 6f 77 5f |248<<7."...show_| 000057f0 65 6e 65 72 67 79 5f 6c 6f 6f 70 0d 22 38 1b 20 |energy_loop."8. | 00005800 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 | MOV r| 00005810 30 2c 23 26 46 46 0d 22 42 1a 20 20 20 20 20 20 |0,#&FF."B. | 00005820 20 20 43 4d 50 20 20 20 20 20 72 37 2c 23 34 30 | CMP r7,#40| 00005830 0d 22 4c 1b 20 20 20 20 20 20 20 20 4d 4f 56 4c |."L. MOVL| 00005840 54 20 20 20 72 30 2c 23 26 42 42 0d 22 56 1a 20 |T r0,#&BB."V. | 00005850 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 | CMP r| 00005860 37 2c 23 32 30 0d 22 60 1b 20 20 20 20 20 20 20 |7,#20."`. | 00005870 20 4d 4f 56 4c 54 20 20 20 72 30 2c 23 26 41 41 | MOVLT r0,#&AA| 00005880 0d 22 6a 19 20 20 20 20 20 20 20 20 43 4d 50 20 |."j. CMP | 00005890 20 20 20 20 72 37 2c 72 38 0d 22 74 1b 20 20 20 | r7,r8."t. | 000058a0 20 20 20 20 20 4d 4f 56 47 45 20 20 20 72 30 2c | MOVGE r0,| 000058b0 23 26 30 30 0d 22 7e 21 20 20 20 20 20 20 20 20 |#&00."~! | 000058c0 53 54 52 42 20 20 20 20 72 30 2c 5b 72 31 31 2c |STRB r0,[r11,| 000058d0 23 31 36 30 5d 0d 22 88 21 20 20 20 20 20 20 20 |#160].".! | 000058e0 20 53 54 52 42 20 20 20 20 72 30 2c 5b 72 31 31 | STRB r0,[r11| 000058f0 2c 23 33 32 30 5d 0d 22 92 21 20 20 20 20 20 20 |,#320].".! | 00005900 20 20 53 54 52 42 20 20 20 20 72 30 2c 5b 72 31 | STRB r0,[r1| 00005910 31 2c 23 34 38 30 5d 0d 22 9c 1f 20 20 20 20 20 |1,#480].".. | 00005920 20 20 20 53 54 52 42 20 20 20 20 72 30 2c 5b 72 | STRB r0,[r| 00005930 31 31 5d 2c 23 31 0d 22 a6 1c 20 20 20 20 20 20 |11],#1.".. | 00005940 20 20 41 44 44 20 20 20 20 20 72 37 2c 72 37 2c | ADD r7,r7,| 00005950 23 31 0d 22 b0 22 20 20 20 20 20 20 20 20 43 4d |#1."." CM| 00005960 50 20 20 20 20 20 72 37 2c 23 6d 61 78 5f 65 6e |P r7,#max_en| 00005970 65 72 67 79 0d 22 ba 24 20 20 20 20 20 20 20 20 |ergy.".$ | 00005980 42 4c 54 20 20 20 20 20 73 68 6f 77 5f 65 6e 65 |BLT show_ene| 00005990 72 67 79 5f 6c 6f 6f 70 0d 22 c4 25 20 20 20 20 |rgy_loop.".% | 000059a0 20 20 20 20 4c 44 4d 46 44 20 20 20 28 73 70 29 | LDMFD (sp)| 000059b0 21 2c 7b 72 30 2d 72 31 32 2c 70 63 7d 0d 22 ce |!,{r0-r12,pc}.".| 000059c0 04 0d 22 d8 0f 2e 73 68 6f 77 5f 73 63 6f 72 65 |.."...show_score| 000059d0 0d 22 e2 26 20 20 20 20 20 20 20 20 53 54 4d 46 |.".& STMF| 000059e0 44 20 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 33 |D (sp)!,{r0-r3| 000059f0 2c 6c 69 6e 6b 7d 0d 22 ec 1c 20 20 20 20 20 20 |,link}.".. | 00005a00 20 20 53 55 42 20 20 20 20 20 73 70 2c 73 70 2c | SUB sp,sp,| 00005a10 23 38 0d 22 f6 1c 20 20 20 20 20 20 20 20 4c 44 |#8.".. LD| 00005a20 52 20 20 20 20 20 72 30 2c 73 63 6f 72 65 0d 23 |R r0,score.#| 00005a30 00 19 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 |.. MOV | 00005a40 20 20 72 31 2c 73 70 0d 23 0a 19 20 20 20 20 20 | r1,sp.#.. | 00005a50 20 20 20 4d 4f 56 20 20 20 20 20 72 32 2c 23 38 | MOV r2,#8| 00005a60 0d 23 14 2a 20 20 20 20 20 20 20 20 53 57 49 20 |.#.* SWI | 00005a70 20 20 20 20 22 58 4f 53 5f 43 6f 6e 76 65 72 74 | "XOS_Convert| 00005a80 43 61 72 64 69 6e 61 6c 34 22 0d 23 1e 1c 20 20 |Cardinal4".#.. | 00005a90 20 20 20 20 20 20 53 55 42 20 20 20 20 20 72 31 | SUB r1| 00005aa0 2c 72 31 2c 72 30 0d 23 28 1b 20 20 20 20 20 20 |,r1,r0.#(. | 00005ab0 20 20 53 57 49 20 20 20 20 20 26 31 30 30 2b 33 | SWI &100+3| 00005ac0 31 0d 23 32 1d 20 20 20 20 20 20 20 20 52 53 42 |1.#2. RSB| 00005ad0 20 20 20 20 20 72 30 2c 72 31 2c 23 33 38 0d 23 | r0,r1,#38.#| 00005ae0 3c 20 20 20 20 20 20 20 20 20 53 57 49 20 20 20 |< SWI | 00005af0 20 20 22 58 4f 53 5f 57 72 69 74 65 43 22 0d 23 | "XOS_WriteC".#| 00005b00 46 1b 20 20 20 20 20 20 20 20 53 57 49 20 20 20 |F. SWI | 00005b10 20 20 26 31 30 30 2b 33 31 0d 23 50 19 20 20 20 | &100+31.#P. | 00005b20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 30 2c | MOV r0,| 00005b30 73 70 0d 23 5a 20 20 20 20 20 20 20 20 20 53 57 |sp.#Z SW| 00005b40 49 20 20 20 20 20 22 58 4f 53 5f 57 72 69 74 65 |I "XOS_Write| 00005b50 30 22 0d 23 64 1c 20 20 20 20 20 20 20 20 41 44 |0".#d. AD| 00005b60 44 20 20 20 20 20 73 70 2c 73 70 2c 23 38 0d 23 |D sp,sp,#8.#| 00005b70 6e 24 20 20 20 20 20 20 20 20 4c 44 4d 46 44 20 |n$ LDMFD | 00005b80 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 33 2c 70 | (sp)!,{r0-r3,p| 00005b90 63 7d 0d 23 78 04 0d 23 82 15 2e 73 63 6f 72 65 |c}.#x..#...score| 00005ba0 20 20 44 43 44 20 20 20 20 20 30 0d 23 8c 15 2e | DCD 0.#...| 00005bb0 65 6e 65 72 67 79 20 44 43 44 20 20 20 20 20 30 |energy DCD 0| 00005bc0 0d 23 96 04 0d 23 a0 0d 2e 41 6d 6f 76 5f 70 74 |.#...#...Amov_pt| 00005bd0 72 0d 23 aa 1d 20 20 20 20 20 20 20 20 44 43 44 |r.#.. DCD| 00005be0 20 20 20 20 20 6d 6f 76 65 5f 70 74 72 25 0d 23 | move_ptr%.#| 00005bf0 b4 10 2e 41 6d 6f 76 5f 73 70 72 69 74 65 0d 23 |...Amov_sprite.#| 00005c00 be 20 20 20 20 20 20 20 20 20 44 43 44 20 20 20 |. DCD | 00005c10 20 20 6d 6f 76 65 5f 73 70 72 69 74 65 25 0d 23 | move_sprite%.#| 00005c20 c8 0d 2e 41 70 61 74 5f 70 74 72 0d 23 d2 1c 20 |...Apat_ptr.#.. | 00005c30 20 20 20 20 20 20 20 44 43 44 20 20 20 20 20 70 | DCD p| 00005c40 61 74 5f 70 74 72 25 0d 23 dc 0d 2e 41 70 6f 70 |at_ptr%.#...Apop| 00005c50 5f 64 61 74 0d 23 e6 1c 20 20 20 20 20 20 20 20 |_dat.#.. | 00005c60 44 43 44 20 20 20 20 20 70 6f 70 5f 64 61 74 25 |DCD pop_dat%| 00005c70 0d 23 f0 0d 2e 70 6f 70 5f 6e 65 78 74 0d 23 fa |.#...pop_next.#.| 00005c80 15 20 20 20 20 20 20 20 20 44 43 44 20 20 20 20 |. DCD | 00005c90 20 30 0d 24 04 04 0d 24 0e 16 2e 61 64 64 5f 61 | 0.$...$...add_a| 00005ca0 6c 69 65 6e 5f 74 6f 5f 6c 69 73 74 0d 24 18 27 |lien_to_list.$.'| 00005cb0 20 20 20 20 20 20 20 20 53 54 4d 46 44 20 20 20 | STMFD | 00005cc0 28 73 70 29 21 2c 7b 72 30 2d 72 31 32 2c 6c 69 |(sp)!,{r0-r12,li| 00005cd0 6e 6b 7d 0d 24 22 1b 20 20 20 20 20 20 20 20 4c |nk}.$". L| 00005ce0 44 52 20 20 20 20 20 72 38 2c 66 72 65 65 0d 24 |DR r8,free.$| 00005cf0 2c 19 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 |,. CMP | 00005d00 20 20 72 38 2c 23 30 0d 24 36 25 20 20 20 20 20 | r8,#0.$6% | 00005d10 20 20 20 4c 44 4d 45 51 46 44 20 28 73 70 29 21 | LDMEQFD (sp)!| 00005d20 2c 7b 72 30 2d 72 31 32 2c 70 63 7d 0d 24 40 1b |,{r0-r12,pc}.$@.| 00005d30 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 | LDR | 00005d40 72 37 2c 6c 69 73 74 0d 24 4a 26 20 20 20 20 20 |r7,list.$J& | 00005d50 20 20 20 4c 44 52 20 20 20 20 20 72 31 34 2c 5b | LDR r14,[| 00005d60 72 38 2c 23 64 61 74 5f 6e 65 78 74 5d 0d 24 54 |r8,#dat_next].$T| 00005d70 1c 20 20 20 20 20 20 20 20 53 54 52 20 20 20 20 |. STR | 00005d80 20 72 31 34 2c 66 72 65 65 0d 24 5e 25 20 20 20 | r14,free.$^% | 00005d90 20 20 20 20 20 53 54 52 20 20 20 20 20 72 37 2c | STR r7,| 00005da0 5b 72 38 2c 23 64 61 74 5f 6e 65 78 74 5d 0d 24 |[r8,#dat_next].$| 00005db0 68 1b 20 20 20 20 20 20 20 20 53 54 52 20 20 20 |h. STR | 00005dc0 20 20 72 38 2c 6c 69 73 74 0d 24 72 1d 20 20 20 | r8,list.$r. | 00005dd0 20 20 20 20 20 41 44 44 20 20 20 20 20 72 31 34 | ADD r14| 00005de0 2c 72 38 2c 23 34 0d 24 7c 1f 20 20 20 20 20 20 |,r8,#4.$|. | 00005df0 20 20 53 54 4d 49 41 20 20 20 72 31 34 2c 7b 72 | STMIA r14,{r| 00005e00 30 2d 72 33 7d 0d 24 86 19 20 20 20 20 20 20 20 |0-r3}.$.. | 00005e10 20 4d 4f 56 20 20 20 20 20 72 31 2c 23 30 0d 24 | MOV r1,#0.$| 00005e20 90 31 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 |.1 CMP | 00005e30 20 20 72 30 2c 23 a4 69 64 65 6e 74 69 66 79 5f | r0,#.identify_| 00005e40 70 61 74 74 65 72 6e 28 22 73 68 69 70 22 29 0d |pattern("ship").| 00005e50 24 9a 33 20 20 20 20 20 20 20 20 43 4d 50 4e 45 |$.3 CMPNE| 00005e60 20 20 20 72 30 2c 23 a4 69 64 65 6e 74 69 66 79 | r0,#.identify| 00005e70 5f 70 61 74 74 65 72 6e 28 22 62 75 6c 6c 65 74 |_pattern("bullet| 00005e80 22 29 0d 24 a4 31 20 20 20 20 20 20 20 20 43 4d |").$.1 CM| 00005e90 50 4e 45 20 20 20 72 30 2c 23 a4 69 64 65 6e 74 |PNE r0,#.ident| 00005ea0 69 66 79 5f 70 61 74 74 65 72 6e 28 22 62 6f 6d |ify_pattern("bom| 00005eb0 62 22 29 0d 24 ae 16 20 20 20 20 20 20 20 20 ec |b").$.. .| 00005ec0 51 20 20 20 72 31 2c 23 31 0d 24 b8 33 20 20 20 |Q r1,#1.$.3 | 00005ed0 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 30 2c | CMP r0,| 00005ee0 23 a4 69 64 65 6e 74 69 66 79 5f 70 61 74 74 65 |#.identify_patte| 00005ef0 72 6e 28 22 6d 65 74 65 6f 72 22 29 0d 24 c2 16 |rn("meteor").$..| 00005f00 20 20 20 20 20 20 20 20 ec 51 20 20 20 72 31 2c | .Q r1,| 00005f10 23 32 0d 24 cc 26 20 20 20 20 20 20 20 20 53 54 |#2.$.& ST| 00005f20 52 20 20 20 20 20 72 31 2c 5b 72 38 2c 23 64 61 |R r1,[r8,#da| 00005f30 74 5f 63 6c 61 73 73 5d 0d 24 d6 19 20 20 20 20 |t_class].$.. | 00005f40 20 20 20 20 4d 4f 56 20 20 20 20 20 72 30 2c 23 | MOV r0,#| 00005f50 30 0d 24 e0 27 20 20 20 20 20 20 20 20 53 54 52 |0.$.' STR| 00005f60 20 20 20 20 20 72 30 2c 5b 72 38 2c 23 64 61 74 | r0,[r8,#dat| 00005f70 5f 6d 6f 76 5f 70 63 5d 0d 24 ea 27 20 20 20 20 |_mov_pc].$.' | 00005f80 20 20 20 20 53 54 52 20 20 20 20 20 72 30 2c 5b | STR r0,[| 00005f90 72 38 2c 23 64 61 74 5f 61 63 74 69 76 65 5d 0d |r8,#dat_active].| 00005fa0 24 f4 2a 20 20 20 20 20 20 20 20 53 54 52 20 20 |$.* STR | 00005fb0 20 20 20 72 30 2c 5b 72 38 2c 23 64 61 74 5f 70 | r0,[r8,#dat_p| 00005fc0 61 74 5f 63 6f 75 6e 74 5d 0d 24 fe 1a 20 20 20 |at_count].$.. | 00005fd0 20 20 20 20 20 4d 56 4e 20 20 20 20 20 72 30 2c | MVN r0,| 00005fe0 23 31 31 0d 25 08 27 20 20 20 20 20 20 20 20 53 |#11.%.' S| 00005ff0 54 52 20 20 20 20 20 72 30 2c 5b 72 38 2c 23 64 |TR r0,[r8,#d| 00006000 61 74 5f 70 61 74 5f 70 63 5d 0d 25 12 19 20 20 |at_pat_pc].%.. | 00006010 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 30 | MOV r0| 00006020 2c 23 30 0d 25 1c 24 20 20 20 20 20 20 20 20 53 |,#0.%.$ S| 00006030 54 52 20 20 20 20 20 72 30 2c 5b 72 38 2c 23 64 |TR r0,[r8,#d| 00006040 61 74 5f 73 70 72 5d 0d 25 26 25 20 20 20 20 20 |at_spr].%&% | 00006050 20 20 20 4c 44 4d 46 44 20 20 20 28 73 70 29 21 | LDMFD (sp)!| 00006060 2c 7b 72 30 2d 72 31 32 2c 70 63 7d 0d 25 30 04 |,{r0-r12,pc}.%0.| 00006070 0d 25 3a 0e 2e 73 63 72 6f 6c 6c 5f 6f 6e 0d 25 |.%:..scroll_on.%| 00006080 44 26 20 20 20 20 20 20 20 20 53 54 4d 46 44 20 |D& STMFD | 00006090 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 37 2c 6c | (sp)!,{r0-r7,l| 000060a0 69 6e 6b 7d 0d 25 4e 21 20 20 20 20 20 20 20 20 |ink}.%N! | 000060b0 4c 44 52 20 20 20 20 20 72 31 34 2c 6c 61 6e 64 |LDR r14,land| 000060c0 73 5f 65 6e 64 0d 25 58 1b 20 20 20 20 20 20 20 |s_end.%X. | 000060d0 20 43 4d 50 20 20 20 20 20 72 31 30 2c 72 31 34 | CMP r10,r14| 000060e0 0d 25 62 24 20 20 20 20 20 20 20 20 4c 44 4d 47 |.%b$ LDMG| 000060f0 45 46 44 20 28 73 70 29 21 2c 7b 72 30 2d 72 37 |EFD (sp)!,{r0-r7| 00006100 2c 70 63 7d 0d 25 6c 1b 20 20 20 20 20 20 20 20 |,pc}.%l. | 00006110 80 20 20 20 20 20 72 30 2c 72 31 30 2c 23 33 0d |. r0,r10,#3.| 00006120 25 76 1f 20 20 20 20 20 20 20 20 41 44 52 20 20 |%v. ADR | 00006130 20 20 20 72 31 2c 62 61 6e 6b 5f 64 61 74 0d 25 | r1,bank_dat.%| 00006140 80 25 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 |.% LDR | 00006150 20 20 72 30 2c 5b 72 31 2c 72 30 2c 4c 53 4c 20 | r0,[r1,r0,LSL | 00006160 23 32 5d 0d 25 8a 1c 20 20 20 20 20 20 20 20 42 |#2].%.. B| 00006170 49 43 20 20 20 20 20 72 31 2c 72 39 2c 23 33 0d |IC r1,r9,#3.| 00006180 25 94 1c 20 20 20 20 20 20 20 20 41 44 44 20 20 |%.. ADD | 00006190 20 20 20 72 30 2c 72 30 2c 72 31 0d 25 9e 29 20 | r0,r0,r1.%.) | 000061a0 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 72 | ADD r| 000061b0 31 2c 72 31 30 2c 23 62 79 74 65 73 5f 70 65 72 |1,r10,#bytes_per| 000061c0 5f 72 6f 77 0d 25 a8 20 20 20 20 20 20 20 20 20 |_row.%. | 000061d0 4c 44 52 20 20 20 20 20 72 32 2c 6c 61 6e 64 5f |LDR r2,land_| 000061e0 61 64 64 72 0d 25 b2 1f 20 20 20 20 20 20 20 20 |addr.%.. | 000061f0 4c 44 52 20 20 20 20 20 72 33 2c 73 70 72 5f 61 |LDR r3,spr_a| 00006200 64 64 72 0d 25 bc 1f 20 20 20 20 20 20 20 20 42 |ddr.%.. B| 00006210 4c 20 20 20 20 20 20 73 68 6f 77 5f 63 6f 6c 75 |L show_colu| 00006220 6d 6e 0d 25 c6 1c 20 20 20 20 20 20 20 20 41 44 |mn.%.. AD| 00006230 44 20 20 20 20 20 72 39 2c 72 39 2c 23 31 0d 25 |D r9,r9,#1.%| 00006240 d0 25 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 |.% CMP | 00006250 20 20 72 39 2c 23 62 79 74 65 73 5f 70 65 72 5f | r9,#bytes_per_| 00006260 72 6f 77 0d 25 da 16 20 20 20 20 20 20 20 20 ec |row.%.. .| 00006270 51 20 20 20 72 39 2c 23 30 0d 25 e4 1e 20 20 20 |Q r9,#0.%.. | 00006280 20 20 20 20 20 41 44 44 20 20 20 20 20 72 31 30 | ADD r10| 00006290 2c 72 31 30 2c 23 31 0d 25 ee 24 20 20 20 20 20 |,r10,#1.%.$ | 000062a0 20 20 20 4c 44 4d 46 44 20 20 20 28 73 70 29 21 | LDMFD (sp)!| 000062b0 2c 7b 72 30 2d 72 37 2c 70 63 7d 0d 25 f8 04 0d |,{r0-r7,pc}.%...| 000062c0 26 02 35 2e 6c 61 6e 64 73 5f 65 6e 64 20 20 20 |&.5.lands_end | 000062d0 20 20 20 45 51 55 44 20 20 20 20 6c 61 6e 64 5f | EQUD land_| 000062e0 65 78 74 2d 62 79 74 65 73 5f 70 65 72 5f 72 6f |ext-bytes_per_ro| 000062f0 77 2d 31 36 0d 26 0c 25 2e 73 70 72 5f 61 64 64 |w-16.&.%.spr_add| 00006300 72 20 20 20 20 20 20 20 45 51 55 44 20 20 20 20 |r EQUD | 00006310 73 63 65 6e 65 5f 73 70 72 0d 26 16 20 2e 6c 61 |scene_spr.&. .la| 00006320 6e 64 5f 61 64 64 72 20 20 20 20 20 20 45 51 55 |nd_addr EQU| 00006330 44 20 20 20 20 6c 61 6e 64 0d 26 20 04 0d 26 2a |D land.& ..&*| 00006340 10 2e 73 68 6f 77 5f 63 6f 6c 75 6d 6e 0d 26 34 |..show_column.&4| 00006350 27 20 20 20 20 20 20 20 20 53 54 4d 46 44 20 20 |' STMFD | 00006360 20 28 73 70 29 21 2c 7b 72 30 2d 72 31 32 2c 6c | (sp)!,{r0-r12,l| 00006370 69 6e 6b 7d 0d 26 3e 33 20 20 20 20 20 20 20 20 |ink}.&>3 | 00006380 4d 4f 56 20 20 20 20 20 72 31 34 2c 72 31 2c 4c |MOV r14,r1,L| 00006390 53 52 20 23 a4 6c 6f 67 32 28 73 70 72 69 74 65 |SR #.log2(sprite| 000063a0 5f 77 69 64 74 68 29 0d 26 48 27 20 20 20 20 20 |_width).&H' | 000063b0 20 20 20 80 20 20 20 20 20 72 38 2c 72 31 2c 23 | . r8,r1,#| 000063c0 73 70 72 69 74 65 5f 77 69 64 74 68 2d 31 0d 26 |sprite_width-1.&| 000063d0 52 1a 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 |R. MOV | 000063e0 20 20 72 36 2c 23 6e 6f 0d 26 5c 20 20 20 20 20 | r6,#no.&\ | 000063f0 20 20 20 20 4d 4c 41 20 20 20 20 20 72 37 2c 72 | MLA r7,r| 00006400 31 34 2c 72 36 2c 72 32 0d 26 66 0e 2e 73 68 6f |14,r6,r2.&f..sho| 00006410 77 5f 63 6f 6c 31 0d 26 70 1e 20 20 20 20 20 20 |w_col1.&p. | 00006420 20 20 4c 44 52 42 20 20 20 20 72 39 2c 5b 72 37 | LDRB r9,[r7| 00006430 5d 2c 23 31 0d 26 7a 25 20 20 20 20 20 20 20 20 |],#1.&z% | 00006440 4c 44 52 20 20 20 20 20 72 39 2c 5b 72 33 2c 72 |LDR r9,[r3,r| 00006450 39 2c 4c 53 4c 20 23 32 5d 0d 26 84 20 20 20 20 |9,LSL #2].&. | 00006460 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 31 34 | LDR r14| 00006470 2c 5b 72 39 2c 23 33 32 5d 0d 26 8e 1d 20 20 20 |,[r9,#32].&.. | 00006480 20 20 20 20 20 41 44 44 20 20 20 20 20 72 39 2c | ADD r9,| 00006490 72 39 2c 72 31 34 0d 26 98 1d 20 20 20 20 20 20 |r9,r14.&.. | 000064a0 20 20 42 49 43 20 20 20 20 20 72 31 34 2c 72 38 | BIC r14,r8| 000064b0 2c 23 33 0d 26 a2 1d 20 20 20 20 20 20 20 20 41 |,#3.&.. A| 000064c0 44 44 20 20 20 20 20 72 39 2c 72 39 2c 72 31 34 |DD r9,r9,r14| 000064d0 0d 26 ac 26 20 20 20 20 20 20 20 20 43 4d 50 20 |.&.& CMP | 000064e0 20 20 20 20 72 38 2c 23 73 70 72 69 74 65 5f 77 | r8,#sprite_w| 000064f0 69 64 74 68 2d 34 0d 26 b6 1d 20 20 20 20 20 20 |idth-4.&.. | 00006500 20 20 41 44 44 4c 54 20 20 20 72 31 30 2c 72 39 | ADDLT r10,r9| 00006510 2c 23 34 0d 26 c0 22 20 20 20 20 20 20 20 20 4c |,#4.&." L| 00006520 44 52 47 45 42 20 20 72 31 30 2c 5b 72 37 2c 23 |DRGEB r10,[r7,#| 00006530 6e 6f 2d 31 5d 0d 26 ca 27 20 20 20 20 20 20 20 |no-1].&.' | 00006540 20 4c 44 52 47 45 20 20 20 72 31 30 2c 5b 72 33 | LDRGE r10,[r3| 00006550 2c 72 31 30 2c 4c 53 4c 20 23 32 5d 0d 26 d4 21 |,r10,LSL #2].&.!| 00006560 20 20 20 20 20 20 20 20 4c 44 52 47 45 20 20 20 | LDRGE | 00006570 72 31 34 2c 5b 72 31 30 2c 23 33 32 5d 0d 26 de |r14,[r10,#32].&.| 00006580 1f 20 20 20 20 20 20 20 20 41 44 44 47 45 20 20 |. ADDGE | 00006590 20 72 31 30 2c 72 31 30 2c 72 31 34 0d 26 e8 1b | r10,r10,r14.&..| 000065a0 20 20 20 20 20 20 20 20 80 20 20 20 20 20 72 31 | . r1| 000065b0 34 2c 72 31 2c 23 33 0d 26 f2 22 20 20 20 20 20 |4,r1,#3.&." | 000065c0 20 20 20 4d 4f 56 20 20 20 20 20 72 31 34 2c 72 | MOV r14,r| 000065d0 31 34 2c 4c 53 4c 20 23 33 0d 26 fc 1e 20 20 20 |14,LSL #3.&.. | 000065e0 20 20 20 20 20 52 53 42 20 20 20 20 20 72 34 2c | RSB r4,| 000065f0 72 31 34 2c 23 33 32 0d 27 06 20 5d 3a e3 20 7a |r14,#32.'. ]:. z| 00006600 25 3d 30 20 b8 20 73 69 7a 65 2d 31 3a 5b 4f 50 |%=0 . size-1:[OP| 00006610 54 20 70 61 73 73 25 0d 27 10 2a 20 20 20 20 20 |T pass%.'.* | 00006620 20 20 20 4c 44 52 20 20 20 20 20 72 31 31 2c 5b | LDR r11,[| 00006630 72 39 5d 2c 23 73 70 72 69 74 65 5f 77 69 64 74 |r9],#sprite_widt| 00006640 68 0d 27 1a 2b 20 20 20 20 20 20 20 20 4c 44 52 |h.'.+ LDR| 00006650 20 20 20 20 20 72 31 32 2c 5b 72 31 30 5d 2c 23 | r12,[r10],#| 00006660 73 70 72 69 74 65 5f 77 69 64 74 68 0d 27 24 23 |sprite_width.'$#| 00006670 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 | MOV | 00006680 72 31 31 2c 72 31 31 2c 4c 53 52 20 72 31 34 0d |r11,r11,LSR r14.| 00006690 27 2e 25 20 20 20 20 20 20 20 20 84 52 20 20 20 |'.% .R | 000066a0 20 20 72 31 31 2c 72 31 31 2c 72 31 32 2c 4c 53 | r11,r11,r12,LS| 000066b0 4c 20 72 34 0d 27 38 2b 20 20 20 20 20 20 20 20 |L r4.'8+ | 000066c0 53 54 52 20 20 20 20 20 72 31 31 2c 5b 72 30 5d |STR r11,[r0]| 000066d0 2c 23 62 79 74 65 73 5f 70 65 72 5f 72 6f 77 0d |,#bytes_per_row.| 000066e0 27 42 15 5d 3a ed 20 7a 25 3a 5b 4f 50 54 20 70 |'B.]:. z%:[OPT p| 000066f0 61 73 73 25 0d 27 4c 1c 20 20 20 20 20 20 20 20 |ass%.'L. | 00006700 53 55 42 53 20 20 20 20 72 36 2c 72 36 2c 23 31 |SUBS r6,r6,#1| 00006710 0d 27 56 1d 20 20 20 20 20 20 20 20 42 4e 45 20 |.'V. BNE | 00006720 20 20 20 20 73 68 6f 77 5f 63 6f 6c 31 0d 27 60 | show_col1.'`| 00006730 25 20 20 20 20 20 20 20 20 4c 44 4d 46 44 20 20 |% LDMFD | 00006740 20 28 73 70 29 21 2c 7b 72 30 2d 72 31 32 2c 70 | (sp)!,{r0-r12,p| 00006750 63 7d 0d 27 6a 05 5d 0d 27 74 19 62 61 6e 6b 5f |c}.'j.].'t.bank_| 00006760 64 61 74 3d a4 61 6c 6c 6f 63 28 31 36 2c 30 29 |dat=.alloc(16,0)| 00006770 0d 27 7e 0e 5b 4f 50 54 20 70 61 73 73 25 0d 27 |.'~.[OPT pass%.'| 00006780 88 0e 2e 63 6f 70 79 5f 62 61 6e 6b 0d 27 92 27 |...copy_bank.'.'| 00006790 20 20 20 20 20 20 20 20 53 54 4d 46 44 20 20 20 | STMFD | 000067a0 28 73 70 29 21 2c 7b 72 30 2d 72 31 32 2c 6c 69 |(sp)!,{r0-r12,li| 000067b0 6e 6b 7d 0d 27 9c 1b 20 20 20 20 20 20 20 20 80 |nk}.'.. .| 000067c0 20 20 20 20 20 72 30 2c 72 31 30 2c 23 33 0d 27 | r0,r10,#3.'| 000067d0 a6 1f 20 20 20 20 20 20 20 20 41 44 52 20 20 20 |.. ADR | 000067e0 20 20 72 31 2c 62 61 6e 6b 5f 64 61 74 0d 27 b0 | r1,bank_dat.'.| 000067f0 26 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 |& LDR | 00006800 20 72 31 30 2c 5b 72 31 2c 72 30 2c 4c 53 4c 20 | r10,[r1,r0,LSL | 00006810 23 32 5d 0d 27 ba 1c 20 20 20 20 20 20 20 20 42 |#2].'.. B| 00006820 49 43 20 20 20 20 20 72 39 2c 72 39 2c 23 33 0d |IC r9,r9,#3.| 00006830 27 c4 1e 20 20 20 20 20 20 20 20 41 44 44 20 20 |'.. ADD | 00006840 20 20 20 72 31 30 2c 72 31 30 2c 72 39 0d 27 ce | r10,r10,r9.'.| 00006850 1e 20 20 20 20 20 20 20 20 41 44 52 20 20 20 20 |. ADR | 00006860 20 72 37 2c 72 6f 75 74 69 6e 65 0d 27 d8 25 20 | r7,routine.'.% | 00006870 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 | MOV r| 00006880 38 2c 23 62 79 74 65 73 5f 70 65 72 5f 72 6f 77 |8,#bytes_per_row| 00006890 0d 27 e2 1a 20 20 20 20 20 20 20 20 4d 56 4e 20 |.'.. MVN | 000068a0 20 20 20 20 72 31 34 2c 23 30 0d 27 ec 1c 20 20 | r14,#0.'.. | 000068b0 20 20 20 20 20 20 41 44 52 20 20 20 20 20 72 32 | ADR r2| 000068c0 2c 6c 6f 61 64 69 0d 27 f6 0f 2e 6d 61 6b 65 5f |,loadi.'...make_| 000068d0 72 6f 75 74 65 0d 28 00 19 20 20 20 20 20 20 20 |route.(.. | 000068e0 20 43 4d 50 20 20 20 20 20 72 38 2c 23 30 0d 28 | CMP r8,#0.(| 000068f0 0a 1e 20 20 20 20 20 20 20 20 42 45 51 20 20 20 |.. BEQ | 00006900 20 20 6d 61 64 65 5f 72 6f 75 74 65 0d 28 14 28 | made_route.(.(| 00006910 20 20 20 20 20 20 20 20 52 53 42 20 20 20 20 20 | RSB | 00006920 72 36 2c 72 39 2c 23 62 79 74 65 73 5f 70 65 72 |r6,r9,#bytes_per| 00006930 5f 72 6f 77 0d 28 1e 19 20 20 20 20 20 20 20 20 |_row.(.. | 00006940 43 4d 50 20 20 20 20 20 72 36 2c 72 38 0d 28 28 |CMP r6,r8.((| 00006950 19 20 20 20 20 20 20 20 20 4d 4f 56 47 54 20 20 |. MOVGT | 00006960 20 72 36 2c 72 38 0d 28 32 1a 20 20 20 20 20 20 | r6,r8.(2. | 00006970 20 20 43 4d 50 20 20 20 20 20 72 36 2c 23 34 30 | CMP r6,#40| 00006980 0d 28 3c 1a 20 20 20 20 20 20 20 20 4d 4f 56 47 |.(<. MOVG| 00006990 54 20 20 20 72 36 2c 23 34 30 0d 28 46 1e 20 20 |T r6,#40.(F. | 000069a0 20 20 20 20 20 20 4c 44 4d 49 41 20 20 20 72 32 | LDMIA r2| 000069b0 2c 7b 72 33 2c 72 34 7d 0d 28 50 20 20 20 20 20 |,{r3,r4}.(P | 000069c0 20 20 20 20 4d 4f 56 20 20 20 20 20 72 30 2c 72 | MOV r0,r| 000069d0 36 2c 4c 53 52 20 23 32 0d 28 5a 1d 20 20 20 20 |6,LSR #2.(Z. | 000069e0 20 20 20 20 52 53 42 20 20 20 20 20 72 30 2c 72 | RSB r0,r| 000069f0 30 2c 23 31 30 0d 28 64 22 20 20 20 20 20 20 20 |0,#10.(d" | 00006a00 20 80 20 20 20 20 20 72 33 2c 72 33 2c 72 31 34 | . r3,r3,r14| 00006a10 2c 4c 53 4c 20 72 30 0d 28 6e 22 20 20 20 20 20 |,LSL r0.(n" | 00006a20 20 20 20 80 20 20 20 20 20 72 34 2c 72 34 2c 72 | . r4,r4,r| 00006a30 31 34 2c 4c 53 4c 20 72 30 0d 28 78 1f 20 20 20 |14,LSL r0.(x. | 00006a40 20 20 20 20 20 53 54 4d 49 41 20 20 20 72 37 21 | STMIA r7!| 00006a50 2c 7b 72 33 2c 72 34 7d 0d 28 82 1c 20 20 20 20 |,{r3,r4}.(.. | 00006a60 20 20 20 20 53 55 42 20 20 20 20 20 72 38 2c 72 | SUB r8,r| 00006a70 38 2c 72 36 0d 28 8c 1c 20 20 20 20 20 20 20 20 |8,r6.(.. | 00006a80 41 44 44 20 20 20 20 20 72 39 2c 72 39 2c 72 36 |ADD r9,r9,r6| 00006a90 0d 28 96 25 20 20 20 20 20 20 20 20 43 4d 50 20 |.(.% CMP | 00006aa0 20 20 20 20 72 39 2c 23 62 79 74 65 73 5f 70 65 | r9,#bytes_pe| 00006ab0 72 5f 72 6f 77 0d 28 a0 1b 20 20 20 20 20 20 20 |r_row.(.. | 00006ac0 20 4c 44 52 45 51 20 20 20 72 30 2c 73 75 62 69 | LDREQ r0,subi| 00006ad0 0d 28 aa 1e 20 20 20 20 20 20 20 20 53 54 52 45 |.(.. STRE| 00006ae0 51 20 20 20 72 30 2c 5b 72 37 5d 2c 23 34 0d 28 |Q r0,[r7],#4.(| 00006af0 b4 16 20 20 20 20 20 20 20 20 ec 51 20 20 20 72 |.. .Q r| 00006b00 39 2c 23 30 0d 28 be 1e 20 20 20 20 20 20 20 20 |9,#0.(.. | 00006b10 42 20 20 20 20 20 20 20 6d 61 6b 65 5f 72 6f 75 |B make_rou| 00006b20 74 65 0d 28 c8 0f 2e 6d 61 64 65 5f 72 6f 75 74 |te.(...made_rout| 00006b30 65 0d 28 d2 1c 20 20 20 20 20 20 20 20 41 44 52 |e.(.. ADR| 00006b40 20 20 20 20 20 72 32 2c 61 64 64 31 30 0d 28 dc | r2,add10.(.| 00006b50 1e 20 20 20 20 20 20 20 20 4c 44 4d 49 41 20 20 |. LDMIA | 00006b60 20 72 32 2c 7b 72 33 2d 72 36 7d 0d 28 e6 21 20 | r2,{r3-r6}.(.! | 00006b70 20 20 20 20 20 20 20 41 44 52 20 20 20 20 20 72 | ADR r| 00006b80 35 2c 72 6f 75 74 69 6e 65 2d 31 36 0d 28 f0 1c |5,routine-16.(..| 00006b90 20 20 20 20 20 20 20 20 53 55 42 20 20 20 20 20 | SUB | 00006ba0 72 35 2c 72 37 2c 72 35 0d 28 fa 20 20 20 20 20 |r5,r7,r5.(. | 00006bb0 20 20 20 20 4d 4f 56 20 20 20 20 20 72 35 2c 72 | MOV r5,r| 00006bc0 35 2c 41 53 52 20 23 32 0d 29 04 1c 20 20 20 20 |5,ASR #2.).. | 00006bd0 20 20 20 20 52 53 42 20 20 20 20 20 72 35 2c 72 | RSB r5,r| 00006be0 35 2c 23 30 0d 29 0e 24 20 20 20 20 20 20 20 20 |5,#0.).$ | 00006bf0 42 49 43 20 20 20 20 20 72 35 2c 72 35 2c 23 26 |BIC r5,r5,#&| 00006c00 46 46 30 30 30 30 30 30 0d 29 18 23 20 20 20 20 |FF000000.).# | 00006c10 20 20 20 20 84 52 20 20 20 20 20 72 35 2c 72 35 | .R r5,r5| 00006c20 2c 23 26 31 41 30 30 30 30 30 30 0d 29 22 1e 20 |,#&1A000000.)". | 00006c30 20 20 20 20 20 20 20 53 54 4d 49 41 20 20 20 72 | STMIA r| 00006c40 37 2c 7b 72 33 2d 72 36 7d 0d 29 2c 1d 20 20 20 |7,{r3-r6}.),. | 00006c50 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 31 31 | LDR r11| 00006c60 2c 76 64 75 5f 6f 0d 29 36 23 20 20 20 20 20 20 |,vdu_o.)6# | 00006c70 20 20 4d 4f 56 20 20 20 20 20 72 31 32 2c 23 74 | MOV r12,#t| 00006c80 6f 74 61 6c 5f 73 69 7a 65 0d 29 40 1b 20 20 20 |otal_size.)@. | 00006c90 20 20 20 20 20 42 4c 20 20 20 20 20 20 72 6f 75 | BL rou| 00006ca0 74 69 6e 65 0d 29 4a 25 20 20 20 20 20 20 20 20 |tine.)J% | 00006cb0 4c 44 4d 46 44 20 20 20 28 73 70 29 21 2c 7b 72 |LDMFD (sp)!,{r| 00006cc0 30 2d 72 31 32 2c 70 63 7d 0d 29 54 04 0d 29 5e |0-r12,pc}.)T..)^| 00006cd0 20 2e 6c 6f 61 64 69 20 20 4c 44 4d 49 41 20 20 | .loadi LDMIA | 00006ce0 20 72 31 30 21 2c 7b 72 30 2d 72 39 7d 0d 29 68 | r10!,{r0-r9}.)h| 00006cf0 20 20 20 20 20 20 20 20 20 53 54 4d 49 41 20 20 | STMIA | 00006d00 20 72 31 31 21 2c 7b 72 30 2d 72 39 7d 0d 29 72 | r11!,{r0-r9}.)r| 00006d10 2a 2e 73 75 62 69 20 20 20 53 55 42 20 20 20 20 |*.subi SUB | 00006d20 20 72 31 30 2c 72 31 30 2c 23 62 79 74 65 73 5f | r10,r10,#bytes_| 00006d30 70 65 72 5f 72 6f 77 0d 29 7c 04 0d 29 86 2a 2e |per_row.)|..).*.| 00006d40 61 64 64 31 30 20 20 41 44 44 20 20 20 20 20 72 |add10 ADD r| 00006d50 31 30 2c 72 31 30 2c 23 62 79 74 65 73 5f 70 65 |10,r10,#bytes_pe| 00006d60 72 5f 72 6f 77 0d 29 90 1e 20 20 20 20 20 20 20 |r_row.).. | 00006d70 20 53 55 42 53 20 20 20 20 72 31 32 2c 72 31 32 | SUBS r12,r12| 00006d80 2c 23 31 0d 29 9a 15 20 20 20 20 20 20 20 20 44 |,#1.).. D| 00006d90 43 44 20 20 20 20 20 30 0d 29 a4 1b 2e 72 65 74 |CD 0.)...ret| 00006da0 69 20 20 20 4d 4f 56 20 20 20 20 20 70 63 2c 6c |i MOV pc,l| 00006db0 69 6e 6b 0d 29 ae 04 0d 29 b8 0f 2e 73 77 61 70 |ink.)...)...swap| 00006dc0 5f 62 61 6e 6b 73 0d 29 c2 26 20 20 20 20 20 20 |_banks.).& | 00006dd0 20 20 53 54 4d 46 44 20 20 20 28 73 70 29 21 2c | STMFD (sp)!,| 00006de0 7b 72 30 2d 72 32 2c 6c 69 6e 6b 7d 0d 29 cc 1a |{r0-r2,link}.)..| 00006df0 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 | MOV | 00006e00 72 30 2c 23 31 39 0d 29 d6 1e 20 20 20 20 20 20 |r0,#19.).. | 00006e10 20 20 53 57 49 20 20 20 20 20 22 58 4f 53 5f 42 | SWI "XOS_B| 00006e20 79 74 65 22 0d 29 e0 1b 20 20 20 20 20 20 20 20 |yte".).. | 00006e30 4d 4f 56 20 20 20 20 20 72 30 2c 23 31 31 32 0d |MOV r0,#112.| 00006e40 29 ea 1a 20 20 20 20 20 20 20 20 4d 4f 56 20 20 |).. MOV | 00006e50 20 20 20 72 31 2c 72 31 31 0d 29 f4 1e 20 20 20 | r1,r11.).. | 00006e60 20 20 20 20 20 53 57 49 20 20 20 20 20 22 58 4f | SWI "XO| 00006e70 53 5f 42 79 74 65 22 0d 29 fe 1e 20 20 20 20 20 |S_Byte".).. | 00006e80 20 20 20 52 53 42 20 20 20 20 20 72 31 31 2c 72 | RSB r11,r| 00006e90 31 31 2c 23 33 0d 2a 08 1b 20 20 20 20 20 20 20 |11,#3.*.. | 00006ea0 20 4d 4f 56 20 20 20 20 20 72 30 2c 23 31 31 33 | MOV r0,#113| 00006eb0 0d 2a 12 1a 20 20 20 20 20 20 20 20 4d 4f 56 20 |.*.. MOV | 00006ec0 20 20 20 20 72 31 2c 72 31 31 0d 2a 1c 1e 20 20 | r1,r11.*.. | 00006ed0 20 20 20 20 20 20 53 57 49 20 20 20 20 20 22 58 | SWI "X| 00006ee0 4f 53 5f 42 79 74 65 22 0d 2a 26 1c 20 20 20 20 |OS_Byte".*&. | 00006ef0 20 20 20 20 41 44 52 20 20 20 20 20 72 30 2c 76 | ADR r0,v| 00006f00 64 75 5f 69 0d 2a 30 1c 20 20 20 20 20 20 20 20 |du_i.*0. | 00006f10 41 44 52 20 20 20 20 20 72 31 2c 76 64 75 5f 6f |ADR r1,vdu_o| 00006f20 0d 2a 3a 2a 20 20 20 20 20 20 20 20 53 57 49 20 |.*:* SWI | 00006f30 20 20 20 20 22 58 4f 53 5f 52 65 61 64 56 64 75 | "XOS_ReadVdu| 00006f40 56 61 72 69 61 62 6c 65 73 22 0d 2a 44 24 20 20 |Variables".*D$ | 00006f50 20 20 20 20 20 20 4c 44 4d 46 44 20 20 20 28 73 | LDMFD (s| 00006f60 70 29 21 2c 7b 72 30 2d 72 32 2c 70 63 7d 0d 2a |p)!,{r0-r2,pc}.*| 00006f70 4e 04 0d 2a 58 17 2e 76 64 75 5f 69 20 20 45 51 |N..*X..vdu_i EQ| 00006f80 55 44 20 20 20 20 31 34 38 0d 2a 62 16 20 20 20 |UD 148.*b. | 00006f90 20 20 20 20 20 45 51 55 44 20 20 20 20 2d 31 0d | EQUD -1.| 00006fa0 2a 6c 15 2e 76 64 75 5f 6f 20 20 45 51 55 44 20 |*l..vdu_o EQUD | 00006fb0 20 20 20 30 0d 2a 76 15 20 20 20 20 20 20 20 20 | 0.*v. | 00006fc0 45 51 55 44 20 20 20 20 30 0d 2a 80 04 0d 2a 8a |EQUD 0.*...*.| 00006fd0 10 2e 73 68 6f 77 5f 73 70 72 69 74 65 0d 2a 94 |..show_sprite.*.| 00006fe0 27 20 20 20 20 20 20 20 20 53 54 4d 46 44 20 20 |' STMFD | 00006ff0 20 28 73 70 29 21 2c 7b 72 30 2d 72 31 32 2c 6c | (sp)!,{r0-r12,l| 00007000 69 6e 6b 7d 0d 2a 9e 24 20 20 20 20 20 20 20 20 |ink}.*.$ | 00007010 42 4c 20 20 20 20 20 20 62 6f 75 6e 64 73 5f 63 |BL bounds_c| 00007020 68 65 63 6b 5f 65 74 63 0d 2a a8 25 20 20 20 20 |heck_etc.*.% | 00007030 20 20 20 20 4c 44 4d 4c 45 46 44 20 28 73 70 29 | LDMLEFD (sp)| 00007040 21 2c 7b 72 30 2d 72 31 32 2c 70 63 7d 0d 2a b2 |!,{r0-r12,pc}.*.| 00007050 0d 2e 73 73 5f 79 6c 6f 6f 70 0d 2a bc 19 20 20 |..ss_yloop.*.. | 00007060 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 37 | MOV r7| 00007070 2c 72 38 0d 2a c6 0d 2e 73 73 5f 78 6c 6f 6f 70 |,r8.*...ss_xloop| 00007080 0d 2a d0 1c 20 20 20 20 20 20 20 20 4c 44 52 20 |.*.. LDR | 00007090 20 20 20 20 72 30 2c 5b 72 31 30 5d 0d 2a da 1f | r0,[r10].*..| 000070a0 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 | LDR | 000070b0 72 31 2c 5b 72 31 32 5d 2c 23 34 0d 2a e4 1c 20 |r1,[r12],#4.*.. | 000070c0 20 20 20 20 20 20 20 42 49 43 20 20 20 20 20 72 | BIC r| 000070d0 30 2c 72 30 2c 72 31 0d 2a ee 1f 20 20 20 20 20 |0,r0,r1.*.. | 000070e0 20 20 20 4c 44 52 20 20 20 20 20 72 31 2c 5b 72 | LDR r1,[r| 000070f0 31 31 5d 2c 23 34 0d 2a f8 1b 20 20 20 20 20 20 |11],#4.*.. | 00007100 20 20 84 52 20 20 20 20 20 72 30 2c 72 30 2c 72 | .R r0,r0,r| 00007110 31 0d 2b 02 1f 20 20 20 20 20 20 20 20 53 54 52 |1.+.. STR| 00007120 20 20 20 20 20 72 30 2c 5b 72 31 30 5d 2c 23 34 | r0,[r10],#4| 00007130 0d 2b 0c 1c 20 20 20 20 20 20 20 20 53 55 42 53 |.+.. SUBS| 00007140 20 20 20 20 72 37 2c 72 37 2c 23 34 0d 2b 16 1c | r7,r7,#4.+..| 00007150 20 20 20 20 20 20 20 20 42 4e 45 20 20 20 20 20 | BNE | 00007160 73 73 5f 78 6c 6f 6f 70 0d 2b 20 1e 20 20 20 20 |ss_xloop.+ . | 00007170 20 20 20 20 53 55 42 20 20 20 20 20 72 31 30 2c | SUB r10,| 00007180 72 31 30 2c 72 38 0d 2b 2a 20 20 20 20 20 20 20 |r10,r8.+* | 00007190 20 20 41 44 44 20 20 20 20 20 72 31 30 2c 72 31 | ADD r10,r1| 000071a0 30 2c 23 31 36 30 0d 2b 34 1e 20 20 20 20 20 20 |0,#160.+4. | 000071b0 20 20 41 44 44 20 20 20 20 20 72 31 31 2c 72 31 | ADD r11,r1| 000071c0 31 2c 72 35 0d 2b 3e 1e 20 20 20 20 20 20 20 20 |1,r5.+>. | 000071d0 41 44 44 20 20 20 20 20 72 31 32 2c 72 31 32 2c |ADD r12,r12,| 000071e0 72 35 0d 2b 48 1c 20 20 20 20 20 20 20 20 53 55 |r5.+H. SU| 000071f0 42 53 20 20 20 20 72 39 2c 72 39 2c 23 31 0d 2b |BS r9,r9,#1.+| 00007200 52 1c 20 20 20 20 20 20 20 20 42 4e 45 20 20 20 |R. BNE | 00007210 20 20 73 73 5f 79 6c 6f 6f 70 0d 2b 5c 25 20 20 | ss_yloop.+\% | 00007220 20 20 20 20 20 20 4c 44 4d 46 44 20 20 20 28 73 | LDMFD (s| 00007230 70 29 21 2c 7b 72 30 2d 72 31 32 2c 70 63 7d 0d |p)!,{r0-r12,pc}.| 00007240 2b 66 04 0d 2b 70 16 2e 73 68 6f 77 5f 73 70 72 |+f..+p..show_spr| 00007250 69 74 65 5f 64 79 69 6e 67 0d 2b 7a 27 20 20 20 |ite_dying.+z' | 00007260 20 20 20 20 20 53 54 4d 46 44 20 20 20 28 73 70 | STMFD (sp| 00007270 29 21 2c 7b 72 30 2d 72 31 32 2c 6c 69 6e 6b 7d |)!,{r0-r12,link}| 00007280 0d 2b 84 24 20 20 20 20 20 20 20 20 42 4c 20 20 |.+.$ BL | 00007290 20 20 20 20 62 6f 75 6e 64 73 5f 63 68 65 63 6b | bounds_check| 000072a0 5f 65 74 63 0d 2b 8e 25 20 20 20 20 20 20 20 20 |_etc.+.% | 000072b0 4c 44 4d 4c 45 46 44 20 28 73 70 29 21 2c 7b 72 |LDMLEFD (sp)!,{r| 000072c0 30 2d 72 31 32 2c 70 63 7d 0d 2b 98 21 20 20 20 |0-r12,pc}.+.! | 000072d0 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 31 31 | LDR r11| 000072e0 2c 41 66 61 64 65 5f 74 61 62 0d 2b a2 19 20 20 |,Afade_tab.+.. | 000072f0 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 33 | CMP r3| 00007300 2c 23 30 0d 2b ac 19 20 20 20 20 20 20 20 20 4d |,#0.+.. M| 00007310 4f 56 4c 54 20 20 20 72 33 2c 23 30 0d 2b b6 27 |OVLT r3,#0.+.'| 00007320 20 20 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 | LDR | 00007330 72 31 31 2c 5b 72 31 31 2c 72 33 2c 4c 53 4c 20 |r11,[r11,r3,LSL | 00007340 23 32 5d 0d 2b c0 21 20 20 20 20 20 20 20 20 4c |#2].+.! L| 00007350 44 52 20 20 20 20 20 72 31 34 2c 5b 72 31 31 2c |DR r14,[r11,| 00007360 23 33 32 5d 0d 2b ca 1f 20 20 20 20 20 20 20 20 |#32].+.. | 00007370 41 44 44 20 20 20 20 20 72 31 31 2c 72 31 31 2c |ADD r11,r11,| 00007380 72 31 34 0d 2b d4 0d 2e 73 64 5f 79 6c 6f 6f 70 |r14.+...sd_yloop| 00007390 0d 2b de 19 20 20 20 20 20 20 20 20 4d 4f 56 20 |.+.. MOV | 000073a0 20 20 20 20 72 37 2c 72 38 0d 2b e8 0d 2e 73 64 | r7,r8.+...sd| 000073b0 5f 78 6c 6f 6f 70 0d 2b f2 1c 20 20 20 20 20 20 |_xloop.+.. | 000073c0 20 20 4c 44 52 20 20 20 20 20 72 30 2c 5b 72 31 | LDR r0,[r1| 000073d0 30 5d 0d 2b fc 1f 20 20 20 20 20 20 20 20 4c 44 |0].+.. LD| 000073e0 52 20 20 20 20 20 72 31 2c 5b 72 31 32 5d 2c 23 |R r1,[r12],#| 000073f0 34 0d 2c 06 1c 20 20 20 20 20 20 20 20 42 49 43 |4.,.. BIC| 00007400 20 20 20 20 20 72 30 2c 72 30 2c 72 31 0d 2c 10 | r0,r0,r1.,.| 00007410 1a 20 20 20 20 20 20 20 20 80 20 20 20 20 20 72 |. . r| 00007420 32 2c 72 39 2c 23 37 0d 2c 1a 26 20 20 20 20 20 |2,r9,#7.,.& | 00007430 20 20 20 4c 44 52 20 20 20 20 20 72 32 2c 5b 72 | LDR r2,[r| 00007440 31 31 2c 72 32 2c 4c 53 4c 20 23 32 5d 0d 2c 24 |11,r2,LSL #2].,$| 00007450 1a 20 20 20 20 20 20 20 20 80 20 20 20 20 20 72 |. . r| 00007460 32 2c 72 32 2c 72 31 0d 2c 2e 1b 20 20 20 20 20 |2,r2,r1.,.. | 00007470 20 20 20 84 52 20 20 20 20 20 72 30 2c 72 30 2c | .R r0,r0,| 00007480 72 32 0d 2c 38 1f 20 20 20 20 20 20 20 20 53 54 |r2.,8. ST| 00007490 52 20 20 20 20 20 72 30 2c 5b 72 31 30 5d 2c 23 |R r0,[r10],#| 000074a0 34 0d 2c 42 1c 20 20 20 20 20 20 20 20 53 55 42 |4.,B. SUB| 000074b0 53 20 20 20 20 72 37 2c 72 37 2c 23 34 0d 2c 4c |S r7,r7,#4.,L| 000074c0 1c 20 20 20 20 20 20 20 20 42 4e 45 20 20 20 20 |. BNE | 000074d0 20 73 64 5f 78 6c 6f 6f 70 0d 2c 56 1e 20 20 20 | sd_xloop.,V. | 000074e0 20 20 20 20 20 53 55 42 20 20 20 20 20 72 31 30 | SUB r10| 000074f0 2c 72 31 30 2c 72 38 0d 2c 60 20 20 20 20 20 20 |,r10,r8.,` | 00007500 20 20 20 41 44 44 20 20 20 20 20 72 31 30 2c 72 | ADD r10,r| 00007510 31 30 2c 23 31 36 30 0d 2c 6a 1e 20 20 20 20 20 |10,#160.,j. | 00007520 20 20 20 41 44 44 20 20 20 20 20 72 31 31 2c 72 | ADD r11,r| 00007530 31 31 2c 72 35 0d 2c 74 1e 20 20 20 20 20 20 20 |11,r5.,t. | 00007540 20 41 44 44 20 20 20 20 20 72 31 32 2c 72 31 32 | ADD r12,r12| 00007550 2c 72 35 0d 2c 7e 1c 20 20 20 20 20 20 20 20 53 |,r5.,~. S| 00007560 55 42 53 20 20 20 20 72 39 2c 72 39 2c 23 31 0d |UBS r9,r9,#1.| 00007570 2c 88 1c 20 20 20 20 20 20 20 20 42 4e 45 20 20 |,.. BNE | 00007580 20 20 20 73 64 5f 79 6c 6f 6f 70 0d 2c 92 25 20 | sd_yloop.,.% | 00007590 20 20 20 20 20 20 20 4c 44 4d 46 44 20 20 20 28 | LDMFD (| 000075a0 73 70 29 21 2c 7b 72 30 2d 72 31 32 2c 70 63 7d |sp)!,{r0-r12,pc}| 000075b0 0d 2c 9c 04 0d 2c a6 0e 2e 41 66 61 64 65 5f 74 |.,...,...Afade_t| 000075c0 61 62 0d 2c b0 1c 20 20 20 20 20 20 20 20 44 43 |ab.,.. DC| 000075d0 44 20 20 20 20 20 66 61 64 65 5f 74 61 62 0d 2c |D fade_tab.,| 000075e0 ba 04 0d 2c c4 12 2e 63 6f 6c 6c 69 64 65 5f 63 |...,...collide_c| 000075f0 68 65 63 6b 0d 2c ce 27 20 20 20 20 20 20 20 20 |heck.,.' | 00007600 53 54 4d 46 44 20 20 20 28 73 70 29 21 2c 7b 72 |STMFD (sp)!,{r| 00007610 30 2d 72 31 32 2c 6c 69 6e 6b 7d 0d 2c d8 24 20 |0-r12,link}.,.$ | 00007620 20 20 20 20 20 20 20 42 4c 20 20 20 20 20 20 62 | BL b| 00007630 6f 75 6e 64 73 5f 63 68 65 63 6b 5f 65 74 63 0d |ounds_check_etc.| 00007640 2c e2 19 20 20 20 20 20 20 20 20 43 4d 50 4c 54 |,.. CMPLT| 00007650 20 20 20 72 30 2c 72 30 0d 2c ec 25 20 20 20 20 | r0,r0.,.% | 00007660 20 20 20 20 4c 44 4d 45 51 46 44 20 28 73 70 29 | LDMEQFD (sp)| 00007670 21 2c 7b 72 30 2d 72 31 32 2c 70 63 7d 0d 2c f6 |!,{r0-r12,pc}.,.| 00007680 0d 2e 63 63 5f 79 6c 6f 6f 70 0d 2d 00 19 20 20 |..cc_yloop.-.. | 00007690 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 37 | MOV r7| 000076a0 2c 72 38 0d 2d 0a 0d 2e 63 63 5f 78 6c 6f 6f 70 |,r8.-...cc_xloop| 000076b0 0d 2d 14 1f 20 20 20 20 20 20 20 20 4c 44 52 20 |.-.. LDR | 000076c0 20 20 20 20 72 30 2c 5b 72 31 30 5d 2c 23 34 0d | r0,[r10],#4.| 000076d0 2d 1e 1f 20 20 20 20 20 20 20 20 4c 44 52 20 20 |-.. LDR | 000076e0 20 20 20 72 31 2c 5b 72 31 32 5d 2c 23 34 0d 2d | r1,[r12],#4.-| 000076f0 28 1a 20 20 20 20 20 20 20 20 80 53 20 20 20 20 |(. .S | 00007700 72 30 2c 72 30 2c 72 31 0d 2d 32 25 20 20 20 20 |r0,r0,r1.-2% | 00007710 20 20 20 20 4c 44 4d 4e 45 46 44 20 28 73 70 29 | LDMNEFD (sp)| 00007720 21 2c 7b 72 30 2d 72 31 32 2c 70 63 7d 0d 2d 3c |!,{r0-r12,pc}.-<| 00007730 1c 20 20 20 20 20 20 20 20 53 55 42 53 20 20 20 |. SUBS | 00007740 20 72 37 2c 72 37 2c 23 34 0d 2d 46 1c 20 20 20 | r7,r7,#4.-F. | 00007750 20 20 20 20 20 42 4e 45 20 20 20 20 20 63 63 5f | BNE cc_| 00007760 78 6c 6f 6f 70 0d 2d 50 1e 20 20 20 20 20 20 20 |xloop.-P. | 00007770 20 53 55 42 20 20 20 20 20 72 31 30 2c 72 31 30 | SUB r10,r10| 00007780 2c 72 38 0d 2d 5a 20 20 20 20 20 20 20 20 20 41 |,r8.-Z A| 00007790 44 44 20 20 20 20 20 72 31 30 2c 72 31 30 2c 23 |DD r10,r10,#| 000077a0 31 36 30 0d 2d 64 1e 20 20 20 20 20 20 20 20 41 |160.-d. A| 000077b0 44 44 20 20 20 20 20 72 31 32 2c 72 31 32 2c 72 |DD r12,r12,r| 000077c0 35 0d 2d 6e 1c 20 20 20 20 20 20 20 20 53 55 42 |5.-n. SUB| 000077d0 53 20 20 20 20 72 39 2c 72 39 2c 23 31 0d 2d 78 |S r9,r9,#1.-x| 000077e0 1c 20 20 20 20 20 20 20 20 42 4e 45 20 20 20 20 |. BNE | 000077f0 20 63 63 5f 79 6c 6f 6f 70 0d 2d 82 25 20 20 20 | cc_yloop.-.% | 00007800 20 20 20 20 20 4c 44 4d 46 44 20 20 20 28 73 70 | LDMFD (sp| 00007810 29 21 2c 7b 72 30 2d 72 31 32 2c 70 63 7d 0d 2d |)!,{r0-r12,pc}.-| 00007820 8c 04 0d 2d 96 15 2e 62 6f 75 6e 64 73 5f 63 68 |...-...bounds_ch| 00007830 65 63 6b 5f 65 74 63 0d 2d a0 20 20 20 20 20 20 |eck_etc.-. | 00007840 20 20 20 53 54 4d 46 44 20 20 20 28 73 70 29 21 | STMFD (sp)!| 00007850 2c 7b 6c 69 6e 6b 7d 0d 2d aa 1c 20 20 20 20 20 |,{link}.-.. | 00007860 20 20 20 42 49 43 20 20 20 20 20 72 31 2c 72 31 | BIC r1,r1| 00007870 2c 23 33 0d 2d b4 20 20 20 20 20 20 20 20 20 4c |,#3.-. L| 00007880 44 52 20 20 20 20 20 72 31 31 2c 5b 72 30 2c 23 |DR r11,[r0,#| 00007890 33 32 5d 0d 2d be 1e 20 20 20 20 20 20 20 20 41 |32].-.. A| 000078a0 44 44 20 20 20 20 20 72 31 31 2c 72 31 31 2c 72 |DD r11,r11,r| 000078b0 30 0d 2d c8 20 20 20 20 20 20 20 20 20 4c 44 52 |0.-. LDR| 000078c0 20 20 20 20 20 72 31 32 2c 5b 72 30 2c 23 33 36 | r12,[r0,#36| 000078d0 5d 0d 2d d2 1e 20 20 20 20 20 20 20 20 41 44 44 |].-.. ADD| 000078e0 20 20 20 20 20 72 31 32 2c 72 31 32 2c 72 30 0d | r12,r12,r0.| 000078f0 2d dc 1f 20 20 20 20 20 20 20 20 4c 44 52 20 20 |-.. LDR | 00007900 20 20 20 72 38 2c 5b 72 30 2c 23 31 36 5d 0d 2d | r8,[r0,#16].-| 00007910 e6 1c 20 20 20 20 20 20 20 20 41 44 44 20 20 20 |.. ADD | 00007920 20 20 72 38 2c 72 38 2c 23 31 0d 2d f0 20 20 20 | r8,r8,#1.-. | 00007930 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 38 | MOV r8| 00007940 2c 72 38 2c 4c 53 4c 20 23 32 0d 2d fa 1f 20 20 |,r8,LSL #2.-.. | 00007950 20 20 20 20 20 20 4c 44 52 20 20 20 20 20 72 39 | LDR r9| 00007960 2c 5b 72 30 2c 23 32 30 5d 0d 2e 04 1c 20 20 20 |,[r0,#20].... | 00007970 20 20 20 20 20 41 44 44 20 20 20 20 20 72 39 2c | ADD r9,| 00007980 72 39 2c 23 31 0d 2e 0e 19 20 20 20 20 20 20 20 |r9,#1.... | 00007990 20 4d 4f 56 20 20 20 20 20 72 35 2c 23 30 0d 2e | MOV r5,#0..| 000079a0 18 19 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 |.. CMP | 000079b0 20 20 72 32 2c 23 30 0d 2e 22 1c 20 20 20 20 20 | r2,#0..". | 000079c0 20 20 20 41 44 44 4c 54 20 20 20 72 39 2c 72 39 | ADDLT r9,r9| 000079d0 2c 72 32 0d 2e 2c 1d 20 20 20 20 20 20 20 20 4d |,r2..,. M| 000079e0 55 4c 4c 54 20 20 20 72 31 34 2c 72 32 2c 72 38 |ULLT r14,r2,r8| 000079f0 0d 2e 36 1f 20 20 20 20 20 20 20 20 53 55 42 4c |..6. SUBL| 00007a00 54 20 20 20 72 31 31 2c 72 31 31 2c 72 31 34 0d |T r11,r11,r14.| 00007a10 2e 40 1f 20 20 20 20 20 20 20 20 53 55 42 4c 54 |.@. SUBLT| 00007a20 20 20 20 72 31 32 2c 72 31 32 2c 72 31 34 0d 2e | r12,r12,r14..| 00007a30 4a 19 20 20 20 20 20 20 20 20 4d 4f 56 4c 54 20 |J. MOVLT | 00007a40 20 20 72 32 2c 23 30 0d 2e 54 1d 20 20 20 20 20 | r2,#0..T. | 00007a50 20 20 20 41 44 44 20 20 20 20 20 72 31 34 2c 72 | ADD r14,r| 00007a60 32 2c 72 39 0d 2e 5e 1c 20 20 20 20 20 20 20 20 |2,r9..^. | 00007a70 43 4d 50 20 20 20 20 20 72 31 34 2c 23 32 34 30 |CMP r14,#240| 00007a80 0d 2e 68 20 20 20 20 20 20 20 20 20 53 55 42 47 |..h SUBG| 00007a90 54 20 20 20 72 31 34 2c 72 31 34 2c 23 32 34 30 |T r14,r14,#240| 00007aa0 0d 2e 72 1d 20 20 20 20 20 20 20 20 53 55 42 47 |..r. SUBG| 00007ab0 54 20 20 20 72 39 2c 72 39 2c 72 31 34 0d 2e 7c |T r9,r9,r14..|| 00007ac0 19 20 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 |. CMP | 00007ad0 20 72 31 2c 23 30 0d 2e 86 1c 20 20 20 20 20 20 | r1,#0.... | 00007ae0 20 20 41 44 44 4c 54 20 20 20 72 38 2c 72 38 2c | ADDLT r8,r8,| 00007af0 72 31 0d 2e 90 1e 20 20 20 20 20 20 20 20 53 55 |r1.... SU| 00007b00 42 4c 54 20 20 20 72 31 31 2c 72 31 31 2c 72 31 |BLT r11,r11,r1| 00007b10 0d 2e 9a 1e 20 20 20 20 20 20 20 20 53 55 42 4c |.... SUBL| 00007b20 54 20 20 20 72 31 32 2c 72 31 32 2c 72 31 0d 2e |T r12,r12,r1..| 00007b30 a4 1c 20 20 20 20 20 20 20 20 53 55 42 4c 54 20 |.. SUBLT | 00007b40 20 20 72 35 2c 72 35 2c 72 31 0d 2e ae 19 20 20 | r5,r5,r1.... | 00007b50 20 20 20 20 20 20 4d 4f 56 4c 54 20 20 20 72 31 | MOVLT r1| 00007b60 2c 23 30 0d 2e b8 1d 20 20 20 20 20 20 20 20 41 |,#0.... A| 00007b70 44 44 20 20 20 20 20 72 31 34 2c 72 31 2c 72 38 |DD r14,r1,r8| 00007b80 0d 2e c2 1c 20 20 20 20 20 20 20 20 43 4d 50 20 |.... CMP | 00007b90 20 20 20 20 72 31 34 2c 23 31 36 30 0d 2e cc 20 | r14,#160... | 00007ba0 20 20 20 20 20 20 20 20 53 55 42 47 54 20 20 20 | SUBGT | 00007bb0 72 31 34 2c 72 31 34 2c 23 31 36 30 0d 2e d6 1d |r14,r14,#160....| 00007bc0 20 20 20 20 20 20 20 20 53 55 42 47 54 20 20 20 | SUBGT | 00007bd0 72 38 2c 72 38 2c 72 31 34 0d 2e e0 1d 20 20 20 |r8,r8,r14.... | 00007be0 20 20 20 20 20 41 44 44 47 54 20 20 20 72 35 2c | ADDGT r5,| 00007bf0 72 35 2c 72 31 34 0d 2e ea 1d 20 20 20 20 20 20 |r5,r14.... | 00007c00 20 20 4c 44 52 20 20 20 20 20 72 31 30 2c 76 64 | LDR r10,vd| 00007c10 75 5f 6f 0d 2e f4 25 20 20 20 20 20 20 20 20 41 |u_o...% A| 00007c20 44 44 20 20 20 20 20 72 31 30 2c 72 31 30 2c 72 |DD r10,r10,r| 00007c30 32 2c 4c 53 4c 20 23 37 0d 2e fe 25 20 20 20 20 |2,LSL #7...% | 00007c40 20 20 20 20 41 44 44 20 20 20 20 20 72 31 30 2c | ADD r10,| 00007c50 72 31 30 2c 72 32 2c 4c 53 4c 20 23 35 0d 2f 08 |r10,r2,LSL #5./.| 00007c60 1e 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 |. ADD | 00007c70 20 72 31 30 2c 72 31 30 2c 72 31 0d 2f 12 19 20 | r10,r10,r1./.. | 00007c80 20 20 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 | CMP r| 00007c90 38 2c 23 30 0d 2f 1c 19 20 20 20 20 20 20 20 20 |8,#0./.. | 00007ca0 43 4d 50 47 54 20 20 20 72 39 2c 23 30 0d 2f 26 |CMPGT r9,#0./&| 00007cb0 1e 20 20 20 20 20 20 20 20 4c 44 4d 46 44 20 20 |. LDMFD | 00007cc0 20 28 73 70 29 21 2c 7b 70 63 7d 0d 2f 30 04 0d | (sp)!,{pc}./0..| 00007cd0 2f 3a 26 2e 69 6e 6b 65 79 20 20 53 54 4d 46 44 |/:&.inkey STMFD| 00007ce0 20 20 20 28 73 70 29 21 2c 7b 72 30 2c 72 32 2c | (sp)!,{r0,r2,| 00007cf0 6c 69 6e 6b 7d 0d 2f 44 1b 20 20 20 20 20 20 20 |link}./D. | 00007d00 20 4d 4f 56 20 20 20 20 20 72 30 2c 23 31 32 39 | MOV r0,#129| 00007d10 0d 2f 4e 1b 20 20 20 20 20 20 20 20 4d 4f 56 20 |./N. MOV | 00007d20 20 20 20 20 72 32 2c 23 32 35 35 0d 2f 58 1e 20 | r2,#255./X. | 00007d30 20 20 20 20 20 20 20 53 57 49 20 20 20 20 20 22 | SWI "| 00007d40 58 4f 53 5f 42 79 74 65 22 0d 2f 62 1b 20 20 20 |XOS_Byte"./b. | 00007d50 20 20 20 20 20 43 4d 50 20 20 20 20 20 72 31 2c | CMP r1,| 00007d60 23 32 35 35 0d 2f 6c 24 20 20 20 20 20 20 20 20 |#255./l$ | 00007d70 4c 44 4d 46 44 20 20 20 28 73 70 29 21 2c 7b 72 |LDMFD (sp)!,{r| 00007d80 30 2c 72 32 2c 70 63 7d 0d 2f 76 04 0d 2f 80 19 |0,r2,pc}./v../..| 00007d90 2e 70 6c 6f 74 5f 6f 6e 5f 73 6d 61 6c 6c 5f 73 |.plot_on_small_s| 00007da0 63 72 65 65 6e 0d 2f 8a 27 20 20 20 20 20 20 20 |creen./.' | 00007db0 20 53 54 4d 46 44 20 20 20 28 73 70 29 21 2c 7b | STMFD (sp)!,{| 00007dc0 72 30 2d 72 31 32 2c 6c 69 6e 6b 7d 0d 2f 94 1e |r0-r12,link}./..| 00007dd0 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 20 | ADD | 00007de0 72 31 34 2c 72 32 2c 23 31 36 0d 2f 9e 1f 20 20 |r14,r2,#16./.. | 00007df0 20 20 20 20 20 20 4c 44 4d 49 41 20 20 20 72 31 | LDMIA r1| 00007e00 34 2c 7b 72 38 2c 72 39 7d 0d 2f a8 1c 20 20 20 |4,{r8,r9}./.. | 00007e10 20 20 20 20 20 41 44 44 20 20 20 20 20 72 38 2c | ADD r8,| 00007e20 72 38 2c 23 31 0d 2f b2 20 20 20 20 20 20 20 20 |r8,#1./. | 00007e30 20 4d 4f 56 20 20 20 20 20 72 38 2c 72 38 2c 4c | MOV r8,r8,L| 00007e40 53 4c 20 23 32 0d 2f bc 1c 20 20 20 20 20 20 20 |SL #2./.. | 00007e50 20 41 44 44 20 20 20 20 20 72 39 2c 72 39 2c 23 | ADD r9,r9,#| 00007e60 31 0d 2f c6 24 20 20 20 20 20 20 20 20 41 44 52 |1./.$ ADR| 00007e70 20 20 20 20 20 72 31 31 2c 73 6d 61 6c 6c 5f 73 | r11,small_s| 00007e80 63 72 65 65 6e 0d 2f d0 1e 20 20 20 20 20 20 20 |creen./.. | 00007e90 20 41 44 44 20 20 20 20 20 72 31 31 2c 72 31 31 | ADD r11,r11| 00007ea0 2c 72 30 0d 2f da 25 20 20 20 20 20 20 20 20 41 |,r0./.% A| 00007eb0 44 44 20 20 20 20 20 72 31 31 2c 72 31 31 2c 72 |DD r11,r11,r| 00007ec0 31 2c 4c 53 4c 20 23 36 0d 2f e4 20 20 20 20 20 |1,LSL #6./. | 00007ed0 20 20 20 20 4c 44 52 20 20 20 20 20 72 31 32 2c | LDR r12,| 00007ee0 5b 72 32 2c 23 33 36 5d 0d 2f ee 1e 20 20 20 20 |[r2,#36]./.. | 00007ef0 20 20 20 20 41 44 44 20 20 20 20 20 72 31 32 2c | ADD r12,| 00007f00 72 31 32 2c 72 32 0d 2f f8 26 20 20 20 20 20 20 |r12,r2./.& | 00007f10 20 20 4c 44 52 20 20 20 20 20 72 32 2c 6f 6e 65 | LDR r2,one| 00007f20 5f 6f 6e 65 5f 6f 6e 65 5f 6f 6e 65 0d 30 02 15 |_one_one_one.0..| 00007f30 2e 70 6c 6f 74 5f 73 6d 61 6c 6c 5f 6c 6f 6f 70 |.plot_small_loop| 00007f40 31 0d 30 0c 19 20 20 20 20 20 20 20 20 4d 4f 56 |1.0.. MOV| 00007f50 20 20 20 20 20 72 37 2c 72 38 0d 30 16 15 2e 70 | r7,r8.0...p| 00007f60 6c 6f 74 5f 73 6d 61 6c 6c 5f 6c 6f 6f 70 32 0d |lot_small_loop2.| 00007f70 30 20 1f 20 20 20 20 20 20 20 20 4c 44 52 20 20 |0 . LDR | 00007f80 20 20 20 72 30 2c 5b 72 31 32 5d 2c 23 34 0d 30 | r0,[r12],#4.0| 00007f90 2a 1a 20 20 20 20 20 20 20 20 80 20 20 20 20 20 |*. . | 00007fa0 72 30 2c 72 30 2c 72 32 0d 30 34 1c 20 20 20 20 |r0,r0,r2.04. | 00007fb0 20 20 20 20 4c 44 52 20 20 20 20 20 72 31 2c 5b | LDR r1,[| 00007fc0 72 31 31 5d 0d 30 3e 1c 20 20 20 20 20 20 20 20 |r11].0>. | 00007fd0 41 44 44 20 20 20 20 20 72 30 2c 72 31 2c 72 30 |ADD r0,r1,r0| 00007fe0 0d 30 48 1f 20 20 20 20 20 20 20 20 53 54 52 20 |.0H. STR | 00007ff0 20 20 20 20 72 30 2c 5b 72 31 31 5d 2c 23 34 0d | r0,[r11],#4.| 00008000 30 52 1c 20 20 20 20 20 20 20 20 53 55 42 53 20 |0R. SUBS | 00008010 20 20 20 72 37 2c 72 37 2c 23 34 0d 30 5c 24 20 | r7,r7,#4.0\$ | 00008020 20 20 20 20 20 20 20 42 4e 45 20 20 20 20 20 70 | BNE p| 00008030 6c 6f 74 5f 73 6d 61 6c 6c 5f 6c 6f 6f 70 32 0d |lot_small_loop2.| 00008040 30 66 1e 20 20 20 20 20 20 20 20 53 55 42 20 20 |0f. SUB | 00008050 20 20 20 72 31 31 2c 72 31 31 2c 72 38 0d 30 70 | r11,r11,r8.0p| 00008060 1f 20 20 20 20 20 20 20 20 41 44 44 20 20 20 20 |. ADD | 00008070 20 72 31 31 2c 72 31 31 2c 23 36 34 0d 30 7a 1c | r11,r11,#64.0z.| 00008080 20 20 20 20 20 20 20 20 53 55 42 53 20 20 20 20 | SUBS | 00008090 72 39 2c 72 39 2c 23 31 0d 30 84 24 20 20 20 20 |r9,r9,#1.0.$ | 000080a0 20 20 20 20 42 4e 45 20 20 20 20 20 70 6c 6f 74 | BNE plot| 000080b0 5f 73 6d 61 6c 6c 5f 6c 6f 6f 70 31 0d 30 8e 25 |_small_loop1.0.%| 000080c0 20 20 20 20 20 20 20 20 4c 44 4d 46 44 20 20 20 | LDMFD | 000080d0 28 73 70 29 21 2c 7b 72 30 2d 72 31 32 2c 70 63 |(sp)!,{r0-r12,pc| 000080e0 7d 0d 30 98 04 0d 30 a2 16 2e 63 68 65 63 6b 5f |}.0...0...check_| 000080f0 66 6f 72 5f 6f 76 65 72 6c 61 70 0d 30 ac 27 20 |for_overlap.0.' | 00008100 20 20 20 20 20 20 20 53 54 4d 46 44 20 20 20 28 | STMFD (| 00008110 73 70 29 21 2c 7b 72 30 2d 72 31 32 2c 6c 69 6e |sp)!,{r0-r12,lin| 00008120 6b 7d 0d 30 b6 24 20 20 20 20 20 20 20 20 41 44 |k}.0.$ AD| 00008130 52 20 20 20 20 20 72 31 32 2c 73 6d 61 6c 6c 5f |R r12,small_| 00008140 73 63 72 65 65 6e 0d 30 c0 1e 20 20 20 20 20 20 |screen.0.. | 00008150 20 20 4d 4f 56 20 20 20 20 20 72 31 31 2c 23 36 | MOV r11,#6| 00008160 34 2a 34 38 0d 30 ca 27 20 20 20 20 20 20 20 20 |4*48.0.' | 00008170 4c 44 52 20 20 20 20 20 72 31 34 2c 74 77 6f 5f |LDR r14,two_| 00008180 74 77 6f 5f 74 77 6f 5f 74 77 6f 0d 30 d4 11 2e |two_two_two.0...| 00008190 6f 76 65 72 6c 61 70 5f 6c 6f 6f 70 0d 30 de 20 |overlap_loop.0. | 000081a0 20 20 20 20 20 20 20 20 4c 44 4d 49 41 20 20 20 | LDMIA | 000081b0 72 31 32 21 2c 7b 72 30 2d 72 37 7d 0d 30 e8 1a |r12!,{r0-r7}.0..| 000081c0 20 20 20 20 20 20 20 20 54 53 54 20 20 20 20 20 | TST | 000081d0 72 30 2c 72 31 34 0d 30 f2 1a 20 20 20 20 20 20 |r0,r14.0.. | 000081e0 20 20 54 53 54 45 51 20 20 20 72 31 2c 72 31 34 | TSTEQ r1,r14| 000081f0 0d 30 fc 1a 20 20 20 20 20 20 20 20 54 53 54 45 |.0.. TSTE| 00008200 51 20 20 20 72 32 2c 72 31 34 0d 31 06 1a 20 20 |Q r2,r14.1.. | 00008210 20 20 20 20 20 20 54 53 54 45 51 20 20 20 72 33 | TSTEQ r3| 00008220 2c 72 31 34 0d 31 10 1a 20 20 20 20 20 20 20 20 |,r14.1.. | 00008230 54 53 54 45 51 20 20 20 72 34 2c 72 31 34 0d 31 |TSTEQ r4,r14.1| 00008240 1a 1a 20 20 20 20 20 20 20 20 54 53 54 45 51 20 |.. TSTEQ | 00008250 20 20 72 35 2c 72 31 34 0d 31 24 1a 20 20 20 20 | r5,r14.1$. | 00008260 20 20 20 20 54 53 54 45 51 20 20 20 72 36 2c 72 | TSTEQ r6,r| 00008270 31 34 0d 31 2e 1a 20 20 20 20 20 20 20 20 54 53 |14.1.. TS| 00008280 54 45 51 20 20 20 72 37 2c 72 31 34 0d 31 38 25 |TEQ r7,r14.18%| 00008290 20 20 20 20 20 20 20 20 4c 44 4d 4e 45 46 44 20 | LDMNEFD | 000082a0 28 73 70 29 21 2c 7b 72 30 2d 72 31 32 2c 70 63 |(sp)!,{r0-r12,pc| 000082b0 7d 0d 31 42 1f 20 20 20 20 20 20 20 20 53 55 42 |}.1B. SUB| 000082c0 53 20 20 20 20 72 31 31 2c 72 31 31 2c 23 33 32 |S r11,r11,#32| 000082d0 0d 31 4c 20 20 20 20 20 20 20 20 20 42 4e 45 20 |.1L BNE | 000082e0 20 20 20 20 6f 76 65 72 6c 61 70 5f 6c 6f 6f 70 | overlap_loop| 000082f0 0d 31 56 25 20 20 20 20 20 20 20 20 4c 44 4d 46 |.1V% LDMF| 00008300 44 20 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 31 |D (sp)!,{r0-r1| 00008310 32 2c 70 63 7d 0d 31 60 04 0d 31 6a 14 2e 6f 6e |2,pc}.1`..1j..on| 00008320 65 5f 6f 6e 65 5f 6f 6e 65 5f 6f 6e 65 0d 31 74 |e_one_one_one.1t| 00008330 1d 20 20 20 20 20 20 20 20 44 43 44 20 20 20 20 |. DCD | 00008340 20 26 31 31 31 31 31 31 31 31 0d 31 7e 14 2e 74 | &11111111.1~..t| 00008350 77 6f 5f 74 77 6f 5f 74 77 6f 5f 74 77 6f 0d 31 |wo_two_two_two.1| 00008360 88 1d 20 20 20 20 20 20 20 20 44 43 44 20 20 20 |.. DCD | 00008370 20 20 26 32 32 32 32 32 32 32 32 0d 31 92 04 0d | &22222222.1...| 00008380 31 9c 17 2e 63 6c 65 61 72 5f 73 6d 61 6c 6c 5f |1...clear_small_| 00008390 73 63 72 65 65 6e 0d 31 a6 27 20 20 20 20 20 20 |screen.1.' | 000083a0 20 20 53 54 4d 46 44 20 20 20 28 73 70 29 21 2c | STMFD (sp)!,| 000083b0 7b 72 30 2d 72 31 32 2c 6c 69 6e 6b 7d 0d 31 b0 |{r0-r12,link}.1.| 000083c0 24 20 20 20 20 20 20 20 20 41 44 52 20 20 20 20 |$ ADR | 000083d0 20 72 31 32 2c 73 6d 61 6c 6c 5f 73 63 72 65 65 | r12,small_scree| 000083e0 6e 0d 31 ba 1e 20 20 20 20 20 20 20 20 4d 4f 56 |n.1.. MOV| 000083f0 20 20 20 20 20 72 31 31 2c 23 36 34 2a 34 38 0d | r11,#64*48.| 00008400 31 c4 19 20 20 20 20 20 20 20 20 4d 4f 56 20 20 |1.. MOV | 00008410 20 20 20 72 30 2c 23 30 0d 31 ce 19 20 20 20 20 | r0,#0.1.. | 00008420 20 20 20 20 4d 4f 56 20 20 20 20 20 72 31 2c 23 | MOV r1,#| 00008430 30 0d 31 d8 19 20 20 20 20 20 20 20 20 4d 4f 56 |0.1.. MOV| 00008440 20 20 20 20 20 72 32 2c 23 30 0d 31 e2 19 20 20 | r2,#0.1.. | 00008450 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 72 33 | MOV r3| 00008460 2c 23 30 0d 31 ec 19 20 20 20 20 20 20 20 20 4d |,#0.1.. M| 00008470 4f 56 20 20 20 20 20 72 34 2c 23 30 0d 31 f6 19 |OV r4,#0.1..| 00008480 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 20 20 | MOV | 00008490 72 35 2c 23 30 0d 32 00 19 20 20 20 20 20 20 20 |r5,#0.2.. | 000084a0 20 4d 4f 56 20 20 20 20 20 72 36 2c 23 30 0d 32 | MOV r6,#0.2| 000084b0 0a 19 20 20 20 20 20 20 20 20 4d 4f 56 20 20 20 |.. MOV | 000084c0 20 20 72 37 2c 23 30 0d 32 14 1c 2e 63 6c 65 61 | r7,#0.2...clea| 000084d0 72 5f 73 6d 61 6c 6c 5f 73 63 72 65 65 6e 5f 6c |r_small_screen_l| 000084e0 6f 6f 70 0d 32 1e 20 20 20 20 20 20 20 20 20 53 |oop.2. S| 000084f0 54 4d 49 41 20 20 20 72 31 32 21 2c 7b 72 30 2d |TMIA r12!,{r0-| 00008500 72 37 7d 0d 32 28 20 20 20 20 20 20 20 20 20 53 |r7}.2( S| 00008510 54 4d 49 41 20 20 20 72 31 32 21 2c 7b 72 30 2d |TMIA r12!,{r0-| 00008520 72 37 7d 0d 32 32 20 20 20 20 20 20 20 20 20 53 |r7}.22 S| 00008530 54 4d 49 41 20 20 20 72 31 32 21 2c 7b 72 30 2d |TMIA r12!,{r0-| 00008540 72 37 7d 0d 32 3c 20 20 20 20 20 20 20 20 20 53 |r7}.2< S| 00008550 54 4d 49 41 20 20 20 72 31 32 21 2c 7b 72 30 2d |TMIA r12!,{r0-| 00008560 72 37 7d 0d 32 46 20 20 20 20 20 20 20 20 20 53 |r7}.2F S| 00008570 55 42 53 20 20 20 20 72 31 31 2c 72 31 31 2c 23 |UBS r11,r11,#| 00008580 31 32 38 0d 32 50 2b 20 20 20 20 20 20 20 20 42 |128.2P+ B| 00008590 4e 45 20 20 20 20 20 63 6c 65 61 72 5f 73 6d 61 |NE clear_sma| 000085a0 6c 6c 5f 73 63 72 65 65 6e 5f 6c 6f 6f 70 0d 32 |ll_screen_loop.2| 000085b0 5a 25 20 20 20 20 20 20 20 20 4c 44 4d 46 44 20 |Z% LDMFD | 000085c0 20 20 28 73 70 29 21 2c 7b 72 30 2d 72 31 32 2c | (sp)!,{r0-r12,| 000085d0 70 63 7d 0d 32 64 05 5d 0d 32 6e 19 72 6f 75 74 |pc}.2d.].2n.rout| 000085e0 69 6e 65 3d a4 61 6c 6c 6f 63 28 31 32 38 2c 30 |ine=.alloc(128,0| 000085f0 29 0d 32 78 20 73 6d 61 6c 6c 5f 73 63 72 65 65 |).2x small_scree| 00008600 6e 3d a4 61 6c 6c 6f 63 28 36 34 2a 34 38 2c 30 |n=.alloc(64*48,0| 00008610 29 0d 32 82 2c 61 6c 69 65 6e 5f 6c 69 73 74 3d |).2.,alien_list=| 00008620 a4 61 6c 6c 6f 63 28 6d 61 78 5f 61 6c 69 65 6e |.alloc(max_alien| 00008630 73 2a 64 61 74 5f 73 69 7a 65 2c 30 29 0d 32 8c |s*dat_size,0).2.| 00008640 21 62 61 6e 6b 73 3d a4 61 6c 6c 6f 63 28 34 2a |!banks=.alloc(4*| 00008650 73 63 72 65 65 6e 5f 73 69 7a 65 2c 30 29 0d 32 |screen_size,0).2| 00008660 96 0b ed 20 70 61 73 73 25 0d 32 a0 05 e1 0d 32 |... pass%.2....2| 00008670 aa 05 3a 0d 32 b4 0f dd 20 f2 6e 65 77 5f 67 61 |..:.2... .new_ga| 00008680 6d 65 0d 32 be 0c 21 73 63 6f 72 65 3d 30 0d 32 |me.2..!score=0.2| 00008690 c8 0e f2 6e 65 77 5f 72 6f 75 6e 64 0d 32 d2 05 |...new_round.2..| 000086a0 e1 0d 32 dc 05 3a 0d 32 e6 10 dd 20 f2 6e 65 77 |..2..:.2... .new| 000086b0 5f 72 6f 75 6e 64 0d 32 f0 19 e3 20 69 25 3d 30 |_round.2... i%=0| 000086c0 20 b8 20 6d 61 78 5f 61 6c 69 65 6e 73 2d 31 0d | . max_aliens-1.| 000086d0 32 fa 1e 20 61 25 3d 61 6c 69 65 6e 5f 6c 69 73 |2.. a%=alien_lis| 000086e0 74 2b 69 25 2a 64 61 74 5f 73 69 7a 65 0d 33 04 |t+i%*dat_size.3.| 000086f0 3e 20 e7 20 69 25 3d 6d 61 78 5f 61 6c 69 65 6e |> . i%=max_alien| 00008700 73 2d 31 20 61 25 21 64 61 74 5f 6e 65 78 74 3d |s-1 a%!dat_next=| 00008710 30 20 8b 20 61 25 21 64 61 74 5f 6e 65 78 74 3d |0 . a%!dat_next=| 00008720 61 25 2b 64 61 74 5f 73 69 7a 65 0d 33 0e 05 ed |a%+dat_size.3...| 00008730 0d 33 18 0b 21 6c 69 73 74 3d 30 0d 33 22 14 21 |.3..!list=0.3".!| 00008740 66 72 65 65 3d 61 6c 69 65 6e 5f 6c 69 73 74 0d |free=alien_list.| 00008750 33 2c 0d e3 20 62 3d 30 20 b8 20 33 0d 33 36 27 |3,.. b=0 . 3.36'| 00008760 20 62 61 6e 6b 5f 64 61 74 21 28 34 2a 62 29 3d | bank_dat!(4*b)=| 00008770 62 61 6e 6b 73 2b 62 2a 73 63 72 65 65 6e 5f 73 |banks+b*screen_s| 00008780 69 7a 65 0d 33 40 21 20 e3 20 63 6f 6c 25 3d 30 |ize.3@! . col%=0| 00008790 20 b8 20 62 79 74 65 73 5f 70 65 72 5f 72 6f 77 | . bytes_per_row| 000087a0 20 88 20 34 0d 33 4a 23 20 20 41 25 3d 62 61 6e | . 4.3J# A%=ban| 000087b0 6b 73 2b 28 73 63 72 65 65 6e 5f 73 69 7a 65 2a |ks+(screen_size*| 000087c0 62 29 2b 63 6f 6c 25 0d 33 54 0f 20 20 42 25 3d |b)+col%.3T. B%=| 000087d0 63 6f 6c 25 2b 62 0d 33 5e 0d 20 20 43 25 3d 6c |col%+b.3^. C%=l| 000087e0 61 6e 64 0d 33 68 12 20 20 44 25 3d 73 63 65 6e |and.3h. D%=scen| 000087f0 65 5f 73 70 72 0d 33 72 13 20 20 d6 20 73 68 6f |e_spr.3r. . sho| 00008800 77 5f 63 6f 6c 75 6d 6e 0d 33 7c 06 20 ed 0d 33 |w_column.3|. ..3| 00008810 86 05 ed 0d 33 90 13 e3 20 69 25 3d 30 20 b8 20 |....3... i%=0 . | 00008820 70 6f 70 25 2d 31 0d 33 9a 16 20 61 25 3d 70 6f |pop%-1.3.. a%=po| 00008830 70 5f 64 61 74 25 2b 32 34 2a 69 25 0d 33 a4 0f |p_dat%+24*i%.3..| 00008840 20 67 6f 31 25 3d 61 25 21 31 36 0d 33 ae 0f 20 | go1%=a%!16.3.. | 00008850 67 6f 32 25 3d 61 25 21 32 30 0d 33 b8 10 20 e7 |go2%=a%!20.3.. .| 00008860 20 67 6f 31 25 3d 2d 31 20 8c 0d 33 c2 14 20 20 | go1%=-1 ..3.. | 00008870 61 25 21 31 32 3d 61 25 21 34 2d 31 36 30 0d 33 |a%!12=a%!4-160.3| 00008880 cc 06 20 cc 0d 33 d6 11 20 20 e7 20 67 6f 32 25 |.. ..3.. . go2%| 00008890 3d 2d 31 20 8c 0d 33 e0 16 20 20 20 61 25 21 31 |=-1 ..3.. a%!1| 000088a0 32 3d 61 25 21 34 2d 67 6f 31 25 0d 33 ea 07 20 |2=a%!4-go1%.3.. | 000088b0 20 cc 0d 33 f4 27 20 20 20 61 25 21 31 32 3d 61 | ..3.' a%!12=a| 000088c0 25 21 34 2d 28 67 6f 32 25 2b b3 28 67 6f 31 25 |%!4-(go2%+.(go1%| 000088d0 2d 67 6f 32 25 29 2d 31 29 0d 33 fe 07 20 20 cd |-go2%)-1).3.. .| 000088e0 0d 34 08 06 20 cd 0d 34 12 05 ed 0d 34 1c 30 f2 |.4.. ..4....4.0.| 000088f0 61 64 64 5f 61 6c 69 65 6e 28 a4 69 64 65 6e 74 |add_alien(.ident| 00008900 69 66 79 5f 70 61 74 74 65 72 6e 28 22 73 68 69 |ify_pattern("shi| 00008910 70 22 29 2c 30 2c 33 32 2c 30 29 0d 34 26 16 21 |p"),0,32,0).4&.!| 00008920 65 6e 65 72 67 79 3d 6d 61 78 5f 65 6e 65 72 67 |energy=max_energ| 00008930 79 0d 34 30 05 e1 0d 34 3a 05 3a 0d 34 44 1d dd |y.40...4:.:.4D..| 00008940 20 f2 61 64 64 5f 61 6c 69 65 6e 28 41 25 2c 42 | .add_alien(A%,B| 00008950 25 2c 43 25 2c 44 25 29 0d 34 4e 17 d6 20 61 64 |%,C%,D%).4N.. ad| 00008960 64 5f 61 6c 69 65 6e 5f 74 6f 5f 6c 69 73 74 0d |d_alien_to_list.| 00008970 34 58 05 e1 0d 34 62 05 3a 0d 34 6c 19 dd 20 a4 |4X...4b.:.4l.. .| 00008980 61 6c 6c 6f 63 28 73 69 7a 65 2c 61 6c 69 67 6e |alloc(size,align| 00008990 25 29 0d 34 76 16 c8 95 20 50 25 20 83 20 31 36 |%).4v... P% . 16| 000089a0 3c 3e 61 6c 69 67 6e 25 0d 34 80 0a 20 50 25 2b |<>align%.4.. P%+| 000089b0 3d 34 0d 34 8a 05 ce 0d 34 94 0c 50 25 2b 3d 73 |=4.4....4..P%+=s| 000089c0 69 7a 65 0d 34 9e 0c 3d 50 25 2d 73 69 7a 65 0d |ize.4..=P%-size.| 000089d0 34 a8 05 3a 0d 34 b2 1a dd 20 a4 6c 6f 67 32 28 |4..:.4... .log2(| 000089e0 61 25 29 3d ab 28 61 25 29 2f ab 28 32 29 0d ff |a%)=.(a%)/.(2)..| 000089f0