Home » Archimedes archive » Acorn User » Acorn User - PD Pack 1.adf » 2Play » !Play/!RunImage3

!Play/!RunImage3

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 » Acorn User - PD Pack 1.adf » 2Play
Filename: !Play/!RunImage3
Read OK:
File size: 18D1D bytes
Load address: 0000
Exec address: 0000
File contents
   10REM > !RunImage
   20REM
   30REM LEN J.D.Harrop
   40REM
   50:
   60ON ERROR PROCerror:END
   70:
   80MODE 15
   90MODE 13
  100OFF
  110:
  120DIM screen% 8
  130screen%!0=149
  140screen%!4=-1
  150SYS "OS_ReadVduVariables",screen%,screen%
  160screen%=screen%!0
  170:
  180xext%=12
  190yext%=16
  200:
  210*RMLoad <This$Dir>.SFX.Explo
  220*RMLoad <This$Dir>.SFX.TokenRM
  230*RMLoad <This$Dir>.SFX.Arg
  240*RMLoad <This$Dir>.SFX.RArg
  250*RMLoad <This$Dir>.SFX.Laugh
  260*RMLoad <This$Dir>.SFX.Flare
  270*RMLoad <This$Dir>.SFX.Gener
  280REM*RMLoad <This$Dir>.SFX.Shield
  290VOICES 5
  300VOICE 1,"EXPLO"
  310VOICE 2,"TOKENRM"
  320VOICE 3,"ARG"
  330VOICE 4,"RARG"
  340VOICE 5,"LaughRM"
  350VOICE 6,"Flare"
  360VOICE 7,"Gener"
  370REMVOICE 8,"Shield"
  380SYS "Sound_Volume",127
  390scream%=8192
  400ping%=14336
  410explosion%=6400
  420fader%=8
  430bomb_pause%=63
  440clist_size%=32*1280
  450slist_size%=16*128
  460SYS "OS_File",17,"<This$Dir>.Graphics.SData1212" TO type%,,,,spritelen1%
  470SYS "OS_File",17,"<This$Dir>.Graphics.SData2016" TO type%,,,,spritelen2%
  480SYS "OS_File",17,"<This$Dir>.Graphics.SData1264" TO type%,,,,spritelen3%
  490SYS "OS_File",17,"<This$Dir>.Graphics.SData0804" TO type%,,,,spritelen4%
  500SYS "OS_File",17,"<This$Dir>.Graphics.SData1208" TO type%,,,,spritelen5%
  510SYS "OS_File",17,"<This$Dir>.Graphics.SData1616" TO type%,,,,spritelen6%
  520SYS "OS_File",17,"<This$Dir>.Graphics.Font" TO type%,,,,fontlen%
  530DIM code% 12*1024,sprite_routines% 8192,fill_routines% 8192,clg_routine% 1024,split_routine% 1024,decomp_code% 1024
  540DIM sprites1% spritelen1%+4,sprites2% spritelen2%+4,sprites3% spritelen3%+4,sprites4% spritelen4%+4,sprites5% spritelen5%+4,sprites6% spritelen6%+4
  550DIM screendata% 81924
  560DIM screenstore% 81924
  570DIM clist% clist_size%,slist% slist_size%
  580DIM cmpdata% 81924
  590DIM flame_fade% 256
  600DIM gun_fade% 256
  610DIM cl_code% 2048, cl_colours% 320
  620DIM font% fontlen%+4
  630PROCassm_decomp
  640PROCdecompress("<This$Dir>.Graphics.CMLData",screen%)
  650!font%=22*1024
  660SYS "OS_SpriteOp",&10A,font%,"<This$Dir>.Graphics.Font"
  670t%=TIME
  680P%=cl_colours%
  690L%=cl_colours%+256
  700chan%=OPENIN("<This$Dir>.FadeCols")
  710FOR c%=0 TO 255
  720 ?P%=BGET#chan%
  730 P%+=1
  740NEXT
  750CLOSE#chan%
  760REPEAT
  770UNTIL TIME>t%+200
  780PROCassemble_clear_screen
  790:
  800scrn%=13
  810REPEAT
  820 player1_lives%=3
  830 player2_lives%=3
  840 REPEAT
  850  scrn%+=1
  860  IF scrn%>14 THEN scrn%=1
  870  PROCdecompress("<This$Dir>.Levels.Level"+STR$(scrn%)+".CmpData"+STR$(scrn%),screendata%)
  880  PROCtint
  890  CALL clear_screen
  900  PROCplay
  910  !screen=!screen1
  920  CLS
  930  OFF
  940  SYS "OS_Byte",112,2
  950  CLS
  960  SYS "OS_Byte",113,2
  970  SYS "OS_Byte",112,1
  980  CLS
  990  PROCdecompress("<This$Dir>.Graphics.CLogoData",screen%)
 1000  WAIT
 1010  SYS "OS_Byte",113,1
 1020  SYS "OS_Byte",112,1
 1030  IF !player1_alive<>0 THEN player1_lives%-=1
 1040  IF !player2_alive<>0 THEN player2_lives%-=1
 1050  IF player1_lives%=0 AND player2_lives%=0 THEN player1_lives%+=1:player2_lives%+=1
 1060  COLOUR 128+42 TINT 0
 1070  COLOUR 0 TINT 0
 1080  PRINT TAB(0,0);
 1090  PROCprint("Player 1  :	"+STR$player1_lives%)
 1100  PROCprint("Player 2 :	"+STR$player2_lives%)
 1110  COLOUR 128 TINT 0
 1120  COLOUR 63 TINT 255
 1130 UNTIL player1_lives%=0 OR player2_lives%=0
 1140 t%=TIME
 1150 REPEAT
 1160 UNTIL TIME>t%+50
 1170 CALL clear_screen
 1180 CLS
 1190 OFF
 1200 SYS "OS_Byte",112,2
 1210 CLS
 1220 SYS "OS_Byte",113,2
 1230 SYS "OS_Byte",112,1
 1240 CLS
 1250 t%=TIME
 1260 IF player1_lives%=0 THEN PROCdecompress("<This$Dir>.Graphics.C�P2Wins",screen%)
 1270 IF player2_lives%=0 THEN PROCdecompress("<This$Dir>.Graphics.C�P1Wins",screen%)
 1280 SYS "Sound_Control",5,-15,128,0
 1290 WAIT
 1300 SYS "OS_Byte",113,1
 1310 SYS "OS_Byte",112,1
 1320 REPEAT
 1330 UNTIL TIME>t%+500
 1340 CALL clear_screen
 1350UNTIL FALSE
 1360END
 1370:
 1380:
 1390:
 1400DEF PROCplay
 1410spray_col%=63
 1420max_homing_speed%=16
 1430SYS "OS_File",255,"<This$Dir>.Graphics.SData1212",sprites1%,0
 1440SYS "OS_File",255,"<This$Dir>.Graphics.SData2016",sprites2%,0
 1450SYS "OS_File",255,"<This$Dir>.Graphics.SData1264",sprites3%,0
 1460SYS "OS_File",255,"<This$Dir>.Graphics.SData0804",sprites4%,0
 1470SYS "OS_File",255,"<This$Dir>.Graphics.SData1208",sprites5%,0
 1480SYS "OS_File",255,"<This$Dir>.Graphics.SData1616",sprites6%,0
 1490number    = 0
 1500divisor   = 1
 1510remain    = 3
 1520quotient  = 2
 1530place     = 4
 1540dsign     = 5
 1550msign     = 6
 1560x_shift=1
 1570y_shift=320
 1580FOR pass%=%0000 TO %1010 STEP %1010
 1590 P%=code%
 1600 L%=code%+12*1024
 1610 [OPT pass%
 1620 :
 1630 :
 1640 :
 1650 .point
 1660 STMFD   R13!,{R1-R12,R14}
 1670 :
 1680 RSB     R2,R2, #256
 1690 :
 1700; MOV     R7, #x_shift         ; get screen shifts
 1710; MOV     R8, #y_shift
 1720 LDR     R9, screenstore      ; get screen address
 1730 :
 1740ADD r9,r9,r1
 1750ADD r9,r9,r2, ASL #8
 1760ADD r9,r9,r2, ASL #6
 1770; MLA     R9,R7,R1,R9
 1780; MLA     R1,R8,R2,R9
 1790 :
 1800 STRB    R0,[R1]
 1810 :
 1820 LDMFD   R13!,{R1-R12,PC}
 1830 :
 1840 :
 1850 :
 1860 .screen
 1870 EQUD    0
 1880 .screenstore
 1890 EQUD    screenstore%
 1900 .screenbank
 1910 EQUD    0
 1920 .screen1
 1930 EQUD    0
 1940 .screen2
 1950 EQUD    0
 1960 .vdu_vars
 1970 EQUD    149                  ; vdu data
 1980 EQUD    -1
 1990 .screen_size
 2000 EQUD    &14000
 2010 .screen_bank
 2020 EQUD    1
 2030 :
 2040 .start
 2050 STMFD   R13!,{R0-R12,R14}
 2060 :
 2070 ADR     R0, vdu_vars
 2080 ADR     R1, screen
 2090 SWI     "OS_ReadVduVariables"   ; set up vdu variables
 2100 LDR     R0, screen
 2110 STR     R0, screen1
 2120 LDR     R1, screen_size
 2130 ADD     R0,R0,R1
 2140 STR     R0, screen2
 2150 SWI     256+19
 2160 SWI     256+0
 2170 SWI     256+24
 2180 SWI     256+240
 2190 SWI     256+240
 2200 SWI     256+112
 2210 BL      clg
 2220 :
 2230 .total_loop
 2240 :
 2250FNbordercol(0,0,0)
 2260 MOV     R0, #19
 2270 SWI     "OS_Byte"
 2280 :
 2290 LDR     R3, screen_bank
 2300 EOR     R3,R3, #1
 2310 STR     R3, screen_bank
 2320 CMP     R3, #0
 2330 RSB     R1,R3, #2
 2340 LDREQ   R3, screen1
 2350 LDRNE   R3, screen2
 2360 STR     R3, screen
 2370 :
 2380 MOV     R0, #113
 2390 SWI     "OS_Byte"
 2400;MOV     R0, #112
 2410;SWI     "OS_Byte"
 2420;SWI 256+31
 2430;SWI 256+0
 2440;SWI 256+0
 2450 :
 2460FNbordercol(255,0,0)
 2470 BL      wipe_all
 2480 :
 2490FNbordercol(0,255,0)
 2500 :
 2510 LDR     R0, rnd
 2520 TST     R0, #255<<8
 2530 BLEQ    add_goodie
 2540 TST     R0, #255<<4
 2550 BLEQ    add_goodie
 2560 :
 2570 BL      update_sprites
 2580 :
 2590FNbordercol(0,0,255)
 2600 BL      update_cells
 2610 :
 2620FNbordercol(0,255,255)
 2630 BL      split_screen
 2640 :
 2650FNbordercol(255,255,255)
 2660 SWI     "OS_ReadEscapeState"
 2670 BCS     end
 2680 :
 2690 LDR     R0, adr_end_game
 2700 LDR     R0,[R0]
 2710 CMP     R0, #0
 2720 BNE     end
 2730 :
 2740 LDR     R0, rnd
 2750 ADD     R0,R0,R0, ROR #1
 2760 AND     R1,R0, #255<<8
 2770 LDR     R1,[R1]
 2780 EOR     R0,R0,R1
 2790 STR     R0, rnd
 2800 :
 2810 B       total_loop
 2820 :
 2830 .end
 2840 :
 2850FNbordercol(0,0,0)
 2860 LDR     R3, screen_bank
 2870 EOR     R3,R3, #1
 2880 STR     R3, screen_bank
 2890 RSB     R1,R3, #2
 2900 CMP     R3, #0
 2910 LDREQ   R3, screen1
 2920 LDRNE   R3, screen2
 2930 STR     R3, screen
 2940 BL      clear_screen
 2950 :
 2960 LDMFD   R13!,{R0-R12,PC}
 2970 :
 2980 .adr_end_game
 2990 EQUD    end_game
 3000 :
 3010 .wipe_all
 3020 STMFD   R13!,{R0-R12,R14}
 3030 :
 3040 LDR     R9, adr_slist
 3050 .wsloop1
 3060 LDMIA   R9,{R5-R8}
 3070 :
 3080 MOV     R1,R6, LSR #2
 3090 MOV     R2,R7, LSR #2
 3100 :
 3110 CMP     R5, #1
 3120 SUBEQ   R1,R1, #4
 3130 BLEQ    fill_fill_2016
 3140 BEQ     wipe_end_sprite_loop
 3150 :
 3160 CMP     R5, #2
 3170 SUBEQ   R1,R1, #4
 3180 BLEQ    fill_fill_2016
 3190 BEQ     wipe_end_sprite_loop
 3200 :
 3210 CMP     R5, #3
 3220 BLT     not_a_1212
 3230 CMP     R5, #11
 3240 BGT     not_a_1212
 3250 BL      fill_fill_1212
 3260 B       wipe_end_sprite_loop
 3270 .not_a_1212
 3280 :
 3290 CMP     R5, #13
 3300 BLEQ    fill_fill_1264
 3310 :
 3320 CMP     R5, #14
 3330 BLEQ    fill_fill_1208
 3340 CMP     R5, #15
 3350 BLEQ    fill_fill_1208
 3360 :
 3370 .wipe_end_sprite_loop
 3380 ADD     R9,R9, #16
 3390 CMP     R5, #0
 3400 BGE     wsloop1
 3410 :
 3420 LDR     R9, adr_clist
 3430 .wcloop1
 3440 LDMIA   R9,{R0-R7}
 3450 MOV     R1,R1, ASR #4
 3460 MOV     R2,R2, ASR #4
 3470 CMP     R0, #0
 3480 BEQ     wcell_skip
 3490 CMP     R0, #1
 3500 BLEQ    fill_fill_0101
 3510 BEQ     wcell_skip
 3520 CMP     R0, #2
 3530 SUBEQ   R1,R1, #2
 3540 SUBEQ   R2,R2, #2
 3550 BLEQ    fill_fill_0804
 3560 BEQ     wcell_skip
 3570 CMP     R0, #3
 3580 SUBEQ   R1,R1, #2
 3590 SUBEQ   R2,R2, #2
 3600 BLEQ    fill_fill_0804
 3610 BEQ     wcell_skip
 3620 CMP     R0, #4
 3630 SUBEQ   R1,R1, #2
 3640 SUBEQ   R2,R2, #2
 3650 BLEQ    fill_fill_0804
 3660 BEQ     wcell_skip
 3670 CMP     R0, #5
 3680 SUBEQ   R1,R1, #2
 3690 SUBEQ   R2,R2, #2
 3700 BLEQ    fill_fill_0804
 3710 BEQ     wcell_skip
 3720 CMP     R0, #6
 3730 SUBEQ   R1,R1, #4
 3740 SUBEQ   R2,R2, #4
 3750 BLEQ    fill_fill_1208
 3760 BEQ     wcell_skip
 3770 CMP     R0, #7
 3780 SUBEQ   R1,R1, #2
 3790 SUBEQ   R2,R2, #2
 3800 BLEQ    fill_fill_0804
 3810 BEQ     wcell_skip
 3820 CMP     R0, #8
 3830 SUBEQ   R1,R1, #2
 3840 SUBEQ   R2,R2, #2
 3850 BLEQ    fill_fill_0804
 3860 BEQ     wcell_skip
 3870 CMP     R0, #9
 3880 SUBEQ   R1,R1, #2
 3890 SUBEQ   R2,R2, #2
 3900 BLEQ    fill_fill_0804
 3910 BEQ     wcell_skip
 3920 CMP     R0, #10
 3930 SUBEQ   R1,R1, #4
 3940 SUBEQ   R2,R2, #4
 3950 BLEQ    fill_fill_1208
 3960 BEQ     wcell_skip
 3970 CMP     R0, #11
 3980 SUBEQ   R1,R1, #8
 3990 SUBEQ   R2,R2, #8
 4000 BLEQ    fill_fill_2016
 4010 CMP     R0, #12
 4020 SUBEQ   R1,R1, #2
 4030 SUBEQ   R2,R2, #2
 4040 BLEQ    fill_fill_0804
 4050 CMP     R0, #13
 4060 BLEQ    fill_fill_0804
 4070 .wcell_skip
 4080 ADD     R9,R9, #32
 4090 CMP     R0, #0
 4100 BGE     wcloop1
 4110 :
 4120 LDMFD   R13!,{R0-R12,PC}
 4130 :
 4140 .update_sprites
 4150 STMFD   R13!,{R0-R12,R14}
 4160 :
 4170 LDR     R9, adr_slist
 4180 .sloop1
 4190 LDMIA   R9,{R5-R8}
 4200 CMP     R5, #1
 4210 BLEQ    player1
 4220 BEQ     end_sprite_loop
 4230 CMP     R5, #2
 4240 BLEQ    player2
 4250 BEQ     end_sprite_loop
 4260 CMP     R5, #3
 4270 BLEQ    flame
 4280 BEQ     end_sprite_loop
 4290 CMP     R5, #4
 4300 BLEQ    weapon_pistol
 4310 BEQ     end_sprite_loop
 4320 CMP     R5, #5
 4330 BLEQ    weapon_gun
 4340 BEQ     end_sprite_loop
 4350 CMP     R5, #6
 4360 BLEQ    weapon_mortar
 4370 BEQ     end_sprite_loop
 4380 CMP     R5, #7
 4390 BLEQ    weapon_homing
 4400 BEQ     end_sprite_loop
 4410 CMP     R5, #8
 4420 BLEQ    weapon_seeking
 4430 BEQ     end_sprite_loop
 4440 CMP     R5, #9
 4450 BLEQ    weapon_vertical
 4460 BEQ     end_sprite_loop
 4470 CMP     R5, #10
 4480 BLEQ    weapon_thrower
 4490 BEQ     end_sprite_loop
 4500 CMP     R5, #11
 4510 BLEQ    weapon_bomb
 4520 BEQ     end_sprite_loop
 4530 CMP     R5, #12
 4540 BLEQ    weapon_glue
 4550 BEQ     end_sprite_loop
 4560 CMP     R5, #13
 4570 BLEQ    door
 4580 BEQ     end_sprite_loop
 4590 CMP     R5, #14
 4600 BLEQ    switch
 4610 BEQ     end_sprite_loop
 4620 CMP     R5, #15
 4630 BLEQ    gun_gun
 4640 .end_sprite_loop
 4650 STMIA   R9!,{R5-R8}
 4660 CMP     R5, #0
 4670 BGE     sloop1
 4680 :
 4690 LDMFD   R13!,{R0-R12,PC}
 4700 :
 4710 .p1_weapon
 4720 EQUD    2
 4730 .p2_weapon
 4740 EQUD    2
 4750 :
 4760 .read_point
 4770 STMFD   R13!,{R1-R12,R14}
 4780 :
 4790 RSB     R2,R2, #256
 4800 :
 4810 MOV     R7, #x_shift         ; get screen shifts
 4820 MOV     R8, #y_shift
 4830 LDR     R9, screenstore      ; get screen address
 4840 :
 4850 MLA     R9,R7,R1,R9
 4860 MLA     R1,R8,R2,R9
 4870 :
 4880 LDRB    R0,[R1]
 4890 :
 4900 LDMFD   R13!,{R1-R12,PC}
 4910 :
 4920 .adr_clist
 4930 EQUD    clist%
 4940 .adr_slist
 4950 EQUD    slist%
 4960 :
 4970 .flame
 4980 STMFD   R13!,{R9,R14}
 4990 :
 5000 LDR     R10, p1_x
 5010 LDR     R11, p1_y
 5020 MOV     R9,R6, ASR #2
 5030 ADD     R9,R9, #8
 5040 SUB     R10,R9,R10
 5050 CMP     R10, #0
 5060 BLT     not_touched11
 5070 CMP     R10, #xext%+8
 5080 BGT     not_touched11
 5090 MOV     R9,R7, ASR #2
 5100 ADD     R9,R9, #10
 5110 SUB     R11,R9,R11
 5120 CMP     R11, #0
 5130 BLT     not_touched11
 5140 CMP     R11, #yext%+8
 5150 BGT     not_touched11
 5160 LDR     R1, adr_player1_alive
 5170 LDR     R0,[R1]
 5180 CMP     R0, #1
 5190 BEQ     not_touched11
 5200 MOV     R0, #1
 5210 STR     R0,[R1]
 5220 MOV     R0, #3
 5230 MVN     R1, #14
 5240 MOV     R2, #scream%
 5250 MOV     R3, #0
 5260 SWI     "Sound_Control"
 5270 .not_touched11
 5280 LDR     R10, p2_x
 5290 LDR     R11, p2_y
 5300 MOV     R9,R6, ASR #2
 5310 ADD     R9,R9, #8
 5320 SUB     R10,R9,R10
 5330 CMP     R10, #0
 5340 BLT     not_touched21
 5350 CMP     R10, #xext%+8
 5360 BGT     not_touched21
 5370 MOV     R9,R7, ASR #2
 5380 ADD     R9,R9, #10
 5390 SUB     R11,R9,R11
 5400 CMP     R11, #0
 5410 BLT     not_touched21
 5420 CMP     R11, #yext%+8
 5430 BGT     not_touched21
 5440 LDR     R1, adr_player2_alive
 5450 LDR     R0,[R1]
 5460 CMP     R0, #1
 5470 BEQ     not_touched21
 5480 MOV     R0, #1
 5490 STR     R0,[R1]
 5500 MOV     R0, #3
 5510 MVN     R1, #14
 5520 MOV     R2, #scream%
 5530 MOV     R3, #0
 5540 SWI     "Sound_Control"
 5550 .not_touched21
 5560 :
 5570 ADD     R8,R8, #1
 5580 CMP     R8, #15
 5590 MOVGT   R8, #0
 5600 MOV     R0, #2
 5610 ADD     R0,R0,R8, LSR #2
 5620 MOV     R1,R6, LSR #2
 5630 MOV     R2,R7, LSR #2
 5640 BL      plot_sprite_1212
 5650 :
 5660 LDMFD   R13!,{R9,PC}
 5670 :
 5680 .adr_player1_alive
 5690 EQUD    player1_alive
 5700 .adr_player2_alive
 5710 EQUD    player2_alive
 5720 :
 5730 .door
 5740 STMFD   R13!,{R9,R14}
 5750 :
 5760 TST     R8, #256
 5770 BNE     door_closing
 5780 AND     R0,R8, #15
 5790 CMP     R0, #14
 5800 ADDLT   R0,R0, #1
 5810 BIC     R8,R8, #15
 5820 ORR     R8,R8,R0
 5830 B       do_door
 5840 .door_closing
 5850 AND     R0,R8, #15
 5860 CMP     R0, #0
 5870 SUBGT   R0,R0, #1
 5880 BIC     R8,R8, #15
 5890 ORR     R8,R8,R0
 5900 .do_door
 5910 ORR     R8,R8, #256
 5920 LDR     R0, p1_x
 5930 LDR     R1, p1_y
 5940 SUB     R0,R6,R0, ASL #2
 5950 SUB     R1,R7,R1, ASL #2
 5960 CMP     R0, #0
 5970 RSBLT   R0,R0, #0
 5980 CMP     R1, #0
 5990 RSBLT   R1,R1, #0
 6000 ADD     R0,R0,R1
 6010 CMP     R0, #128
 6020 BICLT   R8,R8, #256
 6030 LDR     R0, p2_x
 6040 LDR     R1, p2_y
 6050 SUB     R0,R6,R0, ASL #2
 6060 SUB     R1,R7,R1, ASL #2
 6070 CMP     R0, #0
 6080 RSBLT   R0,R0, #0
 6090 CMP     R1, #0
 6100 RSBLT   R1,R1, #0
 6110 ADD     R0,R0,R1
 6120 CMP     R0, #128
 6130 BICLT   R8,R8, #256
 6140 .plot_door
 6150 :
 6160 AND     R0,R8, #15
 6170 MOV     R1,R6, LSR #2
 6180 MOV     R2,R7, LSR #2
 6190 BL      plot_sprite_1264
 6200 :
 6210 LDMFD   R13!,{R9,PC}
 6220 :
 6230 .switch
 6240 STMFD   R13!,{R9,R14}
 6250 :
 6260 MOV     R0, #0
 6270 :
 6280 LDR     R1, p1_x
 6290 LDR     R2, p1_y
 6300 MOV     R3,R6, ASR #2
 6310 MOV     R4,R7, ASR #2
 6320 ADD     R4,R4, #8
 6330 CMP     R2,R4
 6340 BNE     not_p1_on
 6350 SUB     R3,R3, #6
 6360 CMP     R1,R3
 6370 BLT     not_p1_on
 6380 ADD     R3,R3, #10
 6390 CMP     R1,R3
 6400 BGT     not_p1_on
 6410 MOV     R0, #2
 6420 .not_p1_on
 6430 LDR     R1, p2_x
 6440 LDR     R2, p2_y
 6450 MOV     R3,R6, ASR #2
 6460 MOV     R4,R7, ASR #2
 6470 ADD     R4,R4, #8
 6480 CMP     R2,R4
 6490 BNE     not_p2_on
 6500 SUB     R3,R3, #6
 6510 CMP     R1,R3
 6520 BLT     not_p2_on
 6530 ADD     R3,R3, #10
 6540 CMP     R1,R3
 6550 BGT     not_p2_on
 6560 MOV     R0, #1
 6570 .not_p2_on
 6580 :
 6590 ADR     R1, guns
 6600 AND     R2,R8, #3
 6610 STR     R0,[R1,R2, LSL #3]
 6620 :
 6630 MOV     R0, #16
 6640 MOV     R1,R6, LSR #2
 6650 MOV     R2,R7, LSR #2
 6660 BL      plot_sprite_1208
 6670 :
 6680 LDMFD   R13!,{R9,PC}
 6690 :
 6700 .guns
 6710 EQUD    0
 6720 EQUD    0
 6730 EQUD    0
 6740 EQUD    0
 6750 EQUD    0
 6760 EQUD    0
 6770 EQUD    0
 6780 EQUD    0
 6790 :
 6800 .gun_gun
 6810 STMFD   R13!,{R9,R14}
 6820 :
 6830 ADR     R0, guns
 6840 AND     R2,R8, #3
 6850 LDR     R3,[R0,R2, LSL #3]
 6860 ADD     R0,R0, #4
 6870 LDR     R4,[R0,R2, LSL #3]
 6880 :
 6890 CMP     R3, #0
 6900 BEQ     no_gun_gun
 6910 ADD     R4,R4, #1
 6920 AND     R4,R4, #%11
 6930 STR     R4,[R0,R2, LSL #3]
 6940 TST     R4, #%11
 6950 BNE     no_gun_gun
 6960 SUB     R5,R3, #1
 6970 MOV     R0, #3
 6980 MOV     R1,R6, ASR #2
 6990 MOV     R2,R7, ASR #2
 7000 ADD     R1,R1, #8
 7010 ADD     R2,R2, #5
 7020 RSB     R2,R2, #256
 7030 MOV     R3, #72
 7040 LDR     R4, rnd
 7050 AND     R4,R4, #15
 7060 SUB     R4,R4, #7
 7070 BL      add_cell
 7080 MOV     R0, #8
 7090 MVN     R1, #12
 7100 MOV     R2, #12800
 7110 MOV     R3, #0
 7120 SWI     "Sound_Control"
 7130 MOV     R5, #15
 7140 .no_gun_gun
 7150 :
 7160 MOV     R0, #17
 7170 MOV     R1,R6, LSR #2
 7180 MOV     R2,R7, LSR #2
 7190 BL      plot_sprite_1208
 7200 :
 7210 LDMFD   R13!,{R9,PC}
 7220 :
 7230 .weapon_pistol
 7240 STMFD   R13!,{R9,R14}
 7250 :
 7260 MOV     R4, #2
 7270 BL      pick_up
 7280 :
 7290 SUB     R8,R8, #1
 7300 CMP     R8, #0
 7310 MOVLE   R5, #0
 7320 :
 7330 CMP     R5, #0
 7340 :
 7350 MOVGT   R0, #12
 7360 MOVGT   R1,R6, LSR #2
 7370 MOVGT   R2,R7, LSR #2
 7380 BLGT    plot_sprite_1212
 7390 :
 7400 LDMFD   R13!,{R9,PC}
 7410 :
 7420 .weapon_gun
 7430 STMFD   R13!,{R9,R14}
 7440 :
 7450 MOV     R4, #3
 7460 BL      pick_up
 7470 :
 7480 SUB     R8,R8, #1
 7490 CMP     R8, #0
 7500 MOVLE   R5, #0
 7510 :
 7520 CMP     R5, #0
 7530 :
 7540 MOVGT   R0, #13
 7550 MOVGT   R1,R6, LSR #2
 7560 MOVGT   R2,R7, LSR #2
 7570 BLGT    plot_sprite_1212
 7580 :
 7590 LDMFD   R13!,{R9,PC}
 7600 :
 7610 .weapon_mortar
 7620 STMFD   R13!,{R9,R14}
 7630 :
 7640 MOV     R4, #4
 7650 BL      pick_up
 7660 :
 7670 SUB     R8,R8, #1
 7680 CMP     R8, #0
 7690 MOVLE   R5, #0
 7700 :
 7710 CMP     R5, #0
 7720 :
 7730 MOVGT   R0, #14
 7740 MOVGT   R1,R6, LSR #2
 7750 MOVGT   R2,R7, LSR #2
 7760 BLGT    plot_sprite_1212
 7770 :
 7780 LDMFD   R13!,{R9,PC}
 7790 :
 7800 .weapon_homing
 7810 STMFD   R13!,{R9,R14}
 7820 :
 7830 MOV     R4, #5
 7840 BL      pick_up
 7850 :
 7860 SUB     R8,R8, #1
 7870 CMP     R8, #0
 7880 MOVLE   R5, #0
 7890 :
 7900 CMP     R5, #0
 7910 :
 7920 MOVGT   R0, #15
 7930 MOVGT   R1,R6, LSR #2
 7940 MOVGT   R2,R7, LSR #2
 7950 BLGT    plot_sprite_1212
 7960 :
 7970 LDMFD   R13!,{R9,PC}
 7980 :
 7990 .weapon_seeking
 8000 STMFD   R13!,{R9,R14}
 8010 :
 8020 MOV     R4, #6
 8030 BL      pick_up
 8040 :
 8050 SUB     R8,R8, #1
 8060 CMP     R8, #0
 8070 MOVLE   R5, #0
 8080 :
 8090 CMP     R5, #0
 8100 :
 8110 MOVGT   R0, #16
 8120 MOVGT   R1,R6, LSR #2
 8130 MOVGT   R2,R7, LSR #2
 8140 BLGT    plot_sprite_1212
 8150 :
 8160 LDMFD   R13!,{R9,PC}
 8170 :
 8180 .weapon_vertical
 8190 STMFD   R13!,{R9,R14}
 8200 :
 8210 MOV     R4, #7
 8220 BL      pick_up
 8230 :
 8240 SUB     R8,R8, #1
 8250 CMP     R8, #0
 8260 MOVLE   R5, #0
 8270 :
 8280 CMP     R5, #0
 8290 :
 8300 MOVGT   R0, #17
 8310 MOVGT   R1,R6, LSR #2
 8320 MOVGT   R2,R7, LSR #2
 8330 BLGT    plot_sprite_1212
 8340 :
 8350 LDMFD   R13!,{R9,PC}
 8360 :
 8370 .weapon_thrower
 8380 STMFD   R13!,{R9,R14}
 8390 :
 8400 MOV     R4, #8
 8410 BL      pick_up
 8420 :
 8430 SUB     R8,R8, #1
 8440 CMP     R8, #0
 8450 MOVLE   R5, #0
 8460 :
 8470 CMP     R5, #0
 8480 :
 8490 MOVGT   R0, #18
 8500 MOVGT   R1,R6, LSR #2
 8510 MOVGT   R2,R7, LSR #2
 8520 BLGT    plot_sprite_1212
 8530 :
 8540 LDMFD   R13!,{R9,PC}
 8550 :
 8560 .weapon_bomb
 8570 STMFD   R13!,{R9,R14}
 8580 :
 8590 MOV     R4, #9
 8600 BL      pick_up
 8610 :
 8620 SUB     R8,R8, #1
 8630 CMP     R8, #0
 8640 MOVLE   R5, #0
 8650 :
 8660 CMP     R5, #0
 8670 :
 8680 MOVGT   R0, #19
 8690 MOVGT   R1,R6, LSR #2
 8700 MOVGT   R2,R7, LSR #2
 8710 BLGT    plot_sprite_1212
 8720 :
 8730 LDMFD   R13!,{R9,PC}
 8740 :
 8750 .weapon_glue
 8760 STMFD   R13!,{R9,R14}
 8770 :
 8780 MOV     R4, #10
 8790 BL      pick_up
 8800 :
 8810 SUB     R8,R8, #1
 8820 CMP     R8, #0
 8830 MOVLE   R5, #0
 8840 :
 8850 CMP     R5, #0
 8860 :
 8870 MOVGT   R0, #20
 8880 MOVGT   R1,R6, LSR #2
 8890 MOVGT   R2,R7, LSR #2
 8900 BLGT    plot_sprite_1212
 8910 :
 8920 LDMFD   R13!,{R9,PC}
 8930 :
 8940 :
 8950 .pick_up
 8960 LDR     R10, p1_x
 8970 LDR     R11, p1_y
 8980 MOV     R9,R6, ASR #2
 8990 ADD     R9,R9, #8
 9000 SUB     R10,R9,R10
 9010 ADD     R10,R10, #2
 9020 CMP     R10, #0
 9030 BLT     not_picked_up1
 9040 CMP     R10, #xext%+10
 9050 BGT     not_picked_up1
 9060 MOV     R9,R7, ASR #2
 9070 ADD     R9,R9, #12
 9080 SUB     R11,R9,R11
 9090 ADD     R11,R11, #2
 9100 CMP     R11, #0
 9110 BLT     not_picked_up1
 9120 CMP     R11, #yext%+14
 9130 BGT     not_picked_up1
 9140 MOV     R5, #0
 9150 STR     R4, p1_weapon
 9160 MOV     R0, #2
 9170 MVN     R1, #14
 9180 MOV     R2, #ping%
 9190 MOV     R3, #0
 9200 SWI     "Sound_Control"
 9210 .not_picked_up1
 9220 LDR     R10, p2_x
 9230 LDR     R11, p2_y
 9240 MOV     R9,R6, ASR #2
 9250 ADD     R9,R9, #8
 9260 SUB     R10,R9,R10
 9270 ADD     R10,R10, #2
 9280 CMP     R10, #0
 9290 BLT     not_picked_up2
 9300 CMP     R10, #xext%+10
 9310 BGT     not_picked_up2
 9320 MOV     R9,R7, ASR #2
 9330 ADD     R9,R9, #12
 9340 SUB     R11,R9,R11
 9350 ADD     R11,R11, #2
 9360 CMP     R11, #0
 9370 BLT     not_picked_up2
 9380 CMP     R11, #yext%+16
 9390 BGT     not_picked_up2
 9400 MOV     R5, #0
 9410 STR     R4, p2_weapon
 9420 MOV     R0, #2
 9430 MVN     R1, #14
 9440 MOV     R2, #ping%
 9450 MOV     R3, #0
 9460 SWI     "Sound_Control"
 9470 .not_picked_up2
 9480 MOV     PC,R14
 9490 :
 9500 :
 9510 .p1_x
 9520 EQUD    0
 9530 .p1_y
 9540 EQUD    0
 9550 .p2_x
 9560 EQUD    0
 9570 .p2_y
 9580 EQUD    0
 9590 :
 9600 .rnd
 9610 EQUD    ABSRND-TIME
 9620 :
 9630 :
 9640 .update_cells
 9650 STMFD   R13!,{R0-R12,R14}
 9660 :
 9670 LDR     R9, adr_clist
 9680 .cloop1
 9690 LDMIA   R9,{R1-R8}
 9700 CMP     R1, #0
 9710 BEQ     cell_skip
 9720 CMP     R1, #1
 9730 BLEQ    spray
 9740 BEQ     cell_skip
 9750 CMP     R1, #2
 9760 BLEQ    pistol
 9770 BEQ     cell_skip
 9780 CMP     R1, #3
 9790 BLEQ    gun
 9800 BEQ     cell_skip
 9810 CMP     R1, #4
 9820 BLEQ    mortar
 9830 BEQ     cell_skip
 9840 CMP     R1, #5
 9850 BLEQ    homing
 9860 BEQ     cell_skip
 9870 CMP     R1, #6
 9880 BLEQ    seeking
 9890 BEQ     cell_skip
 9900 CMP     R1, #7
 9910 BLEQ    vertical
 9920 BEQ     cell_skip
 9930 CMP     R1, #8
 9940 BLEQ    spray2
 9950 BEQ     cell_skip
 9960 CMP     R1, #9
 9970 BLEQ    spray3
 9980 BEQ     cell_skip
 9990 CMP     R1, #10
10000 BLEQ    thrower
10010 BEQ     cell_skip
10020 CMP     R1, #11
10030 BLEQ    explode
10040 BEQ     cell_skip
10050 CMP     R1, #12
10060 BLEQ    bomb
10070 BEQ     cell_skip
10080 CMP     R1, #13
10090 BLEQ    glue
10100 .cell_skip
10110 STMIA   R9!,{R1-R8}
10120 CMP     R1, #0
10130 BGE     cloop1
10140 :
10150 LDMFD   R13!,{R0-R12,PC}
10160 :
10170 .spray
10180 STMFD   R13!,{R9,R14}
10190 :
10200 SUB     R5,R5, #1
10210 ADD     R2,R2,R4
10220 ADD     R3,R3,R5
10230 SUB     R6,R6, #1
10240 CMP     R6, #0
10250 MOVLE   R1, #0
10260 LDMLEFD R13!,{R9,PC}
10270 :
10280 STMFD   R13!,{R1-R6}
10290 :
10300 MOV     R2,R2, ASR #4
10310 MOV     R3,R3, ASR #4
10320 CMP     R2, #0
10330 BLT     no_spray
10340 CMP     R3, #0
10350 BLT     no_spray
10360 CMP     R2, #320
10370 BGE     no_spray
10380 CMP     R3, #256
10390 BGE     no_spray
10400 RSB     R3,R3, #256
10410 LDR     R4, screenstore
10420 MOV     R5, #y_shift
10430 ADD     R4,R4,R2
10440 MLA     R4,R5,R3,R4
10450 LDRB    R0,[R4]
10460 CMP     R0, #0
10470 MOVEQ   R10, #1
10480 MOVNE   R10, #0
10490 BNE     no_spray
10500 LDR     R0, adr_flame_fade
10510 MOV     R9,R6, ASL #3
10520 CMP     R9, #255
10530 MOVGT   R9, #255
10540 LDRB    R0,[R0,R9]
10550 STRB    R0,[R4]
10560 .no_spray
10570 :
10580 LDMFD   R13!,{R1-R6}
10590 CMP     R10, #0
10600 RSBEQ   R5,R5, #0
10610 MOVEQ   R5,R5, ASR #1
10620 LDMFD   R13!,{R9,PC}
10630 :
10640 .spray2
10650 STMFD   R13!,{R9,R14}
10660 :
10670 SUB     R5,R5, #1
10680 ADD     R2,R2,R4
10690 ADD     R3,R3,R5
10700 SUB     R6,R6, #1
10710 CMP     R6, #0
10720 MOVLE   R1, #0
10730 LDMLEFD R13!,{R9,PC}
10740 :
10750 STMFD   R13!,{R1-R6}
10760 STMFD   R13!,{R6}
10770 :
10780 MOV     R6, #0
10790 BL      check_death
10800 MOV     R6, #1
10810 BL      check_death
10820 LDMFD   R13!,{R6}
10830 :
10840 MOV     R2,R2, ASR #4
10850 MOV     R3,R3, ASR #4
10860 CMP     R2, #0
10870 BLT     no_spray2
10880 CMP     R3, #0
10890 BLT     no_spray2
10900 CMP     R2, #320
10910 BGE     no_spray2
10920 CMP     R3, #256
10930 BGE     no_spray2
10940 RSB     R3,R3, #256
10950 SUB     R2,R2, #1
10960 SUB     R3,R3, #1
10970 LDR     R4, screenstore
10980 MOV     R5, #y_shift
10990 ADD     R4,R4,R2
11000 MLA     R4,R5,R3,R4
11010 LDRB    R0,[R4]
11020 CMP     R0, #0
11030 MOVEQ   R10, #1
11040 MOVNE   R10, #0
11050 BNE     no_spray2
11060 LDR     R0, adr_flame_fade
11070 MOV     R9,R6, ASL #3
11080 CMP     R9, #255
11090 MOVGT   R9, #255
11100 LDRB    R0,[R0,R9]
11110 STRB    R0,[R4, #1]
11120 ADD     R4,R4, #y_shift
11130 STRB    R0,[R4]
11140 STRB    R0,[R4, #1]
11150 STRB    R0,[R4, #2]
11160 ADD     R4,R4, #y_shift
11170 STRB    R0,[R4, #1]
11180 .no_spray2
11190 :
11200 LDMFD   R13!,{R1-R6}
11210 CMP     R10, #0
11220 RSBEQ   R5,R5, #0
11230 RSBEQ   R4,R4, #0
11240 LDMFD   R13!,{R9,PC}
11250 :
11260 .spray3
11270 STMFD   R13!,{R9,R14}
11280 :
11290 SUB     R5,R5, #1
11300 ADD     R2,R2,R4
11310 ADD     R3,R3,R5
11320 AND     R0,R6, #255<<8
11330 SUB     R0,R0, #1
11340 CMP     R0, #0
11350 MOVLE   R1, #0
11360 LDMLEFD R13!,{R9,PC}
11370 BIC     R6,R6, #255<<8
11380 ORR     R6,R6,R0
11390 :
11400 STMFD   R13!,{R1-R6}
11410 :
11420 MOV     R6, #0
11430 BL      check_death
11440 MOV     R6, #1
11450 BL      check_death
11460 :
11470 MOV     R2,R2, ASR #4
11480 MOV     R3,R3, ASR #4
11490 CMP     R2, #0
11500 BLT     no_spray3
11510 CMP     R3, #0
11520 BLT     no_spray3
11530 CMP     R2, #320
11540 BGE     no_spray3
11550 CMP     R3, #256
11560 BGE     no_spray3
11570 RSB     R3,R3, #256
11580 SUB     R2,R2, #1
11590 SUB     R3,R3, #1
11600 LDR     R4, screenstore
11610 MOV     R5, #y_shift
11620 ADD     R4,R4,R2
11630 MLA     R4,R5,R3,R4
11640 LDRB    R0,[R4]
11650 CMP     R0, #0
11660 MOVEQ   R10, #1
11670 MOVNE   R10, #0
11680 BNE     no_spray3
11690 MOV     R0, #255
11700 STRB    R0,[R4, #1]
11710 ADD     R4,R4, #y_shift
11720 STRB    R0,[R4]
11730 STRB    R0,[R4, #1]
11740 STRB    R0,[R4, #2]
11750 ADD     R4,R4, #y_shift
11760 STRB    R0,[R4, #1]
11770 .no_spray3
11780 :
11790 LDMFD   R13!,{R1-R6}
11800 CMP     R10, #0
11810 RSBEQ   R5,R5, #0
11820 RSBEQ   R4,R4, #0
11830 LDMFD   R13!,{R9,PC}
11840 :
11850 .adr_flame_fade
11860 EQUD    flame_fade%
11870 :
11880 .adr_gun_fade
11890 EQUD    gun_fade%
11900 :
11910 .thrower
11920 STMFD   R13!,{R9,R14}
11930 :
11940 ADD     R2,R2,R4
11950 ADD     R3,R3,R5
11960 AND     R7,R6, #255<<8
11970 MOV     R7,R7, ASR #8
11980 ADD     R7,R7, #1
11990 CMP     R7, #15
12000 MOVGE   R1, #0
12010 LDMGEFD   R13!,{R9,PC}
12020 BIC     R6,R6, #255<<8
12030 ORR     R6,R6,R7, ASL #8
12040 :
12050 STMFD   R13!,{R1-R6}
12060 :
12070 BL      check_death
12080 :
12090 MOV     R2,R2, ASR #4
12100 MOV     R3,R3, ASR #4
12110 RSB     R3,R3, #256
12120 LDR     R4, screenstore
12130 MOV     R5, #y_shift
12140 ADD     R4,R4,R2
12150 MLA     R4,R5,R3,R4
12160 LDRB    R0,[R4, #2]
12170 CMP     R0, #0
12180 MOVEQ   R10, #1
12190 MOVNE   R10, #0
12200 BNE     no_thrower
12210 RSB     R3,R3, #256
12220 MOV     R0,R7
12230 SUB     R1,R2, #4
12240 SUB     R2,R3, #4
12250 BL      plot_sprite_1208
12260 .no_thrower
12270 :
12280 LDMFD   R13!,{R1-R6}
12290 CMP     R10, #0
12300 MOVEQ   R1, #0
12310 LDMFD   R13!,{R9,PC}
12320 :
12330 .explode
12340 STMFD   R13!,{R9,R14}
12350 :
12360 ADD     R2,R2,R4
12370 ADD     R3,R3,R5
12380 AND     R7,R6, #255<<8
12390 MOV     R7,R7, ASR #8
12400 ADD     R7,R7, #1
12410 CMP     R7, #15
12420 MOVGE   R1, #0
12430 LDMGEFD   R13!,{R9,PC}
12440 BIC     R6,R6, #255<<8
12450 ORR     R6,R6,R7, ASL #8
12460 ADD     R7,R7, #8
12470 :
12480 STMFD   R13!,{R1-R6}
12490 :
12500 BL      check_death
12510 :
12520 MOV     R2,R2, ASR #4
12530 MOV     R3,R3, ASR #4
12540 RSB     R3,R3, #256
12550 LDR     R4, screenstore
12560 MOV     R5, #y_shift
12570 ADD     R4,R4,R2
12580 MLA     R4,R5,R3,R4
12590 LDRB    R0,[R4, #2]
12600 CMP     R0, #0
12610 MOVEQ   R10, #1
12620 MOVNE   R10, #0
12630 BNE     no_explode
12640 RSB     R3,R3, #256
12650 MOV     R0,R7
12660 SUB     R1,R2, #8
12670 SUB     R2,R3, #8
12680 BL      plot_sprite_2016
12690 .no_explode
12700 :
12710 LDMFD   R13!,{R1-R6}
12720 CMP     R10, #0
12730 LDMFD   R13!,{R9,PC}
12740 :
12750 .pistol
12760 STMFD   R13!,{R9,R14}
12770 :
12780 ADD     R2,R2,R4
12790 ADD     R3,R3,R5
12800 CMP     R4, #0
12810 MOVLT   R7, #1
12820 MOVGT   R7, #0
12830 :
12840 STMFD   R13!,{R1-R6}
12850 :
12860 BL      check_death
12870 :
12880 MOV     R2,R2, ASR #4
12890 MOV     R3,R3, ASR #4
12900 RSB     R3,R3, #256
12910 LDR     R4, screenstore
12920 MOV     R5, #y_shift
12930 ADD     R4,R4,R2
12940 MLA     R4,R5,R3,R4
12950 LDRB    R0,[R4, #2]
12960 CMP     R0, #0
12970 MOVEQ   R10, #1
12980 MOVNE   R10, #0
12990 BNE     no_pistol
13000 RSB     R3,R3, #256
13010 MOV     R0,R7
13020 SUB     R1,R2, #2
13030 SUB     R2,R3, #2
13040 BL      plot_sprite_0804
13050;LDR     R0, adr_gun_fade
13060;MOV     R9, #255
13070;LDRB    R0,[R0,R9]
13080;STRB    R0,[R4]
13090;STRB    R0,[R4, #1]
13100 .no_pistol
13110 :
13120 LDMFD   R13!,{R1-R6}
13130 CMP     R10, #0
13140 MOVEQ   R1, #0
13150 LDMFD   R13!,{R9,PC}
13160 :
13170 .gun
13180 STMFD   R13!,{R9,R14}
13190 :
13200 ADD     R2,R2,R4
13210 ADD     R3,R3,R5
13220 CMP     R4, #0
13230 MOVLT   R7, #3
13240 MOVGT   R7, #2
13250 :
13260 STMFD   R13!,{R1-R6}
13270 :
13280 MOV     R6, #0
13290 BL      check_death
13300 MOV     R6, #1
13310 BL      check_death
13320 :
13330 MOV     R2,R2, ASR #4
13340 MOV     R3,R3, ASR #4
13350 RSB     R3,R3, #256
13360 LDR     R4, screenstore
13370 MOV     R5, #y_shift
13380 ADD     R4,R4,R2
13390 MLA     R4,R5,R3,R4
13400 LDRB    R0,[R4]
13410 CMP     R0, #0
13420 MOVEQ   R10, #1
13430 MOVNE   R10, #0
13440 BNE     no_gun
13450 RSB     R3,R3, #256
13460 MOV     R0,R7
13470 SUB     R1,R2, #2
13480 SUB     R2,R3, #2
13490 BL      plot_sprite_0804
13500;LDR     R0, adr_gun_fade
13510;MOV     R9, #255
13520;LDRB    R0,[R0,R9]
13530;STRB    R0,[R4]
13540 .no_gun
13550 :
13560 LDMFD   R13!,{R1-R6}
13570 CMP     R10, #0
13580 MOVEQ   R1, #0
13590 LDMFD   R13!,{R9,PC}
13600 :
13610 .mortar
13620 STMFD   R13!,{R9,R14}
13630 :
13640 SUB     R5,R5, #1
13650 MOV     R0, #32
13660 RSB     R0,R0, #0
13670 CMP     R5,R0
13680 MOVLT   R5,R0
13690 ADD     R2,R2,R4
13700 ADD     R3,R3,R5
13710 :
13720 STMFD   R13!,{R1-R6}
13730 :
13740 BL      check_death
13750 :
13760 MOV     R2,R2, ASR #4
13770 MOV     R3,R3, ASR #4
13780 RSB     R3,R3, #256
13790 LDR     R4, screenstore
13800 MOV     R5, #y_shift
13810 ADD     R4,R4,R2
13820 MLA     R4,R5,R3,R4
13830 LDRB    R0,[R4]
13840 CMP     R0, #0
13850 MOVEQ   R10, #1
13860 MOVNE   R10, #0
13870 MOVEQ   R0, #255
13880 STREQB  R0,[R4]
13890 STREQB  R0,[R4, #1]
13900 ADD     R2,R4, #y_shift
13910 STREQB  R0,[R2]
13920 STREQB  R0,[R2, #1]
13930 :
13940 LDMFD   R13!,{R1-R6}
13950 CMP     R10, #0
13960 BNE     end_mortar
13970 SUB     R2,R2,R4, ASL #1
13980 SUB     R3,R3,R5, ASL #1
13990 MOV     R1,R2, ASR #4
14000 MOV     R2,R3, ASR #4
14010 RSB     R2,R2, #256
14020 MOV     R9, #0
14030 LDR     R10, adr_explosion_spray
14040 MOV     R0, #8
14050 LDR     R8, rnd
14060 AND     R8,R8, #7
14070 MOV     R6, #16<<8
14080 MOV     R5, #32
14090 .mortar_loop1
14100 LDRB    R3,[R10], #1
14110 LDRB    R4,[R10], #1
14120 MOV     R3,R3, LSL #24
14130 MOV     R4,R4, LSL #24
14140 MOV     R3,R3, ASR #24
14150 MOV     R4,R4, ASR #24
14160 EOR     R3,R3, R8
14170 EOR     R4,R4, R8
14180 ADD     R6,R6,R3, ASL #8
14190 ADD     R6,R6,R4, ASL #8
14200 AND     R6,R6, #31<<8
14210 BL      add_cell
14220 CMP     R9, #16
14230 MOVEQ   R0, #9
14240 MOVGE   R5,R6
14250 ADD     R9,R9, #1
14260 CMP     R9, #64
14270 BLE     mortar_loop1
14280 MOV     R5, #1
14290 MOV     R0, #1
14300 MVN     R1, #14
14310 MOV     R2, #explosion%
14320 MOV     R3, #0
14330 SWI     "Sound_Control"
14340 MOV     R1, #0
14350 .end_mortar
14360 :
14370 LDMFD   R13!,{R9,PC}
14380 :
14390 .glue
14400 STMFD   R13!,{R9,R14}
14410 :
14420 SUB     R5,R5, #1
14430 MOV     R0, #256
14440 RSB     R0,R0, #0
14450 CMP     R5,R0
14460 MOVLT   R5,R0
14470 ADD     R2,R2,R4
14480 ADD     R3,R3,R5, ASR #3
14490 :
14500 STMFD   R13!,{R1-R6}
14510 :
14520 MOV     R2,R2, ASR #4
14530 MOV     R3,R3, ASR #4
14540 RSB     R3,R3, #256
14550 LDR     R4, screenstore
14560 MOV     R5, #y_shift
14570 ADD     R4,R4,R2
14580 MLA     R4,R5,R3,R4
14590 LDRB    R0,[R4]
14600 CMP     R0, #0
14610 MOVEQ   R10, #1
14620 MOVNE   R10, #0
14630 MOVEQ   R0, #247
14640 STREQB  R0,[R4]
14650 STREQB  R0,[R4, #1]
14660 STREQB  R0,[R4, #2]
14670 STREQB  R0,[R4, #3]
14680 SUB     R4,R4, #y_shift
14690 STREQB  R0,[R4]
14700 STREQB  R0,[R4, #1]
14710 STREQB  R0,[R4, #2]
14720 STREQB  R0,[R4, #3]
14730 SUB     R4,R4, #y_shift
14740 STREQB  R0,[R4]
14750 STREQB  R0,[R4, #1]
14760 STREQB  R0,[R4, #2]
14770 STREQB  R0,[R4, #3]
14780 SUB     R4,R4, #y_shift
14790 STREQB  R0,[R4]
14800 STREQB  R0,[R4, #1]
14810 STREQB  R0,[R4, #2]
14820 STREQB  R0,[R4, #3]
14830 :
14840 LDMFD   R13!,{R1-R6}
14850 CMP     R10, #0
14860 SUBEQ   R2,R2,R4
14870 SUBEQ   R3,R3,R5, ASR #3
14880 MOVEQ   R4, #0
14890 MOVEQ   R5, #1
14900 CMPEQ   R6, #0
14910 MOVEQ   R6, #256
14920 CMP     R6, #1
14930 SUBGT   R6,R6, #1
14940 MOVEQ   R1, #0
14950 .end_glue
14960 :
14970 LDMFD   R13!,{R9,PC}
14980 :
14990 .adr_explosion_spray
15000 EQUD    explosion_spray
15010 :
15020 .bomb
15030 STMFD   R13!,{R9,R14}
15040 :
15050 MOV     R0, #256
15060 RSB     R0,R0, #0
15070 CMP     R5,R0
15080 MOVLT   R5,R0
15090 ADD     R2,R2,R4, ASR #2
15100 ADD     R3,R3,R5, ASR #2
15110 CMP     R4, #0
15120 ADDLT   R4,R4, #1
15130 SUBGT   R4,R4, #1
15140 MOV     R10,R6
15150 :
15160 STMFD   R13!,{R1-R6}
15170 :
15180 MOV     R2,R2, ASR #4
15190 MOV     R3,R3, ASR #4
15200 RSB     R3,R3, #256
15210 LDR     R4, adr_screenstore
15220 LDR     R4,[R4]
15230 MOV     R5, #y_shift
15240 ADD     R4,R4,R2
15250 MLA     R4,R5,R3,R4
15260 ADD     R0,R4, #y_shift
15270 LDRB    R0,[R0]
15280 CMP     R0, #0
15290 SUBNE   R10,R10, #1
15300 MOV     R0, #%00010111
15310 SUB     R4,R4, #y_shift
15320 STRB    R0,[R4, #1]
15330 ADD     R4,R4, #y_shift
15340 STRB    R0,[R4]
15350 STRB    R0,[R4, #1]
15360 STRB    R0,[R4, #2]
15370 :
15380 LDMFD   R13!,{R1-R6}
15390 CMP     R10, #bomb_pause%-1
15400 ADDEQ   R3,R3, #4
15410 CMP     R10,R6
15420 SUBLT   R2,R2,R4
15430 SUBLT   R3,R3,R5, ASR #2
15440 MOVLT   R4, #0
15450 MOVLT   R5, #0
15460 SUBEQ   R5,R5, #4
15470 MOVGT   R5, #0
15480 MOV     R6,R10
15490 CMP     R6, #0
15500 BNE     end_bomb
15510 MOV     R1,R2, ASR #4
15520 MOV     R2,R3, ASR #4
15530 ADD     R2,R2, #2
15540 RSB     R2,R2, #256
15550 MOV     R9, #0
15560 MOV     R0, #8
15570 LDR     R8, rnd
15580 AND     R8,R8, #7
15590 MOV     R6, #16<<8
15600 MOV     R5, #32
15610 ADR     R10, explosion_spray
15620 .bomb_loop1
15630 LDRB    R3,[R10], #1
15640 LDRB    R4,[R10], #1
15650 MOV     R3,R3, LSL #24
15660 MOV     R4,R4, LSL #24
15670 MOV     R3,R3, ASR #24
15680 MOV     R4,R4, ASR #24
15690 EOR     R3,R3, R8
15700 EOR     R4,R4, R8
15710 ADD     R6,R6,R3, ASL #8
15720 ADD     R6,R6,R4, ASL #8
15730 AND     R6,R6, #31<<8
15740 ADD     R3,R3,R3, ASR #1
15750 ADD     R4,R4,R4, ASR #1
15760 BL      add_cell
15770 CMP     R9, #24
15780 MOVEQ   R0, #9
15790 MOVGE   R5,R6
15800 ADD     R9,R9, #1
15810 CMP     R9, #32
15820 BLE     bomb_loop1
15830 MOV     R5, #1
15840 MOV     R0, #1
15850 MVN     R1, #14
15860 MOV     R2, #explosion%
15870 MOV     R3, #0
15880 SWI     "Sound_Control"
15890 MOV     R1, #0
15900 MOV     R5, #0
15910 .end_bomb
15920 :
15930 LDMFD   R13!,{R9,PC}
15940 :
15950 .adr_screenstore2
15960 EQUD    screenstore
15970 :
15980 .homing
15990 STMFD   R13!,{R9,R14}
16000 :
16010;MOV     R9,R6, LSR #8
16020;AND     R9,R9, #255
16030;SUB     R9,R9, #1
16040;BIC     R6,R6, #255<<8
16050;ORR     R6,R6,R9, LSL #8
16060;CMP     R9, #0
16070;MOVEQ   R1, #0
16080 :
16090 TST     R6, #1
16100 LDREQ   R10, p1_x
16110 LDREQ   R11, p1_y
16120 LDRNE   R10, p2_x
16130 LDRNE   R11, p2_y
16140 ADD     R10,R10, #xext%/2
16150 ADD     R11,R11, #yext%/2
16160 CMP     R2,R10, ASL #4
16170 SUBGT   R4,R4, #1
16180 ADDLT   R4,R4, #1
16190 CMP     R3,R11, ASL #4
16200 SUBGT   R5,R5, #1
16210 ADDLT   R5,R5, #1
16220 MOV     R0, #max_homing_speed%
16230 CMP     R4,R0
16240 SUBGT   R4,R0, #1
16250 RSB     R0,R0, #0
16260 CMP     R4,R0
16270 ADDLT   R4,R0, #1
16280 MOV     R0, #max_homing_speed%
16290 CMP     R5,R0
16300 SUBGT   R5,R0, #1
16310 RSB     R0,R0, #0
16320 CMP     R5,R0
16330 ADDLT   R5,R0, #1
16340 ADD     R2,R2,R4
16350 ADD     R3,R3,R5
16360 MOV     R7, #0
16370 CMN     R4, #10
16380 ADDLT   R7,R7, #2
16390 CMP     R4, #10
16400 ADDGT   R7,R7, #4
16410 CMN     R5, #10
16420 ADDLT   R7,R7, #12
16430 CMP     R5, #10
16440 ADDGT   R7,R7, #6
16450 :
16460 ADD     R7,R7, #3
16470 AND     R0,R6, #%110
16480 MOV     R0,R0, ASR #1
16490 ADD     R0,R0, #1
16500 AND     R0,R0, #%11
16510 CMP     R0, #%1
16520 ADDGT   R7,R7, #1
16530 BIC     R6,R6, #%110
16540 ORR     R6,R6,R0, ASL #1
16550 CMP     R7, #5
16560 MOVLT   R7, #21
16570 :
16580 STMFD   R13!,{R1-R6}
16590 :
16600 BL      check_death
16610 :
16620 MOV     R2,R2, ASR #4
16630 MOV     R3,R3, ASR #4
16640 RSB     R3,R3, #256
16650 LDR     R4, adr_screenstore
16660 LDR     R4,[R4]
16670 MOV     R5, #y_shift
16680 ADD     R4,R4,R2
16690 MLA     R4,R5,R3,R4
16700 LDRB    R0,[R4]
16710 CMP     R0, #0
16720 MOVEQ   R10, #1
16730 MOVNE   R10, #0
16740 BNE     no_homing
16750 RSB     R3,R3, #256
16760 MOV     R0,R7
16770 SUB     R1,R2, #2
16780 SUB     R2,R3, #2
16790 BL      plot_sprite_0804
16800;LDR     R0, adr_gun_fade
16810;MOV     R9,R6, LSR #8
16820;AND     R9,R9, #255
16830;CMP     R9, #255
16840;MOVGT   R9, #255
16850;LDRB    R0,[R0,R9]
16860;STRB    R0,[R4]
16870 .no_homing
16880 :
16890 LDMFD   R13!,{R1-R6}
16900 CMP     R10, #0
16910 BNE     end_homing
16920 MOV     R0, #11
16930 MOV     R1,R2, ASR #4
16940 MOV     R2,R3, ASR #4
16950 RSB     R2,R2, #256
16960 RSB     R3,R4, #0
16970 RSB     R4,R5, #0
16980 MOV     R3,R3, ASR #2
16990 MOV     R4,R4, ASR #2
17000 AND     R5,R6, #1
17010 BL      add_cell
17020 MOV     R5, #1
17030 MOV     R0, #1
17040 MVN     R1, #10
17050 MOV     R2, #explosion%
17060 MOV     R3, #0
17070 SWI     "Sound_Control"
17080 MOV     R1, #0
17090 .end_homing
17100 LDMFD   R13!,{R9,PC}
17110 :
17120 .seeking
17130 STMFD   R13!,{R9,R14}
17140 :
17150 TST     R6, #1
17160 LDREQ   R10, p1_x
17170 LDREQ   R11, p1_y
17180 LDRNE   R10, p2_x
17190 LDRNE   R11, p2_y
17200 ADD     R10,R10, #xext%/2
17210 ADD     R11,R11, #yext%/2
17220 CMP     R2,R10, ASL #4
17230 SUBGT   R4,R4, #1
17240 ADDLT   R4,R4, #1
17250 CMP     R3,R11, ASL #4
17260 SUBGT   R5,R5, #1
17270 ADDLT   R5,R5, #1
17280 MOV     R0, #16
17290 CMP     R4,R0
17300 SUBGT   R4,R4, #1
17310 RSB     R0,R0, #0
17320 CMP     R4,R0
17330 ADDLT   R4,R4, #1
17340 MOV     R0, #16
17350 CMP     R5,R0
17360 SUBGT   R5,R5, #1
17370 RSB     R0,R0, #0
17380 CMP     R5,R0
17390 ADDLT   R5,R5, #1
17400 :
17410 STMFD   R13!,{R1-R6}
17420 :
17430 BL      check_death
17440 :
17450 MOV     R2,R2, ASR #4
17460 MOV     R3,R3, ASR #4
17470 RSB     R3,R3, #256
17480 LDR     R4, adr_screenstore
17490 LDR     R4,[R4]
17500 MOV     R5, #y_shift
17510 ADD     R4,R4,R2
17520 MLA     R4,R5,R3,R4
17530 LDRB    R0,[R4]
17540 CMP     R0, #0
17550 MOVEQ   R10, #1
17560 BEQ     post_recalc
17570 MOV     R10, #0
17580 LDMFD   R13,{R1-R6}
17590 SUB     R2,R2,R4, ASL #1
17600 SUB     R3,R3,R5, ASL #1
17610 MOV     R2,R2, ASR #4
17620 MOV     R3,R3, ASR #4
17630 RSB     R3,R3, #256
17640 LDR     R4, adr_screenstore
17650 LDR     R4,[R4]
17660 MOV     R5, #y_shift
17670 ADD     R4,R4,R2
17680 MLA     R4,R5,R3,R4
17690 .post_recalc
17700 RSB     R3,R3, #256
17710 MOV     R0, #4
17720 SUB     R1,R2, #2
17730 SUB     R2,R3, #2
17740 BL      plot_sprite_0804
17750 .no_seeking
17760 :
17770 LDMFD   R13!,{R1-R6}
17780 CMP     R10, #0
17790 ADDNE   R2,R2,R4
17800 ADDNE   R3,R3,R5
17810 SUBEQ   R2,R2,R4, ASL #1
17820 SUBEQ   R3,R3,R5, ASL #1
17830 MOVEQ   R4, #0
17840 MOVEQ   R5, #0
17850 LDMFD   R13!,{R9,PC}
17860 :
17870 .vertical
17880 STMFD   R13!,{R9,R14}
17890 :
17900 ADD     R2,R2,R4
17910 ADD     R3,R3,R5
17920 :
17930 STMFD   R13!,{R1-R6}
17940 :
17950 BL      check_death
17960 :
17970 MOV     R2,R2, ASR #4
17980 MOV     R3,R3, ASR #4
17990 RSB     R3,R3, #256
18000 LDR     R4, adr_screenstore
18010 LDR     R4,[R4]
18020 MOV     R5, #y_shift
18030 ADD     R4,R4,R2
18040 MLA     R4,R5,R3,R4
18050 LDRB    R0,[R4]
18060 CMP     R0, #0
18070 MOVEQ   R10, #1
18080 MOVNE   R10, #0
18090 BNE     no_vert
18100 RSB     R3,R3, #256
18110 MOV     R0, #22
18120 SUB     R1,R2, #2
18130 SUB     R2,R3, #2
18140 BL      plot_sprite_0804
18150;LDR     R0, adr_gun_fade
18160;MOV     R9, #255
18170;LDRB    R0,[R0,R9]
18180;STRB    R0,[R4]
18190;ADD     R4,R4, #320
18200;SUB     R4,R4, #1
18210;STRB    R0,[R4]
18220;STRB    R0,[R4, #2]
18230 .no_vert
18240 :
18250 LDMFD   R13!,{R1-R6}
18260 CMP     R10, #0
18270 MOVEQ   R1, #0
18280 LDMFD   R13!,{R9,PC}
18290 :
18300 .check_death
18310 TST     R6, #1
18320 LDREQ   R10, p1_x
18330 LDREQ   R11, p1_y
18340 LDRNE   R10, p2_x
18350 LDRNE   R11, p2_y
18360 MOV     R9,R2, ASR #4
18370 SUB     R10,R9,R10
18380 CMN     R10, #2
18390 BLT     not_dead
18400 CMP     R10, #xext%+2
18410 BGT     not_dead
18420 MOV     R9,R3, ASR #4
18430 SUB     R11,R9,R11
18440 CMN     R11, #2
18450 BLT     not_dead
18460 CMP     R11, #yext%+2
18470 BGT     not_dead
18480 TST     R6, #1
18490 BNE     dead_player2
18500 LDR     R0, player1_alive
18510 CMP     R0, #1
18520 BEQ     not_dead
18530 MOV     R0, #1
18540 STR     R0, player1_alive
18550 MOV     R0, #3
18560 MVN     R1, #14
18570 MOV     R2, #scream%
18580 MOV     R3, #0
18590 SWI     "Sound_Control"
18600 B       not_dead
18610 .dead_player2
18620 LDR     R0, player2_alive
18630 CMP     R0, #1
18640 BEQ     not_dead
18650 MOV     R0, #1
18660 STR     R0, player2_alive
18670 MOV     R0, #3
18680 MVN     R1, #14
18690 MOV     R2, #scream%
18700 MOV     R3, #0
18710 SWI     "Sound_Control"
18720 .not_dead
18730 MOV     PC,R14
18740 :
18750 .player1_alive
18760 EQUD    0
18770 .player2_alive
18780 EQUD    0
18790 :
18800 .explosion_spray
18810 ]
18820 FOR a%=1 TO 64
18830 r%=RND(20)+28
18840 ang%=RND(360)
18850 x%=COSRAD(ang%)*r%
18860 y%=SINRAD(ang%)*r%
18870 IF x%<0 THEN x%=(x% OR 128) AND 255
18880 IF y%<0 THEN y%=(y% OR 128) AND 255
18890 [OPT pass%
18900 EQUB    x%
18910 EQUB    y%
18920 ]
18930 NEXT
18940 [OPT pass%
18950 ALIGN
18960 :
18970 .end_game
18980 EQUD    0
18990 .adr_screenstore
19000 EQUD    screenstore
19010 .adr_clist2
19020 EQUD    clist%
19030 :
19040 :
19050 :
19060 .add_cell
19070 STMFD   R13!,{R0-R12,R14}
19080 :
19090 RSB     R2,R2, #256
19100 MOV     R1,R1, ASL #4
19110 MOV     R2,R2, ASL #4
19120 :
19130 LDR     R9, adr_clist2
19140 .sloop1
19150 LDR     R8,[R9]
19160 CMP     R8, #0
19170 STMEQIA R9,{R0-R5}
19180 BEQ     done_cell
19190 ADD     R9,R9, #32
19200 BGE     sloop1
19210 .done_cell
19220 :
19230 LDMFD   R13!,{R0-R12,PC}
19240 :
19250 :
19260 :
19270 .add_goodie
19280 STMFD   R13!,{R0-R12,R14}
19290 :
19300 LDR     R9, rnd
19310 MOV     R9,R9, LSR #24
19320 AND     R0,R9, #255
19330 .goodie_loop
19340 CMP     R0, #8
19350 SUBGT   R0,R0, #8
19360 BGT     goodie_loop
19370 ADD     R0,R0, #4
19380 AND     R1,R9, #%111000
19390 ADR     R2, positions
19400 ADD     R2,R2,R1
19410 LDR     R1,[R2]
19420 LDR     R2,[R2, #4]
19430 MOV     R3, #320
19440 BL      add_sprite
19450 :
19460 LDMFD   R13!,{R0-R12,PC}
19470 :
19480 .positions
19490 ]
19500 FOR a%=0 TO 8
19510 [OPTpass%
19520 EQUD    0
19530 EQUD    0
19540 ]
19550 NEXT
19560 [OPT pass%
19570 :
19580 .as_adr_slist
19590 EQUD    slist%
19600 :
19610 .add_sprite
19620 STMFD   R13!,{R0-R12,R14}
19630 :
19640 LDR     R9, as_adr_slist
19650 .sloop1
19660 LDR     R8,[R9]
19670 CMP     R8, #0
19680 ADDNE   R9,R9, #16
19690 BNE     sloop1
19700 STMEQIA R9,{R0-R3}
19710 BEQ     done_cell
19720 .done_cell
19730 :
19740 LDMFD   R13!,{R0-R12,PC}
19750 :
19760 .p2_fire
19770 EQUD    0
19780 .explode_2
19790 EQUD    0
19800 :
19810 .player2
19820 STMFD   R13!,{R9,R14}
19830 :
19840 CMP     R6, #32
19850 MOVLT   R6, #32
19860 CMP     R7, #32
19870 MOVLT   R7, #32
19880 CMP     R6, #1280-80
19890 MOVGT   R6, #1280-80
19900 CMP     R7, #1024-80
19910 MOVGT   R7, #1024-80
19920 :
19930 LDR     R0, player2_alive
19940 CMP     R0, #0
19950 BEQ     play_player2
19960 BNE     explode_player2
19970 :
19980 .explode_player2
19990 :
20000 LDR     R0, explode_2
20010 ADD     R0,R0, #1
20020 STR     R0, explode_2
20030 CMP     R0, #7<<3
20040 STRGT   R0, end_game
20050 LDMGTFD R13!,{R9,PC}
20060 CMP     R0, #7<<1
20070 LDMGTFD R13!,{R9,PC}
20080 MOV     R0,R0, ASR #1
20090 MOV     R1,R6, ASR #2
20100 MOV     R2,R7, ASR #2
20110 SUB     R1,R1, #4
20120 BL      plot_sprite_2016
20130 :
20140 LDMFD   R13!,{R9,PC}
20150 :
20160 .play_player2
20170 :
20180 MOV     R1,R6, LSR #2
20190 MOV     R2,R7, LSR #2
20200 ADD     R1,R1, #xext%/2
20210 BL      read_point
20220 CMP     R0, #0
20230 SUBEQ   R7,R7, #4
20240 :
20250 MOV     R1,R6, LSR #2
20260 MOV     R2,R7, LSR #2
20270 ADD     R1,R1, #xext%/3
20280 BL      read_point
20290 CMP     R0, #0
20300 ADDNE   R7,R7, #4
20310 :
20320 MOV     R1,R6, LSR #2
20330 MOV     R2,R7, LSR #2
20340 ADD     R1,R1, #xext%/3*2
20350 BL      read_point
20360 CMP     R0, #0
20370 ADDNE   R7,R7, #4
20380 :
20390 AND     R10,R8, #255<<8
20400 MOV     R10,R10, LSR #8
20410 :
20420 MOV     R1,R6, LSR #2
20430 MOV     R2,R7, LSR #2
20440 ADD     R1,R1, #xext%+1
20450 ADD     R2,R2, #4
20460 BL      read_point
20470 CMP     R0, #0
20480 BNE     p2_not_right
20490 MOV     R1,R6, LSR #2
20500 MOV     R2,R7, LSR #2
20510 ADD     R1,R1, #xext%
20520 ADD     R2,R2, #yext%-2
20530 BL      read_point
20540 CMP     R0, #0
20550 BNE     p2_not_right
20560 MOV     R0, #129
20570 MOV     R1, #0
20580 SUB     R1,R1, #124
20590 MOV     R2, #255
20600 SWI     "OS_Byte"
20610 CMP     R1, #255
20620 BNE     p2_not_right
20630 ADD     R10,R10, #4
20640 BIC     R8,R8, #1
20650 .p2_not_right
20660 :
20670 MOV     R1,R6, LSR #2
20680 MOV     R2,R7, LSR #2
20690 SUB     R1,R1, #1
20700 ADD     R2,R2, #4
20710 BL      read_point
20720 CMP     R0, #0
20730 BNE     p2_not_left
20740 MOV     R1,R6, LSR #2
20750 MOV     R2,R7, LSR #2
20760 SUB     R1,R1, #1
20770 ADD     R2,R2, #yext%-2
20780 BL      read_point
20790 CMP     R0, #0
20800 BNE     p2_not_left
20810 MOV     R0, #129
20820 MOV     R1, #0
20830 SUB     R1,R1, #123
20840 MOV     R2, #255
20850 SWI     "OS_Byte"
20860 CMP     R1, #255
20870 BNE     p2_not_left
20880 SUB     R10,R10, #4
20890 ORR     R8,R8, #1
20900 .p2_not_left
20910 :
20920 CMP     R10, #128
20930 BEQ     p2_sideways
20940 BGT     p2_right
20950 MOV     R1,R6, LSR #2
20960 MOV     R2,R7, LSR #2
20970 SUB     R1,R1, #1
20980 ADD     R2,R2, #2
20990 BL      read_point
21000 CMP     R0, #0
21010 MOVNE   R10, #128
21020 MOV     R1,R6, LSR #2
21030 MOV     R2,R7, LSR #2
21040 SUB     R1,R1, #1
21050 ADD     R2,R2, #yext%-2
21060 BL      read_point
21070 CMP     R0, #0
21080 MOVNE   R10, #128
21090 B       p2_sideways
21100 .p2_right
21110 MOV     R1,R6, LSR #2
21120 MOV     R2,R7, LSR #2
21130 ADD     R1,R1, #xext%
21140 ADD     R2,R2, #2
21150 BL      read_point
21160 CMP     R0, #0
21170 MOVNE   R10, #128
21180 MOV     R1,R6, LSR #2
21190 MOV     R2,R7, LSR #2
21200 ADD     R1,R1, #xext%
21210 ADD     R2,R2, #yext%-2
21220 BL      read_point
21230 CMP     R0, #0
21240 MOVNE   R10, #128
21250 B       p2_sideways
21260 .p2_sideways
21270 CMP     R10, #128+25*2
21280 MOVGT   R10, #128+25*2
21290 CMP     R10, #128-25*2
21300 MOVLT   R10, #128-25*2
21310 CMP     R10, #128
21320 ADDLT   R10,R10, #1
21330 SUBGT   R10,R10, #1
21340 BIC     R8,R8, #255<<8
21350 ORR     R8,R8,R10, LSL #8
21360 SUB     R10,R10, #128
21370 ADD     R6,R6,R10, ASR #3
21380 :
21390 AND     R10,R8, #255<<16
21400 MOV     R10,R10, LSR #16
21410 :
21420 MOV     R1,R6, LSR #2
21430 MOV     R2,R7, LSR #2
21440 ADD     R1,R1, #xext%/2
21450 ADD     R2,R2, #yext%
21460 BL      read_point
21470 CMP     R0, #0
21480 BNE     p2_not_up
21490;MOV     R1,R6, LSR #2
21500;MOV     R2,R7, LSR #2
21510;ADD     R1,R1, #xext%/2
21520;ADD     R2,R2, #yext%
21530;BL      read_point
21540;CMP     R0, #0
21550;BNE     p2_not_up
21560 MOV     R0, #129
21570 MOV     R1, #0
21580 SUB     R1,R1, #27
21590 MOV     R2, #255
21600 SWI     "OS_Byte"
21610 CMP     R1, #255
21620 ADDEQ   R10,R10, #4
21630 .p2_not_up
21640 :
21650 MOV     R1,R6, LSR #2
21660 MOV     R2,R7, LSR #2
21670 ADD     R1,R1, #xext%-2
21680 BL      read_point
21690 CMP     R0, #0
21700 BNE     p2_not_down
21710 MOV     R1,R6, LSR #2
21720 MOV     R2,R7, LSR #2
21730 ADD     R1,R1, #2
21740 BL      read_point
21750 CMP     R0, #0
21760 BNE     p2_not_down
21770 MOV     R0, #129
21780 MOV     R1, #0
21790 SUB     R1,R1, #109
21800 MOV     R2, #255
21810 SWI     "OS_Byte"
21820 CMP     R1, #255
21830 SUBEQ   R10,R10, #2
21840 .p2_not_down
21850 :
21860 SUB     R10,R10, #1
21870 :
21880 CMP     R10, #128
21890 BEQ     p2_ud
21900 BGT     p2_up
21910 MOV     R1,R6, LSR #2
21920 MOV     R2,R7, LSR #2
21930 ADD     R1,R1, #xext%/2
21940 SUB     R2,R2, #1
21950 BL      read_point
21960 CMP     R0, #0
21970 MOVNE   R10, #128
21980 B       p2_ud
21990 .p2_up
22000 MOV     R1,R6, LSR #2
22010 MOV     R2,R7, LSR #2
22020 ADD     R1,R1, #xext%/2+2
22030 ADD     R2,R2, #yext%
22040 BL      read_point
22050 CMP     R0, #0
22060 MOVNE   R10, #128
22070 MOV     R1,R6, LSR #2
22080 MOV     R2,R7, LSR #2
22090 ADD     R1,R1, #xext%/2-2
22100 ADD     R2,R2, #yext%
22110 BL      read_point
22120 CMP     R0, #0
22130 MOVNE   R10, #128
22140 B       p2_ud
22150 .p2_ud
22160 CMP     R10, #128+11*4
22170 MOVGT   R10, #128+11*4
22180 CMP     R10, #128-8*4
22190 MOVLT   R10, #128-8*4
22200 CMP     R10, #128
22210 BIC     R8,R8, #255<<16
22220 ORR     R8,R8,R10, LSL #16
22230 SUB     R10,R10, #128
22240 ADD     R7,R7,R10, ASR #2
22250 :
22260 LDR     R0, adr_p2_weapon
22270 LDR     R0,[R0]
22280 CMP     R0, #2
22290 BEQ     p2_fire_pistol
22300 CMP     R0, #3
22310 BEQ     p2_fire_gun
22320 CMP     R0, #4
22330 BEQ     p2_fire_mortar
22340 CMP     R0, #5
22350 BEQ     p2_fire_homing
22360 CMP     R0, #6
22370 BEQ     p2_fire_seeking
22380 CMP     R0, #7
22390 BEQ     p2_fire_vertical
22400 CMP     R0, #8
22410 BEQ     p2_fire_flame
22420 CMP     R0, #9
22430 BEQ     p2_fire_bomb
22440 CMP     R0, #10
22450 BEQ     p2_fire_glue
22460 :
22470 .p2_fire_pistol
22480 LDR     R0, p2_fire
22490 CMP     R0, #0
22500 BEQ     p2_pistol_shot
22510 MOV     R0, #129
22520 MOV     R1, #0
22530 SUB     R1,R1, #59
22540 MOV     R2, #255
22550 SWI     "OS_Byte"
22560 CMP     R1, #255
22570 MOVNE   R0, #0
22580 STRNE   R0, p2_fire
22590 B       p2_not_fire_pistol
22600 .p2_pistol_shot
22610 MOV     R0, #129
22620 MOV     R1, #0
22630 SUB     R1,R1, #59
22640 MOV     R2, #255
22650 SWI     "OS_Byte"
22660 CMP     R1, #255
22670 BNE     p2_not_fire_pistol
22680 MOV     R0, #2
22690 MOV     R1,R6, LSR #2
22700 MOV     R2,R7, LSR #2
22710 ADD     R1,R1, #xext%
22720 ADD     R2,R2, #yext%/4*2
22730 RSB     R2,R2, #256
22740 MOV     R3, #80
22750 MOV     R4, #0
22760 MOV     R5, #0
22770 TST     R8, #1
22780 RSBNE   R3,R3, #0
22790 SUBNE   R1,R1, #xext%
22800 BL      add_cell
22810 MOV     R5, #2
22820 MOV     R0, #1
22830 STR     R0, p2_fire
22840 MOV     R0, #7
22850 MVN     R1, #14
22860 MOV     R2, #12800
22870 MOV     R3, #0
22880 SWI     "Sound_Control"
22890 .p2_not_fire_pistol
22900 B       p2_end_fire
22910 :
22920 .p2_fire_gun
22930 MOV     R0, #129
22940 MOV     R1, #0
22950 SUB     R1,R1, #59
22960 MOV     R2, #255
22970 SWI     "OS_Byte"
22980 CMP     R1, #255
22990 BNE     p2_not_fire_gun
23000 LDR     R0, p2_fire
23010 ADD     R0,R0, #1
23020 AND     R0,R0, #%11
23030 STR     R0, p2_fire
23040 TST     R0, #%11
23050 BNE     p2_not_fire_gun
23060 MOV     R0, #3
23070 MOV     R1,R6, LSR #2
23080 MOV     R2,R7, LSR #2
23090 ADD     R1,R1, #xext%
23100 ADD     R2,R2, #yext%/4*2
23110 RSB     R2,R2, #256
23120 MOV     R3, #80
23130 LDR     R5, adr_rnd
23140 LDR     R5,[R5]
23150 AND     R4,R5, #%1111
23160 SUB     R4,R4, #%0111
23170 AND     R5,R5, #%110000
23180 MOV     R5,R5, LSR #4
23190 ADD     R1,R1,R5
23200 MOV     R5, #0
23210 TST     R8, #1
23220 RSBNE   R3,R3, #0
23230 SUBNE   R1,R1, #xext%+2
23240 BL      add_cell
23250 MOV     R5, #2
23260 MOV     R0, #8
23270 MVN     R1, #12
23280 MOV     R2, #12800
23290 MOV     R3, #0
23300 SWI     "Sound_Control"
23310 .p2_not_fire_gun
23320 B       p2_end_fire
23330 :
23340 .p2_fire_mortar
23350;LDR     R0, p2_fire
23360;CMP     R0, #0
23370;BEQ     p2_mortar_shot
23380;MOV     R0, #129
23390;MOV     R1, #0
23400;SUB     R1,R1, #59
23410;MOV     R2, #255
23420;SWI     "OS_Byte"
23430;CMP     R1, #255
23440;MOVNE   R0, #0
23450;STRNE   R0, p2_fire
23460;B       p2_not_fire_mortar
23470;.p2_mortar_shot
23480 MOV     R0, #129
23490 MOV     R1, #0
23500 SUB     R1,R1, #59
23510 MOV     R2, #255
23520 SWI     "OS_Byte"
23530 CMP     R1, #255
23540 BNE     p2_not_fire_mortar
23550 LDR     R0, p2_fire
23560 ADD     R0,R0, #1
23570 AND     R0,R0, #%11111
23580 STR     R0, p2_fire
23590 TST     R0, #%11111
23600 BNE     p2_not_fire_mortar
23610 MOV     R0, #4
23620 MOV     R1,R6, LSR #2
23630 MOV     R2,R7, LSR #2
23640 ADD     R1,R1, #xext%
23650 ADD     R2,R2, #yext%/4*2
23660 RSB     R2,R2, #256
23670 MOV     R3, #30
23680 MOV     R4, #40
23690 MOV     R5, #0
23700 TST     R8, #1
23710 RSBNE   R3,R3, #0
23720 SUBNE   R1,R1, #xext%
23730 BL      add_cell
23740 MOV     R5, #2
23750 MOV     R0, #1
23760 STR     R0, p2_fire
23770 .p2_not_fire_mortar
23780 B       p2_end_fire
23790 :
23800 .p2_fire_homing
23810 .p2_homing_shot
23820 MOV     R0, #129
23830 MOV     R1, #0
23840 SUB     R1,R1, #59
23850 MOV     R2, #255
23860 SWI     "OS_Byte"
23870 CMP     R1, #255
23880 BNE     p2_not_fire_homing
23890 LDR     R0, p2_fire
23900 ADD     R0,R0, #1
23910 AND     R0,R0, #%1111
23920 STR     R0, p2_fire
23930 TST     R0, #%1111
23940 BNE     p2_not_fire_homing
23950 MOV     R0, #5
23960 MOV     R1,R6, LSR #2
23970 MOV     R2,R7, LSR #2
23980 ADD     R1,R1, #xext%
23990 ADD     R2,R2, #yext%/4*2
24000 RSB     R2,R2, #256
24010 MOV     R3, #64
24020 LDR     R4, adr_rnd
24030 LDR     R4,[R4]
24040 AND     R4,R4, #15
24050 SUB     R4,R4, #7
24060 MOV     R5, #224<<8          ; Homing in on player 1
24070 TST     R8, #1
24080 RSBNE   R3,R3, #0
24090 SUBNE   R1,R1, #xext%
24100 BL      add_cell
24110 MOV     R5, #7
24120 MOV     R0, #8
24130 MVN     R1, #10
24140 MOV     R2, #8000
24150 MOV     R3, #0
24160 SWI     "Sound_Control"
24170 .p2_not_fire_homing
24180 B       p2_end_fire
24190 :
24200 .p2_fire_seeking
24210 .p2_seeking_shot
24220 MOV     R0, #129
24230 MOV     R1, #0
24240 SUB     R1,R1, #59
24250 MOV     R2, #255
24260 SWI     "OS_Byte"
24270 CMP     R1, #255
24280 BNE     p2_not_fire_seeking
24290 MOV     R0, #6
24300 MOV     R1,R6, LSR #2
24310 MOV     R2,R7, LSR #2
24320 ADD     R1,R1, #xext%*3/2
24330 ADD     R2,R2, #yext%/4*2
24340 RSB     R2,R2, #256
24350 MOV     R3, #32
24360 MOV     R4, #0
24370 MOV     R5, #0               ; Homing in on player 1
24380 TST     R8, #1
24390 RSBNE   R3,R3, #0
24400 SUBNE   R1,R1, #xext%*2
24410 BL      add_cell
24420 MOV     R5, #2
24430 MOV     R9, #2
24440 LDR     R10, adr_p2_weapon
24450 STR     R9,[R10]
24460 MOV     R0, #8
24470 MVN     R1, #14
24480 MOV     R2, #5120
24490 MOV     R3, #0
24500 SWI     "Sound_Control"
24510 MOV     R0, #1
24520 STR     R0, p2_fire
24530 .p2_not_fire_seeking
24540 B       p2_end_fire
24550 :
24560 .p2_fire_vertical
24570 LDR     R0, p2_fire
24580 CMP     R0, #0
24590 BEQ     p2_vertical_shot
24600 MOV     R0, #129
24610 MOV     R1, #0
24620 SUB     R1,R1, #59
24630 MOV     R2, #255
24640 SWI     "OS_Byte"
24650 CMP     R1, #255
24660 MOVNE   R0, #0
24670 STRNE   R0, p2_fire
24680 B       p2_not_fire_vertical
24690 .p2_vertical_shot
24700 MOV     R0, #129
24710 MOV     R1, #0
24720 SUB     R1,R1, #59
24730 MOV     R2, #255
24740 SWI     "OS_Byte"
24750 CMP     R1, #255
24760 BNE     p2_not_fire_vertical
24770 MOV     R0, #7
24780 MOV     R1,R6, LSR #2
24790 MOV     R2,R7, LSR #2
24800 ADD     R1,R1, #xext%
24810 ADD     R2,R2, #yext%/4*2
24820 RSB     R2,R2, #256
24830 MOV     R3, #0
24840 MOV     R4, #64
24850 MOV     R5, #0
24860 TST     R8, #1
24870 RSBNE   R3,R3, #0
24880 SUBNE   R1,R1, #xext%
24890 BL      add_cell
24900 MOV     R5, #2
24910 MOV     R0, #1
24920 STR     R0, p2_fire
24930 MOV     R0, #7
24940 MVN     R1, #14
24950 MOV     R2, #10240
24960 MOV     R3, #0
24970 SWI     "Sound_Control"
24980 .p2_not_fire_vertical
24990 B       p2_end_fire
25000 :
25010 .p2_fire_flame
25020 MOV     R0, #129
25030 MOV     R1, #0
25040 SUB     R1,R1, #59
25050 MOV     R2, #255
25060 SWI     "OS_Byte"
25070 CMP     R1, #255
25080 BNE     p2_not_fire_flame
25090 MOV     R0, #10
25100 MOV     R1,R6, LSR #2
25110 MOV     R2,R7, LSR #2
25120 ADD     R1,R1, #xext%
25130 ADD     R2,R2, #yext%/4*2
25140 RSB     R2,R2, #256
25150 MOV     R3, #72
25160 LDR     R4, adr_rnd
25170 LDR     R4,[R4]
25180 AND     R4,R4, #7
25190 SUB     R4,R4, #1
25200 MOV     R5,R5, LSR #4
25210 ADD     R1,R1,R5
25220 MOV     R5, #0
25230 TST     R8, #1
25240 RSBNE   R3,R3, #0
25250 SUBNE   R1,R1, #xext%
25260 BL      add_cell
25270 .p2_not_fire_flame
25280 B       p2_end_fire
25290 :
25300 .p2_fire_bomb
25310 MOV     R0, #129
25320 MOV     R1, #0
25330 SUB     R1,R1, #59
25340 MOV     R2, #255
25350 SWI     "OS_Byte"
25360 CMP     R1, #255
25370 BNE     p2_not_fire_bomb
25380 LDR     R0, p2_fire
25390 ADD     R0,R0, #1
25400 CMP     R0, #10
25410 MOVGT   R0, #0
25420 STR     R0, p2_fire
25430 CMP     R0, #0
25440 BNE     p2_not_fire_bomb
25450 MOV     R0, #12
25460 MOV     R1,R6, LSR #2
25470 MOV     R2,R7, LSR #2
25480 ADD     R1,R1, #xext%+1
25490 ADD     R2,R2, #yext%/4*2
25500 RSB     R2,R2, #256
25510 MOV     R3, #40
25520 MOV     R4, #40
25530 MOV     R5, #bomb_pause%
25540 TST     R8, #1
25550 RSBNE   R3,R3, #0
25560 SUBNE   R1,R1, #xext%+2
25570 BL      add_cell
25580 MOV     R5, #2
25590 MOV     R0, #1
25600 STR     R0, p2_fire
25610 .p2_not_fire_bomb
25620 B       p2_end_fire
25630 :
25640 .p2_fire_glue
25650 MOV     R0, #129
25660 MOV     R1, #0
25670 SUB     R1,R1, #59
25680 MOV     R2, #255
25690 SWI     "OS_Byte"
25700 CMP     R1, #255
25710 BNE     p2_not_fire_glue
25720 LDR     R0, p2_fire
25730 ADD     R0,R0, #1
25740 CMP     R0, #10
25750 MOVGT   R0, #0
25760 STR     R0, p2_fire
25770 CMP     R0, #0
25780 BNE     p2_not_fire_glue
25790 MOV     R0, #13
25800 MOV     R1,R6, LSR #2
25810 MOV     R2,R7, LSR #2
25820 ADD     R1,R1, #xext%+1
25830 ADD     R2,R2, #yext%/4*2
25840 RSB     R2,R2, #256
25850 MOV     R3, #64
25860 LDR     R5, adr_rnd
25870 LDR     R5,[R5]
25880 AND     R4,R5, #255
25890 SUB     R4,R4, #7
25900 MOV     R5, #0
25910 TST     R8, #1
25920 RSBNE   R3,R3, #0
25930 SUBNE   R1,R1, #xext%+2
25940 BL      add_cell
25950 MOV     R5, #2
25960 MOV     R0, #1
25970 STR     R0, p2_fire
25980 .p2_not_fire_glue
25990 B       p2_end_fire
26000 :
26010 .p2_end_fire
26020 :
26030 MOV     R0, #1
26040 MOV     R1,R6, LSR #2
26050 MOV     R2,R7, LSR #2
26060 TST     R8, #1
26070 ADDNE   R1,R1, #xext%
26080 ADD     R2,R2, #yext%/4
26090 RSB     R2,R2, #256
26100 LDR     R3, adr_rnd
26110 LDR     R3,[R3]
26120 TST     R3, #%10000
26130 SUBEQ   R2,R2, #1
26140 AND     R3,R3, #15
26150 SUB     R3,R3, #7
26160 MOV     R4, #0
26170 SUB     R4,R4, #40
26180 MOV     R5, #32
26190 BL      add_cell
26200 MOV     R5, #2
26210 :
26220 AND     R0,R8, #1
26230 ADD     R0,R0, #2
26240 MOV     R1,R6, LSR #2
26250 MOV     R2,R7, LSR #2
26260 LDR     R3, adr_p2_x
26270 STR     R1,[R3]
26280 LDR     R3, adr_p2_y
26290 STR     R2,[R3]
26300 BL      plot_sprite_1616
26310 :
26320 LDMFD   R13!,{R9,PC}
26330 :
26340 .adr_p2_x
26350 EQUD    p2_x
26360 .adr_p2_y
26370 EQUD    p2_y
26380 .adr_p2_weapon
26390 EQUD    p2_weapon
26400 .adr_p1_weapon
26410 EQUD    p1_weapon
26420 .p1_fire
26430 EQUD    0
26440 .explode_1
26450 EQUD    0
26460 :
26470 .player1
26480 STMFD   R13!,{R9,R14}
26490 :
26500 CMP     R6, #32
26510 MOVLT   R6, #32
26520 CMP     R7, #32
26530 MOVLT   R7, #32
26540 CMP     R6, #1280-64
26550 MOVGT   R6, #1280-64
26560 CMP     R7, #1024-64
26570 MOVGT   R7, #1024-64
26580 :
26590 LDR     R0, player1_alive
26600 CMP     R0, #0
26610 BEQ     play_player1
26620 BNE     explode_player1
26630 :
26640 .explode_player1
26650 LDR     R0, explode_1
26660 ADD     R0,R0, #1
26670 STR     R0, explode_1
26680 CMP     R0, #7<<3
26690 STRGT   R0, end_game
26700 LDMGTFD R13!,{R9,PC}
26710 CMP     R0, #7<<1
26720 LDMGTFD R13!,{R9,PC}
26730 MOV     R0,R0, ASR #1
26740 MOV     R1,R6, ASR #2
26750 MOV     R2,R7, ASR #2
26760 SUB     R1,R1, #4
26770 BL      plot_sprite_2016
26780 :
26790 LDMFD   R13!,{R9,PC}
26800 :
26810 .play_player1
26820 :
26830 MOV     R1,R6, LSR #2
26840 MOV     R2,R7, LSR #2
26850 ADD     R1,R1, #xext%/2
26860 BL      read_point
26870 CMP     R0, #0
26880 SUBEQ   R7,R7, #4
26890 :
26900 MOV     R1,R6, LSR #2
26910 MOV     R2,R7, LSR #2
26920 ADD     R1,R1, #xext%/3
26930 BL      read_point
26940 CMP     R0, #0
26950 ADDNE   R7,R7, #4
26960 :
26970 MOV     R1,R6, LSR #2
26980 MOV     R2,R7, LSR #2
26990 ADD     R1,R1, #xext%/3*2
27000 BL      read_point
27010 CMP     R0, #0
27020 ADDNE   R7,R7, #4
27030 :
27040 AND     R10,R8, #255<<8
27050 MOV     R10,R10, LSR #8
27060 :
27070 MOV     R1,R6, LSR #2
27080 MOV     R2,R7, LSR #2
27090 ADD     R1,R1, #xext%-1
27100 ADD     R2,R2, #4
27110 BL      read_point
27120 CMP     R0, #0
27130 BNE     p1_not_right
27140 MOV     R1,R6, LSR #2
27150 MOV     R2,R7, LSR #2
27160 ADD     R1,R1, #xext%
27170 ADD     R2,R2, #yext%-2
27180 BL      read_point
27190 CMP     R0, #0
27200 BNE     p1_not_right
27210 MOV     R0, #129
27220 MOV     R1, #0
27230 SUB     R1,R1, #67
27240 MOV     R2, #255
27250 SWI     "OS_Byte"
27260 CMP     R1, #255
27270 BNE     p1_not_right
27280 ADD     R10,R10, #4
27290 BIC     R8,R8, #1
27300 .p1_not_right
27310 :
27320 MOV     R1,R6, LSR #2
27330 MOV     R2,R7, LSR #2
27340 SUB     R1,R1, #1
27350 ADD     R2,R2, #4
27360 BL      read_point
27370 CMP     R0, #0
27380 BNE     p1_not_left
27390 MOV     R1,R6, LSR #2
27400 MOV     R2,R7, LSR #2
27410 SUB     R1,R1, #1
27420 ADD     R2,R2, #yext%-2
27430 BL      read_point
27440 CMP     R0, #0
27450 BNE     p1_not_left
27460 MOV     R0, #129
27470 MOV     R1, #0
27480 SUB     R1,R1, #98
27490 MOV     R2, #255
27500 SWI     "OS_Byte"
27510 CMP     R1, #255
27520 BNE     p1_not_left
27530 SUB     R10,R10, #4
27540 ORR     R8,R8, #1
27550 .p1_not_left
27560 :
27570 CMP     R10, #128
27580 BEQ     p1_sideways
27590 BGT     p1_right
27600 MOV     R1,R6, LSR #2
27610 MOV     R2,R7, LSR #2
27620 SUB     R1,R1, #1
27630 ADD     R2,R2, #2
27640 BL      read_point
27650 CMP     R0, #0
27660 MOVNE   R10, #128
27670 MOV     R1,R6, LSR #2
27680 MOV     R2,R7, LSR #2
27690 SUB     R1,R1, #1
27700 ADD     R2,R2, #yext%-2
27710 BL      read_point
27720 CMP     R0, #0
27730 MOVNE   R10, #128
27740 B       p1_sideways
27750 .p1_right
27760 MOV     R1,R6, LSR #2
27770 MOV     R2,R7, LSR #2
27780 ADD     R1,R1, #xext%
27790 ADD     R2,R2, #2
27800 BL      read_point
27810 CMP     R0, #0
27820 MOVNE   R10, #128
27830 MOV     R1,R6, LSR #2
27840 MOV     R2,R7, LSR #2
27850 ADD     R1,R1, #xext%
27860 ADD     R2,R2, #yext%-2
27870 BL      read_point
27880 CMP     R0, #0
27890 MOVNE   R10, #128
27900 B       p1_sideways
27910 .p1_sideways
27920 CMP     R10, #128+25*2
27930 MOVGT   R10, #128+25*2
27940 CMP     R10, #128-25*2
27950 MOVLT   R10, #128-25*2
27960 CMP     R10, #128
27970 ADDLT   R10,R10, #1
27980 SUBGT   R10,R10, #1
27990 BIC     R8,R8, #255<<8
28000 ORR     R8,R8,R10, LSL #8
28010 SUB     R10,R10, #128
28020 ADD     R6,R6,R10, ASR #3
28030 :
28040 AND     R10,R8, #255<<16
28050 MOV     R10,R10, LSR #16
28060 :
28070 MOV     R1,R6, LSR #2
28080 MOV     R2,R7, LSR #2
28090 ADD     R1,R1, #xext%/2+1
28100 ADD     R2,R2, #yext%
28110 BL      read_point
28120 CMP     R0, #0
28130 BNE     p1_not_up
28140 MOV     R1,R6, LSR #2
28150 MOV     R2,R7, LSR #2
28160 ADD     R1,R1, #xext%/2-1
28170 ADD     R2,R2, #yext%
28180 BL      read_point
28190 CMP     R0, #0
28200 BNE     p1_not_up
28210 MOV     R0, #129
28220 MOV     R1, #0
28230 SUB     R1,R1, #68
28240 MOV     R2, #255
28250 SWI     "OS_Byte"
28260 CMP     R1, #255
28270 ADDEQ   R10,R10, #4
28280 .p1_not_up
28290 :
28300 MOV     R1,R6, LSR #2
28310 MOV     R2,R7, LSR #2
28320 ADD     R1,R1, #xext%-2
28330 BL      read_point
28340 CMP     R0, #0
28350 BNE     p1_not_down
28360 MOV     R1,R6, LSR #2
28370 MOV     R2,R7, LSR #2
28380 ADD     R1,R1, #2
28390 BL      read_point
28400 CMP     R0, #0
28410 BNE     p1_not_down
28420 MOV     R0, #129
28430 MOV     R1, #0
28440 SUB     R1,R1, #83
28450 MOV     R2, #255
28460 SWI     "OS_Byte"
28470 CMP     R1, #255
28480 SUBEQ   R10,R10, #2
28490 .p1_not_down
28500 :
28510 SUB     R10,R10, #1
28520 :
28530 CMP     R10, #128
28540 BEQ     p1_ud
28550 BGT     p1_up
28560 MOV     R1,R6, LSR #2
28570 MOV     R2,R7, LSR #2
28580 ADD     R1,R1, #xext%/2
28590 SUB     R2,R2, #1
28600 BL      read_point
28610 CMP     R0, #0
28620 MOVNE   R10, #128
28630 B       p1_ud
28640 .p1_up
28650 MOV     R1,R6, LSR #2
28660 MOV     R2,R7, LSR #2
28670 ADD     R1,R1, #xext%/2+2
28680 ADD     R2,R2, #yext%
28690 BL      read_point
28700 CMP     R0, #0
28710 MOVNE   R10, #128
28720 MOV     R1,R6, LSR #2
28730 MOV     R2,R7, LSR #2
28740 ADD     R1,R1, #xext%/2-2
28750 ADD     R2,R2, #yext%
28760 BL      read_point
28770 CMP     R0, #0
28780 MOVNE   R10, #128
28790 B       p1_ud
28800 .p1_ud
28810 CMP     R10, #128+10*4
28820 MOVGT   R10, #128+10*4
28830 CMP     R10, #128-8*4
28840 MOVLT   R10, #128-8*4
28850 CMP     R10, #128
28860 BIC     R8,R8, #255<<16
28870 ORR     R8,R8,R10, LSL #16
28880 SUB     R10,R10, #128
28890 ADD     R7,R7,R10, ASR #2
28900 :
28910 LDR     R0, adr_p1_weapon
28920 LDR     R0,[R0]
28930 CMP     R0, #2
28940 BEQ     p1_fire_pistol
28950 CMP     R0, #3
28960 BEQ     p1_fire_gun
28970 CMP     R0, #4
28980 BEQ     p1_fire_mortar
28990 CMP     R0, #5
29000 BEQ     p1_fire_homing
29010 CMP     R0, #6
29020 BEQ     p1_fire_seeking
29030 CMP     R0, #7
29040 BEQ     p1_fire_vertical
29050 CMP     R0, #8
29060 BEQ     p1_fire_flame
29070 CMP     R0, #9
29080 BEQ     p1_fire_bomb
29090 CMP     R0, #10
29100 BEQ     p1_fire_glue
29110 :
29120 .p1_fire_pistol
29130 LDR     R0, p1_fire
29140 CMP     R0, #0
29150 BEQ     p1_pistol_shot
29160 MOV     R0, #129
29170 MOV     R1, #0
29180 SUB     R1,R1, #84
29190 MOV     R2, #255
29200 SWI     "OS_Byte"
29210 CMP     R1, #255
29220 MOVNE   R0, #0
29230 STRNE   R0, p1_fire
29240 B       p1_not_fire_pistol
29250 .p1_pistol_shot
29260 MOV     R0, #129
29270 MOV     R1, #0
29280 SUB     R1,R1, #84
29290 MOV     R2, #255
29300 SWI     "OS_Byte"
29310 CMP     R1, #255
29320 BNE     p1_not_fire_pistol
29330 MOV     R0, #2
29340 MOV     R1,R6, LSR #2
29350 MOV     R2,R7, LSR #2
29360 ADD     R1,R1, #xext%
29370 ADD     R2,R2, #yext%/4*2
29380 RSB     R2,R2, #256
29390 MOV     R3, #80
29400 MOV     R4, #0
29410 MOV     R5, #1
29420 TST     R8, #1
29430 RSBNE   R3,R3, #0
29440 SUBNE   R1,R1, #xext%
29450 BL      add_cell
29460 MOV     R5, #1
29470 MOV     R0, #1
29480 STR     R0, p1_fire
29490 MOV     R0, #7
29500 MVN     R1, #14
29510 MOV     R2, #12800
29520 MOV     R3, #0
29530 SWI     "Sound_Control"
29540 .p1_not_fire_pistol
29550 B       p1_end_fire
29560 :
29570 .p1_fire_gun
29580 MOV     R0, #129
29590 MOV     R1, #0
29600 SUB     R1,R1, #84
29610 MOV     R2, #255
29620 SWI     "OS_Byte"
29630 CMP     R1, #255
29640 BNE     p1_not_fire_gun
29650 LDR     R0, p1_fire
29660 ADD     R0,R0, #1
29670 AND     R0,R0, #%11
29680 STR     R0, p1_fire
29690 TST     R0, #%11
29700 BNE     p1_not_fire_gun
29710 MOV     R0, #3
29720 MOV     R1,R6, LSR #2
29730 MOV     R2,R7, LSR #2
29740 ADD     R1,R1, #xext%
29750 ADD     R2,R2, #yext%/4*2
29760 RSB     R2,R2, #256
29770 MOV     R3, #80
29780 LDR     R5, adr_rnd
29790 LDR     R5,[R5]
29800 AND     R4,R5, #15
29810 SUB     R4,R4, #7
29820 AND     R5,R5, #%110000
29830 MOV     R5,R5, LSR #4
29840 ADD     R1,R1,R5
29850 MOV     R5, #1
29860 TST     R8, #1
29870 RSBNE   R3,R3, #0
29880 SUBNE   R1,R1, #xext%+2
29890 BL      add_cell
29900 MOV     R5, #1
29910 MOV     R0, #8
29920 MVN     R1, #12
29930 MOV     R2, #12800
29940 MOV     R3, #0
29950 SWI     "Sound_Control"
29960 .p1_not_fire_gun
29970 B       p1_end_fire
29980 :
29990 .p1_fire_mortar
30000 MOV     R0, #129
30010 MOV     R1, #0
30020 SUB     R1,R1, #84
30030 MOV     R2, #255
30040 SWI     "OS_Byte"
30050 CMP     R1, #255
30060 BNE     p1_not_fire_mortar
30070 LDR     R0, p1_fire
30080 ADD     R0,R0, #1
30090 AND     R0,R0, #%11111
30100 STR     R0, p1_fire
30110 TST     R0, #%11111
30120 BNE     p1_not_fire_gun
30130 MOV     R0, #4
30140 MOV     R1,R6, LSR #2
30150 MOV     R2,R7, LSR #2
30160 ADD     R1,R1, #xext%
30170 ADD     R2,R2, #yext%/4*2
30180 RSB     R2,R2, #256
30190 MOV     R3, #30
30200 MOV     R4, #40
30210 MOV     R5, #1
30220 TST     R8, #1
30230 RSBNE   R3,R3, #0
30240 SUBNE   R1,R1, #xext%
30250 BL      add_cell
30260 MOV     R5, #1
30270 MOV     R0, #1
30280 STR     R0, p1_fire
30290 .p1_not_fire_mortar
30300 B       p1_end_fire
30310 :
30320 .p1_fire_homing
30330 .p1_homing_shot
30340 MOV     R0, #129
30350 MOV     R1, #0
30360 SUB     R1,R1, #84
30370 MOV     R2, #255
30380 SWI     "OS_Byte"
30390 CMP     R1, #255
30400 BNE     p1_not_fire_homing
30410 LDR     R0, p1_fire
30420 ADD     R0,R0, #1
30430 AND     R0,R0, #%1111
30440 STR     R0, p1_fire
30450 TST     R0, #%1111
30460 BNE     p1_not_fire_homing
30470 MOV     R0, #5
30480 MOV     R1,R6, LSR #2
30490 MOV     R2,R7, LSR #2
30500 ADD     R1,R1, #xext%
30510 ADD     R2,R2, #yext%/2
30520 RSB     R2,R2, #256
30530 MOV     R3, #64
30540 LDR     R4, adr_rnd
30550 LDR     R4,[R4]
30560 AND     R4,R4, #15
30570 SUB     R4,R4, #7
30580 MOV     R5, #224<<8          ; Homing in on player 2
30590 ORR     R5,R5, #1
30600 TST     R8, #1
30610 RSBNE   R3,R3, #0
30620 SUBNE   R1,R1, #xext%
30630 BL      add_cell
30640 MOV     R5, #1
30650 MOV     R0, #8
30660 MVN     R1, #10
30670 MOV     R2, #8000
30680 MOV     R3, #0
30690 SWI     "Sound_Control"
30700 .p1_not_fire_homing
30710 B       p1_end_fire
30720 :
30730 .p1_fire_seeking
30740 .p1_seeking_shot
30750 MOV     R0, #129
30760 MOV     R1, #0
30770 SUB     R1,R1, #84
30780 MOV     R2, #255
30790 SWI     "OS_Byte"
30800 CMP     R1, #255
30810 BNE     p1_not_fire_seeking
30820 MOV     R0, #6
30830 MOV     R1,R6, LSR #2
30840 MOV     R2,R7, LSR #2
30850 ADD     R1,R1, #xext%*3/2
30860 ADD     R2,R2, #yext%/4*2
30870 RSB     R2,R2, #256
30880 MOV     R3, #32
30890 MOV     R4, #0
30900 MOV     R5, #1                ; Homing in on player 2
30910 TST     R8, #1
30920 RSBNE   R3,R3, #0
30930 SUBNE   R1,R1, #xext%*2
30940 BL      add_cell
30950 MOV     R5, #1
30960 MOV     R9, #2
30970 LDR     R10, adr_p1_weapon
30980 STR     R9,[R10]
30990 MOV     R0, #8
31000 MVN     R1, #14
31010 MOV     R2, #5120
31020 MOV     R3, #0
31030 SWI     "Sound_Control"
31040 MOV     R0, #1
31050 STR     R0, p1_fire
31060 .p1_not_fire_seeking
31070 B       p1_end_fire
31080 :
31090 .p1_fire_vertical
31100 LDR     R0, p1_fire
31110 CMP     R0, #0
31120 BEQ     p1_vertical_shot
31130 MOV     R0, #129
31140 MOV     R1, #0
31150 SUB     R1,R1, #84
31160 MOV     R2, #255
31170 SWI     "OS_Byte"
31180 CMP     R1, #255
31190 MOVNE   R0, #0
31200 STRNE   R0, p1_fire
31210 B       p1_not_fire_vertical
31220 .p1_vertical_shot
31230 MOV     R0, #129
31240 MOV     R1, #0
31250 SUB     R1,R1, #84
31260 MOV     R2, #255
31270 SWI     "OS_Byte"
31280 CMP     R1, #255
31290 BNE     p1_not_fire_vertical
31300 MOV     R0, #7
31310 MOV     R1,R6, LSR #2
31320 MOV     R2,R7, LSR #2
31330 ADD     R1,R1, #xext%
31340 ADD     R2,R2, #yext%/4*2
31350 RSB     R2,R2, #256
31360 MOV     R3, #0
31370 MOV     R4, #64
31380 MOV     R5, #1
31390 TST     R8, #1
31400 RSBNE   R3,R3, #0
31410 SUBNE   R1,R1, #xext%
31420 BL      add_cell
31430 MOV     R5, #2
31440 MOV     R0, #1
31450 STR     R0, p1_fire
31460 MOV     R0, #7
31470 MVN     R1, #14
31480 MOV     R2, #10240
31490 MOV     R3, #0
31500 SWI     "Sound_Control"
31510 .p1_not_fire_vertical
31520 B       p1_end_fire
31530 :
31540 .p1_fire_flame
31550 .p1_flame_shot
31560 MOV     R0, #129
31570 MOV     R1, #0
31580 SUB     R1,R1, #84
31590 MOV     R2, #255
31600 SWI     "OS_Byte"
31610 CMP     R1, #255
31620 BNE     p1_not_fire_flame
31630 MOV     R0, #10
31640 MOV     R1,R6, LSR #2
31650 MOV     R2,R7, LSR #2
31660 ADD     R1,R1, #xext%
31670 ADD     R2,R2, #yext%/4*2
31680 RSB     R2,R2, #256
31690 MOV     R3, #64
31700 LDR     R4, adr_rnd
31710 LDR     R4,[R4]
31720 AND     R4,R4, #7
31730 SUB     R4,R4, #1
31740 MOV     R5, #1
31750 TST     R8, #1
31760 RSBNE   R3,R3, #0
31770 SUBNE   R1,R1, #xext%
31780 BL      add_cell
31790 .p1_not_fire_flame
31800 B       p1_end_fire
31810 :
31820 .p1_fire_glue
31830 MOV     R0, #129
31840 MOV     R1, #0
31850 SUB     R1,R1, #84
31860 MOV     R2, #255
31870 SWI     "OS_Byte"
31880 CMP     R1, #255
31890 BNE     p1_not_fire_glue
31900 LDR     R0, p1_fire
31910 ADD     R0,R0, #1
31920 CMP     R0, #10
31930 MOVGT   R0, #0
31940 STR     R0, p1_fire
31950 CMP     R0, #0
31960 BNE     p1_not_fire_glue
31970 MOV     R0, #13
31980 MOV     R1,R6, LSR #2
31990 MOV     R2,R7, LSR #2
32000 ADD     R1,R1, #xext%+1
32010 ADD     R2,R2, #yext%/4*2
32020 RSB     R2,R2, #256
32030 MOV     R3, #64
32040 LDR     R5, adr_rnd
32050 LDR     R5,[R5]
32060 AND     R4,R5, #255
32070 SUB     R4,R4, #7
32080 MOV     R5, #0
32090 TST     R8, #1
32100 RSBNE   R3,R3, #0
32110 SUBNE   R1,R1, #xext%+2
32120 BL      add_cell
32130 MOV     R5, #1
32140 MOV     R0, #1
32150 STR     R0, p1_fire
32160 .p1_not_fire_glue
32170 B       p1_end_fire
32180 :
32190 .p1_fire_bomb
32200 MOV     R0, #129
32210 MOV     R1, #0
32220 SUB     R1,R1, #84
32230 MOV     R2, #255
32240 SWI     "OS_Byte"
32250 CMP     R1, #255
32260 BNE     p1_not_fire_bomb
32270 LDR     R0, p1_fire
32280 ADD     R0,R0, #1
32290 CMP     R0, #10
32300 MOVGT   R0, #0
32310 STR     R0, p1_fire
32320 CMP     R0, #0
32330 BNE     p1_not_fire_bomb
32340 MOV     R0, #12
32350 MOV     R1,R6, LSR #2
32360 MOV     R2,R7, LSR #2
32370 ADD     R1,R1, #xext%+1
32380 ADD     R2,R2, #yext%/4*2
32390 RSB     R2,R2, #256
32400 MOV     R3, #40
32410 MOV     R4, #40
32420 MOV     R5, #bomb_pause%
32430 TST     R8, #1
32440 RSBNE   R3,R3, #0
32450 SUBNE   R1,R1, #xext%+2
32460 BL      add_cell
32470 MOV     R5, #1
32480 MOV     R0, #1
32490 STR     R0, p1_fire
32500 .p1_not_fire_bomb
32510 B       p1_end_fire
32520 :
32530 .p1_end_fire
32540 :
32550 MOV     R0, #1
32560 MOV     R1,R6, LSR #2
32570 MOV     R2,R7, LSR #2
32580 TST     R8, #1
32590 ADDEQ   R1,R1, #1
32600 ADDNE   R1,R1, #xext%-1
32610 ADD     R2,R2, #yext%/4
32620 RSB     R2,R2, #256
32630 LDR     R3, adr_rnd
32640 LDR     R3,[R3]
32650 TST     R3, #%10000
32660 SUBEQ   R2,R2, #1
32670 AND     R3,R3, #15
32680 SUB     R3,R3, #7
32690 MOV     R4, #0
32700 SUB     R4,R4, #40
32710 MOV     R5, #32
32720 BL      add_cell
32730 MOV     R5, #1
32740 :
32750 AND     R0,R8, #1
32760 MOV     R1,R6, LSR #2
32770 MOV     R2,R7, LSR #2
32780 LDR     R9, adr_p1_x
32790 STR     R1,[R9]
32800 LDR     R9, adr_p1_y
32810 STR     R2,[R9]
32820 BL      plot_sprite_1616
32830 :
32840 LDMFD   R13!,{R9,PC}
32850 :
32860 .adr_rnd
32870 EQUD    rnd
32880 .adr_p1_weapon
32890 EQUD    p1_weapon
32900 .adr_p1_x
32910 EQUD    p1_x
32920 .adr_p1_y
32930 EQUD    p1_y
32940 :
32950 ]
32960 P%=clg_routine%
32970 L%=clg_routine%+1020
32980 [OPT pass%
32990 :
33000 .clg_adr_screenstore
33010 EQUD    screenstore
33020 .clg_screendata
33030 EQUD    screendata%
33040 :
33050 .clg
33060 STMFD   R13!,{R0-R12,R14}
33070 ADR     R0, clg_temp_reg_store
33080 STMIA   R0, {R13,R14}
33090 LDR     R13, clg_adr_screenstore
33100 LDR     R13, [R13]
33110 LDR     R14, clg_screendata
33120 MOV     R12, #0
33130 .clg_loop1
33140 ]
33150 FOR a%=1 TO 26
33160 [OPT pass%
33170 LDMIA   R14!,{R0-R11}
33180 STMIA   R13!,{R0-R11}
33190 ]
33200 NEXT
33210 [OPT pass%
33220 ADD     R12,R12, #1
33230 CMP     R12, #65
33240 BLT     clg_loop1
33250 ]
33260 FOR a%=1 TO 20
33270 [OPT pass%
33280 LDMIA   R14!,{R0-R9}
33290 STMIA   R13!,{R0-R9}
33300 ]
33310 NEXT
33320 [OPT pass%
33330 ADR     R0, clg_temp_reg_store
33340 LDMIA   R0, {R13,R14}
33350 LDMFD   R13!,{R0-R12,PC}
33360 :
33370 .clg_temp_reg_store
33380 EQUD    0
33390 EQUD    0
33400 :
33410 ]
33420 P%=split_routine%
33430 L%=split_routine%+1020
33440 [OPT pass%
33450 :
33460 :
33470 .split_screenstore
33480 EQUD    screenstore%
33490 .split_adr_screen
33500 EQUD    screen
33510 .split_adr_p1_y
33520 EQUD    p1_y
33530 .split_adr_p2_y
33540 EQUD    p2_y
33550 .split_p1_y1
33560 EQUD    0
33570 .split_p2_y1
33580 EQUD    0
33590 .split_p1_y2
33600 EQUD    0
33610 .split_p2_y2
33620 EQUD    0
33630 .split_p1_y3
33640 EQUD    0
33650 .split_p2_y3
33660 EQUD    0
33670 :
33680 .split_screen
33690 STMFD   R13!,{R0-R12,R14}
33700 ADR     R0, split_temp_reg_store
33710 STMIA   R0, {R13,R14}
33720 LDR     R13, split_adr_screen
33730 LDR     R13, [R13]
33740 MOV     R12, #0
33750 LDR     R0, split_adr_p1_y
33760 LDR     R0,[R0]
33770 LDR     R1, split_p1_y1
33780 LDR     R2, split_p1_y2
33790 LDR     R3, split_p1_y3
33800 STR     R0, split_p1_y1
33810 STR     R1, split_p1_y2
33820 STR     R2, split_p1_y3
33830 ADD     R0,R0,R1
33840 ADD     R0,R0,R2
33850 ADD     R0,R0,R3
33860 ADD     R0,R0, #2
33870 MOV     R0,R0, ASR #2
33880 RSB     R0,R0, #256
33890 SUB     R0,R0, #64
33900 CMP     R0, #148
33910 MOVGT   R0, #148
33920 CMP     R0, #0
33930 MOVLT   R0, #0
33940 LDR     R14, split_screenstore
33950 MOV     R1, #y_shift
33960 MLA     R14,R1,R0,R14
33970 .split_loop1
33980 ]
33990 FOR a%=1 TO 10
34000 [OPT pass%
34010 LDMIA   R14!,{R0-R11}
34020 STMIA   R13!,{R0-R11}
34030 ]
34040 NEXT
34050 [OPT pass%
34060 ADD     R12,R12, #1
34070 CMP     R12, #72
34080 BLT     split_loop1
34090 ]
34100 FOR a%=0 TO 11
34110 [OPT pass%
34120 MOV     a%, #127
34130 ORR     a%,a%,a%, LSL #8
34140 ORR     a%,a%,a%, LSL #16
34150 ]
34160 NEXT
34170 [OPT pass%
34180 MOV     R12, #0
34190 .split_loop3
34200 STMIA   R13!,{R0-R11}
34210 ADD     R12,R12, #1
34220 CMP     R12, #280
34230 BLT     split_loop3
34240 :
34250 LDR     R13, split_adr_screen
34260 LDR     R13, [R13]
34270 ADD     R13,R13, #&B900
34280 MOV     R12, #0
34290 LDR     R0, split_adr_p2_y
34300 LDR     R0,[R0]
34310 LDR     R1, split_p2_y1
34320 LDR     R2, split_p2_y2
34330 LDR     R3, split_p2_y3
34340 STR     R0, split_p2_y1
34350 STR     R1, split_p2_y2
34360 STR     R2, split_p2_y3
34370 ADD     R0,R0,R1
34380 ADD     R0,R0,R2
34390 ADD     R0,R0,R3
34400 ADD     R0,R0, #2
34410 MOV     R0,R0, ASR #2
34420 RSB     R0,R0, #256
34430 SUB     R0,R0, #64
34440 CMP     R0, #148
34450 MOVGT   R0, #148
34460 CMP     R0, #0
34470 MOVLT   R0, #0
34480 LDR     R14, split_screenstore
34490 MOV     R1, #y_shift
34500 MLA     R14,R1,R0,R14
34510 .split_loop2
34520 ]
34530 FOR a%=1 TO 10
34540 [OPT pass%
34550 LDMIA   R14!,{R0-R11}
34560 STMIA   R13!,{R0-R11}
34570 ]
34580 NEXT
34590 [OPT pass%
34600 ADD     R12,R12, #1
34610 CMP     R12, #72
34620 BLT     split_loop2
34630 ADR     R0, split_temp_reg_store
34640 LDMIA   R0, {R13,R14}
34650 LDMFD   R13!,{R0-R12,PC}
34660 :
34670 .split_temp_reg_store
34680 EQUD    0
34690 EQUD    0
34700 :
34710 :
34720 ]
34730 P%=sprite_routines%
34740 L%=sprite_routines%+8191
34750 [OPT pass%
34760 :
34770 :
34780 :
34790 .plot_sprite_1212
34800 :
34810 STMFD   R13!,{R0-R12,R14}
34820 :
34830 :                            ; R0 sprite no.
34840 :                            ; R1 x-coord
34850 :                            ; R2 y-coord
34860 :
34870 RSB     R2,R2, #256
34880 :
34890 CMP     R1, #0
34900 BLE     psm_no_plot1212
34910 CMP     R2, #12
34920 BLE     psm_no_plot1212
34930 CMP     R1, #320-8
34940 BGE     psm_no_plot1212
34950 CMP     R2, #256
34960 BGE     psm_no_plot1212
34970 B       psm_plot1212
34980 .psm_no_plot1212
34990 LDMFD   R13!,{R0-R12,PC}
35000 .psm_plot1212
35010 :
35020 AND     R3,R1, #%11          ; calculate x offset
35030 MOV     R0,R0, LSL #2        ; realise sprite
35040 ADD     R0,R0, R3            ; add offset
35050 BIC     R1,R1, #%11          ; make x div by 4
35060 :
35070 MOV     R7, #x_shift         ; get screen shifts
35080 MOV     R8, #y_shift
35090 LDR     R9, sprite_adr_screenstore; get screenstore address
35100 LDR     R9,[R9]
35110 :
35120 MLA     R3,R7,R1,R9
35130 MLA     R2,R8,R2,R3
35140 :
35150 LDR     R7, adr_sprites1     ; get start address of data
35160 LDR     R8, spr_size1        ; get length of data for 1 sprite
35170 MLA     R0,R8,R0,R7          ; calculate position of data
35180 ADD     R1,R0,R8, LSR #1     ; calculate position of mask
35190 :
35200 MOV     R3, #1
35210 STR     R3, s1212_counter
35220 :
35230 .s1212_sprite_loop
35240 :
35250 ]
35260 FOR a%=1 TO 12
35270 [OPT pass%
35280 :
35290 LDMIA   R2,{R3-R5}           ; get some background
35300 LDMIA   R1!,{R8-R10}         ; get some mask
35310 AND     R3,R3,R8             ; mask off background
35320 AND     R4,R4,R9
35330 AND     R5,R5,R10
35340 LDMIA   R0!,{R8-R10}         ; get some sprite
35350 ORR     R3,R3,R8             ; merge sprite with background
35360 ORR     R4,R4,R9
35370 ORR     R5,R5,R10
35380 STMIA   R2,{R3-R5}           ; store masked sprite
35390 :
35400 SUB     R2,R2, #y_shift
35410 :
35420 ]
35430 NEXT
35440 [OPT pass%
35450 :
35460 LDR     R3, s1212_counter
35470 ADD     R3,R3, #1
35480 STR     R3, s1212_counter
35490 CMP     R3, #1
35500 BLE     s1212_sprite_loop
35510 :
35520 LDMFD   R13!,{R0-R12,PC}
35530 :
35540 .s1212_counter
35550 EQUD    0
35560 :
35570 .adr_sprites1
35580 EQUD    sprites1%            ; address of sprites1
35590 .spr_size1
35600 EQUD    8/8*12*12*2          ; length of one sprite1 + mask1
35610 :
35620 :
35630 :
35640 .plot_sprite_1264
35650 :
35660 STMFD   R13!,{R0-R12,R14}
35670 :
35680 :                            ; R0 sprite no.
35690 :                            ; R1 x-coord
35700 :                            ; R2 y-coord
35710 :
35720 RSB     R2,R2, #256
35730 :
35740 CMP     R1, #0
35750 BLE     psm_no_plot1264
35760 CMP     R2, #32
35770 BLE     psm_no_plot1264
35780 CMP     R1, #320-8
35790 BGE     psm_no_plot1264
35800 CMP     R2, #256
35810 BGE     psm_no_plot1264
35820 B       psm_plot1264
35830 .psm_no_plot1264
35840 LDMFD   R13!,{R0-R12,PC}
35850 .psm_plot1264
35860 :
35870 AND     R3,R1, #%11          ; calculate x offset
35880 MOV     R0,R0, LSL #2        ; realise sprite
35890 ADD     R0,R0, R3            ; add offset
35900 BIC     R1,R1, #%11          ; make x div by 4
35910 :
35920 MOV     R7, #x_shift         ; get screen shifts
35930 MOV     R8, #y_shift
35940 LDR     R9, sprite_adr_screenstore; get screenstore address
35950 LDR     R9,[R9]
35960 :
35970 MLA     R3,R7,R1,R9
35980 MLA     R2,R8,R2,R3
35990 :
36000 LDR     R7, adr_sprites3     ; get start address of data
36010 LDR     R8, spr_size3        ; get length of data for 1 sprite
36020 MLA     R0,R8,R0,R7          ; calculate position of data
36030 ADD     R1,R0,R8, LSR #1     ; calculate position of mask
36040 :
36050 MOV     R3, #1
36060 STR     R3, s1264_counter
36070 :
36080 .s1264_sprite_loop
36090 :
36100 ]
36110 FOR a%=1 TO 8
36120 [OPT pass%
36130 :
36140 LDMIA   R2,{R3-R5}           ; get some background
36150 LDMIA   R1!,{R8-R10}         ; get some mask
36160 AND     R3,R3,R8             ; mask off background
36170 AND     R4,R4,R9
36180 AND     R5,R5,R10
36190 LDMIA   R0!,{R8-R10}         ; get some sprite
36200 ORR     R3,R3,R8             ; merge sprite with background
36210 ORR     R4,R4,R9
36220 ORR     R5,R5,R10
36230 STMIA   R2,{R3-R5}           ; store masked sprite
36240 :
36250 SUB     R2,R2, #y_shift
36260 :
36270 ]
36280 NEXT
36290 [OPT pass%
36300 :
36310 LDR     R3, s1264_counter
36320 ADD     R3,R3, #1
36330 STR     R3, s1264_counter
36340 CMP     R3, #8
36350 BLE     s1264_sprite_loop
36360 :
36370 LDMFD   R13!,{R0-R12,PC}
36380 :
36390 .s1264_counter
36400 EQUD    0
36410 :
36420 .adr_sprites3
36430 EQUD    sprites3%            ; address of sprites1
36440 .spr_size3
36450 EQUD    8/8*12*64*2          ; length of one sprite1 + mask1
36460 .sprite_adr_screenstore
36470 EQUD    screenstore
36480 :
36490 :
36500 :
36510 .plot_sprite_2016
36520 :
36530 STMFD   R13!,{R0-R12,R14}
36540 :
36550 :                            ; R0 sprite no.
36560 :                            ; R1 x-coord
36570 :                            ; R2 y-coord
36580 :
36590 RSB     R2,R2, #256
36600 :
36610 CMP     R1, #0
36620 BLE     psm_no_plot2016
36630 CMP     R2, #16
36640 BLE     psm_no_plot2016
36650 CMP     R1, #320-16
36660 BGE     psm_no_plot2016
36670 CMP     R2, #256
36680 BGE     psm_no_plot2016
36690 B       psm_plot2016
36700 .psm_no_plot2016
36710 LDMFD   R13!,{R0-R12,PC}
36720 .psm_plot2016
36730 :
36740 AND     R3,R1, #%11          ; calculate x offset
36750 MOV     R0,R0, LSL #2        ; realise sprite
36760 ADD     R0,R0, R3            ; add offset
36770 BIC     R1,R1, #%11          ; make x div by 4
36780 :
36790 MOV     R7, #x_shift         ; get screen shifts
36800 MOV     R8, #y_shift
36810 LDR     R9, sprite_adr_screenstore; get screenstore address
36820 LDR     R9,[R9]
36830 :
36840 MLA     R3,R7,R1,R9
36850 MLA     R2,R8,R2,R3
36860 :
36870 LDR     R7, adr_sprites2     ; get start address of data
36880 LDR     R8, spr_size2        ; get length of data for 1 sprite
36890 MLA     R0,R8,R0,R7          ; calculate position of data
36900 ADD     R1,R0,R8, LSR #1     ; calculate position of mask
36910 :
36920 MOV     R3, #1
36930 STR     R3, s2016_counter
36940 :
36950 .s2016_sprite_loop
36960 :
36970 ]
36980 FOR a%=1 TO 4
36990 [OPT pass%
37000 :
37010 LDMIA   R2,{R3-R7}           ; get some background
37020 LDMIA   R1!,{R8-R12}         ; get some mask
37030 AND     R3,R3,R8             ; mask off background
37040 AND     R4,R4,R9
37050 AND     R5,R5,R10
37060 AND     R6,R6,R11
37070 AND     R7,R7,R12
37080 LDMIA   R0!,{R8-R12}         ; get some sprite
37090 ORR     R3,R3,R8             ; merge sprite with background
37100 ORR     R4,R4,R9
37110 ORR     R5,R5,R10
37120 ORR     R6,R6,R11
37130 ORR     R7,R7,R12
37140 STMIA   R2,{R3-R7}           ; store masked sprite
37150 :
37160 SUB     R2,R2, #y_shift
37170 :
37180 ]
37190 NEXT
37200 [OPT pass%
37210 :
37220 LDR     R3, s2016_counter
37230 ADD     R3,R3, #1
37240 STR     R3, s2016_counter
37250 CMP     R3, #4
37260 BLE     s2016_sprite_loop
37270 :
37280 LDMFD   R13!,{R0-R12,PC}
37290 :
37300 .s2016_counter
37310 EQUD    0
37320 :
37330 .adr_sprites2
37340 EQUD    sprites2%            ; address of sprites2
37350 .spr_size2
37360 EQUD    8/8*16*20*2          ; length of one sprite2 + mask2
37370 :
37380 :
37390 :
37400 .plot_sprite_0804
37410 :
37420 STMFD   R13!,{R0-R12,R14}
37430 :
37440 :                            ; R0 sprite no.
37450 :                            ; R1 x-coord
37460 :                            ; R2 y-coord
37470 :
37480 RSB     R2,R2, #256
37490 :
37500 CMP     R1, #0
37510 BLE     psm_no_plot0804
37520 CMP     R2, #4
37530 BLE     psm_no_plot0804
37540 CMP     R1, #320-4
37550 BGE     psm_no_plot0804
37560 CMP     R2, #256
37570 BGE     psm_no_plot0804
37580 B       psm_plot0804
37590 .psm_no_plot0804
37600 LDMFD   R13!,{R0-R12,PC}
37610 .psm_plot0804
37620 :
37630 AND     R3,R1, #%11          ; calculate x offset
37640 MOV     R0,R0, LSL #2        ; realise sprite
37650 ADD     R0,R0, R3            ; add offset
37660 BIC     R1,R1, #%11          ; make x div by 4
37670 :
37680 MOV     R7, #x_shift         ; get screen shifts
37690 MOV     R8, #y_shift
37700 LDR     R9, sprite_adr_screenstore; get screenstore address
37710 LDR     R9,[R9]
37720 :
37730 MLA     R3,R7,R1,R9
37740 MLA     R2,R8,R2,R3
37750 :
37760 LDR     R7, adr_sprites4     ; get start address of data
37770 LDR     R8, spr_size4        ; get length of data for 1 sprite
37780 MLA     R0,R8,R0,R7          ; calculate position of data
37790 ADD     R1,R0,R8, LSR #1     ; calculate position of mask
37800 :
37810;MOV     R3, #1
37820;STR     R3, s0804_counter
37830 :
37840 .s0804_sprite_loop
37850 :
37860 ]
37870 FOR a%=1 TO 4
37880 [OPT pass%
37890 :
37900 LDMIA   R2,{R3,R4}              ; get some background
37910 LDMIA   R1!,{R8,R9}             ; get some mask
37920 AND     R3,R3,R8             ; mask off background
37930 AND     R4,R4,R9
37940 LDMIA   R0!,{R8,R9}         ; get some sprite
37950 ORR     R3,R3,R8             ; merge sprite with background
37960 ORR     R4,R4,R9
37970 STMIA   R2,{R3,R4}           ; store masked sprite
37980 :
37990 SUB     R2,R2, #y_shift
38000 :
38010 ]
38020 NEXT
38030 [OPT pass%
38040 :
38050;LDR     R3, s0804_counter
38060;ADD     R3,R3, #1
38070;STR     R3, s0804_counter
38080;CMP     R3, #1
38090;BLE     s0804_sprite_loop
38100 :
38110 LDMFD   R13!,{R0-R12,PC}
38120 :
38130 .s0804_counter
38140 EQUD    0
38150 :
38160 .adr_sprites4
38170 EQUD    sprites4%            ; address of sprites4
38180 .spr_size4
38190 EQUD    8/8*8*4*2            ; length of one sprite4 + mask4
38200 :
38210 :
38220 :
38230 .plot_sprite_1208
38240 :
38250 STMFD   R13!,{R0-R12,R14}
38260 :
38270 :                            ; R0 sprite no.
38280 :                            ; R1 x-coord
38290 :                            ; R2 y-coord
38300 :
38310 RSB     R2,R2, #256
38320 :
38330 CMP     R1, #0
38340 BLE     psm_no_plot1208
38350 CMP     R2, #8
38360 BLE     psm_no_plot1208
38370 CMP     R1, #320-8
38380 BGE     psm_no_plot1208
38390 CMP     R2, #256
38400 BGE     psm_no_plot1208
38410 B       psm_plot1208
38420 .psm_no_plot1208
38430 LDMFD   R13!,{R0-R12,PC}
38440 .psm_plot1208
38450 :
38460 AND     R3,R1, #%11          ; calculate x offset
38470 MOV     R0,R0, LSL #2        ; realise sprite
38480 ADD     R0,R0, R3            ; add offset
38490 BIC     R1,R1, #%11          ; make x div by 4
38500 :
38510 MOV     R7, #x_shift         ; get screen shifts
38520 MOV     R8, #y_shift
38530 LDR     R9, sprite_adr_screenstore; get screenstore address
38540 LDR     R9,[R9]
38550 :
38560 MLA     R3,R7,R1,R9
38570 MLA     R2,R8,R2,R3
38580 :
38590 LDR     R7, adr_sprites5     ; get start address of data
38600 LDR     R8, spr_size5        ; get length of data for 1 sprite
38610 MLA     R0,R8,R0,R7          ; calculate position of data
38620 ADD     R1,R0,R8, LSR #1     ; calculate position of mask
38630 :
38640;MOV     R3, #1
38650;STR     R3, s1208_counter
38660 :
38670 .s1208_sprite_loop
38680 :
38690 ]
38700 FOR a%=1 TO 8
38710 [OPT pass%
38720 :
38730 LDMIA   R2,{R3,R4,R5}        ; get some background
38740 LDMIA   R1!,{R8,R9,R10}      ; get some mask
38750 AND     R3,R3,R8             ; mask off background
38760 AND     R4,R4,R9
38770 AND     R5,R5,R10
38780 LDMIA   R0!,{R8,R9,R10}      ; get some sprite
38790 ORR     R3,R3,R8             ; merge sprite with background
38800 ORR     R4,R4,R9
38810 ORR     R5,R5,R10
38820 STMIA   R2,{R3,R4,R5}        ; store masked sprite
38830 :
38840 SUB     R2,R2, #y_shift
38850 :
38860 ]
38870 NEXT
38880 [OPT pass%
38890 :
38900;LDR     R3, s1208_counter
38910;ADD     R3,R3, #1
38920;STR     R3, s1208_counter
38930;CMP     R3, #1
38940;BLE     s1208_sprite_loop
38950 :
38960 LDMFD   R13!,{R0-R12,PC}
38970 :
38980 .s1208_counter
38990 EQUD    0
39000 :
39010 .adr_sprites5
39020 EQUD    sprites5%            ; address of sprites5
39030 .spr_size5
39040 EQUD    8/8*12*8*2           ; length of one sprite5 + mask5
39050 :
39060 :
39070 :
39080 .plot_sprite_1616
39090 :
39100 STMFD   R13!,{R0-R12,R14}
39110 :
39120 :                            ; R0 sprite no.
39130 :                            ; R1 x-coord
39140 :                            ; R2 y-coord
39150 :
39160 RSB     R2,R2, #256
39170 :
39180 CMP     R1, #0
39190 BLE     psm_no_plot1616
39200 CMP     R2, #16
39210 BLE     psm_no_plot1616
39220 CMP     R1, #320-16
39230 BGE     psm_no_plot1616
39240 CMP     R2, #256
39250 BGE     psm_no_plot1616
39260 B       psm_plot1616
39270 .psm_no_plot1616
39280 LDMFD   R13!,{R0-R12,PC}
39290 .psm_plot1616
39300 :
39310 AND     R3,R1, #%11          ; calculate x offset
39320 MOV     R0,R0, LSL #2        ; realise sprite
39330 ADD     R0,R0, R3            ; add offset
39340 BIC     R1,R1, #%11          ; make x div by 4
39350 :
39360 MOV     R7, #x_shift         ; get screen shifts
39370 MOV     R8, #y_shift
39380 LDR     R9, sprite_adr_screenstore; get screenstore address
39390 LDR     R9,[R9]
39400 :
39410 MLA     R3,R7,R1,R9
39420 MLA     R2,R8,R2,R3
39430 :
39440 LDR     R7, adr_sprites6     ; get start address of data
39450 LDR     R8, spr_size6        ; get length of data for 1 sprite
39460 MLA     R0,R8,R0,R7          ; calculate position of data
39470 ADD     R1,R0,R8, LSR #1     ; calculate position of mask
39480 :
39490 MOV     R3, #1
39500 STR     R3, s1616_counter
39510 :
39520 .s1616_sprite_loop
39530 :
39540 ]
39550 FOR a%=1 TO 4
39560 [OPT pass%
39570 :
39580 LDMIA   R2,{R3-R6}           ; get some background
39590 LDMIA   R1!,{R8-R11}         ; get some mask
39600 AND     R3,R3,R8             ; mask off background
39610 AND     R4,R4,R9
39620 AND     R5,R5,R10
39630 AND     R5,R5,R11
39640 LDMIA   R0!,{R8-R11}         ; get some sprite
39650 ORR     R3,R3,R8             ; merge sprite with background
39660 ORR     R4,R4,R9
39670 ORR     R5,R5,R10
39680 ORR     R6,R6,R11
39690 STMIA   R2,{R3-R6}           ; store masked sprite
39700 :
39710 SUB     R2,R2, #y_shift
39720 :
39730 ]
39740 NEXT
39750 [OPT pass%
39760 :
39770 LDR     R3, s1616_counter
39780 ADD     R3,R3, #1
39790 STR     R3, s1616_counter
39800 CMP     R3, #4
39810 BLE     s1616_sprite_loop
39820 :
39830 LDMFD   R13!,{R0-R12,PC}
39840 :
39850 .s1616_counter
39860 EQUD    0
39870 :
39880 .adr_sprites6
39890 EQUD    sprites6%            ; address of sprites6
39900 .spr_size6
39910 EQUD    8/8*16*16*2          ; length of one sprite6 + mask6
39920 :
39930 :
39940 ]
39950 P%=fill_routines%
39960 L%=fill_routines%+8191
39970 [OPT pass%
39980 :
39990 :
40000 :
40010 .fill_fill_1212
40020 :
40030 STMFD   R13!,{R0-R12,R14}
40040 :
40050 :                            ; R0 fill no.
40060 :                            ; R1 x-coord
40070 :                            ; R2 y-coord
40080 :
40090 RSB     R2,R2, #256
40100 :
40110 CMP     R1, #0
40120 BLE     psm_no_fill1212
40130 CMP     R2, #12
40140 BLE     psm_no_fill1212
40150 CMP     R1, #320-8
40160 BGE     psm_no_fill1212
40170 CMP     R2, #256
40180 BGE     psm_no_fill1212
40190 B       psm_fill1212
40200 .psm_no_fill1212
40210 LDMFD   R13!,{R0-R12,PC}
40220 .psm_fill1212
40230 :
40240 MOV     R7, #x_shift         ; get screen shifts
40250 MOV     R8, #y_shift
40260 :
40270 LDR     R9, fill_adr_screenstore; get screenstore address
40280 LDR     R9,[R9]
40290 MLA     R3,R7,R1,R9
40300 MLA     R0,R8,R2,R3
40310 :
40320 LDR     R9, fill_screendata  ; get screen address
40330 MLA     R3,R7,R1,R9
40340 MLA     R1,R8,R2,R3
40350 :
40360 MOV     R3, #1
40370 STR     R3, f1212_counter
40380 :
40390 .f1212_fill_loop
40400 :
40410 ]
40420 FOR a%=1 TO 12
40430 [OPT pass%
40440 :
40450 LDMIA   R1,{R3-R5}           ; get some background
40460 STMIA   R0,{R3-R5}           ; store masked fill
40470 :
40480 SUB     R0,R0, #y_shift
40490 SUB     R1,R1, #y_shift
40500 :
40510 ]
40520 NEXT
40530 [OPT pass%
40540 :
40550 LDR     R3, f1212_counter
40560 ADD     R3,R3, #1
40570 STR     R3, f1212_counter
40580 CMP     R3, #1
40590 BLE     f1212_fill_loop
40600 :
40610 LDMFD   R13!,{R0-R12,PC}
40620 :
40630 .f1212_counter
40640 EQUD    0
40650 :
40660 :
40670 :
40680 .fill_fill_1264
40690 :
40700 STMFD   R13!,{R0-R12,R14}
40710 :
40720 :                            ; R0 fill no.
40730 :                            ; R1 x-coord
40740 :                            ; R2 y-coord
40750 :
40760 RSB     R2,R2, #256
40770 :
40780 CMP     R1, #0
40790 BLE     psm_no_fill1264
40800 CMP     R2, #32
40810 BLE     psm_no_fill1264
40820 CMP     R1, #320-8
40830 BGE     psm_no_fill1264
40840 CMP     R2, #256
40850 BGE     psm_no_fill1264
40860 B       psm_fill1264
40870 .psm_no_fill1264
40880 LDMFD   R13!,{R0-R12,PC}
40890 .psm_fill1264
40900 :
40910 MOV     R7, #x_shift         ; get screen shifts
40920 MOV     R8, #y_shift
40930 :
40940 LDR     R9, fill_adr_screenstore; get screenstore address
40950 LDR     R9,[R9]
40960 MLA     R3,R7,R1,R9
40970 MLA     R0,R8,R2,R3
40980 :
40990 LDR     R9, fill_screendata  ; get screen address
41000 MLA     R3,R7,R1,R9
41010 MLA     R1,R8,R2,R3
41020 :
41030 MOV     R3, #1
41040 STR     R3, f1264_counter
41050 :
41060 .f1264_fill_loop
41070 :
41080 ]
41090 FOR a%=1 TO 8
41100 [OPT pass%
41110 :
41120 LDMIA   R1,{R3-R5}           ; get some background
41130 STMIA   R0,{R3-R5}           ; store masked fill
41140 :
41150 SUB     R0,R0, #y_shift
41160 SUB     R1,R1, #y_shift
41170 :
41180 ]
41190 NEXT
41200 [OPT pass%
41210 :
41220 LDR     R3, f1264_counter
41230 ADD     R3,R3, #1
41240 STR     R3, f1264_counter
41250 CMP     R3, #8
41260 BLE     f1264_fill_loop
41270 :
41280 LDMFD   R13!,{R0-R12,PC}
41290 :
41300 .f1264_counter
41310 EQUD    0
41320 :
41330 .fill_screendata
41340 EQUD    screendata%
41350 .fill_adr_screenstore
41360 EQUD    screenstore
41370 :
41380 :
41390 :
41400 .fill_fill_2016
41410 :
41420 STMFD   R13!,{R0-R12,R14}
41430 :
41440 :                            ; R0 fill no.
41450 :                            ; R1 x-coord
41460 :                            ; R2 y-coord
41470 :
41480 RSB     R2,R2, #256
41490 :
41500 CMP     R1, #0
41510 BLE     psm_no_fill2016
41520 CMP     R2, #16
41530 BLE     psm_no_fill2016
41540 CMP     R1, #320-16
41550 BGE     psm_no_fill2016
41560 CMP     R2, #256
41570 BGE     psm_no_fill2016
41580 B       psm_fill2016
41590 .psm_no_fill2016
41600 LDMFD   R13!,{R0-R12,PC}
41610 .psm_fill2016
41620 :
41630 MOV     R7, #x_shift         ; get screen shifts
41640 MOV     R8, #y_shift
41650 :
41660 LDR     R9, fill_adr_screenstore; get screenstore address
41670 LDR     R9,[R9]
41680 MLA     R3,R7,R1,R9
41690 MLA     R0,R8,R2,R3
41700 :
41710 LDR     R9, fill_screendata  ; get screen address
41720 MLA     R3,R7,R1,R9
41730 MLA     R1,R8,R2,R3
41740 :
41750 MOV     R3, #1
41760 STR     R3, f2016_counter
41770 :
41780 .f2016_fill_loop
41790 :
41800 ]
41810 FOR a%=1 TO 4
41820 [OPT pass%
41830 :
41840 LDMIA   R1,{R3-R7}           ; get some background
41850 STMIA   R0,{R3-R7}           ; store masked fill
41860 :
41870 SUB     R0,R0, #y_shift
41880 SUB     R1,R1, #y_shift
41890 :
41900 ]
41910 NEXT
41920 [OPT pass%
41930 :
41940 LDR     R3, f2016_counter
41950 ADD     R3,R3, #1
41960 STR     R3, f2016_counter
41970 CMP     R3, #4
41980 BLE     f2016_fill_loop
41990 :
42000 LDMFD   R13!,{R0-R12,PC}
42010 :
42020 .f2016_counter
42030 EQUD    0
42040 :
42050 :
42060 :
42070 .fill_fill_0804
42080 :
42090 STMFD   R13!,{R0-R12,R14}
42100 :
42110 :                            ; R0 fill no.
42120 :                            ; R1 x-coord
42130 :                            ; R2 y-coord
42140 :
42150 RSB     R2,R2, #256
42160 :
42170 CMP     R1, #0
42180 BLE     psm_no_fill0804
42190 CMP     R2, #4
42200 BLE     psm_no_fill0804
42210 CMP     R1, #320-4
42220 BGE     psm_no_fill0804
42230 CMP     R2, #256
42240 BGE     psm_no_fill0804
42250 B       psm_fill0804
42260 .psm_no_fill0804
42270 LDMFD   R13!,{R0-R12,PC}
42280 .psm_fill0804
42290 :
42300 MOV     R7, #x_shift         ; get screen shifts
42310 MOV     R8, #y_shift
42320 :
42330 LDR     R9, fill_adr_screenstore; get screenstore address
42340 LDR     R9,[R9]
42350 MLA     R3,R7,R1,R9
42360 MLA     R0,R8,R2,R3
42370 :
42380 LDR     R9, fill_screendata  ; get screen address
42390 MLA     R3,R7,R1,R9
42400 MLA     R1,R8,R2,R3
42410 :
42420 .f0804_fill_loop
42430 :
42440 ]
42450 FOR a%=1 TO 4
42460 [OPT pass%
42470 :
42480 LDMIA   R1,{R3-R4}           ; get some background
42490 STMIA   R0,{R3-R4}           ; store masked fill
42500 :
42510 SUB     R0,R0, #y_shift
42520 SUB     R1,R1, #y_shift
42530 :
42540 ]
42550 NEXT
42560 [OPT pass%
42570 :
42580 LDMFD   R13!,{R0-R12,PC}
42590 :
42600 :
42610 :
42620 .fill_fill_1208
42630 :
42640 STMFD   R13!,{R0-R12,R14}
42650 :
42660 :                            ; R0 fill no.
42670 :                            ; R1 x-coord
42680 :                            ; R2 y-coord
42690 :
42700 RSB     R2,R2, #256
42710 :
42720 CMP     R1, #0
42730 BLE     psm_no_fill1208
42740 CMP     R2, #8
42750 BLE     psm_no_fill1208
42760 CMP     R1, #320-8
42770 BGE     psm_no_fill1208
42780 CMP     R2, #256
42790 BGE     psm_no_fill1208
42800 B       psm_fill1208
42810 .psm_no_fill1208
42820 LDMFD   R13!,{R0-R12,PC}
42830 .psm_fill1208
42840 :
42850 MOV     R7, #x_shift         ; get screen shifts
42860 MOV     R8, #y_shift
42870 :
42880 LDR     R9, fill_adr_screenstore; get screenstore address
42890 LDR     R9,[R9]
42900 MLA     R3,R7,R1,R9
42910 MLA     R0,R8,R2,R3
42920 :
42930 LDR     R9, fill_screendata  ; get screen address
42940 MLA     R3,R7,R1,R9
42950 MLA     R1,R8,R2,R3
42960 :
42970 ]
42980 FOR a%=1 TO 8
42990 [OPT pass%
43000 :
43010 LDMIA   R1,{R3-R5}        ; get some background
43020 STMIA   R0,{R3-R5}        ; store masked fill
43030 :
43040 SUB     R0,R0, #y_shift
43050 SUB     R1,R1, #y_shift
43060 :
43070 ]
43080 NEXT
43090 [OPT pass%
43100 :
43110 LDMFD   R13!,{R0-R12,PC}
43120 :
43130 :
43140 :
43150 .fill_fill_1616
43160 :
43170 STMFD   R13!,{R0-R12,R14}
43180 :
43190 RSB     R2,R2, #256
43200 :
43210 CMP     R1, #0
43220 BLE     psm_no_fill1616
43230 CMP     R2, #16
43240 BLE     psm_no_fill1616
43250 CMP     R1, #320-16
43260 BGE     psm_no_fill1616
43270 CMP     R2, #256
43280 BGE     psm_no_fill1616
43290 B       psm_fill1616
43300 .psm_no_fill1616
43310 LDMFD   R13!,{R0-R12,PC}
43320 .psm_fill1616
43330 :
43340 MOV     R7, #x_shift         ; get screen shifts
43350 MOV     R8, #y_shift
43360 :
43370 LDR     R9, fill_adr_screenstore; get screenstore address
43380 LDR     R9,[R9]
43390 MLA     R3,R7,R1,R9
43400 MLA     R0,R8,R2,R3
43410 :
43420 LDR     R9, fill_screendata  ; get screen address
43430 MLA     R3,R7,R1,R9
43440 MLA     R1,R8,R2,R3
43450 :
43460 MOV     R3, #1
43470 STR     R3, f1616_counter
43480 :
43490 .f1616_fill_loop
43500 :
43510 ]
43520 FOR a%=1 TO 4
43530 [OPT pass%
43540 :
43550 LDMIA   R1,{R2-R5}
43560 STMIA   R0,{R2-R5}
43570 :
43580 SUB     R0,R0, #y_shift
43590 SUB     R1,R1, #y_shift
43600 :
43610 ]
43620 NEXT
43630 [OPT pass%
43640 :
43650 LDR     R3, f1616_counter
43660 ADD     R3,R3, #1
43670 STR     R3, f1616_counter
43680 CMP     R3, #4
43690 BLE     f1616_fill_loop
43700 :
43710 LDMFD   R13!,{R0-R12,PC}
43720 :
43730 .f1616_counter
43740 EQUD    0
43750 :
43760 :
43770 :
43780 .fill_fill_0101
43790 :
43800 STMFD   R13!,{R0-R12,R14}
43810 :
43820 RSB     R2,R2, #256
43830 :
43840 CMP     R1, #0
43850 BLE     psm_no_fill0101
43860 CMP     R2, #0
43870 BLE     psm_no_fill0101
43880 CMP     R1, #320
43890 BGE     psm_no_fill0101
43900 CMP     R2, #256
43910 BGE     psm_no_fill0101
43920 B       psm_fill0101
43930 .psm_no_fill0101
43940 LDMFD   R13!,{R0-R12,PC}
43950 .psm_fill0101
43960 :
43970 MOV     R7, #x_shift         ; get screen shifts
43980 MOV     R8, #y_shift
43990 :
44000 LDR     R9, fill_adr_screenstore; get screenstore address
44010 LDR     R9,[R9]
44020 MLA     R3,R7,R1,R9
44030 MLA     R0,R8,R2,R3
44040 :
44050 LDR     R9, fill_screendata  ; get screen address
44060 MLA     R3,R7,R1,R9
44070 MLA     R1,R8,R2,R3
44080 :
44090 LDRB    R2,[R1]
44100 STRB    R2,[R0]
44110 :
44120 LDMFD   R13!,{R0-R12,PC}
44130 :
44140 ]
44150NEXT
44160:
44170!cl_adr_screen=screen
44180FOR a%=0 TO 255
44190 r%=SQRSQR(a%*256^3)
44200 g%=SQR(a%*256)
44210 b%=a%
44220 SYS "ColourTrans_ReturnColourNumber",(r%<<8)+(g%<<16)+(b%<<24) TO colour%
44230 !(flame_fade%+a%)=colour%
44240NEXT
44250:
44260FOR a%=0 TO 255
44270 r%=64+a%/2
44280 g%=128+a%/2
44290 b%=128+a%/2
44300 SYS "ColourTrans_ReturnColourNumber",(r%<<8)+(g%<<16)+(b%<<24) TO colour%
44310 !(gun_fade%+a%)=colour%
44320NEXT
44330:
44340c%=OPENIN("<This$Dir>.Levels.Level"+STR$(scrn%)+".Posn"+STR$(scrn%))
44350FOR a%=0 TO 7
44360 INPUT#c%,x%
44370 INPUT#c%,y%
44380 !(a%*8+positions)=x%
44390 !(a%*8+4+positions)=y%
44400NEXT
44410CLOSE#c%
44420:
44430p%=clist%
44440FOR a%=1 TO 640
44450 PROCadd_cell(0)
44460NEXT
44470PROCadd_cell(-1)
44480:
44490p%=slist%
44500FOR a%=1 TO 64
44510 PROCadd_sprite(0,0,0,0)
44520NEXT
44530PROCadd_sprite(0,0,-1,0)
44540p%=slist%
44550FOR a%=1 TO 16
44560 PROCadd_sprite(0,0,0,0)
44570NEXT
44580c%=OPENIN("<This$Dir>.Levels.Level"+STR$(scrn%)+".Doors"+STR$(scrn%))
44590FOR a%=1 TO 4
44600 INPUT#c%,x%
44610 INPUT#c%,y%
44620 INPUT#c%,t%
44630 INPUT#c%,i%
44640 PROCadd_sprite(x%,y%,13,i%)
44650NEXT
44660CLOSE#c%
44670c%=OPENIN("<This$Dir>.Levels.Level"+STR$(scrn%)+".GSwitches")
44680FOR a%=1 TO 4
44690 INPUT#c%,x%
44700 INPUT#c%,y%
44710 INPUT#c%,t%
44720 INPUT#c%,i%
44730 PROCadd_sprite(x%,y%,14,a%)
44740NEXT
44750CLOSE#c%
44760c%=OPENIN("<This$Dir>.Levels.Level"+STR$(scrn%)+".Guns"+STR$(scrn%))
44770FOR a%=1 TO 4
44780 INPUT#c%,x%
44790 INPUT#c%,y%
44800 INPUT#c%,t%
44810 INPUT#c%,i%
44820 PROCadd_sprite(x%,y%,15,a%)
44830NEXT
44840CLOSE#c%
44850PROCadd_sprite(1116,32,2,(128<<8)+(128<<16))
44860PROCadd_sprite(84,748,1,(128<<8)+(128<<16))
44870c%=OPENIN("<This$Dir>.Levels.Level"+STR$(scrn%)+".Flames"+STR$(scrn%))
44880FOR a%=1 TO 16
44890 INPUT#c%,x%
44900 INPUT#c%,y%
44910 INPUT#c%,t%
44920 INPUT#c%,i%
44930 PROCadd_sprite(x%,y%,3,i%)
44940NEXT
44950CLOSE#c%
44960CALL start
44970CALL clear_screen
44980ENDPROC
44990:
45000:
45010:
45020DEF PROCerror
45030SYS "Hourglass_Smash"
45040MOUSE OFF
45050IF ERR=17 THEN
45060 SYS "OS_Byte",112,1
45070 CLS
45080 SYS "OS_Byte",113,1
45090ELSE
45100 SYS "OS_Byte",112,1
45110 CLS
45120 SYS "OS_Byte",113,1
45130 PRINT REPORT$;" at line ";ERL
45140ENDIF
45150ENDPROC
45160:
45170:
45180:
45190DEF FNbordercol(r%,g%,b%)
45200 [OPT pass%
45210;SWI     256+19
45220;SWI     256+0
45230;SWI     256+24
45240;SWI     256+r%
45250;SWI     256+g%
45260;SWI     256+b%
45270 ]
45280=0
45290:
45300:
45310:
45320DEF PROCadd_sprite(x%,y%,t%,i%)
45330!(p%+00)=t%
45340!(p%+04)=x%
45350!(p%+08)=y%
45360!(p%+12)=i%
45370p%+=16
45380ENDPROC
45390:
45400:
45410:
45420DEF PROCadd_cell(t%)
45430p%!00=t%
45440p%+=32
45450ENDPROC
45460:
45470:
45480:
45490DEF PROCassm_decomp
45500FOR pass%=%0000 TO %1010 STEP %1010
45510 P%=decomp_code%
45520 L%=decomp_code%+1020
45530 [OPT pass%
45540 :
45550 .dc_unused
45560 EQUD    0
45570 .dc_cmpp
45580 EQUD    0
45590 .dc_address
45600 EQUD    0
45610 .dc_value
45620 EQUD    0
45630 .dc_repetitions
45640 EQUD    0
45650 :
45660 .dc_start
45670 LDR     R0, dc_cmpp
45680 LDR     R1,[R0]
45690 STR     R1, dc_unused
45700 ADD     R0,R0, #4
45710 STR     R0, dc_cmpp
45720 .dc_repeat_loop1
45730 LDR     R0, dc_cmpp
45740 LDR     R0,[R0]
45750 LDR     R1, dc_unused
45760 CMP     R0,R1
45770 BEQ     dc_decompress
45780 .dc_copy
45790 LDR     R0, dc_cmpp
45800 LDR     R1,[R0]
45810 LDR     R2, dc_address
45820 STR     R1,[R2]
45830 LDR     R0, dc_cmpp
45840 ADD     R0,R0, #4
45850 LDR     R2, dc_address
45860 ADD     R2,R2, #4
45870 STR     R0, dc_cmpp
45880 STR     R2, dc_address
45890 B       dc_until1
45900 .dc_decompress
45910 LDR     R0, dc_cmpp
45920 LDR     R7,[R0, #4]
45930 STR     R7, dc_value
45940 LDR     R0,[R0, #8]
45950 STR     R0, dc_repetitions
45960 CMP     R0, #0
45970 BEQ     dc_until1
45980 LDR     R7, dc_value
45990 LDR     R8, dc_address
46000 MOV     R9, #1
46010 .dc_repeat_loop2
46020 STMIA   R8!,{R7}
46030 ADD     R9,R9, #1
46040 LDR     R0, dc_repetitions
46050 CMP     R9,R0
46060 BLE     dc_repeat_loop2
46070 STR     R8, dc_address
46080 LDR     R0, dc_cmpp
46090 ADD     R0,R0, #12
46100 STR     R0, dc_cmpp
46110 .dc_until1
46120 LDR     R0, dc_cmpp
46130 LDR     R1,[R0]
46140 LDR     R2, dc_unused
46150 CMP     R1,R2
46160 BNE     dc_repeat_loop1
46170 LDR     R3,[R0, #8]
46180 CMP     R3, #0
46190 BNE     dc_repeat_loop1
46200 MOV     PC,R14
46210 :
46220 ]
46230NEXT
46240ENDPROC
46250:
46260:
46270:
46280DEF PROCdecompress(from$,to%)
46290SYS "OS_File",255,from$,cmpdata%,0
46300!dc_address=to%
46310!dc_cmpp=cmpdata%
46320CALL dc_start
46330ENDPROC
46340:
46350:
46360:
46370DEF PROCassemble_clear_screen
46380FOR pass%=%0000 TO %1010 STEP %1010
46390 P%=cl_code%
46400 L%=cl_code%+2044
46410 [OPT pass%
46420 :
46430 .setup_cs
46440 STMFD   R13!,{R0-R12,R14}
46450 LDR     R0, cl_adr_vdu_vars
46460 LDR     R1, cl_adr_screen
46470 SWI     "OS_ReadVduVariables"   ; set up vdu variables
46480 LDMFD   R13!,{R0-R12,PC}
46490 :
46500 .clear_screen
46510 STMFD   R13!,{R0-R12,R14}
46520 :
46530 LDR     R11, adr_clscolours     ; get the address of colour data
46540 MOV     R9, #0                  ; y co-ord
46550 :
46560 .cl_loop1
46570 :
46580 LDR     R10, cl_adr_screen
46590 LDR     R10,[R10]               ; get screen address
46600 ADD     R7,R10, #&14000         ; get screen end
46610 :
46620 .cl_loop3
46630 ]
46640 FOR a%=0 TO 15
46650 FOR b%=0 TO fader% STEP 4
46660 [OPT pass%
46670 :
46680 ADD     R10,R10, #b%
46690 BL      cl_cls                  ; dim screen
46700 SUB     R10,R10, #b%
46710 :
46720 MOV     R0, #19
46730 SWI     "OS_Byte"
46740 :
46750 ]
46760 NEXT
46770 NEXT
46780 [OPT pass%
46790 :
46800 .cl_end_routines
46810 :
46820 .cl_end
46830 LDMFD   R13!,{R0-R12,PC}
46840 :
46850 .cl_cls
46860 MOV     R6,R10
46870 MOV     R4, #&FF
46880 .cl_loop2
46890 LDR     R0,[R6]
46900 :
46910 MOV     R3,R0, ROR #8
46920 CMP     R3,R0
46930 BNE     cl_not_same
46940 AND     R1,R4,R0
46950 LDRB    R1,[R11,R1]
46960 ORR     R3,R1,R1, LSL #8
46970 ORR     R3,R3,R3, LSL #16
46980 :
46990 B       cl_done_pixels
47000 :
47010 .cl_not_same
47020 AND     R1,R4,R0
47030 LDRB    R1,[R11,R1]
47040 MOV     R3,R1
47050 :
47060 AND     R1,R4,R0, LSR #8
47070 LDRB    R1,[R11,R1]
47080 ORR     R3,R3,R1, LSL #8
47090 :
47100 AND     R1,R4,R0, LSR #16
47110 LDRB    R1,[R11,R1]
47120 ORR     R3,R3,R1, LSL #16
47130 :
47140 AND     R1,R4,R0, LSR #24
47150 LDRB    R1,[R11,R1]
47160 ORR     R3,R3,R1, LSL #24
47170 :
47180 .cl_done_pixels
47190 STR     R3,[R6], #fader%+4
47200 :
47210 CMP     R6,R7
47220 BLT     cl_loop2
47230 :
47240 .cl_end
47250 MOV     PC,R14
47260 :
47270 .adr_clscolours
47280 EQUD    cl_colours%
47290 .cl_adr_vdu_vars
47300 EQUD    vdu_vars
47310 .cl_adr_screen
47320 EQUD    screen
47330 .screen
47340 EQUD    0
47350 .vdu_vars
47360 EQUD    149                  ; vdu data
47370 EQUD    -1
47380 .screen_size
47390 EQUD    &14000
47400 :
47410 ]
47420NEXT
47430CALL setup_cs
47440ENDPROC
47450:
47460:
47470:
47480DEF PROCprint(a$)
47490IF a$="" THEN PRINT:ENDPROC
47500LOCAL letter%,width%,c%
47510ORIGIN 0,0
47520x%=POS*64
47530y%=1024-VPOS*64-64
47540FOR letter%=1 TO LEN(a$)
47550 IF x%>1024 THEN x%=0:y%-=64:PRINT'
47560 asc%=ASC(MID$(a$,letter%,1))
47570 IF asc%>31 THEN
47580  SYS "OS_SpriteOp",&128,font%,STR$asc% TO ,,,width%
47590  SYS "OS_SpriteOp",&122,font%,STR$asc%,x%,y%,0
47600 ELSE
47610  IF asc%=9 THEN x%=(INT(x%/256)+1)*256
47620 ENDIF
47630 x%+=width%*4
47640NEXT
47650PRINT
47660ENDPROC
47670:
47680:
47690DEF PROCtint
47700FOR p%=0 TO &13FFF STEP 1
47710 IF screendata%?p%<>0 THEN screendata%?p%=(screendata%?p% OR %11) EOR (RND(3)-1)
47720NEXT
47730ENDPROC

� > !RunImage
�
� � J.D.Harrop
(�
2:
<� � �error:�
F:
P� 15
Z� 13
d�
n:
x� screen% 8
�screen%!0=149
�screen%!4=-1
�,ș "OS_ReadVduVariables",screen%,screen%
�screen%=screen%!0
�:
�xext%=12
�yext%=16
�:
� *RMLoad <This$Dir>.SFX.Explo
�"*RMLoad <This$Dir>.SFX.TokenRM
�*RMLoad <This$Dir>.SFX.Arg
�*RMLoad <This$Dir>.SFX.RArg
� *RMLoad <This$Dir>.SFX.Laugh
 *RMLoad <This$Dir>.SFX.Flare
 *RMLoad <This$Dir>.SFX.Gener
"�*RMLoad <This$Dir>.SFX.Shield
"Ƞ 5
,ȡ 1,"EXPLO"
6ȡ 2,"TOKENRM"
@ȡ 3,"ARG"
Jȡ 4,"RARG"
Tȡ 5,"LaughRM"
^ȡ 6,"Flare"
hȡ 7,"Gener"
r�VOICE 8,"Shield"
|ș "Sound_Volume",127
�scream%=8192
�ping%=14336
�explosion%=6400
�fader%=8
�bomb_pause%=63
�clist_size%=32*1280
�slist_size%=16*128
�Jș "OS_File",17,"<This$Dir>.Graphics.SData1212" � type%,,,,spritelen1%
�Jș "OS_File",17,"<This$Dir>.Graphics.SData2016" � type%,,,,spritelen2%
�Jș "OS_File",17,"<This$Dir>.Graphics.SData1264" � type%,,,,spritelen3%
�Jș "OS_File",17,"<This$Dir>.Graphics.SData0804" � type%,,,,spritelen4%
�Jș "OS_File",17,"<This$Dir>.Graphics.SData1208" � type%,,,,spritelen5%
�Jș "OS_File",17,"<This$Dir>.Graphics.SData1616" � type%,,,,spritelen6%
Bș "OS_File",17,"<This$Dir>.Graphics.Font" � type%,,,,fontlen%
u� code% 12*1024,sprite_routines% 8192,fill_routines% 8192,clg_routine% 1024,split_routine% 1024,decomp_code% 1024
�� sprites1% spritelen1%+4,sprites2% spritelen2%+4,sprites3% spritelen3%+4,sprites4% spritelen4%+4,sprites5% spritelen5%+4,sprites6% spritelen6%+4
&� screendata% 81924
0� screenstore% 81924
:+� clist% clist_size%,slist% slist_size%
D� cmpdata% 81924
N� flame_fade% 256
X� gun_fade% 256
b$� cl_code% 2048, cl_colours% 320
l� font% fontlen%+4
v�assm_decomp
�6�decompress("<This$Dir>.Graphics.CMLData",screen%)
�!font%=22*1024
�:ș "OS_SpriteOp",&10A,font%,"<This$Dir>.Graphics.Font"
�t%=�
�P%=cl_colours%
�L%=cl_colours%+256
�"chan%=�("<This$Dir>.FadeCols")
�� c%=0 � 255
� ?P%=�#chan%
�
 P%+=1
��
��#chan%
��
� �>t%+200
�assemble_clear_screen
:
 scrn%=13
*�
4 player1_lives%=3
> player2_lives%=3
H �
R  scrn%+=1
\  � scrn%>14 � scrn%=1
fU  �decompress("<This$Dir>.Levels.Level"+�(scrn%)+".CmpData"+�(scrn%),screendata%)
p  �tint
z  � clear_screen
�  �play
�  !screen=!screen1
�  �
�  �
�  ș "OS_Byte",112,2
�  �
�  ș "OS_Byte",113,2
�  ș "OS_Byte",112,1
�  �
�:  �decompress("<This$Dir>.Graphics.CLogoData",screen%)
�  Ȗ
�  ș "OS_Byte",113,1
�  ș "OS_Byte",112,1
-  � !player1_alive<>0 � player1_lives%-=1
-  � !player2_alive<>0 � player2_lives%-=1
Q  � player1_lives%=0 � player2_lives%=0 � player1_lives%+=1:player2_lives%+=1
$  � 128+42 Ȝ 0
.  � 0 Ȝ 0
8  � �0,0);
B,  �print("Player 1  :	"+�player1_lives%)
L+  �print("Player 2 :	"+�player2_lives%)
V  � 128 Ȝ 0
`  � 63 Ȝ 255
j* � player1_lives%=0 � player2_lives%=0
t	 t%=�
~ �
� � �>t%+50
� � clear_screen
� �
� �
� ș "OS_Byte",112,2
� �
� ș "OS_Byte",113,2
� ș "OS_Byte",112,1
� �
�	 t%=�
�M � player1_lives%=0 � �decompress("<This$Dir>.Graphics.C�P2Wins",screen%)
�M � player2_lives%=0 � �decompress("<This$Dir>.Graphics.C�P1Wins",screen%)
# ș "Sound_Control",5,-15,128,0

 Ȗ
 ș "OS_Byte",113,1
 ș "OS_Byte",112,1
( �
2 � �>t%+500
< � clear_screen
F� �
P�
Z:
d:
n:
x� �play
�spray_col%=63
�max_homing_speed%=16
�@ș "OS_File",255,"<This$Dir>.Graphics.SData1212",sprites1%,0
�@ș "OS_File",255,"<This$Dir>.Graphics.SData2016",sprites2%,0
�@ș "OS_File",255,"<This$Dir>.Graphics.SData1264",sprites3%,0
�@ș "OS_File",255,"<This$Dir>.Graphics.SData0804",sprites4%,0
�@ș "OS_File",255,"<This$Dir>.Graphics.SData1208",sprites5%,0
�@ș "OS_File",255,"<This$Dir>.Graphics.SData1616",sprites6%,0
�number    = 0
�divisor   = 1
�remain    = 3
�quotient  = 2
�place     = 4
dsign     = 5
msign     = 6

x_shift=1
"y_shift=320
,!� pass%=%0000 � %1010 � %1010
6
 P%=code%
@ L%=code%+12*1024
J [OPT pass%
T :
^ :
h :
r .point
| STMFD   R13!,{R1-R12,R14}
� :
� RSB     R2,R2, #256
� :
�6; MOV     R7, #x_shift         ; get screen shifts
�; MOV     R8, #y_shift
�6 LDR     R9, screenstore      ; get screen address
� :
�ADD r9,r9,r1
�ADD r9,r9,r2, ASL #8
�ADD r9,r9,r2, ASL #6
�; MLA     R9,R7,R1,R9
�; MLA     R1,R8,R2,R9
� :
 STRB    R0,[R1]
 :
 LDMFD   R13!,{R1-R12,PC}
& :
0 :
: :
D .screen
N EQUD    0
X .screenstore
b EQUD    screenstore%
l .screenbank
v EQUD    0
�
 .screen1
� EQUD    0
�
 .screen2
� EQUD    0
� .vdu_vars
�, EQUD    149                  ; vdu data
� EQUD    -1
� .screen_size
� EQUD    &14000
� .screen_bank
� EQUD    1
� :
� .start
 STMFD   R13!,{R0-R12,R14}
 :
 ADR     R0, vdu_vars
  ADR     R1, screen
*; SWI     "OS_ReadVduVariables"   ; set up vdu variables
4 LDR     R0, screen
> STR     R0, screen1
H LDR     R1, screen_size
R ADD     R0,R0,R1
\ STR     R0, screen2
f SWI     256+19
p SWI     256+0
z SWI     256+24
� SWI     256+240
� SWI     256+240
� SWI     256+112
� BL      clg
� :
� .total_loop
� :
��bordercol(0,0,0)
� MOV     R0, #19
� SWI     "OS_Byte"
� :
� LDR     R3, screen_bank
� �     R3,R3, #1
	 STR     R3, screen_bank
	 CMP     R3, #0
	 RSB     R1,R3, #2
	$ LDREQ   R3, screen1
	. LDRNE   R3, screen2
	8 STR     R3, screen
	B :
	L MOV     R0, #113
	V SWI     "OS_Byte"
	`;MOV     R0, #112
	j;SWI     "OS_Byte"
	t;SWI 256+31
	~;SWI 256+0
	�;SWI 256+0
	� :
	��bordercol(255,0,0)
	� BL      wipe_all
	� :
	��bordercol(0,255,0)
	� :
	� LDR     R0, rnd
	� TST     R0, #255<<8
	� BLEQ    add_goodie
	� TST     R0, #255<<4
	� BLEQ    add_goodie
 :

 BL      update_sprites
 :
�bordercol(0,0,255)
( BL      update_cells
2 :
<�bordercol(0,255,255)
F BL      split_screen
P :
Z�bordercol(255,255,255)
d! SWI     "OS_ReadEscapeState"
n BCS     end
x :
� LDR     R0, adr_end_game
� LDR     R0,[R0]
� CMP     R0, #0
� BNE     end
� :
� LDR     R0, rnd
� ADD     R0,R0,R0, ROR #1
� �     R1,R0, #255<<8
� LDR     R1,[R1]
� �     R0,R0,R1
� STR     R0, rnd
� :
� B       total_loop
 :
	 .end
 :
"�bordercol(0,0,0)
, LDR     R3, screen_bank
6 �     R3,R3, #1
@ STR     R3, screen_bank
J RSB     R1,R3, #2
T CMP     R3, #0
^ LDREQ   R3, screen1
h LDRNE   R3, screen2
r STR     R3, screen
| BL      clear_screen
� :
� LDMFD   R13!,{R0-R12,PC}
� :
� .adr_end_game
� EQUD    end_game
� :
� .wipe_all
� STMFD   R13!,{R0-R12,R14}
� :
� LDR     R9, adr_slist
�
 .wsloop1
� LDMIA   R9,{R5-R8}
� :
 MOV     R1,R6, LSR #2
 MOV     R2,R7, LSR #2
 :
& CMP     R5, #1
0 SUBEQ   R1,R1, #4
: BLEQ    fill_fill_2016
D! BEQ     wipe_end_sprite_loop
N :
X CMP     R5, #2
b SUBEQ   R1,R1, #4
l BLEQ    fill_fill_2016
v! BEQ     wipe_end_sprite_loop
� :
� CMP     R5, #3
� BLT     not_a_1212
� CMP     R5, #11
� BGT     not_a_1212
� BL      fill_fill_1212
�! B       wipe_end_sprite_loop
� .not_a_1212
� :
� CMP     R5, #13
� BLEQ    fill_fill_1264
� :
� CMP     R5, #14

 BLEQ    fill_fill_1208

 CMP     R5, #15

 BLEQ    fill_fill_1208

  :

* .wipe_end_sprite_loop

4 ADD     R9,R9, #16

> CMP     R5, #0

H BGE     wsloop1

R :

\ LDR     R9, adr_clist

f
 .wcloop1

p LDMIA   R9,{R0-R7}

z MOV     R1,R1, ASR #4

� MOV     R2,R2, ASR #4

� CMP     R0, #0

� BEQ     wcell_skip

� CMP     R0, #1

� BLEQ    fill_fill_0101

� BEQ     wcell_skip

� CMP     R0, #2

� SUBEQ   R1,R1, #2

� SUBEQ   R2,R2, #2

� BLEQ    fill_fill_0804

� BEQ     wcell_skip

� CMP     R0, #3

� SUBEQ   R1,R1, #2
 SUBEQ   R2,R2, #2
 BLEQ    fill_fill_0804
 BEQ     wcell_skip
$ CMP     R0, #4
. SUBEQ   R1,R1, #2
8 SUBEQ   R2,R2, #2
B BLEQ    fill_fill_0804
L BEQ     wcell_skip
V CMP     R0, #5
` SUBEQ   R1,R1, #2
j SUBEQ   R2,R2, #2
t BLEQ    fill_fill_0804
~ BEQ     wcell_skip
� CMP     R0, #6
� SUBEQ   R1,R1, #4
� SUBEQ   R2,R2, #4
� BLEQ    fill_fill_1208
� BEQ     wcell_skip
� CMP     R0, #7
� SUBEQ   R1,R1, #2
� SUBEQ   R2,R2, #2
� BLEQ    fill_fill_0804
� BEQ     wcell_skip
� CMP     R0, #8
� SUBEQ   R1,R1, #2
 SUBEQ   R2,R2, #2

 BLEQ    fill_fill_0804
 BEQ     wcell_skip
 CMP     R0, #9
( SUBEQ   R1,R1, #2
2 SUBEQ   R2,R2, #2
< BLEQ    fill_fill_0804
F BEQ     wcell_skip
P CMP     R0, #10
Z SUBEQ   R1,R1, #4
d SUBEQ   R2,R2, #4
n BLEQ    fill_fill_1208
x BEQ     wcell_skip
� CMP     R0, #11
� SUBEQ   R1,R1, #8
� SUBEQ   R2,R2, #8
� BLEQ    fill_fill_2016
� CMP     R0, #12
� SUBEQ   R1,R1, #2
� SUBEQ   R2,R2, #2
� BLEQ    fill_fill_0804
� CMP     R0, #13
� BLEQ    fill_fill_0804
� .wcell_skip
� ADD     R9,R9, #32
� CMP     R0, #0
 BGE     wcloop1
 :
 LDMFD   R13!,{R0-R12,PC}
" :
, .update_sprites
6 STMFD   R13!,{R0-R12,R14}
@ :
J LDR     R9, adr_slist
T .sloop1
^ LDMIA   R9,{R5-R8}
h CMP     R5, #1
r BLEQ    player1
| BEQ     end_sprite_loop
� CMP     R5, #2
� BLEQ    player2
� BEQ     end_sprite_loop
� CMP     R5, #3
� BLEQ    flame
� BEQ     end_sprite_loop
� CMP     R5, #4
� BLEQ    weapon_pistol
� BEQ     end_sprite_loop
� CMP     R5, #5
� BLEQ    weapon_gun
� BEQ     end_sprite_loop
� CMP     R5, #6
 BLEQ    weapon_mortar
 BEQ     end_sprite_loop
 CMP     R5, #7
& BLEQ    weapon_homing
0 BEQ     end_sprite_loop
: CMP     R5, #8
D BLEQ    weapon_seeking
N BEQ     end_sprite_loop
X CMP     R5, #9
b BLEQ    weapon_vertical
l BEQ     end_sprite_loop
v CMP     R5, #10
� BLEQ    weapon_thrower
� BEQ     end_sprite_loop
� CMP     R5, #11
� BLEQ    weapon_bomb
� BEQ     end_sprite_loop
� CMP     R5, #12
� BLEQ    weapon_glue
� BEQ     end_sprite_loop
� CMP     R5, #13
� BLEQ    door
� BEQ     end_sprite_loop
� CMP     R5, #14
� BLEQ    switch
 BEQ     end_sprite_loop
 CMP     R5, #15
 BLEQ    gun_gun
  .end_sprite_loop
* STMIA   R9!,{R5-R8}
4 CMP     R5, #0
> BGE     sloop1
H :
R LDMFD   R13!,{R0-R12,PC}
\ :
f .p1_weapon
p EQUD    2
z .p2_weapon
� EQUD    2
� :
� .read_point
� STMFD   R13!,{R1-R12,R14}
� :
� RSB     R2,R2, #256
� :
�5 MOV     R7, #x_shift         ; get screen shifts
� MOV     R8, #y_shift
�6 LDR     R9, screenstore      ; get screen address
� :
� MLA     R9,R7,R1,R9
� MLA     R1,R8,R2,R9
 :
 LDRB    R0,[R1]
 :
$ LDMFD   R13!,{R1-R12,PC}
. :
8 .adr_clist
B EQUD    clist%
L .adr_slist
V EQUD    slist%
` :
j .flame
t STMFD   R13!,{R9,R14}
~ :
� LDR     R10, p1_x
� LDR     R11, p1_y
� MOV     R9,R6, ASR #2
� ADD     R9,R9, #8
� SUB     R10,R9,R10
� CMP     R10, #0
� BLT     not_touched11
� CMP     R10, #xext%+8
� BGT     not_touched11
� MOV     R9,R7, ASR #2
� ADD     R9,R9, #10
� SUB     R11,R9,R11
 CMP     R11, #0

 BLT     not_touched11
 CMP     R11, #yext%+8
 BGT     not_touched11
(" LDR     R1, adr_player1_alive
2 LDR     R0,[R1]
< CMP     R0, #1
F BEQ     not_touched11
P MOV     R0, #1
Z STR     R0,[R1]
d MOV     R0, #3
n MVN     R1, #14
x MOV     R2, #scream%
� MOV     R3, #0
� SWI     "Sound_Control"
� .not_touched11
� LDR     R10, p2_x
� LDR     R11, p2_y
� MOV     R9,R6, ASR #2
� ADD     R9,R9, #8
� SUB     R10,R9,R10
� CMP     R10, #0
� BLT     not_touched21
� CMP     R10, #xext%+8
� BGT     not_touched21
� MOV     R9,R7, ASR #2
 ADD     R9,R9, #10
 SUB     R11,R9,R11
 CMP     R11, #0
" BLT     not_touched21
, CMP     R11, #yext%+8
6 BGT     not_touched21
@" LDR     R1, adr_player2_alive
J LDR     R0,[R1]
T CMP     R0, #1
^ BEQ     not_touched21
h MOV     R0, #1
r STR     R0,[R1]
| MOV     R0, #3
� MVN     R1, #14
� MOV     R2, #scream%
� MOV     R3, #0
� SWI     "Sound_Control"
� .not_touched21
� :
� ADD     R8,R8, #1
� CMP     R8, #15
� MOVGT   R8, #0
� MOV     R0, #2
� ADD     R0,R0,R8, LSR #2
� MOV     R1,R6, LSR #2
� MOV     R2,R7, LSR #2
 BL      plot_sprite_1212
 :
 LDMFD   R13!,{R9,PC}
& :
0 .adr_player1_alive
: EQUD    player1_alive
D .adr_player2_alive
N EQUD    player2_alive
X :
b
 .door
l STMFD   R13!,{R9,R14}
v :
� TST     R8, #256
� BNE     door_closing
� �     R0,R8, #15
� CMP     R0, #14
� ADDLT   R0,R0, #1
� BIC     R8,R8, #15
� �R     R8,R8,R0
� B       do_door
� .door_closing
� �     R0,R8, #15
� CMP     R0, #0
� SUBGT   R0,R0, #1
� BIC     R8,R8, #15
 �R     R8,R8,R0

 .do_door
 �R     R8,R8, #256
  LDR     R0, p1_x
* LDR     R1, p1_y
4 SUB     R0,R6,R0, ASL #2
> SUB     R1,R7,R1, ASL #2
H CMP     R0, #0
R RSBLT   R0,R0, #0
\ CMP     R1, #0
f RSBLT   R1,R1, #0
p ADD     R0,R0,R1
z CMP     R0, #128
� BICLT   R8,R8, #256
� LDR     R0, p2_x
� LDR     R1, p2_y
� SUB     R0,R6,R0, ASL #2
� SUB     R1,R7,R1, ASL #2
� CMP     R0, #0
� RSBLT   R0,R0, #0
� CMP     R1, #0
� RSBLT   R1,R1, #0
� ADD     R0,R0,R1
� CMP     R0, #128
� BICLT   R8,R8, #256
� .plot_door
 :
 �     R0,R8, #15
 MOV     R1,R6, LSR #2
$ MOV     R2,R7, LSR #2
. BL      plot_sprite_1264
8 :
B LDMFD   R13!,{R9,PC}
L :
V .switch
` STMFD   R13!,{R9,R14}
j :
t MOV     R0, #0
~ :
� LDR     R1, p1_x
� LDR     R2, p1_y
� MOV     R3,R6, ASR #2
� MOV     R4,R7, ASR #2
� ADD     R4,R4, #8
� CMP     R2,R4
� BNE     not_p1_on
� SUB     R3,R3, #6
� CMP     R1,R3
� BLT     not_p1_on
� ADD     R3,R3, #10
� CMP     R1,R3
 BGT     not_p1_on

 MOV     R0, #2
 .not_p1_on
 LDR     R1, p2_x
( LDR     R2, p2_y
2 MOV     R3,R6, ASR #2
< MOV     R4,R7, ASR #2
F ADD     R4,R4, #8
P CMP     R2,R4
Z BNE     not_p2_on
d SUB     R3,R3, #6
n CMP     R1,R3
x BLT     not_p2_on
� ADD     R3,R3, #10
� CMP     R1,R3
� BGT     not_p2_on
� MOV     R0, #1
� .not_p2_on
� :
� ADR     R1, guns
� �     R2,R8, #3
� STR     R0,[R1,R2, LSL #3]
� :
� MOV     R0, #16
� MOV     R1,R6, LSR #2
� MOV     R2,R7, LSR #2
 BL      plot_sprite_1208
 :
 LDMFD   R13!,{R9,PC}
" :
,
 .guns
6 EQUD    0
@ EQUD    0
J EQUD    0
T EQUD    0
^ EQUD    0
h EQUD    0
r EQUD    0
| EQUD    0
� :
�
 .gun_gun
� STMFD   R13!,{R9,R14}
� :
� ADR     R0, guns
� �     R2,R8, #3
� LDR     R3,[R0,R2, LSL #3]
� ADD     R0,R0, #4
� LDR     R4,[R0,R2, LSL #3]
� :
� CMP     R3, #0
� BEQ     no_gun_gun
� ADD     R4,R4, #1
 �     R4,R4, #%11
 STR     R4,[R0,R2, LSL #3]
 TST     R4, #%11
& BNE     no_gun_gun
0 SUB     R5,R3, #1
: MOV     R0, #3
D MOV     R1,R6, ASR #2
N MOV     R2,R7, ASR #2
X ADD     R1,R1, #8
b ADD     R2,R2, #5
l RSB     R2,R2, #256
v MOV     R3, #72
� LDR     R4, rnd
� �     R4,R4, #15
� SUB     R4,R4, #7
� BL      add_cell
� MOV     R0, #8
� MVN     R1, #12
� MOV     R2, #12800
� MOV     R3, #0
� SWI     "Sound_Control"
� MOV     R5, #15
� .no_gun_gun
� :
� MOV     R0, #17
 MOV     R1,R6, LSR #2
 MOV     R2,R7, LSR #2
 BL      plot_sprite_1208
  :
* LDMFD   R13!,{R9,PC}
4 :
> .weapon_pistol
H STMFD   R13!,{R9,R14}
R :
\ MOV     R4, #2
f BL      pick_up
p :
z SUB     R8,R8, #1
� CMP     R8, #0
� MOVLE   R5, #0
� :
� CMP     R5, #0
� :
� MOVGT   R0, #12
� MOVGT   R1,R6, LSR #2
� MOVGT   R2,R7, LSR #2
� BLGT    plot_sprite_1212
� :
� LDMFD   R13!,{R9,PC}
� :
� .weapon_gun
 STMFD   R13!,{R9,R14}
 :
 MOV     R4, #3
$ BL      pick_up
. :
8 SUB     R8,R8, #1
B CMP     R8, #0
L MOVLE   R5, #0
V :
` CMP     R5, #0
j :
t MOVGT   R0, #13
~ MOVGT   R1,R6, LSR #2
� MOVGT   R2,R7, LSR #2
� BLGT    plot_sprite_1212
� :
� LDMFD   R13!,{R9,PC}
� :
� .weapon_mortar
� STMFD   R13!,{R9,R14}
� :
� MOV     R4, #4
� BL      pick_up
� :
� SUB     R8,R8, #1
 CMP     R8, #0

 MOVLE   R5, #0
 :
 CMP     R5, #0
( :
2 MOVGT   R0, #14
< MOVGT   R1,R6, LSR #2
F MOVGT   R2,R7, LSR #2
P BLGT    plot_sprite_1212
Z :
d LDMFD   R13!,{R9,PC}
n :
x .weapon_homing
� STMFD   R13!,{R9,R14}
� :
� MOV     R4, #5
� BL      pick_up
� :
� SUB     R8,R8, #1
� CMP     R8, #0
� MOVLE   R5, #0
� :
� CMP     R5, #0
� :
� MOVGT   R0, #15
� MOVGT   R1,R6, LSR #2
 MOVGT   R2,R7, LSR #2
 BLGT    plot_sprite_1212
 :
" LDMFD   R13!,{R9,PC}
, :
6 .weapon_seeking
@ STMFD   R13!,{R9,R14}
J :
T MOV     R4, #6
^ BL      pick_up
h :
r SUB     R8,R8, #1
| CMP     R8, #0
� MOVLE   R5, #0
� :
� CMP     R5, #0
� :
� MOVGT   R0, #16
� MOVGT   R1,R6, LSR #2
� MOVGT   R2,R7, LSR #2
� BLGT    plot_sprite_1212
� :
� LDMFD   R13!,{R9,PC}
� :
� .weapon_vertical
� STMFD   R13!,{R9,R14}
  :
  MOV     R4, #7
  BL      pick_up
 & :
 0 SUB     R8,R8, #1
 : CMP     R8, #0
 D MOVLE   R5, #0
 N :
 X CMP     R5, #0
 b :
 l MOVGT   R0, #17
 v MOVGT   R1,R6, LSR #2
 � MOVGT   R2,R7, LSR #2
 � BLGT    plot_sprite_1212
 � :
 � LDMFD   R13!,{R9,PC}
 � :
 � .weapon_thrower
 � STMFD   R13!,{R9,R14}
 � :
 � MOV     R4, #8
 � BL      pick_up
 � :
 � SUB     R8,R8, #1
 � CMP     R8, #0
! MOVLE   R5, #0
! :
! CMP     R5, #0
!  :
!* MOVGT   R0, #18
!4 MOVGT   R1,R6, LSR #2
!> MOVGT   R2,R7, LSR #2
!H BLGT    plot_sprite_1212
!R :
!\ LDMFD   R13!,{R9,PC}
!f :
!p .weapon_bomb
!z STMFD   R13!,{R9,R14}
!� :
!� MOV     R4, #9
!� BL      pick_up
!� :
!� SUB     R8,R8, #1
!� CMP     R8, #0
!� MOVLE   R5, #0
!� :
!� CMP     R5, #0
!� :
!� MOVGT   R0, #19
!� MOVGT   R1,R6, LSR #2
!� MOVGT   R2,R7, LSR #2
" BLGT    plot_sprite_1212
" :
" LDMFD   R13!,{R9,PC}
"$ :
". .weapon_glue
"8 STMFD   R13!,{R9,R14}
"B :
"L MOV     R4, #10
"V BL      pick_up
"` :
"j SUB     R8,R8, #1
"t CMP     R8, #0
"~ MOVLE   R5, #0
"� :
"� CMP     R5, #0
"� :
"� MOVGT   R0, #20
"� MOVGT   R1,R6, LSR #2
"� MOVGT   R2,R7, LSR #2
"� BLGT    plot_sprite_1212
"� :
"� LDMFD   R13!,{R9,PC}
"� :
"� :
"�
 .pick_up
# LDR     R10, p1_x
#
 LDR     R11, p1_y
# MOV     R9,R6, ASR #2
# ADD     R9,R9, #8
#( SUB     R10,R9,R10
#2 ADD     R10,R10, #2
#< CMP     R10, #0
#F BLT     not_picked_up1
#P CMP     R10, #xext%+10
#Z BGT     not_picked_up1
#d MOV     R9,R7, ASR #2
#n ADD     R9,R9, #12
#x SUB     R11,R9,R11
#� ADD     R11,R11, #2
#� CMP     R11, #0
#� BLT     not_picked_up1
#� CMP     R11, #yext%+14
#� BGT     not_picked_up1
#� MOV     R5, #0
#� STR     R4, p1_weapon
#� MOV     R0, #2
#� MVN     R1, #14
#� MOV     R2, #ping%
#� MOV     R3, #0
#� SWI     "Sound_Control"
#� .not_picked_up1
$ LDR     R10, p2_x
$ LDR     R11, p2_y
$ MOV     R9,R6, ASR #2
$" ADD     R9,R9, #8
$, SUB     R10,R9,R10
$6 ADD     R10,R10, #2
$@ CMP     R10, #0
$J BLT     not_picked_up2
$T CMP     R10, #xext%+10
$^ BGT     not_picked_up2
$h MOV     R9,R7, ASR #2
$r ADD     R9,R9, #12
$| SUB     R11,R9,R11
$� ADD     R11,R11, #2
$� CMP     R11, #0
$� BLT     not_picked_up2
$� CMP     R11, #yext%+16
$� BGT     not_picked_up2
$� MOV     R5, #0
$� STR     R4, p2_weapon
$� MOV     R0, #2
$� MVN     R1, #14
$� MOV     R2, #ping%
$� MOV     R3, #0
$� SWI     "Sound_Control"
$� .not_picked_up2
% MOV     PC,R14
% :
% :
%&
 .p1_x
%0 EQUD    0
%:
 .p1_y
%D EQUD    0
%N
 .p2_x
%X EQUD    0
%b
 .p2_y
%l EQUD    0
%v :
%�	 .rnd
%� EQUD    ��-�
%� :
%� :
%� .update_cells
%� STMFD   R13!,{R0-R12,R14}
%� :
%� LDR     R9, adr_clist
%� .cloop1
%� LDMIA   R9,{R1-R8}
%� CMP     R1, #0
%� BEQ     cell_skip
%� CMP     R1, #1
& BLEQ    spray
& BEQ     cell_skip
& CMP     R1, #2
&  BLEQ    pistol
&* BEQ     cell_skip
&4 CMP     R1, #3
&> BLEQ    gun
&H BEQ     cell_skip
&R CMP     R1, #4
&\ BLEQ    mortar
&f BEQ     cell_skip
&p CMP     R1, #5
&z BLEQ    homing
&� BEQ     cell_skip
&� CMP     R1, #6
&� BLEQ    seeking
&� BEQ     cell_skip
&� CMP     R1, #7
&� BLEQ    vertical
&� BEQ     cell_skip
&� CMP     R1, #8
&� BLEQ    spray2
&� BEQ     cell_skip
&� CMP     R1, #9
&� BLEQ    spray3
&� BEQ     cell_skip
' CMP     R1, #10
' BLEQ    thrower
' BEQ     cell_skip
'$ CMP     R1, #11
'. BLEQ    explode
'8 BEQ     cell_skip
'B CMP     R1, #12
'L BLEQ    bomb
'V BEQ     cell_skip
'` CMP     R1, #13
'j BLEQ    glue
't .cell_skip
'~ STMIA   R9!,{R1-R8}
'� CMP     R1, #0
'� BGE     cloop1
'� :
'� LDMFD   R13!,{R0-R12,PC}
'� :
'� .spray
'� STMFD   R13!,{R9,R14}
'� :
'� SUB     R5,R5, #1
'� ADD     R2,R2,R4
'� ADD     R3,R3,R5
'� SUB     R6,R6, #1
( CMP     R6, #0
(
 MOVLE   R1, #0
( LDMLEFD R13!,{R9,PC}
( :
(( STMFD   R13!,{R1-R6}
(2 :
(< MOV     R2,R2, ASR #4
(F MOV     R3,R3, ASR #4
(P CMP     R2, #0
(Z BLT     no_spray
(d CMP     R3, #0
(n BLT     no_spray
(x CMP     R2, #320
(� BGE     no_spray
(� CMP     R3, #256
(� BGE     no_spray
(� RSB     R3,R3, #256
(� LDR     R4, screenstore
(� MOV     R5, #y_shift
(� ADD     R4,R4,R2
(� MLA     R4,R5,R3,R4
(� LDRB    R0,[R4]
(� CMP     R0, #0
(� �Q   R10, #1
(� MOVNE   R10, #0
(� BNE     no_spray
) LDR     R0, adr_flame_fade
) MOV     R9,R6, ASL #3
) CMP     R9, #255
)" MOVGT   R9, #255
), LDRB    R0,[R0,R9]
)6 STRB    R0,[R4]
)@ .no_spray
)J :
)T LDMFD   R13!,{R1-R6}
)^ CMP     R10, #0
)h RSBEQ   R5,R5, #0
)r �Q   R5,R5, ASR #1
)| LDMFD   R13!,{R9,PC}
)� :
)� .spray2
)� STMFD   R13!,{R9,R14}
)� :
)� SUB     R5,R5, #1
)� ADD     R2,R2,R4
)� ADD     R3,R3,R5
)� SUB     R6,R6, #1
)� CMP     R6, #0
)� MOVLE   R1, #0
)� LDMLEFD R13!,{R9,PC}
)� :
)� STMFD   R13!,{R1-R6}
* STMFD   R13!,{R6}
* :
* MOV     R6, #0
*& BL      check_death
*0 MOV     R6, #1
*: BL      check_death
*D LDMFD   R13!,{R6}
*N :
*X MOV     R2,R2, ASR #4
*b MOV     R3,R3, ASR #4
*l CMP     R2, #0
*v BLT     no_spray2
*� CMP     R3, #0
*� BLT     no_spray2
*� CMP     R2, #320
*� BGE     no_spray2
*� CMP     R3, #256
*� BGE     no_spray2
*� RSB     R3,R3, #256
*� SUB     R2,R2, #1
*� SUB     R3,R3, #1
*� LDR     R4, screenstore
*� MOV     R5, #y_shift
*� ADD     R4,R4,R2
*� MLA     R4,R5,R3,R4
+ LDRB    R0,[R4]
+ CMP     R0, #0
+ �Q   R10, #1
+  MOVNE   R10, #0
+* BNE     no_spray2
+4 LDR     R0, adr_flame_fade
+> MOV     R9,R6, ASL #3
+H CMP     R9, #255
+R MOVGT   R9, #255
+\ LDRB    R0,[R0,R9]
+f STRB    R0,[R4, #1]
+p ADD     R4,R4, #y_shift
+z STRB    R0,[R4]
+� STRB    R0,[R4, #1]
+� STRB    R0,[R4, #2]
+� ADD     R4,R4, #y_shift
+� STRB    R0,[R4, #1]
+� .no_spray2
+� :
+� LDMFD   R13!,{R1-R6}
+� CMP     R10, #0
+� RSBEQ   R5,R5, #0
+� RSBEQ   R4,R4, #0
+� LDMFD   R13!,{R9,PC}
+� :
+� .spray3
, STMFD   R13!,{R9,R14}
, :
, SUB     R5,R5, #1
,$ ADD     R2,R2,R4
,. ADD     R3,R3,R5
,8 �     R0,R6, #255<<8
,B SUB     R0,R0, #1
,L CMP     R0, #0
,V MOVLE   R1, #0
,` LDMLEFD R13!,{R9,PC}
,j BIC     R6,R6, #255<<8
,t �R     R6,R6,R0
,~ :
,� STMFD   R13!,{R1-R6}
,� :
,� MOV     R6, #0
,� BL      check_death
,� MOV     R6, #1
,� BL      check_death
,� :
,� MOV     R2,R2, ASR #4
,� MOV     R3,R3, ASR #4
,� CMP     R2, #0
,� BLT     no_spray3
,� CMP     R3, #0
- BLT     no_spray3
-
 CMP     R2, #320
- BGE     no_spray3
- CMP     R3, #256
-( BGE     no_spray3
-2 RSB     R3,R3, #256
-< SUB     R2,R2, #1
-F SUB     R3,R3, #1
-P LDR     R4, screenstore
-Z MOV     R5, #y_shift
-d ADD     R4,R4,R2
-n MLA     R4,R5,R3,R4
-x LDRB    R0,[R4]
-� CMP     R0, #0
-� �Q   R10, #1
-� MOVNE   R10, #0
-� BNE     no_spray3
-� MOV     R0, #255
-� STRB    R0,[R4, #1]
-� ADD     R4,R4, #y_shift
-� STRB    R0,[R4]
-� STRB    R0,[R4, #1]
-� STRB    R0,[R4, #2]
-� ADD     R4,R4, #y_shift
-� STRB    R0,[R4, #1]
-� .no_spray3
. :
. LDMFD   R13!,{R1-R6}
. CMP     R10, #0
." RSBEQ   R5,R5, #0
., RSBEQ   R4,R4, #0
.6 LDMFD   R13!,{R9,PC}
.@ :
.J .adr_flame_fade
.T EQUD    flame_fade%
.^ :
.h .adr_gun_fade
.r EQUD    gun_fade%
.| :
.�
 .thrower
.� STMFD   R13!,{R9,R14}
.� :
.� ADD     R2,R2,R4
.� ADD     R3,R3,R5
.� �     R7,R6, #255<<8
.� MOV     R7,R7, ASR #8
.� ADD     R7,R7, #1
.� CMP     R7, #15
.� MOVGE   R1, #0
.� LDMGEFD   R13!,{R9,PC}
.� BIC     R6,R6, #255<<8
.� �R     R6,R6,R7, ASL #8
/ :
/ STMFD   R13!,{R1-R6}
/ :
/& BL      check_death
/0 :
/: MOV     R2,R2, ASR #4
/D MOV     R3,R3, ASR #4
/N RSB     R3,R3, #256
/X LDR     R4, screenstore
/b MOV     R5, #y_shift
/l ADD     R4,R4,R2
/v MLA     R4,R5,R3,R4
/� LDRB    R0,[R4, #2]
/� CMP     R0, #0
/� �Q   R10, #1
/� MOVNE   R10, #0
/� BNE     no_thrower
/� RSB     R3,R3, #256
/� MOV     R0,R7
/� SUB     R1,R2, #4
/� SUB     R2,R3, #4
/� BL      plot_sprite_1208
/� .no_thrower
/� :
/� LDMFD   R13!,{R1-R6}
0 CMP     R10, #0
0 �Q   R1, #0
0 LDMFD   R13!,{R9,PC}
0  :
0*
 .explode
04 STMFD   R13!,{R9,R14}
0> :
0H ADD     R2,R2,R4
0R ADD     R3,R3,R5
0\ �     R7,R6, #255<<8
0f MOV     R7,R7, ASR #8
0p ADD     R7,R7, #1
0z CMP     R7, #15
0� MOVGE   R1, #0
0� LDMGEFD   R13!,{R9,PC}
0� BIC     R6,R6, #255<<8
0� �R     R6,R6,R7, ASL #8
0� ADD     R7,R7, #8
0� :
0� STMFD   R13!,{R1-R6}
0� :
0� BL      check_death
0� :
0� MOV     R2,R2, ASR #4
0� MOV     R3,R3, ASR #4
0� RSB     R3,R3, #256
1 LDR     R4, screenstore
1 MOV     R5, #y_shift
1 ADD     R4,R4,R2
1$ MLA     R4,R5,R3,R4
1. LDRB    R0,[R4, #2]
18 CMP     R0, #0
1B �Q   R10, #1
1L MOVNE   R10, #0
1V BNE     no_explode
1` RSB     R3,R3, #256
1j MOV     R0,R7
1t SUB     R1,R2, #8
1~ SUB     R2,R3, #8
1� BL      plot_sprite_2016
1� .no_explode
1� :
1� LDMFD   R13!,{R1-R6}
1� CMP     R10, #0
1� LDMFD   R13!,{R9,PC}
1� :
1� .pistol
1� STMFD   R13!,{R9,R14}
1� :
1� ADD     R2,R2,R4
1� ADD     R3,R3,R5
2 CMP     R4, #0
2
 MOVLT   R7, #1
2 MOVGT   R7, #0
2 :
2( STMFD   R13!,{R1-R6}
22 :
2< BL      check_death
2F :
2P MOV     R2,R2, ASR #4
2Z MOV     R3,R3, ASR #4
2d RSB     R3,R3, #256
2n LDR     R4, screenstore
2x MOV     R5, #y_shift
2� ADD     R4,R4,R2
2� MLA     R4,R5,R3,R4
2� LDRB    R0,[R4, #2]
2� CMP     R0, #0
2� �Q   R10, #1
2� MOVNE   R10, #0
2� BNE     no_pistol
2� RSB     R3,R3, #256
2� MOV     R0,R7
2� SUB     R1,R2, #2
2� SUB     R2,R3, #2
2� BL      plot_sprite_0804
2�;LDR     R0, adr_gun_fade
3;MOV     R9, #255
3;LDRB    R0,[R0,R9]
3;STRB    R0,[R4]
3";STRB    R0,[R4, #1]
3, .no_pistol
36 :
3@ LDMFD   R13!,{R1-R6}
3J CMP     R10, #0
3T �Q   R1, #0
3^ LDMFD   R13!,{R9,PC}
3h :
3r	 .gun
3| STMFD   R13!,{R9,R14}
3� :
3� ADD     R2,R2,R4
3� ADD     R3,R3,R5
3� CMP     R4, #0
3� MOVLT   R7, #3
3� MOVGT   R7, #2
3� :
3� STMFD   R13!,{R1-R6}
3� :
3� MOV     R6, #0
3� BL      check_death
3� MOV     R6, #1
3� BL      check_death
4 :
4 MOV     R2,R2, ASR #4
4 MOV     R3,R3, ASR #4
4& RSB     R3,R3, #256
40 LDR     R4, screenstore
4: MOV     R5, #y_shift
4D ADD     R4,R4,R2
4N MLA     R4,R5,R3,R4
4X LDRB    R0,[R4]
4b CMP     R0, #0
4l �Q   R10, #1
4v MOVNE   R10, #0
4� BNE     no_gun
4� RSB     R3,R3, #256
4� MOV     R0,R7
4� SUB     R1,R2, #2
4� SUB     R2,R3, #2
4� BL      plot_sprite_0804
4�;LDR     R0, adr_gun_fade
4�;MOV     R9, #255
4�;LDRB    R0,[R0,R9]
4�;STRB    R0,[R4]
4� .no_gun
4� :
4� LDMFD   R13!,{R1-R6}
5 CMP     R10, #0
5 �Q   R1, #0
5 LDMFD   R13!,{R9,PC}
5  :
5* .mortar
54 STMFD   R13!,{R9,R14}
5> :
5H SUB     R5,R5, #1
5R MOV     R0, #32
5\ RSB     R0,R0, #0
5f CMP     R5,R0
5p MOVLT   R5,R0
5z ADD     R2,R2,R4
5� ADD     R3,R3,R5
5� :
5� STMFD   R13!,{R1-R6}
5� :
5� BL      check_death
5� :
5� MOV     R2,R2, ASR #4
5� MOV     R3,R3, ASR #4
5� RSB     R3,R3, #256
5� LDR     R4, screenstore
5� MOV     R5, #y_shift
5� ADD     R4,R4,R2
5� MLA     R4,R5,R3,R4
6 LDRB    R0,[R4]
6 CMP     R0, #0
6 �Q   R10, #1
6$ MOVNE   R10, #0
6. �Q   R0, #255
68 STREQB  R0,[R4]
6B STREQB  R0,[R4, #1]
6L ADD     R2,R4, #y_shift
6V STREQB  R0,[R2]
6` STREQB  R0,[R2, #1]
6j :
6t LDMFD   R13!,{R1-R6}
6~ CMP     R10, #0
6� BNE     end_mortar
6� SUB     R2,R2,R4, ASL #1
6� SUB     R3,R3,R5, ASL #1
6� MOV     R1,R2, ASR #4
6� MOV     R2,R3, ASR #4
6� RSB     R2,R2, #256
6� MOV     R9, #0
6�% LDR     R10, adr_explosion_spray
6� MOV     R0, #8
6� LDR     R8, rnd
6� �     R8,R8, #7
6� MOV     R6, #16<<8
7 MOV     R5, #32
7
 .mortar_loop1
7 LDRB    R3,[R10], #1
7 LDRB    R4,[R10], #1
7( MOV     R3,R3, LSL #24
72 MOV     R4,R4, LSL #24
7< MOV     R3,R3, ASR #24
7F MOV     R4,R4, ASR #24
7P �     R3,R3, R8
7Z �     R4,R4, R8
7d ADD     R6,R6,R3, ASL #8
7n ADD     R6,R6,R4, ASL #8
7x �     R6,R6, #31<<8
7� BL      add_cell
7� CMP     R9, #16
7� �Q   R0, #9
7� MOVGE   R5,R6
7� ADD     R9,R9, #1
7� CMP     R9, #64
7� BLE     mortar_loop1
7� MOV     R5, #1
7� MOV     R0, #1
7� MVN     R1, #14
7� MOV     R2, #explosion%
7� MOV     R3, #0
7� SWI     "Sound_Control"
8 MOV     R1, #0
8 .end_mortar
8 :
8" LDMFD   R13!,{R9,PC}
8, :
86
 .glue
8@ STMFD   R13!,{R9,R14}
8J :
8T SUB     R5,R5, #1
8^ MOV     R0, #256
8h RSB     R0,R0, #0
8r CMP     R5,R0
8| MOVLT   R5,R0
8� ADD     R2,R2,R4
8� ADD     R3,R3,R5, ASR #3
8� :
8� STMFD   R13!,{R1-R6}
8� :
8� MOV     R2,R2, ASR #4
8� MOV     R3,R3, ASR #4
8� RSB     R3,R3, #256
8� LDR     R4, screenstore
8� MOV     R5, #y_shift
8� ADD     R4,R4,R2
8� MLA     R4,R5,R3,R4
8� LDRB    R0,[R4]
9 CMP     R0, #0
9 �Q   R10, #1
9 MOVNE   R10, #0
9& �Q   R0, #247
90 STREQB  R0,[R4]
9: STREQB  R0,[R4, #1]
9D STREQB  R0,[R4, #2]
9N STREQB  R0,[R4, #3]
9X SUB     R4,R4, #y_shift
9b STREQB  R0,[R4]
9l STREQB  R0,[R4, #1]
9v STREQB  R0,[R4, #2]
9� STREQB  R0,[R4, #3]
9� SUB     R4,R4, #y_shift
9� STREQB  R0,[R4]
9� STREQB  R0,[R4, #1]
9� STREQB  R0,[R4, #2]
9� STREQB  R0,[R4, #3]
9� SUB     R4,R4, #y_shift
9� STREQB  R0,[R4]
9� STREQB  R0,[R4, #1]
9� STREQB  R0,[R4, #2]
9� STREQB  R0,[R4, #3]
9� :
9� LDMFD   R13!,{R1-R6}
: CMP     R10, #0
: SUBEQ   R2,R2,R4
: SUBEQ   R3,R3,R5, ASR #3
:  �Q   R4, #0
:* �Q   R5, #1
:4 CMPEQ   R6, #0
:> �Q   R6, #256
:H CMP     R6, #1
:R SUBGT   R6,R6, #1
:\ �Q   R1, #0
:f .end_glue
:p :
:z LDMFD   R13!,{R9,PC}
:� :
:� .adr_explosion_spray
:� EQUD    explosion_spray
:� :
:�
 .bomb
:� STMFD   R13!,{R9,R14}
:� :
:� MOV     R0, #256
:� RSB     R0,R0, #0
:� CMP     R5,R0
:� MOVLT   R5,R0
:� ADD     R2,R2,R4, ASR #2
:� ADD     R3,R3,R5, ASR #2
; CMP     R4, #0
; ADDLT   R4,R4, #1
; SUBGT   R4,R4, #1
;$ MOV     R10,R6
;. :
;8 STMFD   R13!,{R1-R6}
;B :
;L MOV     R2,R2, ASR #4
;V MOV     R3,R3, ASR #4
;` RSB     R3,R3, #256
;j  LDR     R4, adr_screenstore
;t LDR     R4,[R4]
;~ MOV     R5, #y_shift
;� ADD     R4,R4,R2
;� MLA     R4,R5,R3,R4
;� ADD     R0,R4, #y_shift
;� LDRB    R0,[R0]
;� CMP     R0, #0
;� SUBNE   R10,R10, #1
;� MOV     R0, #%00010111
;� SUB     R4,R4, #y_shift
;� STRB    R0,[R4, #1]
;� ADD     R4,R4, #y_shift
;� STRB    R0,[R4]
;� STRB    R0,[R4, #1]
< STRB    R0,[R4, #2]
<
 :
< LDMFD   R13!,{R1-R6}
<  CMP     R10, #bomb_pause%-1
<( ADDEQ   R3,R3, #4
<2 CMP     R10,R6
<< SUBLT   R2,R2,R4
<F SUBLT   R3,R3,R5, ASR #2
<P MOVLT   R4, #0
<Z MOVLT   R5, #0
<d SUBEQ   R5,R5, #4
<n MOVGT   R5, #0
<x MOV     R6,R10
<� CMP     R6, #0
<� BNE     end_bomb
<� MOV     R1,R2, ASR #4
<� MOV     R2,R3, ASR #4
<� ADD     R2,R2, #2
<� RSB     R2,R2, #256
<� MOV     R9, #0
<� MOV     R0, #8
<� LDR     R8, rnd
<� �     R8,R8, #7
<� MOV     R6, #16<<8
<� MOV     R5, #32
<�! ADR     R10, explosion_spray
= .bomb_loop1
= LDRB    R3,[R10], #1
= LDRB    R4,[R10], #1
=" MOV     R3,R3, LSL #24
=, MOV     R4,R4, LSL #24
=6 MOV     R3,R3, ASR #24
=@ MOV     R4,R4, ASR #24
=J �     R3,R3, R8
=T �     R4,R4, R8
=^ ADD     R6,R6,R3, ASL #8
=h ADD     R6,R6,R4, ASL #8
=r �     R6,R6, #31<<8
=| ADD     R3,R3,R3, ASR #1
=� ADD     R4,R4,R4, ASR #1
=� BL      add_cell
=� CMP     R9, #24
=� �Q   R0, #9
=� MOVGE   R5,R6
=� ADD     R9,R9, #1
=� CMP     R9, #32
=� BLE     bomb_loop1
=� MOV     R5, #1
=� MOV     R0, #1
=� MVN     R1, #14
=� MOV     R2, #explosion%
=� MOV     R3, #0
> SWI     "Sound_Control"
> MOV     R1, #0
> MOV     R5, #0
>& .end_bomb
>0 :
>: LDMFD   R13!,{R9,PC}
>D :
>N .adr_screenstore2
>X EQUD    screenstore
>b :
>l .homing
>v STMFD   R13!,{R9,R14}
>� :
>�;MOV     R9,R6, LSR #8
>�;�     R9,R9, #255
>�;SUB     R9,R9, #1
>�;BIC     R6,R6, #255<<8
>�;�R     R6,R6,R9, LSL #8
>�;CMP     R9, #0
>�;�Q   R1, #0
>� :
>� TST     R6, #1
>� LDREQ   R10, p1_x
>� LDREQ   R11, p1_y
>� LDRNE   R10, p2_x
? LDRNE   R11, p2_y
? ADD     R10,R10, #xext%/2
? ADD     R11,R11, #yext%/2
?  CMP     R2,R10, ASL #4
?* SUBGT   R4,R4, #1
?4 ADDLT   R4,R4, #1
?> CMP     R3,R11, ASL #4
?H SUBGT   R5,R5, #1
?R ADDLT   R5,R5, #1
?\# MOV     R0, #max_homing_speed%
?f CMP     R4,R0
?p SUBGT   R4,R0, #1
?z RSB     R0,R0, #0
?� CMP     R4,R0
?� ADDLT   R4,R0, #1
?�# MOV     R0, #max_homing_speed%
?� CMP     R5,R0
?� SUBGT   R5,R0, #1
?� RSB     R0,R0, #0
?� CMP     R5,R0
?� ADDLT   R5,R0, #1
?� ADD     R2,R2,R4
?� ADD     R3,R3,R5
?� MOV     R7, #0
?� CMN     R4, #10
?� ADDLT   R7,R7, #2
@ CMP     R4, #10
@ ADDGT   R7,R7, #4
@ CMN     R5, #10
@$ ADDLT   R7,R7, #12
@. CMP     R5, #10
@8 ADDGT   R7,R7, #6
@B :
@L ADD     R7,R7, #3
@V �     R0,R6, #%110
@` MOV     R0,R0, ASR #1
@j ADD     R0,R0, #1
@t �     R0,R0, #%11
@~ CMP     R0, #%1
@� ADDGT   R7,R7, #1
@� BIC     R6,R6, #%110
@� �R     R6,R6,R0, ASL #1
@� CMP     R7, #5
@� MOVLT   R7, #21
@� :
@� STMFD   R13!,{R1-R6}
@� :
@� BL      check_death
@� :
@� MOV     R2,R2, ASR #4
@� MOV     R3,R3, ASR #4
A RSB     R3,R3, #256
A
  LDR     R4, adr_screenstore
A LDR     R4,[R4]
A MOV     R5, #y_shift
A( ADD     R4,R4,R2
A2 MLA     R4,R5,R3,R4
A< LDRB    R0,[R4]
AF CMP     R0, #0
AP �Q   R10, #1
AZ MOVNE   R10, #0
Ad BNE     no_homing
An RSB     R3,R3, #256
Ax MOV     R0,R7
A� SUB     R1,R2, #2
A� SUB     R2,R3, #2
A� BL      plot_sprite_0804
A�;LDR     R0, adr_gun_fade
A�;MOV     R9,R6, LSR #8
A�;�     R9,R9, #255
A�;CMP     R9, #255
A�;MOVGT   R9, #255
A�;LDRB    R0,[R0,R9]
A�;STRB    R0,[R4]
A� .no_homing
A� :
A� LDMFD   R13!,{R1-R6}
B CMP     R10, #0
B BNE     end_homing
B MOV     R0, #11
B" MOV     R1,R2, ASR #4
B, MOV     R2,R3, ASR #4
B6 RSB     R2,R2, #256
B@ RSB     R3,R4, #0
BJ RSB     R4,R5, #0
BT MOV     R3,R3, ASR #2
B^ MOV     R4,R4, ASR #2
Bh �     R5,R6, #1
Br BL      add_cell
B| MOV     R5, #1
B� MOV     R0, #1
B� MVN     R1, #10
B� MOV     R2, #explosion%
B� MOV     R3, #0
B� SWI     "Sound_Control"
B� MOV     R1, #0
B� .end_homing
B� LDMFD   R13!,{R9,PC}
B� :
B�
 .seeking
B� STMFD   R13!,{R9,R14}
B� :
B� TST     R6, #1
C LDREQ   R10, p1_x
C LDREQ   R11, p1_y
C LDRNE   R10, p2_x
C& LDRNE   R11, p2_y
C0 ADD     R10,R10, #xext%/2
C: ADD     R11,R11, #yext%/2
CD CMP     R2,R10, ASL #4
CN SUBGT   R4,R4, #1
CX ADDLT   R4,R4, #1
Cb CMP     R3,R11, ASL #4
Cl SUBGT   R5,R5, #1
Cv ADDLT   R5,R5, #1
C� MOV     R0, #16
C� CMP     R4,R0
C� SUBGT   R4,R4, #1
C� RSB     R0,R0, #0
C� CMP     R4,R0
C� ADDLT   R4,R4, #1
C� MOV     R0, #16
C� CMP     R5,R0
C� SUBGT   R5,R5, #1
C� RSB     R0,R0, #0
C� CMP     R5,R0
C� ADDLT   R5,R5, #1
C� :
D STMFD   R13!,{R1-R6}
D :
D BL      check_death
D  :
D* MOV     R2,R2, ASR #4
D4 MOV     R3,R3, ASR #4
D> RSB     R3,R3, #256
DH  LDR     R4, adr_screenstore
DR LDR     R4,[R4]
D\ MOV     R5, #y_shift
Df ADD     R4,R4,R2
Dp MLA     R4,R5,R3,R4
Dz LDRB    R0,[R4]
D� CMP     R0, #0
D� �Q   R10, #1
D� BEQ     post_recalc
D� MOV     R10, #0
D� LDMFD   R13,{R1-R6}
D� SUB     R2,R2,R4, ASL #1
D� SUB     R3,R3,R5, ASL #1
D� MOV     R2,R2, ASR #4
D� MOV     R3,R3, ASR #4
D� RSB     R3,R3, #256
D�  LDR     R4, adr_screenstore
D� LDR     R4,[R4]
D� MOV     R5, #y_shift
E ADD     R4,R4,R2
E MLA     R4,R5,R3,R4
E .post_recalc
E$ RSB     R3,R3, #256
E. MOV     R0, #4
E8 SUB     R1,R2, #2
EB SUB     R2,R3, #2
EL BL      plot_sprite_0804
EV .no_seeking
E` :
Ej LDMFD   R13!,{R1-R6}
Et CMP     R10, #0
E~ ADDNE   R2,R2,R4
E� ADDNE   R3,R3,R5
E� SUBEQ   R2,R2,R4, ASL #1
E� SUBEQ   R3,R3,R5, ASL #1
E� �Q   R4, #0
E� �Q   R5, #0
E� LDMFD   R13!,{R9,PC}
E� :
E� .vertical
E� STMFD   R13!,{R9,R14}
E� :
E� ADD     R2,R2,R4
E� ADD     R3,R3,R5
F :
F
 STMFD   R13!,{R1-R6}
F :
F BL      check_death
F( :
F2 MOV     R2,R2, ASR #4
F< MOV     R3,R3, ASR #4
FF RSB     R3,R3, #256
FP  LDR     R4, adr_screenstore
FZ LDR     R4,[R4]
Fd MOV     R5, #y_shift
Fn ADD     R4,R4,R2
Fx MLA     R4,R5,R3,R4
F� LDRB    R0,[R4]
F� CMP     R0, #0
F� �Q   R10, #1
F� MOVNE   R10, #0
F� BNE     no_vert
F� RSB     R3,R3, #256
F� MOV     R0, #22
F� SUB     R1,R2, #2
F� SUB     R2,R3, #2
F� BL      plot_sprite_0804
F�;LDR     R0, adr_gun_fade
F�;MOV     R9, #255
F�;LDRB    R0,[R0,R9]
G;STRB    R0,[R4]
G;ADD     R4,R4, #320
G;SUB     R4,R4, #1
G";STRB    R0,[R4]
G,;STRB    R0,[R4, #2]
G6
 .no_vert
G@ :
GJ LDMFD   R13!,{R1-R6}
GT CMP     R10, #0
G^ �Q   R1, #0
Gh LDMFD   R13!,{R9,PC}
Gr :
G| .check_death
G� TST     R6, #1
G� LDREQ   R10, p1_x
G� LDREQ   R11, p1_y
G� LDRNE   R10, p2_x
G� LDRNE   R11, p2_y
G� MOV     R9,R2, ASR #4
G� SUB     R10,R9,R10
G� CMN     R10, #2
G� BLT     not_dead
G� CMP     R10, #xext%+2
G� BGT     not_dead
G� MOV     R9,R3, ASR #4
G� SUB     R11,R9,R11
H CMN     R11, #2
H BLT     not_dead
H CMP     R11, #yext%+2
H& BGT     not_dead
H0 TST     R6, #1
H: BNE     dead_player2
HD LDR     R0, player1_alive
HN CMP     R0, #1
HX BEQ     not_dead
Hb MOV     R0, #1
Hl STR     R0, player1_alive
Hv MOV     R0, #3
H� MVN     R1, #14
H� MOV     R2, #scream%
H� MOV     R3, #0
H� SWI     "Sound_Control"
H� B       not_dead
H� .dead_player2
H� LDR     R0, player2_alive
H� CMP     R0, #1
H� BEQ     not_dead
H� MOV     R0, #1
H� STR     R0, player2_alive
H� MOV     R0, #3
H� MVN     R1, #14
I MOV     R2, #scream%
I MOV     R3, #0
I SWI     "Sound_Control"
I  .not_dead
I* MOV     PC,R14
I4 :
I> .player1_alive
IH EQUD    0
IR .player2_alive
I\ EQUD    0
If :
Ip .explosion_spray
Iz ]
I� � a%=1 � 64
I� r%=�(20)+28
I� ang%=�(360)
I� x%=��(ang%)*r%
I� y%=��(ang%)*r%
I�! � x%<0 � x%=(x% � 128) � 255
I�! � y%<0 � y%=(y% � 128) � 255
I� [OPT pass%
I� EQUB    x%
I� EQUB    y%
I� ]
I� �
I� [OPT pass%
J
 ALIGN
J :
J .end_game
J$ EQUD    0
J. .adr_screenstore
J8 EQUD    screenstore
JB .adr_clist2
JL EQUD    clist%
JV :
J` :
Jj :
Jt .add_cell
J~ STMFD   R13!,{R0-R12,R14}
J� :
J� RSB     R2,R2, #256
J� MOV     R1,R1, ASL #4
J� MOV     R2,R2, ASL #4
J� :
J� LDR     R9, adr_clist2
J� .sloop1
J� LDR     R8,[R9]
J� CMP     R8, #0
J� STMEQIA R9,{R0-R5}
J� BEQ     done_cell
J� ADD     R9,R9, #32
K BGE     sloop1
K
 .done_cell
K :
K LDMFD   R13!,{R0-R12,PC}
K( :
K2 :
K< :
KF .add_goodie
KP STMFD   R13!,{R0-R12,R14}
KZ :
Kd LDR     R9, rnd
Kn MOV     R9,R9, LSR #24
Kx �     R0,R9, #255
K� .goodie_loop
K� CMP     R0, #8
K� SUBGT   R0,R0, #8
K� BGT     goodie_loop
K� ADD     R0,R0, #4
K� �     R1,R9, #%111000
K� ADR     R2, positions
K� ADD     R2,R2,R1
K� LDR     R1,[R2]
K� LDR     R2,[R2, #4]
K� MOV     R3, #320
K� BL      add_sprite
K� :
L LDMFD   R13!,{R0-R12,PC}
L :
L .positions
L" ]
L, � a%=0 � 8
L6 [OPTpass%
L@ EQUD    0
LJ EQUD    0
LT ]
L^ �
Lh [OPT pass%
Lr :
L| .as_adr_slist
L� EQUD    slist%
L� :
L� .add_sprite
L� STMFD   R13!,{R0-R12,R14}
L� :
L� LDR     R9, as_adr_slist
L� .sloop1
L� LDR     R8,[R9]
L� CMP     R8, #0
L� ADDNE   R9,R9, #16
L� BNE     sloop1
L� STMEQIA R9,{R0-R3}
L� BEQ     done_cell
M .done_cell
M :
M LDMFD   R13!,{R0-R12,PC}
M& :
M0
 .p2_fire
M: EQUD    0
MD .explode_2
MN EQUD    0
MX :
Mb
 .player2
Ml STMFD   R13!,{R9,R14}
Mv :
M� CMP     R6, #32
M� MOVLT   R6, #32
M� CMP     R7, #32
M� MOVLT   R7, #32
M� CMP     R6, #1280-80
M� MOVGT   R6, #1280-80
M� CMP     R7, #1024-80
M� MOVGT   R7, #1024-80
M� :
M� LDR     R0, player2_alive
M� CMP     R0, #0
M� BEQ     play_player2
M� BNE     explode_player2
N :
N .explode_player2
N :
N  LDR     R0, explode_2
N* ADD     R0,R0, #1
N4 STR     R0, explode_2
N> CMP     R0, #7<<3
NH STRGT   R0, end_game
NR LDMGTFD R13!,{R9,PC}
N\ CMP     R0, #7<<1
Nf LDMGTFD R13!,{R9,PC}
Np MOV     R0,R0, ASR #1
Nz MOV     R1,R6, ASR #2
N� MOV     R2,R7, ASR #2
N� SUB     R1,R1, #4
N� BL      plot_sprite_2016
N� :
N� LDMFD   R13!,{R9,PC}
N� :
N� .play_player2
N� :
N� MOV     R1,R6, LSR #2
N� MOV     R2,R7, LSR #2
N� ADD     R1,R1, #xext%/2
N� BL      read_point
N� CMP     R0, #0
O SUBEQ   R7,R7, #4
O :
O MOV     R1,R6, LSR #2
O$ MOV     R2,R7, LSR #2
O. ADD     R1,R1, #xext%/3
O8 BL      read_point
OB CMP     R0, #0
OL ADDNE   R7,R7, #4
OV :
O` MOV     R1,R6, LSR #2
Oj MOV     R2,R7, LSR #2
Ot ADD     R1,R1, #xext%/3*2
O~ BL      read_point
O� CMP     R0, #0
O� ADDNE   R7,R7, #4
O� :
O� �     R10,R8, #255<<8
O� MOV     R10,R10, LSR #8
O� :
O� MOV     R1,R6, LSR #2
O� MOV     R2,R7, LSR #2
O� ADD     R1,R1, #xext%+1
O� ADD     R2,R2, #4
O� BL      read_point
O� CMP     R0, #0
P BNE     p2_not_right
P
 MOV     R1,R6, LSR #2
P MOV     R2,R7, LSR #2
P ADD     R1,R1, #xext%
P( ADD     R2,R2, #yext%-2
P2 BL      read_point
P< CMP     R0, #0
PF BNE     p2_not_right
PP MOV     R0, #129
PZ MOV     R1, #0
Pd SUB     R1,R1, #124
Pn MOV     R2, #255
Px SWI     "OS_Byte"
P� CMP     R1, #255
P� BNE     p2_not_right
P� ADD     R10,R10, #4
P� BIC     R8,R8, #1
P� .p2_not_right
P� :
P� MOV     R1,R6, LSR #2
P� MOV     R2,R7, LSR #2
P� SUB     R1,R1, #1
P� ADD     R2,R2, #4
P� BL      read_point
P� CMP     R0, #0
P� BNE     p2_not_left
Q MOV     R1,R6, LSR #2
Q MOV     R2,R7, LSR #2
Q SUB     R1,R1, #1
Q" ADD     R2,R2, #yext%-2
Q, BL      read_point
Q6 CMP     R0, #0
Q@ BNE     p2_not_left
QJ MOV     R0, #129
QT MOV     R1, #0
Q^ SUB     R1,R1, #123
Qh MOV     R2, #255
Qr SWI     "OS_Byte"
Q| CMP     R1, #255
Q� BNE     p2_not_left
Q� SUB     R10,R10, #4
Q� �R     R8,R8, #1
Q� .p2_not_left
Q� :
Q� CMP     R10, #128
Q� BEQ     p2_sideways
Q� BGT     p2_right
Q� MOV     R1,R6, LSR #2
Q� MOV     R2,R7, LSR #2
Q� SUB     R1,R1, #1
Q� ADD     R2,R2, #2
Q� BL      read_point
R CMP     R0, #0
R MOVNE   R10, #128
R MOV     R1,R6, LSR #2
R& MOV     R2,R7, LSR #2
R0 SUB     R1,R1, #1
R: ADD     R2,R2, #yext%-2
RD BL      read_point
RN CMP     R0, #0
RX MOVNE   R10, #128
Rb B       p2_sideways
Rl .p2_right
Rv MOV     R1,R6, LSR #2
R� MOV     R2,R7, LSR #2
R� ADD     R1,R1, #xext%
R� ADD     R2,R2, #2
R� BL      read_point
R� CMP     R0, #0
R� MOVNE   R10, #128
R� MOV     R1,R6, LSR #2
R� MOV     R2,R7, LSR #2
R� ADD     R1,R1, #xext%
R� ADD     R2,R2, #yext%-2
R� BL      read_point
R� CMP     R0, #0
R� MOVNE   R10, #128
S B       p2_sideways
S .p2_sideways
S CMP     R10, #128+25*2
S  MOVGT   R10, #128+25*2
S* CMP     R10, #128-25*2
S4 MOVLT   R10, #128-25*2
S> CMP     R10, #128
SH ADDLT   R10,R10, #1
SR SUBGT   R10,R10, #1
S\ BIC     R8,R8, #255<<8
Sf �R     R8,R8,R10, LSL #8
Sp SUB     R10,R10, #128
Sz ADD     R6,R6,R10, ASR #3
S� :
S� �     R10,R8, #255<<16
S� MOV     R10,R10, LSR #16
S� :
S� MOV     R1,R6, LSR #2
S� MOV     R2,R7, LSR #2
S� ADD     R1,R1, #xext%/2
S� ADD     R2,R2, #yext%
S� BL      read_point
S� CMP     R0, #0
S� BNE     p2_not_up
S�;MOV     R1,R6, LSR #2
S�;MOV     R2,R7, LSR #2
T;ADD     R1,R1, #xext%/2
T;ADD     R2,R2, #yext%
T;BL      read_point
T$;CMP     R0, #0
T.;BNE     p2_not_up
T8 MOV     R0, #129
TB MOV     R1, #0
TL SUB     R1,R1, #27
TV MOV     R2, #255
T` SWI     "OS_Byte"
Tj CMP     R1, #255
Tt ADDEQ   R10,R10, #4
T~ .p2_not_up
T� :
T� MOV     R1,R6, LSR #2
T� MOV     R2,R7, LSR #2
T� ADD     R1,R1, #xext%-2
T� BL      read_point
T� CMP     R0, #0
T� BNE     p2_not_down
T� MOV     R1,R6, LSR #2
T� MOV     R2,R7, LSR #2
T� ADD     R1,R1, #2
T� BL      read_point
T� CMP     R0, #0
U BNE     p2_not_down
U
 MOV     R0, #129
U MOV     R1, #0
U SUB     R1,R1, #109
U( MOV     R2, #255
U2 SWI     "OS_Byte"
U< CMP     R1, #255
UF SUBEQ   R10,R10, #2
UP .p2_not_down
UZ :
Ud SUB     R10,R10, #1
Un :
Ux CMP     R10, #128
U� BEQ     p2_ud
U� BGT     p2_up
U� MOV     R1,R6, LSR #2
U� MOV     R2,R7, LSR #2
U� ADD     R1,R1, #xext%/2
U� SUB     R2,R2, #1
U� BL      read_point
U� CMP     R0, #0
U� MOVNE   R10, #128
U� B       p2_ud
U� .p2_up
U� MOV     R1,R6, LSR #2
U� MOV     R2,R7, LSR #2
V ADD     R1,R1, #xext%/2+2
V ADD     R2,R2, #yext%
V BL      read_point
V" CMP     R0, #0
V, MOVNE   R10, #128
V6 MOV     R1,R6, LSR #2
V@ MOV     R2,R7, LSR #2
VJ ADD     R1,R1, #xext%/2-2
VT ADD     R2,R2, #yext%
V^ BL      read_point
Vh CMP     R0, #0
Vr MOVNE   R10, #128
V| B       p2_ud
V� .p2_ud
V� CMP     R10, #128+11*4
V� MOVGT   R10, #128+11*4
V� CMP     R10, #128-8*4
V� MOVLT   R10, #128-8*4
V� CMP     R10, #128
V� BIC     R8,R8, #255<<16
V� �R     R8,R8,R10, LSL #16
V� SUB     R10,R10, #128
V� ADD     R7,R7,R10, ASR #2
V� :
V� LDR     R0, adr_p2_weapon
V� LDR     R0,[R0]
W CMP     R0, #2
W BEQ     p2_fire_pistol
W CMP     R0, #3
W& BEQ     p2_fire_gun
W0 CMP     R0, #4
W: BEQ     p2_fire_mortar
WD CMP     R0, #5
WN BEQ     p2_fire_homing
WX CMP     R0, #6
Wb BEQ     p2_fire_seeking
Wl CMP     R0, #7
Wv BEQ     p2_fire_vertical
W� CMP     R0, #8
W� BEQ     p2_fire_flame
W� CMP     R0, #9
W� BEQ     p2_fire_bomb
W� CMP     R0, #10
W� BEQ     p2_fire_glue
W� :
W� .p2_fire_pistol
W� LDR     R0, p2_fire
W� CMP     R0, #0
W� BEQ     p2_pistol_shot
W� MOV     R0, #129
W� MOV     R1, #0
X SUB     R1,R1, #59
X MOV     R2, #255
X SWI     "OS_Byte"
X  CMP     R1, #255
X* MOVNE   R0, #0
X4 STRNE   R0, p2_fire
X> B       p2_not_fire_pistol
XH .p2_pistol_shot
XR MOV     R0, #129
X\ MOV     R1, #0
Xf SUB     R1,R1, #59
Xp MOV     R2, #255
Xz SWI     "OS_Byte"
X� CMP     R1, #255
X� BNE     p2_not_fire_pistol
X� MOV     R0, #2
X� MOV     R1,R6, LSR #2
X� MOV     R2,R7, LSR #2
X� ADD     R1,R1, #xext%
X� ADD     R2,R2, #yext%/4*2
X� RSB     R2,R2, #256
X� MOV     R3, #80
X� MOV     R4, #0
X� MOV     R5, #0
X� TST     R8, #1
X� RSBNE   R3,R3, #0
Y SUBNE   R1,R1, #xext%
Y BL      add_cell
Y MOV     R5, #2
Y$ MOV     R0, #1
Y. STR     R0, p2_fire
Y8 MOV     R0, #7
YB MVN     R1, #14
YL MOV     R2, #12800
YV MOV     R3, #0
Y` SWI     "Sound_Control"
Yj .p2_not_fire_pistol
Yt B       p2_end_fire
Y~ :
Y� .p2_fire_gun
Y� MOV     R0, #129
Y� MOV     R1, #0
Y� SUB     R1,R1, #59
Y� MOV     R2, #255
Y� SWI     "OS_Byte"
Y� CMP     R1, #255
Y� BNE     p2_not_fire_gun
Y� LDR     R0, p2_fire
Y� ADD     R0,R0, #1
Y� �     R0,R0, #%11
Y� STR     R0, p2_fire
Z TST     R0, #%11
Z
 BNE     p2_not_fire_gun
Z MOV     R0, #3
Z MOV     R1,R6, LSR #2
Z( MOV     R2,R7, LSR #2
Z2 ADD     R1,R1, #xext%
Z< ADD     R2,R2, #yext%/4*2
ZF RSB     R2,R2, #256
ZP MOV     R3, #80
ZZ LDR     R5, adr_rnd
Zd LDR     R5,[R5]
Zn �     R4,R5, #%1111
Zx SUB     R4,R4, #%0111
Z� �     R5,R5, #%110000
Z� MOV     R5,R5, LSR #4
Z� ADD     R1,R1,R5
Z� MOV     R5, #0
Z� TST     R8, #1
Z� RSBNE   R3,R3, #0
Z� SUBNE   R1,R1, #xext%+2
Z� BL      add_cell
Z� MOV     R5, #2
Z� MOV     R0, #8
Z� MVN     R1, #12
Z� MOV     R2, #12800
Z� MOV     R3, #0
[ SWI     "Sound_Control"
[ .p2_not_fire_gun
[ B       p2_end_fire
[" :
[, .p2_fire_mortar
[6;LDR     R0, p2_fire
[@;CMP     R0, #0
[J;BEQ     p2_mortar_shot
[T;MOV     R0, #129
[^;MOV     R1, #0
[h;SUB     R1,R1, #59
[r;MOV     R2, #255
[|;SWI     "OS_Byte"
[�;CMP     R1, #255
[�;MOVNE   R0, #0
[�;STRNE   R0, p2_fire
[�;B       p2_not_fire_mortar
[�;.p2_mortar_shot
[� MOV     R0, #129
[� MOV     R1, #0
[� SUB     R1,R1, #59
[� MOV     R2, #255
[� SWI     "OS_Byte"
[� CMP     R1, #255
[� BNE     p2_not_fire_mortar
[� LDR     R0, p2_fire
\ ADD     R0,R0, #1
\ �     R0,R0, #%11111
\ STR     R0, p2_fire
\& TST     R0, #%11111
\0 BNE     p2_not_fire_mortar
\: MOV     R0, #4
\D MOV     R1,R6, LSR #2
\N MOV     R2,R7, LSR #2
\X ADD     R1,R1, #xext%
\b ADD     R2,R2, #yext%/4*2
\l RSB     R2,R2, #256
\v MOV     R3, #30
\� MOV     R4, #40
\� MOV     R5, #0
\� TST     R8, #1
\� RSBNE   R3,R3, #0
\� SUBNE   R1,R1, #xext%
\� BL      add_cell
\� MOV     R5, #2
\� MOV     R0, #1
\� STR     R0, p2_fire
\� .p2_not_fire_mortar
\� B       p2_end_fire
\� :
\� .p2_fire_homing
] .p2_homing_shot
] MOV     R0, #129
] MOV     R1, #0
]  SUB     R1,R1, #59
]* MOV     R2, #255
]4 SWI     "OS_Byte"
]> CMP     R1, #255
]H BNE     p2_not_fire_homing
]R LDR     R0, p2_fire
]\ ADD     R0,R0, #1
]f �     R0,R0, #%1111
]p STR     R0, p2_fire
]z TST     R0, #%1111
]� BNE     p2_not_fire_homing
]� MOV     R0, #5
]� MOV     R1,R6, LSR #2
]� MOV     R2,R7, LSR #2
]� ADD     R1,R1, #xext%
]� ADD     R2,R2, #yext%/4*2
]� RSB     R2,R2, #256
]� MOV     R3, #64
]� LDR     R4, adr_rnd
]� LDR     R4,[R4]
]� �     R4,R4, #15
]� SUB     R4,R4, #7
]�9 MOV     R5, #224<<8          ; Homing in on player 1
^ TST     R8, #1
^ RSBNE   R3,R3, #0
^ SUBNE   R1,R1, #xext%
^$ BL      add_cell
^. MOV     R5, #7
^8 MOV     R0, #8
^B MVN     R1, #10
^L MOV     R2, #8000
^V MOV     R3, #0
^` SWI     "Sound_Control"
^j .p2_not_fire_homing
^t B       p2_end_fire
^~ :
^� .p2_fire_seeking
^� .p2_seeking_shot
^� MOV     R0, #129
^� MOV     R1, #0
^� SUB     R1,R1, #59
^� MOV     R2, #255
^� SWI     "OS_Byte"
^� CMP     R1, #255
^�  BNE     p2_not_fire_seeking
^� MOV     R0, #6
^� MOV     R1,R6, LSR #2
^� MOV     R2,R7, LSR #2
_ ADD     R1,R1, #xext%*3/2
_
 ADD     R2,R2, #yext%/4*2
_ RSB     R2,R2, #256
_ MOV     R3, #32
_( MOV     R4, #0
_29 MOV     R5, #0               ; Homing in on player 1
_< TST     R8, #1
_F RSBNE   R3,R3, #0
_P SUBNE   R1,R1, #xext%*2
_Z BL      add_cell
_d MOV     R5, #2
_n MOV     R9, #2
_x LDR     R10, adr_p2_weapon
_� STR     R9,[R10]
_� MOV     R0, #8
_� MVN     R1, #14
_� MOV     R2, #5120
_� MOV     R3, #0
_� SWI     "Sound_Control"
_� MOV     R0, #1
_� STR     R0, p2_fire
_� .p2_not_fire_seeking
_� B       p2_end_fire
_� :
_� .p2_fire_vertical
_� LDR     R0, p2_fire
` CMP     R0, #0
` BEQ     p2_vertical_shot
` MOV     R0, #129
`" MOV     R1, #0
`, SUB     R1,R1, #59
`6 MOV     R2, #255
`@ SWI     "OS_Byte"
`J CMP     R1, #255
`T MOVNE   R0, #0
`^ STRNE   R0, p2_fire
`h! B       p2_not_fire_vertical
`r .p2_vertical_shot
`| MOV     R0, #129
`� MOV     R1, #0
`� SUB     R1,R1, #59
`� MOV     R2, #255
`� SWI     "OS_Byte"
`� CMP     R1, #255
`�! BNE     p2_not_fire_vertical
`� MOV     R0, #7
`� MOV     R1,R6, LSR #2
`� MOV     R2,R7, LSR #2
`� ADD     R1,R1, #xext%
`� ADD     R2,R2, #yext%/4*2
`� RSB     R2,R2, #256
`� MOV     R3, #0
a MOV     R4, #64
a MOV     R5, #0
a TST     R8, #1
a& RSBNE   R3,R3, #0
a0 SUBNE   R1,R1, #xext%
a: BL      add_cell
aD MOV     R5, #2
aN MOV     R0, #1
aX STR     R0, p2_fire
ab MOV     R0, #7
al MVN     R1, #14
av MOV     R2, #10240
a� MOV     R3, #0
a� SWI     "Sound_Control"
a� .p2_not_fire_vertical
a� B       p2_end_fire
a� :
a� .p2_fire_flame
a� MOV     R0, #129
a� MOV     R1, #0
a� SUB     R1,R1, #59
a� MOV     R2, #255
a� SWI     "OS_Byte"
a� CMP     R1, #255
a� BNE     p2_not_fire_flame
b MOV     R0, #10
b MOV     R1,R6, LSR #2
b MOV     R2,R7, LSR #2
b  ADD     R1,R1, #xext%
b* ADD     R2,R2, #yext%/4*2
b4 RSB     R2,R2, #256
b> MOV     R3, #72
bH LDR     R4, adr_rnd
bR LDR     R4,[R4]
b\ �     R4,R4, #7
bf SUB     R4,R4, #1
bp MOV     R5,R5, LSR #4
bz ADD     R1,R1,R5
b� MOV     R5, #0
b� TST     R8, #1
b� RSBNE   R3,R3, #0
b� SUBNE   R1,R1, #xext%
b� BL      add_cell
b� .p2_not_fire_flame
b� B       p2_end_fire
b� :
b� .p2_fire_bomb
b� MOV     R0, #129
b� MOV     R1, #0
b� SUB     R1,R1, #59
b� MOV     R2, #255
c SWI     "OS_Byte"
c CMP     R1, #255
c BNE     p2_not_fire_bomb
c$ LDR     R0, p2_fire
c. ADD     R0,R0, #1
c8 CMP     R0, #10
cB MOVGT   R0, #0
cL STR     R0, p2_fire
cV CMP     R0, #0
c` BNE     p2_not_fire_bomb
cj MOV     R0, #12
ct MOV     R1,R6, LSR #2
c~ MOV     R2,R7, LSR #2
c� ADD     R1,R1, #xext%+1
c� ADD     R2,R2, #yext%/4*2
c� RSB     R2,R2, #256
c� MOV     R3, #40
c� MOV     R4, #40
c� MOV     R5, #bomb_pause%
c� TST     R8, #1
c� RSBNE   R3,R3, #0
c� SUBNE   R1,R1, #xext%+2
c� BL      add_cell
c� MOV     R5, #2
c� MOV     R0, #1
d STR     R0, p2_fire
d
 .p2_not_fire_bomb
d B       p2_end_fire
d :
d( .p2_fire_glue
d2 MOV     R0, #129
d< MOV     R1, #0
dF SUB     R1,R1, #59
dP MOV     R2, #255
dZ SWI     "OS_Byte"
dd CMP     R1, #255
dn BNE     p2_not_fire_glue
dx LDR     R0, p2_fire
d� ADD     R0,R0, #1
d� CMP     R0, #10
d� MOVGT   R0, #0
d� STR     R0, p2_fire
d� CMP     R0, #0
d� BNE     p2_not_fire_glue
d� MOV     R0, #13
d� MOV     R1,R6, LSR #2
d� MOV     R2,R7, LSR #2
d� ADD     R1,R1, #xext%+1
d� ADD     R2,R2, #yext%/4*2
d� RSB     R2,R2, #256
d� MOV     R3, #64
e LDR     R5, adr_rnd
e LDR     R5,[R5]
e �     R4,R5, #255
e" SUB     R4,R4, #7
e, MOV     R5, #0
e6 TST     R8, #1
e@ RSBNE   R3,R3, #0
eJ SUBNE   R1,R1, #xext%+2
eT BL      add_cell
e^ MOV     R5, #2
eh MOV     R0, #1
er STR     R0, p2_fire
e| .p2_not_fire_glue
e� B       p2_end_fire
e� :
e� .p2_end_fire
e� :
e� MOV     R0, #1
e� MOV     R1,R6, LSR #2
e� MOV     R2,R7, LSR #2
e� TST     R8, #1
e� ADDNE   R1,R1, #xext%
e� ADD     R2,R2, #yext%/4
e� RSB     R2,R2, #256
e� LDR     R3, adr_rnd
e� LDR     R3,[R3]
f TST     R3, #%10000
f SUBEQ   R2,R2, #1
f �     R3,R3, #15
f& SUB     R3,R3, #7
f0 MOV     R4, #0
f: SUB     R4,R4, #40
fD MOV     R5, #32
fN BL      add_cell
fX MOV     R5, #2
fb :
fl �     R0,R8, #1
fv ADD     R0,R0, #2
f� MOV     R1,R6, LSR #2
f� MOV     R2,R7, LSR #2
f� LDR     R3, adr_p2_x
f� STR     R1,[R3]
f� LDR     R3, adr_p2_y
f� STR     R2,[R3]
f� BL      plot_sprite_1616
f� :
f� LDMFD   R13!,{R9,PC}
f� :
f� .adr_p2_x
f� EQUD    p2_x
f� .adr_p2_y
g EQUD    p2_y
g .adr_p2_weapon
g EQUD    p2_weapon
g  .adr_p1_weapon
g* EQUD    p1_weapon
g4
 .p1_fire
g> EQUD    0
gH .explode_1
gR EQUD    0
g\ :
gf
 .player1
gp STMFD   R13!,{R9,R14}
gz :
g� CMP     R6, #32
g� MOVLT   R6, #32
g� CMP     R7, #32
g� MOVLT   R7, #32
g� CMP     R6, #1280-64
g� MOVGT   R6, #1280-64
g� CMP     R7, #1024-64
g� MOVGT   R7, #1024-64
g� :
g� LDR     R0, player1_alive
g� CMP     R0, #0
g� BEQ     play_player1
g� BNE     explode_player1
h :
h .explode_player1
h LDR     R0, explode_1
h$ ADD     R0,R0, #1
h. STR     R0, explode_1
h8 CMP     R0, #7<<3
hB STRGT   R0, end_game
hL LDMGTFD R13!,{R9,PC}
hV CMP     R0, #7<<1
h` LDMGTFD R13!,{R9,PC}
hj MOV     R0,R0, ASR #1
ht MOV     R1,R6, ASR #2
h~ MOV     R2,R7, ASR #2
h� SUB     R1,R1, #4
h� BL      plot_sprite_2016
h� :
h� LDMFD   R13!,{R9,PC}
h� :
h� .play_player1
h� :
h� MOV     R1,R6, LSR #2
h� MOV     R2,R7, LSR #2
h� ADD     R1,R1, #xext%/2
h� BL      read_point
h� CMP     R0, #0
i SUBEQ   R7,R7, #4
i
 :
i MOV     R1,R6, LSR #2
i MOV     R2,R7, LSR #2
i( ADD     R1,R1, #xext%/3
i2 BL      read_point
i< CMP     R0, #0
iF ADDNE   R7,R7, #4
iP :
iZ MOV     R1,R6, LSR #2
id MOV     R2,R7, LSR #2
in ADD     R1,R1, #xext%/3*2
ix BL      read_point
i� CMP     R0, #0
i� ADDNE   R7,R7, #4
i� :
i� �     R10,R8, #255<<8
i� MOV     R10,R10, LSR #8
i� :
i� MOV     R1,R6, LSR #2
i� MOV     R2,R7, LSR #2
i� ADD     R1,R1, #xext%-1
i� ADD     R2,R2, #4
i� BL      read_point
i� CMP     R0, #0
i� BNE     p1_not_right
j MOV     R1,R6, LSR #2
j MOV     R2,R7, LSR #2
j ADD     R1,R1, #xext%
j" ADD     R2,R2, #yext%-2
j, BL      read_point
j6 CMP     R0, #0
j@ BNE     p1_not_right
jJ MOV     R0, #129
jT MOV     R1, #0
j^ SUB     R1,R1, #67
jh MOV     R2, #255
jr SWI     "OS_Byte"
j| CMP     R1, #255
j� BNE     p1_not_right
j� ADD     R10,R10, #4
j� BIC     R8,R8, #1
j� .p1_not_right
j� :
j� MOV     R1,R6, LSR #2
j� MOV     R2,R7, LSR #2
j� SUB     R1,R1, #1
j� ADD     R2,R2, #4
j� BL      read_point
j� CMP     R0, #0
j� BNE     p1_not_left
j� MOV     R1,R6, LSR #2
k MOV     R2,R7, LSR #2
k SUB     R1,R1, #1
k ADD     R2,R2, #yext%-2
k& BL      read_point
k0 CMP     R0, #0
k: BNE     p1_not_left
kD MOV     R0, #129
kN MOV     R1, #0
kX SUB     R1,R1, #98
kb MOV     R2, #255
kl SWI     "OS_Byte"
kv CMP     R1, #255
k� BNE     p1_not_left
k� SUB     R10,R10, #4
k� �R     R8,R8, #1
k� .p1_not_left
k� :
k� CMP     R10, #128
k� BEQ     p1_sideways
k� BGT     p1_right
k� MOV     R1,R6, LSR #2
k� MOV     R2,R7, LSR #2
k� SUB     R1,R1, #1
k� ADD     R2,R2, #2
k� BL      read_point
l CMP     R0, #0
l MOVNE   R10, #128
l MOV     R1,R6, LSR #2
l  MOV     R2,R7, LSR #2
l* SUB     R1,R1, #1
l4 ADD     R2,R2, #yext%-2
l> BL      read_point
lH CMP     R0, #0
lR MOVNE   R10, #128
l\ B       p1_sideways
lf .p1_right
lp MOV     R1,R6, LSR #2
lz MOV     R2,R7, LSR #2
l� ADD     R1,R1, #xext%
l� ADD     R2,R2, #2
l� BL      read_point
l� CMP     R0, #0
l� MOVNE   R10, #128
l� MOV     R1,R6, LSR #2
l� MOV     R2,R7, LSR #2
l� ADD     R1,R1, #xext%
l� ADD     R2,R2, #yext%-2
l� BL      read_point
l� CMP     R0, #0
l� MOVNE   R10, #128
l� B       p1_sideways
m .p1_sideways
m CMP     R10, #128+25*2
m MOVGT   R10, #128+25*2
m$ CMP     R10, #128-25*2
m. MOVLT   R10, #128-25*2
m8 CMP     R10, #128
mB ADDLT   R10,R10, #1
mL SUBGT   R10,R10, #1
mV BIC     R8,R8, #255<<8
m` �R     R8,R8,R10, LSL #8
mj SUB     R10,R10, #128
mt ADD     R6,R6,R10, ASR #3
m~ :
m� �     R10,R8, #255<<16
m� MOV     R10,R10, LSR #16
m� :
m� MOV     R1,R6, LSR #2
m� MOV     R2,R7, LSR #2
m� ADD     R1,R1, #xext%/2+1
m� ADD     R2,R2, #yext%
m� BL      read_point
m� CMP     R0, #0
m� BNE     p1_not_up
m� MOV     R1,R6, LSR #2
m� MOV     R2,R7, LSR #2
n ADD     R1,R1, #xext%/2-1
n
 ADD     R2,R2, #yext%
n BL      read_point
n CMP     R0, #0
n( BNE     p1_not_up
n2 MOV     R0, #129
n< MOV     R1, #0
nF SUB     R1,R1, #68
nP MOV     R2, #255
nZ SWI     "OS_Byte"
nd CMP     R1, #255
nn ADDEQ   R10,R10, #4
nx .p1_not_up
n� :
n� MOV     R1,R6, LSR #2
n� MOV     R2,R7, LSR #2
n� ADD     R1,R1, #xext%-2
n� BL      read_point
n� CMP     R0, #0
n� BNE     p1_not_down
n� MOV     R1,R6, LSR #2
n� MOV     R2,R7, LSR #2
n� ADD     R1,R1, #2
n� BL      read_point
n� CMP     R0, #0
n� BNE     p1_not_down
o MOV     R0, #129
o MOV     R1, #0
o SUB     R1,R1, #83
o" MOV     R2, #255
o, SWI     "OS_Byte"
o6 CMP     R1, #255
o@ SUBEQ   R10,R10, #2
oJ .p1_not_down
oT :
o^ SUB     R10,R10, #1
oh :
or CMP     R10, #128
o| BEQ     p1_ud
o� BGT     p1_up
o� MOV     R1,R6, LSR #2
o� MOV     R2,R7, LSR #2
o� ADD     R1,R1, #xext%/2
o� SUB     R2,R2, #1
o� BL      read_point
o� CMP     R0, #0
o� MOVNE   R10, #128
o� B       p1_ud
o� .p1_up
o� MOV     R1,R6, LSR #2
o� MOV     R2,R7, LSR #2
o� ADD     R1,R1, #xext%/2+2
p ADD     R2,R2, #yext%
p BL      read_point
p CMP     R0, #0
p& MOVNE   R10, #128
p0 MOV     R1,R6, LSR #2
p: MOV     R2,R7, LSR #2
pD ADD     R1,R1, #xext%/2-2
pN ADD     R2,R2, #yext%
pX BL      read_point
pb CMP     R0, #0
pl MOVNE   R10, #128
pv B       p1_ud
p� .p1_ud
p� CMP     R10, #128+10*4
p� MOVGT   R10, #128+10*4
p� CMP     R10, #128-8*4
p� MOVLT   R10, #128-8*4
p� CMP     R10, #128
p� BIC     R8,R8, #255<<16
p� �R     R8,R8,R10, LSL #16
p� SUB     R10,R10, #128
p� ADD     R7,R7,R10, ASR #2
p� :
p� LDR     R0, adr_p1_weapon
p� LDR     R0,[R0]
q CMP     R0, #2
q BEQ     p1_fire_pistol
q CMP     R0, #3
q  BEQ     p1_fire_gun
q* CMP     R0, #4
q4 BEQ     p1_fire_mortar
q> CMP     R0, #5
qH BEQ     p1_fire_homing
qR CMP     R0, #6
q\ BEQ     p1_fire_seeking
qf CMP     R0, #7
qp BEQ     p1_fire_vertical
qz CMP     R0, #8
q� BEQ     p1_fire_flame
q� CMP     R0, #9
q� BEQ     p1_fire_bomb
q� CMP     R0, #10
q� BEQ     p1_fire_glue
q� :
q� .p1_fire_pistol
q� LDR     R0, p1_fire
q� CMP     R0, #0
q� BEQ     p1_pistol_shot
q� MOV     R0, #129
q� MOV     R1, #0
q� SUB     R1,R1, #84
r MOV     R2, #255
r SWI     "OS_Byte"
r CMP     R1, #255
r$ MOVNE   R0, #0
r. STRNE   R0, p1_fire
r8 B       p1_not_fire_pistol
rB .p1_pistol_shot
rL MOV     R0, #129
rV MOV     R1, #0
r` SUB     R1,R1, #84
rj MOV     R2, #255
rt SWI     "OS_Byte"
r~ CMP     R1, #255
r� BNE     p1_not_fire_pistol
r� MOV     R0, #2
r� MOV     R1,R6, LSR #2
r� MOV     R2,R7, LSR #2
r� ADD     R1,R1, #xext%
r� ADD     R2,R2, #yext%/4*2
r� RSB     R2,R2, #256
r� MOV     R3, #80
r� MOV     R4, #0
r� MOV     R5, #1
r� TST     R8, #1
r� RSBNE   R3,R3, #0
s SUBNE   R1,R1, #xext%
s
 BL      add_cell
s MOV     R5, #1
s MOV     R0, #1
s( STR     R0, p1_fire
s2 MOV     R0, #7
s< MVN     R1, #14
sF MOV     R2, #12800
sP MOV     R3, #0
sZ SWI     "Sound_Control"
sd .p1_not_fire_pistol
sn B       p1_end_fire
sx :
s� .p1_fire_gun
s� MOV     R0, #129
s� MOV     R1, #0
s� SUB     R1,R1, #84
s� MOV     R2, #255
s� SWI     "OS_Byte"
s� CMP     R1, #255
s� BNE     p1_not_fire_gun
s� LDR     R0, p1_fire
s� ADD     R0,R0, #1
s� �     R0,R0, #%11
s� STR     R0, p1_fire
s� TST     R0, #%11
t BNE     p1_not_fire_gun
t MOV     R0, #3
t MOV     R1,R6, LSR #2
t" MOV     R2,R7, LSR #2
t, ADD     R1,R1, #xext%
t6 ADD     R2,R2, #yext%/4*2
t@ RSB     R2,R2, #256
tJ MOV     R3, #80
tT LDR     R5, adr_rnd
t^ LDR     R5,[R5]
th �     R4,R5, #15
tr SUB     R4,R4, #7
t| �     R5,R5, #%110000
t� MOV     R5,R5, LSR #4
t� ADD     R1,R1,R5
t� MOV     R5, #1
t� TST     R8, #1
t� RSBNE   R3,R3, #0
t� SUBNE   R1,R1, #xext%+2
t� BL      add_cell
t� MOV     R5, #1
t� MOV     R0, #8
t� MVN     R1, #12
t� MOV     R2, #12800
t� MOV     R3, #0
t� SWI     "Sound_Control"
u .p1_not_fire_gun
u B       p1_end_fire
u :
u& .p1_fire_mortar
u0 MOV     R0, #129
u: MOV     R1, #0
uD SUB     R1,R1, #84
uN MOV     R2, #255
uX SWI     "OS_Byte"
ub CMP     R1, #255
ul BNE     p1_not_fire_mortar
uv LDR     R0, p1_fire
u� ADD     R0,R0, #1
u� �     R0,R0, #%11111
u� STR     R0, p1_fire
u� TST     R0, #%11111
u� BNE     p1_not_fire_gun
u� MOV     R0, #4
u� MOV     R1,R6, LSR #2
u� MOV     R2,R7, LSR #2
u� ADD     R1,R1, #xext%
u� ADD     R2,R2, #yext%/4*2
u� RSB     R2,R2, #256
u� MOV     R3, #30
u� MOV     R4, #40
v MOV     R5, #1
v TST     R8, #1
v RSBNE   R3,R3, #0
v  SUBNE   R1,R1, #xext%
v* BL      add_cell
v4 MOV     R5, #1
v> MOV     R0, #1
vH STR     R0, p1_fire
vR .p1_not_fire_mortar
v\ B       p1_end_fire
vf :
vp .p1_fire_homing
vz .p1_homing_shot
v� MOV     R0, #129
v� MOV     R1, #0
v� SUB     R1,R1, #84
v� MOV     R2, #255
v� SWI     "OS_Byte"
v� CMP     R1, #255
v� BNE     p1_not_fire_homing
v� LDR     R0, p1_fire
v� ADD     R0,R0, #1
v� �     R0,R0, #%1111
v� STR     R0, p1_fire
v� TST     R0, #%1111
v� BNE     p1_not_fire_homing
w MOV     R0, #5
w MOV     R1,R6, LSR #2
w MOV     R2,R7, LSR #2
w$ ADD     R1,R1, #xext%
w. ADD     R2,R2, #yext%/2
w8 RSB     R2,R2, #256
wB MOV     R3, #64
wL LDR     R4, adr_rnd
wV LDR     R4,[R4]
w` �     R4,R4, #15
wj SUB     R4,R4, #7
wt9 MOV     R5, #224<<8          ; Homing in on player 2
w~ �R     R5,R5, #1
w� TST     R8, #1
w� RSBNE   R3,R3, #0
w� SUBNE   R1,R1, #xext%
w� BL      add_cell
w� MOV     R5, #1
w� MOV     R0, #8
w� MVN     R1, #10
w� MOV     R2, #8000
w� MOV     R3, #0
w� SWI     "Sound_Control"
w� .p1_not_fire_homing
w� B       p1_end_fire
x :
x
 .p1_fire_seeking
x .p1_seeking_shot
x MOV     R0, #129
x( MOV     R1, #0
x2 SUB     R1,R1, #84
x< MOV     R2, #255
xF SWI     "OS_Byte"
xP CMP     R1, #255
xZ  BNE     p1_not_fire_seeking
xd MOV     R0, #6
xn MOV     R1,R6, LSR #2
xx MOV     R2,R7, LSR #2
x� ADD     R1,R1, #xext%*3/2
x� ADD     R2,R2, #yext%/4*2
x� RSB     R2,R2, #256
x� MOV     R3, #32
x� MOV     R4, #0
x�: MOV     R5, #1                ; Homing in on player 2
x� TST     R8, #1
x� RSBNE   R3,R3, #0
x� SUBNE   R1,R1, #xext%*2
x� BL      add_cell
x� MOV     R5, #1
x� MOV     R9, #2
x� LDR     R10, adr_p1_weapon
y STR     R9,[R10]
y MOV     R0, #8
y MVN     R1, #14
y" MOV     R2, #5120
y, MOV     R3, #0
y6 SWI     "Sound_Control"
y@ MOV     R0, #1
yJ STR     R0, p1_fire
yT .p1_not_fire_seeking
y^ B       p1_end_fire
yh :
yr .p1_fire_vertical
y| LDR     R0, p1_fire
y� CMP     R0, #0
y� BEQ     p1_vertical_shot
y� MOV     R0, #129
y� MOV     R1, #0
y� SUB     R1,R1, #84
y� MOV     R2, #255
y� SWI     "OS_Byte"
y� CMP     R1, #255
y� MOVNE   R0, #0
y� STRNE   R0, p1_fire
y�! B       p1_not_fire_vertical
y� .p1_vertical_shot
y� MOV     R0, #129
z MOV     R1, #0
z SUB     R1,R1, #84
z MOV     R2, #255
z& SWI     "OS_Byte"
z0 CMP     R1, #255
z:! BNE     p1_not_fire_vertical
zD MOV     R0, #7
zN MOV     R1,R6, LSR #2
zX MOV     R2,R7, LSR #2
zb ADD     R1,R1, #xext%
zl ADD     R2,R2, #yext%/4*2
zv RSB     R2,R2, #256
z� MOV     R3, #0
z� MOV     R4, #64
z� MOV     R5, #1
z� TST     R8, #1
z� RSBNE   R3,R3, #0
z� SUBNE   R1,R1, #xext%
z� BL      add_cell
z� MOV     R5, #2
z� MOV     R0, #1
z� STR     R0, p1_fire
z� MOV     R0, #7
z� MVN     R1, #14
z� MOV     R2, #10240
{ MOV     R3, #0
{ SWI     "Sound_Control"
{ .p1_not_fire_vertical
{  B       p1_end_fire
{* :
{4 .p1_fire_flame
{> .p1_flame_shot
{H MOV     R0, #129
{R MOV     R1, #0
{\ SUB     R1,R1, #84
{f MOV     R2, #255
{p SWI     "OS_Byte"
{z CMP     R1, #255
{� BNE     p1_not_fire_flame
{� MOV     R0, #10
{� MOV     R1,R6, LSR #2
{� MOV     R2,R7, LSR #2
{� ADD     R1,R1, #xext%
{� ADD     R2,R2, #yext%/4*2
{� RSB     R2,R2, #256
{� MOV     R3, #64
{� LDR     R4, adr_rnd
{� LDR     R4,[R4]
{� �     R4,R4, #7
{� SUB     R4,R4, #1
{� MOV     R5, #1
| TST     R8, #1
| RSBNE   R3,R3, #0
| SUBNE   R1,R1, #xext%
|$ BL      add_cell
|. .p1_not_fire_flame
|8 B       p1_end_fire
|B :
|L .p1_fire_glue
|V MOV     R0, #129
|` MOV     R1, #0
|j SUB     R1,R1, #84
|t MOV     R2, #255
|~ SWI     "OS_Byte"
|� CMP     R1, #255
|� BNE     p1_not_fire_glue
|� LDR     R0, p1_fire
|� ADD     R0,R0, #1
|� CMP     R0, #10
|� MOVGT   R0, #0
|� STR     R0, p1_fire
|� CMP     R0, #0
|� BNE     p1_not_fire_glue
|� MOV     R0, #13
|� MOV     R1,R6, LSR #2
|� MOV     R2,R7, LSR #2
} ADD     R1,R1, #xext%+1
}
 ADD     R2,R2, #yext%/4*2
} RSB     R2,R2, #256
} MOV     R3, #64
}( LDR     R5, adr_rnd
}2 LDR     R5,[R5]
}< �     R4,R5, #255
}F SUB     R4,R4, #7
}P MOV     R5, #0
}Z TST     R8, #1
}d RSBNE   R3,R3, #0
}n SUBNE   R1,R1, #xext%+2
}x BL      add_cell
}� MOV     R5, #1
}� MOV     R0, #1
}� STR     R0, p1_fire
}� .p1_not_fire_glue
}� B       p1_end_fire
}� :
}� .p1_fire_bomb
}� MOV     R0, #129
}� MOV     R1, #0
}� SUB     R1,R1, #84
}� MOV     R2, #255
}� SWI     "OS_Byte"
}� CMP     R1, #255
~ BNE     p1_not_fire_bomb
~ LDR     R0, p1_fire
~ ADD     R0,R0, #1
~" CMP     R0, #10
~, MOVGT   R0, #0
~6 STR     R0, p1_fire
~@ CMP     R0, #0
~J BNE     p1_not_fire_bomb
~T MOV     R0, #12
~^ MOV     R1,R6, LSR #2
~h MOV     R2,R7, LSR #2
~r ADD     R1,R1, #xext%+1
~| ADD     R2,R2, #yext%/4*2
~� RSB     R2,R2, #256
~� MOV     R3, #40
~� MOV     R4, #40
~� MOV     R5, #bomb_pause%
~� TST     R8, #1
~� RSBNE   R3,R3, #0
~� SUBNE   R1,R1, #xext%+2
~� BL      add_cell
~� MOV     R5, #1
~� MOV     R0, #1
~� STR     R0, p1_fire
~� .p1_not_fire_bomb
~� B       p1_end_fire
 :
 .p1_end_fire
 :
& MOV     R0, #1
0 MOV     R1,R6, LSR #2
: MOV     R2,R7, LSR #2
D TST     R8, #1
N ADDEQ   R1,R1, #1
X ADDNE   R1,R1, #xext%-1
b ADD     R2,R2, #yext%/4
l RSB     R2,R2, #256
v LDR     R3, adr_rnd
� LDR     R3,[R3]
� TST     R3, #%10000
� SUBEQ   R2,R2, #1
� �     R3,R3, #15
� SUB     R3,R3, #7
� MOV     R4, #0
� SUB     R4,R4, #40
� MOV     R5, #32
� BL      add_cell
� MOV     R5, #1
� :
� �     R0,R8, #1
� MOV     R1,R6, LSR #2
� MOV     R2,R7, LSR #2
� LDR     R9, adr_p1_x
� STR     R1,[R9]
�  LDR     R9, adr_p1_y
�* STR     R2,[R9]
�4 BL      plot_sprite_1616
�> :
�H LDMFD   R13!,{R9,PC}
�R :
�\
 .adr_rnd
�f EQUD    rnd
�p .adr_p1_weapon
�z EQUD    p1_weapon
�� .adr_p1_x
�� EQUD    p1_x
�� .adr_p1_y
�� EQUD    p1_y
�� :
�� ]
�� P%=clg_routine%
�� L%=clg_routine%+1020
�� [OPT pass%
�� :
�� .clg_adr_screenstore
�� EQUD    screenstore
�� .clg_screendata
� EQUD    screendata%
� :
�	 .clg
�$ STMFD   R13!,{R0-R12,R14}
�.# ADR     R0, clg_temp_reg_store
�8 STMIA   R0, {R13,R14}
�B% LDR     R13, clg_adr_screenstore
�L LDR     R13, [R13]
�V  LDR     R14, clg_screendata
�` MOV     R12, #0
�j .clg_loop1
�t ]
�~ � a%=1 � 26
�� [OPT pass%
�� LDMIA   R14!,{R0-R11}
�� STMIA   R13!,{R0-R11}
�� ]
�� �
�� [OPT pass%
�� ADD     R12,R12, #1
�� CMP     R12, #65
�� BLT     clg_loop1
�� ]
�� � a%=1 � 20
�� [OPT pass%
� LDMIA   R14!,{R0-R9}
�
 STMIA   R13!,{R0-R9}
� ]
� �
�( [OPT pass%
�2# ADR     R0, clg_temp_reg_store
�< LDMIA   R0, {R13,R14}
�F LDMFD   R13!,{R0-R12,PC}
�P :
�Z .clg_temp_reg_store
�d EQUD    0
�n EQUD    0
�x :
�� ]
�� P%=split_routine%
�� L%=split_routine%+1020
�� [OPT pass%
�� :
�� :
�� .split_screenstore
�� EQUD    screenstore%
�� .split_adr_screen
�� EQUD    screen
�� .split_adr_p1_y
�� EQUD    p1_y
�� .split_adr_p2_y
� EQUD    p2_y
� .split_p1_y1
� EQUD    0
�" .split_p2_y1
�, EQUD    0
�6 .split_p1_y2
�@ EQUD    0
�J .split_p2_y2
�T EQUD    0
�^ .split_p1_y3
�h EQUD    0
�r .split_p2_y3
�| EQUD    0
�� :
�� .split_screen
�� STMFD   R13!,{R0-R12,R14}
��% ADR     R0, split_temp_reg_store
�� STMIA   R0, {R13,R14}
��" LDR     R13, split_adr_screen
�� LDR     R13, [R13]
�� MOV     R12, #0
�� LDR     R0, split_adr_p1_y
�� LDR     R0,[R0]
�� LDR     R1, split_p1_y1
�� LDR     R2, split_p1_y2
�� LDR     R3, split_p1_y3
� STR     R0, split_p1_y1
� STR     R1, split_p1_y2
� STR     R2, split_p1_y3
�& ADD     R0,R0,R1
�0 ADD     R0,R0,R2
�: ADD     R0,R0,R3
�D ADD     R0,R0, #2
�N MOV     R0,R0, ASR #2
�X RSB     R0,R0, #256
�b SUB     R0,R0, #64
�l CMP     R0, #148
�v MOVGT   R0, #148
�� CMP     R0, #0
�� MOVLT   R0, #0
��# LDR     R14, split_screenstore
�� MOV     R1, #y_shift
�� MLA     R14,R1,R0,R14
�� .split_loop1
�� ]
�� � a%=1 � 10
�� [OPT pass%
�� LDMIA   R14!,{R0-R11}
�� STMIA   R13!,{R0-R11}
�� ]
�� �
� [OPT pass%
� ADD     R12,R12, #1
� CMP     R12, #72
�  BLT     split_loop1
�* ]
�4 � a%=0 � 11
�> [OPT pass%
�H MOV     a%, #127
�R �R     a%,a%,a%, LSL #8
�\ �R     a%,a%,a%, LSL #16
�f ]
�p �
�z [OPT pass%
�� MOV     R12, #0
�� .split_loop3
�� STMIA   R13!,{R0-R11}
�� ADD     R12,R12, #1
�� CMP     R12, #280
�� BLT     split_loop3
�� :
��" LDR     R13, split_adr_screen
�� LDR     R13, [R13]
�� ADD     R13,R13, #&B900
�� MOV     R12, #0
�� LDR     R0, split_adr_p2_y
�� LDR     R0,[R0]
� LDR     R1, split_p2_y1
� LDR     R2, split_p2_y2
� LDR     R3, split_p2_y3
�$ STR     R0, split_p2_y1
�. STR     R1, split_p2_y2
�8 STR     R2, split_p2_y3
�B ADD     R0,R0,R1
�L ADD     R0,R0,R2
�V ADD     R0,R0,R3
�` ADD     R0,R0, #2
�j MOV     R0,R0, ASR #2
�t RSB     R0,R0, #256
�~ SUB     R0,R0, #64
�� CMP     R0, #148
�� MOVGT   R0, #148
�� CMP     R0, #0
�� MOVLT   R0, #0
��# LDR     R14, split_screenstore
�� MOV     R1, #y_shift
�� MLA     R14,R1,R0,R14
�� .split_loop2
�� ]
�� � a%=1 � 10
�� [OPT pass%
�� LDMIA   R14!,{R0-R11}
� STMIA   R13!,{R0-R11}
�
 ]
� �
� [OPT pass%
�( ADD     R12,R12, #1
�2 CMP     R12, #72
�< BLT     split_loop2
�F% ADR     R0, split_temp_reg_store
�P LDMIA   R0, {R13,R14}
�Z LDMFD   R13!,{R0-R12,PC}
�d :
�n .split_temp_reg_store
�x EQUD    0
�� EQUD    0
�� :
�� :
�� ]
�� P%=sprite_routines%
�� L%=sprite_routines%+8191
�� [OPT pass%
�� :
�� :
�� :
�� .plot_sprite_1212
�� :
�� STMFD   R13!,{R0-R12,R14}
� :
�1 :                            ; R0 sprite no.
�. :                            ; R1 x-coord
�". :                            ; R2 y-coord
�, :
�6 RSB     R2,R2, #256
�@ :
�J CMP     R1, #0
�T BLE     psm_no_plot1212
�^ CMP     R2, #12
�h BLE     psm_no_plot1212
�r CMP     R1, #320-8
�| BGE     psm_no_plot1212
�� CMP     R2, #256
�� BGE     psm_no_plot1212
�� B       psm_plot1212
�� .psm_no_plot1212
�� LDMFD   R13!,{R0-R12,PC}
�� .psm_plot1212
�� :
��4 �     R3,R1, #%11          ; calculate x offset
��2 MOV     R0,R0, LSL #2        ; realise sprite
��. ADD     R0,R0, R3            ; add offset
��3 BIC     R1,R1, #%11          ; make x div by 4
�� :
��5 MOV     R7, #x_shift         ; get screen shifts
� MOV     R8, #y_shift
�@ LDR     R9, sprite_adr_screenstore; get screenstore address
� LDR     R9,[R9]
�& :
�0 MLA     R3,R7,R1,R9
�: MLA     R2,R8,R2,R3
�D :
�N= LDR     R7, adr_sprites1     ; get start address of data
�XC LDR     R8, spr_size1        ; get length of data for 1 sprite
�b> MLA     R0,R8,R0,R7          ; calculate position of data
�l> ADD     R1,R0,R8, LSR #1     ; calculate position of mask
�v :
�� MOV     R3, #1
�� STR     R3, s1212_counter
�� :
�� .s1212_sprite_loop
�� :
�� ]
�� � a%=1 � 12
�� [OPT pass%
�� :
��7 LDMIA   R2,{R3-R5}           ; get some background
��1 LDMIA   R1!,{R8-R10}         ; get some mask
��5 �     R3,R3,R8             ; mask off background
�� �     R4,R4,R9
� �     R5,R5,R10
�3 LDMIA   R0!,{R8-R10}         ; get some sprite
�? �R     R3,R3,R8             ; merge sprite with background
�  �R     R4,R4,R9
�* �R     R5,R5,R10
�47 STMIA   R2,{R3-R5}           ; store masked sprite
�> :
�H SUB     R2,R2, #y_shift
�R :
�\ ]
�f �
�p [OPT pass%
�z :
�� LDR     R3, s1212_counter
�� ADD     R3,R3, #1
�� STR     R3, s1212_counter
�� CMP     R3, #1
�� BLE     s1212_sprite_loop
�� :
�� LDMFD   R13!,{R0-R12,PC}
�� :
�� .s1212_counter
�� EQUD    0
�� :
�� .adr_sprites1
��7 EQUD    sprites1%            ; address of sprites1
� .spr_size1
�A EQUD    8/8*12*12*2          ; length of one sprite1 + mask1
� :
�$ :
�. :
�8 .plot_sprite_1264
�B :
�L STMFD   R13!,{R0-R12,R14}
�V :
�`1 :                            ; R0 sprite no.
�j. :                            ; R1 x-coord
�t. :                            ; R2 y-coord
�~ :
�� RSB     R2,R2, #256
�� :
�� CMP     R1, #0
�� BLE     psm_no_plot1264
�� CMP     R2, #32
�� BLE     psm_no_plot1264
�� CMP     R1, #320-8
�� BGE     psm_no_plot1264
�� CMP     R2, #256
�� BGE     psm_no_plot1264
�� B       psm_plot1264
�� .psm_no_plot1264
� LDMFD   R13!,{R0-R12,PC}
�
 .psm_plot1264
� :
�4 �     R3,R1, #%11          ; calculate x offset
�(2 MOV     R0,R0, LSL #2        ; realise sprite
�2. ADD     R0,R0, R3            ; add offset
�<3 BIC     R1,R1, #%11          ; make x div by 4
�F :
�P5 MOV     R7, #x_shift         ; get screen shifts
�Z MOV     R8, #y_shift
�d@ LDR     R9, sprite_adr_screenstore; get screenstore address
�n LDR     R9,[R9]
�x :
�� MLA     R3,R7,R1,R9
�� MLA     R2,R8,R2,R3
�� :
��= LDR     R7, adr_sprites3     ; get start address of data
��C LDR     R8, spr_size3        ; get length of data for 1 sprite
��> MLA     R0,R8,R0,R7          ; calculate position of data
��> ADD     R1,R0,R8, LSR #1     ; calculate position of mask
�� :
�� MOV     R3, #1
�� STR     R3, s1264_counter
�� :
�� .s1264_sprite_loop
�� :
� ]
� � a%=1 � 8
� [OPT pass%
�" :
�,7 LDMIA   R2,{R3-R5}           ; get some background
�61 LDMIA   R1!,{R8-R10}         ; get some mask
�@5 �     R3,R3,R8             ; mask off background
�J �     R4,R4,R9
�T �     R5,R5,R10
�^3 LDMIA   R0!,{R8-R10}         ; get some sprite
�h? �R     R3,R3,R8             ; merge sprite with background
�r �R     R4,R4,R9
�| �R     R5,R5,R10
��7 STMIA   R2,{R3-R5}           ; store masked sprite
�� :
�� SUB     R2,R2, #y_shift
�� :
�� ]
�� �
�� [OPT pass%
�� :
�� LDR     R3, s1264_counter
�� ADD     R3,R3, #1
�� STR     R3, s1264_counter
�� CMP     R3, #8
�� BLE     s1264_sprite_loop
� :
� LDMFD   R13!,{R0-R12,PC}
� :
�& .s1264_counter
�0 EQUD    0
�: :
�D .adr_sprites3
�N7 EQUD    sprites3%            ; address of sprites1
�X .spr_size3
�bA EQUD    8/8*12*64*2          ; length of one sprite1 + mask1
�l .sprite_adr_screenstore
�v EQUD    screenstore
�� :
�� :
�� :
�� .plot_sprite_2016
�� :
�� STMFD   R13!,{R0-R12,R14}
�� :
��1 :                            ; R0 sprite no.
��. :                            ; R1 x-coord
��. :                            ; R2 y-coord
�� :
�� RSB     R2,R2, #256
�� :
� CMP     R1, #0
� BLE     psm_no_plot2016
� CMP     R2, #16
�  BLE     psm_no_plot2016
�* CMP     R1, #320-16
�4 BGE     psm_no_plot2016
�> CMP     R2, #256
�H BGE     psm_no_plot2016
�R B       psm_plot2016
�\ .psm_no_plot2016
�f LDMFD   R13!,{R0-R12,PC}
�p .psm_plot2016
�z :
��4 �     R3,R1, #%11          ; calculate x offset
��2 MOV     R0,R0, LSL #2        ; realise sprite
��. ADD     R0,R0, R3            ; add offset
��3 BIC     R1,R1, #%11          ; make x div by 4
�� :
��5 MOV     R7, #x_shift         ; get screen shifts
�� MOV     R8, #y_shift
��@ LDR     R9, sprite_adr_screenstore; get screenstore address
�� LDR     R9,[R9]
�� :
�� MLA     R3,R7,R1,R9
�� MLA     R2,R8,R2,R3
�� :
�= LDR     R7, adr_sprites2     ; get start address of data
�C LDR     R8, spr_size2        ; get length of data for 1 sprite
�> MLA     R0,R8,R0,R7          ; calculate position of data
�$> ADD     R1,R0,R8, LSR #1     ; calculate position of mask
�. :
�8 MOV     R3, #1
�B STR     R3, s2016_counter
�L :
�V .s2016_sprite_loop
�` :
�j ]
�t � a%=1 � 4
�~ [OPT pass%
�� :
��7 LDMIA   R2,{R3-R7}           ; get some background
��1 LDMIA   R1!,{R8-R12}         ; get some mask
��5 �     R3,R3,R8             ; mask off background
�� �     R4,R4,R9
�� �     R5,R5,R10
�� �     R6,R6,R11
�� �     R7,R7,R12
��3 LDMIA   R0!,{R8-R12}         ; get some sprite
��? �R     R3,R3,R8             ; merge sprite with background
�� �R     R4,R4,R9
�� �R     R5,R5,R10
� �R     R6,R6,R11
�
 �R     R7,R7,R12
�7 STMIA   R2,{R3-R7}           ; store masked sprite
� :
�( SUB     R2,R2, #y_shift
�2 :
�< ]
�F �
�P [OPT pass%
�Z :
�d LDR     R3, s2016_counter
�n ADD     R3,R3, #1
�x STR     R3, s2016_counter
�� CMP     R3, #4
�� BLE     s2016_sprite_loop
�� :
�� LDMFD   R13!,{R0-R12,PC}
�� :
�� .s2016_counter
�� EQUD    0
�� :
�� .adr_sprites2
��7 EQUD    sprites2%            ; address of sprites2
�� .spr_size2
��A EQUD    8/8*16*20*2          ; length of one sprite2 + mask2
�� :
� :
� :
� .plot_sprite_0804
�" :
�, STMFD   R13!,{R0-R12,R14}
�6 :
�@1 :                            ; R0 sprite no.
�J. :                            ; R1 x-coord
�T. :                            ; R2 y-coord
�^ :
�h RSB     R2,R2, #256
�r :
�| CMP     R1, #0
�� BLE     psm_no_plot0804
�� CMP     R2, #4
�� BLE     psm_no_plot0804
�� CMP     R1, #320-4
�� BGE     psm_no_plot0804
�� CMP     R2, #256
�� BGE     psm_no_plot0804
�� B       psm_plot0804
�� .psm_no_plot0804
�� LDMFD   R13!,{R0-R12,PC}
�� .psm_plot0804
�� :
��4 �     R3,R1, #%11          ; calculate x offset
�2 MOV     R0,R0, LSL #2        ; realise sprite
�. ADD     R0,R0, R3            ; add offset
�3 BIC     R1,R1, #%11          ; make x div by 4
�& :
�05 MOV     R7, #x_shift         ; get screen shifts
�: MOV     R8, #y_shift
�D@ LDR     R9, sprite_adr_screenstore; get screenstore address
�N LDR     R9,[R9]
�X :
�b MLA     R3,R7,R1,R9
�l MLA     R2,R8,R2,R3
�v :
��= LDR     R7, adr_sprites4     ; get start address of data
��C LDR     R8, spr_size4        ; get length of data for 1 sprite
��> MLA     R0,R8,R0,R7          ; calculate position of data
��> ADD     R1,R0,R8, LSR #1     ; calculate position of mask
�� :
��;MOV     R3, #1
��;STR     R3, s0804_counter
�� :
�� .s0804_sprite_loop
�� :
�� ]
�� � a%=1 � 4
�� [OPT pass%
� :
�: LDMIA   R2,{R3,R4}              ; get some background
�4 LDMIA   R1!,{R8,R9}             ; get some mask
� 5 �     R3,R3,R8             ; mask off background
�* �     R4,R4,R9
�42 LDMIA   R0!,{R8,R9}         ; get some sprite
�>? �R     R3,R3,R8             ; merge sprite with background
�H �R     R4,R4,R9
�R7 STMIA   R2,{R3,R4}           ; store masked sprite
�\ :
�f SUB     R2,R2, #y_shift
�p :
�z ]
�� �
�� [OPT pass%
�� :
��;LDR     R3, s0804_counter
��;ADD     R3,R3, #1
��;STR     R3, s0804_counter
��;CMP     R3, #1
��;BLE     s0804_sprite_loop
�� :
�� LDMFD   R13!,{R0-R12,PC}
�� :
�� .s0804_counter
�� EQUD    0
� :
� .adr_sprites4
�7 EQUD    sprites4%            ; address of sprites4
�$ .spr_size4
�.A EQUD    8/8*8*4*2            ; length of one sprite4 + mask4
�8 :
�B :
�L :
�V .plot_sprite_1208
�` :
�j STMFD   R13!,{R0-R12,R14}
�t :
�~1 :                            ; R0 sprite no.
��. :                            ; R1 x-coord
��. :                            ; R2 y-coord
�� :
�� RSB     R2,R2, #256
�� :
�� CMP     R1, #0
�� BLE     psm_no_plot1208
�� CMP     R2, #8
�� BLE     psm_no_plot1208
�� CMP     R1, #320-8
�� BGE     psm_no_plot1208
�� CMP     R2, #256
� BGE     psm_no_plot1208
�
 B       psm_plot1208
� .psm_no_plot1208
� LDMFD   R13!,{R0-R12,PC}
�( .psm_plot1208
�2 :
�<4 �     R3,R1, #%11          ; calculate x offset
�F2 MOV     R0,R0, LSL #2        ; realise sprite
�P. ADD     R0,R0, R3            ; add offset
�Z3 BIC     R1,R1, #%11          ; make x div by 4
�d :
�n5 MOV     R7, #x_shift         ; get screen shifts
�x MOV     R8, #y_shift
��@ LDR     R9, sprite_adr_screenstore; get screenstore address
�� LDR     R9,[R9]
�� :
�� MLA     R3,R7,R1,R9
�� MLA     R2,R8,R2,R3
�� :
��= LDR     R7, adr_sprites5     ; get start address of data
��C LDR     R8, spr_size5        ; get length of data for 1 sprite
��> MLA     R0,R8,R0,R7          ; calculate position of data
��> ADD     R1,R0,R8, LSR #1     ; calculate position of mask
�� :
��;MOV     R3, #1
��;STR     R3, s1208_counter
� :
� .s1208_sprite_loop
� :
�" ]
�, � a%=1 � 8
�6 [OPT pass%
�@ :
�J7 LDMIA   R2,{R3,R4,R5}        ; get some background
�T1 LDMIA   R1!,{R8,R9,R10}      ; get some mask
�^5 �     R3,R3,R8             ; mask off background
�h �     R4,R4,R9
�r �     R5,R5,R10
�|3 LDMIA   R0!,{R8,R9,R10}      ; get some sprite
��? �R     R3,R3,R8             ; merge sprite with background
�� �R     R4,R4,R9
�� �R     R5,R5,R10
��7 STMIA   R2,{R3,R4,R5}        ; store masked sprite
�� :
�� SUB     R2,R2, #y_shift
�� :
�� ]
�� �
�� [OPT pass%
�� :
��;LDR     R3, s1208_counter
��;ADD     R3,R3, #1
�;STR     R3, s1208_counter
�;CMP     R3, #1
�;BLE     s1208_sprite_loop
�& :
�0 LDMFD   R13!,{R0-R12,PC}
�: :
�D .s1208_counter
�N EQUD    0
�X :
�b .adr_sprites5
�l7 EQUD    sprites5%            ; address of sprites5
�v .spr_size5
��A EQUD    8/8*12*8*2           ; length of one sprite5 + mask5
�� :
�� :
�� :
�� .plot_sprite_1616
�� :
�� STMFD   R13!,{R0-R12,R14}
�� :
��1 :                            ; R0 sprite no.
��. :                            ; R1 x-coord
��. :                            ; R2 y-coord
�� :
�� RSB     R2,R2, #256
� :
� CMP     R1, #0
� BLE     psm_no_plot1616
�  CMP     R2, #16
�* BLE     psm_no_plot1616
�4 CMP     R1, #320-16
�> BGE     psm_no_plot1616
�H CMP     R2, #256
�R BGE     psm_no_plot1616
�\ B       psm_plot1616
�f .psm_no_plot1616
�p LDMFD   R13!,{R0-R12,PC}
�z .psm_plot1616
�� :
��4 �     R3,R1, #%11          ; calculate x offset
��2 MOV     R0,R0, LSL #2        ; realise sprite
��. ADD     R0,R0, R3            ; add offset
��3 BIC     R1,R1, #%11          ; make x div by 4
�� :
��5 MOV     R7, #x_shift         ; get screen shifts
�� MOV     R8, #y_shift
��@ LDR     R9, sprite_adr_screenstore; get screenstore address
�� LDR     R9,[R9]
�� :
�� MLA     R3,R7,R1,R9
�� MLA     R2,R8,R2,R3
� :
�= LDR     R7, adr_sprites6     ; get start address of data
�C LDR     R8, spr_size6        ; get length of data for 1 sprite
�$> MLA     R0,R8,R0,R7          ; calculate position of data
�.> ADD     R1,R0,R8, LSR #1     ; calculate position of mask
�8 :
�B MOV     R3, #1
�L STR     R3, s1616_counter
�V :
�` .s1616_sprite_loop
�j :
�t ]
�~ � a%=1 � 4
�� [OPT pass%
�� :
��7 LDMIA   R2,{R3-R6}           ; get some background
��1 LDMIA   R1!,{R8-R11}         ; get some mask
��5 �     R3,R3,R8             ; mask off background
�� �     R4,R4,R9
�� �     R5,R5,R10
�� �     R5,R5,R11
��3 LDMIA   R0!,{R8-R11}         ; get some sprite
��? �R     R3,R3,R8             ; merge sprite with background
�� �R     R4,R4,R9
�� �R     R5,R5,R10
� �R     R6,R6,R11
�
7 STMIA   R2,{R3-R6}           ; store masked sprite
� :
� SUB     R2,R2, #y_shift
�( :
�2 ]
�< �
�F [OPT pass%
�P :
�Z LDR     R3, s1616_counter
�d ADD     R3,R3, #1
�n STR     R3, s1616_counter
�x CMP     R3, #4
�� BLE     s1616_sprite_loop
�� :
�� LDMFD   R13!,{R0-R12,PC}
�� :
�� .s1616_counter
�� EQUD    0
�� :
�� .adr_sprites6
��7 EQUD    sprites6%            ; address of sprites6
�� .spr_size6
��A EQUD    8/8*16*16*2          ; length of one sprite6 + mask6
�� :
�� :
� ]
� P%=fill_routines%
� L%=fill_routines%+8191
�" [OPT pass%
�, :
�6 :
�@ :
�J .fill_fill_1212
�T :
�^ STMFD   R13!,{R0-R12,R14}
�h :
�r/ :                            ; R0 fill no.
�|. :                            ; R1 x-coord
��. :                            ; R2 y-coord
�� :
�� RSB     R2,R2, #256
�� :
�� CMP     R1, #0
�� BLE     psm_no_fill1212
�� CMP     R2, #12
�� BLE     psm_no_fill1212
�� CMP     R1, #320-8
�� BGE     psm_no_fill1212
�� CMP     R2, #256
�� BGE     psm_no_fill1212
�� B       psm_fill1212
� .psm_no_fill1212
� LDMFD   R13!,{R0-R12,PC}
� .psm_fill1212
�& :
�05 MOV     R7, #x_shift         ; get screen shifts
�: MOV     R8, #y_shift
�D :
�N> LDR     R9, fill_adr_screenstore; get screenstore address
�X LDR     R9,[R9]
�b MLA     R3,R7,R1,R9
�l MLA     R0,R8,R2,R3
�v :
��6 LDR     R9, fill_screendata  ; get screen address
�� MLA     R3,R7,R1,R9
�� MLA     R1,R8,R2,R3
�� :
�� MOV     R3, #1
�� STR     R3, f1212_counter
�� :
�� .f1212_fill_loop
�� :
�� ]
�� � a%=1 � 12
�� [OPT pass%
�� :
�7 LDMIA   R1,{R3-R5}           ; get some background
�5 STMIA   R0,{R3-R5}           ; store masked fill
� :
�  SUB     R0,R0, #y_shift
�* SUB     R1,R1, #y_shift
�4 :
�> ]
�H �
�R [OPT pass%
�\ :
�f LDR     R3, f1212_counter
�p ADD     R3,R3, #1
�z STR     R3, f1212_counter
�� CMP     R3, #1
�� BLE     f1212_fill_loop
�� :
�� LDMFD   R13!,{R0-R12,PC}
�� :
�� .f1212_counter
�� EQUD    0
�� :
�� :
�� :
�� .fill_fill_1264
�� :
�� STMFD   R13!,{R0-R12,R14}
� :
�/ :                            ; R0 fill no.
�. :                            ; R1 x-coord
�$. :                            ; R2 y-coord
�. :
�8 RSB     R2,R2, #256
�B :
�L CMP     R1, #0
�V BLE     psm_no_fill1264
�` CMP     R2, #32
�j BLE     psm_no_fill1264
�t CMP     R1, #320-8
�~ BGE     psm_no_fill1264
�� CMP     R2, #256
�� BGE     psm_no_fill1264
�� B       psm_fill1264
�� .psm_no_fill1264
�� LDMFD   R13!,{R0-R12,PC}
�� .psm_fill1264
�� :
��5 MOV     R7, #x_shift         ; get screen shifts
�� MOV     R8, #y_shift
�� :
��> LDR     R9, fill_adr_screenstore; get screenstore address
�� LDR     R9,[R9]
� MLA     R3,R7,R1,R9
�
 MLA     R0,R8,R2,R3
� :
�6 LDR     R9, fill_screendata  ; get screen address
�( MLA     R3,R7,R1,R9
�2 MLA     R1,R8,R2,R3
�< :
�F MOV     R3, #1
�P STR     R3, f1264_counter
�Z :
�d .f1264_fill_loop
�n :
�x ]
�� � a%=1 � 8
�� [OPT pass%
�� :
��7 LDMIA   R1,{R3-R5}           ; get some background
��5 STMIA   R0,{R3-R5}           ; store masked fill
�� :
�� SUB     R0,R0, #y_shift
�� SUB     R1,R1, #y_shift
�� :
�� ]
�� �
�� [OPT pass%
�� :
� LDR     R3, f1264_counter
� ADD     R3,R3, #1
� STR     R3, f1264_counter
�" CMP     R3, #8
�, BLE     f1264_fill_loop
�6 :
�@ LDMFD   R13!,{R0-R12,PC}
�J :
�T .f1264_counter
�^ EQUD    0
�h :
�r .fill_screendata
�| EQUD    screendata%
�� .fill_adr_screenstore
�� EQUD    screenstore
�� :
�� :
�� :
�� .fill_fill_2016
�� :
�� STMFD   R13!,{R0-R12,R14}
�� :
��/ :                            ; R0 fill no.
��. :                            ; R1 x-coord
��. :                            ; R2 y-coord
�� :
� RSB     R2,R2, #256
� :
� CMP     R1, #0
�& BLE     psm_no_fill2016
�0 CMP     R2, #16
�: BLE     psm_no_fill2016
�D CMP     R1, #320-16
�N BGE     psm_no_fill2016
�X CMP     R2, #256
�b BGE     psm_no_fill2016
�l B       psm_fill2016
�v .psm_no_fill2016
�� LDMFD   R13!,{R0-R12,PC}
�� .psm_fill2016
�� :
��5 MOV     R7, #x_shift         ; get screen shifts
�� MOV     R8, #y_shift
�� :
��> LDR     R9, fill_adr_screenstore; get screenstore address
�� LDR     R9,[R9]
�� MLA     R3,R7,R1,R9
�� MLA     R0,R8,R2,R3
�� :
��6 LDR     R9, fill_screendata  ; get screen address
�� MLA     R3,R7,R1,R9
� MLA     R1,R8,R2,R3
� :
� MOV     R3, #1
�  STR     R3, f2016_counter
�* :
�4 .f2016_fill_loop
�> :
�H ]
�R � a%=1 � 4
�\ [OPT pass%
�f :
�p7 LDMIA   R1,{R3-R7}           ; get some background
�z5 STMIA   R0,{R3-R7}           ; store masked fill
�� :
�� SUB     R0,R0, #y_shift
�� SUB     R1,R1, #y_shift
�� :
�� ]
�� �
�� [OPT pass%
�� :
�� LDR     R3, f2016_counter
�� ADD     R3,R3, #1
�� STR     R3, f2016_counter
�� CMP     R3, #4
�� BLE     f2016_fill_loop
� :
� LDMFD   R13!,{R0-R12,PC}
� :
�$ .f2016_counter
�. EQUD    0
�8 :
�B :
�L :
�V .fill_fill_0804
�` :
�j STMFD   R13!,{R0-R12,R14}
�t :
�~/ :                            ; R0 fill no.
��. :                            ; R1 x-coord
��. :                            ; R2 y-coord
�� :
�� RSB     R2,R2, #256
�� :
�� CMP     R1, #0
�� BLE     psm_no_fill0804
�� CMP     R2, #4
�� BLE     psm_no_fill0804
�� CMP     R1, #320-4
�� BGE     psm_no_fill0804
�� CMP     R2, #256
� BGE     psm_no_fill0804
�
 B       psm_fill0804
� .psm_no_fill0804
� LDMFD   R13!,{R0-R12,PC}
�( .psm_fill0804
�2 :
�<5 MOV     R7, #x_shift         ; get screen shifts
�F MOV     R8, #y_shift
�P :
�Z> LDR     R9, fill_adr_screenstore; get screenstore address
�d LDR     R9,[R9]
�n MLA     R3,R7,R1,R9
�x MLA     R0,R8,R2,R3
�� :
��6 LDR     R9, fill_screendata  ; get screen address
�� MLA     R3,R7,R1,R9
�� MLA     R1,R8,R2,R3
�� :
�� .f0804_fill_loop
�� :
�� ]
�� � a%=1 � 4
�� [OPT pass%
�� :
��7 LDMIA   R1,{R3-R4}           ; get some background
��5 STMIA   R0,{R3-R4}           ; store masked fill
� :
� SUB     R0,R0, #y_shift
� SUB     R1,R1, #y_shift
�" :
�, ]
�6 �
�@ [OPT pass%
�J :
�T LDMFD   R13!,{R0-R12,PC}
�^ :
�h :
�r :
�| .fill_fill_1208
�� :
�� STMFD   R13!,{R0-R12,R14}
�� :
��/ :                            ; R0 fill no.
��. :                            ; R1 x-coord
��. :                            ; R2 y-coord
�� :
�� RSB     R2,R2, #256
�� :
�� CMP     R1, #0
�� BLE     psm_no_fill1208
�� CMP     R2, #8
�� BLE     psm_no_fill1208
� CMP     R1, #320-8
� BGE     psm_no_fill1208
� CMP     R2, #256
�& BGE     psm_no_fill1208
�0 B       psm_fill1208
�: .psm_no_fill1208
�D LDMFD   R13!,{R0-R12,PC}
�N .psm_fill1208
�X :
�b5 MOV     R7, #x_shift         ; get screen shifts
�l MOV     R8, #y_shift
�v :
��> LDR     R9, fill_adr_screenstore; get screenstore address
�� LDR     R9,[R9]
�� MLA     R3,R7,R1,R9
�� MLA     R0,R8,R2,R3
�� :
��6 LDR     R9, fill_screendata  ; get screen address
�� MLA     R3,R7,R1,R9
�� MLA     R1,R8,R2,R3
�� :
�� ]
�� � a%=1 � 8
�� [OPT pass%
�� :
�4 LDMIA   R1,{R3-R5}        ; get some background
�2 STMIA   R0,{R3-R5}        ; store masked fill
� :
�  SUB     R0,R0, #y_shift
�* SUB     R1,R1, #y_shift
�4 :
�> ]
�H �
�R [OPT pass%
�\ :
�f LDMFD   R13!,{R0-R12,PC}
�p :
�z :
�� :
�� .fill_fill_1616
�� :
�� STMFD   R13!,{R0-R12,R14}
�� :
�� RSB     R2,R2, #256
�� :
�� CMP     R1, #0
�� BLE     psm_no_fill1616
�� CMP     R2, #16
�� BLE     psm_no_fill1616
�� CMP     R1, #320-16
�� BGE     psm_no_fill1616
� CMP     R2, #256
� BGE     psm_no_fill1616
� B       psm_fill1616
�$ .psm_no_fill1616
�. LDMFD   R13!,{R0-R12,PC}
�8 .psm_fill1616
�B :
�L5 MOV     R7, #x_shift         ; get screen shifts
�V MOV     R8, #y_shift
�` :
�j> LDR     R9, fill_adr_screenstore; get screenstore address
�t LDR     R9,[R9]
�~ MLA     R3,R7,R1,R9
�� MLA     R0,R8,R2,R3
�� :
��6 LDR     R9, fill_screendata  ; get screen address
�� MLA     R3,R7,R1,R9
�� MLA     R1,R8,R2,R3
�� :
�� MOV     R3, #1
�� STR     R3, f1616_counter
�� :
�� .f1616_fill_loop
�� :
�� ]
� � a%=1 � 4
�
 [OPT pass%
� :
� LDMIA   R1,{R2-R5}
�( STMIA   R0,{R2-R5}
�2 :
�< SUB     R0,R0, #y_shift
�F SUB     R1,R1, #y_shift
�P :
�Z ]
�d �
�n [OPT pass%
�x :
�� LDR     R3, f1616_counter
�� ADD     R3,R3, #1
�� STR     R3, f1616_counter
�� CMP     R3, #4
�� BLE     f1616_fill_loop
�� :
�� LDMFD   R13!,{R0-R12,PC}
�� :
�� .f1616_counter
�� EQUD    0
�� :
�� :
�� :
� .fill_fill_0101
� :
� STMFD   R13!,{R0-R12,R14}
�" :
�, RSB     R2,R2, #256
�6 :
�@ CMP     R1, #0
�J BLE     psm_no_fill0101
�T CMP     R2, #0
�^ BLE     psm_no_fill0101
�h CMP     R1, #320
�r BGE     psm_no_fill0101
�| CMP     R2, #256
�� BGE     psm_no_fill0101
�� B       psm_fill0101
�� .psm_no_fill0101
�� LDMFD   R13!,{R0-R12,PC}
�� .psm_fill0101
�� :
��5 MOV     R7, #x_shift         ; get screen shifts
�� MOV     R8, #y_shift
�� :
��> LDR     R9, fill_adr_screenstore; get screenstore address
�� LDR     R9,[R9]
�� MLA     R3,R7,R1,R9
�� MLA     R0,R8,R2,R3
� :
�6 LDR     R9, fill_screendata  ; get screen address
� MLA     R3,R7,R1,R9
�& MLA     R1,R8,R2,R3
�0 :
�: LDRB    R2,[R1]
�D STRB    R2,[R0]
�N :
�X LDMFD   R13!,{R0-R12,PC}
�b :
�l ]
�v�
��:
��!cl_adr_screen=screen
��� a%=0 � 255
�� r%=��(a%*256^3)
�� g%=�(a%*256)
��
 b%=a%
��L ș "ColourTrans_ReturnColourNumber",(r%<<8)+(g%<<16)+(b%<<24) � colour%
�� !(flame_fade%+a%)=colour%
���
��:
��� a%=0 � 255
�� r%=64+a%/2
�� g%=128+a%/2
� b%=128+a%/2
�L ș "ColourTrans_ReturnColourNumber",(r%<<8)+(g%<<16)+(b%<<24) � colour%
� !(gun_fade%+a%)=colour%
� �
�*:
�4=c%=�("<This$Dir>.Levels.Level"+�(scrn%)+".Posn"+�(scrn%))
�>� a%=0 � 7
�H �#c%,x%
�R �#c%,y%
�\ !(a%*8+positions)=x%
�f !(a%*8+4+positions)=y%
�p�
�z�#c%
��:
��
p%=clist%
��� a%=1 � 640
�� �add_cell(0)
���
���add_cell(-1)
��:
��
p%=slist%
��� a%=1 � 64
�� �add_sprite(0,0,0,0)
���
���add_sprite(0,0,-1,0)
��
p%=slist%
�� a%=1 � 16
� �add_sprite(0,0,0,0)
��
�$>c%=�("<This$Dir>.Levels.Level"+�(scrn%)+".Doors"+�(scrn%))
�.� a%=1 � 4
�8 �#c%,x%
�B �#c%,y%
�L �#c%,t%
�V �#c%,i%
�` �add_sprite(x%,y%,13,i%)
�j�
�t�#c%
�~9c%=�("<This$Dir>.Levels.Level"+�(scrn%)+".GSwitches")
��� a%=1 � 4
�� �#c%,x%
�� �#c%,y%
�� �#c%,t%
�� �#c%,i%
�� �add_sprite(x%,y%,14,a%)
���
���#c%
��=c%=�("<This$Dir>.Levels.Level"+�(scrn%)+".Guns"+�(scrn%))
��� a%=1 � 4
�� �#c%,x%
�� �#c%,y%
� �#c%,t%
�
 �#c%,i%
� �add_sprite(x%,y%,15,a%)
��
�(�#c%
�2-�add_sprite(1116,32,2,(128<<8)+(128<<16))
�<,�add_sprite(84,748,1,(128<<8)+(128<<16))
�F?c%=�("<This$Dir>.Levels.Level"+�(scrn%)+".Flames"+�(scrn%))
�P� a%=1 � 16
�Z �#c%,x%
�d �#c%,y%
�n �#c%,t%
�x �#c%,i%
�� �add_sprite(x%,y%,3,i%)
���
���#c%
��� start
��� clear_screen
���
��:
��:
��:
��� �error
��ș "Hourglass_Smash"
��ȗ �
��� �=17 �
� ș "OS_Byte",112,1
� �
� ș "OS_Byte",113,1
�"�
�, ș "OS_Byte",112,1
�6 �
�@ ș "OS_Byte",113,1
�J � �$;" at line ";�
�T�
�^�
�h:
�r:
�|:
��� �bordercol(r%,g%,b%)
�� [OPT pass%
��;SWI     256+19
��;SWI     256+0
��;SWI     256+24
��;SWI     256+r%
��;SWI     256+g%
��;SWI     256+b%
�� ]
��=0
��:
��:
��:
�� �add_sprite(x%,y%,t%,i%)
�!(p%+00)=t%
�!(p%+04)=x%
�&!(p%+08)=y%
�0!(p%+12)=i%
�:
p%+=16
�D�
�N:
�X:
�b:
�l� �add_cell(t%)
�vp%!00=t%
��
p%+=32
���
��:
��:
��:
��� �assm_decomp
��!� pass%=%0000 � %1010 � %1010
�� P%=decomp_code%
�� L%=decomp_code%+1020
�� [OPT pass%
�� :
�� .dc_unused
�� EQUD    0
�
 .dc_cmpp
� EQUD    0
� .dc_address
�  EQUD    0
�* .dc_value
�4 EQUD    0
�> .dc_repetitions
�H EQUD    0
�R :
�\ .dc_start
�f LDR     R0, dc_cmpp
�p LDR     R1,[R0]
�z STR     R1, dc_unused
�� ADD     R0,R0, #4
�� STR     R0, dc_cmpp
�� .dc_repeat_loop1
�� LDR     R0, dc_cmpp
�� LDR     R0,[R0]
�� LDR     R1, dc_unused
�� CMP     R0,R1
�� BEQ     dc_decompress
��
 .dc_copy
�� LDR     R0, dc_cmpp
�� LDR     R1,[R0]
�� LDR     R2, dc_address
�� STR     R1,[R2]
� LDR     R0, dc_cmpp
� ADD     R0,R0, #4
� LDR     R2, dc_address
�$ ADD     R2,R2, #4
�. STR     R0, dc_cmpp
�8 STR     R2, dc_address
�B B       dc_until1
�L .dc_decompress
�V LDR     R0, dc_cmpp
�` LDR     R7,[R0, #4]
�j STR     R7, dc_value
�t LDR     R0,[R0, #8]
�~ STR     R0, dc_repetitions
�� CMP     R0, #0
�� BEQ     dc_until1
�� LDR     R7, dc_value
�� LDR     R8, dc_address
�� MOV     R9, #1
�� .dc_repeat_loop2
�� STMIA   R8!,{R7}
�� ADD     R9,R9, #1
�� LDR     R0, dc_repetitions
�� CMP     R9,R0
�� BLE     dc_repeat_loop2
�� STR     R8, dc_address
� LDR     R0, dc_cmpp
�
 ADD     R0,R0, #12
� STR     R0, dc_cmpp
� .dc_until1
�( LDR     R0, dc_cmpp
�2 LDR     R1,[R0]
�< LDR     R2, dc_unused
�F CMP     R1,R2
�P BNE     dc_repeat_loop1
�Z LDR     R3,[R0, #8]
�d CMP     R3, #0
�n BNE     dc_repeat_loop1
�x MOV     PC,R14
�� :
�� ]
���
���
��:
��:
��:
��� �decompress(from$,to%)
��%ș "OS_File",255,from$,cmpdata%,0
��!dc_address=to%
��!dc_cmpp=cmpdata%
��� dc_start
���
�:
�:
�:
�"� �assemble_clear_screen
�,!� pass%=%0000 � %1010 � %1010
�6 P%=cl_code%
�@ L%=cl_code%+2044
�J [OPT pass%
�T :
�^ .setup_cs
�h STMFD   R13!,{R0-R12,R14}
�r  LDR     R0, cl_adr_vdu_vars
�| LDR     R1, cl_adr_screen
��; SWI     "OS_ReadVduVariables"   ; set up vdu variables
�� LDMFD   R13!,{R0-R12,PC}
�� :
�� .clear_screen
�� STMFD   R13!,{R0-R12,R14}
�� :
��E LDR     R11, adr_clscolours     ; get the address of colour data
��/ MOV     R9, #0                  ; y co-ord
�� :
�� .cl_loop1
�� :
�� LDR     R10, cl_adr_screen
��9 LDR     R10,[R10]               ; get screen address
�5 ADD     R7,R10, #&14000         ; get screen end
� :
� .cl_loop3
�& ]
�0 � a%=0 � 15
�: � b%=0 � fader% � 4
�D [OPT pass%
�N :
�X ADD     R10,R10, #b%
�b1 BL      cl_cls                  ; dim screen
�l SUB     R10,R10, #b%
�v :
�� MOV     R0, #19
�� SWI     "OS_Byte"
�� :
�� ]
�� �
�� �
�� [OPT pass%
�� :
�� .cl_end_routines
�� :
�� .cl_end
�� LDMFD   R13!,{R0-R12,PC}
�� :
� .cl_cls
� MOV     R6,R10
� MOV     R4, #&FF
�  .cl_loop2
�* LDR     R0,[R6]
�4 :
�> MOV     R3,R0, ROR #8
�H CMP     R3,R0
�R BNE     cl_not_same
�\ �     R1,R4,R0
�f LDRB    R1,[R11,R1]
�p �R     R3,R1,R1, LSL #8
�z �R     R3,R3,R3, LSL #16
�� :
�� B       cl_done_pixels
�� :
�� .cl_not_same
�� �     R1,R4,R0
�� LDRB    R1,[R11,R1]
�� MOV     R3,R1
�� :
�� �     R1,R4,R0, LSR #8
�� LDRB    R1,[R11,R1]
�� �R     R3,R3,R1, LSL #8
�� :
�� �     R1,R4,R0, LSR #16
� LDRB    R1,[R11,R1]
� �R     R3,R3,R1, LSL #16
� :
�$ �     R1,R4,R0, LSR #24
�. LDRB    R1,[R11,R1]
�8 �R     R3,R3,R1, LSL #24
�B :
�L .cl_done_pixels
�V STR     R3,[R6], #fader%+4
�` :
�j CMP     R6,R7
�t BLT     cl_loop2
�~ :
�� .cl_end
�� MOV     PC,R14
�� :
�� .adr_clscolours
�� EQUD    cl_colours%
�� .cl_adr_vdu_vars
�� EQUD    vdu_vars
�� .cl_adr_screen
�� EQUD    screen
�� .screen
�� EQUD    0
�� .vdu_vars
�, EQUD    149                  ; vdu data
�
 EQUD    -1
� .screen_size
� EQUD    &14000
�( :
�2 ]
�<�
�F� setup_cs
�P�
�Z:
�d:
�n:
�x� �print(a$)
��� a$="" � �:�
��� letter%,width%,c%
��
ȑ 0,0
��x%=�*64
��y%=1024-�*64-64
��� letter%=1 � �(a$)
�� � x%>1024 � x%=0:y%-=64:�'
�� asc%=�(�a$,letter%,1))
�� � asc%>31 �
��3  ș "OS_SpriteOp",&128,font%,�asc% � ,,,width%
��/  ș "OS_SpriteOp",&122,font%,�asc%,x%,y%,0
�� �
��%  � asc%=9 � x%=(�(x%/256)+1)*256
� �
� x%+=width%*4
��
�"�
�,�
�6:
�@:
�J� �tint
�T� p%=0 � &13FFF � 1
�^K � screendata%?p%<>0 � screendata%?p%=(screendata%?p% � %11) � (�(3)-1)
�h�
�r�
�
00000000  0d 00 0a 11 f4 20 3e 20  21 52 75 6e 49 6d 61 67  |..... > !RunImag|
00000010  65 0d 00 14 05 f4 0d 00  1e 12 f4 20 a9 20 4a 2e  |e.......... . J.|
00000020  44 2e 48 61 72 72 6f 70  0d 00 28 05 f4 0d 00 32  |D.Harrop..(....2|
00000030  05 3a 0d 00 3c 10 ee 20  85 20 f2 65 72 72 6f 72  |.:..<.. . .error|
00000040  3a e0 0d 00 46 05 3a 0d  00 50 08 eb 20 31 35 0d  |:...F.:..P.. 15.|
00000050  00 5a 08 eb 20 31 33 0d  00 64 05 87 0d 00 6e 05  |.Z.. 13..d....n.|
00000060  3a 0d 00 78 0f de 20 73  63 72 65 65 6e 25 20 38  |:..x.. screen% 8|
00000070  0d 00 82 11 73 63 72 65  65 6e 25 21 30 3d 31 34  |....screen%!0=14|
00000080  39 0d 00 8c 10 73 63 72  65 65 6e 25 21 34 3d 2d  |9....screen%!4=-|
00000090  31 0d 00 96 2c c8 99 20  22 4f 53 5f 52 65 61 64  |1...,.. "OS_Read|
000000a0  56 64 75 56 61 72 69 61  62 6c 65 73 22 2c 73 63  |VduVariables",sc|
000000b0  72 65 65 6e 25 2c 73 63  72 65 65 6e 25 0d 00 a0  |reen%,screen%...|
000000c0  15 73 63 72 65 65 6e 25  3d 73 63 72 65 65 6e 25  |.screen%=screen%|
000000d0  21 30 0d 00 aa 05 3a 0d  00 b4 0c 78 65 78 74 25  |!0....:....xext%|
000000e0  3d 31 32 0d 00 be 0c 79  65 78 74 25 3d 31 36 0d  |=12....yext%=16.|
000000f0  00 c8 05 3a 0d 00 d2 20  2a 52 4d 4c 6f 61 64 20  |...:... *RMLoad |
00000100  3c 54 68 69 73 24 44 69  72 3e 2e 53 46 58 2e 45  |<This$Dir>.SFX.E|
00000110  78 70 6c 6f 0d 00 dc 22  2a 52 4d 4c 6f 61 64 20  |xplo..."*RMLoad |
00000120  3c 54 68 69 73 24 44 69  72 3e 2e 53 46 58 2e 54  |<This$Dir>.SFX.T|
00000130  6f 6b 65 6e 52 4d 0d 00  e6 1e 2a 52 4d 4c 6f 61  |okenRM....*RMLoa|
00000140  64 20 3c 54 68 69 73 24  44 69 72 3e 2e 53 46 58  |d <This$Dir>.SFX|
00000150  2e 41 72 67 0d 00 f0 1f  2a 52 4d 4c 6f 61 64 20  |.Arg....*RMLoad |
00000160  3c 54 68 69 73 24 44 69  72 3e 2e 53 46 58 2e 52  |<This$Dir>.SFX.R|
00000170  41 72 67 0d 00 fa 20 2a  52 4d 4c 6f 61 64 20 3c  |Arg... *RMLoad <|
00000180  54 68 69 73 24 44 69 72  3e 2e 53 46 58 2e 4c 61  |This$Dir>.SFX.La|
00000190  75 67 68 0d 01 04 20 2a  52 4d 4c 6f 61 64 20 3c  |ugh... *RMLoad <|
000001a0  54 68 69 73 24 44 69 72  3e 2e 53 46 58 2e 46 6c  |This$Dir>.SFX.Fl|
000001b0  61 72 65 0d 01 0e 20 2a  52 4d 4c 6f 61 64 20 3c  |are... *RMLoad <|
000001c0  54 68 69 73 24 44 69 72  3e 2e 53 46 58 2e 47 65  |This$Dir>.SFX.Ge|
000001d0  6e 65 72 0d 01 18 22 f4  2a 52 4d 4c 6f 61 64 20  |ner...".*RMLoad |
000001e0  3c 54 68 69 73 24 44 69  72 3e 2e 53 46 58 2e 53  |<This$Dir>.SFX.S|
000001f0  68 69 65 6c 64 0d 01 22  08 c8 a0 20 35 0d 01 2c  |hield.."... 5..,|
00000200  10 c8 a1 20 31 2c 22 45  58 50 4c 4f 22 0d 01 36  |... 1,"EXPLO"..6|
00000210  12 c8 a1 20 32 2c 22 54  4f 4b 45 4e 52 4d 22 0d  |... 2,"TOKENRM".|
00000220  01 40 0e c8 a1 20 33 2c  22 41 52 47 22 0d 01 4a  |.@... 3,"ARG"..J|
00000230  0f c8 a1 20 34 2c 22 52  41 52 47 22 0d 01 54 12  |... 4,"RARG"..T.|
00000240  c8 a1 20 35 2c 22 4c 61  75 67 68 52 4d 22 0d 01  |.. 5,"LaughRM"..|
00000250  5e 10 c8 a1 20 36 2c 22  46 6c 61 72 65 22 0d 01  |^... 6,"Flare"..|
00000260  68 10 c8 a1 20 37 2c 22  47 65 6e 65 72 22 0d 01  |h... 7,"Gener"..|
00000270  72 15 f4 56 4f 49 43 45  20 38 2c 22 53 68 69 65  |r..VOICE 8,"Shie|
00000280  6c 64 22 0d 01 7c 19 c8  99 20 22 53 6f 75 6e 64  |ld"..|... "Sound|
00000290  5f 56 6f 6c 75 6d 65 22  2c 31 32 37 0d 01 86 10  |_Volume",127....|
000002a0  73 63 72 65 61 6d 25 3d  38 31 39 32 0d 01 90 0f  |scream%=8192....|
000002b0  70 69 6e 67 25 3d 31 34  33 33 36 0d 01 9a 13 65  |ping%=14336....e|
000002c0  78 70 6c 6f 73 69 6f 6e  25 3d 36 34 30 30 0d 01  |xplosion%=6400..|
000002d0  a4 0c 66 61 64 65 72 25  3d 38 0d 01 ae 12 62 6f  |..fader%=8....bo|
000002e0  6d 62 5f 70 61 75 73 65  25 3d 36 33 0d 01 b8 17  |mb_pause%=63....|
000002f0  63 6c 69 73 74 5f 73 69  7a 65 25 3d 33 32 2a 31  |clist_size%=32*1|
00000300  32 38 30 0d 01 c2 16 73  6c 69 73 74 5f 73 69 7a  |280....slist_siz|
00000310  65 25 3d 31 36 2a 31 32  38 0d 01 cc 4a c8 99 20  |e%=16*128...J.. |
00000320  22 4f 53 5f 46 69 6c 65  22 2c 31 37 2c 22 3c 54  |"OS_File",17,"<T|
00000330  68 69 73 24 44 69 72 3e  2e 47 72 61 70 68 69 63  |his$Dir>.Graphic|
00000340  73 2e 53 44 61 74 61 31  32 31 32 22 20 b8 20 74  |s.SData1212" . t|
00000350  79 70 65 25 2c 2c 2c 2c  73 70 72 69 74 65 6c 65  |ype%,,,,spritele|
00000360  6e 31 25 0d 01 d6 4a c8  99 20 22 4f 53 5f 46 69  |n1%...J.. "OS_Fi|
00000370  6c 65 22 2c 31 37 2c 22  3c 54 68 69 73 24 44 69  |le",17,"<This$Di|
00000380  72 3e 2e 47 72 61 70 68  69 63 73 2e 53 44 61 74  |r>.Graphics.SDat|
00000390  61 32 30 31 36 22 20 b8  20 74 79 70 65 25 2c 2c  |a2016" . type%,,|
000003a0  2c 2c 73 70 72 69 74 65  6c 65 6e 32 25 0d 01 e0  |,,spritelen2%...|
000003b0  4a c8 99 20 22 4f 53 5f  46 69 6c 65 22 2c 31 37  |J.. "OS_File",17|
000003c0  2c 22 3c 54 68 69 73 24  44 69 72 3e 2e 47 72 61  |,"<This$Dir>.Gra|
000003d0  70 68 69 63 73 2e 53 44  61 74 61 31 32 36 34 22  |phics.SData1264"|
000003e0  20 b8 20 74 79 70 65 25  2c 2c 2c 2c 73 70 72 69  | . type%,,,,spri|
000003f0  74 65 6c 65 6e 33 25 0d  01 ea 4a c8 99 20 22 4f  |telen3%...J.. "O|
00000400  53 5f 46 69 6c 65 22 2c  31 37 2c 22 3c 54 68 69  |S_File",17,"<Thi|
00000410  73 24 44 69 72 3e 2e 47  72 61 70 68 69 63 73 2e  |s$Dir>.Graphics.|
00000420  53 44 61 74 61 30 38 30  34 22 20 b8 20 74 79 70  |SData0804" . typ|
00000430  65 25 2c 2c 2c 2c 73 70  72 69 74 65 6c 65 6e 34  |e%,,,,spritelen4|
00000440  25 0d 01 f4 4a c8 99 20  22 4f 53 5f 46 69 6c 65  |%...J.. "OS_File|
00000450  22 2c 31 37 2c 22 3c 54  68 69 73 24 44 69 72 3e  |",17,"<This$Dir>|
00000460  2e 47 72 61 70 68 69 63  73 2e 53 44 61 74 61 31  |.Graphics.SData1|
00000470  32 30 38 22 20 b8 20 74  79 70 65 25 2c 2c 2c 2c  |208" . type%,,,,|
00000480  73 70 72 69 74 65 6c 65  6e 35 25 0d 01 fe 4a c8  |spritelen5%...J.|
00000490  99 20 22 4f 53 5f 46 69  6c 65 22 2c 31 37 2c 22  |. "OS_File",17,"|
000004a0  3c 54 68 69 73 24 44 69  72 3e 2e 47 72 61 70 68  |<This$Dir>.Graph|
000004b0  69 63 73 2e 53 44 61 74  61 31 36 31 36 22 20 b8  |ics.SData1616" .|
000004c0  20 74 79 70 65 25 2c 2c  2c 2c 73 70 72 69 74 65  | type%,,,,sprite|
000004d0  6c 65 6e 36 25 0d 02 08  42 c8 99 20 22 4f 53 5f  |len6%...B.. "OS_|
000004e0  46 69 6c 65 22 2c 31 37  2c 22 3c 54 68 69 73 24  |File",17,"<This$|
000004f0  44 69 72 3e 2e 47 72 61  70 68 69 63 73 2e 46 6f  |Dir>.Graphics.Fo|
00000500  6e 74 22 20 b8 20 74 79  70 65 25 2c 2c 2c 2c 66  |nt" . type%,,,,f|
00000510  6f 6e 74 6c 65 6e 25 0d  02 12 75 de 20 63 6f 64  |ontlen%...u. cod|
00000520  65 25 20 31 32 2a 31 30  32 34 2c 73 70 72 69 74  |e% 12*1024,sprit|
00000530  65 5f 72 6f 75 74 69 6e  65 73 25 20 38 31 39 32  |e_routines% 8192|
00000540  2c 66 69 6c 6c 5f 72 6f  75 74 69 6e 65 73 25 20  |,fill_routines% |
00000550  38 31 39 32 2c 63 6c 67  5f 72 6f 75 74 69 6e 65  |8192,clg_routine|
00000560  25 20 31 30 32 34 2c 73  70 6c 69 74 5f 72 6f 75  |% 1024,split_rou|
00000570  74 69 6e 65 25 20 31 30  32 34 2c 64 65 63 6f 6d  |tine% 1024,decom|
00000580  70 5f 63 6f 64 65 25 20  31 30 32 34 0d 02 1c 95  |p_code% 1024....|
00000590  de 20 73 70 72 69 74 65  73 31 25 20 73 70 72 69  |. sprites1% spri|
000005a0  74 65 6c 65 6e 31 25 2b  34 2c 73 70 72 69 74 65  |telen1%+4,sprite|
000005b0  73 32 25 20 73 70 72 69  74 65 6c 65 6e 32 25 2b  |s2% spritelen2%+|
000005c0  34 2c 73 70 72 69 74 65  73 33 25 20 73 70 72 69  |4,sprites3% spri|
000005d0  74 65 6c 65 6e 33 25 2b  34 2c 73 70 72 69 74 65  |telen3%+4,sprite|
000005e0  73 34 25 20 73 70 72 69  74 65 6c 65 6e 34 25 2b  |s4% spritelen4%+|
000005f0  34 2c 73 70 72 69 74 65  73 35 25 20 73 70 72 69  |4,sprites5% spri|
00000600  74 65 6c 65 6e 35 25 2b  34 2c 73 70 72 69 74 65  |telen5%+4,sprite|
00000610  73 36 25 20 73 70 72 69  74 65 6c 65 6e 36 25 2b  |s6% spritelen6%+|
00000620  34 0d 02 26 17 de 20 73  63 72 65 65 6e 64 61 74  |4..&.. screendat|
00000630  61 25 20 38 31 39 32 34  0d 02 30 18 de 20 73 63  |a% 81924..0.. sc|
00000640  72 65 65 6e 73 74 6f 72  65 25 20 38 31 39 32 34  |reenstore% 81924|
00000650  0d 02 3a 2b de 20 63 6c  69 73 74 25 20 63 6c 69  |..:+. clist% cli|
00000660  73 74 5f 73 69 7a 65 25  2c 73 6c 69 73 74 25 20  |st_size%,slist% |
00000670  73 6c 69 73 74 5f 73 69  7a 65 25 0d 02 44 14 de  |slist_size%..D..|
00000680  20 63 6d 70 64 61 74 61  25 20 38 31 39 32 34 0d  | cmpdata% 81924.|
00000690  02 4e 15 de 20 66 6c 61  6d 65 5f 66 61 64 65 25  |.N.. flame_fade%|
000006a0  20 32 35 36 0d 02 58 13  de 20 67 75 6e 5f 66 61  | 256..X.. gun_fa|
000006b0  64 65 25 20 32 35 36 0d  02 62 24 de 20 63 6c 5f  |de% 256..b$. cl_|
000006c0  63 6f 64 65 25 20 32 30  34 38 2c 20 63 6c 5f 63  |code% 2048, cl_c|
000006d0  6f 6c 6f 75 72 73 25 20  33 32 30 0d 02 6c 16 de  |olours% 320..l..|
000006e0  20 66 6f 6e 74 25 20 66  6f 6e 74 6c 65 6e 25 2b  | font% fontlen%+|
000006f0  34 0d 02 76 10 f2 61 73  73 6d 5f 64 65 63 6f 6d  |4..v..assm_decom|
00000700  70 0d 02 80 36 f2 64 65  63 6f 6d 70 72 65 73 73  |p...6.decompress|
00000710  28 22 3c 54 68 69 73 24  44 69 72 3e 2e 47 72 61  |("<This$Dir>.Gra|
00000720  70 68 69 63 73 2e 43 4d  4c 44 61 74 61 22 2c 73  |phics.CMLData",s|
00000730  63 72 65 65 6e 25 29 0d  02 8a 12 21 66 6f 6e 74  |creen%)....!font|
00000740  25 3d 32 32 2a 31 30 32  34 0d 02 94 3a c8 99 20  |%=22*1024...:.. |
00000750  22 4f 53 5f 53 70 72 69  74 65 4f 70 22 2c 26 31  |"OS_SpriteOp",&1|
00000760  30 41 2c 66 6f 6e 74 25  2c 22 3c 54 68 69 73 24  |0A,font%,"<This$|
00000770  44 69 72 3e 2e 47 72 61  70 68 69 63 73 2e 46 6f  |Dir>.Graphics.Fo|
00000780  6e 74 22 0d 02 9e 08 74  25 3d 91 0d 02 a8 12 50  |nt"....t%=.....P|
00000790  25 3d 63 6c 5f 63 6f 6c  6f 75 72 73 25 0d 02 b2  |%=cl_colours%...|
000007a0  16 4c 25 3d 63 6c 5f 63  6f 6c 6f 75 72 73 25 2b  |.L%=cl_colours%+|
000007b0  32 35 36 0d 02 bc 22 63  68 61 6e 25 3d 8e 28 22  |256..."chan%=.("|
000007c0  3c 54 68 69 73 24 44 69  72 3e 2e 46 61 64 65 43  |<This$Dir>.FadeC|
000007d0  6f 6c 73 22 29 0d 02 c6  10 e3 20 63 25 3d 30 20  |ols")..... c%=0 |
000007e0  b8 20 32 35 35 0d 02 d0  10 20 3f 50 25 3d 9a 23  |. 255.... ?P%=.#|
000007f0  63 68 61 6e 25 0d 02 da  0a 20 50 25 2b 3d 31 0d  |chan%.... P%+=1.|
00000800  02 e4 05 ed 0d 02 ee 0b  d9 23 63 68 61 6e 25 0d  |.........#chan%.|
00000810  02 f8 05 f5 0d 03 02 0e  fd 20 91 3e 74 25 2b 32  |......... .>t%+2|
00000820  30 30 0d 03 0c 1a f2 61  73 73 65 6d 62 6c 65 5f  |00.....assemble_|
00000830  63 6c 65 61 72 5f 73 63  72 65 65 6e 0d 03 16 05  |clear_screen....|
00000840  3a 0d 03 20 0c 73 63 72  6e 25 3d 31 33 0d 03 2a  |:.. .scrn%=13..*|
00000850  05 f5 0d 03 34 15 20 70  6c 61 79 65 72 31 5f 6c  |....4. player1_l|
00000860  69 76 65 73 25 3d 33 0d  03 3e 15 20 70 6c 61 79  |ives%=3..>. play|
00000870  65 72 32 5f 6c 69 76 65  73 25 3d 33 0d 03 48 06  |er2_lives%=3..H.|
00000880  20 f5 0d 03 52 0e 20 20  73 63 72 6e 25 2b 3d 31  | ...R.  scrn%+=1|
00000890  0d 03 5c 1a 20 20 e7 20  73 63 72 6e 25 3e 31 34  |..\.  . scrn%>14|
000008a0  20 8c 20 73 63 72 6e 25  3d 31 0d 03 66 55 20 20  | . scrn%=1..fU  |
000008b0  f2 64 65 63 6f 6d 70 72  65 73 73 28 22 3c 54 68  |.decompress("<Th|
000008c0  69 73 24 44 69 72 3e 2e  4c 65 76 65 6c 73 2e 4c  |is$Dir>.Levels.L|
000008d0  65 76 65 6c 22 2b c3 28  73 63 72 6e 25 29 2b 22  |evel"+.(scrn%)+"|
000008e0  2e 43 6d 70 44 61 74 61  22 2b c3 28 73 63 72 6e  |.CmpData"+.(scrn|
000008f0  25 29 2c 73 63 72 65 65  6e 64 61 74 61 25 29 0d  |%),screendata%).|
00000900  03 70 0b 20 20 f2 74 69  6e 74 0d 03 7a 14 20 20  |.p.  .tint..z.  |
00000910  d6 20 63 6c 65 61 72 5f  73 63 72 65 65 6e 0d 03  |. clear_screen..|
00000920  84 0b 20 20 f2 70 6c 61  79 0d 03 8e 16 20 20 21  |..  .play....  !|
00000930  73 63 72 65 65 6e 3d 21  73 63 72 65 65 6e 31 0d  |screen=!screen1.|
00000940  03 98 07 20 20 db 0d 03  a2 07 20 20 87 0d 03 ac  |...  .....  ....|
00000950  18 20 20 c8 99 20 22 4f  53 5f 42 79 74 65 22 2c  |.  .. "OS_Byte",|
00000960  31 31 32 2c 32 0d 03 b6  07 20 20 db 0d 03 c0 18  |112,2....  .....|
00000970  20 20 c8 99 20 22 4f 53  5f 42 79 74 65 22 2c 31  |  .. "OS_Byte",1|
00000980  31 33 2c 32 0d 03 ca 18  20 20 c8 99 20 22 4f 53  |13,2....  .. "OS|
00000990  5f 42 79 74 65 22 2c 31  31 32 2c 31 0d 03 d4 07  |_Byte",112,1....|
000009a0  20 20 db 0d 03 de 3a 20  20 f2 64 65 63 6f 6d 70  |  ....:  .decomp|
000009b0  72 65 73 73 28 22 3c 54  68 69 73 24 44 69 72 3e  |ress("<This$Dir>|
000009c0  2e 47 72 61 70 68 69 63  73 2e 43 4c 6f 67 6f 44  |.Graphics.CLogoD|
000009d0  61 74 61 22 2c 73 63 72  65 65 6e 25 29 0d 03 e8  |ata",screen%)...|
000009e0  08 20 20 c8 96 0d 03 f2  18 20 20 c8 99 20 22 4f  |.  ......  .. "O|
000009f0  53 5f 42 79 74 65 22 2c  31 31 33 2c 31 0d 03 fc  |S_Byte",113,1...|
00000a00  18 20 20 c8 99 20 22 4f  53 5f 42 79 74 65 22 2c  |.  .. "OS_Byte",|
00000a10  31 31 32 2c 31 0d 04 06  2d 20 20 e7 20 21 70 6c  |112,1...-  . !pl|
00000a20  61 79 65 72 31 5f 61 6c  69 76 65 3c 3e 30 20 8c  |ayer1_alive<>0 .|
00000a30  20 70 6c 61 79 65 72 31  5f 6c 69 76 65 73 25 2d  | player1_lives%-|
00000a40  3d 31 0d 04 10 2d 20 20  e7 20 21 70 6c 61 79 65  |=1...-  . !playe|
00000a50  72 32 5f 61 6c 69 76 65  3c 3e 30 20 8c 20 70 6c  |r2_alive<>0 . pl|
00000a60  61 79 65 72 32 5f 6c 69  76 65 73 25 2d 3d 31 0d  |ayer2_lives%-=1.|
00000a70  04 1a 51 20 20 e7 20 70  6c 61 79 65 72 31 5f 6c  |..Q  . player1_l|
00000a80  69 76 65 73 25 3d 30 20  80 20 70 6c 61 79 65 72  |ives%=0 . player|
00000a90  32 5f 6c 69 76 65 73 25  3d 30 20 8c 20 70 6c 61  |2_lives%=0 . pla|
00000aa0  79 65 72 31 5f 6c 69 76  65 73 25 2b 3d 31 3a 70  |yer1_lives%+=1:p|
00000ab0  6c 61 79 65 72 32 5f 6c  69 76 65 73 25 2b 3d 31  |layer2_lives%+=1|
00000ac0  0d 04 24 13 20 20 fb 20  31 32 38 2b 34 32 20 c8  |..$.  . 128+42 .|
00000ad0  9c 20 30 0d 04 2e 0e 20  20 fb 20 30 20 c8 9c 20  |. 0....  . 0 .. |
00000ae0  30 0d 04 38 0e 20 20 f1  20 8a 30 2c 30 29 3b 0d  |0..8.  . .0,0);.|
00000af0  04 42 2c 20 20 f2 70 72  69 6e 74 28 22 50 6c 61  |.B,  .print("Pla|
00000b00  79 65 72 20 31 20 20 3a  09 22 2b c3 70 6c 61 79  |yer 1  :."+.play|
00000b10  65 72 31 5f 6c 69 76 65  73 25 29 0d 04 4c 2b 20  |er1_lives%)..L+ |
00000b20  20 f2 70 72 69 6e 74 28  22 50 6c 61 79 65 72 20  | .print("Player |
00000b30  32 20 3a 09 22 2b c3 70  6c 61 79 65 72 32 5f 6c  |2 :."+.player2_l|
00000b40  69 76 65 73 25 29 0d 04  56 10 20 20 fb 20 31 32  |ives%)..V.  . 12|
00000b50  38 20 c8 9c 20 30 0d 04  60 11 20 20 fb 20 36 33  |8 .. 0..`.  . 63|
00000b60  20 c8 9c 20 32 35 35 0d  04 6a 2a 20 fd 20 70 6c  | .. 255..j* . pl|
00000b70  61 79 65 72 31 5f 6c 69  76 65 73 25 3d 30 20 84  |ayer1_lives%=0 .|
00000b80  20 70 6c 61 79 65 72 32  5f 6c 69 76 65 73 25 3d  | player2_lives%=|
00000b90  30 0d 04 74 09 20 74 25  3d 91 0d 04 7e 06 20 f5  |0..t. t%=...~. .|
00000ba0  0d 04 88 0e 20 fd 20 91  3e 74 25 2b 35 30 0d 04  |.... . .>t%+50..|
00000bb0  92 13 20 d6 20 63 6c 65  61 72 5f 73 63 72 65 65  |.. . clear_scree|
00000bc0  6e 0d 04 9c 06 20 db 0d  04 a6 06 20 87 0d 04 b0  |n.... ..... ....|
00000bd0  17 20 c8 99 20 22 4f 53  5f 42 79 74 65 22 2c 31  |. .. "OS_Byte",1|
00000be0  31 32 2c 32 0d 04 ba 06  20 db 0d 04 c4 17 20 c8  |12,2.... ..... .|
00000bf0  99 20 22 4f 53 5f 42 79  74 65 22 2c 31 31 33 2c  |. "OS_Byte",113,|
00000c00  32 0d 04 ce 17 20 c8 99  20 22 4f 53 5f 42 79 74  |2.... .. "OS_Byt|
00000c10  65 22 2c 31 31 32 2c 31  0d 04 d8 06 20 db 0d 04  |e",112,1.... ...|
00000c20  e2 09 20 74 25 3d 91 0d  04 ec 4d 20 e7 20 70 6c  |.. t%=....M . pl|
00000c30  61 79 65 72 31 5f 6c 69  76 65 73 25 3d 30 20 8c  |ayer1_lives%=0 .|
00000c40  20 f2 64 65 63 6f 6d 70  72 65 73 73 28 22 3c 54  | .decompress("<T|
00000c50  68 69 73 24 44 69 72 3e  2e 47 72 61 70 68 69 63  |his$Dir>.Graphic|
00000c60  73 2e 43 a0 50 32 57 69  6e 73 22 2c 73 63 72 65  |s.C.P2Wins",scre|
00000c70  65 6e 25 29 0d 04 f6 4d  20 e7 20 70 6c 61 79 65  |en%)...M . playe|
00000c80  72 32 5f 6c 69 76 65 73  25 3d 30 20 8c 20 f2 64  |r2_lives%=0 . .d|
00000c90  65 63 6f 6d 70 72 65 73  73 28 22 3c 54 68 69 73  |ecompress("<This|
00000ca0  24 44 69 72 3e 2e 47 72  61 70 68 69 63 73 2e 43  |$Dir>.Graphics.C|
00000cb0  a0 50 31 57 69 6e 73 22  2c 73 63 72 65 65 6e 25  |.P1Wins",screen%|
00000cc0  29 0d 05 00 23 20 c8 99  20 22 53 6f 75 6e 64 5f  |)...# .. "Sound_|
00000cd0  43 6f 6e 74 72 6f 6c 22  2c 35 2c 2d 31 35 2c 31  |Control",5,-15,1|
00000ce0  32 38 2c 30 0d 05 0a 07  20 c8 96 0d 05 14 17 20  |28,0.... ...... |
00000cf0  c8 99 20 22 4f 53 5f 42  79 74 65 22 2c 31 31 33  |.. "OS_Byte",113|
00000d00  2c 31 0d 05 1e 17 20 c8  99 20 22 4f 53 5f 42 79  |,1.... .. "OS_By|
00000d10  74 65 22 2c 31 31 32 2c  31 0d 05 28 06 20 f5 0d  |te",112,1..(. ..|
00000d20  05 32 0f 20 fd 20 91 3e  74 25 2b 35 30 30 0d 05  |.2. . .>t%+500..|
00000d30  3c 13 20 d6 20 63 6c 65  61 72 5f 73 63 72 65 65  |<. . clear_scree|
00000d40  6e 0d 05 46 07 fd 20 a3  0d 05 50 05 e0 0d 05 5a  |n..F.. ...P....Z|
00000d50  05 3a 0d 05 64 05 3a 0d  05 6e 05 3a 0d 05 78 0b  |.:..d.:..n.:..x.|
00000d60  dd 20 f2 70 6c 61 79 0d  05 82 11 73 70 72 61 79  |. .play....spray|
00000d70  5f 63 6f 6c 25 3d 36 33  0d 05 8c 18 6d 61 78 5f  |_col%=63....max_|
00000d80  68 6f 6d 69 6e 67 5f 73  70 65 65 64 25 3d 31 36  |homing_speed%=16|
00000d90  0d 05 96 40 c8 99 20 22  4f 53 5f 46 69 6c 65 22  |...@.. "OS_File"|
00000da0  2c 32 35 35 2c 22 3c 54  68 69 73 24 44 69 72 3e  |,255,"<This$Dir>|
00000db0  2e 47 72 61 70 68 69 63  73 2e 53 44 61 74 61 31  |.Graphics.SData1|
00000dc0  32 31 32 22 2c 73 70 72  69 74 65 73 31 25 2c 30  |212",sprites1%,0|
00000dd0  0d 05 a0 40 c8 99 20 22  4f 53 5f 46 69 6c 65 22  |...@.. "OS_File"|
00000de0  2c 32 35 35 2c 22 3c 54  68 69 73 24 44 69 72 3e  |,255,"<This$Dir>|
00000df0  2e 47 72 61 70 68 69 63  73 2e 53 44 61 74 61 32  |.Graphics.SData2|
00000e00  30 31 36 22 2c 73 70 72  69 74 65 73 32 25 2c 30  |016",sprites2%,0|
00000e10  0d 05 aa 40 c8 99 20 22  4f 53 5f 46 69 6c 65 22  |...@.. "OS_File"|
00000e20  2c 32 35 35 2c 22 3c 54  68 69 73 24 44 69 72 3e  |,255,"<This$Dir>|
00000e30  2e 47 72 61 70 68 69 63  73 2e 53 44 61 74 61 31  |.Graphics.SData1|
00000e40  32 36 34 22 2c 73 70 72  69 74 65 73 33 25 2c 30  |264",sprites3%,0|
00000e50  0d 05 b4 40 c8 99 20 22  4f 53 5f 46 69 6c 65 22  |...@.. "OS_File"|
00000e60  2c 32 35 35 2c 22 3c 54  68 69 73 24 44 69 72 3e  |,255,"<This$Dir>|
00000e70  2e 47 72 61 70 68 69 63  73 2e 53 44 61 74 61 30  |.Graphics.SData0|
00000e80  38 30 34 22 2c 73 70 72  69 74 65 73 34 25 2c 30  |804",sprites4%,0|
00000e90  0d 05 be 40 c8 99 20 22  4f 53 5f 46 69 6c 65 22  |...@.. "OS_File"|
00000ea0  2c 32 35 35 2c 22 3c 54  68 69 73 24 44 69 72 3e  |,255,"<This$Dir>|
00000eb0  2e 47 72 61 70 68 69 63  73 2e 53 44 61 74 61 31  |.Graphics.SData1|
00000ec0  32 30 38 22 2c 73 70 72  69 74 65 73 35 25 2c 30  |208",sprites5%,0|
00000ed0  0d 05 c8 40 c8 99 20 22  4f 53 5f 46 69 6c 65 22  |...@.. "OS_File"|
00000ee0  2c 32 35 35 2c 22 3c 54  68 69 73 24 44 69 72 3e  |,255,"<This$Dir>|
00000ef0  2e 47 72 61 70 68 69 63  73 2e 53 44 61 74 61 31  |.Graphics.SData1|
00000f00  36 31 36 22 2c 73 70 72  69 74 65 73 36 25 2c 30  |616",sprites6%,0|
00000f10  0d 05 d2 11 6e 75 6d 62  65 72 20 20 20 20 3d 20  |....number    = |
00000f20  30 0d 05 dc 11 64 69 76  69 73 6f 72 20 20 20 3d  |0....divisor   =|
00000f30  20 31 0d 05 e6 11 72 65  6d 61 69 6e 20 20 20 20  | 1....remain    |
00000f40  3d 20 33 0d 05 f0 11 71  75 6f 74 69 65 6e 74 20  |= 3....quotient |
00000f50  20 3d 20 32 0d 05 fa 11  70 6c 61 63 65 20 20 20  | = 2....place   |
00000f60  20 20 3d 20 34 0d 06 04  11 64 73 69 67 6e 20 20  |  = 4....dsign  |
00000f70  20 20 20 3d 20 35 0d 06  0e 11 6d 73 69 67 6e 20  |   = 5....msign |
00000f80  20 20 20 20 3d 20 36 0d  06 18 0d 78 5f 73 68 69  |    = 6....x_shi|
00000f90  66 74 3d 31 0d 06 22 0f  79 5f 73 68 69 66 74 3d  |ft=1..".y_shift=|
00000fa0  33 32 30 0d 06 2c 21 e3  20 70 61 73 73 25 3d 25  |320..,!. pass%=%|
00000fb0  30 30 30 30 20 b8 20 25  31 30 31 30 20 88 20 25  |0000 . %1010 . %|
00000fc0  31 30 31 30 0d 06 36 0d  20 50 25 3d 63 6f 64 65  |1010..6. P%=code|
00000fd0  25 0d 06 40 15 20 4c 25  3d 63 6f 64 65 25 2b 31  |%..@. L%=code%+1|
00000fe0  32 2a 31 30 32 34 0d 06  4a 0f 20 5b 4f 50 54 20  |2*1024..J. [OPT |
00000ff0  70 61 73 73 25 0d 06 54  06 20 3a 0d 06 5e 06 20  |pass%..T. :..^. |
00001000  3a 0d 06 68 06 20 3a 0d  06 72 0b 20 2e 70 6f 69  |:..h. :..r. .poi|
00001010  6e 74 0d 06 7c 1e 20 53  54 4d 46 44 20 20 20 52  |nt..|. STMFD   R|
00001020  31 33 21 2c 7b 52 31 2d  52 31 32 2c 52 31 34 7d  |13!,{R1-R12,R14}|
00001030  0d 06 86 06 20 3a 0d 06  90 18 20 52 53 42 20 20  |.... :.... RSB  |
00001040  20 20 20 52 32 2c 52 32  2c 20 23 32 35 36 0d 06  |   R2,R2, #256..|
00001050  9a 06 20 3a 0d 06 a4 36  3b 20 4d 4f 56 20 20 20  |.. :...6; MOV   |
00001060  20 20 52 37 2c 20 23 78  5f 73 68 69 66 74 20 20  |  R7, #x_shift  |
00001070  20 20 20 20 20 20 20 3b  20 67 65 74 20 73 63 72  |       ; get scr|
00001080  65 65 6e 20 73 68 69 66  74 73 0d 06 ae 1a 3b 20  |een shifts....; |
00001090  4d 4f 56 20 20 20 20 20  52 38 2c 20 23 79 5f 73  |MOV     R8, #y_s|
000010a0  68 69 66 74 0d 06 b8 36  20 4c 44 52 20 20 20 20  |hift...6 LDR    |
000010b0  20 52 39 2c 20 73 63 72  65 65 6e 73 74 6f 72 65  | R9, screenstore|
000010c0  20 20 20 20 20 20 3b 20  67 65 74 20 73 63 72 65  |      ; get scre|
000010d0  65 6e 20 61 64 64 72 65  73 73 0d 06 c2 06 20 3a  |en address.... :|
000010e0  0d 06 cc 10 41 44 44 20  72 39 2c 72 39 2c 72 31  |....ADD r9,r9,r1|
000010f0  0d 06 d6 18 41 44 44 20  72 39 2c 72 39 2c 72 32  |....ADD r9,r9,r2|
00001100  2c 20 41 53 4c 20 23 38  0d 06 e0 18 41 44 44 20  |, ASL #8....ADD |
00001110  72 39 2c 72 39 2c 72 32  2c 20 41 53 4c 20 23 36  |r9,r9,r2, ASL #6|
00001120  0d 06 ea 19 3b 20 4d 4c  41 20 20 20 20 20 52 39  |....; MLA     R9|
00001130  2c 52 37 2c 52 31 2c 52  39 0d 06 f4 19 3b 20 4d  |,R7,R1,R9....; M|
00001140  4c 41 20 20 20 20 20 52  31 2c 52 38 2c 52 32 2c  |LA     R1,R8,R2,|
00001150  52 39 0d 06 fe 06 20 3a  0d 07 08 14 20 53 54 52  |R9.... :.... STR|
00001160  42 20 20 20 20 52 30 2c  5b 52 31 5d 0d 07 12 06  |B    R0,[R1]....|
00001170  20 3a 0d 07 1c 1d 20 4c  44 4d 46 44 20 20 20 52  | :.... LDMFD   R|
00001180  31 33 21 2c 7b 52 31 2d  52 31 32 2c 50 43 7d 0d  |13!,{R1-R12,PC}.|
00001190  07 26 06 20 3a 0d 07 30  06 20 3a 0d 07 3a 06 20  |.&. :..0. :..:. |
000011a0  3a 0d 07 44 0c 20 2e 73  63 72 65 65 6e 0d 07 4e  |:..D. .screen..N|
000011b0  0e 20 45 51 55 44 20 20  20 20 30 0d 07 58 11 20  |. EQUD    0..X. |
000011c0  2e 73 63 72 65 65 6e 73  74 6f 72 65 0d 07 62 19  |.screenstore..b.|
000011d0  20 45 51 55 44 20 20 20  20 73 63 72 65 65 6e 73  | EQUD    screens|
000011e0  74 6f 72 65 25 0d 07 6c  10 20 2e 73 63 72 65 65  |tore%..l. .scree|
000011f0  6e 62 61 6e 6b 0d 07 76  0e 20 45 51 55 44 20 20  |nbank..v. EQUD  |
00001200  20 20 30 0d 07 80 0d 20  2e 73 63 72 65 65 6e 31  |  0.... .screen1|
00001210  0d 07 8a 0e 20 45 51 55  44 20 20 20 20 30 0d 07  |.... EQUD    0..|
00001220  94 0d 20 2e 73 63 72 65  65 6e 32 0d 07 9e 0e 20  |.. .screen2.... |
00001230  45 51 55 44 20 20 20 20  30 0d 07 a8 0e 20 2e 76  |EQUD    0.... .v|
00001240  64 75 5f 76 61 72 73 0d  07 b2 2c 20 45 51 55 44  |du_vars..., EQUD|
00001250  20 20 20 20 31 34 39 20  20 20 20 20 20 20 20 20  |    149         |
00001260  20 20 20 20 20 20 20 20  20 3b 20 76 64 75 20 64  |         ; vdu d|
00001270  61 74 61 0d 07 bc 0f 20  45 51 55 44 20 20 20 20  |ata.... EQUD    |
00001280  2d 31 0d 07 c6 11 20 2e  73 63 72 65 65 6e 5f 73  |-1.... .screen_s|
00001290  69 7a 65 0d 07 d0 13 20  45 51 55 44 20 20 20 20  |ize.... EQUD    |
000012a0  26 31 34 30 30 30 0d 07  da 11 20 2e 73 63 72 65  |&14000.... .scre|
000012b0  65 6e 5f 62 61 6e 6b 0d  07 e4 0e 20 45 51 55 44  |en_bank.... EQUD|
000012c0  20 20 20 20 31 0d 07 ee  06 20 3a 0d 07 f8 0b 20  |    1.... :.... |
000012d0  2e 73 74 61 72 74 0d 08  02 1e 20 53 54 4d 46 44  |.start.... STMFD|
000012e0  20 20 20 52 31 33 21 2c  7b 52 30 2d 52 31 32 2c  |   R13!,{R0-R12,|
000012f0  52 31 34 7d 0d 08 0c 06  20 3a 0d 08 16 19 20 41  |R14}.... :.... A|
00001300  44 52 20 20 20 20 20 52  30 2c 20 76 64 75 5f 76  |DR     R0, vdu_v|
00001310  61 72 73 0d 08 20 17 20  41 44 52 20 20 20 20 20  |ars.. . ADR     |
00001320  52 31 2c 20 73 63 72 65  65 6e 0d 08 2a 3b 20 53  |R1, screen..*; S|
00001330  57 49 20 20 20 20 20 22  4f 53 5f 52 65 61 64 56  |WI     "OS_ReadV|
00001340  64 75 56 61 72 69 61 62  6c 65 73 22 20 20 20 3b  |duVariables"   ;|
00001350  20 73 65 74 20 75 70 20  76 64 75 20 76 61 72 69  | set up vdu vari|
00001360  61 62 6c 65 73 0d 08 34  17 20 4c 44 52 20 20 20  |ables..4. LDR   |
00001370  20 20 52 30 2c 20 73 63  72 65 65 6e 0d 08 3e 18  |  R0, screen..>.|
00001380  20 53 54 52 20 20 20 20  20 52 30 2c 20 73 63 72  | STR     R0, scr|
00001390  65 65 6e 31 0d 08 48 1c  20 4c 44 52 20 20 20 20  |een1..H. LDR    |
000013a0  20 52 31 2c 20 73 63 72  65 65 6e 5f 73 69 7a 65  | R1, screen_size|
000013b0  0d 08 52 15 20 41 44 44  20 20 20 20 20 52 30 2c  |..R. ADD     R0,|
000013c0  52 30 2c 52 31 0d 08 5c  18 20 53 54 52 20 20 20  |R0,R1..\. STR   |
000013d0  20 20 52 30 2c 20 73 63  72 65 65 6e 32 0d 08 66  |  R0, screen2..f|
000013e0  13 20 53 57 49 20 20 20  20 20 32 35 36 2b 31 39  |. SWI     256+19|
000013f0  0d 08 70 12 20 53 57 49  20 20 20 20 20 32 35 36  |..p. SWI     256|
00001400  2b 30 0d 08 7a 13 20 53  57 49 20 20 20 20 20 32  |+0..z. SWI     2|
00001410  35 36 2b 32 34 0d 08 84  14 20 53 57 49 20 20 20  |56+24.... SWI   |
00001420  20 20 32 35 36 2b 32 34  30 0d 08 8e 14 20 53 57  |  256+240.... SW|
00001430  49 20 20 20 20 20 32 35  36 2b 32 34 30 0d 08 98  |I     256+240...|
00001440  14 20 53 57 49 20 20 20  20 20 32 35 36 2b 31 31  |. SWI     256+11|
00001450  32 0d 08 a2 10 20 42 4c  20 20 20 20 20 20 63 6c  |2.... BL      cl|
00001460  67 0d 08 ac 06 20 3a 0d  08 b6 10 20 2e 74 6f 74  |g.... :.... .tot|
00001470  61 6c 5f 6c 6f 6f 70 0d  08 c0 06 20 3a 0d 08 ca  |al_loop.... :...|
00001480  15 a4 62 6f 72 64 65 72  63 6f 6c 28 30 2c 30 2c  |..bordercol(0,0,|
00001490  30 29 0d 08 d4 14 20 4d  4f 56 20 20 20 20 20 52  |0).... MOV     R|
000014a0  30 2c 20 23 31 39 0d 08  de 16 20 53 57 49 20 20  |0, #19.... SWI  |
000014b0  20 20 20 22 4f 53 5f 42  79 74 65 22 0d 08 e8 06  |   "OS_Byte"....|
000014c0  20 3a 0d 08 f2 1c 20 4c  44 52 20 20 20 20 20 52  | :.... LDR     R|
000014d0  33 2c 20 73 63 72 65 65  6e 5f 62 61 6e 6b 0d 08  |3, screen_bank..|
000014e0  fc 14 20 82 20 20 20 20  20 52 33 2c 52 33 2c 20  |.. .     R3,R3, |
000014f0  23 31 0d 09 06 1c 20 53  54 52 20 20 20 20 20 52  |#1.... STR     R|
00001500  33 2c 20 73 63 72 65 65  6e 5f 62 61 6e 6b 0d 09  |3, screen_bank..|
00001510  10 13 20 43 4d 50 20 20  20 20 20 52 33 2c 20 23  |.. CMP     R3, #|
00001520  30 0d 09 1a 16 20 52 53  42 20 20 20 20 20 52 31  |0.... RSB     R1|
00001530  2c 52 33 2c 20 23 32 0d  09 24 18 20 4c 44 52 45  |,R3, #2..$. LDRE|
00001540  51 20 20 20 52 33 2c 20  73 63 72 65 65 6e 31 0d  |Q   R3, screen1.|
00001550  09 2e 18 20 4c 44 52 4e  45 20 20 20 52 33 2c 20  |... LDRNE   R3, |
00001560  73 63 72 65 65 6e 32 0d  09 38 17 20 53 54 52 20  |screen2..8. STR |
00001570  20 20 20 20 52 33 2c 20  73 63 72 65 65 6e 0d 09  |    R3, screen..|
00001580  42 06 20 3a 0d 09 4c 15  20 4d 4f 56 20 20 20 20  |B. :..L. MOV    |
00001590  20 52 30 2c 20 23 31 31  33 0d 09 56 16 20 53 57  | R0, #113..V. SW|
000015a0  49 20 20 20 20 20 22 4f  53 5f 42 79 74 65 22 0d  |I     "OS_Byte".|
000015b0  09 60 15 3b 4d 4f 56 20  20 20 20 20 52 30 2c 20  |.`.;MOV     R0, |
000015c0  23 31 31 32 0d 09 6a 16  3b 53 57 49 20 20 20 20  |#112..j.;SWI    |
000015d0  20 22 4f 53 5f 42 79 74  65 22 0d 09 74 0f 3b 53  | "OS_Byte"..t.;S|
000015e0  57 49 20 32 35 36 2b 33  31 0d 09 7e 0e 3b 53 57  |WI 256+31..~.;SW|
000015f0  49 20 32 35 36 2b 30 0d  09 88 0e 3b 53 57 49 20  |I 256+0....;SWI |
00001600  32 35 36 2b 30 0d 09 92  06 20 3a 0d 09 9c 17 a4  |256+0.... :.....|
00001610  62 6f 72 64 65 72 63 6f  6c 28 32 35 35 2c 30 2c  |bordercol(255,0,|
00001620  30 29 0d 09 a6 15 20 42  4c 20 20 20 20 20 20 77  |0).... BL      w|
00001630  69 70 65 5f 61 6c 6c 0d  09 b0 06 20 3a 0d 09 ba  |ipe_all.... :...|
00001640  17 a4 62 6f 72 64 65 72  63 6f 6c 28 30 2c 32 35  |..bordercol(0,25|
00001650  35 2c 30 29 0d 09 c4 06  20 3a 0d 09 ce 14 20 4c  |5,0).... :.... L|
00001660  44 52 20 20 20 20 20 52  30 2c 20 72 6e 64 0d 09  |DR     R0, rnd..|
00001670  d8 18 20 54 53 54 20 20  20 20 20 52 30 2c 20 23  |.. TST     R0, #|
00001680  32 35 35 3c 3c 38 0d 09  e2 17 20 42 4c 45 51 20  |255<<8.... BLEQ |
00001690  20 20 20 61 64 64 5f 67  6f 6f 64 69 65 0d 09 ec  |   add_goodie...|
000016a0  18 20 54 53 54 20 20 20  20 20 52 30 2c 20 23 32  |. TST     R0, #2|
000016b0  35 35 3c 3c 34 0d 09 f6  17 20 42 4c 45 51 20 20  |55<<4.... BLEQ  |
000016c0  20 20 61 64 64 5f 67 6f  6f 64 69 65 0d 0a 00 06  |  add_goodie....|
000016d0  20 3a 0d 0a 0a 1b 20 42  4c 20 20 20 20 20 20 75  | :.... BL      u|
000016e0  70 64 61 74 65 5f 73 70  72 69 74 65 73 0d 0a 14  |pdate_sprites...|
000016f0  06 20 3a 0d 0a 1e 17 a4  62 6f 72 64 65 72 63 6f  |. :.....borderco|
00001700  6c 28 30 2c 30 2c 32 35  35 29 0d 0a 28 19 20 42  |l(0,0,255)..(. B|
00001710  4c 20 20 20 20 20 20 75  70 64 61 74 65 5f 63 65  |L      update_ce|
00001720  6c 6c 73 0d 0a 32 06 20  3a 0d 0a 3c 19 a4 62 6f  |lls..2. :..<..bo|
00001730  72 64 65 72 63 6f 6c 28  30 2c 32 35 35 2c 32 35  |rdercol(0,255,25|
00001740  35 29 0d 0a 46 19 20 42  4c 20 20 20 20 20 20 73  |5)..F. BL      s|
00001750  70 6c 69 74 5f 73 63 72  65 65 6e 0d 0a 50 06 20  |plit_screen..P. |
00001760  3a 0d 0a 5a 1b a4 62 6f  72 64 65 72 63 6f 6c 28  |:..Z..bordercol(|
00001770  32 35 35 2c 32 35 35 2c  32 35 35 29 0d 0a 64 21  |255,255,255)..d!|
00001780  20 53 57 49 20 20 20 20  20 22 4f 53 5f 52 65 61  | SWI     "OS_Rea|
00001790  64 45 73 63 61 70 65 53  74 61 74 65 22 0d 0a 6e  |dEscapeState"..n|
000017a0  10 20 42 43 53 20 20 20  20 20 65 6e 64 0d 0a 78  |. BCS     end..x|
000017b0  06 20 3a 0d 0a 82 1d 20  4c 44 52 20 20 20 20 20  |. :.... LDR     |
000017c0  52 30 2c 20 61 64 72 5f  65 6e 64 5f 67 61 6d 65  |R0, adr_end_game|
000017d0  0d 0a 8c 14 20 4c 44 52  20 20 20 20 20 52 30 2c  |.... LDR     R0,|
000017e0  5b 52 30 5d 0d 0a 96 13  20 43 4d 50 20 20 20 20  |[R0].... CMP    |
000017f0  20 52 30 2c 20 23 30 0d  0a a0 10 20 42 4e 45 20  | R0, #0.... BNE |
00001800  20 20 20 20 65 6e 64 0d  0a aa 06 20 3a 0d 0a b4  |    end.... :...|
00001810  14 20 4c 44 52 20 20 20  20 20 52 30 2c 20 72 6e  |. LDR     R0, rn|
00001820  64 0d 0a be 1d 20 41 44  44 20 20 20 20 20 52 30  |d.... ADD     R0|
00001830  2c 52 30 2c 52 30 2c 20  52 4f 52 20 23 31 0d 0a  |,R0,R0, ROR #1..|
00001840  c8 19 20 80 20 20 20 20  20 52 31 2c 52 30 2c 20  |.. .     R1,R0, |
00001850  23 32 35 35 3c 3c 38 0d  0a d2 14 20 4c 44 52 20  |#255<<8.... LDR |
00001860  20 20 20 20 52 31 2c 5b  52 31 5d 0d 0a dc 13 20  |    R1,[R1].... |
00001870  82 20 20 20 20 20 52 30  2c 52 30 2c 52 31 0d 0a  |.     R0,R0,R1..|
00001880  e6 14 20 53 54 52 20 20  20 20 20 52 30 2c 20 72  |.. STR     R0, r|
00001890  6e 64 0d 0a f0 06 20 3a  0d 0a fa 17 20 42 20 20  |nd.... :.... B  |
000018a0  20 20 20 20 20 74 6f 74  61 6c 5f 6c 6f 6f 70 0d  |     total_loop.|
000018b0  0b 04 06 20 3a 0d 0b 0e  09 20 2e 65 6e 64 0d 0b  |... :.... .end..|
000018c0  18 06 20 3a 0d 0b 22 15  a4 62 6f 72 64 65 72 63  |.. :.."..borderc|
000018d0  6f 6c 28 30 2c 30 2c 30  29 0d 0b 2c 1c 20 4c 44  |ol(0,0,0)..,. LD|
000018e0  52 20 20 20 20 20 52 33  2c 20 73 63 72 65 65 6e  |R     R3, screen|
000018f0  5f 62 61 6e 6b 0d 0b 36  14 20 82 20 20 20 20 20  |_bank..6. .     |
00001900  52 33 2c 52 33 2c 20 23  31 0d 0b 40 1c 20 53 54  |R3,R3, #1..@. ST|
00001910  52 20 20 20 20 20 52 33  2c 20 73 63 72 65 65 6e  |R     R3, screen|
00001920  5f 62 61 6e 6b 0d 0b 4a  16 20 52 53 42 20 20 20  |_bank..J. RSB   |
00001930  20 20 52 31 2c 52 33 2c  20 23 32 0d 0b 54 13 20  |  R1,R3, #2..T. |
00001940  43 4d 50 20 20 20 20 20  52 33 2c 20 23 30 0d 0b  |CMP     R3, #0..|
00001950  5e 18 20 4c 44 52 45 51  20 20 20 52 33 2c 20 73  |^. LDREQ   R3, s|
00001960  63 72 65 65 6e 31 0d 0b  68 18 20 4c 44 52 4e 45  |creen1..h. LDRNE|
00001970  20 20 20 52 33 2c 20 73  63 72 65 65 6e 32 0d 0b  |   R3, screen2..|
00001980  72 17 20 53 54 52 20 20  20 20 20 52 33 2c 20 73  |r. STR     R3, s|
00001990  63 72 65 65 6e 0d 0b 7c  19 20 42 4c 20 20 20 20  |creen..|. BL    |
000019a0  20 20 63 6c 65 61 72 5f  73 63 72 65 65 6e 0d 0b  |  clear_screen..|
000019b0  86 06 20 3a 0d 0b 90 1d  20 4c 44 4d 46 44 20 20  |.. :.... LDMFD  |
000019c0  20 52 31 33 21 2c 7b 52  30 2d 52 31 32 2c 50 43  | R13!,{R0-R12,PC|
000019d0  7d 0d 0b 9a 06 20 3a 0d  0b a4 12 20 2e 61 64 72  |}.... :.... .adr|
000019e0  5f 65 6e 64 5f 67 61 6d  65 0d 0b ae 15 20 45 51  |_end_game.... EQ|
000019f0  55 44 20 20 20 20 65 6e  64 5f 67 61 6d 65 0d 0b  |UD    end_game..|
00001a00  b8 06 20 3a 0d 0b c2 0e  20 2e 77 69 70 65 5f 61  |.. :.... .wipe_a|
00001a10  6c 6c 0d 0b cc 1e 20 53  54 4d 46 44 20 20 20 52  |ll.... STMFD   R|
00001a20  31 33 21 2c 7b 52 30 2d  52 31 32 2c 52 31 34 7d  |13!,{R0-R12,R14}|
00001a30  0d 0b d6 06 20 3a 0d 0b  e0 1a 20 4c 44 52 20 20  |.... :.... LDR  |
00001a40  20 20 20 52 39 2c 20 61  64 72 5f 73 6c 69 73 74  |   R9, adr_slist|
00001a50  0d 0b ea 0d 20 2e 77 73  6c 6f 6f 70 31 0d 0b f4  |.... .wsloop1...|
00001a60  17 20 4c 44 4d 49 41 20  20 20 52 39 2c 7b 52 35  |. LDMIA   R9,{R5|
00001a70  2d 52 38 7d 0d 0b fe 06  20 3a 0d 0c 08 1a 20 4d  |-R8}.... :.... M|
00001a80  4f 56 20 20 20 20 20 52  31 2c 52 36 2c 20 4c 53  |OV     R1,R6, LS|
00001a90  52 20 23 32 0d 0c 12 1a  20 4d 4f 56 20 20 20 20  |R #2.... MOV    |
00001aa0  20 52 32 2c 52 37 2c 20  4c 53 52 20 23 32 0d 0c  | R2,R7, LSR #2..|
00001ab0  1c 06 20 3a 0d 0c 26 13  20 43 4d 50 20 20 20 20  |.. :..&. CMP    |
00001ac0  20 52 35 2c 20 23 31 0d  0c 30 16 20 53 55 42 45  | R5, #1..0. SUBE|
00001ad0  51 20 20 20 52 31 2c 52  31 2c 20 23 34 0d 0c 3a  |Q   R1,R1, #4..:|
00001ae0  1b 20 42 4c 45 51 20 20  20 20 66 69 6c 6c 5f 66  |. BLEQ    fill_f|
00001af0  69 6c 6c 5f 32 30 31 36  0d 0c 44 21 20 42 45 51  |ill_2016..D! BEQ|
00001b00  20 20 20 20 20 77 69 70  65 5f 65 6e 64 5f 73 70  |     wipe_end_sp|
00001b10  72 69 74 65 5f 6c 6f 6f  70 0d 0c 4e 06 20 3a 0d  |rite_loop..N. :.|
00001b20  0c 58 13 20 43 4d 50 20  20 20 20 20 52 35 2c 20  |.X. CMP     R5, |
00001b30  23 32 0d 0c 62 16 20 53  55 42 45 51 20 20 20 52  |#2..b. SUBEQ   R|
00001b40  31 2c 52 31 2c 20 23 34  0d 0c 6c 1b 20 42 4c 45  |1,R1, #4..l. BLE|
00001b50  51 20 20 20 20 66 69 6c  6c 5f 66 69 6c 6c 5f 32  |Q    fill_fill_2|
00001b60  30 31 36 0d 0c 76 21 20  42 45 51 20 20 20 20 20  |016..v! BEQ     |
00001b70  77 69 70 65 5f 65 6e 64  5f 73 70 72 69 74 65 5f  |wipe_end_sprite_|
00001b80  6c 6f 6f 70 0d 0c 80 06  20 3a 0d 0c 8a 13 20 43  |loop.... :.... C|
00001b90  4d 50 20 20 20 20 20 52  35 2c 20 23 33 0d 0c 94  |MP     R5, #3...|
00001ba0  17 20 42 4c 54 20 20 20  20 20 6e 6f 74 5f 61 5f  |. BLT     not_a_|
00001bb0  31 32 31 32 0d 0c 9e 14  20 43 4d 50 20 20 20 20  |1212.... CMP    |
00001bc0  20 52 35 2c 20 23 31 31  0d 0c a8 17 20 42 47 54  | R5, #11.... BGT|
00001bd0  20 20 20 20 20 6e 6f 74  5f 61 5f 31 32 31 32 0d  |     not_a_1212.|
00001be0  0c b2 1b 20 42 4c 20 20  20 20 20 20 66 69 6c 6c  |... BL      fill|
00001bf0  5f 66 69 6c 6c 5f 31 32  31 32 0d 0c bc 21 20 42  |_fill_1212...! B|
00001c00  20 20 20 20 20 20 20 77  69 70 65 5f 65 6e 64 5f  |       wipe_end_|
00001c10  73 70 72 69 74 65 5f 6c  6f 6f 70 0d 0c c6 10 20  |sprite_loop.... |
00001c20  2e 6e 6f 74 5f 61 5f 31  32 31 32 0d 0c d0 06 20  |.not_a_1212.... |
00001c30  3a 0d 0c da 14 20 43 4d  50 20 20 20 20 20 52 35  |:.... CMP     R5|
00001c40  2c 20 23 31 33 0d 0c e4  1b 20 42 4c 45 51 20 20  |, #13.... BLEQ  |
00001c50  20 20 66 69 6c 6c 5f 66  69 6c 6c 5f 31 32 36 34  |  fill_fill_1264|
00001c60  0d 0c ee 06 20 3a 0d 0c  f8 14 20 43 4d 50 20 20  |.... :.... CMP  |
00001c70  20 20 20 52 35 2c 20 23  31 34 0d 0d 02 1b 20 42  |   R5, #14.... B|
00001c80  4c 45 51 20 20 20 20 66  69 6c 6c 5f 66 69 6c 6c  |LEQ    fill_fill|
00001c90  5f 31 32 30 38 0d 0d 0c  14 20 43 4d 50 20 20 20  |_1208.... CMP   |
00001ca0  20 20 52 35 2c 20 23 31  35 0d 0d 16 1b 20 42 4c  |  R5, #15.... BL|
00001cb0  45 51 20 20 20 20 66 69  6c 6c 5f 66 69 6c 6c 5f  |EQ    fill_fill_|
00001cc0  31 32 30 38 0d 0d 20 06  20 3a 0d 0d 2a 1a 20 2e  |1208.. . :..*. .|
00001cd0  77 69 70 65 5f 65 6e 64  5f 73 70 72 69 74 65 5f  |wipe_end_sprite_|
00001ce0  6c 6f 6f 70 0d 0d 34 17  20 41 44 44 20 20 20 20  |loop..4. ADD    |
00001cf0  20 52 39 2c 52 39 2c 20  23 31 36 0d 0d 3e 13 20  | R9,R9, #16..>. |
00001d00  43 4d 50 20 20 20 20 20  52 35 2c 20 23 30 0d 0d  |CMP     R5, #0..|
00001d10  48 14 20 42 47 45 20 20  20 20 20 77 73 6c 6f 6f  |H. BGE     wsloo|
00001d20  70 31 0d 0d 52 06 20 3a  0d 0d 5c 1a 20 4c 44 52  |p1..R. :..\. LDR|
00001d30  20 20 20 20 20 52 39 2c  20 61 64 72 5f 63 6c 69  |     R9, adr_cli|
00001d40  73 74 0d 0d 66 0d 20 2e  77 63 6c 6f 6f 70 31 0d  |st..f. .wcloop1.|
00001d50  0d 70 17 20 4c 44 4d 49  41 20 20 20 52 39 2c 7b  |.p. LDMIA   R9,{|
00001d60  52 30 2d 52 37 7d 0d 0d  7a 1a 20 4d 4f 56 20 20  |R0-R7}..z. MOV  |
00001d70  20 20 20 52 31 2c 52 31  2c 20 41 53 52 20 23 34  |   R1,R1, ASR #4|
00001d80  0d 0d 84 1a 20 4d 4f 56  20 20 20 20 20 52 32 2c  |.... MOV     R2,|
00001d90  52 32 2c 20 41 53 52 20  23 34 0d 0d 8e 13 20 43  |R2, ASR #4.... C|
00001da0  4d 50 20 20 20 20 20 52  30 2c 20 23 30 0d 0d 98  |MP     R0, #0...|
00001db0  17 20 42 45 51 20 20 20  20 20 77 63 65 6c 6c 5f  |. BEQ     wcell_|
00001dc0  73 6b 69 70 0d 0d a2 13  20 43 4d 50 20 20 20 20  |skip.... CMP    |
00001dd0  20 52 30 2c 20 23 31 0d  0d ac 1b 20 42 4c 45 51  | R0, #1.... BLEQ|
00001de0  20 20 20 20 66 69 6c 6c  5f 66 69 6c 6c 5f 30 31  |    fill_fill_01|
00001df0  30 31 0d 0d b6 17 20 42  45 51 20 20 20 20 20 77  |01.... BEQ     w|
00001e00  63 65 6c 6c 5f 73 6b 69  70 0d 0d c0 13 20 43 4d  |cell_skip.... CM|
00001e10  50 20 20 20 20 20 52 30  2c 20 23 32 0d 0d ca 16  |P     R0, #2....|
00001e20  20 53 55 42 45 51 20 20  20 52 31 2c 52 31 2c 20  | SUBEQ   R1,R1, |
00001e30  23 32 0d 0d d4 16 20 53  55 42 45 51 20 20 20 52  |#2.... SUBEQ   R|
00001e40  32 2c 52 32 2c 20 23 32  0d 0d de 1b 20 42 4c 45  |2,R2, #2.... BLE|
00001e50  51 20 20 20 20 66 69 6c  6c 5f 66 69 6c 6c 5f 30  |Q    fill_fill_0|
00001e60  38 30 34 0d 0d e8 17 20  42 45 51 20 20 20 20 20  |804.... BEQ     |
00001e70  77 63 65 6c 6c 5f 73 6b  69 70 0d 0d f2 13 20 43  |wcell_skip.... C|
00001e80  4d 50 20 20 20 20 20 52  30 2c 20 23 33 0d 0d fc  |MP     R0, #3...|
00001e90  16 20 53 55 42 45 51 20  20 20 52 31 2c 52 31 2c  |. SUBEQ   R1,R1,|
00001ea0  20 23 32 0d 0e 06 16 20  53 55 42 45 51 20 20 20  | #2.... SUBEQ   |
00001eb0  52 32 2c 52 32 2c 20 23  32 0d 0e 10 1b 20 42 4c  |R2,R2, #2.... BL|
00001ec0  45 51 20 20 20 20 66 69  6c 6c 5f 66 69 6c 6c 5f  |EQ    fill_fill_|
00001ed0  30 38 30 34 0d 0e 1a 17  20 42 45 51 20 20 20 20  |0804.... BEQ    |
00001ee0  20 77 63 65 6c 6c 5f 73  6b 69 70 0d 0e 24 13 20  | wcell_skip..$. |
00001ef0  43 4d 50 20 20 20 20 20  52 30 2c 20 23 34 0d 0e  |CMP     R0, #4..|
00001f00  2e 16 20 53 55 42 45 51  20 20 20 52 31 2c 52 31  |.. SUBEQ   R1,R1|
00001f10  2c 20 23 32 0d 0e 38 16  20 53 55 42 45 51 20 20  |, #2..8. SUBEQ  |
00001f20  20 52 32 2c 52 32 2c 20  23 32 0d 0e 42 1b 20 42  | R2,R2, #2..B. B|
00001f30  4c 45 51 20 20 20 20 66  69 6c 6c 5f 66 69 6c 6c  |LEQ    fill_fill|
00001f40  5f 30 38 30 34 0d 0e 4c  17 20 42 45 51 20 20 20  |_0804..L. BEQ   |
00001f50  20 20 77 63 65 6c 6c 5f  73 6b 69 70 0d 0e 56 13  |  wcell_skip..V.|
00001f60  20 43 4d 50 20 20 20 20  20 52 30 2c 20 23 35 0d  | CMP     R0, #5.|
00001f70  0e 60 16 20 53 55 42 45  51 20 20 20 52 31 2c 52  |.`. SUBEQ   R1,R|
00001f80  31 2c 20 23 32 0d 0e 6a  16 20 53 55 42 45 51 20  |1, #2..j. SUBEQ |
00001f90  20 20 52 32 2c 52 32 2c  20 23 32 0d 0e 74 1b 20  |  R2,R2, #2..t. |
00001fa0  42 4c 45 51 20 20 20 20  66 69 6c 6c 5f 66 69 6c  |BLEQ    fill_fil|
00001fb0  6c 5f 30 38 30 34 0d 0e  7e 17 20 42 45 51 20 20  |l_0804..~. BEQ  |
00001fc0  20 20 20 77 63 65 6c 6c  5f 73 6b 69 70 0d 0e 88  |   wcell_skip...|
00001fd0  13 20 43 4d 50 20 20 20  20 20 52 30 2c 20 23 36  |. CMP     R0, #6|
00001fe0  0d 0e 92 16 20 53 55 42  45 51 20 20 20 52 31 2c  |.... SUBEQ   R1,|
00001ff0  52 31 2c 20 23 34 0d 0e  9c 16 20 53 55 42 45 51  |R1, #4.... SUBEQ|
00002000  20 20 20 52 32 2c 52 32  2c 20 23 34 0d 0e a6 1b  |   R2,R2, #4....|
00002010  20 42 4c 45 51 20 20 20  20 66 69 6c 6c 5f 66 69  | BLEQ    fill_fi|
00002020  6c 6c 5f 31 32 30 38 0d  0e b0 17 20 42 45 51 20  |ll_1208.... BEQ |
00002030  20 20 20 20 77 63 65 6c  6c 5f 73 6b 69 70 0d 0e  |    wcell_skip..|
00002040  ba 13 20 43 4d 50 20 20  20 20 20 52 30 2c 20 23  |.. CMP     R0, #|
00002050  37 0d 0e c4 16 20 53 55  42 45 51 20 20 20 52 31  |7.... SUBEQ   R1|
00002060  2c 52 31 2c 20 23 32 0d  0e ce 16 20 53 55 42 45  |,R1, #2.... SUBE|
00002070  51 20 20 20 52 32 2c 52  32 2c 20 23 32 0d 0e d8  |Q   R2,R2, #2...|
00002080  1b 20 42 4c 45 51 20 20  20 20 66 69 6c 6c 5f 66  |. BLEQ    fill_f|
00002090  69 6c 6c 5f 30 38 30 34  0d 0e e2 17 20 42 45 51  |ill_0804.... BEQ|
000020a0  20 20 20 20 20 77 63 65  6c 6c 5f 73 6b 69 70 0d  |     wcell_skip.|
000020b0  0e ec 13 20 43 4d 50 20  20 20 20 20 52 30 2c 20  |... CMP     R0, |
000020c0  23 38 0d 0e f6 16 20 53  55 42 45 51 20 20 20 52  |#8.... SUBEQ   R|
000020d0  31 2c 52 31 2c 20 23 32  0d 0f 00 16 20 53 55 42  |1,R1, #2.... SUB|
000020e0  45 51 20 20 20 52 32 2c  52 32 2c 20 23 32 0d 0f  |EQ   R2,R2, #2..|
000020f0  0a 1b 20 42 4c 45 51 20  20 20 20 66 69 6c 6c 5f  |.. BLEQ    fill_|
00002100  66 69 6c 6c 5f 30 38 30  34 0d 0f 14 17 20 42 45  |fill_0804.... BE|
00002110  51 20 20 20 20 20 77 63  65 6c 6c 5f 73 6b 69 70  |Q     wcell_skip|
00002120  0d 0f 1e 13 20 43 4d 50  20 20 20 20 20 52 30 2c  |.... CMP     R0,|
00002130  20 23 39 0d 0f 28 16 20  53 55 42 45 51 20 20 20  | #9..(. SUBEQ   |
00002140  52 31 2c 52 31 2c 20 23  32 0d 0f 32 16 20 53 55  |R1,R1, #2..2. SU|
00002150  42 45 51 20 20 20 52 32  2c 52 32 2c 20 23 32 0d  |BEQ   R2,R2, #2.|
00002160  0f 3c 1b 20 42 4c 45 51  20 20 20 20 66 69 6c 6c  |.<. BLEQ    fill|
00002170  5f 66 69 6c 6c 5f 30 38  30 34 0d 0f 46 17 20 42  |_fill_0804..F. B|
00002180  45 51 20 20 20 20 20 77  63 65 6c 6c 5f 73 6b 69  |EQ     wcell_ski|
00002190  70 0d 0f 50 14 20 43 4d  50 20 20 20 20 20 52 30  |p..P. CMP     R0|
000021a0  2c 20 23 31 30 0d 0f 5a  16 20 53 55 42 45 51 20  |, #10..Z. SUBEQ |
000021b0  20 20 52 31 2c 52 31 2c  20 23 34 0d 0f 64 16 20  |  R1,R1, #4..d. |
000021c0  53 55 42 45 51 20 20 20  52 32 2c 52 32 2c 20 23  |SUBEQ   R2,R2, #|
000021d0  34 0d 0f 6e 1b 20 42 4c  45 51 20 20 20 20 66 69  |4..n. BLEQ    fi|
000021e0  6c 6c 5f 66 69 6c 6c 5f  31 32 30 38 0d 0f 78 17  |ll_fill_1208..x.|
000021f0  20 42 45 51 20 20 20 20  20 77 63 65 6c 6c 5f 73  | BEQ     wcell_s|
00002200  6b 69 70 0d 0f 82 14 20  43 4d 50 20 20 20 20 20  |kip.... CMP     |
00002210  52 30 2c 20 23 31 31 0d  0f 8c 16 20 53 55 42 45  |R0, #11.... SUBE|
00002220  51 20 20 20 52 31 2c 52  31 2c 20 23 38 0d 0f 96  |Q   R1,R1, #8...|
00002230  16 20 53 55 42 45 51 20  20 20 52 32 2c 52 32 2c  |. SUBEQ   R2,R2,|
00002240  20 23 38 0d 0f a0 1b 20  42 4c 45 51 20 20 20 20  | #8.... BLEQ    |
00002250  66 69 6c 6c 5f 66 69 6c  6c 5f 32 30 31 36 0d 0f  |fill_fill_2016..|
00002260  aa 14 20 43 4d 50 20 20  20 20 20 52 30 2c 20 23  |.. CMP     R0, #|
00002270  31 32 0d 0f b4 16 20 53  55 42 45 51 20 20 20 52  |12.... SUBEQ   R|
00002280  31 2c 52 31 2c 20 23 32  0d 0f be 16 20 53 55 42  |1,R1, #2.... SUB|
00002290  45 51 20 20 20 52 32 2c  52 32 2c 20 23 32 0d 0f  |EQ   R2,R2, #2..|
000022a0  c8 1b 20 42 4c 45 51 20  20 20 20 66 69 6c 6c 5f  |.. BLEQ    fill_|
000022b0  66 69 6c 6c 5f 30 38 30  34 0d 0f d2 14 20 43 4d  |fill_0804.... CM|
000022c0  50 20 20 20 20 20 52 30  2c 20 23 31 33 0d 0f dc  |P     R0, #13...|
000022d0  1b 20 42 4c 45 51 20 20  20 20 66 69 6c 6c 5f 66  |. BLEQ    fill_f|
000022e0  69 6c 6c 5f 30 38 30 34  0d 0f e6 10 20 2e 77 63  |ill_0804.... .wc|
000022f0  65 6c 6c 5f 73 6b 69 70  0d 0f f0 17 20 41 44 44  |ell_skip.... ADD|
00002300  20 20 20 20 20 52 39 2c  52 39 2c 20 23 33 32 0d  |     R9,R9, #32.|
00002310  0f fa 13 20 43 4d 50 20  20 20 20 20 52 30 2c 20  |... CMP     R0, |
00002320  23 30 0d 10 04 14 20 42  47 45 20 20 20 20 20 77  |#0.... BGE     w|
00002330  63 6c 6f 6f 70 31 0d 10  0e 06 20 3a 0d 10 18 1d  |cloop1.... :....|
00002340  20 4c 44 4d 46 44 20 20  20 52 31 33 21 2c 7b 52  | LDMFD   R13!,{R|
00002350  30 2d 52 31 32 2c 50 43  7d 0d 10 22 06 20 3a 0d  |0-R12,PC}..". :.|
00002360  10 2c 14 20 2e 75 70 64  61 74 65 5f 73 70 72 69  |.,. .update_spri|
00002370  74 65 73 0d 10 36 1e 20  53 54 4d 46 44 20 20 20  |tes..6. STMFD   |
00002380  52 31 33 21 2c 7b 52 30  2d 52 31 32 2c 52 31 34  |R13!,{R0-R12,R14|
00002390  7d 0d 10 40 06 20 3a 0d  10 4a 1a 20 4c 44 52 20  |}..@. :..J. LDR |
000023a0  20 20 20 20 52 39 2c 20  61 64 72 5f 73 6c 69 73  |    R9, adr_slis|
000023b0  74 0d 10 54 0c 20 2e 73  6c 6f 6f 70 31 0d 10 5e  |t..T. .sloop1..^|
000023c0  17 20 4c 44 4d 49 41 20  20 20 52 39 2c 7b 52 35  |. LDMIA   R9,{R5|
000023d0  2d 52 38 7d 0d 10 68 13  20 43 4d 50 20 20 20 20  |-R8}..h. CMP    |
000023e0  20 52 35 2c 20 23 31 0d  10 72 14 20 42 4c 45 51  | R5, #1..r. BLEQ|
000023f0  20 20 20 20 70 6c 61 79  65 72 31 0d 10 7c 1c 20  |    player1..|. |
00002400  42 45 51 20 20 20 20 20  65 6e 64 5f 73 70 72 69  |BEQ     end_spri|
00002410  74 65 5f 6c 6f 6f 70 0d  10 86 13 20 43 4d 50 20  |te_loop.... CMP |
00002420  20 20 20 20 52 35 2c 20  23 32 0d 10 90 14 20 42  |    R5, #2.... B|
00002430  4c 45 51 20 20 20 20 70  6c 61 79 65 72 32 0d 10  |LEQ    player2..|
00002440  9a 1c 20 42 45 51 20 20  20 20 20 65 6e 64 5f 73  |.. BEQ     end_s|
00002450  70 72 69 74 65 5f 6c 6f  6f 70 0d 10 a4 13 20 43  |prite_loop.... C|
00002460  4d 50 20 20 20 20 20 52  35 2c 20 23 33 0d 10 ae  |MP     R5, #3...|
00002470  12 20 42 4c 45 51 20 20  20 20 66 6c 61 6d 65 0d  |. BLEQ    flame.|
00002480  10 b8 1c 20 42 45 51 20  20 20 20 20 65 6e 64 5f  |... BEQ     end_|
00002490  73 70 72 69 74 65 5f 6c  6f 6f 70 0d 10 c2 13 20  |sprite_loop.... |
000024a0  43 4d 50 20 20 20 20 20  52 35 2c 20 23 34 0d 10  |CMP     R5, #4..|
000024b0  cc 1a 20 42 4c 45 51 20  20 20 20 77 65 61 70 6f  |.. BLEQ    weapo|
000024c0  6e 5f 70 69 73 74 6f 6c  0d 10 d6 1c 20 42 45 51  |n_pistol.... BEQ|
000024d0  20 20 20 20 20 65 6e 64  5f 73 70 72 69 74 65 5f  |     end_sprite_|
000024e0  6c 6f 6f 70 0d 10 e0 13  20 43 4d 50 20 20 20 20  |loop.... CMP    |
000024f0  20 52 35 2c 20 23 35 0d  10 ea 17 20 42 4c 45 51  | R5, #5.... BLEQ|
00002500  20 20 20 20 77 65 61 70  6f 6e 5f 67 75 6e 0d 10  |    weapon_gun..|
00002510  f4 1c 20 42 45 51 20 20  20 20 20 65 6e 64 5f 73  |.. BEQ     end_s|
00002520  70 72 69 74 65 5f 6c 6f  6f 70 0d 10 fe 13 20 43  |prite_loop.... C|
00002530  4d 50 20 20 20 20 20 52  35 2c 20 23 36 0d 11 08  |MP     R5, #6...|
00002540  1a 20 42 4c 45 51 20 20  20 20 77 65 61 70 6f 6e  |. BLEQ    weapon|
00002550  5f 6d 6f 72 74 61 72 0d  11 12 1c 20 42 45 51 20  |_mortar.... BEQ |
00002560  20 20 20 20 65 6e 64 5f  73 70 72 69 74 65 5f 6c  |    end_sprite_l|
00002570  6f 6f 70 0d 11 1c 13 20  43 4d 50 20 20 20 20 20  |oop.... CMP     |
00002580  52 35 2c 20 23 37 0d 11  26 1a 20 42 4c 45 51 20  |R5, #7..&. BLEQ |
00002590  20 20 20 77 65 61 70 6f  6e 5f 68 6f 6d 69 6e 67  |   weapon_homing|
000025a0  0d 11 30 1c 20 42 45 51  20 20 20 20 20 65 6e 64  |..0. BEQ     end|
000025b0  5f 73 70 72 69 74 65 5f  6c 6f 6f 70 0d 11 3a 13  |_sprite_loop..:.|
000025c0  20 43 4d 50 20 20 20 20  20 52 35 2c 20 23 38 0d  | CMP     R5, #8.|
000025d0  11 44 1b 20 42 4c 45 51  20 20 20 20 77 65 61 70  |.D. BLEQ    weap|
000025e0  6f 6e 5f 73 65 65 6b 69  6e 67 0d 11 4e 1c 20 42  |on_seeking..N. B|
000025f0  45 51 20 20 20 20 20 65  6e 64 5f 73 70 72 69 74  |EQ     end_sprit|
00002600  65 5f 6c 6f 6f 70 0d 11  58 13 20 43 4d 50 20 20  |e_loop..X. CMP  |
00002610  20 20 20 52 35 2c 20 23  39 0d 11 62 1c 20 42 4c  |   R5, #9..b. BL|
00002620  45 51 20 20 20 20 77 65  61 70 6f 6e 5f 76 65 72  |EQ    weapon_ver|
00002630  74 69 63 61 6c 0d 11 6c  1c 20 42 45 51 20 20 20  |tical..l. BEQ   |
00002640  20 20 65 6e 64 5f 73 70  72 69 74 65 5f 6c 6f 6f  |  end_sprite_loo|
00002650  70 0d 11 76 14 20 43 4d  50 20 20 20 20 20 52 35  |p..v. CMP     R5|
00002660  2c 20 23 31 30 0d 11 80  1b 20 42 4c 45 51 20 20  |, #10.... BLEQ  |
00002670  20 20 77 65 61 70 6f 6e  5f 74 68 72 6f 77 65 72  |  weapon_thrower|
00002680  0d 11 8a 1c 20 42 45 51  20 20 20 20 20 65 6e 64  |.... BEQ     end|
00002690  5f 73 70 72 69 74 65 5f  6c 6f 6f 70 0d 11 94 14  |_sprite_loop....|
000026a0  20 43 4d 50 20 20 20 20  20 52 35 2c 20 23 31 31  | CMP     R5, #11|
000026b0  0d 11 9e 18 20 42 4c 45  51 20 20 20 20 77 65 61  |.... BLEQ    wea|
000026c0  70 6f 6e 5f 62 6f 6d 62  0d 11 a8 1c 20 42 45 51  |pon_bomb.... BEQ|
000026d0  20 20 20 20 20 65 6e 64  5f 73 70 72 69 74 65 5f  |     end_sprite_|
000026e0  6c 6f 6f 70 0d 11 b2 14  20 43 4d 50 20 20 20 20  |loop.... CMP    |
000026f0  20 52 35 2c 20 23 31 32  0d 11 bc 18 20 42 4c 45  | R5, #12.... BLE|
00002700  51 20 20 20 20 77 65 61  70 6f 6e 5f 67 6c 75 65  |Q    weapon_glue|
00002710  0d 11 c6 1c 20 42 45 51  20 20 20 20 20 65 6e 64  |.... BEQ     end|
00002720  5f 73 70 72 69 74 65 5f  6c 6f 6f 70 0d 11 d0 14  |_sprite_loop....|
00002730  20 43 4d 50 20 20 20 20  20 52 35 2c 20 23 31 33  | CMP     R5, #13|
00002740  0d 11 da 11 20 42 4c 45  51 20 20 20 20 64 6f 6f  |.... BLEQ    doo|
00002750  72 0d 11 e4 1c 20 42 45  51 20 20 20 20 20 65 6e  |r.... BEQ     en|
00002760  64 5f 73 70 72 69 74 65  5f 6c 6f 6f 70 0d 11 ee  |d_sprite_loop...|
00002770  14 20 43 4d 50 20 20 20  20 20 52 35 2c 20 23 31  |. CMP     R5, #1|
00002780  34 0d 11 f8 13 20 42 4c  45 51 20 20 20 20 73 77  |4.... BLEQ    sw|
00002790  69 74 63 68 0d 12 02 1c  20 42 45 51 20 20 20 20  |itch.... BEQ    |
000027a0  20 65 6e 64 5f 73 70 72  69 74 65 5f 6c 6f 6f 70  | end_sprite_loop|
000027b0  0d 12 0c 14 20 43 4d 50  20 20 20 20 20 52 35 2c  |.... CMP     R5,|
000027c0  20 23 31 35 0d 12 16 14  20 42 4c 45 51 20 20 20  | #15.... BLEQ   |
000027d0  20 67 75 6e 5f 67 75 6e  0d 12 20 15 20 2e 65 6e  | gun_gun.. . .en|
000027e0  64 5f 73 70 72 69 74 65  5f 6c 6f 6f 70 0d 12 2a  |d_sprite_loop..*|
000027f0  18 20 53 54 4d 49 41 20  20 20 52 39 21 2c 7b 52  |. STMIA   R9!,{R|
00002800  35 2d 52 38 7d 0d 12 34  13 20 43 4d 50 20 20 20  |5-R8}..4. CMP   |
00002810  20 20 52 35 2c 20 23 30  0d 12 3e 13 20 42 47 45  |  R5, #0..>. BGE|
00002820  20 20 20 20 20 73 6c 6f  6f 70 31 0d 12 48 06 20  |     sloop1..H. |
00002830  3a 0d 12 52 1d 20 4c 44  4d 46 44 20 20 20 52 31  |:..R. LDMFD   R1|
00002840  33 21 2c 7b 52 30 2d 52  31 32 2c 50 43 7d 0d 12  |3!,{R0-R12,PC}..|
00002850  5c 06 20 3a 0d 12 66 0f  20 2e 70 31 5f 77 65 61  |\. :..f. .p1_wea|
00002860  70 6f 6e 0d 12 70 0e 20  45 51 55 44 20 20 20 20  |pon..p. EQUD    |
00002870  32 0d 12 7a 0f 20 2e 70  32 5f 77 65 61 70 6f 6e  |2..z. .p2_weapon|
00002880  0d 12 84 0e 20 45 51 55  44 20 20 20 20 32 0d 12  |.... EQUD    2..|
00002890  8e 06 20 3a 0d 12 98 10  20 2e 72 65 61 64 5f 70  |.. :.... .read_p|
000028a0  6f 69 6e 74 0d 12 a2 1e  20 53 54 4d 46 44 20 20  |oint.... STMFD  |
000028b0  20 52 31 33 21 2c 7b 52  31 2d 52 31 32 2c 52 31  | R13!,{R1-R12,R1|
000028c0  34 7d 0d 12 ac 06 20 3a  0d 12 b6 18 20 52 53 42  |4}.... :.... RSB|
000028d0  20 20 20 20 20 52 32 2c  52 32 2c 20 23 32 35 36  |     R2,R2, #256|
000028e0  0d 12 c0 06 20 3a 0d 12  ca 35 20 4d 4f 56 20 20  |.... :...5 MOV  |
000028f0  20 20 20 52 37 2c 20 23  78 5f 73 68 69 66 74 20  |   R7, #x_shift |
00002900  20 20 20 20 20 20 20 20  3b 20 67 65 74 20 73 63  |        ; get sc|
00002910  72 65 65 6e 20 73 68 69  66 74 73 0d 12 d4 19 20  |reen shifts.... |
00002920  4d 4f 56 20 20 20 20 20  52 38 2c 20 23 79 5f 73  |MOV     R8, #y_s|
00002930  68 69 66 74 0d 12 de 36  20 4c 44 52 20 20 20 20  |hift...6 LDR    |
00002940  20 52 39 2c 20 73 63 72  65 65 6e 73 74 6f 72 65  | R9, screenstore|
00002950  20 20 20 20 20 20 3b 20  67 65 74 20 73 63 72 65  |      ; get scre|
00002960  65 6e 20 61 64 64 72 65  73 73 0d 12 e8 06 20 3a  |en address.... :|
00002970  0d 12 f2 18 20 4d 4c 41  20 20 20 20 20 52 39 2c  |.... MLA     R9,|
00002980  52 37 2c 52 31 2c 52 39  0d 12 fc 18 20 4d 4c 41  |R7,R1,R9.... MLA|
00002990  20 20 20 20 20 52 31 2c  52 38 2c 52 32 2c 52 39  |     R1,R8,R2,R9|
000029a0  0d 13 06 06 20 3a 0d 13  10 14 20 4c 44 52 42 20  |.... :.... LDRB |
000029b0  20 20 20 52 30 2c 5b 52  31 5d 0d 13 1a 06 20 3a  |   R0,[R1].... :|
000029c0  0d 13 24 1d 20 4c 44 4d  46 44 20 20 20 52 31 33  |..$. LDMFD   R13|
000029d0  21 2c 7b 52 31 2d 52 31  32 2c 50 43 7d 0d 13 2e  |!,{R1-R12,PC}...|
000029e0  06 20 3a 0d 13 38 0f 20  2e 61 64 72 5f 63 6c 69  |. :..8. .adr_cli|
000029f0  73 74 0d 13 42 13 20 45  51 55 44 20 20 20 20 63  |st..B. EQUD    c|
00002a00  6c 69 73 74 25 0d 13 4c  0f 20 2e 61 64 72 5f 73  |list%..L. .adr_s|
00002a10  6c 69 73 74 0d 13 56 13  20 45 51 55 44 20 20 20  |list..V. EQUD   |
00002a20  20 73 6c 69 73 74 25 0d  13 60 06 20 3a 0d 13 6a  | slist%..`. :..j|
00002a30  0b 20 2e 66 6c 61 6d 65  0d 13 74 1a 20 53 54 4d  |. .flame..t. STM|
00002a40  46 44 20 20 20 52 31 33  21 2c 7b 52 39 2c 52 31  |FD   R13!,{R9,R1|
00002a50  34 7d 0d 13 7e 06 20 3a  0d 13 88 16 20 4c 44 52  |4}..~. :.... LDR|
00002a60  20 20 20 20 20 52 31 30  2c 20 70 31 5f 78 0d 13  |     R10, p1_x..|
00002a70  92 16 20 4c 44 52 20 20  20 20 20 52 31 31 2c 20  |.. LDR     R11, |
00002a80  70 31 5f 79 0d 13 9c 1a  20 4d 4f 56 20 20 20 20  |p1_y.... MOV    |
00002a90  20 52 39 2c 52 36 2c 20  41 53 52 20 23 32 0d 13  | R9,R6, ASR #2..|
00002aa0  a6 16 20 41 44 44 20 20  20 20 20 52 39 2c 52 39  |.. ADD     R9,R9|
00002ab0  2c 20 23 38 0d 13 b0 17  20 53 55 42 20 20 20 20  |, #8.... SUB    |
00002ac0  20 52 31 30 2c 52 39 2c  52 31 30 0d 13 ba 14 20  | R10,R9,R10.... |
00002ad0  43 4d 50 20 20 20 20 20  52 31 30 2c 20 23 30 0d  |CMP     R10, #0.|
00002ae0  13 c4 1a 20 42 4c 54 20  20 20 20 20 6e 6f 74 5f  |... BLT     not_|
00002af0  74 6f 75 63 68 65 64 31  31 0d 13 ce 1a 20 43 4d  |touched11.... CM|
00002b00  50 20 20 20 20 20 52 31  30 2c 20 23 78 65 78 74  |P     R10, #xext|
00002b10  25 2b 38 0d 13 d8 1a 20  42 47 54 20 20 20 20 20  |%+8.... BGT     |
00002b20  6e 6f 74 5f 74 6f 75 63  68 65 64 31 31 0d 13 e2  |not_touched11...|
00002b30  1a 20 4d 4f 56 20 20 20  20 20 52 39 2c 52 37 2c  |. MOV     R9,R7,|
00002b40  20 41 53 52 20 23 32 0d  13 ec 17 20 41 44 44 20  | ASR #2.... ADD |
00002b50  20 20 20 20 52 39 2c 52  39 2c 20 23 31 30 0d 13  |    R9,R9, #10..|
00002b60  f6 17 20 53 55 42 20 20  20 20 20 52 31 31 2c 52  |.. SUB     R11,R|
00002b70  39 2c 52 31 31 0d 14 00  14 20 43 4d 50 20 20 20  |9,R11.... CMP   |
00002b80  20 20 52 31 31 2c 20 23  30 0d 14 0a 1a 20 42 4c  |  R11, #0.... BL|
00002b90  54 20 20 20 20 20 6e 6f  74 5f 74 6f 75 63 68 65  |T     not_touche|
00002ba0  64 31 31 0d 14 14 1a 20  43 4d 50 20 20 20 20 20  |d11.... CMP     |
00002bb0  52 31 31 2c 20 23 79 65  78 74 25 2b 38 0d 14 1e  |R11, #yext%+8...|
00002bc0  1a 20 42 47 54 20 20 20  20 20 6e 6f 74 5f 74 6f  |. BGT     not_to|
00002bd0  75 63 68 65 64 31 31 0d  14 28 22 20 4c 44 52 20  |uched11..(" LDR |
00002be0  20 20 20 20 52 31 2c 20  61 64 72 5f 70 6c 61 79  |    R1, adr_play|
00002bf0  65 72 31 5f 61 6c 69 76  65 0d 14 32 14 20 4c 44  |er1_alive..2. LD|
00002c00  52 20 20 20 20 20 52 30  2c 5b 52 31 5d 0d 14 3c  |R     R0,[R1]..<|
00002c10  13 20 43 4d 50 20 20 20  20 20 52 30 2c 20 23 31  |. CMP     R0, #1|
00002c20  0d 14 46 1a 20 42 45 51  20 20 20 20 20 6e 6f 74  |..F. BEQ     not|
00002c30  5f 74 6f 75 63 68 65 64  31 31 0d 14 50 13 20 4d  |_touched11..P. M|
00002c40  4f 56 20 20 20 20 20 52  30 2c 20 23 31 0d 14 5a  |OV     R0, #1..Z|
00002c50  14 20 53 54 52 20 20 20  20 20 52 30 2c 5b 52 31  |. STR     R0,[R1|
00002c60  5d 0d 14 64 13 20 4d 4f  56 20 20 20 20 20 52 30  |]..d. MOV     R0|
00002c70  2c 20 23 33 0d 14 6e 14  20 4d 56 4e 20 20 20 20  |, #3..n. MVN    |
00002c80  20 52 31 2c 20 23 31 34  0d 14 78 19 20 4d 4f 56  | R1, #14..x. MOV|
00002c90  20 20 20 20 20 52 32 2c  20 23 73 63 72 65 61 6d  |     R2, #scream|
00002ca0  25 0d 14 82 13 20 4d 4f  56 20 20 20 20 20 52 33  |%.... MOV     R3|
00002cb0  2c 20 23 30 0d 14 8c 1c  20 53 57 49 20 20 20 20  |, #0.... SWI    |
00002cc0  20 22 53 6f 75 6e 64 5f  43 6f 6e 74 72 6f 6c 22  | "Sound_Control"|
00002cd0  0d 14 96 13 20 2e 6e 6f  74 5f 74 6f 75 63 68 65  |.... .not_touche|
00002ce0  64 31 31 0d 14 a0 16 20  4c 44 52 20 20 20 20 20  |d11.... LDR     |
00002cf0  52 31 30 2c 20 70 32 5f  78 0d 14 aa 16 20 4c 44  |R10, p2_x.... LD|
00002d00  52 20 20 20 20 20 52 31  31 2c 20 70 32 5f 79 0d  |R     R11, p2_y.|
00002d10  14 b4 1a 20 4d 4f 56 20  20 20 20 20 52 39 2c 52  |... MOV     R9,R|
00002d20  36 2c 20 41 53 52 20 23  32 0d 14 be 16 20 41 44  |6, ASR #2.... AD|
00002d30  44 20 20 20 20 20 52 39  2c 52 39 2c 20 23 38 0d  |D     R9,R9, #8.|
00002d40  14 c8 17 20 53 55 42 20  20 20 20 20 52 31 30 2c  |... SUB     R10,|
00002d50  52 39 2c 52 31 30 0d 14  d2 14 20 43 4d 50 20 20  |R9,R10.... CMP  |
00002d60  20 20 20 52 31 30 2c 20  23 30 0d 14 dc 1a 20 42  |   R10, #0.... B|
00002d70  4c 54 20 20 20 20 20 6e  6f 74 5f 74 6f 75 63 68  |LT     not_touch|
00002d80  65 64 32 31 0d 14 e6 1a  20 43 4d 50 20 20 20 20  |ed21.... CMP    |
00002d90  20 52 31 30 2c 20 23 78  65 78 74 25 2b 38 0d 14  | R10, #xext%+8..|
00002da0  f0 1a 20 42 47 54 20 20  20 20 20 6e 6f 74 5f 74  |.. BGT     not_t|
00002db0  6f 75 63 68 65 64 32 31  0d 14 fa 1a 20 4d 4f 56  |ouched21.... MOV|
00002dc0  20 20 20 20 20 52 39 2c  52 37 2c 20 41 53 52 20  |     R9,R7, ASR |
00002dd0  23 32 0d 15 04 17 20 41  44 44 20 20 20 20 20 52  |#2.... ADD     R|
00002de0  39 2c 52 39 2c 20 23 31  30 0d 15 0e 17 20 53 55  |9,R9, #10.... SU|
00002df0  42 20 20 20 20 20 52 31  31 2c 52 39 2c 52 31 31  |B     R11,R9,R11|
00002e00  0d 15 18 14 20 43 4d 50  20 20 20 20 20 52 31 31  |.... CMP     R11|
00002e10  2c 20 23 30 0d 15 22 1a  20 42 4c 54 20 20 20 20  |, #0..". BLT    |
00002e20  20 6e 6f 74 5f 74 6f 75  63 68 65 64 32 31 0d 15  | not_touched21..|
00002e30  2c 1a 20 43 4d 50 20 20  20 20 20 52 31 31 2c 20  |,. CMP     R11, |
00002e40  23 79 65 78 74 25 2b 38  0d 15 36 1a 20 42 47 54  |#yext%+8..6. BGT|
00002e50  20 20 20 20 20 6e 6f 74  5f 74 6f 75 63 68 65 64  |     not_touched|
00002e60  32 31 0d 15 40 22 20 4c  44 52 20 20 20 20 20 52  |21..@" LDR     R|
00002e70  31 2c 20 61 64 72 5f 70  6c 61 79 65 72 32 5f 61  |1, adr_player2_a|
00002e80  6c 69 76 65 0d 15 4a 14  20 4c 44 52 20 20 20 20  |live..J. LDR    |
00002e90  20 52 30 2c 5b 52 31 5d  0d 15 54 13 20 43 4d 50  | R0,[R1]..T. CMP|
00002ea0  20 20 20 20 20 52 30 2c  20 23 31 0d 15 5e 1a 20  |     R0, #1..^. |
00002eb0  42 45 51 20 20 20 20 20  6e 6f 74 5f 74 6f 75 63  |BEQ     not_touc|
00002ec0  68 65 64 32 31 0d 15 68  13 20 4d 4f 56 20 20 20  |hed21..h. MOV   |
00002ed0  20 20 52 30 2c 20 23 31  0d 15 72 14 20 53 54 52  |  R0, #1..r. STR|
00002ee0  20 20 20 20 20 52 30 2c  5b 52 31 5d 0d 15 7c 13  |     R0,[R1]..|.|
00002ef0  20 4d 4f 56 20 20 20 20  20 52 30 2c 20 23 33 0d  | MOV     R0, #3.|
00002f00  15 86 14 20 4d 56 4e 20  20 20 20 20 52 31 2c 20  |... MVN     R1, |
00002f10  23 31 34 0d 15 90 19 20  4d 4f 56 20 20 20 20 20  |#14.... MOV     |
00002f20  52 32 2c 20 23 73 63 72  65 61 6d 25 0d 15 9a 13  |R2, #scream%....|
00002f30  20 4d 4f 56 20 20 20 20  20 52 33 2c 20 23 30 0d  | MOV     R3, #0.|
00002f40  15 a4 1c 20 53 57 49 20  20 20 20 20 22 53 6f 75  |... SWI     "Sou|
00002f50  6e 64 5f 43 6f 6e 74 72  6f 6c 22 0d 15 ae 13 20  |nd_Control".... |
00002f60  2e 6e 6f 74 5f 74 6f 75  63 68 65 64 32 31 0d 15  |.not_touched21..|
00002f70  b8 06 20 3a 0d 15 c2 16  20 41 44 44 20 20 20 20  |.. :.... ADD    |
00002f80  20 52 38 2c 52 38 2c 20  23 31 0d 15 cc 14 20 43  | R8,R8, #1.... C|
00002f90  4d 50 20 20 20 20 20 52  38 2c 20 23 31 35 0d 15  |MP     R8, #15..|
00002fa0  d6 13 20 4d 4f 56 47 54  20 20 20 52 38 2c 20 23  |.. MOVGT   R8, #|
00002fb0  30 0d 15 e0 13 20 4d 4f  56 20 20 20 20 20 52 30  |0.... MOV     R0|
00002fc0  2c 20 23 32 0d 15 ea 1d  20 41 44 44 20 20 20 20  |, #2.... ADD    |
00002fd0  20 52 30 2c 52 30 2c 52  38 2c 20 4c 53 52 20 23  | R0,R0,R8, LSR #|
00002fe0  32 0d 15 f4 1a 20 4d 4f  56 20 20 20 20 20 52 31  |2.... MOV     R1|
00002ff0  2c 52 36 2c 20 4c 53 52  20 23 32 0d 15 fe 1a 20  |,R6, LSR #2.... |
00003000  4d 4f 56 20 20 20 20 20  52 32 2c 52 37 2c 20 4c  |MOV     R2,R7, L|
00003010  53 52 20 23 32 0d 16 08  1d 20 42 4c 20 20 20 20  |SR #2.... BL    |
00003020  20 20 70 6c 6f 74 5f 73  70 72 69 74 65 5f 31 32  |  plot_sprite_12|
00003030  31 32 0d 16 12 06 20 3a  0d 16 1c 19 20 4c 44 4d  |12.... :.... LDM|
00003040  46 44 20 20 20 52 31 33  21 2c 7b 52 39 2c 50 43  |FD   R13!,{R9,PC|
00003050  7d 0d 16 26 06 20 3a 0d  16 30 17 20 2e 61 64 72  |}..&. :..0. .adr|
00003060  5f 70 6c 61 79 65 72 31  5f 61 6c 69 76 65 0d 16  |_player1_alive..|
00003070  3a 1a 20 45 51 55 44 20  20 20 20 70 6c 61 79 65  |:. EQUD    playe|
00003080  72 31 5f 61 6c 69 76 65  0d 16 44 17 20 2e 61 64  |r1_alive..D. .ad|
00003090  72 5f 70 6c 61 79 65 72  32 5f 61 6c 69 76 65 0d  |r_player2_alive.|
000030a0  16 4e 1a 20 45 51 55 44  20 20 20 20 70 6c 61 79  |.N. EQUD    play|
000030b0  65 72 32 5f 61 6c 69 76  65 0d 16 58 06 20 3a 0d  |er2_alive..X. :.|
000030c0  16 62 0a 20 2e 64 6f 6f  72 0d 16 6c 1a 20 53 54  |.b. .door..l. ST|
000030d0  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 39 2c 52  |MFD   R13!,{R9,R|
000030e0  31 34 7d 0d 16 76 06 20  3a 0d 16 80 15 20 54 53  |14}..v. :.... TS|
000030f0  54 20 20 20 20 20 52 38  2c 20 23 32 35 36 0d 16  |T     R8, #256..|
00003100  8a 19 20 42 4e 45 20 20  20 20 20 64 6f 6f 72 5f  |.. BNE     door_|
00003110  63 6c 6f 73 69 6e 67 0d  16 94 15 20 80 20 20 20  |closing.... .   |
00003120  20 20 52 30 2c 52 38 2c  20 23 31 35 0d 16 9e 14  |  R0,R8, #15....|
00003130  20 43 4d 50 20 20 20 20  20 52 30 2c 20 23 31 34  | CMP     R0, #14|
00003140  0d 16 a8 16 20 41 44 44  4c 54 20 20 20 52 30 2c  |.... ADDLT   R0,|
00003150  52 30 2c 20 23 31 0d 16  b2 17 20 42 49 43 20 20  |R0, #1.... BIC  |
00003160  20 20 20 52 38 2c 52 38  2c 20 23 31 35 0d 16 bc  |   R8,R8, #15...|
00003170  14 20 84 52 20 20 20 20  20 52 38 2c 52 38 2c 52  |. .R     R8,R8,R|
00003180  30 0d 16 c6 14 20 42 20  20 20 20 20 20 20 64 6f  |0.... B       do|
00003190  5f 64 6f 6f 72 0d 16 d0  12 20 2e 64 6f 6f 72 5f  |_door.... .door_|
000031a0  63 6c 6f 73 69 6e 67 0d  16 da 15 20 80 20 20 20  |closing.... .   |
000031b0  20 20 52 30 2c 52 38 2c  20 23 31 35 0d 16 e4 13  |  R0,R8, #15....|
000031c0  20 43 4d 50 20 20 20 20  20 52 30 2c 20 23 30 0d  | CMP     R0, #0.|
000031d0  16 ee 16 20 53 55 42 47  54 20 20 20 52 30 2c 52  |... SUBGT   R0,R|
000031e0  30 2c 20 23 31 0d 16 f8  17 20 42 49 43 20 20 20  |0, #1.... BIC   |
000031f0  20 20 52 38 2c 52 38 2c  20 23 31 35 0d 17 02 14  |  R8,R8, #15....|
00003200  20 84 52 20 20 20 20 20  52 38 2c 52 38 2c 52 30  | .R     R8,R8,R0|
00003210  0d 17 0c 0d 20 2e 64 6f  5f 64 6f 6f 72 0d 17 16  |.... .do_door...|
00003220  17 20 84 52 20 20 20 20  20 52 38 2c 52 38 2c 20  |. .R     R8,R8, |
00003230  23 32 35 36 0d 17 20 15  20 4c 44 52 20 20 20 20  |#256.. . LDR    |
00003240  20 52 30 2c 20 70 31 5f  78 0d 17 2a 15 20 4c 44  | R0, p1_x..*. LD|
00003250  52 20 20 20 20 20 52 31  2c 20 70 31 5f 79 0d 17  |R     R1, p1_y..|
00003260  34 1d 20 53 55 42 20 20  20 20 20 52 30 2c 52 36  |4. SUB     R0,R6|
00003270  2c 52 30 2c 20 41 53 4c  20 23 32 0d 17 3e 1d 20  |,R0, ASL #2..>. |
00003280  53 55 42 20 20 20 20 20  52 31 2c 52 37 2c 52 31  |SUB     R1,R7,R1|
00003290  2c 20 41 53 4c 20 23 32  0d 17 48 13 20 43 4d 50  |, ASL #2..H. CMP|
000032a0  20 20 20 20 20 52 30 2c  20 23 30 0d 17 52 16 20  |     R0, #0..R. |
000032b0  52 53 42 4c 54 20 20 20  52 30 2c 52 30 2c 20 23  |RSBLT   R0,R0, #|
000032c0  30 0d 17 5c 13 20 43 4d  50 20 20 20 20 20 52 31  |0..\. CMP     R1|
000032d0  2c 20 23 30 0d 17 66 16  20 52 53 42 4c 54 20 20  |, #0..f. RSBLT  |
000032e0  20 52 31 2c 52 31 2c 20  23 30 0d 17 70 15 20 41  | R1,R1, #0..p. A|
000032f0  44 44 20 20 20 20 20 52  30 2c 52 30 2c 52 31 0d  |DD     R0,R0,R1.|
00003300  17 7a 15 20 43 4d 50 20  20 20 20 20 52 30 2c 20  |.z. CMP     R0, |
00003310  23 31 32 38 0d 17 84 18  20 42 49 43 4c 54 20 20  |#128.... BICLT  |
00003320  20 52 38 2c 52 38 2c 20  23 32 35 36 0d 17 8e 15  | R8,R8, #256....|
00003330  20 4c 44 52 20 20 20 20  20 52 30 2c 20 70 32 5f  | LDR     R0, p2_|
00003340  78 0d 17 98 15 20 4c 44  52 20 20 20 20 20 52 31  |x.... LDR     R1|
00003350  2c 20 70 32 5f 79 0d 17  a2 1d 20 53 55 42 20 20  |, p2_y.... SUB  |
00003360  20 20 20 52 30 2c 52 36  2c 52 30 2c 20 41 53 4c  |   R0,R6,R0, ASL|
00003370  20 23 32 0d 17 ac 1d 20  53 55 42 20 20 20 20 20  | #2.... SUB     |
00003380  52 31 2c 52 37 2c 52 31  2c 20 41 53 4c 20 23 32  |R1,R7,R1, ASL #2|
00003390  0d 17 b6 13 20 43 4d 50  20 20 20 20 20 52 30 2c  |.... CMP     R0,|
000033a0  20 23 30 0d 17 c0 16 20  52 53 42 4c 54 20 20 20  | #0.... RSBLT   |
000033b0  52 30 2c 52 30 2c 20 23  30 0d 17 ca 13 20 43 4d  |R0,R0, #0.... CM|
000033c0  50 20 20 20 20 20 52 31  2c 20 23 30 0d 17 d4 16  |P     R1, #0....|
000033d0  20 52 53 42 4c 54 20 20  20 52 31 2c 52 31 2c 20  | RSBLT   R1,R1, |
000033e0  23 30 0d 17 de 15 20 41  44 44 20 20 20 20 20 52  |#0.... ADD     R|
000033f0  30 2c 52 30 2c 52 31 0d  17 e8 15 20 43 4d 50 20  |0,R0,R1.... CMP |
00003400  20 20 20 20 52 30 2c 20  23 31 32 38 0d 17 f2 18  |    R0, #128....|
00003410  20 42 49 43 4c 54 20 20  20 52 38 2c 52 38 2c 20  | BICLT   R8,R8, |
00003420  23 32 35 36 0d 17 fc 0f  20 2e 70 6c 6f 74 5f 64  |#256.... .plot_d|
00003430  6f 6f 72 0d 18 06 06 20  3a 0d 18 10 15 20 80 20  |oor.... :.... . |
00003440  20 20 20 20 52 30 2c 52  38 2c 20 23 31 35 0d 18  |    R0,R8, #15..|
00003450  1a 1a 20 4d 4f 56 20 20  20 20 20 52 31 2c 52 36  |.. MOV     R1,R6|
00003460  2c 20 4c 53 52 20 23 32  0d 18 24 1a 20 4d 4f 56  |, LSR #2..$. MOV|
00003470  20 20 20 20 20 52 32 2c  52 37 2c 20 4c 53 52 20  |     R2,R7, LSR |
00003480  23 32 0d 18 2e 1d 20 42  4c 20 20 20 20 20 20 70  |#2.... BL      p|
00003490  6c 6f 74 5f 73 70 72 69  74 65 5f 31 32 36 34 0d  |lot_sprite_1264.|
000034a0  18 38 06 20 3a 0d 18 42  19 20 4c 44 4d 46 44 20  |.8. :..B. LDMFD |
000034b0  20 20 52 31 33 21 2c 7b  52 39 2c 50 43 7d 0d 18  |  R13!,{R9,PC}..|
000034c0  4c 06 20 3a 0d 18 56 0c  20 2e 73 77 69 74 63 68  |L. :..V. .switch|
000034d0  0d 18 60 1a 20 53 54 4d  46 44 20 20 20 52 31 33  |..`. STMFD   R13|
000034e0  21 2c 7b 52 39 2c 52 31  34 7d 0d 18 6a 06 20 3a  |!,{R9,R14}..j. :|
000034f0  0d 18 74 13 20 4d 4f 56  20 20 20 20 20 52 30 2c  |..t. MOV     R0,|
00003500  20 23 30 0d 18 7e 06 20  3a 0d 18 88 15 20 4c 44  | #0..~. :.... LD|
00003510  52 20 20 20 20 20 52 31  2c 20 70 31 5f 78 0d 18  |R     R1, p1_x..|
00003520  92 15 20 4c 44 52 20 20  20 20 20 52 32 2c 20 70  |.. LDR     R2, p|
00003530  31 5f 79 0d 18 9c 1a 20  4d 4f 56 20 20 20 20 20  |1_y.... MOV     |
00003540  52 33 2c 52 36 2c 20 41  53 52 20 23 32 0d 18 a6  |R3,R6, ASR #2...|
00003550  1a 20 4d 4f 56 20 20 20  20 20 52 34 2c 52 37 2c  |. MOV     R4,R7,|
00003560  20 41 53 52 20 23 32 0d  18 b0 16 20 41 44 44 20  | ASR #2.... ADD |
00003570  20 20 20 20 52 34 2c 52  34 2c 20 23 38 0d 18 ba  |    R4,R4, #8...|
00003580  12 20 43 4d 50 20 20 20  20 20 52 32 2c 52 34 0d  |. CMP     R2,R4.|
00003590  18 c4 16 20 42 4e 45 20  20 20 20 20 6e 6f 74 5f  |... BNE     not_|
000035a0  70 31 5f 6f 6e 0d 18 ce  16 20 53 55 42 20 20 20  |p1_on.... SUB   |
000035b0  20 20 52 33 2c 52 33 2c  20 23 36 0d 18 d8 12 20  |  R3,R3, #6.... |
000035c0  43 4d 50 20 20 20 20 20  52 31 2c 52 33 0d 18 e2  |CMP     R1,R3...|
000035d0  16 20 42 4c 54 20 20 20  20 20 6e 6f 74 5f 70 31  |. BLT     not_p1|
000035e0  5f 6f 6e 0d 18 ec 17 20  41 44 44 20 20 20 20 20  |_on.... ADD     |
000035f0  52 33 2c 52 33 2c 20 23  31 30 0d 18 f6 12 20 43  |R3,R3, #10.... C|
00003600  4d 50 20 20 20 20 20 52  31 2c 52 33 0d 19 00 16  |MP     R1,R3....|
00003610  20 42 47 54 20 20 20 20  20 6e 6f 74 5f 70 31 5f  | BGT     not_p1_|
00003620  6f 6e 0d 19 0a 13 20 4d  4f 56 20 20 20 20 20 52  |on.... MOV     R|
00003630  30 2c 20 23 32 0d 19 14  0f 20 2e 6e 6f 74 5f 70  |0, #2.... .not_p|
00003640  31 5f 6f 6e 0d 19 1e 15  20 4c 44 52 20 20 20 20  |1_on.... LDR    |
00003650  20 52 31 2c 20 70 32 5f  78 0d 19 28 15 20 4c 44  | R1, p2_x..(. LD|
00003660  52 20 20 20 20 20 52 32  2c 20 70 32 5f 79 0d 19  |R     R2, p2_y..|
00003670  32 1a 20 4d 4f 56 20 20  20 20 20 52 33 2c 52 36  |2. MOV     R3,R6|
00003680  2c 20 41 53 52 20 23 32  0d 19 3c 1a 20 4d 4f 56  |, ASR #2..<. MOV|
00003690  20 20 20 20 20 52 34 2c  52 37 2c 20 41 53 52 20  |     R4,R7, ASR |
000036a0  23 32 0d 19 46 16 20 41  44 44 20 20 20 20 20 52  |#2..F. ADD     R|
000036b0  34 2c 52 34 2c 20 23 38  0d 19 50 12 20 43 4d 50  |4,R4, #8..P. CMP|
000036c0  20 20 20 20 20 52 32 2c  52 34 0d 19 5a 16 20 42  |     R2,R4..Z. B|
000036d0  4e 45 20 20 20 20 20 6e  6f 74 5f 70 32 5f 6f 6e  |NE     not_p2_on|
000036e0  0d 19 64 16 20 53 55 42  20 20 20 20 20 52 33 2c  |..d. SUB     R3,|
000036f0  52 33 2c 20 23 36 0d 19  6e 12 20 43 4d 50 20 20  |R3, #6..n. CMP  |
00003700  20 20 20 52 31 2c 52 33  0d 19 78 16 20 42 4c 54  |   R1,R3..x. BLT|
00003710  20 20 20 20 20 6e 6f 74  5f 70 32 5f 6f 6e 0d 19  |     not_p2_on..|
00003720  82 17 20 41 44 44 20 20  20 20 20 52 33 2c 52 33  |.. ADD     R3,R3|
00003730  2c 20 23 31 30 0d 19 8c  12 20 43 4d 50 20 20 20  |, #10.... CMP   |
00003740  20 20 52 31 2c 52 33 0d  19 96 16 20 42 47 54 20  |  R1,R3.... BGT |
00003750  20 20 20 20 6e 6f 74 5f  70 32 5f 6f 6e 0d 19 a0  |    not_p2_on...|
00003760  13 20 4d 4f 56 20 20 20  20 20 52 30 2c 20 23 31  |. MOV     R0, #1|
00003770  0d 19 aa 0f 20 2e 6e 6f  74 5f 70 32 5f 6f 6e 0d  |.... .not_p2_on.|
00003780  19 b4 06 20 3a 0d 19 be  15 20 41 44 52 20 20 20  |... :.... ADR   |
00003790  20 20 52 31 2c 20 67 75  6e 73 0d 19 c8 14 20 80  |  R1, guns.... .|
000037a0  20 20 20 20 20 52 32 2c  52 38 2c 20 23 33 0d 19  |     R2,R8, #3..|
000037b0  d2 1f 20 53 54 52 20 20  20 20 20 52 30 2c 5b 52  |.. STR     R0,[R|
000037c0  31 2c 52 32 2c 20 4c 53  4c 20 23 33 5d 0d 19 dc  |1,R2, LSL #3]...|
000037d0  06 20 3a 0d 19 e6 14 20  4d 4f 56 20 20 20 20 20  |. :.... MOV     |
000037e0  52 30 2c 20 23 31 36 0d  19 f0 1a 20 4d 4f 56 20  |R0, #16.... MOV |
000037f0  20 20 20 20 52 31 2c 52  36 2c 20 4c 53 52 20 23  |    R1,R6, LSR #|
00003800  32 0d 19 fa 1a 20 4d 4f  56 20 20 20 20 20 52 32  |2.... MOV     R2|
00003810  2c 52 37 2c 20 4c 53 52  20 23 32 0d 1a 04 1d 20  |,R7, LSR #2.... |
00003820  42 4c 20 20 20 20 20 20  70 6c 6f 74 5f 73 70 72  |BL      plot_spr|
00003830  69 74 65 5f 31 32 30 38  0d 1a 0e 06 20 3a 0d 1a  |ite_1208.... :..|
00003840  18 19 20 4c 44 4d 46 44  20 20 20 52 31 33 21 2c  |.. LDMFD   R13!,|
00003850  7b 52 39 2c 50 43 7d 0d  1a 22 06 20 3a 0d 1a 2c  |{R9,PC}..". :..,|
00003860  0a 20 2e 67 75 6e 73 0d  1a 36 0e 20 45 51 55 44  |. .guns..6. EQUD|
00003870  20 20 20 20 30 0d 1a 40  0e 20 45 51 55 44 20 20  |    0..@. EQUD  |
00003880  20 20 30 0d 1a 4a 0e 20  45 51 55 44 20 20 20 20  |  0..J. EQUD    |
00003890  30 0d 1a 54 0e 20 45 51  55 44 20 20 20 20 30 0d  |0..T. EQUD    0.|
000038a0  1a 5e 0e 20 45 51 55 44  20 20 20 20 30 0d 1a 68  |.^. EQUD    0..h|
000038b0  0e 20 45 51 55 44 20 20  20 20 30 0d 1a 72 0e 20  |. EQUD    0..r. |
000038c0  45 51 55 44 20 20 20 20  30 0d 1a 7c 0e 20 45 51  |EQUD    0..|. EQ|
000038d0  55 44 20 20 20 20 30 0d  1a 86 06 20 3a 0d 1a 90  |UD    0.... :...|
000038e0  0d 20 2e 67 75 6e 5f 67  75 6e 0d 1a 9a 1a 20 53  |. .gun_gun.... S|
000038f0  54 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 39 2c  |TMFD   R13!,{R9,|
00003900  52 31 34 7d 0d 1a a4 06  20 3a 0d 1a ae 15 20 41  |R14}.... :.... A|
00003910  44 52 20 20 20 20 20 52  30 2c 20 67 75 6e 73 0d  |DR     R0, guns.|
00003920  1a b8 14 20 80 20 20 20  20 20 52 32 2c 52 38 2c  |... .     R2,R8,|
00003930  20 23 33 0d 1a c2 1f 20  4c 44 52 20 20 20 20 20  | #3.... LDR     |
00003940  52 33 2c 5b 52 30 2c 52  32 2c 20 4c 53 4c 20 23  |R3,[R0,R2, LSL #|
00003950  33 5d 0d 1a cc 16 20 41  44 44 20 20 20 20 20 52  |3].... ADD     R|
00003960  30 2c 52 30 2c 20 23 34  0d 1a d6 1f 20 4c 44 52  |0,R0, #4.... LDR|
00003970  20 20 20 20 20 52 34 2c  5b 52 30 2c 52 32 2c 20  |     R4,[R0,R2, |
00003980  4c 53 4c 20 23 33 5d 0d  1a e0 06 20 3a 0d 1a ea  |LSL #3].... :...|
00003990  13 20 43 4d 50 20 20 20  20 20 52 33 2c 20 23 30  |. CMP     R3, #0|
000039a0  0d 1a f4 17 20 42 45 51  20 20 20 20 20 6e 6f 5f  |.... BEQ     no_|
000039b0  67 75 6e 5f 67 75 6e 0d  1a fe 16 20 41 44 44 20  |gun_gun.... ADD |
000039c0  20 20 20 20 52 34 2c 52  34 2c 20 23 31 0d 1b 08  |    R4,R4, #1...|
000039d0  16 20 80 20 20 20 20 20  52 34 2c 52 34 2c 20 23  |. .     R4,R4, #|
000039e0  25 31 31 0d 1b 12 1f 20  53 54 52 20 20 20 20 20  |%11.... STR     |
000039f0  52 34 2c 5b 52 30 2c 52  32 2c 20 4c 53 4c 20 23  |R4,[R0,R2, LSL #|
00003a00  33 5d 0d 1b 1c 15 20 54  53 54 20 20 20 20 20 52  |3].... TST     R|
00003a10  34 2c 20 23 25 31 31 0d  1b 26 17 20 42 4e 45 20  |4, #%11..&. BNE |
00003a20  20 20 20 20 6e 6f 5f 67  75 6e 5f 67 75 6e 0d 1b  |    no_gun_gun..|
00003a30  30 16 20 53 55 42 20 20  20 20 20 52 35 2c 52 33  |0. SUB     R5,R3|
00003a40  2c 20 23 31 0d 1b 3a 13  20 4d 4f 56 20 20 20 20  |, #1..:. MOV    |
00003a50  20 52 30 2c 20 23 33 0d  1b 44 1a 20 4d 4f 56 20  | R0, #3..D. MOV |
00003a60  20 20 20 20 52 31 2c 52  36 2c 20 41 53 52 20 23  |    R1,R6, ASR #|
00003a70  32 0d 1b 4e 1a 20 4d 4f  56 20 20 20 20 20 52 32  |2..N. MOV     R2|
00003a80  2c 52 37 2c 20 41 53 52  20 23 32 0d 1b 58 16 20  |,R7, ASR #2..X. |
00003a90  41 44 44 20 20 20 20 20  52 31 2c 52 31 2c 20 23  |ADD     R1,R1, #|
00003aa0  38 0d 1b 62 16 20 41 44  44 20 20 20 20 20 52 32  |8..b. ADD     R2|
00003ab0  2c 52 32 2c 20 23 35 0d  1b 6c 18 20 52 53 42 20  |,R2, #5..l. RSB |
00003ac0  20 20 20 20 52 32 2c 52  32 2c 20 23 32 35 36 0d  |    R2,R2, #256.|
00003ad0  1b 76 14 20 4d 4f 56 20  20 20 20 20 52 33 2c 20  |.v. MOV     R3, |
00003ae0  23 37 32 0d 1b 80 14 20  4c 44 52 20 20 20 20 20  |#72.... LDR     |
00003af0  52 34 2c 20 72 6e 64 0d  1b 8a 15 20 80 20 20 20  |R4, rnd.... .   |
00003b00  20 20 52 34 2c 52 34 2c  20 23 31 35 0d 1b 94 16  |  R4,R4, #15....|
00003b10  20 53 55 42 20 20 20 20  20 52 34 2c 52 34 2c 20  | SUB     R4,R4, |
00003b20  23 37 0d 1b 9e 15 20 42  4c 20 20 20 20 20 20 61  |#7.... BL      a|
00003b30  64 64 5f 63 65 6c 6c 0d  1b a8 13 20 4d 4f 56 20  |dd_cell.... MOV |
00003b40  20 20 20 20 52 30 2c 20  23 38 0d 1b b2 14 20 4d  |    R0, #8.... M|
00003b50  56 4e 20 20 20 20 20 52  31 2c 20 23 31 32 0d 1b  |VN     R1, #12..|
00003b60  bc 17 20 4d 4f 56 20 20  20 20 20 52 32 2c 20 23  |.. MOV     R2, #|
00003b70  31 32 38 30 30 0d 1b c6  13 20 4d 4f 56 20 20 20  |12800.... MOV   |
00003b80  20 20 52 33 2c 20 23 30  0d 1b d0 1c 20 53 57 49  |  R3, #0.... SWI|
00003b90  20 20 20 20 20 22 53 6f  75 6e 64 5f 43 6f 6e 74  |     "Sound_Cont|
00003ba0  72 6f 6c 22 0d 1b da 14  20 4d 4f 56 20 20 20 20  |rol".... MOV    |
00003bb0  20 52 35 2c 20 23 31 35  0d 1b e4 10 20 2e 6e 6f  | R5, #15.... .no|
00003bc0  5f 67 75 6e 5f 67 75 6e  0d 1b ee 06 20 3a 0d 1b  |_gun_gun.... :..|
00003bd0  f8 14 20 4d 4f 56 20 20  20 20 20 52 30 2c 20 23  |.. MOV     R0, #|
00003be0  31 37 0d 1c 02 1a 20 4d  4f 56 20 20 20 20 20 52  |17.... MOV     R|
00003bf0  31 2c 52 36 2c 20 4c 53  52 20 23 32 0d 1c 0c 1a  |1,R6, LSR #2....|
00003c00  20 4d 4f 56 20 20 20 20  20 52 32 2c 52 37 2c 20  | MOV     R2,R7, |
00003c10  4c 53 52 20 23 32 0d 1c  16 1d 20 42 4c 20 20 20  |LSR #2.... BL   |
00003c20  20 20 20 70 6c 6f 74 5f  73 70 72 69 74 65 5f 31  |   plot_sprite_1|
00003c30  32 30 38 0d 1c 20 06 20  3a 0d 1c 2a 19 20 4c 44  |208.. . :..*. LD|
00003c40  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 39 2c 50  |MFD   R13!,{R9,P|
00003c50  43 7d 0d 1c 34 06 20 3a  0d 1c 3e 13 20 2e 77 65  |C}..4. :..>. .we|
00003c60  61 70 6f 6e 5f 70 69 73  74 6f 6c 0d 1c 48 1a 20  |apon_pistol..H. |
00003c70  53 54 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 39  |STMFD   R13!,{R9|
00003c80  2c 52 31 34 7d 0d 1c 52  06 20 3a 0d 1c 5c 13 20  |,R14}..R. :..\. |
00003c90  4d 4f 56 20 20 20 20 20  52 34 2c 20 23 32 0d 1c  |MOV     R4, #2..|
00003ca0  66 14 20 42 4c 20 20 20  20 20 20 70 69 63 6b 5f  |f. BL      pick_|
00003cb0  75 70 0d 1c 70 06 20 3a  0d 1c 7a 16 20 53 55 42  |up..p. :..z. SUB|
00003cc0  20 20 20 20 20 52 38 2c  52 38 2c 20 23 31 0d 1c  |     R8,R8, #1..|
00003cd0  84 13 20 43 4d 50 20 20  20 20 20 52 38 2c 20 23  |.. CMP     R8, #|
00003ce0  30 0d 1c 8e 13 20 4d 4f  56 4c 45 20 20 20 52 35  |0.... MOVLE   R5|
00003cf0  2c 20 23 30 0d 1c 98 06  20 3a 0d 1c a2 13 20 43  |, #0.... :.... C|
00003d00  4d 50 20 20 20 20 20 52  35 2c 20 23 30 0d 1c ac  |MP     R5, #0...|
00003d10  06 20 3a 0d 1c b6 14 20  4d 4f 56 47 54 20 20 20  |. :.... MOVGT   |
00003d20  52 30 2c 20 23 31 32 0d  1c c0 1a 20 4d 4f 56 47  |R0, #12.... MOVG|
00003d30  54 20 20 20 52 31 2c 52  36 2c 20 4c 53 52 20 23  |T   R1,R6, LSR #|
00003d40  32 0d 1c ca 1a 20 4d 4f  56 47 54 20 20 20 52 32  |2.... MOVGT   R2|
00003d50  2c 52 37 2c 20 4c 53 52  20 23 32 0d 1c d4 1d 20  |,R7, LSR #2.... |
00003d60  42 4c 47 54 20 20 20 20  70 6c 6f 74 5f 73 70 72  |BLGT    plot_spr|
00003d70  69 74 65 5f 31 32 31 32  0d 1c de 06 20 3a 0d 1c  |ite_1212.... :..|
00003d80  e8 19 20 4c 44 4d 46 44  20 20 20 52 31 33 21 2c  |.. LDMFD   R13!,|
00003d90  7b 52 39 2c 50 43 7d 0d  1c f2 06 20 3a 0d 1c fc  |{R9,PC}.... :...|
00003da0  10 20 2e 77 65 61 70 6f  6e 5f 67 75 6e 0d 1d 06  |. .weapon_gun...|
00003db0  1a 20 53 54 4d 46 44 20  20 20 52 31 33 21 2c 7b  |. STMFD   R13!,{|
00003dc0  52 39 2c 52 31 34 7d 0d  1d 10 06 20 3a 0d 1d 1a  |R9,R14}.... :...|
00003dd0  13 20 4d 4f 56 20 20 20  20 20 52 34 2c 20 23 33  |. MOV     R4, #3|
00003de0  0d 1d 24 14 20 42 4c 20  20 20 20 20 20 70 69 63  |..$. BL      pic|
00003df0  6b 5f 75 70 0d 1d 2e 06  20 3a 0d 1d 38 16 20 53  |k_up.... :..8. S|
00003e00  55 42 20 20 20 20 20 52  38 2c 52 38 2c 20 23 31  |UB     R8,R8, #1|
00003e10  0d 1d 42 13 20 43 4d 50  20 20 20 20 20 52 38 2c  |..B. CMP     R8,|
00003e20  20 23 30 0d 1d 4c 13 20  4d 4f 56 4c 45 20 20 20  | #0..L. MOVLE   |
00003e30  52 35 2c 20 23 30 0d 1d  56 06 20 3a 0d 1d 60 13  |R5, #0..V. :..`.|
00003e40  20 43 4d 50 20 20 20 20  20 52 35 2c 20 23 30 0d  | CMP     R5, #0.|
00003e50  1d 6a 06 20 3a 0d 1d 74  14 20 4d 4f 56 47 54 20  |.j. :..t. MOVGT |
00003e60  20 20 52 30 2c 20 23 31  33 0d 1d 7e 1a 20 4d 4f  |  R0, #13..~. MO|
00003e70  56 47 54 20 20 20 52 31  2c 52 36 2c 20 4c 53 52  |VGT   R1,R6, LSR|
00003e80  20 23 32 0d 1d 88 1a 20  4d 4f 56 47 54 20 20 20  | #2.... MOVGT   |
00003e90  52 32 2c 52 37 2c 20 4c  53 52 20 23 32 0d 1d 92  |R2,R7, LSR #2...|
00003ea0  1d 20 42 4c 47 54 20 20  20 20 70 6c 6f 74 5f 73  |. BLGT    plot_s|
00003eb0  70 72 69 74 65 5f 31 32  31 32 0d 1d 9c 06 20 3a  |prite_1212.... :|
00003ec0  0d 1d a6 19 20 4c 44 4d  46 44 20 20 20 52 31 33  |.... LDMFD   R13|
00003ed0  21 2c 7b 52 39 2c 50 43  7d 0d 1d b0 06 20 3a 0d  |!,{R9,PC}.... :.|
00003ee0  1d ba 13 20 2e 77 65 61  70 6f 6e 5f 6d 6f 72 74  |... .weapon_mort|
00003ef0  61 72 0d 1d c4 1a 20 53  54 4d 46 44 20 20 20 52  |ar.... STMFD   R|
00003f00  31 33 21 2c 7b 52 39 2c  52 31 34 7d 0d 1d ce 06  |13!,{R9,R14}....|
00003f10  20 3a 0d 1d d8 13 20 4d  4f 56 20 20 20 20 20 52  | :.... MOV     R|
00003f20  34 2c 20 23 34 0d 1d e2  14 20 42 4c 20 20 20 20  |4, #4.... BL    |
00003f30  20 20 70 69 63 6b 5f 75  70 0d 1d ec 06 20 3a 0d  |  pick_up.... :.|
00003f40  1d f6 16 20 53 55 42 20  20 20 20 20 52 38 2c 52  |... SUB     R8,R|
00003f50  38 2c 20 23 31 0d 1e 00  13 20 43 4d 50 20 20 20  |8, #1.... CMP   |
00003f60  20 20 52 38 2c 20 23 30  0d 1e 0a 13 20 4d 4f 56  |  R8, #0.... MOV|
00003f70  4c 45 20 20 20 52 35 2c  20 23 30 0d 1e 14 06 20  |LE   R5, #0.... |
00003f80  3a 0d 1e 1e 13 20 43 4d  50 20 20 20 20 20 52 35  |:.... CMP     R5|
00003f90  2c 20 23 30 0d 1e 28 06  20 3a 0d 1e 32 14 20 4d  |, #0..(. :..2. M|
00003fa0  4f 56 47 54 20 20 20 52  30 2c 20 23 31 34 0d 1e  |OVGT   R0, #14..|
00003fb0  3c 1a 20 4d 4f 56 47 54  20 20 20 52 31 2c 52 36  |<. MOVGT   R1,R6|
00003fc0  2c 20 4c 53 52 20 23 32  0d 1e 46 1a 20 4d 4f 56  |, LSR #2..F. MOV|
00003fd0  47 54 20 20 20 52 32 2c  52 37 2c 20 4c 53 52 20  |GT   R2,R7, LSR |
00003fe0  23 32 0d 1e 50 1d 20 42  4c 47 54 20 20 20 20 70  |#2..P. BLGT    p|
00003ff0  6c 6f 74 5f 73 70 72 69  74 65 5f 31 32 31 32 0d  |lot_sprite_1212.|
00004000  1e 5a 06 20 3a 0d 1e 64  19 20 4c 44 4d 46 44 20  |.Z. :..d. LDMFD |
00004010  20 20 52 31 33 21 2c 7b  52 39 2c 50 43 7d 0d 1e  |  R13!,{R9,PC}..|
00004020  6e 06 20 3a 0d 1e 78 13  20 2e 77 65 61 70 6f 6e  |n. :..x. .weapon|
00004030  5f 68 6f 6d 69 6e 67 0d  1e 82 1a 20 53 54 4d 46  |_homing.... STMF|
00004040  44 20 20 20 52 31 33 21  2c 7b 52 39 2c 52 31 34  |D   R13!,{R9,R14|
00004050  7d 0d 1e 8c 06 20 3a 0d  1e 96 13 20 4d 4f 56 20  |}.... :.... MOV |
00004060  20 20 20 20 52 34 2c 20  23 35 0d 1e a0 14 20 42  |    R4, #5.... B|
00004070  4c 20 20 20 20 20 20 70  69 63 6b 5f 75 70 0d 1e  |L      pick_up..|
00004080  aa 06 20 3a 0d 1e b4 16  20 53 55 42 20 20 20 20  |.. :.... SUB    |
00004090  20 52 38 2c 52 38 2c 20  23 31 0d 1e be 13 20 43  | R8,R8, #1.... C|
000040a0  4d 50 20 20 20 20 20 52  38 2c 20 23 30 0d 1e c8  |MP     R8, #0...|
000040b0  13 20 4d 4f 56 4c 45 20  20 20 52 35 2c 20 23 30  |. MOVLE   R5, #0|
000040c0  0d 1e d2 06 20 3a 0d 1e  dc 13 20 43 4d 50 20 20  |.... :.... CMP  |
000040d0  20 20 20 52 35 2c 20 23  30 0d 1e e6 06 20 3a 0d  |   R5, #0.... :.|
000040e0  1e f0 14 20 4d 4f 56 47  54 20 20 20 52 30 2c 20  |... MOVGT   R0, |
000040f0  23 31 35 0d 1e fa 1a 20  4d 4f 56 47 54 20 20 20  |#15.... MOVGT   |
00004100  52 31 2c 52 36 2c 20 4c  53 52 20 23 32 0d 1f 04  |R1,R6, LSR #2...|
00004110  1a 20 4d 4f 56 47 54 20  20 20 52 32 2c 52 37 2c  |. MOVGT   R2,R7,|
00004120  20 4c 53 52 20 23 32 0d  1f 0e 1d 20 42 4c 47 54  | LSR #2.... BLGT|
00004130  20 20 20 20 70 6c 6f 74  5f 73 70 72 69 74 65 5f  |    plot_sprite_|
00004140  31 32 31 32 0d 1f 18 06  20 3a 0d 1f 22 19 20 4c  |1212.... :..". L|
00004150  44 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 39 2c  |DMFD   R13!,{R9,|
00004160  50 43 7d 0d 1f 2c 06 20  3a 0d 1f 36 14 20 2e 77  |PC}..,. :..6. .w|
00004170  65 61 70 6f 6e 5f 73 65  65 6b 69 6e 67 0d 1f 40  |eapon_seeking..@|
00004180  1a 20 53 54 4d 46 44 20  20 20 52 31 33 21 2c 7b  |. STMFD   R13!,{|
00004190  52 39 2c 52 31 34 7d 0d  1f 4a 06 20 3a 0d 1f 54  |R9,R14}..J. :..T|
000041a0  13 20 4d 4f 56 20 20 20  20 20 52 34 2c 20 23 36  |. MOV     R4, #6|
000041b0  0d 1f 5e 14 20 42 4c 20  20 20 20 20 20 70 69 63  |..^. BL      pic|
000041c0  6b 5f 75 70 0d 1f 68 06  20 3a 0d 1f 72 16 20 53  |k_up..h. :..r. S|
000041d0  55 42 20 20 20 20 20 52  38 2c 52 38 2c 20 23 31  |UB     R8,R8, #1|
000041e0  0d 1f 7c 13 20 43 4d 50  20 20 20 20 20 52 38 2c  |..|. CMP     R8,|
000041f0  20 23 30 0d 1f 86 13 20  4d 4f 56 4c 45 20 20 20  | #0.... MOVLE   |
00004200  52 35 2c 20 23 30 0d 1f  90 06 20 3a 0d 1f 9a 13  |R5, #0.... :....|
00004210  20 43 4d 50 20 20 20 20  20 52 35 2c 20 23 30 0d  | CMP     R5, #0.|
00004220  1f a4 06 20 3a 0d 1f ae  14 20 4d 4f 56 47 54 20  |... :.... MOVGT |
00004230  20 20 52 30 2c 20 23 31  36 0d 1f b8 1a 20 4d 4f  |  R0, #16.... MO|
00004240  56 47 54 20 20 20 52 31  2c 52 36 2c 20 4c 53 52  |VGT   R1,R6, LSR|
00004250  20 23 32 0d 1f c2 1a 20  4d 4f 56 47 54 20 20 20  | #2.... MOVGT   |
00004260  52 32 2c 52 37 2c 20 4c  53 52 20 23 32 0d 1f cc  |R2,R7, LSR #2...|
00004270  1d 20 42 4c 47 54 20 20  20 20 70 6c 6f 74 5f 73  |. BLGT    plot_s|
00004280  70 72 69 74 65 5f 31 32  31 32 0d 1f d6 06 20 3a  |prite_1212.... :|
00004290  0d 1f e0 19 20 4c 44 4d  46 44 20 20 20 52 31 33  |.... LDMFD   R13|
000042a0  21 2c 7b 52 39 2c 50 43  7d 0d 1f ea 06 20 3a 0d  |!,{R9,PC}.... :.|
000042b0  1f f4 15 20 2e 77 65 61  70 6f 6e 5f 76 65 72 74  |... .weapon_vert|
000042c0  69 63 61 6c 0d 1f fe 1a  20 53 54 4d 46 44 20 20  |ical.... STMFD  |
000042d0  20 52 31 33 21 2c 7b 52  39 2c 52 31 34 7d 0d 20  | R13!,{R9,R14}. |
000042e0  08 06 20 3a 0d 20 12 13  20 4d 4f 56 20 20 20 20  |.. :. .. MOV    |
000042f0  20 52 34 2c 20 23 37 0d  20 1c 14 20 42 4c 20 20  | R4, #7. .. BL  |
00004300  20 20 20 20 70 69 63 6b  5f 75 70 0d 20 26 06 20  |    pick_up. &. |
00004310  3a 0d 20 30 16 20 53 55  42 20 20 20 20 20 52 38  |:. 0. SUB     R8|
00004320  2c 52 38 2c 20 23 31 0d  20 3a 13 20 43 4d 50 20  |,R8, #1. :. CMP |
00004330  20 20 20 20 52 38 2c 20  23 30 0d 20 44 13 20 4d  |    R8, #0. D. M|
00004340  4f 56 4c 45 20 20 20 52  35 2c 20 23 30 0d 20 4e  |OVLE   R5, #0. N|
00004350  06 20 3a 0d 20 58 13 20  43 4d 50 20 20 20 20 20  |. :. X. CMP     |
00004360  52 35 2c 20 23 30 0d 20  62 06 20 3a 0d 20 6c 14  |R5, #0. b. :. l.|
00004370  20 4d 4f 56 47 54 20 20  20 52 30 2c 20 23 31 37  | MOVGT   R0, #17|
00004380  0d 20 76 1a 20 4d 4f 56  47 54 20 20 20 52 31 2c  |. v. MOVGT   R1,|
00004390  52 36 2c 20 4c 53 52 20  23 32 0d 20 80 1a 20 4d  |R6, LSR #2. .. M|
000043a0  4f 56 47 54 20 20 20 52  32 2c 52 37 2c 20 4c 53  |OVGT   R2,R7, LS|
000043b0  52 20 23 32 0d 20 8a 1d  20 42 4c 47 54 20 20 20  |R #2. .. BLGT   |
000043c0  20 70 6c 6f 74 5f 73 70  72 69 74 65 5f 31 32 31  | plot_sprite_121|
000043d0  32 0d 20 94 06 20 3a 0d  20 9e 19 20 4c 44 4d 46  |2. .. :. .. LDMF|
000043e0  44 20 20 20 52 31 33 21  2c 7b 52 39 2c 50 43 7d  |D   R13!,{R9,PC}|
000043f0  0d 20 a8 06 20 3a 0d 20  b2 14 20 2e 77 65 61 70  |. .. :. .. .weap|
00004400  6f 6e 5f 74 68 72 6f 77  65 72 0d 20 bc 1a 20 53  |on_thrower. .. S|
00004410  54 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 39 2c  |TMFD   R13!,{R9,|
00004420  52 31 34 7d 0d 20 c6 06  20 3a 0d 20 d0 13 20 4d  |R14}. .. :. .. M|
00004430  4f 56 20 20 20 20 20 52  34 2c 20 23 38 0d 20 da  |OV     R4, #8. .|
00004440  14 20 42 4c 20 20 20 20  20 20 70 69 63 6b 5f 75  |. BL      pick_u|
00004450  70 0d 20 e4 06 20 3a 0d  20 ee 16 20 53 55 42 20  |p. .. :. .. SUB |
00004460  20 20 20 20 52 38 2c 52  38 2c 20 23 31 0d 20 f8  |    R8,R8, #1. .|
00004470  13 20 43 4d 50 20 20 20  20 20 52 38 2c 20 23 30  |. CMP     R8, #0|
00004480  0d 21 02 13 20 4d 4f 56  4c 45 20 20 20 52 35 2c  |.!.. MOVLE   R5,|
00004490  20 23 30 0d 21 0c 06 20  3a 0d 21 16 13 20 43 4d  | #0.!.. :.!.. CM|
000044a0  50 20 20 20 20 20 52 35  2c 20 23 30 0d 21 20 06  |P     R5, #0.! .|
000044b0  20 3a 0d 21 2a 14 20 4d  4f 56 47 54 20 20 20 52  | :.!*. MOVGT   R|
000044c0  30 2c 20 23 31 38 0d 21  34 1a 20 4d 4f 56 47 54  |0, #18.!4. MOVGT|
000044d0  20 20 20 52 31 2c 52 36  2c 20 4c 53 52 20 23 32  |   R1,R6, LSR #2|
000044e0  0d 21 3e 1a 20 4d 4f 56  47 54 20 20 20 52 32 2c  |.!>. MOVGT   R2,|
000044f0  52 37 2c 20 4c 53 52 20  23 32 0d 21 48 1d 20 42  |R7, LSR #2.!H. B|
00004500  4c 47 54 20 20 20 20 70  6c 6f 74 5f 73 70 72 69  |LGT    plot_spri|
00004510  74 65 5f 31 32 31 32 0d  21 52 06 20 3a 0d 21 5c  |te_1212.!R. :.!\|
00004520  19 20 4c 44 4d 46 44 20  20 20 52 31 33 21 2c 7b  |. LDMFD   R13!,{|
00004530  52 39 2c 50 43 7d 0d 21  66 06 20 3a 0d 21 70 11  |R9,PC}.!f. :.!p.|
00004540  20 2e 77 65 61 70 6f 6e  5f 62 6f 6d 62 0d 21 7a  | .weapon_bomb.!z|
00004550  1a 20 53 54 4d 46 44 20  20 20 52 31 33 21 2c 7b  |. STMFD   R13!,{|
00004560  52 39 2c 52 31 34 7d 0d  21 84 06 20 3a 0d 21 8e  |R9,R14}.!.. :.!.|
00004570  13 20 4d 4f 56 20 20 20  20 20 52 34 2c 20 23 39  |. MOV     R4, #9|
00004580  0d 21 98 14 20 42 4c 20  20 20 20 20 20 70 69 63  |.!.. BL      pic|
00004590  6b 5f 75 70 0d 21 a2 06  20 3a 0d 21 ac 16 20 53  |k_up.!.. :.!.. S|
000045a0  55 42 20 20 20 20 20 52  38 2c 52 38 2c 20 23 31  |UB     R8,R8, #1|
000045b0  0d 21 b6 13 20 43 4d 50  20 20 20 20 20 52 38 2c  |.!.. CMP     R8,|
000045c0  20 23 30 0d 21 c0 13 20  4d 4f 56 4c 45 20 20 20  | #0.!.. MOVLE   |
000045d0  52 35 2c 20 23 30 0d 21  ca 06 20 3a 0d 21 d4 13  |R5, #0.!.. :.!..|
000045e0  20 43 4d 50 20 20 20 20  20 52 35 2c 20 23 30 0d  | CMP     R5, #0.|
000045f0  21 de 06 20 3a 0d 21 e8  14 20 4d 4f 56 47 54 20  |!.. :.!.. MOVGT |
00004600  20 20 52 30 2c 20 23 31  39 0d 21 f2 1a 20 4d 4f  |  R0, #19.!.. MO|
00004610  56 47 54 20 20 20 52 31  2c 52 36 2c 20 4c 53 52  |VGT   R1,R6, LSR|
00004620  20 23 32 0d 21 fc 1a 20  4d 4f 56 47 54 20 20 20  | #2.!.. MOVGT   |
00004630  52 32 2c 52 37 2c 20 4c  53 52 20 23 32 0d 22 06  |R2,R7, LSR #2.".|
00004640  1d 20 42 4c 47 54 20 20  20 20 70 6c 6f 74 5f 73  |. BLGT    plot_s|
00004650  70 72 69 74 65 5f 31 32  31 32 0d 22 10 06 20 3a  |prite_1212.".. :|
00004660  0d 22 1a 19 20 4c 44 4d  46 44 20 20 20 52 31 33  |.".. LDMFD   R13|
00004670  21 2c 7b 52 39 2c 50 43  7d 0d 22 24 06 20 3a 0d  |!,{R9,PC}."$. :.|
00004680  22 2e 11 20 2e 77 65 61  70 6f 6e 5f 67 6c 75 65  |".. .weapon_glue|
00004690  0d 22 38 1a 20 53 54 4d  46 44 20 20 20 52 31 33  |."8. STMFD   R13|
000046a0  21 2c 7b 52 39 2c 52 31  34 7d 0d 22 42 06 20 3a  |!,{R9,R14}."B. :|
000046b0  0d 22 4c 14 20 4d 4f 56  20 20 20 20 20 52 34 2c  |."L. MOV     R4,|
000046c0  20 23 31 30 0d 22 56 14  20 42 4c 20 20 20 20 20  | #10."V. BL     |
000046d0  20 70 69 63 6b 5f 75 70  0d 22 60 06 20 3a 0d 22  | pick_up."`. :."|
000046e0  6a 16 20 53 55 42 20 20  20 20 20 52 38 2c 52 38  |j. SUB     R8,R8|
000046f0  2c 20 23 31 0d 22 74 13  20 43 4d 50 20 20 20 20  |, #1."t. CMP    |
00004700  20 52 38 2c 20 23 30 0d  22 7e 13 20 4d 4f 56 4c  | R8, #0."~. MOVL|
00004710  45 20 20 20 52 35 2c 20  23 30 0d 22 88 06 20 3a  |E   R5, #0.".. :|
00004720  0d 22 92 13 20 43 4d 50  20 20 20 20 20 52 35 2c  |.".. CMP     R5,|
00004730  20 23 30 0d 22 9c 06 20  3a 0d 22 a6 14 20 4d 4f  | #0.".. :.".. MO|
00004740  56 47 54 20 20 20 52 30  2c 20 23 32 30 0d 22 b0  |VGT   R0, #20.".|
00004750  1a 20 4d 4f 56 47 54 20  20 20 52 31 2c 52 36 2c  |. MOVGT   R1,R6,|
00004760  20 4c 53 52 20 23 32 0d  22 ba 1a 20 4d 4f 56 47  | LSR #2.".. MOVG|
00004770  54 20 20 20 52 32 2c 52  37 2c 20 4c 53 52 20 23  |T   R2,R7, LSR #|
00004780  32 0d 22 c4 1d 20 42 4c  47 54 20 20 20 20 70 6c  |2.".. BLGT    pl|
00004790  6f 74 5f 73 70 72 69 74  65 5f 31 32 31 32 0d 22  |ot_sprite_1212."|
000047a0  ce 06 20 3a 0d 22 d8 19  20 4c 44 4d 46 44 20 20  |.. :.".. LDMFD  |
000047b0  20 52 31 33 21 2c 7b 52  39 2c 50 43 7d 0d 22 e2  | R13!,{R9,PC}.".|
000047c0  06 20 3a 0d 22 ec 06 20  3a 0d 22 f6 0d 20 2e 70  |. :.".. :.".. .p|
000047d0  69 63 6b 5f 75 70 0d 23  00 16 20 4c 44 52 20 20  |ick_up.#.. LDR  |
000047e0  20 20 20 52 31 30 2c 20  70 31 5f 78 0d 23 0a 16  |   R10, p1_x.#..|
000047f0  20 4c 44 52 20 20 20 20  20 52 31 31 2c 20 70 31  | LDR     R11, p1|
00004800  5f 79 0d 23 14 1a 20 4d  4f 56 20 20 20 20 20 52  |_y.#.. MOV     R|
00004810  39 2c 52 36 2c 20 41 53  52 20 23 32 0d 23 1e 16  |9,R6, ASR #2.#..|
00004820  20 41 44 44 20 20 20 20  20 52 39 2c 52 39 2c 20  | ADD     R9,R9, |
00004830  23 38 0d 23 28 17 20 53  55 42 20 20 20 20 20 52  |#8.#(. SUB     R|
00004840  31 30 2c 52 39 2c 52 31  30 0d 23 32 18 20 41 44  |10,R9,R10.#2. AD|
00004850  44 20 20 20 20 20 52 31  30 2c 52 31 30 2c 20 23  |D     R10,R10, #|
00004860  32 0d 23 3c 14 20 43 4d  50 20 20 20 20 20 52 31  |2.#<. CMP     R1|
00004870  30 2c 20 23 30 0d 23 46  1b 20 42 4c 54 20 20 20  |0, #0.#F. BLT   |
00004880  20 20 6e 6f 74 5f 70 69  63 6b 65 64 5f 75 70 31  |  not_picked_up1|
00004890  0d 23 50 1b 20 43 4d 50  20 20 20 20 20 52 31 30  |.#P. CMP     R10|
000048a0  2c 20 23 78 65 78 74 25  2b 31 30 0d 23 5a 1b 20  |, #xext%+10.#Z. |
000048b0  42 47 54 20 20 20 20 20  6e 6f 74 5f 70 69 63 6b  |BGT     not_pick|
000048c0  65 64 5f 75 70 31 0d 23  64 1a 20 4d 4f 56 20 20  |ed_up1.#d. MOV  |
000048d0  20 20 20 52 39 2c 52 37  2c 20 41 53 52 20 23 32  |   R9,R7, ASR #2|
000048e0  0d 23 6e 17 20 41 44 44  20 20 20 20 20 52 39 2c  |.#n. ADD     R9,|
000048f0  52 39 2c 20 23 31 32 0d  23 78 17 20 53 55 42 20  |R9, #12.#x. SUB |
00004900  20 20 20 20 52 31 31 2c  52 39 2c 52 31 31 0d 23  |    R11,R9,R11.#|
00004910  82 18 20 41 44 44 20 20  20 20 20 52 31 31 2c 52  |.. ADD     R11,R|
00004920  31 31 2c 20 23 32 0d 23  8c 14 20 43 4d 50 20 20  |11, #2.#.. CMP  |
00004930  20 20 20 52 31 31 2c 20  23 30 0d 23 96 1b 20 42  |   R11, #0.#.. B|
00004940  4c 54 20 20 20 20 20 6e  6f 74 5f 70 69 63 6b 65  |LT     not_picke|
00004950  64 5f 75 70 31 0d 23 a0  1b 20 43 4d 50 20 20 20  |d_up1.#.. CMP   |
00004960  20 20 52 31 31 2c 20 23  79 65 78 74 25 2b 31 34  |  R11, #yext%+14|
00004970  0d 23 aa 1b 20 42 47 54  20 20 20 20 20 6e 6f 74  |.#.. BGT     not|
00004980  5f 70 69 63 6b 65 64 5f  75 70 31 0d 23 b4 13 20  |_picked_up1.#.. |
00004990  4d 4f 56 20 20 20 20 20  52 35 2c 20 23 30 0d 23  |MOV     R5, #0.#|
000049a0  be 1a 20 53 54 52 20 20  20 20 20 52 34 2c 20 70  |.. STR     R4, p|
000049b0  31 5f 77 65 61 70 6f 6e  0d 23 c8 13 20 4d 4f 56  |1_weapon.#.. MOV|
000049c0  20 20 20 20 20 52 30 2c  20 23 32 0d 23 d2 14 20  |     R0, #2.#.. |
000049d0  4d 56 4e 20 20 20 20 20  52 31 2c 20 23 31 34 0d  |MVN     R1, #14.|
000049e0  23 dc 17 20 4d 4f 56 20  20 20 20 20 52 32 2c 20  |#.. MOV     R2, |
000049f0  23 70 69 6e 67 25 0d 23  e6 13 20 4d 4f 56 20 20  |#ping%.#.. MOV  |
00004a00  20 20 20 52 33 2c 20 23  30 0d 23 f0 1c 20 53 57  |   R3, #0.#.. SW|
00004a10  49 20 20 20 20 20 22 53  6f 75 6e 64 5f 43 6f 6e  |I     "Sound_Con|
00004a20  74 72 6f 6c 22 0d 23 fa  14 20 2e 6e 6f 74 5f 70  |trol".#.. .not_p|
00004a30  69 63 6b 65 64 5f 75 70  31 0d 24 04 16 20 4c 44  |icked_up1.$.. LD|
00004a40  52 20 20 20 20 20 52 31  30 2c 20 70 32 5f 78 0d  |R     R10, p2_x.|
00004a50  24 0e 16 20 4c 44 52 20  20 20 20 20 52 31 31 2c  |$.. LDR     R11,|
00004a60  20 70 32 5f 79 0d 24 18  1a 20 4d 4f 56 20 20 20  | p2_y.$.. MOV   |
00004a70  20 20 52 39 2c 52 36 2c  20 41 53 52 20 23 32 0d  |  R9,R6, ASR #2.|
00004a80  24 22 16 20 41 44 44 20  20 20 20 20 52 39 2c 52  |$". ADD     R9,R|
00004a90  39 2c 20 23 38 0d 24 2c  17 20 53 55 42 20 20 20  |9, #8.$,. SUB   |
00004aa0  20 20 52 31 30 2c 52 39  2c 52 31 30 0d 24 36 18  |  R10,R9,R10.$6.|
00004ab0  20 41 44 44 20 20 20 20  20 52 31 30 2c 52 31 30  | ADD     R10,R10|
00004ac0  2c 20 23 32 0d 24 40 14  20 43 4d 50 20 20 20 20  |, #2.$@. CMP    |
00004ad0  20 52 31 30 2c 20 23 30  0d 24 4a 1b 20 42 4c 54  | R10, #0.$J. BLT|
00004ae0  20 20 20 20 20 6e 6f 74  5f 70 69 63 6b 65 64 5f  |     not_picked_|
00004af0  75 70 32 0d 24 54 1b 20  43 4d 50 20 20 20 20 20  |up2.$T. CMP     |
00004b00  52 31 30 2c 20 23 78 65  78 74 25 2b 31 30 0d 24  |R10, #xext%+10.$|
00004b10  5e 1b 20 42 47 54 20 20  20 20 20 6e 6f 74 5f 70  |^. BGT     not_p|
00004b20  69 63 6b 65 64 5f 75 70  32 0d 24 68 1a 20 4d 4f  |icked_up2.$h. MO|
00004b30  56 20 20 20 20 20 52 39  2c 52 37 2c 20 41 53 52  |V     R9,R7, ASR|
00004b40  20 23 32 0d 24 72 17 20  41 44 44 20 20 20 20 20  | #2.$r. ADD     |
00004b50  52 39 2c 52 39 2c 20 23  31 32 0d 24 7c 17 20 53  |R9,R9, #12.$|. S|
00004b60  55 42 20 20 20 20 20 52  31 31 2c 52 39 2c 52 31  |UB     R11,R9,R1|
00004b70  31 0d 24 86 18 20 41 44  44 20 20 20 20 20 52 31  |1.$.. ADD     R1|
00004b80  31 2c 52 31 31 2c 20 23  32 0d 24 90 14 20 43 4d  |1,R11, #2.$.. CM|
00004b90  50 20 20 20 20 20 52 31  31 2c 20 23 30 0d 24 9a  |P     R11, #0.$.|
00004ba0  1b 20 42 4c 54 20 20 20  20 20 6e 6f 74 5f 70 69  |. BLT     not_pi|
00004bb0  63 6b 65 64 5f 75 70 32  0d 24 a4 1b 20 43 4d 50  |cked_up2.$.. CMP|
00004bc0  20 20 20 20 20 52 31 31  2c 20 23 79 65 78 74 25  |     R11, #yext%|
00004bd0  2b 31 36 0d 24 ae 1b 20  42 47 54 20 20 20 20 20  |+16.$.. BGT     |
00004be0  6e 6f 74 5f 70 69 63 6b  65 64 5f 75 70 32 0d 24  |not_picked_up2.$|
00004bf0  b8 13 20 4d 4f 56 20 20  20 20 20 52 35 2c 20 23  |.. MOV     R5, #|
00004c00  30 0d 24 c2 1a 20 53 54  52 20 20 20 20 20 52 34  |0.$.. STR     R4|
00004c10  2c 20 70 32 5f 77 65 61  70 6f 6e 0d 24 cc 13 20  |, p2_weapon.$.. |
00004c20  4d 4f 56 20 20 20 20 20  52 30 2c 20 23 32 0d 24  |MOV     R0, #2.$|
00004c30  d6 14 20 4d 56 4e 20 20  20 20 20 52 31 2c 20 23  |.. MVN     R1, #|
00004c40  31 34 0d 24 e0 17 20 4d  4f 56 20 20 20 20 20 52  |14.$.. MOV     R|
00004c50  32 2c 20 23 70 69 6e 67  25 0d 24 ea 13 20 4d 4f  |2, #ping%.$.. MO|
00004c60  56 20 20 20 20 20 52 33  2c 20 23 30 0d 24 f4 1c  |V     R3, #0.$..|
00004c70  20 53 57 49 20 20 20 20  20 22 53 6f 75 6e 64 5f  | SWI     "Sound_|
00004c80  43 6f 6e 74 72 6f 6c 22  0d 24 fe 14 20 2e 6e 6f  |Control".$.. .no|
00004c90  74 5f 70 69 63 6b 65 64  5f 75 70 32 0d 25 08 13  |t_picked_up2.%..|
00004ca0  20 4d 4f 56 20 20 20 20  20 50 43 2c 52 31 34 0d  | MOV     PC,R14.|
00004cb0  25 12 06 20 3a 0d 25 1c  06 20 3a 0d 25 26 0a 20  |%.. :.%.. :.%&. |
00004cc0  2e 70 31 5f 78 0d 25 30  0e 20 45 51 55 44 20 20  |.p1_x.%0. EQUD  |
00004cd0  20 20 30 0d 25 3a 0a 20  2e 70 31 5f 79 0d 25 44  |  0.%:. .p1_y.%D|
00004ce0  0e 20 45 51 55 44 20 20  20 20 30 0d 25 4e 0a 20  |. EQUD    0.%N. |
00004cf0  2e 70 32 5f 78 0d 25 58  0e 20 45 51 55 44 20 20  |.p2_x.%X. EQUD  |
00004d00  20 20 30 0d 25 62 0a 20  2e 70 32 5f 79 0d 25 6c  |  0.%b. .p2_y.%l|
00004d10  0e 20 45 51 55 44 20 20  20 20 30 0d 25 76 06 20  |. EQUD    0.%v. |
00004d20  3a 0d 25 80 09 20 2e 72  6e 64 0d 25 8a 11 20 45  |:.%.. .rnd.%.. E|
00004d30  51 55 44 20 20 20 20 94  b3 2d 91 0d 25 94 06 20  |QUD    ..-..%.. |
00004d40  3a 0d 25 9e 06 20 3a 0d  25 a8 12 20 2e 75 70 64  |:.%.. :.%.. .upd|
00004d50  61 74 65 5f 63 65 6c 6c  73 0d 25 b2 1e 20 53 54  |ate_cells.%.. ST|
00004d60  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 30 2d 52  |MFD   R13!,{R0-R|
00004d70  31 32 2c 52 31 34 7d 0d  25 bc 06 20 3a 0d 25 c6  |12,R14}.%.. :.%.|
00004d80  1a 20 4c 44 52 20 20 20  20 20 52 39 2c 20 61 64  |. LDR     R9, ad|
00004d90  72 5f 63 6c 69 73 74 0d  25 d0 0c 20 2e 63 6c 6f  |r_clist.%.. .clo|
00004da0  6f 70 31 0d 25 da 17 20  4c 44 4d 49 41 20 20 20  |op1.%.. LDMIA   |
00004db0  52 39 2c 7b 52 31 2d 52  38 7d 0d 25 e4 13 20 43  |R9,{R1-R8}.%.. C|
00004dc0  4d 50 20 20 20 20 20 52  31 2c 20 23 30 0d 25 ee  |MP     R1, #0.%.|
00004dd0  16 20 42 45 51 20 20 20  20 20 63 65 6c 6c 5f 73  |. BEQ     cell_s|
00004de0  6b 69 70 0d 25 f8 13 20  43 4d 50 20 20 20 20 20  |kip.%.. CMP     |
00004df0  52 31 2c 20 23 31 0d 26  02 12 20 42 4c 45 51 20  |R1, #1.&.. BLEQ |
00004e00  20 20 20 73 70 72 61 79  0d 26 0c 16 20 42 45 51  |   spray.&.. BEQ|
00004e10  20 20 20 20 20 63 65 6c  6c 5f 73 6b 69 70 0d 26  |     cell_skip.&|
00004e20  16 13 20 43 4d 50 20 20  20 20 20 52 31 2c 20 23  |.. CMP     R1, #|
00004e30  32 0d 26 20 13 20 42 4c  45 51 20 20 20 20 70 69  |2.& . BLEQ    pi|
00004e40  73 74 6f 6c 0d 26 2a 16  20 42 45 51 20 20 20 20  |stol.&*. BEQ    |
00004e50  20 63 65 6c 6c 5f 73 6b  69 70 0d 26 34 13 20 43  | cell_skip.&4. C|
00004e60  4d 50 20 20 20 20 20 52  31 2c 20 23 33 0d 26 3e  |MP     R1, #3.&>|
00004e70  10 20 42 4c 45 51 20 20  20 20 67 75 6e 0d 26 48  |. BLEQ    gun.&H|
00004e80  16 20 42 45 51 20 20 20  20 20 63 65 6c 6c 5f 73  |. BEQ     cell_s|
00004e90  6b 69 70 0d 26 52 13 20  43 4d 50 20 20 20 20 20  |kip.&R. CMP     |
00004ea0  52 31 2c 20 23 34 0d 26  5c 13 20 42 4c 45 51 20  |R1, #4.&\. BLEQ |
00004eb0  20 20 20 6d 6f 72 74 61  72 0d 26 66 16 20 42 45  |   mortar.&f. BE|
00004ec0  51 20 20 20 20 20 63 65  6c 6c 5f 73 6b 69 70 0d  |Q     cell_skip.|
00004ed0  26 70 13 20 43 4d 50 20  20 20 20 20 52 31 2c 20  |&p. CMP     R1, |
00004ee0  23 35 0d 26 7a 13 20 42  4c 45 51 20 20 20 20 68  |#5.&z. BLEQ    h|
00004ef0  6f 6d 69 6e 67 0d 26 84  16 20 42 45 51 20 20 20  |oming.&.. BEQ   |
00004f00  20 20 63 65 6c 6c 5f 73  6b 69 70 0d 26 8e 13 20  |  cell_skip.&.. |
00004f10  43 4d 50 20 20 20 20 20  52 31 2c 20 23 36 0d 26  |CMP     R1, #6.&|
00004f20  98 14 20 42 4c 45 51 20  20 20 20 73 65 65 6b 69  |.. BLEQ    seeki|
00004f30  6e 67 0d 26 a2 16 20 42  45 51 20 20 20 20 20 63  |ng.&.. BEQ     c|
00004f40  65 6c 6c 5f 73 6b 69 70  0d 26 ac 13 20 43 4d 50  |ell_skip.&.. CMP|
00004f50  20 20 20 20 20 52 31 2c  20 23 37 0d 26 b6 15 20  |     R1, #7.&.. |
00004f60  42 4c 45 51 20 20 20 20  76 65 72 74 69 63 61 6c  |BLEQ    vertical|
00004f70  0d 26 c0 16 20 42 45 51  20 20 20 20 20 63 65 6c  |.&.. BEQ     cel|
00004f80  6c 5f 73 6b 69 70 0d 26  ca 13 20 43 4d 50 20 20  |l_skip.&.. CMP  |
00004f90  20 20 20 52 31 2c 20 23  38 0d 26 d4 13 20 42 4c  |   R1, #8.&.. BL|
00004fa0  45 51 20 20 20 20 73 70  72 61 79 32 0d 26 de 16  |EQ    spray2.&..|
00004fb0  20 42 45 51 20 20 20 20  20 63 65 6c 6c 5f 73 6b  | BEQ     cell_sk|
00004fc0  69 70 0d 26 e8 13 20 43  4d 50 20 20 20 20 20 52  |ip.&.. CMP     R|
00004fd0  31 2c 20 23 39 0d 26 f2  13 20 42 4c 45 51 20 20  |1, #9.&.. BLEQ  |
00004fe0  20 20 73 70 72 61 79 33  0d 26 fc 16 20 42 45 51  |  spray3.&.. BEQ|
00004ff0  20 20 20 20 20 63 65 6c  6c 5f 73 6b 69 70 0d 27  |     cell_skip.'|
00005000  06 14 20 43 4d 50 20 20  20 20 20 52 31 2c 20 23  |.. CMP     R1, #|
00005010  31 30 0d 27 10 14 20 42  4c 45 51 20 20 20 20 74  |10.'.. BLEQ    t|
00005020  68 72 6f 77 65 72 0d 27  1a 16 20 42 45 51 20 20  |hrower.'.. BEQ  |
00005030  20 20 20 63 65 6c 6c 5f  73 6b 69 70 0d 27 24 14  |   cell_skip.'$.|
00005040  20 43 4d 50 20 20 20 20  20 52 31 2c 20 23 31 31  | CMP     R1, #11|
00005050  0d 27 2e 14 20 42 4c 45  51 20 20 20 20 65 78 70  |.'.. BLEQ    exp|
00005060  6c 6f 64 65 0d 27 38 16  20 42 45 51 20 20 20 20  |lode.'8. BEQ    |
00005070  20 63 65 6c 6c 5f 73 6b  69 70 0d 27 42 14 20 43  | cell_skip.'B. C|
00005080  4d 50 20 20 20 20 20 52  31 2c 20 23 31 32 0d 27  |MP     R1, #12.'|
00005090  4c 11 20 42 4c 45 51 20  20 20 20 62 6f 6d 62 0d  |L. BLEQ    bomb.|
000050a0  27 56 16 20 42 45 51 20  20 20 20 20 63 65 6c 6c  |'V. BEQ     cell|
000050b0  5f 73 6b 69 70 0d 27 60  14 20 43 4d 50 20 20 20  |_skip.'`. CMP   |
000050c0  20 20 52 31 2c 20 23 31  33 0d 27 6a 11 20 42 4c  |  R1, #13.'j. BL|
000050d0  45 51 20 20 20 20 67 6c  75 65 0d 27 74 0f 20 2e  |EQ    glue.'t. .|
000050e0  63 65 6c 6c 5f 73 6b 69  70 0d 27 7e 18 20 53 54  |cell_skip.'~. ST|
000050f0  4d 49 41 20 20 20 52 39  21 2c 7b 52 31 2d 52 38  |MIA   R9!,{R1-R8|
00005100  7d 0d 27 88 13 20 43 4d  50 20 20 20 20 20 52 31  |}.'.. CMP     R1|
00005110  2c 20 23 30 0d 27 92 13  20 42 47 45 20 20 20 20  |, #0.'.. BGE    |
00005120  20 63 6c 6f 6f 70 31 0d  27 9c 06 20 3a 0d 27 a6  | cloop1.'.. :.'.|
00005130  1d 20 4c 44 4d 46 44 20  20 20 52 31 33 21 2c 7b  |. LDMFD   R13!,{|
00005140  52 30 2d 52 31 32 2c 50  43 7d 0d 27 b0 06 20 3a  |R0-R12,PC}.'.. :|
00005150  0d 27 ba 0b 20 2e 73 70  72 61 79 0d 27 c4 1a 20  |.'.. .spray.'.. |
00005160  53 54 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 39  |STMFD   R13!,{R9|
00005170  2c 52 31 34 7d 0d 27 ce  06 20 3a 0d 27 d8 16 20  |,R14}.'.. :.'.. |
00005180  53 55 42 20 20 20 20 20  52 35 2c 52 35 2c 20 23  |SUB     R5,R5, #|
00005190  31 0d 27 e2 15 20 41 44  44 20 20 20 20 20 52 32  |1.'.. ADD     R2|
000051a0  2c 52 32 2c 52 34 0d 27  ec 15 20 41 44 44 20 20  |,R2,R4.'.. ADD  |
000051b0  20 20 20 52 33 2c 52 33  2c 52 35 0d 27 f6 16 20  |   R3,R3,R5.'.. |
000051c0  53 55 42 20 20 20 20 20  52 36 2c 52 36 2c 20 23  |SUB     R6,R6, #|
000051d0  31 0d 28 00 13 20 43 4d  50 20 20 20 20 20 52 36  |1.(.. CMP     R6|
000051e0  2c 20 23 30 0d 28 0a 13  20 4d 4f 56 4c 45 20 20  |, #0.(.. MOVLE  |
000051f0  20 52 31 2c 20 23 30 0d  28 14 19 20 4c 44 4d 4c  | R1, #0.(.. LDML|
00005200  45 46 44 20 52 31 33 21  2c 7b 52 39 2c 50 43 7d  |EFD R13!,{R9,PC}|
00005210  0d 28 1e 06 20 3a 0d 28  28 19 20 53 54 4d 46 44  |.(.. :.((. STMFD|
00005220  20 20 20 52 31 33 21 2c  7b 52 31 2d 52 36 7d 0d  |   R13!,{R1-R6}.|
00005230  28 32 06 20 3a 0d 28 3c  1a 20 4d 4f 56 20 20 20  |(2. :.(<. MOV   |
00005240  20 20 52 32 2c 52 32 2c  20 41 53 52 20 23 34 0d  |  R2,R2, ASR #4.|
00005250  28 46 1a 20 4d 4f 56 20  20 20 20 20 52 33 2c 52  |(F. MOV     R3,R|
00005260  33 2c 20 41 53 52 20 23  34 0d 28 50 13 20 43 4d  |3, ASR #4.(P. CM|
00005270  50 20 20 20 20 20 52 32  2c 20 23 30 0d 28 5a 15  |P     R2, #0.(Z.|
00005280  20 42 4c 54 20 20 20 20  20 6e 6f 5f 73 70 72 61  | BLT     no_spra|
00005290  79 0d 28 64 13 20 43 4d  50 20 20 20 20 20 52 33  |y.(d. CMP     R3|
000052a0  2c 20 23 30 0d 28 6e 15  20 42 4c 54 20 20 20 20  |, #0.(n. BLT    |
000052b0  20 6e 6f 5f 73 70 72 61  79 0d 28 78 15 20 43 4d  | no_spray.(x. CM|
000052c0  50 20 20 20 20 20 52 32  2c 20 23 33 32 30 0d 28  |P     R2, #320.(|
000052d0  82 15 20 42 47 45 20 20  20 20 20 6e 6f 5f 73 70  |.. BGE     no_sp|
000052e0  72 61 79 0d 28 8c 15 20  43 4d 50 20 20 20 20 20  |ray.(.. CMP     |
000052f0  52 33 2c 20 23 32 35 36  0d 28 96 15 20 42 47 45  |R3, #256.(.. BGE|
00005300  20 20 20 20 20 6e 6f 5f  73 70 72 61 79 0d 28 a0  |     no_spray.(.|
00005310  18 20 52 53 42 20 20 20  20 20 52 33 2c 52 33 2c  |. RSB     R3,R3,|
00005320  20 23 32 35 36 0d 28 aa  1c 20 4c 44 52 20 20 20  | #256.(.. LDR   |
00005330  20 20 52 34 2c 20 73 63  72 65 65 6e 73 74 6f 72  |  R4, screenstor|
00005340  65 0d 28 b4 19 20 4d 4f  56 20 20 20 20 20 52 35  |e.(.. MOV     R5|
00005350  2c 20 23 79 5f 73 68 69  66 74 0d 28 be 15 20 41  |, #y_shift.(.. A|
00005360  44 44 20 20 20 20 20 52  34 2c 52 34 2c 52 32 0d  |DD     R4,R4,R2.|
00005370  28 c8 18 20 4d 4c 41 20  20 20 20 20 52 34 2c 52  |(.. MLA     R4,R|
00005380  35 2c 52 33 2c 52 34 0d  28 d2 14 20 4c 44 52 42  |5,R3,R4.(.. LDRB|
00005390  20 20 20 20 52 30 2c 5b  52 34 5d 0d 28 dc 13 20  |    R0,[R4].(.. |
000053a0  43 4d 50 20 20 20 20 20  52 30 2c 20 23 30 0d 28  |CMP     R0, #0.(|
000053b0  e6 11 20 ec 51 20 20 20  52 31 30 2c 20 23 31 0d  |.. .Q   R10, #1.|
000053c0  28 f0 14 20 4d 4f 56 4e  45 20 20 20 52 31 30 2c  |(.. MOVNE   R10,|
000053d0  20 23 30 0d 28 fa 15 20  42 4e 45 20 20 20 20 20  | #0.(.. BNE     |
000053e0  6e 6f 5f 73 70 72 61 79  0d 29 04 1f 20 4c 44 52  |no_spray.).. LDR|
000053f0  20 20 20 20 20 52 30 2c  20 61 64 72 5f 66 6c 61  |     R0, adr_fla|
00005400  6d 65 5f 66 61 64 65 0d  29 0e 1a 20 4d 4f 56 20  |me_fade.).. MOV |
00005410  20 20 20 20 52 39 2c 52  36 2c 20 41 53 4c 20 23  |    R9,R6, ASL #|
00005420  33 0d 29 18 15 20 43 4d  50 20 20 20 20 20 52 39  |3.).. CMP     R9|
00005430  2c 20 23 32 35 35 0d 29  22 15 20 4d 4f 56 47 54  |, #255.)". MOVGT|
00005440  20 20 20 52 39 2c 20 23  32 35 35 0d 29 2c 17 20  |   R9, #255.),. |
00005450  4c 44 52 42 20 20 20 20  52 30 2c 5b 52 30 2c 52  |LDRB    R0,[R0,R|
00005460  39 5d 0d 29 36 14 20 53  54 52 42 20 20 20 20 52  |9].)6. STRB    R|
00005470  30 2c 5b 52 34 5d 0d 29  40 0e 20 2e 6e 6f 5f 73  |0,[R4].)@. .no_s|
00005480  70 72 61 79 0d 29 4a 06  20 3a 0d 29 54 19 20 4c  |pray.)J. :.)T. L|
00005490  44 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 31 2d  |DMFD   R13!,{R1-|
000054a0  52 36 7d 0d 29 5e 14 20  43 4d 50 20 20 20 20 20  |R6}.)^. CMP     |
000054b0  52 31 30 2c 20 23 30 0d  29 68 16 20 52 53 42 45  |R10, #0.)h. RSBE|
000054c0  51 20 20 20 52 35 2c 52  35 2c 20 23 30 0d 29 72  |Q   R5,R5, #0.)r|
000054d0  17 20 ec 51 20 20 20 52  35 2c 52 35 2c 20 41 53  |. .Q   R5,R5, AS|
000054e0  52 20 23 31 0d 29 7c 19  20 4c 44 4d 46 44 20 20  |R #1.)|. LDMFD  |
000054f0  20 52 31 33 21 2c 7b 52  39 2c 50 43 7d 0d 29 86  | R13!,{R9,PC}.).|
00005500  06 20 3a 0d 29 90 0c 20  2e 73 70 72 61 79 32 0d  |. :.).. .spray2.|
00005510  29 9a 1a 20 53 54 4d 46  44 20 20 20 52 31 33 21  |).. STMFD   R13!|
00005520  2c 7b 52 39 2c 52 31 34  7d 0d 29 a4 06 20 3a 0d  |,{R9,R14}.).. :.|
00005530  29 ae 16 20 53 55 42 20  20 20 20 20 52 35 2c 52  |).. SUB     R5,R|
00005540  35 2c 20 23 31 0d 29 b8  15 20 41 44 44 20 20 20  |5, #1.).. ADD   |
00005550  20 20 52 32 2c 52 32 2c  52 34 0d 29 c2 15 20 41  |  R2,R2,R4.).. A|
00005560  44 44 20 20 20 20 20 52  33 2c 52 33 2c 52 35 0d  |DD     R3,R3,R5.|
00005570  29 cc 16 20 53 55 42 20  20 20 20 20 52 36 2c 52  |).. SUB     R6,R|
00005580  36 2c 20 23 31 0d 29 d6  13 20 43 4d 50 20 20 20  |6, #1.).. CMP   |
00005590  20 20 52 36 2c 20 23 30  0d 29 e0 13 20 4d 4f 56  |  R6, #0.).. MOV|
000055a0  4c 45 20 20 20 52 31 2c  20 23 30 0d 29 ea 19 20  |LE   R1, #0.).. |
000055b0  4c 44 4d 4c 45 46 44 20  52 31 33 21 2c 7b 52 39  |LDMLEFD R13!,{R9|
000055c0  2c 50 43 7d 0d 29 f4 06  20 3a 0d 29 fe 19 20 53  |,PC}.).. :.).. S|
000055d0  54 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 31 2d  |TMFD   R13!,{R1-|
000055e0  52 36 7d 0d 2a 08 16 20  53 54 4d 46 44 20 20 20  |R6}.*.. STMFD   |
000055f0  52 31 33 21 2c 7b 52 36  7d 0d 2a 12 06 20 3a 0d  |R13!,{R6}.*.. :.|
00005600  2a 1c 13 20 4d 4f 56 20  20 20 20 20 52 36 2c 20  |*.. MOV     R6, |
00005610  23 30 0d 2a 26 18 20 42  4c 20 20 20 20 20 20 63  |#0.*&. BL      c|
00005620  68 65 63 6b 5f 64 65 61  74 68 0d 2a 30 13 20 4d  |heck_death.*0. M|
00005630  4f 56 20 20 20 20 20 52  36 2c 20 23 31 0d 2a 3a  |OV     R6, #1.*:|
00005640  18 20 42 4c 20 20 20 20  20 20 63 68 65 63 6b 5f  |. BL      check_|
00005650  64 65 61 74 68 0d 2a 44  16 20 4c 44 4d 46 44 20  |death.*D. LDMFD |
00005660  20 20 52 31 33 21 2c 7b  52 36 7d 0d 2a 4e 06 20  |  R13!,{R6}.*N. |
00005670  3a 0d 2a 58 1a 20 4d 4f  56 20 20 20 20 20 52 32  |:.*X. MOV     R2|
00005680  2c 52 32 2c 20 41 53 52  20 23 34 0d 2a 62 1a 20  |,R2, ASR #4.*b. |
00005690  4d 4f 56 20 20 20 20 20  52 33 2c 52 33 2c 20 41  |MOV     R3,R3, A|
000056a0  53 52 20 23 34 0d 2a 6c  13 20 43 4d 50 20 20 20  |SR #4.*l. CMP   |
000056b0  20 20 52 32 2c 20 23 30  0d 2a 76 16 20 42 4c 54  |  R2, #0.*v. BLT|
000056c0  20 20 20 20 20 6e 6f 5f  73 70 72 61 79 32 0d 2a  |     no_spray2.*|
000056d0  80 13 20 43 4d 50 20 20  20 20 20 52 33 2c 20 23  |.. CMP     R3, #|
000056e0  30 0d 2a 8a 16 20 42 4c  54 20 20 20 20 20 6e 6f  |0.*.. BLT     no|
000056f0  5f 73 70 72 61 79 32 0d  2a 94 15 20 43 4d 50 20  |_spray2.*.. CMP |
00005700  20 20 20 20 52 32 2c 20  23 33 32 30 0d 2a 9e 16  |    R2, #320.*..|
00005710  20 42 47 45 20 20 20 20  20 6e 6f 5f 73 70 72 61  | BGE     no_spra|
00005720  79 32 0d 2a a8 15 20 43  4d 50 20 20 20 20 20 52  |y2.*.. CMP     R|
00005730  33 2c 20 23 32 35 36 0d  2a b2 16 20 42 47 45 20  |3, #256.*.. BGE |
00005740  20 20 20 20 6e 6f 5f 73  70 72 61 79 32 0d 2a bc  |    no_spray2.*.|
00005750  18 20 52 53 42 20 20 20  20 20 52 33 2c 52 33 2c  |. RSB     R3,R3,|
00005760  20 23 32 35 36 0d 2a c6  16 20 53 55 42 20 20 20  | #256.*.. SUB   |
00005770  20 20 52 32 2c 52 32 2c  20 23 31 0d 2a d0 16 20  |  R2,R2, #1.*.. |
00005780  53 55 42 20 20 20 20 20  52 33 2c 52 33 2c 20 23  |SUB     R3,R3, #|
00005790  31 0d 2a da 1c 20 4c 44  52 20 20 20 20 20 52 34  |1.*.. LDR     R4|
000057a0  2c 20 73 63 72 65 65 6e  73 74 6f 72 65 0d 2a e4  |, screenstore.*.|
000057b0  19 20 4d 4f 56 20 20 20  20 20 52 35 2c 20 23 79  |. MOV     R5, #y|
000057c0  5f 73 68 69 66 74 0d 2a  ee 15 20 41 44 44 20 20  |_shift.*.. ADD  |
000057d0  20 20 20 52 34 2c 52 34  2c 52 32 0d 2a f8 18 20  |   R4,R4,R2.*.. |
000057e0  4d 4c 41 20 20 20 20 20  52 34 2c 52 35 2c 52 33  |MLA     R4,R5,R3|
000057f0  2c 52 34 0d 2b 02 14 20  4c 44 52 42 20 20 20 20  |,R4.+.. LDRB    |
00005800  52 30 2c 5b 52 34 5d 0d  2b 0c 13 20 43 4d 50 20  |R0,[R4].+.. CMP |
00005810  20 20 20 20 52 30 2c 20  23 30 0d 2b 16 11 20 ec  |    R0, #0.+.. .|
00005820  51 20 20 20 52 31 30 2c  20 23 31 0d 2b 20 14 20  |Q   R10, #1.+ . |
00005830  4d 4f 56 4e 45 20 20 20  52 31 30 2c 20 23 30 0d  |MOVNE   R10, #0.|
00005840  2b 2a 16 20 42 4e 45 20  20 20 20 20 6e 6f 5f 73  |+*. BNE     no_s|
00005850  70 72 61 79 32 0d 2b 34  1f 20 4c 44 52 20 20 20  |pray2.+4. LDR   |
00005860  20 20 52 30 2c 20 61 64  72 5f 66 6c 61 6d 65 5f  |  R0, adr_flame_|
00005870  66 61 64 65 0d 2b 3e 1a  20 4d 4f 56 20 20 20 20  |fade.+>. MOV    |
00005880  20 52 39 2c 52 36 2c 20  41 53 4c 20 23 33 0d 2b  | R9,R6, ASL #3.+|
00005890  48 15 20 43 4d 50 20 20  20 20 20 52 39 2c 20 23  |H. CMP     R9, #|
000058a0  32 35 35 0d 2b 52 15 20  4d 4f 56 47 54 20 20 20  |255.+R. MOVGT   |
000058b0  52 39 2c 20 23 32 35 35  0d 2b 5c 17 20 4c 44 52  |R9, #255.+\. LDR|
000058c0  42 20 20 20 20 52 30 2c  5b 52 30 2c 52 39 5d 0d  |B    R0,[R0,R9].|
000058d0  2b 66 18 20 53 54 52 42  20 20 20 20 52 30 2c 5b  |+f. STRB    R0,[|
000058e0  52 34 2c 20 23 31 5d 0d  2b 70 1c 20 41 44 44 20  |R4, #1].+p. ADD |
000058f0  20 20 20 20 52 34 2c 52  34 2c 20 23 79 5f 73 68  |    R4,R4, #y_sh|
00005900  69 66 74 0d 2b 7a 14 20  53 54 52 42 20 20 20 20  |ift.+z. STRB    |
00005910  52 30 2c 5b 52 34 5d 0d  2b 84 18 20 53 54 52 42  |R0,[R4].+.. STRB|
00005920  20 20 20 20 52 30 2c 5b  52 34 2c 20 23 31 5d 0d  |    R0,[R4, #1].|
00005930  2b 8e 18 20 53 54 52 42  20 20 20 20 52 30 2c 5b  |+.. STRB    R0,[|
00005940  52 34 2c 20 23 32 5d 0d  2b 98 1c 20 41 44 44 20  |R4, #2].+.. ADD |
00005950  20 20 20 20 52 34 2c 52  34 2c 20 23 79 5f 73 68  |    R4,R4, #y_sh|
00005960  69 66 74 0d 2b a2 18 20  53 54 52 42 20 20 20 20  |ift.+.. STRB    |
00005970  52 30 2c 5b 52 34 2c 20  23 31 5d 0d 2b ac 0f 20  |R0,[R4, #1].+.. |
00005980  2e 6e 6f 5f 73 70 72 61  79 32 0d 2b b6 06 20 3a  |.no_spray2.+.. :|
00005990  0d 2b c0 19 20 4c 44 4d  46 44 20 20 20 52 31 33  |.+.. LDMFD   R13|
000059a0  21 2c 7b 52 31 2d 52 36  7d 0d 2b ca 14 20 43 4d  |!,{R1-R6}.+.. CM|
000059b0  50 20 20 20 20 20 52 31  30 2c 20 23 30 0d 2b d4  |P     R10, #0.+.|
000059c0  16 20 52 53 42 45 51 20  20 20 52 35 2c 52 35 2c  |. RSBEQ   R5,R5,|
000059d0  20 23 30 0d 2b de 16 20  52 53 42 45 51 20 20 20  | #0.+.. RSBEQ   |
000059e0  52 34 2c 52 34 2c 20 23  30 0d 2b e8 19 20 4c 44  |R4,R4, #0.+.. LD|
000059f0  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 39 2c 50  |MFD   R13!,{R9,P|
00005a00  43 7d 0d 2b f2 06 20 3a  0d 2b fc 0c 20 2e 73 70  |C}.+.. :.+.. .sp|
00005a10  72 61 79 33 0d 2c 06 1a  20 53 54 4d 46 44 20 20  |ray3.,.. STMFD  |
00005a20  20 52 31 33 21 2c 7b 52  39 2c 52 31 34 7d 0d 2c  | R13!,{R9,R14}.,|
00005a30  10 06 20 3a 0d 2c 1a 16  20 53 55 42 20 20 20 20  |.. :.,.. SUB    |
00005a40  20 52 35 2c 52 35 2c 20  23 31 0d 2c 24 15 20 41  | R5,R5, #1.,$. A|
00005a50  44 44 20 20 20 20 20 52  32 2c 52 32 2c 52 34 0d  |DD     R2,R2,R4.|
00005a60  2c 2e 15 20 41 44 44 20  20 20 20 20 52 33 2c 52  |,.. ADD     R3,R|
00005a70  33 2c 52 35 0d 2c 38 19  20 80 20 20 20 20 20 52  |3,R5.,8. .     R|
00005a80  30 2c 52 36 2c 20 23 32  35 35 3c 3c 38 0d 2c 42  |0,R6, #255<<8.,B|
00005a90  16 20 53 55 42 20 20 20  20 20 52 30 2c 52 30 2c  |. SUB     R0,R0,|
00005aa0  20 23 31 0d 2c 4c 13 20  43 4d 50 20 20 20 20 20  | #1.,L. CMP     |
00005ab0  52 30 2c 20 23 30 0d 2c  56 13 20 4d 4f 56 4c 45  |R0, #0.,V. MOVLE|
00005ac0  20 20 20 52 31 2c 20 23  30 0d 2c 60 19 20 4c 44  |   R1, #0.,`. LD|
00005ad0  4d 4c 45 46 44 20 52 31  33 21 2c 7b 52 39 2c 50  |MLEFD R13!,{R9,P|
00005ae0  43 7d 0d 2c 6a 1b 20 42  49 43 20 20 20 20 20 52  |C}.,j. BIC     R|
00005af0  36 2c 52 36 2c 20 23 32  35 35 3c 3c 38 0d 2c 74  |6,R6, #255<<8.,t|
00005b00  14 20 84 52 20 20 20 20  20 52 36 2c 52 36 2c 52  |. .R     R6,R6,R|
00005b10  30 0d 2c 7e 06 20 3a 0d  2c 88 19 20 53 54 4d 46  |0.,~. :.,.. STMF|
00005b20  44 20 20 20 52 31 33 21  2c 7b 52 31 2d 52 36 7d  |D   R13!,{R1-R6}|
00005b30  0d 2c 92 06 20 3a 0d 2c  9c 13 20 4d 4f 56 20 20  |.,.. :.,.. MOV  |
00005b40  20 20 20 52 36 2c 20 23  30 0d 2c a6 18 20 42 4c  |   R6, #0.,.. BL|
00005b50  20 20 20 20 20 20 63 68  65 63 6b 5f 64 65 61 74  |      check_deat|
00005b60  68 0d 2c b0 13 20 4d 4f  56 20 20 20 20 20 52 36  |h.,.. MOV     R6|
00005b70  2c 20 23 31 0d 2c ba 18  20 42 4c 20 20 20 20 20  |, #1.,.. BL     |
00005b80  20 63 68 65 63 6b 5f 64  65 61 74 68 0d 2c c4 06  | check_death.,..|
00005b90  20 3a 0d 2c ce 1a 20 4d  4f 56 20 20 20 20 20 52  | :.,.. MOV     R|
00005ba0  32 2c 52 32 2c 20 41 53  52 20 23 34 0d 2c d8 1a  |2,R2, ASR #4.,..|
00005bb0  20 4d 4f 56 20 20 20 20  20 52 33 2c 52 33 2c 20  | MOV     R3,R3, |
00005bc0  41 53 52 20 23 34 0d 2c  e2 13 20 43 4d 50 20 20  |ASR #4.,.. CMP  |
00005bd0  20 20 20 52 32 2c 20 23  30 0d 2c ec 16 20 42 4c  |   R2, #0.,.. BL|
00005be0  54 20 20 20 20 20 6e 6f  5f 73 70 72 61 79 33 0d  |T     no_spray3.|
00005bf0  2c f6 13 20 43 4d 50 20  20 20 20 20 52 33 2c 20  |,.. CMP     R3, |
00005c00  23 30 0d 2d 00 16 20 42  4c 54 20 20 20 20 20 6e  |#0.-.. BLT     n|
00005c10  6f 5f 73 70 72 61 79 33  0d 2d 0a 15 20 43 4d 50  |o_spray3.-.. CMP|
00005c20  20 20 20 20 20 52 32 2c  20 23 33 32 30 0d 2d 14  |     R2, #320.-.|
00005c30  16 20 42 47 45 20 20 20  20 20 6e 6f 5f 73 70 72  |. BGE     no_spr|
00005c40  61 79 33 0d 2d 1e 15 20  43 4d 50 20 20 20 20 20  |ay3.-.. CMP     |
00005c50  52 33 2c 20 23 32 35 36  0d 2d 28 16 20 42 47 45  |R3, #256.-(. BGE|
00005c60  20 20 20 20 20 6e 6f 5f  73 70 72 61 79 33 0d 2d  |     no_spray3.-|
00005c70  32 18 20 52 53 42 20 20  20 20 20 52 33 2c 52 33  |2. RSB     R3,R3|
00005c80  2c 20 23 32 35 36 0d 2d  3c 16 20 53 55 42 20 20  |, #256.-<. SUB  |
00005c90  20 20 20 52 32 2c 52 32  2c 20 23 31 0d 2d 46 16  |   R2,R2, #1.-F.|
00005ca0  20 53 55 42 20 20 20 20  20 52 33 2c 52 33 2c 20  | SUB     R3,R3, |
00005cb0  23 31 0d 2d 50 1c 20 4c  44 52 20 20 20 20 20 52  |#1.-P. LDR     R|
00005cc0  34 2c 20 73 63 72 65 65  6e 73 74 6f 72 65 0d 2d  |4, screenstore.-|
00005cd0  5a 19 20 4d 4f 56 20 20  20 20 20 52 35 2c 20 23  |Z. MOV     R5, #|
00005ce0  79 5f 73 68 69 66 74 0d  2d 64 15 20 41 44 44 20  |y_shift.-d. ADD |
00005cf0  20 20 20 20 52 34 2c 52  34 2c 52 32 0d 2d 6e 18  |    R4,R4,R2.-n.|
00005d00  20 4d 4c 41 20 20 20 20  20 52 34 2c 52 35 2c 52  | MLA     R4,R5,R|
00005d10  33 2c 52 34 0d 2d 78 14  20 4c 44 52 42 20 20 20  |3,R4.-x. LDRB   |
00005d20  20 52 30 2c 5b 52 34 5d  0d 2d 82 13 20 43 4d 50  | R0,[R4].-.. CMP|
00005d30  20 20 20 20 20 52 30 2c  20 23 30 0d 2d 8c 11 20  |     R0, #0.-.. |
00005d40  ec 51 20 20 20 52 31 30  2c 20 23 31 0d 2d 96 14  |.Q   R10, #1.-..|
00005d50  20 4d 4f 56 4e 45 20 20  20 52 31 30 2c 20 23 30  | MOVNE   R10, #0|
00005d60  0d 2d a0 16 20 42 4e 45  20 20 20 20 20 6e 6f 5f  |.-.. BNE     no_|
00005d70  73 70 72 61 79 33 0d 2d  aa 15 20 4d 4f 56 20 20  |spray3.-.. MOV  |
00005d80  20 20 20 52 30 2c 20 23  32 35 35 0d 2d b4 18 20  |   R0, #255.-.. |
00005d90  53 54 52 42 20 20 20 20  52 30 2c 5b 52 34 2c 20  |STRB    R0,[R4, |
00005da0  23 31 5d 0d 2d be 1c 20  41 44 44 20 20 20 20 20  |#1].-.. ADD     |
00005db0  52 34 2c 52 34 2c 20 23  79 5f 73 68 69 66 74 0d  |R4,R4, #y_shift.|
00005dc0  2d c8 14 20 53 54 52 42  20 20 20 20 52 30 2c 5b  |-.. STRB    R0,[|
00005dd0  52 34 5d 0d 2d d2 18 20  53 54 52 42 20 20 20 20  |R4].-.. STRB    |
00005de0  52 30 2c 5b 52 34 2c 20  23 31 5d 0d 2d dc 18 20  |R0,[R4, #1].-.. |
00005df0  53 54 52 42 20 20 20 20  52 30 2c 5b 52 34 2c 20  |STRB    R0,[R4, |
00005e00  23 32 5d 0d 2d e6 1c 20  41 44 44 20 20 20 20 20  |#2].-.. ADD     |
00005e10  52 34 2c 52 34 2c 20 23  79 5f 73 68 69 66 74 0d  |R4,R4, #y_shift.|
00005e20  2d f0 18 20 53 54 52 42  20 20 20 20 52 30 2c 5b  |-.. STRB    R0,[|
00005e30  52 34 2c 20 23 31 5d 0d  2d fa 0f 20 2e 6e 6f 5f  |R4, #1].-.. .no_|
00005e40  73 70 72 61 79 33 0d 2e  04 06 20 3a 0d 2e 0e 19  |spray3.... :....|
00005e50  20 4c 44 4d 46 44 20 20  20 52 31 33 21 2c 7b 52  | LDMFD   R13!,{R|
00005e60  31 2d 52 36 7d 0d 2e 18  14 20 43 4d 50 20 20 20  |1-R6}.... CMP   |
00005e70  20 20 52 31 30 2c 20 23  30 0d 2e 22 16 20 52 53  |  R10, #0..". RS|
00005e80  42 45 51 20 20 20 52 35  2c 52 35 2c 20 23 30 0d  |BEQ   R5,R5, #0.|
00005e90  2e 2c 16 20 52 53 42 45  51 20 20 20 52 34 2c 52  |.,. RSBEQ   R4,R|
00005ea0  34 2c 20 23 30 0d 2e 36  19 20 4c 44 4d 46 44 20  |4, #0..6. LDMFD |
00005eb0  20 20 52 31 33 21 2c 7b  52 39 2c 50 43 7d 0d 2e  |  R13!,{R9,PC}..|
00005ec0  40 06 20 3a 0d 2e 4a 14  20 2e 61 64 72 5f 66 6c  |@. :..J. .adr_fl|
00005ed0  61 6d 65 5f 66 61 64 65  0d 2e 54 18 20 45 51 55  |ame_fade..T. EQU|
00005ee0  44 20 20 20 20 66 6c 61  6d 65 5f 66 61 64 65 25  |D    flame_fade%|
00005ef0  0d 2e 5e 06 20 3a 0d 2e  68 12 20 2e 61 64 72 5f  |..^. :..h. .adr_|
00005f00  67 75 6e 5f 66 61 64 65  0d 2e 72 16 20 45 51 55  |gun_fade..r. EQU|
00005f10  44 20 20 20 20 67 75 6e  5f 66 61 64 65 25 0d 2e  |D    gun_fade%..|
00005f20  7c 06 20 3a 0d 2e 86 0d  20 2e 74 68 72 6f 77 65  ||. :.... .throwe|
00005f30  72 0d 2e 90 1a 20 53 54  4d 46 44 20 20 20 52 31  |r.... STMFD   R1|
00005f40  33 21 2c 7b 52 39 2c 52  31 34 7d 0d 2e 9a 06 20  |3!,{R9,R14}.... |
00005f50  3a 0d 2e a4 15 20 41 44  44 20 20 20 20 20 52 32  |:.... ADD     R2|
00005f60  2c 52 32 2c 52 34 0d 2e  ae 15 20 41 44 44 20 20  |,R2,R4.... ADD  |
00005f70  20 20 20 52 33 2c 52 33  2c 52 35 0d 2e b8 19 20  |   R3,R3,R5.... |
00005f80  80 20 20 20 20 20 52 37  2c 52 36 2c 20 23 32 35  |.     R7,R6, #25|
00005f90  35 3c 3c 38 0d 2e c2 1a  20 4d 4f 56 20 20 20 20  |5<<8.... MOV    |
00005fa0  20 52 37 2c 52 37 2c 20  41 53 52 20 23 38 0d 2e  | R7,R7, ASR #8..|
00005fb0  cc 16 20 41 44 44 20 20  20 20 20 52 37 2c 52 37  |.. ADD     R7,R7|
00005fc0  2c 20 23 31 0d 2e d6 14  20 43 4d 50 20 20 20 20  |, #1.... CMP    |
00005fd0  20 52 37 2c 20 23 31 35  0d 2e e0 13 20 4d 4f 56  | R7, #15.... MOV|
00005fe0  47 45 20 20 20 52 31 2c  20 23 30 0d 2e ea 1b 20  |GE   R1, #0.... |
00005ff0  4c 44 4d 47 45 46 44 20  20 20 52 31 33 21 2c 7b  |LDMGEFD   R13!,{|
00006000  52 39 2c 50 43 7d 0d 2e  f4 1b 20 42 49 43 20 20  |R9,PC}.... BIC  |
00006010  20 20 20 52 36 2c 52 36  2c 20 23 32 35 35 3c 3c  |   R6,R6, #255<<|
00006020  38 0d 2e fe 1c 20 84 52  20 20 20 20 20 52 36 2c  |8.... .R     R6,|
00006030  52 36 2c 52 37 2c 20 41  53 4c 20 23 38 0d 2f 08  |R6,R7, ASL #8./.|
00006040  06 20 3a 0d 2f 12 19 20  53 54 4d 46 44 20 20 20  |. :./.. STMFD   |
00006050  52 31 33 21 2c 7b 52 31  2d 52 36 7d 0d 2f 1c 06  |R13!,{R1-R6}./..|
00006060  20 3a 0d 2f 26 18 20 42  4c 20 20 20 20 20 20 63  | :./&. BL      c|
00006070  68 65 63 6b 5f 64 65 61  74 68 0d 2f 30 06 20 3a  |heck_death./0. :|
00006080  0d 2f 3a 1a 20 4d 4f 56  20 20 20 20 20 52 32 2c  |./:. MOV     R2,|
00006090  52 32 2c 20 41 53 52 20  23 34 0d 2f 44 1a 20 4d  |R2, ASR #4./D. M|
000060a0  4f 56 20 20 20 20 20 52  33 2c 52 33 2c 20 41 53  |OV     R3,R3, AS|
000060b0  52 20 23 34 0d 2f 4e 18  20 52 53 42 20 20 20 20  |R #4./N. RSB    |
000060c0  20 52 33 2c 52 33 2c 20  23 32 35 36 0d 2f 58 1c  | R3,R3, #256./X.|
000060d0  20 4c 44 52 20 20 20 20  20 52 34 2c 20 73 63 72  | LDR     R4, scr|
000060e0  65 65 6e 73 74 6f 72 65  0d 2f 62 19 20 4d 4f 56  |eenstore./b. MOV|
000060f0  20 20 20 20 20 52 35 2c  20 23 79 5f 73 68 69 66  |     R5, #y_shif|
00006100  74 0d 2f 6c 15 20 41 44  44 20 20 20 20 20 52 34  |t./l. ADD     R4|
00006110  2c 52 34 2c 52 32 0d 2f  76 18 20 4d 4c 41 20 20  |,R4,R2./v. MLA  |
00006120  20 20 20 52 34 2c 52 35  2c 52 33 2c 52 34 0d 2f  |   R4,R5,R3,R4./|
00006130  80 18 20 4c 44 52 42 20  20 20 20 52 30 2c 5b 52  |.. LDRB    R0,[R|
00006140  34 2c 20 23 32 5d 0d 2f  8a 13 20 43 4d 50 20 20  |4, #2]./.. CMP  |
00006150  20 20 20 52 30 2c 20 23  30 0d 2f 94 11 20 ec 51  |   R0, #0./.. .Q|
00006160  20 20 20 52 31 30 2c 20  23 31 0d 2f 9e 14 20 4d  |   R10, #1./.. M|
00006170  4f 56 4e 45 20 20 20 52  31 30 2c 20 23 30 0d 2f  |OVNE   R10, #0./|
00006180  a8 17 20 42 4e 45 20 20  20 20 20 6e 6f 5f 74 68  |.. BNE     no_th|
00006190  72 6f 77 65 72 0d 2f b2  18 20 52 53 42 20 20 20  |rower./.. RSB   |
000061a0  20 20 52 33 2c 52 33 2c  20 23 32 35 36 0d 2f bc  |  R3,R3, #256./.|
000061b0  12 20 4d 4f 56 20 20 20  20 20 52 30 2c 52 37 0d  |. MOV     R0,R7.|
000061c0  2f c6 16 20 53 55 42 20  20 20 20 20 52 31 2c 52  |/.. SUB     R1,R|
000061d0  32 2c 20 23 34 0d 2f d0  16 20 53 55 42 20 20 20  |2, #4./.. SUB   |
000061e0  20 20 52 32 2c 52 33 2c  20 23 34 0d 2f da 1d 20  |  R2,R3, #4./.. |
000061f0  42 4c 20 20 20 20 20 20  70 6c 6f 74 5f 73 70 72  |BL      plot_spr|
00006200  69 74 65 5f 31 32 30 38  0d 2f e4 10 20 2e 6e 6f  |ite_1208./.. .no|
00006210  5f 74 68 72 6f 77 65 72  0d 2f ee 06 20 3a 0d 2f  |_thrower./.. :./|
00006220  f8 19 20 4c 44 4d 46 44  20 20 20 52 31 33 21 2c  |.. LDMFD   R13!,|
00006230  7b 52 31 2d 52 36 7d 0d  30 02 14 20 43 4d 50 20  |{R1-R6}.0.. CMP |
00006240  20 20 20 20 52 31 30 2c  20 23 30 0d 30 0c 10 20  |    R10, #0.0.. |
00006250  ec 51 20 20 20 52 31 2c  20 23 30 0d 30 16 19 20  |.Q   R1, #0.0.. |
00006260  4c 44 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 39  |LDMFD   R13!,{R9|
00006270  2c 50 43 7d 0d 30 20 06  20 3a 0d 30 2a 0d 20 2e  |,PC}.0 . :.0*. .|
00006280  65 78 70 6c 6f 64 65 0d  30 34 1a 20 53 54 4d 46  |explode.04. STMF|
00006290  44 20 20 20 52 31 33 21  2c 7b 52 39 2c 52 31 34  |D   R13!,{R9,R14|
000062a0  7d 0d 30 3e 06 20 3a 0d  30 48 15 20 41 44 44 20  |}.0>. :.0H. ADD |
000062b0  20 20 20 20 52 32 2c 52  32 2c 52 34 0d 30 52 15  |    R2,R2,R4.0R.|
000062c0  20 41 44 44 20 20 20 20  20 52 33 2c 52 33 2c 52  | ADD     R3,R3,R|
000062d0  35 0d 30 5c 19 20 80 20  20 20 20 20 52 37 2c 52  |5.0\. .     R7,R|
000062e0  36 2c 20 23 32 35 35 3c  3c 38 0d 30 66 1a 20 4d  |6, #255<<8.0f. M|
000062f0  4f 56 20 20 20 20 20 52  37 2c 52 37 2c 20 41 53  |OV     R7,R7, AS|
00006300  52 20 23 38 0d 30 70 16  20 41 44 44 20 20 20 20  |R #8.0p. ADD    |
00006310  20 52 37 2c 52 37 2c 20  23 31 0d 30 7a 14 20 43  | R7,R7, #1.0z. C|
00006320  4d 50 20 20 20 20 20 52  37 2c 20 23 31 35 0d 30  |MP     R7, #15.0|
00006330  84 13 20 4d 4f 56 47 45  20 20 20 52 31 2c 20 23  |.. MOVGE   R1, #|
00006340  30 0d 30 8e 1b 20 4c 44  4d 47 45 46 44 20 20 20  |0.0.. LDMGEFD   |
00006350  52 31 33 21 2c 7b 52 39  2c 50 43 7d 0d 30 98 1b  |R13!,{R9,PC}.0..|
00006360  20 42 49 43 20 20 20 20  20 52 36 2c 52 36 2c 20  | BIC     R6,R6, |
00006370  23 32 35 35 3c 3c 38 0d  30 a2 1c 20 84 52 20 20  |#255<<8.0.. .R  |
00006380  20 20 20 52 36 2c 52 36  2c 52 37 2c 20 41 53 4c  |   R6,R6,R7, ASL|
00006390  20 23 38 0d 30 ac 16 20  41 44 44 20 20 20 20 20  | #8.0.. ADD     |
000063a0  52 37 2c 52 37 2c 20 23  38 0d 30 b6 06 20 3a 0d  |R7,R7, #8.0.. :.|
000063b0  30 c0 19 20 53 54 4d 46  44 20 20 20 52 31 33 21  |0.. STMFD   R13!|
000063c0  2c 7b 52 31 2d 52 36 7d  0d 30 ca 06 20 3a 0d 30  |,{R1-R6}.0.. :.0|
000063d0  d4 18 20 42 4c 20 20 20  20 20 20 63 68 65 63 6b  |.. BL      check|
000063e0  5f 64 65 61 74 68 0d 30  de 06 20 3a 0d 30 e8 1a  |_death.0.. :.0..|
000063f0  20 4d 4f 56 20 20 20 20  20 52 32 2c 52 32 2c 20  | MOV     R2,R2, |
00006400  41 53 52 20 23 34 0d 30  f2 1a 20 4d 4f 56 20 20  |ASR #4.0.. MOV  |
00006410  20 20 20 52 33 2c 52 33  2c 20 41 53 52 20 23 34  |   R3,R3, ASR #4|
00006420  0d 30 fc 18 20 52 53 42  20 20 20 20 20 52 33 2c  |.0.. RSB     R3,|
00006430  52 33 2c 20 23 32 35 36  0d 31 06 1c 20 4c 44 52  |R3, #256.1.. LDR|
00006440  20 20 20 20 20 52 34 2c  20 73 63 72 65 65 6e 73  |     R4, screens|
00006450  74 6f 72 65 0d 31 10 19  20 4d 4f 56 20 20 20 20  |tore.1.. MOV    |
00006460  20 52 35 2c 20 23 79 5f  73 68 69 66 74 0d 31 1a  | R5, #y_shift.1.|
00006470  15 20 41 44 44 20 20 20  20 20 52 34 2c 52 34 2c  |. ADD     R4,R4,|
00006480  52 32 0d 31 24 18 20 4d  4c 41 20 20 20 20 20 52  |R2.1$. MLA     R|
00006490  34 2c 52 35 2c 52 33 2c  52 34 0d 31 2e 18 20 4c  |4,R5,R3,R4.1.. L|
000064a0  44 52 42 20 20 20 20 52  30 2c 5b 52 34 2c 20 23  |DRB    R0,[R4, #|
000064b0  32 5d 0d 31 38 13 20 43  4d 50 20 20 20 20 20 52  |2].18. CMP     R|
000064c0  30 2c 20 23 30 0d 31 42  11 20 ec 51 20 20 20 52  |0, #0.1B. .Q   R|
000064d0  31 30 2c 20 23 31 0d 31  4c 14 20 4d 4f 56 4e 45  |10, #1.1L. MOVNE|
000064e0  20 20 20 52 31 30 2c 20  23 30 0d 31 56 17 20 42  |   R10, #0.1V. B|
000064f0  4e 45 20 20 20 20 20 6e  6f 5f 65 78 70 6c 6f 64  |NE     no_explod|
00006500  65 0d 31 60 18 20 52 53  42 20 20 20 20 20 52 33  |e.1`. RSB     R3|
00006510  2c 52 33 2c 20 23 32 35  36 0d 31 6a 12 20 4d 4f  |,R3, #256.1j. MO|
00006520  56 20 20 20 20 20 52 30  2c 52 37 0d 31 74 16 20  |V     R0,R7.1t. |
00006530  53 55 42 20 20 20 20 20  52 31 2c 52 32 2c 20 23  |SUB     R1,R2, #|
00006540  38 0d 31 7e 16 20 53 55  42 20 20 20 20 20 52 32  |8.1~. SUB     R2|
00006550  2c 52 33 2c 20 23 38 0d  31 88 1d 20 42 4c 20 20  |,R3, #8.1.. BL  |
00006560  20 20 20 20 70 6c 6f 74  5f 73 70 72 69 74 65 5f  |    plot_sprite_|
00006570  32 30 31 36 0d 31 92 10  20 2e 6e 6f 5f 65 78 70  |2016.1.. .no_exp|
00006580  6c 6f 64 65 0d 31 9c 06  20 3a 0d 31 a6 19 20 4c  |lode.1.. :.1.. L|
00006590  44 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 31 2d  |DMFD   R13!,{R1-|
000065a0  52 36 7d 0d 31 b0 14 20  43 4d 50 20 20 20 20 20  |R6}.1.. CMP     |
000065b0  52 31 30 2c 20 23 30 0d  31 ba 19 20 4c 44 4d 46  |R10, #0.1.. LDMF|
000065c0  44 20 20 20 52 31 33 21  2c 7b 52 39 2c 50 43 7d  |D   R13!,{R9,PC}|
000065d0  0d 31 c4 06 20 3a 0d 31  ce 0c 20 2e 70 69 73 74  |.1.. :.1.. .pist|
000065e0  6f 6c 0d 31 d8 1a 20 53  54 4d 46 44 20 20 20 52  |ol.1.. STMFD   R|
000065f0  31 33 21 2c 7b 52 39 2c  52 31 34 7d 0d 31 e2 06  |13!,{R9,R14}.1..|
00006600  20 3a 0d 31 ec 15 20 41  44 44 20 20 20 20 20 52  | :.1.. ADD     R|
00006610  32 2c 52 32 2c 52 34 0d  31 f6 15 20 41 44 44 20  |2,R2,R4.1.. ADD |
00006620  20 20 20 20 52 33 2c 52  33 2c 52 35 0d 32 00 13  |    R3,R3,R5.2..|
00006630  20 43 4d 50 20 20 20 20  20 52 34 2c 20 23 30 0d  | CMP     R4, #0.|
00006640  32 0a 13 20 4d 4f 56 4c  54 20 20 20 52 37 2c 20  |2.. MOVLT   R7, |
00006650  23 31 0d 32 14 13 20 4d  4f 56 47 54 20 20 20 52  |#1.2.. MOVGT   R|
00006660  37 2c 20 23 30 0d 32 1e  06 20 3a 0d 32 28 19 20  |7, #0.2.. :.2(. |
00006670  53 54 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 31  |STMFD   R13!,{R1|
00006680  2d 52 36 7d 0d 32 32 06  20 3a 0d 32 3c 18 20 42  |-R6}.22. :.2<. B|
00006690  4c 20 20 20 20 20 20 63  68 65 63 6b 5f 64 65 61  |L      check_dea|
000066a0  74 68 0d 32 46 06 20 3a  0d 32 50 1a 20 4d 4f 56  |th.2F. :.2P. MOV|
000066b0  20 20 20 20 20 52 32 2c  52 32 2c 20 41 53 52 20  |     R2,R2, ASR |
000066c0  23 34 0d 32 5a 1a 20 4d  4f 56 20 20 20 20 20 52  |#4.2Z. MOV     R|
000066d0  33 2c 52 33 2c 20 41 53  52 20 23 34 0d 32 64 18  |3,R3, ASR #4.2d.|
000066e0  20 52 53 42 20 20 20 20  20 52 33 2c 52 33 2c 20  | RSB     R3,R3, |
000066f0  23 32 35 36 0d 32 6e 1c  20 4c 44 52 20 20 20 20  |#256.2n. LDR    |
00006700  20 52 34 2c 20 73 63 72  65 65 6e 73 74 6f 72 65  | R4, screenstore|
00006710  0d 32 78 19 20 4d 4f 56  20 20 20 20 20 52 35 2c  |.2x. MOV     R5,|
00006720  20 23 79 5f 73 68 69 66  74 0d 32 82 15 20 41 44  | #y_shift.2.. AD|
00006730  44 20 20 20 20 20 52 34  2c 52 34 2c 52 32 0d 32  |D     R4,R4,R2.2|
00006740  8c 18 20 4d 4c 41 20 20  20 20 20 52 34 2c 52 35  |.. MLA     R4,R5|
00006750  2c 52 33 2c 52 34 0d 32  96 18 20 4c 44 52 42 20  |,R3,R4.2.. LDRB |
00006760  20 20 20 52 30 2c 5b 52  34 2c 20 23 32 5d 0d 32  |   R0,[R4, #2].2|
00006770  a0 13 20 43 4d 50 20 20  20 20 20 52 30 2c 20 23  |.. CMP     R0, #|
00006780  30 0d 32 aa 11 20 ec 51  20 20 20 52 31 30 2c 20  |0.2.. .Q   R10, |
00006790  23 31 0d 32 b4 14 20 4d  4f 56 4e 45 20 20 20 52  |#1.2.. MOVNE   R|
000067a0  31 30 2c 20 23 30 0d 32  be 16 20 42 4e 45 20 20  |10, #0.2.. BNE  |
000067b0  20 20 20 6e 6f 5f 70 69  73 74 6f 6c 0d 32 c8 18  |   no_pistol.2..|
000067c0  20 52 53 42 20 20 20 20  20 52 33 2c 52 33 2c 20  | RSB     R3,R3, |
000067d0  23 32 35 36 0d 32 d2 12  20 4d 4f 56 20 20 20 20  |#256.2.. MOV    |
000067e0  20 52 30 2c 52 37 0d 32  dc 16 20 53 55 42 20 20  | R0,R7.2.. SUB  |
000067f0  20 20 20 52 31 2c 52 32  2c 20 23 32 0d 32 e6 16  |   R1,R2, #2.2..|
00006800  20 53 55 42 20 20 20 20  20 52 32 2c 52 33 2c 20  | SUB     R2,R3, |
00006810  23 32 0d 32 f0 1d 20 42  4c 20 20 20 20 20 20 70  |#2.2.. BL      p|
00006820  6c 6f 74 5f 73 70 72 69  74 65 5f 30 38 30 34 0d  |lot_sprite_0804.|
00006830  32 fa 1d 3b 4c 44 52 20  20 20 20 20 52 30 2c 20  |2..;LDR     R0, |
00006840  61 64 72 5f 67 75 6e 5f  66 61 64 65 0d 33 04 15  |adr_gun_fade.3..|
00006850  3b 4d 4f 56 20 20 20 20  20 52 39 2c 20 23 32 35  |;MOV     R9, #25|
00006860  35 0d 33 0e 17 3b 4c 44  52 42 20 20 20 20 52 30  |5.3..;LDRB    R0|
00006870  2c 5b 52 30 2c 52 39 5d  0d 33 18 14 3b 53 54 52  |,[R0,R9].3..;STR|
00006880  42 20 20 20 20 52 30 2c  5b 52 34 5d 0d 33 22 18  |B    R0,[R4].3".|
00006890  3b 53 54 52 42 20 20 20  20 52 30 2c 5b 52 34 2c  |;STRB    R0,[R4,|
000068a0  20 23 31 5d 0d 33 2c 0f  20 2e 6e 6f 5f 70 69 73  | #1].3,. .no_pis|
000068b0  74 6f 6c 0d 33 36 06 20  3a 0d 33 40 19 20 4c 44  |tol.36. :.3@. LD|
000068c0  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 31 2d 52  |MFD   R13!,{R1-R|
000068d0  36 7d 0d 33 4a 14 20 43  4d 50 20 20 20 20 20 52  |6}.3J. CMP     R|
000068e0  31 30 2c 20 23 30 0d 33  54 10 20 ec 51 20 20 20  |10, #0.3T. .Q   |
000068f0  52 31 2c 20 23 30 0d 33  5e 19 20 4c 44 4d 46 44  |R1, #0.3^. LDMFD|
00006900  20 20 20 52 31 33 21 2c  7b 52 39 2c 50 43 7d 0d  |   R13!,{R9,PC}.|
00006910  33 68 06 20 3a 0d 33 72  09 20 2e 67 75 6e 0d 33  |3h. :.3r. .gun.3|
00006920  7c 1a 20 53 54 4d 46 44  20 20 20 52 31 33 21 2c  ||. STMFD   R13!,|
00006930  7b 52 39 2c 52 31 34 7d  0d 33 86 06 20 3a 0d 33  |{R9,R14}.3.. :.3|
00006940  90 15 20 41 44 44 20 20  20 20 20 52 32 2c 52 32  |.. ADD     R2,R2|
00006950  2c 52 34 0d 33 9a 15 20  41 44 44 20 20 20 20 20  |,R4.3.. ADD     |
00006960  52 33 2c 52 33 2c 52 35  0d 33 a4 13 20 43 4d 50  |R3,R3,R5.3.. CMP|
00006970  20 20 20 20 20 52 34 2c  20 23 30 0d 33 ae 13 20  |     R4, #0.3.. |
00006980  4d 4f 56 4c 54 20 20 20  52 37 2c 20 23 33 0d 33  |MOVLT   R7, #3.3|
00006990  b8 13 20 4d 4f 56 47 54  20 20 20 52 37 2c 20 23  |.. MOVGT   R7, #|
000069a0  32 0d 33 c2 06 20 3a 0d  33 cc 19 20 53 54 4d 46  |2.3.. :.3.. STMF|
000069b0  44 20 20 20 52 31 33 21  2c 7b 52 31 2d 52 36 7d  |D   R13!,{R1-R6}|
000069c0  0d 33 d6 06 20 3a 0d 33  e0 13 20 4d 4f 56 20 20  |.3.. :.3.. MOV  |
000069d0  20 20 20 52 36 2c 20 23  30 0d 33 ea 18 20 42 4c  |   R6, #0.3.. BL|
000069e0  20 20 20 20 20 20 63 68  65 63 6b 5f 64 65 61 74  |      check_deat|
000069f0  68 0d 33 f4 13 20 4d 4f  56 20 20 20 20 20 52 36  |h.3.. MOV     R6|
00006a00  2c 20 23 31 0d 33 fe 18  20 42 4c 20 20 20 20 20  |, #1.3.. BL     |
00006a10  20 63 68 65 63 6b 5f 64  65 61 74 68 0d 34 08 06  | check_death.4..|
00006a20  20 3a 0d 34 12 1a 20 4d  4f 56 20 20 20 20 20 52  | :.4.. MOV     R|
00006a30  32 2c 52 32 2c 20 41 53  52 20 23 34 0d 34 1c 1a  |2,R2, ASR #4.4..|
00006a40  20 4d 4f 56 20 20 20 20  20 52 33 2c 52 33 2c 20  | MOV     R3,R3, |
00006a50  41 53 52 20 23 34 0d 34  26 18 20 52 53 42 20 20  |ASR #4.4&. RSB  |
00006a60  20 20 20 52 33 2c 52 33  2c 20 23 32 35 36 0d 34  |   R3,R3, #256.4|
00006a70  30 1c 20 4c 44 52 20 20  20 20 20 52 34 2c 20 73  |0. LDR     R4, s|
00006a80  63 72 65 65 6e 73 74 6f  72 65 0d 34 3a 19 20 4d  |creenstore.4:. M|
00006a90  4f 56 20 20 20 20 20 52  35 2c 20 23 79 5f 73 68  |OV     R5, #y_sh|
00006aa0  69 66 74 0d 34 44 15 20  41 44 44 20 20 20 20 20  |ift.4D. ADD     |
00006ab0  52 34 2c 52 34 2c 52 32  0d 34 4e 18 20 4d 4c 41  |R4,R4,R2.4N. MLA|
00006ac0  20 20 20 20 20 52 34 2c  52 35 2c 52 33 2c 52 34  |     R4,R5,R3,R4|
00006ad0  0d 34 58 14 20 4c 44 52  42 20 20 20 20 52 30 2c  |.4X. LDRB    R0,|
00006ae0  5b 52 34 5d 0d 34 62 13  20 43 4d 50 20 20 20 20  |[R4].4b. CMP    |
00006af0  20 52 30 2c 20 23 30 0d  34 6c 11 20 ec 51 20 20  | R0, #0.4l. .Q  |
00006b00  20 52 31 30 2c 20 23 31  0d 34 76 14 20 4d 4f 56  | R10, #1.4v. MOV|
00006b10  4e 45 20 20 20 52 31 30  2c 20 23 30 0d 34 80 13  |NE   R10, #0.4..|
00006b20  20 42 4e 45 20 20 20 20  20 6e 6f 5f 67 75 6e 0d  | BNE     no_gun.|
00006b30  34 8a 18 20 52 53 42 20  20 20 20 20 52 33 2c 52  |4.. RSB     R3,R|
00006b40  33 2c 20 23 32 35 36 0d  34 94 12 20 4d 4f 56 20  |3, #256.4.. MOV |
00006b50  20 20 20 20 52 30 2c 52  37 0d 34 9e 16 20 53 55  |    R0,R7.4.. SU|
00006b60  42 20 20 20 20 20 52 31  2c 52 32 2c 20 23 32 0d  |B     R1,R2, #2.|
00006b70  34 a8 16 20 53 55 42 20  20 20 20 20 52 32 2c 52  |4.. SUB     R2,R|
00006b80  33 2c 20 23 32 0d 34 b2  1d 20 42 4c 20 20 20 20  |3, #2.4.. BL    |
00006b90  20 20 70 6c 6f 74 5f 73  70 72 69 74 65 5f 30 38  |  plot_sprite_08|
00006ba0  30 34 0d 34 bc 1d 3b 4c  44 52 20 20 20 20 20 52  |04.4..;LDR     R|
00006bb0  30 2c 20 61 64 72 5f 67  75 6e 5f 66 61 64 65 0d  |0, adr_gun_fade.|
00006bc0  34 c6 15 3b 4d 4f 56 20  20 20 20 20 52 39 2c 20  |4..;MOV     R9, |
00006bd0  23 32 35 35 0d 34 d0 17  3b 4c 44 52 42 20 20 20  |#255.4..;LDRB   |
00006be0  20 52 30 2c 5b 52 30 2c  52 39 5d 0d 34 da 14 3b  | R0,[R0,R9].4..;|
00006bf0  53 54 52 42 20 20 20 20  52 30 2c 5b 52 34 5d 0d  |STRB    R0,[R4].|
00006c00  34 e4 0c 20 2e 6e 6f 5f  67 75 6e 0d 34 ee 06 20  |4.. .no_gun.4.. |
00006c10  3a 0d 34 f8 19 20 4c 44  4d 46 44 20 20 20 52 31  |:.4.. LDMFD   R1|
00006c20  33 21 2c 7b 52 31 2d 52  36 7d 0d 35 02 14 20 43  |3!,{R1-R6}.5.. C|
00006c30  4d 50 20 20 20 20 20 52  31 30 2c 20 23 30 0d 35  |MP     R10, #0.5|
00006c40  0c 10 20 ec 51 20 20 20  52 31 2c 20 23 30 0d 35  |.. .Q   R1, #0.5|
00006c50  16 19 20 4c 44 4d 46 44  20 20 20 52 31 33 21 2c  |.. LDMFD   R13!,|
00006c60  7b 52 39 2c 50 43 7d 0d  35 20 06 20 3a 0d 35 2a  |{R9,PC}.5 . :.5*|
00006c70  0c 20 2e 6d 6f 72 74 61  72 0d 35 34 1a 20 53 54  |. .mortar.54. ST|
00006c80  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 39 2c 52  |MFD   R13!,{R9,R|
00006c90  31 34 7d 0d 35 3e 06 20  3a 0d 35 48 16 20 53 55  |14}.5>. :.5H. SU|
00006ca0  42 20 20 20 20 20 52 35  2c 52 35 2c 20 23 31 0d  |B     R5,R5, #1.|
00006cb0  35 52 14 20 4d 4f 56 20  20 20 20 20 52 30 2c 20  |5R. MOV     R0, |
00006cc0  23 33 32 0d 35 5c 16 20  52 53 42 20 20 20 20 20  |#32.5\. RSB     |
00006cd0  52 30 2c 52 30 2c 20 23  30 0d 35 66 12 20 43 4d  |R0,R0, #0.5f. CM|
00006ce0  50 20 20 20 20 20 52 35  2c 52 30 0d 35 70 12 20  |P     R5,R0.5p. |
00006cf0  4d 4f 56 4c 54 20 20 20  52 35 2c 52 30 0d 35 7a  |MOVLT   R5,R0.5z|
00006d00  15 20 41 44 44 20 20 20  20 20 52 32 2c 52 32 2c  |. ADD     R2,R2,|
00006d10  52 34 0d 35 84 15 20 41  44 44 20 20 20 20 20 52  |R4.5.. ADD     R|
00006d20  33 2c 52 33 2c 52 35 0d  35 8e 06 20 3a 0d 35 98  |3,R3,R5.5.. :.5.|
00006d30  19 20 53 54 4d 46 44 20  20 20 52 31 33 21 2c 7b  |. STMFD   R13!,{|
00006d40  52 31 2d 52 36 7d 0d 35  a2 06 20 3a 0d 35 ac 18  |R1-R6}.5.. :.5..|
00006d50  20 42 4c 20 20 20 20 20  20 63 68 65 63 6b 5f 64  | BL      check_d|
00006d60  65 61 74 68 0d 35 b6 06  20 3a 0d 35 c0 1a 20 4d  |eath.5.. :.5.. M|
00006d70  4f 56 20 20 20 20 20 52  32 2c 52 32 2c 20 41 53  |OV     R2,R2, AS|
00006d80  52 20 23 34 0d 35 ca 1a  20 4d 4f 56 20 20 20 20  |R #4.5.. MOV    |
00006d90  20 52 33 2c 52 33 2c 20  41 53 52 20 23 34 0d 35  | R3,R3, ASR #4.5|
00006da0  d4 18 20 52 53 42 20 20  20 20 20 52 33 2c 52 33  |.. RSB     R3,R3|
00006db0  2c 20 23 32 35 36 0d 35  de 1c 20 4c 44 52 20 20  |, #256.5.. LDR  |
00006dc0  20 20 20 52 34 2c 20 73  63 72 65 65 6e 73 74 6f  |   R4, screensto|
00006dd0  72 65 0d 35 e8 19 20 4d  4f 56 20 20 20 20 20 52  |re.5.. MOV     R|
00006de0  35 2c 20 23 79 5f 73 68  69 66 74 0d 35 f2 15 20  |5, #y_shift.5.. |
00006df0  41 44 44 20 20 20 20 20  52 34 2c 52 34 2c 52 32  |ADD     R4,R4,R2|
00006e00  0d 35 fc 18 20 4d 4c 41  20 20 20 20 20 52 34 2c  |.5.. MLA     R4,|
00006e10  52 35 2c 52 33 2c 52 34  0d 36 06 14 20 4c 44 52  |R5,R3,R4.6.. LDR|
00006e20  42 20 20 20 20 52 30 2c  5b 52 34 5d 0d 36 10 13  |B    R0,[R4].6..|
00006e30  20 43 4d 50 20 20 20 20  20 52 30 2c 20 23 30 0d  | CMP     R0, #0.|
00006e40  36 1a 11 20 ec 51 20 20  20 52 31 30 2c 20 23 31  |6.. .Q   R10, #1|
00006e50  0d 36 24 14 20 4d 4f 56  4e 45 20 20 20 52 31 30  |.6$. MOVNE   R10|
00006e60  2c 20 23 30 0d 36 2e 12  20 ec 51 20 20 20 52 30  |, #0.6.. .Q   R0|
00006e70  2c 20 23 32 35 35 0d 36  38 14 20 53 54 52 45 51  |, #255.68. STREQ|
00006e80  42 20 20 52 30 2c 5b 52  34 5d 0d 36 42 18 20 53  |B  R0,[R4].6B. S|
00006e90  54 52 45 51 42 20 20 52  30 2c 5b 52 34 2c 20 23  |TREQB  R0,[R4, #|
00006ea0  31 5d 0d 36 4c 1c 20 41  44 44 20 20 20 20 20 52  |1].6L. ADD     R|
00006eb0  32 2c 52 34 2c 20 23 79  5f 73 68 69 66 74 0d 36  |2,R4, #y_shift.6|
00006ec0  56 14 20 53 54 52 45 51  42 20 20 52 30 2c 5b 52  |V. STREQB  R0,[R|
00006ed0  32 5d 0d 36 60 18 20 53  54 52 45 51 42 20 20 52  |2].6`. STREQB  R|
00006ee0  30 2c 5b 52 32 2c 20 23  31 5d 0d 36 6a 06 20 3a  |0,[R2, #1].6j. :|
00006ef0  0d 36 74 19 20 4c 44 4d  46 44 20 20 20 52 31 33  |.6t. LDMFD   R13|
00006f00  21 2c 7b 52 31 2d 52 36  7d 0d 36 7e 14 20 43 4d  |!,{R1-R6}.6~. CM|
00006f10  50 20 20 20 20 20 52 31  30 2c 20 23 30 0d 36 88  |P     R10, #0.6.|
00006f20  17 20 42 4e 45 20 20 20  20 20 65 6e 64 5f 6d 6f  |. BNE     end_mo|
00006f30  72 74 61 72 0d 36 92 1d  20 53 55 42 20 20 20 20  |rtar.6.. SUB    |
00006f40  20 52 32 2c 52 32 2c 52  34 2c 20 41 53 4c 20 23  | R2,R2,R4, ASL #|
00006f50  31 0d 36 9c 1d 20 53 55  42 20 20 20 20 20 52 33  |1.6.. SUB     R3|
00006f60  2c 52 33 2c 52 35 2c 20  41 53 4c 20 23 31 0d 36  |,R3,R5, ASL #1.6|
00006f70  a6 1a 20 4d 4f 56 20 20  20 20 20 52 31 2c 52 32  |.. MOV     R1,R2|
00006f80  2c 20 41 53 52 20 23 34  0d 36 b0 1a 20 4d 4f 56  |, ASR #4.6.. MOV|
00006f90  20 20 20 20 20 52 32 2c  52 33 2c 20 41 53 52 20  |     R2,R3, ASR |
00006fa0  23 34 0d 36 ba 18 20 52  53 42 20 20 20 20 20 52  |#4.6.. RSB     R|
00006fb0  32 2c 52 32 2c 20 23 32  35 36 0d 36 c4 13 20 4d  |2,R2, #256.6.. M|
00006fc0  4f 56 20 20 20 20 20 52  39 2c 20 23 30 0d 36 ce  |OV     R9, #0.6.|
00006fd0  25 20 4c 44 52 20 20 20  20 20 52 31 30 2c 20 61  |% LDR     R10, a|
00006fe0  64 72 5f 65 78 70 6c 6f  73 69 6f 6e 5f 73 70 72  |dr_explosion_spr|
00006ff0  61 79 0d 36 d8 13 20 4d  4f 56 20 20 20 20 20 52  |ay.6.. MOV     R|
00007000  30 2c 20 23 38 0d 36 e2  14 20 4c 44 52 20 20 20  |0, #8.6.. LDR   |
00007010  20 20 52 38 2c 20 72 6e  64 0d 36 ec 14 20 80 20  |  R8, rnd.6.. . |
00007020  20 20 20 20 52 38 2c 52  38 2c 20 23 37 0d 36 f6  |    R8,R8, #7.6.|
00007030  17 20 4d 4f 56 20 20 20  20 20 52 36 2c 20 23 31  |. MOV     R6, #1|
00007040  36 3c 3c 38 0d 37 00 14  20 4d 4f 56 20 20 20 20  |6<<8.7.. MOV    |
00007050  20 52 35 2c 20 23 33 32  0d 37 0a 12 20 2e 6d 6f  | R5, #32.7.. .mo|
00007060  72 74 61 72 5f 6c 6f 6f  70 31 0d 37 14 19 20 4c  |rtar_loop1.7.. L|
00007070  44 52 42 20 20 20 20 52  33 2c 5b 52 31 30 5d 2c  |DRB    R3,[R10],|
00007080  20 23 31 0d 37 1e 19 20  4c 44 52 42 20 20 20 20  | #1.7.. LDRB    |
00007090  52 34 2c 5b 52 31 30 5d  2c 20 23 31 0d 37 28 1b  |R4,[R10], #1.7(.|
000070a0  20 4d 4f 56 20 20 20 20  20 52 33 2c 52 33 2c 20  | MOV     R3,R3, |
000070b0  4c 53 4c 20 23 32 34 0d  37 32 1b 20 4d 4f 56 20  |LSL #24.72. MOV |
000070c0  20 20 20 20 52 34 2c 52  34 2c 20 4c 53 4c 20 23  |    R4,R4, LSL #|
000070d0  32 34 0d 37 3c 1b 20 4d  4f 56 20 20 20 20 20 52  |24.7<. MOV     R|
000070e0  33 2c 52 33 2c 20 41 53  52 20 23 32 34 0d 37 46  |3,R3, ASR #24.7F|
000070f0  1b 20 4d 4f 56 20 20 20  20 20 52 34 2c 52 34 2c  |. MOV     R4,R4,|
00007100  20 41 53 52 20 23 32 34  0d 37 50 14 20 82 20 20  | ASR #24.7P. .  |
00007110  20 20 20 52 33 2c 52 33  2c 20 52 38 0d 37 5a 14  |   R3,R3, R8.7Z.|
00007120  20 82 20 20 20 20 20 52  34 2c 52 34 2c 20 52 38  | .     R4,R4, R8|
00007130  0d 37 64 1d 20 41 44 44  20 20 20 20 20 52 36 2c  |.7d. ADD     R6,|
00007140  52 36 2c 52 33 2c 20 41  53 4c 20 23 38 0d 37 6e  |R6,R3, ASL #8.7n|
00007150  1d 20 41 44 44 20 20 20  20 20 52 36 2c 52 36 2c  |. ADD     R6,R6,|
00007160  52 34 2c 20 41 53 4c 20  23 38 0d 37 78 18 20 80  |R4, ASL #8.7x. .|
00007170  20 20 20 20 20 52 36 2c  52 36 2c 20 23 33 31 3c  |     R6,R6, #31<|
00007180  3c 38 0d 37 82 15 20 42  4c 20 20 20 20 20 20 61  |<8.7.. BL      a|
00007190  64 64 5f 63 65 6c 6c 0d  37 8c 14 20 43 4d 50 20  |dd_cell.7.. CMP |
000071a0  20 20 20 20 52 39 2c 20  23 31 36 0d 37 96 10 20  |    R9, #16.7.. |
000071b0  ec 51 20 20 20 52 30 2c  20 23 39 0d 37 a0 12 20  |.Q   R0, #9.7.. |
000071c0  4d 4f 56 47 45 20 20 20  52 35 2c 52 36 0d 37 aa  |MOVGE   R5,R6.7.|
000071d0  16 20 41 44 44 20 20 20  20 20 52 39 2c 52 39 2c  |. ADD     R9,R9,|
000071e0  20 23 31 0d 37 b4 14 20  43 4d 50 20 20 20 20 20  | #1.7.. CMP     |
000071f0  52 39 2c 20 23 36 34 0d  37 be 19 20 42 4c 45 20  |R9, #64.7.. BLE |
00007200  20 20 20 20 6d 6f 72 74  61 72 5f 6c 6f 6f 70 31  |    mortar_loop1|
00007210  0d 37 c8 13 20 4d 4f 56  20 20 20 20 20 52 35 2c  |.7.. MOV     R5,|
00007220  20 23 31 0d 37 d2 13 20  4d 4f 56 20 20 20 20 20  | #1.7.. MOV     |
00007230  52 30 2c 20 23 31 0d 37  dc 14 20 4d 56 4e 20 20  |R0, #1.7.. MVN  |
00007240  20 20 20 52 31 2c 20 23  31 34 0d 37 e6 1c 20 4d  |   R1, #14.7.. M|
00007250  4f 56 20 20 20 20 20 52  32 2c 20 23 65 78 70 6c  |OV     R2, #expl|
00007260  6f 73 69 6f 6e 25 0d 37  f0 13 20 4d 4f 56 20 20  |osion%.7.. MOV  |
00007270  20 20 20 52 33 2c 20 23  30 0d 37 fa 1c 20 53 57  |   R3, #0.7.. SW|
00007280  49 20 20 20 20 20 22 53  6f 75 6e 64 5f 43 6f 6e  |I     "Sound_Con|
00007290  74 72 6f 6c 22 0d 38 04  13 20 4d 4f 56 20 20 20  |trol".8.. MOV   |
000072a0  20 20 52 31 2c 20 23 30  0d 38 0e 10 20 2e 65 6e  |  R1, #0.8.. .en|
000072b0  64 5f 6d 6f 72 74 61 72  0d 38 18 06 20 3a 0d 38  |d_mortar.8.. :.8|
000072c0  22 19 20 4c 44 4d 46 44  20 20 20 52 31 33 21 2c  |". LDMFD   R13!,|
000072d0  7b 52 39 2c 50 43 7d 0d  38 2c 06 20 3a 0d 38 36  |{R9,PC}.8,. :.86|
000072e0  0a 20 2e 67 6c 75 65 0d  38 40 1a 20 53 54 4d 46  |. .glue.8@. STMF|
000072f0  44 20 20 20 52 31 33 21  2c 7b 52 39 2c 52 31 34  |D   R13!,{R9,R14|
00007300  7d 0d 38 4a 06 20 3a 0d  38 54 16 20 53 55 42 20  |}.8J. :.8T. SUB |
00007310  20 20 20 20 52 35 2c 52  35 2c 20 23 31 0d 38 5e  |    R5,R5, #1.8^|
00007320  15 20 4d 4f 56 20 20 20  20 20 52 30 2c 20 23 32  |. MOV     R0, #2|
00007330  35 36 0d 38 68 16 20 52  53 42 20 20 20 20 20 52  |56.8h. RSB     R|
00007340  30 2c 52 30 2c 20 23 30  0d 38 72 12 20 43 4d 50  |0,R0, #0.8r. CMP|
00007350  20 20 20 20 20 52 35 2c  52 30 0d 38 7c 12 20 4d  |     R5,R0.8|. M|
00007360  4f 56 4c 54 20 20 20 52  35 2c 52 30 0d 38 86 15  |OVLT   R5,R0.8..|
00007370  20 41 44 44 20 20 20 20  20 52 32 2c 52 32 2c 52  | ADD     R2,R2,R|
00007380  34 0d 38 90 1d 20 41 44  44 20 20 20 20 20 52 33  |4.8.. ADD     R3|
00007390  2c 52 33 2c 52 35 2c 20  41 53 52 20 23 33 0d 38  |,R3,R5, ASR #3.8|
000073a0  9a 06 20 3a 0d 38 a4 19  20 53 54 4d 46 44 20 20  |.. :.8.. STMFD  |
000073b0  20 52 31 33 21 2c 7b 52  31 2d 52 36 7d 0d 38 ae  | R13!,{R1-R6}.8.|
000073c0  06 20 3a 0d 38 b8 1a 20  4d 4f 56 20 20 20 20 20  |. :.8.. MOV     |
000073d0  52 32 2c 52 32 2c 20 41  53 52 20 23 34 0d 38 c2  |R2,R2, ASR #4.8.|
000073e0  1a 20 4d 4f 56 20 20 20  20 20 52 33 2c 52 33 2c  |. MOV     R3,R3,|
000073f0  20 41 53 52 20 23 34 0d  38 cc 18 20 52 53 42 20  | ASR #4.8.. RSB |
00007400  20 20 20 20 52 33 2c 52  33 2c 20 23 32 35 36 0d  |    R3,R3, #256.|
00007410  38 d6 1c 20 4c 44 52 20  20 20 20 20 52 34 2c 20  |8.. LDR     R4, |
00007420  73 63 72 65 65 6e 73 74  6f 72 65 0d 38 e0 19 20  |screenstore.8.. |
00007430  4d 4f 56 20 20 20 20 20  52 35 2c 20 23 79 5f 73  |MOV     R5, #y_s|
00007440  68 69 66 74 0d 38 ea 15  20 41 44 44 20 20 20 20  |hift.8.. ADD    |
00007450  20 52 34 2c 52 34 2c 52  32 0d 38 f4 18 20 4d 4c  | R4,R4,R2.8.. ML|
00007460  41 20 20 20 20 20 52 34  2c 52 35 2c 52 33 2c 52  |A     R4,R5,R3,R|
00007470  34 0d 38 fe 14 20 4c 44  52 42 20 20 20 20 52 30  |4.8.. LDRB    R0|
00007480  2c 5b 52 34 5d 0d 39 08  13 20 43 4d 50 20 20 20  |,[R4].9.. CMP   |
00007490  20 20 52 30 2c 20 23 30  0d 39 12 11 20 ec 51 20  |  R0, #0.9.. .Q |
000074a0  20 20 52 31 30 2c 20 23  31 0d 39 1c 14 20 4d 4f  |  R10, #1.9.. MO|
000074b0  56 4e 45 20 20 20 52 31  30 2c 20 23 30 0d 39 26  |VNE   R10, #0.9&|
000074c0  12 20 ec 51 20 20 20 52  30 2c 20 23 32 34 37 0d  |. .Q   R0, #247.|
000074d0  39 30 14 20 53 54 52 45  51 42 20 20 52 30 2c 5b  |90. STREQB  R0,[|
000074e0  52 34 5d 0d 39 3a 18 20  53 54 52 45 51 42 20 20  |R4].9:. STREQB  |
000074f0  52 30 2c 5b 52 34 2c 20  23 31 5d 0d 39 44 18 20  |R0,[R4, #1].9D. |
00007500  53 54 52 45 51 42 20 20  52 30 2c 5b 52 34 2c 20  |STREQB  R0,[R4, |
00007510  23 32 5d 0d 39 4e 18 20  53 54 52 45 51 42 20 20  |#2].9N. STREQB  |
00007520  52 30 2c 5b 52 34 2c 20  23 33 5d 0d 39 58 1c 20  |R0,[R4, #3].9X. |
00007530  53 55 42 20 20 20 20 20  52 34 2c 52 34 2c 20 23  |SUB     R4,R4, #|
00007540  79 5f 73 68 69 66 74 0d  39 62 14 20 53 54 52 45  |y_shift.9b. STRE|
00007550  51 42 20 20 52 30 2c 5b  52 34 5d 0d 39 6c 18 20  |QB  R0,[R4].9l. |
00007560  53 54 52 45 51 42 20 20  52 30 2c 5b 52 34 2c 20  |STREQB  R0,[R4, |
00007570  23 31 5d 0d 39 76 18 20  53 54 52 45 51 42 20 20  |#1].9v. STREQB  |
00007580  52 30 2c 5b 52 34 2c 20  23 32 5d 0d 39 80 18 20  |R0,[R4, #2].9.. |
00007590  53 54 52 45 51 42 20 20  52 30 2c 5b 52 34 2c 20  |STREQB  R0,[R4, |
000075a0  23 33 5d 0d 39 8a 1c 20  53 55 42 20 20 20 20 20  |#3].9.. SUB     |
000075b0  52 34 2c 52 34 2c 20 23  79 5f 73 68 69 66 74 0d  |R4,R4, #y_shift.|
000075c0  39 94 14 20 53 54 52 45  51 42 20 20 52 30 2c 5b  |9.. STREQB  R0,[|
000075d0  52 34 5d 0d 39 9e 18 20  53 54 52 45 51 42 20 20  |R4].9.. STREQB  |
000075e0  52 30 2c 5b 52 34 2c 20  23 31 5d 0d 39 a8 18 20  |R0,[R4, #1].9.. |
000075f0  53 54 52 45 51 42 20 20  52 30 2c 5b 52 34 2c 20  |STREQB  R0,[R4, |
00007600  23 32 5d 0d 39 b2 18 20  53 54 52 45 51 42 20 20  |#2].9.. STREQB  |
00007610  52 30 2c 5b 52 34 2c 20  23 33 5d 0d 39 bc 1c 20  |R0,[R4, #3].9.. |
00007620  53 55 42 20 20 20 20 20  52 34 2c 52 34 2c 20 23  |SUB     R4,R4, #|
00007630  79 5f 73 68 69 66 74 0d  39 c6 14 20 53 54 52 45  |y_shift.9.. STRE|
00007640  51 42 20 20 52 30 2c 5b  52 34 5d 0d 39 d0 18 20  |QB  R0,[R4].9.. |
00007650  53 54 52 45 51 42 20 20  52 30 2c 5b 52 34 2c 20  |STREQB  R0,[R4, |
00007660  23 31 5d 0d 39 da 18 20  53 54 52 45 51 42 20 20  |#1].9.. STREQB  |
00007670  52 30 2c 5b 52 34 2c 20  23 32 5d 0d 39 e4 18 20  |R0,[R4, #2].9.. |
00007680  53 54 52 45 51 42 20 20  52 30 2c 5b 52 34 2c 20  |STREQB  R0,[R4, |
00007690  23 33 5d 0d 39 ee 06 20  3a 0d 39 f8 19 20 4c 44  |#3].9.. :.9.. LD|
000076a0  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 31 2d 52  |MFD   R13!,{R1-R|
000076b0  36 7d 0d 3a 02 14 20 43  4d 50 20 20 20 20 20 52  |6}.:.. CMP     R|
000076c0  31 30 2c 20 23 30 0d 3a  0c 15 20 53 55 42 45 51  |10, #0.:.. SUBEQ|
000076d0  20 20 20 52 32 2c 52 32  2c 52 34 0d 3a 16 1d 20  |   R2,R2,R4.:.. |
000076e0  53 55 42 45 51 20 20 20  52 33 2c 52 33 2c 52 35  |SUBEQ   R3,R3,R5|
000076f0  2c 20 41 53 52 20 23 33  0d 3a 20 10 20 ec 51 20  |, ASR #3.: . .Q |
00007700  20 20 52 34 2c 20 23 30  0d 3a 2a 10 20 ec 51 20  |  R4, #0.:*. .Q |
00007710  20 20 52 35 2c 20 23 31  0d 3a 34 13 20 43 4d 50  |  R5, #1.:4. CMP|
00007720  45 51 20 20 20 52 36 2c  20 23 30 0d 3a 3e 12 20  |EQ   R6, #0.:>. |
00007730  ec 51 20 20 20 52 36 2c  20 23 32 35 36 0d 3a 48  |.Q   R6, #256.:H|
00007740  13 20 43 4d 50 20 20 20  20 20 52 36 2c 20 23 31  |. CMP     R6, #1|
00007750  0d 3a 52 16 20 53 55 42  47 54 20 20 20 52 36 2c  |.:R. SUBGT   R6,|
00007760  52 36 2c 20 23 31 0d 3a  5c 10 20 ec 51 20 20 20  |R6, #1.:\. .Q   |
00007770  52 31 2c 20 23 30 0d 3a  66 0e 20 2e 65 6e 64 5f  |R1, #0.:f. .end_|
00007780  67 6c 75 65 0d 3a 70 06  20 3a 0d 3a 7a 19 20 4c  |glue.:p. :.:z. L|
00007790  44 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 39 2c  |DMFD   R13!,{R9,|
000077a0  50 43 7d 0d 3a 84 06 20  3a 0d 3a 8e 19 20 2e 61  |PC}.:.. :.:.. .a|
000077b0  64 72 5f 65 78 70 6c 6f  73 69 6f 6e 5f 73 70 72  |dr_explosion_spr|
000077c0  61 79 0d 3a 98 1c 20 45  51 55 44 20 20 20 20 65  |ay.:.. EQUD    e|
000077d0  78 70 6c 6f 73 69 6f 6e  5f 73 70 72 61 79 0d 3a  |xplosion_spray.:|
000077e0  a2 06 20 3a 0d 3a ac 0a  20 2e 62 6f 6d 62 0d 3a  |.. :.:.. .bomb.:|
000077f0  b6 1a 20 53 54 4d 46 44  20 20 20 52 31 33 21 2c  |.. STMFD   R13!,|
00007800  7b 52 39 2c 52 31 34 7d  0d 3a c0 06 20 3a 0d 3a  |{R9,R14}.:.. :.:|
00007810  ca 15 20 4d 4f 56 20 20  20 20 20 52 30 2c 20 23  |.. MOV     R0, #|
00007820  32 35 36 0d 3a d4 16 20  52 53 42 20 20 20 20 20  |256.:.. RSB     |
00007830  52 30 2c 52 30 2c 20 23  30 0d 3a de 12 20 43 4d  |R0,R0, #0.:.. CM|
00007840  50 20 20 20 20 20 52 35  2c 52 30 0d 3a e8 12 20  |P     R5,R0.:.. |
00007850  4d 4f 56 4c 54 20 20 20  52 35 2c 52 30 0d 3a f2  |MOVLT   R5,R0.:.|
00007860  1d 20 41 44 44 20 20 20  20 20 52 32 2c 52 32 2c  |. ADD     R2,R2,|
00007870  52 34 2c 20 41 53 52 20  23 32 0d 3a fc 1d 20 41  |R4, ASR #2.:.. A|
00007880  44 44 20 20 20 20 20 52  33 2c 52 33 2c 52 35 2c  |DD     R3,R3,R5,|
00007890  20 41 53 52 20 23 32 0d  3b 06 13 20 43 4d 50 20  | ASR #2.;.. CMP |
000078a0  20 20 20 20 52 34 2c 20  23 30 0d 3b 10 16 20 41  |    R4, #0.;.. A|
000078b0  44 44 4c 54 20 20 20 52  34 2c 52 34 2c 20 23 31  |DDLT   R4,R4, #1|
000078c0  0d 3b 1a 16 20 53 55 42  47 54 20 20 20 52 34 2c  |.;.. SUBGT   R4,|
000078d0  52 34 2c 20 23 31 0d 3b  24 13 20 4d 4f 56 20 20  |R4, #1.;$. MOV  |
000078e0  20 20 20 52 31 30 2c 52  36 0d 3b 2e 06 20 3a 0d  |   R10,R6.;.. :.|
000078f0  3b 38 19 20 53 54 4d 46  44 20 20 20 52 31 33 21  |;8. STMFD   R13!|
00007900  2c 7b 52 31 2d 52 36 7d  0d 3b 42 06 20 3a 0d 3b  |,{R1-R6}.;B. :.;|
00007910  4c 1a 20 4d 4f 56 20 20  20 20 20 52 32 2c 52 32  |L. MOV     R2,R2|
00007920  2c 20 41 53 52 20 23 34  0d 3b 56 1a 20 4d 4f 56  |, ASR #4.;V. MOV|
00007930  20 20 20 20 20 52 33 2c  52 33 2c 20 41 53 52 20  |     R3,R3, ASR |
00007940  23 34 0d 3b 60 18 20 52  53 42 20 20 20 20 20 52  |#4.;`. RSB     R|
00007950  33 2c 52 33 2c 20 23 32  35 36 0d 3b 6a 20 20 4c  |3,R3, #256.;j  L|
00007960  44 52 20 20 20 20 20 52  34 2c 20 61 64 72 5f 73  |DR     R4, adr_s|
00007970  63 72 65 65 6e 73 74 6f  72 65 0d 3b 74 14 20 4c  |creenstore.;t. L|
00007980  44 52 20 20 20 20 20 52  34 2c 5b 52 34 5d 0d 3b  |DR     R4,[R4].;|
00007990  7e 19 20 4d 4f 56 20 20  20 20 20 52 35 2c 20 23  |~. MOV     R5, #|
000079a0  79 5f 73 68 69 66 74 0d  3b 88 15 20 41 44 44 20  |y_shift.;.. ADD |
000079b0  20 20 20 20 52 34 2c 52  34 2c 52 32 0d 3b 92 18  |    R4,R4,R2.;..|
000079c0  20 4d 4c 41 20 20 20 20  20 52 34 2c 52 35 2c 52  | MLA     R4,R5,R|
000079d0  33 2c 52 34 0d 3b 9c 1c  20 41 44 44 20 20 20 20  |3,R4.;.. ADD    |
000079e0  20 52 30 2c 52 34 2c 20  23 79 5f 73 68 69 66 74  | R0,R4, #y_shift|
000079f0  0d 3b a6 14 20 4c 44 52  42 20 20 20 20 52 30 2c  |.;.. LDRB    R0,|
00007a00  5b 52 30 5d 0d 3b b0 13  20 43 4d 50 20 20 20 20  |[R0].;.. CMP    |
00007a10  20 52 30 2c 20 23 30 0d  3b ba 18 20 53 55 42 4e  | R0, #0.;.. SUBN|
00007a20  45 20 20 20 52 31 30 2c  52 31 30 2c 20 23 31 0d  |E   R10,R10, #1.|
00007a30  3b c4 1b 20 4d 4f 56 20  20 20 20 20 52 30 2c 20  |;.. MOV     R0, |
00007a40  23 25 30 30 30 31 30 31  31 31 0d 3b ce 1c 20 53  |#%00010111.;.. S|
00007a50  55 42 20 20 20 20 20 52  34 2c 52 34 2c 20 23 79  |UB     R4,R4, #y|
00007a60  5f 73 68 69 66 74 0d 3b  d8 18 20 53 54 52 42 20  |_shift.;.. STRB |
00007a70  20 20 20 52 30 2c 5b 52  34 2c 20 23 31 5d 0d 3b  |   R0,[R4, #1].;|
00007a80  e2 1c 20 41 44 44 20 20  20 20 20 52 34 2c 52 34  |.. ADD     R4,R4|
00007a90  2c 20 23 79 5f 73 68 69  66 74 0d 3b ec 14 20 53  |, #y_shift.;.. S|
00007aa0  54 52 42 20 20 20 20 52  30 2c 5b 52 34 5d 0d 3b  |TRB    R0,[R4].;|
00007ab0  f6 18 20 53 54 52 42 20  20 20 20 52 30 2c 5b 52  |.. STRB    R0,[R|
00007ac0  34 2c 20 23 31 5d 0d 3c  00 18 20 53 54 52 42 20  |4, #1].<.. STRB |
00007ad0  20 20 20 52 30 2c 5b 52  34 2c 20 23 32 5d 0d 3c  |   R0,[R4, #2].<|
00007ae0  0a 06 20 3a 0d 3c 14 19  20 4c 44 4d 46 44 20 20  |.. :.<.. LDMFD  |
00007af0  20 52 31 33 21 2c 7b 52  31 2d 52 36 7d 0d 3c 1e  | R13!,{R1-R6}.<.|
00007b00  20 20 43 4d 50 20 20 20  20 20 52 31 30 2c 20 23  |  CMP     R10, #|
00007b10  62 6f 6d 62 5f 70 61 75  73 65 25 2d 31 0d 3c 28  |bomb_pause%-1.<(|
00007b20  16 20 41 44 44 45 51 20  20 20 52 33 2c 52 33 2c  |. ADDEQ   R3,R3,|
00007b30  20 23 34 0d 3c 32 13 20  43 4d 50 20 20 20 20 20  | #4.<2. CMP     |
00007b40  52 31 30 2c 52 36 0d 3c  3c 15 20 53 55 42 4c 54  |R10,R6.<<. SUBLT|
00007b50  20 20 20 52 32 2c 52 32  2c 52 34 0d 3c 46 1d 20  |   R2,R2,R4.<F. |
00007b60  53 55 42 4c 54 20 20 20  52 33 2c 52 33 2c 52 35  |SUBLT   R3,R3,R5|
00007b70  2c 20 41 53 52 20 23 32  0d 3c 50 13 20 4d 4f 56  |, ASR #2.<P. MOV|
00007b80  4c 54 20 20 20 52 34 2c  20 23 30 0d 3c 5a 13 20  |LT   R4, #0.<Z. |
00007b90  4d 4f 56 4c 54 20 20 20  52 35 2c 20 23 30 0d 3c  |MOVLT   R5, #0.<|
00007ba0  64 16 20 53 55 42 45 51  20 20 20 52 35 2c 52 35  |d. SUBEQ   R5,R5|
00007bb0  2c 20 23 34 0d 3c 6e 13  20 4d 4f 56 47 54 20 20  |, #4.<n. MOVGT  |
00007bc0  20 52 35 2c 20 23 30 0d  3c 78 13 20 4d 4f 56 20  | R5, #0.<x. MOV |
00007bd0  20 20 20 20 52 36 2c 52  31 30 0d 3c 82 13 20 43  |    R6,R10.<.. C|
00007be0  4d 50 20 20 20 20 20 52  36 2c 20 23 30 0d 3c 8c  |MP     R6, #0.<.|
00007bf0  15 20 42 4e 45 20 20 20  20 20 65 6e 64 5f 62 6f  |. BNE     end_bo|
00007c00  6d 62 0d 3c 96 1a 20 4d  4f 56 20 20 20 20 20 52  |mb.<.. MOV     R|
00007c10  31 2c 52 32 2c 20 41 53  52 20 23 34 0d 3c a0 1a  |1,R2, ASR #4.<..|
00007c20  20 4d 4f 56 20 20 20 20  20 52 32 2c 52 33 2c 20  | MOV     R2,R3, |
00007c30  41 53 52 20 23 34 0d 3c  aa 16 20 41 44 44 20 20  |ASR #4.<.. ADD  |
00007c40  20 20 20 52 32 2c 52 32  2c 20 23 32 0d 3c b4 18  |   R2,R2, #2.<..|
00007c50  20 52 53 42 20 20 20 20  20 52 32 2c 52 32 2c 20  | RSB     R2,R2, |
00007c60  23 32 35 36 0d 3c be 13  20 4d 4f 56 20 20 20 20  |#256.<.. MOV    |
00007c70  20 52 39 2c 20 23 30 0d  3c c8 13 20 4d 4f 56 20  | R9, #0.<.. MOV |
00007c80  20 20 20 20 52 30 2c 20  23 38 0d 3c d2 14 20 4c  |    R0, #8.<.. L|
00007c90  44 52 20 20 20 20 20 52  38 2c 20 72 6e 64 0d 3c  |DR     R8, rnd.<|
00007ca0  dc 14 20 80 20 20 20 20  20 52 38 2c 52 38 2c 20  |.. .     R8,R8, |
00007cb0  23 37 0d 3c e6 17 20 4d  4f 56 20 20 20 20 20 52  |#7.<.. MOV     R|
00007cc0  36 2c 20 23 31 36 3c 3c  38 0d 3c f0 14 20 4d 4f  |6, #16<<8.<.. MO|
00007cd0  56 20 20 20 20 20 52 35  2c 20 23 33 32 0d 3c fa  |V     R5, #32.<.|
00007ce0  21 20 41 44 52 20 20 20  20 20 52 31 30 2c 20 65  |! ADR     R10, e|
00007cf0  78 70 6c 6f 73 69 6f 6e  5f 73 70 72 61 79 0d 3d  |xplosion_spray.=|
00007d00  04 10 20 2e 62 6f 6d 62  5f 6c 6f 6f 70 31 0d 3d  |.. .bomb_loop1.=|
00007d10  0e 19 20 4c 44 52 42 20  20 20 20 52 33 2c 5b 52  |.. LDRB    R3,[R|
00007d20  31 30 5d 2c 20 23 31 0d  3d 18 19 20 4c 44 52 42  |10], #1.=.. LDRB|
00007d30  20 20 20 20 52 34 2c 5b  52 31 30 5d 2c 20 23 31  |    R4,[R10], #1|
00007d40  0d 3d 22 1b 20 4d 4f 56  20 20 20 20 20 52 33 2c  |.=". MOV     R3,|
00007d50  52 33 2c 20 4c 53 4c 20  23 32 34 0d 3d 2c 1b 20  |R3, LSL #24.=,. |
00007d60  4d 4f 56 20 20 20 20 20  52 34 2c 52 34 2c 20 4c  |MOV     R4,R4, L|
00007d70  53 4c 20 23 32 34 0d 3d  36 1b 20 4d 4f 56 20 20  |SL #24.=6. MOV  |
00007d80  20 20 20 52 33 2c 52 33  2c 20 41 53 52 20 23 32  |   R3,R3, ASR #2|
00007d90  34 0d 3d 40 1b 20 4d 4f  56 20 20 20 20 20 52 34  |4.=@. MOV     R4|
00007da0  2c 52 34 2c 20 41 53 52  20 23 32 34 0d 3d 4a 14  |,R4, ASR #24.=J.|
00007db0  20 82 20 20 20 20 20 52  33 2c 52 33 2c 20 52 38  | .     R3,R3, R8|
00007dc0  0d 3d 54 14 20 82 20 20  20 20 20 52 34 2c 52 34  |.=T. .     R4,R4|
00007dd0  2c 20 52 38 0d 3d 5e 1d  20 41 44 44 20 20 20 20  |, R8.=^. ADD    |
00007de0  20 52 36 2c 52 36 2c 52  33 2c 20 41 53 4c 20 23  | R6,R6,R3, ASL #|
00007df0  38 0d 3d 68 1d 20 41 44  44 20 20 20 20 20 52 36  |8.=h. ADD     R6|
00007e00  2c 52 36 2c 52 34 2c 20  41 53 4c 20 23 38 0d 3d  |,R6,R4, ASL #8.=|
00007e10  72 18 20 80 20 20 20 20  20 52 36 2c 52 36 2c 20  |r. .     R6,R6, |
00007e20  23 33 31 3c 3c 38 0d 3d  7c 1d 20 41 44 44 20 20  |#31<<8.=|. ADD  |
00007e30  20 20 20 52 33 2c 52 33  2c 52 33 2c 20 41 53 52  |   R3,R3,R3, ASR|
00007e40  20 23 31 0d 3d 86 1d 20  41 44 44 20 20 20 20 20  | #1.=.. ADD     |
00007e50  52 34 2c 52 34 2c 52 34  2c 20 41 53 52 20 23 31  |R4,R4,R4, ASR #1|
00007e60  0d 3d 90 15 20 42 4c 20  20 20 20 20 20 61 64 64  |.=.. BL      add|
00007e70  5f 63 65 6c 6c 0d 3d 9a  14 20 43 4d 50 20 20 20  |_cell.=.. CMP   |
00007e80  20 20 52 39 2c 20 23 32  34 0d 3d a4 10 20 ec 51  |  R9, #24.=.. .Q|
00007e90  20 20 20 52 30 2c 20 23  39 0d 3d ae 12 20 4d 4f  |   R0, #9.=.. MO|
00007ea0  56 47 45 20 20 20 52 35  2c 52 36 0d 3d b8 16 20  |VGE   R5,R6.=.. |
00007eb0  41 44 44 20 20 20 20 20  52 39 2c 52 39 2c 20 23  |ADD     R9,R9, #|
00007ec0  31 0d 3d c2 14 20 43 4d  50 20 20 20 20 20 52 39  |1.=.. CMP     R9|
00007ed0  2c 20 23 33 32 0d 3d cc  17 20 42 4c 45 20 20 20  |, #32.=.. BLE   |
00007ee0  20 20 62 6f 6d 62 5f 6c  6f 6f 70 31 0d 3d d6 13  |  bomb_loop1.=..|
00007ef0  20 4d 4f 56 20 20 20 20  20 52 35 2c 20 23 31 0d  | MOV     R5, #1.|
00007f00  3d e0 13 20 4d 4f 56 20  20 20 20 20 52 30 2c 20  |=.. MOV     R0, |
00007f10  23 31 0d 3d ea 14 20 4d  56 4e 20 20 20 20 20 52  |#1.=.. MVN     R|
00007f20  31 2c 20 23 31 34 0d 3d  f4 1c 20 4d 4f 56 20 20  |1, #14.=.. MOV  |
00007f30  20 20 20 52 32 2c 20 23  65 78 70 6c 6f 73 69 6f  |   R2, #explosio|
00007f40  6e 25 0d 3d fe 13 20 4d  4f 56 20 20 20 20 20 52  |n%.=.. MOV     R|
00007f50  33 2c 20 23 30 0d 3e 08  1c 20 53 57 49 20 20 20  |3, #0.>.. SWI   |
00007f60  20 20 22 53 6f 75 6e 64  5f 43 6f 6e 74 72 6f 6c  |  "Sound_Control|
00007f70  22 0d 3e 12 13 20 4d 4f  56 20 20 20 20 20 52 31  |".>.. MOV     R1|
00007f80  2c 20 23 30 0d 3e 1c 13  20 4d 4f 56 20 20 20 20  |, #0.>.. MOV    |
00007f90  20 52 35 2c 20 23 30 0d  3e 26 0e 20 2e 65 6e 64  | R5, #0.>&. .end|
00007fa0  5f 62 6f 6d 62 0d 3e 30  06 20 3a 0d 3e 3a 19 20  |_bomb.>0. :.>:. |
00007fb0  4c 44 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 39  |LDMFD   R13!,{R9|
00007fc0  2c 50 43 7d 0d 3e 44 06  20 3a 0d 3e 4e 16 20 2e  |,PC}.>D. :.>N. .|
00007fd0  61 64 72 5f 73 63 72 65  65 6e 73 74 6f 72 65 32  |adr_screenstore2|
00007fe0  0d 3e 58 18 20 45 51 55  44 20 20 20 20 73 63 72  |.>X. EQUD    scr|
00007ff0  65 65 6e 73 74 6f 72 65  0d 3e 62 06 20 3a 0d 3e  |eenstore.>b. :.>|
00008000  6c 0c 20 2e 68 6f 6d 69  6e 67 0d 3e 76 1a 20 53  |l. .homing.>v. S|
00008010  54 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 39 2c  |TMFD   R13!,{R9,|
00008020  52 31 34 7d 0d 3e 80 06  20 3a 0d 3e 8a 1a 3b 4d  |R14}.>.. :.>..;M|
00008030  4f 56 20 20 20 20 20 52  39 2c 52 36 2c 20 4c 53  |OV     R9,R6, LS|
00008040  52 20 23 38 0d 3e 94 16  3b 80 20 20 20 20 20 52  |R #8.>..;.     R|
00008050  39 2c 52 39 2c 20 23 32  35 35 0d 3e 9e 16 3b 53  |9,R9, #255.>..;S|
00008060  55 42 20 20 20 20 20 52  39 2c 52 39 2c 20 23 31  |UB     R9,R9, #1|
00008070  0d 3e a8 1b 3b 42 49 43  20 20 20 20 20 52 36 2c  |.>..;BIC     R6,|
00008080  52 36 2c 20 23 32 35 35  3c 3c 38 0d 3e b2 1c 3b  |R6, #255<<8.>..;|
00008090  84 52 20 20 20 20 20 52  36 2c 52 36 2c 52 39 2c  |.R     R6,R6,R9,|
000080a0  20 4c 53 4c 20 23 38 0d  3e bc 13 3b 43 4d 50 20  | LSL #8.>..;CMP |
000080b0  20 20 20 20 52 39 2c 20  23 30 0d 3e c6 10 3b ec  |    R9, #0.>..;.|
000080c0  51 20 20 20 52 31 2c 20  23 30 0d 3e d0 06 20 3a  |Q   R1, #0.>.. :|
000080d0  0d 3e da 13 20 54 53 54  20 20 20 20 20 52 36 2c  |.>.. TST     R6,|
000080e0  20 23 31 0d 3e e4 16 20  4c 44 52 45 51 20 20 20  | #1.>.. LDREQ   |
000080f0  52 31 30 2c 20 70 31 5f  78 0d 3e ee 16 20 4c 44  |R10, p1_x.>.. LD|
00008100  52 45 51 20 20 20 52 31  31 2c 20 70 31 5f 79 0d  |REQ   R11, p1_y.|
00008110  3e f8 16 20 4c 44 52 4e  45 20 20 20 52 31 30 2c  |>.. LDRNE   R10,|
00008120  20 70 32 5f 78 0d 3f 02  16 20 4c 44 52 4e 45 20  | p2_x.?.. LDRNE |
00008130  20 20 52 31 31 2c 20 70  32 5f 79 0d 3f 0c 1e 20  |  R11, p2_y.?.. |
00008140  41 44 44 20 20 20 20 20  52 31 30 2c 52 31 30 2c  |ADD     R10,R10,|
00008150  20 23 78 65 78 74 25 2f  32 0d 3f 16 1e 20 41 44  | #xext%/2.?.. AD|
00008160  44 20 20 20 20 20 52 31  31 2c 52 31 31 2c 20 23  |D     R11,R11, #|
00008170  79 65 78 74 25 2f 32 0d  3f 20 1b 20 43 4d 50 20  |yext%/2.? . CMP |
00008180  20 20 20 20 52 32 2c 52  31 30 2c 20 41 53 4c 20  |    R2,R10, ASL |
00008190  23 34 0d 3f 2a 16 20 53  55 42 47 54 20 20 20 52  |#4.?*. SUBGT   R|
000081a0  34 2c 52 34 2c 20 23 31  0d 3f 34 16 20 41 44 44  |4,R4, #1.?4. ADD|
000081b0  4c 54 20 20 20 52 34 2c  52 34 2c 20 23 31 0d 3f  |LT   R4,R4, #1.?|
000081c0  3e 1b 20 43 4d 50 20 20  20 20 20 52 33 2c 52 31  |>. CMP     R3,R1|
000081d0  31 2c 20 41 53 4c 20 23  34 0d 3f 48 16 20 53 55  |1, ASL #4.?H. SU|
000081e0  42 47 54 20 20 20 52 35  2c 52 35 2c 20 23 31 0d  |BGT   R5,R5, #1.|
000081f0  3f 52 16 20 41 44 44 4c  54 20 20 20 52 35 2c 52  |?R. ADDLT   R5,R|
00008200  35 2c 20 23 31 0d 3f 5c  23 20 4d 4f 56 20 20 20  |5, #1.?\# MOV   |
00008210  20 20 52 30 2c 20 23 6d  61 78 5f 68 6f 6d 69 6e  |  R0, #max_homin|
00008220  67 5f 73 70 65 65 64 25  0d 3f 66 12 20 43 4d 50  |g_speed%.?f. CMP|
00008230  20 20 20 20 20 52 34 2c  52 30 0d 3f 70 16 20 53  |     R4,R0.?p. S|
00008240  55 42 47 54 20 20 20 52  34 2c 52 30 2c 20 23 31  |UBGT   R4,R0, #1|
00008250  0d 3f 7a 16 20 52 53 42  20 20 20 20 20 52 30 2c  |.?z. RSB     R0,|
00008260  52 30 2c 20 23 30 0d 3f  84 12 20 43 4d 50 20 20  |R0, #0.?.. CMP  |
00008270  20 20 20 52 34 2c 52 30  0d 3f 8e 16 20 41 44 44  |   R4,R0.?.. ADD|
00008280  4c 54 20 20 20 52 34 2c  52 30 2c 20 23 31 0d 3f  |LT   R4,R0, #1.?|
00008290  98 23 20 4d 4f 56 20 20  20 20 20 52 30 2c 20 23  |.# MOV     R0, #|
000082a0  6d 61 78 5f 68 6f 6d 69  6e 67 5f 73 70 65 65 64  |max_homing_speed|
000082b0  25 0d 3f a2 12 20 43 4d  50 20 20 20 20 20 52 35  |%.?.. CMP     R5|
000082c0  2c 52 30 0d 3f ac 16 20  53 55 42 47 54 20 20 20  |,R0.?.. SUBGT   |
000082d0  52 35 2c 52 30 2c 20 23  31 0d 3f b6 16 20 52 53  |R5,R0, #1.?.. RS|
000082e0  42 20 20 20 20 20 52 30  2c 52 30 2c 20 23 30 0d  |B     R0,R0, #0.|
000082f0  3f c0 12 20 43 4d 50 20  20 20 20 20 52 35 2c 52  |?.. CMP     R5,R|
00008300  30 0d 3f ca 16 20 41 44  44 4c 54 20 20 20 52 35  |0.?.. ADDLT   R5|
00008310  2c 52 30 2c 20 23 31 0d  3f d4 15 20 41 44 44 20  |,R0, #1.?.. ADD |
00008320  20 20 20 20 52 32 2c 52  32 2c 52 34 0d 3f de 15  |    R2,R2,R4.?..|
00008330  20 41 44 44 20 20 20 20  20 52 33 2c 52 33 2c 52  | ADD     R3,R3,R|
00008340  35 0d 3f e8 13 20 4d 4f  56 20 20 20 20 20 52 37  |5.?.. MOV     R7|
00008350  2c 20 23 30 0d 3f f2 14  20 43 4d 4e 20 20 20 20  |, #0.?.. CMN    |
00008360  20 52 34 2c 20 23 31 30  0d 3f fc 16 20 41 44 44  | R4, #10.?.. ADD|
00008370  4c 54 20 20 20 52 37 2c  52 37 2c 20 23 32 0d 40  |LT   R7,R7, #2.@|
00008380  06 14 20 43 4d 50 20 20  20 20 20 52 34 2c 20 23  |.. CMP     R4, #|
00008390  31 30 0d 40 10 16 20 41  44 44 47 54 20 20 20 52  |10.@.. ADDGT   R|
000083a0  37 2c 52 37 2c 20 23 34  0d 40 1a 14 20 43 4d 4e  |7,R7, #4.@.. CMN|
000083b0  20 20 20 20 20 52 35 2c  20 23 31 30 0d 40 24 17  |     R5, #10.@$.|
000083c0  20 41 44 44 4c 54 20 20  20 52 37 2c 52 37 2c 20  | ADDLT   R7,R7, |
000083d0  23 31 32 0d 40 2e 14 20  43 4d 50 20 20 20 20 20  |#12.@.. CMP     |
000083e0  52 35 2c 20 23 31 30 0d  40 38 16 20 41 44 44 47  |R5, #10.@8. ADDG|
000083f0  54 20 20 20 52 37 2c 52  37 2c 20 23 36 0d 40 42  |T   R7,R7, #6.@B|
00008400  06 20 3a 0d 40 4c 16 20  41 44 44 20 20 20 20 20  |. :.@L. ADD     |
00008410  52 37 2c 52 37 2c 20 23  33 0d 40 56 17 20 80 20  |R7,R7, #3.@V. . |
00008420  20 20 20 20 52 30 2c 52  36 2c 20 23 25 31 31 30  |    R0,R6, #%110|
00008430  0d 40 60 1a 20 4d 4f 56  20 20 20 20 20 52 30 2c  |.@`. MOV     R0,|
00008440  52 30 2c 20 41 53 52 20  23 31 0d 40 6a 16 20 41  |R0, ASR #1.@j. A|
00008450  44 44 20 20 20 20 20 52  30 2c 52 30 2c 20 23 31  |DD     R0,R0, #1|
00008460  0d 40 74 16 20 80 20 20  20 20 20 52 30 2c 52 30  |.@t. .     R0,R0|
00008470  2c 20 23 25 31 31 0d 40  7e 14 20 43 4d 50 20 20  |, #%11.@~. CMP  |
00008480  20 20 20 52 30 2c 20 23  25 31 0d 40 88 16 20 41  |   R0, #%1.@.. A|
00008490  44 44 47 54 20 20 20 52  37 2c 52 37 2c 20 23 31  |DDGT   R7,R7, #1|
000084a0  0d 40 92 19 20 42 49 43  20 20 20 20 20 52 36 2c  |.@.. BIC     R6,|
000084b0  52 36 2c 20 23 25 31 31  30 0d 40 9c 1c 20 84 52  |R6, #%110.@.. .R|
000084c0  20 20 20 20 20 52 36 2c  52 36 2c 52 30 2c 20 41  |     R6,R6,R0, A|
000084d0  53 4c 20 23 31 0d 40 a6  13 20 43 4d 50 20 20 20  |SL #1.@.. CMP   |
000084e0  20 20 52 37 2c 20 23 35  0d 40 b0 14 20 4d 4f 56  |  R7, #5.@.. MOV|
000084f0  4c 54 20 20 20 52 37 2c  20 23 32 31 0d 40 ba 06  |LT   R7, #21.@..|
00008500  20 3a 0d 40 c4 19 20 53  54 4d 46 44 20 20 20 52  | :.@.. STMFD   R|
00008510  31 33 21 2c 7b 52 31 2d  52 36 7d 0d 40 ce 06 20  |13!,{R1-R6}.@.. |
00008520  3a 0d 40 d8 18 20 42 4c  20 20 20 20 20 20 63 68  |:.@.. BL      ch|
00008530  65 63 6b 5f 64 65 61 74  68 0d 40 e2 06 20 3a 0d  |eck_death.@.. :.|
00008540  40 ec 1a 20 4d 4f 56 20  20 20 20 20 52 32 2c 52  |@.. MOV     R2,R|
00008550  32 2c 20 41 53 52 20 23  34 0d 40 f6 1a 20 4d 4f  |2, ASR #4.@.. MO|
00008560  56 20 20 20 20 20 52 33  2c 52 33 2c 20 41 53 52  |V     R3,R3, ASR|
00008570  20 23 34 0d 41 00 18 20  52 53 42 20 20 20 20 20  | #4.A.. RSB     |
00008580  52 33 2c 52 33 2c 20 23  32 35 36 0d 41 0a 20 20  |R3,R3, #256.A.  |
00008590  4c 44 52 20 20 20 20 20  52 34 2c 20 61 64 72 5f  |LDR     R4, adr_|
000085a0  73 63 72 65 65 6e 73 74  6f 72 65 0d 41 14 14 20  |screenstore.A.. |
000085b0  4c 44 52 20 20 20 20 20  52 34 2c 5b 52 34 5d 0d  |LDR     R4,[R4].|
000085c0  41 1e 19 20 4d 4f 56 20  20 20 20 20 52 35 2c 20  |A.. MOV     R5, |
000085d0  23 79 5f 73 68 69 66 74  0d 41 28 15 20 41 44 44  |#y_shift.A(. ADD|
000085e0  20 20 20 20 20 52 34 2c  52 34 2c 52 32 0d 41 32  |     R4,R4,R2.A2|
000085f0  18 20 4d 4c 41 20 20 20  20 20 52 34 2c 52 35 2c  |. MLA     R4,R5,|
00008600  52 33 2c 52 34 0d 41 3c  14 20 4c 44 52 42 20 20  |R3,R4.A<. LDRB  |
00008610  20 20 52 30 2c 5b 52 34  5d 0d 41 46 13 20 43 4d  |  R0,[R4].AF. CM|
00008620  50 20 20 20 20 20 52 30  2c 20 23 30 0d 41 50 11  |P     R0, #0.AP.|
00008630  20 ec 51 20 20 20 52 31  30 2c 20 23 31 0d 41 5a  | .Q   R10, #1.AZ|
00008640  14 20 4d 4f 56 4e 45 20  20 20 52 31 30 2c 20 23  |. MOVNE   R10, #|
00008650  30 0d 41 64 16 20 42 4e  45 20 20 20 20 20 6e 6f  |0.Ad. BNE     no|
00008660  5f 68 6f 6d 69 6e 67 0d  41 6e 18 20 52 53 42 20  |_homing.An. RSB |
00008670  20 20 20 20 52 33 2c 52  33 2c 20 23 32 35 36 0d  |    R3,R3, #256.|
00008680  41 78 12 20 4d 4f 56 20  20 20 20 20 52 30 2c 52  |Ax. MOV     R0,R|
00008690  37 0d 41 82 16 20 53 55  42 20 20 20 20 20 52 31  |7.A.. SUB     R1|
000086a0  2c 52 32 2c 20 23 32 0d  41 8c 16 20 53 55 42 20  |,R2, #2.A.. SUB |
000086b0  20 20 20 20 52 32 2c 52  33 2c 20 23 32 0d 41 96  |    R2,R3, #2.A.|
000086c0  1d 20 42 4c 20 20 20 20  20 20 70 6c 6f 74 5f 73  |. BL      plot_s|
000086d0  70 72 69 74 65 5f 30 38  30 34 0d 41 a0 1d 3b 4c  |prite_0804.A..;L|
000086e0  44 52 20 20 20 20 20 52  30 2c 20 61 64 72 5f 67  |DR     R0, adr_g|
000086f0  75 6e 5f 66 61 64 65 0d  41 aa 1a 3b 4d 4f 56 20  |un_fade.A..;MOV |
00008700  20 20 20 20 52 39 2c 52  36 2c 20 4c 53 52 20 23  |    R9,R6, LSR #|
00008710  38 0d 41 b4 16 3b 80 20  20 20 20 20 52 39 2c 52  |8.A..;.     R9,R|
00008720  39 2c 20 23 32 35 35 0d  41 be 15 3b 43 4d 50 20  |9, #255.A..;CMP |
00008730  20 20 20 20 52 39 2c 20  23 32 35 35 0d 41 c8 15  |    R9, #255.A..|
00008740  3b 4d 4f 56 47 54 20 20  20 52 39 2c 20 23 32 35  |;MOVGT   R9, #25|
00008750  35 0d 41 d2 17 3b 4c 44  52 42 20 20 20 20 52 30  |5.A..;LDRB    R0|
00008760  2c 5b 52 30 2c 52 39 5d  0d 41 dc 14 3b 53 54 52  |,[R0,R9].A..;STR|
00008770  42 20 20 20 20 52 30 2c  5b 52 34 5d 0d 41 e6 0f  |B    R0,[R4].A..|
00008780  20 2e 6e 6f 5f 68 6f 6d  69 6e 67 0d 41 f0 06 20  | .no_homing.A.. |
00008790  3a 0d 41 fa 19 20 4c 44  4d 46 44 20 20 20 52 31  |:.A.. LDMFD   R1|
000087a0  33 21 2c 7b 52 31 2d 52  36 7d 0d 42 04 14 20 43  |3!,{R1-R6}.B.. C|
000087b0  4d 50 20 20 20 20 20 52  31 30 2c 20 23 30 0d 42  |MP     R10, #0.B|
000087c0  0e 17 20 42 4e 45 20 20  20 20 20 65 6e 64 5f 68  |.. BNE     end_h|
000087d0  6f 6d 69 6e 67 0d 42 18  14 20 4d 4f 56 20 20 20  |oming.B.. MOV   |
000087e0  20 20 52 30 2c 20 23 31  31 0d 42 22 1a 20 4d 4f  |  R0, #11.B". MO|
000087f0  56 20 20 20 20 20 52 31  2c 52 32 2c 20 41 53 52  |V     R1,R2, ASR|
00008800  20 23 34 0d 42 2c 1a 20  4d 4f 56 20 20 20 20 20  | #4.B,. MOV     |
00008810  52 32 2c 52 33 2c 20 41  53 52 20 23 34 0d 42 36  |R2,R3, ASR #4.B6|
00008820  18 20 52 53 42 20 20 20  20 20 52 32 2c 52 32 2c  |. RSB     R2,R2,|
00008830  20 23 32 35 36 0d 42 40  16 20 52 53 42 20 20 20  | #256.B@. RSB   |
00008840  20 20 52 33 2c 52 34 2c  20 23 30 0d 42 4a 16 20  |  R3,R4, #0.BJ. |
00008850  52 53 42 20 20 20 20 20  52 34 2c 52 35 2c 20 23  |RSB     R4,R5, #|
00008860  30 0d 42 54 1a 20 4d 4f  56 20 20 20 20 20 52 33  |0.BT. MOV     R3|
00008870  2c 52 33 2c 20 41 53 52  20 23 32 0d 42 5e 1a 20  |,R3, ASR #2.B^. |
00008880  4d 4f 56 20 20 20 20 20  52 34 2c 52 34 2c 20 41  |MOV     R4,R4, A|
00008890  53 52 20 23 32 0d 42 68  14 20 80 20 20 20 20 20  |SR #2.Bh. .     |
000088a0  52 35 2c 52 36 2c 20 23  31 0d 42 72 15 20 42 4c  |R5,R6, #1.Br. BL|
000088b0  20 20 20 20 20 20 61 64  64 5f 63 65 6c 6c 0d 42  |      add_cell.B|
000088c0  7c 13 20 4d 4f 56 20 20  20 20 20 52 35 2c 20 23  ||. MOV     R5, #|
000088d0  31 0d 42 86 13 20 4d 4f  56 20 20 20 20 20 52 30  |1.B.. MOV     R0|
000088e0  2c 20 23 31 0d 42 90 14  20 4d 56 4e 20 20 20 20  |, #1.B.. MVN    |
000088f0  20 52 31 2c 20 23 31 30  0d 42 9a 1c 20 4d 4f 56  | R1, #10.B.. MOV|
00008900  20 20 20 20 20 52 32 2c  20 23 65 78 70 6c 6f 73  |     R2, #explos|
00008910  69 6f 6e 25 0d 42 a4 13  20 4d 4f 56 20 20 20 20  |ion%.B.. MOV    |
00008920  20 52 33 2c 20 23 30 0d  42 ae 1c 20 53 57 49 20  | R3, #0.B.. SWI |
00008930  20 20 20 20 22 53 6f 75  6e 64 5f 43 6f 6e 74 72  |    "Sound_Contr|
00008940  6f 6c 22 0d 42 b8 13 20  4d 4f 56 20 20 20 20 20  |ol".B.. MOV     |
00008950  52 31 2c 20 23 30 0d 42  c2 10 20 2e 65 6e 64 5f  |R1, #0.B.. .end_|
00008960  68 6f 6d 69 6e 67 0d 42  cc 19 20 4c 44 4d 46 44  |homing.B.. LDMFD|
00008970  20 20 20 52 31 33 21 2c  7b 52 39 2c 50 43 7d 0d  |   R13!,{R9,PC}.|
00008980  42 d6 06 20 3a 0d 42 e0  0d 20 2e 73 65 65 6b 69  |B.. :.B.. .seeki|
00008990  6e 67 0d 42 ea 1a 20 53  54 4d 46 44 20 20 20 52  |ng.B.. STMFD   R|
000089a0  31 33 21 2c 7b 52 39 2c  52 31 34 7d 0d 42 f4 06  |13!,{R9,R14}.B..|
000089b0  20 3a 0d 42 fe 13 20 54  53 54 20 20 20 20 20 52  | :.B.. TST     R|
000089c0  36 2c 20 23 31 0d 43 08  16 20 4c 44 52 45 51 20  |6, #1.C.. LDREQ |
000089d0  20 20 52 31 30 2c 20 70  31 5f 78 0d 43 12 16 20  |  R10, p1_x.C.. |
000089e0  4c 44 52 45 51 20 20 20  52 31 31 2c 20 70 31 5f  |LDREQ   R11, p1_|
000089f0  79 0d 43 1c 16 20 4c 44  52 4e 45 20 20 20 52 31  |y.C.. LDRNE   R1|
00008a00  30 2c 20 70 32 5f 78 0d  43 26 16 20 4c 44 52 4e  |0, p2_x.C&. LDRN|
00008a10  45 20 20 20 52 31 31 2c  20 70 32 5f 79 0d 43 30  |E   R11, p2_y.C0|
00008a20  1e 20 41 44 44 20 20 20  20 20 52 31 30 2c 52 31  |. ADD     R10,R1|
00008a30  30 2c 20 23 78 65 78 74  25 2f 32 0d 43 3a 1e 20  |0, #xext%/2.C:. |
00008a40  41 44 44 20 20 20 20 20  52 31 31 2c 52 31 31 2c  |ADD     R11,R11,|
00008a50  20 23 79 65 78 74 25 2f  32 0d 43 44 1b 20 43 4d  | #yext%/2.CD. CM|
00008a60  50 20 20 20 20 20 52 32  2c 52 31 30 2c 20 41 53  |P     R2,R10, AS|
00008a70  4c 20 23 34 0d 43 4e 16  20 53 55 42 47 54 20 20  |L #4.CN. SUBGT  |
00008a80  20 52 34 2c 52 34 2c 20  23 31 0d 43 58 16 20 41  | R4,R4, #1.CX. A|
00008a90  44 44 4c 54 20 20 20 52  34 2c 52 34 2c 20 23 31  |DDLT   R4,R4, #1|
00008aa0  0d 43 62 1b 20 43 4d 50  20 20 20 20 20 52 33 2c  |.Cb. CMP     R3,|
00008ab0  52 31 31 2c 20 41 53 4c  20 23 34 0d 43 6c 16 20  |R11, ASL #4.Cl. |
00008ac0  53 55 42 47 54 20 20 20  52 35 2c 52 35 2c 20 23  |SUBGT   R5,R5, #|
00008ad0  31 0d 43 76 16 20 41 44  44 4c 54 20 20 20 52 35  |1.Cv. ADDLT   R5|
00008ae0  2c 52 35 2c 20 23 31 0d  43 80 14 20 4d 4f 56 20  |,R5, #1.C.. MOV |
00008af0  20 20 20 20 52 30 2c 20  23 31 36 0d 43 8a 12 20  |    R0, #16.C.. |
00008b00  43 4d 50 20 20 20 20 20  52 34 2c 52 30 0d 43 94  |CMP     R4,R0.C.|
00008b10  16 20 53 55 42 47 54 20  20 20 52 34 2c 52 34 2c  |. SUBGT   R4,R4,|
00008b20  20 23 31 0d 43 9e 16 20  52 53 42 20 20 20 20 20  | #1.C.. RSB     |
00008b30  52 30 2c 52 30 2c 20 23  30 0d 43 a8 12 20 43 4d  |R0,R0, #0.C.. CM|
00008b40  50 20 20 20 20 20 52 34  2c 52 30 0d 43 b2 16 20  |P     R4,R0.C.. |
00008b50  41 44 44 4c 54 20 20 20  52 34 2c 52 34 2c 20 23  |ADDLT   R4,R4, #|
00008b60  31 0d 43 bc 14 20 4d 4f  56 20 20 20 20 20 52 30  |1.C.. MOV     R0|
00008b70  2c 20 23 31 36 0d 43 c6  12 20 43 4d 50 20 20 20  |, #16.C.. CMP   |
00008b80  20 20 52 35 2c 52 30 0d  43 d0 16 20 53 55 42 47  |  R5,R0.C.. SUBG|
00008b90  54 20 20 20 52 35 2c 52  35 2c 20 23 31 0d 43 da  |T   R5,R5, #1.C.|
00008ba0  16 20 52 53 42 20 20 20  20 20 52 30 2c 52 30 2c  |. RSB     R0,R0,|
00008bb0  20 23 30 0d 43 e4 12 20  43 4d 50 20 20 20 20 20  | #0.C.. CMP     |
00008bc0  52 35 2c 52 30 0d 43 ee  16 20 41 44 44 4c 54 20  |R5,R0.C.. ADDLT |
00008bd0  20 20 52 35 2c 52 35 2c  20 23 31 0d 43 f8 06 20  |  R5,R5, #1.C.. |
00008be0  3a 0d 44 02 19 20 53 54  4d 46 44 20 20 20 52 31  |:.D.. STMFD   R1|
00008bf0  33 21 2c 7b 52 31 2d 52  36 7d 0d 44 0c 06 20 3a  |3!,{R1-R6}.D.. :|
00008c00  0d 44 16 18 20 42 4c 20  20 20 20 20 20 63 68 65  |.D.. BL      che|
00008c10  63 6b 5f 64 65 61 74 68  0d 44 20 06 20 3a 0d 44  |ck_death.D . :.D|
00008c20  2a 1a 20 4d 4f 56 20 20  20 20 20 52 32 2c 52 32  |*. MOV     R2,R2|
00008c30  2c 20 41 53 52 20 23 34  0d 44 34 1a 20 4d 4f 56  |, ASR #4.D4. MOV|
00008c40  20 20 20 20 20 52 33 2c  52 33 2c 20 41 53 52 20  |     R3,R3, ASR |
00008c50  23 34 0d 44 3e 18 20 52  53 42 20 20 20 20 20 52  |#4.D>. RSB     R|
00008c60  33 2c 52 33 2c 20 23 32  35 36 0d 44 48 20 20 4c  |3,R3, #256.DH  L|
00008c70  44 52 20 20 20 20 20 52  34 2c 20 61 64 72 5f 73  |DR     R4, adr_s|
00008c80  63 72 65 65 6e 73 74 6f  72 65 0d 44 52 14 20 4c  |creenstore.DR. L|
00008c90  44 52 20 20 20 20 20 52  34 2c 5b 52 34 5d 0d 44  |DR     R4,[R4].D|
00008ca0  5c 19 20 4d 4f 56 20 20  20 20 20 52 35 2c 20 23  |\. MOV     R5, #|
00008cb0  79 5f 73 68 69 66 74 0d  44 66 15 20 41 44 44 20  |y_shift.Df. ADD |
00008cc0  20 20 20 20 52 34 2c 52  34 2c 52 32 0d 44 70 18  |    R4,R4,R2.Dp.|
00008cd0  20 4d 4c 41 20 20 20 20  20 52 34 2c 52 35 2c 52  | MLA     R4,R5,R|
00008ce0  33 2c 52 34 0d 44 7a 14  20 4c 44 52 42 20 20 20  |3,R4.Dz. LDRB   |
00008cf0  20 52 30 2c 5b 52 34 5d  0d 44 84 13 20 43 4d 50  | R0,[R4].D.. CMP|
00008d00  20 20 20 20 20 52 30 2c  20 23 30 0d 44 8e 11 20  |     R0, #0.D.. |
00008d10  ec 51 20 20 20 52 31 30  2c 20 23 31 0d 44 98 18  |.Q   R10, #1.D..|
00008d20  20 42 45 51 20 20 20 20  20 70 6f 73 74 5f 72 65  | BEQ     post_re|
00008d30  63 61 6c 63 0d 44 a2 14  20 4d 4f 56 20 20 20 20  |calc.D.. MOV    |
00008d40  20 52 31 30 2c 20 23 30  0d 44 ac 18 20 4c 44 4d  | R10, #0.D.. LDM|
00008d50  46 44 20 20 20 52 31 33  2c 7b 52 31 2d 52 36 7d  |FD   R13,{R1-R6}|
00008d60  0d 44 b6 1d 20 53 55 42  20 20 20 20 20 52 32 2c  |.D.. SUB     R2,|
00008d70  52 32 2c 52 34 2c 20 41  53 4c 20 23 31 0d 44 c0  |R2,R4, ASL #1.D.|
00008d80  1d 20 53 55 42 20 20 20  20 20 52 33 2c 52 33 2c  |. SUB     R3,R3,|
00008d90  52 35 2c 20 41 53 4c 20  23 31 0d 44 ca 1a 20 4d  |R5, ASL #1.D.. M|
00008da0  4f 56 20 20 20 20 20 52  32 2c 52 32 2c 20 41 53  |OV     R2,R2, AS|
00008db0  52 20 23 34 0d 44 d4 1a  20 4d 4f 56 20 20 20 20  |R #4.D.. MOV    |
00008dc0  20 52 33 2c 52 33 2c 20  41 53 52 20 23 34 0d 44  | R3,R3, ASR #4.D|
00008dd0  de 18 20 52 53 42 20 20  20 20 20 52 33 2c 52 33  |.. RSB     R3,R3|
00008de0  2c 20 23 32 35 36 0d 44  e8 20 20 4c 44 52 20 20  |, #256.D.  LDR  |
00008df0  20 20 20 52 34 2c 20 61  64 72 5f 73 63 72 65 65  |   R4, adr_scree|
00008e00  6e 73 74 6f 72 65 0d 44  f2 14 20 4c 44 52 20 20  |nstore.D.. LDR  |
00008e10  20 20 20 52 34 2c 5b 52  34 5d 0d 44 fc 19 20 4d  |   R4,[R4].D.. M|
00008e20  4f 56 20 20 20 20 20 52  35 2c 20 23 79 5f 73 68  |OV     R5, #y_sh|
00008e30  69 66 74 0d 45 06 15 20  41 44 44 20 20 20 20 20  |ift.E.. ADD     |
00008e40  52 34 2c 52 34 2c 52 32  0d 45 10 18 20 4d 4c 41  |R4,R4,R2.E.. MLA|
00008e50  20 20 20 20 20 52 34 2c  52 35 2c 52 33 2c 52 34  |     R4,R5,R3,R4|
00008e60  0d 45 1a 11 20 2e 70 6f  73 74 5f 72 65 63 61 6c  |.E.. .post_recal|
00008e70  63 0d 45 24 18 20 52 53  42 20 20 20 20 20 52 33  |c.E$. RSB     R3|
00008e80  2c 52 33 2c 20 23 32 35  36 0d 45 2e 13 20 4d 4f  |,R3, #256.E.. MO|
00008e90  56 20 20 20 20 20 52 30  2c 20 23 34 0d 45 38 16  |V     R0, #4.E8.|
00008ea0  20 53 55 42 20 20 20 20  20 52 31 2c 52 32 2c 20  | SUB     R1,R2, |
00008eb0  23 32 0d 45 42 16 20 53  55 42 20 20 20 20 20 52  |#2.EB. SUB     R|
00008ec0  32 2c 52 33 2c 20 23 32  0d 45 4c 1d 20 42 4c 20  |2,R3, #2.EL. BL |
00008ed0  20 20 20 20 20 70 6c 6f  74 5f 73 70 72 69 74 65  |     plot_sprite|
00008ee0  5f 30 38 30 34 0d 45 56  10 20 2e 6e 6f 5f 73 65  |_0804.EV. .no_se|
00008ef0  65 6b 69 6e 67 0d 45 60  06 20 3a 0d 45 6a 19 20  |eking.E`. :.Ej. |
00008f00  4c 44 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 31  |LDMFD   R13!,{R1|
00008f10  2d 52 36 7d 0d 45 74 14  20 43 4d 50 20 20 20 20  |-R6}.Et. CMP    |
00008f20  20 52 31 30 2c 20 23 30  0d 45 7e 15 20 41 44 44  | R10, #0.E~. ADD|
00008f30  4e 45 20 20 20 52 32 2c  52 32 2c 52 34 0d 45 88  |NE   R2,R2,R4.E.|
00008f40  15 20 41 44 44 4e 45 20  20 20 52 33 2c 52 33 2c  |. ADDNE   R3,R3,|
00008f50  52 35 0d 45 92 1d 20 53  55 42 45 51 20 20 20 52  |R5.E.. SUBEQ   R|
00008f60  32 2c 52 32 2c 52 34 2c  20 41 53 4c 20 23 31 0d  |2,R2,R4, ASL #1.|
00008f70  45 9c 1d 20 53 55 42 45  51 20 20 20 52 33 2c 52  |E.. SUBEQ   R3,R|
00008f80  33 2c 52 35 2c 20 41 53  4c 20 23 31 0d 45 a6 10  |3,R5, ASL #1.E..|
00008f90  20 ec 51 20 20 20 52 34  2c 20 23 30 0d 45 b0 10  | .Q   R4, #0.E..|
00008fa0  20 ec 51 20 20 20 52 35  2c 20 23 30 0d 45 ba 19  | .Q   R5, #0.E..|
00008fb0  20 4c 44 4d 46 44 20 20  20 52 31 33 21 2c 7b 52  | LDMFD   R13!,{R|
00008fc0  39 2c 50 43 7d 0d 45 c4  06 20 3a 0d 45 ce 0e 20  |9,PC}.E.. :.E.. |
00008fd0  2e 76 65 72 74 69 63 61  6c 0d 45 d8 1a 20 53 54  |.vertical.E.. ST|
00008fe0  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 39 2c 52  |MFD   R13!,{R9,R|
00008ff0  31 34 7d 0d 45 e2 06 20  3a 0d 45 ec 15 20 41 44  |14}.E.. :.E.. AD|
00009000  44 20 20 20 20 20 52 32  2c 52 32 2c 52 34 0d 45  |D     R2,R2,R4.E|
00009010  f6 15 20 41 44 44 20 20  20 20 20 52 33 2c 52 33  |.. ADD     R3,R3|
00009020  2c 52 35 0d 46 00 06 20  3a 0d 46 0a 19 20 53 54  |,R5.F.. :.F.. ST|
00009030  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 31 2d 52  |MFD   R13!,{R1-R|
00009040  36 7d 0d 46 14 06 20 3a  0d 46 1e 18 20 42 4c 20  |6}.F.. :.F.. BL |
00009050  20 20 20 20 20 63 68 65  63 6b 5f 64 65 61 74 68  |     check_death|
00009060  0d 46 28 06 20 3a 0d 46  32 1a 20 4d 4f 56 20 20  |.F(. :.F2. MOV  |
00009070  20 20 20 52 32 2c 52 32  2c 20 41 53 52 20 23 34  |   R2,R2, ASR #4|
00009080  0d 46 3c 1a 20 4d 4f 56  20 20 20 20 20 52 33 2c  |.F<. MOV     R3,|
00009090  52 33 2c 20 41 53 52 20  23 34 0d 46 46 18 20 52  |R3, ASR #4.FF. R|
000090a0  53 42 20 20 20 20 20 52  33 2c 52 33 2c 20 23 32  |SB     R3,R3, #2|
000090b0  35 36 0d 46 50 20 20 4c  44 52 20 20 20 20 20 52  |56.FP  LDR     R|
000090c0  34 2c 20 61 64 72 5f 73  63 72 65 65 6e 73 74 6f  |4, adr_screensto|
000090d0  72 65 0d 46 5a 14 20 4c  44 52 20 20 20 20 20 52  |re.FZ. LDR     R|
000090e0  34 2c 5b 52 34 5d 0d 46  64 19 20 4d 4f 56 20 20  |4,[R4].Fd. MOV  |
000090f0  20 20 20 52 35 2c 20 23  79 5f 73 68 69 66 74 0d  |   R5, #y_shift.|
00009100  46 6e 15 20 41 44 44 20  20 20 20 20 52 34 2c 52  |Fn. ADD     R4,R|
00009110  34 2c 52 32 0d 46 78 18  20 4d 4c 41 20 20 20 20  |4,R2.Fx. MLA    |
00009120  20 52 34 2c 52 35 2c 52  33 2c 52 34 0d 46 82 14  | R4,R5,R3,R4.F..|
00009130  20 4c 44 52 42 20 20 20  20 52 30 2c 5b 52 34 5d  | LDRB    R0,[R4]|
00009140  0d 46 8c 13 20 43 4d 50  20 20 20 20 20 52 30 2c  |.F.. CMP     R0,|
00009150  20 23 30 0d 46 96 11 20  ec 51 20 20 20 52 31 30  | #0.F.. .Q   R10|
00009160  2c 20 23 31 0d 46 a0 14  20 4d 4f 56 4e 45 20 20  |, #1.F.. MOVNE  |
00009170  20 52 31 30 2c 20 23 30  0d 46 aa 14 20 42 4e 45  | R10, #0.F.. BNE|
00009180  20 20 20 20 20 6e 6f 5f  76 65 72 74 0d 46 b4 18  |     no_vert.F..|
00009190  20 52 53 42 20 20 20 20  20 52 33 2c 52 33 2c 20  | RSB     R3,R3, |
000091a0  23 32 35 36 0d 46 be 14  20 4d 4f 56 20 20 20 20  |#256.F.. MOV    |
000091b0  20 52 30 2c 20 23 32 32  0d 46 c8 16 20 53 55 42  | R0, #22.F.. SUB|
000091c0  20 20 20 20 20 52 31 2c  52 32 2c 20 23 32 0d 46  |     R1,R2, #2.F|
000091d0  d2 16 20 53 55 42 20 20  20 20 20 52 32 2c 52 33  |.. SUB     R2,R3|
000091e0  2c 20 23 32 0d 46 dc 1d  20 42 4c 20 20 20 20 20  |, #2.F.. BL     |
000091f0  20 70 6c 6f 74 5f 73 70  72 69 74 65 5f 30 38 30  | plot_sprite_080|
00009200  34 0d 46 e6 1d 3b 4c 44  52 20 20 20 20 20 52 30  |4.F..;LDR     R0|
00009210  2c 20 61 64 72 5f 67 75  6e 5f 66 61 64 65 0d 46  |, adr_gun_fade.F|
00009220  f0 15 3b 4d 4f 56 20 20  20 20 20 52 39 2c 20 23  |..;MOV     R9, #|
00009230  32 35 35 0d 46 fa 17 3b  4c 44 52 42 20 20 20 20  |255.F..;LDRB    |
00009240  52 30 2c 5b 52 30 2c 52  39 5d 0d 47 04 14 3b 53  |R0,[R0,R9].G..;S|
00009250  54 52 42 20 20 20 20 52  30 2c 5b 52 34 5d 0d 47  |TRB    R0,[R4].G|
00009260  0e 18 3b 41 44 44 20 20  20 20 20 52 34 2c 52 34  |..;ADD     R4,R4|
00009270  2c 20 23 33 32 30 0d 47  18 16 3b 53 55 42 20 20  |, #320.G..;SUB  |
00009280  20 20 20 52 34 2c 52 34  2c 20 23 31 0d 47 22 14  |   R4,R4, #1.G".|
00009290  3b 53 54 52 42 20 20 20  20 52 30 2c 5b 52 34 5d  |;STRB    R0,[R4]|
000092a0  0d 47 2c 18 3b 53 54 52  42 20 20 20 20 52 30 2c  |.G,.;STRB    R0,|
000092b0  5b 52 34 2c 20 23 32 5d  0d 47 36 0d 20 2e 6e 6f  |[R4, #2].G6. .no|
000092c0  5f 76 65 72 74 0d 47 40  06 20 3a 0d 47 4a 19 20  |_vert.G@. :.GJ. |
000092d0  4c 44 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 31  |LDMFD   R13!,{R1|
000092e0  2d 52 36 7d 0d 47 54 14  20 43 4d 50 20 20 20 20  |-R6}.GT. CMP    |
000092f0  20 52 31 30 2c 20 23 30  0d 47 5e 10 20 ec 51 20  | R10, #0.G^. .Q |
00009300  20 20 52 31 2c 20 23 30  0d 47 68 19 20 4c 44 4d  |  R1, #0.Gh. LDM|
00009310  46 44 20 20 20 52 31 33  21 2c 7b 52 39 2c 50 43  |FD   R13!,{R9,PC|
00009320  7d 0d 47 72 06 20 3a 0d  47 7c 11 20 2e 63 68 65  |}.Gr. :.G|. .che|
00009330  63 6b 5f 64 65 61 74 68  0d 47 86 13 20 54 53 54  |ck_death.G.. TST|
00009340  20 20 20 20 20 52 36 2c  20 23 31 0d 47 90 16 20  |     R6, #1.G.. |
00009350  4c 44 52 45 51 20 20 20  52 31 30 2c 20 70 31 5f  |LDREQ   R10, p1_|
00009360  78 0d 47 9a 16 20 4c 44  52 45 51 20 20 20 52 31  |x.G.. LDREQ   R1|
00009370  31 2c 20 70 31 5f 79 0d  47 a4 16 20 4c 44 52 4e  |1, p1_y.G.. LDRN|
00009380  45 20 20 20 52 31 30 2c  20 70 32 5f 78 0d 47 ae  |E   R10, p2_x.G.|
00009390  16 20 4c 44 52 4e 45 20  20 20 52 31 31 2c 20 70  |. LDRNE   R11, p|
000093a0  32 5f 79 0d 47 b8 1a 20  4d 4f 56 20 20 20 20 20  |2_y.G.. MOV     |
000093b0  52 39 2c 52 32 2c 20 41  53 52 20 23 34 0d 47 c2  |R9,R2, ASR #4.G.|
000093c0  17 20 53 55 42 20 20 20  20 20 52 31 30 2c 52 39  |. SUB     R10,R9|
000093d0  2c 52 31 30 0d 47 cc 14  20 43 4d 4e 20 20 20 20  |,R10.G.. CMN    |
000093e0  20 52 31 30 2c 20 23 32  0d 47 d6 15 20 42 4c 54  | R10, #2.G.. BLT|
000093f0  20 20 20 20 20 6e 6f 74  5f 64 65 61 64 0d 47 e0  |     not_dead.G.|
00009400  1a 20 43 4d 50 20 20 20  20 20 52 31 30 2c 20 23  |. CMP     R10, #|
00009410  78 65 78 74 25 2b 32 0d  47 ea 15 20 42 47 54 20  |xext%+2.G.. BGT |
00009420  20 20 20 20 6e 6f 74 5f  64 65 61 64 0d 47 f4 1a  |    not_dead.G..|
00009430  20 4d 4f 56 20 20 20 20  20 52 39 2c 52 33 2c 20  | MOV     R9,R3, |
00009440  41 53 52 20 23 34 0d 47  fe 17 20 53 55 42 20 20  |ASR #4.G.. SUB  |
00009450  20 20 20 52 31 31 2c 52  39 2c 52 31 31 0d 48 08  |   R11,R9,R11.H.|
00009460  14 20 43 4d 4e 20 20 20  20 20 52 31 31 2c 20 23  |. CMN     R11, #|
00009470  32 0d 48 12 15 20 42 4c  54 20 20 20 20 20 6e 6f  |2.H.. BLT     no|
00009480  74 5f 64 65 61 64 0d 48  1c 1a 20 43 4d 50 20 20  |t_dead.H.. CMP  |
00009490  20 20 20 52 31 31 2c 20  23 79 65 78 74 25 2b 32  |   R11, #yext%+2|
000094a0  0d 48 26 15 20 42 47 54  20 20 20 20 20 6e 6f 74  |.H&. BGT     not|
000094b0  5f 64 65 61 64 0d 48 30  13 20 54 53 54 20 20 20  |_dead.H0. TST   |
000094c0  20 20 52 36 2c 20 23 31  0d 48 3a 19 20 42 4e 45  |  R6, #1.H:. BNE|
000094d0  20 20 20 20 20 64 65 61  64 5f 70 6c 61 79 65 72  |     dead_player|
000094e0  32 0d 48 44 1e 20 4c 44  52 20 20 20 20 20 52 30  |2.HD. LDR     R0|
000094f0  2c 20 70 6c 61 79 65 72  31 5f 61 6c 69 76 65 0d  |, player1_alive.|
00009500  48 4e 13 20 43 4d 50 20  20 20 20 20 52 30 2c 20  |HN. CMP     R0, |
00009510  23 31 0d 48 58 15 20 42  45 51 20 20 20 20 20 6e  |#1.HX. BEQ     n|
00009520  6f 74 5f 64 65 61 64 0d  48 62 13 20 4d 4f 56 20  |ot_dead.Hb. MOV |
00009530  20 20 20 20 52 30 2c 20  23 31 0d 48 6c 1e 20 53  |    R0, #1.Hl. S|
00009540  54 52 20 20 20 20 20 52  30 2c 20 70 6c 61 79 65  |TR     R0, playe|
00009550  72 31 5f 61 6c 69 76 65  0d 48 76 13 20 4d 4f 56  |r1_alive.Hv. MOV|
00009560  20 20 20 20 20 52 30 2c  20 23 33 0d 48 80 14 20  |     R0, #3.H.. |
00009570  4d 56 4e 20 20 20 20 20  52 31 2c 20 23 31 34 0d  |MVN     R1, #14.|
00009580  48 8a 19 20 4d 4f 56 20  20 20 20 20 52 32 2c 20  |H.. MOV     R2, |
00009590  23 73 63 72 65 61 6d 25  0d 48 94 13 20 4d 4f 56  |#scream%.H.. MOV|
000095a0  20 20 20 20 20 52 33 2c  20 23 30 0d 48 9e 1c 20  |     R3, #0.H.. |
000095b0  53 57 49 20 20 20 20 20  22 53 6f 75 6e 64 5f 43  |SWI     "Sound_C|
000095c0  6f 6e 74 72 6f 6c 22 0d  48 a8 15 20 42 20 20 20  |ontrol".H.. B   |
000095d0  20 20 20 20 6e 6f 74 5f  64 65 61 64 0d 48 b2 12  |    not_dead.H..|
000095e0  20 2e 64 65 61 64 5f 70  6c 61 79 65 72 32 0d 48  | .dead_player2.H|
000095f0  bc 1e 20 4c 44 52 20 20  20 20 20 52 30 2c 20 70  |.. LDR     R0, p|
00009600  6c 61 79 65 72 32 5f 61  6c 69 76 65 0d 48 c6 13  |layer2_alive.H..|
00009610  20 43 4d 50 20 20 20 20  20 52 30 2c 20 23 31 0d  | CMP     R0, #1.|
00009620  48 d0 15 20 42 45 51 20  20 20 20 20 6e 6f 74 5f  |H.. BEQ     not_|
00009630  64 65 61 64 0d 48 da 13  20 4d 4f 56 20 20 20 20  |dead.H.. MOV    |
00009640  20 52 30 2c 20 23 31 0d  48 e4 1e 20 53 54 52 20  | R0, #1.H.. STR |
00009650  20 20 20 20 52 30 2c 20  70 6c 61 79 65 72 32 5f  |    R0, player2_|
00009660  61 6c 69 76 65 0d 48 ee  13 20 4d 4f 56 20 20 20  |alive.H.. MOV   |
00009670  20 20 52 30 2c 20 23 33  0d 48 f8 14 20 4d 56 4e  |  R0, #3.H.. MVN|
00009680  20 20 20 20 20 52 31 2c  20 23 31 34 0d 49 02 19  |     R1, #14.I..|
00009690  20 4d 4f 56 20 20 20 20  20 52 32 2c 20 23 73 63  | MOV     R2, #sc|
000096a0  72 65 61 6d 25 0d 49 0c  13 20 4d 4f 56 20 20 20  |ream%.I.. MOV   |
000096b0  20 20 52 33 2c 20 23 30  0d 49 16 1c 20 53 57 49  |  R3, #0.I.. SWI|
000096c0  20 20 20 20 20 22 53 6f  75 6e 64 5f 43 6f 6e 74  |     "Sound_Cont|
000096d0  72 6f 6c 22 0d 49 20 0e  20 2e 6e 6f 74 5f 64 65  |rol".I . .not_de|
000096e0  61 64 0d 49 2a 13 20 4d  4f 56 20 20 20 20 20 50  |ad.I*. MOV     P|
000096f0  43 2c 52 31 34 0d 49 34  06 20 3a 0d 49 3e 13 20  |C,R14.I4. :.I>. |
00009700  2e 70 6c 61 79 65 72 31  5f 61 6c 69 76 65 0d 49  |.player1_alive.I|
00009710  48 0e 20 45 51 55 44 20  20 20 20 30 0d 49 52 13  |H. EQUD    0.IR.|
00009720  20 2e 70 6c 61 79 65 72  32 5f 61 6c 69 76 65 0d  | .player2_alive.|
00009730  49 5c 0e 20 45 51 55 44  20 20 20 20 30 0d 49 66  |I\. EQUD    0.If|
00009740  06 20 3a 0d 49 70 15 20  2e 65 78 70 6c 6f 73 69  |. :.Ip. .explosi|
00009750  6f 6e 5f 73 70 72 61 79  0d 49 7a 06 20 5d 0d 49  |on_spray.Iz. ].I|
00009760  84 10 20 e3 20 61 25 3d  31 20 b8 20 36 34 0d 49  |.. . a%=1 . 64.I|
00009770  8e 10 20 72 25 3d b3 28  32 30 29 2b 32 38 0d 49  |.. r%=.(20)+28.I|
00009780  98 10 20 61 6e 67 25 3d  b3 28 33 36 30 29 0d 49  |.. ang%=.(360).I|
00009790  a2 13 20 78 25 3d 9b b2  28 61 6e 67 25 29 2a 72  |.. x%=..(ang%)*r|
000097a0  25 0d 49 ac 13 20 79 25  3d b5 b2 28 61 6e 67 25  |%.I.. y%=..(ang%|
000097b0  29 2a 72 25 0d 49 b6 21  20 e7 20 78 25 3c 30 20  |)*r%.I.! . x%<0 |
000097c0  8c 20 78 25 3d 28 78 25  20 84 20 31 32 38 29 20  |. x%=(x% . 128) |
000097d0  80 20 32 35 35 0d 49 c0  21 20 e7 20 79 25 3c 30  |. 255.I.! . y%<0|
000097e0  20 8c 20 79 25 3d 28 79  25 20 84 20 31 32 38 29  | . y%=(y% . 128)|
000097f0  20 80 20 32 35 35 0d 49  ca 0f 20 5b 4f 50 54 20  | . 255.I.. [OPT |
00009800  70 61 73 73 25 0d 49 d4  0f 20 45 51 55 42 20 20  |pass%.I.. EQUB  |
00009810  20 20 78 25 0d 49 de 0f  20 45 51 55 42 20 20 20  |  x%.I.. EQUB   |
00009820  20 79 25 0d 49 e8 06 20  5d 0d 49 f2 06 20 ed 0d  | y%.I.. ].I.. ..|
00009830  49 fc 0f 20 5b 4f 50 54  20 70 61 73 73 25 0d 4a  |I.. [OPT pass%.J|
00009840  06 0a 20 41 4c 49 47 4e  0d 4a 10 06 20 3a 0d 4a  |.. ALIGN.J.. :.J|
00009850  1a 0e 20 2e 65 6e 64 5f  67 61 6d 65 0d 4a 24 0e  |.. .end_game.J$.|
00009860  20 45 51 55 44 20 20 20  20 30 0d 4a 2e 15 20 2e  | EQUD    0.J.. .|
00009870  61 64 72 5f 73 63 72 65  65 6e 73 74 6f 72 65 0d  |adr_screenstore.|
00009880  4a 38 18 20 45 51 55 44  20 20 20 20 73 63 72 65  |J8. EQUD    scre|
00009890  65 6e 73 74 6f 72 65 0d  4a 42 10 20 2e 61 64 72  |enstore.JB. .adr|
000098a0  5f 63 6c 69 73 74 32 0d  4a 4c 13 20 45 51 55 44  |_clist2.JL. EQUD|
000098b0  20 20 20 20 63 6c 69 73  74 25 0d 4a 56 06 20 3a  |    clist%.JV. :|
000098c0  0d 4a 60 06 20 3a 0d 4a  6a 06 20 3a 0d 4a 74 0e  |.J`. :.Jj. :.Jt.|
000098d0  20 2e 61 64 64 5f 63 65  6c 6c 0d 4a 7e 1e 20 53  | .add_cell.J~. S|
000098e0  54 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 30 2d  |TMFD   R13!,{R0-|
000098f0  52 31 32 2c 52 31 34 7d  0d 4a 88 06 20 3a 0d 4a  |R12,R14}.J.. :.J|
00009900  92 18 20 52 53 42 20 20  20 20 20 52 32 2c 52 32  |.. RSB     R2,R2|
00009910  2c 20 23 32 35 36 0d 4a  9c 1a 20 4d 4f 56 20 20  |, #256.J.. MOV  |
00009920  20 20 20 52 31 2c 52 31  2c 20 41 53 4c 20 23 34  |   R1,R1, ASL #4|
00009930  0d 4a a6 1a 20 4d 4f 56  20 20 20 20 20 52 32 2c  |.J.. MOV     R2,|
00009940  52 32 2c 20 41 53 4c 20  23 34 0d 4a b0 06 20 3a  |R2, ASL #4.J.. :|
00009950  0d 4a ba 1b 20 4c 44 52  20 20 20 20 20 52 39 2c  |.J.. LDR     R9,|
00009960  20 61 64 72 5f 63 6c 69  73 74 32 0d 4a c4 0c 20  | adr_clist2.J.. |
00009970  2e 73 6c 6f 6f 70 31 0d  4a ce 14 20 4c 44 52 20  |.sloop1.J.. LDR |
00009980  20 20 20 20 52 38 2c 5b  52 39 5d 0d 4a d8 13 20  |    R8,[R9].J.. |
00009990  43 4d 50 20 20 20 20 20  52 38 2c 20 23 30 0d 4a  |CMP     R8, #0.J|
000099a0  e2 17 20 53 54 4d 45 51  49 41 20 52 39 2c 7b 52  |.. STMEQIA R9,{R|
000099b0  30 2d 52 35 7d 0d 4a ec  16 20 42 45 51 20 20 20  |0-R5}.J.. BEQ   |
000099c0  20 20 64 6f 6e 65 5f 63  65 6c 6c 0d 4a f6 17 20  |  done_cell.J.. |
000099d0  41 44 44 20 20 20 20 20  52 39 2c 52 39 2c 20 23  |ADD     R9,R9, #|
000099e0  33 32 0d 4b 00 13 20 42  47 45 20 20 20 20 20 73  |32.K.. BGE     s|
000099f0  6c 6f 6f 70 31 0d 4b 0a  0f 20 2e 64 6f 6e 65 5f  |loop1.K.. .done_|
00009a00  63 65 6c 6c 0d 4b 14 06  20 3a 0d 4b 1e 1d 20 4c  |cell.K.. :.K.. L|
00009a10  44 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 30 2d  |DMFD   R13!,{R0-|
00009a20  52 31 32 2c 50 43 7d 0d  4b 28 06 20 3a 0d 4b 32  |R12,PC}.K(. :.K2|
00009a30  06 20 3a 0d 4b 3c 06 20  3a 0d 4b 46 10 20 2e 61  |. :.K<. :.KF. .a|
00009a40  64 64 5f 67 6f 6f 64 69  65 0d 4b 50 1e 20 53 54  |dd_goodie.KP. ST|
00009a50  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 30 2d 52  |MFD   R13!,{R0-R|
00009a60  31 32 2c 52 31 34 7d 0d  4b 5a 06 20 3a 0d 4b 64  |12,R14}.KZ. :.Kd|
00009a70  14 20 4c 44 52 20 20 20  20 20 52 39 2c 20 72 6e  |. LDR     R9, rn|
00009a80  64 0d 4b 6e 1b 20 4d 4f  56 20 20 20 20 20 52 39  |d.Kn. MOV     R9|
00009a90  2c 52 39 2c 20 4c 53 52  20 23 32 34 0d 4b 78 16  |,R9, LSR #24.Kx.|
00009aa0  20 80 20 20 20 20 20 52  30 2c 52 39 2c 20 23 32  | .     R0,R9, #2|
00009ab0  35 35 0d 4b 82 11 20 2e  67 6f 6f 64 69 65 5f 6c  |55.K.. .goodie_l|
00009ac0  6f 6f 70 0d 4b 8c 13 20  43 4d 50 20 20 20 20 20  |oop.K.. CMP     |
00009ad0  52 30 2c 20 23 38 0d 4b  96 16 20 53 55 42 47 54  |R0, #8.K.. SUBGT|
00009ae0  20 20 20 52 30 2c 52 30  2c 20 23 38 0d 4b a0 18  |   R0,R0, #8.K..|
00009af0  20 42 47 54 20 20 20 20  20 67 6f 6f 64 69 65 5f  | BGT     goodie_|
00009b00  6c 6f 6f 70 0d 4b aa 16  20 41 44 44 20 20 20 20  |loop.K.. ADD    |
00009b10  20 52 30 2c 52 30 2c 20  23 34 0d 4b b4 1a 20 80  | R0,R0, #4.K.. .|
00009b20  20 20 20 20 20 52 31 2c  52 39 2c 20 23 25 31 31  |     R1,R9, #%11|
00009b30  31 30 30 30 0d 4b be 1a  20 41 44 52 20 20 20 20  |1000.K.. ADR    |
00009b40  20 52 32 2c 20 70 6f 73  69 74 69 6f 6e 73 0d 4b  | R2, positions.K|
00009b50  c8 15 20 41 44 44 20 20  20 20 20 52 32 2c 52 32  |.. ADD     R2,R2|
00009b60  2c 52 31 0d 4b d2 14 20  4c 44 52 20 20 20 20 20  |,R1.K.. LDR     |
00009b70  52 31 2c 5b 52 32 5d 0d  4b dc 18 20 4c 44 52 20  |R1,[R2].K.. LDR |
00009b80  20 20 20 20 52 32 2c 5b  52 32 2c 20 23 34 5d 0d  |    R2,[R2, #4].|
00009b90  4b e6 15 20 4d 4f 56 20  20 20 20 20 52 33 2c 20  |K.. MOV     R3, |
00009ba0  23 33 32 30 0d 4b f0 17  20 42 4c 20 20 20 20 20  |#320.K.. BL     |
00009bb0  20 61 64 64 5f 73 70 72  69 74 65 0d 4b fa 06 20  | add_sprite.K.. |
00009bc0  3a 0d 4c 04 1d 20 4c 44  4d 46 44 20 20 20 52 31  |:.L.. LDMFD   R1|
00009bd0  33 21 2c 7b 52 30 2d 52  31 32 2c 50 43 7d 0d 4c  |3!,{R0-R12,PC}.L|
00009be0  0e 06 20 3a 0d 4c 18 0f  20 2e 70 6f 73 69 74 69  |.. :.L.. .positi|
00009bf0  6f 6e 73 0d 4c 22 06 20  5d 0d 4c 2c 0f 20 e3 20  |ons.L". ].L,. . |
00009c00  61 25 3d 30 20 b8 20 38  0d 4c 36 0e 20 5b 4f 50  |a%=0 . 8.L6. [OP|
00009c10  54 70 61 73 73 25 0d 4c  40 0e 20 45 51 55 44 20  |Tpass%.L@. EQUD |
00009c20  20 20 20 30 0d 4c 4a 0e  20 45 51 55 44 20 20 20  |   0.LJ. EQUD   |
00009c30  20 30 0d 4c 54 06 20 5d  0d 4c 5e 06 20 ed 0d 4c  | 0.LT. ].L^. ..L|
00009c40  68 0f 20 5b 4f 50 54 20  70 61 73 73 25 0d 4c 72  |h. [OPT pass%.Lr|
00009c50  06 20 3a 0d 4c 7c 12 20  2e 61 73 5f 61 64 72 5f  |. :.L|. .as_adr_|
00009c60  73 6c 69 73 74 0d 4c 86  13 20 45 51 55 44 20 20  |slist.L.. EQUD  |
00009c70  20 20 73 6c 69 73 74 25  0d 4c 90 06 20 3a 0d 4c  |  slist%.L.. :.L|
00009c80  9a 10 20 2e 61 64 64 5f  73 70 72 69 74 65 0d 4c  |.. .add_sprite.L|
00009c90  a4 1e 20 53 54 4d 46 44  20 20 20 52 31 33 21 2c  |.. STMFD   R13!,|
00009ca0  7b 52 30 2d 52 31 32 2c  52 31 34 7d 0d 4c ae 06  |{R0-R12,R14}.L..|
00009cb0  20 3a 0d 4c b8 1d 20 4c  44 52 20 20 20 20 20 52  | :.L.. LDR     R|
00009cc0  39 2c 20 61 73 5f 61 64  72 5f 73 6c 69 73 74 0d  |9, as_adr_slist.|
00009cd0  4c c2 0c 20 2e 73 6c 6f  6f 70 31 0d 4c cc 14 20  |L.. .sloop1.L.. |
00009ce0  4c 44 52 20 20 20 20 20  52 38 2c 5b 52 39 5d 0d  |LDR     R8,[R9].|
00009cf0  4c d6 13 20 43 4d 50 20  20 20 20 20 52 38 2c 20  |L.. CMP     R8, |
00009d00  23 30 0d 4c e0 17 20 41  44 44 4e 45 20 20 20 52  |#0.L.. ADDNE   R|
00009d10  39 2c 52 39 2c 20 23 31  36 0d 4c ea 13 20 42 4e  |9,R9, #16.L.. BN|
00009d20  45 20 20 20 20 20 73 6c  6f 6f 70 31 0d 4c f4 17  |E     sloop1.L..|
00009d30  20 53 54 4d 45 51 49 41  20 52 39 2c 7b 52 30 2d  | STMEQIA R9,{R0-|
00009d40  52 33 7d 0d 4c fe 16 20  42 45 51 20 20 20 20 20  |R3}.L.. BEQ     |
00009d50  64 6f 6e 65 5f 63 65 6c  6c 0d 4d 08 0f 20 2e 64  |done_cell.M.. .d|
00009d60  6f 6e 65 5f 63 65 6c 6c  0d 4d 12 06 20 3a 0d 4d  |one_cell.M.. :.M|
00009d70  1c 1d 20 4c 44 4d 46 44  20 20 20 52 31 33 21 2c  |.. LDMFD   R13!,|
00009d80  7b 52 30 2d 52 31 32 2c  50 43 7d 0d 4d 26 06 20  |{R0-R12,PC}.M&. |
00009d90  3a 0d 4d 30 0d 20 2e 70  32 5f 66 69 72 65 0d 4d  |:.M0. .p2_fire.M|
00009da0  3a 0e 20 45 51 55 44 20  20 20 20 30 0d 4d 44 0f  |:. EQUD    0.MD.|
00009db0  20 2e 65 78 70 6c 6f 64  65 5f 32 0d 4d 4e 0e 20  | .explode_2.MN. |
00009dc0  45 51 55 44 20 20 20 20  30 0d 4d 58 06 20 3a 0d  |EQUD    0.MX. :.|
00009dd0  4d 62 0d 20 2e 70 6c 61  79 65 72 32 0d 4d 6c 1a  |Mb. .player2.Ml.|
00009de0  20 53 54 4d 46 44 20 20  20 52 31 33 21 2c 7b 52  | STMFD   R13!,{R|
00009df0  39 2c 52 31 34 7d 0d 4d  76 06 20 3a 0d 4d 80 14  |9,R14}.Mv. :.M..|
00009e00  20 43 4d 50 20 20 20 20  20 52 36 2c 20 23 33 32  | CMP     R6, #32|
00009e10  0d 4d 8a 14 20 4d 4f 56  4c 54 20 20 20 52 36 2c  |.M.. MOVLT   R6,|
00009e20  20 23 33 32 0d 4d 94 14  20 43 4d 50 20 20 20 20  | #32.M.. CMP    |
00009e30  20 52 37 2c 20 23 33 32  0d 4d 9e 14 20 4d 4f 56  | R7, #32.M.. MOV|
00009e40  4c 54 20 20 20 52 37 2c  20 23 33 32 0d 4d a8 19  |LT   R7, #32.M..|
00009e50  20 43 4d 50 20 20 20 20  20 52 36 2c 20 23 31 32  | CMP     R6, #12|
00009e60  38 30 2d 38 30 0d 4d b2  19 20 4d 4f 56 47 54 20  |80-80.M.. MOVGT |
00009e70  20 20 52 36 2c 20 23 31  32 38 30 2d 38 30 0d 4d  |  R6, #1280-80.M|
00009e80  bc 19 20 43 4d 50 20 20  20 20 20 52 37 2c 20 23  |.. CMP     R7, #|
00009e90  31 30 32 34 2d 38 30 0d  4d c6 19 20 4d 4f 56 47  |1024-80.M.. MOVG|
00009ea0  54 20 20 20 52 37 2c 20  23 31 30 32 34 2d 38 30  |T   R7, #1024-80|
00009eb0  0d 4d d0 06 20 3a 0d 4d  da 1e 20 4c 44 52 20 20  |.M.. :.M.. LDR  |
00009ec0  20 20 20 52 30 2c 20 70  6c 61 79 65 72 32 5f 61  |   R0, player2_a|
00009ed0  6c 69 76 65 0d 4d e4 13  20 43 4d 50 20 20 20 20  |live.M.. CMP    |
00009ee0  20 52 30 2c 20 23 30 0d  4d ee 19 20 42 45 51 20  | R0, #0.M.. BEQ |
00009ef0  20 20 20 20 70 6c 61 79  5f 70 6c 61 79 65 72 32  |    play_player2|
00009f00  0d 4d f8 1c 20 42 4e 45  20 20 20 20 20 65 78 70  |.M.. BNE     exp|
00009f10  6c 6f 64 65 5f 70 6c 61  79 65 72 32 0d 4e 02 06  |lode_player2.N..|
00009f20  20 3a 0d 4e 0c 15 20 2e  65 78 70 6c 6f 64 65 5f  | :.N.. .explode_|
00009f30  70 6c 61 79 65 72 32 0d  4e 16 06 20 3a 0d 4e 20  |player2.N.. :.N |
00009f40  1a 20 4c 44 52 20 20 20  20 20 52 30 2c 20 65 78  |. LDR     R0, ex|
00009f50  70 6c 6f 64 65 5f 32 0d  4e 2a 16 20 41 44 44 20  |plode_2.N*. ADD |
00009f60  20 20 20 20 52 30 2c 52  30 2c 20 23 31 0d 4e 34  |    R0,R0, #1.N4|
00009f70  1a 20 53 54 52 20 20 20  20 20 52 30 2c 20 65 78  |. STR     R0, ex|
00009f80  70 6c 6f 64 65 5f 32 0d  4e 3e 16 20 43 4d 50 20  |plode_2.N>. CMP |
00009f90  20 20 20 20 52 30 2c 20  23 37 3c 3c 33 0d 4e 48  |    R0, #7<<3.NH|
00009fa0  19 20 53 54 52 47 54 20  20 20 52 30 2c 20 65 6e  |. STRGT   R0, en|
00009fb0  64 5f 67 61 6d 65 0d 4e  52 19 20 4c 44 4d 47 54  |d_game.NR. LDMGT|
00009fc0  46 44 20 52 31 33 21 2c  7b 52 39 2c 50 43 7d 0d  |FD R13!,{R9,PC}.|
00009fd0  4e 5c 16 20 43 4d 50 20  20 20 20 20 52 30 2c 20  |N\. CMP     R0, |
00009fe0  23 37 3c 3c 31 0d 4e 66  19 20 4c 44 4d 47 54 46  |#7<<1.Nf. LDMGTF|
00009ff0  44 20 52 31 33 21 2c 7b  52 39 2c 50 43 7d 0d 4e  |D R13!,{R9,PC}.N|
0000a000  70 1a 20 4d 4f 56 20 20  20 20 20 52 30 2c 52 30  |p. MOV     R0,R0|
0000a010  2c 20 41 53 52 20 23 31  0d 4e 7a 1a 20 4d 4f 56  |, ASR #1.Nz. MOV|
0000a020  20 20 20 20 20 52 31 2c  52 36 2c 20 41 53 52 20  |     R1,R6, ASR |
0000a030  23 32 0d 4e 84 1a 20 4d  4f 56 20 20 20 20 20 52  |#2.N.. MOV     R|
0000a040  32 2c 52 37 2c 20 41 53  52 20 23 32 0d 4e 8e 16  |2,R7, ASR #2.N..|
0000a050  20 53 55 42 20 20 20 20  20 52 31 2c 52 31 2c 20  | SUB     R1,R1, |
0000a060  23 34 0d 4e 98 1d 20 42  4c 20 20 20 20 20 20 70  |#4.N.. BL      p|
0000a070  6c 6f 74 5f 73 70 72 69  74 65 5f 32 30 31 36 0d  |lot_sprite_2016.|
0000a080  4e a2 06 20 3a 0d 4e ac  19 20 4c 44 4d 46 44 20  |N.. :.N.. LDMFD |
0000a090  20 20 52 31 33 21 2c 7b  52 39 2c 50 43 7d 0d 4e  |  R13!,{R9,PC}.N|
0000a0a0  b6 06 20 3a 0d 4e c0 12  20 2e 70 6c 61 79 5f 70  |.. :.N.. .play_p|
0000a0b0  6c 61 79 65 72 32 0d 4e  ca 06 20 3a 0d 4e d4 1a  |layer2.N.. :.N..|
0000a0c0  20 4d 4f 56 20 20 20 20  20 52 31 2c 52 36 2c 20  | MOV     R1,R6, |
0000a0d0  4c 53 52 20 23 32 0d 4e  de 1a 20 4d 4f 56 20 20  |LSR #2.N.. MOV  |
0000a0e0  20 20 20 52 32 2c 52 37  2c 20 4c 53 52 20 23 32  |   R2,R7, LSR #2|
0000a0f0  0d 4e e8 1c 20 41 44 44  20 20 20 20 20 52 31 2c  |.N.. ADD     R1,|
0000a100  52 31 2c 20 23 78 65 78  74 25 2f 32 0d 4e f2 17  |R1, #xext%/2.N..|
0000a110  20 42 4c 20 20 20 20 20  20 72 65 61 64 5f 70 6f  | BL      read_po|
0000a120  69 6e 74 0d 4e fc 13 20  43 4d 50 20 20 20 20 20  |int.N.. CMP     |
0000a130  52 30 2c 20 23 30 0d 4f  06 16 20 53 55 42 45 51  |R0, #0.O.. SUBEQ|
0000a140  20 20 20 52 37 2c 52 37  2c 20 23 34 0d 4f 10 06  |   R7,R7, #4.O..|
0000a150  20 3a 0d 4f 1a 1a 20 4d  4f 56 20 20 20 20 20 52  | :.O.. MOV     R|
0000a160  31 2c 52 36 2c 20 4c 53  52 20 23 32 0d 4f 24 1a  |1,R6, LSR #2.O$.|
0000a170  20 4d 4f 56 20 20 20 20  20 52 32 2c 52 37 2c 20  | MOV     R2,R7, |
0000a180  4c 53 52 20 23 32 0d 4f  2e 1c 20 41 44 44 20 20  |LSR #2.O.. ADD  |
0000a190  20 20 20 52 31 2c 52 31  2c 20 23 78 65 78 74 25  |   R1,R1, #xext%|
0000a1a0  2f 33 0d 4f 38 17 20 42  4c 20 20 20 20 20 20 72  |/3.O8. BL      r|
0000a1b0  65 61 64 5f 70 6f 69 6e  74 0d 4f 42 13 20 43 4d  |ead_point.OB. CM|
0000a1c0  50 20 20 20 20 20 52 30  2c 20 23 30 0d 4f 4c 16  |P     R0, #0.OL.|
0000a1d0  20 41 44 44 4e 45 20 20  20 52 37 2c 52 37 2c 20  | ADDNE   R7,R7, |
0000a1e0  23 34 0d 4f 56 06 20 3a  0d 4f 60 1a 20 4d 4f 56  |#4.OV. :.O`. MOV|
0000a1f0  20 20 20 20 20 52 31 2c  52 36 2c 20 4c 53 52 20  |     R1,R6, LSR |
0000a200  23 32 0d 4f 6a 1a 20 4d  4f 56 20 20 20 20 20 52  |#2.Oj. MOV     R|
0000a210  32 2c 52 37 2c 20 4c 53  52 20 23 32 0d 4f 74 1e  |2,R7, LSR #2.Ot.|
0000a220  20 41 44 44 20 20 20 20  20 52 31 2c 52 31 2c 20  | ADD     R1,R1, |
0000a230  23 78 65 78 74 25 2f 33  2a 32 0d 4f 7e 17 20 42  |#xext%/3*2.O~. B|
0000a240  4c 20 20 20 20 20 20 72  65 61 64 5f 70 6f 69 6e  |L      read_poin|
0000a250  74 0d 4f 88 13 20 43 4d  50 20 20 20 20 20 52 30  |t.O.. CMP     R0|
0000a260  2c 20 23 30 0d 4f 92 16  20 41 44 44 4e 45 20 20  |, #0.O.. ADDNE  |
0000a270  20 52 37 2c 52 37 2c 20  23 34 0d 4f 9c 06 20 3a  | R7,R7, #4.O.. :|
0000a280  0d 4f a6 1a 20 80 20 20  20 20 20 52 31 30 2c 52  |.O.. .     R10,R|
0000a290  38 2c 20 23 32 35 35 3c  3c 38 0d 4f b0 1c 20 4d  |8, #255<<8.O.. M|
0000a2a0  4f 56 20 20 20 20 20 52  31 30 2c 52 31 30 2c 20  |OV     R10,R10, |
0000a2b0  4c 53 52 20 23 38 0d 4f  ba 06 20 3a 0d 4f c4 1a  |LSR #8.O.. :.O..|
0000a2c0  20 4d 4f 56 20 20 20 20  20 52 31 2c 52 36 2c 20  | MOV     R1,R6, |
0000a2d0  4c 53 52 20 23 32 0d 4f  ce 1a 20 4d 4f 56 20 20  |LSR #2.O.. MOV  |
0000a2e0  20 20 20 52 32 2c 52 37  2c 20 4c 53 52 20 23 32  |   R2,R7, LSR #2|
0000a2f0  0d 4f d8 1c 20 41 44 44  20 20 20 20 20 52 31 2c  |.O.. ADD     R1,|
0000a300  52 31 2c 20 23 78 65 78  74 25 2b 31 0d 4f e2 16  |R1, #xext%+1.O..|
0000a310  20 41 44 44 20 20 20 20  20 52 32 2c 52 32 2c 20  | ADD     R2,R2, |
0000a320  23 34 0d 4f ec 17 20 42  4c 20 20 20 20 20 20 72  |#4.O.. BL      r|
0000a330  65 61 64 5f 70 6f 69 6e  74 0d 4f f6 13 20 43 4d  |ead_point.O.. CM|
0000a340  50 20 20 20 20 20 52 30  2c 20 23 30 0d 50 00 19  |P     R0, #0.P..|
0000a350  20 42 4e 45 20 20 20 20  20 70 32 5f 6e 6f 74 5f  | BNE     p2_not_|
0000a360  72 69 67 68 74 0d 50 0a  1a 20 4d 4f 56 20 20 20  |right.P.. MOV   |
0000a370  20 20 52 31 2c 52 36 2c  20 4c 53 52 20 23 32 0d  |  R1,R6, LSR #2.|
0000a380  50 14 1a 20 4d 4f 56 20  20 20 20 20 52 32 2c 52  |P.. MOV     R2,R|
0000a390  37 2c 20 4c 53 52 20 23  32 0d 50 1e 1a 20 41 44  |7, LSR #2.P.. AD|
0000a3a0  44 20 20 20 20 20 52 31  2c 52 31 2c 20 23 78 65  |D     R1,R1, #xe|
0000a3b0  78 74 25 0d 50 28 1c 20  41 44 44 20 20 20 20 20  |xt%.P(. ADD     |
0000a3c0  52 32 2c 52 32 2c 20 23  79 65 78 74 25 2d 32 0d  |R2,R2, #yext%-2.|
0000a3d0  50 32 17 20 42 4c 20 20  20 20 20 20 72 65 61 64  |P2. BL      read|
0000a3e0  5f 70 6f 69 6e 74 0d 50  3c 13 20 43 4d 50 20 20  |_point.P<. CMP  |
0000a3f0  20 20 20 52 30 2c 20 23  30 0d 50 46 19 20 42 4e  |   R0, #0.PF. BN|
0000a400  45 20 20 20 20 20 70 32  5f 6e 6f 74 5f 72 69 67  |E     p2_not_rig|
0000a410  68 74 0d 50 50 15 20 4d  4f 56 20 20 20 20 20 52  |ht.PP. MOV     R|
0000a420  30 2c 20 23 31 32 39 0d  50 5a 13 20 4d 4f 56 20  |0, #129.PZ. MOV |
0000a430  20 20 20 20 52 31 2c 20  23 30 0d 50 64 18 20 53  |    R1, #0.Pd. S|
0000a440  55 42 20 20 20 20 20 52  31 2c 52 31 2c 20 23 31  |UB     R1,R1, #1|
0000a450  32 34 0d 50 6e 15 20 4d  4f 56 20 20 20 20 20 52  |24.Pn. MOV     R|
0000a460  32 2c 20 23 32 35 35 0d  50 78 16 20 53 57 49 20  |2, #255.Px. SWI |
0000a470  20 20 20 20 22 4f 53 5f  42 79 74 65 22 0d 50 82  |    "OS_Byte".P.|
0000a480  15 20 43 4d 50 20 20 20  20 20 52 31 2c 20 23 32  |. CMP     R1, #2|
0000a490  35 35 0d 50 8c 19 20 42  4e 45 20 20 20 20 20 70  |55.P.. BNE     p|
0000a4a0  32 5f 6e 6f 74 5f 72 69  67 68 74 0d 50 96 18 20  |2_not_right.P.. |
0000a4b0  41 44 44 20 20 20 20 20  52 31 30 2c 52 31 30 2c  |ADD     R10,R10,|
0000a4c0  20 23 34 0d 50 a0 16 20  42 49 43 20 20 20 20 20  | #4.P.. BIC     |
0000a4d0  52 38 2c 52 38 2c 20 23  31 0d 50 aa 12 20 2e 70  |R8,R8, #1.P.. .p|
0000a4e0  32 5f 6e 6f 74 5f 72 69  67 68 74 0d 50 b4 06 20  |2_not_right.P.. |
0000a4f0  3a 0d 50 be 1a 20 4d 4f  56 20 20 20 20 20 52 31  |:.P.. MOV     R1|
0000a500  2c 52 36 2c 20 4c 53 52  20 23 32 0d 50 c8 1a 20  |,R6, LSR #2.P.. |
0000a510  4d 4f 56 20 20 20 20 20  52 32 2c 52 37 2c 20 4c  |MOV     R2,R7, L|
0000a520  53 52 20 23 32 0d 50 d2  16 20 53 55 42 20 20 20  |SR #2.P.. SUB   |
0000a530  20 20 52 31 2c 52 31 2c  20 23 31 0d 50 dc 16 20  |  R1,R1, #1.P.. |
0000a540  41 44 44 20 20 20 20 20  52 32 2c 52 32 2c 20 23  |ADD     R2,R2, #|
0000a550  34 0d 50 e6 17 20 42 4c  20 20 20 20 20 20 72 65  |4.P.. BL      re|
0000a560  61 64 5f 70 6f 69 6e 74  0d 50 f0 13 20 43 4d 50  |ad_point.P.. CMP|
0000a570  20 20 20 20 20 52 30 2c  20 23 30 0d 50 fa 18 20  |     R0, #0.P.. |
0000a580  42 4e 45 20 20 20 20 20  70 32 5f 6e 6f 74 5f 6c  |BNE     p2_not_l|
0000a590  65 66 74 0d 51 04 1a 20  4d 4f 56 20 20 20 20 20  |eft.Q.. MOV     |
0000a5a0  52 31 2c 52 36 2c 20 4c  53 52 20 23 32 0d 51 0e  |R1,R6, LSR #2.Q.|
0000a5b0  1a 20 4d 4f 56 20 20 20  20 20 52 32 2c 52 37 2c  |. MOV     R2,R7,|
0000a5c0  20 4c 53 52 20 23 32 0d  51 18 16 20 53 55 42 20  | LSR #2.Q.. SUB |
0000a5d0  20 20 20 20 52 31 2c 52  31 2c 20 23 31 0d 51 22  |    R1,R1, #1.Q"|
0000a5e0  1c 20 41 44 44 20 20 20  20 20 52 32 2c 52 32 2c  |. ADD     R2,R2,|
0000a5f0  20 23 79 65 78 74 25 2d  32 0d 51 2c 17 20 42 4c  | #yext%-2.Q,. BL|
0000a600  20 20 20 20 20 20 72 65  61 64 5f 70 6f 69 6e 74  |      read_point|
0000a610  0d 51 36 13 20 43 4d 50  20 20 20 20 20 52 30 2c  |.Q6. CMP     R0,|
0000a620  20 23 30 0d 51 40 18 20  42 4e 45 20 20 20 20 20  | #0.Q@. BNE     |
0000a630  70 32 5f 6e 6f 74 5f 6c  65 66 74 0d 51 4a 15 20  |p2_not_left.QJ. |
0000a640  4d 4f 56 20 20 20 20 20  52 30 2c 20 23 31 32 39  |MOV     R0, #129|
0000a650  0d 51 54 13 20 4d 4f 56  20 20 20 20 20 52 31 2c  |.QT. MOV     R1,|
0000a660  20 23 30 0d 51 5e 18 20  53 55 42 20 20 20 20 20  | #0.Q^. SUB     |
0000a670  52 31 2c 52 31 2c 20 23  31 32 33 0d 51 68 15 20  |R1,R1, #123.Qh. |
0000a680  4d 4f 56 20 20 20 20 20  52 32 2c 20 23 32 35 35  |MOV     R2, #255|
0000a690  0d 51 72 16 20 53 57 49  20 20 20 20 20 22 4f 53  |.Qr. SWI     "OS|
0000a6a0  5f 42 79 74 65 22 0d 51  7c 15 20 43 4d 50 20 20  |_Byte".Q|. CMP  |
0000a6b0  20 20 20 52 31 2c 20 23  32 35 35 0d 51 86 18 20  |   R1, #255.Q.. |
0000a6c0  42 4e 45 20 20 20 20 20  70 32 5f 6e 6f 74 5f 6c  |BNE     p2_not_l|
0000a6d0  65 66 74 0d 51 90 18 20  53 55 42 20 20 20 20 20  |eft.Q.. SUB     |
0000a6e0  52 31 30 2c 52 31 30 2c  20 23 34 0d 51 9a 15 20  |R10,R10, #4.Q.. |
0000a6f0  84 52 20 20 20 20 20 52  38 2c 52 38 2c 20 23 31  |.R     R8,R8, #1|
0000a700  0d 51 a4 11 20 2e 70 32  5f 6e 6f 74 5f 6c 65 66  |.Q.. .p2_not_lef|
0000a710  74 0d 51 ae 06 20 3a 0d  51 b8 16 20 43 4d 50 20  |t.Q.. :.Q.. CMP |
0000a720  20 20 20 20 52 31 30 2c  20 23 31 32 38 0d 51 c2  |    R10, #128.Q.|
0000a730  18 20 42 45 51 20 20 20  20 20 70 32 5f 73 69 64  |. BEQ     p2_sid|
0000a740  65 77 61 79 73 0d 51 cc  15 20 42 47 54 20 20 20  |eways.Q.. BGT   |
0000a750  20 20 70 32 5f 72 69 67  68 74 0d 51 d6 1a 20 4d  |  p2_right.Q.. M|
0000a760  4f 56 20 20 20 20 20 52  31 2c 52 36 2c 20 4c 53  |OV     R1,R6, LS|
0000a770  52 20 23 32 0d 51 e0 1a  20 4d 4f 56 20 20 20 20  |R #2.Q.. MOV    |
0000a780  20 52 32 2c 52 37 2c 20  4c 53 52 20 23 32 0d 51  | R2,R7, LSR #2.Q|
0000a790  ea 16 20 53 55 42 20 20  20 20 20 52 31 2c 52 31  |.. SUB     R1,R1|
0000a7a0  2c 20 23 31 0d 51 f4 16  20 41 44 44 20 20 20 20  |, #1.Q.. ADD    |
0000a7b0  20 52 32 2c 52 32 2c 20  23 32 0d 51 fe 17 20 42  | R2,R2, #2.Q.. B|
0000a7c0  4c 20 20 20 20 20 20 72  65 61 64 5f 70 6f 69 6e  |L      read_poin|
0000a7d0  74 0d 52 08 13 20 43 4d  50 20 20 20 20 20 52 30  |t.R.. CMP     R0|
0000a7e0  2c 20 23 30 0d 52 12 16  20 4d 4f 56 4e 45 20 20  |, #0.R.. MOVNE  |
0000a7f0  20 52 31 30 2c 20 23 31  32 38 0d 52 1c 1a 20 4d  | R10, #128.R.. M|
0000a800  4f 56 20 20 20 20 20 52  31 2c 52 36 2c 20 4c 53  |OV     R1,R6, LS|
0000a810  52 20 23 32 0d 52 26 1a  20 4d 4f 56 20 20 20 20  |R #2.R&. MOV    |
0000a820  20 52 32 2c 52 37 2c 20  4c 53 52 20 23 32 0d 52  | R2,R7, LSR #2.R|
0000a830  30 16 20 53 55 42 20 20  20 20 20 52 31 2c 52 31  |0. SUB     R1,R1|
0000a840  2c 20 23 31 0d 52 3a 1c  20 41 44 44 20 20 20 20  |, #1.R:. ADD    |
0000a850  20 52 32 2c 52 32 2c 20  23 79 65 78 74 25 2d 32  | R2,R2, #yext%-2|
0000a860  0d 52 44 17 20 42 4c 20  20 20 20 20 20 72 65 61  |.RD. BL      rea|
0000a870  64 5f 70 6f 69 6e 74 0d  52 4e 13 20 43 4d 50 20  |d_point.RN. CMP |
0000a880  20 20 20 20 52 30 2c 20  23 30 0d 52 58 16 20 4d  |    R0, #0.RX. M|
0000a890  4f 56 4e 45 20 20 20 52  31 30 2c 20 23 31 32 38  |OVNE   R10, #128|
0000a8a0  0d 52 62 18 20 42 20 20  20 20 20 20 20 70 32 5f  |.Rb. B       p2_|
0000a8b0  73 69 64 65 77 61 79 73  0d 52 6c 0e 20 2e 70 32  |sideways.Rl. .p2|
0000a8c0  5f 72 69 67 68 74 0d 52  76 1a 20 4d 4f 56 20 20  |_right.Rv. MOV  |
0000a8d0  20 20 20 52 31 2c 52 36  2c 20 4c 53 52 20 23 32  |   R1,R6, LSR #2|
0000a8e0  0d 52 80 1a 20 4d 4f 56  20 20 20 20 20 52 32 2c  |.R.. MOV     R2,|
0000a8f0  52 37 2c 20 4c 53 52 20  23 32 0d 52 8a 1a 20 41  |R7, LSR #2.R.. A|
0000a900  44 44 20 20 20 20 20 52  31 2c 52 31 2c 20 23 78  |DD     R1,R1, #x|
0000a910  65 78 74 25 0d 52 94 16  20 41 44 44 20 20 20 20  |ext%.R.. ADD    |
0000a920  20 52 32 2c 52 32 2c 20  23 32 0d 52 9e 17 20 42  | R2,R2, #2.R.. B|
0000a930  4c 20 20 20 20 20 20 72  65 61 64 5f 70 6f 69 6e  |L      read_poin|
0000a940  74 0d 52 a8 13 20 43 4d  50 20 20 20 20 20 52 30  |t.R.. CMP     R0|
0000a950  2c 20 23 30 0d 52 b2 16  20 4d 4f 56 4e 45 20 20  |, #0.R.. MOVNE  |
0000a960  20 52 31 30 2c 20 23 31  32 38 0d 52 bc 1a 20 4d  | R10, #128.R.. M|
0000a970  4f 56 20 20 20 20 20 52  31 2c 52 36 2c 20 4c 53  |OV     R1,R6, LS|
0000a980  52 20 23 32 0d 52 c6 1a  20 4d 4f 56 20 20 20 20  |R #2.R.. MOV    |
0000a990  20 52 32 2c 52 37 2c 20  4c 53 52 20 23 32 0d 52  | R2,R7, LSR #2.R|
0000a9a0  d0 1a 20 41 44 44 20 20  20 20 20 52 31 2c 52 31  |.. ADD     R1,R1|
0000a9b0  2c 20 23 78 65 78 74 25  0d 52 da 1c 20 41 44 44  |, #xext%.R.. ADD|
0000a9c0  20 20 20 20 20 52 32 2c  52 32 2c 20 23 79 65 78  |     R2,R2, #yex|
0000a9d0  74 25 2d 32 0d 52 e4 17  20 42 4c 20 20 20 20 20  |t%-2.R.. BL     |
0000a9e0  20 72 65 61 64 5f 70 6f  69 6e 74 0d 52 ee 13 20  | read_point.R.. |
0000a9f0  43 4d 50 20 20 20 20 20  52 30 2c 20 23 30 0d 52  |CMP     R0, #0.R|
0000aa00  f8 16 20 4d 4f 56 4e 45  20 20 20 52 31 30 2c 20  |.. MOVNE   R10, |
0000aa10  23 31 32 38 0d 53 02 18  20 42 20 20 20 20 20 20  |#128.S.. B      |
0000aa20  20 70 32 5f 73 69 64 65  77 61 79 73 0d 53 0c 11  | p2_sideways.S..|
0000aa30  20 2e 70 32 5f 73 69 64  65 77 61 79 73 0d 53 16  | .p2_sideways.S.|
0000aa40  1b 20 43 4d 50 20 20 20  20 20 52 31 30 2c 20 23  |. CMP     R10, #|
0000aa50  31 32 38 2b 32 35 2a 32  0d 53 20 1b 20 4d 4f 56  |128+25*2.S . MOV|
0000aa60  47 54 20 20 20 52 31 30  2c 20 23 31 32 38 2b 32  |GT   R10, #128+2|
0000aa70  35 2a 32 0d 53 2a 1b 20  43 4d 50 20 20 20 20 20  |5*2.S*. CMP     |
0000aa80  52 31 30 2c 20 23 31 32  38 2d 32 35 2a 32 0d 53  |R10, #128-25*2.S|
0000aa90  34 1b 20 4d 4f 56 4c 54  20 20 20 52 31 30 2c 20  |4. MOVLT   R10, |
0000aaa0  23 31 32 38 2d 32 35 2a  32 0d 53 3e 16 20 43 4d  |#128-25*2.S>. CM|
0000aab0  50 20 20 20 20 20 52 31  30 2c 20 23 31 32 38 0d  |P     R10, #128.|
0000aac0  53 48 18 20 41 44 44 4c  54 20 20 20 52 31 30 2c  |SH. ADDLT   R10,|
0000aad0  52 31 30 2c 20 23 31 0d  53 52 18 20 53 55 42 47  |R10, #1.SR. SUBG|
0000aae0  54 20 20 20 52 31 30 2c  52 31 30 2c 20 23 31 0d  |T   R10,R10, #1.|
0000aaf0  53 5c 1b 20 42 49 43 20  20 20 20 20 52 38 2c 52  |S\. BIC     R8,R|
0000ab00  38 2c 20 23 32 35 35 3c  3c 38 0d 53 66 1d 20 84  |8, #255<<8.Sf. .|
0000ab10  52 20 20 20 20 20 52 38  2c 52 38 2c 52 31 30 2c  |R     R8,R8,R10,|
0000ab20  20 4c 53 4c 20 23 38 0d  53 70 1a 20 53 55 42 20  | LSL #8.Sp. SUB |
0000ab30  20 20 20 20 52 31 30 2c  52 31 30 2c 20 23 31 32  |    R10,R10, #12|
0000ab40  38 0d 53 7a 1e 20 41 44  44 20 20 20 20 20 52 36  |8.Sz. ADD     R6|
0000ab50  2c 52 36 2c 52 31 30 2c  20 41 53 52 20 23 33 0d  |,R6,R10, ASR #3.|
0000ab60  53 84 06 20 3a 0d 53 8e  1b 20 80 20 20 20 20 20  |S.. :.S.. .     |
0000ab70  52 31 30 2c 52 38 2c 20  23 32 35 35 3c 3c 31 36  |R10,R8, #255<<16|
0000ab80  0d 53 98 1d 20 4d 4f 56  20 20 20 20 20 52 31 30  |.S.. MOV     R10|
0000ab90  2c 52 31 30 2c 20 4c 53  52 20 23 31 36 0d 53 a2  |,R10, LSR #16.S.|
0000aba0  06 20 3a 0d 53 ac 1a 20  4d 4f 56 20 20 20 20 20  |. :.S.. MOV     |
0000abb0  52 31 2c 52 36 2c 20 4c  53 52 20 23 32 0d 53 b6  |R1,R6, LSR #2.S.|
0000abc0  1a 20 4d 4f 56 20 20 20  20 20 52 32 2c 52 37 2c  |. MOV     R2,R7,|
0000abd0  20 4c 53 52 20 23 32 0d  53 c0 1c 20 41 44 44 20  | LSR #2.S.. ADD |
0000abe0  20 20 20 20 52 31 2c 52  31 2c 20 23 78 65 78 74  |    R1,R1, #xext|
0000abf0  25 2f 32 0d 53 ca 1a 20  41 44 44 20 20 20 20 20  |%/2.S.. ADD     |
0000ac00  52 32 2c 52 32 2c 20 23  79 65 78 74 25 0d 53 d4  |R2,R2, #yext%.S.|
0000ac10  17 20 42 4c 20 20 20 20  20 20 72 65 61 64 5f 70  |. BL      read_p|
0000ac20  6f 69 6e 74 0d 53 de 13  20 43 4d 50 20 20 20 20  |oint.S.. CMP    |
0000ac30  20 52 30 2c 20 23 30 0d  53 e8 16 20 42 4e 45 20  | R0, #0.S.. BNE |
0000ac40  20 20 20 20 70 32 5f 6e  6f 74 5f 75 70 0d 53 f2  |    p2_not_up.S.|
0000ac50  1a 3b 4d 4f 56 20 20 20  20 20 52 31 2c 52 36 2c  |.;MOV     R1,R6,|
0000ac60  20 4c 53 52 20 23 32 0d  53 fc 1a 3b 4d 4f 56 20  | LSR #2.S..;MOV |
0000ac70  20 20 20 20 52 32 2c 52  37 2c 20 4c 53 52 20 23  |    R2,R7, LSR #|
0000ac80  32 0d 54 06 1c 3b 41 44  44 20 20 20 20 20 52 31  |2.T..;ADD     R1|
0000ac90  2c 52 31 2c 20 23 78 65  78 74 25 2f 32 0d 54 10  |,R1, #xext%/2.T.|
0000aca0  1a 3b 41 44 44 20 20 20  20 20 52 32 2c 52 32 2c  |.;ADD     R2,R2,|
0000acb0  20 23 79 65 78 74 25 0d  54 1a 17 3b 42 4c 20 20  | #yext%.T..;BL  |
0000acc0  20 20 20 20 72 65 61 64  5f 70 6f 69 6e 74 0d 54  |    read_point.T|
0000acd0  24 13 3b 43 4d 50 20 20  20 20 20 52 30 2c 20 23  |$.;CMP     R0, #|
0000ace0  30 0d 54 2e 16 3b 42 4e  45 20 20 20 20 20 70 32  |0.T..;BNE     p2|
0000acf0  5f 6e 6f 74 5f 75 70 0d  54 38 15 20 4d 4f 56 20  |_not_up.T8. MOV |
0000ad00  20 20 20 20 52 30 2c 20  23 31 32 39 0d 54 42 13  |    R0, #129.TB.|
0000ad10  20 4d 4f 56 20 20 20 20  20 52 31 2c 20 23 30 0d  | MOV     R1, #0.|
0000ad20  54 4c 17 20 53 55 42 20  20 20 20 20 52 31 2c 52  |TL. SUB     R1,R|
0000ad30  31 2c 20 23 32 37 0d 54  56 15 20 4d 4f 56 20 20  |1, #27.TV. MOV  |
0000ad40  20 20 20 52 32 2c 20 23  32 35 35 0d 54 60 16 20  |   R2, #255.T`. |
0000ad50  53 57 49 20 20 20 20 20  22 4f 53 5f 42 79 74 65  |SWI     "OS_Byte|
0000ad60  22 0d 54 6a 15 20 43 4d  50 20 20 20 20 20 52 31  |".Tj. CMP     R1|
0000ad70  2c 20 23 32 35 35 0d 54  74 18 20 41 44 44 45 51  |, #255.Tt. ADDEQ|
0000ad80  20 20 20 52 31 30 2c 52  31 30 2c 20 23 34 0d 54  |   R10,R10, #4.T|
0000ad90  7e 0f 20 2e 70 32 5f 6e  6f 74 5f 75 70 0d 54 88  |~. .p2_not_up.T.|
0000ada0  06 20 3a 0d 54 92 1a 20  4d 4f 56 20 20 20 20 20  |. :.T.. MOV     |
0000adb0  52 31 2c 52 36 2c 20 4c  53 52 20 23 32 0d 54 9c  |R1,R6, LSR #2.T.|
0000adc0  1a 20 4d 4f 56 20 20 20  20 20 52 32 2c 52 37 2c  |. MOV     R2,R7,|
0000add0  20 4c 53 52 20 23 32 0d  54 a6 1c 20 41 44 44 20  | LSR #2.T.. ADD |
0000ade0  20 20 20 20 52 31 2c 52  31 2c 20 23 78 65 78 74  |    R1,R1, #xext|
0000adf0  25 2d 32 0d 54 b0 17 20  42 4c 20 20 20 20 20 20  |%-2.T.. BL      |
0000ae00  72 65 61 64 5f 70 6f 69  6e 74 0d 54 ba 13 20 43  |read_point.T.. C|
0000ae10  4d 50 20 20 20 20 20 52  30 2c 20 23 30 0d 54 c4  |MP     R0, #0.T.|
0000ae20  18 20 42 4e 45 20 20 20  20 20 70 32 5f 6e 6f 74  |. BNE     p2_not|
0000ae30  5f 64 6f 77 6e 0d 54 ce  1a 20 4d 4f 56 20 20 20  |_down.T.. MOV   |
0000ae40  20 20 52 31 2c 52 36 2c  20 4c 53 52 20 23 32 0d  |  R1,R6, LSR #2.|
0000ae50  54 d8 1a 20 4d 4f 56 20  20 20 20 20 52 32 2c 52  |T.. MOV     R2,R|
0000ae60  37 2c 20 4c 53 52 20 23  32 0d 54 e2 16 20 41 44  |7, LSR #2.T.. AD|
0000ae70  44 20 20 20 20 20 52 31  2c 52 31 2c 20 23 32 0d  |D     R1,R1, #2.|
0000ae80  54 ec 17 20 42 4c 20 20  20 20 20 20 72 65 61 64  |T.. BL      read|
0000ae90  5f 70 6f 69 6e 74 0d 54  f6 13 20 43 4d 50 20 20  |_point.T.. CMP  |
0000aea0  20 20 20 52 30 2c 20 23  30 0d 55 00 18 20 42 4e  |   R0, #0.U.. BN|
0000aeb0  45 20 20 20 20 20 70 32  5f 6e 6f 74 5f 64 6f 77  |E     p2_not_dow|
0000aec0  6e 0d 55 0a 15 20 4d 4f  56 20 20 20 20 20 52 30  |n.U.. MOV     R0|
0000aed0  2c 20 23 31 32 39 0d 55  14 13 20 4d 4f 56 20 20  |, #129.U.. MOV  |
0000aee0  20 20 20 52 31 2c 20 23  30 0d 55 1e 18 20 53 55  |   R1, #0.U.. SU|
0000aef0  42 20 20 20 20 20 52 31  2c 52 31 2c 20 23 31 30  |B     R1,R1, #10|
0000af00  39 0d 55 28 15 20 4d 4f  56 20 20 20 20 20 52 32  |9.U(. MOV     R2|
0000af10  2c 20 23 32 35 35 0d 55  32 16 20 53 57 49 20 20  |, #255.U2. SWI  |
0000af20  20 20 20 22 4f 53 5f 42  79 74 65 22 0d 55 3c 15  |   "OS_Byte".U<.|
0000af30  20 43 4d 50 20 20 20 20  20 52 31 2c 20 23 32 35  | CMP     R1, #25|
0000af40  35 0d 55 46 18 20 53 55  42 45 51 20 20 20 52 31  |5.UF. SUBEQ   R1|
0000af50  30 2c 52 31 30 2c 20 23  32 0d 55 50 11 20 2e 70  |0,R10, #2.UP. .p|
0000af60  32 5f 6e 6f 74 5f 64 6f  77 6e 0d 55 5a 06 20 3a  |2_not_down.UZ. :|
0000af70  0d 55 64 18 20 53 55 42  20 20 20 20 20 52 31 30  |.Ud. SUB     R10|
0000af80  2c 52 31 30 2c 20 23 31  0d 55 6e 06 20 3a 0d 55  |,R10, #1.Un. :.U|
0000af90  78 16 20 43 4d 50 20 20  20 20 20 52 31 30 2c 20  |x. CMP     R10, |
0000afa0  23 31 32 38 0d 55 82 12  20 42 45 51 20 20 20 20  |#128.U.. BEQ    |
0000afb0  20 70 32 5f 75 64 0d 55  8c 12 20 42 47 54 20 20  | p2_ud.U.. BGT  |
0000afc0  20 20 20 70 32 5f 75 70  0d 55 96 1a 20 4d 4f 56  |   p2_up.U.. MOV|
0000afd0  20 20 20 20 20 52 31 2c  52 36 2c 20 4c 53 52 20  |     R1,R6, LSR |
0000afe0  23 32 0d 55 a0 1a 20 4d  4f 56 20 20 20 20 20 52  |#2.U.. MOV     R|
0000aff0  32 2c 52 37 2c 20 4c 53  52 20 23 32 0d 55 aa 1c  |2,R7, LSR #2.U..|
0000b000  20 41 44 44 20 20 20 20  20 52 31 2c 52 31 2c 20  | ADD     R1,R1, |
0000b010  23 78 65 78 74 25 2f 32  0d 55 b4 16 20 53 55 42  |#xext%/2.U.. SUB|
0000b020  20 20 20 20 20 52 32 2c  52 32 2c 20 23 31 0d 55  |     R2,R2, #1.U|
0000b030  be 17 20 42 4c 20 20 20  20 20 20 72 65 61 64 5f  |.. BL      read_|
0000b040  70 6f 69 6e 74 0d 55 c8  13 20 43 4d 50 20 20 20  |point.U.. CMP   |
0000b050  20 20 52 30 2c 20 23 30  0d 55 d2 16 20 4d 4f 56  |  R0, #0.U.. MOV|
0000b060  4e 45 20 20 20 52 31 30  2c 20 23 31 32 38 0d 55  |NE   R10, #128.U|
0000b070  dc 12 20 42 20 20 20 20  20 20 20 70 32 5f 75 64  |.. B       p2_ud|
0000b080  0d 55 e6 0b 20 2e 70 32  5f 75 70 0d 55 f0 1a 20  |.U.. .p2_up.U.. |
0000b090  4d 4f 56 20 20 20 20 20  52 31 2c 52 36 2c 20 4c  |MOV     R1,R6, L|
0000b0a0  53 52 20 23 32 0d 55 fa  1a 20 4d 4f 56 20 20 20  |SR #2.U.. MOV   |
0000b0b0  20 20 52 32 2c 52 37 2c  20 4c 53 52 20 23 32 0d  |  R2,R7, LSR #2.|
0000b0c0  56 04 1e 20 41 44 44 20  20 20 20 20 52 31 2c 52  |V.. ADD     R1,R|
0000b0d0  31 2c 20 23 78 65 78 74  25 2f 32 2b 32 0d 56 0e  |1, #xext%/2+2.V.|
0000b0e0  1a 20 41 44 44 20 20 20  20 20 52 32 2c 52 32 2c  |. ADD     R2,R2,|
0000b0f0  20 23 79 65 78 74 25 0d  56 18 17 20 42 4c 20 20  | #yext%.V.. BL  |
0000b100  20 20 20 20 72 65 61 64  5f 70 6f 69 6e 74 0d 56  |    read_point.V|
0000b110  22 13 20 43 4d 50 20 20  20 20 20 52 30 2c 20 23  |". CMP     R0, #|
0000b120  30 0d 56 2c 16 20 4d 4f  56 4e 45 20 20 20 52 31  |0.V,. MOVNE   R1|
0000b130  30 2c 20 23 31 32 38 0d  56 36 1a 20 4d 4f 56 20  |0, #128.V6. MOV |
0000b140  20 20 20 20 52 31 2c 52  36 2c 20 4c 53 52 20 23  |    R1,R6, LSR #|
0000b150  32 0d 56 40 1a 20 4d 4f  56 20 20 20 20 20 52 32  |2.V@. MOV     R2|
0000b160  2c 52 37 2c 20 4c 53 52  20 23 32 0d 56 4a 1e 20  |,R7, LSR #2.VJ. |
0000b170  41 44 44 20 20 20 20 20  52 31 2c 52 31 2c 20 23  |ADD     R1,R1, #|
0000b180  78 65 78 74 25 2f 32 2d  32 0d 56 54 1a 20 41 44  |xext%/2-2.VT. AD|
0000b190  44 20 20 20 20 20 52 32  2c 52 32 2c 20 23 79 65  |D     R2,R2, #ye|
0000b1a0  78 74 25 0d 56 5e 17 20  42 4c 20 20 20 20 20 20  |xt%.V^. BL      |
0000b1b0  72 65 61 64 5f 70 6f 69  6e 74 0d 56 68 13 20 43  |read_point.Vh. C|
0000b1c0  4d 50 20 20 20 20 20 52  30 2c 20 23 30 0d 56 72  |MP     R0, #0.Vr|
0000b1d0  16 20 4d 4f 56 4e 45 20  20 20 52 31 30 2c 20 23  |. MOVNE   R10, #|
0000b1e0  31 32 38 0d 56 7c 12 20  42 20 20 20 20 20 20 20  |128.V|. B       |
0000b1f0  70 32 5f 75 64 0d 56 86  0b 20 2e 70 32 5f 75 64  |p2_ud.V.. .p2_ud|
0000b200  0d 56 90 1b 20 43 4d 50  20 20 20 20 20 52 31 30  |.V.. CMP     R10|
0000b210  2c 20 23 31 32 38 2b 31  31 2a 34 0d 56 9a 1b 20  |, #128+11*4.V.. |
0000b220  4d 4f 56 47 54 20 20 20  52 31 30 2c 20 23 31 32  |MOVGT   R10, #12|
0000b230  38 2b 31 31 2a 34 0d 56  a4 1a 20 43 4d 50 20 20  |8+11*4.V.. CMP  |
0000b240  20 20 20 52 31 30 2c 20  23 31 32 38 2d 38 2a 34  |   R10, #128-8*4|
0000b250  0d 56 ae 1a 20 4d 4f 56  4c 54 20 20 20 52 31 30  |.V.. MOVLT   R10|
0000b260  2c 20 23 31 32 38 2d 38  2a 34 0d 56 b8 16 20 43  |, #128-8*4.V.. C|
0000b270  4d 50 20 20 20 20 20 52  31 30 2c 20 23 31 32 38  |MP     R10, #128|
0000b280  0d 56 c2 1c 20 42 49 43  20 20 20 20 20 52 38 2c  |.V.. BIC     R8,|
0000b290  52 38 2c 20 23 32 35 35  3c 3c 31 36 0d 56 cc 1e  |R8, #255<<16.V..|
0000b2a0  20 84 52 20 20 20 20 20  52 38 2c 52 38 2c 52 31  | .R     R8,R8,R1|
0000b2b0  30 2c 20 4c 53 4c 20 23  31 36 0d 56 d6 1a 20 53  |0, LSL #16.V.. S|
0000b2c0  55 42 20 20 20 20 20 52  31 30 2c 52 31 30 2c 20  |UB     R10,R10, |
0000b2d0  23 31 32 38 0d 56 e0 1e  20 41 44 44 20 20 20 20  |#128.V.. ADD    |
0000b2e0  20 52 37 2c 52 37 2c 52  31 30 2c 20 41 53 52 20  | R7,R7,R10, ASR |
0000b2f0  23 32 0d 56 ea 06 20 3a  0d 56 f4 1e 20 4c 44 52  |#2.V.. :.V.. LDR|
0000b300  20 20 20 20 20 52 30 2c  20 61 64 72 5f 70 32 5f  |     R0, adr_p2_|
0000b310  77 65 61 70 6f 6e 0d 56  fe 14 20 4c 44 52 20 20  |weapon.V.. LDR  |
0000b320  20 20 20 52 30 2c 5b 52  30 5d 0d 57 08 13 20 43  |   R0,[R0].W.. C|
0000b330  4d 50 20 20 20 20 20 52  30 2c 20 23 32 0d 57 12  |MP     R0, #2.W.|
0000b340  1b 20 42 45 51 20 20 20  20 20 70 32 5f 66 69 72  |. BEQ     p2_fir|
0000b350  65 5f 70 69 73 74 6f 6c  0d 57 1c 13 20 43 4d 50  |e_pistol.W.. CMP|
0000b360  20 20 20 20 20 52 30 2c  20 23 33 0d 57 26 18 20  |     R0, #3.W&. |
0000b370  42 45 51 20 20 20 20 20  70 32 5f 66 69 72 65 5f  |BEQ     p2_fire_|
0000b380  67 75 6e 0d 57 30 13 20  43 4d 50 20 20 20 20 20  |gun.W0. CMP     |
0000b390  52 30 2c 20 23 34 0d 57  3a 1b 20 42 45 51 20 20  |R0, #4.W:. BEQ  |
0000b3a0  20 20 20 70 32 5f 66 69  72 65 5f 6d 6f 72 74 61  |   p2_fire_morta|
0000b3b0  72 0d 57 44 13 20 43 4d  50 20 20 20 20 20 52 30  |r.WD. CMP     R0|
0000b3c0  2c 20 23 35 0d 57 4e 1b  20 42 45 51 20 20 20 20  |, #5.WN. BEQ    |
0000b3d0  20 70 32 5f 66 69 72 65  5f 68 6f 6d 69 6e 67 0d  | p2_fire_homing.|
0000b3e0  57 58 13 20 43 4d 50 20  20 20 20 20 52 30 2c 20  |WX. CMP     R0, |
0000b3f0  23 36 0d 57 62 1c 20 42  45 51 20 20 20 20 20 70  |#6.Wb. BEQ     p|
0000b400  32 5f 66 69 72 65 5f 73  65 65 6b 69 6e 67 0d 57  |2_fire_seeking.W|
0000b410  6c 13 20 43 4d 50 20 20  20 20 20 52 30 2c 20 23  |l. CMP     R0, #|
0000b420  37 0d 57 76 1d 20 42 45  51 20 20 20 20 20 70 32  |7.Wv. BEQ     p2|
0000b430  5f 66 69 72 65 5f 76 65  72 74 69 63 61 6c 0d 57  |_fire_vertical.W|
0000b440  80 13 20 43 4d 50 20 20  20 20 20 52 30 2c 20 23  |.. CMP     R0, #|
0000b450  38 0d 57 8a 1a 20 42 45  51 20 20 20 20 20 70 32  |8.W.. BEQ     p2|
0000b460  5f 66 69 72 65 5f 66 6c  61 6d 65 0d 57 94 13 20  |_fire_flame.W.. |
0000b470  43 4d 50 20 20 20 20 20  52 30 2c 20 23 39 0d 57  |CMP     R0, #9.W|
0000b480  9e 19 20 42 45 51 20 20  20 20 20 70 32 5f 66 69  |.. BEQ     p2_fi|
0000b490  72 65 5f 62 6f 6d 62 0d  57 a8 14 20 43 4d 50 20  |re_bomb.W.. CMP |
0000b4a0  20 20 20 20 52 30 2c 20  23 31 30 0d 57 b2 19 20  |    R0, #10.W.. |
0000b4b0  42 45 51 20 20 20 20 20  70 32 5f 66 69 72 65 5f  |BEQ     p2_fire_|
0000b4c0  67 6c 75 65 0d 57 bc 06  20 3a 0d 57 c6 14 20 2e  |glue.W.. :.W.. .|
0000b4d0  70 32 5f 66 69 72 65 5f  70 69 73 74 6f 6c 0d 57  |p2_fire_pistol.W|
0000b4e0  d0 18 20 4c 44 52 20 20  20 20 20 52 30 2c 20 70  |.. LDR     R0, p|
0000b4f0  32 5f 66 69 72 65 0d 57  da 13 20 43 4d 50 20 20  |2_fire.W.. CMP  |
0000b500  20 20 20 52 30 2c 20 23  30 0d 57 e4 1b 20 42 45  |   R0, #0.W.. BE|
0000b510  51 20 20 20 20 20 70 32  5f 70 69 73 74 6f 6c 5f  |Q     p2_pistol_|
0000b520  73 68 6f 74 0d 57 ee 15  20 4d 4f 56 20 20 20 20  |shot.W.. MOV    |
0000b530  20 52 30 2c 20 23 31 32  39 0d 57 f8 13 20 4d 4f  | R0, #129.W.. MO|
0000b540  56 20 20 20 20 20 52 31  2c 20 23 30 0d 58 02 17  |V     R1, #0.X..|
0000b550  20 53 55 42 20 20 20 20  20 52 31 2c 52 31 2c 20  | SUB     R1,R1, |
0000b560  23 35 39 0d 58 0c 15 20  4d 4f 56 20 20 20 20 20  |#59.X.. MOV     |
0000b570  52 32 2c 20 23 32 35 35  0d 58 16 16 20 53 57 49  |R2, #255.X.. SWI|
0000b580  20 20 20 20 20 22 4f 53  5f 42 79 74 65 22 0d 58  |     "OS_Byte".X|
0000b590  20 15 20 43 4d 50 20 20  20 20 20 52 31 2c 20 23  | . CMP     R1, #|
0000b5a0  32 35 35 0d 58 2a 13 20  4d 4f 56 4e 45 20 20 20  |255.X*. MOVNE   |
0000b5b0  52 30 2c 20 23 30 0d 58  34 18 20 53 54 52 4e 45  |R0, #0.X4. STRNE|
0000b5c0  20 20 20 52 30 2c 20 70  32 5f 66 69 72 65 0d 58  |   R0, p2_fire.X|
0000b5d0  3e 1f 20 42 20 20 20 20  20 20 20 70 32 5f 6e 6f  |>. B       p2_no|
0000b5e0  74 5f 66 69 72 65 5f 70  69 73 74 6f 6c 0d 58 48  |t_fire_pistol.XH|
0000b5f0  14 20 2e 70 32 5f 70 69  73 74 6f 6c 5f 73 68 6f  |. .p2_pistol_sho|
0000b600  74 0d 58 52 15 20 4d 4f  56 20 20 20 20 20 52 30  |t.XR. MOV     R0|
0000b610  2c 20 23 31 32 39 0d 58  5c 13 20 4d 4f 56 20 20  |, #129.X\. MOV  |
0000b620  20 20 20 52 31 2c 20 23  30 0d 58 66 17 20 53 55  |   R1, #0.Xf. SU|
0000b630  42 20 20 20 20 20 52 31  2c 52 31 2c 20 23 35 39  |B     R1,R1, #59|
0000b640  0d 58 70 15 20 4d 4f 56  20 20 20 20 20 52 32 2c  |.Xp. MOV     R2,|
0000b650  20 23 32 35 35 0d 58 7a  16 20 53 57 49 20 20 20  | #255.Xz. SWI   |
0000b660  20 20 22 4f 53 5f 42 79  74 65 22 0d 58 84 15 20  |  "OS_Byte".X.. |
0000b670  43 4d 50 20 20 20 20 20  52 31 2c 20 23 32 35 35  |CMP     R1, #255|
0000b680  0d 58 8e 1f 20 42 4e 45  20 20 20 20 20 70 32 5f  |.X.. BNE     p2_|
0000b690  6e 6f 74 5f 66 69 72 65  5f 70 69 73 74 6f 6c 0d  |not_fire_pistol.|
0000b6a0  58 98 13 20 4d 4f 56 20  20 20 20 20 52 30 2c 20  |X.. MOV     R0, |
0000b6b0  23 32 0d 58 a2 1a 20 4d  4f 56 20 20 20 20 20 52  |#2.X.. MOV     R|
0000b6c0  31 2c 52 36 2c 20 4c 53  52 20 23 32 0d 58 ac 1a  |1,R6, LSR #2.X..|
0000b6d0  20 4d 4f 56 20 20 20 20  20 52 32 2c 52 37 2c 20  | MOV     R2,R7, |
0000b6e0  4c 53 52 20 23 32 0d 58  b6 1a 20 41 44 44 20 20  |LSR #2.X.. ADD  |
0000b6f0  20 20 20 52 31 2c 52 31  2c 20 23 78 65 78 74 25  |   R1,R1, #xext%|
0000b700  0d 58 c0 1e 20 41 44 44  20 20 20 20 20 52 32 2c  |.X.. ADD     R2,|
0000b710  52 32 2c 20 23 79 65 78  74 25 2f 34 2a 32 0d 58  |R2, #yext%/4*2.X|
0000b720  ca 18 20 52 53 42 20 20  20 20 20 52 32 2c 52 32  |.. RSB     R2,R2|
0000b730  2c 20 23 32 35 36 0d 58  d4 14 20 4d 4f 56 20 20  |, #256.X.. MOV  |
0000b740  20 20 20 52 33 2c 20 23  38 30 0d 58 de 13 20 4d  |   R3, #80.X.. M|
0000b750  4f 56 20 20 20 20 20 52  34 2c 20 23 30 0d 58 e8  |OV     R4, #0.X.|
0000b760  13 20 4d 4f 56 20 20 20  20 20 52 35 2c 20 23 30  |. MOV     R5, #0|
0000b770  0d 58 f2 13 20 54 53 54  20 20 20 20 20 52 38 2c  |.X.. TST     R8,|
0000b780  20 23 31 0d 58 fc 16 20  52 53 42 4e 45 20 20 20  | #1.X.. RSBNE   |
0000b790  52 33 2c 52 33 2c 20 23  30 0d 59 06 1a 20 53 55  |R3,R3, #0.Y.. SU|
0000b7a0  42 4e 45 20 20 20 52 31  2c 52 31 2c 20 23 78 65  |BNE   R1,R1, #xe|
0000b7b0  78 74 25 0d 59 10 15 20  42 4c 20 20 20 20 20 20  |xt%.Y.. BL      |
0000b7c0  61 64 64 5f 63 65 6c 6c  0d 59 1a 13 20 4d 4f 56  |add_cell.Y.. MOV|
0000b7d0  20 20 20 20 20 52 35 2c  20 23 32 0d 59 24 13 20  |     R5, #2.Y$. |
0000b7e0  4d 4f 56 20 20 20 20 20  52 30 2c 20 23 31 0d 59  |MOV     R0, #1.Y|
0000b7f0  2e 18 20 53 54 52 20 20  20 20 20 52 30 2c 20 70  |.. STR     R0, p|
0000b800  32 5f 66 69 72 65 0d 59  38 13 20 4d 4f 56 20 20  |2_fire.Y8. MOV  |
0000b810  20 20 20 52 30 2c 20 23  37 0d 59 42 14 20 4d 56  |   R0, #7.YB. MV|
0000b820  4e 20 20 20 20 20 52 31  2c 20 23 31 34 0d 59 4c  |N     R1, #14.YL|
0000b830  17 20 4d 4f 56 20 20 20  20 20 52 32 2c 20 23 31  |. MOV     R2, #1|
0000b840  32 38 30 30 0d 59 56 13  20 4d 4f 56 20 20 20 20  |2800.YV. MOV    |
0000b850  20 52 33 2c 20 23 30 0d  59 60 1c 20 53 57 49 20  | R3, #0.Y`. SWI |
0000b860  20 20 20 20 22 53 6f 75  6e 64 5f 43 6f 6e 74 72  |    "Sound_Contr|
0000b870  6f 6c 22 0d 59 6a 18 20  2e 70 32 5f 6e 6f 74 5f  |ol".Yj. .p2_not_|
0000b880  66 69 72 65 5f 70 69 73  74 6f 6c 0d 59 74 18 20  |fire_pistol.Yt. |
0000b890  42 20 20 20 20 20 20 20  70 32 5f 65 6e 64 5f 66  |B       p2_end_f|
0000b8a0  69 72 65 0d 59 7e 06 20  3a 0d 59 88 11 20 2e 70  |ire.Y~. :.Y.. .p|
0000b8b0  32 5f 66 69 72 65 5f 67  75 6e 0d 59 92 15 20 4d  |2_fire_gun.Y.. M|
0000b8c0  4f 56 20 20 20 20 20 52  30 2c 20 23 31 32 39 0d  |OV     R0, #129.|
0000b8d0  59 9c 13 20 4d 4f 56 20  20 20 20 20 52 31 2c 20  |Y.. MOV     R1, |
0000b8e0  23 30 0d 59 a6 17 20 53  55 42 20 20 20 20 20 52  |#0.Y.. SUB     R|
0000b8f0  31 2c 52 31 2c 20 23 35  39 0d 59 b0 15 20 4d 4f  |1,R1, #59.Y.. MO|
0000b900  56 20 20 20 20 20 52 32  2c 20 23 32 35 35 0d 59  |V     R2, #255.Y|
0000b910  ba 16 20 53 57 49 20 20  20 20 20 22 4f 53 5f 42  |.. SWI     "OS_B|
0000b920  79 74 65 22 0d 59 c4 15  20 43 4d 50 20 20 20 20  |yte".Y.. CMP    |
0000b930  20 52 31 2c 20 23 32 35  35 0d 59 ce 1c 20 42 4e  | R1, #255.Y.. BN|
0000b940  45 20 20 20 20 20 70 32  5f 6e 6f 74 5f 66 69 72  |E     p2_not_fir|
0000b950  65 5f 67 75 6e 0d 59 d8  18 20 4c 44 52 20 20 20  |e_gun.Y.. LDR   |
0000b960  20 20 52 30 2c 20 70 32  5f 66 69 72 65 0d 59 e2  |  R0, p2_fire.Y.|
0000b970  16 20 41 44 44 20 20 20  20 20 52 30 2c 52 30 2c  |. ADD     R0,R0,|
0000b980  20 23 31 0d 59 ec 16 20  80 20 20 20 20 20 52 30  | #1.Y.. .     R0|
0000b990  2c 52 30 2c 20 23 25 31  31 0d 59 f6 18 20 53 54  |,R0, #%11.Y.. ST|
0000b9a0  52 20 20 20 20 20 52 30  2c 20 70 32 5f 66 69 72  |R     R0, p2_fir|
0000b9b0  65 0d 5a 00 15 20 54 53  54 20 20 20 20 20 52 30  |e.Z.. TST     R0|
0000b9c0  2c 20 23 25 31 31 0d 5a  0a 1c 20 42 4e 45 20 20  |, #%11.Z.. BNE  |
0000b9d0  20 20 20 70 32 5f 6e 6f  74 5f 66 69 72 65 5f 67  |   p2_not_fire_g|
0000b9e0  75 6e 0d 5a 14 13 20 4d  4f 56 20 20 20 20 20 52  |un.Z.. MOV     R|
0000b9f0  30 2c 20 23 33 0d 5a 1e  1a 20 4d 4f 56 20 20 20  |0, #3.Z.. MOV   |
0000ba00  20 20 52 31 2c 52 36 2c  20 4c 53 52 20 23 32 0d  |  R1,R6, LSR #2.|
0000ba10  5a 28 1a 20 4d 4f 56 20  20 20 20 20 52 32 2c 52  |Z(. MOV     R2,R|
0000ba20  37 2c 20 4c 53 52 20 23  32 0d 5a 32 1a 20 41 44  |7, LSR #2.Z2. AD|
0000ba30  44 20 20 20 20 20 52 31  2c 52 31 2c 20 23 78 65  |D     R1,R1, #xe|
0000ba40  78 74 25 0d 5a 3c 1e 20  41 44 44 20 20 20 20 20  |xt%.Z<. ADD     |
0000ba50  52 32 2c 52 32 2c 20 23  79 65 78 74 25 2f 34 2a  |R2,R2, #yext%/4*|
0000ba60  32 0d 5a 46 18 20 52 53  42 20 20 20 20 20 52 32  |2.ZF. RSB     R2|
0000ba70  2c 52 32 2c 20 23 32 35  36 0d 5a 50 14 20 4d 4f  |,R2, #256.ZP. MO|
0000ba80  56 20 20 20 20 20 52 33  2c 20 23 38 30 0d 5a 5a  |V     R3, #80.ZZ|
0000ba90  18 20 4c 44 52 20 20 20  20 20 52 35 2c 20 61 64  |. LDR     R5, ad|
0000baa0  72 5f 72 6e 64 0d 5a 64  14 20 4c 44 52 20 20 20  |r_rnd.Zd. LDR   |
0000bab0  20 20 52 35 2c 5b 52 35  5d 0d 5a 6e 18 20 80 20  |  R5,[R5].Zn. . |
0000bac0  20 20 20 20 52 34 2c 52  35 2c 20 23 25 31 31 31  |    R4,R5, #%111|
0000bad0  31 0d 5a 78 1a 20 53 55  42 20 20 20 20 20 52 34  |1.Zx. SUB     R4|
0000bae0  2c 52 34 2c 20 23 25 30  31 31 31 0d 5a 82 1a 20  |,R4, #%0111.Z.. |
0000baf0  80 20 20 20 20 20 52 35  2c 52 35 2c 20 23 25 31  |.     R5,R5, #%1|
0000bb00  31 30 30 30 30 0d 5a 8c  1a 20 4d 4f 56 20 20 20  |10000.Z.. MOV   |
0000bb10  20 20 52 35 2c 52 35 2c  20 4c 53 52 20 23 34 0d  |  R5,R5, LSR #4.|
0000bb20  5a 96 15 20 41 44 44 20  20 20 20 20 52 31 2c 52  |Z.. ADD     R1,R|
0000bb30  31 2c 52 35 0d 5a a0 13  20 4d 4f 56 20 20 20 20  |1,R5.Z.. MOV    |
0000bb40  20 52 35 2c 20 23 30 0d  5a aa 13 20 54 53 54 20  | R5, #0.Z.. TST |
0000bb50  20 20 20 20 52 38 2c 20  23 31 0d 5a b4 16 20 52  |    R8, #1.Z.. R|
0000bb60  53 42 4e 45 20 20 20 52  33 2c 52 33 2c 20 23 30  |SBNE   R3,R3, #0|
0000bb70  0d 5a be 1c 20 53 55 42  4e 45 20 20 20 52 31 2c  |.Z.. SUBNE   R1,|
0000bb80  52 31 2c 20 23 78 65 78  74 25 2b 32 0d 5a c8 15  |R1, #xext%+2.Z..|
0000bb90  20 42 4c 20 20 20 20 20  20 61 64 64 5f 63 65 6c  | BL      add_cel|
0000bba0  6c 0d 5a d2 13 20 4d 4f  56 20 20 20 20 20 52 35  |l.Z.. MOV     R5|
0000bbb0  2c 20 23 32 0d 5a dc 13  20 4d 4f 56 20 20 20 20  |, #2.Z.. MOV    |
0000bbc0  20 52 30 2c 20 23 38 0d  5a e6 14 20 4d 56 4e 20  | R0, #8.Z.. MVN |
0000bbd0  20 20 20 20 52 31 2c 20  23 31 32 0d 5a f0 17 20  |    R1, #12.Z.. |
0000bbe0  4d 4f 56 20 20 20 20 20  52 32 2c 20 23 31 32 38  |MOV     R2, #128|
0000bbf0  30 30 0d 5a fa 13 20 4d  4f 56 20 20 20 20 20 52  |00.Z.. MOV     R|
0000bc00  33 2c 20 23 30 0d 5b 04  1c 20 53 57 49 20 20 20  |3, #0.[.. SWI   |
0000bc10  20 20 22 53 6f 75 6e 64  5f 43 6f 6e 74 72 6f 6c  |  "Sound_Control|
0000bc20  22 0d 5b 0e 15 20 2e 70  32 5f 6e 6f 74 5f 66 69  |".[.. .p2_not_fi|
0000bc30  72 65 5f 67 75 6e 0d 5b  18 18 20 42 20 20 20 20  |re_gun.[.. B    |
0000bc40  20 20 20 70 32 5f 65 6e  64 5f 66 69 72 65 0d 5b  |   p2_end_fire.[|
0000bc50  22 06 20 3a 0d 5b 2c 14  20 2e 70 32 5f 66 69 72  |". :.[,. .p2_fir|
0000bc60  65 5f 6d 6f 72 74 61 72  0d 5b 36 18 3b 4c 44 52  |e_mortar.[6.;LDR|
0000bc70  20 20 20 20 20 52 30 2c  20 70 32 5f 66 69 72 65  |     R0, p2_fire|
0000bc80  0d 5b 40 13 3b 43 4d 50  20 20 20 20 20 52 30 2c  |.[@.;CMP     R0,|
0000bc90  20 23 30 0d 5b 4a 1b 3b  42 45 51 20 20 20 20 20  | #0.[J.;BEQ     |
0000bca0  70 32 5f 6d 6f 72 74 61  72 5f 73 68 6f 74 0d 5b  |p2_mortar_shot.[|
0000bcb0  54 15 3b 4d 4f 56 20 20  20 20 20 52 30 2c 20 23  |T.;MOV     R0, #|
0000bcc0  31 32 39 0d 5b 5e 13 3b  4d 4f 56 20 20 20 20 20  |129.[^.;MOV     |
0000bcd0  52 31 2c 20 23 30 0d 5b  68 17 3b 53 55 42 20 20  |R1, #0.[h.;SUB  |
0000bce0  20 20 20 52 31 2c 52 31  2c 20 23 35 39 0d 5b 72  |   R1,R1, #59.[r|
0000bcf0  15 3b 4d 4f 56 20 20 20  20 20 52 32 2c 20 23 32  |.;MOV     R2, #2|
0000bd00  35 35 0d 5b 7c 16 3b 53  57 49 20 20 20 20 20 22  |55.[|.;SWI     "|
0000bd10  4f 53 5f 42 79 74 65 22  0d 5b 86 15 3b 43 4d 50  |OS_Byte".[..;CMP|
0000bd20  20 20 20 20 20 52 31 2c  20 23 32 35 35 0d 5b 90  |     R1, #255.[.|
0000bd30  13 3b 4d 4f 56 4e 45 20  20 20 52 30 2c 20 23 30  |.;MOVNE   R0, #0|
0000bd40  0d 5b 9a 18 3b 53 54 52  4e 45 20 20 20 52 30 2c  |.[..;STRNE   R0,|
0000bd50  20 70 32 5f 66 69 72 65  0d 5b a4 1f 3b 42 20 20  | p2_fire.[..;B  |
0000bd60  20 20 20 20 20 70 32 5f  6e 6f 74 5f 66 69 72 65  |     p2_not_fire|
0000bd70  5f 6d 6f 72 74 61 72 0d  5b ae 14 3b 2e 70 32 5f  |_mortar.[..;.p2_|
0000bd80  6d 6f 72 74 61 72 5f 73  68 6f 74 0d 5b b8 15 20  |mortar_shot.[.. |
0000bd90  4d 4f 56 20 20 20 20 20  52 30 2c 20 23 31 32 39  |MOV     R0, #129|
0000bda0  0d 5b c2 13 20 4d 4f 56  20 20 20 20 20 52 31 2c  |.[.. MOV     R1,|
0000bdb0  20 23 30 0d 5b cc 17 20  53 55 42 20 20 20 20 20  | #0.[.. SUB     |
0000bdc0  52 31 2c 52 31 2c 20 23  35 39 0d 5b d6 15 20 4d  |R1,R1, #59.[.. M|
0000bdd0  4f 56 20 20 20 20 20 52  32 2c 20 23 32 35 35 0d  |OV     R2, #255.|
0000bde0  5b e0 16 20 53 57 49 20  20 20 20 20 22 4f 53 5f  |[.. SWI     "OS_|
0000bdf0  42 79 74 65 22 0d 5b ea  15 20 43 4d 50 20 20 20  |Byte".[.. CMP   |
0000be00  20 20 52 31 2c 20 23 32  35 35 0d 5b f4 1f 20 42  |  R1, #255.[.. B|
0000be10  4e 45 20 20 20 20 20 70  32 5f 6e 6f 74 5f 66 69  |NE     p2_not_fi|
0000be20  72 65 5f 6d 6f 72 74 61  72 0d 5b fe 18 20 4c 44  |re_mortar.[.. LD|
0000be30  52 20 20 20 20 20 52 30  2c 20 70 32 5f 66 69 72  |R     R0, p2_fir|
0000be40  65 0d 5c 08 16 20 41 44  44 20 20 20 20 20 52 30  |e.\.. ADD     R0|
0000be50  2c 52 30 2c 20 23 31 0d  5c 12 19 20 80 20 20 20  |,R0, #1.\.. .   |
0000be60  20 20 52 30 2c 52 30 2c  20 23 25 31 31 31 31 31  |  R0,R0, #%11111|
0000be70  0d 5c 1c 18 20 53 54 52  20 20 20 20 20 52 30 2c  |.\.. STR     R0,|
0000be80  20 70 32 5f 66 69 72 65  0d 5c 26 18 20 54 53 54  | p2_fire.\&. TST|
0000be90  20 20 20 20 20 52 30 2c  20 23 25 31 31 31 31 31  |     R0, #%11111|
0000bea0  0d 5c 30 1f 20 42 4e 45  20 20 20 20 20 70 32 5f  |.\0. BNE     p2_|
0000beb0  6e 6f 74 5f 66 69 72 65  5f 6d 6f 72 74 61 72 0d  |not_fire_mortar.|
0000bec0  5c 3a 13 20 4d 4f 56 20  20 20 20 20 52 30 2c 20  |\:. MOV     R0, |
0000bed0  23 34 0d 5c 44 1a 20 4d  4f 56 20 20 20 20 20 52  |#4.\D. MOV     R|
0000bee0  31 2c 52 36 2c 20 4c 53  52 20 23 32 0d 5c 4e 1a  |1,R6, LSR #2.\N.|
0000bef0  20 4d 4f 56 20 20 20 20  20 52 32 2c 52 37 2c 20  | MOV     R2,R7, |
0000bf00  4c 53 52 20 23 32 0d 5c  58 1a 20 41 44 44 20 20  |LSR #2.\X. ADD  |
0000bf10  20 20 20 52 31 2c 52 31  2c 20 23 78 65 78 74 25  |   R1,R1, #xext%|
0000bf20  0d 5c 62 1e 20 41 44 44  20 20 20 20 20 52 32 2c  |.\b. ADD     R2,|
0000bf30  52 32 2c 20 23 79 65 78  74 25 2f 34 2a 32 0d 5c  |R2, #yext%/4*2.\|
0000bf40  6c 18 20 52 53 42 20 20  20 20 20 52 32 2c 52 32  |l. RSB     R2,R2|
0000bf50  2c 20 23 32 35 36 0d 5c  76 14 20 4d 4f 56 20 20  |, #256.\v. MOV  |
0000bf60  20 20 20 52 33 2c 20 23  33 30 0d 5c 80 14 20 4d  |   R3, #30.\.. M|
0000bf70  4f 56 20 20 20 20 20 52  34 2c 20 23 34 30 0d 5c  |OV     R4, #40.\|
0000bf80  8a 13 20 4d 4f 56 20 20  20 20 20 52 35 2c 20 23  |.. MOV     R5, #|
0000bf90  30 0d 5c 94 13 20 54 53  54 20 20 20 20 20 52 38  |0.\.. TST     R8|
0000bfa0  2c 20 23 31 0d 5c 9e 16  20 52 53 42 4e 45 20 20  |, #1.\.. RSBNE  |
0000bfb0  20 52 33 2c 52 33 2c 20  23 30 0d 5c a8 1a 20 53  | R3,R3, #0.\.. S|
0000bfc0  55 42 4e 45 20 20 20 52  31 2c 52 31 2c 20 23 78  |UBNE   R1,R1, #x|
0000bfd0  65 78 74 25 0d 5c b2 15  20 42 4c 20 20 20 20 20  |ext%.\.. BL     |
0000bfe0  20 61 64 64 5f 63 65 6c  6c 0d 5c bc 13 20 4d 4f  | add_cell.\.. MO|
0000bff0  56 20 20 20 20 20 52 35  2c 20 23 32 0d 5c c6 13  |V     R5, #2.\..|
0000c000  20 4d 4f 56 20 20 20 20  20 52 30 2c 20 23 31 0d  | MOV     R0, #1.|
0000c010  5c d0 18 20 53 54 52 20  20 20 20 20 52 30 2c 20  |\.. STR     R0, |
0000c020  70 32 5f 66 69 72 65 0d  5c da 18 20 2e 70 32 5f  |p2_fire.\.. .p2_|
0000c030  6e 6f 74 5f 66 69 72 65  5f 6d 6f 72 74 61 72 0d  |not_fire_mortar.|
0000c040  5c e4 18 20 42 20 20 20  20 20 20 20 70 32 5f 65  |\.. B       p2_e|
0000c050  6e 64 5f 66 69 72 65 0d  5c ee 06 20 3a 0d 5c f8  |nd_fire.\.. :.\.|
0000c060  14 20 2e 70 32 5f 66 69  72 65 5f 68 6f 6d 69 6e  |. .p2_fire_homin|
0000c070  67 0d 5d 02 14 20 2e 70  32 5f 68 6f 6d 69 6e 67  |g.].. .p2_homing|
0000c080  5f 73 68 6f 74 0d 5d 0c  15 20 4d 4f 56 20 20 20  |_shot.].. MOV   |
0000c090  20 20 52 30 2c 20 23 31  32 39 0d 5d 16 13 20 4d  |  R0, #129.].. M|
0000c0a0  4f 56 20 20 20 20 20 52  31 2c 20 23 30 0d 5d 20  |OV     R1, #0.] |
0000c0b0  17 20 53 55 42 20 20 20  20 20 52 31 2c 52 31 2c  |. SUB     R1,R1,|
0000c0c0  20 23 35 39 0d 5d 2a 15  20 4d 4f 56 20 20 20 20  | #59.]*. MOV    |
0000c0d0  20 52 32 2c 20 23 32 35  35 0d 5d 34 16 20 53 57  | R2, #255.]4. SW|
0000c0e0  49 20 20 20 20 20 22 4f  53 5f 42 79 74 65 22 0d  |I     "OS_Byte".|
0000c0f0  5d 3e 15 20 43 4d 50 20  20 20 20 20 52 31 2c 20  |]>. CMP     R1, |
0000c100  23 32 35 35 0d 5d 48 1f  20 42 4e 45 20 20 20 20  |#255.]H. BNE    |
0000c110  20 70 32 5f 6e 6f 74 5f  66 69 72 65 5f 68 6f 6d  | p2_not_fire_hom|
0000c120  69 6e 67 0d 5d 52 18 20  4c 44 52 20 20 20 20 20  |ing.]R. LDR     |
0000c130  52 30 2c 20 70 32 5f 66  69 72 65 0d 5d 5c 16 20  |R0, p2_fire.]\. |
0000c140  41 44 44 20 20 20 20 20  52 30 2c 52 30 2c 20 23  |ADD     R0,R0, #|
0000c150  31 0d 5d 66 18 20 80 20  20 20 20 20 52 30 2c 52  |1.]f. .     R0,R|
0000c160  30 2c 20 23 25 31 31 31  31 0d 5d 70 18 20 53 54  |0, #%1111.]p. ST|
0000c170  52 20 20 20 20 20 52 30  2c 20 70 32 5f 66 69 72  |R     R0, p2_fir|
0000c180  65 0d 5d 7a 17 20 54 53  54 20 20 20 20 20 52 30  |e.]z. TST     R0|
0000c190  2c 20 23 25 31 31 31 31  0d 5d 84 1f 20 42 4e 45  |, #%1111.].. BNE|
0000c1a0  20 20 20 20 20 70 32 5f  6e 6f 74 5f 66 69 72 65  |     p2_not_fire|
0000c1b0  5f 68 6f 6d 69 6e 67 0d  5d 8e 13 20 4d 4f 56 20  |_homing.].. MOV |
0000c1c0  20 20 20 20 52 30 2c 20  23 35 0d 5d 98 1a 20 4d  |    R0, #5.].. M|
0000c1d0  4f 56 20 20 20 20 20 52  31 2c 52 36 2c 20 4c 53  |OV     R1,R6, LS|
0000c1e0  52 20 23 32 0d 5d a2 1a  20 4d 4f 56 20 20 20 20  |R #2.].. MOV    |
0000c1f0  20 52 32 2c 52 37 2c 20  4c 53 52 20 23 32 0d 5d  | R2,R7, LSR #2.]|
0000c200  ac 1a 20 41 44 44 20 20  20 20 20 52 31 2c 52 31  |.. ADD     R1,R1|
0000c210  2c 20 23 78 65 78 74 25  0d 5d b6 1e 20 41 44 44  |, #xext%.].. ADD|
0000c220  20 20 20 20 20 52 32 2c  52 32 2c 20 23 79 65 78  |     R2,R2, #yex|
0000c230  74 25 2f 34 2a 32 0d 5d  c0 18 20 52 53 42 20 20  |t%/4*2.].. RSB  |
0000c240  20 20 20 52 32 2c 52 32  2c 20 23 32 35 36 0d 5d  |   R2,R2, #256.]|
0000c250  ca 14 20 4d 4f 56 20 20  20 20 20 52 33 2c 20 23  |.. MOV     R3, #|
0000c260  36 34 0d 5d d4 18 20 4c  44 52 20 20 20 20 20 52  |64.].. LDR     R|
0000c270  34 2c 20 61 64 72 5f 72  6e 64 0d 5d de 14 20 4c  |4, adr_rnd.].. L|
0000c280  44 52 20 20 20 20 20 52  34 2c 5b 52 34 5d 0d 5d  |DR     R4,[R4].]|
0000c290  e8 15 20 80 20 20 20 20  20 52 34 2c 52 34 2c 20  |.. .     R4,R4, |
0000c2a0  23 31 35 0d 5d f2 16 20  53 55 42 20 20 20 20 20  |#15.].. SUB     |
0000c2b0  52 34 2c 52 34 2c 20 23  37 0d 5d fc 39 20 4d 4f  |R4,R4, #7.].9 MO|
0000c2c0  56 20 20 20 20 20 52 35  2c 20 23 32 32 34 3c 3c  |V     R5, #224<<|
0000c2d0  38 20 20 20 20 20 20 20  20 20 20 3b 20 48 6f 6d  |8          ; Hom|
0000c2e0  69 6e 67 20 69 6e 20 6f  6e 20 70 6c 61 79 65 72  |ing in on player|
0000c2f0  20 31 0d 5e 06 13 20 54  53 54 20 20 20 20 20 52  | 1.^.. TST     R|
0000c300  38 2c 20 23 31 0d 5e 10  16 20 52 53 42 4e 45 20  |8, #1.^.. RSBNE |
0000c310  20 20 52 33 2c 52 33 2c  20 23 30 0d 5e 1a 1a 20  |  R3,R3, #0.^.. |
0000c320  53 55 42 4e 45 20 20 20  52 31 2c 52 31 2c 20 23  |SUBNE   R1,R1, #|
0000c330  78 65 78 74 25 0d 5e 24  15 20 42 4c 20 20 20 20  |xext%.^$. BL    |
0000c340  20 20 61 64 64 5f 63 65  6c 6c 0d 5e 2e 13 20 4d  |  add_cell.^.. M|
0000c350  4f 56 20 20 20 20 20 52  35 2c 20 23 37 0d 5e 38  |OV     R5, #7.^8|
0000c360  13 20 4d 4f 56 20 20 20  20 20 52 30 2c 20 23 38  |. MOV     R0, #8|
0000c370  0d 5e 42 14 20 4d 56 4e  20 20 20 20 20 52 31 2c  |.^B. MVN     R1,|
0000c380  20 23 31 30 0d 5e 4c 16  20 4d 4f 56 20 20 20 20  | #10.^L. MOV    |
0000c390  20 52 32 2c 20 23 38 30  30 30 0d 5e 56 13 20 4d  | R2, #8000.^V. M|
0000c3a0  4f 56 20 20 20 20 20 52  33 2c 20 23 30 0d 5e 60  |OV     R3, #0.^`|
0000c3b0  1c 20 53 57 49 20 20 20  20 20 22 53 6f 75 6e 64  |. SWI     "Sound|
0000c3c0  5f 43 6f 6e 74 72 6f 6c  22 0d 5e 6a 18 20 2e 70  |_Control".^j. .p|
0000c3d0  32 5f 6e 6f 74 5f 66 69  72 65 5f 68 6f 6d 69 6e  |2_not_fire_homin|
0000c3e0  67 0d 5e 74 18 20 42 20  20 20 20 20 20 20 70 32  |g.^t. B       p2|
0000c3f0  5f 65 6e 64 5f 66 69 72  65 0d 5e 7e 06 20 3a 0d  |_end_fire.^~. :.|
0000c400  5e 88 15 20 2e 70 32 5f  66 69 72 65 5f 73 65 65  |^.. .p2_fire_see|
0000c410  6b 69 6e 67 0d 5e 92 15  20 2e 70 32 5f 73 65 65  |king.^.. .p2_see|
0000c420  6b 69 6e 67 5f 73 68 6f  74 0d 5e 9c 15 20 4d 4f  |king_shot.^.. MO|
0000c430  56 20 20 20 20 20 52 30  2c 20 23 31 32 39 0d 5e  |V     R0, #129.^|
0000c440  a6 13 20 4d 4f 56 20 20  20 20 20 52 31 2c 20 23  |.. MOV     R1, #|
0000c450  30 0d 5e b0 17 20 53 55  42 20 20 20 20 20 52 31  |0.^.. SUB     R1|
0000c460  2c 52 31 2c 20 23 35 39  0d 5e ba 15 20 4d 4f 56  |,R1, #59.^.. MOV|
0000c470  20 20 20 20 20 52 32 2c  20 23 32 35 35 0d 5e c4  |     R2, #255.^.|
0000c480  16 20 53 57 49 20 20 20  20 20 22 4f 53 5f 42 79  |. SWI     "OS_By|
0000c490  74 65 22 0d 5e ce 15 20  43 4d 50 20 20 20 20 20  |te".^.. CMP     |
0000c4a0  52 31 2c 20 23 32 35 35  0d 5e d8 20 20 42 4e 45  |R1, #255.^.  BNE|
0000c4b0  20 20 20 20 20 70 32 5f  6e 6f 74 5f 66 69 72 65  |     p2_not_fire|
0000c4c0  5f 73 65 65 6b 69 6e 67  0d 5e e2 13 20 4d 4f 56  |_seeking.^.. MOV|
0000c4d0  20 20 20 20 20 52 30 2c  20 23 36 0d 5e ec 1a 20  |     R0, #6.^.. |
0000c4e0  4d 4f 56 20 20 20 20 20  52 31 2c 52 36 2c 20 4c  |MOV     R1,R6, L|
0000c4f0  53 52 20 23 32 0d 5e f6  1a 20 4d 4f 56 20 20 20  |SR #2.^.. MOV   |
0000c500  20 20 52 32 2c 52 37 2c  20 4c 53 52 20 23 32 0d  |  R2,R7, LSR #2.|
0000c510  5f 00 1e 20 41 44 44 20  20 20 20 20 52 31 2c 52  |_.. ADD     R1,R|
0000c520  31 2c 20 23 78 65 78 74  25 2a 33 2f 32 0d 5f 0a  |1, #xext%*3/2._.|
0000c530  1e 20 41 44 44 20 20 20  20 20 52 32 2c 52 32 2c  |. ADD     R2,R2,|
0000c540  20 23 79 65 78 74 25 2f  34 2a 32 0d 5f 14 18 20  | #yext%/4*2._.. |
0000c550  52 53 42 20 20 20 20 20  52 32 2c 52 32 2c 20 23  |RSB     R2,R2, #|
0000c560  32 35 36 0d 5f 1e 14 20  4d 4f 56 20 20 20 20 20  |256._.. MOV     |
0000c570  52 33 2c 20 23 33 32 0d  5f 28 13 20 4d 4f 56 20  |R3, #32._(. MOV |
0000c580  20 20 20 20 52 34 2c 20  23 30 0d 5f 32 39 20 4d  |    R4, #0._29 M|
0000c590  4f 56 20 20 20 20 20 52  35 2c 20 23 30 20 20 20  |OV     R5, #0   |
0000c5a0  20 20 20 20 20 20 20 20  20 20 20 20 3b 20 48 6f  |            ; Ho|
0000c5b0  6d 69 6e 67 20 69 6e 20  6f 6e 20 70 6c 61 79 65  |ming in on playe|
0000c5c0  72 20 31 0d 5f 3c 13 20  54 53 54 20 20 20 20 20  |r 1._<. TST     |
0000c5d0  52 38 2c 20 23 31 0d 5f  46 16 20 52 53 42 4e 45  |R8, #1._F. RSBNE|
0000c5e0  20 20 20 52 33 2c 52 33  2c 20 23 30 0d 5f 50 1c  |   R3,R3, #0._P.|
0000c5f0  20 53 55 42 4e 45 20 20  20 52 31 2c 52 31 2c 20  | SUBNE   R1,R1, |
0000c600  23 78 65 78 74 25 2a 32  0d 5f 5a 15 20 42 4c 20  |#xext%*2._Z. BL |
0000c610  20 20 20 20 20 61 64 64  5f 63 65 6c 6c 0d 5f 64  |     add_cell._d|
0000c620  13 20 4d 4f 56 20 20 20  20 20 52 35 2c 20 23 32  |. MOV     R5, #2|
0000c630  0d 5f 6e 13 20 4d 4f 56  20 20 20 20 20 52 39 2c  |._n. MOV     R9,|
0000c640  20 23 32 0d 5f 78 1f 20  4c 44 52 20 20 20 20 20  | #2._x. LDR     |
0000c650  52 31 30 2c 20 61 64 72  5f 70 32 5f 77 65 61 70  |R10, adr_p2_weap|
0000c660  6f 6e 0d 5f 82 15 20 53  54 52 20 20 20 20 20 52  |on._.. STR     R|
0000c670  39 2c 5b 52 31 30 5d 0d  5f 8c 13 20 4d 4f 56 20  |9,[R10]._.. MOV |
0000c680  20 20 20 20 52 30 2c 20  23 38 0d 5f 96 14 20 4d  |    R0, #8._.. M|
0000c690  56 4e 20 20 20 20 20 52  31 2c 20 23 31 34 0d 5f  |VN     R1, #14._|
0000c6a0  a0 16 20 4d 4f 56 20 20  20 20 20 52 32 2c 20 23  |.. MOV     R2, #|
0000c6b0  35 31 32 30 0d 5f aa 13  20 4d 4f 56 20 20 20 20  |5120._.. MOV    |
0000c6c0  20 52 33 2c 20 23 30 0d  5f b4 1c 20 53 57 49 20  | R3, #0._.. SWI |
0000c6d0  20 20 20 20 22 53 6f 75  6e 64 5f 43 6f 6e 74 72  |    "Sound_Contr|
0000c6e0  6f 6c 22 0d 5f be 13 20  4d 4f 56 20 20 20 20 20  |ol"._.. MOV     |
0000c6f0  52 30 2c 20 23 31 0d 5f  c8 18 20 53 54 52 20 20  |R0, #1._.. STR  |
0000c700  20 20 20 52 30 2c 20 70  32 5f 66 69 72 65 0d 5f  |   R0, p2_fire._|
0000c710  d2 19 20 2e 70 32 5f 6e  6f 74 5f 66 69 72 65 5f  |.. .p2_not_fire_|
0000c720  73 65 65 6b 69 6e 67 0d  5f dc 18 20 42 20 20 20  |seeking._.. B   |
0000c730  20 20 20 20 70 32 5f 65  6e 64 5f 66 69 72 65 0d  |    p2_end_fire.|
0000c740  5f e6 06 20 3a 0d 5f f0  16 20 2e 70 32 5f 66 69  |_.. :._.. .p2_fi|
0000c750  72 65 5f 76 65 72 74 69  63 61 6c 0d 5f fa 18 20  |re_vertical._.. |
0000c760  4c 44 52 20 20 20 20 20  52 30 2c 20 70 32 5f 66  |LDR     R0, p2_f|
0000c770  69 72 65 0d 60 04 13 20  43 4d 50 20 20 20 20 20  |ire.`.. CMP     |
0000c780  52 30 2c 20 23 30 0d 60  0e 1d 20 42 45 51 20 20  |R0, #0.`.. BEQ  |
0000c790  20 20 20 70 32 5f 76 65  72 74 69 63 61 6c 5f 73  |   p2_vertical_s|
0000c7a0  68 6f 74 0d 60 18 15 20  4d 4f 56 20 20 20 20 20  |hot.`.. MOV     |
0000c7b0  52 30 2c 20 23 31 32 39  0d 60 22 13 20 4d 4f 56  |R0, #129.`". MOV|
0000c7c0  20 20 20 20 20 52 31 2c  20 23 30 0d 60 2c 17 20  |     R1, #0.`,. |
0000c7d0  53 55 42 20 20 20 20 20  52 31 2c 52 31 2c 20 23  |SUB     R1,R1, #|
0000c7e0  35 39 0d 60 36 15 20 4d  4f 56 20 20 20 20 20 52  |59.`6. MOV     R|
0000c7f0  32 2c 20 23 32 35 35 0d  60 40 16 20 53 57 49 20  |2, #255.`@. SWI |
0000c800  20 20 20 20 22 4f 53 5f  42 79 74 65 22 0d 60 4a  |    "OS_Byte".`J|
0000c810  15 20 43 4d 50 20 20 20  20 20 52 31 2c 20 23 32  |. CMP     R1, #2|
0000c820  35 35 0d 60 54 13 20 4d  4f 56 4e 45 20 20 20 52  |55.`T. MOVNE   R|
0000c830  30 2c 20 23 30 0d 60 5e  18 20 53 54 52 4e 45 20  |0, #0.`^. STRNE |
0000c840  20 20 52 30 2c 20 70 32  5f 66 69 72 65 0d 60 68  |  R0, p2_fire.`h|
0000c850  21 20 42 20 20 20 20 20  20 20 70 32 5f 6e 6f 74  |! B       p2_not|
0000c860  5f 66 69 72 65 5f 76 65  72 74 69 63 61 6c 0d 60  |_fire_vertical.`|
0000c870  72 16 20 2e 70 32 5f 76  65 72 74 69 63 61 6c 5f  |r. .p2_vertical_|
0000c880  73 68 6f 74 0d 60 7c 15  20 4d 4f 56 20 20 20 20  |shot.`|. MOV    |
0000c890  20 52 30 2c 20 23 31 32  39 0d 60 86 13 20 4d 4f  | R0, #129.`.. MO|
0000c8a0  56 20 20 20 20 20 52 31  2c 20 23 30 0d 60 90 17  |V     R1, #0.`..|
0000c8b0  20 53 55 42 20 20 20 20  20 52 31 2c 52 31 2c 20  | SUB     R1,R1, |
0000c8c0  23 35 39 0d 60 9a 15 20  4d 4f 56 20 20 20 20 20  |#59.`.. MOV     |
0000c8d0  52 32 2c 20 23 32 35 35  0d 60 a4 16 20 53 57 49  |R2, #255.`.. SWI|
0000c8e0  20 20 20 20 20 22 4f 53  5f 42 79 74 65 22 0d 60  |     "OS_Byte".`|
0000c8f0  ae 15 20 43 4d 50 20 20  20 20 20 52 31 2c 20 23  |.. CMP     R1, #|
0000c900  32 35 35 0d 60 b8 21 20  42 4e 45 20 20 20 20 20  |255.`.! BNE     |
0000c910  70 32 5f 6e 6f 74 5f 66  69 72 65 5f 76 65 72 74  |p2_not_fire_vert|
0000c920  69 63 61 6c 0d 60 c2 13  20 4d 4f 56 20 20 20 20  |ical.`.. MOV    |
0000c930  20 52 30 2c 20 23 37 0d  60 cc 1a 20 4d 4f 56 20  | R0, #7.`.. MOV |
0000c940  20 20 20 20 52 31 2c 52  36 2c 20 4c 53 52 20 23  |    R1,R6, LSR #|
0000c950  32 0d 60 d6 1a 20 4d 4f  56 20 20 20 20 20 52 32  |2.`.. MOV     R2|
0000c960  2c 52 37 2c 20 4c 53 52  20 23 32 0d 60 e0 1a 20  |,R7, LSR #2.`.. |
0000c970  41 44 44 20 20 20 20 20  52 31 2c 52 31 2c 20 23  |ADD     R1,R1, #|
0000c980  78 65 78 74 25 0d 60 ea  1e 20 41 44 44 20 20 20  |xext%.`.. ADD   |
0000c990  20 20 52 32 2c 52 32 2c  20 23 79 65 78 74 25 2f  |  R2,R2, #yext%/|
0000c9a0  34 2a 32 0d 60 f4 18 20  52 53 42 20 20 20 20 20  |4*2.`.. RSB     |
0000c9b0  52 32 2c 52 32 2c 20 23  32 35 36 0d 60 fe 13 20  |R2,R2, #256.`.. |
0000c9c0  4d 4f 56 20 20 20 20 20  52 33 2c 20 23 30 0d 61  |MOV     R3, #0.a|
0000c9d0  08 14 20 4d 4f 56 20 20  20 20 20 52 34 2c 20 23  |.. MOV     R4, #|
0000c9e0  36 34 0d 61 12 13 20 4d  4f 56 20 20 20 20 20 52  |64.a.. MOV     R|
0000c9f0  35 2c 20 23 30 0d 61 1c  13 20 54 53 54 20 20 20  |5, #0.a.. TST   |
0000ca00  20 20 52 38 2c 20 23 31  0d 61 26 16 20 52 53 42  |  R8, #1.a&. RSB|
0000ca10  4e 45 20 20 20 52 33 2c  52 33 2c 20 23 30 0d 61  |NE   R3,R3, #0.a|
0000ca20  30 1a 20 53 55 42 4e 45  20 20 20 52 31 2c 52 31  |0. SUBNE   R1,R1|
0000ca30  2c 20 23 78 65 78 74 25  0d 61 3a 15 20 42 4c 20  |, #xext%.a:. BL |
0000ca40  20 20 20 20 20 61 64 64  5f 63 65 6c 6c 0d 61 44  |     add_cell.aD|
0000ca50  13 20 4d 4f 56 20 20 20  20 20 52 35 2c 20 23 32  |. MOV     R5, #2|
0000ca60  0d 61 4e 13 20 4d 4f 56  20 20 20 20 20 52 30 2c  |.aN. MOV     R0,|
0000ca70  20 23 31 0d 61 58 18 20  53 54 52 20 20 20 20 20  | #1.aX. STR     |
0000ca80  52 30 2c 20 70 32 5f 66  69 72 65 0d 61 62 13 20  |R0, p2_fire.ab. |
0000ca90  4d 4f 56 20 20 20 20 20  52 30 2c 20 23 37 0d 61  |MOV     R0, #7.a|
0000caa0  6c 14 20 4d 56 4e 20 20  20 20 20 52 31 2c 20 23  |l. MVN     R1, #|
0000cab0  31 34 0d 61 76 17 20 4d  4f 56 20 20 20 20 20 52  |14.av. MOV     R|
0000cac0  32 2c 20 23 31 30 32 34  30 0d 61 80 13 20 4d 4f  |2, #10240.a.. MO|
0000cad0  56 20 20 20 20 20 52 33  2c 20 23 30 0d 61 8a 1c  |V     R3, #0.a..|
0000cae0  20 53 57 49 20 20 20 20  20 22 53 6f 75 6e 64 5f  | SWI     "Sound_|
0000caf0  43 6f 6e 74 72 6f 6c 22  0d 61 94 1a 20 2e 70 32  |Control".a.. .p2|
0000cb00  5f 6e 6f 74 5f 66 69 72  65 5f 76 65 72 74 69 63  |_not_fire_vertic|
0000cb10  61 6c 0d 61 9e 18 20 42  20 20 20 20 20 20 20 70  |al.a.. B       p|
0000cb20  32 5f 65 6e 64 5f 66 69  72 65 0d 61 a8 06 20 3a  |2_end_fire.a.. :|
0000cb30  0d 61 b2 13 20 2e 70 32  5f 66 69 72 65 5f 66 6c  |.a.. .p2_fire_fl|
0000cb40  61 6d 65 0d 61 bc 15 20  4d 4f 56 20 20 20 20 20  |ame.a.. MOV     |
0000cb50  52 30 2c 20 23 31 32 39  0d 61 c6 13 20 4d 4f 56  |R0, #129.a.. MOV|
0000cb60  20 20 20 20 20 52 31 2c  20 23 30 0d 61 d0 17 20  |     R1, #0.a.. |
0000cb70  53 55 42 20 20 20 20 20  52 31 2c 52 31 2c 20 23  |SUB     R1,R1, #|
0000cb80  35 39 0d 61 da 15 20 4d  4f 56 20 20 20 20 20 52  |59.a.. MOV     R|
0000cb90  32 2c 20 23 32 35 35 0d  61 e4 16 20 53 57 49 20  |2, #255.a.. SWI |
0000cba0  20 20 20 20 22 4f 53 5f  42 79 74 65 22 0d 61 ee  |    "OS_Byte".a.|
0000cbb0  15 20 43 4d 50 20 20 20  20 20 52 31 2c 20 23 32  |. CMP     R1, #2|
0000cbc0  35 35 0d 61 f8 1e 20 42  4e 45 20 20 20 20 20 70  |55.a.. BNE     p|
0000cbd0  32 5f 6e 6f 74 5f 66 69  72 65 5f 66 6c 61 6d 65  |2_not_fire_flame|
0000cbe0  0d 62 02 14 20 4d 4f 56  20 20 20 20 20 52 30 2c  |.b.. MOV     R0,|
0000cbf0  20 23 31 30 0d 62 0c 1a  20 4d 4f 56 20 20 20 20  | #10.b.. MOV    |
0000cc00  20 52 31 2c 52 36 2c 20  4c 53 52 20 23 32 0d 62  | R1,R6, LSR #2.b|
0000cc10  16 1a 20 4d 4f 56 20 20  20 20 20 52 32 2c 52 37  |.. MOV     R2,R7|
0000cc20  2c 20 4c 53 52 20 23 32  0d 62 20 1a 20 41 44 44  |, LSR #2.b . ADD|
0000cc30  20 20 20 20 20 52 31 2c  52 31 2c 20 23 78 65 78  |     R1,R1, #xex|
0000cc40  74 25 0d 62 2a 1e 20 41  44 44 20 20 20 20 20 52  |t%.b*. ADD     R|
0000cc50  32 2c 52 32 2c 20 23 79  65 78 74 25 2f 34 2a 32  |2,R2, #yext%/4*2|
0000cc60  0d 62 34 18 20 52 53 42  20 20 20 20 20 52 32 2c  |.b4. RSB     R2,|
0000cc70  52 32 2c 20 23 32 35 36  0d 62 3e 14 20 4d 4f 56  |R2, #256.b>. MOV|
0000cc80  20 20 20 20 20 52 33 2c  20 23 37 32 0d 62 48 18  |     R3, #72.bH.|
0000cc90  20 4c 44 52 20 20 20 20  20 52 34 2c 20 61 64 72  | LDR     R4, adr|
0000cca0  5f 72 6e 64 0d 62 52 14  20 4c 44 52 20 20 20 20  |_rnd.bR. LDR    |
0000ccb0  20 52 34 2c 5b 52 34 5d  0d 62 5c 14 20 80 20 20  | R4,[R4].b\. .  |
0000ccc0  20 20 20 52 34 2c 52 34  2c 20 23 37 0d 62 66 16  |   R4,R4, #7.bf.|
0000ccd0  20 53 55 42 20 20 20 20  20 52 34 2c 52 34 2c 20  | SUB     R4,R4, |
0000cce0  23 31 0d 62 70 1a 20 4d  4f 56 20 20 20 20 20 52  |#1.bp. MOV     R|
0000ccf0  35 2c 52 35 2c 20 4c 53  52 20 23 34 0d 62 7a 15  |5,R5, LSR #4.bz.|
0000cd00  20 41 44 44 20 20 20 20  20 52 31 2c 52 31 2c 52  | ADD     R1,R1,R|
0000cd10  35 0d 62 84 13 20 4d 4f  56 20 20 20 20 20 52 35  |5.b.. MOV     R5|
0000cd20  2c 20 23 30 0d 62 8e 13  20 54 53 54 20 20 20 20  |, #0.b.. TST    |
0000cd30  20 52 38 2c 20 23 31 0d  62 98 16 20 52 53 42 4e  | R8, #1.b.. RSBN|
0000cd40  45 20 20 20 52 33 2c 52  33 2c 20 23 30 0d 62 a2  |E   R3,R3, #0.b.|
0000cd50  1a 20 53 55 42 4e 45 20  20 20 52 31 2c 52 31 2c  |. SUBNE   R1,R1,|
0000cd60  20 23 78 65 78 74 25 0d  62 ac 15 20 42 4c 20 20  | #xext%.b.. BL  |
0000cd70  20 20 20 20 61 64 64 5f  63 65 6c 6c 0d 62 b6 17  |    add_cell.b..|
0000cd80  20 2e 70 32 5f 6e 6f 74  5f 66 69 72 65 5f 66 6c  | .p2_not_fire_fl|
0000cd90  61 6d 65 0d 62 c0 18 20  42 20 20 20 20 20 20 20  |ame.b.. B       |
0000cda0  70 32 5f 65 6e 64 5f 66  69 72 65 0d 62 ca 06 20  |p2_end_fire.b.. |
0000cdb0  3a 0d 62 d4 12 20 2e 70  32 5f 66 69 72 65 5f 62  |:.b.. .p2_fire_b|
0000cdc0  6f 6d 62 0d 62 de 15 20  4d 4f 56 20 20 20 20 20  |omb.b.. MOV     |
0000cdd0  52 30 2c 20 23 31 32 39  0d 62 e8 13 20 4d 4f 56  |R0, #129.b.. MOV|
0000cde0  20 20 20 20 20 52 31 2c  20 23 30 0d 62 f2 17 20  |     R1, #0.b.. |
0000cdf0  53 55 42 20 20 20 20 20  52 31 2c 52 31 2c 20 23  |SUB     R1,R1, #|
0000ce00  35 39 0d 62 fc 15 20 4d  4f 56 20 20 20 20 20 52  |59.b.. MOV     R|
0000ce10  32 2c 20 23 32 35 35 0d  63 06 16 20 53 57 49 20  |2, #255.c.. SWI |
0000ce20  20 20 20 20 22 4f 53 5f  42 79 74 65 22 0d 63 10  |    "OS_Byte".c.|
0000ce30  15 20 43 4d 50 20 20 20  20 20 52 31 2c 20 23 32  |. CMP     R1, #2|
0000ce40  35 35 0d 63 1a 1d 20 42  4e 45 20 20 20 20 20 70  |55.c.. BNE     p|
0000ce50  32 5f 6e 6f 74 5f 66 69  72 65 5f 62 6f 6d 62 0d  |2_not_fire_bomb.|
0000ce60  63 24 18 20 4c 44 52 20  20 20 20 20 52 30 2c 20  |c$. LDR     R0, |
0000ce70  70 32 5f 66 69 72 65 0d  63 2e 16 20 41 44 44 20  |p2_fire.c.. ADD |
0000ce80  20 20 20 20 52 30 2c 52  30 2c 20 23 31 0d 63 38  |    R0,R0, #1.c8|
0000ce90  14 20 43 4d 50 20 20 20  20 20 52 30 2c 20 23 31  |. CMP     R0, #1|
0000cea0  30 0d 63 42 13 20 4d 4f  56 47 54 20 20 20 52 30  |0.cB. MOVGT   R0|
0000ceb0  2c 20 23 30 0d 63 4c 18  20 53 54 52 20 20 20 20  |, #0.cL. STR    |
0000cec0  20 52 30 2c 20 70 32 5f  66 69 72 65 0d 63 56 13  | R0, p2_fire.cV.|
0000ced0  20 43 4d 50 20 20 20 20  20 52 30 2c 20 23 30 0d  | CMP     R0, #0.|
0000cee0  63 60 1d 20 42 4e 45 20  20 20 20 20 70 32 5f 6e  |c`. BNE     p2_n|
0000cef0  6f 74 5f 66 69 72 65 5f  62 6f 6d 62 0d 63 6a 14  |ot_fire_bomb.cj.|
0000cf00  20 4d 4f 56 20 20 20 20  20 52 30 2c 20 23 31 32  | MOV     R0, #12|
0000cf10  0d 63 74 1a 20 4d 4f 56  20 20 20 20 20 52 31 2c  |.ct. MOV     R1,|
0000cf20  52 36 2c 20 4c 53 52 20  23 32 0d 63 7e 1a 20 4d  |R6, LSR #2.c~. M|
0000cf30  4f 56 20 20 20 20 20 52  32 2c 52 37 2c 20 4c 53  |OV     R2,R7, LS|
0000cf40  52 20 23 32 0d 63 88 1c  20 41 44 44 20 20 20 20  |R #2.c.. ADD    |
0000cf50  20 52 31 2c 52 31 2c 20  23 78 65 78 74 25 2b 31  | R1,R1, #xext%+1|
0000cf60  0d 63 92 1e 20 41 44 44  20 20 20 20 20 52 32 2c  |.c.. ADD     R2,|
0000cf70  52 32 2c 20 23 79 65 78  74 25 2f 34 2a 32 0d 63  |R2, #yext%/4*2.c|
0000cf80  9c 18 20 52 53 42 20 20  20 20 20 52 32 2c 52 32  |.. RSB     R2,R2|
0000cf90  2c 20 23 32 35 36 0d 63  a6 14 20 4d 4f 56 20 20  |, #256.c.. MOV  |
0000cfa0  20 20 20 52 33 2c 20 23  34 30 0d 63 b0 14 20 4d  |   R3, #40.c.. M|
0000cfb0  4f 56 20 20 20 20 20 52  34 2c 20 23 34 30 0d 63  |OV     R4, #40.c|
0000cfc0  ba 1d 20 4d 4f 56 20 20  20 20 20 52 35 2c 20 23  |.. MOV     R5, #|
0000cfd0  62 6f 6d 62 5f 70 61 75  73 65 25 0d 63 c4 13 20  |bomb_pause%.c.. |
0000cfe0  54 53 54 20 20 20 20 20  52 38 2c 20 23 31 0d 63  |TST     R8, #1.c|
0000cff0  ce 16 20 52 53 42 4e 45  20 20 20 52 33 2c 52 33  |.. RSBNE   R3,R3|
0000d000  2c 20 23 30 0d 63 d8 1c  20 53 55 42 4e 45 20 20  |, #0.c.. SUBNE  |
0000d010  20 52 31 2c 52 31 2c 20  23 78 65 78 74 25 2b 32  | R1,R1, #xext%+2|
0000d020  0d 63 e2 15 20 42 4c 20  20 20 20 20 20 61 64 64  |.c.. BL      add|
0000d030  5f 63 65 6c 6c 0d 63 ec  13 20 4d 4f 56 20 20 20  |_cell.c.. MOV   |
0000d040  20 20 52 35 2c 20 23 32  0d 63 f6 13 20 4d 4f 56  |  R5, #2.c.. MOV|
0000d050  20 20 20 20 20 52 30 2c  20 23 31 0d 64 00 18 20  |     R0, #1.d.. |
0000d060  53 54 52 20 20 20 20 20  52 30 2c 20 70 32 5f 66  |STR     R0, p2_f|
0000d070  69 72 65 0d 64 0a 16 20  2e 70 32 5f 6e 6f 74 5f  |ire.d.. .p2_not_|
0000d080  66 69 72 65 5f 62 6f 6d  62 0d 64 14 18 20 42 20  |fire_bomb.d.. B |
0000d090  20 20 20 20 20 20 70 32  5f 65 6e 64 5f 66 69 72  |      p2_end_fir|
0000d0a0  65 0d 64 1e 06 20 3a 0d  64 28 12 20 2e 70 32 5f  |e.d.. :.d(. .p2_|
0000d0b0  66 69 72 65 5f 67 6c 75  65 0d 64 32 15 20 4d 4f  |fire_glue.d2. MO|
0000d0c0  56 20 20 20 20 20 52 30  2c 20 23 31 32 39 0d 64  |V     R0, #129.d|
0000d0d0  3c 13 20 4d 4f 56 20 20  20 20 20 52 31 2c 20 23  |<. MOV     R1, #|
0000d0e0  30 0d 64 46 17 20 53 55  42 20 20 20 20 20 52 31  |0.dF. SUB     R1|
0000d0f0  2c 52 31 2c 20 23 35 39  0d 64 50 15 20 4d 4f 56  |,R1, #59.dP. MOV|
0000d100  20 20 20 20 20 52 32 2c  20 23 32 35 35 0d 64 5a  |     R2, #255.dZ|
0000d110  16 20 53 57 49 20 20 20  20 20 22 4f 53 5f 42 79  |. SWI     "OS_By|
0000d120  74 65 22 0d 64 64 15 20  43 4d 50 20 20 20 20 20  |te".dd. CMP     |
0000d130  52 31 2c 20 23 32 35 35  0d 64 6e 1d 20 42 4e 45  |R1, #255.dn. BNE|
0000d140  20 20 20 20 20 70 32 5f  6e 6f 74 5f 66 69 72 65  |     p2_not_fire|
0000d150  5f 67 6c 75 65 0d 64 78  18 20 4c 44 52 20 20 20  |_glue.dx. LDR   |
0000d160  20 20 52 30 2c 20 70 32  5f 66 69 72 65 0d 64 82  |  R0, p2_fire.d.|
0000d170  16 20 41 44 44 20 20 20  20 20 52 30 2c 52 30 2c  |. ADD     R0,R0,|
0000d180  20 23 31 0d 64 8c 14 20  43 4d 50 20 20 20 20 20  | #1.d.. CMP     |
0000d190  52 30 2c 20 23 31 30 0d  64 96 13 20 4d 4f 56 47  |R0, #10.d.. MOVG|
0000d1a0  54 20 20 20 52 30 2c 20  23 30 0d 64 a0 18 20 53  |T   R0, #0.d.. S|
0000d1b0  54 52 20 20 20 20 20 52  30 2c 20 70 32 5f 66 69  |TR     R0, p2_fi|
0000d1c0  72 65 0d 64 aa 13 20 43  4d 50 20 20 20 20 20 52  |re.d.. CMP     R|
0000d1d0  30 2c 20 23 30 0d 64 b4  1d 20 42 4e 45 20 20 20  |0, #0.d.. BNE   |
0000d1e0  20 20 70 32 5f 6e 6f 74  5f 66 69 72 65 5f 67 6c  |  p2_not_fire_gl|
0000d1f0  75 65 0d 64 be 14 20 4d  4f 56 20 20 20 20 20 52  |ue.d.. MOV     R|
0000d200  30 2c 20 23 31 33 0d 64  c8 1a 20 4d 4f 56 20 20  |0, #13.d.. MOV  |
0000d210  20 20 20 52 31 2c 52 36  2c 20 4c 53 52 20 23 32  |   R1,R6, LSR #2|
0000d220  0d 64 d2 1a 20 4d 4f 56  20 20 20 20 20 52 32 2c  |.d.. MOV     R2,|
0000d230  52 37 2c 20 4c 53 52 20  23 32 0d 64 dc 1c 20 41  |R7, LSR #2.d.. A|
0000d240  44 44 20 20 20 20 20 52  31 2c 52 31 2c 20 23 78  |DD     R1,R1, #x|
0000d250  65 78 74 25 2b 31 0d 64  e6 1e 20 41 44 44 20 20  |ext%+1.d.. ADD  |
0000d260  20 20 20 52 32 2c 52 32  2c 20 23 79 65 78 74 25  |   R2,R2, #yext%|
0000d270  2f 34 2a 32 0d 64 f0 18  20 52 53 42 20 20 20 20  |/4*2.d.. RSB    |
0000d280  20 52 32 2c 52 32 2c 20  23 32 35 36 0d 64 fa 14  | R2,R2, #256.d..|
0000d290  20 4d 4f 56 20 20 20 20  20 52 33 2c 20 23 36 34  | MOV     R3, #64|
0000d2a0  0d 65 04 18 20 4c 44 52  20 20 20 20 20 52 35 2c  |.e.. LDR     R5,|
0000d2b0  20 61 64 72 5f 72 6e 64  0d 65 0e 14 20 4c 44 52  | adr_rnd.e.. LDR|
0000d2c0  20 20 20 20 20 52 35 2c  5b 52 35 5d 0d 65 18 16  |     R5,[R5].e..|
0000d2d0  20 80 20 20 20 20 20 52  34 2c 52 35 2c 20 23 32  | .     R4,R5, #2|
0000d2e0  35 35 0d 65 22 16 20 53  55 42 20 20 20 20 20 52  |55.e". SUB     R|
0000d2f0  34 2c 52 34 2c 20 23 37  0d 65 2c 13 20 4d 4f 56  |4,R4, #7.e,. MOV|
0000d300  20 20 20 20 20 52 35 2c  20 23 30 0d 65 36 13 20  |     R5, #0.e6. |
0000d310  54 53 54 20 20 20 20 20  52 38 2c 20 23 31 0d 65  |TST     R8, #1.e|
0000d320  40 16 20 52 53 42 4e 45  20 20 20 52 33 2c 52 33  |@. RSBNE   R3,R3|
0000d330  2c 20 23 30 0d 65 4a 1c  20 53 55 42 4e 45 20 20  |, #0.eJ. SUBNE  |
0000d340  20 52 31 2c 52 31 2c 20  23 78 65 78 74 25 2b 32  | R1,R1, #xext%+2|
0000d350  0d 65 54 15 20 42 4c 20  20 20 20 20 20 61 64 64  |.eT. BL      add|
0000d360  5f 63 65 6c 6c 0d 65 5e  13 20 4d 4f 56 20 20 20  |_cell.e^. MOV   |
0000d370  20 20 52 35 2c 20 23 32  0d 65 68 13 20 4d 4f 56  |  R5, #2.eh. MOV|
0000d380  20 20 20 20 20 52 30 2c  20 23 31 0d 65 72 18 20  |     R0, #1.er. |
0000d390  53 54 52 20 20 20 20 20  52 30 2c 20 70 32 5f 66  |STR     R0, p2_f|
0000d3a0  69 72 65 0d 65 7c 16 20  2e 70 32 5f 6e 6f 74 5f  |ire.e|. .p2_not_|
0000d3b0  66 69 72 65 5f 67 6c 75  65 0d 65 86 18 20 42 20  |fire_glue.e.. B |
0000d3c0  20 20 20 20 20 20 70 32  5f 65 6e 64 5f 66 69 72  |      p2_end_fir|
0000d3d0  65 0d 65 90 06 20 3a 0d  65 9a 11 20 2e 70 32 5f  |e.e.. :.e.. .p2_|
0000d3e0  65 6e 64 5f 66 69 72 65  0d 65 a4 06 20 3a 0d 65  |end_fire.e.. :.e|
0000d3f0  ae 13 20 4d 4f 56 20 20  20 20 20 52 30 2c 20 23  |.. MOV     R0, #|
0000d400  31 0d 65 b8 1a 20 4d 4f  56 20 20 20 20 20 52 31  |1.e.. MOV     R1|
0000d410  2c 52 36 2c 20 4c 53 52  20 23 32 0d 65 c2 1a 20  |,R6, LSR #2.e.. |
0000d420  4d 4f 56 20 20 20 20 20  52 32 2c 52 37 2c 20 4c  |MOV     R2,R7, L|
0000d430  53 52 20 23 32 0d 65 cc  13 20 54 53 54 20 20 20  |SR #2.e.. TST   |
0000d440  20 20 52 38 2c 20 23 31  0d 65 d6 1a 20 41 44 44  |  R8, #1.e.. ADD|
0000d450  4e 45 20 20 20 52 31 2c  52 31 2c 20 23 78 65 78  |NE   R1,R1, #xex|
0000d460  74 25 0d 65 e0 1c 20 41  44 44 20 20 20 20 20 52  |t%.e.. ADD     R|
0000d470  32 2c 52 32 2c 20 23 79  65 78 74 25 2f 34 0d 65  |2,R2, #yext%/4.e|
0000d480  ea 18 20 52 53 42 20 20  20 20 20 52 32 2c 52 32  |.. RSB     R2,R2|
0000d490  2c 20 23 32 35 36 0d 65  f4 18 20 4c 44 52 20 20  |, #256.e.. LDR  |
0000d4a0  20 20 20 52 33 2c 20 61  64 72 5f 72 6e 64 0d 65  |   R3, adr_rnd.e|
0000d4b0  fe 14 20 4c 44 52 20 20  20 20 20 52 33 2c 5b 52  |.. LDR     R3,[R|
0000d4c0  33 5d 0d 66 08 18 20 54  53 54 20 20 20 20 20 52  |3].f.. TST     R|
0000d4d0  33 2c 20 23 25 31 30 30  30 30 0d 66 12 16 20 53  |3, #%10000.f.. S|
0000d4e0  55 42 45 51 20 20 20 52  32 2c 52 32 2c 20 23 31  |UBEQ   R2,R2, #1|
0000d4f0  0d 66 1c 15 20 80 20 20  20 20 20 52 33 2c 52 33  |.f.. .     R3,R3|
0000d500  2c 20 23 31 35 0d 66 26  16 20 53 55 42 20 20 20  |, #15.f&. SUB   |
0000d510  20 20 52 33 2c 52 33 2c  20 23 37 0d 66 30 13 20  |  R3,R3, #7.f0. |
0000d520  4d 4f 56 20 20 20 20 20  52 34 2c 20 23 30 0d 66  |MOV     R4, #0.f|
0000d530  3a 17 20 53 55 42 20 20  20 20 20 52 34 2c 52 34  |:. SUB     R4,R4|
0000d540  2c 20 23 34 30 0d 66 44  14 20 4d 4f 56 20 20 20  |, #40.fD. MOV   |
0000d550  20 20 52 35 2c 20 23 33  32 0d 66 4e 15 20 42 4c  |  R5, #32.fN. BL|
0000d560  20 20 20 20 20 20 61 64  64 5f 63 65 6c 6c 0d 66  |      add_cell.f|
0000d570  58 13 20 4d 4f 56 20 20  20 20 20 52 35 2c 20 23  |X. MOV     R5, #|
0000d580  32 0d 66 62 06 20 3a 0d  66 6c 14 20 80 20 20 20  |2.fb. :.fl. .   |
0000d590  20 20 52 30 2c 52 38 2c  20 23 31 0d 66 76 16 20  |  R0,R8, #1.fv. |
0000d5a0  41 44 44 20 20 20 20 20  52 30 2c 52 30 2c 20 23  |ADD     R0,R0, #|
0000d5b0  32 0d 66 80 1a 20 4d 4f  56 20 20 20 20 20 52 31  |2.f.. MOV     R1|
0000d5c0  2c 52 36 2c 20 4c 53 52  20 23 32 0d 66 8a 1a 20  |,R6, LSR #2.f.. |
0000d5d0  4d 4f 56 20 20 20 20 20  52 32 2c 52 37 2c 20 4c  |MOV     R2,R7, L|
0000d5e0  53 52 20 23 32 0d 66 94  19 20 4c 44 52 20 20 20  |SR #2.f.. LDR   |
0000d5f0  20 20 52 33 2c 20 61 64  72 5f 70 32 5f 78 0d 66  |  R3, adr_p2_x.f|
0000d600  9e 14 20 53 54 52 20 20  20 20 20 52 31 2c 5b 52  |.. STR     R1,[R|
0000d610  33 5d 0d 66 a8 19 20 4c  44 52 20 20 20 20 20 52  |3].f.. LDR     R|
0000d620  33 2c 20 61 64 72 5f 70  32 5f 79 0d 66 b2 14 20  |3, adr_p2_y.f.. |
0000d630  53 54 52 20 20 20 20 20  52 32 2c 5b 52 33 5d 0d  |STR     R2,[R3].|
0000d640  66 bc 1d 20 42 4c 20 20  20 20 20 20 70 6c 6f 74  |f.. BL      plot|
0000d650  5f 73 70 72 69 74 65 5f  31 36 31 36 0d 66 c6 06  |_sprite_1616.f..|
0000d660  20 3a 0d 66 d0 19 20 4c  44 4d 46 44 20 20 20 52  | :.f.. LDMFD   R|
0000d670  31 33 21 2c 7b 52 39 2c  50 43 7d 0d 66 da 06 20  |13!,{R9,PC}.f.. |
0000d680  3a 0d 66 e4 0e 20 2e 61  64 72 5f 70 32 5f 78 0d  |:.f.. .adr_p2_x.|
0000d690  66 ee 11 20 45 51 55 44  20 20 20 20 70 32 5f 78  |f.. EQUD    p2_x|
0000d6a0  0d 66 f8 0e 20 2e 61 64  72 5f 70 32 5f 79 0d 67  |.f.. .adr_p2_y.g|
0000d6b0  02 11 20 45 51 55 44 20  20 20 20 70 32 5f 79 0d  |.. EQUD    p2_y.|
0000d6c0  67 0c 13 20 2e 61 64 72  5f 70 32 5f 77 65 61 70  |g.. .adr_p2_weap|
0000d6d0  6f 6e 0d 67 16 16 20 45  51 55 44 20 20 20 20 70  |on.g.. EQUD    p|
0000d6e0  32 5f 77 65 61 70 6f 6e  0d 67 20 13 20 2e 61 64  |2_weapon.g . .ad|
0000d6f0  72 5f 70 31 5f 77 65 61  70 6f 6e 0d 67 2a 16 20  |r_p1_weapon.g*. |
0000d700  45 51 55 44 20 20 20 20  70 31 5f 77 65 61 70 6f  |EQUD    p1_weapo|
0000d710  6e 0d 67 34 0d 20 2e 70  31 5f 66 69 72 65 0d 67  |n.g4. .p1_fire.g|
0000d720  3e 0e 20 45 51 55 44 20  20 20 20 30 0d 67 48 0f  |>. EQUD    0.gH.|
0000d730  20 2e 65 78 70 6c 6f 64  65 5f 31 0d 67 52 0e 20  | .explode_1.gR. |
0000d740  45 51 55 44 20 20 20 20  30 0d 67 5c 06 20 3a 0d  |EQUD    0.g\. :.|
0000d750  67 66 0d 20 2e 70 6c 61  79 65 72 31 0d 67 70 1a  |gf. .player1.gp.|
0000d760  20 53 54 4d 46 44 20 20  20 52 31 33 21 2c 7b 52  | STMFD   R13!,{R|
0000d770  39 2c 52 31 34 7d 0d 67  7a 06 20 3a 0d 67 84 14  |9,R14}.gz. :.g..|
0000d780  20 43 4d 50 20 20 20 20  20 52 36 2c 20 23 33 32  | CMP     R6, #32|
0000d790  0d 67 8e 14 20 4d 4f 56  4c 54 20 20 20 52 36 2c  |.g.. MOVLT   R6,|
0000d7a0  20 23 33 32 0d 67 98 14  20 43 4d 50 20 20 20 20  | #32.g.. CMP    |
0000d7b0  20 52 37 2c 20 23 33 32  0d 67 a2 14 20 4d 4f 56  | R7, #32.g.. MOV|
0000d7c0  4c 54 20 20 20 52 37 2c  20 23 33 32 0d 67 ac 19  |LT   R7, #32.g..|
0000d7d0  20 43 4d 50 20 20 20 20  20 52 36 2c 20 23 31 32  | CMP     R6, #12|
0000d7e0  38 30 2d 36 34 0d 67 b6  19 20 4d 4f 56 47 54 20  |80-64.g.. MOVGT |
0000d7f0  20 20 52 36 2c 20 23 31  32 38 30 2d 36 34 0d 67  |  R6, #1280-64.g|
0000d800  c0 19 20 43 4d 50 20 20  20 20 20 52 37 2c 20 23  |.. CMP     R7, #|
0000d810  31 30 32 34 2d 36 34 0d  67 ca 19 20 4d 4f 56 47  |1024-64.g.. MOVG|
0000d820  54 20 20 20 52 37 2c 20  23 31 30 32 34 2d 36 34  |T   R7, #1024-64|
0000d830  0d 67 d4 06 20 3a 0d 67  de 1e 20 4c 44 52 20 20  |.g.. :.g.. LDR  |
0000d840  20 20 20 52 30 2c 20 70  6c 61 79 65 72 31 5f 61  |   R0, player1_a|
0000d850  6c 69 76 65 0d 67 e8 13  20 43 4d 50 20 20 20 20  |live.g.. CMP    |
0000d860  20 52 30 2c 20 23 30 0d  67 f2 19 20 42 45 51 20  | R0, #0.g.. BEQ |
0000d870  20 20 20 20 70 6c 61 79  5f 70 6c 61 79 65 72 31  |    play_player1|
0000d880  0d 67 fc 1c 20 42 4e 45  20 20 20 20 20 65 78 70  |.g.. BNE     exp|
0000d890  6c 6f 64 65 5f 70 6c 61  79 65 72 31 0d 68 06 06  |lode_player1.h..|
0000d8a0  20 3a 0d 68 10 15 20 2e  65 78 70 6c 6f 64 65 5f  | :.h.. .explode_|
0000d8b0  70 6c 61 79 65 72 31 0d  68 1a 1a 20 4c 44 52 20  |player1.h.. LDR |
0000d8c0  20 20 20 20 52 30 2c 20  65 78 70 6c 6f 64 65 5f  |    R0, explode_|
0000d8d0  31 0d 68 24 16 20 41 44  44 20 20 20 20 20 52 30  |1.h$. ADD     R0|
0000d8e0  2c 52 30 2c 20 23 31 0d  68 2e 1a 20 53 54 52 20  |,R0, #1.h.. STR |
0000d8f0  20 20 20 20 52 30 2c 20  65 78 70 6c 6f 64 65 5f  |    R0, explode_|
0000d900  31 0d 68 38 16 20 43 4d  50 20 20 20 20 20 52 30  |1.h8. CMP     R0|
0000d910  2c 20 23 37 3c 3c 33 0d  68 42 19 20 53 54 52 47  |, #7<<3.hB. STRG|
0000d920  54 20 20 20 52 30 2c 20  65 6e 64 5f 67 61 6d 65  |T   R0, end_game|
0000d930  0d 68 4c 19 20 4c 44 4d  47 54 46 44 20 52 31 33  |.hL. LDMGTFD R13|
0000d940  21 2c 7b 52 39 2c 50 43  7d 0d 68 56 16 20 43 4d  |!,{R9,PC}.hV. CM|
0000d950  50 20 20 20 20 20 52 30  2c 20 23 37 3c 3c 31 0d  |P     R0, #7<<1.|
0000d960  68 60 19 20 4c 44 4d 47  54 46 44 20 52 31 33 21  |h`. LDMGTFD R13!|
0000d970  2c 7b 52 39 2c 50 43 7d  0d 68 6a 1a 20 4d 4f 56  |,{R9,PC}.hj. MOV|
0000d980  20 20 20 20 20 52 30 2c  52 30 2c 20 41 53 52 20  |     R0,R0, ASR |
0000d990  23 31 0d 68 74 1a 20 4d  4f 56 20 20 20 20 20 52  |#1.ht. MOV     R|
0000d9a0  31 2c 52 36 2c 20 41 53  52 20 23 32 0d 68 7e 1a  |1,R6, ASR #2.h~.|
0000d9b0  20 4d 4f 56 20 20 20 20  20 52 32 2c 52 37 2c 20  | MOV     R2,R7, |
0000d9c0  41 53 52 20 23 32 0d 68  88 16 20 53 55 42 20 20  |ASR #2.h.. SUB  |
0000d9d0  20 20 20 52 31 2c 52 31  2c 20 23 34 0d 68 92 1d  |   R1,R1, #4.h..|
0000d9e0  20 42 4c 20 20 20 20 20  20 70 6c 6f 74 5f 73 70  | BL      plot_sp|
0000d9f0  72 69 74 65 5f 32 30 31  36 0d 68 9c 06 20 3a 0d  |rite_2016.h.. :.|
0000da00  68 a6 19 20 4c 44 4d 46  44 20 20 20 52 31 33 21  |h.. LDMFD   R13!|
0000da10  2c 7b 52 39 2c 50 43 7d  0d 68 b0 06 20 3a 0d 68  |,{R9,PC}.h.. :.h|
0000da20  ba 12 20 2e 70 6c 61 79  5f 70 6c 61 79 65 72 31  |.. .play_player1|
0000da30  0d 68 c4 06 20 3a 0d 68  ce 1a 20 4d 4f 56 20 20  |.h.. :.h.. MOV  |
0000da40  20 20 20 52 31 2c 52 36  2c 20 4c 53 52 20 23 32  |   R1,R6, LSR #2|
0000da50  0d 68 d8 1a 20 4d 4f 56  20 20 20 20 20 52 32 2c  |.h.. MOV     R2,|
0000da60  52 37 2c 20 4c 53 52 20  23 32 0d 68 e2 1c 20 41  |R7, LSR #2.h.. A|
0000da70  44 44 20 20 20 20 20 52  31 2c 52 31 2c 20 23 78  |DD     R1,R1, #x|
0000da80  65 78 74 25 2f 32 0d 68  ec 17 20 42 4c 20 20 20  |ext%/2.h.. BL   |
0000da90  20 20 20 72 65 61 64 5f  70 6f 69 6e 74 0d 68 f6  |   read_point.h.|
0000daa0  13 20 43 4d 50 20 20 20  20 20 52 30 2c 20 23 30  |. CMP     R0, #0|
0000dab0  0d 69 00 16 20 53 55 42  45 51 20 20 20 52 37 2c  |.i.. SUBEQ   R7,|
0000dac0  52 37 2c 20 23 34 0d 69  0a 06 20 3a 0d 69 14 1a  |R7, #4.i.. :.i..|
0000dad0  20 4d 4f 56 20 20 20 20  20 52 31 2c 52 36 2c 20  | MOV     R1,R6, |
0000dae0  4c 53 52 20 23 32 0d 69  1e 1a 20 4d 4f 56 20 20  |LSR #2.i.. MOV  |
0000daf0  20 20 20 52 32 2c 52 37  2c 20 4c 53 52 20 23 32  |   R2,R7, LSR #2|
0000db00  0d 69 28 1c 20 41 44 44  20 20 20 20 20 52 31 2c  |.i(. ADD     R1,|
0000db10  52 31 2c 20 23 78 65 78  74 25 2f 33 0d 69 32 17  |R1, #xext%/3.i2.|
0000db20  20 42 4c 20 20 20 20 20  20 72 65 61 64 5f 70 6f  | BL      read_po|
0000db30  69 6e 74 0d 69 3c 13 20  43 4d 50 20 20 20 20 20  |int.i<. CMP     |
0000db40  52 30 2c 20 23 30 0d 69  46 16 20 41 44 44 4e 45  |R0, #0.iF. ADDNE|
0000db50  20 20 20 52 37 2c 52 37  2c 20 23 34 0d 69 50 06  |   R7,R7, #4.iP.|
0000db60  20 3a 0d 69 5a 1a 20 4d  4f 56 20 20 20 20 20 52  | :.iZ. MOV     R|
0000db70  31 2c 52 36 2c 20 4c 53  52 20 23 32 0d 69 64 1a  |1,R6, LSR #2.id.|
0000db80  20 4d 4f 56 20 20 20 20  20 52 32 2c 52 37 2c 20  | MOV     R2,R7, |
0000db90  4c 53 52 20 23 32 0d 69  6e 1e 20 41 44 44 20 20  |LSR #2.in. ADD  |
0000dba0  20 20 20 52 31 2c 52 31  2c 20 23 78 65 78 74 25  |   R1,R1, #xext%|
0000dbb0  2f 33 2a 32 0d 69 78 17  20 42 4c 20 20 20 20 20  |/3*2.ix. BL     |
0000dbc0  20 72 65 61 64 5f 70 6f  69 6e 74 0d 69 82 13 20  | read_point.i.. |
0000dbd0  43 4d 50 20 20 20 20 20  52 30 2c 20 23 30 0d 69  |CMP     R0, #0.i|
0000dbe0  8c 16 20 41 44 44 4e 45  20 20 20 52 37 2c 52 37  |.. ADDNE   R7,R7|
0000dbf0  2c 20 23 34 0d 69 96 06  20 3a 0d 69 a0 1a 20 80  |, #4.i.. :.i.. .|
0000dc00  20 20 20 20 20 52 31 30  2c 52 38 2c 20 23 32 35  |     R10,R8, #25|
0000dc10  35 3c 3c 38 0d 69 aa 1c  20 4d 4f 56 20 20 20 20  |5<<8.i.. MOV    |
0000dc20  20 52 31 30 2c 52 31 30  2c 20 4c 53 52 20 23 38  | R10,R10, LSR #8|
0000dc30  0d 69 b4 06 20 3a 0d 69  be 1a 20 4d 4f 56 20 20  |.i.. :.i.. MOV  |
0000dc40  20 20 20 52 31 2c 52 36  2c 20 4c 53 52 20 23 32  |   R1,R6, LSR #2|
0000dc50  0d 69 c8 1a 20 4d 4f 56  20 20 20 20 20 52 32 2c  |.i.. MOV     R2,|
0000dc60  52 37 2c 20 4c 53 52 20  23 32 0d 69 d2 1c 20 41  |R7, LSR #2.i.. A|
0000dc70  44 44 20 20 20 20 20 52  31 2c 52 31 2c 20 23 78  |DD     R1,R1, #x|
0000dc80  65 78 74 25 2d 31 0d 69  dc 16 20 41 44 44 20 20  |ext%-1.i.. ADD  |
0000dc90  20 20 20 52 32 2c 52 32  2c 20 23 34 0d 69 e6 17  |   R2,R2, #4.i..|
0000dca0  20 42 4c 20 20 20 20 20  20 72 65 61 64 5f 70 6f  | BL      read_po|
0000dcb0  69 6e 74 0d 69 f0 13 20  43 4d 50 20 20 20 20 20  |int.i.. CMP     |
0000dcc0  52 30 2c 20 23 30 0d 69  fa 19 20 42 4e 45 20 20  |R0, #0.i.. BNE  |
0000dcd0  20 20 20 70 31 5f 6e 6f  74 5f 72 69 67 68 74 0d  |   p1_not_right.|
0000dce0  6a 04 1a 20 4d 4f 56 20  20 20 20 20 52 31 2c 52  |j.. MOV     R1,R|
0000dcf0  36 2c 20 4c 53 52 20 23  32 0d 6a 0e 1a 20 4d 4f  |6, LSR #2.j.. MO|
0000dd00  56 20 20 20 20 20 52 32  2c 52 37 2c 20 4c 53 52  |V     R2,R7, LSR|
0000dd10  20 23 32 0d 6a 18 1a 20  41 44 44 20 20 20 20 20  | #2.j.. ADD     |
0000dd20  52 31 2c 52 31 2c 20 23  78 65 78 74 25 0d 6a 22  |R1,R1, #xext%.j"|
0000dd30  1c 20 41 44 44 20 20 20  20 20 52 32 2c 52 32 2c  |. ADD     R2,R2,|
0000dd40  20 23 79 65 78 74 25 2d  32 0d 6a 2c 17 20 42 4c  | #yext%-2.j,. BL|
0000dd50  20 20 20 20 20 20 72 65  61 64 5f 70 6f 69 6e 74  |      read_point|
0000dd60  0d 6a 36 13 20 43 4d 50  20 20 20 20 20 52 30 2c  |.j6. CMP     R0,|
0000dd70  20 23 30 0d 6a 40 19 20  42 4e 45 20 20 20 20 20  | #0.j@. BNE     |
0000dd80  70 31 5f 6e 6f 74 5f 72  69 67 68 74 0d 6a 4a 15  |p1_not_right.jJ.|
0000dd90  20 4d 4f 56 20 20 20 20  20 52 30 2c 20 23 31 32  | MOV     R0, #12|
0000dda0  39 0d 6a 54 13 20 4d 4f  56 20 20 20 20 20 52 31  |9.jT. MOV     R1|
0000ddb0  2c 20 23 30 0d 6a 5e 17  20 53 55 42 20 20 20 20  |, #0.j^. SUB    |
0000ddc0  20 52 31 2c 52 31 2c 20  23 36 37 0d 6a 68 15 20  | R1,R1, #67.jh. |
0000ddd0  4d 4f 56 20 20 20 20 20  52 32 2c 20 23 32 35 35  |MOV     R2, #255|
0000dde0  0d 6a 72 16 20 53 57 49  20 20 20 20 20 22 4f 53  |.jr. SWI     "OS|
0000ddf0  5f 42 79 74 65 22 0d 6a  7c 15 20 43 4d 50 20 20  |_Byte".j|. CMP  |
0000de00  20 20 20 52 31 2c 20 23  32 35 35 0d 6a 86 19 20  |   R1, #255.j.. |
0000de10  42 4e 45 20 20 20 20 20  70 31 5f 6e 6f 74 5f 72  |BNE     p1_not_r|
0000de20  69 67 68 74 0d 6a 90 18  20 41 44 44 20 20 20 20  |ight.j.. ADD    |
0000de30  20 52 31 30 2c 52 31 30  2c 20 23 34 0d 6a 9a 16  | R10,R10, #4.j..|
0000de40  20 42 49 43 20 20 20 20  20 52 38 2c 52 38 2c 20  | BIC     R8,R8, |
0000de50  23 31 0d 6a a4 12 20 2e  70 31 5f 6e 6f 74 5f 72  |#1.j.. .p1_not_r|
0000de60  69 67 68 74 0d 6a ae 06  20 3a 0d 6a b8 1a 20 4d  |ight.j.. :.j.. M|
0000de70  4f 56 20 20 20 20 20 52  31 2c 52 36 2c 20 4c 53  |OV     R1,R6, LS|
0000de80  52 20 23 32 0d 6a c2 1a  20 4d 4f 56 20 20 20 20  |R #2.j.. MOV    |
0000de90  20 52 32 2c 52 37 2c 20  4c 53 52 20 23 32 0d 6a  | R2,R7, LSR #2.j|
0000dea0  cc 16 20 53 55 42 20 20  20 20 20 52 31 2c 52 31  |.. SUB     R1,R1|
0000deb0  2c 20 23 31 0d 6a d6 16  20 41 44 44 20 20 20 20  |, #1.j.. ADD    |
0000dec0  20 52 32 2c 52 32 2c 20  23 34 0d 6a e0 17 20 42  | R2,R2, #4.j.. B|
0000ded0  4c 20 20 20 20 20 20 72  65 61 64 5f 70 6f 69 6e  |L      read_poin|
0000dee0  74 0d 6a ea 13 20 43 4d  50 20 20 20 20 20 52 30  |t.j.. CMP     R0|
0000def0  2c 20 23 30 0d 6a f4 18  20 42 4e 45 20 20 20 20  |, #0.j.. BNE    |
0000df00  20 70 31 5f 6e 6f 74 5f  6c 65 66 74 0d 6a fe 1a  | p1_not_left.j..|
0000df10  20 4d 4f 56 20 20 20 20  20 52 31 2c 52 36 2c 20  | MOV     R1,R6, |
0000df20  4c 53 52 20 23 32 0d 6b  08 1a 20 4d 4f 56 20 20  |LSR #2.k.. MOV  |
0000df30  20 20 20 52 32 2c 52 37  2c 20 4c 53 52 20 23 32  |   R2,R7, LSR #2|
0000df40  0d 6b 12 16 20 53 55 42  20 20 20 20 20 52 31 2c  |.k.. SUB     R1,|
0000df50  52 31 2c 20 23 31 0d 6b  1c 1c 20 41 44 44 20 20  |R1, #1.k.. ADD  |
0000df60  20 20 20 52 32 2c 52 32  2c 20 23 79 65 78 74 25  |   R2,R2, #yext%|
0000df70  2d 32 0d 6b 26 17 20 42  4c 20 20 20 20 20 20 72  |-2.k&. BL      r|
0000df80  65 61 64 5f 70 6f 69 6e  74 0d 6b 30 13 20 43 4d  |ead_point.k0. CM|
0000df90  50 20 20 20 20 20 52 30  2c 20 23 30 0d 6b 3a 18  |P     R0, #0.k:.|
0000dfa0  20 42 4e 45 20 20 20 20  20 70 31 5f 6e 6f 74 5f  | BNE     p1_not_|
0000dfb0  6c 65 66 74 0d 6b 44 15  20 4d 4f 56 20 20 20 20  |left.kD. MOV    |
0000dfc0  20 52 30 2c 20 23 31 32  39 0d 6b 4e 13 20 4d 4f  | R0, #129.kN. MO|
0000dfd0  56 20 20 20 20 20 52 31  2c 20 23 30 0d 6b 58 17  |V     R1, #0.kX.|
0000dfe0  20 53 55 42 20 20 20 20  20 52 31 2c 52 31 2c 20  | SUB     R1,R1, |
0000dff0  23 39 38 0d 6b 62 15 20  4d 4f 56 20 20 20 20 20  |#98.kb. MOV     |
0000e000  52 32 2c 20 23 32 35 35  0d 6b 6c 16 20 53 57 49  |R2, #255.kl. SWI|
0000e010  20 20 20 20 20 22 4f 53  5f 42 79 74 65 22 0d 6b  |     "OS_Byte".k|
0000e020  76 15 20 43 4d 50 20 20  20 20 20 52 31 2c 20 23  |v. CMP     R1, #|
0000e030  32 35 35 0d 6b 80 18 20  42 4e 45 20 20 20 20 20  |255.k.. BNE     |
0000e040  70 31 5f 6e 6f 74 5f 6c  65 66 74 0d 6b 8a 18 20  |p1_not_left.k.. |
0000e050  53 55 42 20 20 20 20 20  52 31 30 2c 52 31 30 2c  |SUB     R10,R10,|
0000e060  20 23 34 0d 6b 94 15 20  84 52 20 20 20 20 20 52  | #4.k.. .R     R|
0000e070  38 2c 52 38 2c 20 23 31  0d 6b 9e 11 20 2e 70 31  |8,R8, #1.k.. .p1|
0000e080  5f 6e 6f 74 5f 6c 65 66  74 0d 6b a8 06 20 3a 0d  |_not_left.k.. :.|
0000e090  6b b2 16 20 43 4d 50 20  20 20 20 20 52 31 30 2c  |k.. CMP     R10,|
0000e0a0  20 23 31 32 38 0d 6b bc  18 20 42 45 51 20 20 20  | #128.k.. BEQ   |
0000e0b0  20 20 70 31 5f 73 69 64  65 77 61 79 73 0d 6b c6  |  p1_sideways.k.|
0000e0c0  15 20 42 47 54 20 20 20  20 20 70 31 5f 72 69 67  |. BGT     p1_rig|
0000e0d0  68 74 0d 6b d0 1a 20 4d  4f 56 20 20 20 20 20 52  |ht.k.. MOV     R|
0000e0e0  31 2c 52 36 2c 20 4c 53  52 20 23 32 0d 6b da 1a  |1,R6, LSR #2.k..|
0000e0f0  20 4d 4f 56 20 20 20 20  20 52 32 2c 52 37 2c 20  | MOV     R2,R7, |
0000e100  4c 53 52 20 23 32 0d 6b  e4 16 20 53 55 42 20 20  |LSR #2.k.. SUB  |
0000e110  20 20 20 52 31 2c 52 31  2c 20 23 31 0d 6b ee 16  |   R1,R1, #1.k..|
0000e120  20 41 44 44 20 20 20 20  20 52 32 2c 52 32 2c 20  | ADD     R2,R2, |
0000e130  23 32 0d 6b f8 17 20 42  4c 20 20 20 20 20 20 72  |#2.k.. BL      r|
0000e140  65 61 64 5f 70 6f 69 6e  74 0d 6c 02 13 20 43 4d  |ead_point.l.. CM|
0000e150  50 20 20 20 20 20 52 30  2c 20 23 30 0d 6c 0c 16  |P     R0, #0.l..|
0000e160  20 4d 4f 56 4e 45 20 20  20 52 31 30 2c 20 23 31  | MOVNE   R10, #1|
0000e170  32 38 0d 6c 16 1a 20 4d  4f 56 20 20 20 20 20 52  |28.l.. MOV     R|
0000e180  31 2c 52 36 2c 20 4c 53  52 20 23 32 0d 6c 20 1a  |1,R6, LSR #2.l .|
0000e190  20 4d 4f 56 20 20 20 20  20 52 32 2c 52 37 2c 20  | MOV     R2,R7, |
0000e1a0  4c 53 52 20 23 32 0d 6c  2a 16 20 53 55 42 20 20  |LSR #2.l*. SUB  |
0000e1b0  20 20 20 52 31 2c 52 31  2c 20 23 31 0d 6c 34 1c  |   R1,R1, #1.l4.|
0000e1c0  20 41 44 44 20 20 20 20  20 52 32 2c 52 32 2c 20  | ADD     R2,R2, |
0000e1d0  23 79 65 78 74 25 2d 32  0d 6c 3e 17 20 42 4c 20  |#yext%-2.l>. BL |
0000e1e0  20 20 20 20 20 72 65 61  64 5f 70 6f 69 6e 74 0d  |     read_point.|
0000e1f0  6c 48 13 20 43 4d 50 20  20 20 20 20 52 30 2c 20  |lH. CMP     R0, |
0000e200  23 30 0d 6c 52 16 20 4d  4f 56 4e 45 20 20 20 52  |#0.lR. MOVNE   R|
0000e210  31 30 2c 20 23 31 32 38  0d 6c 5c 18 20 42 20 20  |10, #128.l\. B  |
0000e220  20 20 20 20 20 70 31 5f  73 69 64 65 77 61 79 73  |     p1_sideways|
0000e230  0d 6c 66 0e 20 2e 70 31  5f 72 69 67 68 74 0d 6c  |.lf. .p1_right.l|
0000e240  70 1a 20 4d 4f 56 20 20  20 20 20 52 31 2c 52 36  |p. MOV     R1,R6|
0000e250  2c 20 4c 53 52 20 23 32  0d 6c 7a 1a 20 4d 4f 56  |, LSR #2.lz. MOV|
0000e260  20 20 20 20 20 52 32 2c  52 37 2c 20 4c 53 52 20  |     R2,R7, LSR |
0000e270  23 32 0d 6c 84 1a 20 41  44 44 20 20 20 20 20 52  |#2.l.. ADD     R|
0000e280  31 2c 52 31 2c 20 23 78  65 78 74 25 0d 6c 8e 16  |1,R1, #xext%.l..|
0000e290  20 41 44 44 20 20 20 20  20 52 32 2c 52 32 2c 20  | ADD     R2,R2, |
0000e2a0  23 32 0d 6c 98 17 20 42  4c 20 20 20 20 20 20 72  |#2.l.. BL      r|
0000e2b0  65 61 64 5f 70 6f 69 6e  74 0d 6c a2 13 20 43 4d  |ead_point.l.. CM|
0000e2c0  50 20 20 20 20 20 52 30  2c 20 23 30 0d 6c ac 16  |P     R0, #0.l..|
0000e2d0  20 4d 4f 56 4e 45 20 20  20 52 31 30 2c 20 23 31  | MOVNE   R10, #1|
0000e2e0  32 38 0d 6c b6 1a 20 4d  4f 56 20 20 20 20 20 52  |28.l.. MOV     R|
0000e2f0  31 2c 52 36 2c 20 4c 53  52 20 23 32 0d 6c c0 1a  |1,R6, LSR #2.l..|
0000e300  20 4d 4f 56 20 20 20 20  20 52 32 2c 52 37 2c 20  | MOV     R2,R7, |
0000e310  4c 53 52 20 23 32 0d 6c  ca 1a 20 41 44 44 20 20  |LSR #2.l.. ADD  |
0000e320  20 20 20 52 31 2c 52 31  2c 20 23 78 65 78 74 25  |   R1,R1, #xext%|
0000e330  0d 6c d4 1c 20 41 44 44  20 20 20 20 20 52 32 2c  |.l.. ADD     R2,|
0000e340  52 32 2c 20 23 79 65 78  74 25 2d 32 0d 6c de 17  |R2, #yext%-2.l..|
0000e350  20 42 4c 20 20 20 20 20  20 72 65 61 64 5f 70 6f  | BL      read_po|
0000e360  69 6e 74 0d 6c e8 13 20  43 4d 50 20 20 20 20 20  |int.l.. CMP     |
0000e370  52 30 2c 20 23 30 0d 6c  f2 16 20 4d 4f 56 4e 45  |R0, #0.l.. MOVNE|
0000e380  20 20 20 52 31 30 2c 20  23 31 32 38 0d 6c fc 18  |   R10, #128.l..|
0000e390  20 42 20 20 20 20 20 20  20 70 31 5f 73 69 64 65  | B       p1_side|
0000e3a0  77 61 79 73 0d 6d 06 11  20 2e 70 31 5f 73 69 64  |ways.m.. .p1_sid|
0000e3b0  65 77 61 79 73 0d 6d 10  1b 20 43 4d 50 20 20 20  |eways.m.. CMP   |
0000e3c0  20 20 52 31 30 2c 20 23  31 32 38 2b 32 35 2a 32  |  R10, #128+25*2|
0000e3d0  0d 6d 1a 1b 20 4d 4f 56  47 54 20 20 20 52 31 30  |.m.. MOVGT   R10|
0000e3e0  2c 20 23 31 32 38 2b 32  35 2a 32 0d 6d 24 1b 20  |, #128+25*2.m$. |
0000e3f0  43 4d 50 20 20 20 20 20  52 31 30 2c 20 23 31 32  |CMP     R10, #12|
0000e400  38 2d 32 35 2a 32 0d 6d  2e 1b 20 4d 4f 56 4c 54  |8-25*2.m.. MOVLT|
0000e410  20 20 20 52 31 30 2c 20  23 31 32 38 2d 32 35 2a  |   R10, #128-25*|
0000e420  32 0d 6d 38 16 20 43 4d  50 20 20 20 20 20 52 31  |2.m8. CMP     R1|
0000e430  30 2c 20 23 31 32 38 0d  6d 42 18 20 41 44 44 4c  |0, #128.mB. ADDL|
0000e440  54 20 20 20 52 31 30 2c  52 31 30 2c 20 23 31 0d  |T   R10,R10, #1.|
0000e450  6d 4c 18 20 53 55 42 47  54 20 20 20 52 31 30 2c  |mL. SUBGT   R10,|
0000e460  52 31 30 2c 20 23 31 0d  6d 56 1b 20 42 49 43 20  |R10, #1.mV. BIC |
0000e470  20 20 20 20 52 38 2c 52  38 2c 20 23 32 35 35 3c  |    R8,R8, #255<|
0000e480  3c 38 0d 6d 60 1d 20 84  52 20 20 20 20 20 52 38  |<8.m`. .R     R8|
0000e490  2c 52 38 2c 52 31 30 2c  20 4c 53 4c 20 23 38 0d  |,R8,R10, LSL #8.|
0000e4a0  6d 6a 1a 20 53 55 42 20  20 20 20 20 52 31 30 2c  |mj. SUB     R10,|
0000e4b0  52 31 30 2c 20 23 31 32  38 0d 6d 74 1e 20 41 44  |R10, #128.mt. AD|
0000e4c0  44 20 20 20 20 20 52 36  2c 52 36 2c 52 31 30 2c  |D     R6,R6,R10,|
0000e4d0  20 41 53 52 20 23 33 0d  6d 7e 06 20 3a 0d 6d 88  | ASR #3.m~. :.m.|
0000e4e0  1b 20 80 20 20 20 20 20  52 31 30 2c 52 38 2c 20  |. .     R10,R8, |
0000e4f0  23 32 35 35 3c 3c 31 36  0d 6d 92 1d 20 4d 4f 56  |#255<<16.m.. MOV|
0000e500  20 20 20 20 20 52 31 30  2c 52 31 30 2c 20 4c 53  |     R10,R10, LS|
0000e510  52 20 23 31 36 0d 6d 9c  06 20 3a 0d 6d a6 1a 20  |R #16.m.. :.m.. |
0000e520  4d 4f 56 20 20 20 20 20  52 31 2c 52 36 2c 20 4c  |MOV     R1,R6, L|
0000e530  53 52 20 23 32 0d 6d b0  1a 20 4d 4f 56 20 20 20  |SR #2.m.. MOV   |
0000e540  20 20 52 32 2c 52 37 2c  20 4c 53 52 20 23 32 0d  |  R2,R7, LSR #2.|
0000e550  6d ba 1e 20 41 44 44 20  20 20 20 20 52 31 2c 52  |m.. ADD     R1,R|
0000e560  31 2c 20 23 78 65 78 74  25 2f 32 2b 31 0d 6d c4  |1, #xext%/2+1.m.|
0000e570  1a 20 41 44 44 20 20 20  20 20 52 32 2c 52 32 2c  |. ADD     R2,R2,|
0000e580  20 23 79 65 78 74 25 0d  6d ce 17 20 42 4c 20 20  | #yext%.m.. BL  |
0000e590  20 20 20 20 72 65 61 64  5f 70 6f 69 6e 74 0d 6d  |    read_point.m|
0000e5a0  d8 13 20 43 4d 50 20 20  20 20 20 52 30 2c 20 23  |.. CMP     R0, #|
0000e5b0  30 0d 6d e2 16 20 42 4e  45 20 20 20 20 20 70 31  |0.m.. BNE     p1|
0000e5c0  5f 6e 6f 74 5f 75 70 0d  6d ec 1a 20 4d 4f 56 20  |_not_up.m.. MOV |
0000e5d0  20 20 20 20 52 31 2c 52  36 2c 20 4c 53 52 20 23  |    R1,R6, LSR #|
0000e5e0  32 0d 6d f6 1a 20 4d 4f  56 20 20 20 20 20 52 32  |2.m.. MOV     R2|
0000e5f0  2c 52 37 2c 20 4c 53 52  20 23 32 0d 6e 00 1e 20  |,R7, LSR #2.n.. |
0000e600  41 44 44 20 20 20 20 20  52 31 2c 52 31 2c 20 23  |ADD     R1,R1, #|
0000e610  78 65 78 74 25 2f 32 2d  31 0d 6e 0a 1a 20 41 44  |xext%/2-1.n.. AD|
0000e620  44 20 20 20 20 20 52 32  2c 52 32 2c 20 23 79 65  |D     R2,R2, #ye|
0000e630  78 74 25 0d 6e 14 17 20  42 4c 20 20 20 20 20 20  |xt%.n.. BL      |
0000e640  72 65 61 64 5f 70 6f 69  6e 74 0d 6e 1e 13 20 43  |read_point.n.. C|
0000e650  4d 50 20 20 20 20 20 52  30 2c 20 23 30 0d 6e 28  |MP     R0, #0.n(|
0000e660  16 20 42 4e 45 20 20 20  20 20 70 31 5f 6e 6f 74  |. BNE     p1_not|
0000e670  5f 75 70 0d 6e 32 15 20  4d 4f 56 20 20 20 20 20  |_up.n2. MOV     |
0000e680  52 30 2c 20 23 31 32 39  0d 6e 3c 13 20 4d 4f 56  |R0, #129.n<. MOV|
0000e690  20 20 20 20 20 52 31 2c  20 23 30 0d 6e 46 17 20  |     R1, #0.nF. |
0000e6a0  53 55 42 20 20 20 20 20  52 31 2c 52 31 2c 20 23  |SUB     R1,R1, #|
0000e6b0  36 38 0d 6e 50 15 20 4d  4f 56 20 20 20 20 20 52  |68.nP. MOV     R|
0000e6c0  32 2c 20 23 32 35 35 0d  6e 5a 16 20 53 57 49 20  |2, #255.nZ. SWI |
0000e6d0  20 20 20 20 22 4f 53 5f  42 79 74 65 22 0d 6e 64  |    "OS_Byte".nd|
0000e6e0  15 20 43 4d 50 20 20 20  20 20 52 31 2c 20 23 32  |. CMP     R1, #2|
0000e6f0  35 35 0d 6e 6e 18 20 41  44 44 45 51 20 20 20 52  |55.nn. ADDEQ   R|
0000e700  31 30 2c 52 31 30 2c 20  23 34 0d 6e 78 0f 20 2e  |10,R10, #4.nx. .|
0000e710  70 31 5f 6e 6f 74 5f 75  70 0d 6e 82 06 20 3a 0d  |p1_not_up.n.. :.|
0000e720  6e 8c 1a 20 4d 4f 56 20  20 20 20 20 52 31 2c 52  |n.. MOV     R1,R|
0000e730  36 2c 20 4c 53 52 20 23  32 0d 6e 96 1a 20 4d 4f  |6, LSR #2.n.. MO|
0000e740  56 20 20 20 20 20 52 32  2c 52 37 2c 20 4c 53 52  |V     R2,R7, LSR|
0000e750  20 23 32 0d 6e a0 1c 20  41 44 44 20 20 20 20 20  | #2.n.. ADD     |
0000e760  52 31 2c 52 31 2c 20 23  78 65 78 74 25 2d 32 0d  |R1,R1, #xext%-2.|
0000e770  6e aa 17 20 42 4c 20 20  20 20 20 20 72 65 61 64  |n.. BL      read|
0000e780  5f 70 6f 69 6e 74 0d 6e  b4 13 20 43 4d 50 20 20  |_point.n.. CMP  |
0000e790  20 20 20 52 30 2c 20 23  30 0d 6e be 18 20 42 4e  |   R0, #0.n.. BN|
0000e7a0  45 20 20 20 20 20 70 31  5f 6e 6f 74 5f 64 6f 77  |E     p1_not_dow|
0000e7b0  6e 0d 6e c8 1a 20 4d 4f  56 20 20 20 20 20 52 31  |n.n.. MOV     R1|
0000e7c0  2c 52 36 2c 20 4c 53 52  20 23 32 0d 6e d2 1a 20  |,R6, LSR #2.n.. |
0000e7d0  4d 4f 56 20 20 20 20 20  52 32 2c 52 37 2c 20 4c  |MOV     R2,R7, L|
0000e7e0  53 52 20 23 32 0d 6e dc  16 20 41 44 44 20 20 20  |SR #2.n.. ADD   |
0000e7f0  20 20 52 31 2c 52 31 2c  20 23 32 0d 6e e6 17 20  |  R1,R1, #2.n.. |
0000e800  42 4c 20 20 20 20 20 20  72 65 61 64 5f 70 6f 69  |BL      read_poi|
0000e810  6e 74 0d 6e f0 13 20 43  4d 50 20 20 20 20 20 52  |nt.n.. CMP     R|
0000e820  30 2c 20 23 30 0d 6e fa  18 20 42 4e 45 20 20 20  |0, #0.n.. BNE   |
0000e830  20 20 70 31 5f 6e 6f 74  5f 64 6f 77 6e 0d 6f 04  |  p1_not_down.o.|
0000e840  15 20 4d 4f 56 20 20 20  20 20 52 30 2c 20 23 31  |. MOV     R0, #1|
0000e850  32 39 0d 6f 0e 13 20 4d  4f 56 20 20 20 20 20 52  |29.o.. MOV     R|
0000e860  31 2c 20 23 30 0d 6f 18  17 20 53 55 42 20 20 20  |1, #0.o.. SUB   |
0000e870  20 20 52 31 2c 52 31 2c  20 23 38 33 0d 6f 22 15  |  R1,R1, #83.o".|
0000e880  20 4d 4f 56 20 20 20 20  20 52 32 2c 20 23 32 35  | MOV     R2, #25|
0000e890  35 0d 6f 2c 16 20 53 57  49 20 20 20 20 20 22 4f  |5.o,. SWI     "O|
0000e8a0  53 5f 42 79 74 65 22 0d  6f 36 15 20 43 4d 50 20  |S_Byte".o6. CMP |
0000e8b0  20 20 20 20 52 31 2c 20  23 32 35 35 0d 6f 40 18  |    R1, #255.o@.|
0000e8c0  20 53 55 42 45 51 20 20  20 52 31 30 2c 52 31 30  | SUBEQ   R10,R10|
0000e8d0  2c 20 23 32 0d 6f 4a 11  20 2e 70 31 5f 6e 6f 74  |, #2.oJ. .p1_not|
0000e8e0  5f 64 6f 77 6e 0d 6f 54  06 20 3a 0d 6f 5e 18 20  |_down.oT. :.o^. |
0000e8f0  53 55 42 20 20 20 20 20  52 31 30 2c 52 31 30 2c  |SUB     R10,R10,|
0000e900  20 23 31 0d 6f 68 06 20  3a 0d 6f 72 16 20 43 4d  | #1.oh. :.or. CM|
0000e910  50 20 20 20 20 20 52 31  30 2c 20 23 31 32 38 0d  |P     R10, #128.|
0000e920  6f 7c 12 20 42 45 51 20  20 20 20 20 70 31 5f 75  |o|. BEQ     p1_u|
0000e930  64 0d 6f 86 12 20 42 47  54 20 20 20 20 20 70 31  |d.o.. BGT     p1|
0000e940  5f 75 70 0d 6f 90 1a 20  4d 4f 56 20 20 20 20 20  |_up.o.. MOV     |
0000e950  52 31 2c 52 36 2c 20 4c  53 52 20 23 32 0d 6f 9a  |R1,R6, LSR #2.o.|
0000e960  1a 20 4d 4f 56 20 20 20  20 20 52 32 2c 52 37 2c  |. MOV     R2,R7,|
0000e970  20 4c 53 52 20 23 32 0d  6f a4 1c 20 41 44 44 20  | LSR #2.o.. ADD |
0000e980  20 20 20 20 52 31 2c 52  31 2c 20 23 78 65 78 74  |    R1,R1, #xext|
0000e990  25 2f 32 0d 6f ae 16 20  53 55 42 20 20 20 20 20  |%/2.o.. SUB     |
0000e9a0  52 32 2c 52 32 2c 20 23  31 0d 6f b8 17 20 42 4c  |R2,R2, #1.o.. BL|
0000e9b0  20 20 20 20 20 20 72 65  61 64 5f 70 6f 69 6e 74  |      read_point|
0000e9c0  0d 6f c2 13 20 43 4d 50  20 20 20 20 20 52 30 2c  |.o.. CMP     R0,|
0000e9d0  20 23 30 0d 6f cc 16 20  4d 4f 56 4e 45 20 20 20  | #0.o.. MOVNE   |
0000e9e0  52 31 30 2c 20 23 31 32  38 0d 6f d6 12 20 42 20  |R10, #128.o.. B |
0000e9f0  20 20 20 20 20 20 70 31  5f 75 64 0d 6f e0 0b 20  |      p1_ud.o.. |
0000ea00  2e 70 31 5f 75 70 0d 6f  ea 1a 20 4d 4f 56 20 20  |.p1_up.o.. MOV  |
0000ea10  20 20 20 52 31 2c 52 36  2c 20 4c 53 52 20 23 32  |   R1,R6, LSR #2|
0000ea20  0d 6f f4 1a 20 4d 4f 56  20 20 20 20 20 52 32 2c  |.o.. MOV     R2,|
0000ea30  52 37 2c 20 4c 53 52 20  23 32 0d 6f fe 1e 20 41  |R7, LSR #2.o.. A|
0000ea40  44 44 20 20 20 20 20 52  31 2c 52 31 2c 20 23 78  |DD     R1,R1, #x|
0000ea50  65 78 74 25 2f 32 2b 32  0d 70 08 1a 20 41 44 44  |ext%/2+2.p.. ADD|
0000ea60  20 20 20 20 20 52 32 2c  52 32 2c 20 23 79 65 78  |     R2,R2, #yex|
0000ea70  74 25 0d 70 12 17 20 42  4c 20 20 20 20 20 20 72  |t%.p.. BL      r|
0000ea80  65 61 64 5f 70 6f 69 6e  74 0d 70 1c 13 20 43 4d  |ead_point.p.. CM|
0000ea90  50 20 20 20 20 20 52 30  2c 20 23 30 0d 70 26 16  |P     R0, #0.p&.|
0000eaa0  20 4d 4f 56 4e 45 20 20  20 52 31 30 2c 20 23 31  | MOVNE   R10, #1|
0000eab0  32 38 0d 70 30 1a 20 4d  4f 56 20 20 20 20 20 52  |28.p0. MOV     R|
0000eac0  31 2c 52 36 2c 20 4c 53  52 20 23 32 0d 70 3a 1a  |1,R6, LSR #2.p:.|
0000ead0  20 4d 4f 56 20 20 20 20  20 52 32 2c 52 37 2c 20  | MOV     R2,R7, |
0000eae0  4c 53 52 20 23 32 0d 70  44 1e 20 41 44 44 20 20  |LSR #2.pD. ADD  |
0000eaf0  20 20 20 52 31 2c 52 31  2c 20 23 78 65 78 74 25  |   R1,R1, #xext%|
0000eb00  2f 32 2d 32 0d 70 4e 1a  20 41 44 44 20 20 20 20  |/2-2.pN. ADD    |
0000eb10  20 52 32 2c 52 32 2c 20  23 79 65 78 74 25 0d 70  | R2,R2, #yext%.p|
0000eb20  58 17 20 42 4c 20 20 20  20 20 20 72 65 61 64 5f  |X. BL      read_|
0000eb30  70 6f 69 6e 74 0d 70 62  13 20 43 4d 50 20 20 20  |point.pb. CMP   |
0000eb40  20 20 52 30 2c 20 23 30  0d 70 6c 16 20 4d 4f 56  |  R0, #0.pl. MOV|
0000eb50  4e 45 20 20 20 52 31 30  2c 20 23 31 32 38 0d 70  |NE   R10, #128.p|
0000eb60  76 12 20 42 20 20 20 20  20 20 20 70 31 5f 75 64  |v. B       p1_ud|
0000eb70  0d 70 80 0b 20 2e 70 31  5f 75 64 0d 70 8a 1b 20  |.p.. .p1_ud.p.. |
0000eb80  43 4d 50 20 20 20 20 20  52 31 30 2c 20 23 31 32  |CMP     R10, #12|
0000eb90  38 2b 31 30 2a 34 0d 70  94 1b 20 4d 4f 56 47 54  |8+10*4.p.. MOVGT|
0000eba0  20 20 20 52 31 30 2c 20  23 31 32 38 2b 31 30 2a  |   R10, #128+10*|
0000ebb0  34 0d 70 9e 1a 20 43 4d  50 20 20 20 20 20 52 31  |4.p.. CMP     R1|
0000ebc0  30 2c 20 23 31 32 38 2d  38 2a 34 0d 70 a8 1a 20  |0, #128-8*4.p.. |
0000ebd0  4d 4f 56 4c 54 20 20 20  52 31 30 2c 20 23 31 32  |MOVLT   R10, #12|
0000ebe0  38 2d 38 2a 34 0d 70 b2  16 20 43 4d 50 20 20 20  |8-8*4.p.. CMP   |
0000ebf0  20 20 52 31 30 2c 20 23  31 32 38 0d 70 bc 1c 20  |  R10, #128.p.. |
0000ec00  42 49 43 20 20 20 20 20  52 38 2c 52 38 2c 20 23  |BIC     R8,R8, #|
0000ec10  32 35 35 3c 3c 31 36 0d  70 c6 1e 20 84 52 20 20  |255<<16.p.. .R  |
0000ec20  20 20 20 52 38 2c 52 38  2c 52 31 30 2c 20 4c 53  |   R8,R8,R10, LS|
0000ec30  4c 20 23 31 36 0d 70 d0  1a 20 53 55 42 20 20 20  |L #16.p.. SUB   |
0000ec40  20 20 52 31 30 2c 52 31  30 2c 20 23 31 32 38 0d  |  R10,R10, #128.|
0000ec50  70 da 1e 20 41 44 44 20  20 20 20 20 52 37 2c 52  |p.. ADD     R7,R|
0000ec60  37 2c 52 31 30 2c 20 41  53 52 20 23 32 0d 70 e4  |7,R10, ASR #2.p.|
0000ec70  06 20 3a 0d 70 ee 1e 20  4c 44 52 20 20 20 20 20  |. :.p.. LDR     |
0000ec80  52 30 2c 20 61 64 72 5f  70 31 5f 77 65 61 70 6f  |R0, adr_p1_weapo|
0000ec90  6e 0d 70 f8 14 20 4c 44  52 20 20 20 20 20 52 30  |n.p.. LDR     R0|
0000eca0  2c 5b 52 30 5d 0d 71 02  13 20 43 4d 50 20 20 20  |,[R0].q.. CMP   |
0000ecb0  20 20 52 30 2c 20 23 32  0d 71 0c 1b 20 42 45 51  |  R0, #2.q.. BEQ|
0000ecc0  20 20 20 20 20 70 31 5f  66 69 72 65 5f 70 69 73  |     p1_fire_pis|
0000ecd0  74 6f 6c 0d 71 16 13 20  43 4d 50 20 20 20 20 20  |tol.q.. CMP     |
0000ece0  52 30 2c 20 23 33 0d 71  20 18 20 42 45 51 20 20  |R0, #3.q . BEQ  |
0000ecf0  20 20 20 70 31 5f 66 69  72 65 5f 67 75 6e 0d 71  |   p1_fire_gun.q|
0000ed00  2a 13 20 43 4d 50 20 20  20 20 20 52 30 2c 20 23  |*. CMP     R0, #|
0000ed10  34 0d 71 34 1b 20 42 45  51 20 20 20 20 20 70 31  |4.q4. BEQ     p1|
0000ed20  5f 66 69 72 65 5f 6d 6f  72 74 61 72 0d 71 3e 13  |_fire_mortar.q>.|
0000ed30  20 43 4d 50 20 20 20 20  20 52 30 2c 20 23 35 0d  | CMP     R0, #5.|
0000ed40  71 48 1b 20 42 45 51 20  20 20 20 20 70 31 5f 66  |qH. BEQ     p1_f|
0000ed50  69 72 65 5f 68 6f 6d 69  6e 67 0d 71 52 13 20 43  |ire_homing.qR. C|
0000ed60  4d 50 20 20 20 20 20 52  30 2c 20 23 36 0d 71 5c  |MP     R0, #6.q\|
0000ed70  1c 20 42 45 51 20 20 20  20 20 70 31 5f 66 69 72  |. BEQ     p1_fir|
0000ed80  65 5f 73 65 65 6b 69 6e  67 0d 71 66 13 20 43 4d  |e_seeking.qf. CM|
0000ed90  50 20 20 20 20 20 52 30  2c 20 23 37 0d 71 70 1d  |P     R0, #7.qp.|
0000eda0  20 42 45 51 20 20 20 20  20 70 31 5f 66 69 72 65  | BEQ     p1_fire|
0000edb0  5f 76 65 72 74 69 63 61  6c 0d 71 7a 13 20 43 4d  |_vertical.qz. CM|
0000edc0  50 20 20 20 20 20 52 30  2c 20 23 38 0d 71 84 1a  |P     R0, #8.q..|
0000edd0  20 42 45 51 20 20 20 20  20 70 31 5f 66 69 72 65  | BEQ     p1_fire|
0000ede0  5f 66 6c 61 6d 65 0d 71  8e 13 20 43 4d 50 20 20  |_flame.q.. CMP  |
0000edf0  20 20 20 52 30 2c 20 23  39 0d 71 98 19 20 42 45  |   R0, #9.q.. BE|
0000ee00  51 20 20 20 20 20 70 31  5f 66 69 72 65 5f 62 6f  |Q     p1_fire_bo|
0000ee10  6d 62 0d 71 a2 14 20 43  4d 50 20 20 20 20 20 52  |mb.q.. CMP     R|
0000ee20  30 2c 20 23 31 30 0d 71  ac 19 20 42 45 51 20 20  |0, #10.q.. BEQ  |
0000ee30  20 20 20 70 31 5f 66 69  72 65 5f 67 6c 75 65 0d  |   p1_fire_glue.|
0000ee40  71 b6 06 20 3a 0d 71 c0  14 20 2e 70 31 5f 66 69  |q.. :.q.. .p1_fi|
0000ee50  72 65 5f 70 69 73 74 6f  6c 0d 71 ca 18 20 4c 44  |re_pistol.q.. LD|
0000ee60  52 20 20 20 20 20 52 30  2c 20 70 31 5f 66 69 72  |R     R0, p1_fir|
0000ee70  65 0d 71 d4 13 20 43 4d  50 20 20 20 20 20 52 30  |e.q.. CMP     R0|
0000ee80  2c 20 23 30 0d 71 de 1b  20 42 45 51 20 20 20 20  |, #0.q.. BEQ    |
0000ee90  20 70 31 5f 70 69 73 74  6f 6c 5f 73 68 6f 74 0d  | p1_pistol_shot.|
0000eea0  71 e8 15 20 4d 4f 56 20  20 20 20 20 52 30 2c 20  |q.. MOV     R0, |
0000eeb0  23 31 32 39 0d 71 f2 13  20 4d 4f 56 20 20 20 20  |#129.q.. MOV    |
0000eec0  20 52 31 2c 20 23 30 0d  71 fc 17 20 53 55 42 20  | R1, #0.q.. SUB |
0000eed0  20 20 20 20 52 31 2c 52  31 2c 20 23 38 34 0d 72  |    R1,R1, #84.r|
0000eee0  06 15 20 4d 4f 56 20 20  20 20 20 52 32 2c 20 23  |.. MOV     R2, #|
0000eef0  32 35 35 0d 72 10 16 20  53 57 49 20 20 20 20 20  |255.r.. SWI     |
0000ef00  22 4f 53 5f 42 79 74 65  22 0d 72 1a 15 20 43 4d  |"OS_Byte".r.. CM|
0000ef10  50 20 20 20 20 20 52 31  2c 20 23 32 35 35 0d 72  |P     R1, #255.r|
0000ef20  24 13 20 4d 4f 56 4e 45  20 20 20 52 30 2c 20 23  |$. MOVNE   R0, #|
0000ef30  30 0d 72 2e 18 20 53 54  52 4e 45 20 20 20 52 30  |0.r.. STRNE   R0|
0000ef40  2c 20 70 31 5f 66 69 72  65 0d 72 38 1f 20 42 20  |, p1_fire.r8. B |
0000ef50  20 20 20 20 20 20 70 31  5f 6e 6f 74 5f 66 69 72  |      p1_not_fir|
0000ef60  65 5f 70 69 73 74 6f 6c  0d 72 42 14 20 2e 70 31  |e_pistol.rB. .p1|
0000ef70  5f 70 69 73 74 6f 6c 5f  73 68 6f 74 0d 72 4c 15  |_pistol_shot.rL.|
0000ef80  20 4d 4f 56 20 20 20 20  20 52 30 2c 20 23 31 32  | MOV     R0, #12|
0000ef90  39 0d 72 56 13 20 4d 4f  56 20 20 20 20 20 52 31  |9.rV. MOV     R1|
0000efa0  2c 20 23 30 0d 72 60 17  20 53 55 42 20 20 20 20  |, #0.r`. SUB    |
0000efb0  20 52 31 2c 52 31 2c 20  23 38 34 0d 72 6a 15 20  | R1,R1, #84.rj. |
0000efc0  4d 4f 56 20 20 20 20 20  52 32 2c 20 23 32 35 35  |MOV     R2, #255|
0000efd0  0d 72 74 16 20 53 57 49  20 20 20 20 20 22 4f 53  |.rt. SWI     "OS|
0000efe0  5f 42 79 74 65 22 0d 72  7e 15 20 43 4d 50 20 20  |_Byte".r~. CMP  |
0000eff0  20 20 20 52 31 2c 20 23  32 35 35 0d 72 88 1f 20  |   R1, #255.r.. |
0000f000  42 4e 45 20 20 20 20 20  70 31 5f 6e 6f 74 5f 66  |BNE     p1_not_f|
0000f010  69 72 65 5f 70 69 73 74  6f 6c 0d 72 92 13 20 4d  |ire_pistol.r.. M|
0000f020  4f 56 20 20 20 20 20 52  30 2c 20 23 32 0d 72 9c  |OV     R0, #2.r.|
0000f030  1a 20 4d 4f 56 20 20 20  20 20 52 31 2c 52 36 2c  |. MOV     R1,R6,|
0000f040  20 4c 53 52 20 23 32 0d  72 a6 1a 20 4d 4f 56 20  | LSR #2.r.. MOV |
0000f050  20 20 20 20 52 32 2c 52  37 2c 20 4c 53 52 20 23  |    R2,R7, LSR #|
0000f060  32 0d 72 b0 1a 20 41 44  44 20 20 20 20 20 52 31  |2.r.. ADD     R1|
0000f070  2c 52 31 2c 20 23 78 65  78 74 25 0d 72 ba 1e 20  |,R1, #xext%.r.. |
0000f080  41 44 44 20 20 20 20 20  52 32 2c 52 32 2c 20 23  |ADD     R2,R2, #|
0000f090  79 65 78 74 25 2f 34 2a  32 0d 72 c4 18 20 52 53  |yext%/4*2.r.. RS|
0000f0a0  42 20 20 20 20 20 52 32  2c 52 32 2c 20 23 32 35  |B     R2,R2, #25|
0000f0b0  36 0d 72 ce 14 20 4d 4f  56 20 20 20 20 20 52 33  |6.r.. MOV     R3|
0000f0c0  2c 20 23 38 30 0d 72 d8  13 20 4d 4f 56 20 20 20  |, #80.r.. MOV   |
0000f0d0  20 20 52 34 2c 20 23 30  0d 72 e2 13 20 4d 4f 56  |  R4, #0.r.. MOV|
0000f0e0  20 20 20 20 20 52 35 2c  20 23 31 0d 72 ec 13 20  |     R5, #1.r.. |
0000f0f0  54 53 54 20 20 20 20 20  52 38 2c 20 23 31 0d 72  |TST     R8, #1.r|
0000f100  f6 16 20 52 53 42 4e 45  20 20 20 52 33 2c 52 33  |.. RSBNE   R3,R3|
0000f110  2c 20 23 30 0d 73 00 1a  20 53 55 42 4e 45 20 20  |, #0.s.. SUBNE  |
0000f120  20 52 31 2c 52 31 2c 20  23 78 65 78 74 25 0d 73  | R1,R1, #xext%.s|
0000f130  0a 15 20 42 4c 20 20 20  20 20 20 61 64 64 5f 63  |.. BL      add_c|
0000f140  65 6c 6c 0d 73 14 13 20  4d 4f 56 20 20 20 20 20  |ell.s.. MOV     |
0000f150  52 35 2c 20 23 31 0d 73  1e 13 20 4d 4f 56 20 20  |R5, #1.s.. MOV  |
0000f160  20 20 20 52 30 2c 20 23  31 0d 73 28 18 20 53 54  |   R0, #1.s(. ST|
0000f170  52 20 20 20 20 20 52 30  2c 20 70 31 5f 66 69 72  |R     R0, p1_fir|
0000f180  65 0d 73 32 13 20 4d 4f  56 20 20 20 20 20 52 30  |e.s2. MOV     R0|
0000f190  2c 20 23 37 0d 73 3c 14  20 4d 56 4e 20 20 20 20  |, #7.s<. MVN    |
0000f1a0  20 52 31 2c 20 23 31 34  0d 73 46 17 20 4d 4f 56  | R1, #14.sF. MOV|
0000f1b0  20 20 20 20 20 52 32 2c  20 23 31 32 38 30 30 0d  |     R2, #12800.|
0000f1c0  73 50 13 20 4d 4f 56 20  20 20 20 20 52 33 2c 20  |sP. MOV     R3, |
0000f1d0  23 30 0d 73 5a 1c 20 53  57 49 20 20 20 20 20 22  |#0.sZ. SWI     "|
0000f1e0  53 6f 75 6e 64 5f 43 6f  6e 74 72 6f 6c 22 0d 73  |Sound_Control".s|
0000f1f0  64 18 20 2e 70 31 5f 6e  6f 74 5f 66 69 72 65 5f  |d. .p1_not_fire_|
0000f200  70 69 73 74 6f 6c 0d 73  6e 18 20 42 20 20 20 20  |pistol.sn. B    |
0000f210  20 20 20 70 31 5f 65 6e  64 5f 66 69 72 65 0d 73  |   p1_end_fire.s|
0000f220  78 06 20 3a 0d 73 82 11  20 2e 70 31 5f 66 69 72  |x. :.s.. .p1_fir|
0000f230  65 5f 67 75 6e 0d 73 8c  15 20 4d 4f 56 20 20 20  |e_gun.s.. MOV   |
0000f240  20 20 52 30 2c 20 23 31  32 39 0d 73 96 13 20 4d  |  R0, #129.s.. M|
0000f250  4f 56 20 20 20 20 20 52  31 2c 20 23 30 0d 73 a0  |OV     R1, #0.s.|
0000f260  17 20 53 55 42 20 20 20  20 20 52 31 2c 52 31 2c  |. SUB     R1,R1,|
0000f270  20 23 38 34 0d 73 aa 15  20 4d 4f 56 20 20 20 20  | #84.s.. MOV    |
0000f280  20 52 32 2c 20 23 32 35  35 0d 73 b4 16 20 53 57  | R2, #255.s.. SW|
0000f290  49 20 20 20 20 20 22 4f  53 5f 42 79 74 65 22 0d  |I     "OS_Byte".|
0000f2a0  73 be 15 20 43 4d 50 20  20 20 20 20 52 31 2c 20  |s.. CMP     R1, |
0000f2b0  23 32 35 35 0d 73 c8 1c  20 42 4e 45 20 20 20 20  |#255.s.. BNE    |
0000f2c0  20 70 31 5f 6e 6f 74 5f  66 69 72 65 5f 67 75 6e  | p1_not_fire_gun|
0000f2d0  0d 73 d2 18 20 4c 44 52  20 20 20 20 20 52 30 2c  |.s.. LDR     R0,|
0000f2e0  20 70 31 5f 66 69 72 65  0d 73 dc 16 20 41 44 44  | p1_fire.s.. ADD|
0000f2f0  20 20 20 20 20 52 30 2c  52 30 2c 20 23 31 0d 73  |     R0,R0, #1.s|
0000f300  e6 16 20 80 20 20 20 20  20 52 30 2c 52 30 2c 20  |.. .     R0,R0, |
0000f310  23 25 31 31 0d 73 f0 18  20 53 54 52 20 20 20 20  |#%11.s.. STR    |
0000f320  20 52 30 2c 20 70 31 5f  66 69 72 65 0d 73 fa 15  | R0, p1_fire.s..|
0000f330  20 54 53 54 20 20 20 20  20 52 30 2c 20 23 25 31  | TST     R0, #%1|
0000f340  31 0d 74 04 1c 20 42 4e  45 20 20 20 20 20 70 31  |1.t.. BNE     p1|
0000f350  5f 6e 6f 74 5f 66 69 72  65 5f 67 75 6e 0d 74 0e  |_not_fire_gun.t.|
0000f360  13 20 4d 4f 56 20 20 20  20 20 52 30 2c 20 23 33  |. MOV     R0, #3|
0000f370  0d 74 18 1a 20 4d 4f 56  20 20 20 20 20 52 31 2c  |.t.. MOV     R1,|
0000f380  52 36 2c 20 4c 53 52 20  23 32 0d 74 22 1a 20 4d  |R6, LSR #2.t". M|
0000f390  4f 56 20 20 20 20 20 52  32 2c 52 37 2c 20 4c 53  |OV     R2,R7, LS|
0000f3a0  52 20 23 32 0d 74 2c 1a  20 41 44 44 20 20 20 20  |R #2.t,. ADD    |
0000f3b0  20 52 31 2c 52 31 2c 20  23 78 65 78 74 25 0d 74  | R1,R1, #xext%.t|
0000f3c0  36 1e 20 41 44 44 20 20  20 20 20 52 32 2c 52 32  |6. ADD     R2,R2|
0000f3d0  2c 20 23 79 65 78 74 25  2f 34 2a 32 0d 74 40 18  |, #yext%/4*2.t@.|
0000f3e0  20 52 53 42 20 20 20 20  20 52 32 2c 52 32 2c 20  | RSB     R2,R2, |
0000f3f0  23 32 35 36 0d 74 4a 14  20 4d 4f 56 20 20 20 20  |#256.tJ. MOV    |
0000f400  20 52 33 2c 20 23 38 30  0d 74 54 18 20 4c 44 52  | R3, #80.tT. LDR|
0000f410  20 20 20 20 20 52 35 2c  20 61 64 72 5f 72 6e 64  |     R5, adr_rnd|
0000f420  0d 74 5e 14 20 4c 44 52  20 20 20 20 20 52 35 2c  |.t^. LDR     R5,|
0000f430  5b 52 35 5d 0d 74 68 15  20 80 20 20 20 20 20 52  |[R5].th. .     R|
0000f440  34 2c 52 35 2c 20 23 31  35 0d 74 72 16 20 53 55  |4,R5, #15.tr. SU|
0000f450  42 20 20 20 20 20 52 34  2c 52 34 2c 20 23 37 0d  |B     R4,R4, #7.|
0000f460  74 7c 1a 20 80 20 20 20  20 20 52 35 2c 52 35 2c  |t|. .     R5,R5,|
0000f470  20 23 25 31 31 30 30 30  30 0d 74 86 1a 20 4d 4f  | #%110000.t.. MO|
0000f480  56 20 20 20 20 20 52 35  2c 52 35 2c 20 4c 53 52  |V     R5,R5, LSR|
0000f490  20 23 34 0d 74 90 15 20  41 44 44 20 20 20 20 20  | #4.t.. ADD     |
0000f4a0  52 31 2c 52 31 2c 52 35  0d 74 9a 13 20 4d 4f 56  |R1,R1,R5.t.. MOV|
0000f4b0  20 20 20 20 20 52 35 2c  20 23 31 0d 74 a4 13 20  |     R5, #1.t.. |
0000f4c0  54 53 54 20 20 20 20 20  52 38 2c 20 23 31 0d 74  |TST     R8, #1.t|
0000f4d0  ae 16 20 52 53 42 4e 45  20 20 20 52 33 2c 52 33  |.. RSBNE   R3,R3|
0000f4e0  2c 20 23 30 0d 74 b8 1c  20 53 55 42 4e 45 20 20  |, #0.t.. SUBNE  |
0000f4f0  20 52 31 2c 52 31 2c 20  23 78 65 78 74 25 2b 32  | R1,R1, #xext%+2|
0000f500  0d 74 c2 15 20 42 4c 20  20 20 20 20 20 61 64 64  |.t.. BL      add|
0000f510  5f 63 65 6c 6c 0d 74 cc  13 20 4d 4f 56 20 20 20  |_cell.t.. MOV   |
0000f520  20 20 52 35 2c 20 23 31  0d 74 d6 13 20 4d 4f 56  |  R5, #1.t.. MOV|
0000f530  20 20 20 20 20 52 30 2c  20 23 38 0d 74 e0 14 20  |     R0, #8.t.. |
0000f540  4d 56 4e 20 20 20 20 20  52 31 2c 20 23 31 32 0d  |MVN     R1, #12.|
0000f550  74 ea 17 20 4d 4f 56 20  20 20 20 20 52 32 2c 20  |t.. MOV     R2, |
0000f560  23 31 32 38 30 30 0d 74  f4 13 20 4d 4f 56 20 20  |#12800.t.. MOV  |
0000f570  20 20 20 52 33 2c 20 23  30 0d 74 fe 1c 20 53 57  |   R3, #0.t.. SW|
0000f580  49 20 20 20 20 20 22 53  6f 75 6e 64 5f 43 6f 6e  |I     "Sound_Con|
0000f590  74 72 6f 6c 22 0d 75 08  15 20 2e 70 31 5f 6e 6f  |trol".u.. .p1_no|
0000f5a0  74 5f 66 69 72 65 5f 67  75 6e 0d 75 12 18 20 42  |t_fire_gun.u.. B|
0000f5b0  20 20 20 20 20 20 20 70  31 5f 65 6e 64 5f 66 69  |       p1_end_fi|
0000f5c0  72 65 0d 75 1c 06 20 3a  0d 75 26 14 20 2e 70 31  |re.u.. :.u&. .p1|
0000f5d0  5f 66 69 72 65 5f 6d 6f  72 74 61 72 0d 75 30 15  |_fire_mortar.u0.|
0000f5e0  20 4d 4f 56 20 20 20 20  20 52 30 2c 20 23 31 32  | MOV     R0, #12|
0000f5f0  39 0d 75 3a 13 20 4d 4f  56 20 20 20 20 20 52 31  |9.u:. MOV     R1|
0000f600  2c 20 23 30 0d 75 44 17  20 53 55 42 20 20 20 20  |, #0.uD. SUB    |
0000f610  20 52 31 2c 52 31 2c 20  23 38 34 0d 75 4e 15 20  | R1,R1, #84.uN. |
0000f620  4d 4f 56 20 20 20 20 20  52 32 2c 20 23 32 35 35  |MOV     R2, #255|
0000f630  0d 75 58 16 20 53 57 49  20 20 20 20 20 22 4f 53  |.uX. SWI     "OS|
0000f640  5f 42 79 74 65 22 0d 75  62 15 20 43 4d 50 20 20  |_Byte".ub. CMP  |
0000f650  20 20 20 52 31 2c 20 23  32 35 35 0d 75 6c 1f 20  |   R1, #255.ul. |
0000f660  42 4e 45 20 20 20 20 20  70 31 5f 6e 6f 74 5f 66  |BNE     p1_not_f|
0000f670  69 72 65 5f 6d 6f 72 74  61 72 0d 75 76 18 20 4c  |ire_mortar.uv. L|
0000f680  44 52 20 20 20 20 20 52  30 2c 20 70 31 5f 66 69  |DR     R0, p1_fi|
0000f690  72 65 0d 75 80 16 20 41  44 44 20 20 20 20 20 52  |re.u.. ADD     R|
0000f6a0  30 2c 52 30 2c 20 23 31  0d 75 8a 19 20 80 20 20  |0,R0, #1.u.. .  |
0000f6b0  20 20 20 52 30 2c 52 30  2c 20 23 25 31 31 31 31  |   R0,R0, #%1111|
0000f6c0  31 0d 75 94 18 20 53 54  52 20 20 20 20 20 52 30  |1.u.. STR     R0|
0000f6d0  2c 20 70 31 5f 66 69 72  65 0d 75 9e 18 20 54 53  |, p1_fire.u.. TS|
0000f6e0  54 20 20 20 20 20 52 30  2c 20 23 25 31 31 31 31  |T     R0, #%1111|
0000f6f0  31 0d 75 a8 1c 20 42 4e  45 20 20 20 20 20 70 31  |1.u.. BNE     p1|
0000f700  5f 6e 6f 74 5f 66 69 72  65 5f 67 75 6e 0d 75 b2  |_not_fire_gun.u.|
0000f710  13 20 4d 4f 56 20 20 20  20 20 52 30 2c 20 23 34  |. MOV     R0, #4|
0000f720  0d 75 bc 1a 20 4d 4f 56  20 20 20 20 20 52 31 2c  |.u.. MOV     R1,|
0000f730  52 36 2c 20 4c 53 52 20  23 32 0d 75 c6 1a 20 4d  |R6, LSR #2.u.. M|
0000f740  4f 56 20 20 20 20 20 52  32 2c 52 37 2c 20 4c 53  |OV     R2,R7, LS|
0000f750  52 20 23 32 0d 75 d0 1a  20 41 44 44 20 20 20 20  |R #2.u.. ADD    |
0000f760  20 52 31 2c 52 31 2c 20  23 78 65 78 74 25 0d 75  | R1,R1, #xext%.u|
0000f770  da 1e 20 41 44 44 20 20  20 20 20 52 32 2c 52 32  |.. ADD     R2,R2|
0000f780  2c 20 23 79 65 78 74 25  2f 34 2a 32 0d 75 e4 18  |, #yext%/4*2.u..|
0000f790  20 52 53 42 20 20 20 20  20 52 32 2c 52 32 2c 20  | RSB     R2,R2, |
0000f7a0  23 32 35 36 0d 75 ee 14  20 4d 4f 56 20 20 20 20  |#256.u.. MOV    |
0000f7b0  20 52 33 2c 20 23 33 30  0d 75 f8 14 20 4d 4f 56  | R3, #30.u.. MOV|
0000f7c0  20 20 20 20 20 52 34 2c  20 23 34 30 0d 76 02 13  |     R4, #40.v..|
0000f7d0  20 4d 4f 56 20 20 20 20  20 52 35 2c 20 23 31 0d  | MOV     R5, #1.|
0000f7e0  76 0c 13 20 54 53 54 20  20 20 20 20 52 38 2c 20  |v.. TST     R8, |
0000f7f0  23 31 0d 76 16 16 20 52  53 42 4e 45 20 20 20 52  |#1.v.. RSBNE   R|
0000f800  33 2c 52 33 2c 20 23 30  0d 76 20 1a 20 53 55 42  |3,R3, #0.v . SUB|
0000f810  4e 45 20 20 20 52 31 2c  52 31 2c 20 23 78 65 78  |NE   R1,R1, #xex|
0000f820  74 25 0d 76 2a 15 20 42  4c 20 20 20 20 20 20 61  |t%.v*. BL      a|
0000f830  64 64 5f 63 65 6c 6c 0d  76 34 13 20 4d 4f 56 20  |dd_cell.v4. MOV |
0000f840  20 20 20 20 52 35 2c 20  23 31 0d 76 3e 13 20 4d  |    R5, #1.v>. M|
0000f850  4f 56 20 20 20 20 20 52  30 2c 20 23 31 0d 76 48  |OV     R0, #1.vH|
0000f860  18 20 53 54 52 20 20 20  20 20 52 30 2c 20 70 31  |. STR     R0, p1|
0000f870  5f 66 69 72 65 0d 76 52  18 20 2e 70 31 5f 6e 6f  |_fire.vR. .p1_no|
0000f880  74 5f 66 69 72 65 5f 6d  6f 72 74 61 72 0d 76 5c  |t_fire_mortar.v\|
0000f890  18 20 42 20 20 20 20 20  20 20 70 31 5f 65 6e 64  |. B       p1_end|
0000f8a0  5f 66 69 72 65 0d 76 66  06 20 3a 0d 76 70 14 20  |_fire.vf. :.vp. |
0000f8b0  2e 70 31 5f 66 69 72 65  5f 68 6f 6d 69 6e 67 0d  |.p1_fire_homing.|
0000f8c0  76 7a 14 20 2e 70 31 5f  68 6f 6d 69 6e 67 5f 73  |vz. .p1_homing_s|
0000f8d0  68 6f 74 0d 76 84 15 20  4d 4f 56 20 20 20 20 20  |hot.v.. MOV     |
0000f8e0  52 30 2c 20 23 31 32 39  0d 76 8e 13 20 4d 4f 56  |R0, #129.v.. MOV|
0000f8f0  20 20 20 20 20 52 31 2c  20 23 30 0d 76 98 17 20  |     R1, #0.v.. |
0000f900  53 55 42 20 20 20 20 20  52 31 2c 52 31 2c 20 23  |SUB     R1,R1, #|
0000f910  38 34 0d 76 a2 15 20 4d  4f 56 20 20 20 20 20 52  |84.v.. MOV     R|
0000f920  32 2c 20 23 32 35 35 0d  76 ac 16 20 53 57 49 20  |2, #255.v.. SWI |
0000f930  20 20 20 20 22 4f 53 5f  42 79 74 65 22 0d 76 b6  |    "OS_Byte".v.|
0000f940  15 20 43 4d 50 20 20 20  20 20 52 31 2c 20 23 32  |. CMP     R1, #2|
0000f950  35 35 0d 76 c0 1f 20 42  4e 45 20 20 20 20 20 70  |55.v.. BNE     p|
0000f960  31 5f 6e 6f 74 5f 66 69  72 65 5f 68 6f 6d 69 6e  |1_not_fire_homin|
0000f970  67 0d 76 ca 18 20 4c 44  52 20 20 20 20 20 52 30  |g.v.. LDR     R0|
0000f980  2c 20 70 31 5f 66 69 72  65 0d 76 d4 16 20 41 44  |, p1_fire.v.. AD|
0000f990  44 20 20 20 20 20 52 30  2c 52 30 2c 20 23 31 0d  |D     R0,R0, #1.|
0000f9a0  76 de 18 20 80 20 20 20  20 20 52 30 2c 52 30 2c  |v.. .     R0,R0,|
0000f9b0  20 23 25 31 31 31 31 0d  76 e8 18 20 53 54 52 20  | #%1111.v.. STR |
0000f9c0  20 20 20 20 52 30 2c 20  70 31 5f 66 69 72 65 0d  |    R0, p1_fire.|
0000f9d0  76 f2 17 20 54 53 54 20  20 20 20 20 52 30 2c 20  |v.. TST     R0, |
0000f9e0  23 25 31 31 31 31 0d 76  fc 1f 20 42 4e 45 20 20  |#%1111.v.. BNE  |
0000f9f0  20 20 20 70 31 5f 6e 6f  74 5f 66 69 72 65 5f 68  |   p1_not_fire_h|
0000fa00  6f 6d 69 6e 67 0d 77 06  13 20 4d 4f 56 20 20 20  |oming.w.. MOV   |
0000fa10  20 20 52 30 2c 20 23 35  0d 77 10 1a 20 4d 4f 56  |  R0, #5.w.. MOV|
0000fa20  20 20 20 20 20 52 31 2c  52 36 2c 20 4c 53 52 20  |     R1,R6, LSR |
0000fa30  23 32 0d 77 1a 1a 20 4d  4f 56 20 20 20 20 20 52  |#2.w.. MOV     R|
0000fa40  32 2c 52 37 2c 20 4c 53  52 20 23 32 0d 77 24 1a  |2,R7, LSR #2.w$.|
0000fa50  20 41 44 44 20 20 20 20  20 52 31 2c 52 31 2c 20  | ADD     R1,R1, |
0000fa60  23 78 65 78 74 25 0d 77  2e 1c 20 41 44 44 20 20  |#xext%.w.. ADD  |
0000fa70  20 20 20 52 32 2c 52 32  2c 20 23 79 65 78 74 25  |   R2,R2, #yext%|
0000fa80  2f 32 0d 77 38 18 20 52  53 42 20 20 20 20 20 52  |/2.w8. RSB     R|
0000fa90  32 2c 52 32 2c 20 23 32  35 36 0d 77 42 14 20 4d  |2,R2, #256.wB. M|
0000faa0  4f 56 20 20 20 20 20 52  33 2c 20 23 36 34 0d 77  |OV     R3, #64.w|
0000fab0  4c 18 20 4c 44 52 20 20  20 20 20 52 34 2c 20 61  |L. LDR     R4, a|
0000fac0  64 72 5f 72 6e 64 0d 77  56 14 20 4c 44 52 20 20  |dr_rnd.wV. LDR  |
0000fad0  20 20 20 52 34 2c 5b 52  34 5d 0d 77 60 15 20 80  |   R4,[R4].w`. .|
0000fae0  20 20 20 20 20 52 34 2c  52 34 2c 20 23 31 35 0d  |     R4,R4, #15.|
0000faf0  77 6a 16 20 53 55 42 20  20 20 20 20 52 34 2c 52  |wj. SUB     R4,R|
0000fb00  34 2c 20 23 37 0d 77 74  39 20 4d 4f 56 20 20 20  |4, #7.wt9 MOV   |
0000fb10  20 20 52 35 2c 20 23 32  32 34 3c 3c 38 20 20 20  |  R5, #224<<8   |
0000fb20  20 20 20 20 20 20 20 3b  20 48 6f 6d 69 6e 67 20  |       ; Homing |
0000fb30  69 6e 20 6f 6e 20 70 6c  61 79 65 72 20 32 0d 77  |in on player 2.w|
0000fb40  7e 15 20 84 52 20 20 20  20 20 52 35 2c 52 35 2c  |~. .R     R5,R5,|
0000fb50  20 23 31 0d 77 88 13 20  54 53 54 20 20 20 20 20  | #1.w.. TST     |
0000fb60  52 38 2c 20 23 31 0d 77  92 16 20 52 53 42 4e 45  |R8, #1.w.. RSBNE|
0000fb70  20 20 20 52 33 2c 52 33  2c 20 23 30 0d 77 9c 1a  |   R3,R3, #0.w..|
0000fb80  20 53 55 42 4e 45 20 20  20 52 31 2c 52 31 2c 20  | SUBNE   R1,R1, |
0000fb90  23 78 65 78 74 25 0d 77  a6 15 20 42 4c 20 20 20  |#xext%.w.. BL   |
0000fba0  20 20 20 61 64 64 5f 63  65 6c 6c 0d 77 b0 13 20  |   add_cell.w.. |
0000fbb0  4d 4f 56 20 20 20 20 20  52 35 2c 20 23 31 0d 77  |MOV     R5, #1.w|
0000fbc0  ba 13 20 4d 4f 56 20 20  20 20 20 52 30 2c 20 23  |.. MOV     R0, #|
0000fbd0  38 0d 77 c4 14 20 4d 56  4e 20 20 20 20 20 52 31  |8.w.. MVN     R1|
0000fbe0  2c 20 23 31 30 0d 77 ce  16 20 4d 4f 56 20 20 20  |, #10.w.. MOV   |
0000fbf0  20 20 52 32 2c 20 23 38  30 30 30 0d 77 d8 13 20  |  R2, #8000.w.. |
0000fc00  4d 4f 56 20 20 20 20 20  52 33 2c 20 23 30 0d 77  |MOV     R3, #0.w|
0000fc10  e2 1c 20 53 57 49 20 20  20 20 20 22 53 6f 75 6e  |.. SWI     "Soun|
0000fc20  64 5f 43 6f 6e 74 72 6f  6c 22 0d 77 ec 18 20 2e  |d_Control".w.. .|
0000fc30  70 31 5f 6e 6f 74 5f 66  69 72 65 5f 68 6f 6d 69  |p1_not_fire_homi|
0000fc40  6e 67 0d 77 f6 18 20 42  20 20 20 20 20 20 20 70  |ng.w.. B       p|
0000fc50  31 5f 65 6e 64 5f 66 69  72 65 0d 78 00 06 20 3a  |1_end_fire.x.. :|
0000fc60  0d 78 0a 15 20 2e 70 31  5f 66 69 72 65 5f 73 65  |.x.. .p1_fire_se|
0000fc70  65 6b 69 6e 67 0d 78 14  15 20 2e 70 31 5f 73 65  |eking.x.. .p1_se|
0000fc80  65 6b 69 6e 67 5f 73 68  6f 74 0d 78 1e 15 20 4d  |eking_shot.x.. M|
0000fc90  4f 56 20 20 20 20 20 52  30 2c 20 23 31 32 39 0d  |OV     R0, #129.|
0000fca0  78 28 13 20 4d 4f 56 20  20 20 20 20 52 31 2c 20  |x(. MOV     R1, |
0000fcb0  23 30 0d 78 32 17 20 53  55 42 20 20 20 20 20 52  |#0.x2. SUB     R|
0000fcc0  31 2c 52 31 2c 20 23 38  34 0d 78 3c 15 20 4d 4f  |1,R1, #84.x<. MO|
0000fcd0  56 20 20 20 20 20 52 32  2c 20 23 32 35 35 0d 78  |V     R2, #255.x|
0000fce0  46 16 20 53 57 49 20 20  20 20 20 22 4f 53 5f 42  |F. SWI     "OS_B|
0000fcf0  79 74 65 22 0d 78 50 15  20 43 4d 50 20 20 20 20  |yte".xP. CMP    |
0000fd00  20 52 31 2c 20 23 32 35  35 0d 78 5a 20 20 42 4e  | R1, #255.xZ  BN|
0000fd10  45 20 20 20 20 20 70 31  5f 6e 6f 74 5f 66 69 72  |E     p1_not_fir|
0000fd20  65 5f 73 65 65 6b 69 6e  67 0d 78 64 13 20 4d 4f  |e_seeking.xd. MO|
0000fd30  56 20 20 20 20 20 52 30  2c 20 23 36 0d 78 6e 1a  |V     R0, #6.xn.|
0000fd40  20 4d 4f 56 20 20 20 20  20 52 31 2c 52 36 2c 20  | MOV     R1,R6, |
0000fd50  4c 53 52 20 23 32 0d 78  78 1a 20 4d 4f 56 20 20  |LSR #2.xx. MOV  |
0000fd60  20 20 20 52 32 2c 52 37  2c 20 4c 53 52 20 23 32  |   R2,R7, LSR #2|
0000fd70  0d 78 82 1e 20 41 44 44  20 20 20 20 20 52 31 2c  |.x.. ADD     R1,|
0000fd80  52 31 2c 20 23 78 65 78  74 25 2a 33 2f 32 0d 78  |R1, #xext%*3/2.x|
0000fd90  8c 1e 20 41 44 44 20 20  20 20 20 52 32 2c 52 32  |.. ADD     R2,R2|
0000fda0  2c 20 23 79 65 78 74 25  2f 34 2a 32 0d 78 96 18  |, #yext%/4*2.x..|
0000fdb0  20 52 53 42 20 20 20 20  20 52 32 2c 52 32 2c 20  | RSB     R2,R2, |
0000fdc0  23 32 35 36 0d 78 a0 14  20 4d 4f 56 20 20 20 20  |#256.x.. MOV    |
0000fdd0  20 52 33 2c 20 23 33 32  0d 78 aa 13 20 4d 4f 56  | R3, #32.x.. MOV|
0000fde0  20 20 20 20 20 52 34 2c  20 23 30 0d 78 b4 3a 20  |     R4, #0.x.: |
0000fdf0  4d 4f 56 20 20 20 20 20  52 35 2c 20 23 31 20 20  |MOV     R5, #1  |
0000fe00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3b 20  |              ; |
0000fe10  48 6f 6d 69 6e 67 20 69  6e 20 6f 6e 20 70 6c 61  |Homing in on pla|
0000fe20  79 65 72 20 32 0d 78 be  13 20 54 53 54 20 20 20  |yer 2.x.. TST   |
0000fe30  20 20 52 38 2c 20 23 31  0d 78 c8 16 20 52 53 42  |  R8, #1.x.. RSB|
0000fe40  4e 45 20 20 20 52 33 2c  52 33 2c 20 23 30 0d 78  |NE   R3,R3, #0.x|
0000fe50  d2 1c 20 53 55 42 4e 45  20 20 20 52 31 2c 52 31  |.. SUBNE   R1,R1|
0000fe60  2c 20 23 78 65 78 74 25  2a 32 0d 78 dc 15 20 42  |, #xext%*2.x.. B|
0000fe70  4c 20 20 20 20 20 20 61  64 64 5f 63 65 6c 6c 0d  |L      add_cell.|
0000fe80  78 e6 13 20 4d 4f 56 20  20 20 20 20 52 35 2c 20  |x.. MOV     R5, |
0000fe90  23 31 0d 78 f0 13 20 4d  4f 56 20 20 20 20 20 52  |#1.x.. MOV     R|
0000fea0  39 2c 20 23 32 0d 78 fa  1f 20 4c 44 52 20 20 20  |9, #2.x.. LDR   |
0000feb0  20 20 52 31 30 2c 20 61  64 72 5f 70 31 5f 77 65  |  R10, adr_p1_we|
0000fec0  61 70 6f 6e 0d 79 04 15  20 53 54 52 20 20 20 20  |apon.y.. STR    |
0000fed0  20 52 39 2c 5b 52 31 30  5d 0d 79 0e 13 20 4d 4f  | R9,[R10].y.. MO|
0000fee0  56 20 20 20 20 20 52 30  2c 20 23 38 0d 79 18 14  |V     R0, #8.y..|
0000fef0  20 4d 56 4e 20 20 20 20  20 52 31 2c 20 23 31 34  | MVN     R1, #14|
0000ff00  0d 79 22 16 20 4d 4f 56  20 20 20 20 20 52 32 2c  |.y". MOV     R2,|
0000ff10  20 23 35 31 32 30 0d 79  2c 13 20 4d 4f 56 20 20  | #5120.y,. MOV  |
0000ff20  20 20 20 52 33 2c 20 23  30 0d 79 36 1c 20 53 57  |   R3, #0.y6. SW|
0000ff30  49 20 20 20 20 20 22 53  6f 75 6e 64 5f 43 6f 6e  |I     "Sound_Con|
0000ff40  74 72 6f 6c 22 0d 79 40  13 20 4d 4f 56 20 20 20  |trol".y@. MOV   |
0000ff50  20 20 52 30 2c 20 23 31  0d 79 4a 18 20 53 54 52  |  R0, #1.yJ. STR|
0000ff60  20 20 20 20 20 52 30 2c  20 70 31 5f 66 69 72 65  |     R0, p1_fire|
0000ff70  0d 79 54 19 20 2e 70 31  5f 6e 6f 74 5f 66 69 72  |.yT. .p1_not_fir|
0000ff80  65 5f 73 65 65 6b 69 6e  67 0d 79 5e 18 20 42 20  |e_seeking.y^. B |
0000ff90  20 20 20 20 20 20 70 31  5f 65 6e 64 5f 66 69 72  |      p1_end_fir|
0000ffa0  65 0d 79 68 06 20 3a 0d  79 72 16 20 2e 70 31 5f  |e.yh. :.yr. .p1_|
0000ffb0  66 69 72 65 5f 76 65 72  74 69 63 61 6c 0d 79 7c  |fire_vertical.y||
0000ffc0  18 20 4c 44 52 20 20 20  20 20 52 30 2c 20 70 31  |. LDR     R0, p1|
0000ffd0  5f 66 69 72 65 0d 79 86  13 20 43 4d 50 20 20 20  |_fire.y.. CMP   |
0000ffe0  20 20 52 30 2c 20 23 30  0d 79 90 1d 20 42 45 51  |  R0, #0.y.. BEQ|
0000fff0  20 20 20 20 20 70 31 5f  76 65 72 74 69 63 61 6c  |     p1_vertical|
00010000  5f 73 68 6f 74 0d 79 9a  15 20 4d 4f 56 20 20 20  |_shot.y.. MOV   |
00010010  20 20 52 30 2c 20 23 31  32 39 0d 79 a4 13 20 4d  |  R0, #129.y.. M|
00010020  4f 56 20 20 20 20 20 52  31 2c 20 23 30 0d 79 ae  |OV     R1, #0.y.|
00010030  17 20 53 55 42 20 20 20  20 20 52 31 2c 52 31 2c  |. SUB     R1,R1,|
00010040  20 23 38 34 0d 79 b8 15  20 4d 4f 56 20 20 20 20  | #84.y.. MOV    |
00010050  20 52 32 2c 20 23 32 35  35 0d 79 c2 16 20 53 57  | R2, #255.y.. SW|
00010060  49 20 20 20 20 20 22 4f  53 5f 42 79 74 65 22 0d  |I     "OS_Byte".|
00010070  79 cc 15 20 43 4d 50 20  20 20 20 20 52 31 2c 20  |y.. CMP     R1, |
00010080  23 32 35 35 0d 79 d6 13  20 4d 4f 56 4e 45 20 20  |#255.y.. MOVNE  |
00010090  20 52 30 2c 20 23 30 0d  79 e0 18 20 53 54 52 4e  | R0, #0.y.. STRN|
000100a0  45 20 20 20 52 30 2c 20  70 31 5f 66 69 72 65 0d  |E   R0, p1_fire.|
000100b0  79 ea 21 20 42 20 20 20  20 20 20 20 70 31 5f 6e  |y.! B       p1_n|
000100c0  6f 74 5f 66 69 72 65 5f  76 65 72 74 69 63 61 6c  |ot_fire_vertical|
000100d0  0d 79 f4 16 20 2e 70 31  5f 76 65 72 74 69 63 61  |.y.. .p1_vertica|
000100e0  6c 5f 73 68 6f 74 0d 79  fe 15 20 4d 4f 56 20 20  |l_shot.y.. MOV  |
000100f0  20 20 20 52 30 2c 20 23  31 32 39 0d 7a 08 13 20  |   R0, #129.z.. |
00010100  4d 4f 56 20 20 20 20 20  52 31 2c 20 23 30 0d 7a  |MOV     R1, #0.z|
00010110  12 17 20 53 55 42 20 20  20 20 20 52 31 2c 52 31  |.. SUB     R1,R1|
00010120  2c 20 23 38 34 0d 7a 1c  15 20 4d 4f 56 20 20 20  |, #84.z.. MOV   |
00010130  20 20 52 32 2c 20 23 32  35 35 0d 7a 26 16 20 53  |  R2, #255.z&. S|
00010140  57 49 20 20 20 20 20 22  4f 53 5f 42 79 74 65 22  |WI     "OS_Byte"|
00010150  0d 7a 30 15 20 43 4d 50  20 20 20 20 20 52 31 2c  |.z0. CMP     R1,|
00010160  20 23 32 35 35 0d 7a 3a  21 20 42 4e 45 20 20 20  | #255.z:! BNE   |
00010170  20 20 70 31 5f 6e 6f 74  5f 66 69 72 65 5f 76 65  |  p1_not_fire_ve|
00010180  72 74 69 63 61 6c 0d 7a  44 13 20 4d 4f 56 20 20  |rtical.zD. MOV  |
00010190  20 20 20 52 30 2c 20 23  37 0d 7a 4e 1a 20 4d 4f  |   R0, #7.zN. MO|
000101a0  56 20 20 20 20 20 52 31  2c 52 36 2c 20 4c 53 52  |V     R1,R6, LSR|
000101b0  20 23 32 0d 7a 58 1a 20  4d 4f 56 20 20 20 20 20  | #2.zX. MOV     |
000101c0  52 32 2c 52 37 2c 20 4c  53 52 20 23 32 0d 7a 62  |R2,R7, LSR #2.zb|
000101d0  1a 20 41 44 44 20 20 20  20 20 52 31 2c 52 31 2c  |. ADD     R1,R1,|
000101e0  20 23 78 65 78 74 25 0d  7a 6c 1e 20 41 44 44 20  | #xext%.zl. ADD |
000101f0  20 20 20 20 52 32 2c 52  32 2c 20 23 79 65 78 74  |    R2,R2, #yext|
00010200  25 2f 34 2a 32 0d 7a 76  18 20 52 53 42 20 20 20  |%/4*2.zv. RSB   |
00010210  20 20 52 32 2c 52 32 2c  20 23 32 35 36 0d 7a 80  |  R2,R2, #256.z.|
00010220  13 20 4d 4f 56 20 20 20  20 20 52 33 2c 20 23 30  |. MOV     R3, #0|
00010230  0d 7a 8a 14 20 4d 4f 56  20 20 20 20 20 52 34 2c  |.z.. MOV     R4,|
00010240  20 23 36 34 0d 7a 94 13  20 4d 4f 56 20 20 20 20  | #64.z.. MOV    |
00010250  20 52 35 2c 20 23 31 0d  7a 9e 13 20 54 53 54 20  | R5, #1.z.. TST |
00010260  20 20 20 20 52 38 2c 20  23 31 0d 7a a8 16 20 52  |    R8, #1.z.. R|
00010270  53 42 4e 45 20 20 20 52  33 2c 52 33 2c 20 23 30  |SBNE   R3,R3, #0|
00010280  0d 7a b2 1a 20 53 55 42  4e 45 20 20 20 52 31 2c  |.z.. SUBNE   R1,|
00010290  52 31 2c 20 23 78 65 78  74 25 0d 7a bc 15 20 42  |R1, #xext%.z.. B|
000102a0  4c 20 20 20 20 20 20 61  64 64 5f 63 65 6c 6c 0d  |L      add_cell.|
000102b0  7a c6 13 20 4d 4f 56 20  20 20 20 20 52 35 2c 20  |z.. MOV     R5, |
000102c0  23 32 0d 7a d0 13 20 4d  4f 56 20 20 20 20 20 52  |#2.z.. MOV     R|
000102d0  30 2c 20 23 31 0d 7a da  18 20 53 54 52 20 20 20  |0, #1.z.. STR   |
000102e0  20 20 52 30 2c 20 70 31  5f 66 69 72 65 0d 7a e4  |  R0, p1_fire.z.|
000102f0  13 20 4d 4f 56 20 20 20  20 20 52 30 2c 20 23 37  |. MOV     R0, #7|
00010300  0d 7a ee 14 20 4d 56 4e  20 20 20 20 20 52 31 2c  |.z.. MVN     R1,|
00010310  20 23 31 34 0d 7a f8 17  20 4d 4f 56 20 20 20 20  | #14.z.. MOV    |
00010320  20 52 32 2c 20 23 31 30  32 34 30 0d 7b 02 13 20  | R2, #10240.{.. |
00010330  4d 4f 56 20 20 20 20 20  52 33 2c 20 23 30 0d 7b  |MOV     R3, #0.{|
00010340  0c 1c 20 53 57 49 20 20  20 20 20 22 53 6f 75 6e  |.. SWI     "Soun|
00010350  64 5f 43 6f 6e 74 72 6f  6c 22 0d 7b 16 1a 20 2e  |d_Control".{.. .|
00010360  70 31 5f 6e 6f 74 5f 66  69 72 65 5f 76 65 72 74  |p1_not_fire_vert|
00010370  69 63 61 6c 0d 7b 20 18  20 42 20 20 20 20 20 20  |ical.{ . B      |
00010380  20 70 31 5f 65 6e 64 5f  66 69 72 65 0d 7b 2a 06  | p1_end_fire.{*.|
00010390  20 3a 0d 7b 34 13 20 2e  70 31 5f 66 69 72 65 5f  | :.{4. .p1_fire_|
000103a0  66 6c 61 6d 65 0d 7b 3e  13 20 2e 70 31 5f 66 6c  |flame.{>. .p1_fl|
000103b0  61 6d 65 5f 73 68 6f 74  0d 7b 48 15 20 4d 4f 56  |ame_shot.{H. MOV|
000103c0  20 20 20 20 20 52 30 2c  20 23 31 32 39 0d 7b 52  |     R0, #129.{R|
000103d0  13 20 4d 4f 56 20 20 20  20 20 52 31 2c 20 23 30  |. MOV     R1, #0|
000103e0  0d 7b 5c 17 20 53 55 42  20 20 20 20 20 52 31 2c  |.{\. SUB     R1,|
000103f0  52 31 2c 20 23 38 34 0d  7b 66 15 20 4d 4f 56 20  |R1, #84.{f. MOV |
00010400  20 20 20 20 52 32 2c 20  23 32 35 35 0d 7b 70 16  |    R2, #255.{p.|
00010410  20 53 57 49 20 20 20 20  20 22 4f 53 5f 42 79 74  | SWI     "OS_Byt|
00010420  65 22 0d 7b 7a 15 20 43  4d 50 20 20 20 20 20 52  |e".{z. CMP     R|
00010430  31 2c 20 23 32 35 35 0d  7b 84 1e 20 42 4e 45 20  |1, #255.{.. BNE |
00010440  20 20 20 20 70 31 5f 6e  6f 74 5f 66 69 72 65 5f  |    p1_not_fire_|
00010450  66 6c 61 6d 65 0d 7b 8e  14 20 4d 4f 56 20 20 20  |flame.{.. MOV   |
00010460  20 20 52 30 2c 20 23 31  30 0d 7b 98 1a 20 4d 4f  |  R0, #10.{.. MO|
00010470  56 20 20 20 20 20 52 31  2c 52 36 2c 20 4c 53 52  |V     R1,R6, LSR|
00010480  20 23 32 0d 7b a2 1a 20  4d 4f 56 20 20 20 20 20  | #2.{.. MOV     |
00010490  52 32 2c 52 37 2c 20 4c  53 52 20 23 32 0d 7b ac  |R2,R7, LSR #2.{.|
000104a0  1a 20 41 44 44 20 20 20  20 20 52 31 2c 52 31 2c  |. ADD     R1,R1,|
000104b0  20 23 78 65 78 74 25 0d  7b b6 1e 20 41 44 44 20  | #xext%.{.. ADD |
000104c0  20 20 20 20 52 32 2c 52  32 2c 20 23 79 65 78 74  |    R2,R2, #yext|
000104d0  25 2f 34 2a 32 0d 7b c0  18 20 52 53 42 20 20 20  |%/4*2.{.. RSB   |
000104e0  20 20 52 32 2c 52 32 2c  20 23 32 35 36 0d 7b ca  |  R2,R2, #256.{.|
000104f0  14 20 4d 4f 56 20 20 20  20 20 52 33 2c 20 23 36  |. MOV     R3, #6|
00010500  34 0d 7b d4 18 20 4c 44  52 20 20 20 20 20 52 34  |4.{.. LDR     R4|
00010510  2c 20 61 64 72 5f 72 6e  64 0d 7b de 14 20 4c 44  |, adr_rnd.{.. LD|
00010520  52 20 20 20 20 20 52 34  2c 5b 52 34 5d 0d 7b e8  |R     R4,[R4].{.|
00010530  14 20 80 20 20 20 20 20  52 34 2c 52 34 2c 20 23  |. .     R4,R4, #|
00010540  37 0d 7b f2 16 20 53 55  42 20 20 20 20 20 52 34  |7.{.. SUB     R4|
00010550  2c 52 34 2c 20 23 31 0d  7b fc 13 20 4d 4f 56 20  |,R4, #1.{.. MOV |
00010560  20 20 20 20 52 35 2c 20  23 31 0d 7c 06 13 20 54  |    R5, #1.|.. T|
00010570  53 54 20 20 20 20 20 52  38 2c 20 23 31 0d 7c 10  |ST     R8, #1.|.|
00010580  16 20 52 53 42 4e 45 20  20 20 52 33 2c 52 33 2c  |. RSBNE   R3,R3,|
00010590  20 23 30 0d 7c 1a 1a 20  53 55 42 4e 45 20 20 20  | #0.|.. SUBNE   |
000105a0  52 31 2c 52 31 2c 20 23  78 65 78 74 25 0d 7c 24  |R1,R1, #xext%.|$|
000105b0  15 20 42 4c 20 20 20 20  20 20 61 64 64 5f 63 65  |. BL      add_ce|
000105c0  6c 6c 0d 7c 2e 17 20 2e  70 31 5f 6e 6f 74 5f 66  |ll.|.. .p1_not_f|
000105d0  69 72 65 5f 66 6c 61 6d  65 0d 7c 38 18 20 42 20  |ire_flame.|8. B |
000105e0  20 20 20 20 20 20 70 31  5f 65 6e 64 5f 66 69 72  |      p1_end_fir|
000105f0  65 0d 7c 42 06 20 3a 0d  7c 4c 12 20 2e 70 31 5f  |e.|B. :.|L. .p1_|
00010600  66 69 72 65 5f 67 6c 75  65 0d 7c 56 15 20 4d 4f  |fire_glue.|V. MO|
00010610  56 20 20 20 20 20 52 30  2c 20 23 31 32 39 0d 7c  |V     R0, #129.||
00010620  60 13 20 4d 4f 56 20 20  20 20 20 52 31 2c 20 23  |`. MOV     R1, #|
00010630  30 0d 7c 6a 17 20 53 55  42 20 20 20 20 20 52 31  |0.|j. SUB     R1|
00010640  2c 52 31 2c 20 23 38 34  0d 7c 74 15 20 4d 4f 56  |,R1, #84.|t. MOV|
00010650  20 20 20 20 20 52 32 2c  20 23 32 35 35 0d 7c 7e  |     R2, #255.|~|
00010660  16 20 53 57 49 20 20 20  20 20 22 4f 53 5f 42 79  |. SWI     "OS_By|
00010670  74 65 22 0d 7c 88 15 20  43 4d 50 20 20 20 20 20  |te".|.. CMP     |
00010680  52 31 2c 20 23 32 35 35  0d 7c 92 1d 20 42 4e 45  |R1, #255.|.. BNE|
00010690  20 20 20 20 20 70 31 5f  6e 6f 74 5f 66 69 72 65  |     p1_not_fire|
000106a0  5f 67 6c 75 65 0d 7c 9c  18 20 4c 44 52 20 20 20  |_glue.|.. LDR   |
000106b0  20 20 52 30 2c 20 70 31  5f 66 69 72 65 0d 7c a6  |  R0, p1_fire.|.|
000106c0  16 20 41 44 44 20 20 20  20 20 52 30 2c 52 30 2c  |. ADD     R0,R0,|
000106d0  20 23 31 0d 7c b0 14 20  43 4d 50 20 20 20 20 20  | #1.|.. CMP     |
000106e0  52 30 2c 20 23 31 30 0d  7c ba 13 20 4d 4f 56 47  |R0, #10.|.. MOVG|
000106f0  54 20 20 20 52 30 2c 20  23 30 0d 7c c4 18 20 53  |T   R0, #0.|.. S|
00010700  54 52 20 20 20 20 20 52  30 2c 20 70 31 5f 66 69  |TR     R0, p1_fi|
00010710  72 65 0d 7c ce 13 20 43  4d 50 20 20 20 20 20 52  |re.|.. CMP     R|
00010720  30 2c 20 23 30 0d 7c d8  1d 20 42 4e 45 20 20 20  |0, #0.|.. BNE   |
00010730  20 20 70 31 5f 6e 6f 74  5f 66 69 72 65 5f 67 6c  |  p1_not_fire_gl|
00010740  75 65 0d 7c e2 14 20 4d  4f 56 20 20 20 20 20 52  |ue.|.. MOV     R|
00010750  30 2c 20 23 31 33 0d 7c  ec 1a 20 4d 4f 56 20 20  |0, #13.|.. MOV  |
00010760  20 20 20 52 31 2c 52 36  2c 20 4c 53 52 20 23 32  |   R1,R6, LSR #2|
00010770  0d 7c f6 1a 20 4d 4f 56  20 20 20 20 20 52 32 2c  |.|.. MOV     R2,|
00010780  52 37 2c 20 4c 53 52 20  23 32 0d 7d 00 1c 20 41  |R7, LSR #2.}.. A|
00010790  44 44 20 20 20 20 20 52  31 2c 52 31 2c 20 23 78  |DD     R1,R1, #x|
000107a0  65 78 74 25 2b 31 0d 7d  0a 1e 20 41 44 44 20 20  |ext%+1.}.. ADD  |
000107b0  20 20 20 52 32 2c 52 32  2c 20 23 79 65 78 74 25  |   R2,R2, #yext%|
000107c0  2f 34 2a 32 0d 7d 14 18  20 52 53 42 20 20 20 20  |/4*2.}.. RSB    |
000107d0  20 52 32 2c 52 32 2c 20  23 32 35 36 0d 7d 1e 14  | R2,R2, #256.}..|
000107e0  20 4d 4f 56 20 20 20 20  20 52 33 2c 20 23 36 34  | MOV     R3, #64|
000107f0  0d 7d 28 18 20 4c 44 52  20 20 20 20 20 52 35 2c  |.}(. LDR     R5,|
00010800  20 61 64 72 5f 72 6e 64  0d 7d 32 14 20 4c 44 52  | adr_rnd.}2. LDR|
00010810  20 20 20 20 20 52 35 2c  5b 52 35 5d 0d 7d 3c 16  |     R5,[R5].}<.|
00010820  20 80 20 20 20 20 20 52  34 2c 52 35 2c 20 23 32  | .     R4,R5, #2|
00010830  35 35 0d 7d 46 16 20 53  55 42 20 20 20 20 20 52  |55.}F. SUB     R|
00010840  34 2c 52 34 2c 20 23 37  0d 7d 50 13 20 4d 4f 56  |4,R4, #7.}P. MOV|
00010850  20 20 20 20 20 52 35 2c  20 23 30 0d 7d 5a 13 20  |     R5, #0.}Z. |
00010860  54 53 54 20 20 20 20 20  52 38 2c 20 23 31 0d 7d  |TST     R8, #1.}|
00010870  64 16 20 52 53 42 4e 45  20 20 20 52 33 2c 52 33  |d. RSBNE   R3,R3|
00010880  2c 20 23 30 0d 7d 6e 1c  20 53 55 42 4e 45 20 20  |, #0.}n. SUBNE  |
00010890  20 52 31 2c 52 31 2c 20  23 78 65 78 74 25 2b 32  | R1,R1, #xext%+2|
000108a0  0d 7d 78 15 20 42 4c 20  20 20 20 20 20 61 64 64  |.}x. BL      add|
000108b0  5f 63 65 6c 6c 0d 7d 82  13 20 4d 4f 56 20 20 20  |_cell.}.. MOV   |
000108c0  20 20 52 35 2c 20 23 31  0d 7d 8c 13 20 4d 4f 56  |  R5, #1.}.. MOV|
000108d0  20 20 20 20 20 52 30 2c  20 23 31 0d 7d 96 18 20  |     R0, #1.}.. |
000108e0  53 54 52 20 20 20 20 20  52 30 2c 20 70 31 5f 66  |STR     R0, p1_f|
000108f0  69 72 65 0d 7d a0 16 20  2e 70 31 5f 6e 6f 74 5f  |ire.}.. .p1_not_|
00010900  66 69 72 65 5f 67 6c 75  65 0d 7d aa 18 20 42 20  |fire_glue.}.. B |
00010910  20 20 20 20 20 20 70 31  5f 65 6e 64 5f 66 69 72  |      p1_end_fir|
00010920  65 0d 7d b4 06 20 3a 0d  7d be 12 20 2e 70 31 5f  |e.}.. :.}.. .p1_|
00010930  66 69 72 65 5f 62 6f 6d  62 0d 7d c8 15 20 4d 4f  |fire_bomb.}.. MO|
00010940  56 20 20 20 20 20 52 30  2c 20 23 31 32 39 0d 7d  |V     R0, #129.}|
00010950  d2 13 20 4d 4f 56 20 20  20 20 20 52 31 2c 20 23  |.. MOV     R1, #|
00010960  30 0d 7d dc 17 20 53 55  42 20 20 20 20 20 52 31  |0.}.. SUB     R1|
00010970  2c 52 31 2c 20 23 38 34  0d 7d e6 15 20 4d 4f 56  |,R1, #84.}.. MOV|
00010980  20 20 20 20 20 52 32 2c  20 23 32 35 35 0d 7d f0  |     R2, #255.}.|
00010990  16 20 53 57 49 20 20 20  20 20 22 4f 53 5f 42 79  |. SWI     "OS_By|
000109a0  74 65 22 0d 7d fa 15 20  43 4d 50 20 20 20 20 20  |te".}.. CMP     |
000109b0  52 31 2c 20 23 32 35 35  0d 7e 04 1d 20 42 4e 45  |R1, #255.~.. BNE|
000109c0  20 20 20 20 20 70 31 5f  6e 6f 74 5f 66 69 72 65  |     p1_not_fire|
000109d0  5f 62 6f 6d 62 0d 7e 0e  18 20 4c 44 52 20 20 20  |_bomb.~.. LDR   |
000109e0  20 20 52 30 2c 20 70 31  5f 66 69 72 65 0d 7e 18  |  R0, p1_fire.~.|
000109f0  16 20 41 44 44 20 20 20  20 20 52 30 2c 52 30 2c  |. ADD     R0,R0,|
00010a00  20 23 31 0d 7e 22 14 20  43 4d 50 20 20 20 20 20  | #1.~". CMP     |
00010a10  52 30 2c 20 23 31 30 0d  7e 2c 13 20 4d 4f 56 47  |R0, #10.~,. MOVG|
00010a20  54 20 20 20 52 30 2c 20  23 30 0d 7e 36 18 20 53  |T   R0, #0.~6. S|
00010a30  54 52 20 20 20 20 20 52  30 2c 20 70 31 5f 66 69  |TR     R0, p1_fi|
00010a40  72 65 0d 7e 40 13 20 43  4d 50 20 20 20 20 20 52  |re.~@. CMP     R|
00010a50  30 2c 20 23 30 0d 7e 4a  1d 20 42 4e 45 20 20 20  |0, #0.~J. BNE   |
00010a60  20 20 70 31 5f 6e 6f 74  5f 66 69 72 65 5f 62 6f  |  p1_not_fire_bo|
00010a70  6d 62 0d 7e 54 14 20 4d  4f 56 20 20 20 20 20 52  |mb.~T. MOV     R|
00010a80  30 2c 20 23 31 32 0d 7e  5e 1a 20 4d 4f 56 20 20  |0, #12.~^. MOV  |
00010a90  20 20 20 52 31 2c 52 36  2c 20 4c 53 52 20 23 32  |   R1,R6, LSR #2|
00010aa0  0d 7e 68 1a 20 4d 4f 56  20 20 20 20 20 52 32 2c  |.~h. MOV     R2,|
00010ab0  52 37 2c 20 4c 53 52 20  23 32 0d 7e 72 1c 20 41  |R7, LSR #2.~r. A|
00010ac0  44 44 20 20 20 20 20 52  31 2c 52 31 2c 20 23 78  |DD     R1,R1, #x|
00010ad0  65 78 74 25 2b 31 0d 7e  7c 1e 20 41 44 44 20 20  |ext%+1.~|. ADD  |
00010ae0  20 20 20 52 32 2c 52 32  2c 20 23 79 65 78 74 25  |   R2,R2, #yext%|
00010af0  2f 34 2a 32 0d 7e 86 18  20 52 53 42 20 20 20 20  |/4*2.~.. RSB    |
00010b00  20 52 32 2c 52 32 2c 20  23 32 35 36 0d 7e 90 14  | R2,R2, #256.~..|
00010b10  20 4d 4f 56 20 20 20 20  20 52 33 2c 20 23 34 30  | MOV     R3, #40|
00010b20  0d 7e 9a 14 20 4d 4f 56  20 20 20 20 20 52 34 2c  |.~.. MOV     R4,|
00010b30  20 23 34 30 0d 7e a4 1d  20 4d 4f 56 20 20 20 20  | #40.~.. MOV    |
00010b40  20 52 35 2c 20 23 62 6f  6d 62 5f 70 61 75 73 65  | R5, #bomb_pause|
00010b50  25 0d 7e ae 13 20 54 53  54 20 20 20 20 20 52 38  |%.~.. TST     R8|
00010b60  2c 20 23 31 0d 7e b8 16  20 52 53 42 4e 45 20 20  |, #1.~.. RSBNE  |
00010b70  20 52 33 2c 52 33 2c 20  23 30 0d 7e c2 1c 20 53  | R3,R3, #0.~.. S|
00010b80  55 42 4e 45 20 20 20 52  31 2c 52 31 2c 20 23 78  |UBNE   R1,R1, #x|
00010b90  65 78 74 25 2b 32 0d 7e  cc 15 20 42 4c 20 20 20  |ext%+2.~.. BL   |
00010ba0  20 20 20 61 64 64 5f 63  65 6c 6c 0d 7e d6 13 20  |   add_cell.~.. |
00010bb0  4d 4f 56 20 20 20 20 20  52 35 2c 20 23 31 0d 7e  |MOV     R5, #1.~|
00010bc0  e0 13 20 4d 4f 56 20 20  20 20 20 52 30 2c 20 23  |.. MOV     R0, #|
00010bd0  31 0d 7e ea 18 20 53 54  52 20 20 20 20 20 52 30  |1.~.. STR     R0|
00010be0  2c 20 70 31 5f 66 69 72  65 0d 7e f4 16 20 2e 70  |, p1_fire.~.. .p|
00010bf0  31 5f 6e 6f 74 5f 66 69  72 65 5f 62 6f 6d 62 0d  |1_not_fire_bomb.|
00010c00  7e fe 18 20 42 20 20 20  20 20 20 20 70 31 5f 65  |~.. B       p1_e|
00010c10  6e 64 5f 66 69 72 65 0d  7f 08 06 20 3a 0d 7f 12  |nd_fire.... :...|
00010c20  11 20 2e 70 31 5f 65 6e  64 5f 66 69 72 65 0d 7f  |. .p1_end_fire..|
00010c30  1c 06 20 3a 0d 7f 26 13  20 4d 4f 56 20 20 20 20  |.. :..&. MOV    |
00010c40  20 52 30 2c 20 23 31 0d  7f 30 1a 20 4d 4f 56 20  | R0, #1..0. MOV |
00010c50  20 20 20 20 52 31 2c 52  36 2c 20 4c 53 52 20 23  |    R1,R6, LSR #|
00010c60  32 0d 7f 3a 1a 20 4d 4f  56 20 20 20 20 20 52 32  |2..:. MOV     R2|
00010c70  2c 52 37 2c 20 4c 53 52  20 23 32 0d 7f 44 13 20  |,R7, LSR #2..D. |
00010c80  54 53 54 20 20 20 20 20  52 38 2c 20 23 31 0d 7f  |TST     R8, #1..|
00010c90  4e 16 20 41 44 44 45 51  20 20 20 52 31 2c 52 31  |N. ADDEQ   R1,R1|
00010ca0  2c 20 23 31 0d 7f 58 1c  20 41 44 44 4e 45 20 20  |, #1..X. ADDNE  |
00010cb0  20 52 31 2c 52 31 2c 20  23 78 65 78 74 25 2d 31  | R1,R1, #xext%-1|
00010cc0  0d 7f 62 1c 20 41 44 44  20 20 20 20 20 52 32 2c  |..b. ADD     R2,|
00010cd0  52 32 2c 20 23 79 65 78  74 25 2f 34 0d 7f 6c 18  |R2, #yext%/4..l.|
00010ce0  20 52 53 42 20 20 20 20  20 52 32 2c 52 32 2c 20  | RSB     R2,R2, |
00010cf0  23 32 35 36 0d 7f 76 18  20 4c 44 52 20 20 20 20  |#256..v. LDR    |
00010d00  20 52 33 2c 20 61 64 72  5f 72 6e 64 0d 7f 80 14  | R3, adr_rnd....|
00010d10  20 4c 44 52 20 20 20 20  20 52 33 2c 5b 52 33 5d  | LDR     R3,[R3]|
00010d20  0d 7f 8a 18 20 54 53 54  20 20 20 20 20 52 33 2c  |.... TST     R3,|
00010d30  20 23 25 31 30 30 30 30  0d 7f 94 16 20 53 55 42  | #%10000.... SUB|
00010d40  45 51 20 20 20 52 32 2c  52 32 2c 20 23 31 0d 7f  |EQ   R2,R2, #1..|
00010d50  9e 15 20 80 20 20 20 20  20 52 33 2c 52 33 2c 20  |.. .     R3,R3, |
00010d60  23 31 35 0d 7f a8 16 20  53 55 42 20 20 20 20 20  |#15.... SUB     |
00010d70  52 33 2c 52 33 2c 20 23  37 0d 7f b2 13 20 4d 4f  |R3,R3, #7.... MO|
00010d80  56 20 20 20 20 20 52 34  2c 20 23 30 0d 7f bc 17  |V     R4, #0....|
00010d90  20 53 55 42 20 20 20 20  20 52 34 2c 52 34 2c 20  | SUB     R4,R4, |
00010da0  23 34 30 0d 7f c6 14 20  4d 4f 56 20 20 20 20 20  |#40.... MOV     |
00010db0  52 35 2c 20 23 33 32 0d  7f d0 15 20 42 4c 20 20  |R5, #32.... BL  |
00010dc0  20 20 20 20 61 64 64 5f  63 65 6c 6c 0d 7f da 13  |    add_cell....|
00010dd0  20 4d 4f 56 20 20 20 20  20 52 35 2c 20 23 31 0d  | MOV     R5, #1.|
00010de0  7f e4 06 20 3a 0d 7f ee  14 20 80 20 20 20 20 20  |... :.... .     |
00010df0  52 30 2c 52 38 2c 20 23  31 0d 7f f8 1a 20 4d 4f  |R0,R8, #1.... MO|
00010e00  56 20 20 20 20 20 52 31  2c 52 36 2c 20 4c 53 52  |V     R1,R6, LSR|
00010e10  20 23 32 0d 80 02 1a 20  4d 4f 56 20 20 20 20 20  | #2.... MOV     |
00010e20  52 32 2c 52 37 2c 20 4c  53 52 20 23 32 0d 80 0c  |R2,R7, LSR #2...|
00010e30  19 20 4c 44 52 20 20 20  20 20 52 39 2c 20 61 64  |. LDR     R9, ad|
00010e40  72 5f 70 31 5f 78 0d 80  16 14 20 53 54 52 20 20  |r_p1_x.... STR  |
00010e50  20 20 20 52 31 2c 5b 52  39 5d 0d 80 20 19 20 4c  |   R1,[R9].. . L|
00010e60  44 52 20 20 20 20 20 52  39 2c 20 61 64 72 5f 70  |DR     R9, adr_p|
00010e70  31 5f 79 0d 80 2a 14 20  53 54 52 20 20 20 20 20  |1_y..*. STR     |
00010e80  52 32 2c 5b 52 39 5d 0d  80 34 1d 20 42 4c 20 20  |R2,[R9]..4. BL  |
00010e90  20 20 20 20 70 6c 6f 74  5f 73 70 72 69 74 65 5f  |    plot_sprite_|
00010ea0  31 36 31 36 0d 80 3e 06  20 3a 0d 80 48 19 20 4c  |1616..>. :..H. L|
00010eb0  44 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 39 2c  |DMFD   R13!,{R9,|
00010ec0  50 43 7d 0d 80 52 06 20  3a 0d 80 5c 0d 20 2e 61  |PC}..R. :..\. .a|
00010ed0  64 72 5f 72 6e 64 0d 80  66 10 20 45 51 55 44 20  |dr_rnd..f. EQUD |
00010ee0  20 20 20 72 6e 64 0d 80  70 13 20 2e 61 64 72 5f  |   rnd..p. .adr_|
00010ef0  70 31 5f 77 65 61 70 6f  6e 0d 80 7a 16 20 45 51  |p1_weapon..z. EQ|
00010f00  55 44 20 20 20 20 70 31  5f 77 65 61 70 6f 6e 0d  |UD    p1_weapon.|
00010f10  80 84 0e 20 2e 61 64 72  5f 70 31 5f 78 0d 80 8e  |... .adr_p1_x...|
00010f20  11 20 45 51 55 44 20 20  20 20 70 31 5f 78 0d 80  |. EQUD    p1_x..|
00010f30  98 0e 20 2e 61 64 72 5f  70 31 5f 79 0d 80 a2 11  |.. .adr_p1_y....|
00010f40  20 45 51 55 44 20 20 20  20 70 31 5f 79 0d 80 ac  | EQUD    p1_y...|
00010f50  06 20 3a 0d 80 b6 06 20  5d 0d 80 c0 14 20 50 25  |. :.... ].... P%|
00010f60  3d 63 6c 67 5f 72 6f 75  74 69 6e 65 25 0d 80 ca  |=clg_routine%...|
00010f70  19 20 4c 25 3d 63 6c 67  5f 72 6f 75 74 69 6e 65  |. L%=clg_routine|
00010f80  25 2b 31 30 32 30 0d 80  d4 0f 20 5b 4f 50 54 20  |%+1020.... [OPT |
00010f90  70 61 73 73 25 0d 80 de  06 20 3a 0d 80 e8 19 20  |pass%.... :.... |
00010fa0  2e 63 6c 67 5f 61 64 72  5f 73 63 72 65 65 6e 73  |.clg_adr_screens|
00010fb0  74 6f 72 65 0d 80 f2 18  20 45 51 55 44 20 20 20  |tore.... EQUD   |
00010fc0  20 73 63 72 65 65 6e 73  74 6f 72 65 0d 80 fc 14  | screenstore....|
00010fd0  20 2e 63 6c 67 5f 73 63  72 65 65 6e 64 61 74 61  | .clg_screendata|
00010fe0  0d 81 06 18 20 45 51 55  44 20 20 20 20 73 63 72  |.... EQUD    scr|
00010ff0  65 65 6e 64 61 74 61 25  0d 81 10 06 20 3a 0d 81  |eendata%.... :..|
00011000  1a 09 20 2e 63 6c 67 0d  81 24 1e 20 53 54 4d 46  |.. .clg..$. STMF|
00011010  44 20 20 20 52 31 33 21  2c 7b 52 30 2d 52 31 32  |D   R13!,{R0-R12|
00011020  2c 52 31 34 7d 0d 81 2e  23 20 41 44 52 20 20 20  |,R14}...# ADR   |
00011030  20 20 52 30 2c 20 63 6c  67 5f 74 65 6d 70 5f 72  |  R0, clg_temp_r|
00011040  65 67 5f 73 74 6f 72 65  0d 81 38 1a 20 53 54 4d  |eg_store..8. STM|
00011050  49 41 20 20 20 52 30 2c  20 7b 52 31 33 2c 52 31  |IA   R0, {R13,R1|
00011060  34 7d 0d 81 42 25 20 4c  44 52 20 20 20 20 20 52  |4}..B% LDR     R|
00011070  31 33 2c 20 63 6c 67 5f  61 64 72 5f 73 63 72 65  |13, clg_adr_scre|
00011080  65 6e 73 74 6f 72 65 0d  81 4c 17 20 4c 44 52 20  |enstore..L. LDR |
00011090  20 20 20 20 52 31 33 2c  20 5b 52 31 33 5d 0d 81  |    R13, [R13]..|
000110a0  56 20 20 4c 44 52 20 20  20 20 20 52 31 34 2c 20  |V  LDR     R14, |
000110b0  63 6c 67 5f 73 63 72 65  65 6e 64 61 74 61 0d 81  |clg_screendata..|
000110c0  60 14 20 4d 4f 56 20 20  20 20 20 52 31 32 2c 20  |`. MOV     R12, |
000110d0  23 30 0d 81 6a 0f 20 2e  63 6c 67 5f 6c 6f 6f 70  |#0..j. .clg_loop|
000110e0  31 0d 81 74 06 20 5d 0d  81 7e 10 20 e3 20 61 25  |1..t. ]..~. . a%|
000110f0  3d 31 20 b8 20 32 36 0d  81 88 0f 20 5b 4f 50 54  |=1 . 26.... [OPT|
00011100  20 70 61 73 73 25 0d 81  92 1a 20 4c 44 4d 49 41  | pass%.... LDMIA|
00011110  20 20 20 52 31 34 21 2c  7b 52 30 2d 52 31 31 7d  |   R14!,{R0-R11}|
00011120  0d 81 9c 1a 20 53 54 4d  49 41 20 20 20 52 31 33  |.... STMIA   R13|
00011130  21 2c 7b 52 30 2d 52 31  31 7d 0d 81 a6 06 20 5d  |!,{R0-R11}.... ]|
00011140  0d 81 b0 06 20 ed 0d 81  ba 0f 20 5b 4f 50 54 20  |.... ..... [OPT |
00011150  70 61 73 73 25 0d 81 c4  18 20 41 44 44 20 20 20  |pass%.... ADD   |
00011160  20 20 52 31 32 2c 52 31  32 2c 20 23 31 0d 81 ce  |  R12,R12, #1...|
00011170  15 20 43 4d 50 20 20 20  20 20 52 31 32 2c 20 23  |. CMP     R12, #|
00011180  36 35 0d 81 d8 16 20 42  4c 54 20 20 20 20 20 63  |65.... BLT     c|
00011190  6c 67 5f 6c 6f 6f 70 31  0d 81 e2 06 20 5d 0d 81  |lg_loop1.... ]..|
000111a0  ec 10 20 e3 20 61 25 3d  31 20 b8 20 32 30 0d 81  |.. . a%=1 . 20..|
000111b0  f6 0f 20 5b 4f 50 54 20  70 61 73 73 25 0d 82 00  |.. [OPT pass%...|
000111c0  19 20 4c 44 4d 49 41 20  20 20 52 31 34 21 2c 7b  |. LDMIA   R14!,{|
000111d0  52 30 2d 52 39 7d 0d 82  0a 19 20 53 54 4d 49 41  |R0-R9}.... STMIA|
000111e0  20 20 20 52 31 33 21 2c  7b 52 30 2d 52 39 7d 0d  |   R13!,{R0-R9}.|
000111f0  82 14 06 20 5d 0d 82 1e  06 20 ed 0d 82 28 0f 20  |... ].... ...(. |
00011200  5b 4f 50 54 20 70 61 73  73 25 0d 82 32 23 20 41  |[OPT pass%..2# A|
00011210  44 52 20 20 20 20 20 52  30 2c 20 63 6c 67 5f 74  |DR     R0, clg_t|
00011220  65 6d 70 5f 72 65 67 5f  73 74 6f 72 65 0d 82 3c  |emp_reg_store..<|
00011230  1a 20 4c 44 4d 49 41 20  20 20 52 30 2c 20 7b 52  |. LDMIA   R0, {R|
00011240  31 33 2c 52 31 34 7d 0d  82 46 1d 20 4c 44 4d 46  |13,R14}..F. LDMF|
00011250  44 20 20 20 52 31 33 21  2c 7b 52 30 2d 52 31 32  |D   R13!,{R0-R12|
00011260  2c 50 43 7d 0d 82 50 06  20 3a 0d 82 5a 18 20 2e  |,PC}..P. :..Z. .|
00011270  63 6c 67 5f 74 65 6d 70  5f 72 65 67 5f 73 74 6f  |clg_temp_reg_sto|
00011280  72 65 0d 82 64 0e 20 45  51 55 44 20 20 20 20 30  |re..d. EQUD    0|
00011290  0d 82 6e 0e 20 45 51 55  44 20 20 20 20 30 0d 82  |..n. EQUD    0..|
000112a0  78 06 20 3a 0d 82 82 06  20 5d 0d 82 8c 16 20 50  |x. :.... ].... P|
000112b0  25 3d 73 70 6c 69 74 5f  72 6f 75 74 69 6e 65 25  |%=split_routine%|
000112c0  0d 82 96 1b 20 4c 25 3d  73 70 6c 69 74 5f 72 6f  |.... L%=split_ro|
000112d0  75 74 69 6e 65 25 2b 31  30 32 30 0d 82 a0 0f 20  |utine%+1020.... |
000112e0  5b 4f 50 54 20 70 61 73  73 25 0d 82 aa 06 20 3a  |[OPT pass%.... :|
000112f0  0d 82 b4 06 20 3a 0d 82  be 17 20 2e 73 70 6c 69  |.... :.... .spli|
00011300  74 5f 73 63 72 65 65 6e  73 74 6f 72 65 0d 82 c8  |t_screenstore...|
00011310  19 20 45 51 55 44 20 20  20 20 73 63 72 65 65 6e  |. EQUD    screen|
00011320  73 74 6f 72 65 25 0d 82  d2 16 20 2e 73 70 6c 69  |store%.... .spli|
00011330  74 5f 61 64 72 5f 73 63  72 65 65 6e 0d 82 dc 13  |t_adr_screen....|
00011340  20 45 51 55 44 20 20 20  20 73 63 72 65 65 6e 0d  | EQUD    screen.|
00011350  82 e6 14 20 2e 73 70 6c  69 74 5f 61 64 72 5f 70  |... .split_adr_p|
00011360  31 5f 79 0d 82 f0 11 20  45 51 55 44 20 20 20 20  |1_y.... EQUD    |
00011370  70 31 5f 79 0d 82 fa 14  20 2e 73 70 6c 69 74 5f  |p1_y.... .split_|
00011380  61 64 72 5f 70 32 5f 79  0d 83 04 11 20 45 51 55  |adr_p2_y.... EQU|
00011390  44 20 20 20 20 70 32 5f  79 0d 83 0e 11 20 2e 73  |D    p2_y.... .s|
000113a0  70 6c 69 74 5f 70 31 5f  79 31 0d 83 18 0e 20 45  |plit_p1_y1.... E|
000113b0  51 55 44 20 20 20 20 30  0d 83 22 11 20 2e 73 70  |QUD    0..". .sp|
000113c0  6c 69 74 5f 70 32 5f 79  31 0d 83 2c 0e 20 45 51  |lit_p2_y1..,. EQ|
000113d0  55 44 20 20 20 20 30 0d  83 36 11 20 2e 73 70 6c  |UD    0..6. .spl|
000113e0  69 74 5f 70 31 5f 79 32  0d 83 40 0e 20 45 51 55  |it_p1_y2..@. EQU|
000113f0  44 20 20 20 20 30 0d 83  4a 11 20 2e 73 70 6c 69  |D    0..J. .spli|
00011400  74 5f 70 32 5f 79 32 0d  83 54 0e 20 45 51 55 44  |t_p2_y2..T. EQUD|
00011410  20 20 20 20 30 0d 83 5e  11 20 2e 73 70 6c 69 74  |    0..^. .split|
00011420  5f 70 31 5f 79 33 0d 83  68 0e 20 45 51 55 44 20  |_p1_y3..h. EQUD |
00011430  20 20 20 30 0d 83 72 11  20 2e 73 70 6c 69 74 5f  |   0..r. .split_|
00011440  70 32 5f 79 33 0d 83 7c  0e 20 45 51 55 44 20 20  |p2_y3..|. EQUD  |
00011450  20 20 30 0d 83 86 06 20  3a 0d 83 90 12 20 2e 73  |  0.... :.... .s|
00011460  70 6c 69 74 5f 73 63 72  65 65 6e 0d 83 9a 1e 20  |plit_screen.... |
00011470  53 54 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 30  |STMFD   R13!,{R0|
00011480  2d 52 31 32 2c 52 31 34  7d 0d 83 a4 25 20 41 44  |-R12,R14}...% AD|
00011490  52 20 20 20 20 20 52 30  2c 20 73 70 6c 69 74 5f  |R     R0, split_|
000114a0  74 65 6d 70 5f 72 65 67  5f 73 74 6f 72 65 0d 83  |temp_reg_store..|
000114b0  ae 1a 20 53 54 4d 49 41  20 20 20 52 30 2c 20 7b  |.. STMIA   R0, {|
000114c0  52 31 33 2c 52 31 34 7d  0d 83 b8 22 20 4c 44 52  |R13,R14}..." LDR|
000114d0  20 20 20 20 20 52 31 33  2c 20 73 70 6c 69 74 5f  |     R13, split_|
000114e0  61 64 72 5f 73 63 72 65  65 6e 0d 83 c2 17 20 4c  |adr_screen.... L|
000114f0  44 52 20 20 20 20 20 52  31 33 2c 20 5b 52 31 33  |DR     R13, [R13|
00011500  5d 0d 83 cc 14 20 4d 4f  56 20 20 20 20 20 52 31  |].... MOV     R1|
00011510  32 2c 20 23 30 0d 83 d6  1f 20 4c 44 52 20 20 20  |2, #0.... LDR   |
00011520  20 20 52 30 2c 20 73 70  6c 69 74 5f 61 64 72 5f  |  R0, split_adr_|
00011530  70 31 5f 79 0d 83 e0 14  20 4c 44 52 20 20 20 20  |p1_y.... LDR    |
00011540  20 52 30 2c 5b 52 30 5d  0d 83 ea 1c 20 4c 44 52  | R0,[R0].... LDR|
00011550  20 20 20 20 20 52 31 2c  20 73 70 6c 69 74 5f 70  |     R1, split_p|
00011560  31 5f 79 31 0d 83 f4 1c  20 4c 44 52 20 20 20 20  |1_y1.... LDR    |
00011570  20 52 32 2c 20 73 70 6c  69 74 5f 70 31 5f 79 32  | R2, split_p1_y2|
00011580  0d 83 fe 1c 20 4c 44 52  20 20 20 20 20 52 33 2c  |.... LDR     R3,|
00011590  20 73 70 6c 69 74 5f 70  31 5f 79 33 0d 84 08 1c  | split_p1_y3....|
000115a0  20 53 54 52 20 20 20 20  20 52 30 2c 20 73 70 6c  | STR     R0, spl|
000115b0  69 74 5f 70 31 5f 79 31  0d 84 12 1c 20 53 54 52  |it_p1_y1.... STR|
000115c0  20 20 20 20 20 52 31 2c  20 73 70 6c 69 74 5f 70  |     R1, split_p|
000115d0  31 5f 79 32 0d 84 1c 1c  20 53 54 52 20 20 20 20  |1_y2.... STR    |
000115e0  20 52 32 2c 20 73 70 6c  69 74 5f 70 31 5f 79 33  | R2, split_p1_y3|
000115f0  0d 84 26 15 20 41 44 44  20 20 20 20 20 52 30 2c  |..&. ADD     R0,|
00011600  52 30 2c 52 31 0d 84 30  15 20 41 44 44 20 20 20  |R0,R1..0. ADD   |
00011610  20 20 52 30 2c 52 30 2c  52 32 0d 84 3a 15 20 41  |  R0,R0,R2..:. A|
00011620  44 44 20 20 20 20 20 52  30 2c 52 30 2c 52 33 0d  |DD     R0,R0,R3.|
00011630  84 44 16 20 41 44 44 20  20 20 20 20 52 30 2c 52  |.D. ADD     R0,R|
00011640  30 2c 20 23 32 0d 84 4e  1a 20 4d 4f 56 20 20 20  |0, #2..N. MOV   |
00011650  20 20 52 30 2c 52 30 2c  20 41 53 52 20 23 32 0d  |  R0,R0, ASR #2.|
00011660  84 58 18 20 52 53 42 20  20 20 20 20 52 30 2c 52  |.X. RSB     R0,R|
00011670  30 2c 20 23 32 35 36 0d  84 62 17 20 53 55 42 20  |0, #256..b. SUB |
00011680  20 20 20 20 52 30 2c 52  30 2c 20 23 36 34 0d 84  |    R0,R0, #64..|
00011690  6c 15 20 43 4d 50 20 20  20 20 20 52 30 2c 20 23  |l. CMP     R0, #|
000116a0  31 34 38 0d 84 76 15 20  4d 4f 56 47 54 20 20 20  |148..v. MOVGT   |
000116b0  52 30 2c 20 23 31 34 38  0d 84 80 13 20 43 4d 50  |R0, #148.... CMP|
000116c0  20 20 20 20 20 52 30 2c  20 23 30 0d 84 8a 13 20  |     R0, #0.... |
000116d0  4d 4f 56 4c 54 20 20 20  52 30 2c 20 23 30 0d 84  |MOVLT   R0, #0..|
000116e0  94 23 20 4c 44 52 20 20  20 20 20 52 31 34 2c 20  |.# LDR     R14, |
000116f0  73 70 6c 69 74 5f 73 63  72 65 65 6e 73 74 6f 72  |split_screenstor|
00011700  65 0d 84 9e 19 20 4d 4f  56 20 20 20 20 20 52 31  |e.... MOV     R1|
00011710  2c 20 23 79 5f 73 68 69  66 74 0d 84 a8 1a 20 4d  |, #y_shift.... M|
00011720  4c 41 20 20 20 20 20 52  31 34 2c 52 31 2c 52 30  |LA     R14,R1,R0|
00011730  2c 52 31 34 0d 84 b2 11  20 2e 73 70 6c 69 74 5f  |,R14.... .split_|
00011740  6c 6f 6f 70 31 0d 84 bc  06 20 5d 0d 84 c6 10 20  |loop1.... ].... |
00011750  e3 20 61 25 3d 31 20 b8  20 31 30 0d 84 d0 0f 20  |. a%=1 . 10.... |
00011760  5b 4f 50 54 20 70 61 73  73 25 0d 84 da 1a 20 4c  |[OPT pass%.... L|
00011770  44 4d 49 41 20 20 20 52  31 34 21 2c 7b 52 30 2d  |DMIA   R14!,{R0-|
00011780  52 31 31 7d 0d 84 e4 1a  20 53 54 4d 49 41 20 20  |R11}.... STMIA  |
00011790  20 52 31 33 21 2c 7b 52  30 2d 52 31 31 7d 0d 84  | R13!,{R0-R11}..|
000117a0  ee 06 20 5d 0d 84 f8 06  20 ed 0d 85 02 0f 20 5b  |.. ].... ..... [|
000117b0  4f 50 54 20 70 61 73 73  25 0d 85 0c 18 20 41 44  |OPT pass%.... AD|
000117c0  44 20 20 20 20 20 52 31  32 2c 52 31 32 2c 20 23  |D     R12,R12, #|
000117d0  31 0d 85 16 15 20 43 4d  50 20 20 20 20 20 52 31  |1.... CMP     R1|
000117e0  32 2c 20 23 37 32 0d 85  20 18 20 42 4c 54 20 20  |2, #72.. . BLT  |
000117f0  20 20 20 73 70 6c 69 74  5f 6c 6f 6f 70 31 0d 85  |   split_loop1..|
00011800  2a 06 20 5d 0d 85 34 10  20 e3 20 61 25 3d 30 20  |*. ]..4. . a%=0 |
00011810  b8 20 31 31 0d 85 3e 0f  20 5b 4f 50 54 20 70 61  |. 11..>. [OPT pa|
00011820  73 73 25 0d 85 48 15 20  4d 4f 56 20 20 20 20 20  |ss%..H. MOV     |
00011830  61 25 2c 20 23 31 32 37  0d 85 52 1c 20 84 52 20  |a%, #127..R. .R |
00011840  20 20 20 20 61 25 2c 61  25 2c 61 25 2c 20 4c 53  |    a%,a%,a%, LS|
00011850  4c 20 23 38 0d 85 5c 1d  20 84 52 20 20 20 20 20  |L #8..\. .R     |
00011860  61 25 2c 61 25 2c 61 25  2c 20 4c 53 4c 20 23 31  |a%,a%,a%, LSL #1|
00011870  36 0d 85 66 06 20 5d 0d  85 70 06 20 ed 0d 85 7a  |6..f. ]..p. ...z|
00011880  0f 20 5b 4f 50 54 20 70  61 73 73 25 0d 85 84 14  |. [OPT pass%....|
00011890  20 4d 4f 56 20 20 20 20  20 52 31 32 2c 20 23 30  | MOV     R12, #0|
000118a0  0d 85 8e 11 20 2e 73 70  6c 69 74 5f 6c 6f 6f 70  |.... .split_loop|
000118b0  33 0d 85 98 1a 20 53 54  4d 49 41 20 20 20 52 31  |3.... STMIA   R1|
000118c0  33 21 2c 7b 52 30 2d 52  31 31 7d 0d 85 a2 18 20  |3!,{R0-R11}.... |
000118d0  41 44 44 20 20 20 20 20  52 31 32 2c 52 31 32 2c  |ADD     R12,R12,|
000118e0  20 23 31 0d 85 ac 16 20  43 4d 50 20 20 20 20 20  | #1.... CMP     |
000118f0  52 31 32 2c 20 23 32 38  30 0d 85 b6 18 20 42 4c  |R12, #280.... BL|
00011900  54 20 20 20 20 20 73 70  6c 69 74 5f 6c 6f 6f 70  |T     split_loop|
00011910  33 0d 85 c0 06 20 3a 0d  85 ca 22 20 4c 44 52 20  |3.... :..." LDR |
00011920  20 20 20 20 52 31 33 2c  20 73 70 6c 69 74 5f 61  |    R13, split_a|
00011930  64 72 5f 73 63 72 65 65  6e 0d 85 d4 17 20 4c 44  |dr_screen.... LD|
00011940  52 20 20 20 20 20 52 31  33 2c 20 5b 52 31 33 5d  |R     R13, [R13]|
00011950  0d 85 de 1c 20 41 44 44  20 20 20 20 20 52 31 33  |.... ADD     R13|
00011960  2c 52 31 33 2c 20 23 26  42 39 30 30 0d 85 e8 14  |,R13, #&B900....|
00011970  20 4d 4f 56 20 20 20 20  20 52 31 32 2c 20 23 30  | MOV     R12, #0|
00011980  0d 85 f2 1f 20 4c 44 52  20 20 20 20 20 52 30 2c  |.... LDR     R0,|
00011990  20 73 70 6c 69 74 5f 61  64 72 5f 70 32 5f 79 0d  | split_adr_p2_y.|
000119a0  85 fc 14 20 4c 44 52 20  20 20 20 20 52 30 2c 5b  |... LDR     R0,[|
000119b0  52 30 5d 0d 86 06 1c 20  4c 44 52 20 20 20 20 20  |R0].... LDR     |
000119c0  52 31 2c 20 73 70 6c 69  74 5f 70 32 5f 79 31 0d  |R1, split_p2_y1.|
000119d0  86 10 1c 20 4c 44 52 20  20 20 20 20 52 32 2c 20  |... LDR     R2, |
000119e0  73 70 6c 69 74 5f 70 32  5f 79 32 0d 86 1a 1c 20  |split_p2_y2.... |
000119f0  4c 44 52 20 20 20 20 20  52 33 2c 20 73 70 6c 69  |LDR     R3, spli|
00011a00  74 5f 70 32 5f 79 33 0d  86 24 1c 20 53 54 52 20  |t_p2_y3..$. STR |
00011a10  20 20 20 20 52 30 2c 20  73 70 6c 69 74 5f 70 32  |    R0, split_p2|
00011a20  5f 79 31 0d 86 2e 1c 20  53 54 52 20 20 20 20 20  |_y1.... STR     |
00011a30  52 31 2c 20 73 70 6c 69  74 5f 70 32 5f 79 32 0d  |R1, split_p2_y2.|
00011a40  86 38 1c 20 53 54 52 20  20 20 20 20 52 32 2c 20  |.8. STR     R2, |
00011a50  73 70 6c 69 74 5f 70 32  5f 79 33 0d 86 42 15 20  |split_p2_y3..B. |
00011a60  41 44 44 20 20 20 20 20  52 30 2c 52 30 2c 52 31  |ADD     R0,R0,R1|
00011a70  0d 86 4c 15 20 41 44 44  20 20 20 20 20 52 30 2c  |..L. ADD     R0,|
00011a80  52 30 2c 52 32 0d 86 56  15 20 41 44 44 20 20 20  |R0,R2..V. ADD   |
00011a90  20 20 52 30 2c 52 30 2c  52 33 0d 86 60 16 20 41  |  R0,R0,R3..`. A|
00011aa0  44 44 20 20 20 20 20 52  30 2c 52 30 2c 20 23 32  |DD     R0,R0, #2|
00011ab0  0d 86 6a 1a 20 4d 4f 56  20 20 20 20 20 52 30 2c  |..j. MOV     R0,|
00011ac0  52 30 2c 20 41 53 52 20  23 32 0d 86 74 18 20 52  |R0, ASR #2..t. R|
00011ad0  53 42 20 20 20 20 20 52  30 2c 52 30 2c 20 23 32  |SB     R0,R0, #2|
00011ae0  35 36 0d 86 7e 17 20 53  55 42 20 20 20 20 20 52  |56..~. SUB     R|
00011af0  30 2c 52 30 2c 20 23 36  34 0d 86 88 15 20 43 4d  |0,R0, #64.... CM|
00011b00  50 20 20 20 20 20 52 30  2c 20 23 31 34 38 0d 86  |P     R0, #148..|
00011b10  92 15 20 4d 4f 56 47 54  20 20 20 52 30 2c 20 23  |.. MOVGT   R0, #|
00011b20  31 34 38 0d 86 9c 13 20  43 4d 50 20 20 20 20 20  |148.... CMP     |
00011b30  52 30 2c 20 23 30 0d 86  a6 13 20 4d 4f 56 4c 54  |R0, #0.... MOVLT|
00011b40  20 20 20 52 30 2c 20 23  30 0d 86 b0 23 20 4c 44  |   R0, #0...# LD|
00011b50  52 20 20 20 20 20 52 31  34 2c 20 73 70 6c 69 74  |R     R14, split|
00011b60  5f 73 63 72 65 65 6e 73  74 6f 72 65 0d 86 ba 19  |_screenstore....|
00011b70  20 4d 4f 56 20 20 20 20  20 52 31 2c 20 23 79 5f  | MOV     R1, #y_|
00011b80  73 68 69 66 74 0d 86 c4  1a 20 4d 4c 41 20 20 20  |shift.... MLA   |
00011b90  20 20 52 31 34 2c 52 31  2c 52 30 2c 52 31 34 0d  |  R14,R1,R0,R14.|
00011ba0  86 ce 11 20 2e 73 70 6c  69 74 5f 6c 6f 6f 70 32  |... .split_loop2|
00011bb0  0d 86 d8 06 20 5d 0d 86  e2 10 20 e3 20 61 25 3d  |.... ].... . a%=|
00011bc0  31 20 b8 20 31 30 0d 86  ec 0f 20 5b 4f 50 54 20  |1 . 10.... [OPT |
00011bd0  70 61 73 73 25 0d 86 f6  1a 20 4c 44 4d 49 41 20  |pass%.... LDMIA |
00011be0  20 20 52 31 34 21 2c 7b  52 30 2d 52 31 31 7d 0d  |  R14!,{R0-R11}.|
00011bf0  87 00 1a 20 53 54 4d 49  41 20 20 20 52 31 33 21  |... STMIA   R13!|
00011c00  2c 7b 52 30 2d 52 31 31  7d 0d 87 0a 06 20 5d 0d  |,{R0-R11}.... ].|
00011c10  87 14 06 20 ed 0d 87 1e  0f 20 5b 4f 50 54 20 70  |... ..... [OPT p|
00011c20  61 73 73 25 0d 87 28 18  20 41 44 44 20 20 20 20  |ass%..(. ADD    |
00011c30  20 52 31 32 2c 52 31 32  2c 20 23 31 0d 87 32 15  | R12,R12, #1..2.|
00011c40  20 43 4d 50 20 20 20 20  20 52 31 32 2c 20 23 37  | CMP     R12, #7|
00011c50  32 0d 87 3c 18 20 42 4c  54 20 20 20 20 20 73 70  |2..<. BLT     sp|
00011c60  6c 69 74 5f 6c 6f 6f 70  32 0d 87 46 25 20 41 44  |lit_loop2..F% AD|
00011c70  52 20 20 20 20 20 52 30  2c 20 73 70 6c 69 74 5f  |R     R0, split_|
00011c80  74 65 6d 70 5f 72 65 67  5f 73 74 6f 72 65 0d 87  |temp_reg_store..|
00011c90  50 1a 20 4c 44 4d 49 41  20 20 20 52 30 2c 20 7b  |P. LDMIA   R0, {|
00011ca0  52 31 33 2c 52 31 34 7d  0d 87 5a 1d 20 4c 44 4d  |R13,R14}..Z. LDM|
00011cb0  46 44 20 20 20 52 31 33  21 2c 7b 52 30 2d 52 31  |FD   R13!,{R0-R1|
00011cc0  32 2c 50 43 7d 0d 87 64  06 20 3a 0d 87 6e 1a 20  |2,PC}..d. :..n. |
00011cd0  2e 73 70 6c 69 74 5f 74  65 6d 70 5f 72 65 67 5f  |.split_temp_reg_|
00011ce0  73 74 6f 72 65 0d 87 78  0e 20 45 51 55 44 20 20  |store..x. EQUD  |
00011cf0  20 20 30 0d 87 82 0e 20  45 51 55 44 20 20 20 20  |  0.... EQUD    |
00011d00  30 0d 87 8c 06 20 3a 0d  87 96 06 20 3a 0d 87 a0  |0.... :.... :...|
00011d10  06 20 5d 0d 87 aa 18 20  50 25 3d 73 70 72 69 74  |. ].... P%=sprit|
00011d20  65 5f 72 6f 75 74 69 6e  65 73 25 0d 87 b4 1d 20  |e_routines%.... |
00011d30  4c 25 3d 73 70 72 69 74  65 5f 72 6f 75 74 69 6e  |L%=sprite_routin|
00011d40  65 73 25 2b 38 31 39 31  0d 87 be 0f 20 5b 4f 50  |es%+8191.... [OP|
00011d50  54 20 70 61 73 73 25 0d  87 c8 06 20 3a 0d 87 d2  |T pass%.... :...|
00011d60  06 20 3a 0d 87 dc 06 20  3a 0d 87 e6 16 20 2e 70  |. :.... :.... .p|
00011d70  6c 6f 74 5f 73 70 72 69  74 65 5f 31 32 31 32 0d  |lot_sprite_1212.|
00011d80  87 f0 06 20 3a 0d 87 fa  1e 20 53 54 4d 46 44 20  |... :.... STMFD |
00011d90  20 20 52 31 33 21 2c 7b  52 30 2d 52 31 32 2c 52  |  R13!,{R0-R12,R|
00011da0  31 34 7d 0d 88 04 06 20  3a 0d 88 0e 31 20 3a 20  |14}.... :...1 : |
00011db0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00011dc0  20 20 20 20 20 20 20 20  20 20 20 3b 20 52 30 20  |           ; R0 |
00011dd0  73 70 72 69 74 65 20 6e  6f 2e 0d 88 18 2e 20 3a  |sprite no..... :|
00011de0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00011df0  20 20 20 20 20 20 20 20  20 20 20 20 3b 20 52 31  |            ; R1|
00011e00  20 78 2d 63 6f 6f 72 64  0d 88 22 2e 20 3a 20 20  | x-coord..". :  |
00011e10  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00011e20  20 20 20 20 20 20 20 20  20 20 3b 20 52 32 20 79  |          ; R2 y|
00011e30  2d 63 6f 6f 72 64 0d 88  2c 06 20 3a 0d 88 36 18  |-coord..,. :..6.|
00011e40  20 52 53 42 20 20 20 20  20 52 32 2c 52 32 2c 20  | RSB     R2,R2, |
00011e50  23 32 35 36 0d 88 40 06  20 3a 0d 88 4a 13 20 43  |#256..@. :..J. C|
00011e60  4d 50 20 20 20 20 20 52  31 2c 20 23 30 0d 88 54  |MP     R1, #0..T|
00011e70  1c 20 42 4c 45 20 20 20  20 20 70 73 6d 5f 6e 6f  |. BLE     psm_no|
00011e80  5f 70 6c 6f 74 31 32 31  32 0d 88 5e 14 20 43 4d  |_plot1212..^. CM|
00011e90  50 20 20 20 20 20 52 32  2c 20 23 31 32 0d 88 68  |P     R2, #12..h|
00011ea0  1c 20 42 4c 45 20 20 20  20 20 70 73 6d 5f 6e 6f  |. BLE     psm_no|
00011eb0  5f 70 6c 6f 74 31 32 31  32 0d 88 72 17 20 43 4d  |_plot1212..r. CM|
00011ec0  50 20 20 20 20 20 52 31  2c 20 23 33 32 30 2d 38  |P     R1, #320-8|
00011ed0  0d 88 7c 1c 20 42 47 45  20 20 20 20 20 70 73 6d  |..|. BGE     psm|
00011ee0  5f 6e 6f 5f 70 6c 6f 74  31 32 31 32 0d 88 86 15  |_no_plot1212....|
00011ef0  20 43 4d 50 20 20 20 20  20 52 32 2c 20 23 32 35  | CMP     R2, #25|
00011f00  36 0d 88 90 1c 20 42 47  45 20 20 20 20 20 70 73  |6.... BGE     ps|
00011f10  6d 5f 6e 6f 5f 70 6c 6f  74 31 32 31 32 0d 88 9a  |m_no_plot1212...|
00011f20  19 20 42 20 20 20 20 20  20 20 70 73 6d 5f 70 6c  |. B       psm_pl|
00011f30  6f 74 31 32 31 32 0d 88  a4 15 20 2e 70 73 6d 5f  |ot1212.... .psm_|
00011f40  6e 6f 5f 70 6c 6f 74 31  32 31 32 0d 88 ae 1d 20  |no_plot1212.... |
00011f50  4c 44 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 30  |LDMFD   R13!,{R0|
00011f60  2d 52 31 32 2c 50 43 7d  0d 88 b8 12 20 2e 70 73  |-R12,PC}.... .ps|
00011f70  6d 5f 70 6c 6f 74 31 32  31 32 0d 88 c2 06 20 3a  |m_plot1212.... :|
00011f80  0d 88 cc 34 20 80 20 20  20 20 20 52 33 2c 52 31  |...4 .     R3,R1|
00011f90  2c 20 23 25 31 31 20 20  20 20 20 20 20 20 20 20  |, #%11          |
00011fa0  3b 20 63 61 6c 63 75 6c  61 74 65 20 78 20 6f 66  |; calculate x of|
00011fb0  66 73 65 74 0d 88 d6 32  20 4d 4f 56 20 20 20 20  |fset...2 MOV    |
00011fc0  20 52 30 2c 52 30 2c 20  4c 53 4c 20 23 32 20 20  | R0,R0, LSL #2  |
00011fd0  20 20 20 20 20 20 3b 20  72 65 61 6c 69 73 65 20  |      ; realise |
00011fe0  73 70 72 69 74 65 0d 88  e0 2e 20 41 44 44 20 20  |sprite.... ADD  |
00011ff0  20 20 20 52 30 2c 52 30  2c 20 52 33 20 20 20 20  |   R0,R0, R3    |
00012000  20 20 20 20 20 20 20 20  3b 20 61 64 64 20 6f 66  |        ; add of|
00012010  66 73 65 74 0d 88 ea 33  20 42 49 43 20 20 20 20  |fset...3 BIC    |
00012020  20 52 31 2c 52 31 2c 20  23 25 31 31 20 20 20 20  | R1,R1, #%11    |
00012030  20 20 20 20 20 20 3b 20  6d 61 6b 65 20 78 20 64  |      ; make x d|
00012040  69 76 20 62 79 20 34 0d  88 f4 06 20 3a 0d 88 fe  |iv by 4.... :...|
00012050  35 20 4d 4f 56 20 20 20  20 20 52 37 2c 20 23 78  |5 MOV     R7, #x|
00012060  5f 73 68 69 66 74 20 20  20 20 20 20 20 20 20 3b  |_shift         ;|
00012070  20 67 65 74 20 73 63 72  65 65 6e 20 73 68 69 66  | get screen shif|
00012080  74 73 0d 89 08 19 20 4d  4f 56 20 20 20 20 20 52  |ts.... MOV     R|
00012090  38 2c 20 23 79 5f 73 68  69 66 74 0d 89 12 40 20  |8, #y_shift...@ |
000120a0  4c 44 52 20 20 20 20 20  52 39 2c 20 73 70 72 69  |LDR     R9, spri|
000120b0  74 65 5f 61 64 72 5f 73  63 72 65 65 6e 73 74 6f  |te_adr_screensto|
000120c0  72 65 3b 20 67 65 74 20  73 63 72 65 65 6e 73 74  |re; get screenst|
000120d0  6f 72 65 20 61 64 64 72  65 73 73 0d 89 1c 14 20  |ore address.... |
000120e0  4c 44 52 20 20 20 20 20  52 39 2c 5b 52 39 5d 0d  |LDR     R9,[R9].|
000120f0  89 26 06 20 3a 0d 89 30  18 20 4d 4c 41 20 20 20  |.&. :..0. MLA   |
00012100  20 20 52 33 2c 52 37 2c  52 31 2c 52 39 0d 89 3a  |  R3,R7,R1,R9..:|
00012110  18 20 4d 4c 41 20 20 20  20 20 52 32 2c 52 38 2c  |. MLA     R2,R8,|
00012120  52 32 2c 52 33 0d 89 44  06 20 3a 0d 89 4e 3d 20  |R2,R3..D. :..N= |
00012130  4c 44 52 20 20 20 20 20  52 37 2c 20 61 64 72 5f  |LDR     R7, adr_|
00012140  73 70 72 69 74 65 73 31  20 20 20 20 20 3b 20 67  |sprites1     ; g|
00012150  65 74 20 73 74 61 72 74  20 61 64 64 72 65 73 73  |et start address|
00012160  20 6f 66 20 64 61 74 61  0d 89 58 43 20 4c 44 52  | of data..XC LDR|
00012170  20 20 20 20 20 52 38 2c  20 73 70 72 5f 73 69 7a  |     R8, spr_siz|
00012180  65 31 20 20 20 20 20 20  20 20 3b 20 67 65 74 20  |e1        ; get |
00012190  6c 65 6e 67 74 68 20 6f  66 20 64 61 74 61 20 66  |length of data f|
000121a0  6f 72 20 31 20 73 70 72  69 74 65 0d 89 62 3e 20  |or 1 sprite..b> |
000121b0  4d 4c 41 20 20 20 20 20  52 30 2c 52 38 2c 52 30  |MLA     R0,R8,R0|
000121c0  2c 52 37 20 20 20 20 20  20 20 20 20 20 3b 20 63  |,R7          ; c|
000121d0  61 6c 63 75 6c 61 74 65  20 70 6f 73 69 74 69 6f  |alculate positio|
000121e0  6e 20 6f 66 20 64 61 74  61 0d 89 6c 3e 20 41 44  |n of data..l> AD|
000121f0  44 20 20 20 20 20 52 31  2c 52 30 2c 52 38 2c 20  |D     R1,R0,R8, |
00012200  4c 53 52 20 23 31 20 20  20 20 20 3b 20 63 61 6c  |LSR #1     ; cal|
00012210  63 75 6c 61 74 65 20 70  6f 73 69 74 69 6f 6e 20  |culate position |
00012220  6f 66 20 6d 61 73 6b 0d  89 76 06 20 3a 0d 89 80  |of mask..v. :...|
00012230  13 20 4d 4f 56 20 20 20  20 20 52 33 2c 20 23 31  |. MOV     R3, #1|
00012240  0d 89 8a 1e 20 53 54 52  20 20 20 20 20 52 33 2c  |.... STR     R3,|
00012250  20 73 31 32 31 32 5f 63  6f 75 6e 74 65 72 0d 89  | s1212_counter..|
00012260  94 06 20 3a 0d 89 9e 17  20 2e 73 31 32 31 32 5f  |.. :.... .s1212_|
00012270  73 70 72 69 74 65 5f 6c  6f 6f 70 0d 89 a8 06 20  |sprite_loop.... |
00012280  3a 0d 89 b2 06 20 5d 0d  89 bc 10 20 e3 20 61 25  |:.... ].... . a%|
00012290  3d 31 20 b8 20 31 32 0d  89 c6 0f 20 5b 4f 50 54  |=1 . 12.... [OPT|
000122a0  20 70 61 73 73 25 0d 89  d0 06 20 3a 0d 89 da 37  | pass%.... :...7|
000122b0  20 4c 44 4d 49 41 20 20  20 52 32 2c 7b 52 33 2d  | LDMIA   R2,{R3-|
000122c0  52 35 7d 20 20 20 20 20  20 20 20 20 20 20 3b 20  |R5}           ; |
000122d0  67 65 74 20 73 6f 6d 65  20 62 61 63 6b 67 72 6f  |get some backgro|
000122e0  75 6e 64 0d 89 e4 31 20  4c 44 4d 49 41 20 20 20  |und...1 LDMIA   |
000122f0  52 31 21 2c 7b 52 38 2d  52 31 30 7d 20 20 20 20  |R1!,{R8-R10}    |
00012300  20 20 20 20 20 3b 20 67  65 74 20 73 6f 6d 65 20  |     ; get some |
00012310  6d 61 73 6b 0d 89 ee 35  20 80 20 20 20 20 20 52  |mask...5 .     R|
00012320  33 2c 52 33 2c 52 38 20  20 20 20 20 20 20 20 20  |3,R3,R8         |
00012330  20 20 20 20 3b 20 6d 61  73 6b 20 6f 66 66 20 62  |    ; mask off b|
00012340  61 63 6b 67 72 6f 75 6e  64 0d 89 f8 13 20 80 20  |ackground.... . |
00012350  20 20 20 20 52 34 2c 52  34 2c 52 39 0d 8a 02 14  |    R4,R4,R9....|
00012360  20 80 20 20 20 20 20 52  35 2c 52 35 2c 52 31 30  | .     R5,R5,R10|
00012370  0d 8a 0c 33 20 4c 44 4d  49 41 20 20 20 52 30 21  |...3 LDMIA   R0!|
00012380  2c 7b 52 38 2d 52 31 30  7d 20 20 20 20 20 20 20  |,{R8-R10}       |
00012390  20 20 3b 20 67 65 74 20  73 6f 6d 65 20 73 70 72  |  ; get some spr|
000123a0  69 74 65 0d 8a 16 3f 20  84 52 20 20 20 20 20 52  |ite...? .R     R|
000123b0  33 2c 52 33 2c 52 38 20  20 20 20 20 20 20 20 20  |3,R3,R8         |
000123c0  20 20 20 20 3b 20 6d 65  72 67 65 20 73 70 72 69  |    ; merge spri|
000123d0  74 65 20 77 69 74 68 20  62 61 63 6b 67 72 6f 75  |te with backgrou|
000123e0  6e 64 0d 8a 20 14 20 84  52 20 20 20 20 20 52 34  |nd.. . .R     R4|
000123f0  2c 52 34 2c 52 39 0d 8a  2a 15 20 84 52 20 20 20  |,R4,R9..*. .R   |
00012400  20 20 52 35 2c 52 35 2c  52 31 30 0d 8a 34 37 20  |  R5,R5,R10..47 |
00012410  53 54 4d 49 41 20 20 20  52 32 2c 7b 52 33 2d 52  |STMIA   R2,{R3-R|
00012420  35 7d 20 20 20 20 20 20  20 20 20 20 20 3b 20 73  |5}           ; s|
00012430  74 6f 72 65 20 6d 61 73  6b 65 64 20 73 70 72 69  |tore masked spri|
00012440  74 65 0d 8a 3e 06 20 3a  0d 8a 48 1c 20 53 55 42  |te..>. :..H. SUB|
00012450  20 20 20 20 20 52 32 2c  52 32 2c 20 23 79 5f 73  |     R2,R2, #y_s|
00012460  68 69 66 74 0d 8a 52 06  20 3a 0d 8a 5c 06 20 5d  |hift..R. :..\. ]|
00012470  0d 8a 66 06 20 ed 0d 8a  70 0f 20 5b 4f 50 54 20  |..f. ...p. [OPT |
00012480  70 61 73 73 25 0d 8a 7a  06 20 3a 0d 8a 84 1e 20  |pass%..z. :.... |
00012490  4c 44 52 20 20 20 20 20  52 33 2c 20 73 31 32 31  |LDR     R3, s121|
000124a0  32 5f 63 6f 75 6e 74 65  72 0d 8a 8e 16 20 41 44  |2_counter.... AD|
000124b0  44 20 20 20 20 20 52 33  2c 52 33 2c 20 23 31 0d  |D     R3,R3, #1.|
000124c0  8a 98 1e 20 53 54 52 20  20 20 20 20 52 33 2c 20  |... STR     R3, |
000124d0  73 31 32 31 32 5f 63 6f  75 6e 74 65 72 0d 8a a2  |s1212_counter...|
000124e0  13 20 43 4d 50 20 20 20  20 20 52 33 2c 20 23 31  |. CMP     R3, #1|
000124f0  0d 8a ac 1e 20 42 4c 45  20 20 20 20 20 73 31 32  |.... BLE     s12|
00012500  31 32 5f 73 70 72 69 74  65 5f 6c 6f 6f 70 0d 8a  |12_sprite_loop..|
00012510  b6 06 20 3a 0d 8a c0 1d  20 4c 44 4d 46 44 20 20  |.. :.... LDMFD  |
00012520  20 52 31 33 21 2c 7b 52  30 2d 52 31 32 2c 50 43  | R13!,{R0-R12,PC|
00012530  7d 0d 8a ca 06 20 3a 0d  8a d4 13 20 2e 73 31 32  |}.... :.... .s12|
00012540  31 32 5f 63 6f 75 6e 74  65 72 0d 8a de 0e 20 45  |12_counter.... E|
00012550  51 55 44 20 20 20 20 30  0d 8a e8 06 20 3a 0d 8a  |QUD    0.... :..|
00012560  f2 12 20 2e 61 64 72 5f  73 70 72 69 74 65 73 31  |.. .adr_sprites1|
00012570  0d 8a fc 37 20 45 51 55  44 20 20 20 20 73 70 72  |...7 EQUD    spr|
00012580  69 74 65 73 31 25 20 20  20 20 20 20 20 20 20 20  |ites1%          |
00012590  20 20 3b 20 61 64 64 72  65 73 73 20 6f 66 20 73  |  ; address of s|
000125a0  70 72 69 74 65 73 31 0d  8b 06 0f 20 2e 73 70 72  |prites1.... .spr|
000125b0  5f 73 69 7a 65 31 0d 8b  10 41 20 45 51 55 44 20  |_size1...A EQUD |
000125c0  20 20 20 38 2f 38 2a 31  32 2a 31 32 2a 32 20 20  |   8/8*12*12*2  |
000125d0  20 20 20 20 20 20 20 20  3b 20 6c 65 6e 67 74 68  |        ; length|
000125e0  20 6f 66 20 6f 6e 65 20  73 70 72 69 74 65 31 20  | of one sprite1 |
000125f0  2b 20 6d 61 73 6b 31 0d  8b 1a 06 20 3a 0d 8b 24  |+ mask1.... :..$|
00012600  06 20 3a 0d 8b 2e 06 20  3a 0d 8b 38 16 20 2e 70  |. :.... :..8. .p|
00012610  6c 6f 74 5f 73 70 72 69  74 65 5f 31 32 36 34 0d  |lot_sprite_1264.|
00012620  8b 42 06 20 3a 0d 8b 4c  1e 20 53 54 4d 46 44 20  |.B. :..L. STMFD |
00012630  20 20 52 31 33 21 2c 7b  52 30 2d 52 31 32 2c 52  |  R13!,{R0-R12,R|
00012640  31 34 7d 0d 8b 56 06 20  3a 0d 8b 60 31 20 3a 20  |14}..V. :..`1 : |
00012650  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00012660  20 20 20 20 20 20 20 20  20 20 20 3b 20 52 30 20  |           ; R0 |
00012670  73 70 72 69 74 65 20 6e  6f 2e 0d 8b 6a 2e 20 3a  |sprite no...j. :|
00012680  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00012690  20 20 20 20 20 20 20 20  20 20 20 20 3b 20 52 31  |            ; R1|
000126a0  20 78 2d 63 6f 6f 72 64  0d 8b 74 2e 20 3a 20 20  | x-coord..t. :  |
000126b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000126c0  20 20 20 20 20 20 20 20  20 20 3b 20 52 32 20 79  |          ; R2 y|
000126d0  2d 63 6f 6f 72 64 0d 8b  7e 06 20 3a 0d 8b 88 18  |-coord..~. :....|
000126e0  20 52 53 42 20 20 20 20  20 52 32 2c 52 32 2c 20  | RSB     R2,R2, |
000126f0  23 32 35 36 0d 8b 92 06  20 3a 0d 8b 9c 13 20 43  |#256.... :.... C|
00012700  4d 50 20 20 20 20 20 52  31 2c 20 23 30 0d 8b a6  |MP     R1, #0...|
00012710  1c 20 42 4c 45 20 20 20  20 20 70 73 6d 5f 6e 6f  |. BLE     psm_no|
00012720  5f 70 6c 6f 74 31 32 36  34 0d 8b b0 14 20 43 4d  |_plot1264.... CM|
00012730  50 20 20 20 20 20 52 32  2c 20 23 33 32 0d 8b ba  |P     R2, #32...|
00012740  1c 20 42 4c 45 20 20 20  20 20 70 73 6d 5f 6e 6f  |. BLE     psm_no|
00012750  5f 70 6c 6f 74 31 32 36  34 0d 8b c4 17 20 43 4d  |_plot1264.... CM|
00012760  50 20 20 20 20 20 52 31  2c 20 23 33 32 30 2d 38  |P     R1, #320-8|
00012770  0d 8b ce 1c 20 42 47 45  20 20 20 20 20 70 73 6d  |.... BGE     psm|
00012780  5f 6e 6f 5f 70 6c 6f 74  31 32 36 34 0d 8b d8 15  |_no_plot1264....|
00012790  20 43 4d 50 20 20 20 20  20 52 32 2c 20 23 32 35  | CMP     R2, #25|
000127a0  36 0d 8b e2 1c 20 42 47  45 20 20 20 20 20 70 73  |6.... BGE     ps|
000127b0  6d 5f 6e 6f 5f 70 6c 6f  74 31 32 36 34 0d 8b ec  |m_no_plot1264...|
000127c0  19 20 42 20 20 20 20 20  20 20 70 73 6d 5f 70 6c  |. B       psm_pl|
000127d0  6f 74 31 32 36 34 0d 8b  f6 15 20 2e 70 73 6d 5f  |ot1264.... .psm_|
000127e0  6e 6f 5f 70 6c 6f 74 31  32 36 34 0d 8c 00 1d 20  |no_plot1264.... |
000127f0  4c 44 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 30  |LDMFD   R13!,{R0|
00012800  2d 52 31 32 2c 50 43 7d  0d 8c 0a 12 20 2e 70 73  |-R12,PC}.... .ps|
00012810  6d 5f 70 6c 6f 74 31 32  36 34 0d 8c 14 06 20 3a  |m_plot1264.... :|
00012820  0d 8c 1e 34 20 80 20 20  20 20 20 52 33 2c 52 31  |...4 .     R3,R1|
00012830  2c 20 23 25 31 31 20 20  20 20 20 20 20 20 20 20  |, #%11          |
00012840  3b 20 63 61 6c 63 75 6c  61 74 65 20 78 20 6f 66  |; calculate x of|
00012850  66 73 65 74 0d 8c 28 32  20 4d 4f 56 20 20 20 20  |fset..(2 MOV    |
00012860  20 52 30 2c 52 30 2c 20  4c 53 4c 20 23 32 20 20  | R0,R0, LSL #2  |
00012870  20 20 20 20 20 20 3b 20  72 65 61 6c 69 73 65 20  |      ; realise |
00012880  73 70 72 69 74 65 0d 8c  32 2e 20 41 44 44 20 20  |sprite..2. ADD  |
00012890  20 20 20 52 30 2c 52 30  2c 20 52 33 20 20 20 20  |   R0,R0, R3    |
000128a0  20 20 20 20 20 20 20 20  3b 20 61 64 64 20 6f 66  |        ; add of|
000128b0  66 73 65 74 0d 8c 3c 33  20 42 49 43 20 20 20 20  |fset..<3 BIC    |
000128c0  20 52 31 2c 52 31 2c 20  23 25 31 31 20 20 20 20  | R1,R1, #%11    |
000128d0  20 20 20 20 20 20 3b 20  6d 61 6b 65 20 78 20 64  |      ; make x d|
000128e0  69 76 20 62 79 20 34 0d  8c 46 06 20 3a 0d 8c 50  |iv by 4..F. :..P|
000128f0  35 20 4d 4f 56 20 20 20  20 20 52 37 2c 20 23 78  |5 MOV     R7, #x|
00012900  5f 73 68 69 66 74 20 20  20 20 20 20 20 20 20 3b  |_shift         ;|
00012910  20 67 65 74 20 73 63 72  65 65 6e 20 73 68 69 66  | get screen shif|
00012920  74 73 0d 8c 5a 19 20 4d  4f 56 20 20 20 20 20 52  |ts..Z. MOV     R|
00012930  38 2c 20 23 79 5f 73 68  69 66 74 0d 8c 64 40 20  |8, #y_shift..d@ |
00012940  4c 44 52 20 20 20 20 20  52 39 2c 20 73 70 72 69  |LDR     R9, spri|
00012950  74 65 5f 61 64 72 5f 73  63 72 65 65 6e 73 74 6f  |te_adr_screensto|
00012960  72 65 3b 20 67 65 74 20  73 63 72 65 65 6e 73 74  |re; get screenst|
00012970  6f 72 65 20 61 64 64 72  65 73 73 0d 8c 6e 14 20  |ore address..n. |
00012980  4c 44 52 20 20 20 20 20  52 39 2c 5b 52 39 5d 0d  |LDR     R9,[R9].|
00012990  8c 78 06 20 3a 0d 8c 82  18 20 4d 4c 41 20 20 20  |.x. :.... MLA   |
000129a0  20 20 52 33 2c 52 37 2c  52 31 2c 52 39 0d 8c 8c  |  R3,R7,R1,R9...|
000129b0  18 20 4d 4c 41 20 20 20  20 20 52 32 2c 52 38 2c  |. MLA     R2,R8,|
000129c0  52 32 2c 52 33 0d 8c 96  06 20 3a 0d 8c a0 3d 20  |R2,R3.... :...= |
000129d0  4c 44 52 20 20 20 20 20  52 37 2c 20 61 64 72 5f  |LDR     R7, adr_|
000129e0  73 70 72 69 74 65 73 33  20 20 20 20 20 3b 20 67  |sprites3     ; g|
000129f0  65 74 20 73 74 61 72 74  20 61 64 64 72 65 73 73  |et start address|
00012a00  20 6f 66 20 64 61 74 61  0d 8c aa 43 20 4c 44 52  | of data...C LDR|
00012a10  20 20 20 20 20 52 38 2c  20 73 70 72 5f 73 69 7a  |     R8, spr_siz|
00012a20  65 33 20 20 20 20 20 20  20 20 3b 20 67 65 74 20  |e3        ; get |
00012a30  6c 65 6e 67 74 68 20 6f  66 20 64 61 74 61 20 66  |length of data f|
00012a40  6f 72 20 31 20 73 70 72  69 74 65 0d 8c b4 3e 20  |or 1 sprite...> |
00012a50  4d 4c 41 20 20 20 20 20  52 30 2c 52 38 2c 52 30  |MLA     R0,R8,R0|
00012a60  2c 52 37 20 20 20 20 20  20 20 20 20 20 3b 20 63  |,R7          ; c|
00012a70  61 6c 63 75 6c 61 74 65  20 70 6f 73 69 74 69 6f  |alculate positio|
00012a80  6e 20 6f 66 20 64 61 74  61 0d 8c be 3e 20 41 44  |n of data...> AD|
00012a90  44 20 20 20 20 20 52 31  2c 52 30 2c 52 38 2c 20  |D     R1,R0,R8, |
00012aa0  4c 53 52 20 23 31 20 20  20 20 20 3b 20 63 61 6c  |LSR #1     ; cal|
00012ab0  63 75 6c 61 74 65 20 70  6f 73 69 74 69 6f 6e 20  |culate position |
00012ac0  6f 66 20 6d 61 73 6b 0d  8c c8 06 20 3a 0d 8c d2  |of mask.... :...|
00012ad0  13 20 4d 4f 56 20 20 20  20 20 52 33 2c 20 23 31  |. MOV     R3, #1|
00012ae0  0d 8c dc 1e 20 53 54 52  20 20 20 20 20 52 33 2c  |.... STR     R3,|
00012af0  20 73 31 32 36 34 5f 63  6f 75 6e 74 65 72 0d 8c  | s1264_counter..|
00012b00  e6 06 20 3a 0d 8c f0 17  20 2e 73 31 32 36 34 5f  |.. :.... .s1264_|
00012b10  73 70 72 69 74 65 5f 6c  6f 6f 70 0d 8c fa 06 20  |sprite_loop.... |
00012b20  3a 0d 8d 04 06 20 5d 0d  8d 0e 0f 20 e3 20 61 25  |:.... ].... . a%|
00012b30  3d 31 20 b8 20 38 0d 8d  18 0f 20 5b 4f 50 54 20  |=1 . 8.... [OPT |
00012b40  70 61 73 73 25 0d 8d 22  06 20 3a 0d 8d 2c 37 20  |pass%..". :..,7 |
00012b50  4c 44 4d 49 41 20 20 20  52 32 2c 7b 52 33 2d 52  |LDMIA   R2,{R3-R|
00012b60  35 7d 20 20 20 20 20 20  20 20 20 20 20 3b 20 67  |5}           ; g|
00012b70  65 74 20 73 6f 6d 65 20  62 61 63 6b 67 72 6f 75  |et some backgrou|
00012b80  6e 64 0d 8d 36 31 20 4c  44 4d 49 41 20 20 20 52  |nd..61 LDMIA   R|
00012b90  31 21 2c 7b 52 38 2d 52  31 30 7d 20 20 20 20 20  |1!,{R8-R10}     |
00012ba0  20 20 20 20 3b 20 67 65  74 20 73 6f 6d 65 20 6d  |    ; get some m|
00012bb0  61 73 6b 0d 8d 40 35 20  80 20 20 20 20 20 52 33  |ask..@5 .     R3|
00012bc0  2c 52 33 2c 52 38 20 20  20 20 20 20 20 20 20 20  |,R3,R8          |
00012bd0  20 20 20 3b 20 6d 61 73  6b 20 6f 66 66 20 62 61  |   ; mask off ba|
00012be0  63 6b 67 72 6f 75 6e 64  0d 8d 4a 13 20 80 20 20  |ckground..J. .  |
00012bf0  20 20 20 52 34 2c 52 34  2c 52 39 0d 8d 54 14 20  |   R4,R4,R9..T. |
00012c00  80 20 20 20 20 20 52 35  2c 52 35 2c 52 31 30 0d  |.     R5,R5,R10.|
00012c10  8d 5e 33 20 4c 44 4d 49  41 20 20 20 52 30 21 2c  |.^3 LDMIA   R0!,|
00012c20  7b 52 38 2d 52 31 30 7d  20 20 20 20 20 20 20 20  |{R8-R10}        |
00012c30  20 3b 20 67 65 74 20 73  6f 6d 65 20 73 70 72 69  | ; get some spri|
00012c40  74 65 0d 8d 68 3f 20 84  52 20 20 20 20 20 52 33  |te..h? .R     R3|
00012c50  2c 52 33 2c 52 38 20 20  20 20 20 20 20 20 20 20  |,R3,R8          |
00012c60  20 20 20 3b 20 6d 65 72  67 65 20 73 70 72 69 74  |   ; merge sprit|
00012c70  65 20 77 69 74 68 20 62  61 63 6b 67 72 6f 75 6e  |e with backgroun|
00012c80  64 0d 8d 72 14 20 84 52  20 20 20 20 20 52 34 2c  |d..r. .R     R4,|
00012c90  52 34 2c 52 39 0d 8d 7c  15 20 84 52 20 20 20 20  |R4,R9..|. .R    |
00012ca0  20 52 35 2c 52 35 2c 52  31 30 0d 8d 86 37 20 53  | R5,R5,R10...7 S|
00012cb0  54 4d 49 41 20 20 20 52  32 2c 7b 52 33 2d 52 35  |TMIA   R2,{R3-R5|
00012cc0  7d 20 20 20 20 20 20 20  20 20 20 20 3b 20 73 74  |}           ; st|
00012cd0  6f 72 65 20 6d 61 73 6b  65 64 20 73 70 72 69 74  |ore masked sprit|
00012ce0  65 0d 8d 90 06 20 3a 0d  8d 9a 1c 20 53 55 42 20  |e.... :.... SUB |
00012cf0  20 20 20 20 52 32 2c 52  32 2c 20 23 79 5f 73 68  |    R2,R2, #y_sh|
00012d00  69 66 74 0d 8d a4 06 20  3a 0d 8d ae 06 20 5d 0d  |ift.... :.... ].|
00012d10  8d b8 06 20 ed 0d 8d c2  0f 20 5b 4f 50 54 20 70  |... ..... [OPT p|
00012d20  61 73 73 25 0d 8d cc 06  20 3a 0d 8d d6 1e 20 4c  |ass%.... :.... L|
00012d30  44 52 20 20 20 20 20 52  33 2c 20 73 31 32 36 34  |DR     R3, s1264|
00012d40  5f 63 6f 75 6e 74 65 72  0d 8d e0 16 20 41 44 44  |_counter.... ADD|
00012d50  20 20 20 20 20 52 33 2c  52 33 2c 20 23 31 0d 8d  |     R3,R3, #1..|
00012d60  ea 1e 20 53 54 52 20 20  20 20 20 52 33 2c 20 73  |.. STR     R3, s|
00012d70  31 32 36 34 5f 63 6f 75  6e 74 65 72 0d 8d f4 13  |1264_counter....|
00012d80  20 43 4d 50 20 20 20 20  20 52 33 2c 20 23 38 0d  | CMP     R3, #8.|
00012d90  8d fe 1e 20 42 4c 45 20  20 20 20 20 73 31 32 36  |... BLE     s126|
00012da0  34 5f 73 70 72 69 74 65  5f 6c 6f 6f 70 0d 8e 08  |4_sprite_loop...|
00012db0  06 20 3a 0d 8e 12 1d 20  4c 44 4d 46 44 20 20 20  |. :.... LDMFD   |
00012dc0  52 31 33 21 2c 7b 52 30  2d 52 31 32 2c 50 43 7d  |R13!,{R0-R12,PC}|
00012dd0  0d 8e 1c 06 20 3a 0d 8e  26 13 20 2e 73 31 32 36  |.... :..&. .s126|
00012de0  34 5f 63 6f 75 6e 74 65  72 0d 8e 30 0e 20 45 51  |4_counter..0. EQ|
00012df0  55 44 20 20 20 20 30 0d  8e 3a 06 20 3a 0d 8e 44  |UD    0..:. :..D|
00012e00  12 20 2e 61 64 72 5f 73  70 72 69 74 65 73 33 0d  |. .adr_sprites3.|
00012e10  8e 4e 37 20 45 51 55 44  20 20 20 20 73 70 72 69  |.N7 EQUD    spri|
00012e20  74 65 73 33 25 20 20 20  20 20 20 20 20 20 20 20  |tes3%           |
00012e30  20 3b 20 61 64 64 72 65  73 73 20 6f 66 20 73 70  | ; address of sp|
00012e40  72 69 74 65 73 31 0d 8e  58 0f 20 2e 73 70 72 5f  |rites1..X. .spr_|
00012e50  73 69 7a 65 33 0d 8e 62  41 20 45 51 55 44 20 20  |size3..bA EQUD  |
00012e60  20 20 38 2f 38 2a 31 32  2a 36 34 2a 32 20 20 20  |  8/8*12*64*2   |
00012e70  20 20 20 20 20 20 20 3b  20 6c 65 6e 67 74 68 20  |       ; length |
00012e80  6f 66 20 6f 6e 65 20 73  70 72 69 74 65 31 20 2b  |of one sprite1 +|
00012e90  20 6d 61 73 6b 31 0d 8e  6c 1c 20 2e 73 70 72 69  | mask1..l. .spri|
00012ea0  74 65 5f 61 64 72 5f 73  63 72 65 65 6e 73 74 6f  |te_adr_screensto|
00012eb0  72 65 0d 8e 76 18 20 45  51 55 44 20 20 20 20 73  |re..v. EQUD    s|
00012ec0  63 72 65 65 6e 73 74 6f  72 65 0d 8e 80 06 20 3a  |creenstore.... :|
00012ed0  0d 8e 8a 06 20 3a 0d 8e  94 06 20 3a 0d 8e 9e 16  |.... :.... :....|
00012ee0  20 2e 70 6c 6f 74 5f 73  70 72 69 74 65 5f 32 30  | .plot_sprite_20|
00012ef0  31 36 0d 8e a8 06 20 3a  0d 8e b2 1e 20 53 54 4d  |16.... :.... STM|
00012f00  46 44 20 20 20 52 31 33  21 2c 7b 52 30 2d 52 31  |FD   R13!,{R0-R1|
00012f10  32 2c 52 31 34 7d 0d 8e  bc 06 20 3a 0d 8e c6 31  |2,R14}.... :...1|
00012f20  20 3a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  | :              |
00012f30  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3b 20  |              ; |
00012f40  52 30 20 73 70 72 69 74  65 20 6e 6f 2e 0d 8e d0  |R0 sprite no....|
00012f50  2e 20 3a 20 20 20 20 20  20 20 20 20 20 20 20 20  |. :             |
00012f60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |               ;|
00012f70  20 52 31 20 78 2d 63 6f  6f 72 64 0d 8e da 2e 20  | R1 x-coord.... |
00012f80  3a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |:               |
00012f90  20 20 20 20 20 20 20 20  20 20 20 20 20 3b 20 52  |             ; R|
00012fa0  32 20 79 2d 63 6f 6f 72  64 0d 8e e4 06 20 3a 0d  |2 y-coord.... :.|
00012fb0  8e ee 18 20 52 53 42 20  20 20 20 20 52 32 2c 52  |... RSB     R2,R|
00012fc0  32 2c 20 23 32 35 36 0d  8e f8 06 20 3a 0d 8f 02  |2, #256.... :...|
00012fd0  13 20 43 4d 50 20 20 20  20 20 52 31 2c 20 23 30  |. CMP     R1, #0|
00012fe0  0d 8f 0c 1c 20 42 4c 45  20 20 20 20 20 70 73 6d  |.... BLE     psm|
00012ff0  5f 6e 6f 5f 70 6c 6f 74  32 30 31 36 0d 8f 16 14  |_no_plot2016....|
00013000  20 43 4d 50 20 20 20 20  20 52 32 2c 20 23 31 36  | CMP     R2, #16|
00013010  0d 8f 20 1c 20 42 4c 45  20 20 20 20 20 70 73 6d  |.. . BLE     psm|
00013020  5f 6e 6f 5f 70 6c 6f 74  32 30 31 36 0d 8f 2a 18  |_no_plot2016..*.|
00013030  20 43 4d 50 20 20 20 20  20 52 31 2c 20 23 33 32  | CMP     R1, #32|
00013040  30 2d 31 36 0d 8f 34 1c  20 42 47 45 20 20 20 20  |0-16..4. BGE    |
00013050  20 70 73 6d 5f 6e 6f 5f  70 6c 6f 74 32 30 31 36  | psm_no_plot2016|
00013060  0d 8f 3e 15 20 43 4d 50  20 20 20 20 20 52 32 2c  |..>. CMP     R2,|
00013070  20 23 32 35 36 0d 8f 48  1c 20 42 47 45 20 20 20  | #256..H. BGE   |
00013080  20 20 70 73 6d 5f 6e 6f  5f 70 6c 6f 74 32 30 31  |  psm_no_plot201|
00013090  36 0d 8f 52 19 20 42 20  20 20 20 20 20 20 70 73  |6..R. B       ps|
000130a0  6d 5f 70 6c 6f 74 32 30  31 36 0d 8f 5c 15 20 2e  |m_plot2016..\. .|
000130b0  70 73 6d 5f 6e 6f 5f 70  6c 6f 74 32 30 31 36 0d  |psm_no_plot2016.|
000130c0  8f 66 1d 20 4c 44 4d 46  44 20 20 20 52 31 33 21  |.f. LDMFD   R13!|
000130d0  2c 7b 52 30 2d 52 31 32  2c 50 43 7d 0d 8f 70 12  |,{R0-R12,PC}..p.|
000130e0  20 2e 70 73 6d 5f 70 6c  6f 74 32 30 31 36 0d 8f  | .psm_plot2016..|
000130f0  7a 06 20 3a 0d 8f 84 34  20 80 20 20 20 20 20 52  |z. :...4 .     R|
00013100  33 2c 52 31 2c 20 23 25  31 31 20 20 20 20 20 20  |3,R1, #%11      |
00013110  20 20 20 20 3b 20 63 61  6c 63 75 6c 61 74 65 20  |    ; calculate |
00013120  78 20 6f 66 66 73 65 74  0d 8f 8e 32 20 4d 4f 56  |x offset...2 MOV|
00013130  20 20 20 20 20 52 30 2c  52 30 2c 20 4c 53 4c 20  |     R0,R0, LSL |
00013140  23 32 20 20 20 20 20 20  20 20 3b 20 72 65 61 6c  |#2        ; real|
00013150  69 73 65 20 73 70 72 69  74 65 0d 8f 98 2e 20 41  |ise sprite.... A|
00013160  44 44 20 20 20 20 20 52  30 2c 52 30 2c 20 52 33  |DD     R0,R0, R3|
00013170  20 20 20 20 20 20 20 20  20 20 20 20 3b 20 61 64  |            ; ad|
00013180  64 20 6f 66 66 73 65 74  0d 8f a2 33 20 42 49 43  |d offset...3 BIC|
00013190  20 20 20 20 20 52 31 2c  52 31 2c 20 23 25 31 31  |     R1,R1, #%11|
000131a0  20 20 20 20 20 20 20 20  20 20 3b 20 6d 61 6b 65  |          ; make|
000131b0  20 78 20 64 69 76 20 62  79 20 34 0d 8f ac 06 20  | x div by 4.... |
000131c0  3a 0d 8f b6 35 20 4d 4f  56 20 20 20 20 20 52 37  |:...5 MOV     R7|
000131d0  2c 20 23 78 5f 73 68 69  66 74 20 20 20 20 20 20  |, #x_shift      |
000131e0  20 20 20 3b 20 67 65 74  20 73 63 72 65 65 6e 20  |   ; get screen |
000131f0  73 68 69 66 74 73 0d 8f  c0 19 20 4d 4f 56 20 20  |shifts.... MOV  |
00013200  20 20 20 52 38 2c 20 23  79 5f 73 68 69 66 74 0d  |   R8, #y_shift.|
00013210  8f ca 40 20 4c 44 52 20  20 20 20 20 52 39 2c 20  |..@ LDR     R9, |
00013220  73 70 72 69 74 65 5f 61  64 72 5f 73 63 72 65 65  |sprite_adr_scree|
00013230  6e 73 74 6f 72 65 3b 20  67 65 74 20 73 63 72 65  |nstore; get scre|
00013240  65 6e 73 74 6f 72 65 20  61 64 64 72 65 73 73 0d  |enstore address.|
00013250  8f d4 14 20 4c 44 52 20  20 20 20 20 52 39 2c 5b  |... LDR     R9,[|
00013260  52 39 5d 0d 8f de 06 20  3a 0d 8f e8 18 20 4d 4c  |R9].... :.... ML|
00013270  41 20 20 20 20 20 52 33  2c 52 37 2c 52 31 2c 52  |A     R3,R7,R1,R|
00013280  39 0d 8f f2 18 20 4d 4c  41 20 20 20 20 20 52 32  |9.... MLA     R2|
00013290  2c 52 38 2c 52 32 2c 52  33 0d 8f fc 06 20 3a 0d  |,R8,R2,R3.... :.|
000132a0  90 06 3d 20 4c 44 52 20  20 20 20 20 52 37 2c 20  |..= LDR     R7, |
000132b0  61 64 72 5f 73 70 72 69  74 65 73 32 20 20 20 20  |adr_sprites2    |
000132c0  20 3b 20 67 65 74 20 73  74 61 72 74 20 61 64 64  | ; get start add|
000132d0  72 65 73 73 20 6f 66 20  64 61 74 61 0d 90 10 43  |ress of data...C|
000132e0  20 4c 44 52 20 20 20 20  20 52 38 2c 20 73 70 72  | LDR     R8, spr|
000132f0  5f 73 69 7a 65 32 20 20  20 20 20 20 20 20 3b 20  |_size2        ; |
00013300  67 65 74 20 6c 65 6e 67  74 68 20 6f 66 20 64 61  |get length of da|
00013310  74 61 20 66 6f 72 20 31  20 73 70 72 69 74 65 0d  |ta for 1 sprite.|
00013320  90 1a 3e 20 4d 4c 41 20  20 20 20 20 52 30 2c 52  |..> MLA     R0,R|
00013330  38 2c 52 30 2c 52 37 20  20 20 20 20 20 20 20 20  |8,R0,R7         |
00013340  20 3b 20 63 61 6c 63 75  6c 61 74 65 20 70 6f 73  | ; calculate pos|
00013350  69 74 69 6f 6e 20 6f 66  20 64 61 74 61 0d 90 24  |ition of data..$|
00013360  3e 20 41 44 44 20 20 20  20 20 52 31 2c 52 30 2c  |> ADD     R1,R0,|
00013370  52 38 2c 20 4c 53 52 20  23 31 20 20 20 20 20 3b  |R8, LSR #1     ;|
00013380  20 63 61 6c 63 75 6c 61  74 65 20 70 6f 73 69 74  | calculate posit|
00013390  69 6f 6e 20 6f 66 20 6d  61 73 6b 0d 90 2e 06 20  |ion of mask.... |
000133a0  3a 0d 90 38 13 20 4d 4f  56 20 20 20 20 20 52 33  |:..8. MOV     R3|
000133b0  2c 20 23 31 0d 90 42 1e  20 53 54 52 20 20 20 20  |, #1..B. STR    |
000133c0  20 52 33 2c 20 73 32 30  31 36 5f 63 6f 75 6e 74  | R3, s2016_count|
000133d0  65 72 0d 90 4c 06 20 3a  0d 90 56 17 20 2e 73 32  |er..L. :..V. .s2|
000133e0  30 31 36 5f 73 70 72 69  74 65 5f 6c 6f 6f 70 0d  |016_sprite_loop.|
000133f0  90 60 06 20 3a 0d 90 6a  06 20 5d 0d 90 74 0f 20  |.`. :..j. ]..t. |
00013400  e3 20 61 25 3d 31 20 b8  20 34 0d 90 7e 0f 20 5b  |. a%=1 . 4..~. [|
00013410  4f 50 54 20 70 61 73 73  25 0d 90 88 06 20 3a 0d  |OPT pass%.... :.|
00013420  90 92 37 20 4c 44 4d 49  41 20 20 20 52 32 2c 7b  |..7 LDMIA   R2,{|
00013430  52 33 2d 52 37 7d 20 20  20 20 20 20 20 20 20 20  |R3-R7}          |
00013440  20 3b 20 67 65 74 20 73  6f 6d 65 20 62 61 63 6b  | ; get some back|
00013450  67 72 6f 75 6e 64 0d 90  9c 31 20 4c 44 4d 49 41  |ground...1 LDMIA|
00013460  20 20 20 52 31 21 2c 7b  52 38 2d 52 31 32 7d 20  |   R1!,{R8-R12} |
00013470  20 20 20 20 20 20 20 20  3b 20 67 65 74 20 73 6f  |        ; get so|
00013480  6d 65 20 6d 61 73 6b 0d  90 a6 35 20 80 20 20 20  |me mask...5 .   |
00013490  20 20 52 33 2c 52 33 2c  52 38 20 20 20 20 20 20  |  R3,R3,R8      |
000134a0  20 20 20 20 20 20 20 3b  20 6d 61 73 6b 20 6f 66  |       ; mask of|
000134b0  66 20 62 61 63 6b 67 72  6f 75 6e 64 0d 90 b0 13  |f background....|
000134c0  20 80 20 20 20 20 20 52  34 2c 52 34 2c 52 39 0d  | .     R4,R4,R9.|
000134d0  90 ba 14 20 80 20 20 20  20 20 52 35 2c 52 35 2c  |... .     R5,R5,|
000134e0  52 31 30 0d 90 c4 14 20  80 20 20 20 20 20 52 36  |R10.... .     R6|
000134f0  2c 52 36 2c 52 31 31 0d  90 ce 14 20 80 20 20 20  |,R6,R11.... .   |
00013500  20 20 52 37 2c 52 37 2c  52 31 32 0d 90 d8 33 20  |  R7,R7,R12...3 |
00013510  4c 44 4d 49 41 20 20 20  52 30 21 2c 7b 52 38 2d  |LDMIA   R0!,{R8-|
00013520  52 31 32 7d 20 20 20 20  20 20 20 20 20 3b 20 67  |R12}         ; g|
00013530  65 74 20 73 6f 6d 65 20  73 70 72 69 74 65 0d 90  |et some sprite..|
00013540  e2 3f 20 84 52 20 20 20  20 20 52 33 2c 52 33 2c  |.? .R     R3,R3,|
00013550  52 38 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |R8             ;|
00013560  20 6d 65 72 67 65 20 73  70 72 69 74 65 20 77 69  | merge sprite wi|
00013570  74 68 20 62 61 63 6b 67  72 6f 75 6e 64 0d 90 ec  |th background...|
00013580  14 20 84 52 20 20 20 20  20 52 34 2c 52 34 2c 52  |. .R     R4,R4,R|
00013590  39 0d 90 f6 15 20 84 52  20 20 20 20 20 52 35 2c  |9.... .R     R5,|
000135a0  52 35 2c 52 31 30 0d 91  00 15 20 84 52 20 20 20  |R5,R10.... .R   |
000135b0  20 20 52 36 2c 52 36 2c  52 31 31 0d 91 0a 15 20  |  R6,R6,R11.... |
000135c0  84 52 20 20 20 20 20 52  37 2c 52 37 2c 52 31 32  |.R     R7,R7,R12|
000135d0  0d 91 14 37 20 53 54 4d  49 41 20 20 20 52 32 2c  |...7 STMIA   R2,|
000135e0  7b 52 33 2d 52 37 7d 20  20 20 20 20 20 20 20 20  |{R3-R7}         |
000135f0  20 20 3b 20 73 74 6f 72  65 20 6d 61 73 6b 65 64  |  ; store masked|
00013600  20 73 70 72 69 74 65 0d  91 1e 06 20 3a 0d 91 28  | sprite.... :..(|
00013610  1c 20 53 55 42 20 20 20  20 20 52 32 2c 52 32 2c  |. SUB     R2,R2,|
00013620  20 23 79 5f 73 68 69 66  74 0d 91 32 06 20 3a 0d  | #y_shift..2. :.|
00013630  91 3c 06 20 5d 0d 91 46  06 20 ed 0d 91 50 0f 20  |.<. ]..F. ...P. |
00013640  5b 4f 50 54 20 70 61 73  73 25 0d 91 5a 06 20 3a  |[OPT pass%..Z. :|
00013650  0d 91 64 1e 20 4c 44 52  20 20 20 20 20 52 33 2c  |..d. LDR     R3,|
00013660  20 73 32 30 31 36 5f 63  6f 75 6e 74 65 72 0d 91  | s2016_counter..|
00013670  6e 16 20 41 44 44 20 20  20 20 20 52 33 2c 52 33  |n. ADD     R3,R3|
00013680  2c 20 23 31 0d 91 78 1e  20 53 54 52 20 20 20 20  |, #1..x. STR    |
00013690  20 52 33 2c 20 73 32 30  31 36 5f 63 6f 75 6e 74  | R3, s2016_count|
000136a0  65 72 0d 91 82 13 20 43  4d 50 20 20 20 20 20 52  |er.... CMP     R|
000136b0  33 2c 20 23 34 0d 91 8c  1e 20 42 4c 45 20 20 20  |3, #4.... BLE   |
000136c0  20 20 73 32 30 31 36 5f  73 70 72 69 74 65 5f 6c  |  s2016_sprite_l|
000136d0  6f 6f 70 0d 91 96 06 20  3a 0d 91 a0 1d 20 4c 44  |oop.... :.... LD|
000136e0  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 30 2d 52  |MFD   R13!,{R0-R|
000136f0  31 32 2c 50 43 7d 0d 91  aa 06 20 3a 0d 91 b4 13  |12,PC}.... :....|
00013700  20 2e 73 32 30 31 36 5f  63 6f 75 6e 74 65 72 0d  | .s2016_counter.|
00013710  91 be 0e 20 45 51 55 44  20 20 20 20 30 0d 91 c8  |... EQUD    0...|
00013720  06 20 3a 0d 91 d2 12 20  2e 61 64 72 5f 73 70 72  |. :.... .adr_spr|
00013730  69 74 65 73 32 0d 91 dc  37 20 45 51 55 44 20 20  |ites2...7 EQUD  |
00013740  20 20 73 70 72 69 74 65  73 32 25 20 20 20 20 20  |  sprites2%     |
00013750  20 20 20 20 20 20 20 3b  20 61 64 64 72 65 73 73  |       ; address|
00013760  20 6f 66 20 73 70 72 69  74 65 73 32 0d 91 e6 0f  | of sprites2....|
00013770  20 2e 73 70 72 5f 73 69  7a 65 32 0d 91 f0 41 20  | .spr_size2...A |
00013780  45 51 55 44 20 20 20 20  38 2f 38 2a 31 36 2a 32  |EQUD    8/8*16*2|
00013790  30 2a 32 20 20 20 20 20  20 20 20 20 20 3b 20 6c  |0*2          ; l|
000137a0  65 6e 67 74 68 20 6f 66  20 6f 6e 65 20 73 70 72  |ength of one spr|
000137b0  69 74 65 32 20 2b 20 6d  61 73 6b 32 0d 91 fa 06  |ite2 + mask2....|
000137c0  20 3a 0d 92 04 06 20 3a  0d 92 0e 06 20 3a 0d 92  | :.... :.... :..|
000137d0  18 16 20 2e 70 6c 6f 74  5f 73 70 72 69 74 65 5f  |.. .plot_sprite_|
000137e0  30 38 30 34 0d 92 22 06  20 3a 0d 92 2c 1e 20 53  |0804..". :..,. S|
000137f0  54 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 30 2d  |TMFD   R13!,{R0-|
00013800  52 31 32 2c 52 31 34 7d  0d 92 36 06 20 3a 0d 92  |R12,R14}..6. :..|
00013810  40 31 20 3a 20 20 20 20  20 20 20 20 20 20 20 20  |@1 :            |
00013820  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00013830  3b 20 52 30 20 73 70 72  69 74 65 20 6e 6f 2e 0d  |; R0 sprite no..|
00013840  92 4a 2e 20 3a 20 20 20  20 20 20 20 20 20 20 20  |.J. :           |
00013850  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00013860  20 3b 20 52 31 20 78 2d  63 6f 6f 72 64 0d 92 54  | ; R1 x-coord..T|
00013870  2e 20 3a 20 20 20 20 20  20 20 20 20 20 20 20 20  |. :             |
00013880  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |               ;|
00013890  20 52 32 20 79 2d 63 6f  6f 72 64 0d 92 5e 06 20  | R2 y-coord..^. |
000138a0  3a 0d 92 68 18 20 52 53  42 20 20 20 20 20 52 32  |:..h. RSB     R2|
000138b0  2c 52 32 2c 20 23 32 35  36 0d 92 72 06 20 3a 0d  |,R2, #256..r. :.|
000138c0  92 7c 13 20 43 4d 50 20  20 20 20 20 52 31 2c 20  |.|. CMP     R1, |
000138d0  23 30 0d 92 86 1c 20 42  4c 45 20 20 20 20 20 70  |#0.... BLE     p|
000138e0  73 6d 5f 6e 6f 5f 70 6c  6f 74 30 38 30 34 0d 92  |sm_no_plot0804..|
000138f0  90 13 20 43 4d 50 20 20  20 20 20 52 32 2c 20 23  |.. CMP     R2, #|
00013900  34 0d 92 9a 1c 20 42 4c  45 20 20 20 20 20 70 73  |4.... BLE     ps|
00013910  6d 5f 6e 6f 5f 70 6c 6f  74 30 38 30 34 0d 92 a4  |m_no_plot0804...|
00013920  17 20 43 4d 50 20 20 20  20 20 52 31 2c 20 23 33  |. CMP     R1, #3|
00013930  32 30 2d 34 0d 92 ae 1c  20 42 47 45 20 20 20 20  |20-4.... BGE    |
00013940  20 70 73 6d 5f 6e 6f 5f  70 6c 6f 74 30 38 30 34  | psm_no_plot0804|
00013950  0d 92 b8 15 20 43 4d 50  20 20 20 20 20 52 32 2c  |.... CMP     R2,|
00013960  20 23 32 35 36 0d 92 c2  1c 20 42 47 45 20 20 20  | #256.... BGE   |
00013970  20 20 70 73 6d 5f 6e 6f  5f 70 6c 6f 74 30 38 30  |  psm_no_plot080|
00013980  34 0d 92 cc 19 20 42 20  20 20 20 20 20 20 70 73  |4.... B       ps|
00013990  6d 5f 70 6c 6f 74 30 38  30 34 0d 92 d6 15 20 2e  |m_plot0804.... .|
000139a0  70 73 6d 5f 6e 6f 5f 70  6c 6f 74 30 38 30 34 0d  |psm_no_plot0804.|
000139b0  92 e0 1d 20 4c 44 4d 46  44 20 20 20 52 31 33 21  |... LDMFD   R13!|
000139c0  2c 7b 52 30 2d 52 31 32  2c 50 43 7d 0d 92 ea 12  |,{R0-R12,PC}....|
000139d0  20 2e 70 73 6d 5f 70 6c  6f 74 30 38 30 34 0d 92  | .psm_plot0804..|
000139e0  f4 06 20 3a 0d 92 fe 34  20 80 20 20 20 20 20 52  |.. :...4 .     R|
000139f0  33 2c 52 31 2c 20 23 25  31 31 20 20 20 20 20 20  |3,R1, #%11      |
00013a00  20 20 20 20 3b 20 63 61  6c 63 75 6c 61 74 65 20  |    ; calculate |
00013a10  78 20 6f 66 66 73 65 74  0d 93 08 32 20 4d 4f 56  |x offset...2 MOV|
00013a20  20 20 20 20 20 52 30 2c  52 30 2c 20 4c 53 4c 20  |     R0,R0, LSL |
00013a30  23 32 20 20 20 20 20 20  20 20 3b 20 72 65 61 6c  |#2        ; real|
00013a40  69 73 65 20 73 70 72 69  74 65 0d 93 12 2e 20 41  |ise sprite.... A|
00013a50  44 44 20 20 20 20 20 52  30 2c 52 30 2c 20 52 33  |DD     R0,R0, R3|
00013a60  20 20 20 20 20 20 20 20  20 20 20 20 3b 20 61 64  |            ; ad|
00013a70  64 20 6f 66 66 73 65 74  0d 93 1c 33 20 42 49 43  |d offset...3 BIC|
00013a80  20 20 20 20 20 52 31 2c  52 31 2c 20 23 25 31 31  |     R1,R1, #%11|
00013a90  20 20 20 20 20 20 20 20  20 20 3b 20 6d 61 6b 65  |          ; make|
00013aa0  20 78 20 64 69 76 20 62  79 20 34 0d 93 26 06 20  | x div by 4..&. |
00013ab0  3a 0d 93 30 35 20 4d 4f  56 20 20 20 20 20 52 37  |:..05 MOV     R7|
00013ac0  2c 20 23 78 5f 73 68 69  66 74 20 20 20 20 20 20  |, #x_shift      |
00013ad0  20 20 20 3b 20 67 65 74  20 73 63 72 65 65 6e 20  |   ; get screen |
00013ae0  73 68 69 66 74 73 0d 93  3a 19 20 4d 4f 56 20 20  |shifts..:. MOV  |
00013af0  20 20 20 52 38 2c 20 23  79 5f 73 68 69 66 74 0d  |   R8, #y_shift.|
00013b00  93 44 40 20 4c 44 52 20  20 20 20 20 52 39 2c 20  |.D@ LDR     R9, |
00013b10  73 70 72 69 74 65 5f 61  64 72 5f 73 63 72 65 65  |sprite_adr_scree|
00013b20  6e 73 74 6f 72 65 3b 20  67 65 74 20 73 63 72 65  |nstore; get scre|
00013b30  65 6e 73 74 6f 72 65 20  61 64 64 72 65 73 73 0d  |enstore address.|
00013b40  93 4e 14 20 4c 44 52 20  20 20 20 20 52 39 2c 5b  |.N. LDR     R9,[|
00013b50  52 39 5d 0d 93 58 06 20  3a 0d 93 62 18 20 4d 4c  |R9]..X. :..b. ML|
00013b60  41 20 20 20 20 20 52 33  2c 52 37 2c 52 31 2c 52  |A     R3,R7,R1,R|
00013b70  39 0d 93 6c 18 20 4d 4c  41 20 20 20 20 20 52 32  |9..l. MLA     R2|
00013b80  2c 52 38 2c 52 32 2c 52  33 0d 93 76 06 20 3a 0d  |,R8,R2,R3..v. :.|
00013b90  93 80 3d 20 4c 44 52 20  20 20 20 20 52 37 2c 20  |..= LDR     R7, |
00013ba0  61 64 72 5f 73 70 72 69  74 65 73 34 20 20 20 20  |adr_sprites4    |
00013bb0  20 3b 20 67 65 74 20 73  74 61 72 74 20 61 64 64  | ; get start add|
00013bc0  72 65 73 73 20 6f 66 20  64 61 74 61 0d 93 8a 43  |ress of data...C|
00013bd0  20 4c 44 52 20 20 20 20  20 52 38 2c 20 73 70 72  | LDR     R8, spr|
00013be0  5f 73 69 7a 65 34 20 20  20 20 20 20 20 20 3b 20  |_size4        ; |
00013bf0  67 65 74 20 6c 65 6e 67  74 68 20 6f 66 20 64 61  |get length of da|
00013c00  74 61 20 66 6f 72 20 31  20 73 70 72 69 74 65 0d  |ta for 1 sprite.|
00013c10  93 94 3e 20 4d 4c 41 20  20 20 20 20 52 30 2c 52  |..> MLA     R0,R|
00013c20  38 2c 52 30 2c 52 37 20  20 20 20 20 20 20 20 20  |8,R0,R7         |
00013c30  20 3b 20 63 61 6c 63 75  6c 61 74 65 20 70 6f 73  | ; calculate pos|
00013c40  69 74 69 6f 6e 20 6f 66  20 64 61 74 61 0d 93 9e  |ition of data...|
00013c50  3e 20 41 44 44 20 20 20  20 20 52 31 2c 52 30 2c  |> ADD     R1,R0,|
00013c60  52 38 2c 20 4c 53 52 20  23 31 20 20 20 20 20 3b  |R8, LSR #1     ;|
00013c70  20 63 61 6c 63 75 6c 61  74 65 20 70 6f 73 69 74  | calculate posit|
00013c80  69 6f 6e 20 6f 66 20 6d  61 73 6b 0d 93 a8 06 20  |ion of mask.... |
00013c90  3a 0d 93 b2 13 3b 4d 4f  56 20 20 20 20 20 52 33  |:....;MOV     R3|
00013ca0  2c 20 23 31 0d 93 bc 1e  3b 53 54 52 20 20 20 20  |, #1....;STR    |
00013cb0  20 52 33 2c 20 73 30 38  30 34 5f 63 6f 75 6e 74  | R3, s0804_count|
00013cc0  65 72 0d 93 c6 06 20 3a  0d 93 d0 17 20 2e 73 30  |er.... :.... .s0|
00013cd0  38 30 34 5f 73 70 72 69  74 65 5f 6c 6f 6f 70 0d  |804_sprite_loop.|
00013ce0  93 da 06 20 3a 0d 93 e4  06 20 5d 0d 93 ee 0f 20  |... :.... ].... |
00013cf0  e3 20 61 25 3d 31 20 b8  20 34 0d 93 f8 0f 20 5b  |. a%=1 . 4.... [|
00013d00  4f 50 54 20 70 61 73 73  25 0d 94 02 06 20 3a 0d  |OPT pass%.... :.|
00013d10  94 0c 3a 20 4c 44 4d 49  41 20 20 20 52 32 2c 7b  |..: LDMIA   R2,{|
00013d20  52 33 2c 52 34 7d 20 20  20 20 20 20 20 20 20 20  |R3,R4}          |
00013d30  20 20 20 20 3b 20 67 65  74 20 73 6f 6d 65 20 62  |    ; get some b|
00013d40  61 63 6b 67 72 6f 75 6e  64 0d 94 16 34 20 4c 44  |ackground...4 LD|
00013d50  4d 49 41 20 20 20 52 31  21 2c 7b 52 38 2c 52 39  |MIA   R1!,{R8,R9|
00013d60  7d 20 20 20 20 20 20 20  20 20 20 20 20 20 3b 20  |}             ; |
00013d70  67 65 74 20 73 6f 6d 65  20 6d 61 73 6b 0d 94 20  |get some mask.. |
00013d80  35 20 80 20 20 20 20 20  52 33 2c 52 33 2c 52 38  |5 .     R3,R3,R8|
00013d90  20 20 20 20 20 20 20 20  20 20 20 20 20 3b 20 6d  |             ; m|
00013da0  61 73 6b 20 6f 66 66 20  62 61 63 6b 67 72 6f 75  |ask off backgrou|
00013db0  6e 64 0d 94 2a 13 20 80  20 20 20 20 20 52 34 2c  |nd..*. .     R4,|
00013dc0  52 34 2c 52 39 0d 94 34  32 20 4c 44 4d 49 41 20  |R4,R9..42 LDMIA |
00013dd0  20 20 52 30 21 2c 7b 52  38 2c 52 39 7d 20 20 20  |  R0!,{R8,R9}   |
00013de0  20 20 20 20 20 20 3b 20  67 65 74 20 73 6f 6d 65  |      ; get some|
00013df0  20 73 70 72 69 74 65 0d  94 3e 3f 20 84 52 20 20  | sprite..>? .R  |
00013e00  20 20 20 52 33 2c 52 33  2c 52 38 20 20 20 20 20  |   R3,R3,R8     |
00013e10  20 20 20 20 20 20 20 20  3b 20 6d 65 72 67 65 20  |        ; merge |
00013e20  73 70 72 69 74 65 20 77  69 74 68 20 62 61 63 6b  |sprite with back|
00013e30  67 72 6f 75 6e 64 0d 94  48 14 20 84 52 20 20 20  |ground..H. .R   |
00013e40  20 20 52 34 2c 52 34 2c  52 39 0d 94 52 37 20 53  |  R4,R4,R9..R7 S|
00013e50  54 4d 49 41 20 20 20 52  32 2c 7b 52 33 2c 52 34  |TMIA   R2,{R3,R4|
00013e60  7d 20 20 20 20 20 20 20  20 20 20 20 3b 20 73 74  |}           ; st|
00013e70  6f 72 65 20 6d 61 73 6b  65 64 20 73 70 72 69 74  |ore masked sprit|
00013e80  65 0d 94 5c 06 20 3a 0d  94 66 1c 20 53 55 42 20  |e..\. :..f. SUB |
00013e90  20 20 20 20 52 32 2c 52  32 2c 20 23 79 5f 73 68  |    R2,R2, #y_sh|
00013ea0  69 66 74 0d 94 70 06 20  3a 0d 94 7a 06 20 5d 0d  |ift..p. :..z. ].|
00013eb0  94 84 06 20 ed 0d 94 8e  0f 20 5b 4f 50 54 20 70  |... ..... [OPT p|
00013ec0  61 73 73 25 0d 94 98 06  20 3a 0d 94 a2 1e 3b 4c  |ass%.... :....;L|
00013ed0  44 52 20 20 20 20 20 52  33 2c 20 73 30 38 30 34  |DR     R3, s0804|
00013ee0  5f 63 6f 75 6e 74 65 72  0d 94 ac 16 3b 41 44 44  |_counter....;ADD|
00013ef0  20 20 20 20 20 52 33 2c  52 33 2c 20 23 31 0d 94  |     R3,R3, #1..|
00013f00  b6 1e 3b 53 54 52 20 20  20 20 20 52 33 2c 20 73  |..;STR     R3, s|
00013f10  30 38 30 34 5f 63 6f 75  6e 74 65 72 0d 94 c0 13  |0804_counter....|
00013f20  3b 43 4d 50 20 20 20 20  20 52 33 2c 20 23 31 0d  |;CMP     R3, #1.|
00013f30  94 ca 1e 3b 42 4c 45 20  20 20 20 20 73 30 38 30  |...;BLE     s080|
00013f40  34 5f 73 70 72 69 74 65  5f 6c 6f 6f 70 0d 94 d4  |4_sprite_loop...|
00013f50  06 20 3a 0d 94 de 1d 20  4c 44 4d 46 44 20 20 20  |. :.... LDMFD   |
00013f60  52 31 33 21 2c 7b 52 30  2d 52 31 32 2c 50 43 7d  |R13!,{R0-R12,PC}|
00013f70  0d 94 e8 06 20 3a 0d 94  f2 13 20 2e 73 30 38 30  |.... :.... .s080|
00013f80  34 5f 63 6f 75 6e 74 65  72 0d 94 fc 0e 20 45 51  |4_counter.... EQ|
00013f90  55 44 20 20 20 20 30 0d  95 06 06 20 3a 0d 95 10  |UD    0.... :...|
00013fa0  12 20 2e 61 64 72 5f 73  70 72 69 74 65 73 34 0d  |. .adr_sprites4.|
00013fb0  95 1a 37 20 45 51 55 44  20 20 20 20 73 70 72 69  |..7 EQUD    spri|
00013fc0  74 65 73 34 25 20 20 20  20 20 20 20 20 20 20 20  |tes4%           |
00013fd0  20 3b 20 61 64 64 72 65  73 73 20 6f 66 20 73 70  | ; address of sp|
00013fe0  72 69 74 65 73 34 0d 95  24 0f 20 2e 73 70 72 5f  |rites4..$. .spr_|
00013ff0  73 69 7a 65 34 0d 95 2e  41 20 45 51 55 44 20 20  |size4...A EQUD  |
00014000  20 20 38 2f 38 2a 38 2a  34 2a 32 20 20 20 20 20  |  8/8*8*4*2     |
00014010  20 20 20 20 20 20 20 3b  20 6c 65 6e 67 74 68 20  |       ; length |
00014020  6f 66 20 6f 6e 65 20 73  70 72 69 74 65 34 20 2b  |of one sprite4 +|
00014030  20 6d 61 73 6b 34 0d 95  38 06 20 3a 0d 95 42 06  | mask4..8. :..B.|
00014040  20 3a 0d 95 4c 06 20 3a  0d 95 56 16 20 2e 70 6c  | :..L. :..V. .pl|
00014050  6f 74 5f 73 70 72 69 74  65 5f 31 32 30 38 0d 95  |ot_sprite_1208..|
00014060  60 06 20 3a 0d 95 6a 1e  20 53 54 4d 46 44 20 20  |`. :..j. STMFD  |
00014070  20 52 31 33 21 2c 7b 52  30 2d 52 31 32 2c 52 31  | R13!,{R0-R12,R1|
00014080  34 7d 0d 95 74 06 20 3a  0d 95 7e 31 20 3a 20 20  |4}..t. :..~1 :  |
00014090  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000140a0  20 20 20 20 20 20 20 20  20 20 3b 20 52 30 20 73  |          ; R0 s|
000140b0  70 72 69 74 65 20 6e 6f  2e 0d 95 88 2e 20 3a 20  |prite no..... : |
000140c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000140d0  20 20 20 20 20 20 20 20  20 20 20 3b 20 52 31 20  |           ; R1 |
000140e0  78 2d 63 6f 6f 72 64 0d  95 92 2e 20 3a 20 20 20  |x-coord.... :   |
000140f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00014100  20 20 20 20 20 20 20 20  20 3b 20 52 32 20 79 2d  |         ; R2 y-|
00014110  63 6f 6f 72 64 0d 95 9c  06 20 3a 0d 95 a6 18 20  |coord.... :.... |
00014120  52 53 42 20 20 20 20 20  52 32 2c 52 32 2c 20 23  |RSB     R2,R2, #|
00014130  32 35 36 0d 95 b0 06 20  3a 0d 95 ba 13 20 43 4d  |256.... :.... CM|
00014140  50 20 20 20 20 20 52 31  2c 20 23 30 0d 95 c4 1c  |P     R1, #0....|
00014150  20 42 4c 45 20 20 20 20  20 70 73 6d 5f 6e 6f 5f  | BLE     psm_no_|
00014160  70 6c 6f 74 31 32 30 38  0d 95 ce 13 20 43 4d 50  |plot1208.... CMP|
00014170  20 20 20 20 20 52 32 2c  20 23 38 0d 95 d8 1c 20  |     R2, #8.... |
00014180  42 4c 45 20 20 20 20 20  70 73 6d 5f 6e 6f 5f 70  |BLE     psm_no_p|
00014190  6c 6f 74 31 32 30 38 0d  95 e2 17 20 43 4d 50 20  |lot1208.... CMP |
000141a0  20 20 20 20 52 31 2c 20  23 33 32 30 2d 38 0d 95  |    R1, #320-8..|
000141b0  ec 1c 20 42 47 45 20 20  20 20 20 70 73 6d 5f 6e  |.. BGE     psm_n|
000141c0  6f 5f 70 6c 6f 74 31 32  30 38 0d 95 f6 15 20 43  |o_plot1208.... C|
000141d0  4d 50 20 20 20 20 20 52  32 2c 20 23 32 35 36 0d  |MP     R2, #256.|
000141e0  96 00 1c 20 42 47 45 20  20 20 20 20 70 73 6d 5f  |... BGE     psm_|
000141f0  6e 6f 5f 70 6c 6f 74 31  32 30 38 0d 96 0a 19 20  |no_plot1208.... |
00014200  42 20 20 20 20 20 20 20  70 73 6d 5f 70 6c 6f 74  |B       psm_plot|
00014210  31 32 30 38 0d 96 14 15  20 2e 70 73 6d 5f 6e 6f  |1208.... .psm_no|
00014220  5f 70 6c 6f 74 31 32 30  38 0d 96 1e 1d 20 4c 44  |_plot1208.... LD|
00014230  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 30 2d 52  |MFD   R13!,{R0-R|
00014240  31 32 2c 50 43 7d 0d 96  28 12 20 2e 70 73 6d 5f  |12,PC}..(. .psm_|
00014250  70 6c 6f 74 31 32 30 38  0d 96 32 06 20 3a 0d 96  |plot1208..2. :..|
00014260  3c 34 20 80 20 20 20 20  20 52 33 2c 52 31 2c 20  |<4 .     R3,R1, |
00014270  23 25 31 31 20 20 20 20  20 20 20 20 20 20 3b 20  |#%11          ; |
00014280  63 61 6c 63 75 6c 61 74  65 20 78 20 6f 66 66 73  |calculate x offs|
00014290  65 74 0d 96 46 32 20 4d  4f 56 20 20 20 20 20 52  |et..F2 MOV     R|
000142a0  30 2c 52 30 2c 20 4c 53  4c 20 23 32 20 20 20 20  |0,R0, LSL #2    |
000142b0  20 20 20 20 3b 20 72 65  61 6c 69 73 65 20 73 70  |    ; realise sp|
000142c0  72 69 74 65 0d 96 50 2e  20 41 44 44 20 20 20 20  |rite..P. ADD    |
000142d0  20 52 30 2c 52 30 2c 20  52 33 20 20 20 20 20 20  | R0,R0, R3      |
000142e0  20 20 20 20 20 20 3b 20  61 64 64 20 6f 66 66 73  |      ; add offs|
000142f0  65 74 0d 96 5a 33 20 42  49 43 20 20 20 20 20 52  |et..Z3 BIC     R|
00014300  31 2c 52 31 2c 20 23 25  31 31 20 20 20 20 20 20  |1,R1, #%11      |
00014310  20 20 20 20 3b 20 6d 61  6b 65 20 78 20 64 69 76  |    ; make x div|
00014320  20 62 79 20 34 0d 96 64  06 20 3a 0d 96 6e 35 20  | by 4..d. :..n5 |
00014330  4d 4f 56 20 20 20 20 20  52 37 2c 20 23 78 5f 73  |MOV     R7, #x_s|
00014340  68 69 66 74 20 20 20 20  20 20 20 20 20 3b 20 67  |hift         ; g|
00014350  65 74 20 73 63 72 65 65  6e 20 73 68 69 66 74 73  |et screen shifts|
00014360  0d 96 78 19 20 4d 4f 56  20 20 20 20 20 52 38 2c  |..x. MOV     R8,|
00014370  20 23 79 5f 73 68 69 66  74 0d 96 82 40 20 4c 44  | #y_shift...@ LD|
00014380  52 20 20 20 20 20 52 39  2c 20 73 70 72 69 74 65  |R     R9, sprite|
00014390  5f 61 64 72 5f 73 63 72  65 65 6e 73 74 6f 72 65  |_adr_screenstore|
000143a0  3b 20 67 65 74 20 73 63  72 65 65 6e 73 74 6f 72  |; get screenstor|
000143b0  65 20 61 64 64 72 65 73  73 0d 96 8c 14 20 4c 44  |e address.... LD|
000143c0  52 20 20 20 20 20 52 39  2c 5b 52 39 5d 0d 96 96  |R     R9,[R9]...|
000143d0  06 20 3a 0d 96 a0 18 20  4d 4c 41 20 20 20 20 20  |. :.... MLA     |
000143e0  52 33 2c 52 37 2c 52 31  2c 52 39 0d 96 aa 18 20  |R3,R7,R1,R9.... |
000143f0  4d 4c 41 20 20 20 20 20  52 32 2c 52 38 2c 52 32  |MLA     R2,R8,R2|
00014400  2c 52 33 0d 96 b4 06 20  3a 0d 96 be 3d 20 4c 44  |,R3.... :...= LD|
00014410  52 20 20 20 20 20 52 37  2c 20 61 64 72 5f 73 70  |R     R7, adr_sp|
00014420  72 69 74 65 73 35 20 20  20 20 20 3b 20 67 65 74  |rites5     ; get|
00014430  20 73 74 61 72 74 20 61  64 64 72 65 73 73 20 6f  | start address o|
00014440  66 20 64 61 74 61 0d 96  c8 43 20 4c 44 52 20 20  |f data...C LDR  |
00014450  20 20 20 52 38 2c 20 73  70 72 5f 73 69 7a 65 35  |   R8, spr_size5|
00014460  20 20 20 20 20 20 20 20  3b 20 67 65 74 20 6c 65  |        ; get le|
00014470  6e 67 74 68 20 6f 66 20  64 61 74 61 20 66 6f 72  |ngth of data for|
00014480  20 31 20 73 70 72 69 74  65 0d 96 d2 3e 20 4d 4c  | 1 sprite...> ML|
00014490  41 20 20 20 20 20 52 30  2c 52 38 2c 52 30 2c 52  |A     R0,R8,R0,R|
000144a0  37 20 20 20 20 20 20 20  20 20 20 3b 20 63 61 6c  |7          ; cal|
000144b0  63 75 6c 61 74 65 20 70  6f 73 69 74 69 6f 6e 20  |culate position |
000144c0  6f 66 20 64 61 74 61 0d  96 dc 3e 20 41 44 44 20  |of data...> ADD |
000144d0  20 20 20 20 52 31 2c 52  30 2c 52 38 2c 20 4c 53  |    R1,R0,R8, LS|
000144e0  52 20 23 31 20 20 20 20  20 3b 20 63 61 6c 63 75  |R #1     ; calcu|
000144f0  6c 61 74 65 20 70 6f 73  69 74 69 6f 6e 20 6f 66  |late position of|
00014500  20 6d 61 73 6b 0d 96 e6  06 20 3a 0d 96 f0 13 3b  | mask.... :....;|
00014510  4d 4f 56 20 20 20 20 20  52 33 2c 20 23 31 0d 96  |MOV     R3, #1..|
00014520  fa 1e 3b 53 54 52 20 20  20 20 20 52 33 2c 20 73  |..;STR     R3, s|
00014530  31 32 30 38 5f 63 6f 75  6e 74 65 72 0d 97 04 06  |1208_counter....|
00014540  20 3a 0d 97 0e 17 20 2e  73 31 32 30 38 5f 73 70  | :.... .s1208_sp|
00014550  72 69 74 65 5f 6c 6f 6f  70 0d 97 18 06 20 3a 0d  |rite_loop.... :.|
00014560  97 22 06 20 5d 0d 97 2c  0f 20 e3 20 61 25 3d 31  |.". ]..,. . a%=1|
00014570  20 b8 20 38 0d 97 36 0f  20 5b 4f 50 54 20 70 61  | . 8..6. [OPT pa|
00014580  73 73 25 0d 97 40 06 20  3a 0d 97 4a 37 20 4c 44  |ss%..@. :..J7 LD|
00014590  4d 49 41 20 20 20 52 32  2c 7b 52 33 2c 52 34 2c  |MIA   R2,{R3,R4,|
000145a0  52 35 7d 20 20 20 20 20  20 20 20 3b 20 67 65 74  |R5}        ; get|
000145b0  20 73 6f 6d 65 20 62 61  63 6b 67 72 6f 75 6e 64  | some background|
000145c0  0d 97 54 31 20 4c 44 4d  49 41 20 20 20 52 31 21  |..T1 LDMIA   R1!|
000145d0  2c 7b 52 38 2c 52 39 2c  52 31 30 7d 20 20 20 20  |,{R8,R9,R10}    |
000145e0  20 20 3b 20 67 65 74 20  73 6f 6d 65 20 6d 61 73  |  ; get some mas|
000145f0  6b 0d 97 5e 35 20 80 20  20 20 20 20 52 33 2c 52  |k..^5 .     R3,R|
00014600  33 2c 52 38 20 20 20 20  20 20 20 20 20 20 20 20  |3,R8            |
00014610  20 3b 20 6d 61 73 6b 20  6f 66 66 20 62 61 63 6b  | ; mask off back|
00014620  67 72 6f 75 6e 64 0d 97  68 13 20 80 20 20 20 20  |ground..h. .    |
00014630  20 52 34 2c 52 34 2c 52  39 0d 97 72 14 20 80 20  | R4,R4,R9..r. . |
00014640  20 20 20 20 52 35 2c 52  35 2c 52 31 30 0d 97 7c  |    R5,R5,R10..||
00014650  33 20 4c 44 4d 49 41 20  20 20 52 30 21 2c 7b 52  |3 LDMIA   R0!,{R|
00014660  38 2c 52 39 2c 52 31 30  7d 20 20 20 20 20 20 3b  |8,R9,R10}      ;|
00014670  20 67 65 74 20 73 6f 6d  65 20 73 70 72 69 74 65  | get some sprite|
00014680  0d 97 86 3f 20 84 52 20  20 20 20 20 52 33 2c 52  |...? .R     R3,R|
00014690  33 2c 52 38 20 20 20 20  20 20 20 20 20 20 20 20  |3,R8            |
000146a0  20 3b 20 6d 65 72 67 65  20 73 70 72 69 74 65 20  | ; merge sprite |
000146b0  77 69 74 68 20 62 61 63  6b 67 72 6f 75 6e 64 0d  |with background.|
000146c0  97 90 14 20 84 52 20 20  20 20 20 52 34 2c 52 34  |... .R     R4,R4|
000146d0  2c 52 39 0d 97 9a 15 20  84 52 20 20 20 20 20 52  |,R9.... .R     R|
000146e0  35 2c 52 35 2c 52 31 30  0d 97 a4 37 20 53 54 4d  |5,R5,R10...7 STM|
000146f0  49 41 20 20 20 52 32 2c  7b 52 33 2c 52 34 2c 52  |IA   R2,{R3,R4,R|
00014700  35 7d 20 20 20 20 20 20  20 20 3b 20 73 74 6f 72  |5}        ; stor|
00014710  65 20 6d 61 73 6b 65 64  20 73 70 72 69 74 65 0d  |e masked sprite.|
00014720  97 ae 06 20 3a 0d 97 b8  1c 20 53 55 42 20 20 20  |... :.... SUB   |
00014730  20 20 52 32 2c 52 32 2c  20 23 79 5f 73 68 69 66  |  R2,R2, #y_shif|
00014740  74 0d 97 c2 06 20 3a 0d  97 cc 06 20 5d 0d 97 d6  |t.... :.... ]...|
00014750  06 20 ed 0d 97 e0 0f 20  5b 4f 50 54 20 70 61 73  |. ..... [OPT pas|
00014760  73 25 0d 97 ea 06 20 3a  0d 97 f4 1e 3b 4c 44 52  |s%.... :....;LDR|
00014770  20 20 20 20 20 52 33 2c  20 73 31 32 30 38 5f 63  |     R3, s1208_c|
00014780  6f 75 6e 74 65 72 0d 97  fe 16 3b 41 44 44 20 20  |ounter....;ADD  |
00014790  20 20 20 52 33 2c 52 33  2c 20 23 31 0d 98 08 1e  |   R3,R3, #1....|
000147a0  3b 53 54 52 20 20 20 20  20 52 33 2c 20 73 31 32  |;STR     R3, s12|
000147b0  30 38 5f 63 6f 75 6e 74  65 72 0d 98 12 13 3b 43  |08_counter....;C|
000147c0  4d 50 20 20 20 20 20 52  33 2c 20 23 31 0d 98 1c  |MP     R3, #1...|
000147d0  1e 3b 42 4c 45 20 20 20  20 20 73 31 32 30 38 5f  |.;BLE     s1208_|
000147e0  73 70 72 69 74 65 5f 6c  6f 6f 70 0d 98 26 06 20  |sprite_loop..&. |
000147f0  3a 0d 98 30 1d 20 4c 44  4d 46 44 20 20 20 52 31  |:..0. LDMFD   R1|
00014800  33 21 2c 7b 52 30 2d 52  31 32 2c 50 43 7d 0d 98  |3!,{R0-R12,PC}..|
00014810  3a 06 20 3a 0d 98 44 13  20 2e 73 31 32 30 38 5f  |:. :..D. .s1208_|
00014820  63 6f 75 6e 74 65 72 0d  98 4e 0e 20 45 51 55 44  |counter..N. EQUD|
00014830  20 20 20 20 30 0d 98 58  06 20 3a 0d 98 62 12 20  |    0..X. :..b. |
00014840  2e 61 64 72 5f 73 70 72  69 74 65 73 35 0d 98 6c  |.adr_sprites5..l|
00014850  37 20 45 51 55 44 20 20  20 20 73 70 72 69 74 65  |7 EQUD    sprite|
00014860  73 35 25 20 20 20 20 20  20 20 20 20 20 20 20 3b  |s5%            ;|
00014870  20 61 64 64 72 65 73 73  20 6f 66 20 73 70 72 69  | address of spri|
00014880  74 65 73 35 0d 98 76 0f  20 2e 73 70 72 5f 73 69  |tes5..v. .spr_si|
00014890  7a 65 35 0d 98 80 41 20  45 51 55 44 20 20 20 20  |ze5...A EQUD    |
000148a0  38 2f 38 2a 31 32 2a 38  2a 32 20 20 20 20 20 20  |8/8*12*8*2      |
000148b0  20 20 20 20 20 3b 20 6c  65 6e 67 74 68 20 6f 66  |     ; length of|
000148c0  20 6f 6e 65 20 73 70 72  69 74 65 35 20 2b 20 6d  | one sprite5 + m|
000148d0  61 73 6b 35 0d 98 8a 06  20 3a 0d 98 94 06 20 3a  |ask5.... :.... :|
000148e0  0d 98 9e 06 20 3a 0d 98  a8 16 20 2e 70 6c 6f 74  |.... :.... .plot|
000148f0  5f 73 70 72 69 74 65 5f  31 36 31 36 0d 98 b2 06  |_sprite_1616....|
00014900  20 3a 0d 98 bc 1e 20 53  54 4d 46 44 20 20 20 52  | :.... STMFD   R|
00014910  31 33 21 2c 7b 52 30 2d  52 31 32 2c 52 31 34 7d  |13!,{R0-R12,R14}|
00014920  0d 98 c6 06 20 3a 0d 98  d0 31 20 3a 20 20 20 20  |.... :...1 :    |
00014930  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00014940  20 20 20 20 20 20 20 20  3b 20 52 30 20 73 70 72  |        ; R0 spr|
00014950  69 74 65 20 6e 6f 2e 0d  98 da 2e 20 3a 20 20 20  |ite no..... :   |
00014960  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00014970  20 20 20 20 20 20 20 20  20 3b 20 52 31 20 78 2d  |         ; R1 x-|
00014980  63 6f 6f 72 64 0d 98 e4  2e 20 3a 20 20 20 20 20  |coord.... :     |
00014990  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000149a0  20 20 20 20 20 20 20 3b  20 52 32 20 79 2d 63 6f  |       ; R2 y-co|
000149b0  6f 72 64 0d 98 ee 06 20  3a 0d 98 f8 18 20 52 53  |ord.... :.... RS|
000149c0  42 20 20 20 20 20 52 32  2c 52 32 2c 20 23 32 35  |B     R2,R2, #25|
000149d0  36 0d 99 02 06 20 3a 0d  99 0c 13 20 43 4d 50 20  |6.... :.... CMP |
000149e0  20 20 20 20 52 31 2c 20  23 30 0d 99 16 1c 20 42  |    R1, #0.... B|
000149f0  4c 45 20 20 20 20 20 70  73 6d 5f 6e 6f 5f 70 6c  |LE     psm_no_pl|
00014a00  6f 74 31 36 31 36 0d 99  20 14 20 43 4d 50 20 20  |ot1616.. . CMP  |
00014a10  20 20 20 52 32 2c 20 23  31 36 0d 99 2a 1c 20 42  |   R2, #16..*. B|
00014a20  4c 45 20 20 20 20 20 70  73 6d 5f 6e 6f 5f 70 6c  |LE     psm_no_pl|
00014a30  6f 74 31 36 31 36 0d 99  34 18 20 43 4d 50 20 20  |ot1616..4. CMP  |
00014a40  20 20 20 52 31 2c 20 23  33 32 30 2d 31 36 0d 99  |   R1, #320-16..|
00014a50  3e 1c 20 42 47 45 20 20  20 20 20 70 73 6d 5f 6e  |>. BGE     psm_n|
00014a60  6f 5f 70 6c 6f 74 31 36  31 36 0d 99 48 15 20 43  |o_plot1616..H. C|
00014a70  4d 50 20 20 20 20 20 52  32 2c 20 23 32 35 36 0d  |MP     R2, #256.|
00014a80  99 52 1c 20 42 47 45 20  20 20 20 20 70 73 6d 5f  |.R. BGE     psm_|
00014a90  6e 6f 5f 70 6c 6f 74 31  36 31 36 0d 99 5c 19 20  |no_plot1616..\. |
00014aa0  42 20 20 20 20 20 20 20  70 73 6d 5f 70 6c 6f 74  |B       psm_plot|
00014ab0  31 36 31 36 0d 99 66 15  20 2e 70 73 6d 5f 6e 6f  |1616..f. .psm_no|
00014ac0  5f 70 6c 6f 74 31 36 31  36 0d 99 70 1d 20 4c 44  |_plot1616..p. LD|
00014ad0  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 30 2d 52  |MFD   R13!,{R0-R|
00014ae0  31 32 2c 50 43 7d 0d 99  7a 12 20 2e 70 73 6d 5f  |12,PC}..z. .psm_|
00014af0  70 6c 6f 74 31 36 31 36  0d 99 84 06 20 3a 0d 99  |plot1616.... :..|
00014b00  8e 34 20 80 20 20 20 20  20 52 33 2c 52 31 2c 20  |.4 .     R3,R1, |
00014b10  23 25 31 31 20 20 20 20  20 20 20 20 20 20 3b 20  |#%11          ; |
00014b20  63 61 6c 63 75 6c 61 74  65 20 78 20 6f 66 66 73  |calculate x offs|
00014b30  65 74 0d 99 98 32 20 4d  4f 56 20 20 20 20 20 52  |et...2 MOV     R|
00014b40  30 2c 52 30 2c 20 4c 53  4c 20 23 32 20 20 20 20  |0,R0, LSL #2    |
00014b50  20 20 20 20 3b 20 72 65  61 6c 69 73 65 20 73 70  |    ; realise sp|
00014b60  72 69 74 65 0d 99 a2 2e  20 41 44 44 20 20 20 20  |rite.... ADD    |
00014b70  20 52 30 2c 52 30 2c 20  52 33 20 20 20 20 20 20  | R0,R0, R3      |
00014b80  20 20 20 20 20 20 3b 20  61 64 64 20 6f 66 66 73  |      ; add offs|
00014b90  65 74 0d 99 ac 33 20 42  49 43 20 20 20 20 20 52  |et...3 BIC     R|
00014ba0  31 2c 52 31 2c 20 23 25  31 31 20 20 20 20 20 20  |1,R1, #%11      |
00014bb0  20 20 20 20 3b 20 6d 61  6b 65 20 78 20 64 69 76  |    ; make x div|
00014bc0  20 62 79 20 34 0d 99 b6  06 20 3a 0d 99 c0 35 20  | by 4.... :...5 |
00014bd0  4d 4f 56 20 20 20 20 20  52 37 2c 20 23 78 5f 73  |MOV     R7, #x_s|
00014be0  68 69 66 74 20 20 20 20  20 20 20 20 20 3b 20 67  |hift         ; g|
00014bf0  65 74 20 73 63 72 65 65  6e 20 73 68 69 66 74 73  |et screen shifts|
00014c00  0d 99 ca 19 20 4d 4f 56  20 20 20 20 20 52 38 2c  |.... MOV     R8,|
00014c10  20 23 79 5f 73 68 69 66  74 0d 99 d4 40 20 4c 44  | #y_shift...@ LD|
00014c20  52 20 20 20 20 20 52 39  2c 20 73 70 72 69 74 65  |R     R9, sprite|
00014c30  5f 61 64 72 5f 73 63 72  65 65 6e 73 74 6f 72 65  |_adr_screenstore|
00014c40  3b 20 67 65 74 20 73 63  72 65 65 6e 73 74 6f 72  |; get screenstor|
00014c50  65 20 61 64 64 72 65 73  73 0d 99 de 14 20 4c 44  |e address.... LD|
00014c60  52 20 20 20 20 20 52 39  2c 5b 52 39 5d 0d 99 e8  |R     R9,[R9]...|
00014c70  06 20 3a 0d 99 f2 18 20  4d 4c 41 20 20 20 20 20  |. :.... MLA     |
00014c80  52 33 2c 52 37 2c 52 31  2c 52 39 0d 99 fc 18 20  |R3,R7,R1,R9.... |
00014c90  4d 4c 41 20 20 20 20 20  52 32 2c 52 38 2c 52 32  |MLA     R2,R8,R2|
00014ca0  2c 52 33 0d 9a 06 06 20  3a 0d 9a 10 3d 20 4c 44  |,R3.... :...= LD|
00014cb0  52 20 20 20 20 20 52 37  2c 20 61 64 72 5f 73 70  |R     R7, adr_sp|
00014cc0  72 69 74 65 73 36 20 20  20 20 20 3b 20 67 65 74  |rites6     ; get|
00014cd0  20 73 74 61 72 74 20 61  64 64 72 65 73 73 20 6f  | start address o|
00014ce0  66 20 64 61 74 61 0d 9a  1a 43 20 4c 44 52 20 20  |f data...C LDR  |
00014cf0  20 20 20 52 38 2c 20 73  70 72 5f 73 69 7a 65 36  |   R8, spr_size6|
00014d00  20 20 20 20 20 20 20 20  3b 20 67 65 74 20 6c 65  |        ; get le|
00014d10  6e 67 74 68 20 6f 66 20  64 61 74 61 20 66 6f 72  |ngth of data for|
00014d20  20 31 20 73 70 72 69 74  65 0d 9a 24 3e 20 4d 4c  | 1 sprite..$> ML|
00014d30  41 20 20 20 20 20 52 30  2c 52 38 2c 52 30 2c 52  |A     R0,R8,R0,R|
00014d40  37 20 20 20 20 20 20 20  20 20 20 3b 20 63 61 6c  |7          ; cal|
00014d50  63 75 6c 61 74 65 20 70  6f 73 69 74 69 6f 6e 20  |culate position |
00014d60  6f 66 20 64 61 74 61 0d  9a 2e 3e 20 41 44 44 20  |of data...> ADD |
00014d70  20 20 20 20 52 31 2c 52  30 2c 52 38 2c 20 4c 53  |    R1,R0,R8, LS|
00014d80  52 20 23 31 20 20 20 20  20 3b 20 63 61 6c 63 75  |R #1     ; calcu|
00014d90  6c 61 74 65 20 70 6f 73  69 74 69 6f 6e 20 6f 66  |late position of|
00014da0  20 6d 61 73 6b 0d 9a 38  06 20 3a 0d 9a 42 13 20  | mask..8. :..B. |
00014db0  4d 4f 56 20 20 20 20 20  52 33 2c 20 23 31 0d 9a  |MOV     R3, #1..|
00014dc0  4c 1e 20 53 54 52 20 20  20 20 20 52 33 2c 20 73  |L. STR     R3, s|
00014dd0  31 36 31 36 5f 63 6f 75  6e 74 65 72 0d 9a 56 06  |1616_counter..V.|
00014de0  20 3a 0d 9a 60 17 20 2e  73 31 36 31 36 5f 73 70  | :..`. .s1616_sp|
00014df0  72 69 74 65 5f 6c 6f 6f  70 0d 9a 6a 06 20 3a 0d  |rite_loop..j. :.|
00014e00  9a 74 06 20 5d 0d 9a 7e  0f 20 e3 20 61 25 3d 31  |.t. ]..~. . a%=1|
00014e10  20 b8 20 34 0d 9a 88 0f  20 5b 4f 50 54 20 70 61  | . 4.... [OPT pa|
00014e20  73 73 25 0d 9a 92 06 20  3a 0d 9a 9c 37 20 4c 44  |ss%.... :...7 LD|
00014e30  4d 49 41 20 20 20 52 32  2c 7b 52 33 2d 52 36 7d  |MIA   R2,{R3-R6}|
00014e40  20 20 20 20 20 20 20 20  20 20 20 3b 20 67 65 74  |           ; get|
00014e50  20 73 6f 6d 65 20 62 61  63 6b 67 72 6f 75 6e 64  | some background|
00014e60  0d 9a a6 31 20 4c 44 4d  49 41 20 20 20 52 31 21  |...1 LDMIA   R1!|
00014e70  2c 7b 52 38 2d 52 31 31  7d 20 20 20 20 20 20 20  |,{R8-R11}       |
00014e80  20 20 3b 20 67 65 74 20  73 6f 6d 65 20 6d 61 73  |  ; get some mas|
00014e90  6b 0d 9a b0 35 20 80 20  20 20 20 20 52 33 2c 52  |k...5 .     R3,R|
00014ea0  33 2c 52 38 20 20 20 20  20 20 20 20 20 20 20 20  |3,R8            |
00014eb0  20 3b 20 6d 61 73 6b 20  6f 66 66 20 62 61 63 6b  | ; mask off back|
00014ec0  67 72 6f 75 6e 64 0d 9a  ba 13 20 80 20 20 20 20  |ground.... .    |
00014ed0  20 52 34 2c 52 34 2c 52  39 0d 9a c4 14 20 80 20  | R4,R4,R9.... . |
00014ee0  20 20 20 20 52 35 2c 52  35 2c 52 31 30 0d 9a ce  |    R5,R5,R10...|
00014ef0  14 20 80 20 20 20 20 20  52 35 2c 52 35 2c 52 31  |. .     R5,R5,R1|
00014f00  31 0d 9a d8 33 20 4c 44  4d 49 41 20 20 20 52 30  |1...3 LDMIA   R0|
00014f10  21 2c 7b 52 38 2d 52 31  31 7d 20 20 20 20 20 20  |!,{R8-R11}      |
00014f20  20 20 20 3b 20 67 65 74  20 73 6f 6d 65 20 73 70  |   ; get some sp|
00014f30  72 69 74 65 0d 9a e2 3f  20 84 52 20 20 20 20 20  |rite...? .R     |
00014f40  52 33 2c 52 33 2c 52 38  20 20 20 20 20 20 20 20  |R3,R3,R8        |
00014f50  20 20 20 20 20 3b 20 6d  65 72 67 65 20 73 70 72  |     ; merge spr|
00014f60  69 74 65 20 77 69 74 68  20 62 61 63 6b 67 72 6f  |ite with backgro|
00014f70  75 6e 64 0d 9a ec 14 20  84 52 20 20 20 20 20 52  |und.... .R     R|
00014f80  34 2c 52 34 2c 52 39 0d  9a f6 15 20 84 52 20 20  |4,R4,R9.... .R  |
00014f90  20 20 20 52 35 2c 52 35  2c 52 31 30 0d 9b 00 15  |   R5,R5,R10....|
00014fa0  20 84 52 20 20 20 20 20  52 36 2c 52 36 2c 52 31  | .R     R6,R6,R1|
00014fb0  31 0d 9b 0a 37 20 53 54  4d 49 41 20 20 20 52 32  |1...7 STMIA   R2|
00014fc0  2c 7b 52 33 2d 52 36 7d  20 20 20 20 20 20 20 20  |,{R3-R6}        |
00014fd0  20 20 20 3b 20 73 74 6f  72 65 20 6d 61 73 6b 65  |   ; store maske|
00014fe0  64 20 73 70 72 69 74 65  0d 9b 14 06 20 3a 0d 9b  |d sprite.... :..|
00014ff0  1e 1c 20 53 55 42 20 20  20 20 20 52 32 2c 52 32  |.. SUB     R2,R2|
00015000  2c 20 23 79 5f 73 68 69  66 74 0d 9b 28 06 20 3a  |, #y_shift..(. :|
00015010  0d 9b 32 06 20 5d 0d 9b  3c 06 20 ed 0d 9b 46 0f  |..2. ]..<. ...F.|
00015020  20 5b 4f 50 54 20 70 61  73 73 25 0d 9b 50 06 20  | [OPT pass%..P. |
00015030  3a 0d 9b 5a 1e 20 4c 44  52 20 20 20 20 20 52 33  |:..Z. LDR     R3|
00015040  2c 20 73 31 36 31 36 5f  63 6f 75 6e 74 65 72 0d  |, s1616_counter.|
00015050  9b 64 16 20 41 44 44 20  20 20 20 20 52 33 2c 52  |.d. ADD     R3,R|
00015060  33 2c 20 23 31 0d 9b 6e  1e 20 53 54 52 20 20 20  |3, #1..n. STR   |
00015070  20 20 52 33 2c 20 73 31  36 31 36 5f 63 6f 75 6e  |  R3, s1616_coun|
00015080  74 65 72 0d 9b 78 13 20  43 4d 50 20 20 20 20 20  |ter..x. CMP     |
00015090  52 33 2c 20 23 34 0d 9b  82 1e 20 42 4c 45 20 20  |R3, #4.... BLE  |
000150a0  20 20 20 73 31 36 31 36  5f 73 70 72 69 74 65 5f  |   s1616_sprite_|
000150b0  6c 6f 6f 70 0d 9b 8c 06  20 3a 0d 9b 96 1d 20 4c  |loop.... :.... L|
000150c0  44 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 30 2d  |DMFD   R13!,{R0-|
000150d0  52 31 32 2c 50 43 7d 0d  9b a0 06 20 3a 0d 9b aa  |R12,PC}.... :...|
000150e0  13 20 2e 73 31 36 31 36  5f 63 6f 75 6e 74 65 72  |. .s1616_counter|
000150f0  0d 9b b4 0e 20 45 51 55  44 20 20 20 20 30 0d 9b  |.... EQUD    0..|
00015100  be 06 20 3a 0d 9b c8 12  20 2e 61 64 72 5f 73 70  |.. :.... .adr_sp|
00015110  72 69 74 65 73 36 0d 9b  d2 37 20 45 51 55 44 20  |rites6...7 EQUD |
00015120  20 20 20 73 70 72 69 74  65 73 36 25 20 20 20 20  |   sprites6%    |
00015130  20 20 20 20 20 20 20 20  3b 20 61 64 64 72 65 73  |        ; addres|
00015140  73 20 6f 66 20 73 70 72  69 74 65 73 36 0d 9b dc  |s of sprites6...|
00015150  0f 20 2e 73 70 72 5f 73  69 7a 65 36 0d 9b e6 41  |. .spr_size6...A|
00015160  20 45 51 55 44 20 20 20  20 38 2f 38 2a 31 36 2a  | EQUD    8/8*16*|
00015170  31 36 2a 32 20 20 20 20  20 20 20 20 20 20 3b 20  |16*2          ; |
00015180  6c 65 6e 67 74 68 20 6f  66 20 6f 6e 65 20 73 70  |length of one sp|
00015190  72 69 74 65 36 20 2b 20  6d 61 73 6b 36 0d 9b f0  |rite6 + mask6...|
000151a0  06 20 3a 0d 9b fa 06 20  3a 0d 9c 04 06 20 5d 0d  |. :.... :.... ].|
000151b0  9c 0e 16 20 50 25 3d 66  69 6c 6c 5f 72 6f 75 74  |... P%=fill_rout|
000151c0  69 6e 65 73 25 0d 9c 18  1b 20 4c 25 3d 66 69 6c  |ines%.... L%=fil|
000151d0  6c 5f 72 6f 75 74 69 6e  65 73 25 2b 38 31 39 31  |l_routines%+8191|
000151e0  0d 9c 22 0f 20 5b 4f 50  54 20 70 61 73 73 25 0d  |..". [OPT pass%.|
000151f0  9c 2c 06 20 3a 0d 9c 36  06 20 3a 0d 9c 40 06 20  |.,. :..6. :..@. |
00015200  3a 0d 9c 4a 14 20 2e 66  69 6c 6c 5f 66 69 6c 6c  |:..J. .fill_fill|
00015210  5f 31 32 31 32 0d 9c 54  06 20 3a 0d 9c 5e 1e 20  |_1212..T. :..^. |
00015220  53 54 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 30  |STMFD   R13!,{R0|
00015230  2d 52 31 32 2c 52 31 34  7d 0d 9c 68 06 20 3a 0d  |-R12,R14}..h. :.|
00015240  9c 72 2f 20 3a 20 20 20  20 20 20 20 20 20 20 20  |.r/ :           |
00015250  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00015260  20 3b 20 52 30 20 66 69  6c 6c 20 6e 6f 2e 0d 9c  | ; R0 fill no...|
00015270  7c 2e 20 3a 20 20 20 20  20 20 20 20 20 20 20 20  ||. :            |
00015280  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00015290  3b 20 52 31 20 78 2d 63  6f 6f 72 64 0d 9c 86 2e  |; R1 x-coord....|
000152a0  20 3a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  | :              |
000152b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3b 20  |              ; |
000152c0  52 32 20 79 2d 63 6f 6f  72 64 0d 9c 90 06 20 3a  |R2 y-coord.... :|
000152d0  0d 9c 9a 18 20 52 53 42  20 20 20 20 20 52 32 2c  |.... RSB     R2,|
000152e0  52 32 2c 20 23 32 35 36  0d 9c a4 06 20 3a 0d 9c  |R2, #256.... :..|
000152f0  ae 13 20 43 4d 50 20 20  20 20 20 52 31 2c 20 23  |.. CMP     R1, #|
00015300  30 0d 9c b8 1c 20 42 4c  45 20 20 20 20 20 70 73  |0.... BLE     ps|
00015310  6d 5f 6e 6f 5f 66 69 6c  6c 31 32 31 32 0d 9c c2  |m_no_fill1212...|
00015320  14 20 43 4d 50 20 20 20  20 20 52 32 2c 20 23 31  |. CMP     R2, #1|
00015330  32 0d 9c cc 1c 20 42 4c  45 20 20 20 20 20 70 73  |2.... BLE     ps|
00015340  6d 5f 6e 6f 5f 66 69 6c  6c 31 32 31 32 0d 9c d6  |m_no_fill1212...|
00015350  17 20 43 4d 50 20 20 20  20 20 52 31 2c 20 23 33  |. CMP     R1, #3|
00015360  32 30 2d 38 0d 9c e0 1c  20 42 47 45 20 20 20 20  |20-8.... BGE    |
00015370  20 70 73 6d 5f 6e 6f 5f  66 69 6c 6c 31 32 31 32  | psm_no_fill1212|
00015380  0d 9c ea 15 20 43 4d 50  20 20 20 20 20 52 32 2c  |.... CMP     R2,|
00015390  20 23 32 35 36 0d 9c f4  1c 20 42 47 45 20 20 20  | #256.... BGE   |
000153a0  20 20 70 73 6d 5f 6e 6f  5f 66 69 6c 6c 31 32 31  |  psm_no_fill121|
000153b0  32 0d 9c fe 19 20 42 20  20 20 20 20 20 20 70 73  |2.... B       ps|
000153c0  6d 5f 66 69 6c 6c 31 32  31 32 0d 9d 08 15 20 2e  |m_fill1212.... .|
000153d0  70 73 6d 5f 6e 6f 5f 66  69 6c 6c 31 32 31 32 0d  |psm_no_fill1212.|
000153e0  9d 12 1d 20 4c 44 4d 46  44 20 20 20 52 31 33 21  |... LDMFD   R13!|
000153f0  2c 7b 52 30 2d 52 31 32  2c 50 43 7d 0d 9d 1c 12  |,{R0-R12,PC}....|
00015400  20 2e 70 73 6d 5f 66 69  6c 6c 31 32 31 32 0d 9d  | .psm_fill1212..|
00015410  26 06 20 3a 0d 9d 30 35  20 4d 4f 56 20 20 20 20  |&. :..05 MOV    |
00015420  20 52 37 2c 20 23 78 5f  73 68 69 66 74 20 20 20  | R7, #x_shift   |
00015430  20 20 20 20 20 20 3b 20  67 65 74 20 73 63 72 65  |      ; get scre|
00015440  65 6e 20 73 68 69 66 74  73 0d 9d 3a 19 20 4d 4f  |en shifts..:. MO|
00015450  56 20 20 20 20 20 52 38  2c 20 23 79 5f 73 68 69  |V     R8, #y_shi|
00015460  66 74 0d 9d 44 06 20 3a  0d 9d 4e 3e 20 4c 44 52  |ft..D. :..N> LDR|
00015470  20 20 20 20 20 52 39 2c  20 66 69 6c 6c 5f 61 64  |     R9, fill_ad|
00015480  72 5f 73 63 72 65 65 6e  73 74 6f 72 65 3b 20 67  |r_screenstore; g|
00015490  65 74 20 73 63 72 65 65  6e 73 74 6f 72 65 20 61  |et screenstore a|
000154a0  64 64 72 65 73 73 0d 9d  58 14 20 4c 44 52 20 20  |ddress..X. LDR  |
000154b0  20 20 20 52 39 2c 5b 52  39 5d 0d 9d 62 18 20 4d  |   R9,[R9]..b. M|
000154c0  4c 41 20 20 20 20 20 52  33 2c 52 37 2c 52 31 2c  |LA     R3,R7,R1,|
000154d0  52 39 0d 9d 6c 18 20 4d  4c 41 20 20 20 20 20 52  |R9..l. MLA     R|
000154e0  30 2c 52 38 2c 52 32 2c  52 33 0d 9d 76 06 20 3a  |0,R8,R2,R3..v. :|
000154f0  0d 9d 80 36 20 4c 44 52  20 20 20 20 20 52 39 2c  |...6 LDR     R9,|
00015500  20 66 69 6c 6c 5f 73 63  72 65 65 6e 64 61 74 61  | fill_screendata|
00015510  20 20 3b 20 67 65 74 20  73 63 72 65 65 6e 20 61  |  ; get screen a|
00015520  64 64 72 65 73 73 0d 9d  8a 18 20 4d 4c 41 20 20  |ddress.... MLA  |
00015530  20 20 20 52 33 2c 52 37  2c 52 31 2c 52 39 0d 9d  |   R3,R7,R1,R9..|
00015540  94 18 20 4d 4c 41 20 20  20 20 20 52 31 2c 52 38  |.. MLA     R1,R8|
00015550  2c 52 32 2c 52 33 0d 9d  9e 06 20 3a 0d 9d a8 13  |,R2,R3.... :....|
00015560  20 4d 4f 56 20 20 20 20  20 52 33 2c 20 23 31 0d  | MOV     R3, #1.|
00015570  9d b2 1e 20 53 54 52 20  20 20 20 20 52 33 2c 20  |... STR     R3, |
00015580  66 31 32 31 32 5f 63 6f  75 6e 74 65 72 0d 9d bc  |f1212_counter...|
00015590  06 20 3a 0d 9d c6 15 20  2e 66 31 32 31 32 5f 66  |. :.... .f1212_f|
000155a0  69 6c 6c 5f 6c 6f 6f 70  0d 9d d0 06 20 3a 0d 9d  |ill_loop.... :..|
000155b0  da 06 20 5d 0d 9d e4 10  20 e3 20 61 25 3d 31 20  |.. ].... . a%=1 |
000155c0  b8 20 31 32 0d 9d ee 0f  20 5b 4f 50 54 20 70 61  |. 12.... [OPT pa|
000155d0  73 73 25 0d 9d f8 06 20  3a 0d 9e 02 37 20 4c 44  |ss%.... :...7 LD|
000155e0  4d 49 41 20 20 20 52 31  2c 7b 52 33 2d 52 35 7d  |MIA   R1,{R3-R5}|
000155f0  20 20 20 20 20 20 20 20  20 20 20 3b 20 67 65 74  |           ; get|
00015600  20 73 6f 6d 65 20 62 61  63 6b 67 72 6f 75 6e 64  | some background|
00015610  0d 9e 0c 35 20 53 54 4d  49 41 20 20 20 52 30 2c  |...5 STMIA   R0,|
00015620  7b 52 33 2d 52 35 7d 20  20 20 20 20 20 20 20 20  |{R3-R5}         |
00015630  20 20 3b 20 73 74 6f 72  65 20 6d 61 73 6b 65 64  |  ; store masked|
00015640  20 66 69 6c 6c 0d 9e 16  06 20 3a 0d 9e 20 1c 20  | fill.... :.. . |
00015650  53 55 42 20 20 20 20 20  52 30 2c 52 30 2c 20 23  |SUB     R0,R0, #|
00015660  79 5f 73 68 69 66 74 0d  9e 2a 1c 20 53 55 42 20  |y_shift..*. SUB |
00015670  20 20 20 20 52 31 2c 52  31 2c 20 23 79 5f 73 68  |    R1,R1, #y_sh|
00015680  69 66 74 0d 9e 34 06 20  3a 0d 9e 3e 06 20 5d 0d  |ift..4. :..>. ].|
00015690  9e 48 06 20 ed 0d 9e 52  0f 20 5b 4f 50 54 20 70  |.H. ...R. [OPT p|
000156a0  61 73 73 25 0d 9e 5c 06  20 3a 0d 9e 66 1e 20 4c  |ass%..\. :..f. L|
000156b0  44 52 20 20 20 20 20 52  33 2c 20 66 31 32 31 32  |DR     R3, f1212|
000156c0  5f 63 6f 75 6e 74 65 72  0d 9e 70 16 20 41 44 44  |_counter..p. ADD|
000156d0  20 20 20 20 20 52 33 2c  52 33 2c 20 23 31 0d 9e  |     R3,R3, #1..|
000156e0  7a 1e 20 53 54 52 20 20  20 20 20 52 33 2c 20 66  |z. STR     R3, f|
000156f0  31 32 31 32 5f 63 6f 75  6e 74 65 72 0d 9e 84 13  |1212_counter....|
00015700  20 43 4d 50 20 20 20 20  20 52 33 2c 20 23 31 0d  | CMP     R3, #1.|
00015710  9e 8e 1c 20 42 4c 45 20  20 20 20 20 66 31 32 31  |... BLE     f121|
00015720  32 5f 66 69 6c 6c 5f 6c  6f 6f 70 0d 9e 98 06 20  |2_fill_loop.... |
00015730  3a 0d 9e a2 1d 20 4c 44  4d 46 44 20 20 20 52 31  |:.... LDMFD   R1|
00015740  33 21 2c 7b 52 30 2d 52  31 32 2c 50 43 7d 0d 9e  |3!,{R0-R12,PC}..|
00015750  ac 06 20 3a 0d 9e b6 13  20 2e 66 31 32 31 32 5f  |.. :.... .f1212_|
00015760  63 6f 75 6e 74 65 72 0d  9e c0 0e 20 45 51 55 44  |counter.... EQUD|
00015770  20 20 20 20 30 0d 9e ca  06 20 3a 0d 9e d4 06 20  |    0.... :.... |
00015780  3a 0d 9e de 06 20 3a 0d  9e e8 14 20 2e 66 69 6c  |:.... :.... .fil|
00015790  6c 5f 66 69 6c 6c 5f 31  32 36 34 0d 9e f2 06 20  |l_fill_1264.... |
000157a0  3a 0d 9e fc 1e 20 53 54  4d 46 44 20 20 20 52 31  |:.... STMFD   R1|
000157b0  33 21 2c 7b 52 30 2d 52  31 32 2c 52 31 34 7d 0d  |3!,{R0-R12,R14}.|
000157c0  9f 06 06 20 3a 0d 9f 10  2f 20 3a 20 20 20 20 20  |... :.../ :     |
000157d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000157e0  20 20 20 20 20 20 20 3b  20 52 30 20 66 69 6c 6c  |       ; R0 fill|
000157f0  20 6e 6f 2e 0d 9f 1a 2e  20 3a 20 20 20 20 20 20  | no..... :      |
00015800  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00015810  20 20 20 20 20 20 3b 20  52 31 20 78 2d 63 6f 6f  |      ; R1 x-coo|
00015820  72 64 0d 9f 24 2e 20 3a  20 20 20 20 20 20 20 20  |rd..$. :        |
00015830  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00015840  20 20 20 20 3b 20 52 32  20 79 2d 63 6f 6f 72 64  |    ; R2 y-coord|
00015850  0d 9f 2e 06 20 3a 0d 9f  38 18 20 52 53 42 20 20  |.... :..8. RSB  |
00015860  20 20 20 52 32 2c 52 32  2c 20 23 32 35 36 0d 9f  |   R2,R2, #256..|
00015870  42 06 20 3a 0d 9f 4c 13  20 43 4d 50 20 20 20 20  |B. :..L. CMP    |
00015880  20 52 31 2c 20 23 30 0d  9f 56 1c 20 42 4c 45 20  | R1, #0..V. BLE |
00015890  20 20 20 20 70 73 6d 5f  6e 6f 5f 66 69 6c 6c 31  |    psm_no_fill1|
000158a0  32 36 34 0d 9f 60 14 20  43 4d 50 20 20 20 20 20  |264..`. CMP     |
000158b0  52 32 2c 20 23 33 32 0d  9f 6a 1c 20 42 4c 45 20  |R2, #32..j. BLE |
000158c0  20 20 20 20 70 73 6d 5f  6e 6f 5f 66 69 6c 6c 31  |    psm_no_fill1|
000158d0  32 36 34 0d 9f 74 17 20  43 4d 50 20 20 20 20 20  |264..t. CMP     |
000158e0  52 31 2c 20 23 33 32 30  2d 38 0d 9f 7e 1c 20 42  |R1, #320-8..~. B|
000158f0  47 45 20 20 20 20 20 70  73 6d 5f 6e 6f 5f 66 69  |GE     psm_no_fi|
00015900  6c 6c 31 32 36 34 0d 9f  88 15 20 43 4d 50 20 20  |ll1264.... CMP  |
00015910  20 20 20 52 32 2c 20 23  32 35 36 0d 9f 92 1c 20  |   R2, #256.... |
00015920  42 47 45 20 20 20 20 20  70 73 6d 5f 6e 6f 5f 66  |BGE     psm_no_f|
00015930  69 6c 6c 31 32 36 34 0d  9f 9c 19 20 42 20 20 20  |ill1264.... B   |
00015940  20 20 20 20 70 73 6d 5f  66 69 6c 6c 31 32 36 34  |    psm_fill1264|
00015950  0d 9f a6 15 20 2e 70 73  6d 5f 6e 6f 5f 66 69 6c  |.... .psm_no_fil|
00015960  6c 31 32 36 34 0d 9f b0  1d 20 4c 44 4d 46 44 20  |l1264.... LDMFD |
00015970  20 20 52 31 33 21 2c 7b  52 30 2d 52 31 32 2c 50  |  R13!,{R0-R12,P|
00015980  43 7d 0d 9f ba 12 20 2e  70 73 6d 5f 66 69 6c 6c  |C}.... .psm_fill|
00015990  31 32 36 34 0d 9f c4 06  20 3a 0d 9f ce 35 20 4d  |1264.... :...5 M|
000159a0  4f 56 20 20 20 20 20 52  37 2c 20 23 78 5f 73 68  |OV     R7, #x_sh|
000159b0  69 66 74 20 20 20 20 20  20 20 20 20 3b 20 67 65  |ift         ; ge|
000159c0  74 20 73 63 72 65 65 6e  20 73 68 69 66 74 73 0d  |t screen shifts.|
000159d0  9f d8 19 20 4d 4f 56 20  20 20 20 20 52 38 2c 20  |... MOV     R8, |
000159e0  23 79 5f 73 68 69 66 74  0d 9f e2 06 20 3a 0d 9f  |#y_shift.... :..|
000159f0  ec 3e 20 4c 44 52 20 20  20 20 20 52 39 2c 20 66  |.> LDR     R9, f|
00015a00  69 6c 6c 5f 61 64 72 5f  73 63 72 65 65 6e 73 74  |ill_adr_screenst|
00015a10  6f 72 65 3b 20 67 65 74  20 73 63 72 65 65 6e 73  |ore; get screens|
00015a20  74 6f 72 65 20 61 64 64  72 65 73 73 0d 9f f6 14  |tore address....|
00015a30  20 4c 44 52 20 20 20 20  20 52 39 2c 5b 52 39 5d  | LDR     R9,[R9]|
00015a40  0d a0 00 18 20 4d 4c 41  20 20 20 20 20 52 33 2c  |.... MLA     R3,|
00015a50  52 37 2c 52 31 2c 52 39  0d a0 0a 18 20 4d 4c 41  |R7,R1,R9.... MLA|
00015a60  20 20 20 20 20 52 30 2c  52 38 2c 52 32 2c 52 33  |     R0,R8,R2,R3|
00015a70  0d a0 14 06 20 3a 0d a0  1e 36 20 4c 44 52 20 20  |.... :...6 LDR  |
00015a80  20 20 20 52 39 2c 20 66  69 6c 6c 5f 73 63 72 65  |   R9, fill_scre|
00015a90  65 6e 64 61 74 61 20 20  3b 20 67 65 74 20 73 63  |endata  ; get sc|
00015aa0  72 65 65 6e 20 61 64 64  72 65 73 73 0d a0 28 18  |reen address..(.|
00015ab0  20 4d 4c 41 20 20 20 20  20 52 33 2c 52 37 2c 52  | MLA     R3,R7,R|
00015ac0  31 2c 52 39 0d a0 32 18  20 4d 4c 41 20 20 20 20  |1,R9..2. MLA    |
00015ad0  20 52 31 2c 52 38 2c 52  32 2c 52 33 0d a0 3c 06  | R1,R8,R2,R3..<.|
00015ae0  20 3a 0d a0 46 13 20 4d  4f 56 20 20 20 20 20 52  | :..F. MOV     R|
00015af0  33 2c 20 23 31 0d a0 50  1e 20 53 54 52 20 20 20  |3, #1..P. STR   |
00015b00  20 20 52 33 2c 20 66 31  32 36 34 5f 63 6f 75 6e  |  R3, f1264_coun|
00015b10  74 65 72 0d a0 5a 06 20  3a 0d a0 64 15 20 2e 66  |ter..Z. :..d. .f|
00015b20  31 32 36 34 5f 66 69 6c  6c 5f 6c 6f 6f 70 0d a0  |1264_fill_loop..|
00015b30  6e 06 20 3a 0d a0 78 06  20 5d 0d a0 82 0f 20 e3  |n. :..x. ].... .|
00015b40  20 61 25 3d 31 20 b8 20  38 0d a0 8c 0f 20 5b 4f  | a%=1 . 8.... [O|
00015b50  50 54 20 70 61 73 73 25  0d a0 96 06 20 3a 0d a0  |PT pass%.... :..|
00015b60  a0 37 20 4c 44 4d 49 41  20 20 20 52 31 2c 7b 52  |.7 LDMIA   R1,{R|
00015b70  33 2d 52 35 7d 20 20 20  20 20 20 20 20 20 20 20  |3-R5}           |
00015b80  3b 20 67 65 74 20 73 6f  6d 65 20 62 61 63 6b 67  |; get some backg|
00015b90  72 6f 75 6e 64 0d a0 aa  35 20 53 54 4d 49 41 20  |round...5 STMIA |
00015ba0  20 20 52 30 2c 7b 52 33  2d 52 35 7d 20 20 20 20  |  R0,{R3-R5}    |
00015bb0  20 20 20 20 20 20 20 3b  20 73 74 6f 72 65 20 6d  |       ; store m|
00015bc0  61 73 6b 65 64 20 66 69  6c 6c 0d a0 b4 06 20 3a  |asked fill.... :|
00015bd0  0d a0 be 1c 20 53 55 42  20 20 20 20 20 52 30 2c  |.... SUB     R0,|
00015be0  52 30 2c 20 23 79 5f 73  68 69 66 74 0d a0 c8 1c  |R0, #y_shift....|
00015bf0  20 53 55 42 20 20 20 20  20 52 31 2c 52 31 2c 20  | SUB     R1,R1, |
00015c00  23 79 5f 73 68 69 66 74  0d a0 d2 06 20 3a 0d a0  |#y_shift.... :..|
00015c10  dc 06 20 5d 0d a0 e6 06  20 ed 0d a0 f0 0f 20 5b  |.. ].... ..... [|
00015c20  4f 50 54 20 70 61 73 73  25 0d a0 fa 06 20 3a 0d  |OPT pass%.... :.|
00015c30  a1 04 1e 20 4c 44 52 20  20 20 20 20 52 33 2c 20  |... LDR     R3, |
00015c40  66 31 32 36 34 5f 63 6f  75 6e 74 65 72 0d a1 0e  |f1264_counter...|
00015c50  16 20 41 44 44 20 20 20  20 20 52 33 2c 52 33 2c  |. ADD     R3,R3,|
00015c60  20 23 31 0d a1 18 1e 20  53 54 52 20 20 20 20 20  | #1.... STR     |
00015c70  52 33 2c 20 66 31 32 36  34 5f 63 6f 75 6e 74 65  |R3, f1264_counte|
00015c80  72 0d a1 22 13 20 43 4d  50 20 20 20 20 20 52 33  |r..". CMP     R3|
00015c90  2c 20 23 38 0d a1 2c 1c  20 42 4c 45 20 20 20 20  |, #8..,. BLE    |
00015ca0  20 66 31 32 36 34 5f 66  69 6c 6c 5f 6c 6f 6f 70  | f1264_fill_loop|
00015cb0  0d a1 36 06 20 3a 0d a1  40 1d 20 4c 44 4d 46 44  |..6. :..@. LDMFD|
00015cc0  20 20 20 52 31 33 21 2c  7b 52 30 2d 52 31 32 2c  |   R13!,{R0-R12,|
00015cd0  50 43 7d 0d a1 4a 06 20  3a 0d a1 54 13 20 2e 66  |PC}..J. :..T. .f|
00015ce0  31 32 36 34 5f 63 6f 75  6e 74 65 72 0d a1 5e 0e  |1264_counter..^.|
00015cf0  20 45 51 55 44 20 20 20  20 30 0d a1 68 06 20 3a  | EQUD    0..h. :|
00015d00  0d a1 72 15 20 2e 66 69  6c 6c 5f 73 63 72 65 65  |..r. .fill_scree|
00015d10  6e 64 61 74 61 0d a1 7c  18 20 45 51 55 44 20 20  |ndata..|. EQUD  |
00015d20  20 20 73 63 72 65 65 6e  64 61 74 61 25 0d a1 86  |  screendata%...|
00015d30  1a 20 2e 66 69 6c 6c 5f  61 64 72 5f 73 63 72 65  |. .fill_adr_scre|
00015d40  65 6e 73 74 6f 72 65 0d  a1 90 18 20 45 51 55 44  |enstore.... EQUD|
00015d50  20 20 20 20 73 63 72 65  65 6e 73 74 6f 72 65 0d  |    screenstore.|
00015d60  a1 9a 06 20 3a 0d a1 a4  06 20 3a 0d a1 ae 06 20  |... :.... :.... |
00015d70  3a 0d a1 b8 14 20 2e 66  69 6c 6c 5f 66 69 6c 6c  |:.... .fill_fill|
00015d80  5f 32 30 31 36 0d a1 c2  06 20 3a 0d a1 cc 1e 20  |_2016.... :.... |
00015d90  53 54 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 30  |STMFD   R13!,{R0|
00015da0  2d 52 31 32 2c 52 31 34  7d 0d a1 d6 06 20 3a 0d  |-R12,R14}.... :.|
00015db0  a1 e0 2f 20 3a 20 20 20  20 20 20 20 20 20 20 20  |../ :           |
00015dc0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00015dd0  20 3b 20 52 30 20 66 69  6c 6c 20 6e 6f 2e 0d a1  | ; R0 fill no...|
00015de0  ea 2e 20 3a 20 20 20 20  20 20 20 20 20 20 20 20  |.. :            |
00015df0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00015e00  3b 20 52 31 20 78 2d 63  6f 6f 72 64 0d a1 f4 2e  |; R1 x-coord....|
00015e10  20 3a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  | :              |
00015e20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3b 20  |              ; |
00015e30  52 32 20 79 2d 63 6f 6f  72 64 0d a1 fe 06 20 3a  |R2 y-coord.... :|
00015e40  0d a2 08 18 20 52 53 42  20 20 20 20 20 52 32 2c  |.... RSB     R2,|
00015e50  52 32 2c 20 23 32 35 36  0d a2 12 06 20 3a 0d a2  |R2, #256.... :..|
00015e60  1c 13 20 43 4d 50 20 20  20 20 20 52 31 2c 20 23  |.. CMP     R1, #|
00015e70  30 0d a2 26 1c 20 42 4c  45 20 20 20 20 20 70 73  |0..&. BLE     ps|
00015e80  6d 5f 6e 6f 5f 66 69 6c  6c 32 30 31 36 0d a2 30  |m_no_fill2016..0|
00015e90  14 20 43 4d 50 20 20 20  20 20 52 32 2c 20 23 31  |. CMP     R2, #1|
00015ea0  36 0d a2 3a 1c 20 42 4c  45 20 20 20 20 20 70 73  |6..:. BLE     ps|
00015eb0  6d 5f 6e 6f 5f 66 69 6c  6c 32 30 31 36 0d a2 44  |m_no_fill2016..D|
00015ec0  18 20 43 4d 50 20 20 20  20 20 52 31 2c 20 23 33  |. CMP     R1, #3|
00015ed0  32 30 2d 31 36 0d a2 4e  1c 20 42 47 45 20 20 20  |20-16..N. BGE   |
00015ee0  20 20 70 73 6d 5f 6e 6f  5f 66 69 6c 6c 32 30 31  |  psm_no_fill201|
00015ef0  36 0d a2 58 15 20 43 4d  50 20 20 20 20 20 52 32  |6..X. CMP     R2|
00015f00  2c 20 23 32 35 36 0d a2  62 1c 20 42 47 45 20 20  |, #256..b. BGE  |
00015f10  20 20 20 70 73 6d 5f 6e  6f 5f 66 69 6c 6c 32 30  |   psm_no_fill20|
00015f20  31 36 0d a2 6c 19 20 42  20 20 20 20 20 20 20 70  |16..l. B       p|
00015f30  73 6d 5f 66 69 6c 6c 32  30 31 36 0d a2 76 15 20  |sm_fill2016..v. |
00015f40  2e 70 73 6d 5f 6e 6f 5f  66 69 6c 6c 32 30 31 36  |.psm_no_fill2016|
00015f50  0d a2 80 1d 20 4c 44 4d  46 44 20 20 20 52 31 33  |.... LDMFD   R13|
00015f60  21 2c 7b 52 30 2d 52 31  32 2c 50 43 7d 0d a2 8a  |!,{R0-R12,PC}...|
00015f70  12 20 2e 70 73 6d 5f 66  69 6c 6c 32 30 31 36 0d  |. .psm_fill2016.|
00015f80  a2 94 06 20 3a 0d a2 9e  35 20 4d 4f 56 20 20 20  |... :...5 MOV   |
00015f90  20 20 52 37 2c 20 23 78  5f 73 68 69 66 74 20 20  |  R7, #x_shift  |
00015fa0  20 20 20 20 20 20 20 3b  20 67 65 74 20 73 63 72  |       ; get scr|
00015fb0  65 65 6e 20 73 68 69 66  74 73 0d a2 a8 19 20 4d  |een shifts.... M|
00015fc0  4f 56 20 20 20 20 20 52  38 2c 20 23 79 5f 73 68  |OV     R8, #y_sh|
00015fd0  69 66 74 0d a2 b2 06 20  3a 0d a2 bc 3e 20 4c 44  |ift.... :...> LD|
00015fe0  52 20 20 20 20 20 52 39  2c 20 66 69 6c 6c 5f 61  |R     R9, fill_a|
00015ff0  64 72 5f 73 63 72 65 65  6e 73 74 6f 72 65 3b 20  |dr_screenstore; |
00016000  67 65 74 20 73 63 72 65  65 6e 73 74 6f 72 65 20  |get screenstore |
00016010  61 64 64 72 65 73 73 0d  a2 c6 14 20 4c 44 52 20  |address.... LDR |
00016020  20 20 20 20 52 39 2c 5b  52 39 5d 0d a2 d0 18 20  |    R9,[R9].... |
00016030  4d 4c 41 20 20 20 20 20  52 33 2c 52 37 2c 52 31  |MLA     R3,R7,R1|
00016040  2c 52 39 0d a2 da 18 20  4d 4c 41 20 20 20 20 20  |,R9.... MLA     |
00016050  52 30 2c 52 38 2c 52 32  2c 52 33 0d a2 e4 06 20  |R0,R8,R2,R3.... |
00016060  3a 0d a2 ee 36 20 4c 44  52 20 20 20 20 20 52 39  |:...6 LDR     R9|
00016070  2c 20 66 69 6c 6c 5f 73  63 72 65 65 6e 64 61 74  |, fill_screendat|
00016080  61 20 20 3b 20 67 65 74  20 73 63 72 65 65 6e 20  |a  ; get screen |
00016090  61 64 64 72 65 73 73 0d  a2 f8 18 20 4d 4c 41 20  |address.... MLA |
000160a0  20 20 20 20 52 33 2c 52  37 2c 52 31 2c 52 39 0d  |    R3,R7,R1,R9.|
000160b0  a3 02 18 20 4d 4c 41 20  20 20 20 20 52 31 2c 52  |... MLA     R1,R|
000160c0  38 2c 52 32 2c 52 33 0d  a3 0c 06 20 3a 0d a3 16  |8,R2,R3.... :...|
000160d0  13 20 4d 4f 56 20 20 20  20 20 52 33 2c 20 23 31  |. MOV     R3, #1|
000160e0  0d a3 20 1e 20 53 54 52  20 20 20 20 20 52 33 2c  |.. . STR     R3,|
000160f0  20 66 32 30 31 36 5f 63  6f 75 6e 74 65 72 0d a3  | f2016_counter..|
00016100  2a 06 20 3a 0d a3 34 15  20 2e 66 32 30 31 36 5f  |*. :..4. .f2016_|
00016110  66 69 6c 6c 5f 6c 6f 6f  70 0d a3 3e 06 20 3a 0d  |fill_loop..>. :.|
00016120  a3 48 06 20 5d 0d a3 52  0f 20 e3 20 61 25 3d 31  |.H. ]..R. . a%=1|
00016130  20 b8 20 34 0d a3 5c 0f  20 5b 4f 50 54 20 70 61  | . 4..\. [OPT pa|
00016140  73 73 25 0d a3 66 06 20  3a 0d a3 70 37 20 4c 44  |ss%..f. :..p7 LD|
00016150  4d 49 41 20 20 20 52 31  2c 7b 52 33 2d 52 37 7d  |MIA   R1,{R3-R7}|
00016160  20 20 20 20 20 20 20 20  20 20 20 3b 20 67 65 74  |           ; get|
00016170  20 73 6f 6d 65 20 62 61  63 6b 67 72 6f 75 6e 64  | some background|
00016180  0d a3 7a 35 20 53 54 4d  49 41 20 20 20 52 30 2c  |..z5 STMIA   R0,|
00016190  7b 52 33 2d 52 37 7d 20  20 20 20 20 20 20 20 20  |{R3-R7}         |
000161a0  20 20 3b 20 73 74 6f 72  65 20 6d 61 73 6b 65 64  |  ; store masked|
000161b0  20 66 69 6c 6c 0d a3 84  06 20 3a 0d a3 8e 1c 20  | fill.... :.... |
000161c0  53 55 42 20 20 20 20 20  52 30 2c 52 30 2c 20 23  |SUB     R0,R0, #|
000161d0  79 5f 73 68 69 66 74 0d  a3 98 1c 20 53 55 42 20  |y_shift.... SUB |
000161e0  20 20 20 20 52 31 2c 52  31 2c 20 23 79 5f 73 68  |    R1,R1, #y_sh|
000161f0  69 66 74 0d a3 a2 06 20  3a 0d a3 ac 06 20 5d 0d  |ift.... :.... ].|
00016200  a3 b6 06 20 ed 0d a3 c0  0f 20 5b 4f 50 54 20 70  |... ..... [OPT p|
00016210  61 73 73 25 0d a3 ca 06  20 3a 0d a3 d4 1e 20 4c  |ass%.... :.... L|
00016220  44 52 20 20 20 20 20 52  33 2c 20 66 32 30 31 36  |DR     R3, f2016|
00016230  5f 63 6f 75 6e 74 65 72  0d a3 de 16 20 41 44 44  |_counter.... ADD|
00016240  20 20 20 20 20 52 33 2c  52 33 2c 20 23 31 0d a3  |     R3,R3, #1..|
00016250  e8 1e 20 53 54 52 20 20  20 20 20 52 33 2c 20 66  |.. STR     R3, f|
00016260  32 30 31 36 5f 63 6f 75  6e 74 65 72 0d a3 f2 13  |2016_counter....|
00016270  20 43 4d 50 20 20 20 20  20 52 33 2c 20 23 34 0d  | CMP     R3, #4.|
00016280  a3 fc 1c 20 42 4c 45 20  20 20 20 20 66 32 30 31  |... BLE     f201|
00016290  36 5f 66 69 6c 6c 5f 6c  6f 6f 70 0d a4 06 06 20  |6_fill_loop.... |
000162a0  3a 0d a4 10 1d 20 4c 44  4d 46 44 20 20 20 52 31  |:.... LDMFD   R1|
000162b0  33 21 2c 7b 52 30 2d 52  31 32 2c 50 43 7d 0d a4  |3!,{R0-R12,PC}..|
000162c0  1a 06 20 3a 0d a4 24 13  20 2e 66 32 30 31 36 5f  |.. :..$. .f2016_|
000162d0  63 6f 75 6e 74 65 72 0d  a4 2e 0e 20 45 51 55 44  |counter.... EQUD|
000162e0  20 20 20 20 30 0d a4 38  06 20 3a 0d a4 42 06 20  |    0..8. :..B. |
000162f0  3a 0d a4 4c 06 20 3a 0d  a4 56 14 20 2e 66 69 6c  |:..L. :..V. .fil|
00016300  6c 5f 66 69 6c 6c 5f 30  38 30 34 0d a4 60 06 20  |l_fill_0804..`. |
00016310  3a 0d a4 6a 1e 20 53 54  4d 46 44 20 20 20 52 31  |:..j. STMFD   R1|
00016320  33 21 2c 7b 52 30 2d 52  31 32 2c 52 31 34 7d 0d  |3!,{R0-R12,R14}.|
00016330  a4 74 06 20 3a 0d a4 7e  2f 20 3a 20 20 20 20 20  |.t. :..~/ :     |
00016340  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00016350  20 20 20 20 20 20 20 3b  20 52 30 20 66 69 6c 6c  |       ; R0 fill|
00016360  20 6e 6f 2e 0d a4 88 2e  20 3a 20 20 20 20 20 20  | no..... :      |
00016370  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00016380  20 20 20 20 20 20 3b 20  52 31 20 78 2d 63 6f 6f  |      ; R1 x-coo|
00016390  72 64 0d a4 92 2e 20 3a  20 20 20 20 20 20 20 20  |rd.... :        |
000163a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000163b0  20 20 20 20 3b 20 52 32  20 79 2d 63 6f 6f 72 64  |    ; R2 y-coord|
000163c0  0d a4 9c 06 20 3a 0d a4  a6 18 20 52 53 42 20 20  |.... :.... RSB  |
000163d0  20 20 20 52 32 2c 52 32  2c 20 23 32 35 36 0d a4  |   R2,R2, #256..|
000163e0  b0 06 20 3a 0d a4 ba 13  20 43 4d 50 20 20 20 20  |.. :.... CMP    |
000163f0  20 52 31 2c 20 23 30 0d  a4 c4 1c 20 42 4c 45 20  | R1, #0.... BLE |
00016400  20 20 20 20 70 73 6d 5f  6e 6f 5f 66 69 6c 6c 30  |    psm_no_fill0|
00016410  38 30 34 0d a4 ce 13 20  43 4d 50 20 20 20 20 20  |804.... CMP     |
00016420  52 32 2c 20 23 34 0d a4  d8 1c 20 42 4c 45 20 20  |R2, #4.... BLE  |
00016430  20 20 20 70 73 6d 5f 6e  6f 5f 66 69 6c 6c 30 38  |   psm_no_fill08|
00016440  30 34 0d a4 e2 17 20 43  4d 50 20 20 20 20 20 52  |04.... CMP     R|
00016450  31 2c 20 23 33 32 30 2d  34 0d a4 ec 1c 20 42 47  |1, #320-4.... BG|
00016460  45 20 20 20 20 20 70 73  6d 5f 6e 6f 5f 66 69 6c  |E     psm_no_fil|
00016470  6c 30 38 30 34 0d a4 f6  15 20 43 4d 50 20 20 20  |l0804.... CMP   |
00016480  20 20 52 32 2c 20 23 32  35 36 0d a5 00 1c 20 42  |  R2, #256.... B|
00016490  47 45 20 20 20 20 20 70  73 6d 5f 6e 6f 5f 66 69  |GE     psm_no_fi|
000164a0  6c 6c 30 38 30 34 0d a5  0a 19 20 42 20 20 20 20  |ll0804.... B    |
000164b0  20 20 20 70 73 6d 5f 66  69 6c 6c 30 38 30 34 0d  |   psm_fill0804.|
000164c0  a5 14 15 20 2e 70 73 6d  5f 6e 6f 5f 66 69 6c 6c  |... .psm_no_fill|
000164d0  30 38 30 34 0d a5 1e 1d  20 4c 44 4d 46 44 20 20  |0804.... LDMFD  |
000164e0  20 52 31 33 21 2c 7b 52  30 2d 52 31 32 2c 50 43  | R13!,{R0-R12,PC|
000164f0  7d 0d a5 28 12 20 2e 70  73 6d 5f 66 69 6c 6c 30  |}..(. .psm_fill0|
00016500  38 30 34 0d a5 32 06 20  3a 0d a5 3c 35 20 4d 4f  |804..2. :..<5 MO|
00016510  56 20 20 20 20 20 52 37  2c 20 23 78 5f 73 68 69  |V     R7, #x_shi|
00016520  66 74 20 20 20 20 20 20  20 20 20 3b 20 67 65 74  |ft         ; get|
00016530  20 73 63 72 65 65 6e 20  73 68 69 66 74 73 0d a5  | screen shifts..|
00016540  46 19 20 4d 4f 56 20 20  20 20 20 52 38 2c 20 23  |F. MOV     R8, #|
00016550  79 5f 73 68 69 66 74 0d  a5 50 06 20 3a 0d a5 5a  |y_shift..P. :..Z|
00016560  3e 20 4c 44 52 20 20 20  20 20 52 39 2c 20 66 69  |> LDR     R9, fi|
00016570  6c 6c 5f 61 64 72 5f 73  63 72 65 65 6e 73 74 6f  |ll_adr_screensto|
00016580  72 65 3b 20 67 65 74 20  73 63 72 65 65 6e 73 74  |re; get screenst|
00016590  6f 72 65 20 61 64 64 72  65 73 73 0d a5 64 14 20  |ore address..d. |
000165a0  4c 44 52 20 20 20 20 20  52 39 2c 5b 52 39 5d 0d  |LDR     R9,[R9].|
000165b0  a5 6e 18 20 4d 4c 41 20  20 20 20 20 52 33 2c 52  |.n. MLA     R3,R|
000165c0  37 2c 52 31 2c 52 39 0d  a5 78 18 20 4d 4c 41 20  |7,R1,R9..x. MLA |
000165d0  20 20 20 20 52 30 2c 52  38 2c 52 32 2c 52 33 0d  |    R0,R8,R2,R3.|
000165e0  a5 82 06 20 3a 0d a5 8c  36 20 4c 44 52 20 20 20  |... :...6 LDR   |
000165f0  20 20 52 39 2c 20 66 69  6c 6c 5f 73 63 72 65 65  |  R9, fill_scree|
00016600  6e 64 61 74 61 20 20 3b  20 67 65 74 20 73 63 72  |ndata  ; get scr|
00016610  65 65 6e 20 61 64 64 72  65 73 73 0d a5 96 18 20  |een address.... |
00016620  4d 4c 41 20 20 20 20 20  52 33 2c 52 37 2c 52 31  |MLA     R3,R7,R1|
00016630  2c 52 39 0d a5 a0 18 20  4d 4c 41 20 20 20 20 20  |,R9.... MLA     |
00016640  52 31 2c 52 38 2c 52 32  2c 52 33 0d a5 aa 06 20  |R1,R8,R2,R3.... |
00016650  3a 0d a5 b4 15 20 2e 66  30 38 30 34 5f 66 69 6c  |:.... .f0804_fil|
00016660  6c 5f 6c 6f 6f 70 0d a5  be 06 20 3a 0d a5 c8 06  |l_loop.... :....|
00016670  20 5d 0d a5 d2 0f 20 e3  20 61 25 3d 31 20 b8 20  | ].... . a%=1 . |
00016680  34 0d a5 dc 0f 20 5b 4f  50 54 20 70 61 73 73 25  |4.... [OPT pass%|
00016690  0d a5 e6 06 20 3a 0d a5  f0 37 20 4c 44 4d 49 41  |.... :...7 LDMIA|
000166a0  20 20 20 52 31 2c 7b 52  33 2d 52 34 7d 20 20 20  |   R1,{R3-R4}   |
000166b0  20 20 20 20 20 20 20 20  3b 20 67 65 74 20 73 6f  |        ; get so|
000166c0  6d 65 20 62 61 63 6b 67  72 6f 75 6e 64 0d a5 fa  |me background...|
000166d0  35 20 53 54 4d 49 41 20  20 20 52 30 2c 7b 52 33  |5 STMIA   R0,{R3|
000166e0  2d 52 34 7d 20 20 20 20  20 20 20 20 20 20 20 3b  |-R4}           ;|
000166f0  20 73 74 6f 72 65 20 6d  61 73 6b 65 64 20 66 69  | store masked fi|
00016700  6c 6c 0d a6 04 06 20 3a  0d a6 0e 1c 20 53 55 42  |ll.... :.... SUB|
00016710  20 20 20 20 20 52 30 2c  52 30 2c 20 23 79 5f 73  |     R0,R0, #y_s|
00016720  68 69 66 74 0d a6 18 1c  20 53 55 42 20 20 20 20  |hift.... SUB    |
00016730  20 52 31 2c 52 31 2c 20  23 79 5f 73 68 69 66 74  | R1,R1, #y_shift|
00016740  0d a6 22 06 20 3a 0d a6  2c 06 20 5d 0d a6 36 06  |..". :..,. ]..6.|
00016750  20 ed 0d a6 40 0f 20 5b  4f 50 54 20 70 61 73 73  | ...@. [OPT pass|
00016760  25 0d a6 4a 06 20 3a 0d  a6 54 1d 20 4c 44 4d 46  |%..J. :..T. LDMF|
00016770  44 20 20 20 52 31 33 21  2c 7b 52 30 2d 52 31 32  |D   R13!,{R0-R12|
00016780  2c 50 43 7d 0d a6 5e 06  20 3a 0d a6 68 06 20 3a  |,PC}..^. :..h. :|
00016790  0d a6 72 06 20 3a 0d a6  7c 14 20 2e 66 69 6c 6c  |..r. :..|. .fill|
000167a0  5f 66 69 6c 6c 5f 31 32  30 38 0d a6 86 06 20 3a  |_fill_1208.... :|
000167b0  0d a6 90 1e 20 53 54 4d  46 44 20 20 20 52 31 33  |.... STMFD   R13|
000167c0  21 2c 7b 52 30 2d 52 31  32 2c 52 31 34 7d 0d a6  |!,{R0-R12,R14}..|
000167d0  9a 06 20 3a 0d a6 a4 2f  20 3a 20 20 20 20 20 20  |.. :.../ :      |
000167e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000167f0  20 20 20 20 20 20 3b 20  52 30 20 66 69 6c 6c 20  |      ; R0 fill |
00016800  6e 6f 2e 0d a6 ae 2e 20  3a 20 20 20 20 20 20 20  |no..... :       |
00016810  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00016820  20 20 20 20 20 3b 20 52  31 20 78 2d 63 6f 6f 72  |     ; R1 x-coor|
00016830  64 0d a6 b8 2e 20 3a 20  20 20 20 20 20 20 20 20  |d.... :         |
00016840  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00016850  20 20 20 3b 20 52 32 20  79 2d 63 6f 6f 72 64 0d  |   ; R2 y-coord.|
00016860  a6 c2 06 20 3a 0d a6 cc  18 20 52 53 42 20 20 20  |... :.... RSB   |
00016870  20 20 52 32 2c 52 32 2c  20 23 32 35 36 0d a6 d6  |  R2,R2, #256...|
00016880  06 20 3a 0d a6 e0 13 20  43 4d 50 20 20 20 20 20  |. :.... CMP     |
00016890  52 31 2c 20 23 30 0d a6  ea 1c 20 42 4c 45 20 20  |R1, #0.... BLE  |
000168a0  20 20 20 70 73 6d 5f 6e  6f 5f 66 69 6c 6c 31 32  |   psm_no_fill12|
000168b0  30 38 0d a6 f4 13 20 43  4d 50 20 20 20 20 20 52  |08.... CMP     R|
000168c0  32 2c 20 23 38 0d a6 fe  1c 20 42 4c 45 20 20 20  |2, #8.... BLE   |
000168d0  20 20 70 73 6d 5f 6e 6f  5f 66 69 6c 6c 31 32 30  |  psm_no_fill120|
000168e0  38 0d a7 08 17 20 43 4d  50 20 20 20 20 20 52 31  |8.... CMP     R1|
000168f0  2c 20 23 33 32 30 2d 38  0d a7 12 1c 20 42 47 45  |, #320-8.... BGE|
00016900  20 20 20 20 20 70 73 6d  5f 6e 6f 5f 66 69 6c 6c  |     psm_no_fill|
00016910  31 32 30 38 0d a7 1c 15  20 43 4d 50 20 20 20 20  |1208.... CMP    |
00016920  20 52 32 2c 20 23 32 35  36 0d a7 26 1c 20 42 47  | R2, #256..&. BG|
00016930  45 20 20 20 20 20 70 73  6d 5f 6e 6f 5f 66 69 6c  |E     psm_no_fil|
00016940  6c 31 32 30 38 0d a7 30  19 20 42 20 20 20 20 20  |l1208..0. B     |
00016950  20 20 70 73 6d 5f 66 69  6c 6c 31 32 30 38 0d a7  |  psm_fill1208..|
00016960  3a 15 20 2e 70 73 6d 5f  6e 6f 5f 66 69 6c 6c 31  |:. .psm_no_fill1|
00016970  32 30 38 0d a7 44 1d 20  4c 44 4d 46 44 20 20 20  |208..D. LDMFD   |
00016980  52 31 33 21 2c 7b 52 30  2d 52 31 32 2c 50 43 7d  |R13!,{R0-R12,PC}|
00016990  0d a7 4e 12 20 2e 70 73  6d 5f 66 69 6c 6c 31 32  |..N. .psm_fill12|
000169a0  30 38 0d a7 58 06 20 3a  0d a7 62 35 20 4d 4f 56  |08..X. :..b5 MOV|
000169b0  20 20 20 20 20 52 37 2c  20 23 78 5f 73 68 69 66  |     R7, #x_shif|
000169c0  74 20 20 20 20 20 20 20  20 20 3b 20 67 65 74 20  |t         ; get |
000169d0  73 63 72 65 65 6e 20 73  68 69 66 74 73 0d a7 6c  |screen shifts..l|
000169e0  19 20 4d 4f 56 20 20 20  20 20 52 38 2c 20 23 79  |. MOV     R8, #y|
000169f0  5f 73 68 69 66 74 0d a7  76 06 20 3a 0d a7 80 3e  |_shift..v. :...>|
00016a00  20 4c 44 52 20 20 20 20  20 52 39 2c 20 66 69 6c  | LDR     R9, fil|
00016a10  6c 5f 61 64 72 5f 73 63  72 65 65 6e 73 74 6f 72  |l_adr_screenstor|
00016a20  65 3b 20 67 65 74 20 73  63 72 65 65 6e 73 74 6f  |e; get screensto|
00016a30  72 65 20 61 64 64 72 65  73 73 0d a7 8a 14 20 4c  |re address.... L|
00016a40  44 52 20 20 20 20 20 52  39 2c 5b 52 39 5d 0d a7  |DR     R9,[R9]..|
00016a50  94 18 20 4d 4c 41 20 20  20 20 20 52 33 2c 52 37  |.. MLA     R3,R7|
00016a60  2c 52 31 2c 52 39 0d a7  9e 18 20 4d 4c 41 20 20  |,R1,R9.... MLA  |
00016a70  20 20 20 52 30 2c 52 38  2c 52 32 2c 52 33 0d a7  |   R0,R8,R2,R3..|
00016a80  a8 06 20 3a 0d a7 b2 36  20 4c 44 52 20 20 20 20  |.. :...6 LDR    |
00016a90  20 52 39 2c 20 66 69 6c  6c 5f 73 63 72 65 65 6e  | R9, fill_screen|
00016aa0  64 61 74 61 20 20 3b 20  67 65 74 20 73 63 72 65  |data  ; get scre|
00016ab0  65 6e 20 61 64 64 72 65  73 73 0d a7 bc 18 20 4d  |en address.... M|
00016ac0  4c 41 20 20 20 20 20 52  33 2c 52 37 2c 52 31 2c  |LA     R3,R7,R1,|
00016ad0  52 39 0d a7 c6 18 20 4d  4c 41 20 20 20 20 20 52  |R9.... MLA     R|
00016ae0  31 2c 52 38 2c 52 32 2c  52 33 0d a7 d0 06 20 3a  |1,R8,R2,R3.... :|
00016af0  0d a7 da 06 20 5d 0d a7  e4 0f 20 e3 20 61 25 3d  |.... ].... . a%=|
00016b00  31 20 b8 20 38 0d a7 ee  0f 20 5b 4f 50 54 20 70  |1 . 8.... [OPT p|
00016b10  61 73 73 25 0d a7 f8 06  20 3a 0d a8 02 34 20 4c  |ass%.... :...4 L|
00016b20  44 4d 49 41 20 20 20 52  31 2c 7b 52 33 2d 52 35  |DMIA   R1,{R3-R5|
00016b30  7d 20 20 20 20 20 20 20  20 3b 20 67 65 74 20 73  |}        ; get s|
00016b40  6f 6d 65 20 62 61 63 6b  67 72 6f 75 6e 64 0d a8  |ome background..|
00016b50  0c 32 20 53 54 4d 49 41  20 20 20 52 30 2c 7b 52  |.2 STMIA   R0,{R|
00016b60  33 2d 52 35 7d 20 20 20  20 20 20 20 20 3b 20 73  |3-R5}        ; s|
00016b70  74 6f 72 65 20 6d 61 73  6b 65 64 20 66 69 6c 6c  |tore masked fill|
00016b80  0d a8 16 06 20 3a 0d a8  20 1c 20 53 55 42 20 20  |.... :.. . SUB  |
00016b90  20 20 20 52 30 2c 52 30  2c 20 23 79 5f 73 68 69  |   R0,R0, #y_shi|
00016ba0  66 74 0d a8 2a 1c 20 53  55 42 20 20 20 20 20 52  |ft..*. SUB     R|
00016bb0  31 2c 52 31 2c 20 23 79  5f 73 68 69 66 74 0d a8  |1,R1, #y_shift..|
00016bc0  34 06 20 3a 0d a8 3e 06  20 5d 0d a8 48 06 20 ed  |4. :..>. ]..H. .|
00016bd0  0d a8 52 0f 20 5b 4f 50  54 20 70 61 73 73 25 0d  |..R. [OPT pass%.|
00016be0  a8 5c 06 20 3a 0d a8 66  1d 20 4c 44 4d 46 44 20  |.\. :..f. LDMFD |
00016bf0  20 20 52 31 33 21 2c 7b  52 30 2d 52 31 32 2c 50  |  R13!,{R0-R12,P|
00016c00  43 7d 0d a8 70 06 20 3a  0d a8 7a 06 20 3a 0d a8  |C}..p. :..z. :..|
00016c10  84 06 20 3a 0d a8 8e 14  20 2e 66 69 6c 6c 5f 66  |.. :.... .fill_f|
00016c20  69 6c 6c 5f 31 36 31 36  0d a8 98 06 20 3a 0d a8  |ill_1616.... :..|
00016c30  a2 1e 20 53 54 4d 46 44  20 20 20 52 31 33 21 2c  |.. STMFD   R13!,|
00016c40  7b 52 30 2d 52 31 32 2c  52 31 34 7d 0d a8 ac 06  |{R0-R12,R14}....|
00016c50  20 3a 0d a8 b6 18 20 52  53 42 20 20 20 20 20 52  | :.... RSB     R|
00016c60  32 2c 52 32 2c 20 23 32  35 36 0d a8 c0 06 20 3a  |2,R2, #256.... :|
00016c70  0d a8 ca 13 20 43 4d 50  20 20 20 20 20 52 31 2c  |.... CMP     R1,|
00016c80  20 23 30 0d a8 d4 1c 20  42 4c 45 20 20 20 20 20  | #0.... BLE     |
00016c90  70 73 6d 5f 6e 6f 5f 66  69 6c 6c 31 36 31 36 0d  |psm_no_fill1616.|
00016ca0  a8 de 14 20 43 4d 50 20  20 20 20 20 52 32 2c 20  |... CMP     R2, |
00016cb0  23 31 36 0d a8 e8 1c 20  42 4c 45 20 20 20 20 20  |#16.... BLE     |
00016cc0  70 73 6d 5f 6e 6f 5f 66  69 6c 6c 31 36 31 36 0d  |psm_no_fill1616.|
00016cd0  a8 f2 18 20 43 4d 50 20  20 20 20 20 52 31 2c 20  |... CMP     R1, |
00016ce0  23 33 32 30 2d 31 36 0d  a8 fc 1c 20 42 47 45 20  |#320-16.... BGE |
00016cf0  20 20 20 20 70 73 6d 5f  6e 6f 5f 66 69 6c 6c 31  |    psm_no_fill1|
00016d00  36 31 36 0d a9 06 15 20  43 4d 50 20 20 20 20 20  |616.... CMP     |
00016d10  52 32 2c 20 23 32 35 36  0d a9 10 1c 20 42 47 45  |R2, #256.... BGE|
00016d20  20 20 20 20 20 70 73 6d  5f 6e 6f 5f 66 69 6c 6c  |     psm_no_fill|
00016d30  31 36 31 36 0d a9 1a 19  20 42 20 20 20 20 20 20  |1616.... B      |
00016d40  20 70 73 6d 5f 66 69 6c  6c 31 36 31 36 0d a9 24  | psm_fill1616..$|
00016d50  15 20 2e 70 73 6d 5f 6e  6f 5f 66 69 6c 6c 31 36  |. .psm_no_fill16|
00016d60  31 36 0d a9 2e 1d 20 4c  44 4d 46 44 20 20 20 52  |16.... LDMFD   R|
00016d70  31 33 21 2c 7b 52 30 2d  52 31 32 2c 50 43 7d 0d  |13!,{R0-R12,PC}.|
00016d80  a9 38 12 20 2e 70 73 6d  5f 66 69 6c 6c 31 36 31  |.8. .psm_fill161|
00016d90  36 0d a9 42 06 20 3a 0d  a9 4c 35 20 4d 4f 56 20  |6..B. :..L5 MOV |
00016da0  20 20 20 20 52 37 2c 20  23 78 5f 73 68 69 66 74  |    R7, #x_shift|
00016db0  20 20 20 20 20 20 20 20  20 3b 20 67 65 74 20 73  |         ; get s|
00016dc0  63 72 65 65 6e 20 73 68  69 66 74 73 0d a9 56 19  |creen shifts..V.|
00016dd0  20 4d 4f 56 20 20 20 20  20 52 38 2c 20 23 79 5f  | MOV     R8, #y_|
00016de0  73 68 69 66 74 0d a9 60  06 20 3a 0d a9 6a 3e 20  |shift..`. :..j> |
00016df0  4c 44 52 20 20 20 20 20  52 39 2c 20 66 69 6c 6c  |LDR     R9, fill|
00016e00  5f 61 64 72 5f 73 63 72  65 65 6e 73 74 6f 72 65  |_adr_screenstore|
00016e10  3b 20 67 65 74 20 73 63  72 65 65 6e 73 74 6f 72  |; get screenstor|
00016e20  65 20 61 64 64 72 65 73  73 0d a9 74 14 20 4c 44  |e address..t. LD|
00016e30  52 20 20 20 20 20 52 39  2c 5b 52 39 5d 0d a9 7e  |R     R9,[R9]..~|
00016e40  18 20 4d 4c 41 20 20 20  20 20 52 33 2c 52 37 2c  |. MLA     R3,R7,|
00016e50  52 31 2c 52 39 0d a9 88  18 20 4d 4c 41 20 20 20  |R1,R9.... MLA   |
00016e60  20 20 52 30 2c 52 38 2c  52 32 2c 52 33 0d a9 92  |  R0,R8,R2,R3...|
00016e70  06 20 3a 0d a9 9c 36 20  4c 44 52 20 20 20 20 20  |. :...6 LDR     |
00016e80  52 39 2c 20 66 69 6c 6c  5f 73 63 72 65 65 6e 64  |R9, fill_screend|
00016e90  61 74 61 20 20 3b 20 67  65 74 20 73 63 72 65 65  |ata  ; get scree|
00016ea0  6e 20 61 64 64 72 65 73  73 0d a9 a6 18 20 4d 4c  |n address.... ML|
00016eb0  41 20 20 20 20 20 52 33  2c 52 37 2c 52 31 2c 52  |A     R3,R7,R1,R|
00016ec0  39 0d a9 b0 18 20 4d 4c  41 20 20 20 20 20 52 31  |9.... MLA     R1|
00016ed0  2c 52 38 2c 52 32 2c 52  33 0d a9 ba 06 20 3a 0d  |,R8,R2,R3.... :.|
00016ee0  a9 c4 13 20 4d 4f 56 20  20 20 20 20 52 33 2c 20  |... MOV     R3, |
00016ef0  23 31 0d a9 ce 1e 20 53  54 52 20 20 20 20 20 52  |#1.... STR     R|
00016f00  33 2c 20 66 31 36 31 36  5f 63 6f 75 6e 74 65 72  |3, f1616_counter|
00016f10  0d a9 d8 06 20 3a 0d a9  e2 15 20 2e 66 31 36 31  |.... :.... .f161|
00016f20  36 5f 66 69 6c 6c 5f 6c  6f 6f 70 0d a9 ec 06 20  |6_fill_loop.... |
00016f30  3a 0d a9 f6 06 20 5d 0d  aa 00 0f 20 e3 20 61 25  |:.... ].... . a%|
00016f40  3d 31 20 b8 20 34 0d aa  0a 0f 20 5b 4f 50 54 20  |=1 . 4.... [OPT |
00016f50  70 61 73 73 25 0d aa 14  06 20 3a 0d aa 1e 17 20  |pass%.... :.... |
00016f60  4c 44 4d 49 41 20 20 20  52 31 2c 7b 52 32 2d 52  |LDMIA   R1,{R2-R|
00016f70  35 7d 0d aa 28 17 20 53  54 4d 49 41 20 20 20 52  |5}..(. STMIA   R|
00016f80  30 2c 7b 52 32 2d 52 35  7d 0d aa 32 06 20 3a 0d  |0,{R2-R5}..2. :.|
00016f90  aa 3c 1c 20 53 55 42 20  20 20 20 20 52 30 2c 52  |.<. SUB     R0,R|
00016fa0  30 2c 20 23 79 5f 73 68  69 66 74 0d aa 46 1c 20  |0, #y_shift..F. |
00016fb0  53 55 42 20 20 20 20 20  52 31 2c 52 31 2c 20 23  |SUB     R1,R1, #|
00016fc0  79 5f 73 68 69 66 74 0d  aa 50 06 20 3a 0d aa 5a  |y_shift..P. :..Z|
00016fd0  06 20 5d 0d aa 64 06 20  ed 0d aa 6e 0f 20 5b 4f  |. ]..d. ...n. [O|
00016fe0  50 54 20 70 61 73 73 25  0d aa 78 06 20 3a 0d aa  |PT pass%..x. :..|
00016ff0  82 1e 20 4c 44 52 20 20  20 20 20 52 33 2c 20 66  |.. LDR     R3, f|
00017000  31 36 31 36 5f 63 6f 75  6e 74 65 72 0d aa 8c 16  |1616_counter....|
00017010  20 41 44 44 20 20 20 20  20 52 33 2c 52 33 2c 20  | ADD     R3,R3, |
00017020  23 31 0d aa 96 1e 20 53  54 52 20 20 20 20 20 52  |#1.... STR     R|
00017030  33 2c 20 66 31 36 31 36  5f 63 6f 75 6e 74 65 72  |3, f1616_counter|
00017040  0d aa a0 13 20 43 4d 50  20 20 20 20 20 52 33 2c  |.... CMP     R3,|
00017050  20 23 34 0d aa aa 1c 20  42 4c 45 20 20 20 20 20  | #4.... BLE     |
00017060  66 31 36 31 36 5f 66 69  6c 6c 5f 6c 6f 6f 70 0d  |f1616_fill_loop.|
00017070  aa b4 06 20 3a 0d aa be  1d 20 4c 44 4d 46 44 20  |... :.... LDMFD |
00017080  20 20 52 31 33 21 2c 7b  52 30 2d 52 31 32 2c 50  |  R13!,{R0-R12,P|
00017090  43 7d 0d aa c8 06 20 3a  0d aa d2 13 20 2e 66 31  |C}.... :.... .f1|
000170a0  36 31 36 5f 63 6f 75 6e  74 65 72 0d aa dc 0e 20  |616_counter.... |
000170b0  45 51 55 44 20 20 20 20  30 0d aa e6 06 20 3a 0d  |EQUD    0.... :.|
000170c0  aa f0 06 20 3a 0d aa fa  06 20 3a 0d ab 04 14 20  |... :.... :.... |
000170d0  2e 66 69 6c 6c 5f 66 69  6c 6c 5f 30 31 30 31 0d  |.fill_fill_0101.|
000170e0  ab 0e 06 20 3a 0d ab 18  1e 20 53 54 4d 46 44 20  |... :.... STMFD |
000170f0  20 20 52 31 33 21 2c 7b  52 30 2d 52 31 32 2c 52  |  R13!,{R0-R12,R|
00017100  31 34 7d 0d ab 22 06 20  3a 0d ab 2c 18 20 52 53  |14}..". :..,. RS|
00017110  42 20 20 20 20 20 52 32  2c 52 32 2c 20 23 32 35  |B     R2,R2, #25|
00017120  36 0d ab 36 06 20 3a 0d  ab 40 13 20 43 4d 50 20  |6..6. :..@. CMP |
00017130  20 20 20 20 52 31 2c 20  23 30 0d ab 4a 1c 20 42  |    R1, #0..J. B|
00017140  4c 45 20 20 20 20 20 70  73 6d 5f 6e 6f 5f 66 69  |LE     psm_no_fi|
00017150  6c 6c 30 31 30 31 0d ab  54 13 20 43 4d 50 20 20  |ll0101..T. CMP  |
00017160  20 20 20 52 32 2c 20 23  30 0d ab 5e 1c 20 42 4c  |   R2, #0..^. BL|
00017170  45 20 20 20 20 20 70 73  6d 5f 6e 6f 5f 66 69 6c  |E     psm_no_fil|
00017180  6c 30 31 30 31 0d ab 68  15 20 43 4d 50 20 20 20  |l0101..h. CMP   |
00017190  20 20 52 31 2c 20 23 33  32 30 0d ab 72 1c 20 42  |  R1, #320..r. B|
000171a0  47 45 20 20 20 20 20 70  73 6d 5f 6e 6f 5f 66 69  |GE     psm_no_fi|
000171b0  6c 6c 30 31 30 31 0d ab  7c 15 20 43 4d 50 20 20  |ll0101..|. CMP  |
000171c0  20 20 20 52 32 2c 20 23  32 35 36 0d ab 86 1c 20  |   R2, #256.... |
000171d0  42 47 45 20 20 20 20 20  70 73 6d 5f 6e 6f 5f 66  |BGE     psm_no_f|
000171e0  69 6c 6c 30 31 30 31 0d  ab 90 19 20 42 20 20 20  |ill0101.... B   |
000171f0  20 20 20 20 70 73 6d 5f  66 69 6c 6c 30 31 30 31  |    psm_fill0101|
00017200  0d ab 9a 15 20 2e 70 73  6d 5f 6e 6f 5f 66 69 6c  |.... .psm_no_fil|
00017210  6c 30 31 30 31 0d ab a4  1d 20 4c 44 4d 46 44 20  |l0101.... LDMFD |
00017220  20 20 52 31 33 21 2c 7b  52 30 2d 52 31 32 2c 50  |  R13!,{R0-R12,P|
00017230  43 7d 0d ab ae 12 20 2e  70 73 6d 5f 66 69 6c 6c  |C}.... .psm_fill|
00017240  30 31 30 31 0d ab b8 06  20 3a 0d ab c2 35 20 4d  |0101.... :...5 M|
00017250  4f 56 20 20 20 20 20 52  37 2c 20 23 78 5f 73 68  |OV     R7, #x_sh|
00017260  69 66 74 20 20 20 20 20  20 20 20 20 3b 20 67 65  |ift         ; ge|
00017270  74 20 73 63 72 65 65 6e  20 73 68 69 66 74 73 0d  |t screen shifts.|
00017280  ab cc 19 20 4d 4f 56 20  20 20 20 20 52 38 2c 20  |... MOV     R8, |
00017290  23 79 5f 73 68 69 66 74  0d ab d6 06 20 3a 0d ab  |#y_shift.... :..|
000172a0  e0 3e 20 4c 44 52 20 20  20 20 20 52 39 2c 20 66  |.> LDR     R9, f|
000172b0  69 6c 6c 5f 61 64 72 5f  73 63 72 65 65 6e 73 74  |ill_adr_screenst|
000172c0  6f 72 65 3b 20 67 65 74  20 73 63 72 65 65 6e 73  |ore; get screens|
000172d0  74 6f 72 65 20 61 64 64  72 65 73 73 0d ab ea 14  |tore address....|
000172e0  20 4c 44 52 20 20 20 20  20 52 39 2c 5b 52 39 5d  | LDR     R9,[R9]|
000172f0  0d ab f4 18 20 4d 4c 41  20 20 20 20 20 52 33 2c  |.... MLA     R3,|
00017300  52 37 2c 52 31 2c 52 39  0d ab fe 18 20 4d 4c 41  |R7,R1,R9.... MLA|
00017310  20 20 20 20 20 52 30 2c  52 38 2c 52 32 2c 52 33  |     R0,R8,R2,R3|
00017320  0d ac 08 06 20 3a 0d ac  12 36 20 4c 44 52 20 20  |.... :...6 LDR  |
00017330  20 20 20 52 39 2c 20 66  69 6c 6c 5f 73 63 72 65  |   R9, fill_scre|
00017340  65 6e 64 61 74 61 20 20  3b 20 67 65 74 20 73 63  |endata  ; get sc|
00017350  72 65 65 6e 20 61 64 64  72 65 73 73 0d ac 1c 18  |reen address....|
00017360  20 4d 4c 41 20 20 20 20  20 52 33 2c 52 37 2c 52  | MLA     R3,R7,R|
00017370  31 2c 52 39 0d ac 26 18  20 4d 4c 41 20 20 20 20  |1,R9..&. MLA    |
00017380  20 52 31 2c 52 38 2c 52  32 2c 52 33 0d ac 30 06  | R1,R8,R2,R3..0.|
00017390  20 3a 0d ac 3a 14 20 4c  44 52 42 20 20 20 20 52  | :..:. LDRB    R|
000173a0  32 2c 5b 52 31 5d 0d ac  44 14 20 53 54 52 42 20  |2,[R1]..D. STRB |
000173b0  20 20 20 52 32 2c 5b 52  30 5d 0d ac 4e 06 20 3a  |   R2,[R0]..N. :|
000173c0  0d ac 58 1d 20 4c 44 4d  46 44 20 20 20 52 31 33  |..X. LDMFD   R13|
000173d0  21 2c 7b 52 30 2d 52 31  32 2c 50 43 7d 0d ac 62  |!,{R0-R12,PC}..b|
000173e0  06 20 3a 0d ac 6c 06 20  5d 0d ac 76 05 ed 0d ac  |. :..l. ]..v....|
000173f0  80 05 3a 0d ac 8a 19 21  63 6c 5f 61 64 72 5f 73  |..:....!cl_adr_s|
00017400  63 72 65 65 6e 3d 73 63  72 65 65 6e 0d ac 94 10  |creen=screen....|
00017410  e3 20 61 25 3d 30 20 b8  20 32 35 35 0d ac 9e 14  |. a%=0 . 255....|
00017420  20 72 25 3d b6 b6 28 61  25 2a 32 35 36 5e 33 29  | r%=..(a%*256^3)|
00017430  0d ac a8 11 20 67 25 3d  b6 28 61 25 2a 32 35 36  |.... g%=.(a%*256|
00017440  29 0d ac b2 0a 20 62 25  3d 61 25 0d ac bc 4c 20  |).... b%=a%...L |
00017450  c8 99 20 22 43 6f 6c 6f  75 72 54 72 61 6e 73 5f  |.. "ColourTrans_|
00017460  52 65 74 75 72 6e 43 6f  6c 6f 75 72 4e 75 6d 62  |ReturnColourNumb|
00017470  65 72 22 2c 28 72 25 3c  3c 38 29 2b 28 67 25 3c  |er",(r%<<8)+(g%<|
00017480  3c 31 36 29 2b 28 62 25  3c 3c 32 34 29 20 b8 20  |<16)+(b%<<24) . |
00017490  63 6f 6c 6f 75 72 25 0d  ac c6 1e 20 21 28 66 6c  |colour%.... !(fl|
000174a0  61 6d 65 5f 66 61 64 65  25 2b 61 25 29 3d 63 6f  |ame_fade%+a%)=co|
000174b0  6c 6f 75 72 25 0d ac d0  05 ed 0d ac da 05 3a 0d  |lour%.........:.|
000174c0  ac e4 10 e3 20 61 25 3d  30 20 b8 20 32 35 35 0d  |.... a%=0 . 255.|
000174d0  ac ee 0f 20 72 25 3d 36  34 2b 61 25 2f 32 0d ac  |... r%=64+a%/2..|
000174e0  f8 10 20 67 25 3d 31 32  38 2b 61 25 2f 32 0d ad  |.. g%=128+a%/2..|
000174f0  02 10 20 62 25 3d 31 32  38 2b 61 25 2f 32 0d ad  |.. b%=128+a%/2..|
00017500  0c 4c 20 c8 99 20 22 43  6f 6c 6f 75 72 54 72 61  |.L .. "ColourTra|
00017510  6e 73 5f 52 65 74 75 72  6e 43 6f 6c 6f 75 72 4e  |ns_ReturnColourN|
00017520  75 6d 62 65 72 22 2c 28  72 25 3c 3c 38 29 2b 28  |umber",(r%<<8)+(|
00017530  67 25 3c 3c 31 36 29 2b  28 62 25 3c 3c 32 34 29  |g%<<16)+(b%<<24)|
00017540  20 b8 20 63 6f 6c 6f 75  72 25 0d ad 16 1c 20 21  | . colour%.... !|
00017550  28 67 75 6e 5f 66 61 64  65 25 2b 61 25 29 3d 63  |(gun_fade%+a%)=c|
00017560  6f 6c 6f 75 72 25 0d ad  20 05 ed 0d ad 2a 05 3a  |olour%.. ....*.:|
00017570  0d ad 34 3d 63 25 3d 8e  28 22 3c 54 68 69 73 24  |..4=c%=.("<This$|
00017580  44 69 72 3e 2e 4c 65 76  65 6c 73 2e 4c 65 76 65  |Dir>.Levels.Leve|
00017590  6c 22 2b c3 28 73 63 72  6e 25 29 2b 22 2e 50 6f  |l"+.(scrn%)+".Po|
000175a0  73 6e 22 2b c3 28 73 63  72 6e 25 29 29 0d ad 3e  |sn"+.(scrn%))..>|
000175b0  0e e3 20 61 25 3d 30 20  b8 20 37 0d ad 48 0c 20  |.. a%=0 . 7..H. |
000175c0  e8 23 63 25 2c 78 25 0d  ad 52 0c 20 e8 23 63 25  |.#c%,x%..R. .#c%|
000175d0  2c 79 25 0d ad 5c 19 20  21 28 61 25 2a 38 2b 70  |,y%..\. !(a%*8+p|
000175e0  6f 73 69 74 69 6f 6e 73  29 3d 78 25 0d ad 66 1b  |ositions)=x%..f.|
000175f0  20 21 28 61 25 2a 38 2b  34 2b 70 6f 73 69 74 69  | !(a%*8+4+positi|
00017600  6f 6e 73 29 3d 79 25 0d  ad 70 05 ed 0d ad 7a 08  |ons)=y%..p....z.|
00017610  d9 23 63 25 0d ad 84 05  3a 0d ad 8e 0d 70 25 3d  |.#c%....:....p%=|
00017620  63 6c 69 73 74 25 0d ad  98 10 e3 20 61 25 3d 31  |clist%..... a%=1|
00017630  20 b8 20 36 34 30 0d ad  a2 11 20 f2 61 64 64 5f  | . 640.... .add_|
00017640  63 65 6c 6c 28 30 29 0d  ad ac 05 ed 0d ad b6 11  |cell(0).........|
00017650  f2 61 64 64 5f 63 65 6c  6c 28 2d 31 29 0d ad c0  |.add_cell(-1)...|
00017660  05 3a 0d ad ca 0d 70 25  3d 73 6c 69 73 74 25 0d  |.:....p%=slist%.|
00017670  ad d4 0f e3 20 61 25 3d  31 20 b8 20 36 34 0d ad  |.... a%=1 . 64..|
00017680  de 19 20 f2 61 64 64 5f  73 70 72 69 74 65 28 30  |.. .add_sprite(0|
00017690  2c 30 2c 30 2c 30 29 0d  ad e8 05 ed 0d ad f2 19  |,0,0,0).........|
000176a0  f2 61 64 64 5f 73 70 72  69 74 65 28 30 2c 30 2c  |.add_sprite(0,0,|
000176b0  2d 31 2c 30 29 0d ad fc  0d 70 25 3d 73 6c 69 73  |-1,0)....p%=slis|
000176c0  74 25 0d ae 06 0f e3 20  61 25 3d 31 20 b8 20 31  |t%..... a%=1 . 1|
000176d0  36 0d ae 10 19 20 f2 61  64 64 5f 73 70 72 69 74  |6.... .add_sprit|
000176e0  65 28 30 2c 30 2c 30 2c  30 29 0d ae 1a 05 ed 0d  |e(0,0,0,0)......|
000176f0  ae 24 3e 63 25 3d 8e 28  22 3c 54 68 69 73 24 44  |.$>c%=.("<This$D|
00017700  69 72 3e 2e 4c 65 76 65  6c 73 2e 4c 65 76 65 6c  |ir>.Levels.Level|
00017710  22 2b c3 28 73 63 72 6e  25 29 2b 22 2e 44 6f 6f  |"+.(scrn%)+".Doo|
00017720  72 73 22 2b c3 28 73 63  72 6e 25 29 29 0d ae 2e  |rs"+.(scrn%))...|
00017730  0e e3 20 61 25 3d 31 20  b8 20 34 0d ae 38 0c 20  |.. a%=1 . 4..8. |
00017740  e8 23 63 25 2c 78 25 0d  ae 42 0c 20 e8 23 63 25  |.#c%,x%..B. .#c%|
00017750  2c 79 25 0d ae 4c 0c 20  e8 23 63 25 2c 74 25 0d  |,y%..L. .#c%,t%.|
00017760  ae 56 0c 20 e8 23 63 25  2c 69 25 0d ae 60 1d 20  |.V. .#c%,i%..`. |
00017770  f2 61 64 64 5f 73 70 72  69 74 65 28 78 25 2c 79  |.add_sprite(x%,y|
00017780  25 2c 31 33 2c 69 25 29  0d ae 6a 05 ed 0d ae 74  |%,13,i%)..j....t|
00017790  08 d9 23 63 25 0d ae 7e  39 63 25 3d 8e 28 22 3c  |..#c%..~9c%=.("<|
000177a0  54 68 69 73 24 44 69 72  3e 2e 4c 65 76 65 6c 73  |This$Dir>.Levels|
000177b0  2e 4c 65 76 65 6c 22 2b  c3 28 73 63 72 6e 25 29  |.Level"+.(scrn%)|
000177c0  2b 22 2e 47 53 77 69 74  63 68 65 73 22 29 0d ae  |+".GSwitches")..|
000177d0  88 0e e3 20 61 25 3d 31  20 b8 20 34 0d ae 92 0c  |... a%=1 . 4....|
000177e0  20 e8 23 63 25 2c 78 25  0d ae 9c 0c 20 e8 23 63  | .#c%,x%.... .#c|
000177f0  25 2c 79 25 0d ae a6 0c  20 e8 23 63 25 2c 74 25  |%,y%.... .#c%,t%|
00017800  0d ae b0 0c 20 e8 23 63  25 2c 69 25 0d ae ba 1d  |.... .#c%,i%....|
00017810  20 f2 61 64 64 5f 73 70  72 69 74 65 28 78 25 2c  | .add_sprite(x%,|
00017820  79 25 2c 31 34 2c 61 25  29 0d ae c4 05 ed 0d ae  |y%,14,a%).......|
00017830  ce 08 d9 23 63 25 0d ae  d8 3d 63 25 3d 8e 28 22  |...#c%...=c%=.("|
00017840  3c 54 68 69 73 24 44 69  72 3e 2e 4c 65 76 65 6c  |<This$Dir>.Level|
00017850  73 2e 4c 65 76 65 6c 22  2b c3 28 73 63 72 6e 25  |s.Level"+.(scrn%|
00017860  29 2b 22 2e 47 75 6e 73  22 2b c3 28 73 63 72 6e  |)+".Guns"+.(scrn|
00017870  25 29 29 0d ae e2 0e e3  20 61 25 3d 31 20 b8 20  |%))..... a%=1 . |
00017880  34 0d ae ec 0c 20 e8 23  63 25 2c 78 25 0d ae f6  |4.... .#c%,x%...|
00017890  0c 20 e8 23 63 25 2c 79  25 0d af 00 0c 20 e8 23  |. .#c%,y%.... .#|
000178a0  63 25 2c 74 25 0d af 0a  0c 20 e8 23 63 25 2c 69  |c%,t%.... .#c%,i|
000178b0  25 0d af 14 1d 20 f2 61  64 64 5f 73 70 72 69 74  |%.... .add_sprit|
000178c0  65 28 78 25 2c 79 25 2c  31 35 2c 61 25 29 0d af  |e(x%,y%,15,a%)..|
000178d0  1e 05 ed 0d af 28 08 d9  23 63 25 0d af 32 2d f2  |.....(..#c%..2-.|
000178e0  61 64 64 5f 73 70 72 69  74 65 28 31 31 31 36 2c  |add_sprite(1116,|
000178f0  33 32 2c 32 2c 28 31 32  38 3c 3c 38 29 2b 28 31  |32,2,(128<<8)+(1|
00017900  32 38 3c 3c 31 36 29 29  0d af 3c 2c f2 61 64 64  |28<<16))..<,.add|
00017910  5f 73 70 72 69 74 65 28  38 34 2c 37 34 38 2c 31  |_sprite(84,748,1|
00017920  2c 28 31 32 38 3c 3c 38  29 2b 28 31 32 38 3c 3c  |,(128<<8)+(128<<|
00017930  31 36 29 29 0d af 46 3f  63 25 3d 8e 28 22 3c 54  |16))..F?c%=.("<T|
00017940  68 69 73 24 44 69 72 3e  2e 4c 65 76 65 6c 73 2e  |his$Dir>.Levels.|
00017950  4c 65 76 65 6c 22 2b c3  28 73 63 72 6e 25 29 2b  |Level"+.(scrn%)+|
00017960  22 2e 46 6c 61 6d 65 73  22 2b c3 28 73 63 72 6e  |".Flames"+.(scrn|
00017970  25 29 29 0d af 50 0f e3  20 61 25 3d 31 20 b8 20  |%))..P.. a%=1 . |
00017980  31 36 0d af 5a 0c 20 e8  23 63 25 2c 78 25 0d af  |16..Z. .#c%,x%..|
00017990  64 0c 20 e8 23 63 25 2c  79 25 0d af 6e 0c 20 e8  |d. .#c%,y%..n. .|
000179a0  23 63 25 2c 74 25 0d af  78 0c 20 e8 23 63 25 2c  |#c%,t%..x. .#c%,|
000179b0  69 25 0d af 82 1c 20 f2  61 64 64 5f 73 70 72 69  |i%.... .add_spri|
000179c0  74 65 28 78 25 2c 79 25  2c 33 2c 69 25 29 0d af  |te(x%,y%,3,i%)..|
000179d0  8c 05 ed 0d af 96 08 d9  23 63 25 0d af a0 0b d6  |........#c%.....|
000179e0  20 73 74 61 72 74 0d af  aa 12 d6 20 63 6c 65 61  | start..... clea|
000179f0  72 5f 73 63 72 65 65 6e  0d af b4 05 e1 0d af be  |r_screen........|
00017a00  05 3a 0d af c8 05 3a 0d  af d2 05 3a 0d af dc 0c  |.:....:....:....|
00017a10  dd 20 f2 65 72 72 6f 72  0d af e6 18 c8 99 20 22  |. .error...... "|
00017a20  48 6f 75 72 67 6c 61 73  73 5f 53 6d 61 73 68 22  |Hourglass_Smash"|
00017a30  0d af f0 08 c8 97 20 87  0d af fa 0c e7 20 9f 3d  |...... ...... .=|
00017a40  31 37 20 8c 0d b0 04 17  20 c8 99 20 22 4f 53 5f  |17 ..... .. "OS_|
00017a50  42 79 74 65 22 2c 31 31  32 2c 31 0d b0 0e 06 20  |Byte",112,1.... |
00017a60  db 0d b0 18 17 20 c8 99  20 22 4f 53 5f 42 79 74  |..... .. "OS_Byt|
00017a70  65 22 2c 31 31 33 2c 31  0d b0 22 05 cc 0d b0 2c  |e",113,1.."....,|
00017a80  17 20 c8 99 20 22 4f 53  5f 42 79 74 65 22 2c 31  |. .. "OS_Byte",1|
00017a90  31 32 2c 31 0d b0 36 06  20 db 0d b0 40 17 20 c8  |12,1..6. ...@. .|
00017aa0  99 20 22 4f 53 5f 42 79  74 65 22 2c 31 31 33 2c  |. "OS_Byte",113,|
00017ab0  31 0d b0 4a 17 20 f1 20  f6 24 3b 22 20 61 74 20  |1..J. . .$;" at |
00017ac0  6c 69 6e 65 20 22 3b 9e  0d b0 54 05 cd 0d b0 5e  |line ";...T....^|
00017ad0  05 e1 0d b0 68 05 3a 0d  b0 72 05 3a 0d b0 7c 05  |....h.:..r.:..|.|
00017ae0  3a 0d b0 86 1a dd 20 a4  62 6f 72 64 65 72 63 6f  |:..... .borderco|
00017af0  6c 28 72 25 2c 67 25 2c  62 25 29 0d b0 90 0f 20  |l(r%,g%,b%).... |
00017b00  5b 4f 50 54 20 70 61 73  73 25 0d b0 9a 13 3b 53  |[OPT pass%....;S|
00017b10  57 49 20 20 20 20 20 32  35 36 2b 31 39 0d b0 a4  |WI     256+19...|
00017b20  12 3b 53 57 49 20 20 20  20 20 32 35 36 2b 30 0d  |.;SWI     256+0.|
00017b30  b0 ae 13 3b 53 57 49 20  20 20 20 20 32 35 36 2b  |...;SWI     256+|
00017b40  32 34 0d b0 b8 13 3b 53  57 49 20 20 20 20 20 32  |24....;SWI     2|
00017b50  35 36 2b 72 25 0d b0 c2  13 3b 53 57 49 20 20 20  |56+r%....;SWI   |
00017b60  20 20 32 35 36 2b 67 25  0d b0 cc 13 3b 53 57 49  |  256+g%....;SWI|
00017b70  20 20 20 20 20 32 35 36  2b 62 25 0d b0 d6 06 20  |     256+b%.... |
00017b80  5d 0d b0 e0 06 3d 30 0d  b0 ea 05 3a 0d b0 f4 05  |]....=0....:....|
00017b90  3a 0d b0 fe 05 3a 0d b1  08 1e dd 20 f2 61 64 64  |:....:..... .add|
00017ba0  5f 73 70 72 69 74 65 28  78 25 2c 79 25 2c 74 25  |_sprite(x%,y%,t%|
00017bb0  2c 69 25 29 0d b1 12 0f  21 28 70 25 2b 30 30 29  |,i%)....!(p%+00)|
00017bc0  3d 74 25 0d b1 1c 0f 21  28 70 25 2b 30 34 29 3d  |=t%....!(p%+04)=|
00017bd0  78 25 0d b1 26 0f 21 28  70 25 2b 30 38 29 3d 79  |x%..&.!(p%+08)=y|
00017be0  25 0d b1 30 0f 21 28 70  25 2b 31 32 29 3d 69 25  |%..0.!(p%+12)=i%|
00017bf0  0d b1 3a 0a 70 25 2b 3d  31 36 0d b1 44 05 e1 0d  |..:.p%+=16..D...|
00017c00  b1 4e 05 3a 0d b1 58 05  3a 0d b1 62 05 3a 0d b1  |.N.:..X.:..b.:..|
00017c10  6c 13 dd 20 f2 61 64 64  5f 63 65 6c 6c 28 74 25  |l.. .add_cell(t%|
00017c20  29 0d b1 76 0c 70 25 21  30 30 3d 74 25 0d b1 80  |)..v.p%!00=t%...|
00017c30  0a 70 25 2b 3d 33 32 0d  b1 8a 05 e1 0d b1 94 05  |.p%+=32.........|
00017c40  3a 0d b1 9e 05 3a 0d b1  a8 05 3a 0d b1 b2 12 dd  |:....:....:.....|
00017c50  20 f2 61 73 73 6d 5f 64  65 63 6f 6d 70 0d b1 bc  | .assm_decomp...|
00017c60  21 e3 20 70 61 73 73 25  3d 25 30 30 30 30 20 b8  |!. pass%=%0000 .|
00017c70  20 25 31 30 31 30 20 88  20 25 31 30 31 30 0d b1  | %1010 . %1010..|
00017c80  c6 14 20 50 25 3d 64 65  63 6f 6d 70 5f 63 6f 64  |.. P%=decomp_cod|
00017c90  65 25 0d b1 d0 19 20 4c  25 3d 64 65 63 6f 6d 70  |e%.... L%=decomp|
00017ca0  5f 63 6f 64 65 25 2b 31  30 32 30 0d b1 da 0f 20  |_code%+1020.... |
00017cb0  5b 4f 50 54 20 70 61 73  73 25 0d b1 e4 06 20 3a  |[OPT pass%.... :|
00017cc0  0d b1 ee 0f 20 2e 64 63  5f 75 6e 75 73 65 64 0d  |.... .dc_unused.|
00017cd0  b1 f8 0e 20 45 51 55 44  20 20 20 20 30 0d b2 02  |... EQUD    0...|
00017ce0  0d 20 2e 64 63 5f 63 6d  70 70 0d b2 0c 0e 20 45  |. .dc_cmpp.... E|
00017cf0  51 55 44 20 20 20 20 30  0d b2 16 10 20 2e 64 63  |QUD    0.... .dc|
00017d00  5f 61 64 64 72 65 73 73  0d b2 20 0e 20 45 51 55  |_address.. . EQU|
00017d10  44 20 20 20 20 30 0d b2  2a 0e 20 2e 64 63 5f 76  |D    0..*. .dc_v|
00017d20  61 6c 75 65 0d b2 34 0e  20 45 51 55 44 20 20 20  |alue..4. EQUD   |
00017d30  20 30 0d b2 3e 14 20 2e  64 63 5f 72 65 70 65 74  | 0..>. .dc_repet|
00017d40  69 74 69 6f 6e 73 0d b2  48 0e 20 45 51 55 44 20  |itions..H. EQUD |
00017d50  20 20 20 30 0d b2 52 06  20 3a 0d b2 5c 0e 20 2e  |   0..R. :..\. .|
00017d60  64 63 5f 73 74 61 72 74  0d b2 66 18 20 4c 44 52  |dc_start..f. LDR|
00017d70  20 20 20 20 20 52 30 2c  20 64 63 5f 63 6d 70 70  |     R0, dc_cmpp|
00017d80  0d b2 70 14 20 4c 44 52  20 20 20 20 20 52 31 2c  |..p. LDR     R1,|
00017d90  5b 52 30 5d 0d b2 7a 1a  20 53 54 52 20 20 20 20  |[R0]..z. STR    |
00017da0  20 52 31 2c 20 64 63 5f  75 6e 75 73 65 64 0d b2  | R1, dc_unused..|
00017db0  84 16 20 41 44 44 20 20  20 20 20 52 30 2c 52 30  |.. ADD     R0,R0|
00017dc0  2c 20 23 34 0d b2 8e 18  20 53 54 52 20 20 20 20  |, #4.... STR    |
00017dd0  20 52 30 2c 20 64 63 5f  63 6d 70 70 0d b2 98 15  | R0, dc_cmpp....|
00017de0  20 2e 64 63 5f 72 65 70  65 61 74 5f 6c 6f 6f 70  | .dc_repeat_loop|
00017df0  31 0d b2 a2 18 20 4c 44  52 20 20 20 20 20 52 30  |1.... LDR     R0|
00017e00  2c 20 64 63 5f 63 6d 70  70 0d b2 ac 14 20 4c 44  |, dc_cmpp.... LD|
00017e10  52 20 20 20 20 20 52 30  2c 5b 52 30 5d 0d b2 b6  |R     R0,[R0]...|
00017e20  1a 20 4c 44 52 20 20 20  20 20 52 31 2c 20 64 63  |. LDR     R1, dc|
00017e30  5f 75 6e 75 73 65 64 0d  b2 c0 12 20 43 4d 50 20  |_unused.... CMP |
00017e40  20 20 20 20 52 30 2c 52  31 0d b2 ca 1a 20 42 45  |    R0,R1.... BE|
00017e50  51 20 20 20 20 20 64 63  5f 64 65 63 6f 6d 70 72  |Q     dc_decompr|
00017e60  65 73 73 0d b2 d4 0d 20  2e 64 63 5f 63 6f 70 79  |ess.... .dc_copy|
00017e70  0d b2 de 18 20 4c 44 52  20 20 20 20 20 52 30 2c  |.... LDR     R0,|
00017e80  20 64 63 5f 63 6d 70 70  0d b2 e8 14 20 4c 44 52  | dc_cmpp.... LDR|
00017e90  20 20 20 20 20 52 31 2c  5b 52 30 5d 0d b2 f2 1b  |     R1,[R0]....|
00017ea0  20 4c 44 52 20 20 20 20  20 52 32 2c 20 64 63 5f  | LDR     R2, dc_|
00017eb0  61 64 64 72 65 73 73 0d  b2 fc 14 20 53 54 52 20  |address.... STR |
00017ec0  20 20 20 20 52 31 2c 5b  52 32 5d 0d b3 06 18 20  |    R1,[R2].... |
00017ed0  4c 44 52 20 20 20 20 20  52 30 2c 20 64 63 5f 63  |LDR     R0, dc_c|
00017ee0  6d 70 70 0d b3 10 16 20  41 44 44 20 20 20 20 20  |mpp.... ADD     |
00017ef0  52 30 2c 52 30 2c 20 23  34 0d b3 1a 1b 20 4c 44  |R0,R0, #4.... LD|
00017f00  52 20 20 20 20 20 52 32  2c 20 64 63 5f 61 64 64  |R     R2, dc_add|
00017f10  72 65 73 73 0d b3 24 16  20 41 44 44 20 20 20 20  |ress..$. ADD    |
00017f20  20 52 32 2c 52 32 2c 20  23 34 0d b3 2e 18 20 53  | R2,R2, #4.... S|
00017f30  54 52 20 20 20 20 20 52  30 2c 20 64 63 5f 63 6d  |TR     R0, dc_cm|
00017f40  70 70 0d b3 38 1b 20 53  54 52 20 20 20 20 20 52  |pp..8. STR     R|
00017f50  32 2c 20 64 63 5f 61 64  64 72 65 73 73 0d b3 42  |2, dc_address..B|
00017f60  16 20 42 20 20 20 20 20  20 20 64 63 5f 75 6e 74  |. B       dc_unt|
00017f70  69 6c 31 0d b3 4c 13 20  2e 64 63 5f 64 65 63 6f  |il1..L. .dc_deco|
00017f80  6d 70 72 65 73 73 0d b3  56 18 20 4c 44 52 20 20  |mpress..V. LDR  |
00017f90  20 20 20 52 30 2c 20 64  63 5f 63 6d 70 70 0d b3  |   R0, dc_cmpp..|
00017fa0  60 18 20 4c 44 52 20 20  20 20 20 52 37 2c 5b 52  |`. LDR     R7,[R|
00017fb0  30 2c 20 23 34 5d 0d b3  6a 19 20 53 54 52 20 20  |0, #4]..j. STR  |
00017fc0  20 20 20 52 37 2c 20 64  63 5f 76 61 6c 75 65 0d  |   R7, dc_value.|
00017fd0  b3 74 18 20 4c 44 52 20  20 20 20 20 52 30 2c 5b  |.t. LDR     R0,[|
00017fe0  52 30 2c 20 23 38 5d 0d  b3 7e 1f 20 53 54 52 20  |R0, #8]..~. STR |
00017ff0  20 20 20 20 52 30 2c 20  64 63 5f 72 65 70 65 74  |    R0, dc_repet|
00018000  69 74 69 6f 6e 73 0d b3  88 13 20 43 4d 50 20 20  |itions.... CMP  |
00018010  20 20 20 52 30 2c 20 23  30 0d b3 92 16 20 42 45  |   R0, #0.... BE|
00018020  51 20 20 20 20 20 64 63  5f 75 6e 74 69 6c 31 0d  |Q     dc_until1.|
00018030  b3 9c 19 20 4c 44 52 20  20 20 20 20 52 37 2c 20  |... LDR     R7, |
00018040  64 63 5f 76 61 6c 75 65  0d b3 a6 1b 20 4c 44 52  |dc_value.... LDR|
00018050  20 20 20 20 20 52 38 2c  20 64 63 5f 61 64 64 72  |     R8, dc_addr|
00018060  65 73 73 0d b3 b0 13 20  4d 4f 56 20 20 20 20 20  |ess.... MOV     |
00018070  52 39 2c 20 23 31 0d b3  ba 15 20 2e 64 63 5f 72  |R9, #1.... .dc_r|
00018080  65 70 65 61 74 5f 6c 6f  6f 70 32 0d b3 c4 15 20  |epeat_loop2.... |
00018090  53 54 4d 49 41 20 20 20  52 38 21 2c 7b 52 37 7d  |STMIA   R8!,{R7}|
000180a0  0d b3 ce 16 20 41 44 44  20 20 20 20 20 52 39 2c  |.... ADD     R9,|
000180b0  52 39 2c 20 23 31 0d b3  d8 1f 20 4c 44 52 20 20  |R9, #1.... LDR  |
000180c0  20 20 20 52 30 2c 20 64  63 5f 72 65 70 65 74 69  |   R0, dc_repeti|
000180d0  74 69 6f 6e 73 0d b3 e2  12 20 43 4d 50 20 20 20  |tions.... CMP   |
000180e0  20 20 52 39 2c 52 30 0d  b3 ec 1c 20 42 4c 45 20  |  R9,R0.... BLE |
000180f0  20 20 20 20 64 63 5f 72  65 70 65 61 74 5f 6c 6f  |    dc_repeat_lo|
00018100  6f 70 32 0d b3 f6 1b 20  53 54 52 20 20 20 20 20  |op2.... STR     |
00018110  52 38 2c 20 64 63 5f 61  64 64 72 65 73 73 0d b4  |R8, dc_address..|
00018120  00 18 20 4c 44 52 20 20  20 20 20 52 30 2c 20 64  |.. LDR     R0, d|
00018130  63 5f 63 6d 70 70 0d b4  0a 17 20 41 44 44 20 20  |c_cmpp.... ADD  |
00018140  20 20 20 52 30 2c 52 30  2c 20 23 31 32 0d b4 14  |   R0,R0, #12...|
00018150  18 20 53 54 52 20 20 20  20 20 52 30 2c 20 64 63  |. STR     R0, dc|
00018160  5f 63 6d 70 70 0d b4 1e  0f 20 2e 64 63 5f 75 6e  |_cmpp.... .dc_un|
00018170  74 69 6c 31 0d b4 28 18  20 4c 44 52 20 20 20 20  |til1..(. LDR    |
00018180  20 52 30 2c 20 64 63 5f  63 6d 70 70 0d b4 32 14  | R0, dc_cmpp..2.|
00018190  20 4c 44 52 20 20 20 20  20 52 31 2c 5b 52 30 5d  | LDR     R1,[R0]|
000181a0  0d b4 3c 1a 20 4c 44 52  20 20 20 20 20 52 32 2c  |..<. LDR     R2,|
000181b0  20 64 63 5f 75 6e 75 73  65 64 0d b4 46 12 20 43  | dc_unused..F. C|
000181c0  4d 50 20 20 20 20 20 52  31 2c 52 32 0d b4 50 1c  |MP     R1,R2..P.|
000181d0  20 42 4e 45 20 20 20 20  20 64 63 5f 72 65 70 65  | BNE     dc_repe|
000181e0  61 74 5f 6c 6f 6f 70 31  0d b4 5a 18 20 4c 44 52  |at_loop1..Z. LDR|
000181f0  20 20 20 20 20 52 33 2c  5b 52 30 2c 20 23 38 5d  |     R3,[R0, #8]|
00018200  0d b4 64 13 20 43 4d 50  20 20 20 20 20 52 33 2c  |..d. CMP     R3,|
00018210  20 23 30 0d b4 6e 1c 20  42 4e 45 20 20 20 20 20  | #0..n. BNE     |
00018220  64 63 5f 72 65 70 65 61  74 5f 6c 6f 6f 70 31 0d  |dc_repeat_loop1.|
00018230  b4 78 13 20 4d 4f 56 20  20 20 20 20 50 43 2c 52  |.x. MOV     PC,R|
00018240  31 34 0d b4 82 06 20 3a  0d b4 8c 06 20 5d 0d b4  |14.... :.... ]..|
00018250  96 05 ed 0d b4 a0 05 e1  0d b4 aa 05 3a 0d b4 b4  |............:...|
00018260  05 3a 0d b4 be 05 3a 0d  b4 c8 1c dd 20 f2 64 65  |.:....:..... .de|
00018270  63 6f 6d 70 72 65 73 73  28 66 72 6f 6d 24 2c 74  |compress(from$,t|
00018280  6f 25 29 0d b4 d2 25 c8  99 20 22 4f 53 5f 46 69  |o%)...%.. "OS_Fi|
00018290  6c 65 22 2c 32 35 35 2c  66 72 6f 6d 24 2c 63 6d  |le",255,from$,cm|
000182a0  70 64 61 74 61 25 2c 30  0d b4 dc 13 21 64 63 5f  |pdata%,0....!dc_|
000182b0  61 64 64 72 65 73 73 3d  74 6f 25 0d b4 e6 15 21  |address=to%....!|
000182c0  64 63 5f 63 6d 70 70 3d  63 6d 70 64 61 74 61 25  |dc_cmpp=cmpdata%|
000182d0  0d b4 f0 0e d6 20 64 63  5f 73 74 61 72 74 0d b4  |..... dc_start..|
000182e0  fa 05 e1 0d b5 04 05 3a  0d b5 0e 05 3a 0d b5 18  |.......:....:...|
000182f0  05 3a 0d b5 22 1c dd 20  f2 61 73 73 65 6d 62 6c  |.:..".. .assembl|
00018300  65 5f 63 6c 65 61 72 5f  73 63 72 65 65 6e 0d b5  |e_clear_screen..|
00018310  2c 21 e3 20 70 61 73 73  25 3d 25 30 30 30 30 20  |,!. pass%=%0000 |
00018320  b8 20 25 31 30 31 30 20  88 20 25 31 30 31 30 0d  |. %1010 . %1010.|
00018330  b5 36 10 20 50 25 3d 63  6c 5f 63 6f 64 65 25 0d  |.6. P%=cl_code%.|
00018340  b5 40 15 20 4c 25 3d 63  6c 5f 63 6f 64 65 25 2b  |.@. L%=cl_code%+|
00018350  32 30 34 34 0d b5 4a 0f  20 5b 4f 50 54 20 70 61  |2044..J. [OPT pa|
00018360  73 73 25 0d b5 54 06 20  3a 0d b5 5e 0e 20 2e 73  |ss%..T. :..^. .s|
00018370  65 74 75 70 5f 63 73 0d  b5 68 1e 20 53 54 4d 46  |etup_cs..h. STMF|
00018380  44 20 20 20 52 31 33 21  2c 7b 52 30 2d 52 31 32  |D   R13!,{R0-R12|
00018390  2c 52 31 34 7d 0d b5 72  20 20 4c 44 52 20 20 20  |,R14}..r  LDR   |
000183a0  20 20 52 30 2c 20 63 6c  5f 61 64 72 5f 76 64 75  |  R0, cl_adr_vdu|
000183b0  5f 76 61 72 73 0d b5 7c  1e 20 4c 44 52 20 20 20  |_vars..|. LDR   |
000183c0  20 20 52 31 2c 20 63 6c  5f 61 64 72 5f 73 63 72  |  R1, cl_adr_scr|
000183d0  65 65 6e 0d b5 86 3b 20  53 57 49 20 20 20 20 20  |een...; SWI     |
000183e0  22 4f 53 5f 52 65 61 64  56 64 75 56 61 72 69 61  |"OS_ReadVduVaria|
000183f0  62 6c 65 73 22 20 20 20  3b 20 73 65 74 20 75 70  |bles"   ; set up|
00018400  20 76 64 75 20 76 61 72  69 61 62 6c 65 73 0d b5  | vdu variables..|
00018410  90 1d 20 4c 44 4d 46 44  20 20 20 52 31 33 21 2c  |.. LDMFD   R13!,|
00018420  7b 52 30 2d 52 31 32 2c  50 43 7d 0d b5 9a 06 20  |{R0-R12,PC}.... |
00018430  3a 0d b5 a4 12 20 2e 63  6c 65 61 72 5f 73 63 72  |:.... .clear_scr|
00018440  65 65 6e 0d b5 ae 1e 20  53 54 4d 46 44 20 20 20  |een.... STMFD   |
00018450  52 31 33 21 2c 7b 52 30  2d 52 31 32 2c 52 31 34  |R13!,{R0-R12,R14|
00018460  7d 0d b5 b8 06 20 3a 0d  b5 c2 45 20 4c 44 52 20  |}.... :...E LDR |
00018470  20 20 20 20 52 31 31 2c  20 61 64 72 5f 63 6c 73  |    R11, adr_cls|
00018480  63 6f 6c 6f 75 72 73 20  20 20 20 20 3b 20 67 65  |colours     ; ge|
00018490  74 20 74 68 65 20 61 64  64 72 65 73 73 20 6f 66  |t the address of|
000184a0  20 63 6f 6c 6f 75 72 20  64 61 74 61 0d b5 cc 2f  | colour data.../|
000184b0  20 4d 4f 56 20 20 20 20  20 52 39 2c 20 23 30 20  | MOV     R9, #0 |
000184c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000184d0  20 3b 20 79 20 63 6f 2d  6f 72 64 0d b5 d6 06 20  | ; y co-ord.... |
000184e0  3a 0d b5 e0 0e 20 2e 63  6c 5f 6c 6f 6f 70 31 0d  |:.... .cl_loop1.|
000184f0  b5 ea 06 20 3a 0d b5 f4  1f 20 4c 44 52 20 20 20  |... :.... LDR   |
00018500  20 20 52 31 30 2c 20 63  6c 5f 61 64 72 5f 73 63  |  R10, cl_adr_sc|
00018510  72 65 65 6e 0d b5 fe 39  20 4c 44 52 20 20 20 20  |reen...9 LDR    |
00018520  20 52 31 30 2c 5b 52 31  30 5d 20 20 20 20 20 20  | R10,[R10]      |
00018530  20 20 20 20 20 20 20 20  20 3b 20 67 65 74 20 73  |         ; get s|
00018540  63 72 65 65 6e 20 61 64  64 72 65 73 73 0d b6 08  |creen address...|
00018550  35 20 41 44 44 20 20 20  20 20 52 37 2c 52 31 30  |5 ADD     R7,R10|
00018560  2c 20 23 26 31 34 30 30  30 20 20 20 20 20 20 20  |, #&14000       |
00018570  20 20 3b 20 67 65 74 20  73 63 72 65 65 6e 20 65  |  ; get screen e|
00018580  6e 64 0d b6 12 06 20 3a  0d b6 1c 0e 20 2e 63 6c  |nd.... :.... .cl|
00018590  5f 6c 6f 6f 70 33 0d b6  26 06 20 5d 0d b6 30 10  |_loop3..&. ]..0.|
000185a0  20 e3 20 61 25 3d 30 20  b8 20 31 35 0d b6 3a 18  | . a%=0 . 15..:.|
000185b0  20 e3 20 62 25 3d 30 20  b8 20 66 61 64 65 72 25  | . b%=0 . fader%|
000185c0  20 88 20 34 0d b6 44 0f  20 5b 4f 50 54 20 70 61  | . 4..D. [OPT pa|
000185d0  73 73 25 0d b6 4e 06 20  3a 0d b6 58 19 20 41 44  |ss%..N. :..X. AD|
000185e0  44 20 20 20 20 20 52 31  30 2c 52 31 30 2c 20 23  |D     R10,R10, #|
000185f0  62 25 0d b6 62 31 20 42  4c 20 20 20 20 20 20 63  |b%..b1 BL      c|
00018600  6c 5f 63 6c 73 20 20 20  20 20 20 20 20 20 20 20  |l_cls           |
00018610  20 20 20 20 20 20 20 3b  20 64 69 6d 20 73 63 72  |       ; dim scr|
00018620  65 65 6e 0d b6 6c 19 20  53 55 42 20 20 20 20 20  |een..l. SUB     |
00018630  52 31 30 2c 52 31 30 2c  20 23 62 25 0d b6 76 06  |R10,R10, #b%..v.|
00018640  20 3a 0d b6 80 14 20 4d  4f 56 20 20 20 20 20 52  | :.... MOV     R|
00018650  30 2c 20 23 31 39 0d b6  8a 16 20 53 57 49 20 20  |0, #19.... SWI  |
00018660  20 20 20 22 4f 53 5f 42  79 74 65 22 0d b6 94 06  |   "OS_Byte"....|
00018670  20 3a 0d b6 9e 06 20 5d  0d b6 a8 06 20 ed 0d b6  | :.... ].... ...|
00018680  b2 06 20 ed 0d b6 bc 0f  20 5b 4f 50 54 20 70 61  |.. ..... [OPT pa|
00018690  73 73 25 0d b6 c6 06 20  3a 0d b6 d0 15 20 2e 63  |ss%.... :.... .c|
000186a0  6c 5f 65 6e 64 5f 72 6f  75 74 69 6e 65 73 0d b6  |l_end_routines..|
000186b0  da 06 20 3a 0d b6 e4 0c  20 2e 63 6c 5f 65 6e 64  |.. :.... .cl_end|
000186c0  0d b6 ee 1d 20 4c 44 4d  46 44 20 20 20 52 31 33  |.... LDMFD   R13|
000186d0  21 2c 7b 52 30 2d 52 31  32 2c 50 43 7d 0d b6 f8  |!,{R0-R12,PC}...|
000186e0  06 20 3a 0d b7 02 0c 20  2e 63 6c 5f 63 6c 73 0d  |. :.... .cl_cls.|
000186f0  b7 0c 13 20 4d 4f 56 20  20 20 20 20 52 36 2c 52  |... MOV     R6,R|
00018700  31 30 0d b7 16 15 20 4d  4f 56 20 20 20 20 20 52  |10.... MOV     R|
00018710  34 2c 20 23 26 46 46 0d  b7 20 0e 20 2e 63 6c 5f  |4, #&FF.. . .cl_|
00018720  6c 6f 6f 70 32 0d b7 2a  14 20 4c 44 52 20 20 20  |loop2..*. LDR   |
00018730  20 20 52 30 2c 5b 52 36  5d 0d b7 34 06 20 3a 0d  |  R0,[R6]..4. :.|
00018740  b7 3e 1a 20 4d 4f 56 20  20 20 20 20 52 33 2c 52  |.>. MOV     R3,R|
00018750  30 2c 20 52 4f 52 20 23  38 0d b7 48 12 20 43 4d  |0, ROR #8..H. CM|
00018760  50 20 20 20 20 20 52 33  2c 52 30 0d b7 52 18 20  |P     R3,R0..R. |
00018770  42 4e 45 20 20 20 20 20  63 6c 5f 6e 6f 74 5f 73  |BNE     cl_not_s|
00018780  61 6d 65 0d b7 5c 13 20  80 20 20 20 20 20 52 31  |ame..\. .     R1|
00018790  2c 52 34 2c 52 30 0d b7  66 18 20 4c 44 52 42 20  |,R4,R0..f. LDRB |
000187a0  20 20 20 52 31 2c 5b 52  31 31 2c 52 31 5d 0d b7  |   R1,[R11,R1]..|
000187b0  70 1c 20 84 52 20 20 20  20 20 52 33 2c 52 31 2c  |p. .R     R3,R1,|
000187c0  52 31 2c 20 4c 53 4c 20  23 38 0d b7 7a 1d 20 84  |R1, LSL #8..z. .|
000187d0  52 20 20 20 20 20 52 33  2c 52 33 2c 52 33 2c 20  |R     R3,R3,R3, |
000187e0  4c 53 4c 20 23 31 36 0d  b7 84 06 20 3a 0d b7 8e  |LSL #16.... :...|
000187f0  1b 20 42 20 20 20 20 20  20 20 63 6c 5f 64 6f 6e  |. B       cl_don|
00018800  65 5f 70 69 78 65 6c 73  0d b7 98 06 20 3a 0d b7  |e_pixels.... :..|
00018810  a2 11 20 2e 63 6c 5f 6e  6f 74 5f 73 61 6d 65 0d  |.. .cl_not_same.|
00018820  b7 ac 13 20 80 20 20 20  20 20 52 31 2c 52 34 2c  |... .     R1,R4,|
00018830  52 30 0d b7 b6 18 20 4c  44 52 42 20 20 20 20 52  |R0.... LDRB    R|
00018840  31 2c 5b 52 31 31 2c 52  31 5d 0d b7 c0 12 20 4d  |1,[R11,R1].... M|
00018850  4f 56 20 20 20 20 20 52  33 2c 52 31 0d b7 ca 06  |OV     R3,R1....|
00018860  20 3a 0d b7 d4 1b 20 80  20 20 20 20 20 52 31 2c  | :.... .     R1,|
00018870  52 34 2c 52 30 2c 20 4c  53 52 20 23 38 0d b7 de  |R4,R0, LSR #8...|
00018880  18 20 4c 44 52 42 20 20  20 20 52 31 2c 5b 52 31  |. LDRB    R1,[R1|
00018890  31 2c 52 31 5d 0d b7 e8  1c 20 84 52 20 20 20 20  |1,R1].... .R    |
000188a0  20 52 33 2c 52 33 2c 52  31 2c 20 4c 53 4c 20 23  | R3,R3,R1, LSL #|
000188b0  38 0d b7 f2 06 20 3a 0d  b7 fc 1c 20 80 20 20 20  |8.... :.... .   |
000188c0  20 20 52 31 2c 52 34 2c  52 30 2c 20 4c 53 52 20  |  R1,R4,R0, LSR |
000188d0  23 31 36 0d b8 06 18 20  4c 44 52 42 20 20 20 20  |#16.... LDRB    |
000188e0  52 31 2c 5b 52 31 31 2c  52 31 5d 0d b8 10 1d 20  |R1,[R11,R1].... |
000188f0  84 52 20 20 20 20 20 52  33 2c 52 33 2c 52 31 2c  |.R     R3,R3,R1,|
00018900  20 4c 53 4c 20 23 31 36  0d b8 1a 06 20 3a 0d b8  | LSL #16.... :..|
00018910  24 1c 20 80 20 20 20 20  20 52 31 2c 52 34 2c 52  |$. .     R1,R4,R|
00018920  30 2c 20 4c 53 52 20 23  32 34 0d b8 2e 18 20 4c  |0, LSR #24.... L|
00018930  44 52 42 20 20 20 20 52  31 2c 5b 52 31 31 2c 52  |DRB    R1,[R11,R|
00018940  31 5d 0d b8 38 1d 20 84  52 20 20 20 20 20 52 33  |1]..8. .R     R3|
00018950  2c 52 33 2c 52 31 2c 20  4c 53 4c 20 23 32 34 0d  |,R3,R1, LSL #24.|
00018960  b8 42 06 20 3a 0d b8 4c  14 20 2e 63 6c 5f 64 6f  |.B. :..L. .cl_do|
00018970  6e 65 5f 70 69 78 65 6c  73 0d b8 56 1f 20 53 54  |ne_pixels..V. ST|
00018980  52 20 20 20 20 20 52 33  2c 5b 52 36 5d 2c 20 23  |R     R3,[R6], #|
00018990  66 61 64 65 72 25 2b 34  0d b8 60 06 20 3a 0d b8  |fader%+4..`. :..|
000189a0  6a 12 20 43 4d 50 20 20  20 20 20 52 36 2c 52 37  |j. CMP     R6,R7|
000189b0  0d b8 74 15 20 42 4c 54  20 20 20 20 20 63 6c 5f  |..t. BLT     cl_|
000189c0  6c 6f 6f 70 32 0d b8 7e  06 20 3a 0d b8 88 0c 20  |loop2..~. :.... |
000189d0  2e 63 6c 5f 65 6e 64 0d  b8 92 13 20 4d 4f 56 20  |.cl_end.... MOV |
000189e0  20 20 20 20 50 43 2c 52  31 34 0d b8 9c 06 20 3a  |    PC,R14.... :|
000189f0  0d b8 a6 14 20 2e 61 64  72 5f 63 6c 73 63 6f 6c  |.... .adr_clscol|
00018a00  6f 75 72 73 0d b8 b0 18  20 45 51 55 44 20 20 20  |ours.... EQUD   |
00018a10  20 63 6c 5f 63 6f 6c 6f  75 72 73 25 0d b8 ba 15  | cl_colours%....|
00018a20  20 2e 63 6c 5f 61 64 72  5f 76 64 75 5f 76 61 72  | .cl_adr_vdu_var|
00018a30  73 0d b8 c4 15 20 45 51  55 44 20 20 20 20 76 64  |s.... EQUD    vd|
00018a40  75 5f 76 61 72 73 0d b8  ce 13 20 2e 63 6c 5f 61  |u_vars.... .cl_a|
00018a50  64 72 5f 73 63 72 65 65  6e 0d b8 d8 13 20 45 51  |dr_screen.... EQ|
00018a60  55 44 20 20 20 20 73 63  72 65 65 6e 0d b8 e2 0c  |UD    screen....|
00018a70  20 2e 73 63 72 65 65 6e  0d b8 ec 0e 20 45 51 55  | .screen.... EQU|
00018a80  44 20 20 20 20 30 0d b8  f6 0e 20 2e 76 64 75 5f  |D    0.... .vdu_|
00018a90  76 61 72 73 0d b9 00 2c  20 45 51 55 44 20 20 20  |vars..., EQUD   |
00018aa0  20 31 34 39 20 20 20 20  20 20 20 20 20 20 20 20  | 149            |
00018ab0  20 20 20 20 20 20 3b 20  76 64 75 20 64 61 74 61  |      ; vdu data|
00018ac0  0d b9 0a 0f 20 45 51 55  44 20 20 20 20 2d 31 0d  |.... EQUD    -1.|
00018ad0  b9 14 11 20 2e 73 63 72  65 65 6e 5f 73 69 7a 65  |... .screen_size|
00018ae0  0d b9 1e 13 20 45 51 55  44 20 20 20 20 26 31 34  |.... EQUD    &14|
00018af0  30 30 30 0d b9 28 06 20  3a 0d b9 32 06 20 5d 0d  |000..(. :..2. ].|
00018b00  b9 3c 05 ed 0d b9 46 0e  d6 20 73 65 74 75 70 5f  |.<....F.. setup_|
00018b10  63 73 0d b9 50 05 e1 0d  b9 5a 05 3a 0d b9 64 05  |cs..P....Z.:..d.|
00018b20  3a 0d b9 6e 05 3a 0d b9  78 10 dd 20 f2 70 72 69  |:..n.:..x.. .pri|
00018b30  6e 74 28 61 24 29 0d b9  82 11 e7 20 61 24 3d 22  |nt(a$)..... a$="|
00018b40  22 20 8c 20 f1 3a e1 0d  b9 8c 17 ea 20 6c 65 74  |" . .:...... let|
00018b50  74 65 72 25 2c 77 69 64  74 68 25 2c 63 25 0d b9  |ter%,width%,c%..|
00018b60  96 0a c8 91 20 30 2c 30  0d b9 a0 0b 78 25 3d b1  |.... 0,0....x%=.|
00018b70  2a 36 34 0d b9 aa 13 79  25 3d 31 30 32 34 2d bc  |*64....y%=1024-.|
00018b80  2a 36 34 2d 36 34 0d b9  b4 17 e3 20 6c 65 74 74  |*64-64..... lett|
00018b90  65 72 25 3d 31 20 b8 20  a9 28 61 24 29 0d b9 be  |er%=1 . .(a$)...|
00018ba0  1f 20 e7 20 78 25 3e 31  30 32 34 20 8c 20 78 25  |. . x%>1024 . x%|
00018bb0  3d 30 3a 79 25 2d 3d 36  34 3a f1 27 0d b9 c8 1b  |=0:y%-=64:.'....|
00018bc0  20 61 73 63 25 3d 97 28  c1 61 24 2c 6c 65 74 74  | asc%=.(.a$,lett|
00018bd0  65 72 25 2c 31 29 29 0d  b9 d2 10 20 e7 20 61 73  |er%,1)).... . as|
00018be0  63 25 3e 33 31 20 8c 0d  b9 dc 33 20 20 c8 99 20  |c%>31 ....3  .. |
00018bf0  22 4f 53 5f 53 70 72 69  74 65 4f 70 22 2c 26 31  |"OS_SpriteOp",&1|
00018c00  32 38 2c 66 6f 6e 74 25  2c c3 61 73 63 25 20 b8  |28,font%,.asc% .|
00018c10  20 2c 2c 2c 77 69 64 74  68 25 0d b9 e6 2f 20 20  | ,,,width%.../  |
00018c20  c8 99 20 22 4f 53 5f 53  70 72 69 74 65 4f 70 22  |.. "OS_SpriteOp"|
00018c30  2c 26 31 32 32 2c 66 6f  6e 74 25 2c c3 61 73 63  |,&122,font%,.asc|
00018c40  25 2c 78 25 2c 79 25 2c  30 0d b9 f0 06 20 cc 0d  |%,x%,y%,0.... ..|
00018c50  b9 fa 25 20 20 e7 20 61  73 63 25 3d 39 20 8c 20  |..%  . asc%=9 . |
00018c60  78 25 3d 28 a8 28 78 25  2f 32 35 36 29 2b 31 29  |x%=(.(x%/256)+1)|
00018c70  2a 32 35 36 0d ba 04 06  20 cd 0d ba 0e 11 20 78  |*256.... ..... x|
00018c80  25 2b 3d 77 69 64 74 68  25 2a 34 0d ba 18 05 ed  |%+=width%*4.....|
00018c90  0d ba 22 05 f1 0d ba 2c  05 e1 0d ba 36 05 3a 0d  |.."....,....6.:.|
00018ca0  ba 40 05 3a 0d ba 4a 0b  dd 20 f2 74 69 6e 74 0d  |.@.:..J.. .tint.|
00018cb0  ba 54 17 e3 20 70 25 3d  30 20 b8 20 26 31 33 46  |.T.. p%=0 . &13F|
00018cc0  46 46 20 88 20 31 0d ba  5e 4b 20 e7 20 73 63 72  |FF . 1..^K . scr|
00018cd0  65 65 6e 64 61 74 61 25  3f 70 25 3c 3e 30 20 8c  |eendata%?p%<>0 .|
00018ce0  20 73 63 72 65 65 6e 64  61 74 61 25 3f 70 25 3d  | screendata%?p%=|
00018cf0  28 73 63 72 65 65 6e 64  61 74 61 25 3f 70 25 20  |(screendata%?p% |
00018d00  84 20 25 31 31 29 20 82  20 28 b3 28 33 29 2d 31  |. %11) . (.(3)-1|
00018d10  29 0d ba 68 05 ed 0d ba  72 05 e1 0d ff           |)..h....r....|
00018d1d