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

!Play/!RunImage2

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

� > !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%>15 � 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
� .wcell_skip
� ADD     R9,R9, #32
� CMP     R0, #0
� BGE     wcloop1
� :
 LDMFD   R13!,{R0-R12,PC}
 :
 .update_sprites
" STMFD   R13!,{R0-R12,R14}
, :
6 LDR     R9, adr_slist
@ .sloop1
J LDMIA   R9,{R5-R8}
T CMP     R5, #1
^ BLEQ    player1
h BEQ     end_sprite_loop
r 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
 BEQ     end_sprite_loop
& CMP     R5, #8
0 BLEQ    weapon_seeking
: BEQ     end_sprite_loop
D CMP     R5, #9
N BLEQ    weapon_vertical
X BEQ     end_sprite_loop
b CMP     R5, #10
l BLEQ    weapon_thrower
v BEQ     end_sprite_loop
� CMP     R5, #11
� BLEQ    weapon_bomb
� 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}
 CMP     R5, #0
 BGE     sloop1
 :
  LDMFD   R13!,{R0-R12,PC}
* :
4 .p1_weapon
> EQUD    2
H .p2_weapon
R EQUD    2
\ :
f .read_point
p STMFD   R13!,{R1-R12,R14}
z :
� 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}
� :
 .adr_clist
 EQUD    clist%
 .adr_slist
$ EQUD    slist%
. :
8 .flame
B STMFD   R13!,{R9,R14}
L :
V LDR     R10, p1_x
` LDR     R11, p1_y
j MOV     R9,R6, ASR #2
t 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     R0, player1_alive
 CMP     R0, #1

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

 ADD     R3,R3, #10
 CMP     R1,R3
 BGT     not_p2_on
( MOV     R0, #1
2 .not_p2_on
< :
F ADR     R1, guns
P �     R2,R8, #3
Z STR     R0,[R1,R2, LSL #3]
d :
n MOV     R0, #16
x MOV     R1,R6, LSR #2
� MOV     R2,R7, LSR #2
� BL      plot_sprite_1208
� :
� LDMFD   R13!,{R9,PC}
� :
�
 .guns
� EQUD    0
� EQUD    0
� EQUD    0
� EQUD    0
� EQUD    0
� EQUD    0
� EQUD    0
 EQUD    0
 :

 .gun_gun
" STMFD   R13!,{R9,R14}
, :
6 ADR     R0, guns
@ �     R2,R8, #3
J LDR     R3,[R0,R2, LSL #3]
T ADD     R0,R0, #4
^ LDR     R4,[R0,R2, LSL #3]
h :
r 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
� SUB     R5,R3, #1
� MOV     R0, #3
� MOV     R1,R6, ASR #2
� MOV     R2,R7, ASR #2
� ADD     R1,R1, #8
� ADD     R2,R2, #5
� RSB     R2,R2, #256
� MOV     R3, #72
 LDR     R4, rnd
 �     R4,R4, #15
 SUB     R4,R4, #7
& BL      add_cell
0 MOV     R0, #8
: MVN     R1, #12
D MOV     R2, #12800
N MOV     R3, #0
X SWI     "Sound_Control"
b MOV     R5, #15
l .no_gun_gun
v :
� MOV     R0, #17
� MOV     R1,R6, LSR #2
� MOV     R2,R7, LSR #2
� BL      plot_sprite_1208
� :
� LDMFD   R13!,{R9,PC}
� :
� .weapon_pistol
� STMFD   R13!,{R9,R14}
� :
� MOV     R4, #2
� BL      pick_up
� :
 SUB     R8,R8, #1
 CMP     R8, #0
 MOVLE   R5, #0
  :
* CMP     R5, #0
4 :
> MOVGT   R0, #12
H MOVGT   R1,R6, LSR #2
R MOVGT   R2,R7, LSR #2
\ BLGT    plot_sprite_1212
f :
p LDMFD   R13!,{R9,PC}
z :
� .weapon_gun
� STMFD   R13!,{R9,R14}
� :
� MOV     R4, #3
� BL      pick_up
� :
� SUB     R8,R8, #1
� CMP     R8, #0
� MOVLE   R5, #0
� :
� CMP     R5, #0
� :
� MOVGT   R0, #13
 MOVGT   R1,R6, LSR #2
 MOVGT   R2,R7, LSR #2
 BLGT    plot_sprite_1212
$ :
. LDMFD   R13!,{R9,PC}
8 :
B .weapon_mortar
L STMFD   R13!,{R9,R14}
V :
` MOV     R4, #4
j BL      pick_up
t :
~ SUB     R8,R8, #1
� CMP     R8, #0
� MOVLE   R5, #0
� :
� CMP     R5, #0
� :
� MOVGT   R0, #14
� MOVGT   R1,R6, LSR #2
� MOVGT   R2,R7, LSR #2
� BLGT    plot_sprite_1212
� :
� LDMFD   R13!,{R9,PC}
� :
 .weapon_homing

 STMFD   R13!,{R9,R14}
 :
 MOV     R4, #5
( BL      pick_up
2 :
< SUB     R8,R8, #1
F CMP     R8, #0
P MOVLE   R5, #0
Z :
d CMP     R5, #0
n :
x MOVGT   R0, #15
� MOVGT   R1,R6, LSR #2
� MOVGT   R2,R7, LSR #2
� BLGT    plot_sprite_1212
� :
� LDMFD   R13!,{R9,PC}
� :
� .weapon_seeking
� STMFD   R13!,{R9,R14}
� :
� MOV     R4, #6
� BL      pick_up
� :
� SUB     R8,R8, #1
 CMP     R8, #0
 MOVLE   R5, #0
 :
" CMP     R5, #0
, :
6 MOVGT   R0, #16
@ MOVGT   R1,R6, LSR #2
J MOVGT   R2,R7, LSR #2
T BLGT    plot_sprite_1212
^ :
h LDMFD   R13!,{R9,PC}
r :
| .weapon_vertical
� STMFD   R13!,{R9,R14}
� :
� MOV     R4, #7
� BL      pick_up
� :
� SUB     R8,R8, #1
� CMP     R8, #0
� MOVLE   R5, #0
� :
� CMP     R5, #0
� :
� MOVGT   R0, #17
� MOVGT   R1,R6, LSR #2
  MOVGT   R2,R7, LSR #2
  BLGT    plot_sprite_1212
  :
 & LDMFD   R13!,{R9,PC}
 0 :
 : .weapon_thrower
 D STMFD   R13!,{R9,R14}
 N :
 X MOV     R4, #8
 b BL      pick_up
 l :
 v SUB     R8,R8, #1
 � CMP     R8, #0
 � MOVLE   R5, #0
 � :
 � CMP     R5, #0
 � :
 � MOVGT   R0, #18
 � MOVGT   R1,R6, LSR #2
 � MOVGT   R2,R7, LSR #2
 � BLGT    plot_sprite_1212
 � :
 � LDMFD   R13!,{R9,PC}
 � :
 � .weapon_bomb
! STMFD   R13!,{R9,R14}
! :
! MOV     R4, #9
!  BL      pick_up
!* :
!4 SUB     R8,R8, #1
!> CMP     R8, #0
!H MOVLE   R5, #0
!R :
!\ CMP     R5, #0
!f :
!p MOVGT   R0, #19
!z 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
!� ADD     R10,R10, #2
!� CMP     R10, #0
" BLT     not_picked_up1
" CMP     R10, #xext%+10
" BGT     not_picked_up1
"$ MOV     R9,R7, ASR #2
". ADD     R9,R9, #12
"8 SUB     R11,R9,R11
"B ADD     R11,R11, #2
"L CMP     R11, #0
"V BLT     not_picked_up1
"` CMP     R11, #yext%+14
"j BGT     not_picked_up1
"t 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
"� ADD     R10,R10, #2
# CMP     R10, #0
#
 BLT     not_picked_up2
# CMP     R10, #xext%+10
# BGT     not_picked_up2
#( MOV     R9,R7, ASR #2
#2 ADD     R9,R9, #12
#< SUB     R11,R9,R11
#F ADD     R11,R11, #2
#P CMP     R11, #0
#Z BLT     not_picked_up2
#d CMP     R11, #yext%+16
#n BGT     not_picked_up2
#x 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
#� EQUD    0
#�
 .p1_y
$ EQUD    0
$
 .p2_x
$ EQUD    0
$"
 .p2_y
$, EQUD    0
$6 :
$@	 .rnd
$J EQUD    ��-�
$T :
$^ :
$h .update_cells
$r 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
$� CMP     R1, #3
$� BLEQ    gun
% BEQ     cell_skip
% CMP     R1, #4
% BLEQ    mortar
%& BEQ     cell_skip
%0 CMP     R1, #5
%: BLEQ    homing
%D BEQ     cell_skip
%N CMP     R1, #6
%X BLEQ    seeking
%b BEQ     cell_skip
%l CMP     R1, #7
%v 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
%� BEQ     cell_skip
& CMP     R1, #12
& BLEQ    bomb
& .cell_skip
&  STMIA   R9!,{R1-R8}
&* CMP     R1, #0
&4 BGE     cloop1
&> :
&H LDMFD   R13!,{R0-R12,PC}
&R :
&\ .spray
&f STMFD   R13!,{R9,R14}
&p :
&z 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}
&� :
&� MOV     R2,R2, ASR #4
&� MOV     R3,R3, ASR #4
&� CMP     R2, #0
&� BLT     no_spray
' CMP     R3, #0
' BLT     no_spray
' CMP     R2, #320
'$ BGE     no_spray
'. CMP     R3, #256
'8 BGE     no_spray
'B RSB     R3,R3, #256
'L LDR     R4, screenstore
'V MOV     R5, #y_shift
'` ADD     R4,R4,R2
'j MLA     R4,R5,R3,R4
't 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]
'� STRB    R0,[R4]
'� .no_spray
'� :
'� LDMFD   R13!,{R1-R6}
( CMP     R10, #0
(
 RSBEQ   R5,R5, #0
( �Q   R5,R5, ASR #1
( LDMFD   R13!,{R9,PC}
(( :
(2 .spray2
(< STMFD   R13!,{R9,R14}
(F :
(P SUB     R5,R5, #1
(Z ADD     R2,R2,R4
(d ADD     R3,R3,R5
(n SUB     R6,R6, #1
(x CMP     R6, #0
(� MOVLE   R1, #0
(� LDMLEFD R13!,{R9,PC}
(� :
(� STMFD   R13!,{R1-R6}
(� STMFD   R13!,{R6}
(� :
(� MOV     R6, #0
(� BL      check_death
(� MOV     R6, #1
(� BL      check_death
(� LDMFD   R13!,{R6}
(� :
(� MOV     R2,R2, ASR #4
) MOV     R3,R3, ASR #4
) CMP     R2, #0
) BLT     no_spray2
)" CMP     R3, #0
), BLT     no_spray2
)6 CMP     R2, #320
)@ BGE     no_spray2
)J CMP     R3, #256
)T BGE     no_spray2
)^ RSB     R3,R3, #256
)h SUB     R2,R2, #1
)r 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
)� LDR     R0, adr_flame_fade
)� MOV     R9,R6, ASL #3
)� CMP     R9, #255
)� MOVGT   R9, #255
)� LDRB    R0,[R0,R9]
* STRB    R0,[R4, #1]
* ADD     R4,R4, #y_shift
* STRB    R0,[R4]
*& STRB    R0,[R4, #1]
*0 STRB    R0,[R4, #2]
*: ADD     R4,R4, #y_shift
*D STRB    R0,[R4, #1]
*N .no_spray2
*X :
*b LDMFD   R13!,{R1-R6}
*l CMP     R10, #0
*v 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
*� �     R0,R6, #255<<8
*� SUB     R0,R0, #1
*� CMP     R0, #0
*� MOVLE   R1, #0
+ LDMLEFD R13!,{R9,PC}
+ BIC     R6,R6, #255<<8
+ �R     R6,R6,R0
+  :
+* STMFD   R13!,{R1-R6}
+4 :
+> MOV     R6, #0
+H BL      check_death
+R MOV     R6, #1
+\ BL      check_death
+f :
+p MOV     R2,R2, ASR #4
+z 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
+� 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
,8 MOVNE   R10, #0
,B BNE     no_spray3
,L MOV     R0, #255
,V STRB    R0,[R4, #1]
,` ADD     R4,R4, #y_shift
,j STRB    R0,[R4]
,t 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
,� LDMFD   R13!,{R9,PC}
,� :
,� .adr_flame_fade
,� EQUD    flame_fade%
- :
-
 .adr_gun_fade
- EQUD    gun_fade%
- :
-(
 .thrower
-2 STMFD   R13!,{R9,R14}
-< :
-F ADD     R2,R2,R4
-P ADD     R3,R3,R5
-Z �     R7,R6, #255<<8
-d MOV     R7,R7, ASR #8
-n ADD     R7,R7, #1
-x 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
-� :
-� MOV     R2,R2, ASR #4
-� MOV     R3,R3, ASR #4
-� RSB     R3,R3, #256
-� LDR     R4, screenstore
. MOV     R5, #y_shift
. ADD     R4,R4,R2
. MLA     R4,R5,R3,R4
." LDRB    R0,[R4, #2]
., CMP     R0, #0
.6 �Q   R10, #1
.@ MOVNE   R10, #0
.J BNE     no_thrower
.T RSB     R3,R3, #256
.^ MOV     R0,R7
.h SUB     R1,R2, #4
.r SUB     R2,R3, #4
.| BL      plot_sprite_1208
.� .no_thrower
.� :
.� LDMFD   R13!,{R1-R6}
.� CMP     R10, #0
.� �Q   R1, #0
.� LDMFD   R13!,{R9,PC}
.� :
.�
 .explode
.� 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
/0 LDMGEFD   R13!,{R9,PC}
/: BIC     R6,R6, #255<<8
/D �R     R6,R6,R7, ASL #8
/N ADD     R7,R7, #8
/X :
/b STMFD   R13!,{R1-R6}
/l :
/v BL      check_death
/� :
/� MOV     R2,R2, ASR #4
/� MOV     R3,R3, ASR #4
/� RSB     R3,R3, #256
/� LDR     R4, screenstore
/� MOV     R5, #y_shift
/� ADD     R4,R4,R2
/� MLA     R4,R5,R3,R4
/� LDRB    R0,[R4, #2]
/� CMP     R0, #0
/� �Q   R10, #1
/� MOVNE   R10, #0
/� BNE     no_explode
0 RSB     R3,R3, #256
0 MOV     R0,R7
0 SUB     R1,R2, #8
0  SUB     R2,R3, #8
0* BL      plot_sprite_2016
04 .no_explode
0> :
0H LDMFD   R13!,{R1-R6}
0R CMP     R10, #0
0\ LDMFD   R13!,{R9,PC}
0f :
0p .pistol
0z STMFD   R13!,{R9,R14}
0� :
0� ADD     R2,R2,R4
0� ADD     R3,R3,R5
0� CMP     R4, #0
0� MOVLT   R7, #1
0� MOVGT   R7, #0
0� :
0� STMFD   R13!,{R1-R6}
0� :
0� BL      check_death
0� :
0� MOV     R2,R2, ASR #4
0� MOV     R3,R3, ASR #4
1 RSB     R3,R3, #256
1 LDR     R4, screenstore
1 MOV     R5, #y_shift
1$ ADD     R4,R4,R2
1. MLA     R4,R5,R3,R4
18 LDRB    R0,[R4, #2]
1B CMP     R0, #0
1L �Q   R10, #1
1V MOVNE   R10, #0
1` BNE     no_pistol
1j RSB     R3,R3, #256
1t MOV     R0,R7
1~ SUB     R1,R2, #2
1� SUB     R2,R3, #2
1� BL      plot_sprite_0804
1�;LDR     R0, adr_gun_fade
1�;MOV     R9, #255
1�;LDRB    R0,[R0,R9]
1�;STRB    R0,[R4]
1�;STRB    R0,[R4, #1]
1� .no_pistol
1� :
1� LDMFD   R13!,{R1-R6}
1� CMP     R10, #0
1� �Q   R1, #0
2 LDMFD   R13!,{R9,PC}
2
 :
2	 .gun
2 STMFD   R13!,{R9,R14}
2( :
22 ADD     R2,R2,R4
2< ADD     R3,R3,R5
2F CMP     R4, #0
2P MOVLT   R7, #3
2Z MOVGT   R7, #2
2d :
2n STMFD   R13!,{R1-R6}
2x :
2� MOV     R6, #0
2� BL      check_death
2� MOV     R6, #1
2� BL      check_death
2� :
2� MOV     R2,R2, ASR #4
2� MOV     R3,R3, ASR #4
2� RSB     R3,R3, #256
2� LDR     R4, screenstore
2� MOV     R5, #y_shift
2� ADD     R4,R4,R2
2� MLA     R4,R5,R3,R4
2� LDRB    R0,[R4]
3 CMP     R0, #0
3 �Q   R10, #1
3 MOVNE   R10, #0
3" BNE     no_gun
3, RSB     R3,R3, #256
36 MOV     R0,R7
3@ SUB     R1,R2, #2
3J SUB     R2,R3, #2
3T BL      plot_sprite_0804
3^;LDR     R0, adr_gun_fade
3h;MOV     R9, #255
3r;LDRB    R0,[R0,R9]
3|;STRB    R0,[R4]
3� .no_gun
3� :
3� LDMFD   R13!,{R1-R6}
3� CMP     R10, #0
3� �Q   R1, #0
3� LDMFD   R13!,{R9,PC}
3� :
3� .mortar
3� STMFD   R13!,{R9,R14}
3� :
3� SUB     R5,R5, #1
3� MOV     R0, #32
3� RSB     R0,R0, #0
4 CMP     R5,R0
4 MOVLT   R5,R0
4 ADD     R2,R2,R4
4& ADD     R3,R3,R5
40 :
4: STMFD   R13!,{R1-R6}
4D :
4N BL      check_death
4X :
4b MOV     R2,R2, ASR #4
4l MOV     R3,R3, ASR #4
4v RSB     R3,R3, #256
4� LDR     R4, screenstore
4� MOV     R5, #y_shift
4� ADD     R4,R4,R2
4� MLA     R4,R5,R3,R4
4� LDRB    R0,[R4]
4� CMP     R0, #0
4� �Q   R10, #1
4� MOVNE   R10, #0
4� �Q   R0, #255
4� STREQB  R0,[R4]
4� STREQB  R0,[R4, #1]
4� ADD     R2,R4, #y_shift
4� STREQB  R0,[R2]
5 STREQB  R0,[R2, #1]
5 :
5 LDMFD   R13!,{R1-R6}
5  CMP     R10, #0
5* BNE     end_mortar
54 SUB     R2,R2,R4, ASL #1
5> SUB     R3,R3,R5, ASL #1
5H MOV     R1,R2, ASR #4
5R MOV     R2,R3, ASR #4
5\ RSB     R2,R2, #256
5f MOV     R9, #0
5p% LDR     R10, adr_explosion_spray
5z MOV     R0, #8
5� LDR     R8, rnd
5� �     R8,R8, #7
5� MOV     R6, #16<<8
5� MOV     R5, #32
5� .mortar_loop1
5� LDRB    R3,[R10], #1
5� LDRB    R4,[R10], #1
5� MOV     R3,R3, LSL #24
5� MOV     R4,R4, LSL #24
5� MOV     R3,R3, ASR #24
5� MOV     R4,R4, ASR #24
5� �     R3,R3, R8
5� �     R4,R4, R8
6 ADD     R6,R6,R3, ASL #8
6 ADD     R6,R6,R4, ASL #8
6 �     R6,R6, #31<<8
6$ BL      add_cell
6. CMP     R9, #16
68 �Q   R0, #9
6B MOVGE   R5,R6
6L ADD     R9,R9, #1
6V CMP     R9, #64
6` BLE     mortar_loop1
6j MOV     R5, #1
6t MOV     R0, #1
6~ MVN     R1, #14
6� MOV     R2, #explosion%
6� MOV     R3, #0
6� SWI     "Sound_Control"
6� MOV     R1, #0
6� .end_mortar
6� :
6� LDMFD   R13!,{R9,PC}
6� :
6� .adr_explosion_spray
6� EQUD    explosion_spray
6� :
6�
 .bomb
7 STMFD   R13!,{R9,R14}
7
 :
7 MOV     R0, #256
7 RSB     R0,R0, #0
7( CMP     R5,R0
72 MOVLT   R5,R0
7< ADD     R2,R2,R4, ASR #2
7F ADD     R3,R3,R5, ASR #2
7P CMP     R4, #0
7Z ADDLT   R4,R4, #1
7d SUBGT   R4,R4, #1
7n MOV     R10,R6
7x :
7� STMFD   R13!,{R1-R6}
7� :
7� MOV     R2,R2, ASR #4
7� MOV     R3,R3, ASR #4
7� RSB     R3,R3, #256
7� LDR     R4, screenstore
7� MOV     R5, #y_shift
7� ADD     R4,R4,R2
7� MLA     R4,R5,R3,R4
7� ADD     R0,R4, #y_shift
7� LDRB    R0,[R0]
7� CMP     R0, #0
7� SUBNE   R10,R10, #1
8 MOV     R0, #%00010111
8 SUB     R4,R4, #y_shift
8 STRB    R0,[R4, #1]
8" ADD     R4,R4, #y_shift
8, STRB    R0,[R4]
86 STRB    R0,[R4, #1]
8@ STRB    R0,[R4, #2]
8J :
8T LDMFD   R13!,{R1-R6}
8^  CMP     R10, #bomb_pause%-1
8h ADDEQ   R3,R3, #4
8r CMP     R10,R6
8| SUBLT   R2,R2,R4
8� SUBLT   R3,R3,R5, ASR #2
8� MOVLT   R4, #0
8� MOVLT   R5, #0
8� SUBEQ   R5,R5, #4
8� MOVGT   R5, #0
8� MOV     R6,R10
8� CMP     R6, #0
8� BNE     end_bomb
8� MOV     R1,R2, ASR #4
8� MOV     R2,R3, ASR #4
8� ADD     R2,R2, #2
8� RSB     R2,R2, #256
8� MOV     R9, #0
9 MOV     R0, #8
9 LDR     R8, rnd
9 �     R8,R8, #7
9& MOV     R6, #16<<8
90 MOV     R5, #32
9:! ADR     R10, explosion_spray
9D .bomb_loop1
9N LDRB    R3,[R10], #1
9X LDRB    R4,[R10], #1
9b MOV     R3,R3, LSL #24
9l MOV     R4,R4, LSL #24
9v MOV     R3,R3, ASR #24
9� MOV     R4,R4, ASR #24
9� �     R3,R3, R8
9� �     R4,R4, R8
9� ADD     R6,R6,R3, ASL #8
9� ADD     R6,R6,R4, ASL #8
9� �     R6,R6, #31<<8
9� ADD     R3,R3,R3, ASR #1
9� ADD     R4,R4,R4, ASR #1
9� BL      add_cell
9� CMP     R9, #24
9� �Q   R0, #9
9� MOVGE   R5,R6
9� ADD     R9,R9, #1
: CMP     R9, #32
: BLE     bomb_loop1
: MOV     R5, #1
:  MOV     R0, #1
:* MVN     R1, #14
:4 MOV     R2, #explosion%
:> MOV     R3, #0
:H SWI     "Sound_Control"
:R MOV     R1, #0
:\ MOV     R5, #0
:f .end_bomb
:p :
:z LDMFD   R13!,{R9,PC}
:� :
:� .adr_screenstore2
:� :
:� .homing
:� 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
;8 LDRNE   R11, p2_y
;B ADD     R10,R10, #xext%/2
;L ADD     R11,R11, #yext%/2
;V CMP     R2,R10, ASL #4
;` SUBGT   R4,R4, #1
;j ADDLT   R4,R4, #1
;t CMP     R3,R11, ASL #4
;~ SUBGT   R5,R5, #1
;� ADDLT   R5,R5, #1
;�# MOV     R0, #max_homing_speed%
;� CMP     R4,R0
;� SUBGT   R4,R0, #1
;� 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
<2 ADDLT   R7,R7, #2
<< CMP     R4, #10
<F ADDGT   R7,R7, #4
<P CMN     R5, #10
<Z ADDLT   R7,R7, #12
<d CMP     R5, #10
<n ADDGT   R7,R7, #6
<x :
<� ADD     R7,R7, #3
<� �     R0,R6, #%110
<� MOV     R0,R0, ASR #1
<� ADD     R0,R0, #1
<� �     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
=6 RSB     R3,R3, #256
=@  LDR     R4, adr_screenstore
=J LDR     R4,[R4]
=T MOV     R5, #y_shift
=^ ADD     R4,R4,R2
=h MLA     R4,R5,R3,R4
=r LDRB    R0,[R4]
=| CMP     R0, #0
=� �Q   R10, #1
=� MOVNE   R10, #0
=� BNE     no_homing
=� RSB     R3,R3, #256
=� MOV     R0,R7
=� SUB     R1,R2, #2
=� SUB     R2,R3, #2
=� BL      plot_sprite_0804
=�;LDR     R0, adr_gun_fade
=�;MOV     R9,R6, LSR #8
=�;�     R9,R9, #255
=�;CMP     R9, #255
=�;MOVGT   R9, #255
>;LDRB    R0,[R0,R9]
>;STRB    R0,[R4]
> .no_homing
>& :
>0 LDMFD   R13!,{R1-R6}
>: CMP     R10, #0
>D BNE     end_homing
>N MOV     R0, #11
>X MOV     R1,R2, ASR #4
>b MOV     R2,R3, ASR #4
>l RSB     R2,R2, #256
>v RSB     R3,R4, #0
>� RSB     R4,R5, #0
>� MOV     R3,R3, ASR #2
>� MOV     R4,R4, ASR #2
>� �     R5,R6, #1
>� BL      add_cell
>� MOV     R5, #1
>� MOV     R0, #1
>� MVN     R1, #10
>� MOV     R2, #explosion%
>� MOV     R3, #0
>� SWI     "Sound_Control"
>� MOV     R1, #0
>� .end_homing
? LDMFD   R13!,{R9,PC}
? :
?
 .seeking
?  STMFD   R13!,{R9,R14}
?* :
?4 TST     R6, #1
?> LDREQ   R10, p1_x
?H LDREQ   R11, p1_y
?R LDRNE   R10, p2_x
?\ LDRNE   R11, p2_y
?f ADD     R10,R10, #xext%/2
?p ADD     R11,R11, #yext%/2
?z CMP     R2,R10, ASL #4
?� SUBGT   R4,R4, #1
?� ADDLT   R4,R4, #1
?� CMP     R3,R11, ASL #4
?� SUBGT   R5,R5, #1
?� ADDLT   R5,R5, #1
?� MOV     R0, #16
?� CMP     R4,R0
?� SUBGT   R4,R4, #1
?� RSB     R0,R0, #0
?� CMP     R4,R0
?� ADDLT   R4,R4, #1
?� MOV     R0, #16
?� CMP     R5,R0
@ SUBGT   R5,R5, #1
@ RSB     R0,R0, #0
@ CMP     R5,R0
@$ ADDLT   R5,R5, #1
@. :
@8 STMFD   R13!,{R1-R6}
@B :
@L BL      check_death
@V :
@` MOV     R2,R2, ASR #4
@j MOV     R3,R3, ASR #4
@t RSB     R3,R3, #256
@~  LDR     R4, adr_screenstore
@� LDR     R4,[R4]
@� MOV     R5, #y_shift
@� ADD     R4,R4,R2
@� MLA     R4,R5,R3,R4
@� LDRB    R0,[R4]
@� CMP     R0, #0
@� �Q   R10, #1
@� BEQ     post_recalc
@� MOV     R10, #0
@� LDMFD   R13,{R1-R6}
@� SUB     R2,R2,R4, ASL #1
@� SUB     R3,R3,R5, ASL #1
A MOV     R2,R2, ASR #4
A
 MOV     R3,R3, ASR #4
A RSB     R3,R3, #256
A  LDR     R4, adr_screenstore
A( LDR     R4,[R4]
A2 MOV     R5, #y_shift
A< ADD     R4,R4,R2
AF MLA     R4,R5,R3,R4
AP .post_recalc
AZ RSB     R3,R3, #256
Ad MOV     R0, #4
An SUB     R1,R2, #2
Ax SUB     R2,R3, #2
A� BL      plot_sprite_0804
A� .no_seeking
A� :
A� LDMFD   R13!,{R1-R6}
A� CMP     R10, #0
A� ADDNE   R2,R2,R4
A� ADDNE   R3,R3,R5
A� SUBEQ   R2,R2,R4, ASL #1
A� SUBEQ   R3,R3,R5, ASL #1
A� �Q   R4, #0
A� �Q   R5, #0
A� LDMFD   R13!,{R9,PC}
A� :
B .vertical
B STMFD   R13!,{R9,R14}
B :
B" ADD     R2,R2,R4
B, ADD     R3,R3,R5
B6 :
B@ STMFD   R13!,{R1-R6}
BJ :
BT BL      check_death
B^ :
Bh MOV     R2,R2, ASR #4
Br MOV     R3,R3, ASR #4
B| RSB     R3,R3, #256
B�  LDR     R4, adr_screenstore
B� LDR     R4,[R4]
B� MOV     R5, #y_shift
B� ADD     R4,R4,R2
B� MLA     R4,R5,R3,R4
B� LDRB    R0,[R4]
B� CMP     R0, #0
B� �Q   R10, #1
B� MOVNE   R10, #0
B� BNE     no_vert
B� RSB     R3,R3, #256
B� MOV     R0, #22
B� SUB     R1,R2, #2
C SUB     R2,R3, #2
C BL      plot_sprite_0804
C;LDR     R0, adr_gun_fade
C&;MOV     R9, #255
C0;LDRB    R0,[R0,R9]
C:;STRB    R0,[R4]
CD;ADD     R4,R4, #320
CN;SUB     R4,R4, #1
CX;STRB    R0,[R4]
Cb;STRB    R0,[R4, #2]
Cl
 .no_vert
Cv :
C� LDMFD   R13!,{R1-R6}
C� CMP     R10, #0
C� �Q   R1, #0
C� LDMFD   R13!,{R9,PC}
C� :
C� .check_death
C� TST     R6, #1
C� LDREQ   R10, p1_x
C� LDREQ   R11, p1_y
C� LDRNE   R10, p2_x
C� LDRNE   R11, p2_y
C� MOV     R9,R2, ASR #4
C� SUB     R10,R9,R10
D CMN     R10, #2
D BLT     not_dead
D CMP     R10, #xext%+2
D  BGT     not_dead
D* MOV     R9,R3, ASR #4
D4 SUB     R11,R9,R11
D> CMN     R11, #2
DH BLT     not_dead
DR CMP     R11, #yext%+2
D\ BGT     not_dead
Df TST     R6, #1
Dp BNE     dead_player2
Dz LDR     R0, player1_alive
D� CMP     R0, #1
D� BEQ     not_dead
D� MOV     R0, #1
D� STR     R0, player1_alive
D� MOV     R0, #3
D� MVN     R1, #14
D� MOV     R2, #scream%
D� MOV     R3, #0
D� SWI     "Sound_Control"
D� B       not_dead
D� .dead_player2
D� LDR     R0, player2_alive
D� CMP     R0, #1
E BEQ     not_dead
E MOV     R0, #1
E STR     R0, player2_alive
E$ MOV     R0, #3
E. MVN     R1, #14
E8 MOV     R2, #scream%
EB MOV     R3, #0
EL SWI     "Sound_Control"
EV .not_dead
E` MOV     PC,R14
Ej :
Et .player1_alive
E~ EQUD    0
E� .player2_alive
E� EQUD    0
E� :
E� .explosion_spray
E� ]
E� � a%=1 � 64
E� r%=�(20)+28
E� ang%=�(360)
E� x%=��(ang%)*r%
E� y%=��(ang%)*r%
E�! � x%<0 � x%=(x% � 128) � 255
E�! � y%<0 � y%=(y% � 128) � 255
F [OPT pass%
F
 EQUB    x%
F EQUB    y%
F ]
F( �
F2 [OPT pass%
F<
 ALIGN
FF :
FP .end_game
FZ EQUD    0
Fd .adr_screenstore
Fn EQUD    screenstore
Fx .adr_clist2
F� EQUD    clist%
F� :
F� :
F� :
F� .add_cell
F� STMFD   R13!,{R0-R12,R14}
F� :
F� RSB     R2,R2, #256
F� MOV     R1,R1, ASL #4
F� MOV     R2,R2, ASL #4
F� :
F� LDR     R9, adr_clist2
F� .sloop1
G LDR     R8,[R9]
G CMP     R8, #0
G STMEQIA R9,{R0-R5}
G" BEQ     done_cell
G, ADD     R9,R9, #32
G6 BGE     sloop1
G@ .done_cell
GJ :
GT LDMFD   R13!,{R0-R12,PC}
G^ :
Gh :
Gr :
G| .add_goodie
G� STMFD   R13!,{R0-R12,R14}
G� :
G� LDR     R9, rnd
G� MOV     R9,R9, LSR #24
G� �     R0,R9, #255
G� .goodie_loop
G� CMP     R0, #7
G� SUBGT   R0,R0, #7
G� BGT     goodie_loop
G� ADD     R0,R0, #4
G� �     R1,R9, #%111000
G� ADR     R2, positions
G� ADD     R2,R2,R1
H LDR     R1,[R2]
H LDR     R2,[R2, #4]
H MOV     R3, #320
H& BL      add_sprite
H0 :
H: LDMFD   R13!,{R0-R12,PC}
HD :
HN .positions
HX ]
Hb � a%=0 � 8
Hl [OPTpass%
Hv EQUD    0
H� EQUD    0
H� ]
H� �
H� [OPT pass%
H� :
H� .as_adr_slist
H� EQUD    slist%
H� :
H� .add_sprite
H� STMFD   R13!,{R0-R12,R14}
H� :
H� LDR     R9, as_adr_slist
H� .sloop1
I LDR     R8,[R9]
I CMP     R8, #0
I ADDNE   R9,R9, #16
I  BNE     sloop1
I* STMEQIA R9,{R0-R3}
I4 BEQ     done_cell
I> .done_cell
IH :
IR LDMFD   R13!,{R0-R12,PC}
I\ :
If
 .p2_fire
Ip EQUD    0
Iz .explode_2
I� EQUD    0
I� :
I�
 .player2
I� STMFD   R13!,{R9,R14}
I� :
I� CMP     R6, #32
I� MOVLT   R6, #32
I� CMP     R7, #32
I� MOVLT   R7, #32
I� CMP     R6, #1280-80
I� MOVGT   R6, #1280-80
I� CMP     R7, #1024-80
I� MOVGT   R7, #1024-80
J :
J LDR     R0, player2_alive
J CMP     R0, #0
J$ BEQ     play_player2
J. BNE     explode_player2
J8 :
JB .explode_player2
JL :
JV LDR     R0, explode_2
J` ADD     R0,R0, #1
Jj STR     R0, explode_2
Jt CMP     R0, #7<<3
J~ STRGT   R0, end_game
J� LDMGTFD R13!,{R9,PC}
J� CMP     R0, #7<<1
J� LDMGTFD R13!,{R9,PC}
J� MOV     R0,R0, ASR #1
J� MOV     R1,R6, ASR #2
J� MOV     R2,R7, ASR #2
J� SUB     R1,R1, #4
J� BL      plot_sprite_2016
J� :
J� LDMFD   R13!,{R9,PC}
J� :
J� .play_player2
K :
K
 MOV     R1,R6, LSR #2
K MOV     R2,R7, LSR #2
K ADD     R1,R1, #xext%/2
K( BL      read_point
K2 CMP     R0, #0
K< SUBEQ   R7,R7, #4
KF :
KP MOV     R1,R6, LSR #2
KZ MOV     R2,R7, LSR #2
Kd ADD     R1,R1, #xext%/3
Kn BL      read_point
Kx CMP     R0, #0
K� ADDNE   R7,R7, #4
K� :
K� MOV     R1,R6, LSR #2
K� MOV     R2,R7, LSR #2
K� ADD     R1,R1, #xext%/3*2
K� BL      read_point
K� CMP     R0, #0
K� ADDNE   R7,R7, #4
K� :
K� �     R10,R8, #255<<8
K� MOV     R10,R10, LSR #8
K� :
K� MOV     R1,R6, LSR #2
L MOV     R2,R7, LSR #2
L ADD     R1,R1, #xext%+1
L ADD     R2,R2, #4
L" BL      read_point
L, CMP     R0, #0
L6 BNE     p2_not_right
L@ MOV     R1,R6, LSR #2
LJ MOV     R2,R7, LSR #2
LT ADD     R1,R1, #xext%
L^ ADD     R2,R2, #yext%-2
Lh BL      read_point
Lr CMP     R0, #0
L| BNE     p2_not_right
L� MOV     R0, #129
L� MOV     R1, #0
L� SUB     R1,R1, #124
L� MOV     R2, #255
L� SWI     "OS_Byte"
L� CMP     R1, #255
L� BNE     p2_not_right
L� ADD     R10,R10, #4
L� BIC     R8,R8, #1
L� .p2_not_right
L� :
L� MOV     R1,R6, LSR #2
L� MOV     R2,R7, LSR #2
M SUB     R1,R1, #1
M ADD     R2,R2, #4
M BL      read_point
M& CMP     R0, #0
M0 BNE     p2_not_left
M: MOV     R1,R6, LSR #2
MD MOV     R2,R7, LSR #2
MN SUB     R1,R1, #1
MX ADD     R2,R2, #yext%-2
Mb BL      read_point
Ml CMP     R0, #0
Mv BNE     p2_not_left
M� MOV     R0, #129
M� MOV     R1, #0
M� SUB     R1,R1, #123
M� MOV     R2, #255
M� SWI     "OS_Byte"
M� CMP     R1, #255
M� BNE     p2_not_left
M� SUB     R10,R10, #4
M� �R     R8,R8, #1
M� .p2_not_left
M� :
M� CMP     R10, #128
M� BEQ     p2_sideways
N BGT     p2_right
N MOV     R1,R6, LSR #2
N MOV     R2,R7, LSR #2
N  SUB     R1,R1, #1
N* ADD     R2,R2, #2
N4 BL      read_point
N> CMP     R0, #0
NH MOVNE   R10, #128
NR MOV     R1,R6, LSR #2
N\ MOV     R2,R7, LSR #2
Nf SUB     R1,R1, #1
Np ADD     R2,R2, #yext%-2
Nz BL      read_point
N� CMP     R0, #0
N� MOVNE   R10, #128
N� B       p2_sideways
N� .p2_right
N� MOV     R1,R6, LSR #2
N� MOV     R2,R7, LSR #2
N� ADD     R1,R1, #xext%
N� ADD     R2,R2, #2
N� BL      read_point
N� CMP     R0, #0
N� MOVNE   R10, #128
N� MOV     R1,R6, LSR #2
N� MOV     R2,R7, LSR #2
O ADD     R1,R1, #xext%
O ADD     R2,R2, #yext%-2
O BL      read_point
O$ CMP     R0, #0
O. MOVNE   R10, #128
O8 B       p2_sideways
OB .p2_sideways
OL CMP     R10, #128+25*2
OV MOVGT   R10, #128+25*2
O` CMP     R10, #128-25*2
Oj MOVLT   R10, #128-25*2
Ot CMP     R10, #128
O~ ADDLT   R10,R10, #1
O� SUBGT   R10,R10, #1
O� BIC     R8,R8, #255<<8
O� �R     R8,R8,R10, LSL #8
O� SUB     R10,R10, #128
O� ADD     R6,R6,R10, ASR #3
O� :
O� �     R10,R8, #255<<16
O� MOV     R10,R10, LSR #16
O� :
O� MOV     R1,R6, LSR #2
O� MOV     R2,R7, LSR #2
O� ADD     R1,R1, #xext%/2
P ADD     R2,R2, #yext%
P
 BL      read_point
P CMP     R0, #0
P BNE     p2_not_up
P(;MOV     R1,R6, LSR #2
P2;MOV     R2,R7, LSR #2
P<;ADD     R1,R1, #xext%/2
PF;ADD     R2,R2, #yext%
PP;BL      read_point
PZ;CMP     R0, #0
Pd;BNE     p2_not_up
Pn MOV     R0, #129
Px MOV     R1, #0
P� SUB     R1,R1, #27
P� MOV     R2, #255
P� SWI     "OS_Byte"
P� CMP     R1, #255
P� ADDEQ   R10,R10, #4
P� .p2_not_up
P� :
P� MOV     R1,R6, LSR #2
P� MOV     R2,R7, LSR #2
P� ADD     R1,R1, #xext%-2
P� BL      read_point
P� CMP     R0, #0
P� BNE     p2_not_down
Q MOV     R1,R6, LSR #2
Q MOV     R2,R7, LSR #2
Q ADD     R1,R1, #2
Q" BL      read_point
Q, CMP     R0, #0
Q6 BNE     p2_not_down
Q@ MOV     R0, #129
QJ MOV     R1, #0
QT SUB     R1,R1, #109
Q^ MOV     R2, #255
Qh SWI     "OS_Byte"
Qr CMP     R1, #255
Q| SUBEQ   R10,R10, #2
Q� .p2_not_down
Q� :
Q� SUB     R10,R10, #1
Q� :
Q� CMP     R10, #128
Q� BEQ     p2_ud
Q� BGT     p2_up
Q� MOV     R1,R6, LSR #2
Q� MOV     R2,R7, LSR #2
Q� ADD     R1,R1, #xext%/2
Q� SUB     R2,R2, #1
Q� BL      read_point
Q� CMP     R0, #0
R MOVNE   R10, #128
R B       p2_ud
R .p2_up
R& MOV     R1,R6, LSR #2
R0 MOV     R2,R7, LSR #2
R: ADD     R1,R1, #xext%/2+2
RD ADD     R2,R2, #yext%
RN BL      read_point
RX CMP     R0, #0
Rb MOVNE   R10, #128
Rl MOV     R1,R6, LSR #2
Rv MOV     R2,R7, LSR #2
R� ADD     R1,R1, #xext%/2-2
R� ADD     R2,R2, #yext%
R� BL      read_point
R� CMP     R0, #0
R� MOVNE   R10, #128
R� B       p2_ud
R� .p2_ud
R� CMP     R10, #128+11*4
R� MOVGT   R10, #128+11*4
R� CMP     R10, #128-8*4
R� MOVLT   R10, #128-8*4
R� CMP     R10, #128
R� BIC     R8,R8, #255<<16
S �R     R8,R8,R10, LSL #16
S SUB     R10,R10, #128
S ADD     R7,R7,R10, ASR #2
S  :
S* LDR     R0, adr_p2_weapon
S4 LDR     R0,[R0]
S> CMP     R0, #2
SH BEQ     p2_fire_pistol
SR CMP     R0, #3
S\ BEQ     p2_fire_gun
Sf CMP     R0, #4
Sp BEQ     p2_fire_mortar
Sz CMP     R0, #5
S� BEQ     p2_fire_homing
S� CMP     R0, #6
S� BEQ     p2_fire_seeking
S� CMP     R0, #7
S� BEQ     p2_fire_vertical
S� CMP     R0, #8
S� BEQ     p2_fire_flame
S� CMP     R0, #9
S� BEQ     p2_fire_bomb
S� :
S� .p2_fire_pistol
S� LDR     R0, p2_fire
S� CMP     R0, #0
T BEQ     p2_pistol_shot
T MOV     R0, #129
T MOV     R1, #0
T$ SUB     R1,R1, #59
T. MOV     R2, #255
T8 SWI     "OS_Byte"
TB CMP     R1, #255
TL MOVNE   R0, #0
TV STRNE   R0, p2_fire
T` B       p2_not_fire_pistol
Tj .p2_pistol_shot
Tt MOV     R0, #129
T~ MOV     R1, #0
T� SUB     R1,R1, #59
T� MOV     R2, #255
T� SWI     "OS_Byte"
T� CMP     R1, #255
T� BNE     p2_not_fire_pistol
T� MOV     R0, #2
T� MOV     R1,R6, LSR #2
T� MOV     R2,R7, LSR #2
T� ADD     R1,R1, #xext%
T� ADD     R2,R2, #yext%/4*2
T� RSB     R2,R2, #256
T� MOV     R3, #80
U MOV     R4, #0
U
 MOV     R5, #0
U TST     R8, #1
U RSBNE   R3,R3, #0
U( SUBNE   R1,R1, #xext%
U2 BL      add_cell
U< MOV     R5, #2
UF MOV     R0, #1
UP STR     R0, p2_fire
UZ MOV     R0, #7
Ud MVN     R1, #14
Un MOV     R2, #12800
Ux MOV     R3, #0
U� SWI     "Sound_Control"
U� .p2_not_fire_pistol
U� B       p2_end_fire
U� :
U� .p2_fire_gun
U� MOV     R0, #129
U� MOV     R1, #0
U� SUB     R1,R1, #59
U� MOV     R2, #255
U� SWI     "OS_Byte"
U� CMP     R1, #255
U� BNE     p2_not_fire_gun
U� LDR     R0, p2_fire
V ADD     R0,R0, #1
V �     R0,R0, #%11
V STR     R0, p2_fire
V" TST     R0, #%11
V, BNE     p2_not_fire_gun
V6 MOV     R0, #3
V@ MOV     R1,R6, LSR #2
VJ MOV     R2,R7, LSR #2
VT ADD     R1,R1, #xext%
V^ ADD     R2,R2, #yext%/4*2
Vh RSB     R2,R2, #256
Vr MOV     R3, #80
V| LDR     R5, adr_rnd
V� LDR     R5,[R5]
V� �     R4,R5, #%1111
V� SUB     R4,R4, #%0111
V� �     R5,R5, #%110000
V� MOV     R5,R5, LSR #4
V� ADD     R1,R1,R5
V� MOV     R5, #0
V� TST     R8, #1
V� RSBNE   R3,R3, #0
V� SUBNE   R1,R1, #xext%+2
V� BL      add_cell
V� MOV     R5, #2
V� MOV     R0, #8
W MVN     R1, #12
W MOV     R2, #12800
W MOV     R3, #0
W& SWI     "Sound_Control"
W0 .p2_not_fire_gun
W: B       p2_end_fire
WD :
WN .p2_fire_mortar
WX;LDR     R0, p2_fire
Wb;CMP     R0, #0
Wl;BEQ     p2_mortar_shot
Wv;MOV     R0, #129
W�;MOV     R1, #0
W�;SUB     R1,R1, #59
W�;MOV     R2, #255
W�;SWI     "OS_Byte"
W�;CMP     R1, #255
W�;MOVNE   R0, #0
W�;STRNE   R0, p2_fire
W�;B       p2_not_fire_mortar
W�;.p2_mortar_shot
W� MOV     R0, #129
W� MOV     R1, #0
W� SUB     R1,R1, #59
W� MOV     R2, #255
X SWI     "OS_Byte"
X CMP     R1, #255
X BNE     p2_not_fire_mortar
X  LDR     R0, p2_fire
X* ADD     R0,R0, #1
X4 �     R0,R0, #%11111
X> STR     R0, p2_fire
XH TST     R0, #%11111
XR BNE     p2_not_fire_mortar
X\ MOV     R0, #4
Xf MOV     R1,R6, LSR #2
Xp MOV     R2,R7, LSR #2
Xz ADD     R1,R1, #xext%
X� ADD     R2,R2, #yext%/4*2
X� RSB     R2,R2, #256
X� MOV     R3, #30
X� MOV     R4, #40
X� MOV     R5, #0
X� TST     R8, #1
X� RSBNE   R3,R3, #0
X� SUBNE   R1,R1, #xext%
X� BL      add_cell
X� MOV     R5, #2
X� MOV     R0, #1
X� STR     R0, p2_fire
X� .p2_not_fire_mortar
Y B       p2_end_fire
Y :
Y .p2_fire_homing
Y$ .p2_homing_shot
Y. MOV     R0, #129
Y8 MOV     R1, #0
YB SUB     R1,R1, #59
YL MOV     R2, #255
YV SWI     "OS_Byte"
Y` CMP     R1, #255
Yj BNE     p2_not_fire_homing
Yt LDR     R0, p2_fire
Y~ ADD     R0,R0, #1
Y� �     R0,R0, #%1111
Y� STR     R0, p2_fire
Y� TST     R0, #%1111
Y� BNE     p2_not_fire_homing
Y� MOV     R0, #5
Y� MOV     R1,R6, LSR #2
Y� MOV     R2,R7, LSR #2
Y� ADD     R1,R1, #xext%
Y� ADD     R2,R2, #yext%/4*2
Y� RSB     R2,R2, #256
Y� MOV     R3, #64
Y� LDR     R4, adr_rnd
Z LDR     R4,[R4]
Z
 �     R4,R4, #15
Z SUB     R4,R4, #7
Z9 MOV     R5, #224<<8          ; Homing in on player 1
Z( TST     R8, #1
Z2 RSBNE   R3,R3, #0
Z< SUBNE   R1,R1, #xext%
ZF BL      add_cell
ZP MOV     R5, #7
ZZ MOV     R0, #8
Zd MVN     R1, #10
Zn MOV     R2, #8000
Zx MOV     R3, #0
Z� SWI     "Sound_Control"
Z� .p2_not_fire_homing
Z� B       p2_end_fire
Z� :
Z� .p2_fire_seeking
Z� .p2_seeking_shot
Z� MOV     R0, #129
Z� MOV     R1, #0
Z� SUB     R1,R1, #59
Z� MOV     R2, #255
Z� SWI     "OS_Byte"
Z� CMP     R1, #255
Z�  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
[6 RSB     R2,R2, #256
[@ MOV     R3, #32
[J MOV     R4, #0
[T9 MOV     R5, #0               ; Homing in on player 1
[^ TST     R8, #1
[h RSBNE   R3,R3, #0
[r SUBNE   R1,R1, #xext%*2
[| BL      add_cell
[� MOV     R5, #2
[� MOV     R9, #2
[� 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
\0 BEQ     p2_vertical_shot
\: MOV     R0, #129
\D MOV     R1, #0
\N SUB     R1,R1, #59
\X MOV     R2, #255
\b SWI     "OS_Byte"
\l CMP     R1, #255
\v MOVNE   R0, #0
\� STRNE   R0, p2_fire
\�! B       p2_not_fire_vertical
\� .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
]* MOV     R4, #64
]4 MOV     R5, #0
]> TST     R8, #1
]H RSBNE   R3,R3, #0
]R SUBNE   R1,R1, #xext%
]\ BL      add_cell
]f MOV     R5, #2
]p MOV     R0, #1
]z STR     R0, p2_fire
]� MOV     R0, #7
]� MVN     R1, #14
]� MOV     R2, #10240
]� MOV     R3, #0
]� SWI     "Sound_Control"
]� .p2_not_fire_vertical
]� B       p2_end_fire
]� :
]� .p2_fire_flame
]� MOV     R0, #129
]� MOV     R1, #0
]� SUB     R1,R1, #59
]� MOV     R2, #255
^ SWI     "OS_Byte"
^ CMP     R1, #255
^ BNE     p2_not_fire_flame
^$ MOV     R0, #10
^. MOV     R1,R6, LSR #2
^8 MOV     R2,R7, LSR #2
^B ADD     R1,R1, #xext%
^L ADD     R2,R2, #yext%/4*2
^V RSB     R2,R2, #256
^` MOV     R3, #72
^j LDR     R4, adr_rnd
^t LDR     R4,[R4]
^~ �     R4,R4, #7
^� SUB     R4,R4, #1
^� MOV     R5,R5, LSR #4
^� ADD     R1,R1,R5
^� MOV     R5, #0
^� TST     R8, #1
^� RSBNE   R3,R3, #0
^� SUBNE   R1,R1, #xext%
^� BL      add_cell
^� .p2_not_fire_flame
^� B       p2_end_fire
^� :
^� .p2_fire_bomb
_ MOV     R0, #129
_
 MOV     R1, #0
_ SUB     R1,R1, #59
_ MOV     R2, #255
_( SWI     "OS_Byte"
_2 CMP     R1, #255
_< BNE     p2_not_fire_bomb
_F LDR     R0, p2_fire
_P ADD     R0,R0, #1
_Z CMP     R0, #10
_d MOVGT   R0, #0
_n STR     R0, p2_fire
_x CMP     R0, #0
_� BNE     p2_not_fire_bomb
_� MOV     R0, #12
_� 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, #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, #2
` MOV     R0, #1
`" STR     R0, p2_fire
`, .p2_not_fire_bomb
`6 B       p2_end_fire
`@ :
`J .p2_end_fire
`T :
`^ MOV     R0, #1
`h MOV     R1,R6, LSR #2
`r MOV     R2,R7, LSR #2
`| TST     R8, #1
`� ADDNE   R1,R1, #xext%
`� ADD     R2,R2, #yext%/4
`� RSB     R2,R2, #256
`� 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
a MOV     R5, #2
a :
a �     R0,R8, #1
a& ADD     R0,R0, #2
a0 MOV     R1,R6, LSR #2
a: MOV     R2,R7, LSR #2
aD LDR     R3, adr_p2_x
aN STR     R1,[R3]
aX LDR     R3, adr_p2_y
ab STR     R2,[R3]
al BL      plot_sprite_1616
av :
a� LDMFD   R13!,{R9,PC}
a� :
a� .adr_p2_x
a� EQUD    p2_x
a� .adr_p2_y
a� EQUD    p2_y
a� .adr_p2_weapon
a� EQUD    p2_weapon
a� .adr_p1_weapon
a� EQUD    p1_weapon
a�
 .p1_fire
a� EQUD    0
a� .explode_1
b EQUD    0
b :
b
 .player1
b  STMFD   R13!,{R9,R14}
b* :
b4 CMP     R6, #32
b> MOVLT   R6, #32
bH CMP     R7, #32
bR MOVLT   R7, #32
b\ CMP     R6, #1280-64
bf MOVGT   R6, #1280-64
bp CMP     R7, #1024-64
bz MOVGT   R7, #1024-64
b� :
b� LDR     R0, player1_alive
b� CMP     R0, #0
b� BEQ     play_player1
b� BNE     explode_player1
b� :
b� .explode_player1
b� LDR     R0, explode_1
b� ADD     R0,R0, #1
b� STR     R0, explode_1
b� CMP     R0, #7<<3
b� STRGT   R0, end_game
b� LDMGTFD R13!,{R9,PC}
c CMP     R0, #7<<1
c LDMGTFD R13!,{R9,PC}
c MOV     R0,R0, ASR #1
c$ MOV     R1,R6, ASR #2
c. MOV     R2,R7, ASR #2
c8 SUB     R1,R1, #4
cB BL      plot_sprite_2016
cL :
cV LDMFD   R13!,{R9,PC}
c` :
cj .play_player1
ct :
c~ MOV     R1,R6, LSR #2
c� MOV     R2,R7, LSR #2
c� ADD     R1,R1, #xext%/2
c� BL      read_point
c� CMP     R0, #0
c� SUBEQ   R7,R7, #4
c� :
c� MOV     R1,R6, LSR #2
c� MOV     R2,R7, LSR #2
c� ADD     R1,R1, #xext%/3
c� BL      read_point
c� CMP     R0, #0
c� ADDNE   R7,R7, #4
d :
d
 MOV     R1,R6, LSR #2
d MOV     R2,R7, LSR #2
d ADD     R1,R1, #xext%/3*2
d( BL      read_point
d2 CMP     R0, #0
d< ADDNE   R7,R7, #4
dF :
dP �     R10,R8, #255<<8
dZ MOV     R10,R10, LSR #8
dd :
dn MOV     R1,R6, LSR #2
dx MOV     R2,R7, LSR #2
d� ADD     R1,R1, #xext%-1
d� ADD     R2,R2, #4
d� BL      read_point
d� CMP     R0, #0
d� BNE     p1_not_right
d� MOV     R1,R6, LSR #2
d� MOV     R2,R7, LSR #2
d� ADD     R1,R1, #xext%
d� ADD     R2,R2, #yext%-2
d� BL      read_point
d� CMP     R0, #0
d� BNE     p1_not_right
d� MOV     R0, #129
e MOV     R1, #0
e SUB     R1,R1, #67
e MOV     R2, #255
e" SWI     "OS_Byte"
e, CMP     R1, #255
e6 BNE     p1_not_right
e@ ADD     R10,R10, #4
eJ BIC     R8,R8, #1
eT .p1_not_right
e^ :
eh MOV     R1,R6, LSR #2
er MOV     R2,R7, LSR #2
e| SUB     R1,R1, #1
e� ADD     R2,R2, #4
e� BL      read_point
e� CMP     R0, #0
e� BNE     p1_not_left
e� MOV     R1,R6, LSR #2
e� MOV     R2,R7, LSR #2
e� SUB     R1,R1, #1
e� ADD     R2,R2, #yext%-2
e� BL      read_point
e� CMP     R0, #0
e� BNE     p1_not_left
e� MOV     R0, #129
e� MOV     R1, #0
f SUB     R1,R1, #98
f MOV     R2, #255
f SWI     "OS_Byte"
f& CMP     R1, #255
f0 BNE     p1_not_left
f: SUB     R10,R10, #4
fD �R     R8,R8, #1
fN .p1_not_left
fX :
fb CMP     R10, #128
fl BEQ     p1_sideways
fv BGT     p1_right
f� MOV     R1,R6, LSR #2
f� MOV     R2,R7, LSR #2
f� SUB     R1,R1, #1
f� ADD     R2,R2, #2
f� BL      read_point
f� CMP     R0, #0
f� MOVNE   R10, #128
f� MOV     R1,R6, LSR #2
f� MOV     R2,R7, LSR #2
f� SUB     R1,R1, #1
f� ADD     R2,R2, #yext%-2
f� BL      read_point
f� CMP     R0, #0
g MOVNE   R10, #128
g B       p1_sideways
g .p1_right
g  MOV     R1,R6, LSR #2
g* MOV     R2,R7, LSR #2
g4 ADD     R1,R1, #xext%
g> ADD     R2,R2, #2
gH BL      read_point
gR CMP     R0, #0
g\ MOVNE   R10, #128
gf MOV     R1,R6, LSR #2
gp MOV     R2,R7, LSR #2
gz ADD     R1,R1, #xext%
g� ADD     R2,R2, #yext%-2
g� BL      read_point
g� CMP     R0, #0
g� MOVNE   R10, #128
g� B       p1_sideways
g� .p1_sideways
g� CMP     R10, #128+25*2
g� MOVGT   R10, #128+25*2
g� CMP     R10, #128-25*2
g� MOVLT   R10, #128-25*2
g� CMP     R10, #128
g� ADDLT   R10,R10, #1
g� SUBGT   R10,R10, #1
h BIC     R8,R8, #255<<8
h �R     R8,R8,R10, LSL #8
h SUB     R10,R10, #128
h$ ADD     R6,R6,R10, ASR #3
h. :
h8 �     R10,R8, #255<<16
hB MOV     R10,R10, LSR #16
hL :
hV MOV     R1,R6, LSR #2
h` MOV     R2,R7, LSR #2
hj ADD     R1,R1, #xext%/2+1
ht ADD     R2,R2, #yext%
h~ BL      read_point
h� CMP     R0, #0
h� BNE     p1_not_up
h� MOV     R1,R6, LSR #2
h� MOV     R2,R7, LSR #2
h� ADD     R1,R1, #xext%/2-1
h� ADD     R2,R2, #yext%
h� BL      read_point
h� CMP     R0, #0
h� BNE     p1_not_up
h� MOV     R0, #129
h� MOV     R1, #0
h� SUB     R1,R1, #68
i MOV     R2, #255
i
 SWI     "OS_Byte"
i CMP     R1, #255
i ADDEQ   R10,R10, #4
i( .p1_not_up
i2 :
i< MOV     R1,R6, LSR #2
iF MOV     R2,R7, LSR #2
iP ADD     R1,R1, #xext%-2
iZ BL      read_point
id CMP     R0, #0
in BNE     p1_not_down
ix MOV     R1,R6, LSR #2
i� MOV     R2,R7, LSR #2
i� BL      read_point
i� CMP     R0, #0
i� BNE     p1_not_down
i� MOV     R0, #129
i� MOV     R1, #0
i� SUB     R1,R1, #83
i� MOV     R2, #255
i� SWI     "OS_Byte"
i� CMP     R1, #255
i� SUBEQ   R10,R10, #2
i� .p1_not_down
i� :
j SUB     R10,R10, #1
j :
j CMP     R10, #128
j" BEQ     p1_ud
j, BGT     p1_up
j6 MOV     R1,R6, LSR #2
j@ MOV     R2,R7, LSR #2
jJ ADD     R1,R1, #xext%/2
jT SUB     R2,R2, #1
j^ BL      read_point
jh CMP     R0, #0
jr MOVNE   R10, #128
j| B       p1_ud
j� .p1_up
j� MOV     R1,R6, LSR #2
j� MOV     R2,R7, LSR #2
j� ADD     R1,R1, #xext%
j� ADD     R2,R2, #yext%
j� BL      read_point
j� CMP     R0, #0
j� MOVNE   R10, #128
j� MOV     R1,R6, LSR #2
j� MOV     R2,R7, LSR #2
j� ADD     R2,R2, #yext%
j� BL      read_point
j� CMP     R0, #0
k MOVNE   R10, #128
k B       p1_ud
k .p1_ud
k& CMP     R10, #128+10*4
k0 MOVGT   R10, #128+10*4
k: CMP     R10, #128-8*4
kD MOVLT   R10, #128-8*4
kN CMP     R10, #128
kX BIC     R8,R8, #255<<16
kb �R     R8,R8,R10, LSL #16
kl SUB     R10,R10, #128
kv ADD     R7,R7,R10, ASR #2
k� :
k� LDR     R0, adr_p1_weapon
k� LDR     R0,[R0]
k� CMP     R0, #2
k� BEQ     p1_fire_pistol
k� CMP     R0, #3
k� BEQ     p1_fire_gun
k� CMP     R0, #4
k� BEQ     p1_fire_mortar
k� CMP     R0, #5
k� BEQ     p1_fire_homing
k� CMP     R0, #6
k� BEQ     p1_fire_seeking
l CMP     R0, #7
l BEQ     p1_fire_vertical
l CMP     R0, #8
l  BEQ     p1_fire_flame
l* CMP     R0, #9
l4 BEQ     p1_fire_bomb
l> :
lH .p1_fire_pistol
lR LDR     R0, p1_fire
l\ CMP     R0, #0
lf BEQ     p1_pistol_shot
lp MOV     R0, #129
lz MOV     R1, #0
l� SUB     R1,R1, #84
l� MOV     R2, #255
l� SWI     "OS_Byte"
l� CMP     R1, #255
l� MOVNE   R0, #0
l� STRNE   R0, p1_fire
l� B       p1_not_fire_pistol
l� .p1_pistol_shot
l� MOV     R0, #129
l� MOV     R1, #0
l� SUB     R1,R1, #84
l� MOV     R2, #255
l� SWI     "OS_Byte"
m CMP     R1, #255
m BNE     p1_not_fire_pistol
m MOV     R0, #2
m$ MOV     R1,R6, LSR #2
m. MOV     R2,R7, LSR #2
m8 ADD     R1,R1, #xext%
mB ADD     R2,R2, #yext%/4*2
mL RSB     R2,R2, #256
mV MOV     R3, #80
m` MOV     R4, #0
mj MOV     R5, #1
mt TST     R8, #1
m~ RSBNE   R3,R3, #0
m� SUBNE   R1,R1, #xext%
m� BL      add_cell
m� MOV     R5, #1
m� MOV     R0, #1
m� STR     R0, p1_fire
m� MOV     R0, #7
m� MVN     R1, #14
m� MOV     R2, #12800
m� MOV     R3, #0
m� SWI     "Sound_Control"
m� .p1_not_fire_pistol
m� B       p1_end_fire
n :
n
 .p1_fire_gun
n MOV     R0, #129
n MOV     R1, #0
n( SUB     R1,R1, #84
n2 MOV     R2, #255
n< SWI     "OS_Byte"
nF CMP     R1, #255
nP BNE     p1_not_fire_gun
nZ LDR     R0, p1_fire
nd ADD     R0,R0, #1
nn �     R0,R0, #%11
nx STR     R0, p1_fire
n� TST     R0, #%11
n� BNE     p1_not_fire_gun
n� MOV     R0, #3
n� MOV     R1,R6, LSR #2
n� MOV     R2,R7, LSR #2
n� ADD     R1,R1, #xext%
n� ADD     R2,R2, #yext%/4*2
n� RSB     R2,R2, #256
n� MOV     R3, #80
n� LDR     R5, adr_rnd
n� LDR     R5,[R5]
n� �     R4,R5, #15
n� SUB     R4,R4, #7
o �     R5,R5, #%110000
o MOV     R5,R5, LSR #4
o ADD     R1,R1,R5
o" MOV     R5, #1
o, TST     R8, #1
o6 RSBNE   R3,R3, #0
o@ SUBNE   R1,R1, #xext%+2
oJ BL      add_cell
oT MOV     R5, #1
o^ MOV     R0, #8
oh MVN     R1, #12
or MOV     R2, #12800
o| MOV     R3, #0
o� SWI     "Sound_Control"
o� .p1_not_fire_gun
o� B       p1_end_fire
o� :
o� .p1_fire_mortar
o� MOV     R0, #129
o� MOV     R1, #0
o� SUB     R1,R1, #84
o� MOV     R2, #255
o� SWI     "OS_Byte"
o� CMP     R1, #255
o� BNE     p1_not_fire_mortar
o� LDR     R0, p1_fire
p ADD     R0,R0, #1
p �     R0,R0, #%11111
p STR     R0, p1_fire
p& TST     R0, #%11111
p0 BNE     p1_not_fire_gun
p: MOV     R0, #4
pD MOV     R1,R6, LSR #2
pN MOV     R2,R7, LSR #2
pX ADD     R1,R1, #xext%
pb ADD     R2,R2, #yext%/4*2
pl RSB     R2,R2, #256
pv MOV     R3, #30
p� MOV     R4, #40
p� MOV     R5, #1
p� TST     R8, #1
p� RSBNE   R3,R3, #0
p� SUBNE   R1,R1, #xext%
p� BL      add_cell
p� MOV     R5, #1
p� MOV     R0, #1
p� STR     R0, p1_fire
p� .p1_not_fire_mortar
p� B       p1_end_fire
p� :
p� .p1_fire_homing
q .p1_homing_shot
q MOV     R0, #129
q MOV     R1, #0
q  SUB     R1,R1, #84
q* MOV     R2, #255
q4 SWI     "OS_Byte"
q> CMP     R1, #255
qH BNE     p1_not_fire_homing
qR LDR     R0, p1_fire
q\ ADD     R0,R0, #1
qf �     R0,R0, #%1111
qp STR     R0, p1_fire
qz TST     R0, #%1111
q� BNE     p1_not_fire_homing
q� MOV     R0, #5
q� MOV     R1,R6, LSR #2
q� MOV     R2,R7, LSR #2
q� ADD     R1,R1, #xext%
q� ADD     R2,R2, #yext%/2
q� RSB     R2,R2, #256
q� MOV     R3, #64
q� LDR     R4, adr_rnd
q� LDR     R4,[R4]
q� �     R4,R4, #15
q� SUB     R4,R4, #7
q�9 MOV     R5, #224<<8          ; Homing in on player 2
r �R     R5,R5, #1
r TST     R8, #1
r RSBNE   R3,R3, #0
r$ SUBNE   R1,R1, #xext%
r. BL      add_cell
r8 MOV     R5, #1
rB MOV     R0, #8
rL MVN     R1, #10
rV MOV     R2, #8000
r` MOV     R3, #0
rj SWI     "Sound_Control"
rt .p1_not_fire_homing
r~ B       p1_end_fire
r� :
r� .p1_fire_seeking
r� .p1_seeking_shot
r� MOV     R0, #129
r� MOV     R1, #0
r� SUB     R1,R1, #84
r� MOV     R2, #255
r� SWI     "OS_Byte"
r� CMP     R1, #255
r�  BNE     p1_not_fire_seeking
r� MOV     R0, #6
r� MOV     R1,R6, LSR #2
s MOV     R2,R7, LSR #2
s
 ADD     R1,R1, #xext%*3/2
s ADD     R2,R2, #yext%/4*2
s RSB     R2,R2, #256
s( MOV     R3, #32
s2 MOV     R4, #0
s<: MOV     R5, #1                ; Homing in on player 2
sF TST     R8, #1
sP RSBNE   R3,R3, #0
sZ SUBNE   R1,R1, #xext%*2
sd BL      add_cell
sn MOV     R5, #1
sx MOV     R9, #2
s� LDR     R10, adr_p1_weapon
s� STR     R9,[R10]
s� MOV     R0, #8
s� MVN     R1, #14
s� MOV     R2, #5120
s� MOV     R3, #0
s� SWI     "Sound_Control"
s� MOV     R0, #1
s� STR     R0, p1_fire
s� .p1_not_fire_seeking
s� B       p1_end_fire
s� :
s� .p1_fire_vertical
t LDR     R0, p1_fire
t CMP     R0, #0
t BEQ     p1_vertical_shot
t" MOV     R0, #129
t, MOV     R1, #0
t6 SUB     R1,R1, #84
t@ MOV     R2, #255
tJ SWI     "OS_Byte"
tT CMP     R1, #255
t^ MOVNE   R0, #0
th STRNE   R0, p1_fire
tr! B       p1_not_fire_vertical
t| .p1_vertical_shot
t� MOV     R0, #129
t� MOV     R1, #0
t� SUB     R1,R1, #84
t� MOV     R2, #255
t� SWI     "OS_Byte"
t� CMP     R1, #255
t�! BNE     p1_not_fire_vertical
t� MOV     R0, #7
t� MOV     R1,R6, LSR #2
t� MOV     R2,R7, LSR #2
t� ADD     R1,R1, #xext%
t� ADD     R2,R2, #yext%/4*2
t� RSB     R2,R2, #256
u MOV     R3, #0
u MOV     R4, #64
u MOV     R5, #1
u& TST     R8, #1
u0 RSBNE   R3,R3, #0
u: SUBNE   R1,R1, #xext%
uD BL      add_cell
uN MOV     R5, #2
uX MOV     R0, #1
ub STR     R0, p1_fire
ul MOV     R0, #7
uv MVN     R1, #14
u� MOV     R2, #10240
u� MOV     R3, #0
u� SWI     "Sound_Control"
u� .p1_not_fire_vertical
u� B       p1_end_fire
u� :
u� .p1_fire_flame
u� .p1_flame_shot
u� MOV     R0, #129
u� MOV     R1, #0
u� SUB     R1,R1, #84
u� MOV     R2, #255
u� SWI     "OS_Byte"
v CMP     R1, #255
v BNE     p1_not_fire_flame
v MOV     R0, #10
v  MOV     R1,R6, LSR #2
v* MOV     R2,R7, LSR #2
v4 ADD     R1,R1, #xext%
v> ADD     R2,R2, #yext%/4*2
vH RSB     R2,R2, #256
vR MOV     R3, #64
v\ LDR     R4, adr_rnd
vf LDR     R4,[R4]
vp �     R4,R4, #7
vz SUB     R4,R4, #1
v� MOV     R5, #1
v� TST     R8, #1
v� RSBNE   R3,R3, #0
v� SUBNE   R1,R1, #xext%
v� BL      add_cell
v� .p1_not_fire_flame
v� B       p1_end_fire
v� :
v� .p1_fire_bomb
v� MOV     R0, #129
v� MOV     R1, #0
v� SUB     R1,R1, #84
v� MOV     R2, #255
w SWI     "OS_Byte"
w CMP     R1, #255
w BNE     p1_not_fire_bomb
w$ LDR     R0, p1_fire
w. ADD     R0,R0, #1
w8 CMP     R0, #10
wB MOVGT   R0, #0
wL STR     R0, p1_fire
wV CMP     R0, #0
w` BNE     p1_not_fire_bomb
wj MOV     R0, #12
wt MOV     R1,R6, LSR #2
w~ MOV     R2,R7, LSR #2
w� ADD     R1,R1, #xext%+1
w� ADD     R2,R2, #yext%/4*2
w� RSB     R2,R2, #256
w� MOV     R3, #40
w� MOV     R4, #40
w� MOV     R5, #bomb_pause%
w� TST     R8, #1
w� RSBNE   R3,R3, #0
w� SUBNE   R1,R1, #xext%+2
w� BL      add_cell
w� MOV     R5, #1
w� MOV     R0, #1
x STR     R0, p1_fire
x
 .p1_not_fire_bomb
x B       p1_end_fire
x :
x( .p1_end_fire
x2 :
x< MOV     R0, #1
xF MOV     R1,R6, LSR #2
xP MOV     R2,R7, LSR #2
xZ TST     R8, #1
xd ADDEQ   R1,R1, #1
xn ADDNE   R1,R1, #xext%-1
xx ADD     R2,R2, #yext%/4
x� RSB     R2,R2, #256
x� LDR     R3, adr_rnd
x� LDR     R3,[R3]
x� TST     R3, #%10000
x� SUBEQ   R2,R2, #1
x� �     R3,R3, #15
x� SUB     R3,R3, #7
x� MOV     R4, #0
x� SUB     R4,R4, #40
x� MOV     R5, #32
x� BL      add_cell
x� MOV     R5, #1
x� :
y �     R0,R8, #1
y MOV     R1,R6, LSR #2
y MOV     R2,R7, LSR #2
y" LDR     R9, adr_p1_x
y, STR     R1,[R9]
y6 LDR     R9, adr_p1_y
y@ STR     R2,[R9]
yJ BL      plot_sprite_1616
yT :
y^ LDMFD   R13!,{R9,PC}
yh :
yr
 .adr_rnd
y| EQUD    rnd
y� .adr_p1_weapon
y� EQUD    p1_weapon
y� .adr_p1_x
y� EQUD    p1_x
y� .adr_p1_y
y� EQUD    p1_y
y� :
y� ]
y� P%=clg_routine%
y� L%=clg_routine%+1020
y� [OPT pass%
y� :
y� .clg_adr_screenstore
z EQUD    screenstore
z .clg_screendata
z EQUD    screendata%
z& :
z0	 .clg
z: STMFD   R13!,{R0-R12,R14}
zD# ADR     R0, clg_temp_reg_store
zN STMIA   R0, {R13,R14}
zX% LDR     R13, clg_adr_screenstore
zb LDR     R13, [R13]
zl  LDR     R14, clg_screendata
zv MOV     R12, #0
z� .clg_loop1
z� ]
z� � a%=1 � 26
z� [OPT pass%
z� LDMIA   R14!,{R0-R11}
z� STMIA   R13!,{R0-R11}
z� ]
z� �
z� [OPT pass%
z� ADD     R12,R12, #1
z� CMP     R12, #65
z� BLT     clg_loop1
z� ]
{ � a%=1 � 20
{ [OPT pass%
{ LDMIA   R14!,{R0-R9}
{  STMIA   R13!,{R0-R9}
{* ]
{4 �
{> [OPT pass%
{H# ADR     R0, clg_temp_reg_store
{R LDMIA   R0, {R13,R14}
{\ LDMFD   R13!,{R0-R12,PC}
{f :
{p .clg_temp_reg_store
{z EQUD    0
{� EQUD    0
{� :
{� ]
{� 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
|8 .split_p2_y1
|B EQUD    0
|L .split_p1_y2
|V EQUD    0
|` .split_p2_y2
|j EQUD    0
|t .split_p1_y3
|~ EQUD    0
|� .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
}2 STR     R2, split_p1_y3
}< ADD     R0,R0,R1
}F ADD     R0,R0,R2
}P ADD     R0,R0,R3
}Z ADD     R0,R0, #2
}d MOV     R0,R0, ASR #2
}n RSB     R0,R0, #256
}x 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_loop1
}� ]
}� � a%=1 � 10
}� [OPT pass%
}� LDMIA   R14!,{R0-R11}
}� STMIA   R13!,{R0-R11}
~ ]
~ �
~ [OPT pass%
~" ADD     R12,R12, #1
~, CMP     R12, #72
~6 BLT     split_loop1
~@ ]
~J � a%=0 � 11
~T [OPT pass%
~^ MOV     a%, #127
~h �R     a%,a%,a%, LSL #8
~r �R     a%,a%,a%, LSL #16
~| ]
~� �
~� [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
0 LDR     R3, split_p2_y3
: STR     R0, split_p2_y1
D STR     R1, split_p2_y2
N STR     R2, split_p2_y3
X ADD     R0,R0,R1
b ADD     R0,R0,R2
l ADD     R0,R0,R3
v ADD     R0,R0, #2
� MOV     R0,R0, ASR #2
� 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}
�  ]
�* �
�4 [OPT pass%
�> ADD     R12,R12, #1
�H CMP     R12, #72
�R BLT     split_loop2
�\% ADR     R0, split_temp_reg_store
�f LDMIA   R0, {R13,R14}
�p LDMFD   R13!,{R0-R12,PC}
�z :
�� .split_temp_reg_store
�� 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
�8. :                            ; R2 y-coord
�B :
�L RSB     R2,R2, #256
�V :
�` CMP     R1, #0
�j BLE     psm_no_plot1212
�t CMP     R2, #12
�~ BLE     psm_no_plot1212
�� 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
�2 LDR     R9,[R9]
�< :
�F MLA     R3,R7,R1,R9
�P MLA     R2,R8,R2,R3
�Z :
�d= LDR     R7, adr_sprites1     ; get start address of data
�nC LDR     R8, spr_size1        ; get length of data for 1 sprite
�x> MLA     R0,R8,R0,R7          ; calculate position of data
��> ADD     R1,R0,R8, LSR #1     ; calculate position of mask
�� :
�� 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
�6 �R     R4,R4,R9
�@ �R     R5,R5,R10
�J7 STMIA   R2,{R3-R5}           ; store masked sprite
�T :
�^ SUB     R2,R2, #y_shift
�h :
�r ]
�| �
�� [OPT pass%
�� :
�� 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
�0 :
�: :
�D :
�N .plot_sprite_1264
�X :
�b STMFD   R13!,{R0-R12,R14}
�l :
�v1 :                            ; R0 sprite no.
��. :                            ; R1 x-coord
��. :                            ; 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
�* :
�44 �     R3,R1, #%11          ; calculate x offset
�>2 MOV     R0,R0, LSL #2        ; realise sprite
�H. ADD     R0,R0, R3            ; add offset
�R3 BIC     R1,R1, #%11          ; make x div by 4
�\ :
�f5 MOV     R7, #x_shift         ; get screen shifts
�p MOV     R8, #y_shift
�z@ LDR     R9, sprite_adr_screenstore; get screenstore address
�� LDR     R9,[R9]
�� :
�� 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%
�8 :
�B7 LDMIA   R2,{R3-R5}           ; get some background
�L1 LDMIA   R1!,{R8-R10}         ; get some mask
�V5 �     R3,R3,R8             ; mask off background
�` �     R4,R4,R9
�j �     R5,R5,R10
�t3 LDMIA   R0!,{R8-R10}         ; get some sprite
�~? �R     R3,R3,R8             ; merge sprite with background
�� �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}
�2 :
�< .s1264_counter
�F EQUD    0
�P :
�Z .adr_sprites3
�d7 EQUD    sprites3%            ; address of sprites1
�n .spr_size3
�xA EQUD    8/8*12*64*2          ; length of one sprite1 + mask1
�� .sprite_adr_screenstore
�� 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
�6 BLE     psm_no_plot2016
�@ CMP     R1, #320-16
�J BGE     psm_no_plot2016
�T CMP     R2, #256
�^ BGE     psm_no_plot2016
�h B       psm_plot2016
�r .psm_no_plot2016
�| LDMFD   R13!,{R0-R12,PC}
�� .psm_plot2016
�� :
��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
�0> MLA     R0,R8,R0,R7          ; calculate position of data
�:> ADD     R1,R0,R8, LSR #1     ; calculate position of mask
�D :
�N MOV     R3, #1
�X STR     R3, s2016_counter
�b :
�l .s2016_sprite_loop
�v :
�� ]
�� � 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
�4 :
�> SUB     R2,R2, #y_shift
�H :
�R ]
�\ �
�f [OPT pass%
�p :
�z LDR     R3, s2016_counter
�� ADD     R3,R3, #1
�� 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
�8 :
�B STMFD   R13!,{R0-R12,R14}
�L :
�V1 :                            ; R0 sprite no.
�`. :                            ; R1 x-coord
�j. :                            ; R2 y-coord
�t :
�~ RSB     R2,R2, #256
�� :
�� 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
�23 BIC     R1,R1, #%11          ; make x div by 4
�< :
�F5 MOV     R7, #x_shift         ; get screen shifts
�P MOV     R8, #y_shift
�Z@ LDR     R9, sprite_adr_screenstore; get screenstore address
�d LDR     R9,[R9]
�n :
�x MLA     R3,R7,R1,R9
�� MLA     R2,R8,R2,R3
�� :
��= 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
�65 �     R3,R3,R8             ; mask off background
�@ �     R4,R4,R9
�J2 LDMIA   R0!,{R8,R9}         ; get some sprite
�T? �R     R3,R3,R8             ; merge sprite with background
�^ �R     R4,R4,R9
�h7 STMIA   R2,{R3,R4}           ; store masked sprite
�r :
�| SUB     R2,R2, #y_shift
�� :
�� ]
�� �
�� [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
�07 EQUD    sprites4%            ; address of sprites4
�: .spr_size4
�DA EQUD    8/8*8*4*2            ; length of one sprite4 + mask4
�N :
�X :
�b :
�l .plot_sprite_1208
�v :
�� 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_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
�4 LDMFD   R13!,{R0-R12,PC}
�> .psm_plot1208
�H :
�R4 �     R3,R1, #%11          ; calculate x offset
�\2 MOV     R0,R0, LSL #2        ; realise sprite
�f. ADD     R0,R0, R3            ; add offset
�p3 BIC     R1,R1, #%11          ; make x div by 4
�z :
��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_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
�. :
�8 ]
�B � a%=1 � 8
�L [OPT pass%
�V :
�`7 LDMIA   R2,{R3,R4,R5}        ; get some background
�j1 LDMIA   R1!,{R8,R9,R10}      ; get some mask
�t5 �     R3,R3,R8             ; mask off background
�~ �     R4,R4,R9
�� �     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
�2;BLE     s1208_sprite_loop
�< :
�F LDMFD   R13!,{R0-R12,PC}
�P :
�Z .s1208_counter
�d EQUD    0
�n :
�x .adr_sprites5
��7 EQUD    sprites5%            ; address of sprites5
�� .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
�6 CMP     R2, #16
�@ BLE     psm_no_plot1616
�J CMP     R1, #320-16
�T BGE     psm_no_plot1616
�^ CMP     R2, #256
�h BGE     psm_no_plot1616
�r B       psm_plot1616
�| .psm_no_plot1616
�� LDMFD   R13!,{R0-R12,PC}
�� .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
�0C LDR     R8, spr_size6        ; get length of data for 1 sprite
�:> MLA     R0,R8,R0,R7          ; calculate position of data
�D> ADD     R1,R0,R8, LSR #1     ; calculate position of mask
�N :
�X MOV     R3, #1
�b STR     R3, s1616_counter
�l :
�v .s1616_sprite_loop
�� :
�� ]
�� � 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
�* :
�4 SUB     R2,R2, #y_shift
�> :
�H ]
�R �
�\ [OPT pass%
�f :
�p LDR     R3, s1616_counter
�z ADD     R3,R3, #1
�� STR     R3, s1616_counter
�� 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
�8 [OPT pass%
�B :
�L :
�V :
�` .fill_fill_1212
�j :
�t STMFD   R13!,{R0-R12,R14}
�~ :
��/ :                            ; 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}
�2 .psm_fill1212
�< :
�F5 MOV     R7, #x_shift         ; get screen shifts
�P MOV     R8, #y_shift
�Z :
�d> LDR     R9, fill_adr_screenstore; get screenstore address
�n LDR     R9,[R9]
�x 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, 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
�, :
�6 SUB     R0,R0, #y_shift
�@ SUB     R1,R1, #y_shift
�J :
�T ]
�^ �
�h [OPT pass%
�r :
�| LDR     R3, f1212_counter
�� ADD     R3,R3, #1
�� 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.
�0. :                            ; R1 x-coord
�:. :                            ; R2 y-coord
�D :
�N RSB     R2,R2, #256
�X :
�b CMP     R1, #0
�l BLE     psm_no_fill1264
�v CMP     R2, #32
�� BLE     psm_no_fill1264
�� 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
�* :
�46 LDR     R9, fill_screendata  ; get screen address
�> MLA     R3,R7,R1,R9
�H MLA     R1,R8,R2,R3
�R :
�\ MOV     R3, #1
�f STR     R3, f1264_counter
�p :
�z .f1264_fill_loop
�� :
�� ]
�� � 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
�8 CMP     R3, #8
�B BLE     f1264_fill_loop
�L :
�V LDMFD   R13!,{R0-R12,PC}
�` :
�j .f1264_counter
�t EQUD    0
�~ :
�� .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
�( :
�2 CMP     R1, #0
�< BLE     psm_no_fill2016
�F CMP     R2, #16
�P BLE     psm_no_fill2016
�Z CMP     R1, #320-16
�d BGE     psm_no_fill2016
�n CMP     R2, #256
�x BGE     psm_no_fill2016
�� B       psm_fill2016
�� .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
�6 STR     R3, f2016_counter
�@ :
�J .f2016_fill_loop
�T :
�^ ]
�h � a%=1 � 4
�r [OPT pass%
�| :
��7 LDMIA   R1,{R3-R7}           ; get some background
��5 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}
�0 :
�: .f2016_counter
�D EQUD    0
�N :
�X :
�b :
�l .fill_fill_0804
�v :
�� STMFD   R13!,{R0-R12,R14}
�� :
��/ :                            ; 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
�4 LDMFD   R13!,{R0-R12,PC}
�> .psm_fill0804
�H :
�R5 MOV     R7, #x_shift         ; get screen shifts
�\ MOV     R8, #y_shift
�f :
�p> LDR     R9, fill_adr_screenstore; get screenstore address
�z 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
�� :
�� .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
�8 :
�B ]
�L �
�V [OPT pass%
�` :
�j LDMFD   R13!,{R0-R12,PC}
�t :
�~ :
�� :
�� .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
�2 CMP     R2, #256
�< BGE     psm_no_fill1208
�F B       psm_fill1208
�P .psm_no_fill1208
�Z LDMFD   R13!,{R0-R12,PC}
�d .psm_fill1208
�n :
�x5 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
�� :
�� ]
�� � a%=1 � 8
� [OPT pass%
� :
�4 LDMIA   R1,{R3-R5}        ; get some background
�"2 STMIA   R0,{R3-R5}        ; store masked fill
�, :
�6 SUB     R0,R0, #y_shift
�@ SUB     R1,R1, #y_shift
�J :
�T ]
�^ �
�h [OPT pass%
�r :
�| LDMFD   R13!,{R0-R12,PC}
�� :
�� :
�� :
�� .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
�0 B       psm_fill1616
�: .psm_no_fill1616
�D LDMFD   R13!,{R0-R12,PC}
�N .psm_fill1616
�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
�� :
�� MOV     R3, #1
�� STR     R3, f1616_counter
�� :
�� .f1616_fill_loop
� :
� ]
� � a%=1 � 4
�  [OPT pass%
�* :
�4 LDMIA   R1,{R2-R5}
�> STMIA   R0,{R2-R5}
�H :
�R SUB     R0,R0, #y_shift
�\ SUB     R1,R1, #y_shift
�f :
�p ]
�z �
�� [OPT pass%
�� :
�� 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}
�8 :
�B RSB     R2,R2, #256
�L :
�V CMP     R1, #0
�` BLE     psm_no_fill0101
�j CMP     R2, #0
�t BLE     psm_no_fill0101
�~ CMP     R1, #320
�� 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
�2 MLA     R3,R7,R1,R9
�< MLA     R1,R8,R2,R3
�F :
�P LDRB    R2,[R1]
�Z STRB    R2,[R0]
�d :
�n LDMFD   R13!,{R0-R12,PC}
�x :
�� ]
���
��:
��!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%
�6�
�@:
�J=c%=�("<This$Dir>.Levels.Level"+�(scrn%)+".Posn"+�(scrn%))
�T� a%=0 � 7
�^ �#c%,x%
�h �#c%,y%
�r !(a%*8+positions)=x%
�| !(a%*8+4+positions)=y%
���
���#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)
�0�
�:>c%=�("<This$Dir>.Levels.Level"+�(scrn%)+".Doors"+�(scrn%))
�D� a%=1 � 4
�N �#c%,x%
�X �#c%,y%
�b �#c%,t%
�l �#c%,i%
�v �add_sprite(x%,y%,13,i%)
���
���#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%)
�4�
�>�#c%
�H-�add_sprite(1116,32,2,(128<<8)+(128<<16))
�R,�add_sprite(84,748,1,(128<<8)+(128<<16))
�\?c%=�("<This$Dir>.Levels.Level"+�(scrn%)+".Flames"+�(scrn%))
�f� a%=1 � 16
�p �#c%,x%
�z �#c%,y%
�� �#c%,t%
�� �#c%,i%
�� �add_sprite(x%,y%,3,i%)
���
���#c%
��� start
��� clear_screen
���
��:
��:
��:
��� �error
��ș "Hourglass_Smash"
�ȗ �
�� �=17 �
� ș "OS_Byte",112,1
�$ �
�. ș "OS_Byte",113,1
�8�
�B ș "OS_Byte",112,1
�L �
�V ș "OS_Byte",113,1
�` � �$;" at line ";�
�j�
�t�
�~:
��:
��:
��� �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%
�2!(p%+04)=x%
�<!(p%+08)=y%
�F!(p%+12)=i%
�P
p%+=16
�Z�
�d:
�n:
�x:
��� �add_cell(t%)
��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
�6 EQUD    0
�@ .dc_value
�J EQUD    0
�T .dc_repetitions
�^ EQUD    0
�h :
�r .dc_start
�| LDR     R0, dc_cmpp
�� LDR     R1,[R0]
�� 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
�0 LDR     R2, dc_address
�: ADD     R2,R2, #4
�D STR     R0, dc_cmpp
�N STR     R2, dc_address
�X B       dc_until1
�b .dc_decompress
�l LDR     R0, dc_cmpp
�v LDR     R7,[R0, #4]
�� STR     R7, dc_value
�� 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
�4 .dc_until1
�> LDR     R0, dc_cmpp
�H LDR     R1,[R0]
�R LDR     R2, dc_unused
�\ CMP     R1,R2
�f BNE     dc_repeat_loop1
�p LDR     R3,[R0, #8]
�z CMP     R3, #0
�� BNE     dc_repeat_loop1
�� MOV     PC,R14
�� :
�� ]
���
���
��:
��:
��:
��� �decompress(from$,to%)
��%ș "OS_File",255,from$,cmpdata%,0
��!dc_address=to%
��!dc_cmpp=cmpdata%
�� dc_start
��
�:
�$:
�.:
�8� �assemble_clear_screen
�B!� pass%=%0000 � %1010 � %1010
�L P%=cl_code%
�V L%=cl_code%+2044
�` [OPT pass%
�j :
�t .setup_cs
�~ STMFD   R13!,{R0-R12,R14}
��  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
�( :
�2 .cl_loop3
�< ]
�F � a%=0 � 15
�P � b%=0 � fader% � 4
�Z [OPT pass%
�d :
�n ADD     R10,R10, #b%
�x1 BL      cl_cls                  ; dim screen
�� SUB     R10,R10, #b%
�� :
�� 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
�6 .cl_loop2
�@ LDR     R0,[R6]
�J :
�T MOV     R3,R0, ROR #8
�^ CMP     R3,R0
�h BNE     cl_not_same
�r �     R1,R4,R0
�| LDRB    R1,[R11,R1]
�� �R     R3,R1,R1, LSL #8
�� �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
�0 :
�: �     R1,R4,R0, LSR #24
�D LDRB    R1,[R11,R1]
�N �R     R3,R3,R1, LSL #24
�X :
�b .cl_done_pixels
�l STR     R3,[R6], #fader%+4
�v :
�� CMP     R6,R7
�� 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
�4 EQUD    &14000
�> :
�H ]
�R�
�\� setup_cs
�f�
�p:
�z:
��:
��� �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
�.�
�8�
�B�
�L:
�V:
�`� �tint
�j� p%=0 � &13FFF � 1
�tK � screendata%?p%<>0 � screendata%?p%=(screendata%?p% � %11) � (�(3)-1)
�~�
���
�
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 35  |..\.  . scrn%>15|
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 10 20 2e 77  |fill_0804.... .w|
000022c0  63 65 6c 6c 5f 73 6b 69  70 0d 0f dc 17 20 41 44  |cell_skip.... AD|
000022d0  44 20 20 20 20 20 52 39  2c 52 39 2c 20 23 33 32  |D     R9,R9, #32|
000022e0  0d 0f e6 13 20 43 4d 50  20 20 20 20 20 52 30 2c  |.... CMP     R0,|
000022f0  20 23 30 0d 0f f0 14 20  42 47 45 20 20 20 20 20  | #0.... BGE     |
00002300  77 63 6c 6f 6f 70 31 0d  0f fa 06 20 3a 0d 10 04  |wcloop1.... :...|
00002310  1d 20 4c 44 4d 46 44 20  20 20 52 31 33 21 2c 7b  |. LDMFD   R13!,{|
00002320  52 30 2d 52 31 32 2c 50  43 7d 0d 10 0e 06 20 3a  |R0-R12,PC}.... :|
00002330  0d 10 18 14 20 2e 75 70  64 61 74 65 5f 73 70 72  |.... .update_spr|
00002340  69 74 65 73 0d 10 22 1e  20 53 54 4d 46 44 20 20  |ites..". STMFD  |
00002350  20 52 31 33 21 2c 7b 52  30 2d 52 31 32 2c 52 31  | R13!,{R0-R12,R1|
00002360  34 7d 0d 10 2c 06 20 3a  0d 10 36 1a 20 4c 44 52  |4}..,. :..6. LDR|
00002370  20 20 20 20 20 52 39 2c  20 61 64 72 5f 73 6c 69  |     R9, adr_sli|
00002380  73 74 0d 10 40 0c 20 2e  73 6c 6f 6f 70 31 0d 10  |st..@. .sloop1..|
00002390  4a 17 20 4c 44 4d 49 41  20 20 20 52 39 2c 7b 52  |J. LDMIA   R9,{R|
000023a0  35 2d 52 38 7d 0d 10 54  13 20 43 4d 50 20 20 20  |5-R8}..T. CMP   |
000023b0  20 20 52 35 2c 20 23 31  0d 10 5e 14 20 42 4c 45  |  R5, #1..^. BLE|
000023c0  51 20 20 20 20 70 6c 61  79 65 72 31 0d 10 68 1c  |Q    player1..h.|
000023d0  20 42 45 51 20 20 20 20  20 65 6e 64 5f 73 70 72  | BEQ     end_spr|
000023e0  69 74 65 5f 6c 6f 6f 70  0d 10 72 13 20 43 4d 50  |ite_loop..r. CMP|
000023f0  20 20 20 20 20 52 35 2c  20 23 32 0d 10 7c 14 20  |     R5, #2..|. |
00002400  42 4c 45 51 20 20 20 20  70 6c 61 79 65 72 32 0d  |BLEQ    player2.|
00002410  10 86 1c 20 42 45 51 20  20 20 20 20 65 6e 64 5f  |... BEQ     end_|
00002420  73 70 72 69 74 65 5f 6c  6f 6f 70 0d 10 90 13 20  |sprite_loop.... |
00002430  43 4d 50 20 20 20 20 20  52 35 2c 20 23 33 0d 10  |CMP     R5, #3..|
00002440  9a 12 20 42 4c 45 51 20  20 20 20 66 6c 61 6d 65  |.. BLEQ    flame|
00002450  0d 10 a4 1c 20 42 45 51  20 20 20 20 20 65 6e 64  |.... BEQ     end|
00002460  5f 73 70 72 69 74 65 5f  6c 6f 6f 70 0d 10 ae 13  |_sprite_loop....|
00002470  20 43 4d 50 20 20 20 20  20 52 35 2c 20 23 34 0d  | CMP     R5, #4.|
00002480  10 b8 1a 20 42 4c 45 51  20 20 20 20 77 65 61 70  |... BLEQ    weap|
00002490  6f 6e 5f 70 69 73 74 6f  6c 0d 10 c2 1c 20 42 45  |on_pistol.... BE|
000024a0  51 20 20 20 20 20 65 6e  64 5f 73 70 72 69 74 65  |Q     end_sprite|
000024b0  5f 6c 6f 6f 70 0d 10 cc  13 20 43 4d 50 20 20 20  |_loop.... CMP   |
000024c0  20 20 52 35 2c 20 23 35  0d 10 d6 17 20 42 4c 45  |  R5, #5.... BLE|
000024d0  51 20 20 20 20 77 65 61  70 6f 6e 5f 67 75 6e 0d  |Q    weapon_gun.|
000024e0  10 e0 1c 20 42 45 51 20  20 20 20 20 65 6e 64 5f  |... BEQ     end_|
000024f0  73 70 72 69 74 65 5f 6c  6f 6f 70 0d 10 ea 13 20  |sprite_loop.... |
00002500  43 4d 50 20 20 20 20 20  52 35 2c 20 23 36 0d 10  |CMP     R5, #6..|
00002510  f4 1a 20 42 4c 45 51 20  20 20 20 77 65 61 70 6f  |.. BLEQ    weapo|
00002520  6e 5f 6d 6f 72 74 61 72  0d 10 fe 1c 20 42 45 51  |n_mortar.... BEQ|
00002530  20 20 20 20 20 65 6e 64  5f 73 70 72 69 74 65 5f  |     end_sprite_|
00002540  6c 6f 6f 70 0d 11 08 13  20 43 4d 50 20 20 20 20  |loop.... CMP    |
00002550  20 52 35 2c 20 23 37 0d  11 12 1a 20 42 4c 45 51  | R5, #7.... BLEQ|
00002560  20 20 20 20 77 65 61 70  6f 6e 5f 68 6f 6d 69 6e  |    weapon_homin|
00002570  67 0d 11 1c 1c 20 42 45  51 20 20 20 20 20 65 6e  |g.... BEQ     en|
00002580  64 5f 73 70 72 69 74 65  5f 6c 6f 6f 70 0d 11 26  |d_sprite_loop..&|
00002590  13 20 43 4d 50 20 20 20  20 20 52 35 2c 20 23 38  |. CMP     R5, #8|
000025a0  0d 11 30 1b 20 42 4c 45  51 20 20 20 20 77 65 61  |..0. BLEQ    wea|
000025b0  70 6f 6e 5f 73 65 65 6b  69 6e 67 0d 11 3a 1c 20  |pon_seeking..:. |
000025c0  42 45 51 20 20 20 20 20  65 6e 64 5f 73 70 72 69  |BEQ     end_spri|
000025d0  74 65 5f 6c 6f 6f 70 0d  11 44 13 20 43 4d 50 20  |te_loop..D. CMP |
000025e0  20 20 20 20 52 35 2c 20  23 39 0d 11 4e 1c 20 42  |    R5, #9..N. B|
000025f0  4c 45 51 20 20 20 20 77  65 61 70 6f 6e 5f 76 65  |LEQ    weapon_ve|
00002600  72 74 69 63 61 6c 0d 11  58 1c 20 42 45 51 20 20  |rtical..X. BEQ  |
00002610  20 20 20 65 6e 64 5f 73  70 72 69 74 65 5f 6c 6f  |   end_sprite_lo|
00002620  6f 70 0d 11 62 14 20 43  4d 50 20 20 20 20 20 52  |op..b. CMP     R|
00002630  35 2c 20 23 31 30 0d 11  6c 1b 20 42 4c 45 51 20  |5, #10..l. BLEQ |
00002640  20 20 20 77 65 61 70 6f  6e 5f 74 68 72 6f 77 65  |   weapon_throwe|
00002650  72 0d 11 76 1c 20 42 45  51 20 20 20 20 20 65 6e  |r..v. BEQ     en|
00002660  64 5f 73 70 72 69 74 65  5f 6c 6f 6f 70 0d 11 80  |d_sprite_loop...|
00002670  14 20 43 4d 50 20 20 20  20 20 52 35 2c 20 23 31  |. CMP     R5, #1|
00002680  31 0d 11 8a 18 20 42 4c  45 51 20 20 20 20 77 65  |1.... BLEQ    we|
00002690  61 70 6f 6e 5f 62 6f 6d  62 0d 11 94 1c 20 42 45  |apon_bomb.... BE|
000026a0  51 20 20 20 20 20 65 6e  64 5f 73 70 72 69 74 65  |Q     end_sprite|
000026b0  5f 6c 6f 6f 70 0d 11 9e  14 20 43 4d 50 20 20 20  |_loop.... CMP   |
000026c0  20 20 52 35 2c 20 23 31  33 0d 11 a8 11 20 42 4c  |  R5, #13.... BL|
000026d0  45 51 20 20 20 20 64 6f  6f 72 0d 11 b2 1c 20 42  |EQ    door.... B|
000026e0  45 51 20 20 20 20 20 65  6e 64 5f 73 70 72 69 74  |EQ     end_sprit|
000026f0  65 5f 6c 6f 6f 70 0d 11  bc 14 20 43 4d 50 20 20  |e_loop.... CMP  |
00002700  20 20 20 52 35 2c 20 23  31 34 0d 11 c6 13 20 42  |   R5, #14.... B|
00002710  4c 45 51 20 20 20 20 73  77 69 74 63 68 0d 11 d0  |LEQ    switch...|
00002720  1c 20 42 45 51 20 20 20  20 20 65 6e 64 5f 73 70  |. BEQ     end_sp|
00002730  72 69 74 65 5f 6c 6f 6f  70 0d 11 da 14 20 43 4d  |rite_loop.... CM|
00002740  50 20 20 20 20 20 52 35  2c 20 23 31 35 0d 11 e4  |P     R5, #15...|
00002750  14 20 42 4c 45 51 20 20  20 20 67 75 6e 5f 67 75  |. BLEQ    gun_gu|
00002760  6e 0d 11 ee 15 20 2e 65  6e 64 5f 73 70 72 69 74  |n.... .end_sprit|
00002770  65 5f 6c 6f 6f 70 0d 11  f8 18 20 53 54 4d 49 41  |e_loop.... STMIA|
00002780  20 20 20 52 39 21 2c 7b  52 35 2d 52 38 7d 0d 12  |   R9!,{R5-R8}..|
00002790  02 13 20 43 4d 50 20 20  20 20 20 52 35 2c 20 23  |.. CMP     R5, #|
000027a0  30 0d 12 0c 13 20 42 47  45 20 20 20 20 20 73 6c  |0.... BGE     sl|
000027b0  6f 6f 70 31 0d 12 16 06  20 3a 0d 12 20 1d 20 4c  |oop1.... :.. . L|
000027c0  44 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 30 2d  |DMFD   R13!,{R0-|
000027d0  52 31 32 2c 50 43 7d 0d  12 2a 06 20 3a 0d 12 34  |R12,PC}..*. :..4|
000027e0  0f 20 2e 70 31 5f 77 65  61 70 6f 6e 0d 12 3e 0e  |. .p1_weapon..>.|
000027f0  20 45 51 55 44 20 20 20  20 32 0d 12 48 0f 20 2e  | EQUD    2..H. .|
00002800  70 32 5f 77 65 61 70 6f  6e 0d 12 52 0e 20 45 51  |p2_weapon..R. EQ|
00002810  55 44 20 20 20 20 32 0d  12 5c 06 20 3a 0d 12 66  |UD    2..\. :..f|
00002820  10 20 2e 72 65 61 64 5f  70 6f 69 6e 74 0d 12 70  |. .read_point..p|
00002830  1e 20 53 54 4d 46 44 20  20 20 52 31 33 21 2c 7b  |. STMFD   R13!,{|
00002840  52 31 2d 52 31 32 2c 52  31 34 7d 0d 12 7a 06 20  |R1-R12,R14}..z. |
00002850  3a 0d 12 84 18 20 52 53  42 20 20 20 20 20 52 32  |:.... RSB     R2|
00002860  2c 52 32 2c 20 23 32 35  36 0d 12 8e 06 20 3a 0d  |,R2, #256.... :.|
00002870  12 98 35 20 4d 4f 56 20  20 20 20 20 52 37 2c 20  |..5 MOV     R7, |
00002880  23 78 5f 73 68 69 66 74  20 20 20 20 20 20 20 20  |#x_shift        |
00002890  20 3b 20 67 65 74 20 73  63 72 65 65 6e 20 73 68  | ; get screen sh|
000028a0  69 66 74 73 0d 12 a2 19  20 4d 4f 56 20 20 20 20  |ifts.... MOV    |
000028b0  20 52 38 2c 20 23 79 5f  73 68 69 66 74 0d 12 ac  | R8, #y_shift...|
000028c0  36 20 4c 44 52 20 20 20  20 20 52 39 2c 20 73 63  |6 LDR     R9, sc|
000028d0  72 65 65 6e 73 74 6f 72  65 20 20 20 20 20 20 3b  |reenstore      ;|
000028e0  20 67 65 74 20 73 63 72  65 65 6e 20 61 64 64 72  | get screen addr|
000028f0  65 73 73 0d 12 b6 06 20  3a 0d 12 c0 18 20 4d 4c  |ess.... :.... ML|
00002900  41 20 20 20 20 20 52 39  2c 52 37 2c 52 31 2c 52  |A     R9,R7,R1,R|
00002910  39 0d 12 ca 18 20 4d 4c  41 20 20 20 20 20 52 31  |9.... MLA     R1|
00002920  2c 52 38 2c 52 32 2c 52  39 0d 12 d4 06 20 3a 0d  |,R8,R2,R9.... :.|
00002930  12 de 14 20 4c 44 52 42  20 20 20 20 52 30 2c 5b  |... LDRB    R0,[|
00002940  52 31 5d 0d 12 e8 06 20  3a 0d 12 f2 1d 20 4c 44  |R1].... :.... LD|
00002950  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 31 2d 52  |MFD   R13!,{R1-R|
00002960  31 32 2c 50 43 7d 0d 12  fc 06 20 3a 0d 13 06 0f  |12,PC}.... :....|
00002970  20 2e 61 64 72 5f 63 6c  69 73 74 0d 13 10 13 20  | .adr_clist.... |
00002980  45 51 55 44 20 20 20 20  63 6c 69 73 74 25 0d 13  |EQUD    clist%..|
00002990  1a 0f 20 2e 61 64 72 5f  73 6c 69 73 74 0d 13 24  |.. .adr_slist..$|
000029a0  13 20 45 51 55 44 20 20  20 20 73 6c 69 73 74 25  |. EQUD    slist%|
000029b0  0d 13 2e 06 20 3a 0d 13  38 0b 20 2e 66 6c 61 6d  |.... :..8. .flam|
000029c0  65 0d 13 42 1a 20 53 54  4d 46 44 20 20 20 52 31  |e..B. STMFD   R1|
000029d0  33 21 2c 7b 52 39 2c 52  31 34 7d 0d 13 4c 06 20  |3!,{R9,R14}..L. |
000029e0  3a 0d 13 56 16 20 4c 44  52 20 20 20 20 20 52 31  |:..V. LDR     R1|
000029f0  30 2c 20 70 31 5f 78 0d  13 60 16 20 4c 44 52 20  |0, p1_x..`. LDR |
00002a00  20 20 20 20 52 31 31 2c  20 70 31 5f 79 0d 13 6a  |    R11, p1_y..j|
00002a10  1a 20 4d 4f 56 20 20 20  20 20 52 39 2c 52 36 2c  |. MOV     R9,R6,|
00002a20  20 41 53 52 20 23 32 0d  13 74 16 20 41 44 44 20  | ASR #2..t. ADD |
00002a30  20 20 20 20 52 39 2c 52  39 2c 20 23 38 0d 13 7e  |    R9,R9, #8..~|
00002a40  17 20 53 55 42 20 20 20  20 20 52 31 30 2c 52 39  |. SUB     R10,R9|
00002a50  2c 52 31 30 0d 13 88 14  20 43 4d 50 20 20 20 20  |,R10.... CMP    |
00002a60  20 52 31 30 2c 20 23 30  0d 13 92 1a 20 42 4c 54  | R10, #0.... BLT|
00002a70  20 20 20 20 20 6e 6f 74  5f 74 6f 75 63 68 65 64  |     not_touched|
00002a80  31 31 0d 13 9c 1a 20 43  4d 50 20 20 20 20 20 52  |11.... CMP     R|
00002a90  31 30 2c 20 23 78 65 78  74 25 2b 38 0d 13 a6 1a  |10, #xext%+8....|
00002aa0  20 42 47 54 20 20 20 20  20 6e 6f 74 5f 74 6f 75  | BGT     not_tou|
00002ab0  63 68 65 64 31 31 0d 13  b0 1a 20 4d 4f 56 20 20  |ched11.... MOV  |
00002ac0  20 20 20 52 39 2c 52 37  2c 20 41 53 52 20 23 32  |   R9,R7, ASR #2|
00002ad0  0d 13 ba 17 20 41 44 44  20 20 20 20 20 52 39 2c  |.... ADD     R9,|
00002ae0  52 39 2c 20 23 31 30 0d  13 c4 17 20 53 55 42 20  |R9, #10.... SUB |
00002af0  20 20 20 20 52 31 31 2c  52 39 2c 52 31 31 0d 13  |    R11,R9,R11..|
00002b00  ce 14 20 43 4d 50 20 20  20 20 20 52 31 31 2c 20  |.. CMP     R11, |
00002b10  23 30 0d 13 d8 1a 20 42  4c 54 20 20 20 20 20 6e  |#0.... BLT     n|
00002b20  6f 74 5f 74 6f 75 63 68  65 64 31 31 0d 13 e2 1a  |ot_touched11....|
00002b30  20 43 4d 50 20 20 20 20  20 52 31 31 2c 20 23 79  | CMP     R11, #y|
00002b40  65 78 74 25 2b 38 0d 13  ec 1a 20 42 47 54 20 20  |ext%+8.... BGT  |
00002b50  20 20 20 6e 6f 74 5f 74  6f 75 63 68 65 64 31 31  |   not_touched11|
00002b60  0d 13 f6 1e 20 4c 44 52  20 20 20 20 20 52 30 2c  |.... LDR     R0,|
00002b70  20 70 6c 61 79 65 72 31  5f 61 6c 69 76 65 0d 14  | player1_alive..|
00002b80  00 13 20 43 4d 50 20 20  20 20 20 52 30 2c 20 23  |.. CMP     R0, #|
00002b90  31 0d 14 0a 1a 20 42 45  51 20 20 20 20 20 6e 6f  |1.... BEQ     no|
00002ba0  74 5f 74 6f 75 63 68 65  64 31 31 0d 14 14 13 20  |t_touched11.... |
00002bb0  4d 4f 56 20 20 20 20 20  52 30 2c 20 23 31 0d 14  |MOV     R0, #1..|
00002bc0  1e 1e 20 53 54 52 20 20  20 20 20 52 30 2c 20 70  |.. STR     R0, p|
00002bd0  6c 61 79 65 72 31 5f 61  6c 69 76 65 0d 14 28 13  |layer1_alive..(.|
00002be0  20 4d 4f 56 20 20 20 20  20 52 30 2c 20 23 33 0d  | MOV     R0, #3.|
00002bf0  14 32 14 20 4d 56 4e 20  20 20 20 20 52 31 2c 20  |.2. MVN     R1, |
00002c00  23 31 34 0d 14 3c 19 20  4d 4f 56 20 20 20 20 20  |#14..<. MOV     |
00002c10  52 32 2c 20 23 73 63 72  65 61 6d 25 0d 14 46 13  |R2, #scream%..F.|
00002c20  20 4d 4f 56 20 20 20 20  20 52 33 2c 20 23 30 0d  | MOV     R3, #0.|
00002c30  14 50 1c 20 53 57 49 20  20 20 20 20 22 53 6f 75  |.P. SWI     "Sou|
00002c40  6e 64 5f 43 6f 6e 74 72  6f 6c 22 0d 14 5a 13 20  |nd_Control"..Z. |
00002c50  2e 6e 6f 74 5f 74 6f 75  63 68 65 64 31 31 0d 14  |.not_touched11..|
00002c60  64 16 20 4c 44 52 20 20  20 20 20 52 31 30 2c 20  |d. LDR     R10, |
00002c70  70 32 5f 78 0d 14 6e 16  20 4c 44 52 20 20 20 20  |p2_x..n. LDR    |
00002c80  20 52 31 31 2c 20 70 32  5f 79 0d 14 78 1a 20 4d  | R11, p2_y..x. M|
00002c90  4f 56 20 20 20 20 20 52  39 2c 52 36 2c 20 41 53  |OV     R9,R6, AS|
00002ca0  52 20 23 32 0d 14 82 16  20 41 44 44 20 20 20 20  |R #2.... ADD    |
00002cb0  20 52 39 2c 52 39 2c 20  23 38 0d 14 8c 17 20 53  | R9,R9, #8.... S|
00002cc0  55 42 20 20 20 20 20 52  31 30 2c 52 39 2c 52 31  |UB     R10,R9,R1|
00002cd0  30 0d 14 96 14 20 43 4d  50 20 20 20 20 20 52 31  |0.... CMP     R1|
00002ce0  30 2c 20 23 30 0d 14 a0  1a 20 42 4c 54 20 20 20  |0, #0.... BLT   |
00002cf0  20 20 6e 6f 74 5f 74 6f  75 63 68 65 64 32 31 0d  |  not_touched21.|
00002d00  14 aa 1a 20 43 4d 50 20  20 20 20 20 52 31 30 2c  |... CMP     R10,|
00002d10  20 23 78 65 78 74 25 2b  38 0d 14 b4 1a 20 42 47  | #xext%+8.... BG|
00002d20  54 20 20 20 20 20 6e 6f  74 5f 74 6f 75 63 68 65  |T     not_touche|
00002d30  64 32 31 0d 14 be 1a 20  4d 4f 56 20 20 20 20 20  |d21.... MOV     |
00002d40  52 39 2c 52 37 2c 20 41  53 52 20 23 32 0d 14 c8  |R9,R7, ASR #2...|
00002d50  17 20 41 44 44 20 20 20  20 20 52 39 2c 52 39 2c  |. ADD     R9,R9,|
00002d60  20 23 31 30 0d 14 d2 17  20 53 55 42 20 20 20 20  | #10.... SUB    |
00002d70  20 52 31 31 2c 52 39 2c  52 31 31 0d 14 dc 14 20  | R11,R9,R11.... |
00002d80  43 4d 50 20 20 20 20 20  52 31 31 2c 20 23 30 0d  |CMP     R11, #0.|
00002d90  14 e6 1a 20 42 4c 54 20  20 20 20 20 6e 6f 74 5f  |... BLT     not_|
00002da0  74 6f 75 63 68 65 64 32  31 0d 14 f0 1a 20 43 4d  |touched21.... CM|
00002db0  50 20 20 20 20 20 52 31  31 2c 20 23 79 65 78 74  |P     R11, #yext|
00002dc0  25 2b 38 0d 14 fa 1a 20  42 47 54 20 20 20 20 20  |%+8.... BGT     |
00002dd0  6e 6f 74 5f 74 6f 75 63  68 65 64 32 31 0d 15 04  |not_touched21...|
00002de0  1e 20 4c 44 52 20 20 20  20 20 52 30 2c 20 70 6c  |. LDR     R0, pl|
00002df0  61 79 65 72 32 5f 61 6c  69 76 65 0d 15 0e 13 20  |ayer2_alive.... |
00002e00  43 4d 50 20 20 20 20 20  52 30 2c 20 23 31 0d 15  |CMP     R0, #1..|
00002e10  18 1a 20 42 45 51 20 20  20 20 20 6e 6f 74 5f 74  |.. BEQ     not_t|
00002e20  6f 75 63 68 65 64 32 31  0d 15 22 13 20 4d 4f 56  |ouched21..". MOV|
00002e30  20 20 20 20 20 52 30 2c  20 23 31 0d 15 2c 1e 20  |     R0, #1..,. |
00002e40  53 54 52 20 20 20 20 20  52 30 2c 20 70 6c 61 79  |STR     R0, play|
00002e50  65 72 32 5f 61 6c 69 76  65 0d 15 36 13 20 4d 4f  |er2_alive..6. MO|
00002e60  56 20 20 20 20 20 52 30  2c 20 23 33 0d 15 40 14  |V     R0, #3..@.|
00002e70  20 4d 56 4e 20 20 20 20  20 52 31 2c 20 23 31 34  | MVN     R1, #14|
00002e80  0d 15 4a 19 20 4d 4f 56  20 20 20 20 20 52 32 2c  |..J. MOV     R2,|
00002e90  20 23 73 63 72 65 61 6d  25 0d 15 54 13 20 4d 4f  | #scream%..T. MO|
00002ea0  56 20 20 20 20 20 52 33  2c 20 23 30 0d 15 5e 1c  |V     R3, #0..^.|
00002eb0  20 53 57 49 20 20 20 20  20 22 53 6f 75 6e 64 5f  | SWI     "Sound_|
00002ec0  43 6f 6e 74 72 6f 6c 22  0d 15 68 13 20 2e 6e 6f  |Control"..h. .no|
00002ed0  74 5f 74 6f 75 63 68 65  64 32 31 0d 15 72 06 20  |t_touched21..r. |
00002ee0  3a 0d 15 7c 16 20 41 44  44 20 20 20 20 20 52 38  |:..|. ADD     R8|
00002ef0  2c 52 38 2c 20 23 31 0d  15 86 14 20 43 4d 50 20  |,R8, #1.... CMP |
00002f00  20 20 20 20 52 38 2c 20  23 31 35 0d 15 90 13 20  |    R8, #15.... |
00002f10  4d 4f 56 47 54 20 20 20  52 38 2c 20 23 30 0d 15  |MOVGT   R8, #0..|
00002f20  9a 13 20 4d 4f 56 20 20  20 20 20 52 30 2c 20 23  |.. MOV     R0, #|
00002f30  32 0d 15 a4 1d 20 41 44  44 20 20 20 20 20 52 30  |2.... ADD     R0|
00002f40  2c 52 30 2c 52 38 2c 20  4c 53 52 20 23 32 0d 15  |,R0,R8, LSR #2..|
00002f50  ae 1a 20 4d 4f 56 20 20  20 20 20 52 31 2c 52 36  |.. MOV     R1,R6|
00002f60  2c 20 4c 53 52 20 23 32  0d 15 b8 1a 20 4d 4f 56  |, LSR #2.... MOV|
00002f70  20 20 20 20 20 52 32 2c  52 37 2c 20 4c 53 52 20  |     R2,R7, LSR |
00002f80  23 32 0d 15 c2 1d 20 42  4c 20 20 20 20 20 20 70  |#2.... BL      p|
00002f90  6c 6f 74 5f 73 70 72 69  74 65 5f 31 32 31 32 0d  |lot_sprite_1212.|
00002fa0  15 cc 06 20 3a 0d 15 d6  19 20 4c 44 4d 46 44 20  |... :.... LDMFD |
00002fb0  20 20 52 31 33 21 2c 7b  52 39 2c 50 43 7d 0d 15  |  R13!,{R9,PC}..|
00002fc0  e0 06 20 3a 0d 15 ea 0a  20 2e 64 6f 6f 72 0d 15  |.. :.... .door..|
00002fd0  f4 1a 20 53 54 4d 46 44  20 20 20 52 31 33 21 2c  |.. STMFD   R13!,|
00002fe0  7b 52 39 2c 52 31 34 7d  0d 15 fe 06 20 3a 0d 16  |{R9,R14}.... :..|
00002ff0  08 15 20 54 53 54 20 20  20 20 20 52 38 2c 20 23  |.. TST     R8, #|
00003000  32 35 36 0d 16 12 19 20  42 4e 45 20 20 20 20 20  |256.... BNE     |
00003010  64 6f 6f 72 5f 63 6c 6f  73 69 6e 67 0d 16 1c 15  |door_closing....|
00003020  20 80 20 20 20 20 20 52  30 2c 52 38 2c 20 23 31  | .     R0,R8, #1|
00003030  35 0d 16 26 14 20 43 4d  50 20 20 20 20 20 52 30  |5..&. CMP     R0|
00003040  2c 20 23 31 34 0d 16 30  16 20 41 44 44 4c 54 20  |, #14..0. ADDLT |
00003050  20 20 52 30 2c 52 30 2c  20 23 31 0d 16 3a 17 20  |  R0,R0, #1..:. |
00003060  42 49 43 20 20 20 20 20  52 38 2c 52 38 2c 20 23  |BIC     R8,R8, #|
00003070  31 35 0d 16 44 14 20 84  52 20 20 20 20 20 52 38  |15..D. .R     R8|
00003080  2c 52 38 2c 52 30 0d 16  4e 14 20 42 20 20 20 20  |,R8,R0..N. B    |
00003090  20 20 20 64 6f 5f 64 6f  6f 72 0d 16 58 12 20 2e  |   do_door..X. .|
000030a0  64 6f 6f 72 5f 63 6c 6f  73 69 6e 67 0d 16 62 15  |door_closing..b.|
000030b0  20 80 20 20 20 20 20 52  30 2c 52 38 2c 20 23 31  | .     R0,R8, #1|
000030c0  35 0d 16 6c 13 20 43 4d  50 20 20 20 20 20 52 30  |5..l. CMP     R0|
000030d0  2c 20 23 30 0d 16 76 16  20 53 55 42 47 54 20 20  |, #0..v. SUBGT  |
000030e0  20 52 30 2c 52 30 2c 20  23 31 0d 16 80 17 20 42  | R0,R0, #1.... B|
000030f0  49 43 20 20 20 20 20 52  38 2c 52 38 2c 20 23 31  |IC     R8,R8, #1|
00003100  35 0d 16 8a 14 20 84 52  20 20 20 20 20 52 38 2c  |5.... .R     R8,|
00003110  52 38 2c 52 30 0d 16 94  0d 20 2e 64 6f 5f 64 6f  |R8,R0.... .do_do|
00003120  6f 72 0d 16 9e 17 20 84  52 20 20 20 20 20 52 38  |or.... .R     R8|
00003130  2c 52 38 2c 20 23 32 35  36 0d 16 a8 15 20 4c 44  |,R8, #256.... LD|
00003140  52 20 20 20 20 20 52 30  2c 20 70 31 5f 78 0d 16  |R     R0, p1_x..|
00003150  b2 15 20 4c 44 52 20 20  20 20 20 52 31 2c 20 70  |.. LDR     R1, p|
00003160  31 5f 79 0d 16 bc 1d 20  53 55 42 20 20 20 20 20  |1_y.... SUB     |
00003170  52 30 2c 52 36 2c 52 30  2c 20 41 53 4c 20 23 32  |R0,R6,R0, ASL #2|
00003180  0d 16 c6 1d 20 53 55 42  20 20 20 20 20 52 31 2c  |.... SUB     R1,|
00003190  52 37 2c 52 31 2c 20 41  53 4c 20 23 32 0d 16 d0  |R7,R1, ASL #2...|
000031a0  13 20 43 4d 50 20 20 20  20 20 52 30 2c 20 23 30  |. CMP     R0, #0|
000031b0  0d 16 da 16 20 52 53 42  4c 54 20 20 20 52 30 2c  |.... RSBLT   R0,|
000031c0  52 30 2c 20 23 30 0d 16  e4 13 20 43 4d 50 20 20  |R0, #0.... CMP  |
000031d0  20 20 20 52 31 2c 20 23  30 0d 16 ee 16 20 52 53  |   R1, #0.... RS|
000031e0  42 4c 54 20 20 20 52 31  2c 52 31 2c 20 23 30 0d  |BLT   R1,R1, #0.|
000031f0  16 f8 15 20 41 44 44 20  20 20 20 20 52 30 2c 52  |... ADD     R0,R|
00003200  30 2c 52 31 0d 17 02 15  20 43 4d 50 20 20 20 20  |0,R1.... CMP    |
00003210  20 52 30 2c 20 23 31 32  38 0d 17 0c 18 20 42 49  | R0, #128.... BI|
00003220  43 4c 54 20 20 20 52 38  2c 52 38 2c 20 23 32 35  |CLT   R8,R8, #25|
00003230  36 0d 17 16 15 20 4c 44  52 20 20 20 20 20 52 30  |6.... LDR     R0|
00003240  2c 20 70 32 5f 78 0d 17  20 15 20 4c 44 52 20 20  |, p2_x.. . LDR  |
00003250  20 20 20 52 31 2c 20 70  32 5f 79 0d 17 2a 1d 20  |   R1, p2_y..*. |
00003260  53 55 42 20 20 20 20 20  52 30 2c 52 36 2c 52 30  |SUB     R0,R6,R0|
00003270  2c 20 41 53 4c 20 23 32  0d 17 34 1d 20 53 55 42  |, ASL #2..4. SUB|
00003280  20 20 20 20 20 52 31 2c  52 37 2c 52 31 2c 20 41  |     R1,R7,R1, A|
00003290  53 4c 20 23 32 0d 17 3e  13 20 43 4d 50 20 20 20  |SL #2..>. CMP   |
000032a0  20 20 52 30 2c 20 23 30  0d 17 48 16 20 52 53 42  |  R0, #0..H. RSB|
000032b0  4c 54 20 20 20 52 30 2c  52 30 2c 20 23 30 0d 17  |LT   R0,R0, #0..|
000032c0  52 13 20 43 4d 50 20 20  20 20 20 52 31 2c 20 23  |R. CMP     R1, #|
000032d0  30 0d 17 5c 16 20 52 53  42 4c 54 20 20 20 52 31  |0..\. RSBLT   R1|
000032e0  2c 52 31 2c 20 23 30 0d  17 66 15 20 41 44 44 20  |,R1, #0..f. ADD |
000032f0  20 20 20 20 52 30 2c 52  30 2c 52 31 0d 17 70 15  |    R0,R0,R1..p.|
00003300  20 43 4d 50 20 20 20 20  20 52 30 2c 20 23 31 32  | CMP     R0, #12|
00003310  38 0d 17 7a 18 20 42 49  43 4c 54 20 20 20 52 38  |8..z. BICLT   R8|
00003320  2c 52 38 2c 20 23 32 35  36 0d 17 84 0f 20 2e 70  |,R8, #256.... .p|
00003330  6c 6f 74 5f 64 6f 6f 72  0d 17 8e 06 20 3a 0d 17  |lot_door.... :..|
00003340  98 15 20 80 20 20 20 20  20 52 30 2c 52 38 2c 20  |.. .     R0,R8, |
00003350  23 31 35 0d 17 a2 1a 20  4d 4f 56 20 20 20 20 20  |#15.... MOV     |
00003360  52 31 2c 52 36 2c 20 4c  53 52 20 23 32 0d 17 ac  |R1,R6, LSR #2...|
00003370  1a 20 4d 4f 56 20 20 20  20 20 52 32 2c 52 37 2c  |. MOV     R2,R7,|
00003380  20 4c 53 52 20 23 32 0d  17 b6 1d 20 42 4c 20 20  | LSR #2.... BL  |
00003390  20 20 20 20 70 6c 6f 74  5f 73 70 72 69 74 65 5f  |    plot_sprite_|
000033a0  31 32 36 34 0d 17 c0 06  20 3a 0d 17 ca 19 20 4c  |1264.... :.... L|
000033b0  44 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 39 2c  |DMFD   R13!,{R9,|
000033c0  50 43 7d 0d 17 d4 06 20  3a 0d 17 de 0c 20 2e 73  |PC}.... :.... .s|
000033d0  77 69 74 63 68 0d 17 e8  1a 20 53 54 4d 46 44 20  |witch.... STMFD |
000033e0  20 20 52 31 33 21 2c 7b  52 39 2c 52 31 34 7d 0d  |  R13!,{R9,R14}.|
000033f0  17 f2 06 20 3a 0d 17 fc  13 20 4d 4f 56 20 20 20  |... :.... MOV   |
00003400  20 20 52 30 2c 20 23 30  0d 18 06 06 20 3a 0d 18  |  R0, #0.... :..|
00003410  10 15 20 4c 44 52 20 20  20 20 20 52 31 2c 20 70  |.. LDR     R1, p|
00003420  31 5f 78 0d 18 1a 15 20  4c 44 52 20 20 20 20 20  |1_x.... LDR     |
00003430  52 32 2c 20 70 31 5f 79  0d 18 24 1a 20 4d 4f 56  |R2, p1_y..$. MOV|
00003440  20 20 20 20 20 52 33 2c  52 36 2c 20 41 53 52 20  |     R3,R6, ASR |
00003450  23 32 0d 18 2e 1a 20 4d  4f 56 20 20 20 20 20 52  |#2.... MOV     R|
00003460  34 2c 52 37 2c 20 41 53  52 20 23 32 0d 18 38 16  |4,R7, ASR #2..8.|
00003470  20 41 44 44 20 20 20 20  20 52 34 2c 52 34 2c 20  | ADD     R4,R4, |
00003480  23 38 0d 18 42 12 20 43  4d 50 20 20 20 20 20 52  |#8..B. CMP     R|
00003490  32 2c 52 34 0d 18 4c 16  20 42 4e 45 20 20 20 20  |2,R4..L. BNE    |
000034a0  20 6e 6f 74 5f 70 31 5f  6f 6e 0d 18 56 16 20 53  | not_p1_on..V. S|
000034b0  55 42 20 20 20 20 20 52  33 2c 52 33 2c 20 23 36  |UB     R3,R3, #6|
000034c0  0d 18 60 12 20 43 4d 50  20 20 20 20 20 52 31 2c  |..`. CMP     R1,|
000034d0  52 33 0d 18 6a 16 20 42  4c 54 20 20 20 20 20 6e  |R3..j. BLT     n|
000034e0  6f 74 5f 70 31 5f 6f 6e  0d 18 74 17 20 41 44 44  |ot_p1_on..t. ADD|
000034f0  20 20 20 20 20 52 33 2c  52 33 2c 20 23 31 30 0d  |     R3,R3, #10.|
00003500  18 7e 12 20 43 4d 50 20  20 20 20 20 52 31 2c 52  |.~. CMP     R1,R|
00003510  33 0d 18 88 16 20 42 47  54 20 20 20 20 20 6e 6f  |3.... BGT     no|
00003520  74 5f 70 31 5f 6f 6e 0d  18 92 13 20 4d 4f 56 20  |t_p1_on.... MOV |
00003530  20 20 20 20 52 30 2c 20  23 32 0d 18 9c 0f 20 2e  |    R0, #2.... .|
00003540  6e 6f 74 5f 70 31 5f 6f  6e 0d 18 a6 15 20 4c 44  |not_p1_on.... LD|
00003550  52 20 20 20 20 20 52 31  2c 20 70 32 5f 78 0d 18  |R     R1, p2_x..|
00003560  b0 15 20 4c 44 52 20 20  20 20 20 52 32 2c 20 70  |.. LDR     R2, p|
00003570  32 5f 79 0d 18 ba 1a 20  4d 4f 56 20 20 20 20 20  |2_y.... MOV     |
00003580  52 33 2c 52 36 2c 20 41  53 52 20 23 32 0d 18 c4  |R3,R6, ASR #2...|
00003590  1a 20 4d 4f 56 20 20 20  20 20 52 34 2c 52 37 2c  |. MOV     R4,R7,|
000035a0  20 41 53 52 20 23 32 0d  18 ce 16 20 41 44 44 20  | ASR #2.... ADD |
000035b0  20 20 20 20 52 34 2c 52  34 2c 20 23 38 0d 18 d8  |    R4,R4, #8...|
000035c0  12 20 43 4d 50 20 20 20  20 20 52 32 2c 52 34 0d  |. CMP     R2,R4.|
000035d0  18 e2 16 20 42 4e 45 20  20 20 20 20 6e 6f 74 5f  |... BNE     not_|
000035e0  70 32 5f 6f 6e 0d 18 ec  16 20 53 55 42 20 20 20  |p2_on.... SUB   |
000035f0  20 20 52 33 2c 52 33 2c  20 23 36 0d 18 f6 12 20  |  R3,R3, #6.... |
00003600  43 4d 50 20 20 20 20 20  52 31 2c 52 33 0d 19 00  |CMP     R1,R3...|
00003610  16 20 42 4c 54 20 20 20  20 20 6e 6f 74 5f 70 32  |. BLT     not_p2|
00003620  5f 6f 6e 0d 19 0a 17 20  41 44 44 20 20 20 20 20  |_on.... ADD     |
00003630  52 33 2c 52 33 2c 20 23  31 30 0d 19 14 12 20 43  |R3,R3, #10.... C|
00003640  4d 50 20 20 20 20 20 52  31 2c 52 33 0d 19 1e 16  |MP     R1,R3....|
00003650  20 42 47 54 20 20 20 20  20 6e 6f 74 5f 70 32 5f  | BGT     not_p2_|
00003660  6f 6e 0d 19 28 13 20 4d  4f 56 20 20 20 20 20 52  |on..(. MOV     R|
00003670  30 2c 20 23 31 0d 19 32  0f 20 2e 6e 6f 74 5f 70  |0, #1..2. .not_p|
00003680  32 5f 6f 6e 0d 19 3c 06  20 3a 0d 19 46 15 20 41  |2_on..<. :..F. A|
00003690  44 52 20 20 20 20 20 52  31 2c 20 67 75 6e 73 0d  |DR     R1, guns.|
000036a0  19 50 14 20 80 20 20 20  20 20 52 32 2c 52 38 2c  |.P. .     R2,R8,|
000036b0  20 23 33 0d 19 5a 1f 20  53 54 52 20 20 20 20 20  | #3..Z. STR     |
000036c0  52 30 2c 5b 52 31 2c 52  32 2c 20 4c 53 4c 20 23  |R0,[R1,R2, LSL #|
000036d0  33 5d 0d 19 64 06 20 3a  0d 19 6e 14 20 4d 4f 56  |3]..d. :..n. MOV|
000036e0  20 20 20 20 20 52 30 2c  20 23 31 36 0d 19 78 1a  |     R0, #16..x.|
000036f0  20 4d 4f 56 20 20 20 20  20 52 31 2c 52 36 2c 20  | MOV     R1,R6, |
00003700  4c 53 52 20 23 32 0d 19  82 1a 20 4d 4f 56 20 20  |LSR #2.... MOV  |
00003710  20 20 20 52 32 2c 52 37  2c 20 4c 53 52 20 23 32  |   R2,R7, LSR #2|
00003720  0d 19 8c 1d 20 42 4c 20  20 20 20 20 20 70 6c 6f  |.... BL      plo|
00003730  74 5f 73 70 72 69 74 65  5f 31 32 30 38 0d 19 96  |t_sprite_1208...|
00003740  06 20 3a 0d 19 a0 19 20  4c 44 4d 46 44 20 20 20  |. :.... LDMFD   |
00003750  52 31 33 21 2c 7b 52 39  2c 50 43 7d 0d 19 aa 06  |R13!,{R9,PC}....|
00003760  20 3a 0d 19 b4 0a 20 2e  67 75 6e 73 0d 19 be 0e  | :.... .guns....|
00003770  20 45 51 55 44 20 20 20  20 30 0d 19 c8 0e 20 45  | EQUD    0.... E|
00003780  51 55 44 20 20 20 20 30  0d 19 d2 0e 20 45 51 55  |QUD    0.... EQU|
00003790  44 20 20 20 20 30 0d 19  dc 0e 20 45 51 55 44 20  |D    0.... EQUD |
000037a0  20 20 20 30 0d 19 e6 0e  20 45 51 55 44 20 20 20  |   0.... EQUD   |
000037b0  20 30 0d 19 f0 0e 20 45  51 55 44 20 20 20 20 30  | 0.... EQUD    0|
000037c0  0d 19 fa 0e 20 45 51 55  44 20 20 20 20 30 0d 1a  |.... EQUD    0..|
000037d0  04 0e 20 45 51 55 44 20  20 20 20 30 0d 1a 0e 06  |.. EQUD    0....|
000037e0  20 3a 0d 1a 18 0d 20 2e  67 75 6e 5f 67 75 6e 0d  | :.... .gun_gun.|
000037f0  1a 22 1a 20 53 54 4d 46  44 20 20 20 52 31 33 21  |.". STMFD   R13!|
00003800  2c 7b 52 39 2c 52 31 34  7d 0d 1a 2c 06 20 3a 0d  |,{R9,R14}..,. :.|
00003810  1a 36 15 20 41 44 52 20  20 20 20 20 52 30 2c 20  |.6. ADR     R0, |
00003820  67 75 6e 73 0d 1a 40 14  20 80 20 20 20 20 20 52  |guns..@. .     R|
00003830  32 2c 52 38 2c 20 23 33  0d 1a 4a 1f 20 4c 44 52  |2,R8, #3..J. LDR|
00003840  20 20 20 20 20 52 33 2c  5b 52 30 2c 52 32 2c 20  |     R3,[R0,R2, |
00003850  4c 53 4c 20 23 33 5d 0d  1a 54 16 20 41 44 44 20  |LSL #3]..T. ADD |
00003860  20 20 20 20 52 30 2c 52  30 2c 20 23 34 0d 1a 5e  |    R0,R0, #4..^|
00003870  1f 20 4c 44 52 20 20 20  20 20 52 34 2c 5b 52 30  |. LDR     R4,[R0|
00003880  2c 52 32 2c 20 4c 53 4c  20 23 33 5d 0d 1a 68 06  |,R2, LSL #3]..h.|
00003890  20 3a 0d 1a 72 13 20 43  4d 50 20 20 20 20 20 52  | :..r. CMP     R|
000038a0  33 2c 20 23 30 0d 1a 7c  17 20 42 45 51 20 20 20  |3, #0..|. BEQ   |
000038b0  20 20 6e 6f 5f 67 75 6e  5f 67 75 6e 0d 1a 86 16  |  no_gun_gun....|
000038c0  20 41 44 44 20 20 20 20  20 52 34 2c 52 34 2c 20  | ADD     R4,R4, |
000038d0  23 31 0d 1a 90 16 20 80  20 20 20 20 20 52 34 2c  |#1.... .     R4,|
000038e0  52 34 2c 20 23 25 31 31  0d 1a 9a 1f 20 53 54 52  |R4, #%11.... STR|
000038f0  20 20 20 20 20 52 34 2c  5b 52 30 2c 52 32 2c 20  |     R4,[R0,R2, |
00003900  4c 53 4c 20 23 33 5d 0d  1a a4 15 20 54 53 54 20  |LSL #3].... TST |
00003910  20 20 20 20 52 34 2c 20  23 25 31 31 0d 1a ae 17  |    R4, #%11....|
00003920  20 42 4e 45 20 20 20 20  20 6e 6f 5f 67 75 6e 5f  | BNE     no_gun_|
00003930  67 75 6e 0d 1a b8 16 20  53 55 42 20 20 20 20 20  |gun.... SUB     |
00003940  52 35 2c 52 33 2c 20 23  31 0d 1a c2 13 20 4d 4f  |R5,R3, #1.... MO|
00003950  56 20 20 20 20 20 52 30  2c 20 23 33 0d 1a cc 1a  |V     R0, #3....|
00003960  20 4d 4f 56 20 20 20 20  20 52 31 2c 52 36 2c 20  | MOV     R1,R6, |
00003970  41 53 52 20 23 32 0d 1a  d6 1a 20 4d 4f 56 20 20  |ASR #2.... MOV  |
00003980  20 20 20 52 32 2c 52 37  2c 20 41 53 52 20 23 32  |   R2,R7, ASR #2|
00003990  0d 1a e0 16 20 41 44 44  20 20 20 20 20 52 31 2c  |.... ADD     R1,|
000039a0  52 31 2c 20 23 38 0d 1a  ea 16 20 41 44 44 20 20  |R1, #8.... ADD  |
000039b0  20 20 20 52 32 2c 52 32  2c 20 23 35 0d 1a f4 18  |   R2,R2, #5....|
000039c0  20 52 53 42 20 20 20 20  20 52 32 2c 52 32 2c 20  | RSB     R2,R2, |
000039d0  23 32 35 36 0d 1a fe 14  20 4d 4f 56 20 20 20 20  |#256.... MOV    |
000039e0  20 52 33 2c 20 23 37 32  0d 1b 08 14 20 4c 44 52  | R3, #72.... LDR|
000039f0  20 20 20 20 20 52 34 2c  20 72 6e 64 0d 1b 12 15  |     R4, rnd....|
00003a00  20 80 20 20 20 20 20 52  34 2c 52 34 2c 20 23 31  | .     R4,R4, #1|
00003a10  35 0d 1b 1c 16 20 53 55  42 20 20 20 20 20 52 34  |5.... SUB     R4|
00003a20  2c 52 34 2c 20 23 37 0d  1b 26 15 20 42 4c 20 20  |,R4, #7..&. BL  |
00003a30  20 20 20 20 61 64 64 5f  63 65 6c 6c 0d 1b 30 13  |    add_cell..0.|
00003a40  20 4d 4f 56 20 20 20 20  20 52 30 2c 20 23 38 0d  | MOV     R0, #8.|
00003a50  1b 3a 14 20 4d 56 4e 20  20 20 20 20 52 31 2c 20  |.:. MVN     R1, |
00003a60  23 31 32 0d 1b 44 17 20  4d 4f 56 20 20 20 20 20  |#12..D. MOV     |
00003a70  52 32 2c 20 23 31 32 38  30 30 0d 1b 4e 13 20 4d  |R2, #12800..N. M|
00003a80  4f 56 20 20 20 20 20 52  33 2c 20 23 30 0d 1b 58  |OV     R3, #0..X|
00003a90  1c 20 53 57 49 20 20 20  20 20 22 53 6f 75 6e 64  |. SWI     "Sound|
00003aa0  5f 43 6f 6e 74 72 6f 6c  22 0d 1b 62 14 20 4d 4f  |_Control"..b. MO|
00003ab0  56 20 20 20 20 20 52 35  2c 20 23 31 35 0d 1b 6c  |V     R5, #15..l|
00003ac0  10 20 2e 6e 6f 5f 67 75  6e 5f 67 75 6e 0d 1b 76  |. .no_gun_gun..v|
00003ad0  06 20 3a 0d 1b 80 14 20  4d 4f 56 20 20 20 20 20  |. :.... MOV     |
00003ae0  52 30 2c 20 23 31 37 0d  1b 8a 1a 20 4d 4f 56 20  |R0, #17.... MOV |
00003af0  20 20 20 20 52 31 2c 52  36 2c 20 4c 53 52 20 23  |    R1,R6, LSR #|
00003b00  32 0d 1b 94 1a 20 4d 4f  56 20 20 20 20 20 52 32  |2.... MOV     R2|
00003b10  2c 52 37 2c 20 4c 53 52  20 23 32 0d 1b 9e 1d 20  |,R7, LSR #2.... |
00003b20  42 4c 20 20 20 20 20 20  70 6c 6f 74 5f 73 70 72  |BL      plot_spr|
00003b30  69 74 65 5f 31 32 30 38  0d 1b a8 06 20 3a 0d 1b  |ite_1208.... :..|
00003b40  b2 19 20 4c 44 4d 46 44  20 20 20 52 31 33 21 2c  |.. LDMFD   R13!,|
00003b50  7b 52 39 2c 50 43 7d 0d  1b bc 06 20 3a 0d 1b c6  |{R9,PC}.... :...|
00003b60  13 20 2e 77 65 61 70 6f  6e 5f 70 69 73 74 6f 6c  |. .weapon_pistol|
00003b70  0d 1b d0 1a 20 53 54 4d  46 44 20 20 20 52 31 33  |.... STMFD   R13|
00003b80  21 2c 7b 52 39 2c 52 31  34 7d 0d 1b da 06 20 3a  |!,{R9,R14}.... :|
00003b90  0d 1b e4 13 20 4d 4f 56  20 20 20 20 20 52 34 2c  |.... MOV     R4,|
00003ba0  20 23 32 0d 1b ee 14 20  42 4c 20 20 20 20 20 20  | #2.... BL      |
00003bb0  70 69 63 6b 5f 75 70 0d  1b f8 06 20 3a 0d 1c 02  |pick_up.... :...|
00003bc0  16 20 53 55 42 20 20 20  20 20 52 38 2c 52 38 2c  |. SUB     R8,R8,|
00003bd0  20 23 31 0d 1c 0c 13 20  43 4d 50 20 20 20 20 20  | #1.... CMP     |
00003be0  52 38 2c 20 23 30 0d 1c  16 13 20 4d 4f 56 4c 45  |R8, #0.... MOVLE|
00003bf0  20 20 20 52 35 2c 20 23  30 0d 1c 20 06 20 3a 0d  |   R5, #0.. . :.|
00003c00  1c 2a 13 20 43 4d 50 20  20 20 20 20 52 35 2c 20  |.*. CMP     R5, |
00003c10  23 30 0d 1c 34 06 20 3a  0d 1c 3e 14 20 4d 4f 56  |#0..4. :..>. MOV|
00003c20  47 54 20 20 20 52 30 2c  20 23 31 32 0d 1c 48 1a  |GT   R0, #12..H.|
00003c30  20 4d 4f 56 47 54 20 20  20 52 31 2c 52 36 2c 20  | MOVGT   R1,R6, |
00003c40  4c 53 52 20 23 32 0d 1c  52 1a 20 4d 4f 56 47 54  |LSR #2..R. MOVGT|
00003c50  20 20 20 52 32 2c 52 37  2c 20 4c 53 52 20 23 32  |   R2,R7, LSR #2|
00003c60  0d 1c 5c 1d 20 42 4c 47  54 20 20 20 20 70 6c 6f  |..\. BLGT    plo|
00003c70  74 5f 73 70 72 69 74 65  5f 31 32 31 32 0d 1c 66  |t_sprite_1212..f|
00003c80  06 20 3a 0d 1c 70 19 20  4c 44 4d 46 44 20 20 20  |. :..p. LDMFD   |
00003c90  52 31 33 21 2c 7b 52 39  2c 50 43 7d 0d 1c 7a 06  |R13!,{R9,PC}..z.|
00003ca0  20 3a 0d 1c 84 10 20 2e  77 65 61 70 6f 6e 5f 67  | :.... .weapon_g|
00003cb0  75 6e 0d 1c 8e 1a 20 53  54 4d 46 44 20 20 20 52  |un.... STMFD   R|
00003cc0  31 33 21 2c 7b 52 39 2c  52 31 34 7d 0d 1c 98 06  |13!,{R9,R14}....|
00003cd0  20 3a 0d 1c a2 13 20 4d  4f 56 20 20 20 20 20 52  | :.... MOV     R|
00003ce0  34 2c 20 23 33 0d 1c ac  14 20 42 4c 20 20 20 20  |4, #3.... BL    |
00003cf0  20 20 70 69 63 6b 5f 75  70 0d 1c b6 06 20 3a 0d  |  pick_up.... :.|
00003d00  1c c0 16 20 53 55 42 20  20 20 20 20 52 38 2c 52  |... SUB     R8,R|
00003d10  38 2c 20 23 31 0d 1c ca  13 20 43 4d 50 20 20 20  |8, #1.... CMP   |
00003d20  20 20 52 38 2c 20 23 30  0d 1c d4 13 20 4d 4f 56  |  R8, #0.... MOV|
00003d30  4c 45 20 20 20 52 35 2c  20 23 30 0d 1c de 06 20  |LE   R5, #0.... |
00003d40  3a 0d 1c e8 13 20 43 4d  50 20 20 20 20 20 52 35  |:.... CMP     R5|
00003d50  2c 20 23 30 0d 1c f2 06  20 3a 0d 1c fc 14 20 4d  |, #0.... :.... M|
00003d60  4f 56 47 54 20 20 20 52  30 2c 20 23 31 33 0d 1d  |OVGT   R0, #13..|
00003d70  06 1a 20 4d 4f 56 47 54  20 20 20 52 31 2c 52 36  |.. MOVGT   R1,R6|
00003d80  2c 20 4c 53 52 20 23 32  0d 1d 10 1a 20 4d 4f 56  |, LSR #2.... MOV|
00003d90  47 54 20 20 20 52 32 2c  52 37 2c 20 4c 53 52 20  |GT   R2,R7, LSR |
00003da0  23 32 0d 1d 1a 1d 20 42  4c 47 54 20 20 20 20 70  |#2.... BLGT    p|
00003db0  6c 6f 74 5f 73 70 72 69  74 65 5f 31 32 31 32 0d  |lot_sprite_1212.|
00003dc0  1d 24 06 20 3a 0d 1d 2e  19 20 4c 44 4d 46 44 20  |.$. :.... LDMFD |
00003dd0  20 20 52 31 33 21 2c 7b  52 39 2c 50 43 7d 0d 1d  |  R13!,{R9,PC}..|
00003de0  38 06 20 3a 0d 1d 42 13  20 2e 77 65 61 70 6f 6e  |8. :..B. .weapon|
00003df0  5f 6d 6f 72 74 61 72 0d  1d 4c 1a 20 53 54 4d 46  |_mortar..L. STMF|
00003e00  44 20 20 20 52 31 33 21  2c 7b 52 39 2c 52 31 34  |D   R13!,{R9,R14|
00003e10  7d 0d 1d 56 06 20 3a 0d  1d 60 13 20 4d 4f 56 20  |}..V. :..`. MOV |
00003e20  20 20 20 20 52 34 2c 20  23 34 0d 1d 6a 14 20 42  |    R4, #4..j. B|
00003e30  4c 20 20 20 20 20 20 70  69 63 6b 5f 75 70 0d 1d  |L      pick_up..|
00003e40  74 06 20 3a 0d 1d 7e 16  20 53 55 42 20 20 20 20  |t. :..~. SUB    |
00003e50  20 52 38 2c 52 38 2c 20  23 31 0d 1d 88 13 20 43  | R8,R8, #1.... C|
00003e60  4d 50 20 20 20 20 20 52  38 2c 20 23 30 0d 1d 92  |MP     R8, #0...|
00003e70  13 20 4d 4f 56 4c 45 20  20 20 52 35 2c 20 23 30  |. MOVLE   R5, #0|
00003e80  0d 1d 9c 06 20 3a 0d 1d  a6 13 20 43 4d 50 20 20  |.... :.... CMP  |
00003e90  20 20 20 52 35 2c 20 23  30 0d 1d b0 06 20 3a 0d  |   R5, #0.... :.|
00003ea0  1d ba 14 20 4d 4f 56 47  54 20 20 20 52 30 2c 20  |... MOVGT   R0, |
00003eb0  23 31 34 0d 1d c4 1a 20  4d 4f 56 47 54 20 20 20  |#14.... MOVGT   |
00003ec0  52 31 2c 52 36 2c 20 4c  53 52 20 23 32 0d 1d ce  |R1,R6, LSR #2...|
00003ed0  1a 20 4d 4f 56 47 54 20  20 20 52 32 2c 52 37 2c  |. MOVGT   R2,R7,|
00003ee0  20 4c 53 52 20 23 32 0d  1d d8 1d 20 42 4c 47 54  | LSR #2.... BLGT|
00003ef0  20 20 20 20 70 6c 6f 74  5f 73 70 72 69 74 65 5f  |    plot_sprite_|
00003f00  31 32 31 32 0d 1d e2 06  20 3a 0d 1d ec 19 20 4c  |1212.... :.... L|
00003f10  44 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 39 2c  |DMFD   R13!,{R9,|
00003f20  50 43 7d 0d 1d f6 06 20  3a 0d 1e 00 13 20 2e 77  |PC}.... :.... .w|
00003f30  65 61 70 6f 6e 5f 68 6f  6d 69 6e 67 0d 1e 0a 1a  |eapon_homing....|
00003f40  20 53 54 4d 46 44 20 20  20 52 31 33 21 2c 7b 52  | STMFD   R13!,{R|
00003f50  39 2c 52 31 34 7d 0d 1e  14 06 20 3a 0d 1e 1e 13  |9,R14}.... :....|
00003f60  20 4d 4f 56 20 20 20 20  20 52 34 2c 20 23 35 0d  | MOV     R4, #5.|
00003f70  1e 28 14 20 42 4c 20 20  20 20 20 20 70 69 63 6b  |.(. BL      pick|
00003f80  5f 75 70 0d 1e 32 06 20  3a 0d 1e 3c 16 20 53 55  |_up..2. :..<. SU|
00003f90  42 20 20 20 20 20 52 38  2c 52 38 2c 20 23 31 0d  |B     R8,R8, #1.|
00003fa0  1e 46 13 20 43 4d 50 20  20 20 20 20 52 38 2c 20  |.F. CMP     R8, |
00003fb0  23 30 0d 1e 50 13 20 4d  4f 56 4c 45 20 20 20 52  |#0..P. MOVLE   R|
00003fc0  35 2c 20 23 30 0d 1e 5a  06 20 3a 0d 1e 64 13 20  |5, #0..Z. :..d. |
00003fd0  43 4d 50 20 20 20 20 20  52 35 2c 20 23 30 0d 1e  |CMP     R5, #0..|
00003fe0  6e 06 20 3a 0d 1e 78 14  20 4d 4f 56 47 54 20 20  |n. :..x. MOVGT  |
00003ff0  20 52 30 2c 20 23 31 35  0d 1e 82 1a 20 4d 4f 56  | R0, #15.... MOV|
00004000  47 54 20 20 20 52 31 2c  52 36 2c 20 4c 53 52 20  |GT   R1,R6, LSR |
00004010  23 32 0d 1e 8c 1a 20 4d  4f 56 47 54 20 20 20 52  |#2.... MOVGT   R|
00004020  32 2c 52 37 2c 20 4c 53  52 20 23 32 0d 1e 96 1d  |2,R7, LSR #2....|
00004030  20 42 4c 47 54 20 20 20  20 70 6c 6f 74 5f 73 70  | BLGT    plot_sp|
00004040  72 69 74 65 5f 31 32 31  32 0d 1e a0 06 20 3a 0d  |rite_1212.... :.|
00004050  1e aa 19 20 4c 44 4d 46  44 20 20 20 52 31 33 21  |... LDMFD   R13!|
00004060  2c 7b 52 39 2c 50 43 7d  0d 1e b4 06 20 3a 0d 1e  |,{R9,PC}.... :..|
00004070  be 14 20 2e 77 65 61 70  6f 6e 5f 73 65 65 6b 69  |.. .weapon_seeki|
00004080  6e 67 0d 1e c8 1a 20 53  54 4d 46 44 20 20 20 52  |ng.... STMFD   R|
00004090  31 33 21 2c 7b 52 39 2c  52 31 34 7d 0d 1e d2 06  |13!,{R9,R14}....|
000040a0  20 3a 0d 1e dc 13 20 4d  4f 56 20 20 20 20 20 52  | :.... MOV     R|
000040b0  34 2c 20 23 36 0d 1e e6  14 20 42 4c 20 20 20 20  |4, #6.... BL    |
000040c0  20 20 70 69 63 6b 5f 75  70 0d 1e f0 06 20 3a 0d  |  pick_up.... :.|
000040d0  1e fa 16 20 53 55 42 20  20 20 20 20 52 38 2c 52  |... SUB     R8,R|
000040e0  38 2c 20 23 31 0d 1f 04  13 20 43 4d 50 20 20 20  |8, #1.... CMP   |
000040f0  20 20 52 38 2c 20 23 30  0d 1f 0e 13 20 4d 4f 56  |  R8, #0.... MOV|
00004100  4c 45 20 20 20 52 35 2c  20 23 30 0d 1f 18 06 20  |LE   R5, #0.... |
00004110  3a 0d 1f 22 13 20 43 4d  50 20 20 20 20 20 52 35  |:..". CMP     R5|
00004120  2c 20 23 30 0d 1f 2c 06  20 3a 0d 1f 36 14 20 4d  |, #0..,. :..6. M|
00004130  4f 56 47 54 20 20 20 52  30 2c 20 23 31 36 0d 1f  |OVGT   R0, #16..|
00004140  40 1a 20 4d 4f 56 47 54  20 20 20 52 31 2c 52 36  |@. MOVGT   R1,R6|
00004150  2c 20 4c 53 52 20 23 32  0d 1f 4a 1a 20 4d 4f 56  |, LSR #2..J. MOV|
00004160  47 54 20 20 20 52 32 2c  52 37 2c 20 4c 53 52 20  |GT   R2,R7, LSR |
00004170  23 32 0d 1f 54 1d 20 42  4c 47 54 20 20 20 20 70  |#2..T. BLGT    p|
00004180  6c 6f 74 5f 73 70 72 69  74 65 5f 31 32 31 32 0d  |lot_sprite_1212.|
00004190  1f 5e 06 20 3a 0d 1f 68  19 20 4c 44 4d 46 44 20  |.^. :..h. LDMFD |
000041a0  20 20 52 31 33 21 2c 7b  52 39 2c 50 43 7d 0d 1f  |  R13!,{R9,PC}..|
000041b0  72 06 20 3a 0d 1f 7c 15  20 2e 77 65 61 70 6f 6e  |r. :..|. .weapon|
000041c0  5f 76 65 72 74 69 63 61  6c 0d 1f 86 1a 20 53 54  |_vertical.... ST|
000041d0  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 39 2c 52  |MFD   R13!,{R9,R|
000041e0  31 34 7d 0d 1f 90 06 20  3a 0d 1f 9a 13 20 4d 4f  |14}.... :.... MO|
000041f0  56 20 20 20 20 20 52 34  2c 20 23 37 0d 1f a4 14  |V     R4, #7....|
00004200  20 42 4c 20 20 20 20 20  20 70 69 63 6b 5f 75 70  | BL      pick_up|
00004210  0d 1f ae 06 20 3a 0d 1f  b8 16 20 53 55 42 20 20  |.... :.... SUB  |
00004220  20 20 20 52 38 2c 52 38  2c 20 23 31 0d 1f c2 13  |   R8,R8, #1....|
00004230  20 43 4d 50 20 20 20 20  20 52 38 2c 20 23 30 0d  | CMP     R8, #0.|
00004240  1f cc 13 20 4d 4f 56 4c  45 20 20 20 52 35 2c 20  |... MOVLE   R5, |
00004250  23 30 0d 1f d6 06 20 3a  0d 1f e0 13 20 43 4d 50  |#0.... :.... CMP|
00004260  20 20 20 20 20 52 35 2c  20 23 30 0d 1f ea 06 20  |     R5, #0.... |
00004270  3a 0d 1f f4 14 20 4d 4f  56 47 54 20 20 20 52 30  |:.... MOVGT   R0|
00004280  2c 20 23 31 37 0d 1f fe  1a 20 4d 4f 56 47 54 20  |, #17.... MOVGT |
00004290  20 20 52 31 2c 52 36 2c  20 4c 53 52 20 23 32 0d  |  R1,R6, LSR #2.|
000042a0  20 08 1a 20 4d 4f 56 47  54 20 20 20 52 32 2c 52  | .. MOVGT   R2,R|
000042b0  37 2c 20 4c 53 52 20 23  32 0d 20 12 1d 20 42 4c  |7, LSR #2. .. BL|
000042c0  47 54 20 20 20 20 70 6c  6f 74 5f 73 70 72 69 74  |GT    plot_sprit|
000042d0  65 5f 31 32 31 32 0d 20  1c 06 20 3a 0d 20 26 19  |e_1212. .. :. &.|
000042e0  20 4c 44 4d 46 44 20 20  20 52 31 33 21 2c 7b 52  | LDMFD   R13!,{R|
000042f0  39 2c 50 43 7d 0d 20 30  06 20 3a 0d 20 3a 14 20  |9,PC}. 0. :. :. |
00004300  2e 77 65 61 70 6f 6e 5f  74 68 72 6f 77 65 72 0d  |.weapon_thrower.|
00004310  20 44 1a 20 53 54 4d 46  44 20 20 20 52 31 33 21  | D. STMFD   R13!|
00004320  2c 7b 52 39 2c 52 31 34  7d 0d 20 4e 06 20 3a 0d  |,{R9,R14}. N. :.|
00004330  20 58 13 20 4d 4f 56 20  20 20 20 20 52 34 2c 20  | X. MOV     R4, |
00004340  23 38 0d 20 62 14 20 42  4c 20 20 20 20 20 20 70  |#8. b. BL      p|
00004350  69 63 6b 5f 75 70 0d 20  6c 06 20 3a 0d 20 76 16  |ick_up. l. :. v.|
00004360  20 53 55 42 20 20 20 20  20 52 38 2c 52 38 2c 20  | SUB     R8,R8, |
00004370  23 31 0d 20 80 13 20 43  4d 50 20 20 20 20 20 52  |#1. .. CMP     R|
00004380  38 2c 20 23 30 0d 20 8a  13 20 4d 4f 56 4c 45 20  |8, #0. .. MOVLE |
00004390  20 20 52 35 2c 20 23 30  0d 20 94 06 20 3a 0d 20  |  R5, #0. .. :. |
000043a0  9e 13 20 43 4d 50 20 20  20 20 20 52 35 2c 20 23  |.. CMP     R5, #|
000043b0  30 0d 20 a8 06 20 3a 0d  20 b2 14 20 4d 4f 56 47  |0. .. :. .. MOVG|
000043c0  54 20 20 20 52 30 2c 20  23 31 38 0d 20 bc 1a 20  |T   R0, #18. .. |
000043d0  4d 4f 56 47 54 20 20 20  52 31 2c 52 36 2c 20 4c  |MOVGT   R1,R6, L|
000043e0  53 52 20 23 32 0d 20 c6  1a 20 4d 4f 56 47 54 20  |SR #2. .. MOVGT |
000043f0  20 20 52 32 2c 52 37 2c  20 4c 53 52 20 23 32 0d  |  R2,R7, LSR #2.|
00004400  20 d0 1d 20 42 4c 47 54  20 20 20 20 70 6c 6f 74  | .. BLGT    plot|
00004410  5f 73 70 72 69 74 65 5f  31 32 31 32 0d 20 da 06  |_sprite_1212. ..|
00004420  20 3a 0d 20 e4 19 20 4c  44 4d 46 44 20 20 20 52  | :. .. LDMFD   R|
00004430  31 33 21 2c 7b 52 39 2c  50 43 7d 0d 20 ee 06 20  |13!,{R9,PC}. .. |
00004440  3a 0d 20 f8 11 20 2e 77  65 61 70 6f 6e 5f 62 6f  |:. .. .weapon_bo|
00004450  6d 62 0d 21 02 1a 20 53  54 4d 46 44 20 20 20 52  |mb.!.. STMFD   R|
00004460  31 33 21 2c 7b 52 39 2c  52 31 34 7d 0d 21 0c 06  |13!,{R9,R14}.!..|
00004470  20 3a 0d 21 16 13 20 4d  4f 56 20 20 20 20 20 52  | :.!.. MOV     R|
00004480  34 2c 20 23 39 0d 21 20  14 20 42 4c 20 20 20 20  |4, #9.! . BL    |
00004490  20 20 70 69 63 6b 5f 75  70 0d 21 2a 06 20 3a 0d  |  pick_up.!*. :.|
000044a0  21 34 16 20 53 55 42 20  20 20 20 20 52 38 2c 52  |!4. SUB     R8,R|
000044b0  38 2c 20 23 31 0d 21 3e  13 20 43 4d 50 20 20 20  |8, #1.!>. CMP   |
000044c0  20 20 52 38 2c 20 23 30  0d 21 48 13 20 4d 4f 56  |  R8, #0.!H. MOV|
000044d0  4c 45 20 20 20 52 35 2c  20 23 30 0d 21 52 06 20  |LE   R5, #0.!R. |
000044e0  3a 0d 21 5c 13 20 43 4d  50 20 20 20 20 20 52 35  |:.!\. CMP     R5|
000044f0  2c 20 23 30 0d 21 66 06  20 3a 0d 21 70 14 20 4d  |, #0.!f. :.!p. M|
00004500  4f 56 47 54 20 20 20 52  30 2c 20 23 31 39 0d 21  |OVGT   R0, #19.!|
00004510  7a 1a 20 4d 4f 56 47 54  20 20 20 52 31 2c 52 36  |z. MOVGT   R1,R6|
00004520  2c 20 4c 53 52 20 23 32  0d 21 84 1a 20 4d 4f 56  |, LSR #2.!.. MOV|
00004530  47 54 20 20 20 52 32 2c  52 37 2c 20 4c 53 52 20  |GT   R2,R7, LSR |
00004540  23 32 0d 21 8e 1d 20 42  4c 47 54 20 20 20 20 70  |#2.!.. BLGT    p|
00004550  6c 6f 74 5f 73 70 72 69  74 65 5f 31 32 31 32 0d  |lot_sprite_1212.|
00004560  21 98 06 20 3a 0d 21 a2  19 20 4c 44 4d 46 44 20  |!.. :.!.. LDMFD |
00004570  20 20 52 31 33 21 2c 7b  52 39 2c 50 43 7d 0d 21  |  R13!,{R9,PC}.!|
00004580  ac 06 20 3a 0d 21 b6 0d  20 2e 70 69 63 6b 5f 75  |.. :.!.. .pick_u|
00004590  70 0d 21 c0 16 20 4c 44  52 20 20 20 20 20 52 31  |p.!.. LDR     R1|
000045a0  30 2c 20 70 31 5f 78 0d  21 ca 16 20 4c 44 52 20  |0, p1_x.!.. LDR |
000045b0  20 20 20 20 52 31 31 2c  20 70 31 5f 79 0d 21 d4  |    R11, p1_y.!.|
000045c0  1a 20 4d 4f 56 20 20 20  20 20 52 39 2c 52 36 2c  |. MOV     R9,R6,|
000045d0  20 41 53 52 20 23 32 0d  21 de 16 20 41 44 44 20  | ASR #2.!.. ADD |
000045e0  20 20 20 20 52 39 2c 52  39 2c 20 23 38 0d 21 e8  |    R9,R9, #8.!.|
000045f0  17 20 53 55 42 20 20 20  20 20 52 31 30 2c 52 39  |. SUB     R10,R9|
00004600  2c 52 31 30 0d 21 f2 18  20 41 44 44 20 20 20 20  |,R10.!.. ADD    |
00004610  20 52 31 30 2c 52 31 30  2c 20 23 32 0d 21 fc 14  | R10,R10, #2.!..|
00004620  20 43 4d 50 20 20 20 20  20 52 31 30 2c 20 23 30  | CMP     R10, #0|
00004630  0d 22 06 1b 20 42 4c 54  20 20 20 20 20 6e 6f 74  |.".. BLT     not|
00004640  5f 70 69 63 6b 65 64 5f  75 70 31 0d 22 10 1b 20  |_picked_up1.".. |
00004650  43 4d 50 20 20 20 20 20  52 31 30 2c 20 23 78 65  |CMP     R10, #xe|
00004660  78 74 25 2b 31 30 0d 22  1a 1b 20 42 47 54 20 20  |xt%+10.".. BGT  |
00004670  20 20 20 6e 6f 74 5f 70  69 63 6b 65 64 5f 75 70  |   not_picked_up|
00004680  31 0d 22 24 1a 20 4d 4f  56 20 20 20 20 20 52 39  |1."$. MOV     R9|
00004690  2c 52 37 2c 20 41 53 52  20 23 32 0d 22 2e 17 20  |,R7, ASR #2.".. |
000046a0  41 44 44 20 20 20 20 20  52 39 2c 52 39 2c 20 23  |ADD     R9,R9, #|
000046b0  31 32 0d 22 38 17 20 53  55 42 20 20 20 20 20 52  |12."8. SUB     R|
000046c0  31 31 2c 52 39 2c 52 31  31 0d 22 42 18 20 41 44  |11,R9,R11."B. AD|
000046d0  44 20 20 20 20 20 52 31  31 2c 52 31 31 2c 20 23  |D     R11,R11, #|
000046e0  32 0d 22 4c 14 20 43 4d  50 20 20 20 20 20 52 31  |2."L. CMP     R1|
000046f0  31 2c 20 23 30 0d 22 56  1b 20 42 4c 54 20 20 20  |1, #0."V. BLT   |
00004700  20 20 6e 6f 74 5f 70 69  63 6b 65 64 5f 75 70 31  |  not_picked_up1|
00004710  0d 22 60 1b 20 43 4d 50  20 20 20 20 20 52 31 31  |."`. CMP     R11|
00004720  2c 20 23 79 65 78 74 25  2b 31 34 0d 22 6a 1b 20  |, #yext%+14."j. |
00004730  42 47 54 20 20 20 20 20  6e 6f 74 5f 70 69 63 6b  |BGT     not_pick|
00004740  65 64 5f 75 70 31 0d 22  74 13 20 4d 4f 56 20 20  |ed_up1."t. MOV  |
00004750  20 20 20 52 35 2c 20 23  30 0d 22 7e 1a 20 53 54  |   R5, #0."~. ST|
00004760  52 20 20 20 20 20 52 34  2c 20 70 31 5f 77 65 61  |R     R4, p1_wea|
00004770  70 6f 6e 0d 22 88 13 20  4d 4f 56 20 20 20 20 20  |pon.".. MOV     |
00004780  52 30 2c 20 23 32 0d 22  92 14 20 4d 56 4e 20 20  |R0, #2.".. MVN  |
00004790  20 20 20 52 31 2c 20 23  31 34 0d 22 9c 17 20 4d  |   R1, #14.".. M|
000047a0  4f 56 20 20 20 20 20 52  32 2c 20 23 70 69 6e 67  |OV     R2, #ping|
000047b0  25 0d 22 a6 13 20 4d 4f  56 20 20 20 20 20 52 33  |%.".. MOV     R3|
000047c0  2c 20 23 30 0d 22 b0 1c  20 53 57 49 20 20 20 20  |, #0.".. SWI    |
000047d0  20 22 53 6f 75 6e 64 5f  43 6f 6e 74 72 6f 6c 22  | "Sound_Control"|
000047e0  0d 22 ba 14 20 2e 6e 6f  74 5f 70 69 63 6b 65 64  |.".. .not_picked|
000047f0  5f 75 70 31 0d 22 c4 16  20 4c 44 52 20 20 20 20  |_up1.".. LDR    |
00004800  20 52 31 30 2c 20 70 32  5f 78 0d 22 ce 16 20 4c  | R10, p2_x.".. L|
00004810  44 52 20 20 20 20 20 52  31 31 2c 20 70 32 5f 79  |DR     R11, p2_y|
00004820  0d 22 d8 1a 20 4d 4f 56  20 20 20 20 20 52 39 2c  |.".. MOV     R9,|
00004830  52 36 2c 20 41 53 52 20  23 32 0d 22 e2 16 20 41  |R6, ASR #2.".. A|
00004840  44 44 20 20 20 20 20 52  39 2c 52 39 2c 20 23 38  |DD     R9,R9, #8|
00004850  0d 22 ec 17 20 53 55 42  20 20 20 20 20 52 31 30  |.".. SUB     R10|
00004860  2c 52 39 2c 52 31 30 0d  22 f6 18 20 41 44 44 20  |,R9,R10.".. ADD |
00004870  20 20 20 20 52 31 30 2c  52 31 30 2c 20 23 32 0d  |    R10,R10, #2.|
00004880  23 00 14 20 43 4d 50 20  20 20 20 20 52 31 30 2c  |#.. CMP     R10,|
00004890  20 23 30 0d 23 0a 1b 20  42 4c 54 20 20 20 20 20  | #0.#.. BLT     |
000048a0  6e 6f 74 5f 70 69 63 6b  65 64 5f 75 70 32 0d 23  |not_picked_up2.#|
000048b0  14 1b 20 43 4d 50 20 20  20 20 20 52 31 30 2c 20  |.. CMP     R10, |
000048c0  23 78 65 78 74 25 2b 31  30 0d 23 1e 1b 20 42 47  |#xext%+10.#.. BG|
000048d0  54 20 20 20 20 20 6e 6f  74 5f 70 69 63 6b 65 64  |T     not_picked|
000048e0  5f 75 70 32 0d 23 28 1a  20 4d 4f 56 20 20 20 20  |_up2.#(. MOV    |
000048f0  20 52 39 2c 52 37 2c 20  41 53 52 20 23 32 0d 23  | R9,R7, ASR #2.#|
00004900  32 17 20 41 44 44 20 20  20 20 20 52 39 2c 52 39  |2. ADD     R9,R9|
00004910  2c 20 23 31 32 0d 23 3c  17 20 53 55 42 20 20 20  |, #12.#<. SUB   |
00004920  20 20 52 31 31 2c 52 39  2c 52 31 31 0d 23 46 18  |  R11,R9,R11.#F.|
00004930  20 41 44 44 20 20 20 20  20 52 31 31 2c 52 31 31  | ADD     R11,R11|
00004940  2c 20 23 32 0d 23 50 14  20 43 4d 50 20 20 20 20  |, #2.#P. CMP    |
00004950  20 52 31 31 2c 20 23 30  0d 23 5a 1b 20 42 4c 54  | R11, #0.#Z. BLT|
00004960  20 20 20 20 20 6e 6f 74  5f 70 69 63 6b 65 64 5f  |     not_picked_|
00004970  75 70 32 0d 23 64 1b 20  43 4d 50 20 20 20 20 20  |up2.#d. CMP     |
00004980  52 31 31 2c 20 23 79 65  78 74 25 2b 31 36 0d 23  |R11, #yext%+16.#|
00004990  6e 1b 20 42 47 54 20 20  20 20 20 6e 6f 74 5f 70  |n. BGT     not_p|
000049a0  69 63 6b 65 64 5f 75 70  32 0d 23 78 13 20 4d 4f  |icked_up2.#x. MO|
000049b0  56 20 20 20 20 20 52 35  2c 20 23 30 0d 23 82 1a  |V     R5, #0.#..|
000049c0  20 53 54 52 20 20 20 20  20 52 34 2c 20 70 32 5f  | STR     R4, p2_|
000049d0  77 65 61 70 6f 6e 0d 23  8c 13 20 4d 4f 56 20 20  |weapon.#.. MOV  |
000049e0  20 20 20 52 30 2c 20 23  32 0d 23 96 14 20 4d 56  |   R0, #2.#.. MV|
000049f0  4e 20 20 20 20 20 52 31  2c 20 23 31 34 0d 23 a0  |N     R1, #14.#.|
00004a00  17 20 4d 4f 56 20 20 20  20 20 52 32 2c 20 23 70  |. MOV     R2, #p|
00004a10  69 6e 67 25 0d 23 aa 13  20 4d 4f 56 20 20 20 20  |ing%.#.. MOV    |
00004a20  20 52 33 2c 20 23 30 0d  23 b4 1c 20 53 57 49 20  | R3, #0.#.. SWI |
00004a30  20 20 20 20 22 53 6f 75  6e 64 5f 43 6f 6e 74 72  |    "Sound_Contr|
00004a40  6f 6c 22 0d 23 be 14 20  2e 6e 6f 74 5f 70 69 63  |ol".#.. .not_pic|
00004a50  6b 65 64 5f 75 70 32 0d  23 c8 13 20 4d 4f 56 20  |ked_up2.#.. MOV |
00004a60  20 20 20 20 50 43 2c 52  31 34 0d 23 d2 06 20 3a  |    PC,R14.#.. :|
00004a70  0d 23 dc 06 20 3a 0d 23  e6 0a 20 2e 70 31 5f 78  |.#.. :.#.. .p1_x|
00004a80  0d 23 f0 0e 20 45 51 55  44 20 20 20 20 30 0d 23  |.#.. EQUD    0.#|
00004a90  fa 0a 20 2e 70 31 5f 79  0d 24 04 0e 20 45 51 55  |.. .p1_y.$.. EQU|
00004aa0  44 20 20 20 20 30 0d 24  0e 0a 20 2e 70 32 5f 78  |D    0.$.. .p2_x|
00004ab0  0d 24 18 0e 20 45 51 55  44 20 20 20 20 30 0d 24  |.$.. EQUD    0.$|
00004ac0  22 0a 20 2e 70 32 5f 79  0d 24 2c 0e 20 45 51 55  |". .p2_y.$,. EQU|
00004ad0  44 20 20 20 20 30 0d 24  36 06 20 3a 0d 24 40 09  |D    0.$6. :.$@.|
00004ae0  20 2e 72 6e 64 0d 24 4a  11 20 45 51 55 44 20 20  | .rnd.$J. EQUD  |
00004af0  20 20 94 b3 2d 91 0d 24  54 06 20 3a 0d 24 5e 06  |  ..-..$T. :.$^.|
00004b00  20 3a 0d 24 68 12 20 2e  75 70 64 61 74 65 5f 63  | :.$h. .update_c|
00004b10  65 6c 6c 73 0d 24 72 1e  20 53 54 4d 46 44 20 20  |ells.$r. STMFD  |
00004b20  20 52 31 33 21 2c 7b 52  30 2d 52 31 32 2c 52 31  | R13!,{R0-R12,R1|
00004b30  34 7d 0d 24 7c 06 20 3a  0d 24 86 1a 20 4c 44 52  |4}.$|. :.$.. LDR|
00004b40  20 20 20 20 20 52 39 2c  20 61 64 72 5f 63 6c 69  |     R9, adr_cli|
00004b50  73 74 0d 24 90 0c 20 2e  63 6c 6f 6f 70 31 0d 24  |st.$.. .cloop1.$|
00004b60  9a 17 20 4c 44 4d 49 41  20 20 20 52 39 2c 7b 52  |.. LDMIA   R9,{R|
00004b70  31 2d 52 38 7d 0d 24 a4  13 20 43 4d 50 20 20 20  |1-R8}.$.. CMP   |
00004b80  20 20 52 31 2c 20 23 30  0d 24 ae 16 20 42 45 51  |  R1, #0.$.. BEQ|
00004b90  20 20 20 20 20 63 65 6c  6c 5f 73 6b 69 70 0d 24  |     cell_skip.$|
00004ba0  b8 13 20 43 4d 50 20 20  20 20 20 52 31 2c 20 23  |.. CMP     R1, #|
00004bb0  31 0d 24 c2 12 20 42 4c  45 51 20 20 20 20 73 70  |1.$.. BLEQ    sp|
00004bc0  72 61 79 0d 24 cc 16 20  42 45 51 20 20 20 20 20  |ray.$.. BEQ     |
00004bd0  63 65 6c 6c 5f 73 6b 69  70 0d 24 d6 13 20 43 4d  |cell_skip.$.. CM|
00004be0  50 20 20 20 20 20 52 31  2c 20 23 32 0d 24 e0 13  |P     R1, #2.$..|
00004bf0  20 42 4c 45 51 20 20 20  20 70 69 73 74 6f 6c 0d  | BLEQ    pistol.|
00004c00  24 ea 16 20 42 45 51 20  20 20 20 20 63 65 6c 6c  |$.. BEQ     cell|
00004c10  5f 73 6b 69 70 0d 24 f4  13 20 43 4d 50 20 20 20  |_skip.$.. CMP   |
00004c20  20 20 52 31 2c 20 23 33  0d 24 fe 10 20 42 4c 45  |  R1, #3.$.. BLE|
00004c30  51 20 20 20 20 67 75 6e  0d 25 08 16 20 42 45 51  |Q    gun.%.. BEQ|
00004c40  20 20 20 20 20 63 65 6c  6c 5f 73 6b 69 70 0d 25  |     cell_skip.%|
00004c50  12 13 20 43 4d 50 20 20  20 20 20 52 31 2c 20 23  |.. CMP     R1, #|
00004c60  34 0d 25 1c 13 20 42 4c  45 51 20 20 20 20 6d 6f  |4.%.. BLEQ    mo|
00004c70  72 74 61 72 0d 25 26 16  20 42 45 51 20 20 20 20  |rtar.%&. BEQ    |
00004c80  20 63 65 6c 6c 5f 73 6b  69 70 0d 25 30 13 20 43  | cell_skip.%0. C|
00004c90  4d 50 20 20 20 20 20 52  31 2c 20 23 35 0d 25 3a  |MP     R1, #5.%:|
00004ca0  13 20 42 4c 45 51 20 20  20 20 68 6f 6d 69 6e 67  |. BLEQ    homing|
00004cb0  0d 25 44 16 20 42 45 51  20 20 20 20 20 63 65 6c  |.%D. BEQ     cel|
00004cc0  6c 5f 73 6b 69 70 0d 25  4e 13 20 43 4d 50 20 20  |l_skip.%N. CMP  |
00004cd0  20 20 20 52 31 2c 20 23  36 0d 25 58 14 20 42 4c  |   R1, #6.%X. BL|
00004ce0  45 51 20 20 20 20 73 65  65 6b 69 6e 67 0d 25 62  |EQ    seeking.%b|
00004cf0  16 20 42 45 51 20 20 20  20 20 63 65 6c 6c 5f 73  |. BEQ     cell_s|
00004d00  6b 69 70 0d 25 6c 13 20  43 4d 50 20 20 20 20 20  |kip.%l. CMP     |
00004d10  52 31 2c 20 23 37 0d 25  76 15 20 42 4c 45 51 20  |R1, #7.%v. BLEQ |
00004d20  20 20 20 76 65 72 74 69  63 61 6c 0d 25 80 16 20  |   vertical.%.. |
00004d30  42 45 51 20 20 20 20 20  63 65 6c 6c 5f 73 6b 69  |BEQ     cell_ski|
00004d40  70 0d 25 8a 13 20 43 4d  50 20 20 20 20 20 52 31  |p.%.. CMP     R1|
00004d50  2c 20 23 38 0d 25 94 13  20 42 4c 45 51 20 20 20  |, #8.%.. BLEQ   |
00004d60  20 73 70 72 61 79 32 0d  25 9e 16 20 42 45 51 20  | spray2.%.. BEQ |
00004d70  20 20 20 20 63 65 6c 6c  5f 73 6b 69 70 0d 25 a8  |    cell_skip.%.|
00004d80  13 20 43 4d 50 20 20 20  20 20 52 31 2c 20 23 39  |. CMP     R1, #9|
00004d90  0d 25 b2 13 20 42 4c 45  51 20 20 20 20 73 70 72  |.%.. BLEQ    spr|
00004da0  61 79 33 0d 25 bc 16 20  42 45 51 20 20 20 20 20  |ay3.%.. BEQ     |
00004db0  63 65 6c 6c 5f 73 6b 69  70 0d 25 c6 14 20 43 4d  |cell_skip.%.. CM|
00004dc0  50 20 20 20 20 20 52 31  2c 20 23 31 30 0d 25 d0  |P     R1, #10.%.|
00004dd0  14 20 42 4c 45 51 20 20  20 20 74 68 72 6f 77 65  |. BLEQ    throwe|
00004de0  72 0d 25 da 16 20 42 45  51 20 20 20 20 20 63 65  |r.%.. BEQ     ce|
00004df0  6c 6c 5f 73 6b 69 70 0d  25 e4 14 20 43 4d 50 20  |ll_skip.%.. CMP |
00004e00  20 20 20 20 52 31 2c 20  23 31 31 0d 25 ee 14 20  |    R1, #11.%.. |
00004e10  42 4c 45 51 20 20 20 20  65 78 70 6c 6f 64 65 0d  |BLEQ    explode.|
00004e20  25 f8 16 20 42 45 51 20  20 20 20 20 63 65 6c 6c  |%.. BEQ     cell|
00004e30  5f 73 6b 69 70 0d 26 02  14 20 43 4d 50 20 20 20  |_skip.&.. CMP   |
00004e40  20 20 52 31 2c 20 23 31  32 0d 26 0c 11 20 42 4c  |  R1, #12.&.. BL|
00004e50  45 51 20 20 20 20 62 6f  6d 62 0d 26 16 0f 20 2e  |EQ    bomb.&.. .|
00004e60  63 65 6c 6c 5f 73 6b 69  70 0d 26 20 18 20 53 54  |cell_skip.& . ST|
00004e70  4d 49 41 20 20 20 52 39  21 2c 7b 52 31 2d 52 38  |MIA   R9!,{R1-R8|
00004e80  7d 0d 26 2a 13 20 43 4d  50 20 20 20 20 20 52 31  |}.&*. CMP     R1|
00004e90  2c 20 23 30 0d 26 34 13  20 42 47 45 20 20 20 20  |, #0.&4. BGE    |
00004ea0  20 63 6c 6f 6f 70 31 0d  26 3e 06 20 3a 0d 26 48  | cloop1.&>. :.&H|
00004eb0  1d 20 4c 44 4d 46 44 20  20 20 52 31 33 21 2c 7b  |. LDMFD   R13!,{|
00004ec0  52 30 2d 52 31 32 2c 50  43 7d 0d 26 52 06 20 3a  |R0-R12,PC}.&R. :|
00004ed0  0d 26 5c 0b 20 2e 73 70  72 61 79 0d 26 66 1a 20  |.&\. .spray.&f. |
00004ee0  53 54 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 39  |STMFD   R13!,{R9|
00004ef0  2c 52 31 34 7d 0d 26 70  06 20 3a 0d 26 7a 16 20  |,R14}.&p. :.&z. |
00004f00  53 55 42 20 20 20 20 20  52 35 2c 52 35 2c 20 23  |SUB     R5,R5, #|
00004f10  31 0d 26 84 15 20 41 44  44 20 20 20 20 20 52 32  |1.&.. ADD     R2|
00004f20  2c 52 32 2c 52 34 0d 26  8e 15 20 41 44 44 20 20  |,R2,R4.&.. ADD  |
00004f30  20 20 20 52 33 2c 52 33  2c 52 35 0d 26 98 16 20  |   R3,R3,R5.&.. |
00004f40  53 55 42 20 20 20 20 20  52 36 2c 52 36 2c 20 23  |SUB     R6,R6, #|
00004f50  31 0d 26 a2 13 20 43 4d  50 20 20 20 20 20 52 36  |1.&.. CMP     R6|
00004f60  2c 20 23 30 0d 26 ac 13  20 4d 4f 56 4c 45 20 20  |, #0.&.. MOVLE  |
00004f70  20 52 31 2c 20 23 30 0d  26 b6 19 20 4c 44 4d 4c  | R1, #0.&.. LDML|
00004f80  45 46 44 20 52 31 33 21  2c 7b 52 39 2c 50 43 7d  |EFD R13!,{R9,PC}|
00004f90  0d 26 c0 06 20 3a 0d 26  ca 19 20 53 54 4d 46 44  |.&.. :.&.. STMFD|
00004fa0  20 20 20 52 31 33 21 2c  7b 52 31 2d 52 36 7d 0d  |   R13!,{R1-R6}.|
00004fb0  26 d4 06 20 3a 0d 26 de  1a 20 4d 4f 56 20 20 20  |&.. :.&.. MOV   |
00004fc0  20 20 52 32 2c 52 32 2c  20 41 53 52 20 23 34 0d  |  R2,R2, ASR #4.|
00004fd0  26 e8 1a 20 4d 4f 56 20  20 20 20 20 52 33 2c 52  |&.. MOV     R3,R|
00004fe0  33 2c 20 41 53 52 20 23  34 0d 26 f2 13 20 43 4d  |3, ASR #4.&.. CM|
00004ff0  50 20 20 20 20 20 52 32  2c 20 23 30 0d 26 fc 15  |P     R2, #0.&..|
00005000  20 42 4c 54 20 20 20 20  20 6e 6f 5f 73 70 72 61  | BLT     no_spra|
00005010  79 0d 27 06 13 20 43 4d  50 20 20 20 20 20 52 33  |y.'.. CMP     R3|
00005020  2c 20 23 30 0d 27 10 15  20 42 4c 54 20 20 20 20  |, #0.'.. BLT    |
00005030  20 6e 6f 5f 73 70 72 61  79 0d 27 1a 15 20 43 4d  | no_spray.'.. CM|
00005040  50 20 20 20 20 20 52 32  2c 20 23 33 32 30 0d 27  |P     R2, #320.'|
00005050  24 15 20 42 47 45 20 20  20 20 20 6e 6f 5f 73 70  |$. BGE     no_sp|
00005060  72 61 79 0d 27 2e 15 20  43 4d 50 20 20 20 20 20  |ray.'.. CMP     |
00005070  52 33 2c 20 23 32 35 36  0d 27 38 15 20 42 47 45  |R3, #256.'8. BGE|
00005080  20 20 20 20 20 6e 6f 5f  73 70 72 61 79 0d 27 42  |     no_spray.'B|
00005090  18 20 52 53 42 20 20 20  20 20 52 33 2c 52 33 2c  |. RSB     R3,R3,|
000050a0  20 23 32 35 36 0d 27 4c  1c 20 4c 44 52 20 20 20  | #256.'L. LDR   |
000050b0  20 20 52 34 2c 20 73 63  72 65 65 6e 73 74 6f 72  |  R4, screenstor|
000050c0  65 0d 27 56 19 20 4d 4f  56 20 20 20 20 20 52 35  |e.'V. MOV     R5|
000050d0  2c 20 23 79 5f 73 68 69  66 74 0d 27 60 15 20 41  |, #y_shift.'`. A|
000050e0  44 44 20 20 20 20 20 52  34 2c 52 34 2c 52 32 0d  |DD     R4,R4,R2.|
000050f0  27 6a 18 20 4d 4c 41 20  20 20 20 20 52 34 2c 52  |'j. MLA     R4,R|
00005100  35 2c 52 33 2c 52 34 0d  27 74 14 20 4c 44 52 42  |5,R3,R4.'t. LDRB|
00005110  20 20 20 20 52 30 2c 5b  52 34 5d 0d 27 7e 13 20  |    R0,[R4].'~. |
00005120  43 4d 50 20 20 20 20 20  52 30 2c 20 23 30 0d 27  |CMP     R0, #0.'|
00005130  88 11 20 ec 51 20 20 20  52 31 30 2c 20 23 31 0d  |.. .Q   R10, #1.|
00005140  27 92 14 20 4d 4f 56 4e  45 20 20 20 52 31 30 2c  |'.. MOVNE   R10,|
00005150  20 23 30 0d 27 9c 15 20  42 4e 45 20 20 20 20 20  | #0.'.. BNE     |
00005160  6e 6f 5f 73 70 72 61 79  0d 27 a6 1f 20 4c 44 52  |no_spray.'.. LDR|
00005170  20 20 20 20 20 52 30 2c  20 61 64 72 5f 66 6c 61  |     R0, adr_fla|
00005180  6d 65 5f 66 61 64 65 0d  27 b0 1a 20 4d 4f 56 20  |me_fade.'.. MOV |
00005190  20 20 20 20 52 39 2c 52  36 2c 20 41 53 4c 20 23  |    R9,R6, ASL #|
000051a0  33 0d 27 ba 15 20 43 4d  50 20 20 20 20 20 52 39  |3.'.. CMP     R9|
000051b0  2c 20 23 32 35 35 0d 27  c4 15 20 4d 4f 56 47 54  |, #255.'.. MOVGT|
000051c0  20 20 20 52 39 2c 20 23  32 35 35 0d 27 ce 17 20  |   R9, #255.'.. |
000051d0  4c 44 52 42 20 20 20 20  52 30 2c 5b 52 30 2c 52  |LDRB    R0,[R0,R|
000051e0  39 5d 0d 27 d8 14 20 53  54 52 42 20 20 20 20 52  |9].'.. STRB    R|
000051f0  30 2c 5b 52 34 5d 0d 27  e2 0e 20 2e 6e 6f 5f 73  |0,[R4].'.. .no_s|
00005200  70 72 61 79 0d 27 ec 06  20 3a 0d 27 f6 19 20 4c  |pray.'.. :.'.. L|
00005210  44 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 31 2d  |DMFD   R13!,{R1-|
00005220  52 36 7d 0d 28 00 14 20  43 4d 50 20 20 20 20 20  |R6}.(.. CMP     |
00005230  52 31 30 2c 20 23 30 0d  28 0a 16 20 52 53 42 45  |R10, #0.(.. RSBE|
00005240  51 20 20 20 52 35 2c 52  35 2c 20 23 30 0d 28 14  |Q   R5,R5, #0.(.|
00005250  17 20 ec 51 20 20 20 52  35 2c 52 35 2c 20 41 53  |. .Q   R5,R5, AS|
00005260  52 20 23 31 0d 28 1e 19  20 4c 44 4d 46 44 20 20  |R #1.(.. LDMFD  |
00005270  20 52 31 33 21 2c 7b 52  39 2c 50 43 7d 0d 28 28  | R13!,{R9,PC}.((|
00005280  06 20 3a 0d 28 32 0c 20  2e 73 70 72 61 79 32 0d  |. :.(2. .spray2.|
00005290  28 3c 1a 20 53 54 4d 46  44 20 20 20 52 31 33 21  |(<. STMFD   R13!|
000052a0  2c 7b 52 39 2c 52 31 34  7d 0d 28 46 06 20 3a 0d  |,{R9,R14}.(F. :.|
000052b0  28 50 16 20 53 55 42 20  20 20 20 20 52 35 2c 52  |(P. SUB     R5,R|
000052c0  35 2c 20 23 31 0d 28 5a  15 20 41 44 44 20 20 20  |5, #1.(Z. ADD   |
000052d0  20 20 52 32 2c 52 32 2c  52 34 0d 28 64 15 20 41  |  R2,R2,R4.(d. A|
000052e0  44 44 20 20 20 20 20 52  33 2c 52 33 2c 52 35 0d  |DD     R3,R3,R5.|
000052f0  28 6e 16 20 53 55 42 20  20 20 20 20 52 36 2c 52  |(n. SUB     R6,R|
00005300  36 2c 20 23 31 0d 28 78  13 20 43 4d 50 20 20 20  |6, #1.(x. CMP   |
00005310  20 20 52 36 2c 20 23 30  0d 28 82 13 20 4d 4f 56  |  R6, #0.(.. MOV|
00005320  4c 45 20 20 20 52 31 2c  20 23 30 0d 28 8c 19 20  |LE   R1, #0.(.. |
00005330  4c 44 4d 4c 45 46 44 20  52 31 33 21 2c 7b 52 39  |LDMLEFD R13!,{R9|
00005340  2c 50 43 7d 0d 28 96 06  20 3a 0d 28 a0 19 20 53  |,PC}.(.. :.(.. S|
00005350  54 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 31 2d  |TMFD   R13!,{R1-|
00005360  52 36 7d 0d 28 aa 16 20  53 54 4d 46 44 20 20 20  |R6}.(.. STMFD   |
00005370  52 31 33 21 2c 7b 52 36  7d 0d 28 b4 06 20 3a 0d  |R13!,{R6}.(.. :.|
00005380  28 be 13 20 4d 4f 56 20  20 20 20 20 52 36 2c 20  |(.. MOV     R6, |
00005390  23 30 0d 28 c8 18 20 42  4c 20 20 20 20 20 20 63  |#0.(.. BL      c|
000053a0  68 65 63 6b 5f 64 65 61  74 68 0d 28 d2 13 20 4d  |heck_death.(.. M|
000053b0  4f 56 20 20 20 20 20 52  36 2c 20 23 31 0d 28 dc  |OV     R6, #1.(.|
000053c0  18 20 42 4c 20 20 20 20  20 20 63 68 65 63 6b 5f  |. BL      check_|
000053d0  64 65 61 74 68 0d 28 e6  16 20 4c 44 4d 46 44 20  |death.(.. LDMFD |
000053e0  20 20 52 31 33 21 2c 7b  52 36 7d 0d 28 f0 06 20  |  R13!,{R6}.(.. |
000053f0  3a 0d 28 fa 1a 20 4d 4f  56 20 20 20 20 20 52 32  |:.(.. MOV     R2|
00005400  2c 52 32 2c 20 41 53 52  20 23 34 0d 29 04 1a 20  |,R2, ASR #4.).. |
00005410  4d 4f 56 20 20 20 20 20  52 33 2c 52 33 2c 20 41  |MOV     R3,R3, A|
00005420  53 52 20 23 34 0d 29 0e  13 20 43 4d 50 20 20 20  |SR #4.).. CMP   |
00005430  20 20 52 32 2c 20 23 30  0d 29 18 16 20 42 4c 54  |  R2, #0.).. BLT|
00005440  20 20 20 20 20 6e 6f 5f  73 70 72 61 79 32 0d 29  |     no_spray2.)|
00005450  22 13 20 43 4d 50 20 20  20 20 20 52 33 2c 20 23  |". CMP     R3, #|
00005460  30 0d 29 2c 16 20 42 4c  54 20 20 20 20 20 6e 6f  |0.),. BLT     no|
00005470  5f 73 70 72 61 79 32 0d  29 36 15 20 43 4d 50 20  |_spray2.)6. CMP |
00005480  20 20 20 20 52 32 2c 20  23 33 32 30 0d 29 40 16  |    R2, #320.)@.|
00005490  20 42 47 45 20 20 20 20  20 6e 6f 5f 73 70 72 61  | BGE     no_spra|
000054a0  79 32 0d 29 4a 15 20 43  4d 50 20 20 20 20 20 52  |y2.)J. CMP     R|
000054b0  33 2c 20 23 32 35 36 0d  29 54 16 20 42 47 45 20  |3, #256.)T. BGE |
000054c0  20 20 20 20 6e 6f 5f 73  70 72 61 79 32 0d 29 5e  |    no_spray2.)^|
000054d0  18 20 52 53 42 20 20 20  20 20 52 33 2c 52 33 2c  |. RSB     R3,R3,|
000054e0  20 23 32 35 36 0d 29 68  16 20 53 55 42 20 20 20  | #256.)h. SUB   |
000054f0  20 20 52 32 2c 52 32 2c  20 23 31 0d 29 72 16 20  |  R2,R2, #1.)r. |
00005500  53 55 42 20 20 20 20 20  52 33 2c 52 33 2c 20 23  |SUB     R3,R3, #|
00005510  31 0d 29 7c 1c 20 4c 44  52 20 20 20 20 20 52 34  |1.)|. LDR     R4|
00005520  2c 20 73 63 72 65 65 6e  73 74 6f 72 65 0d 29 86  |, screenstore.).|
00005530  19 20 4d 4f 56 20 20 20  20 20 52 35 2c 20 23 79  |. MOV     R5, #y|
00005540  5f 73 68 69 66 74 0d 29  90 15 20 41 44 44 20 20  |_shift.).. ADD  |
00005550  20 20 20 52 34 2c 52 34  2c 52 32 0d 29 9a 18 20  |   R4,R4,R2.).. |
00005560  4d 4c 41 20 20 20 20 20  52 34 2c 52 35 2c 52 33  |MLA     R4,R5,R3|
00005570  2c 52 34 0d 29 a4 14 20  4c 44 52 42 20 20 20 20  |,R4.).. LDRB    |
00005580  52 30 2c 5b 52 34 5d 0d  29 ae 13 20 43 4d 50 20  |R0,[R4].).. CMP |
00005590  20 20 20 20 52 30 2c 20  23 30 0d 29 b8 11 20 ec  |    R0, #0.).. .|
000055a0  51 20 20 20 52 31 30 2c  20 23 31 0d 29 c2 14 20  |Q   R10, #1.).. |
000055b0  4d 4f 56 4e 45 20 20 20  52 31 30 2c 20 23 30 0d  |MOVNE   R10, #0.|
000055c0  29 cc 16 20 42 4e 45 20  20 20 20 20 6e 6f 5f 73  |).. BNE     no_s|
000055d0  70 72 61 79 32 0d 29 d6  1f 20 4c 44 52 20 20 20  |pray2.).. LDR   |
000055e0  20 20 52 30 2c 20 61 64  72 5f 66 6c 61 6d 65 5f  |  R0, adr_flame_|
000055f0  66 61 64 65 0d 29 e0 1a  20 4d 4f 56 20 20 20 20  |fade.).. MOV    |
00005600  20 52 39 2c 52 36 2c 20  41 53 4c 20 23 33 0d 29  | R9,R6, ASL #3.)|
00005610  ea 15 20 43 4d 50 20 20  20 20 20 52 39 2c 20 23  |.. CMP     R9, #|
00005620  32 35 35 0d 29 f4 15 20  4d 4f 56 47 54 20 20 20  |255.).. MOVGT   |
00005630  52 39 2c 20 23 32 35 35  0d 29 fe 17 20 4c 44 52  |R9, #255.).. LDR|
00005640  42 20 20 20 20 52 30 2c  5b 52 30 2c 52 39 5d 0d  |B    R0,[R0,R9].|
00005650  2a 08 18 20 53 54 52 42  20 20 20 20 52 30 2c 5b  |*.. STRB    R0,[|
00005660  52 34 2c 20 23 31 5d 0d  2a 12 1c 20 41 44 44 20  |R4, #1].*.. ADD |
00005670  20 20 20 20 52 34 2c 52  34 2c 20 23 79 5f 73 68  |    R4,R4, #y_sh|
00005680  69 66 74 0d 2a 1c 14 20  53 54 52 42 20 20 20 20  |ift.*.. STRB    |
00005690  52 30 2c 5b 52 34 5d 0d  2a 26 18 20 53 54 52 42  |R0,[R4].*&. STRB|
000056a0  20 20 20 20 52 30 2c 5b  52 34 2c 20 23 31 5d 0d  |    R0,[R4, #1].|
000056b0  2a 30 18 20 53 54 52 42  20 20 20 20 52 30 2c 5b  |*0. STRB    R0,[|
000056c0  52 34 2c 20 23 32 5d 0d  2a 3a 1c 20 41 44 44 20  |R4, #2].*:. ADD |
000056d0  20 20 20 20 52 34 2c 52  34 2c 20 23 79 5f 73 68  |    R4,R4, #y_sh|
000056e0  69 66 74 0d 2a 44 18 20  53 54 52 42 20 20 20 20  |ift.*D. STRB    |
000056f0  52 30 2c 5b 52 34 2c 20  23 31 5d 0d 2a 4e 0f 20  |R0,[R4, #1].*N. |
00005700  2e 6e 6f 5f 73 70 72 61  79 32 0d 2a 58 06 20 3a  |.no_spray2.*X. :|
00005710  0d 2a 62 19 20 4c 44 4d  46 44 20 20 20 52 31 33  |.*b. LDMFD   R13|
00005720  21 2c 7b 52 31 2d 52 36  7d 0d 2a 6c 14 20 43 4d  |!,{R1-R6}.*l. CM|
00005730  50 20 20 20 20 20 52 31  30 2c 20 23 30 0d 2a 76  |P     R10, #0.*v|
00005740  16 20 52 53 42 45 51 20  20 20 52 35 2c 52 35 2c  |. RSBEQ   R5,R5,|
00005750  20 23 30 0d 2a 80 16 20  52 53 42 45 51 20 20 20  | #0.*.. RSBEQ   |
00005760  52 34 2c 52 34 2c 20 23  30 0d 2a 8a 19 20 4c 44  |R4,R4, #0.*.. LD|
00005770  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 39 2c 50  |MFD   R13!,{R9,P|
00005780  43 7d 0d 2a 94 06 20 3a  0d 2a 9e 0c 20 2e 73 70  |C}.*.. :.*.. .sp|
00005790  72 61 79 33 0d 2a a8 1a  20 53 54 4d 46 44 20 20  |ray3.*.. STMFD  |
000057a0  20 52 31 33 21 2c 7b 52  39 2c 52 31 34 7d 0d 2a  | R13!,{R9,R14}.*|
000057b0  b2 06 20 3a 0d 2a bc 16  20 53 55 42 20 20 20 20  |.. :.*.. SUB    |
000057c0  20 52 35 2c 52 35 2c 20  23 31 0d 2a c6 15 20 41  | R5,R5, #1.*.. A|
000057d0  44 44 20 20 20 20 20 52  32 2c 52 32 2c 52 34 0d  |DD     R2,R2,R4.|
000057e0  2a d0 15 20 41 44 44 20  20 20 20 20 52 33 2c 52  |*.. ADD     R3,R|
000057f0  33 2c 52 35 0d 2a da 19  20 80 20 20 20 20 20 52  |3,R5.*.. .     R|
00005800  30 2c 52 36 2c 20 23 32  35 35 3c 3c 38 0d 2a e4  |0,R6, #255<<8.*.|
00005810  16 20 53 55 42 20 20 20  20 20 52 30 2c 52 30 2c  |. SUB     R0,R0,|
00005820  20 23 31 0d 2a ee 13 20  43 4d 50 20 20 20 20 20  | #1.*.. CMP     |
00005830  52 30 2c 20 23 30 0d 2a  f8 13 20 4d 4f 56 4c 45  |R0, #0.*.. MOVLE|
00005840  20 20 20 52 31 2c 20 23  30 0d 2b 02 19 20 4c 44  |   R1, #0.+.. LD|
00005850  4d 4c 45 46 44 20 52 31  33 21 2c 7b 52 39 2c 50  |MLEFD R13!,{R9,P|
00005860  43 7d 0d 2b 0c 1b 20 42  49 43 20 20 20 20 20 52  |C}.+.. BIC     R|
00005870  36 2c 52 36 2c 20 23 32  35 35 3c 3c 38 0d 2b 16  |6,R6, #255<<8.+.|
00005880  14 20 84 52 20 20 20 20  20 52 36 2c 52 36 2c 52  |. .R     R6,R6,R|
00005890  30 0d 2b 20 06 20 3a 0d  2b 2a 19 20 53 54 4d 46  |0.+ . :.+*. STMF|
000058a0  44 20 20 20 52 31 33 21  2c 7b 52 31 2d 52 36 7d  |D   R13!,{R1-R6}|
000058b0  0d 2b 34 06 20 3a 0d 2b  3e 13 20 4d 4f 56 20 20  |.+4. :.+>. MOV  |
000058c0  20 20 20 52 36 2c 20 23  30 0d 2b 48 18 20 42 4c  |   R6, #0.+H. BL|
000058d0  20 20 20 20 20 20 63 68  65 63 6b 5f 64 65 61 74  |      check_deat|
000058e0  68 0d 2b 52 13 20 4d 4f  56 20 20 20 20 20 52 36  |h.+R. MOV     R6|
000058f0  2c 20 23 31 0d 2b 5c 18  20 42 4c 20 20 20 20 20  |, #1.+\. BL     |
00005900  20 63 68 65 63 6b 5f 64  65 61 74 68 0d 2b 66 06  | check_death.+f.|
00005910  20 3a 0d 2b 70 1a 20 4d  4f 56 20 20 20 20 20 52  | :.+p. MOV     R|
00005920  32 2c 52 32 2c 20 41 53  52 20 23 34 0d 2b 7a 1a  |2,R2, ASR #4.+z.|
00005930  20 4d 4f 56 20 20 20 20  20 52 33 2c 52 33 2c 20  | MOV     R3,R3, |
00005940  41 53 52 20 23 34 0d 2b  84 13 20 43 4d 50 20 20  |ASR #4.+.. CMP  |
00005950  20 20 20 52 32 2c 20 23  30 0d 2b 8e 16 20 42 4c  |   R2, #0.+.. BL|
00005960  54 20 20 20 20 20 6e 6f  5f 73 70 72 61 79 33 0d  |T     no_spray3.|
00005970  2b 98 13 20 43 4d 50 20  20 20 20 20 52 33 2c 20  |+.. CMP     R3, |
00005980  23 30 0d 2b a2 16 20 42  4c 54 20 20 20 20 20 6e  |#0.+.. BLT     n|
00005990  6f 5f 73 70 72 61 79 33  0d 2b ac 15 20 43 4d 50  |o_spray3.+.. CMP|
000059a0  20 20 20 20 20 52 32 2c  20 23 33 32 30 0d 2b b6  |     R2, #320.+.|
000059b0  16 20 42 47 45 20 20 20  20 20 6e 6f 5f 73 70 72  |. BGE     no_spr|
000059c0  61 79 33 0d 2b c0 15 20  43 4d 50 20 20 20 20 20  |ay3.+.. CMP     |
000059d0  52 33 2c 20 23 32 35 36  0d 2b ca 16 20 42 47 45  |R3, #256.+.. BGE|
000059e0  20 20 20 20 20 6e 6f 5f  73 70 72 61 79 33 0d 2b  |     no_spray3.+|
000059f0  d4 18 20 52 53 42 20 20  20 20 20 52 33 2c 52 33  |.. RSB     R3,R3|
00005a00  2c 20 23 32 35 36 0d 2b  de 16 20 53 55 42 20 20  |, #256.+.. SUB  |
00005a10  20 20 20 52 32 2c 52 32  2c 20 23 31 0d 2b e8 16  |   R2,R2, #1.+..|
00005a20  20 53 55 42 20 20 20 20  20 52 33 2c 52 33 2c 20  | SUB     R3,R3, |
00005a30  23 31 0d 2b f2 1c 20 4c  44 52 20 20 20 20 20 52  |#1.+.. LDR     R|
00005a40  34 2c 20 73 63 72 65 65  6e 73 74 6f 72 65 0d 2b  |4, screenstore.+|
00005a50  fc 19 20 4d 4f 56 20 20  20 20 20 52 35 2c 20 23  |.. MOV     R5, #|
00005a60  79 5f 73 68 69 66 74 0d  2c 06 15 20 41 44 44 20  |y_shift.,.. ADD |
00005a70  20 20 20 20 52 34 2c 52  34 2c 52 32 0d 2c 10 18  |    R4,R4,R2.,..|
00005a80  20 4d 4c 41 20 20 20 20  20 52 34 2c 52 35 2c 52  | MLA     R4,R5,R|
00005a90  33 2c 52 34 0d 2c 1a 14  20 4c 44 52 42 20 20 20  |3,R4.,.. LDRB   |
00005aa0  20 52 30 2c 5b 52 34 5d  0d 2c 24 13 20 43 4d 50  | R0,[R4].,$. CMP|
00005ab0  20 20 20 20 20 52 30 2c  20 23 30 0d 2c 2e 11 20  |     R0, #0.,.. |
00005ac0  ec 51 20 20 20 52 31 30  2c 20 23 31 0d 2c 38 14  |.Q   R10, #1.,8.|
00005ad0  20 4d 4f 56 4e 45 20 20  20 52 31 30 2c 20 23 30  | MOVNE   R10, #0|
00005ae0  0d 2c 42 16 20 42 4e 45  20 20 20 20 20 6e 6f 5f  |.,B. BNE     no_|
00005af0  73 70 72 61 79 33 0d 2c  4c 15 20 4d 4f 56 20 20  |spray3.,L. MOV  |
00005b00  20 20 20 52 30 2c 20 23  32 35 35 0d 2c 56 18 20  |   R0, #255.,V. |
00005b10  53 54 52 42 20 20 20 20  52 30 2c 5b 52 34 2c 20  |STRB    R0,[R4, |
00005b20  23 31 5d 0d 2c 60 1c 20  41 44 44 20 20 20 20 20  |#1].,`. ADD     |
00005b30  52 34 2c 52 34 2c 20 23  79 5f 73 68 69 66 74 0d  |R4,R4, #y_shift.|
00005b40  2c 6a 14 20 53 54 52 42  20 20 20 20 52 30 2c 5b  |,j. STRB    R0,[|
00005b50  52 34 5d 0d 2c 74 18 20  53 54 52 42 20 20 20 20  |R4].,t. STRB    |
00005b60  52 30 2c 5b 52 34 2c 20  23 31 5d 0d 2c 7e 18 20  |R0,[R4, #1].,~. |
00005b70  53 54 52 42 20 20 20 20  52 30 2c 5b 52 34 2c 20  |STRB    R0,[R4, |
00005b80  23 32 5d 0d 2c 88 1c 20  41 44 44 20 20 20 20 20  |#2].,.. ADD     |
00005b90  52 34 2c 52 34 2c 20 23  79 5f 73 68 69 66 74 0d  |R4,R4, #y_shift.|
00005ba0  2c 92 18 20 53 54 52 42  20 20 20 20 52 30 2c 5b  |,.. STRB    R0,[|
00005bb0  52 34 2c 20 23 31 5d 0d  2c 9c 0f 20 2e 6e 6f 5f  |R4, #1].,.. .no_|
00005bc0  73 70 72 61 79 33 0d 2c  a6 06 20 3a 0d 2c b0 19  |spray3.,.. :.,..|
00005bd0  20 4c 44 4d 46 44 20 20  20 52 31 33 21 2c 7b 52  | LDMFD   R13!,{R|
00005be0  31 2d 52 36 7d 0d 2c ba  14 20 43 4d 50 20 20 20  |1-R6}.,.. CMP   |
00005bf0  20 20 52 31 30 2c 20 23  30 0d 2c c4 16 20 52 53  |  R10, #0.,.. RS|
00005c00  42 45 51 20 20 20 52 35  2c 52 35 2c 20 23 30 0d  |BEQ   R5,R5, #0.|
00005c10  2c ce 16 20 52 53 42 45  51 20 20 20 52 34 2c 52  |,.. RSBEQ   R4,R|
00005c20  34 2c 20 23 30 0d 2c d8  19 20 4c 44 4d 46 44 20  |4, #0.,.. LDMFD |
00005c30  20 20 52 31 33 21 2c 7b  52 39 2c 50 43 7d 0d 2c  |  R13!,{R9,PC}.,|
00005c40  e2 06 20 3a 0d 2c ec 14  20 2e 61 64 72 5f 66 6c  |.. :.,.. .adr_fl|
00005c50  61 6d 65 5f 66 61 64 65  0d 2c f6 18 20 45 51 55  |ame_fade.,.. EQU|
00005c60  44 20 20 20 20 66 6c 61  6d 65 5f 66 61 64 65 25  |D    flame_fade%|
00005c70  0d 2d 00 06 20 3a 0d 2d  0a 12 20 2e 61 64 72 5f  |.-.. :.-.. .adr_|
00005c80  67 75 6e 5f 66 61 64 65  0d 2d 14 16 20 45 51 55  |gun_fade.-.. EQU|
00005c90  44 20 20 20 20 67 75 6e  5f 66 61 64 65 25 0d 2d  |D    gun_fade%.-|
00005ca0  1e 06 20 3a 0d 2d 28 0d  20 2e 74 68 72 6f 77 65  |.. :.-(. .throwe|
00005cb0  72 0d 2d 32 1a 20 53 54  4d 46 44 20 20 20 52 31  |r.-2. STMFD   R1|
00005cc0  33 21 2c 7b 52 39 2c 52  31 34 7d 0d 2d 3c 06 20  |3!,{R9,R14}.-<. |
00005cd0  3a 0d 2d 46 15 20 41 44  44 20 20 20 20 20 52 32  |:.-F. ADD     R2|
00005ce0  2c 52 32 2c 52 34 0d 2d  50 15 20 41 44 44 20 20  |,R2,R4.-P. ADD  |
00005cf0  20 20 20 52 33 2c 52 33  2c 52 35 0d 2d 5a 19 20  |   R3,R3,R5.-Z. |
00005d00  80 20 20 20 20 20 52 37  2c 52 36 2c 20 23 32 35  |.     R7,R6, #25|
00005d10  35 3c 3c 38 0d 2d 64 1a  20 4d 4f 56 20 20 20 20  |5<<8.-d. MOV    |
00005d20  20 52 37 2c 52 37 2c 20  41 53 52 20 23 38 0d 2d  | R7,R7, ASR #8.-|
00005d30  6e 16 20 41 44 44 20 20  20 20 20 52 37 2c 52 37  |n. ADD     R7,R7|
00005d40  2c 20 23 31 0d 2d 78 14  20 43 4d 50 20 20 20 20  |, #1.-x. CMP    |
00005d50  20 52 37 2c 20 23 31 35  0d 2d 82 13 20 4d 4f 56  | R7, #15.-.. MOV|
00005d60  47 45 20 20 20 52 31 2c  20 23 30 0d 2d 8c 1b 20  |GE   R1, #0.-.. |
00005d70  4c 44 4d 47 45 46 44 20  20 20 52 31 33 21 2c 7b  |LDMGEFD   R13!,{|
00005d80  52 39 2c 50 43 7d 0d 2d  96 1b 20 42 49 43 20 20  |R9,PC}.-.. BIC  |
00005d90  20 20 20 52 36 2c 52 36  2c 20 23 32 35 35 3c 3c  |   R6,R6, #255<<|
00005da0  38 0d 2d a0 1c 20 84 52  20 20 20 20 20 52 36 2c  |8.-.. .R     R6,|
00005db0  52 36 2c 52 37 2c 20 41  53 4c 20 23 38 0d 2d aa  |R6,R7, ASL #8.-.|
00005dc0  06 20 3a 0d 2d b4 19 20  53 54 4d 46 44 20 20 20  |. :.-.. STMFD   |
00005dd0  52 31 33 21 2c 7b 52 31  2d 52 36 7d 0d 2d be 06  |R13!,{R1-R6}.-..|
00005de0  20 3a 0d 2d c8 18 20 42  4c 20 20 20 20 20 20 63  | :.-.. BL      c|
00005df0  68 65 63 6b 5f 64 65 61  74 68 0d 2d d2 06 20 3a  |heck_death.-.. :|
00005e00  0d 2d dc 1a 20 4d 4f 56  20 20 20 20 20 52 32 2c  |.-.. MOV     R2,|
00005e10  52 32 2c 20 41 53 52 20  23 34 0d 2d e6 1a 20 4d  |R2, ASR #4.-.. M|
00005e20  4f 56 20 20 20 20 20 52  33 2c 52 33 2c 20 41 53  |OV     R3,R3, AS|
00005e30  52 20 23 34 0d 2d f0 18  20 52 53 42 20 20 20 20  |R #4.-.. RSB    |
00005e40  20 52 33 2c 52 33 2c 20  23 32 35 36 0d 2d fa 1c  | R3,R3, #256.-..|
00005e50  20 4c 44 52 20 20 20 20  20 52 34 2c 20 73 63 72  | LDR     R4, scr|
00005e60  65 65 6e 73 74 6f 72 65  0d 2e 04 19 20 4d 4f 56  |eenstore.... MOV|
00005e70  20 20 20 20 20 52 35 2c  20 23 79 5f 73 68 69 66  |     R5, #y_shif|
00005e80  74 0d 2e 0e 15 20 41 44  44 20 20 20 20 20 52 34  |t.... ADD     R4|
00005e90  2c 52 34 2c 52 32 0d 2e  18 18 20 4d 4c 41 20 20  |,R4,R2.... MLA  |
00005ea0  20 20 20 52 34 2c 52 35  2c 52 33 2c 52 34 0d 2e  |   R4,R5,R3,R4..|
00005eb0  22 18 20 4c 44 52 42 20  20 20 20 52 30 2c 5b 52  |". LDRB    R0,[R|
00005ec0  34 2c 20 23 32 5d 0d 2e  2c 13 20 43 4d 50 20 20  |4, #2]..,. CMP  |
00005ed0  20 20 20 52 30 2c 20 23  30 0d 2e 36 11 20 ec 51  |   R0, #0..6. .Q|
00005ee0  20 20 20 52 31 30 2c 20  23 31 0d 2e 40 14 20 4d  |   R10, #1..@. M|
00005ef0  4f 56 4e 45 20 20 20 52  31 30 2c 20 23 30 0d 2e  |OVNE   R10, #0..|
00005f00  4a 17 20 42 4e 45 20 20  20 20 20 6e 6f 5f 74 68  |J. BNE     no_th|
00005f10  72 6f 77 65 72 0d 2e 54  18 20 52 53 42 20 20 20  |rower..T. RSB   |
00005f20  20 20 52 33 2c 52 33 2c  20 23 32 35 36 0d 2e 5e  |  R3,R3, #256..^|
00005f30  12 20 4d 4f 56 20 20 20  20 20 52 30 2c 52 37 0d  |. MOV     R0,R7.|
00005f40  2e 68 16 20 53 55 42 20  20 20 20 20 52 31 2c 52  |.h. SUB     R1,R|
00005f50  32 2c 20 23 34 0d 2e 72  16 20 53 55 42 20 20 20  |2, #4..r. SUB   |
00005f60  20 20 52 32 2c 52 33 2c  20 23 34 0d 2e 7c 1d 20  |  R2,R3, #4..|. |
00005f70  42 4c 20 20 20 20 20 20  70 6c 6f 74 5f 73 70 72  |BL      plot_spr|
00005f80  69 74 65 5f 31 32 30 38  0d 2e 86 10 20 2e 6e 6f  |ite_1208.... .no|
00005f90  5f 74 68 72 6f 77 65 72  0d 2e 90 06 20 3a 0d 2e  |_thrower.... :..|
00005fa0  9a 19 20 4c 44 4d 46 44  20 20 20 52 31 33 21 2c  |.. LDMFD   R13!,|
00005fb0  7b 52 31 2d 52 36 7d 0d  2e a4 14 20 43 4d 50 20  |{R1-R6}.... CMP |
00005fc0  20 20 20 20 52 31 30 2c  20 23 30 0d 2e ae 10 20  |    R10, #0.... |
00005fd0  ec 51 20 20 20 52 31 2c  20 23 30 0d 2e b8 19 20  |.Q   R1, #0.... |
00005fe0  4c 44 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 39  |LDMFD   R13!,{R9|
00005ff0  2c 50 43 7d 0d 2e c2 06  20 3a 0d 2e cc 0d 20 2e  |,PC}.... :.... .|
00006000  65 78 70 6c 6f 64 65 0d  2e d6 1a 20 53 54 4d 46  |explode.... STMF|
00006010  44 20 20 20 52 31 33 21  2c 7b 52 39 2c 52 31 34  |D   R13!,{R9,R14|
00006020  7d 0d 2e e0 06 20 3a 0d  2e ea 15 20 41 44 44 20  |}.... :.... ADD |
00006030  20 20 20 20 52 32 2c 52  32 2c 52 34 0d 2e f4 15  |    R2,R2,R4....|
00006040  20 41 44 44 20 20 20 20  20 52 33 2c 52 33 2c 52  | ADD     R3,R3,R|
00006050  35 0d 2e fe 19 20 80 20  20 20 20 20 52 37 2c 52  |5.... .     R7,R|
00006060  36 2c 20 23 32 35 35 3c  3c 38 0d 2f 08 1a 20 4d  |6, #255<<8./.. M|
00006070  4f 56 20 20 20 20 20 52  37 2c 52 37 2c 20 41 53  |OV     R7,R7, AS|
00006080  52 20 23 38 0d 2f 12 16  20 41 44 44 20 20 20 20  |R #8./.. ADD    |
00006090  20 52 37 2c 52 37 2c 20  23 31 0d 2f 1c 14 20 43  | R7,R7, #1./.. C|
000060a0  4d 50 20 20 20 20 20 52  37 2c 20 23 31 35 0d 2f  |MP     R7, #15./|
000060b0  26 13 20 4d 4f 56 47 45  20 20 20 52 31 2c 20 23  |&. MOVGE   R1, #|
000060c0  30 0d 2f 30 1b 20 4c 44  4d 47 45 46 44 20 20 20  |0./0. LDMGEFD   |
000060d0  52 31 33 21 2c 7b 52 39  2c 50 43 7d 0d 2f 3a 1b  |R13!,{R9,PC}./:.|
000060e0  20 42 49 43 20 20 20 20  20 52 36 2c 52 36 2c 20  | BIC     R6,R6, |
000060f0  23 32 35 35 3c 3c 38 0d  2f 44 1c 20 84 52 20 20  |#255<<8./D. .R  |
00006100  20 20 20 52 36 2c 52 36  2c 52 37 2c 20 41 53 4c  |   R6,R6,R7, ASL|
00006110  20 23 38 0d 2f 4e 16 20  41 44 44 20 20 20 20 20  | #8./N. ADD     |
00006120  52 37 2c 52 37 2c 20 23  38 0d 2f 58 06 20 3a 0d  |R7,R7, #8./X. :.|
00006130  2f 62 19 20 53 54 4d 46  44 20 20 20 52 31 33 21  |/b. STMFD   R13!|
00006140  2c 7b 52 31 2d 52 36 7d  0d 2f 6c 06 20 3a 0d 2f  |,{R1-R6}./l. :./|
00006150  76 18 20 42 4c 20 20 20  20 20 20 63 68 65 63 6b  |v. BL      check|
00006160  5f 64 65 61 74 68 0d 2f  80 06 20 3a 0d 2f 8a 1a  |_death./.. :./..|
00006170  20 4d 4f 56 20 20 20 20  20 52 32 2c 52 32 2c 20  | MOV     R2,R2, |
00006180  41 53 52 20 23 34 0d 2f  94 1a 20 4d 4f 56 20 20  |ASR #4./.. MOV  |
00006190  20 20 20 52 33 2c 52 33  2c 20 41 53 52 20 23 34  |   R3,R3, ASR #4|
000061a0  0d 2f 9e 18 20 52 53 42  20 20 20 20 20 52 33 2c  |./.. RSB     R3,|
000061b0  52 33 2c 20 23 32 35 36  0d 2f a8 1c 20 4c 44 52  |R3, #256./.. LDR|
000061c0  20 20 20 20 20 52 34 2c  20 73 63 72 65 65 6e 73  |     R4, screens|
000061d0  74 6f 72 65 0d 2f b2 19  20 4d 4f 56 20 20 20 20  |tore./.. MOV    |
000061e0  20 52 35 2c 20 23 79 5f  73 68 69 66 74 0d 2f bc  | R5, #y_shift./.|
000061f0  15 20 41 44 44 20 20 20  20 20 52 34 2c 52 34 2c  |. ADD     R4,R4,|
00006200  52 32 0d 2f c6 18 20 4d  4c 41 20 20 20 20 20 52  |R2./.. MLA     R|
00006210  34 2c 52 35 2c 52 33 2c  52 34 0d 2f d0 18 20 4c  |4,R5,R3,R4./.. L|
00006220  44 52 42 20 20 20 20 52  30 2c 5b 52 34 2c 20 23  |DRB    R0,[R4, #|
00006230  32 5d 0d 2f da 13 20 43  4d 50 20 20 20 20 20 52  |2]./.. CMP     R|
00006240  30 2c 20 23 30 0d 2f e4  11 20 ec 51 20 20 20 52  |0, #0./.. .Q   R|
00006250  31 30 2c 20 23 31 0d 2f  ee 14 20 4d 4f 56 4e 45  |10, #1./.. MOVNE|
00006260  20 20 20 52 31 30 2c 20  23 30 0d 2f f8 17 20 42  |   R10, #0./.. B|
00006270  4e 45 20 20 20 20 20 6e  6f 5f 65 78 70 6c 6f 64  |NE     no_explod|
00006280  65 0d 30 02 18 20 52 53  42 20 20 20 20 20 52 33  |e.0.. RSB     R3|
00006290  2c 52 33 2c 20 23 32 35  36 0d 30 0c 12 20 4d 4f  |,R3, #256.0.. MO|
000062a0  56 20 20 20 20 20 52 30  2c 52 37 0d 30 16 16 20  |V     R0,R7.0.. |
000062b0  53 55 42 20 20 20 20 20  52 31 2c 52 32 2c 20 23  |SUB     R1,R2, #|
000062c0  38 0d 30 20 16 20 53 55  42 20 20 20 20 20 52 32  |8.0 . SUB     R2|
000062d0  2c 52 33 2c 20 23 38 0d  30 2a 1d 20 42 4c 20 20  |,R3, #8.0*. BL  |
000062e0  20 20 20 20 70 6c 6f 74  5f 73 70 72 69 74 65 5f  |    plot_sprite_|
000062f0  32 30 31 36 0d 30 34 10  20 2e 6e 6f 5f 65 78 70  |2016.04. .no_exp|
00006300  6c 6f 64 65 0d 30 3e 06  20 3a 0d 30 48 19 20 4c  |lode.0>. :.0H. L|
00006310  44 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 31 2d  |DMFD   R13!,{R1-|
00006320  52 36 7d 0d 30 52 14 20  43 4d 50 20 20 20 20 20  |R6}.0R. CMP     |
00006330  52 31 30 2c 20 23 30 0d  30 5c 19 20 4c 44 4d 46  |R10, #0.0\. LDMF|
00006340  44 20 20 20 52 31 33 21  2c 7b 52 39 2c 50 43 7d  |D   R13!,{R9,PC}|
00006350  0d 30 66 06 20 3a 0d 30  70 0c 20 2e 70 69 73 74  |.0f. :.0p. .pist|
00006360  6f 6c 0d 30 7a 1a 20 53  54 4d 46 44 20 20 20 52  |ol.0z. STMFD   R|
00006370  31 33 21 2c 7b 52 39 2c  52 31 34 7d 0d 30 84 06  |13!,{R9,R14}.0..|
00006380  20 3a 0d 30 8e 15 20 41  44 44 20 20 20 20 20 52  | :.0.. ADD     R|
00006390  32 2c 52 32 2c 52 34 0d  30 98 15 20 41 44 44 20  |2,R2,R4.0.. ADD |
000063a0  20 20 20 20 52 33 2c 52  33 2c 52 35 0d 30 a2 13  |    R3,R3,R5.0..|
000063b0  20 43 4d 50 20 20 20 20  20 52 34 2c 20 23 30 0d  | CMP     R4, #0.|
000063c0  30 ac 13 20 4d 4f 56 4c  54 20 20 20 52 37 2c 20  |0.. MOVLT   R7, |
000063d0  23 31 0d 30 b6 13 20 4d  4f 56 47 54 20 20 20 52  |#1.0.. MOVGT   R|
000063e0  37 2c 20 23 30 0d 30 c0  06 20 3a 0d 30 ca 19 20  |7, #0.0.. :.0.. |
000063f0  53 54 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 31  |STMFD   R13!,{R1|
00006400  2d 52 36 7d 0d 30 d4 06  20 3a 0d 30 de 18 20 42  |-R6}.0.. :.0.. B|
00006410  4c 20 20 20 20 20 20 63  68 65 63 6b 5f 64 65 61  |L      check_dea|
00006420  74 68 0d 30 e8 06 20 3a  0d 30 f2 1a 20 4d 4f 56  |th.0.. :.0.. MOV|
00006430  20 20 20 20 20 52 32 2c  52 32 2c 20 41 53 52 20  |     R2,R2, ASR |
00006440  23 34 0d 30 fc 1a 20 4d  4f 56 20 20 20 20 20 52  |#4.0.. MOV     R|
00006450  33 2c 52 33 2c 20 41 53  52 20 23 34 0d 31 06 18  |3,R3, ASR #4.1..|
00006460  20 52 53 42 20 20 20 20  20 52 33 2c 52 33 2c 20  | RSB     R3,R3, |
00006470  23 32 35 36 0d 31 10 1c  20 4c 44 52 20 20 20 20  |#256.1.. LDR    |
00006480  20 52 34 2c 20 73 63 72  65 65 6e 73 74 6f 72 65  | R4, screenstore|
00006490  0d 31 1a 19 20 4d 4f 56  20 20 20 20 20 52 35 2c  |.1.. MOV     R5,|
000064a0  20 23 79 5f 73 68 69 66  74 0d 31 24 15 20 41 44  | #y_shift.1$. AD|
000064b0  44 20 20 20 20 20 52 34  2c 52 34 2c 52 32 0d 31  |D     R4,R4,R2.1|
000064c0  2e 18 20 4d 4c 41 20 20  20 20 20 52 34 2c 52 35  |.. MLA     R4,R5|
000064d0  2c 52 33 2c 52 34 0d 31  38 18 20 4c 44 52 42 20  |,R3,R4.18. LDRB |
000064e0  20 20 20 52 30 2c 5b 52  34 2c 20 23 32 5d 0d 31  |   R0,[R4, #2].1|
000064f0  42 13 20 43 4d 50 20 20  20 20 20 52 30 2c 20 23  |B. CMP     R0, #|
00006500  30 0d 31 4c 11 20 ec 51  20 20 20 52 31 30 2c 20  |0.1L. .Q   R10, |
00006510  23 31 0d 31 56 14 20 4d  4f 56 4e 45 20 20 20 52  |#1.1V. MOVNE   R|
00006520  31 30 2c 20 23 30 0d 31  60 16 20 42 4e 45 20 20  |10, #0.1`. BNE  |
00006530  20 20 20 6e 6f 5f 70 69  73 74 6f 6c 0d 31 6a 18  |   no_pistol.1j.|
00006540  20 52 53 42 20 20 20 20  20 52 33 2c 52 33 2c 20  | RSB     R3,R3, |
00006550  23 32 35 36 0d 31 74 12  20 4d 4f 56 20 20 20 20  |#256.1t. MOV    |
00006560  20 52 30 2c 52 37 0d 31  7e 16 20 53 55 42 20 20  | R0,R7.1~. SUB  |
00006570  20 20 20 52 31 2c 52 32  2c 20 23 32 0d 31 88 16  |   R1,R2, #2.1..|
00006580  20 53 55 42 20 20 20 20  20 52 32 2c 52 33 2c 20  | SUB     R2,R3, |
00006590  23 32 0d 31 92 1d 20 42  4c 20 20 20 20 20 20 70  |#2.1.. BL      p|
000065a0  6c 6f 74 5f 73 70 72 69  74 65 5f 30 38 30 34 0d  |lot_sprite_0804.|
000065b0  31 9c 1d 3b 4c 44 52 20  20 20 20 20 52 30 2c 20  |1..;LDR     R0, |
000065c0  61 64 72 5f 67 75 6e 5f  66 61 64 65 0d 31 a6 15  |adr_gun_fade.1..|
000065d0  3b 4d 4f 56 20 20 20 20  20 52 39 2c 20 23 32 35  |;MOV     R9, #25|
000065e0  35 0d 31 b0 17 3b 4c 44  52 42 20 20 20 20 52 30  |5.1..;LDRB    R0|
000065f0  2c 5b 52 30 2c 52 39 5d  0d 31 ba 14 3b 53 54 52  |,[R0,R9].1..;STR|
00006600  42 20 20 20 20 52 30 2c  5b 52 34 5d 0d 31 c4 18  |B    R0,[R4].1..|
00006610  3b 53 54 52 42 20 20 20  20 52 30 2c 5b 52 34 2c  |;STRB    R0,[R4,|
00006620  20 23 31 5d 0d 31 ce 0f  20 2e 6e 6f 5f 70 69 73  | #1].1.. .no_pis|
00006630  74 6f 6c 0d 31 d8 06 20  3a 0d 31 e2 19 20 4c 44  |tol.1.. :.1.. LD|
00006640  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 31 2d 52  |MFD   R13!,{R1-R|
00006650  36 7d 0d 31 ec 14 20 43  4d 50 20 20 20 20 20 52  |6}.1.. CMP     R|
00006660  31 30 2c 20 23 30 0d 31  f6 10 20 ec 51 20 20 20  |10, #0.1.. .Q   |
00006670  52 31 2c 20 23 30 0d 32  00 19 20 4c 44 4d 46 44  |R1, #0.2.. LDMFD|
00006680  20 20 20 52 31 33 21 2c  7b 52 39 2c 50 43 7d 0d  |   R13!,{R9,PC}.|
00006690  32 0a 06 20 3a 0d 32 14  09 20 2e 67 75 6e 0d 32  |2.. :.2.. .gun.2|
000066a0  1e 1a 20 53 54 4d 46 44  20 20 20 52 31 33 21 2c  |.. STMFD   R13!,|
000066b0  7b 52 39 2c 52 31 34 7d  0d 32 28 06 20 3a 0d 32  |{R9,R14}.2(. :.2|
000066c0  32 15 20 41 44 44 20 20  20 20 20 52 32 2c 52 32  |2. ADD     R2,R2|
000066d0  2c 52 34 0d 32 3c 15 20  41 44 44 20 20 20 20 20  |,R4.2<. ADD     |
000066e0  52 33 2c 52 33 2c 52 35  0d 32 46 13 20 43 4d 50  |R3,R3,R5.2F. CMP|
000066f0  20 20 20 20 20 52 34 2c  20 23 30 0d 32 50 13 20  |     R4, #0.2P. |
00006700  4d 4f 56 4c 54 20 20 20  52 37 2c 20 23 33 0d 32  |MOVLT   R7, #3.2|
00006710  5a 13 20 4d 4f 56 47 54  20 20 20 52 37 2c 20 23  |Z. MOVGT   R7, #|
00006720  32 0d 32 64 06 20 3a 0d  32 6e 19 20 53 54 4d 46  |2.2d. :.2n. STMF|
00006730  44 20 20 20 52 31 33 21  2c 7b 52 31 2d 52 36 7d  |D   R13!,{R1-R6}|
00006740  0d 32 78 06 20 3a 0d 32  82 13 20 4d 4f 56 20 20  |.2x. :.2.. MOV  |
00006750  20 20 20 52 36 2c 20 23  30 0d 32 8c 18 20 42 4c  |   R6, #0.2.. BL|
00006760  20 20 20 20 20 20 63 68  65 63 6b 5f 64 65 61 74  |      check_deat|
00006770  68 0d 32 96 13 20 4d 4f  56 20 20 20 20 20 52 36  |h.2.. MOV     R6|
00006780  2c 20 23 31 0d 32 a0 18  20 42 4c 20 20 20 20 20  |, #1.2.. BL     |
00006790  20 63 68 65 63 6b 5f 64  65 61 74 68 0d 32 aa 06  | check_death.2..|
000067a0  20 3a 0d 32 b4 1a 20 4d  4f 56 20 20 20 20 20 52  | :.2.. MOV     R|
000067b0  32 2c 52 32 2c 20 41 53  52 20 23 34 0d 32 be 1a  |2,R2, ASR #4.2..|
000067c0  20 4d 4f 56 20 20 20 20  20 52 33 2c 52 33 2c 20  | MOV     R3,R3, |
000067d0  41 53 52 20 23 34 0d 32  c8 18 20 52 53 42 20 20  |ASR #4.2.. RSB  |
000067e0  20 20 20 52 33 2c 52 33  2c 20 23 32 35 36 0d 32  |   R3,R3, #256.2|
000067f0  d2 1c 20 4c 44 52 20 20  20 20 20 52 34 2c 20 73  |.. LDR     R4, s|
00006800  63 72 65 65 6e 73 74 6f  72 65 0d 32 dc 19 20 4d  |creenstore.2.. M|
00006810  4f 56 20 20 20 20 20 52  35 2c 20 23 79 5f 73 68  |OV     R5, #y_sh|
00006820  69 66 74 0d 32 e6 15 20  41 44 44 20 20 20 20 20  |ift.2.. ADD     |
00006830  52 34 2c 52 34 2c 52 32  0d 32 f0 18 20 4d 4c 41  |R4,R4,R2.2.. MLA|
00006840  20 20 20 20 20 52 34 2c  52 35 2c 52 33 2c 52 34  |     R4,R5,R3,R4|
00006850  0d 32 fa 14 20 4c 44 52  42 20 20 20 20 52 30 2c  |.2.. LDRB    R0,|
00006860  5b 52 34 5d 0d 33 04 13  20 43 4d 50 20 20 20 20  |[R4].3.. CMP    |
00006870  20 52 30 2c 20 23 30 0d  33 0e 11 20 ec 51 20 20  | R0, #0.3.. .Q  |
00006880  20 52 31 30 2c 20 23 31  0d 33 18 14 20 4d 4f 56  | R10, #1.3.. MOV|
00006890  4e 45 20 20 20 52 31 30  2c 20 23 30 0d 33 22 13  |NE   R10, #0.3".|
000068a0  20 42 4e 45 20 20 20 20  20 6e 6f 5f 67 75 6e 0d  | BNE     no_gun.|
000068b0  33 2c 18 20 52 53 42 20  20 20 20 20 52 33 2c 52  |3,. RSB     R3,R|
000068c0  33 2c 20 23 32 35 36 0d  33 36 12 20 4d 4f 56 20  |3, #256.36. MOV |
000068d0  20 20 20 20 52 30 2c 52  37 0d 33 40 16 20 53 55  |    R0,R7.3@. SU|
000068e0  42 20 20 20 20 20 52 31  2c 52 32 2c 20 23 32 0d  |B     R1,R2, #2.|
000068f0  33 4a 16 20 53 55 42 20  20 20 20 20 52 32 2c 52  |3J. SUB     R2,R|
00006900  33 2c 20 23 32 0d 33 54  1d 20 42 4c 20 20 20 20  |3, #2.3T. BL    |
00006910  20 20 70 6c 6f 74 5f 73  70 72 69 74 65 5f 30 38  |  plot_sprite_08|
00006920  30 34 0d 33 5e 1d 3b 4c  44 52 20 20 20 20 20 52  |04.3^.;LDR     R|
00006930  30 2c 20 61 64 72 5f 67  75 6e 5f 66 61 64 65 0d  |0, adr_gun_fade.|
00006940  33 68 15 3b 4d 4f 56 20  20 20 20 20 52 39 2c 20  |3h.;MOV     R9, |
00006950  23 32 35 35 0d 33 72 17  3b 4c 44 52 42 20 20 20  |#255.3r.;LDRB   |
00006960  20 52 30 2c 5b 52 30 2c  52 39 5d 0d 33 7c 14 3b  | R0,[R0,R9].3|.;|
00006970  53 54 52 42 20 20 20 20  52 30 2c 5b 52 34 5d 0d  |STRB    R0,[R4].|
00006980  33 86 0c 20 2e 6e 6f 5f  67 75 6e 0d 33 90 06 20  |3.. .no_gun.3.. |
00006990  3a 0d 33 9a 19 20 4c 44  4d 46 44 20 20 20 52 31  |:.3.. LDMFD   R1|
000069a0  33 21 2c 7b 52 31 2d 52  36 7d 0d 33 a4 14 20 43  |3!,{R1-R6}.3.. C|
000069b0  4d 50 20 20 20 20 20 52  31 30 2c 20 23 30 0d 33  |MP     R10, #0.3|
000069c0  ae 10 20 ec 51 20 20 20  52 31 2c 20 23 30 0d 33  |.. .Q   R1, #0.3|
000069d0  b8 19 20 4c 44 4d 46 44  20 20 20 52 31 33 21 2c  |.. LDMFD   R13!,|
000069e0  7b 52 39 2c 50 43 7d 0d  33 c2 06 20 3a 0d 33 cc  |{R9,PC}.3.. :.3.|
000069f0  0c 20 2e 6d 6f 72 74 61  72 0d 33 d6 1a 20 53 54  |. .mortar.3.. ST|
00006a00  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 39 2c 52  |MFD   R13!,{R9,R|
00006a10  31 34 7d 0d 33 e0 06 20  3a 0d 33 ea 16 20 53 55  |14}.3.. :.3.. SU|
00006a20  42 20 20 20 20 20 52 35  2c 52 35 2c 20 23 31 0d  |B     R5,R5, #1.|
00006a30  33 f4 14 20 4d 4f 56 20  20 20 20 20 52 30 2c 20  |3.. MOV     R0, |
00006a40  23 33 32 0d 33 fe 16 20  52 53 42 20 20 20 20 20  |#32.3.. RSB     |
00006a50  52 30 2c 52 30 2c 20 23  30 0d 34 08 12 20 43 4d  |R0,R0, #0.4.. CM|
00006a60  50 20 20 20 20 20 52 35  2c 52 30 0d 34 12 12 20  |P     R5,R0.4.. |
00006a70  4d 4f 56 4c 54 20 20 20  52 35 2c 52 30 0d 34 1c  |MOVLT   R5,R0.4.|
00006a80  15 20 41 44 44 20 20 20  20 20 52 32 2c 52 32 2c  |. ADD     R2,R2,|
00006a90  52 34 0d 34 26 15 20 41  44 44 20 20 20 20 20 52  |R4.4&. ADD     R|
00006aa0  33 2c 52 33 2c 52 35 0d  34 30 06 20 3a 0d 34 3a  |3,R3,R5.40. :.4:|
00006ab0  19 20 53 54 4d 46 44 20  20 20 52 31 33 21 2c 7b  |. STMFD   R13!,{|
00006ac0  52 31 2d 52 36 7d 0d 34  44 06 20 3a 0d 34 4e 18  |R1-R6}.4D. :.4N.|
00006ad0  20 42 4c 20 20 20 20 20  20 63 68 65 63 6b 5f 64  | BL      check_d|
00006ae0  65 61 74 68 0d 34 58 06  20 3a 0d 34 62 1a 20 4d  |eath.4X. :.4b. M|
00006af0  4f 56 20 20 20 20 20 52  32 2c 52 32 2c 20 41 53  |OV     R2,R2, AS|
00006b00  52 20 23 34 0d 34 6c 1a  20 4d 4f 56 20 20 20 20  |R #4.4l. MOV    |
00006b10  20 52 33 2c 52 33 2c 20  41 53 52 20 23 34 0d 34  | R3,R3, ASR #4.4|
00006b20  76 18 20 52 53 42 20 20  20 20 20 52 33 2c 52 33  |v. RSB     R3,R3|
00006b30  2c 20 23 32 35 36 0d 34  80 1c 20 4c 44 52 20 20  |, #256.4.. LDR  |
00006b40  20 20 20 52 34 2c 20 73  63 72 65 65 6e 73 74 6f  |   R4, screensto|
00006b50  72 65 0d 34 8a 19 20 4d  4f 56 20 20 20 20 20 52  |re.4.. MOV     R|
00006b60  35 2c 20 23 79 5f 73 68  69 66 74 0d 34 94 15 20  |5, #y_shift.4.. |
00006b70  41 44 44 20 20 20 20 20  52 34 2c 52 34 2c 52 32  |ADD     R4,R4,R2|
00006b80  0d 34 9e 18 20 4d 4c 41  20 20 20 20 20 52 34 2c  |.4.. MLA     R4,|
00006b90  52 35 2c 52 33 2c 52 34  0d 34 a8 14 20 4c 44 52  |R5,R3,R4.4.. LDR|
00006ba0  42 20 20 20 20 52 30 2c  5b 52 34 5d 0d 34 b2 13  |B    R0,[R4].4..|
00006bb0  20 43 4d 50 20 20 20 20  20 52 30 2c 20 23 30 0d  | CMP     R0, #0.|
00006bc0  34 bc 11 20 ec 51 20 20  20 52 31 30 2c 20 23 31  |4.. .Q   R10, #1|
00006bd0  0d 34 c6 14 20 4d 4f 56  4e 45 20 20 20 52 31 30  |.4.. MOVNE   R10|
00006be0  2c 20 23 30 0d 34 d0 12  20 ec 51 20 20 20 52 30  |, #0.4.. .Q   R0|
00006bf0  2c 20 23 32 35 35 0d 34  da 14 20 53 54 52 45 51  |, #255.4.. STREQ|
00006c00  42 20 20 52 30 2c 5b 52  34 5d 0d 34 e4 18 20 53  |B  R0,[R4].4.. S|
00006c10  54 52 45 51 42 20 20 52  30 2c 5b 52 34 2c 20 23  |TREQB  R0,[R4, #|
00006c20  31 5d 0d 34 ee 1c 20 41  44 44 20 20 20 20 20 52  |1].4.. ADD     R|
00006c30  32 2c 52 34 2c 20 23 79  5f 73 68 69 66 74 0d 34  |2,R4, #y_shift.4|
00006c40  f8 14 20 53 54 52 45 51  42 20 20 52 30 2c 5b 52  |.. STREQB  R0,[R|
00006c50  32 5d 0d 35 02 18 20 53  54 52 45 51 42 20 20 52  |2].5.. STREQB  R|
00006c60  30 2c 5b 52 32 2c 20 23  31 5d 0d 35 0c 06 20 3a  |0,[R2, #1].5.. :|
00006c70  0d 35 16 19 20 4c 44 4d  46 44 20 20 20 52 31 33  |.5.. LDMFD   R13|
00006c80  21 2c 7b 52 31 2d 52 36  7d 0d 35 20 14 20 43 4d  |!,{R1-R6}.5 . CM|
00006c90  50 20 20 20 20 20 52 31  30 2c 20 23 30 0d 35 2a  |P     R10, #0.5*|
00006ca0  17 20 42 4e 45 20 20 20  20 20 65 6e 64 5f 6d 6f  |. BNE     end_mo|
00006cb0  72 74 61 72 0d 35 34 1d  20 53 55 42 20 20 20 20  |rtar.54. SUB    |
00006cc0  20 52 32 2c 52 32 2c 52  34 2c 20 41 53 4c 20 23  | R2,R2,R4, ASL #|
00006cd0  31 0d 35 3e 1d 20 53 55  42 20 20 20 20 20 52 33  |1.5>. SUB     R3|
00006ce0  2c 52 33 2c 52 35 2c 20  41 53 4c 20 23 31 0d 35  |,R3,R5, ASL #1.5|
00006cf0  48 1a 20 4d 4f 56 20 20  20 20 20 52 31 2c 52 32  |H. MOV     R1,R2|
00006d00  2c 20 41 53 52 20 23 34  0d 35 52 1a 20 4d 4f 56  |, ASR #4.5R. MOV|
00006d10  20 20 20 20 20 52 32 2c  52 33 2c 20 41 53 52 20  |     R2,R3, ASR |
00006d20  23 34 0d 35 5c 18 20 52  53 42 20 20 20 20 20 52  |#4.5\. RSB     R|
00006d30  32 2c 52 32 2c 20 23 32  35 36 0d 35 66 13 20 4d  |2,R2, #256.5f. M|
00006d40  4f 56 20 20 20 20 20 52  39 2c 20 23 30 0d 35 70  |OV     R9, #0.5p|
00006d50  25 20 4c 44 52 20 20 20  20 20 52 31 30 2c 20 61  |% LDR     R10, a|
00006d60  64 72 5f 65 78 70 6c 6f  73 69 6f 6e 5f 73 70 72  |dr_explosion_spr|
00006d70  61 79 0d 35 7a 13 20 4d  4f 56 20 20 20 20 20 52  |ay.5z. MOV     R|
00006d80  30 2c 20 23 38 0d 35 84  14 20 4c 44 52 20 20 20  |0, #8.5.. LDR   |
00006d90  20 20 52 38 2c 20 72 6e  64 0d 35 8e 14 20 80 20  |  R8, rnd.5.. . |
00006da0  20 20 20 20 52 38 2c 52  38 2c 20 23 37 0d 35 98  |    R8,R8, #7.5.|
00006db0  17 20 4d 4f 56 20 20 20  20 20 52 36 2c 20 23 31  |. MOV     R6, #1|
00006dc0  36 3c 3c 38 0d 35 a2 14  20 4d 4f 56 20 20 20 20  |6<<8.5.. MOV    |
00006dd0  20 52 35 2c 20 23 33 32  0d 35 ac 12 20 2e 6d 6f  | R5, #32.5.. .mo|
00006de0  72 74 61 72 5f 6c 6f 6f  70 31 0d 35 b6 19 20 4c  |rtar_loop1.5.. L|
00006df0  44 52 42 20 20 20 20 52  33 2c 5b 52 31 30 5d 2c  |DRB    R3,[R10],|
00006e00  20 23 31 0d 35 c0 19 20  4c 44 52 42 20 20 20 20  | #1.5.. LDRB    |
00006e10  52 34 2c 5b 52 31 30 5d  2c 20 23 31 0d 35 ca 1b  |R4,[R10], #1.5..|
00006e20  20 4d 4f 56 20 20 20 20  20 52 33 2c 52 33 2c 20  | MOV     R3,R3, |
00006e30  4c 53 4c 20 23 32 34 0d  35 d4 1b 20 4d 4f 56 20  |LSL #24.5.. MOV |
00006e40  20 20 20 20 52 34 2c 52  34 2c 20 4c 53 4c 20 23  |    R4,R4, LSL #|
00006e50  32 34 0d 35 de 1b 20 4d  4f 56 20 20 20 20 20 52  |24.5.. MOV     R|
00006e60  33 2c 52 33 2c 20 41 53  52 20 23 32 34 0d 35 e8  |3,R3, ASR #24.5.|
00006e70  1b 20 4d 4f 56 20 20 20  20 20 52 34 2c 52 34 2c  |. MOV     R4,R4,|
00006e80  20 41 53 52 20 23 32 34  0d 35 f2 14 20 82 20 20  | ASR #24.5.. .  |
00006e90  20 20 20 52 33 2c 52 33  2c 20 52 38 0d 35 fc 14  |   R3,R3, R8.5..|
00006ea0  20 82 20 20 20 20 20 52  34 2c 52 34 2c 20 52 38  | .     R4,R4, R8|
00006eb0  0d 36 06 1d 20 41 44 44  20 20 20 20 20 52 36 2c  |.6.. ADD     R6,|
00006ec0  52 36 2c 52 33 2c 20 41  53 4c 20 23 38 0d 36 10  |R6,R3, ASL #8.6.|
00006ed0  1d 20 41 44 44 20 20 20  20 20 52 36 2c 52 36 2c  |. ADD     R6,R6,|
00006ee0  52 34 2c 20 41 53 4c 20  23 38 0d 36 1a 18 20 80  |R4, ASL #8.6.. .|
00006ef0  20 20 20 20 20 52 36 2c  52 36 2c 20 23 33 31 3c  |     R6,R6, #31<|
00006f00  3c 38 0d 36 24 15 20 42  4c 20 20 20 20 20 20 61  |<8.6$. BL      a|
00006f10  64 64 5f 63 65 6c 6c 0d  36 2e 14 20 43 4d 50 20  |dd_cell.6.. CMP |
00006f20  20 20 20 20 52 39 2c 20  23 31 36 0d 36 38 10 20  |    R9, #16.68. |
00006f30  ec 51 20 20 20 52 30 2c  20 23 39 0d 36 42 12 20  |.Q   R0, #9.6B. |
00006f40  4d 4f 56 47 45 20 20 20  52 35 2c 52 36 0d 36 4c  |MOVGE   R5,R6.6L|
00006f50  16 20 41 44 44 20 20 20  20 20 52 39 2c 52 39 2c  |. ADD     R9,R9,|
00006f60  20 23 31 0d 36 56 14 20  43 4d 50 20 20 20 20 20  | #1.6V. CMP     |
00006f70  52 39 2c 20 23 36 34 0d  36 60 19 20 42 4c 45 20  |R9, #64.6`. BLE |
00006f80  20 20 20 20 6d 6f 72 74  61 72 5f 6c 6f 6f 70 31  |    mortar_loop1|
00006f90  0d 36 6a 13 20 4d 4f 56  20 20 20 20 20 52 35 2c  |.6j. MOV     R5,|
00006fa0  20 23 31 0d 36 74 13 20  4d 4f 56 20 20 20 20 20  | #1.6t. MOV     |
00006fb0  52 30 2c 20 23 31 0d 36  7e 14 20 4d 56 4e 20 20  |R0, #1.6~. MVN  |
00006fc0  20 20 20 52 31 2c 20 23  31 34 0d 36 88 1c 20 4d  |   R1, #14.6.. M|
00006fd0  4f 56 20 20 20 20 20 52  32 2c 20 23 65 78 70 6c  |OV     R2, #expl|
00006fe0  6f 73 69 6f 6e 25 0d 36  92 13 20 4d 4f 56 20 20  |osion%.6.. MOV  |
00006ff0  20 20 20 52 33 2c 20 23  30 0d 36 9c 1c 20 53 57  |   R3, #0.6.. SW|
00007000  49 20 20 20 20 20 22 53  6f 75 6e 64 5f 43 6f 6e  |I     "Sound_Con|
00007010  74 72 6f 6c 22 0d 36 a6  13 20 4d 4f 56 20 20 20  |trol".6.. MOV   |
00007020  20 20 52 31 2c 20 23 30  0d 36 b0 10 20 2e 65 6e  |  R1, #0.6.. .en|
00007030  64 5f 6d 6f 72 74 61 72  0d 36 ba 06 20 3a 0d 36  |d_mortar.6.. :.6|
00007040  c4 19 20 4c 44 4d 46 44  20 20 20 52 31 33 21 2c  |.. LDMFD   R13!,|
00007050  7b 52 39 2c 50 43 7d 0d  36 ce 06 20 3a 0d 36 d8  |{R9,PC}.6.. :.6.|
00007060  19 20 2e 61 64 72 5f 65  78 70 6c 6f 73 69 6f 6e  |. .adr_explosion|
00007070  5f 73 70 72 61 79 0d 36  e2 1c 20 45 51 55 44 20  |_spray.6.. EQUD |
00007080  20 20 20 65 78 70 6c 6f  73 69 6f 6e 5f 73 70 72  |   explosion_spr|
00007090  61 79 0d 36 ec 06 20 3a  0d 36 f6 0a 20 2e 62 6f  |ay.6.. :.6.. .bo|
000070a0  6d 62 0d 37 00 1a 20 53  54 4d 46 44 20 20 20 52  |mb.7.. STMFD   R|
000070b0  31 33 21 2c 7b 52 39 2c  52 31 34 7d 0d 37 0a 06  |13!,{R9,R14}.7..|
000070c0  20 3a 0d 37 14 15 20 4d  4f 56 20 20 20 20 20 52  | :.7.. MOV     R|
000070d0  30 2c 20 23 32 35 36 0d  37 1e 16 20 52 53 42 20  |0, #256.7.. RSB |
000070e0  20 20 20 20 52 30 2c 52  30 2c 20 23 30 0d 37 28  |    R0,R0, #0.7(|
000070f0  12 20 43 4d 50 20 20 20  20 20 52 35 2c 52 30 0d  |. CMP     R5,R0.|
00007100  37 32 12 20 4d 4f 56 4c  54 20 20 20 52 35 2c 52  |72. MOVLT   R5,R|
00007110  30 0d 37 3c 1d 20 41 44  44 20 20 20 20 20 52 32  |0.7<. ADD     R2|
00007120  2c 52 32 2c 52 34 2c 20  41 53 52 20 23 32 0d 37  |,R2,R4, ASR #2.7|
00007130  46 1d 20 41 44 44 20 20  20 20 20 52 33 2c 52 33  |F. ADD     R3,R3|
00007140  2c 52 35 2c 20 41 53 52  20 23 32 0d 37 50 13 20  |,R5, ASR #2.7P. |
00007150  43 4d 50 20 20 20 20 20  52 34 2c 20 23 30 0d 37  |CMP     R4, #0.7|
00007160  5a 16 20 41 44 44 4c 54  20 20 20 52 34 2c 52 34  |Z. ADDLT   R4,R4|
00007170  2c 20 23 31 0d 37 64 16  20 53 55 42 47 54 20 20  |, #1.7d. SUBGT  |
00007180  20 52 34 2c 52 34 2c 20  23 31 0d 37 6e 13 20 4d  | R4,R4, #1.7n. M|
00007190  4f 56 20 20 20 20 20 52  31 30 2c 52 36 0d 37 78  |OV     R10,R6.7x|
000071a0  06 20 3a 0d 37 82 19 20  53 54 4d 46 44 20 20 20  |. :.7.. STMFD   |
000071b0  52 31 33 21 2c 7b 52 31  2d 52 36 7d 0d 37 8c 06  |R13!,{R1-R6}.7..|
000071c0  20 3a 0d 37 96 1a 20 4d  4f 56 20 20 20 20 20 52  | :.7.. MOV     R|
000071d0  32 2c 52 32 2c 20 41 53  52 20 23 34 0d 37 a0 1a  |2,R2, ASR #4.7..|
000071e0  20 4d 4f 56 20 20 20 20  20 52 33 2c 52 33 2c 20  | MOV     R3,R3, |
000071f0  41 53 52 20 23 34 0d 37  aa 18 20 52 53 42 20 20  |ASR #4.7.. RSB  |
00007200  20 20 20 52 33 2c 52 33  2c 20 23 32 35 36 0d 37  |   R3,R3, #256.7|
00007210  b4 1c 20 4c 44 52 20 20  20 20 20 52 34 2c 20 73  |.. LDR     R4, s|
00007220  63 72 65 65 6e 73 74 6f  72 65 0d 37 be 19 20 4d  |creenstore.7.. M|
00007230  4f 56 20 20 20 20 20 52  35 2c 20 23 79 5f 73 68  |OV     R5, #y_sh|
00007240  69 66 74 0d 37 c8 15 20  41 44 44 20 20 20 20 20  |ift.7.. ADD     |
00007250  52 34 2c 52 34 2c 52 32  0d 37 d2 18 20 4d 4c 41  |R4,R4,R2.7.. MLA|
00007260  20 20 20 20 20 52 34 2c  52 35 2c 52 33 2c 52 34  |     R4,R5,R3,R4|
00007270  0d 37 dc 1c 20 41 44 44  20 20 20 20 20 52 30 2c  |.7.. ADD     R0,|
00007280  52 34 2c 20 23 79 5f 73  68 69 66 74 0d 37 e6 14  |R4, #y_shift.7..|
00007290  20 4c 44 52 42 20 20 20  20 52 30 2c 5b 52 30 5d  | LDRB    R0,[R0]|
000072a0  0d 37 f0 13 20 43 4d 50  20 20 20 20 20 52 30 2c  |.7.. CMP     R0,|
000072b0  20 23 30 0d 37 fa 18 20  53 55 42 4e 45 20 20 20  | #0.7.. SUBNE   |
000072c0  52 31 30 2c 52 31 30 2c  20 23 31 0d 38 04 1b 20  |R10,R10, #1.8.. |
000072d0  4d 4f 56 20 20 20 20 20  52 30 2c 20 23 25 30 30  |MOV     R0, #%00|
000072e0  30 31 30 31 31 31 0d 38  0e 1c 20 53 55 42 20 20  |010111.8.. SUB  |
000072f0  20 20 20 52 34 2c 52 34  2c 20 23 79 5f 73 68 69  |   R4,R4, #y_shi|
00007300  66 74 0d 38 18 18 20 53  54 52 42 20 20 20 20 52  |ft.8.. STRB    R|
00007310  30 2c 5b 52 34 2c 20 23  31 5d 0d 38 22 1c 20 41  |0,[R4, #1].8". A|
00007320  44 44 20 20 20 20 20 52  34 2c 52 34 2c 20 23 79  |DD     R4,R4, #y|
00007330  5f 73 68 69 66 74 0d 38  2c 14 20 53 54 52 42 20  |_shift.8,. STRB |
00007340  20 20 20 52 30 2c 5b 52  34 5d 0d 38 36 18 20 53  |   R0,[R4].86. S|
00007350  54 52 42 20 20 20 20 52  30 2c 5b 52 34 2c 20 23  |TRB    R0,[R4, #|
00007360  31 5d 0d 38 40 18 20 53  54 52 42 20 20 20 20 52  |1].8@. STRB    R|
00007370  30 2c 5b 52 34 2c 20 23  32 5d 0d 38 4a 06 20 3a  |0,[R4, #2].8J. :|
00007380  0d 38 54 19 20 4c 44 4d  46 44 20 20 20 52 31 33  |.8T. LDMFD   R13|
00007390  21 2c 7b 52 31 2d 52 36  7d 0d 38 5e 20 20 43 4d  |!,{R1-R6}.8^  CM|
000073a0  50 20 20 20 20 20 52 31  30 2c 20 23 62 6f 6d 62  |P     R10, #bomb|
000073b0  5f 70 61 75 73 65 25 2d  31 0d 38 68 16 20 41 44  |_pause%-1.8h. AD|
000073c0  44 45 51 20 20 20 52 33  2c 52 33 2c 20 23 34 0d  |DEQ   R3,R3, #4.|
000073d0  38 72 13 20 43 4d 50 20  20 20 20 20 52 31 30 2c  |8r. CMP     R10,|
000073e0  52 36 0d 38 7c 15 20 53  55 42 4c 54 20 20 20 52  |R6.8|. SUBLT   R|
000073f0  32 2c 52 32 2c 52 34 0d  38 86 1d 20 53 55 42 4c  |2,R2,R4.8.. SUBL|
00007400  54 20 20 20 52 33 2c 52  33 2c 52 35 2c 20 41 53  |T   R3,R3,R5, AS|
00007410  52 20 23 32 0d 38 90 13  20 4d 4f 56 4c 54 20 20  |R #2.8.. MOVLT  |
00007420  20 52 34 2c 20 23 30 0d  38 9a 13 20 4d 4f 56 4c  | R4, #0.8.. MOVL|
00007430  54 20 20 20 52 35 2c 20  23 30 0d 38 a4 16 20 53  |T   R5, #0.8.. S|
00007440  55 42 45 51 20 20 20 52  35 2c 52 35 2c 20 23 34  |UBEQ   R5,R5, #4|
00007450  0d 38 ae 13 20 4d 4f 56  47 54 20 20 20 52 35 2c  |.8.. MOVGT   R5,|
00007460  20 23 30 0d 38 b8 13 20  4d 4f 56 20 20 20 20 20  | #0.8.. MOV     |
00007470  52 36 2c 52 31 30 0d 38  c2 13 20 43 4d 50 20 20  |R6,R10.8.. CMP  |
00007480  20 20 20 52 36 2c 20 23  30 0d 38 cc 15 20 42 4e  |   R6, #0.8.. BN|
00007490  45 20 20 20 20 20 65 6e  64 5f 62 6f 6d 62 0d 38  |E     end_bomb.8|
000074a0  d6 1a 20 4d 4f 56 20 20  20 20 20 52 31 2c 52 32  |.. MOV     R1,R2|
000074b0  2c 20 41 53 52 20 23 34  0d 38 e0 1a 20 4d 4f 56  |, ASR #4.8.. MOV|
000074c0  20 20 20 20 20 52 32 2c  52 33 2c 20 41 53 52 20  |     R2,R3, ASR |
000074d0  23 34 0d 38 ea 16 20 41  44 44 20 20 20 20 20 52  |#4.8.. ADD     R|
000074e0  32 2c 52 32 2c 20 23 32  0d 38 f4 18 20 52 53 42  |2,R2, #2.8.. RSB|
000074f0  20 20 20 20 20 52 32 2c  52 32 2c 20 23 32 35 36  |     R2,R2, #256|
00007500  0d 38 fe 13 20 4d 4f 56  20 20 20 20 20 52 39 2c  |.8.. MOV     R9,|
00007510  20 23 30 0d 39 08 13 20  4d 4f 56 20 20 20 20 20  | #0.9.. MOV     |
00007520  52 30 2c 20 23 38 0d 39  12 14 20 4c 44 52 20 20  |R0, #8.9.. LDR  |
00007530  20 20 20 52 38 2c 20 72  6e 64 0d 39 1c 14 20 80  |   R8, rnd.9.. .|
00007540  20 20 20 20 20 52 38 2c  52 38 2c 20 23 37 0d 39  |     R8,R8, #7.9|
00007550  26 17 20 4d 4f 56 20 20  20 20 20 52 36 2c 20 23  |&. MOV     R6, #|
00007560  31 36 3c 3c 38 0d 39 30  14 20 4d 4f 56 20 20 20  |16<<8.90. MOV   |
00007570  20 20 52 35 2c 20 23 33  32 0d 39 3a 21 20 41 44  |  R5, #32.9:! AD|
00007580  52 20 20 20 20 20 52 31  30 2c 20 65 78 70 6c 6f  |R     R10, explo|
00007590  73 69 6f 6e 5f 73 70 72  61 79 0d 39 44 10 20 2e  |sion_spray.9D. .|
000075a0  62 6f 6d 62 5f 6c 6f 6f  70 31 0d 39 4e 19 20 4c  |bomb_loop1.9N. L|
000075b0  44 52 42 20 20 20 20 52  33 2c 5b 52 31 30 5d 2c  |DRB    R3,[R10],|
000075c0  20 23 31 0d 39 58 19 20  4c 44 52 42 20 20 20 20  | #1.9X. LDRB    |
000075d0  52 34 2c 5b 52 31 30 5d  2c 20 23 31 0d 39 62 1b  |R4,[R10], #1.9b.|
000075e0  20 4d 4f 56 20 20 20 20  20 52 33 2c 52 33 2c 20  | MOV     R3,R3, |
000075f0  4c 53 4c 20 23 32 34 0d  39 6c 1b 20 4d 4f 56 20  |LSL #24.9l. MOV |
00007600  20 20 20 20 52 34 2c 52  34 2c 20 4c 53 4c 20 23  |    R4,R4, LSL #|
00007610  32 34 0d 39 76 1b 20 4d  4f 56 20 20 20 20 20 52  |24.9v. MOV     R|
00007620  33 2c 52 33 2c 20 41 53  52 20 23 32 34 0d 39 80  |3,R3, ASR #24.9.|
00007630  1b 20 4d 4f 56 20 20 20  20 20 52 34 2c 52 34 2c  |. MOV     R4,R4,|
00007640  20 41 53 52 20 23 32 34  0d 39 8a 14 20 82 20 20  | ASR #24.9.. .  |
00007650  20 20 20 52 33 2c 52 33  2c 20 52 38 0d 39 94 14  |   R3,R3, R8.9..|
00007660  20 82 20 20 20 20 20 52  34 2c 52 34 2c 20 52 38  | .     R4,R4, R8|
00007670  0d 39 9e 1d 20 41 44 44  20 20 20 20 20 52 36 2c  |.9.. ADD     R6,|
00007680  52 36 2c 52 33 2c 20 41  53 4c 20 23 38 0d 39 a8  |R6,R3, ASL #8.9.|
00007690  1d 20 41 44 44 20 20 20  20 20 52 36 2c 52 36 2c  |. ADD     R6,R6,|
000076a0  52 34 2c 20 41 53 4c 20  23 38 0d 39 b2 18 20 80  |R4, ASL #8.9.. .|
000076b0  20 20 20 20 20 52 36 2c  52 36 2c 20 23 33 31 3c  |     R6,R6, #31<|
000076c0  3c 38 0d 39 bc 1d 20 41  44 44 20 20 20 20 20 52  |<8.9.. ADD     R|
000076d0  33 2c 52 33 2c 52 33 2c  20 41 53 52 20 23 31 0d  |3,R3,R3, ASR #1.|
000076e0  39 c6 1d 20 41 44 44 20  20 20 20 20 52 34 2c 52  |9.. ADD     R4,R|
000076f0  34 2c 52 34 2c 20 41 53  52 20 23 31 0d 39 d0 15  |4,R4, ASR #1.9..|
00007700  20 42 4c 20 20 20 20 20  20 61 64 64 5f 63 65 6c  | BL      add_cel|
00007710  6c 0d 39 da 14 20 43 4d  50 20 20 20 20 20 52 39  |l.9.. CMP     R9|
00007720  2c 20 23 32 34 0d 39 e4  10 20 ec 51 20 20 20 52  |, #24.9.. .Q   R|
00007730  30 2c 20 23 39 0d 39 ee  12 20 4d 4f 56 47 45 20  |0, #9.9.. MOVGE |
00007740  20 20 52 35 2c 52 36 0d  39 f8 16 20 41 44 44 20  |  R5,R6.9.. ADD |
00007750  20 20 20 20 52 39 2c 52  39 2c 20 23 31 0d 3a 02  |    R9,R9, #1.:.|
00007760  14 20 43 4d 50 20 20 20  20 20 52 39 2c 20 23 33  |. CMP     R9, #3|
00007770  32 0d 3a 0c 17 20 42 4c  45 20 20 20 20 20 62 6f  |2.:.. BLE     bo|
00007780  6d 62 5f 6c 6f 6f 70 31  0d 3a 16 13 20 4d 4f 56  |mb_loop1.:.. MOV|
00007790  20 20 20 20 20 52 35 2c  20 23 31 0d 3a 20 13 20  |     R5, #1.: . |
000077a0  4d 4f 56 20 20 20 20 20  52 30 2c 20 23 31 0d 3a  |MOV     R0, #1.:|
000077b0  2a 14 20 4d 56 4e 20 20  20 20 20 52 31 2c 20 23  |*. MVN     R1, #|
000077c0  31 34 0d 3a 34 1c 20 4d  4f 56 20 20 20 20 20 52  |14.:4. MOV     R|
000077d0  32 2c 20 23 65 78 70 6c  6f 73 69 6f 6e 25 0d 3a  |2, #explosion%.:|
000077e0  3e 13 20 4d 4f 56 20 20  20 20 20 52 33 2c 20 23  |>. MOV     R3, #|
000077f0  30 0d 3a 48 1c 20 53 57  49 20 20 20 20 20 22 53  |0.:H. SWI     "S|
00007800  6f 75 6e 64 5f 43 6f 6e  74 72 6f 6c 22 0d 3a 52  |ound_Control".:R|
00007810  13 20 4d 4f 56 20 20 20  20 20 52 31 2c 20 23 30  |. MOV     R1, #0|
00007820  0d 3a 5c 13 20 4d 4f 56  20 20 20 20 20 52 35 2c  |.:\. MOV     R5,|
00007830  20 23 30 0d 3a 66 0e 20  2e 65 6e 64 5f 62 6f 6d  | #0.:f. .end_bom|
00007840  62 0d 3a 70 06 20 3a 0d  3a 7a 19 20 4c 44 4d 46  |b.:p. :.:z. LDMF|
00007850  44 20 20 20 52 31 33 21  2c 7b 52 39 2c 50 43 7d  |D   R13!,{R9,PC}|
00007860  0d 3a 84 06 20 3a 0d 3a  8e 16 20 2e 61 64 72 5f  |.:.. :.:.. .adr_|
00007870  73 63 72 65 65 6e 73 74  6f 72 65 32 0d 3a 98 06  |screenstore2.:..|
00007880  20 3a 0d 3a a2 0c 20 2e  68 6f 6d 69 6e 67 0d 3a  | :.:.. .homing.:|
00007890  ac 1a 20 53 54 4d 46 44  20 20 20 52 31 33 21 2c  |.. STMFD   R13!,|
000078a0  7b 52 39 2c 52 31 34 7d  0d 3a b6 06 20 3a 0d 3a  |{R9,R14}.:.. :.:|
000078b0  c0 1a 3b 4d 4f 56 20 20  20 20 20 52 39 2c 52 36  |..;MOV     R9,R6|
000078c0  2c 20 4c 53 52 20 23 38  0d 3a ca 16 3b 80 20 20  |, LSR #8.:..;.  |
000078d0  20 20 20 52 39 2c 52 39  2c 20 23 32 35 35 0d 3a  |   R9,R9, #255.:|
000078e0  d4 16 3b 53 55 42 20 20  20 20 20 52 39 2c 52 39  |..;SUB     R9,R9|
000078f0  2c 20 23 31 0d 3a de 1b  3b 42 49 43 20 20 20 20  |, #1.:..;BIC    |
00007900  20 52 36 2c 52 36 2c 20  23 32 35 35 3c 3c 38 0d  | R6,R6, #255<<8.|
00007910  3a e8 1c 3b 84 52 20 20  20 20 20 52 36 2c 52 36  |:..;.R     R6,R6|
00007920  2c 52 39 2c 20 4c 53 4c  20 23 38 0d 3a f2 13 3b  |,R9, LSL #8.:..;|
00007930  43 4d 50 20 20 20 20 20  52 39 2c 20 23 30 0d 3a  |CMP     R9, #0.:|
00007940  fc 10 3b ec 51 20 20 20  52 31 2c 20 23 30 0d 3b  |..;.Q   R1, #0.;|
00007950  06 06 20 3a 0d 3b 10 13  20 54 53 54 20 20 20 20  |.. :.;.. TST    |
00007960  20 52 36 2c 20 23 31 0d  3b 1a 16 20 4c 44 52 45  | R6, #1.;.. LDRE|
00007970  51 20 20 20 52 31 30 2c  20 70 31 5f 78 0d 3b 24  |Q   R10, p1_x.;$|
00007980  16 20 4c 44 52 45 51 20  20 20 52 31 31 2c 20 70  |. LDREQ   R11, p|
00007990  31 5f 79 0d 3b 2e 16 20  4c 44 52 4e 45 20 20 20  |1_y.;.. LDRNE   |
000079a0  52 31 30 2c 20 70 32 5f  78 0d 3b 38 16 20 4c 44  |R10, p2_x.;8. LD|
000079b0  52 4e 45 20 20 20 52 31  31 2c 20 70 32 5f 79 0d  |RNE   R11, p2_y.|
000079c0  3b 42 1e 20 41 44 44 20  20 20 20 20 52 31 30 2c  |;B. ADD     R10,|
000079d0  52 31 30 2c 20 23 78 65  78 74 25 2f 32 0d 3b 4c  |R10, #xext%/2.;L|
000079e0  1e 20 41 44 44 20 20 20  20 20 52 31 31 2c 52 31  |. ADD     R11,R1|
000079f0  31 2c 20 23 79 65 78 74  25 2f 32 0d 3b 56 1b 20  |1, #yext%/2.;V. |
00007a00  43 4d 50 20 20 20 20 20  52 32 2c 52 31 30 2c 20  |CMP     R2,R10, |
00007a10  41 53 4c 20 23 34 0d 3b  60 16 20 53 55 42 47 54  |ASL #4.;`. SUBGT|
00007a20  20 20 20 52 34 2c 52 34  2c 20 23 31 0d 3b 6a 16  |   R4,R4, #1.;j.|
00007a30  20 41 44 44 4c 54 20 20  20 52 34 2c 52 34 2c 20  | ADDLT   R4,R4, |
00007a40  23 31 0d 3b 74 1b 20 43  4d 50 20 20 20 20 20 52  |#1.;t. CMP     R|
00007a50  33 2c 52 31 31 2c 20 41  53 4c 20 23 34 0d 3b 7e  |3,R11, ASL #4.;~|
00007a60  16 20 53 55 42 47 54 20  20 20 52 35 2c 52 35 2c  |. SUBGT   R5,R5,|
00007a70  20 23 31 0d 3b 88 16 20  41 44 44 4c 54 20 20 20  | #1.;.. ADDLT   |
00007a80  52 35 2c 52 35 2c 20 23  31 0d 3b 92 23 20 4d 4f  |R5,R5, #1.;.# MO|
00007a90  56 20 20 20 20 20 52 30  2c 20 23 6d 61 78 5f 68  |V     R0, #max_h|
00007aa0  6f 6d 69 6e 67 5f 73 70  65 65 64 25 0d 3b 9c 12  |oming_speed%.;..|
00007ab0  20 43 4d 50 20 20 20 20  20 52 34 2c 52 30 0d 3b  | CMP     R4,R0.;|
00007ac0  a6 16 20 53 55 42 47 54  20 20 20 52 34 2c 52 30  |.. SUBGT   R4,R0|
00007ad0  2c 20 23 31 0d 3b b0 16  20 52 53 42 20 20 20 20  |, #1.;.. RSB    |
00007ae0  20 52 30 2c 52 30 2c 20  23 30 0d 3b ba 12 20 43  | R0,R0, #0.;.. C|
00007af0  4d 50 20 20 20 20 20 52  34 2c 52 30 0d 3b c4 16  |MP     R4,R0.;..|
00007b00  20 41 44 44 4c 54 20 20  20 52 34 2c 52 30 2c 20  | ADDLT   R4,R0, |
00007b10  23 31 0d 3b ce 23 20 4d  4f 56 20 20 20 20 20 52  |#1.;.# MOV     R|
00007b20  30 2c 20 23 6d 61 78 5f  68 6f 6d 69 6e 67 5f 73  |0, #max_homing_s|
00007b30  70 65 65 64 25 0d 3b d8  12 20 43 4d 50 20 20 20  |peed%.;.. CMP   |
00007b40  20 20 52 35 2c 52 30 0d  3b e2 16 20 53 55 42 47  |  R5,R0.;.. SUBG|
00007b50  54 20 20 20 52 35 2c 52  30 2c 20 23 31 0d 3b ec  |T   R5,R0, #1.;.|
00007b60  16 20 52 53 42 20 20 20  20 20 52 30 2c 52 30 2c  |. RSB     R0,R0,|
00007b70  20 23 30 0d 3b f6 12 20  43 4d 50 20 20 20 20 20  | #0.;.. CMP     |
00007b80  52 35 2c 52 30 0d 3c 00  16 20 41 44 44 4c 54 20  |R5,R0.<.. ADDLT |
00007b90  20 20 52 35 2c 52 30 2c  20 23 31 0d 3c 0a 15 20  |  R5,R0, #1.<.. |
00007ba0  41 44 44 20 20 20 20 20  52 32 2c 52 32 2c 52 34  |ADD     R2,R2,R4|
00007bb0  0d 3c 14 15 20 41 44 44  20 20 20 20 20 52 33 2c  |.<.. ADD     R3,|
00007bc0  52 33 2c 52 35 0d 3c 1e  13 20 4d 4f 56 20 20 20  |R3,R5.<.. MOV   |
00007bd0  20 20 52 37 2c 20 23 30  0d 3c 28 14 20 43 4d 4e  |  R7, #0.<(. CMN|
00007be0  20 20 20 20 20 52 34 2c  20 23 31 30 0d 3c 32 16  |     R4, #10.<2.|
00007bf0  20 41 44 44 4c 54 20 20  20 52 37 2c 52 37 2c 20  | ADDLT   R7,R7, |
00007c00  23 32 0d 3c 3c 14 20 43  4d 50 20 20 20 20 20 52  |#2.<<. CMP     R|
00007c10  34 2c 20 23 31 30 0d 3c  46 16 20 41 44 44 47 54  |4, #10.<F. ADDGT|
00007c20  20 20 20 52 37 2c 52 37  2c 20 23 34 0d 3c 50 14  |   R7,R7, #4.<P.|
00007c30  20 43 4d 4e 20 20 20 20  20 52 35 2c 20 23 31 30  | CMN     R5, #10|
00007c40  0d 3c 5a 17 20 41 44 44  4c 54 20 20 20 52 37 2c  |.<Z. ADDLT   R7,|
00007c50  52 37 2c 20 23 31 32 0d  3c 64 14 20 43 4d 50 20  |R7, #12.<d. CMP |
00007c60  20 20 20 20 52 35 2c 20  23 31 30 0d 3c 6e 16 20  |    R5, #10.<n. |
00007c70  41 44 44 47 54 20 20 20  52 37 2c 52 37 2c 20 23  |ADDGT   R7,R7, #|
00007c80  36 0d 3c 78 06 20 3a 0d  3c 82 16 20 41 44 44 20  |6.<x. :.<.. ADD |
00007c90  20 20 20 20 52 37 2c 52  37 2c 20 23 33 0d 3c 8c  |    R7,R7, #3.<.|
00007ca0  17 20 80 20 20 20 20 20  52 30 2c 52 36 2c 20 23  |. .     R0,R6, #|
00007cb0  25 31 31 30 0d 3c 96 1a  20 4d 4f 56 20 20 20 20  |%110.<.. MOV    |
00007cc0  20 52 30 2c 52 30 2c 20  41 53 52 20 23 31 0d 3c  | R0,R0, ASR #1.<|
00007cd0  a0 16 20 41 44 44 20 20  20 20 20 52 30 2c 52 30  |.. ADD     R0,R0|
00007ce0  2c 20 23 31 0d 3c aa 16  20 80 20 20 20 20 20 52  |, #1.<.. .     R|
00007cf0  30 2c 52 30 2c 20 23 25  31 31 0d 3c b4 14 20 43  |0,R0, #%11.<.. C|
00007d00  4d 50 20 20 20 20 20 52  30 2c 20 23 25 31 0d 3c  |MP     R0, #%1.<|
00007d10  be 16 20 41 44 44 47 54  20 20 20 52 37 2c 52 37  |.. ADDGT   R7,R7|
00007d20  2c 20 23 31 0d 3c c8 19  20 42 49 43 20 20 20 20  |, #1.<.. BIC    |
00007d30  20 52 36 2c 52 36 2c 20  23 25 31 31 30 0d 3c d2  | R6,R6, #%110.<.|
00007d40  1c 20 84 52 20 20 20 20  20 52 36 2c 52 36 2c 52  |. .R     R6,R6,R|
00007d50  30 2c 20 41 53 4c 20 23  31 0d 3c dc 13 20 43 4d  |0, ASL #1.<.. CM|
00007d60  50 20 20 20 20 20 52 37  2c 20 23 35 0d 3c e6 14  |P     R7, #5.<..|
00007d70  20 4d 4f 56 4c 54 20 20  20 52 37 2c 20 23 32 31  | MOVLT   R7, #21|
00007d80  0d 3c f0 06 20 3a 0d 3c  fa 19 20 53 54 4d 46 44  |.<.. :.<.. STMFD|
00007d90  20 20 20 52 31 33 21 2c  7b 52 31 2d 52 36 7d 0d  |   R13!,{R1-R6}.|
00007da0  3d 04 06 20 3a 0d 3d 0e  18 20 42 4c 20 20 20 20  |=.. :.=.. BL    |
00007db0  20 20 63 68 65 63 6b 5f  64 65 61 74 68 0d 3d 18  |  check_death.=.|
00007dc0  06 20 3a 0d 3d 22 1a 20  4d 4f 56 20 20 20 20 20  |. :.=". MOV     |
00007dd0  52 32 2c 52 32 2c 20 41  53 52 20 23 34 0d 3d 2c  |R2,R2, ASR #4.=,|
00007de0  1a 20 4d 4f 56 20 20 20  20 20 52 33 2c 52 33 2c  |. MOV     R3,R3,|
00007df0  20 41 53 52 20 23 34 0d  3d 36 18 20 52 53 42 20  | ASR #4.=6. RSB |
00007e00  20 20 20 20 52 33 2c 52  33 2c 20 23 32 35 36 0d  |    R3,R3, #256.|
00007e10  3d 40 20 20 4c 44 52 20  20 20 20 20 52 34 2c 20  |=@  LDR     R4, |
00007e20  61 64 72 5f 73 63 72 65  65 6e 73 74 6f 72 65 0d  |adr_screenstore.|
00007e30  3d 4a 14 20 4c 44 52 20  20 20 20 20 52 34 2c 5b  |=J. LDR     R4,[|
00007e40  52 34 5d 0d 3d 54 19 20  4d 4f 56 20 20 20 20 20  |R4].=T. MOV     |
00007e50  52 35 2c 20 23 79 5f 73  68 69 66 74 0d 3d 5e 15  |R5, #y_shift.=^.|
00007e60  20 41 44 44 20 20 20 20  20 52 34 2c 52 34 2c 52  | ADD     R4,R4,R|
00007e70  32 0d 3d 68 18 20 4d 4c  41 20 20 20 20 20 52 34  |2.=h. MLA     R4|
00007e80  2c 52 35 2c 52 33 2c 52  34 0d 3d 72 14 20 4c 44  |,R5,R3,R4.=r. LD|
00007e90  52 42 20 20 20 20 52 30  2c 5b 52 34 5d 0d 3d 7c  |RB    R0,[R4].=||
00007ea0  13 20 43 4d 50 20 20 20  20 20 52 30 2c 20 23 30  |. CMP     R0, #0|
00007eb0  0d 3d 86 11 20 ec 51 20  20 20 52 31 30 2c 20 23  |.=.. .Q   R10, #|
00007ec0  31 0d 3d 90 14 20 4d 4f  56 4e 45 20 20 20 52 31  |1.=.. MOVNE   R1|
00007ed0  30 2c 20 23 30 0d 3d 9a  16 20 42 4e 45 20 20 20  |0, #0.=.. BNE   |
00007ee0  20 20 6e 6f 5f 68 6f 6d  69 6e 67 0d 3d a4 18 20  |  no_homing.=.. |
00007ef0  52 53 42 20 20 20 20 20  52 33 2c 52 33 2c 20 23  |RSB     R3,R3, #|
00007f00  32 35 36 0d 3d ae 12 20  4d 4f 56 20 20 20 20 20  |256.=.. MOV     |
00007f10  52 30 2c 52 37 0d 3d b8  16 20 53 55 42 20 20 20  |R0,R7.=.. SUB   |
00007f20  20 20 52 31 2c 52 32 2c  20 23 32 0d 3d c2 16 20  |  R1,R2, #2.=.. |
00007f30  53 55 42 20 20 20 20 20  52 32 2c 52 33 2c 20 23  |SUB     R2,R3, #|
00007f40  32 0d 3d cc 1d 20 42 4c  20 20 20 20 20 20 70 6c  |2.=.. BL      pl|
00007f50  6f 74 5f 73 70 72 69 74  65 5f 30 38 30 34 0d 3d  |ot_sprite_0804.=|
00007f60  d6 1d 3b 4c 44 52 20 20  20 20 20 52 30 2c 20 61  |..;LDR     R0, a|
00007f70  64 72 5f 67 75 6e 5f 66  61 64 65 0d 3d e0 1a 3b  |dr_gun_fade.=..;|
00007f80  4d 4f 56 20 20 20 20 20  52 39 2c 52 36 2c 20 4c  |MOV     R9,R6, L|
00007f90  53 52 20 23 38 0d 3d ea  16 3b 80 20 20 20 20 20  |SR #8.=..;.     |
00007fa0  52 39 2c 52 39 2c 20 23  32 35 35 0d 3d f4 15 3b  |R9,R9, #255.=..;|
00007fb0  43 4d 50 20 20 20 20 20  52 39 2c 20 23 32 35 35  |CMP     R9, #255|
00007fc0  0d 3d fe 15 3b 4d 4f 56  47 54 20 20 20 52 39 2c  |.=..;MOVGT   R9,|
00007fd0  20 23 32 35 35 0d 3e 08  17 3b 4c 44 52 42 20 20  | #255.>..;LDRB  |
00007fe0  20 20 52 30 2c 5b 52 30  2c 52 39 5d 0d 3e 12 14  |  R0,[R0,R9].>..|
00007ff0  3b 53 54 52 42 20 20 20  20 52 30 2c 5b 52 34 5d  |;STRB    R0,[R4]|
00008000  0d 3e 1c 0f 20 2e 6e 6f  5f 68 6f 6d 69 6e 67 0d  |.>.. .no_homing.|
00008010  3e 26 06 20 3a 0d 3e 30  19 20 4c 44 4d 46 44 20  |>&. :.>0. LDMFD |
00008020  20 20 52 31 33 21 2c 7b  52 31 2d 52 36 7d 0d 3e  |  R13!,{R1-R6}.>|
00008030  3a 14 20 43 4d 50 20 20  20 20 20 52 31 30 2c 20  |:. CMP     R10, |
00008040  23 30 0d 3e 44 17 20 42  4e 45 20 20 20 20 20 65  |#0.>D. BNE     e|
00008050  6e 64 5f 68 6f 6d 69 6e  67 0d 3e 4e 14 20 4d 4f  |nd_homing.>N. MO|
00008060  56 20 20 20 20 20 52 30  2c 20 23 31 31 0d 3e 58  |V     R0, #11.>X|
00008070  1a 20 4d 4f 56 20 20 20  20 20 52 31 2c 52 32 2c  |. MOV     R1,R2,|
00008080  20 41 53 52 20 23 34 0d  3e 62 1a 20 4d 4f 56 20  | ASR #4.>b. MOV |
00008090  20 20 20 20 52 32 2c 52  33 2c 20 41 53 52 20 23  |    R2,R3, ASR #|
000080a0  34 0d 3e 6c 18 20 52 53  42 20 20 20 20 20 52 32  |4.>l. RSB     R2|
000080b0  2c 52 32 2c 20 23 32 35  36 0d 3e 76 16 20 52 53  |,R2, #256.>v. RS|
000080c0  42 20 20 20 20 20 52 33  2c 52 34 2c 20 23 30 0d  |B     R3,R4, #0.|
000080d0  3e 80 16 20 52 53 42 20  20 20 20 20 52 34 2c 52  |>.. RSB     R4,R|
000080e0  35 2c 20 23 30 0d 3e 8a  1a 20 4d 4f 56 20 20 20  |5, #0.>.. MOV   |
000080f0  20 20 52 33 2c 52 33 2c  20 41 53 52 20 23 32 0d  |  R3,R3, ASR #2.|
00008100  3e 94 1a 20 4d 4f 56 20  20 20 20 20 52 34 2c 52  |>.. MOV     R4,R|
00008110  34 2c 20 41 53 52 20 23  32 0d 3e 9e 14 20 80 20  |4, ASR #2.>.. . |
00008120  20 20 20 20 52 35 2c 52  36 2c 20 23 31 0d 3e a8  |    R5,R6, #1.>.|
00008130  15 20 42 4c 20 20 20 20  20 20 61 64 64 5f 63 65  |. BL      add_ce|
00008140  6c 6c 0d 3e b2 13 20 4d  4f 56 20 20 20 20 20 52  |ll.>.. MOV     R|
00008150  35 2c 20 23 31 0d 3e bc  13 20 4d 4f 56 20 20 20  |5, #1.>.. MOV   |
00008160  20 20 52 30 2c 20 23 31  0d 3e c6 14 20 4d 56 4e  |  R0, #1.>.. MVN|
00008170  20 20 20 20 20 52 31 2c  20 23 31 30 0d 3e d0 1c  |     R1, #10.>..|
00008180  20 4d 4f 56 20 20 20 20  20 52 32 2c 20 23 65 78  | MOV     R2, #ex|
00008190  70 6c 6f 73 69 6f 6e 25  0d 3e da 13 20 4d 4f 56  |plosion%.>.. MOV|
000081a0  20 20 20 20 20 52 33 2c  20 23 30 0d 3e e4 1c 20  |     R3, #0.>.. |
000081b0  53 57 49 20 20 20 20 20  22 53 6f 75 6e 64 5f 43  |SWI     "Sound_C|
000081c0  6f 6e 74 72 6f 6c 22 0d  3e ee 13 20 4d 4f 56 20  |ontrol".>.. MOV |
000081d0  20 20 20 20 52 31 2c 20  23 30 0d 3e f8 10 20 2e  |    R1, #0.>.. .|
000081e0  65 6e 64 5f 68 6f 6d 69  6e 67 0d 3f 02 19 20 4c  |end_homing.?.. L|
000081f0  44 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 39 2c  |DMFD   R13!,{R9,|
00008200  50 43 7d 0d 3f 0c 06 20  3a 0d 3f 16 0d 20 2e 73  |PC}.?.. :.?.. .s|
00008210  65 65 6b 69 6e 67 0d 3f  20 1a 20 53 54 4d 46 44  |eeking.? . STMFD|
00008220  20 20 20 52 31 33 21 2c  7b 52 39 2c 52 31 34 7d  |   R13!,{R9,R14}|
00008230  0d 3f 2a 06 20 3a 0d 3f  34 13 20 54 53 54 20 20  |.?*. :.?4. TST  |
00008240  20 20 20 52 36 2c 20 23  31 0d 3f 3e 16 20 4c 44  |   R6, #1.?>. LD|
00008250  52 45 51 20 20 20 52 31  30 2c 20 70 31 5f 78 0d  |REQ   R10, p1_x.|
00008260  3f 48 16 20 4c 44 52 45  51 20 20 20 52 31 31 2c  |?H. LDREQ   R11,|
00008270  20 70 31 5f 79 0d 3f 52  16 20 4c 44 52 4e 45 20  | p1_y.?R. LDRNE |
00008280  20 20 52 31 30 2c 20 70  32 5f 78 0d 3f 5c 16 20  |  R10, p2_x.?\. |
00008290  4c 44 52 4e 45 20 20 20  52 31 31 2c 20 70 32 5f  |LDRNE   R11, p2_|
000082a0  79 0d 3f 66 1e 20 41 44  44 20 20 20 20 20 52 31  |y.?f. ADD     R1|
000082b0  30 2c 52 31 30 2c 20 23  78 65 78 74 25 2f 32 0d  |0,R10, #xext%/2.|
000082c0  3f 70 1e 20 41 44 44 20  20 20 20 20 52 31 31 2c  |?p. ADD     R11,|
000082d0  52 31 31 2c 20 23 79 65  78 74 25 2f 32 0d 3f 7a  |R11, #yext%/2.?z|
000082e0  1b 20 43 4d 50 20 20 20  20 20 52 32 2c 52 31 30  |. CMP     R2,R10|
000082f0  2c 20 41 53 4c 20 23 34  0d 3f 84 16 20 53 55 42  |, ASL #4.?.. SUB|
00008300  47 54 20 20 20 52 34 2c  52 34 2c 20 23 31 0d 3f  |GT   R4,R4, #1.?|
00008310  8e 16 20 41 44 44 4c 54  20 20 20 52 34 2c 52 34  |.. ADDLT   R4,R4|
00008320  2c 20 23 31 0d 3f 98 1b  20 43 4d 50 20 20 20 20  |, #1.?.. CMP    |
00008330  20 52 33 2c 52 31 31 2c  20 41 53 4c 20 23 34 0d  | R3,R11, ASL #4.|
00008340  3f a2 16 20 53 55 42 47  54 20 20 20 52 35 2c 52  |?.. SUBGT   R5,R|
00008350  35 2c 20 23 31 0d 3f ac  16 20 41 44 44 4c 54 20  |5, #1.?.. ADDLT |
00008360  20 20 52 35 2c 52 35 2c  20 23 31 0d 3f b6 14 20  |  R5,R5, #1.?.. |
00008370  4d 4f 56 20 20 20 20 20  52 30 2c 20 23 31 36 0d  |MOV     R0, #16.|
00008380  3f c0 12 20 43 4d 50 20  20 20 20 20 52 34 2c 52  |?.. CMP     R4,R|
00008390  30 0d 3f ca 16 20 53 55  42 47 54 20 20 20 52 34  |0.?.. SUBGT   R4|
000083a0  2c 52 34 2c 20 23 31 0d  3f d4 16 20 52 53 42 20  |,R4, #1.?.. RSB |
000083b0  20 20 20 20 52 30 2c 52  30 2c 20 23 30 0d 3f de  |    R0,R0, #0.?.|
000083c0  12 20 43 4d 50 20 20 20  20 20 52 34 2c 52 30 0d  |. CMP     R4,R0.|
000083d0  3f e8 16 20 41 44 44 4c  54 20 20 20 52 34 2c 52  |?.. ADDLT   R4,R|
000083e0  34 2c 20 23 31 0d 3f f2  14 20 4d 4f 56 20 20 20  |4, #1.?.. MOV   |
000083f0  20 20 52 30 2c 20 23 31  36 0d 3f fc 12 20 43 4d  |  R0, #16.?.. CM|
00008400  50 20 20 20 20 20 52 35  2c 52 30 0d 40 06 16 20  |P     R5,R0.@.. |
00008410  53 55 42 47 54 20 20 20  52 35 2c 52 35 2c 20 23  |SUBGT   R5,R5, #|
00008420  31 0d 40 10 16 20 52 53  42 20 20 20 20 20 52 30  |1.@.. RSB     R0|
00008430  2c 52 30 2c 20 23 30 0d  40 1a 12 20 43 4d 50 20  |,R0, #0.@.. CMP |
00008440  20 20 20 20 52 35 2c 52  30 0d 40 24 16 20 41 44  |    R5,R0.@$. AD|
00008450  44 4c 54 20 20 20 52 35  2c 52 35 2c 20 23 31 0d  |DLT   R5,R5, #1.|
00008460  40 2e 06 20 3a 0d 40 38  19 20 53 54 4d 46 44 20  |@.. :.@8. STMFD |
00008470  20 20 52 31 33 21 2c 7b  52 31 2d 52 36 7d 0d 40  |  R13!,{R1-R6}.@|
00008480  42 06 20 3a 0d 40 4c 18  20 42 4c 20 20 20 20 20  |B. :.@L. BL     |
00008490  20 63 68 65 63 6b 5f 64  65 61 74 68 0d 40 56 06  | check_death.@V.|
000084a0  20 3a 0d 40 60 1a 20 4d  4f 56 20 20 20 20 20 52  | :.@`. MOV     R|
000084b0  32 2c 52 32 2c 20 41 53  52 20 23 34 0d 40 6a 1a  |2,R2, ASR #4.@j.|
000084c0  20 4d 4f 56 20 20 20 20  20 52 33 2c 52 33 2c 20  | MOV     R3,R3, |
000084d0  41 53 52 20 23 34 0d 40  74 18 20 52 53 42 20 20  |ASR #4.@t. RSB  |
000084e0  20 20 20 52 33 2c 52 33  2c 20 23 32 35 36 0d 40  |   R3,R3, #256.@|
000084f0  7e 20 20 4c 44 52 20 20  20 20 20 52 34 2c 20 61  |~  LDR     R4, a|
00008500  64 72 5f 73 63 72 65 65  6e 73 74 6f 72 65 0d 40  |dr_screenstore.@|
00008510  88 14 20 4c 44 52 20 20  20 20 20 52 34 2c 5b 52  |.. LDR     R4,[R|
00008520  34 5d 0d 40 92 19 20 4d  4f 56 20 20 20 20 20 52  |4].@.. MOV     R|
00008530  35 2c 20 23 79 5f 73 68  69 66 74 0d 40 9c 15 20  |5, #y_shift.@.. |
00008540  41 44 44 20 20 20 20 20  52 34 2c 52 34 2c 52 32  |ADD     R4,R4,R2|
00008550  0d 40 a6 18 20 4d 4c 41  20 20 20 20 20 52 34 2c  |.@.. MLA     R4,|
00008560  52 35 2c 52 33 2c 52 34  0d 40 b0 14 20 4c 44 52  |R5,R3,R4.@.. LDR|
00008570  42 20 20 20 20 52 30 2c  5b 52 34 5d 0d 40 ba 13  |B    R0,[R4].@..|
00008580  20 43 4d 50 20 20 20 20  20 52 30 2c 20 23 30 0d  | CMP     R0, #0.|
00008590  40 c4 11 20 ec 51 20 20  20 52 31 30 2c 20 23 31  |@.. .Q   R10, #1|
000085a0  0d 40 ce 18 20 42 45 51  20 20 20 20 20 70 6f 73  |.@.. BEQ     pos|
000085b0  74 5f 72 65 63 61 6c 63  0d 40 d8 14 20 4d 4f 56  |t_recalc.@.. MOV|
000085c0  20 20 20 20 20 52 31 30  2c 20 23 30 0d 40 e2 18  |     R10, #0.@..|
000085d0  20 4c 44 4d 46 44 20 20  20 52 31 33 2c 7b 52 31  | LDMFD   R13,{R1|
000085e0  2d 52 36 7d 0d 40 ec 1d  20 53 55 42 20 20 20 20  |-R6}.@.. SUB    |
000085f0  20 52 32 2c 52 32 2c 52  34 2c 20 41 53 4c 20 23  | R2,R2,R4, ASL #|
00008600  31 0d 40 f6 1d 20 53 55  42 20 20 20 20 20 52 33  |1.@.. SUB     R3|
00008610  2c 52 33 2c 52 35 2c 20  41 53 4c 20 23 31 0d 41  |,R3,R5, ASL #1.A|
00008620  00 1a 20 4d 4f 56 20 20  20 20 20 52 32 2c 52 32  |.. MOV     R2,R2|
00008630  2c 20 41 53 52 20 23 34  0d 41 0a 1a 20 4d 4f 56  |, ASR #4.A.. MOV|
00008640  20 20 20 20 20 52 33 2c  52 33 2c 20 41 53 52 20  |     R3,R3, ASR |
00008650  23 34 0d 41 14 18 20 52  53 42 20 20 20 20 20 52  |#4.A.. RSB     R|
00008660  33 2c 52 33 2c 20 23 32  35 36 0d 41 1e 20 20 4c  |3,R3, #256.A.  L|
00008670  44 52 20 20 20 20 20 52  34 2c 20 61 64 72 5f 73  |DR     R4, adr_s|
00008680  63 72 65 65 6e 73 74 6f  72 65 0d 41 28 14 20 4c  |creenstore.A(. L|
00008690  44 52 20 20 20 20 20 52  34 2c 5b 52 34 5d 0d 41  |DR     R4,[R4].A|
000086a0  32 19 20 4d 4f 56 20 20  20 20 20 52 35 2c 20 23  |2. MOV     R5, #|
000086b0  79 5f 73 68 69 66 74 0d  41 3c 15 20 41 44 44 20  |y_shift.A<. ADD |
000086c0  20 20 20 20 52 34 2c 52  34 2c 52 32 0d 41 46 18  |    R4,R4,R2.AF.|
000086d0  20 4d 4c 41 20 20 20 20  20 52 34 2c 52 35 2c 52  | MLA     R4,R5,R|
000086e0  33 2c 52 34 0d 41 50 11  20 2e 70 6f 73 74 5f 72  |3,R4.AP. .post_r|
000086f0  65 63 61 6c 63 0d 41 5a  18 20 52 53 42 20 20 20  |ecalc.AZ. RSB   |
00008700  20 20 52 33 2c 52 33 2c  20 23 32 35 36 0d 41 64  |  R3,R3, #256.Ad|
00008710  13 20 4d 4f 56 20 20 20  20 20 52 30 2c 20 23 34  |. MOV     R0, #4|
00008720  0d 41 6e 16 20 53 55 42  20 20 20 20 20 52 31 2c  |.An. SUB     R1,|
00008730  52 32 2c 20 23 32 0d 41  78 16 20 53 55 42 20 20  |R2, #2.Ax. SUB  |
00008740  20 20 20 52 32 2c 52 33  2c 20 23 32 0d 41 82 1d  |   R2,R3, #2.A..|
00008750  20 42 4c 20 20 20 20 20  20 70 6c 6f 74 5f 73 70  | BL      plot_sp|
00008760  72 69 74 65 5f 30 38 30  34 0d 41 8c 10 20 2e 6e  |rite_0804.A.. .n|
00008770  6f 5f 73 65 65 6b 69 6e  67 0d 41 96 06 20 3a 0d  |o_seeking.A.. :.|
00008780  41 a0 19 20 4c 44 4d 46  44 20 20 20 52 31 33 21  |A.. LDMFD   R13!|
00008790  2c 7b 52 31 2d 52 36 7d  0d 41 aa 14 20 43 4d 50  |,{R1-R6}.A.. CMP|
000087a0  20 20 20 20 20 52 31 30  2c 20 23 30 0d 41 b4 15  |     R10, #0.A..|
000087b0  20 41 44 44 4e 45 20 20  20 52 32 2c 52 32 2c 52  | ADDNE   R2,R2,R|
000087c0  34 0d 41 be 15 20 41 44  44 4e 45 20 20 20 52 33  |4.A.. ADDNE   R3|
000087d0  2c 52 33 2c 52 35 0d 41  c8 1d 20 53 55 42 45 51  |,R3,R5.A.. SUBEQ|
000087e0  20 20 20 52 32 2c 52 32  2c 52 34 2c 20 41 53 4c  |   R2,R2,R4, ASL|
000087f0  20 23 31 0d 41 d2 1d 20  53 55 42 45 51 20 20 20  | #1.A.. SUBEQ   |
00008800  52 33 2c 52 33 2c 52 35  2c 20 41 53 4c 20 23 31  |R3,R3,R5, ASL #1|
00008810  0d 41 dc 10 20 ec 51 20  20 20 52 34 2c 20 23 30  |.A.. .Q   R4, #0|
00008820  0d 41 e6 10 20 ec 51 20  20 20 52 35 2c 20 23 30  |.A.. .Q   R5, #0|
00008830  0d 41 f0 19 20 4c 44 4d  46 44 20 20 20 52 31 33  |.A.. LDMFD   R13|
00008840  21 2c 7b 52 39 2c 50 43  7d 0d 41 fa 06 20 3a 0d  |!,{R9,PC}.A.. :.|
00008850  42 04 0e 20 2e 76 65 72  74 69 63 61 6c 0d 42 0e  |B.. .vertical.B.|
00008860  1a 20 53 54 4d 46 44 20  20 20 52 31 33 21 2c 7b  |. STMFD   R13!,{|
00008870  52 39 2c 52 31 34 7d 0d  42 18 06 20 3a 0d 42 22  |R9,R14}.B.. :.B"|
00008880  15 20 41 44 44 20 20 20  20 20 52 32 2c 52 32 2c  |. ADD     R2,R2,|
00008890  52 34 0d 42 2c 15 20 41  44 44 20 20 20 20 20 52  |R4.B,. ADD     R|
000088a0  33 2c 52 33 2c 52 35 0d  42 36 06 20 3a 0d 42 40  |3,R3,R5.B6. :.B@|
000088b0  19 20 53 54 4d 46 44 20  20 20 52 31 33 21 2c 7b  |. STMFD   R13!,{|
000088c0  52 31 2d 52 36 7d 0d 42  4a 06 20 3a 0d 42 54 18  |R1-R6}.BJ. :.BT.|
000088d0  20 42 4c 20 20 20 20 20  20 63 68 65 63 6b 5f 64  | BL      check_d|
000088e0  65 61 74 68 0d 42 5e 06  20 3a 0d 42 68 1a 20 4d  |eath.B^. :.Bh. M|
000088f0  4f 56 20 20 20 20 20 52  32 2c 52 32 2c 20 41 53  |OV     R2,R2, AS|
00008900  52 20 23 34 0d 42 72 1a  20 4d 4f 56 20 20 20 20  |R #4.Br. MOV    |
00008910  20 52 33 2c 52 33 2c 20  41 53 52 20 23 34 0d 42  | R3,R3, ASR #4.B|
00008920  7c 18 20 52 53 42 20 20  20 20 20 52 33 2c 52 33  ||. RSB     R3,R3|
00008930  2c 20 23 32 35 36 0d 42  86 20 20 4c 44 52 20 20  |, #256.B.  LDR  |
00008940  20 20 20 52 34 2c 20 61  64 72 5f 73 63 72 65 65  |   R4, adr_scree|
00008950  6e 73 74 6f 72 65 0d 42  90 14 20 4c 44 52 20 20  |nstore.B.. LDR  |
00008960  20 20 20 52 34 2c 5b 52  34 5d 0d 42 9a 19 20 4d  |   R4,[R4].B.. M|
00008970  4f 56 20 20 20 20 20 52  35 2c 20 23 79 5f 73 68  |OV     R5, #y_sh|
00008980  69 66 74 0d 42 a4 15 20  41 44 44 20 20 20 20 20  |ift.B.. ADD     |
00008990  52 34 2c 52 34 2c 52 32  0d 42 ae 18 20 4d 4c 41  |R4,R4,R2.B.. MLA|
000089a0  20 20 20 20 20 52 34 2c  52 35 2c 52 33 2c 52 34  |     R4,R5,R3,R4|
000089b0  0d 42 b8 14 20 4c 44 52  42 20 20 20 20 52 30 2c  |.B.. LDRB    R0,|
000089c0  5b 52 34 5d 0d 42 c2 13  20 43 4d 50 20 20 20 20  |[R4].B.. CMP    |
000089d0  20 52 30 2c 20 23 30 0d  42 cc 11 20 ec 51 20 20  | R0, #0.B.. .Q  |
000089e0  20 52 31 30 2c 20 23 31  0d 42 d6 14 20 4d 4f 56  | R10, #1.B.. MOV|
000089f0  4e 45 20 20 20 52 31 30  2c 20 23 30 0d 42 e0 14  |NE   R10, #0.B..|
00008a00  20 42 4e 45 20 20 20 20  20 6e 6f 5f 76 65 72 74  | BNE     no_vert|
00008a10  0d 42 ea 18 20 52 53 42  20 20 20 20 20 52 33 2c  |.B.. RSB     R3,|
00008a20  52 33 2c 20 23 32 35 36  0d 42 f4 14 20 4d 4f 56  |R3, #256.B.. MOV|
00008a30  20 20 20 20 20 52 30 2c  20 23 32 32 0d 42 fe 16  |     R0, #22.B..|
00008a40  20 53 55 42 20 20 20 20  20 52 31 2c 52 32 2c 20  | SUB     R1,R2, |
00008a50  23 32 0d 43 08 16 20 53  55 42 20 20 20 20 20 52  |#2.C.. SUB     R|
00008a60  32 2c 52 33 2c 20 23 32  0d 43 12 1d 20 42 4c 20  |2,R3, #2.C.. BL |
00008a70  20 20 20 20 20 70 6c 6f  74 5f 73 70 72 69 74 65  |     plot_sprite|
00008a80  5f 30 38 30 34 0d 43 1c  1d 3b 4c 44 52 20 20 20  |_0804.C..;LDR   |
00008a90  20 20 52 30 2c 20 61 64  72 5f 67 75 6e 5f 66 61  |  R0, adr_gun_fa|
00008aa0  64 65 0d 43 26 15 3b 4d  4f 56 20 20 20 20 20 52  |de.C&.;MOV     R|
00008ab0  39 2c 20 23 32 35 35 0d  43 30 17 3b 4c 44 52 42  |9, #255.C0.;LDRB|
00008ac0  20 20 20 20 52 30 2c 5b  52 30 2c 52 39 5d 0d 43  |    R0,[R0,R9].C|
00008ad0  3a 14 3b 53 54 52 42 20  20 20 20 52 30 2c 5b 52  |:.;STRB    R0,[R|
00008ae0  34 5d 0d 43 44 18 3b 41  44 44 20 20 20 20 20 52  |4].CD.;ADD     R|
00008af0  34 2c 52 34 2c 20 23 33  32 30 0d 43 4e 16 3b 53  |4,R4, #320.CN.;S|
00008b00  55 42 20 20 20 20 20 52  34 2c 52 34 2c 20 23 31  |UB     R4,R4, #1|
00008b10  0d 43 58 14 3b 53 54 52  42 20 20 20 20 52 30 2c  |.CX.;STRB    R0,|
00008b20  5b 52 34 5d 0d 43 62 18  3b 53 54 52 42 20 20 20  |[R4].Cb.;STRB   |
00008b30  20 52 30 2c 5b 52 34 2c  20 23 32 5d 0d 43 6c 0d  | R0,[R4, #2].Cl.|
00008b40  20 2e 6e 6f 5f 76 65 72  74 0d 43 76 06 20 3a 0d  | .no_vert.Cv. :.|
00008b50  43 80 19 20 4c 44 4d 46  44 20 20 20 52 31 33 21  |C.. LDMFD   R13!|
00008b60  2c 7b 52 31 2d 52 36 7d  0d 43 8a 14 20 43 4d 50  |,{R1-R6}.C.. CMP|
00008b70  20 20 20 20 20 52 31 30  2c 20 23 30 0d 43 94 10  |     R10, #0.C..|
00008b80  20 ec 51 20 20 20 52 31  2c 20 23 30 0d 43 9e 19  | .Q   R1, #0.C..|
00008b90  20 4c 44 4d 46 44 20 20  20 52 31 33 21 2c 7b 52  | LDMFD   R13!,{R|
00008ba0  39 2c 50 43 7d 0d 43 a8  06 20 3a 0d 43 b2 11 20  |9,PC}.C.. :.C.. |
00008bb0  2e 63 68 65 63 6b 5f 64  65 61 74 68 0d 43 bc 13  |.check_death.C..|
00008bc0  20 54 53 54 20 20 20 20  20 52 36 2c 20 23 31 0d  | TST     R6, #1.|
00008bd0  43 c6 16 20 4c 44 52 45  51 20 20 20 52 31 30 2c  |C.. LDREQ   R10,|
00008be0  20 70 31 5f 78 0d 43 d0  16 20 4c 44 52 45 51 20  | p1_x.C.. LDREQ |
00008bf0  20 20 52 31 31 2c 20 70  31 5f 79 0d 43 da 16 20  |  R11, p1_y.C.. |
00008c00  4c 44 52 4e 45 20 20 20  52 31 30 2c 20 70 32 5f  |LDRNE   R10, p2_|
00008c10  78 0d 43 e4 16 20 4c 44  52 4e 45 20 20 20 52 31  |x.C.. LDRNE   R1|
00008c20  31 2c 20 70 32 5f 79 0d  43 ee 1a 20 4d 4f 56 20  |1, p2_y.C.. MOV |
00008c30  20 20 20 20 52 39 2c 52  32 2c 20 41 53 52 20 23  |    R9,R2, ASR #|
00008c40  34 0d 43 f8 17 20 53 55  42 20 20 20 20 20 52 31  |4.C.. SUB     R1|
00008c50  30 2c 52 39 2c 52 31 30  0d 44 02 14 20 43 4d 4e  |0,R9,R10.D.. CMN|
00008c60  20 20 20 20 20 52 31 30  2c 20 23 32 0d 44 0c 15  |     R10, #2.D..|
00008c70  20 42 4c 54 20 20 20 20  20 6e 6f 74 5f 64 65 61  | BLT     not_dea|
00008c80  64 0d 44 16 1a 20 43 4d  50 20 20 20 20 20 52 31  |d.D.. CMP     R1|
00008c90  30 2c 20 23 78 65 78 74  25 2b 32 0d 44 20 15 20  |0, #xext%+2.D . |
00008ca0  42 47 54 20 20 20 20 20  6e 6f 74 5f 64 65 61 64  |BGT     not_dead|
00008cb0  0d 44 2a 1a 20 4d 4f 56  20 20 20 20 20 52 39 2c  |.D*. MOV     R9,|
00008cc0  52 33 2c 20 41 53 52 20  23 34 0d 44 34 17 20 53  |R3, ASR #4.D4. S|
00008cd0  55 42 20 20 20 20 20 52  31 31 2c 52 39 2c 52 31  |UB     R11,R9,R1|
00008ce0  31 0d 44 3e 14 20 43 4d  4e 20 20 20 20 20 52 31  |1.D>. CMN     R1|
00008cf0  31 2c 20 23 32 0d 44 48  15 20 42 4c 54 20 20 20  |1, #2.DH. BLT   |
00008d00  20 20 6e 6f 74 5f 64 65  61 64 0d 44 52 1a 20 43  |  not_dead.DR. C|
00008d10  4d 50 20 20 20 20 20 52  31 31 2c 20 23 79 65 78  |MP     R11, #yex|
00008d20  74 25 2b 32 0d 44 5c 15  20 42 47 54 20 20 20 20  |t%+2.D\. BGT    |
00008d30  20 6e 6f 74 5f 64 65 61  64 0d 44 66 13 20 54 53  | not_dead.Df. TS|
00008d40  54 20 20 20 20 20 52 36  2c 20 23 31 0d 44 70 19  |T     R6, #1.Dp.|
00008d50  20 42 4e 45 20 20 20 20  20 64 65 61 64 5f 70 6c  | BNE     dead_pl|
00008d60  61 79 65 72 32 0d 44 7a  1e 20 4c 44 52 20 20 20  |ayer2.Dz. LDR   |
00008d70  20 20 52 30 2c 20 70 6c  61 79 65 72 31 5f 61 6c  |  R0, player1_al|
00008d80  69 76 65 0d 44 84 13 20  43 4d 50 20 20 20 20 20  |ive.D.. CMP     |
00008d90  52 30 2c 20 23 31 0d 44  8e 15 20 42 45 51 20 20  |R0, #1.D.. BEQ  |
00008da0  20 20 20 6e 6f 74 5f 64  65 61 64 0d 44 98 13 20  |   not_dead.D.. |
00008db0  4d 4f 56 20 20 20 20 20  52 30 2c 20 23 31 0d 44  |MOV     R0, #1.D|
00008dc0  a2 1e 20 53 54 52 20 20  20 20 20 52 30 2c 20 70  |.. STR     R0, p|
00008dd0  6c 61 79 65 72 31 5f 61  6c 69 76 65 0d 44 ac 13  |layer1_alive.D..|
00008de0  20 4d 4f 56 20 20 20 20  20 52 30 2c 20 23 33 0d  | MOV     R0, #3.|
00008df0  44 b6 14 20 4d 56 4e 20  20 20 20 20 52 31 2c 20  |D.. MVN     R1, |
00008e00  23 31 34 0d 44 c0 19 20  4d 4f 56 20 20 20 20 20  |#14.D.. MOV     |
00008e10  52 32 2c 20 23 73 63 72  65 61 6d 25 0d 44 ca 13  |R2, #scream%.D..|
00008e20  20 4d 4f 56 20 20 20 20  20 52 33 2c 20 23 30 0d  | MOV     R3, #0.|
00008e30  44 d4 1c 20 53 57 49 20  20 20 20 20 22 53 6f 75  |D.. SWI     "Sou|
00008e40  6e 64 5f 43 6f 6e 74 72  6f 6c 22 0d 44 de 15 20  |nd_Control".D.. |
00008e50  42 20 20 20 20 20 20 20  6e 6f 74 5f 64 65 61 64  |B       not_dead|
00008e60  0d 44 e8 12 20 2e 64 65  61 64 5f 70 6c 61 79 65  |.D.. .dead_playe|
00008e70  72 32 0d 44 f2 1e 20 4c  44 52 20 20 20 20 20 52  |r2.D.. LDR     R|
00008e80  30 2c 20 70 6c 61 79 65  72 32 5f 61 6c 69 76 65  |0, player2_alive|
00008e90  0d 44 fc 13 20 43 4d 50  20 20 20 20 20 52 30 2c  |.D.. CMP     R0,|
00008ea0  20 23 31 0d 45 06 15 20  42 45 51 20 20 20 20 20  | #1.E.. BEQ     |
00008eb0  6e 6f 74 5f 64 65 61 64  0d 45 10 13 20 4d 4f 56  |not_dead.E.. MOV|
00008ec0  20 20 20 20 20 52 30 2c  20 23 31 0d 45 1a 1e 20  |     R0, #1.E.. |
00008ed0  53 54 52 20 20 20 20 20  52 30 2c 20 70 6c 61 79  |STR     R0, play|
00008ee0  65 72 32 5f 61 6c 69 76  65 0d 45 24 13 20 4d 4f  |er2_alive.E$. MO|
00008ef0  56 20 20 20 20 20 52 30  2c 20 23 33 0d 45 2e 14  |V     R0, #3.E..|
00008f00  20 4d 56 4e 20 20 20 20  20 52 31 2c 20 23 31 34  | MVN     R1, #14|
00008f10  0d 45 38 19 20 4d 4f 56  20 20 20 20 20 52 32 2c  |.E8. MOV     R2,|
00008f20  20 23 73 63 72 65 61 6d  25 0d 45 42 13 20 4d 4f  | #scream%.EB. MO|
00008f30  56 20 20 20 20 20 52 33  2c 20 23 30 0d 45 4c 1c  |V     R3, #0.EL.|
00008f40  20 53 57 49 20 20 20 20  20 22 53 6f 75 6e 64 5f  | SWI     "Sound_|
00008f50  43 6f 6e 74 72 6f 6c 22  0d 45 56 0e 20 2e 6e 6f  |Control".EV. .no|
00008f60  74 5f 64 65 61 64 0d 45  60 13 20 4d 4f 56 20 20  |t_dead.E`. MOV  |
00008f70  20 20 20 50 43 2c 52 31  34 0d 45 6a 06 20 3a 0d  |   PC,R14.Ej. :.|
00008f80  45 74 13 20 2e 70 6c 61  79 65 72 31 5f 61 6c 69  |Et. .player1_ali|
00008f90  76 65 0d 45 7e 0e 20 45  51 55 44 20 20 20 20 30  |ve.E~. EQUD    0|
00008fa0  0d 45 88 13 20 2e 70 6c  61 79 65 72 32 5f 61 6c  |.E.. .player2_al|
00008fb0  69 76 65 0d 45 92 0e 20  45 51 55 44 20 20 20 20  |ive.E.. EQUD    |
00008fc0  30 0d 45 9c 06 20 3a 0d  45 a6 15 20 2e 65 78 70  |0.E.. :.E.. .exp|
00008fd0  6c 6f 73 69 6f 6e 5f 73  70 72 61 79 0d 45 b0 06  |losion_spray.E..|
00008fe0  20 5d 0d 45 ba 10 20 e3  20 61 25 3d 31 20 b8 20  | ].E.. . a%=1 . |
00008ff0  36 34 0d 45 c4 10 20 72  25 3d b3 28 32 30 29 2b  |64.E.. r%=.(20)+|
00009000  32 38 0d 45 ce 10 20 61  6e 67 25 3d b3 28 33 36  |28.E.. ang%=.(36|
00009010  30 29 0d 45 d8 13 20 78  25 3d 9b b2 28 61 6e 67  |0).E.. x%=..(ang|
00009020  25 29 2a 72 25 0d 45 e2  13 20 79 25 3d b5 b2 28  |%)*r%.E.. y%=..(|
00009030  61 6e 67 25 29 2a 72 25  0d 45 ec 21 20 e7 20 78  |ang%)*r%.E.! . x|
00009040  25 3c 30 20 8c 20 78 25  3d 28 78 25 20 84 20 31  |%<0 . x%=(x% . 1|
00009050  32 38 29 20 80 20 32 35  35 0d 45 f6 21 20 e7 20  |28) . 255.E.! . |
00009060  79 25 3c 30 20 8c 20 79  25 3d 28 79 25 20 84 20  |y%<0 . y%=(y% . |
00009070  31 32 38 29 20 80 20 32  35 35 0d 46 00 0f 20 5b  |128) . 255.F.. [|
00009080  4f 50 54 20 70 61 73 73  25 0d 46 0a 0f 20 45 51  |OPT pass%.F.. EQ|
00009090  55 42 20 20 20 20 78 25  0d 46 14 0f 20 45 51 55  |UB    x%.F.. EQU|
000090a0  42 20 20 20 20 79 25 0d  46 1e 06 20 5d 0d 46 28  |B    y%.F.. ].F(|
000090b0  06 20 ed 0d 46 32 0f 20  5b 4f 50 54 20 70 61 73  |. ..F2. [OPT pas|
000090c0  73 25 0d 46 3c 0a 20 41  4c 49 47 4e 0d 46 46 06  |s%.F<. ALIGN.FF.|
000090d0  20 3a 0d 46 50 0e 20 2e  65 6e 64 5f 67 61 6d 65  | :.FP. .end_game|
000090e0  0d 46 5a 0e 20 45 51 55  44 20 20 20 20 30 0d 46  |.FZ. EQUD    0.F|
000090f0  64 15 20 2e 61 64 72 5f  73 63 72 65 65 6e 73 74  |d. .adr_screenst|
00009100  6f 72 65 0d 46 6e 18 20  45 51 55 44 20 20 20 20  |ore.Fn. EQUD    |
00009110  73 63 72 65 65 6e 73 74  6f 72 65 0d 46 78 10 20  |screenstore.Fx. |
00009120  2e 61 64 72 5f 63 6c 69  73 74 32 0d 46 82 13 20  |.adr_clist2.F.. |
00009130  45 51 55 44 20 20 20 20  63 6c 69 73 74 25 0d 46  |EQUD    clist%.F|
00009140  8c 06 20 3a 0d 46 96 06  20 3a 0d 46 a0 06 20 3a  |.. :.F.. :.F.. :|
00009150  0d 46 aa 0e 20 2e 61 64  64 5f 63 65 6c 6c 0d 46  |.F.. .add_cell.F|
00009160  b4 1e 20 53 54 4d 46 44  20 20 20 52 31 33 21 2c  |.. STMFD   R13!,|
00009170  7b 52 30 2d 52 31 32 2c  52 31 34 7d 0d 46 be 06  |{R0-R12,R14}.F..|
00009180  20 3a 0d 46 c8 18 20 52  53 42 20 20 20 20 20 52  | :.F.. RSB     R|
00009190  32 2c 52 32 2c 20 23 32  35 36 0d 46 d2 1a 20 4d  |2,R2, #256.F.. M|
000091a0  4f 56 20 20 20 20 20 52  31 2c 52 31 2c 20 41 53  |OV     R1,R1, AS|
000091b0  4c 20 23 34 0d 46 dc 1a  20 4d 4f 56 20 20 20 20  |L #4.F.. MOV    |
000091c0  20 52 32 2c 52 32 2c 20  41 53 4c 20 23 34 0d 46  | R2,R2, ASL #4.F|
000091d0  e6 06 20 3a 0d 46 f0 1b  20 4c 44 52 20 20 20 20  |.. :.F.. LDR    |
000091e0  20 52 39 2c 20 61 64 72  5f 63 6c 69 73 74 32 0d  | R9, adr_clist2.|
000091f0  46 fa 0c 20 2e 73 6c 6f  6f 70 31 0d 47 04 14 20  |F.. .sloop1.G.. |
00009200  4c 44 52 20 20 20 20 20  52 38 2c 5b 52 39 5d 0d  |LDR     R8,[R9].|
00009210  47 0e 13 20 43 4d 50 20  20 20 20 20 52 38 2c 20  |G.. CMP     R8, |
00009220  23 30 0d 47 18 17 20 53  54 4d 45 51 49 41 20 52  |#0.G.. STMEQIA R|
00009230  39 2c 7b 52 30 2d 52 35  7d 0d 47 22 16 20 42 45  |9,{R0-R5}.G". BE|
00009240  51 20 20 20 20 20 64 6f  6e 65 5f 63 65 6c 6c 0d  |Q     done_cell.|
00009250  47 2c 17 20 41 44 44 20  20 20 20 20 52 39 2c 52  |G,. ADD     R9,R|
00009260  39 2c 20 23 33 32 0d 47  36 13 20 42 47 45 20 20  |9, #32.G6. BGE  |
00009270  20 20 20 73 6c 6f 6f 70  31 0d 47 40 0f 20 2e 64  |   sloop1.G@. .d|
00009280  6f 6e 65 5f 63 65 6c 6c  0d 47 4a 06 20 3a 0d 47  |one_cell.GJ. :.G|
00009290  54 1d 20 4c 44 4d 46 44  20 20 20 52 31 33 21 2c  |T. LDMFD   R13!,|
000092a0  7b 52 30 2d 52 31 32 2c  50 43 7d 0d 47 5e 06 20  |{R0-R12,PC}.G^. |
000092b0  3a 0d 47 68 06 20 3a 0d  47 72 06 20 3a 0d 47 7c  |:.Gh. :.Gr. :.G||
000092c0  10 20 2e 61 64 64 5f 67  6f 6f 64 69 65 0d 47 86  |. .add_goodie.G.|
000092d0  1e 20 53 54 4d 46 44 20  20 20 52 31 33 21 2c 7b  |. STMFD   R13!,{|
000092e0  52 30 2d 52 31 32 2c 52  31 34 7d 0d 47 90 06 20  |R0-R12,R14}.G.. |
000092f0  3a 0d 47 9a 14 20 4c 44  52 20 20 20 20 20 52 39  |:.G.. LDR     R9|
00009300  2c 20 72 6e 64 0d 47 a4  1b 20 4d 4f 56 20 20 20  |, rnd.G.. MOV   |
00009310  20 20 52 39 2c 52 39 2c  20 4c 53 52 20 23 32 34  |  R9,R9, LSR #24|
00009320  0d 47 ae 16 20 80 20 20  20 20 20 52 30 2c 52 39  |.G.. .     R0,R9|
00009330  2c 20 23 32 35 35 0d 47  b8 11 20 2e 67 6f 6f 64  |, #255.G.. .good|
00009340  69 65 5f 6c 6f 6f 70 0d  47 c2 13 20 43 4d 50 20  |ie_loop.G.. CMP |
00009350  20 20 20 20 52 30 2c 20  23 37 0d 47 cc 16 20 53  |    R0, #7.G.. S|
00009360  55 42 47 54 20 20 20 52  30 2c 52 30 2c 20 23 37  |UBGT   R0,R0, #7|
00009370  0d 47 d6 18 20 42 47 54  20 20 20 20 20 67 6f 6f  |.G.. BGT     goo|
00009380  64 69 65 5f 6c 6f 6f 70  0d 47 e0 16 20 41 44 44  |die_loop.G.. ADD|
00009390  20 20 20 20 20 52 30 2c  52 30 2c 20 23 34 0d 47  |     R0,R0, #4.G|
000093a0  ea 1a 20 80 20 20 20 20  20 52 31 2c 52 39 2c 20  |.. .     R1,R9, |
000093b0  23 25 31 31 31 30 30 30  0d 47 f4 1a 20 41 44 52  |#%111000.G.. ADR|
000093c0  20 20 20 20 20 52 32 2c  20 70 6f 73 69 74 69 6f  |     R2, positio|
000093d0  6e 73 0d 47 fe 15 20 41  44 44 20 20 20 20 20 52  |ns.G.. ADD     R|
000093e0  32 2c 52 32 2c 52 31 0d  48 08 14 20 4c 44 52 20  |2,R2,R1.H.. LDR |
000093f0  20 20 20 20 52 31 2c 5b  52 32 5d 0d 48 12 18 20  |    R1,[R2].H.. |
00009400  4c 44 52 20 20 20 20 20  52 32 2c 5b 52 32 2c 20  |LDR     R2,[R2, |
00009410  23 34 5d 0d 48 1c 15 20  4d 4f 56 20 20 20 20 20  |#4].H.. MOV     |
00009420  52 33 2c 20 23 33 32 30  0d 48 26 17 20 42 4c 20  |R3, #320.H&. BL |
00009430  20 20 20 20 20 61 64 64  5f 73 70 72 69 74 65 0d  |     add_sprite.|
00009440  48 30 06 20 3a 0d 48 3a  1d 20 4c 44 4d 46 44 20  |H0. :.H:. LDMFD |
00009450  20 20 52 31 33 21 2c 7b  52 30 2d 52 31 32 2c 50  |  R13!,{R0-R12,P|
00009460  43 7d 0d 48 44 06 20 3a  0d 48 4e 0f 20 2e 70 6f  |C}.HD. :.HN. .po|
00009470  73 69 74 69 6f 6e 73 0d  48 58 06 20 5d 0d 48 62  |sitions.HX. ].Hb|
00009480  0f 20 e3 20 61 25 3d 30  20 b8 20 38 0d 48 6c 0e  |. . a%=0 . 8.Hl.|
00009490  20 5b 4f 50 54 70 61 73  73 25 0d 48 76 0e 20 45  | [OPTpass%.Hv. E|
000094a0  51 55 44 20 20 20 20 30  0d 48 80 0e 20 45 51 55  |QUD    0.H.. EQU|
000094b0  44 20 20 20 20 30 0d 48  8a 06 20 5d 0d 48 94 06  |D    0.H.. ].H..|
000094c0  20 ed 0d 48 9e 0f 20 5b  4f 50 54 20 70 61 73 73  | ..H.. [OPT pass|
000094d0  25 0d 48 a8 06 20 3a 0d  48 b2 12 20 2e 61 73 5f  |%.H.. :.H.. .as_|
000094e0  61 64 72 5f 73 6c 69 73  74 0d 48 bc 13 20 45 51  |adr_slist.H.. EQ|
000094f0  55 44 20 20 20 20 73 6c  69 73 74 25 0d 48 c6 06  |UD    slist%.H..|
00009500  20 3a 0d 48 d0 10 20 2e  61 64 64 5f 73 70 72 69  | :.H.. .add_spri|
00009510  74 65 0d 48 da 1e 20 53  54 4d 46 44 20 20 20 52  |te.H.. STMFD   R|
00009520  31 33 21 2c 7b 52 30 2d  52 31 32 2c 52 31 34 7d  |13!,{R0-R12,R14}|
00009530  0d 48 e4 06 20 3a 0d 48  ee 1d 20 4c 44 52 20 20  |.H.. :.H.. LDR  |
00009540  20 20 20 52 39 2c 20 61  73 5f 61 64 72 5f 73 6c  |   R9, as_adr_sl|
00009550  69 73 74 0d 48 f8 0c 20  2e 73 6c 6f 6f 70 31 0d  |ist.H.. .sloop1.|
00009560  49 02 14 20 4c 44 52 20  20 20 20 20 52 38 2c 5b  |I.. LDR     R8,[|
00009570  52 39 5d 0d 49 0c 13 20  43 4d 50 20 20 20 20 20  |R9].I.. CMP     |
00009580  52 38 2c 20 23 30 0d 49  16 17 20 41 44 44 4e 45  |R8, #0.I.. ADDNE|
00009590  20 20 20 52 39 2c 52 39  2c 20 23 31 36 0d 49 20  |   R9,R9, #16.I |
000095a0  13 20 42 4e 45 20 20 20  20 20 73 6c 6f 6f 70 31  |. BNE     sloop1|
000095b0  0d 49 2a 17 20 53 54 4d  45 51 49 41 20 52 39 2c  |.I*. STMEQIA R9,|
000095c0  7b 52 30 2d 52 33 7d 0d  49 34 16 20 42 45 51 20  |{R0-R3}.I4. BEQ |
000095d0  20 20 20 20 64 6f 6e 65  5f 63 65 6c 6c 0d 49 3e  |    done_cell.I>|
000095e0  0f 20 2e 64 6f 6e 65 5f  63 65 6c 6c 0d 49 48 06  |. .done_cell.IH.|
000095f0  20 3a 0d 49 52 1d 20 4c  44 4d 46 44 20 20 20 52  | :.IR. LDMFD   R|
00009600  31 33 21 2c 7b 52 30 2d  52 31 32 2c 50 43 7d 0d  |13!,{R0-R12,PC}.|
00009610  49 5c 06 20 3a 0d 49 66  0d 20 2e 70 32 5f 66 69  |I\. :.If. .p2_fi|
00009620  72 65 0d 49 70 0e 20 45  51 55 44 20 20 20 20 30  |re.Ip. EQUD    0|
00009630  0d 49 7a 0f 20 2e 65 78  70 6c 6f 64 65 5f 32 0d  |.Iz. .explode_2.|
00009640  49 84 0e 20 45 51 55 44  20 20 20 20 30 0d 49 8e  |I.. EQUD    0.I.|
00009650  06 20 3a 0d 49 98 0d 20  2e 70 6c 61 79 65 72 32  |. :.I.. .player2|
00009660  0d 49 a2 1a 20 53 54 4d  46 44 20 20 20 52 31 33  |.I.. STMFD   R13|
00009670  21 2c 7b 52 39 2c 52 31  34 7d 0d 49 ac 06 20 3a  |!,{R9,R14}.I.. :|
00009680  0d 49 b6 14 20 43 4d 50  20 20 20 20 20 52 36 2c  |.I.. CMP     R6,|
00009690  20 23 33 32 0d 49 c0 14  20 4d 4f 56 4c 54 20 20  | #32.I.. MOVLT  |
000096a0  20 52 36 2c 20 23 33 32  0d 49 ca 14 20 43 4d 50  | R6, #32.I.. CMP|
000096b0  20 20 20 20 20 52 37 2c  20 23 33 32 0d 49 d4 14  |     R7, #32.I..|
000096c0  20 4d 4f 56 4c 54 20 20  20 52 37 2c 20 23 33 32  | MOVLT   R7, #32|
000096d0  0d 49 de 19 20 43 4d 50  20 20 20 20 20 52 36 2c  |.I.. CMP     R6,|
000096e0  20 23 31 32 38 30 2d 38  30 0d 49 e8 19 20 4d 4f  | #1280-80.I.. MO|
000096f0  56 47 54 20 20 20 52 36  2c 20 23 31 32 38 30 2d  |VGT   R6, #1280-|
00009700  38 30 0d 49 f2 19 20 43  4d 50 20 20 20 20 20 52  |80.I.. CMP     R|
00009710  37 2c 20 23 31 30 32 34  2d 38 30 0d 49 fc 19 20  |7, #1024-80.I.. |
00009720  4d 4f 56 47 54 20 20 20  52 37 2c 20 23 31 30 32  |MOVGT   R7, #102|
00009730  34 2d 38 30 0d 4a 06 06  20 3a 0d 4a 10 1e 20 4c  |4-80.J.. :.J.. L|
00009740  44 52 20 20 20 20 20 52  30 2c 20 70 6c 61 79 65  |DR     R0, playe|
00009750  72 32 5f 61 6c 69 76 65  0d 4a 1a 13 20 43 4d 50  |r2_alive.J.. CMP|
00009760  20 20 20 20 20 52 30 2c  20 23 30 0d 4a 24 19 20  |     R0, #0.J$. |
00009770  42 45 51 20 20 20 20 20  70 6c 61 79 5f 70 6c 61  |BEQ     play_pla|
00009780  79 65 72 32 0d 4a 2e 1c  20 42 4e 45 20 20 20 20  |yer2.J.. BNE    |
00009790  20 65 78 70 6c 6f 64 65  5f 70 6c 61 79 65 72 32  | explode_player2|
000097a0  0d 4a 38 06 20 3a 0d 4a  42 15 20 2e 65 78 70 6c  |.J8. :.JB. .expl|
000097b0  6f 64 65 5f 70 6c 61 79  65 72 32 0d 4a 4c 06 20  |ode_player2.JL. |
000097c0  3a 0d 4a 56 1a 20 4c 44  52 20 20 20 20 20 52 30  |:.JV. LDR     R0|
000097d0  2c 20 65 78 70 6c 6f 64  65 5f 32 0d 4a 60 16 20  |, explode_2.J`. |
000097e0  41 44 44 20 20 20 20 20  52 30 2c 52 30 2c 20 23  |ADD     R0,R0, #|
000097f0  31 0d 4a 6a 1a 20 53 54  52 20 20 20 20 20 52 30  |1.Jj. STR     R0|
00009800  2c 20 65 78 70 6c 6f 64  65 5f 32 0d 4a 74 16 20  |, explode_2.Jt. |
00009810  43 4d 50 20 20 20 20 20  52 30 2c 20 23 37 3c 3c  |CMP     R0, #7<<|
00009820  33 0d 4a 7e 19 20 53 54  52 47 54 20 20 20 52 30  |3.J~. STRGT   R0|
00009830  2c 20 65 6e 64 5f 67 61  6d 65 0d 4a 88 19 20 4c  |, end_game.J.. L|
00009840  44 4d 47 54 46 44 20 52  31 33 21 2c 7b 52 39 2c  |DMGTFD R13!,{R9,|
00009850  50 43 7d 0d 4a 92 16 20  43 4d 50 20 20 20 20 20  |PC}.J.. CMP     |
00009860  52 30 2c 20 23 37 3c 3c  31 0d 4a 9c 19 20 4c 44  |R0, #7<<1.J.. LD|
00009870  4d 47 54 46 44 20 52 31  33 21 2c 7b 52 39 2c 50  |MGTFD R13!,{R9,P|
00009880  43 7d 0d 4a a6 1a 20 4d  4f 56 20 20 20 20 20 52  |C}.J.. MOV     R|
00009890  30 2c 52 30 2c 20 41 53  52 20 23 31 0d 4a b0 1a  |0,R0, ASR #1.J..|
000098a0  20 4d 4f 56 20 20 20 20  20 52 31 2c 52 36 2c 20  | MOV     R1,R6, |
000098b0  41 53 52 20 23 32 0d 4a  ba 1a 20 4d 4f 56 20 20  |ASR #2.J.. MOV  |
000098c0  20 20 20 52 32 2c 52 37  2c 20 41 53 52 20 23 32  |   R2,R7, ASR #2|
000098d0  0d 4a c4 16 20 53 55 42  20 20 20 20 20 52 31 2c  |.J.. SUB     R1,|
000098e0  52 31 2c 20 23 34 0d 4a  ce 1d 20 42 4c 20 20 20  |R1, #4.J.. BL   |
000098f0  20 20 20 70 6c 6f 74 5f  73 70 72 69 74 65 5f 32  |   plot_sprite_2|
00009900  30 31 36 0d 4a d8 06 20  3a 0d 4a e2 19 20 4c 44  |016.J.. :.J.. LD|
00009910  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 39 2c 50  |MFD   R13!,{R9,P|
00009920  43 7d 0d 4a ec 06 20 3a  0d 4a f6 12 20 2e 70 6c  |C}.J.. :.J.. .pl|
00009930  61 79 5f 70 6c 61 79 65  72 32 0d 4b 00 06 20 3a  |ay_player2.K.. :|
00009940  0d 4b 0a 1a 20 4d 4f 56  20 20 20 20 20 52 31 2c  |.K.. MOV     R1,|
00009950  52 36 2c 20 4c 53 52 20  23 32 0d 4b 14 1a 20 4d  |R6, LSR #2.K.. M|
00009960  4f 56 20 20 20 20 20 52  32 2c 52 37 2c 20 4c 53  |OV     R2,R7, LS|
00009970  52 20 23 32 0d 4b 1e 1c  20 41 44 44 20 20 20 20  |R #2.K.. ADD    |
00009980  20 52 31 2c 52 31 2c 20  23 78 65 78 74 25 2f 32  | R1,R1, #xext%/2|
00009990  0d 4b 28 17 20 42 4c 20  20 20 20 20 20 72 65 61  |.K(. BL      rea|
000099a0  64 5f 70 6f 69 6e 74 0d  4b 32 13 20 43 4d 50 20  |d_point.K2. CMP |
000099b0  20 20 20 20 52 30 2c 20  23 30 0d 4b 3c 16 20 53  |    R0, #0.K<. S|
000099c0  55 42 45 51 20 20 20 52  37 2c 52 37 2c 20 23 34  |UBEQ   R7,R7, #4|
000099d0  0d 4b 46 06 20 3a 0d 4b  50 1a 20 4d 4f 56 20 20  |.KF. :.KP. MOV  |
000099e0  20 20 20 52 31 2c 52 36  2c 20 4c 53 52 20 23 32  |   R1,R6, LSR #2|
000099f0  0d 4b 5a 1a 20 4d 4f 56  20 20 20 20 20 52 32 2c  |.KZ. MOV     R2,|
00009a00  52 37 2c 20 4c 53 52 20  23 32 0d 4b 64 1c 20 41  |R7, LSR #2.Kd. A|
00009a10  44 44 20 20 20 20 20 52  31 2c 52 31 2c 20 23 78  |DD     R1,R1, #x|
00009a20  65 78 74 25 2f 33 0d 4b  6e 17 20 42 4c 20 20 20  |ext%/3.Kn. BL   |
00009a30  20 20 20 72 65 61 64 5f  70 6f 69 6e 74 0d 4b 78  |   read_point.Kx|
00009a40  13 20 43 4d 50 20 20 20  20 20 52 30 2c 20 23 30  |. CMP     R0, #0|
00009a50  0d 4b 82 16 20 41 44 44  4e 45 20 20 20 52 37 2c  |.K.. ADDNE   R7,|
00009a60  52 37 2c 20 23 34 0d 4b  8c 06 20 3a 0d 4b 96 1a  |R7, #4.K.. :.K..|
00009a70  20 4d 4f 56 20 20 20 20  20 52 31 2c 52 36 2c 20  | MOV     R1,R6, |
00009a80  4c 53 52 20 23 32 0d 4b  a0 1a 20 4d 4f 56 20 20  |LSR #2.K.. MOV  |
00009a90  20 20 20 52 32 2c 52 37  2c 20 4c 53 52 20 23 32  |   R2,R7, LSR #2|
00009aa0  0d 4b aa 1e 20 41 44 44  20 20 20 20 20 52 31 2c  |.K.. ADD     R1,|
00009ab0  52 31 2c 20 23 78 65 78  74 25 2f 33 2a 32 0d 4b  |R1, #xext%/3*2.K|
00009ac0  b4 17 20 42 4c 20 20 20  20 20 20 72 65 61 64 5f  |.. BL      read_|
00009ad0  70 6f 69 6e 74 0d 4b be  13 20 43 4d 50 20 20 20  |point.K.. CMP   |
00009ae0  20 20 52 30 2c 20 23 30  0d 4b c8 16 20 41 44 44  |  R0, #0.K.. ADD|
00009af0  4e 45 20 20 20 52 37 2c  52 37 2c 20 23 34 0d 4b  |NE   R7,R7, #4.K|
00009b00  d2 06 20 3a 0d 4b dc 1a  20 80 20 20 20 20 20 52  |.. :.K.. .     R|
00009b10  31 30 2c 52 38 2c 20 23  32 35 35 3c 3c 38 0d 4b  |10,R8, #255<<8.K|
00009b20  e6 1c 20 4d 4f 56 20 20  20 20 20 52 31 30 2c 52  |.. MOV     R10,R|
00009b30  31 30 2c 20 4c 53 52 20  23 38 0d 4b f0 06 20 3a  |10, LSR #8.K.. :|
00009b40  0d 4b fa 1a 20 4d 4f 56  20 20 20 20 20 52 31 2c  |.K.. MOV     R1,|
00009b50  52 36 2c 20 4c 53 52 20  23 32 0d 4c 04 1a 20 4d  |R6, LSR #2.L.. M|
00009b60  4f 56 20 20 20 20 20 52  32 2c 52 37 2c 20 4c 53  |OV     R2,R7, LS|
00009b70  52 20 23 32 0d 4c 0e 1c  20 41 44 44 20 20 20 20  |R #2.L.. ADD    |
00009b80  20 52 31 2c 52 31 2c 20  23 78 65 78 74 25 2b 31  | R1,R1, #xext%+1|
00009b90  0d 4c 18 16 20 41 44 44  20 20 20 20 20 52 32 2c  |.L.. ADD     R2,|
00009ba0  52 32 2c 20 23 34 0d 4c  22 17 20 42 4c 20 20 20  |R2, #4.L". BL   |
00009bb0  20 20 20 72 65 61 64 5f  70 6f 69 6e 74 0d 4c 2c  |   read_point.L,|
00009bc0  13 20 43 4d 50 20 20 20  20 20 52 30 2c 20 23 30  |. CMP     R0, #0|
00009bd0  0d 4c 36 19 20 42 4e 45  20 20 20 20 20 70 32 5f  |.L6. BNE     p2_|
00009be0  6e 6f 74 5f 72 69 67 68  74 0d 4c 40 1a 20 4d 4f  |not_right.L@. MO|
00009bf0  56 20 20 20 20 20 52 31  2c 52 36 2c 20 4c 53 52  |V     R1,R6, LSR|
00009c00  20 23 32 0d 4c 4a 1a 20  4d 4f 56 20 20 20 20 20  | #2.LJ. MOV     |
00009c10  52 32 2c 52 37 2c 20 4c  53 52 20 23 32 0d 4c 54  |R2,R7, LSR #2.LT|
00009c20  1a 20 41 44 44 20 20 20  20 20 52 31 2c 52 31 2c  |. ADD     R1,R1,|
00009c30  20 23 78 65 78 74 25 0d  4c 5e 1c 20 41 44 44 20  | #xext%.L^. ADD |
00009c40  20 20 20 20 52 32 2c 52  32 2c 20 23 79 65 78 74  |    R2,R2, #yext|
00009c50  25 2d 32 0d 4c 68 17 20  42 4c 20 20 20 20 20 20  |%-2.Lh. BL      |
00009c60  72 65 61 64 5f 70 6f 69  6e 74 0d 4c 72 13 20 43  |read_point.Lr. C|
00009c70  4d 50 20 20 20 20 20 52  30 2c 20 23 30 0d 4c 7c  |MP     R0, #0.L||
00009c80  19 20 42 4e 45 20 20 20  20 20 70 32 5f 6e 6f 74  |. BNE     p2_not|
00009c90  5f 72 69 67 68 74 0d 4c  86 15 20 4d 4f 56 20 20  |_right.L.. MOV  |
00009ca0  20 20 20 52 30 2c 20 23  31 32 39 0d 4c 90 13 20  |   R0, #129.L.. |
00009cb0  4d 4f 56 20 20 20 20 20  52 31 2c 20 23 30 0d 4c  |MOV     R1, #0.L|
00009cc0  9a 18 20 53 55 42 20 20  20 20 20 52 31 2c 52 31  |.. SUB     R1,R1|
00009cd0  2c 20 23 31 32 34 0d 4c  a4 15 20 4d 4f 56 20 20  |, #124.L.. MOV  |
00009ce0  20 20 20 52 32 2c 20 23  32 35 35 0d 4c ae 16 20  |   R2, #255.L.. |
00009cf0  53 57 49 20 20 20 20 20  22 4f 53 5f 42 79 74 65  |SWI     "OS_Byte|
00009d00  22 0d 4c b8 15 20 43 4d  50 20 20 20 20 20 52 31  |".L.. CMP     R1|
00009d10  2c 20 23 32 35 35 0d 4c  c2 19 20 42 4e 45 20 20  |, #255.L.. BNE  |
00009d20  20 20 20 70 32 5f 6e 6f  74 5f 72 69 67 68 74 0d  |   p2_not_right.|
00009d30  4c cc 18 20 41 44 44 20  20 20 20 20 52 31 30 2c  |L.. ADD     R10,|
00009d40  52 31 30 2c 20 23 34 0d  4c d6 16 20 42 49 43 20  |R10, #4.L.. BIC |
00009d50  20 20 20 20 52 38 2c 52  38 2c 20 23 31 0d 4c e0  |    R8,R8, #1.L.|
00009d60  12 20 2e 70 32 5f 6e 6f  74 5f 72 69 67 68 74 0d  |. .p2_not_right.|
00009d70  4c ea 06 20 3a 0d 4c f4  1a 20 4d 4f 56 20 20 20  |L.. :.L.. MOV   |
00009d80  20 20 52 31 2c 52 36 2c  20 4c 53 52 20 23 32 0d  |  R1,R6, LSR #2.|
00009d90  4c fe 1a 20 4d 4f 56 20  20 20 20 20 52 32 2c 52  |L.. MOV     R2,R|
00009da0  37 2c 20 4c 53 52 20 23  32 0d 4d 08 16 20 53 55  |7, LSR #2.M.. SU|
00009db0  42 20 20 20 20 20 52 31  2c 52 31 2c 20 23 31 0d  |B     R1,R1, #1.|
00009dc0  4d 12 16 20 41 44 44 20  20 20 20 20 52 32 2c 52  |M.. ADD     R2,R|
00009dd0  32 2c 20 23 34 0d 4d 1c  17 20 42 4c 20 20 20 20  |2, #4.M.. BL    |
00009de0  20 20 72 65 61 64 5f 70  6f 69 6e 74 0d 4d 26 13  |  read_point.M&.|
00009df0  20 43 4d 50 20 20 20 20  20 52 30 2c 20 23 30 0d  | CMP     R0, #0.|
00009e00  4d 30 18 20 42 4e 45 20  20 20 20 20 70 32 5f 6e  |M0. BNE     p2_n|
00009e10  6f 74 5f 6c 65 66 74 0d  4d 3a 1a 20 4d 4f 56 20  |ot_left.M:. MOV |
00009e20  20 20 20 20 52 31 2c 52  36 2c 20 4c 53 52 20 23  |    R1,R6, LSR #|
00009e30  32 0d 4d 44 1a 20 4d 4f  56 20 20 20 20 20 52 32  |2.MD. MOV     R2|
00009e40  2c 52 37 2c 20 4c 53 52  20 23 32 0d 4d 4e 16 20  |,R7, LSR #2.MN. |
00009e50  53 55 42 20 20 20 20 20  52 31 2c 52 31 2c 20 23  |SUB     R1,R1, #|
00009e60  31 0d 4d 58 1c 20 41 44  44 20 20 20 20 20 52 32  |1.MX. ADD     R2|
00009e70  2c 52 32 2c 20 23 79 65  78 74 25 2d 32 0d 4d 62  |,R2, #yext%-2.Mb|
00009e80  17 20 42 4c 20 20 20 20  20 20 72 65 61 64 5f 70  |. BL      read_p|
00009e90  6f 69 6e 74 0d 4d 6c 13  20 43 4d 50 20 20 20 20  |oint.Ml. CMP    |
00009ea0  20 52 30 2c 20 23 30 0d  4d 76 18 20 42 4e 45 20  | R0, #0.Mv. BNE |
00009eb0  20 20 20 20 70 32 5f 6e  6f 74 5f 6c 65 66 74 0d  |    p2_not_left.|
00009ec0  4d 80 15 20 4d 4f 56 20  20 20 20 20 52 30 2c 20  |M.. MOV     R0, |
00009ed0  23 31 32 39 0d 4d 8a 13  20 4d 4f 56 20 20 20 20  |#129.M.. MOV    |
00009ee0  20 52 31 2c 20 23 30 0d  4d 94 18 20 53 55 42 20  | R1, #0.M.. SUB |
00009ef0  20 20 20 20 52 31 2c 52  31 2c 20 23 31 32 33 0d  |    R1,R1, #123.|
00009f00  4d 9e 15 20 4d 4f 56 20  20 20 20 20 52 32 2c 20  |M.. MOV     R2, |
00009f10  23 32 35 35 0d 4d a8 16  20 53 57 49 20 20 20 20  |#255.M.. SWI    |
00009f20  20 22 4f 53 5f 42 79 74  65 22 0d 4d b2 15 20 43  | "OS_Byte".M.. C|
00009f30  4d 50 20 20 20 20 20 52  31 2c 20 23 32 35 35 0d  |MP     R1, #255.|
00009f40  4d bc 18 20 42 4e 45 20  20 20 20 20 70 32 5f 6e  |M.. BNE     p2_n|
00009f50  6f 74 5f 6c 65 66 74 0d  4d c6 18 20 53 55 42 20  |ot_left.M.. SUB |
00009f60  20 20 20 20 52 31 30 2c  52 31 30 2c 20 23 34 0d  |    R10,R10, #4.|
00009f70  4d d0 15 20 84 52 20 20  20 20 20 52 38 2c 52 38  |M.. .R     R8,R8|
00009f80  2c 20 23 31 0d 4d da 11  20 2e 70 32 5f 6e 6f 74  |, #1.M.. .p2_not|
00009f90  5f 6c 65 66 74 0d 4d e4  06 20 3a 0d 4d ee 16 20  |_left.M.. :.M.. |
00009fa0  43 4d 50 20 20 20 20 20  52 31 30 2c 20 23 31 32  |CMP     R10, #12|
00009fb0  38 0d 4d f8 18 20 42 45  51 20 20 20 20 20 70 32  |8.M.. BEQ     p2|
00009fc0  5f 73 69 64 65 77 61 79  73 0d 4e 02 15 20 42 47  |_sideways.N.. BG|
00009fd0  54 20 20 20 20 20 70 32  5f 72 69 67 68 74 0d 4e  |T     p2_right.N|
00009fe0  0c 1a 20 4d 4f 56 20 20  20 20 20 52 31 2c 52 36  |.. MOV     R1,R6|
00009ff0  2c 20 4c 53 52 20 23 32  0d 4e 16 1a 20 4d 4f 56  |, LSR #2.N.. MOV|
0000a000  20 20 20 20 20 52 32 2c  52 37 2c 20 4c 53 52 20  |     R2,R7, LSR |
0000a010  23 32 0d 4e 20 16 20 53  55 42 20 20 20 20 20 52  |#2.N . SUB     R|
0000a020  31 2c 52 31 2c 20 23 31  0d 4e 2a 16 20 41 44 44  |1,R1, #1.N*. ADD|
0000a030  20 20 20 20 20 52 32 2c  52 32 2c 20 23 32 0d 4e  |     R2,R2, #2.N|
0000a040  34 17 20 42 4c 20 20 20  20 20 20 72 65 61 64 5f  |4. BL      read_|
0000a050  70 6f 69 6e 74 0d 4e 3e  13 20 43 4d 50 20 20 20  |point.N>. CMP   |
0000a060  20 20 52 30 2c 20 23 30  0d 4e 48 16 20 4d 4f 56  |  R0, #0.NH. MOV|
0000a070  4e 45 20 20 20 52 31 30  2c 20 23 31 32 38 0d 4e  |NE   R10, #128.N|
0000a080  52 1a 20 4d 4f 56 20 20  20 20 20 52 31 2c 52 36  |R. MOV     R1,R6|
0000a090  2c 20 4c 53 52 20 23 32  0d 4e 5c 1a 20 4d 4f 56  |, LSR #2.N\. MOV|
0000a0a0  20 20 20 20 20 52 32 2c  52 37 2c 20 4c 53 52 20  |     R2,R7, LSR |
0000a0b0  23 32 0d 4e 66 16 20 53  55 42 20 20 20 20 20 52  |#2.Nf. SUB     R|
0000a0c0  31 2c 52 31 2c 20 23 31  0d 4e 70 1c 20 41 44 44  |1,R1, #1.Np. ADD|
0000a0d0  20 20 20 20 20 52 32 2c  52 32 2c 20 23 79 65 78  |     R2,R2, #yex|
0000a0e0  74 25 2d 32 0d 4e 7a 17  20 42 4c 20 20 20 20 20  |t%-2.Nz. BL     |
0000a0f0  20 72 65 61 64 5f 70 6f  69 6e 74 0d 4e 84 13 20  | read_point.N.. |
0000a100  43 4d 50 20 20 20 20 20  52 30 2c 20 23 30 0d 4e  |CMP     R0, #0.N|
0000a110  8e 16 20 4d 4f 56 4e 45  20 20 20 52 31 30 2c 20  |.. MOVNE   R10, |
0000a120  23 31 32 38 0d 4e 98 18  20 42 20 20 20 20 20 20  |#128.N.. B      |
0000a130  20 70 32 5f 73 69 64 65  77 61 79 73 0d 4e a2 0e  | p2_sideways.N..|
0000a140  20 2e 70 32 5f 72 69 67  68 74 0d 4e ac 1a 20 4d  | .p2_right.N.. M|
0000a150  4f 56 20 20 20 20 20 52  31 2c 52 36 2c 20 4c 53  |OV     R1,R6, LS|
0000a160  52 20 23 32 0d 4e b6 1a  20 4d 4f 56 20 20 20 20  |R #2.N.. MOV    |
0000a170  20 52 32 2c 52 37 2c 20  4c 53 52 20 23 32 0d 4e  | R2,R7, LSR #2.N|
0000a180  c0 1a 20 41 44 44 20 20  20 20 20 52 31 2c 52 31  |.. ADD     R1,R1|
0000a190  2c 20 23 78 65 78 74 25  0d 4e ca 16 20 41 44 44  |, #xext%.N.. ADD|
0000a1a0  20 20 20 20 20 52 32 2c  52 32 2c 20 23 32 0d 4e  |     R2,R2, #2.N|
0000a1b0  d4 17 20 42 4c 20 20 20  20 20 20 72 65 61 64 5f  |.. BL      read_|
0000a1c0  70 6f 69 6e 74 0d 4e de  13 20 43 4d 50 20 20 20  |point.N.. CMP   |
0000a1d0  20 20 52 30 2c 20 23 30  0d 4e e8 16 20 4d 4f 56  |  R0, #0.N.. MOV|
0000a1e0  4e 45 20 20 20 52 31 30  2c 20 23 31 32 38 0d 4e  |NE   R10, #128.N|
0000a1f0  f2 1a 20 4d 4f 56 20 20  20 20 20 52 31 2c 52 36  |.. MOV     R1,R6|
0000a200  2c 20 4c 53 52 20 23 32  0d 4e fc 1a 20 4d 4f 56  |, LSR #2.N.. MOV|
0000a210  20 20 20 20 20 52 32 2c  52 37 2c 20 4c 53 52 20  |     R2,R7, LSR |
0000a220  23 32 0d 4f 06 1a 20 41  44 44 20 20 20 20 20 52  |#2.O.. ADD     R|
0000a230  31 2c 52 31 2c 20 23 78  65 78 74 25 0d 4f 10 1c  |1,R1, #xext%.O..|
0000a240  20 41 44 44 20 20 20 20  20 52 32 2c 52 32 2c 20  | ADD     R2,R2, |
0000a250  23 79 65 78 74 25 2d 32  0d 4f 1a 17 20 42 4c 20  |#yext%-2.O.. BL |
0000a260  20 20 20 20 20 72 65 61  64 5f 70 6f 69 6e 74 0d  |     read_point.|
0000a270  4f 24 13 20 43 4d 50 20  20 20 20 20 52 30 2c 20  |O$. CMP     R0, |
0000a280  23 30 0d 4f 2e 16 20 4d  4f 56 4e 45 20 20 20 52  |#0.O.. MOVNE   R|
0000a290  31 30 2c 20 23 31 32 38  0d 4f 38 18 20 42 20 20  |10, #128.O8. B  |
0000a2a0  20 20 20 20 20 70 32 5f  73 69 64 65 77 61 79 73  |     p2_sideways|
0000a2b0  0d 4f 42 11 20 2e 70 32  5f 73 69 64 65 77 61 79  |.OB. .p2_sideway|
0000a2c0  73 0d 4f 4c 1b 20 43 4d  50 20 20 20 20 20 52 31  |s.OL. CMP     R1|
0000a2d0  30 2c 20 23 31 32 38 2b  32 35 2a 32 0d 4f 56 1b  |0, #128+25*2.OV.|
0000a2e0  20 4d 4f 56 47 54 20 20  20 52 31 30 2c 20 23 31  | MOVGT   R10, #1|
0000a2f0  32 38 2b 32 35 2a 32 0d  4f 60 1b 20 43 4d 50 20  |28+25*2.O`. CMP |
0000a300  20 20 20 20 52 31 30 2c  20 23 31 32 38 2d 32 35  |    R10, #128-25|
0000a310  2a 32 0d 4f 6a 1b 20 4d  4f 56 4c 54 20 20 20 52  |*2.Oj. MOVLT   R|
0000a320  31 30 2c 20 23 31 32 38  2d 32 35 2a 32 0d 4f 74  |10, #128-25*2.Ot|
0000a330  16 20 43 4d 50 20 20 20  20 20 52 31 30 2c 20 23  |. CMP     R10, #|
0000a340  31 32 38 0d 4f 7e 18 20  41 44 44 4c 54 20 20 20  |128.O~. ADDLT   |
0000a350  52 31 30 2c 52 31 30 2c  20 23 31 0d 4f 88 18 20  |R10,R10, #1.O.. |
0000a360  53 55 42 47 54 20 20 20  52 31 30 2c 52 31 30 2c  |SUBGT   R10,R10,|
0000a370  20 23 31 0d 4f 92 1b 20  42 49 43 20 20 20 20 20  | #1.O.. BIC     |
0000a380  52 38 2c 52 38 2c 20 23  32 35 35 3c 3c 38 0d 4f  |R8,R8, #255<<8.O|
0000a390  9c 1d 20 84 52 20 20 20  20 20 52 38 2c 52 38 2c  |.. .R     R8,R8,|
0000a3a0  52 31 30 2c 20 4c 53 4c  20 23 38 0d 4f a6 1a 20  |R10, LSL #8.O.. |
0000a3b0  53 55 42 20 20 20 20 20  52 31 30 2c 52 31 30 2c  |SUB     R10,R10,|
0000a3c0  20 23 31 32 38 0d 4f b0  1e 20 41 44 44 20 20 20  | #128.O.. ADD   |
0000a3d0  20 20 52 36 2c 52 36 2c  52 31 30 2c 20 41 53 52  |  R6,R6,R10, ASR|
0000a3e0  20 23 33 0d 4f ba 06 20  3a 0d 4f c4 1b 20 80 20  | #3.O.. :.O.. . |
0000a3f0  20 20 20 20 52 31 30 2c  52 38 2c 20 23 32 35 35  |    R10,R8, #255|
0000a400  3c 3c 31 36 0d 4f ce 1d  20 4d 4f 56 20 20 20 20  |<<16.O.. MOV    |
0000a410  20 52 31 30 2c 52 31 30  2c 20 4c 53 52 20 23 31  | R10,R10, LSR #1|
0000a420  36 0d 4f d8 06 20 3a 0d  4f e2 1a 20 4d 4f 56 20  |6.O.. :.O.. MOV |
0000a430  20 20 20 20 52 31 2c 52  36 2c 20 4c 53 52 20 23  |    R1,R6, LSR #|
0000a440  32 0d 4f ec 1a 20 4d 4f  56 20 20 20 20 20 52 32  |2.O.. MOV     R2|
0000a450  2c 52 37 2c 20 4c 53 52  20 23 32 0d 4f f6 1c 20  |,R7, LSR #2.O.. |
0000a460  41 44 44 20 20 20 20 20  52 31 2c 52 31 2c 20 23  |ADD     R1,R1, #|
0000a470  78 65 78 74 25 2f 32 0d  50 00 1a 20 41 44 44 20  |xext%/2.P.. ADD |
0000a480  20 20 20 20 52 32 2c 52  32 2c 20 23 79 65 78 74  |    R2,R2, #yext|
0000a490  25 0d 50 0a 17 20 42 4c  20 20 20 20 20 20 72 65  |%.P.. BL      re|
0000a4a0  61 64 5f 70 6f 69 6e 74  0d 50 14 13 20 43 4d 50  |ad_point.P.. CMP|
0000a4b0  20 20 20 20 20 52 30 2c  20 23 30 0d 50 1e 16 20  |     R0, #0.P.. |
0000a4c0  42 4e 45 20 20 20 20 20  70 32 5f 6e 6f 74 5f 75  |BNE     p2_not_u|
0000a4d0  70 0d 50 28 1a 3b 4d 4f  56 20 20 20 20 20 52 31  |p.P(.;MOV     R1|
0000a4e0  2c 52 36 2c 20 4c 53 52  20 23 32 0d 50 32 1a 3b  |,R6, LSR #2.P2.;|
0000a4f0  4d 4f 56 20 20 20 20 20  52 32 2c 52 37 2c 20 4c  |MOV     R2,R7, L|
0000a500  53 52 20 23 32 0d 50 3c  1c 3b 41 44 44 20 20 20  |SR #2.P<.;ADD   |
0000a510  20 20 52 31 2c 52 31 2c  20 23 78 65 78 74 25 2f  |  R1,R1, #xext%/|
0000a520  32 0d 50 46 1a 3b 41 44  44 20 20 20 20 20 52 32  |2.PF.;ADD     R2|
0000a530  2c 52 32 2c 20 23 79 65  78 74 25 0d 50 50 17 3b  |,R2, #yext%.PP.;|
0000a540  42 4c 20 20 20 20 20 20  72 65 61 64 5f 70 6f 69  |BL      read_poi|
0000a550  6e 74 0d 50 5a 13 3b 43  4d 50 20 20 20 20 20 52  |nt.PZ.;CMP     R|
0000a560  30 2c 20 23 30 0d 50 64  16 3b 42 4e 45 20 20 20  |0, #0.Pd.;BNE   |
0000a570  20 20 70 32 5f 6e 6f 74  5f 75 70 0d 50 6e 15 20  |  p2_not_up.Pn. |
0000a580  4d 4f 56 20 20 20 20 20  52 30 2c 20 23 31 32 39  |MOV     R0, #129|
0000a590  0d 50 78 13 20 4d 4f 56  20 20 20 20 20 52 31 2c  |.Px. MOV     R1,|
0000a5a0  20 23 30 0d 50 82 17 20  53 55 42 20 20 20 20 20  | #0.P.. SUB     |
0000a5b0  52 31 2c 52 31 2c 20 23  32 37 0d 50 8c 15 20 4d  |R1,R1, #27.P.. M|
0000a5c0  4f 56 20 20 20 20 20 52  32 2c 20 23 32 35 35 0d  |OV     R2, #255.|
0000a5d0  50 96 16 20 53 57 49 20  20 20 20 20 22 4f 53 5f  |P.. SWI     "OS_|
0000a5e0  42 79 74 65 22 0d 50 a0  15 20 43 4d 50 20 20 20  |Byte".P.. CMP   |
0000a5f0  20 20 52 31 2c 20 23 32  35 35 0d 50 aa 18 20 41  |  R1, #255.P.. A|
0000a600  44 44 45 51 20 20 20 52  31 30 2c 52 31 30 2c 20  |DDEQ   R10,R10, |
0000a610  23 34 0d 50 b4 0f 20 2e  70 32 5f 6e 6f 74 5f 75  |#4.P.. .p2_not_u|
0000a620  70 0d 50 be 06 20 3a 0d  50 c8 1a 20 4d 4f 56 20  |p.P.. :.P.. MOV |
0000a630  20 20 20 20 52 31 2c 52  36 2c 20 4c 53 52 20 23  |    R1,R6, LSR #|
0000a640  32 0d 50 d2 1a 20 4d 4f  56 20 20 20 20 20 52 32  |2.P.. MOV     R2|
0000a650  2c 52 37 2c 20 4c 53 52  20 23 32 0d 50 dc 1c 20  |,R7, LSR #2.P.. |
0000a660  41 44 44 20 20 20 20 20  52 31 2c 52 31 2c 20 23  |ADD     R1,R1, #|
0000a670  78 65 78 74 25 2d 32 0d  50 e6 17 20 42 4c 20 20  |xext%-2.P.. BL  |
0000a680  20 20 20 20 72 65 61 64  5f 70 6f 69 6e 74 0d 50  |    read_point.P|
0000a690  f0 13 20 43 4d 50 20 20  20 20 20 52 30 2c 20 23  |.. CMP     R0, #|
0000a6a0  30 0d 50 fa 18 20 42 4e  45 20 20 20 20 20 70 32  |0.P.. BNE     p2|
0000a6b0  5f 6e 6f 74 5f 64 6f 77  6e 0d 51 04 1a 20 4d 4f  |_not_down.Q.. MO|
0000a6c0  56 20 20 20 20 20 52 31  2c 52 36 2c 20 4c 53 52  |V     R1,R6, LSR|
0000a6d0  20 23 32 0d 51 0e 1a 20  4d 4f 56 20 20 20 20 20  | #2.Q.. MOV     |
0000a6e0  52 32 2c 52 37 2c 20 4c  53 52 20 23 32 0d 51 18  |R2,R7, LSR #2.Q.|
0000a6f0  16 20 41 44 44 20 20 20  20 20 52 31 2c 52 31 2c  |. ADD     R1,R1,|
0000a700  20 23 32 0d 51 22 17 20  42 4c 20 20 20 20 20 20  | #2.Q". BL      |
0000a710  72 65 61 64 5f 70 6f 69  6e 74 0d 51 2c 13 20 43  |read_point.Q,. C|
0000a720  4d 50 20 20 20 20 20 52  30 2c 20 23 30 0d 51 36  |MP     R0, #0.Q6|
0000a730  18 20 42 4e 45 20 20 20  20 20 70 32 5f 6e 6f 74  |. BNE     p2_not|
0000a740  5f 64 6f 77 6e 0d 51 40  15 20 4d 4f 56 20 20 20  |_down.Q@. MOV   |
0000a750  20 20 52 30 2c 20 23 31  32 39 0d 51 4a 13 20 4d  |  R0, #129.QJ. M|
0000a760  4f 56 20 20 20 20 20 52  31 2c 20 23 30 0d 51 54  |OV     R1, #0.QT|
0000a770  18 20 53 55 42 20 20 20  20 20 52 31 2c 52 31 2c  |. SUB     R1,R1,|
0000a780  20 23 31 30 39 0d 51 5e  15 20 4d 4f 56 20 20 20  | #109.Q^. MOV   |
0000a790  20 20 52 32 2c 20 23 32  35 35 0d 51 68 16 20 53  |  R2, #255.Qh. S|
0000a7a0  57 49 20 20 20 20 20 22  4f 53 5f 42 79 74 65 22  |WI     "OS_Byte"|
0000a7b0  0d 51 72 15 20 43 4d 50  20 20 20 20 20 52 31 2c  |.Qr. CMP     R1,|
0000a7c0  20 23 32 35 35 0d 51 7c  18 20 53 55 42 45 51 20  | #255.Q|. SUBEQ |
0000a7d0  20 20 52 31 30 2c 52 31  30 2c 20 23 32 0d 51 86  |  R10,R10, #2.Q.|
0000a7e0  11 20 2e 70 32 5f 6e 6f  74 5f 64 6f 77 6e 0d 51  |. .p2_not_down.Q|
0000a7f0  90 06 20 3a 0d 51 9a 18  20 53 55 42 20 20 20 20  |.. :.Q.. SUB    |
0000a800  20 52 31 30 2c 52 31 30  2c 20 23 31 0d 51 a4 06  | R10,R10, #1.Q..|
0000a810  20 3a 0d 51 ae 16 20 43  4d 50 20 20 20 20 20 52  | :.Q.. CMP     R|
0000a820  31 30 2c 20 23 31 32 38  0d 51 b8 12 20 42 45 51  |10, #128.Q.. BEQ|
0000a830  20 20 20 20 20 70 32 5f  75 64 0d 51 c2 12 20 42  |     p2_ud.Q.. B|
0000a840  47 54 20 20 20 20 20 70  32 5f 75 70 0d 51 cc 1a  |GT     p2_up.Q..|
0000a850  20 4d 4f 56 20 20 20 20  20 52 31 2c 52 36 2c 20  | MOV     R1,R6, |
0000a860  4c 53 52 20 23 32 0d 51  d6 1a 20 4d 4f 56 20 20  |LSR #2.Q.. MOV  |
0000a870  20 20 20 52 32 2c 52 37  2c 20 4c 53 52 20 23 32  |   R2,R7, LSR #2|
0000a880  0d 51 e0 1c 20 41 44 44  20 20 20 20 20 52 31 2c  |.Q.. ADD     R1,|
0000a890  52 31 2c 20 23 78 65 78  74 25 2f 32 0d 51 ea 16  |R1, #xext%/2.Q..|
0000a8a0  20 53 55 42 20 20 20 20  20 52 32 2c 52 32 2c 20  | SUB     R2,R2, |
0000a8b0  23 31 0d 51 f4 17 20 42  4c 20 20 20 20 20 20 72  |#1.Q.. BL      r|
0000a8c0  65 61 64 5f 70 6f 69 6e  74 0d 51 fe 13 20 43 4d  |ead_point.Q.. CM|
0000a8d0  50 20 20 20 20 20 52 30  2c 20 23 30 0d 52 08 16  |P     R0, #0.R..|
0000a8e0  20 4d 4f 56 4e 45 20 20  20 52 31 30 2c 20 23 31  | MOVNE   R10, #1|
0000a8f0  32 38 0d 52 12 12 20 42  20 20 20 20 20 20 20 70  |28.R.. B       p|
0000a900  32 5f 75 64 0d 52 1c 0b  20 2e 70 32 5f 75 70 0d  |2_ud.R.. .p2_up.|
0000a910  52 26 1a 20 4d 4f 56 20  20 20 20 20 52 31 2c 52  |R&. MOV     R1,R|
0000a920  36 2c 20 4c 53 52 20 23  32 0d 52 30 1a 20 4d 4f  |6, LSR #2.R0. MO|
0000a930  56 20 20 20 20 20 52 32  2c 52 37 2c 20 4c 53 52  |V     R2,R7, LSR|
0000a940  20 23 32 0d 52 3a 1e 20  41 44 44 20 20 20 20 20  | #2.R:. ADD     |
0000a950  52 31 2c 52 31 2c 20 23  78 65 78 74 25 2f 32 2b  |R1,R1, #xext%/2+|
0000a960  32 0d 52 44 1a 20 41 44  44 20 20 20 20 20 52 32  |2.RD. ADD     R2|
0000a970  2c 52 32 2c 20 23 79 65  78 74 25 0d 52 4e 17 20  |,R2, #yext%.RN. |
0000a980  42 4c 20 20 20 20 20 20  72 65 61 64 5f 70 6f 69  |BL      read_poi|
0000a990  6e 74 0d 52 58 13 20 43  4d 50 20 20 20 20 20 52  |nt.RX. CMP     R|
0000a9a0  30 2c 20 23 30 0d 52 62  16 20 4d 4f 56 4e 45 20  |0, #0.Rb. MOVNE |
0000a9b0  20 20 52 31 30 2c 20 23  31 32 38 0d 52 6c 1a 20  |  R10, #128.Rl. |
0000a9c0  4d 4f 56 20 20 20 20 20  52 31 2c 52 36 2c 20 4c  |MOV     R1,R6, L|
0000a9d0  53 52 20 23 32 0d 52 76  1a 20 4d 4f 56 20 20 20  |SR #2.Rv. MOV   |
0000a9e0  20 20 52 32 2c 52 37 2c  20 4c 53 52 20 23 32 0d  |  R2,R7, LSR #2.|
0000a9f0  52 80 1e 20 41 44 44 20  20 20 20 20 52 31 2c 52  |R.. ADD     R1,R|
0000aa00  31 2c 20 23 78 65 78 74  25 2f 32 2d 32 0d 52 8a  |1, #xext%/2-2.R.|
0000aa10  1a 20 41 44 44 20 20 20  20 20 52 32 2c 52 32 2c  |. ADD     R2,R2,|
0000aa20  20 23 79 65 78 74 25 0d  52 94 17 20 42 4c 20 20  | #yext%.R.. BL  |
0000aa30  20 20 20 20 72 65 61 64  5f 70 6f 69 6e 74 0d 52  |    read_point.R|
0000aa40  9e 13 20 43 4d 50 20 20  20 20 20 52 30 2c 20 23  |.. CMP     R0, #|
0000aa50  30 0d 52 a8 16 20 4d 4f  56 4e 45 20 20 20 52 31  |0.R.. MOVNE   R1|
0000aa60  30 2c 20 23 31 32 38 0d  52 b2 12 20 42 20 20 20  |0, #128.R.. B   |
0000aa70  20 20 20 20 70 32 5f 75  64 0d 52 bc 0b 20 2e 70  |    p2_ud.R.. .p|
0000aa80  32 5f 75 64 0d 52 c6 1b  20 43 4d 50 20 20 20 20  |2_ud.R.. CMP    |
0000aa90  20 52 31 30 2c 20 23 31  32 38 2b 31 31 2a 34 0d  | R10, #128+11*4.|
0000aaa0  52 d0 1b 20 4d 4f 56 47  54 20 20 20 52 31 30 2c  |R.. MOVGT   R10,|
0000aab0  20 23 31 32 38 2b 31 31  2a 34 0d 52 da 1a 20 43  | #128+11*4.R.. C|
0000aac0  4d 50 20 20 20 20 20 52  31 30 2c 20 23 31 32 38  |MP     R10, #128|
0000aad0  2d 38 2a 34 0d 52 e4 1a  20 4d 4f 56 4c 54 20 20  |-8*4.R.. MOVLT  |
0000aae0  20 52 31 30 2c 20 23 31  32 38 2d 38 2a 34 0d 52  | R10, #128-8*4.R|
0000aaf0  ee 16 20 43 4d 50 20 20  20 20 20 52 31 30 2c 20  |.. CMP     R10, |
0000ab00  23 31 32 38 0d 52 f8 1c  20 42 49 43 20 20 20 20  |#128.R.. BIC    |
0000ab10  20 52 38 2c 52 38 2c 20  23 32 35 35 3c 3c 31 36  | R8,R8, #255<<16|
0000ab20  0d 53 02 1e 20 84 52 20  20 20 20 20 52 38 2c 52  |.S.. .R     R8,R|
0000ab30  38 2c 52 31 30 2c 20 4c  53 4c 20 23 31 36 0d 53  |8,R10, LSL #16.S|
0000ab40  0c 1a 20 53 55 42 20 20  20 20 20 52 31 30 2c 52  |.. SUB     R10,R|
0000ab50  31 30 2c 20 23 31 32 38  0d 53 16 1e 20 41 44 44  |10, #128.S.. ADD|
0000ab60  20 20 20 20 20 52 37 2c  52 37 2c 52 31 30 2c 20  |     R7,R7,R10, |
0000ab70  41 53 52 20 23 32 0d 53  20 06 20 3a 0d 53 2a 1e  |ASR #2.S . :.S*.|
0000ab80  20 4c 44 52 20 20 20 20  20 52 30 2c 20 61 64 72  | LDR     R0, adr|
0000ab90  5f 70 32 5f 77 65 61 70  6f 6e 0d 53 34 14 20 4c  |_p2_weapon.S4. L|
0000aba0  44 52 20 20 20 20 20 52  30 2c 5b 52 30 5d 0d 53  |DR     R0,[R0].S|
0000abb0  3e 13 20 43 4d 50 20 20  20 20 20 52 30 2c 20 23  |>. CMP     R0, #|
0000abc0  32 0d 53 48 1b 20 42 45  51 20 20 20 20 20 70 32  |2.SH. BEQ     p2|
0000abd0  5f 66 69 72 65 5f 70 69  73 74 6f 6c 0d 53 52 13  |_fire_pistol.SR.|
0000abe0  20 43 4d 50 20 20 20 20  20 52 30 2c 20 23 33 0d  | CMP     R0, #3.|
0000abf0  53 5c 18 20 42 45 51 20  20 20 20 20 70 32 5f 66  |S\. BEQ     p2_f|
0000ac00  69 72 65 5f 67 75 6e 0d  53 66 13 20 43 4d 50 20  |ire_gun.Sf. CMP |
0000ac10  20 20 20 20 52 30 2c 20  23 34 0d 53 70 1b 20 42  |    R0, #4.Sp. B|
0000ac20  45 51 20 20 20 20 20 70  32 5f 66 69 72 65 5f 6d  |EQ     p2_fire_m|
0000ac30  6f 72 74 61 72 0d 53 7a  13 20 43 4d 50 20 20 20  |ortar.Sz. CMP   |
0000ac40  20 20 52 30 2c 20 23 35  0d 53 84 1b 20 42 45 51  |  R0, #5.S.. BEQ|
0000ac50  20 20 20 20 20 70 32 5f  66 69 72 65 5f 68 6f 6d  |     p2_fire_hom|
0000ac60  69 6e 67 0d 53 8e 13 20  43 4d 50 20 20 20 20 20  |ing.S.. CMP     |
0000ac70  52 30 2c 20 23 36 0d 53  98 1c 20 42 45 51 20 20  |R0, #6.S.. BEQ  |
0000ac80  20 20 20 70 32 5f 66 69  72 65 5f 73 65 65 6b 69  |   p2_fire_seeki|
0000ac90  6e 67 0d 53 a2 13 20 43  4d 50 20 20 20 20 20 52  |ng.S.. CMP     R|
0000aca0  30 2c 20 23 37 0d 53 ac  1d 20 42 45 51 20 20 20  |0, #7.S.. BEQ   |
0000acb0  20 20 70 32 5f 66 69 72  65 5f 76 65 72 74 69 63  |  p2_fire_vertic|
0000acc0  61 6c 0d 53 b6 13 20 43  4d 50 20 20 20 20 20 52  |al.S.. CMP     R|
0000acd0  30 2c 20 23 38 0d 53 c0  1a 20 42 45 51 20 20 20  |0, #8.S.. BEQ   |
0000ace0  20 20 70 32 5f 66 69 72  65 5f 66 6c 61 6d 65 0d  |  p2_fire_flame.|
0000acf0  53 ca 13 20 43 4d 50 20  20 20 20 20 52 30 2c 20  |S.. CMP     R0, |
0000ad00  23 39 0d 53 d4 19 20 42  45 51 20 20 20 20 20 70  |#9.S.. BEQ     p|
0000ad10  32 5f 66 69 72 65 5f 62  6f 6d 62 0d 53 de 06 20  |2_fire_bomb.S.. |
0000ad20  3a 0d 53 e8 14 20 2e 70  32 5f 66 69 72 65 5f 70  |:.S.. .p2_fire_p|
0000ad30  69 73 74 6f 6c 0d 53 f2  18 20 4c 44 52 20 20 20  |istol.S.. LDR   |
0000ad40  20 20 52 30 2c 20 70 32  5f 66 69 72 65 0d 53 fc  |  R0, p2_fire.S.|
0000ad50  13 20 43 4d 50 20 20 20  20 20 52 30 2c 20 23 30  |. CMP     R0, #0|
0000ad60  0d 54 06 1b 20 42 45 51  20 20 20 20 20 70 32 5f  |.T.. BEQ     p2_|
0000ad70  70 69 73 74 6f 6c 5f 73  68 6f 74 0d 54 10 15 20  |pistol_shot.T.. |
0000ad80  4d 4f 56 20 20 20 20 20  52 30 2c 20 23 31 32 39  |MOV     R0, #129|
0000ad90  0d 54 1a 13 20 4d 4f 56  20 20 20 20 20 52 31 2c  |.T.. MOV     R1,|
0000ada0  20 23 30 0d 54 24 17 20  53 55 42 20 20 20 20 20  | #0.T$. SUB     |
0000adb0  52 31 2c 52 31 2c 20 23  35 39 0d 54 2e 15 20 4d  |R1,R1, #59.T.. M|
0000adc0  4f 56 20 20 20 20 20 52  32 2c 20 23 32 35 35 0d  |OV     R2, #255.|
0000add0  54 38 16 20 53 57 49 20  20 20 20 20 22 4f 53 5f  |T8. SWI     "OS_|
0000ade0  42 79 74 65 22 0d 54 42  15 20 43 4d 50 20 20 20  |Byte".TB. CMP   |
0000adf0  20 20 52 31 2c 20 23 32  35 35 0d 54 4c 13 20 4d  |  R1, #255.TL. M|
0000ae00  4f 56 4e 45 20 20 20 52  30 2c 20 23 30 0d 54 56  |OVNE   R0, #0.TV|
0000ae10  18 20 53 54 52 4e 45 20  20 20 52 30 2c 20 70 32  |. STRNE   R0, p2|
0000ae20  5f 66 69 72 65 0d 54 60  1f 20 42 20 20 20 20 20  |_fire.T`. B     |
0000ae30  20 20 70 32 5f 6e 6f 74  5f 66 69 72 65 5f 70 69  |  p2_not_fire_pi|
0000ae40  73 74 6f 6c 0d 54 6a 14  20 2e 70 32 5f 70 69 73  |stol.Tj. .p2_pis|
0000ae50  74 6f 6c 5f 73 68 6f 74  0d 54 74 15 20 4d 4f 56  |tol_shot.Tt. MOV|
0000ae60  20 20 20 20 20 52 30 2c  20 23 31 32 39 0d 54 7e  |     R0, #129.T~|
0000ae70  13 20 4d 4f 56 20 20 20  20 20 52 31 2c 20 23 30  |. MOV     R1, #0|
0000ae80  0d 54 88 17 20 53 55 42  20 20 20 20 20 52 31 2c  |.T.. SUB     R1,|
0000ae90  52 31 2c 20 23 35 39 0d  54 92 15 20 4d 4f 56 20  |R1, #59.T.. MOV |
0000aea0  20 20 20 20 52 32 2c 20  23 32 35 35 0d 54 9c 16  |    R2, #255.T..|
0000aeb0  20 53 57 49 20 20 20 20  20 22 4f 53 5f 42 79 74  | SWI     "OS_Byt|
0000aec0  65 22 0d 54 a6 15 20 43  4d 50 20 20 20 20 20 52  |e".T.. CMP     R|
0000aed0  31 2c 20 23 32 35 35 0d  54 b0 1f 20 42 4e 45 20  |1, #255.T.. BNE |
0000aee0  20 20 20 20 70 32 5f 6e  6f 74 5f 66 69 72 65 5f  |    p2_not_fire_|
0000aef0  70 69 73 74 6f 6c 0d 54  ba 13 20 4d 4f 56 20 20  |pistol.T.. MOV  |
0000af00  20 20 20 52 30 2c 20 23  32 0d 54 c4 1a 20 4d 4f  |   R0, #2.T.. MO|
0000af10  56 20 20 20 20 20 52 31  2c 52 36 2c 20 4c 53 52  |V     R1,R6, LSR|
0000af20  20 23 32 0d 54 ce 1a 20  4d 4f 56 20 20 20 20 20  | #2.T.. MOV     |
0000af30  52 32 2c 52 37 2c 20 4c  53 52 20 23 32 0d 54 d8  |R2,R7, LSR #2.T.|
0000af40  1a 20 41 44 44 20 20 20  20 20 52 31 2c 52 31 2c  |. ADD     R1,R1,|
0000af50  20 23 78 65 78 74 25 0d  54 e2 1e 20 41 44 44 20  | #xext%.T.. ADD |
0000af60  20 20 20 20 52 32 2c 52  32 2c 20 23 79 65 78 74  |    R2,R2, #yext|
0000af70  25 2f 34 2a 32 0d 54 ec  18 20 52 53 42 20 20 20  |%/4*2.T.. RSB   |
0000af80  20 20 52 32 2c 52 32 2c  20 23 32 35 36 0d 54 f6  |  R2,R2, #256.T.|
0000af90  14 20 4d 4f 56 20 20 20  20 20 52 33 2c 20 23 38  |. MOV     R3, #8|
0000afa0  30 0d 55 00 13 20 4d 4f  56 20 20 20 20 20 52 34  |0.U.. MOV     R4|
0000afb0  2c 20 23 30 0d 55 0a 13  20 4d 4f 56 20 20 20 20  |, #0.U.. MOV    |
0000afc0  20 52 35 2c 20 23 30 0d  55 14 13 20 54 53 54 20  | R5, #0.U.. TST |
0000afd0  20 20 20 20 52 38 2c 20  23 31 0d 55 1e 16 20 52  |    R8, #1.U.. R|
0000afe0  53 42 4e 45 20 20 20 52  33 2c 52 33 2c 20 23 30  |SBNE   R3,R3, #0|
0000aff0  0d 55 28 1a 20 53 55 42  4e 45 20 20 20 52 31 2c  |.U(. SUBNE   R1,|
0000b000  52 31 2c 20 23 78 65 78  74 25 0d 55 32 15 20 42  |R1, #xext%.U2. B|
0000b010  4c 20 20 20 20 20 20 61  64 64 5f 63 65 6c 6c 0d  |L      add_cell.|
0000b020  55 3c 13 20 4d 4f 56 20  20 20 20 20 52 35 2c 20  |U<. MOV     R5, |
0000b030  23 32 0d 55 46 13 20 4d  4f 56 20 20 20 20 20 52  |#2.UF. MOV     R|
0000b040  30 2c 20 23 31 0d 55 50  18 20 53 54 52 20 20 20  |0, #1.UP. STR   |
0000b050  20 20 52 30 2c 20 70 32  5f 66 69 72 65 0d 55 5a  |  R0, p2_fire.UZ|
0000b060  13 20 4d 4f 56 20 20 20  20 20 52 30 2c 20 23 37  |. MOV     R0, #7|
0000b070  0d 55 64 14 20 4d 56 4e  20 20 20 20 20 52 31 2c  |.Ud. MVN     R1,|
0000b080  20 23 31 34 0d 55 6e 17  20 4d 4f 56 20 20 20 20  | #14.Un. MOV    |
0000b090  20 52 32 2c 20 23 31 32  38 30 30 0d 55 78 13 20  | R2, #12800.Ux. |
0000b0a0  4d 4f 56 20 20 20 20 20  52 33 2c 20 23 30 0d 55  |MOV     R3, #0.U|
0000b0b0  82 1c 20 53 57 49 20 20  20 20 20 22 53 6f 75 6e  |.. SWI     "Soun|
0000b0c0  64 5f 43 6f 6e 74 72 6f  6c 22 0d 55 8c 18 20 2e  |d_Control".U.. .|
0000b0d0  70 32 5f 6e 6f 74 5f 66  69 72 65 5f 70 69 73 74  |p2_not_fire_pist|
0000b0e0  6f 6c 0d 55 96 18 20 42  20 20 20 20 20 20 20 70  |ol.U.. B       p|
0000b0f0  32 5f 65 6e 64 5f 66 69  72 65 0d 55 a0 06 20 3a  |2_end_fire.U.. :|
0000b100  0d 55 aa 11 20 2e 70 32  5f 66 69 72 65 5f 67 75  |.U.. .p2_fire_gu|
0000b110  6e 0d 55 b4 15 20 4d 4f  56 20 20 20 20 20 52 30  |n.U.. MOV     R0|
0000b120  2c 20 23 31 32 39 0d 55  be 13 20 4d 4f 56 20 20  |, #129.U.. MOV  |
0000b130  20 20 20 52 31 2c 20 23  30 0d 55 c8 17 20 53 55  |   R1, #0.U.. SU|
0000b140  42 20 20 20 20 20 52 31  2c 52 31 2c 20 23 35 39  |B     R1,R1, #59|
0000b150  0d 55 d2 15 20 4d 4f 56  20 20 20 20 20 52 32 2c  |.U.. MOV     R2,|
0000b160  20 23 32 35 35 0d 55 dc  16 20 53 57 49 20 20 20  | #255.U.. SWI   |
0000b170  20 20 22 4f 53 5f 42 79  74 65 22 0d 55 e6 15 20  |  "OS_Byte".U.. |
0000b180  43 4d 50 20 20 20 20 20  52 31 2c 20 23 32 35 35  |CMP     R1, #255|
0000b190  0d 55 f0 1c 20 42 4e 45  20 20 20 20 20 70 32 5f  |.U.. BNE     p2_|
0000b1a0  6e 6f 74 5f 66 69 72 65  5f 67 75 6e 0d 55 fa 18  |not_fire_gun.U..|
0000b1b0  20 4c 44 52 20 20 20 20  20 52 30 2c 20 70 32 5f  | LDR     R0, p2_|
0000b1c0  66 69 72 65 0d 56 04 16  20 41 44 44 20 20 20 20  |fire.V.. ADD    |
0000b1d0  20 52 30 2c 52 30 2c 20  23 31 0d 56 0e 16 20 80  | R0,R0, #1.V.. .|
0000b1e0  20 20 20 20 20 52 30 2c  52 30 2c 20 23 25 31 31  |     R0,R0, #%11|
0000b1f0  0d 56 18 18 20 53 54 52  20 20 20 20 20 52 30 2c  |.V.. STR     R0,|
0000b200  20 70 32 5f 66 69 72 65  0d 56 22 15 20 54 53 54  | p2_fire.V". TST|
0000b210  20 20 20 20 20 52 30 2c  20 23 25 31 31 0d 56 2c  |     R0, #%11.V,|
0000b220  1c 20 42 4e 45 20 20 20  20 20 70 32 5f 6e 6f 74  |. BNE     p2_not|
0000b230  5f 66 69 72 65 5f 67 75  6e 0d 56 36 13 20 4d 4f  |_fire_gun.V6. MO|
0000b240  56 20 20 20 20 20 52 30  2c 20 23 33 0d 56 40 1a  |V     R0, #3.V@.|
0000b250  20 4d 4f 56 20 20 20 20  20 52 31 2c 52 36 2c 20  | MOV     R1,R6, |
0000b260  4c 53 52 20 23 32 0d 56  4a 1a 20 4d 4f 56 20 20  |LSR #2.VJ. MOV  |
0000b270  20 20 20 52 32 2c 52 37  2c 20 4c 53 52 20 23 32  |   R2,R7, LSR #2|
0000b280  0d 56 54 1a 20 41 44 44  20 20 20 20 20 52 31 2c  |.VT. ADD     R1,|
0000b290  52 31 2c 20 23 78 65 78  74 25 0d 56 5e 1e 20 41  |R1, #xext%.V^. A|
0000b2a0  44 44 20 20 20 20 20 52  32 2c 52 32 2c 20 23 79  |DD     R2,R2, #y|
0000b2b0  65 78 74 25 2f 34 2a 32  0d 56 68 18 20 52 53 42  |ext%/4*2.Vh. RSB|
0000b2c0  20 20 20 20 20 52 32 2c  52 32 2c 20 23 32 35 36  |     R2,R2, #256|
0000b2d0  0d 56 72 14 20 4d 4f 56  20 20 20 20 20 52 33 2c  |.Vr. MOV     R3,|
0000b2e0  20 23 38 30 0d 56 7c 18  20 4c 44 52 20 20 20 20  | #80.V|. LDR    |
0000b2f0  20 52 35 2c 20 61 64 72  5f 72 6e 64 0d 56 86 14  | R5, adr_rnd.V..|
0000b300  20 4c 44 52 20 20 20 20  20 52 35 2c 5b 52 35 5d  | LDR     R5,[R5]|
0000b310  0d 56 90 18 20 80 20 20  20 20 20 52 34 2c 52 35  |.V.. .     R4,R5|
0000b320  2c 20 23 25 31 31 31 31  0d 56 9a 1a 20 53 55 42  |, #%1111.V.. SUB|
0000b330  20 20 20 20 20 52 34 2c  52 34 2c 20 23 25 30 31  |     R4,R4, #%01|
0000b340  31 31 0d 56 a4 1a 20 80  20 20 20 20 20 52 35 2c  |11.V.. .     R5,|
0000b350  52 35 2c 20 23 25 31 31  30 30 30 30 0d 56 ae 1a  |R5, #%110000.V..|
0000b360  20 4d 4f 56 20 20 20 20  20 52 35 2c 52 35 2c 20  | MOV     R5,R5, |
0000b370  4c 53 52 20 23 34 0d 56  b8 15 20 41 44 44 20 20  |LSR #4.V.. ADD  |
0000b380  20 20 20 52 31 2c 52 31  2c 52 35 0d 56 c2 13 20  |   R1,R1,R5.V.. |
0000b390  4d 4f 56 20 20 20 20 20  52 35 2c 20 23 30 0d 56  |MOV     R5, #0.V|
0000b3a0  cc 13 20 54 53 54 20 20  20 20 20 52 38 2c 20 23  |.. TST     R8, #|
0000b3b0  31 0d 56 d6 16 20 52 53  42 4e 45 20 20 20 52 33  |1.V.. RSBNE   R3|
0000b3c0  2c 52 33 2c 20 23 30 0d  56 e0 1c 20 53 55 42 4e  |,R3, #0.V.. SUBN|
0000b3d0  45 20 20 20 52 31 2c 52  31 2c 20 23 78 65 78 74  |E   R1,R1, #xext|
0000b3e0  25 2b 32 0d 56 ea 15 20  42 4c 20 20 20 20 20 20  |%+2.V.. BL      |
0000b3f0  61 64 64 5f 63 65 6c 6c  0d 56 f4 13 20 4d 4f 56  |add_cell.V.. MOV|
0000b400  20 20 20 20 20 52 35 2c  20 23 32 0d 56 fe 13 20  |     R5, #2.V.. |
0000b410  4d 4f 56 20 20 20 20 20  52 30 2c 20 23 38 0d 57  |MOV     R0, #8.W|
0000b420  08 14 20 4d 56 4e 20 20  20 20 20 52 31 2c 20 23  |.. MVN     R1, #|
0000b430  31 32 0d 57 12 17 20 4d  4f 56 20 20 20 20 20 52  |12.W.. MOV     R|
0000b440  32 2c 20 23 31 32 38 30  30 0d 57 1c 13 20 4d 4f  |2, #12800.W.. MO|
0000b450  56 20 20 20 20 20 52 33  2c 20 23 30 0d 57 26 1c  |V     R3, #0.W&.|
0000b460  20 53 57 49 20 20 20 20  20 22 53 6f 75 6e 64 5f  | SWI     "Sound_|
0000b470  43 6f 6e 74 72 6f 6c 22  0d 57 30 15 20 2e 70 32  |Control".W0. .p2|
0000b480  5f 6e 6f 74 5f 66 69 72  65 5f 67 75 6e 0d 57 3a  |_not_fire_gun.W:|
0000b490  18 20 42 20 20 20 20 20  20 20 70 32 5f 65 6e 64  |. B       p2_end|
0000b4a0  5f 66 69 72 65 0d 57 44  06 20 3a 0d 57 4e 14 20  |_fire.WD. :.WN. |
0000b4b0  2e 70 32 5f 66 69 72 65  5f 6d 6f 72 74 61 72 0d  |.p2_fire_mortar.|
0000b4c0  57 58 18 3b 4c 44 52 20  20 20 20 20 52 30 2c 20  |WX.;LDR     R0, |
0000b4d0  70 32 5f 66 69 72 65 0d  57 62 13 3b 43 4d 50 20  |p2_fire.Wb.;CMP |
0000b4e0  20 20 20 20 52 30 2c 20  23 30 0d 57 6c 1b 3b 42  |    R0, #0.Wl.;B|
0000b4f0  45 51 20 20 20 20 20 70  32 5f 6d 6f 72 74 61 72  |EQ     p2_mortar|
0000b500  5f 73 68 6f 74 0d 57 76  15 3b 4d 4f 56 20 20 20  |_shot.Wv.;MOV   |
0000b510  20 20 52 30 2c 20 23 31  32 39 0d 57 80 13 3b 4d  |  R0, #129.W..;M|
0000b520  4f 56 20 20 20 20 20 52  31 2c 20 23 30 0d 57 8a  |OV     R1, #0.W.|
0000b530  17 3b 53 55 42 20 20 20  20 20 52 31 2c 52 31 2c  |.;SUB     R1,R1,|
0000b540  20 23 35 39 0d 57 94 15  3b 4d 4f 56 20 20 20 20  | #59.W..;MOV    |
0000b550  20 52 32 2c 20 23 32 35  35 0d 57 9e 16 3b 53 57  | R2, #255.W..;SW|
0000b560  49 20 20 20 20 20 22 4f  53 5f 42 79 74 65 22 0d  |I     "OS_Byte".|
0000b570  57 a8 15 3b 43 4d 50 20  20 20 20 20 52 31 2c 20  |W..;CMP     R1, |
0000b580  23 32 35 35 0d 57 b2 13  3b 4d 4f 56 4e 45 20 20  |#255.W..;MOVNE  |
0000b590  20 52 30 2c 20 23 30 0d  57 bc 18 3b 53 54 52 4e  | R0, #0.W..;STRN|
0000b5a0  45 20 20 20 52 30 2c 20  70 32 5f 66 69 72 65 0d  |E   R0, p2_fire.|
0000b5b0  57 c6 1f 3b 42 20 20 20  20 20 20 20 70 32 5f 6e  |W..;B       p2_n|
0000b5c0  6f 74 5f 66 69 72 65 5f  6d 6f 72 74 61 72 0d 57  |ot_fire_mortar.W|
0000b5d0  d0 14 3b 2e 70 32 5f 6d  6f 72 74 61 72 5f 73 68  |..;.p2_mortar_sh|
0000b5e0  6f 74 0d 57 da 15 20 4d  4f 56 20 20 20 20 20 52  |ot.W.. MOV     R|
0000b5f0  30 2c 20 23 31 32 39 0d  57 e4 13 20 4d 4f 56 20  |0, #129.W.. MOV |
0000b600  20 20 20 20 52 31 2c 20  23 30 0d 57 ee 17 20 53  |    R1, #0.W.. S|
0000b610  55 42 20 20 20 20 20 52  31 2c 52 31 2c 20 23 35  |UB     R1,R1, #5|
0000b620  39 0d 57 f8 15 20 4d 4f  56 20 20 20 20 20 52 32  |9.W.. MOV     R2|
0000b630  2c 20 23 32 35 35 0d 58  02 16 20 53 57 49 20 20  |, #255.X.. SWI  |
0000b640  20 20 20 22 4f 53 5f 42  79 74 65 22 0d 58 0c 15  |   "OS_Byte".X..|
0000b650  20 43 4d 50 20 20 20 20  20 52 31 2c 20 23 32 35  | CMP     R1, #25|
0000b660  35 0d 58 16 1f 20 42 4e  45 20 20 20 20 20 70 32  |5.X.. BNE     p2|
0000b670  5f 6e 6f 74 5f 66 69 72  65 5f 6d 6f 72 74 61 72  |_not_fire_mortar|
0000b680  0d 58 20 18 20 4c 44 52  20 20 20 20 20 52 30 2c  |.X . LDR     R0,|
0000b690  20 70 32 5f 66 69 72 65  0d 58 2a 16 20 41 44 44  | p2_fire.X*. ADD|
0000b6a0  20 20 20 20 20 52 30 2c  52 30 2c 20 23 31 0d 58  |     R0,R0, #1.X|
0000b6b0  34 19 20 80 20 20 20 20  20 52 30 2c 52 30 2c 20  |4. .     R0,R0, |
0000b6c0  23 25 31 31 31 31 31 0d  58 3e 18 20 53 54 52 20  |#%11111.X>. STR |
0000b6d0  20 20 20 20 52 30 2c 20  70 32 5f 66 69 72 65 0d  |    R0, p2_fire.|
0000b6e0  58 48 18 20 54 53 54 20  20 20 20 20 52 30 2c 20  |XH. TST     R0, |
0000b6f0  23 25 31 31 31 31 31 0d  58 52 1f 20 42 4e 45 20  |#%11111.XR. BNE |
0000b700  20 20 20 20 70 32 5f 6e  6f 74 5f 66 69 72 65 5f  |    p2_not_fire_|
0000b710  6d 6f 72 74 61 72 0d 58  5c 13 20 4d 4f 56 20 20  |mortar.X\. MOV  |
0000b720  20 20 20 52 30 2c 20 23  34 0d 58 66 1a 20 4d 4f  |   R0, #4.Xf. MO|
0000b730  56 20 20 20 20 20 52 31  2c 52 36 2c 20 4c 53 52  |V     R1,R6, LSR|
0000b740  20 23 32 0d 58 70 1a 20  4d 4f 56 20 20 20 20 20  | #2.Xp. MOV     |
0000b750  52 32 2c 52 37 2c 20 4c  53 52 20 23 32 0d 58 7a  |R2,R7, LSR #2.Xz|
0000b760  1a 20 41 44 44 20 20 20  20 20 52 31 2c 52 31 2c  |. ADD     R1,R1,|
0000b770  20 23 78 65 78 74 25 0d  58 84 1e 20 41 44 44 20  | #xext%.X.. ADD |
0000b780  20 20 20 20 52 32 2c 52  32 2c 20 23 79 65 78 74  |    R2,R2, #yext|
0000b790  25 2f 34 2a 32 0d 58 8e  18 20 52 53 42 20 20 20  |%/4*2.X.. RSB   |
0000b7a0  20 20 52 32 2c 52 32 2c  20 23 32 35 36 0d 58 98  |  R2,R2, #256.X.|
0000b7b0  14 20 4d 4f 56 20 20 20  20 20 52 33 2c 20 23 33  |. MOV     R3, #3|
0000b7c0  30 0d 58 a2 14 20 4d 4f  56 20 20 20 20 20 52 34  |0.X.. MOV     R4|
0000b7d0  2c 20 23 34 30 0d 58 ac  13 20 4d 4f 56 20 20 20  |, #40.X.. MOV   |
0000b7e0  20 20 52 35 2c 20 23 30  0d 58 b6 13 20 54 53 54  |  R5, #0.X.. TST|
0000b7f0  20 20 20 20 20 52 38 2c  20 23 31 0d 58 c0 16 20  |     R8, #1.X.. |
0000b800  52 53 42 4e 45 20 20 20  52 33 2c 52 33 2c 20 23  |RSBNE   R3,R3, #|
0000b810  30 0d 58 ca 1a 20 53 55  42 4e 45 20 20 20 52 31  |0.X.. SUBNE   R1|
0000b820  2c 52 31 2c 20 23 78 65  78 74 25 0d 58 d4 15 20  |,R1, #xext%.X.. |
0000b830  42 4c 20 20 20 20 20 20  61 64 64 5f 63 65 6c 6c  |BL      add_cell|
0000b840  0d 58 de 13 20 4d 4f 56  20 20 20 20 20 52 35 2c  |.X.. MOV     R5,|
0000b850  20 23 32 0d 58 e8 13 20  4d 4f 56 20 20 20 20 20  | #2.X.. MOV     |
0000b860  52 30 2c 20 23 31 0d 58  f2 18 20 53 54 52 20 20  |R0, #1.X.. STR  |
0000b870  20 20 20 52 30 2c 20 70  32 5f 66 69 72 65 0d 58  |   R0, p2_fire.X|
0000b880  fc 18 20 2e 70 32 5f 6e  6f 74 5f 66 69 72 65 5f  |.. .p2_not_fire_|
0000b890  6d 6f 72 74 61 72 0d 59  06 18 20 42 20 20 20 20  |mortar.Y.. B    |
0000b8a0  20 20 20 70 32 5f 65 6e  64 5f 66 69 72 65 0d 59  |   p2_end_fire.Y|
0000b8b0  10 06 20 3a 0d 59 1a 14  20 2e 70 32 5f 66 69 72  |.. :.Y.. .p2_fir|
0000b8c0  65 5f 68 6f 6d 69 6e 67  0d 59 24 14 20 2e 70 32  |e_homing.Y$. .p2|
0000b8d0  5f 68 6f 6d 69 6e 67 5f  73 68 6f 74 0d 59 2e 15  |_homing_shot.Y..|
0000b8e0  20 4d 4f 56 20 20 20 20  20 52 30 2c 20 23 31 32  | MOV     R0, #12|
0000b8f0  39 0d 59 38 13 20 4d 4f  56 20 20 20 20 20 52 31  |9.Y8. MOV     R1|
0000b900  2c 20 23 30 0d 59 42 17  20 53 55 42 20 20 20 20  |, #0.YB. SUB    |
0000b910  20 52 31 2c 52 31 2c 20  23 35 39 0d 59 4c 15 20  | R1,R1, #59.YL. |
0000b920  4d 4f 56 20 20 20 20 20  52 32 2c 20 23 32 35 35  |MOV     R2, #255|
0000b930  0d 59 56 16 20 53 57 49  20 20 20 20 20 22 4f 53  |.YV. SWI     "OS|
0000b940  5f 42 79 74 65 22 0d 59  60 15 20 43 4d 50 20 20  |_Byte".Y`. CMP  |
0000b950  20 20 20 52 31 2c 20 23  32 35 35 0d 59 6a 1f 20  |   R1, #255.Yj. |
0000b960  42 4e 45 20 20 20 20 20  70 32 5f 6e 6f 74 5f 66  |BNE     p2_not_f|
0000b970  69 72 65 5f 68 6f 6d 69  6e 67 0d 59 74 18 20 4c  |ire_homing.Yt. L|
0000b980  44 52 20 20 20 20 20 52  30 2c 20 70 32 5f 66 69  |DR     R0, p2_fi|
0000b990  72 65 0d 59 7e 16 20 41  44 44 20 20 20 20 20 52  |re.Y~. ADD     R|
0000b9a0  30 2c 52 30 2c 20 23 31  0d 59 88 18 20 80 20 20  |0,R0, #1.Y.. .  |
0000b9b0  20 20 20 52 30 2c 52 30  2c 20 23 25 31 31 31 31  |   R0,R0, #%1111|
0000b9c0  0d 59 92 18 20 53 54 52  20 20 20 20 20 52 30 2c  |.Y.. STR     R0,|
0000b9d0  20 70 32 5f 66 69 72 65  0d 59 9c 17 20 54 53 54  | p2_fire.Y.. TST|
0000b9e0  20 20 20 20 20 52 30 2c  20 23 25 31 31 31 31 0d  |     R0, #%1111.|
0000b9f0  59 a6 1f 20 42 4e 45 20  20 20 20 20 70 32 5f 6e  |Y.. BNE     p2_n|
0000ba00  6f 74 5f 66 69 72 65 5f  68 6f 6d 69 6e 67 0d 59  |ot_fire_homing.Y|
0000ba10  b0 13 20 4d 4f 56 20 20  20 20 20 52 30 2c 20 23  |.. MOV     R0, #|
0000ba20  35 0d 59 ba 1a 20 4d 4f  56 20 20 20 20 20 52 31  |5.Y.. MOV     R1|
0000ba30  2c 52 36 2c 20 4c 53 52  20 23 32 0d 59 c4 1a 20  |,R6, LSR #2.Y.. |
0000ba40  4d 4f 56 20 20 20 20 20  52 32 2c 52 37 2c 20 4c  |MOV     R2,R7, L|
0000ba50  53 52 20 23 32 0d 59 ce  1a 20 41 44 44 20 20 20  |SR #2.Y.. ADD   |
0000ba60  20 20 52 31 2c 52 31 2c  20 23 78 65 78 74 25 0d  |  R1,R1, #xext%.|
0000ba70  59 d8 1e 20 41 44 44 20  20 20 20 20 52 32 2c 52  |Y.. ADD     R2,R|
0000ba80  32 2c 20 23 79 65 78 74  25 2f 34 2a 32 0d 59 e2  |2, #yext%/4*2.Y.|
0000ba90  18 20 52 53 42 20 20 20  20 20 52 32 2c 52 32 2c  |. RSB     R2,R2,|
0000baa0  20 23 32 35 36 0d 59 ec  14 20 4d 4f 56 20 20 20  | #256.Y.. MOV   |
0000bab0  20 20 52 33 2c 20 23 36  34 0d 59 f6 18 20 4c 44  |  R3, #64.Y.. LD|
0000bac0  52 20 20 20 20 20 52 34  2c 20 61 64 72 5f 72 6e  |R     R4, adr_rn|
0000bad0  64 0d 5a 00 14 20 4c 44  52 20 20 20 20 20 52 34  |d.Z.. LDR     R4|
0000bae0  2c 5b 52 34 5d 0d 5a 0a  15 20 80 20 20 20 20 20  |,[R4].Z.. .     |
0000baf0  52 34 2c 52 34 2c 20 23  31 35 0d 5a 14 16 20 53  |R4,R4, #15.Z.. S|
0000bb00  55 42 20 20 20 20 20 52  34 2c 52 34 2c 20 23 37  |UB     R4,R4, #7|
0000bb10  0d 5a 1e 39 20 4d 4f 56  20 20 20 20 20 52 35 2c  |.Z.9 MOV     R5,|
0000bb20  20 23 32 32 34 3c 3c 38  20 20 20 20 20 20 20 20  | #224<<8        |
0000bb30  20 20 3b 20 48 6f 6d 69  6e 67 20 69 6e 20 6f 6e  |  ; Homing in on|
0000bb40  20 70 6c 61 79 65 72 20  31 0d 5a 28 13 20 54 53  | player 1.Z(. TS|
0000bb50  54 20 20 20 20 20 52 38  2c 20 23 31 0d 5a 32 16  |T     R8, #1.Z2.|
0000bb60  20 52 53 42 4e 45 20 20  20 52 33 2c 52 33 2c 20  | RSBNE   R3,R3, |
0000bb70  23 30 0d 5a 3c 1a 20 53  55 42 4e 45 20 20 20 52  |#0.Z<. SUBNE   R|
0000bb80  31 2c 52 31 2c 20 23 78  65 78 74 25 0d 5a 46 15  |1,R1, #xext%.ZF.|
0000bb90  20 42 4c 20 20 20 20 20  20 61 64 64 5f 63 65 6c  | BL      add_cel|
0000bba0  6c 0d 5a 50 13 20 4d 4f  56 20 20 20 20 20 52 35  |l.ZP. MOV     R5|
0000bbb0  2c 20 23 37 0d 5a 5a 13  20 4d 4f 56 20 20 20 20  |, #7.ZZ. MOV    |
0000bbc0  20 52 30 2c 20 23 38 0d  5a 64 14 20 4d 56 4e 20  | R0, #8.Zd. MVN |
0000bbd0  20 20 20 20 52 31 2c 20  23 31 30 0d 5a 6e 16 20  |    R1, #10.Zn. |
0000bbe0  4d 4f 56 20 20 20 20 20  52 32 2c 20 23 38 30 30  |MOV     R2, #800|
0000bbf0  30 0d 5a 78 13 20 4d 4f  56 20 20 20 20 20 52 33  |0.Zx. MOV     R3|
0000bc00  2c 20 23 30 0d 5a 82 1c  20 53 57 49 20 20 20 20  |, #0.Z.. SWI    |
0000bc10  20 22 53 6f 75 6e 64 5f  43 6f 6e 74 72 6f 6c 22  | "Sound_Control"|
0000bc20  0d 5a 8c 18 20 2e 70 32  5f 6e 6f 74 5f 66 69 72  |.Z.. .p2_not_fir|
0000bc30  65 5f 68 6f 6d 69 6e 67  0d 5a 96 18 20 42 20 20  |e_homing.Z.. B  |
0000bc40  20 20 20 20 20 70 32 5f  65 6e 64 5f 66 69 72 65  |     p2_end_fire|
0000bc50  0d 5a a0 06 20 3a 0d 5a  aa 15 20 2e 70 32 5f 66  |.Z.. :.Z.. .p2_f|
0000bc60  69 72 65 5f 73 65 65 6b  69 6e 67 0d 5a b4 15 20  |ire_seeking.Z.. |
0000bc70  2e 70 32 5f 73 65 65 6b  69 6e 67 5f 73 68 6f 74  |.p2_seeking_shot|
0000bc80  0d 5a be 15 20 4d 4f 56  20 20 20 20 20 52 30 2c  |.Z.. MOV     R0,|
0000bc90  20 23 31 32 39 0d 5a c8  13 20 4d 4f 56 20 20 20  | #129.Z.. MOV   |
0000bca0  20 20 52 31 2c 20 23 30  0d 5a d2 17 20 53 55 42  |  R1, #0.Z.. SUB|
0000bcb0  20 20 20 20 20 52 31 2c  52 31 2c 20 23 35 39 0d  |     R1,R1, #59.|
0000bcc0  5a dc 15 20 4d 4f 56 20  20 20 20 20 52 32 2c 20  |Z.. MOV     R2, |
0000bcd0  23 32 35 35 0d 5a e6 16  20 53 57 49 20 20 20 20  |#255.Z.. SWI    |
0000bce0  20 22 4f 53 5f 42 79 74  65 22 0d 5a f0 15 20 43  | "OS_Byte".Z.. C|
0000bcf0  4d 50 20 20 20 20 20 52  31 2c 20 23 32 35 35 0d  |MP     R1, #255.|
0000bd00  5a fa 20 20 42 4e 45 20  20 20 20 20 70 32 5f 6e  |Z.  BNE     p2_n|
0000bd10  6f 74 5f 66 69 72 65 5f  73 65 65 6b 69 6e 67 0d  |ot_fire_seeking.|
0000bd20  5b 04 13 20 4d 4f 56 20  20 20 20 20 52 30 2c 20  |[.. MOV     R0, |
0000bd30  23 36 0d 5b 0e 1a 20 4d  4f 56 20 20 20 20 20 52  |#6.[.. MOV     R|
0000bd40  31 2c 52 36 2c 20 4c 53  52 20 23 32 0d 5b 18 1a  |1,R6, LSR #2.[..|
0000bd50  20 4d 4f 56 20 20 20 20  20 52 32 2c 52 37 2c 20  | MOV     R2,R7, |
0000bd60  4c 53 52 20 23 32 0d 5b  22 1e 20 41 44 44 20 20  |LSR #2.[". ADD  |
0000bd70  20 20 20 52 31 2c 52 31  2c 20 23 78 65 78 74 25  |   R1,R1, #xext%|
0000bd80  2a 33 2f 32 0d 5b 2c 1e  20 41 44 44 20 20 20 20  |*3/2.[,. ADD    |
0000bd90  20 52 32 2c 52 32 2c 20  23 79 65 78 74 25 2f 34  | R2,R2, #yext%/4|
0000bda0  2a 32 0d 5b 36 18 20 52  53 42 20 20 20 20 20 52  |*2.[6. RSB     R|
0000bdb0  32 2c 52 32 2c 20 23 32  35 36 0d 5b 40 14 20 4d  |2,R2, #256.[@. M|
0000bdc0  4f 56 20 20 20 20 20 52  33 2c 20 23 33 32 0d 5b  |OV     R3, #32.[|
0000bdd0  4a 13 20 4d 4f 56 20 20  20 20 20 52 34 2c 20 23  |J. MOV     R4, #|
0000bde0  30 0d 5b 54 39 20 4d 4f  56 20 20 20 20 20 52 35  |0.[T9 MOV     R5|
0000bdf0  2c 20 23 30 20 20 20 20  20 20 20 20 20 20 20 20  |, #0            |
0000be00  20 20 20 3b 20 48 6f 6d  69 6e 67 20 69 6e 20 6f  |   ; Homing in o|
0000be10  6e 20 70 6c 61 79 65 72  20 31 0d 5b 5e 13 20 54  |n player 1.[^. T|
0000be20  53 54 20 20 20 20 20 52  38 2c 20 23 31 0d 5b 68  |ST     R8, #1.[h|
0000be30  16 20 52 53 42 4e 45 20  20 20 52 33 2c 52 33 2c  |. RSBNE   R3,R3,|
0000be40  20 23 30 0d 5b 72 1c 20  53 55 42 4e 45 20 20 20  | #0.[r. SUBNE   |
0000be50  52 31 2c 52 31 2c 20 23  78 65 78 74 25 2a 32 0d  |R1,R1, #xext%*2.|
0000be60  5b 7c 15 20 42 4c 20 20  20 20 20 20 61 64 64 5f  |[|. BL      add_|
0000be70  63 65 6c 6c 0d 5b 86 13  20 4d 4f 56 20 20 20 20  |cell.[.. MOV    |
0000be80  20 52 35 2c 20 23 32 0d  5b 90 13 20 4d 4f 56 20  | R5, #2.[.. MOV |
0000be90  20 20 20 20 52 39 2c 20  23 32 0d 5b 9a 1f 20 4c  |    R9, #2.[.. L|
0000bea0  44 52 20 20 20 20 20 52  31 30 2c 20 61 64 72 5f  |DR     R10, adr_|
0000beb0  70 32 5f 77 65 61 70 6f  6e 0d 5b a4 15 20 53 54  |p2_weapon.[.. ST|
0000bec0  52 20 20 20 20 20 52 39  2c 5b 52 31 30 5d 0d 5b  |R     R9,[R10].[|
0000bed0  ae 13 20 4d 4f 56 20 20  20 20 20 52 30 2c 20 23  |.. MOV     R0, #|
0000bee0  38 0d 5b b8 14 20 4d 56  4e 20 20 20 20 20 52 31  |8.[.. MVN     R1|
0000bef0  2c 20 23 31 34 0d 5b c2  16 20 4d 4f 56 20 20 20  |, #14.[.. MOV   |
0000bf00  20 20 52 32 2c 20 23 35  31 32 30 0d 5b cc 13 20  |  R2, #5120.[.. |
0000bf10  4d 4f 56 20 20 20 20 20  52 33 2c 20 23 30 0d 5b  |MOV     R3, #0.[|
0000bf20  d6 1c 20 53 57 49 20 20  20 20 20 22 53 6f 75 6e  |.. SWI     "Soun|
0000bf30  64 5f 43 6f 6e 74 72 6f  6c 22 0d 5b e0 13 20 4d  |d_Control".[.. M|
0000bf40  4f 56 20 20 20 20 20 52  30 2c 20 23 31 0d 5b ea  |OV     R0, #1.[.|
0000bf50  18 20 53 54 52 20 20 20  20 20 52 30 2c 20 70 32  |. STR     R0, p2|
0000bf60  5f 66 69 72 65 0d 5b f4  19 20 2e 70 32 5f 6e 6f  |_fire.[.. .p2_no|
0000bf70  74 5f 66 69 72 65 5f 73  65 65 6b 69 6e 67 0d 5b  |t_fire_seeking.[|
0000bf80  fe 18 20 42 20 20 20 20  20 20 20 70 32 5f 65 6e  |.. B       p2_en|
0000bf90  64 5f 66 69 72 65 0d 5c  08 06 20 3a 0d 5c 12 16  |d_fire.\.. :.\..|
0000bfa0  20 2e 70 32 5f 66 69 72  65 5f 76 65 72 74 69 63  | .p2_fire_vertic|
0000bfb0  61 6c 0d 5c 1c 18 20 4c  44 52 20 20 20 20 20 52  |al.\.. LDR     R|
0000bfc0  30 2c 20 70 32 5f 66 69  72 65 0d 5c 26 13 20 43  |0, p2_fire.\&. C|
0000bfd0  4d 50 20 20 20 20 20 52  30 2c 20 23 30 0d 5c 30  |MP     R0, #0.\0|
0000bfe0  1d 20 42 45 51 20 20 20  20 20 70 32 5f 76 65 72  |. BEQ     p2_ver|
0000bff0  74 69 63 61 6c 5f 73 68  6f 74 0d 5c 3a 15 20 4d  |tical_shot.\:. M|
0000c000  4f 56 20 20 20 20 20 52  30 2c 20 23 31 32 39 0d  |OV     R0, #129.|
0000c010  5c 44 13 20 4d 4f 56 20  20 20 20 20 52 31 2c 20  |\D. MOV     R1, |
0000c020  23 30 0d 5c 4e 17 20 53  55 42 20 20 20 20 20 52  |#0.\N. SUB     R|
0000c030  31 2c 52 31 2c 20 23 35  39 0d 5c 58 15 20 4d 4f  |1,R1, #59.\X. MO|
0000c040  56 20 20 20 20 20 52 32  2c 20 23 32 35 35 0d 5c  |V     R2, #255.\|
0000c050  62 16 20 53 57 49 20 20  20 20 20 22 4f 53 5f 42  |b. SWI     "OS_B|
0000c060  79 74 65 22 0d 5c 6c 15  20 43 4d 50 20 20 20 20  |yte".\l. CMP    |
0000c070  20 52 31 2c 20 23 32 35  35 0d 5c 76 13 20 4d 4f  | R1, #255.\v. MO|
0000c080  56 4e 45 20 20 20 52 30  2c 20 23 30 0d 5c 80 18  |VNE   R0, #0.\..|
0000c090  20 53 54 52 4e 45 20 20  20 52 30 2c 20 70 32 5f  | STRNE   R0, p2_|
0000c0a0  66 69 72 65 0d 5c 8a 21  20 42 20 20 20 20 20 20  |fire.\.! B      |
0000c0b0  20 70 32 5f 6e 6f 74 5f  66 69 72 65 5f 76 65 72  | p2_not_fire_ver|
0000c0c0  74 69 63 61 6c 0d 5c 94  16 20 2e 70 32 5f 76 65  |tical.\.. .p2_ve|
0000c0d0  72 74 69 63 61 6c 5f 73  68 6f 74 0d 5c 9e 15 20  |rtical_shot.\.. |
0000c0e0  4d 4f 56 20 20 20 20 20  52 30 2c 20 23 31 32 39  |MOV     R0, #129|
0000c0f0  0d 5c a8 13 20 4d 4f 56  20 20 20 20 20 52 31 2c  |.\.. MOV     R1,|
0000c100  20 23 30 0d 5c b2 17 20  53 55 42 20 20 20 20 20  | #0.\.. SUB     |
0000c110  52 31 2c 52 31 2c 20 23  35 39 0d 5c bc 15 20 4d  |R1,R1, #59.\.. M|
0000c120  4f 56 20 20 20 20 20 52  32 2c 20 23 32 35 35 0d  |OV     R2, #255.|
0000c130  5c c6 16 20 53 57 49 20  20 20 20 20 22 4f 53 5f  |\.. SWI     "OS_|
0000c140  42 79 74 65 22 0d 5c d0  15 20 43 4d 50 20 20 20  |Byte".\.. CMP   |
0000c150  20 20 52 31 2c 20 23 32  35 35 0d 5c da 21 20 42  |  R1, #255.\.! B|
0000c160  4e 45 20 20 20 20 20 70  32 5f 6e 6f 74 5f 66 69  |NE     p2_not_fi|
0000c170  72 65 5f 76 65 72 74 69  63 61 6c 0d 5c e4 13 20  |re_vertical.\.. |
0000c180  4d 4f 56 20 20 20 20 20  52 30 2c 20 23 37 0d 5c  |MOV     R0, #7.\|
0000c190  ee 1a 20 4d 4f 56 20 20  20 20 20 52 31 2c 52 36  |.. MOV     R1,R6|
0000c1a0  2c 20 4c 53 52 20 23 32  0d 5c f8 1a 20 4d 4f 56  |, LSR #2.\.. MOV|
0000c1b0  20 20 20 20 20 52 32 2c  52 37 2c 20 4c 53 52 20  |     R2,R7, LSR |
0000c1c0  23 32 0d 5d 02 1a 20 41  44 44 20 20 20 20 20 52  |#2.].. ADD     R|
0000c1d0  31 2c 52 31 2c 20 23 78  65 78 74 25 0d 5d 0c 1e  |1,R1, #xext%.]..|
0000c1e0  20 41 44 44 20 20 20 20  20 52 32 2c 52 32 2c 20  | ADD     R2,R2, |
0000c1f0  23 79 65 78 74 25 2f 34  2a 32 0d 5d 16 18 20 52  |#yext%/4*2.].. R|
0000c200  53 42 20 20 20 20 20 52  32 2c 52 32 2c 20 23 32  |SB     R2,R2, #2|
0000c210  35 36 0d 5d 20 13 20 4d  4f 56 20 20 20 20 20 52  |56.] . MOV     R|
0000c220  33 2c 20 23 30 0d 5d 2a  14 20 4d 4f 56 20 20 20  |3, #0.]*. MOV   |
0000c230  20 20 52 34 2c 20 23 36  34 0d 5d 34 13 20 4d 4f  |  R4, #64.]4. MO|
0000c240  56 20 20 20 20 20 52 35  2c 20 23 30 0d 5d 3e 13  |V     R5, #0.]>.|
0000c250  20 54 53 54 20 20 20 20  20 52 38 2c 20 23 31 0d  | TST     R8, #1.|
0000c260  5d 48 16 20 52 53 42 4e  45 20 20 20 52 33 2c 52  |]H. RSBNE   R3,R|
0000c270  33 2c 20 23 30 0d 5d 52  1a 20 53 55 42 4e 45 20  |3, #0.]R. SUBNE |
0000c280  20 20 52 31 2c 52 31 2c  20 23 78 65 78 74 25 0d  |  R1,R1, #xext%.|
0000c290  5d 5c 15 20 42 4c 20 20  20 20 20 20 61 64 64 5f  |]\. BL      add_|
0000c2a0  63 65 6c 6c 0d 5d 66 13  20 4d 4f 56 20 20 20 20  |cell.]f. MOV    |
0000c2b0  20 52 35 2c 20 23 32 0d  5d 70 13 20 4d 4f 56 20  | R5, #2.]p. MOV |
0000c2c0  20 20 20 20 52 30 2c 20  23 31 0d 5d 7a 18 20 53  |    R0, #1.]z. S|
0000c2d0  54 52 20 20 20 20 20 52  30 2c 20 70 32 5f 66 69  |TR     R0, p2_fi|
0000c2e0  72 65 0d 5d 84 13 20 4d  4f 56 20 20 20 20 20 52  |re.].. MOV     R|
0000c2f0  30 2c 20 23 37 0d 5d 8e  14 20 4d 56 4e 20 20 20  |0, #7.].. MVN   |
0000c300  20 20 52 31 2c 20 23 31  34 0d 5d 98 17 20 4d 4f  |  R1, #14.].. MO|
0000c310  56 20 20 20 20 20 52 32  2c 20 23 31 30 32 34 30  |V     R2, #10240|
0000c320  0d 5d a2 13 20 4d 4f 56  20 20 20 20 20 52 33 2c  |.].. MOV     R3,|
0000c330  20 23 30 0d 5d ac 1c 20  53 57 49 20 20 20 20 20  | #0.].. SWI     |
0000c340  22 53 6f 75 6e 64 5f 43  6f 6e 74 72 6f 6c 22 0d  |"Sound_Control".|
0000c350  5d b6 1a 20 2e 70 32 5f  6e 6f 74 5f 66 69 72 65  |].. .p2_not_fire|
0000c360  5f 76 65 72 74 69 63 61  6c 0d 5d c0 18 20 42 20  |_vertical.].. B |
0000c370  20 20 20 20 20 20 70 32  5f 65 6e 64 5f 66 69 72  |      p2_end_fir|
0000c380  65 0d 5d ca 06 20 3a 0d  5d d4 13 20 2e 70 32 5f  |e.].. :.].. .p2_|
0000c390  66 69 72 65 5f 66 6c 61  6d 65 0d 5d de 15 20 4d  |fire_flame.].. M|
0000c3a0  4f 56 20 20 20 20 20 52  30 2c 20 23 31 32 39 0d  |OV     R0, #129.|
0000c3b0  5d e8 13 20 4d 4f 56 20  20 20 20 20 52 31 2c 20  |].. MOV     R1, |
0000c3c0  23 30 0d 5d f2 17 20 53  55 42 20 20 20 20 20 52  |#0.].. SUB     R|
0000c3d0  31 2c 52 31 2c 20 23 35  39 0d 5d fc 15 20 4d 4f  |1,R1, #59.].. MO|
0000c3e0  56 20 20 20 20 20 52 32  2c 20 23 32 35 35 0d 5e  |V     R2, #255.^|
0000c3f0  06 16 20 53 57 49 20 20  20 20 20 22 4f 53 5f 42  |.. SWI     "OS_B|
0000c400  79 74 65 22 0d 5e 10 15  20 43 4d 50 20 20 20 20  |yte".^.. CMP    |
0000c410  20 52 31 2c 20 23 32 35  35 0d 5e 1a 1e 20 42 4e  | R1, #255.^.. BN|
0000c420  45 20 20 20 20 20 70 32  5f 6e 6f 74 5f 66 69 72  |E     p2_not_fir|
0000c430  65 5f 66 6c 61 6d 65 0d  5e 24 14 20 4d 4f 56 20  |e_flame.^$. MOV |
0000c440  20 20 20 20 52 30 2c 20  23 31 30 0d 5e 2e 1a 20  |    R0, #10.^.. |
0000c450  4d 4f 56 20 20 20 20 20  52 31 2c 52 36 2c 20 4c  |MOV     R1,R6, L|
0000c460  53 52 20 23 32 0d 5e 38  1a 20 4d 4f 56 20 20 20  |SR #2.^8. MOV   |
0000c470  20 20 52 32 2c 52 37 2c  20 4c 53 52 20 23 32 0d  |  R2,R7, LSR #2.|
0000c480  5e 42 1a 20 41 44 44 20  20 20 20 20 52 31 2c 52  |^B. ADD     R1,R|
0000c490  31 2c 20 23 78 65 78 74  25 0d 5e 4c 1e 20 41 44  |1, #xext%.^L. AD|
0000c4a0  44 20 20 20 20 20 52 32  2c 52 32 2c 20 23 79 65  |D     R2,R2, #ye|
0000c4b0  78 74 25 2f 34 2a 32 0d  5e 56 18 20 52 53 42 20  |xt%/4*2.^V. RSB |
0000c4c0  20 20 20 20 52 32 2c 52  32 2c 20 23 32 35 36 0d  |    R2,R2, #256.|
0000c4d0  5e 60 14 20 4d 4f 56 20  20 20 20 20 52 33 2c 20  |^`. MOV     R3, |
0000c4e0  23 37 32 0d 5e 6a 18 20  4c 44 52 20 20 20 20 20  |#72.^j. LDR     |
0000c4f0  52 34 2c 20 61 64 72 5f  72 6e 64 0d 5e 74 14 20  |R4, adr_rnd.^t. |
0000c500  4c 44 52 20 20 20 20 20  52 34 2c 5b 52 34 5d 0d  |LDR     R4,[R4].|
0000c510  5e 7e 14 20 80 20 20 20  20 20 52 34 2c 52 34 2c  |^~. .     R4,R4,|
0000c520  20 23 37 0d 5e 88 16 20  53 55 42 20 20 20 20 20  | #7.^.. SUB     |
0000c530  52 34 2c 52 34 2c 20 23  31 0d 5e 92 1a 20 4d 4f  |R4,R4, #1.^.. MO|
0000c540  56 20 20 20 20 20 52 35  2c 52 35 2c 20 4c 53 52  |V     R5,R5, LSR|
0000c550  20 23 34 0d 5e 9c 15 20  41 44 44 20 20 20 20 20  | #4.^.. ADD     |
0000c560  52 31 2c 52 31 2c 52 35  0d 5e a6 13 20 4d 4f 56  |R1,R1,R5.^.. MOV|
0000c570  20 20 20 20 20 52 35 2c  20 23 30 0d 5e b0 13 20  |     R5, #0.^.. |
0000c580  54 53 54 20 20 20 20 20  52 38 2c 20 23 31 0d 5e  |TST     R8, #1.^|
0000c590  ba 16 20 52 53 42 4e 45  20 20 20 52 33 2c 52 33  |.. RSBNE   R3,R3|
0000c5a0  2c 20 23 30 0d 5e c4 1a  20 53 55 42 4e 45 20 20  |, #0.^.. SUBNE  |
0000c5b0  20 52 31 2c 52 31 2c 20  23 78 65 78 74 25 0d 5e  | R1,R1, #xext%.^|
0000c5c0  ce 15 20 42 4c 20 20 20  20 20 20 61 64 64 5f 63  |.. BL      add_c|
0000c5d0  65 6c 6c 0d 5e d8 17 20  2e 70 32 5f 6e 6f 74 5f  |ell.^.. .p2_not_|
0000c5e0  66 69 72 65 5f 66 6c 61  6d 65 0d 5e e2 18 20 42  |fire_flame.^.. B|
0000c5f0  20 20 20 20 20 20 20 70  32 5f 65 6e 64 5f 66 69  |       p2_end_fi|
0000c600  72 65 0d 5e ec 06 20 3a  0d 5e f6 12 20 2e 70 32  |re.^.. :.^.. .p2|
0000c610  5f 66 69 72 65 5f 62 6f  6d 62 0d 5f 00 15 20 4d  |_fire_bomb._.. M|
0000c620  4f 56 20 20 20 20 20 52  30 2c 20 23 31 32 39 0d  |OV     R0, #129.|
0000c630  5f 0a 13 20 4d 4f 56 20  20 20 20 20 52 31 2c 20  |_.. MOV     R1, |
0000c640  23 30 0d 5f 14 17 20 53  55 42 20 20 20 20 20 52  |#0._.. SUB     R|
0000c650  31 2c 52 31 2c 20 23 35  39 0d 5f 1e 15 20 4d 4f  |1,R1, #59._.. MO|
0000c660  56 20 20 20 20 20 52 32  2c 20 23 32 35 35 0d 5f  |V     R2, #255._|
0000c670  28 16 20 53 57 49 20 20  20 20 20 22 4f 53 5f 42  |(. SWI     "OS_B|
0000c680  79 74 65 22 0d 5f 32 15  20 43 4d 50 20 20 20 20  |yte"._2. CMP    |
0000c690  20 52 31 2c 20 23 32 35  35 0d 5f 3c 1d 20 42 4e  | R1, #255._<. BN|
0000c6a0  45 20 20 20 20 20 70 32  5f 6e 6f 74 5f 66 69 72  |E     p2_not_fir|
0000c6b0  65 5f 62 6f 6d 62 0d 5f  46 18 20 4c 44 52 20 20  |e_bomb._F. LDR  |
0000c6c0  20 20 20 52 30 2c 20 70  32 5f 66 69 72 65 0d 5f  |   R0, p2_fire._|
0000c6d0  50 16 20 41 44 44 20 20  20 20 20 52 30 2c 52 30  |P. ADD     R0,R0|
0000c6e0  2c 20 23 31 0d 5f 5a 14  20 43 4d 50 20 20 20 20  |, #1._Z. CMP    |
0000c6f0  20 52 30 2c 20 23 31 30  0d 5f 64 13 20 4d 4f 56  | R0, #10._d. MOV|
0000c700  47 54 20 20 20 52 30 2c  20 23 30 0d 5f 6e 18 20  |GT   R0, #0._n. |
0000c710  53 54 52 20 20 20 20 20  52 30 2c 20 70 32 5f 66  |STR     R0, p2_f|
0000c720  69 72 65 0d 5f 78 13 20  43 4d 50 20 20 20 20 20  |ire._x. CMP     |
0000c730  52 30 2c 20 23 30 0d 5f  82 1d 20 42 4e 45 20 20  |R0, #0._.. BNE  |
0000c740  20 20 20 70 32 5f 6e 6f  74 5f 66 69 72 65 5f 62  |   p2_not_fire_b|
0000c750  6f 6d 62 0d 5f 8c 14 20  4d 4f 56 20 20 20 20 20  |omb._.. MOV     |
0000c760  52 30 2c 20 23 31 32 0d  5f 96 1a 20 4d 4f 56 20  |R0, #12._.. MOV |
0000c770  20 20 20 20 52 31 2c 52  36 2c 20 4c 53 52 20 23  |    R1,R6, LSR #|
0000c780  32 0d 5f a0 1a 20 4d 4f  56 20 20 20 20 20 52 32  |2._.. MOV     R2|
0000c790  2c 52 37 2c 20 4c 53 52  20 23 32 0d 5f aa 1c 20  |,R7, LSR #2._.. |
0000c7a0  41 44 44 20 20 20 20 20  52 31 2c 52 31 2c 20 23  |ADD     R1,R1, #|
0000c7b0  78 65 78 74 25 2b 31 0d  5f b4 1e 20 41 44 44 20  |xext%+1._.. ADD |
0000c7c0  20 20 20 20 52 32 2c 52  32 2c 20 23 79 65 78 74  |    R2,R2, #yext|
0000c7d0  25 2f 34 2a 32 0d 5f be  18 20 52 53 42 20 20 20  |%/4*2._.. RSB   |
0000c7e0  20 20 52 32 2c 52 32 2c  20 23 32 35 36 0d 5f c8  |  R2,R2, #256._.|
0000c7f0  14 20 4d 4f 56 20 20 20  20 20 52 33 2c 20 23 34  |. MOV     R3, #4|
0000c800  30 0d 5f d2 14 20 4d 4f  56 20 20 20 20 20 52 34  |0._.. MOV     R4|
0000c810  2c 20 23 34 30 0d 5f dc  1d 20 4d 4f 56 20 20 20  |, #40._.. MOV   |
0000c820  20 20 52 35 2c 20 23 62  6f 6d 62 5f 70 61 75 73  |  R5, #bomb_paus|
0000c830  65 25 0d 5f e6 13 20 54  53 54 20 20 20 20 20 52  |e%._.. TST     R|
0000c840  38 2c 20 23 31 0d 5f f0  16 20 52 53 42 4e 45 20  |8, #1._.. RSBNE |
0000c850  20 20 52 33 2c 52 33 2c  20 23 30 0d 5f fa 1c 20  |  R3,R3, #0._.. |
0000c860  53 55 42 4e 45 20 20 20  52 31 2c 52 31 2c 20 23  |SUBNE   R1,R1, #|
0000c870  78 65 78 74 25 2b 32 0d  60 04 15 20 42 4c 20 20  |xext%+2.`.. BL  |
0000c880  20 20 20 20 61 64 64 5f  63 65 6c 6c 0d 60 0e 13  |    add_cell.`..|
0000c890  20 4d 4f 56 20 20 20 20  20 52 35 2c 20 23 32 0d  | MOV     R5, #2.|
0000c8a0  60 18 13 20 4d 4f 56 20  20 20 20 20 52 30 2c 20  |`.. MOV     R0, |
0000c8b0  23 31 0d 60 22 18 20 53  54 52 20 20 20 20 20 52  |#1.`". STR     R|
0000c8c0  30 2c 20 70 32 5f 66 69  72 65 0d 60 2c 16 20 2e  |0, p2_fire.`,. .|
0000c8d0  70 32 5f 6e 6f 74 5f 66  69 72 65 5f 62 6f 6d 62  |p2_not_fire_bomb|
0000c8e0  0d 60 36 18 20 42 20 20  20 20 20 20 20 70 32 5f  |.`6. B       p2_|
0000c8f0  65 6e 64 5f 66 69 72 65  0d 60 40 06 20 3a 0d 60  |end_fire.`@. :.`|
0000c900  4a 11 20 2e 70 32 5f 65  6e 64 5f 66 69 72 65 0d  |J. .p2_end_fire.|
0000c910  60 54 06 20 3a 0d 60 5e  13 20 4d 4f 56 20 20 20  |`T. :.`^. MOV   |
0000c920  20 20 52 30 2c 20 23 31  0d 60 68 1a 20 4d 4f 56  |  R0, #1.`h. MOV|
0000c930  20 20 20 20 20 52 31 2c  52 36 2c 20 4c 53 52 20  |     R1,R6, LSR |
0000c940  23 32 0d 60 72 1a 20 4d  4f 56 20 20 20 20 20 52  |#2.`r. MOV     R|
0000c950  32 2c 52 37 2c 20 4c 53  52 20 23 32 0d 60 7c 13  |2,R7, LSR #2.`|.|
0000c960  20 54 53 54 20 20 20 20  20 52 38 2c 20 23 31 0d  | TST     R8, #1.|
0000c970  60 86 1a 20 41 44 44 4e  45 20 20 20 52 31 2c 52  |`.. ADDNE   R1,R|
0000c980  31 2c 20 23 78 65 78 74  25 0d 60 90 1c 20 41 44  |1, #xext%.`.. AD|
0000c990  44 20 20 20 20 20 52 32  2c 52 32 2c 20 23 79 65  |D     R2,R2, #ye|
0000c9a0  78 74 25 2f 34 0d 60 9a  18 20 52 53 42 20 20 20  |xt%/4.`.. RSB   |
0000c9b0  20 20 52 32 2c 52 32 2c  20 23 32 35 36 0d 60 a4  |  R2,R2, #256.`.|
0000c9c0  18 20 4c 44 52 20 20 20  20 20 52 33 2c 20 61 64  |. LDR     R3, ad|
0000c9d0  72 5f 72 6e 64 0d 60 ae  14 20 4c 44 52 20 20 20  |r_rnd.`.. LDR   |
0000c9e0  20 20 52 33 2c 5b 52 33  5d 0d 60 b8 18 20 54 53  |  R3,[R3].`.. TS|
0000c9f0  54 20 20 20 20 20 52 33  2c 20 23 25 31 30 30 30  |T     R3, #%1000|
0000ca00  30 0d 60 c2 16 20 53 55  42 45 51 20 20 20 52 32  |0.`.. SUBEQ   R2|
0000ca10  2c 52 32 2c 20 23 31 0d  60 cc 15 20 80 20 20 20  |,R2, #1.`.. .   |
0000ca20  20 20 52 33 2c 52 33 2c  20 23 31 35 0d 60 d6 16  |  R3,R3, #15.`..|
0000ca30  20 53 55 42 20 20 20 20  20 52 33 2c 52 33 2c 20  | SUB     R3,R3, |
0000ca40  23 37 0d 60 e0 13 20 4d  4f 56 20 20 20 20 20 52  |#7.`.. MOV     R|
0000ca50  34 2c 20 23 30 0d 60 ea  17 20 53 55 42 20 20 20  |4, #0.`.. SUB   |
0000ca60  20 20 52 34 2c 52 34 2c  20 23 34 30 0d 60 f4 14  |  R4,R4, #40.`..|
0000ca70  20 4d 4f 56 20 20 20 20  20 52 35 2c 20 23 33 32  | MOV     R5, #32|
0000ca80  0d 60 fe 15 20 42 4c 20  20 20 20 20 20 61 64 64  |.`.. BL      add|
0000ca90  5f 63 65 6c 6c 0d 61 08  13 20 4d 4f 56 20 20 20  |_cell.a.. MOV   |
0000caa0  20 20 52 35 2c 20 23 32  0d 61 12 06 20 3a 0d 61  |  R5, #2.a.. :.a|
0000cab0  1c 14 20 80 20 20 20 20  20 52 30 2c 52 38 2c 20  |.. .     R0,R8, |
0000cac0  23 31 0d 61 26 16 20 41  44 44 20 20 20 20 20 52  |#1.a&. ADD     R|
0000cad0  30 2c 52 30 2c 20 23 32  0d 61 30 1a 20 4d 4f 56  |0,R0, #2.a0. MOV|
0000cae0  20 20 20 20 20 52 31 2c  52 36 2c 20 4c 53 52 20  |     R1,R6, LSR |
0000caf0  23 32 0d 61 3a 1a 20 4d  4f 56 20 20 20 20 20 52  |#2.a:. MOV     R|
0000cb00  32 2c 52 37 2c 20 4c 53  52 20 23 32 0d 61 44 19  |2,R7, LSR #2.aD.|
0000cb10  20 4c 44 52 20 20 20 20  20 52 33 2c 20 61 64 72  | LDR     R3, adr|
0000cb20  5f 70 32 5f 78 0d 61 4e  14 20 53 54 52 20 20 20  |_p2_x.aN. STR   |
0000cb30  20 20 52 31 2c 5b 52 33  5d 0d 61 58 19 20 4c 44  |  R1,[R3].aX. LD|
0000cb40  52 20 20 20 20 20 52 33  2c 20 61 64 72 5f 70 32  |R     R3, adr_p2|
0000cb50  5f 79 0d 61 62 14 20 53  54 52 20 20 20 20 20 52  |_y.ab. STR     R|
0000cb60  32 2c 5b 52 33 5d 0d 61  6c 1d 20 42 4c 20 20 20  |2,[R3].al. BL   |
0000cb70  20 20 20 70 6c 6f 74 5f  73 70 72 69 74 65 5f 31  |   plot_sprite_1|
0000cb80  36 31 36 0d 61 76 06 20  3a 0d 61 80 19 20 4c 44  |616.av. :.a.. LD|
0000cb90  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 39 2c 50  |MFD   R13!,{R9,P|
0000cba0  43 7d 0d 61 8a 06 20 3a  0d 61 94 0e 20 2e 61 64  |C}.a.. :.a.. .ad|
0000cbb0  72 5f 70 32 5f 78 0d 61  9e 11 20 45 51 55 44 20  |r_p2_x.a.. EQUD |
0000cbc0  20 20 20 70 32 5f 78 0d  61 a8 0e 20 2e 61 64 72  |   p2_x.a.. .adr|
0000cbd0  5f 70 32 5f 79 0d 61 b2  11 20 45 51 55 44 20 20  |_p2_y.a.. EQUD  |
0000cbe0  20 20 70 32 5f 79 0d 61  bc 13 20 2e 61 64 72 5f  |  p2_y.a.. .adr_|
0000cbf0  70 32 5f 77 65 61 70 6f  6e 0d 61 c6 16 20 45 51  |p2_weapon.a.. EQ|
0000cc00  55 44 20 20 20 20 70 32  5f 77 65 61 70 6f 6e 0d  |UD    p2_weapon.|
0000cc10  61 d0 13 20 2e 61 64 72  5f 70 31 5f 77 65 61 70  |a.. .adr_p1_weap|
0000cc20  6f 6e 0d 61 da 16 20 45  51 55 44 20 20 20 20 70  |on.a.. EQUD    p|
0000cc30  31 5f 77 65 61 70 6f 6e  0d 61 e4 0d 20 2e 70 31  |1_weapon.a.. .p1|
0000cc40  5f 66 69 72 65 0d 61 ee  0e 20 45 51 55 44 20 20  |_fire.a.. EQUD  |
0000cc50  20 20 30 0d 61 f8 0f 20  2e 65 78 70 6c 6f 64 65  |  0.a.. .explode|
0000cc60  5f 31 0d 62 02 0e 20 45  51 55 44 20 20 20 20 30  |_1.b.. EQUD    0|
0000cc70  0d 62 0c 06 20 3a 0d 62  16 0d 20 2e 70 6c 61 79  |.b.. :.b.. .play|
0000cc80  65 72 31 0d 62 20 1a 20  53 54 4d 46 44 20 20 20  |er1.b . STMFD   |
0000cc90  52 31 33 21 2c 7b 52 39  2c 52 31 34 7d 0d 62 2a  |R13!,{R9,R14}.b*|
0000cca0  06 20 3a 0d 62 34 14 20  43 4d 50 20 20 20 20 20  |. :.b4. CMP     |
0000ccb0  52 36 2c 20 23 33 32 0d  62 3e 14 20 4d 4f 56 4c  |R6, #32.b>. MOVL|
0000ccc0  54 20 20 20 52 36 2c 20  23 33 32 0d 62 48 14 20  |T   R6, #32.bH. |
0000ccd0  43 4d 50 20 20 20 20 20  52 37 2c 20 23 33 32 0d  |CMP     R7, #32.|
0000cce0  62 52 14 20 4d 4f 56 4c  54 20 20 20 52 37 2c 20  |bR. MOVLT   R7, |
0000ccf0  23 33 32 0d 62 5c 19 20  43 4d 50 20 20 20 20 20  |#32.b\. CMP     |
0000cd00  52 36 2c 20 23 31 32 38  30 2d 36 34 0d 62 66 19  |R6, #1280-64.bf.|
0000cd10  20 4d 4f 56 47 54 20 20  20 52 36 2c 20 23 31 32  | MOVGT   R6, #12|
0000cd20  38 30 2d 36 34 0d 62 70  19 20 43 4d 50 20 20 20  |80-64.bp. CMP   |
0000cd30  20 20 52 37 2c 20 23 31  30 32 34 2d 36 34 0d 62  |  R7, #1024-64.b|
0000cd40  7a 19 20 4d 4f 56 47 54  20 20 20 52 37 2c 20 23  |z. MOVGT   R7, #|
0000cd50  31 30 32 34 2d 36 34 0d  62 84 06 20 3a 0d 62 8e  |1024-64.b.. :.b.|
0000cd60  1e 20 4c 44 52 20 20 20  20 20 52 30 2c 20 70 6c  |. LDR     R0, pl|
0000cd70  61 79 65 72 31 5f 61 6c  69 76 65 0d 62 98 13 20  |ayer1_alive.b.. |
0000cd80  43 4d 50 20 20 20 20 20  52 30 2c 20 23 30 0d 62  |CMP     R0, #0.b|
0000cd90  a2 19 20 42 45 51 20 20  20 20 20 70 6c 61 79 5f  |.. BEQ     play_|
0000cda0  70 6c 61 79 65 72 31 0d  62 ac 1c 20 42 4e 45 20  |player1.b.. BNE |
0000cdb0  20 20 20 20 65 78 70 6c  6f 64 65 5f 70 6c 61 79  |    explode_play|
0000cdc0  65 72 31 0d 62 b6 06 20  3a 0d 62 c0 15 20 2e 65  |er1.b.. :.b.. .e|
0000cdd0  78 70 6c 6f 64 65 5f 70  6c 61 79 65 72 31 0d 62  |xplode_player1.b|
0000cde0  ca 1a 20 4c 44 52 20 20  20 20 20 52 30 2c 20 65  |.. LDR     R0, e|
0000cdf0  78 70 6c 6f 64 65 5f 31  0d 62 d4 16 20 41 44 44  |xplode_1.b.. ADD|
0000ce00  20 20 20 20 20 52 30 2c  52 30 2c 20 23 31 0d 62  |     R0,R0, #1.b|
0000ce10  de 1a 20 53 54 52 20 20  20 20 20 52 30 2c 20 65  |.. STR     R0, e|
0000ce20  78 70 6c 6f 64 65 5f 31  0d 62 e8 16 20 43 4d 50  |xplode_1.b.. CMP|
0000ce30  20 20 20 20 20 52 30 2c  20 23 37 3c 3c 33 0d 62  |     R0, #7<<3.b|
0000ce40  f2 19 20 53 54 52 47 54  20 20 20 52 30 2c 20 65  |.. STRGT   R0, e|
0000ce50  6e 64 5f 67 61 6d 65 0d  62 fc 19 20 4c 44 4d 47  |nd_game.b.. LDMG|
0000ce60  54 46 44 20 52 31 33 21  2c 7b 52 39 2c 50 43 7d  |TFD R13!,{R9,PC}|
0000ce70  0d 63 06 16 20 43 4d 50  20 20 20 20 20 52 30 2c  |.c.. CMP     R0,|
0000ce80  20 23 37 3c 3c 31 0d 63  10 19 20 4c 44 4d 47 54  | #7<<1.c.. LDMGT|
0000ce90  46 44 20 52 31 33 21 2c  7b 52 39 2c 50 43 7d 0d  |FD R13!,{R9,PC}.|
0000cea0  63 1a 1a 20 4d 4f 56 20  20 20 20 20 52 30 2c 52  |c.. MOV     R0,R|
0000ceb0  30 2c 20 41 53 52 20 23  31 0d 63 24 1a 20 4d 4f  |0, ASR #1.c$. MO|
0000cec0  56 20 20 20 20 20 52 31  2c 52 36 2c 20 41 53 52  |V     R1,R6, ASR|
0000ced0  20 23 32 0d 63 2e 1a 20  4d 4f 56 20 20 20 20 20  | #2.c.. MOV     |
0000cee0  52 32 2c 52 37 2c 20 41  53 52 20 23 32 0d 63 38  |R2,R7, ASR #2.c8|
0000cef0  16 20 53 55 42 20 20 20  20 20 52 31 2c 52 31 2c  |. SUB     R1,R1,|
0000cf00  20 23 34 0d 63 42 1d 20  42 4c 20 20 20 20 20 20  | #4.cB. BL      |
0000cf10  70 6c 6f 74 5f 73 70 72  69 74 65 5f 32 30 31 36  |plot_sprite_2016|
0000cf20  0d 63 4c 06 20 3a 0d 63  56 19 20 4c 44 4d 46 44  |.cL. :.cV. LDMFD|
0000cf30  20 20 20 52 31 33 21 2c  7b 52 39 2c 50 43 7d 0d  |   R13!,{R9,PC}.|
0000cf40  63 60 06 20 3a 0d 63 6a  12 20 2e 70 6c 61 79 5f  |c`. :.cj. .play_|
0000cf50  70 6c 61 79 65 72 31 0d  63 74 06 20 3a 0d 63 7e  |player1.ct. :.c~|
0000cf60  1a 20 4d 4f 56 20 20 20  20 20 52 31 2c 52 36 2c  |. MOV     R1,R6,|
0000cf70  20 4c 53 52 20 23 32 0d  63 88 1a 20 4d 4f 56 20  | LSR #2.c.. MOV |
0000cf80  20 20 20 20 52 32 2c 52  37 2c 20 4c 53 52 20 23  |    R2,R7, LSR #|
0000cf90  32 0d 63 92 1c 20 41 44  44 20 20 20 20 20 52 31  |2.c.. ADD     R1|
0000cfa0  2c 52 31 2c 20 23 78 65  78 74 25 2f 32 0d 63 9c  |,R1, #xext%/2.c.|
0000cfb0  17 20 42 4c 20 20 20 20  20 20 72 65 61 64 5f 70  |. BL      read_p|
0000cfc0  6f 69 6e 74 0d 63 a6 13  20 43 4d 50 20 20 20 20  |oint.c.. CMP    |
0000cfd0  20 52 30 2c 20 23 30 0d  63 b0 16 20 53 55 42 45  | R0, #0.c.. SUBE|
0000cfe0  51 20 20 20 52 37 2c 52  37 2c 20 23 34 0d 63 ba  |Q   R7,R7, #4.c.|
0000cff0  06 20 3a 0d 63 c4 1a 20  4d 4f 56 20 20 20 20 20  |. :.c.. MOV     |
0000d000  52 31 2c 52 36 2c 20 4c  53 52 20 23 32 0d 63 ce  |R1,R6, LSR #2.c.|
0000d010  1a 20 4d 4f 56 20 20 20  20 20 52 32 2c 52 37 2c  |. MOV     R2,R7,|
0000d020  20 4c 53 52 20 23 32 0d  63 d8 1c 20 41 44 44 20  | LSR #2.c.. ADD |
0000d030  20 20 20 20 52 31 2c 52  31 2c 20 23 78 65 78 74  |    R1,R1, #xext|
0000d040  25 2f 33 0d 63 e2 17 20  42 4c 20 20 20 20 20 20  |%/3.c.. BL      |
0000d050  72 65 61 64 5f 70 6f 69  6e 74 0d 63 ec 13 20 43  |read_point.c.. C|
0000d060  4d 50 20 20 20 20 20 52  30 2c 20 23 30 0d 63 f6  |MP     R0, #0.c.|
0000d070  16 20 41 44 44 4e 45 20  20 20 52 37 2c 52 37 2c  |. ADDNE   R7,R7,|
0000d080  20 23 34 0d 64 00 06 20  3a 0d 64 0a 1a 20 4d 4f  | #4.d.. :.d.. MO|
0000d090  56 20 20 20 20 20 52 31  2c 52 36 2c 20 4c 53 52  |V     R1,R6, LSR|
0000d0a0  20 23 32 0d 64 14 1a 20  4d 4f 56 20 20 20 20 20  | #2.d.. MOV     |
0000d0b0  52 32 2c 52 37 2c 20 4c  53 52 20 23 32 0d 64 1e  |R2,R7, LSR #2.d.|
0000d0c0  1e 20 41 44 44 20 20 20  20 20 52 31 2c 52 31 2c  |. ADD     R1,R1,|
0000d0d0  20 23 78 65 78 74 25 2f  33 2a 32 0d 64 28 17 20  | #xext%/3*2.d(. |
0000d0e0  42 4c 20 20 20 20 20 20  72 65 61 64 5f 70 6f 69  |BL      read_poi|
0000d0f0  6e 74 0d 64 32 13 20 43  4d 50 20 20 20 20 20 52  |nt.d2. CMP     R|
0000d100  30 2c 20 23 30 0d 64 3c  16 20 41 44 44 4e 45 20  |0, #0.d<. ADDNE |
0000d110  20 20 52 37 2c 52 37 2c  20 23 34 0d 64 46 06 20  |  R7,R7, #4.dF. |
0000d120  3a 0d 64 50 1a 20 80 20  20 20 20 20 52 31 30 2c  |:.dP. .     R10,|
0000d130  52 38 2c 20 23 32 35 35  3c 3c 38 0d 64 5a 1c 20  |R8, #255<<8.dZ. |
0000d140  4d 4f 56 20 20 20 20 20  52 31 30 2c 52 31 30 2c  |MOV     R10,R10,|
0000d150  20 4c 53 52 20 23 38 0d  64 64 06 20 3a 0d 64 6e  | LSR #8.dd. :.dn|
0000d160  1a 20 4d 4f 56 20 20 20  20 20 52 31 2c 52 36 2c  |. MOV     R1,R6,|
0000d170  20 4c 53 52 20 23 32 0d  64 78 1a 20 4d 4f 56 20  | LSR #2.dx. MOV |
0000d180  20 20 20 20 52 32 2c 52  37 2c 20 4c 53 52 20 23  |    R2,R7, LSR #|
0000d190  32 0d 64 82 1c 20 41 44  44 20 20 20 20 20 52 31  |2.d.. ADD     R1|
0000d1a0  2c 52 31 2c 20 23 78 65  78 74 25 2d 31 0d 64 8c  |,R1, #xext%-1.d.|
0000d1b0  16 20 41 44 44 20 20 20  20 20 52 32 2c 52 32 2c  |. ADD     R2,R2,|
0000d1c0  20 23 34 0d 64 96 17 20  42 4c 20 20 20 20 20 20  | #4.d.. BL      |
0000d1d0  72 65 61 64 5f 70 6f 69  6e 74 0d 64 a0 13 20 43  |read_point.d.. C|
0000d1e0  4d 50 20 20 20 20 20 52  30 2c 20 23 30 0d 64 aa  |MP     R0, #0.d.|
0000d1f0  19 20 42 4e 45 20 20 20  20 20 70 31 5f 6e 6f 74  |. BNE     p1_not|
0000d200  5f 72 69 67 68 74 0d 64  b4 1a 20 4d 4f 56 20 20  |_right.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 be 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 c8 1a 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 0d 64 d2 1c  20 41 44 44 20 20 20 20  |ext%.d.. ADD    |
0000d260  20 52 32 2c 52 32 2c 20  23 79 65 78 74 25 2d 32  | R2,R2, #yext%-2|
0000d270  0d 64 dc 17 20 42 4c 20  20 20 20 20 20 72 65 61  |.d.. BL      rea|
0000d280  64 5f 70 6f 69 6e 74 0d  64 e6 13 20 43 4d 50 20  |d_point.d.. CMP |
0000d290  20 20 20 20 52 30 2c 20  23 30 0d 64 f0 19 20 42  |    R0, #0.d.. B|
0000d2a0  4e 45 20 20 20 20 20 70  31 5f 6e 6f 74 5f 72 69  |NE     p1_not_ri|
0000d2b0  67 68 74 0d 64 fa 15 20  4d 4f 56 20 20 20 20 20  |ght.d.. MOV     |
0000d2c0  52 30 2c 20 23 31 32 39  0d 65 04 13 20 4d 4f 56  |R0, #129.e.. MOV|
0000d2d0  20 20 20 20 20 52 31 2c  20 23 30 0d 65 0e 17 20  |     R1, #0.e.. |
0000d2e0  53 55 42 20 20 20 20 20  52 31 2c 52 31 2c 20 23  |SUB     R1,R1, #|
0000d2f0  36 37 0d 65 18 15 20 4d  4f 56 20 20 20 20 20 52  |67.e.. MOV     R|
0000d300  32 2c 20 23 32 35 35 0d  65 22 16 20 53 57 49 20  |2, #255.e". SWI |
0000d310  20 20 20 20 22 4f 53 5f  42 79 74 65 22 0d 65 2c  |    "OS_Byte".e,|
0000d320  15 20 43 4d 50 20 20 20  20 20 52 31 2c 20 23 32  |. CMP     R1, #2|
0000d330  35 35 0d 65 36 19 20 42  4e 45 20 20 20 20 20 70  |55.e6. BNE     p|
0000d340  31 5f 6e 6f 74 5f 72 69  67 68 74 0d 65 40 18 20  |1_not_right.e@. |
0000d350  41 44 44 20 20 20 20 20  52 31 30 2c 52 31 30 2c  |ADD     R10,R10,|
0000d360  20 23 34 0d 65 4a 16 20  42 49 43 20 20 20 20 20  | #4.eJ. BIC     |
0000d370  52 38 2c 52 38 2c 20 23  31 0d 65 54 12 20 2e 70  |R8,R8, #1.eT. .p|
0000d380  31 5f 6e 6f 74 5f 72 69  67 68 74 0d 65 5e 06 20  |1_not_right.e^. |
0000d390  3a 0d 65 68 1a 20 4d 4f  56 20 20 20 20 20 52 31  |:.eh. MOV     R1|
0000d3a0  2c 52 36 2c 20 4c 53 52  20 23 32 0d 65 72 1a 20  |,R6, LSR #2.er. |
0000d3b0  4d 4f 56 20 20 20 20 20  52 32 2c 52 37 2c 20 4c  |MOV     R2,R7, L|
0000d3c0  53 52 20 23 32 0d 65 7c  16 20 53 55 42 20 20 20  |SR #2.e|. SUB   |
0000d3d0  20 20 52 31 2c 52 31 2c  20 23 31 0d 65 86 16 20  |  R1,R1, #1.e.. |
0000d3e0  41 44 44 20 20 20 20 20  52 32 2c 52 32 2c 20 23  |ADD     R2,R2, #|
0000d3f0  34 0d 65 90 17 20 42 4c  20 20 20 20 20 20 72 65  |4.e.. BL      re|
0000d400  61 64 5f 70 6f 69 6e 74  0d 65 9a 13 20 43 4d 50  |ad_point.e.. CMP|
0000d410  20 20 20 20 20 52 30 2c  20 23 30 0d 65 a4 18 20  |     R0, #0.e.. |
0000d420  42 4e 45 20 20 20 20 20  70 31 5f 6e 6f 74 5f 6c  |BNE     p1_not_l|
0000d430  65 66 74 0d 65 ae 1a 20  4d 4f 56 20 20 20 20 20  |eft.e.. MOV     |
0000d440  52 31 2c 52 36 2c 20 4c  53 52 20 23 32 0d 65 b8  |R1,R6, LSR #2.e.|
0000d450  1a 20 4d 4f 56 20 20 20  20 20 52 32 2c 52 37 2c  |. MOV     R2,R7,|
0000d460  20 4c 53 52 20 23 32 0d  65 c2 16 20 53 55 42 20  | LSR #2.e.. SUB |
0000d470  20 20 20 20 52 31 2c 52  31 2c 20 23 31 0d 65 cc  |    R1,R1, #1.e.|
0000d480  1c 20 41 44 44 20 20 20  20 20 52 32 2c 52 32 2c  |. ADD     R2,R2,|
0000d490  20 23 79 65 78 74 25 2d  32 0d 65 d6 17 20 42 4c  | #yext%-2.e.. BL|
0000d4a0  20 20 20 20 20 20 72 65  61 64 5f 70 6f 69 6e 74  |      read_point|
0000d4b0  0d 65 e0 13 20 43 4d 50  20 20 20 20 20 52 30 2c  |.e.. CMP     R0,|
0000d4c0  20 23 30 0d 65 ea 18 20  42 4e 45 20 20 20 20 20  | #0.e.. BNE     |
0000d4d0  70 31 5f 6e 6f 74 5f 6c  65 66 74 0d 65 f4 15 20  |p1_not_left.e.. |
0000d4e0  4d 4f 56 20 20 20 20 20  52 30 2c 20 23 31 32 39  |MOV     R0, #129|
0000d4f0  0d 65 fe 13 20 4d 4f 56  20 20 20 20 20 52 31 2c  |.e.. MOV     R1,|
0000d500  20 23 30 0d 66 08 17 20  53 55 42 20 20 20 20 20  | #0.f.. SUB     |
0000d510  52 31 2c 52 31 2c 20 23  39 38 0d 66 12 15 20 4d  |R1,R1, #98.f.. M|
0000d520  4f 56 20 20 20 20 20 52  32 2c 20 23 32 35 35 0d  |OV     R2, #255.|
0000d530  66 1c 16 20 53 57 49 20  20 20 20 20 22 4f 53 5f  |f.. SWI     "OS_|
0000d540  42 79 74 65 22 0d 66 26  15 20 43 4d 50 20 20 20  |Byte".f&. CMP   |
0000d550  20 20 52 31 2c 20 23 32  35 35 0d 66 30 18 20 42  |  R1, #255.f0. B|
0000d560  4e 45 20 20 20 20 20 70  31 5f 6e 6f 74 5f 6c 65  |NE     p1_not_le|
0000d570  66 74 0d 66 3a 18 20 53  55 42 20 20 20 20 20 52  |ft.f:. SUB     R|
0000d580  31 30 2c 52 31 30 2c 20  23 34 0d 66 44 15 20 84  |10,R10, #4.fD. .|
0000d590  52 20 20 20 20 20 52 38  2c 52 38 2c 20 23 31 0d  |R     R8,R8, #1.|
0000d5a0  66 4e 11 20 2e 70 31 5f  6e 6f 74 5f 6c 65 66 74  |fN. .p1_not_left|
0000d5b0  0d 66 58 06 20 3a 0d 66  62 16 20 43 4d 50 20 20  |.fX. :.fb. CMP  |
0000d5c0  20 20 20 52 31 30 2c 20  23 31 32 38 0d 66 6c 18  |   R10, #128.fl.|
0000d5d0  20 42 45 51 20 20 20 20  20 70 31 5f 73 69 64 65  | BEQ     p1_side|
0000d5e0  77 61 79 73 0d 66 76 15  20 42 47 54 20 20 20 20  |ways.fv. BGT    |
0000d5f0  20 70 31 5f 72 69 67 68  74 0d 66 80 1a 20 4d 4f  | p1_right.f.. MO|
0000d600  56 20 20 20 20 20 52 31  2c 52 36 2c 20 4c 53 52  |V     R1,R6, LSR|
0000d610  20 23 32 0d 66 8a 1a 20  4d 4f 56 20 20 20 20 20  | #2.f.. MOV     |
0000d620  52 32 2c 52 37 2c 20 4c  53 52 20 23 32 0d 66 94  |R2,R7, LSR #2.f.|
0000d630  16 20 53 55 42 20 20 20  20 20 52 31 2c 52 31 2c  |. SUB     R1,R1,|
0000d640  20 23 31 0d 66 9e 16 20  41 44 44 20 20 20 20 20  | #1.f.. ADD     |
0000d650  52 32 2c 52 32 2c 20 23  32 0d 66 a8 17 20 42 4c  |R2,R2, #2.f.. BL|
0000d660  20 20 20 20 20 20 72 65  61 64 5f 70 6f 69 6e 74  |      read_point|
0000d670  0d 66 b2 13 20 43 4d 50  20 20 20 20 20 52 30 2c  |.f.. CMP     R0,|
0000d680  20 23 30 0d 66 bc 16 20  4d 4f 56 4e 45 20 20 20  | #0.f.. MOVNE   |
0000d690  52 31 30 2c 20 23 31 32  38 0d 66 c6 1a 20 4d 4f  |R10, #128.f.. MO|
0000d6a0  56 20 20 20 20 20 52 31  2c 52 36 2c 20 4c 53 52  |V     R1,R6, LSR|
0000d6b0  20 23 32 0d 66 d0 1a 20  4d 4f 56 20 20 20 20 20  | #2.f.. MOV     |
0000d6c0  52 32 2c 52 37 2c 20 4c  53 52 20 23 32 0d 66 da  |R2,R7, LSR #2.f.|
0000d6d0  16 20 53 55 42 20 20 20  20 20 52 31 2c 52 31 2c  |. SUB     R1,R1,|
0000d6e0  20 23 31 0d 66 e4 1c 20  41 44 44 20 20 20 20 20  | #1.f.. ADD     |
0000d6f0  52 32 2c 52 32 2c 20 23  79 65 78 74 25 2d 32 0d  |R2,R2, #yext%-2.|
0000d700  66 ee 17 20 42 4c 20 20  20 20 20 20 72 65 61 64  |f.. BL      read|
0000d710  5f 70 6f 69 6e 74 0d 66  f8 13 20 43 4d 50 20 20  |_point.f.. CMP  |
0000d720  20 20 20 52 30 2c 20 23  30 0d 67 02 16 20 4d 4f  |   R0, #0.g.. MO|
0000d730  56 4e 45 20 20 20 52 31  30 2c 20 23 31 32 38 0d  |VNE   R10, #128.|
0000d740  67 0c 18 20 42 20 20 20  20 20 20 20 70 31 5f 73  |g.. B       p1_s|
0000d750  69 64 65 77 61 79 73 0d  67 16 0e 20 2e 70 31 5f  |ideways.g.. .p1_|
0000d760  72 69 67 68 74 0d 67 20  1a 20 4d 4f 56 20 20 20  |right.g . MOV   |
0000d770  20 20 52 31 2c 52 36 2c  20 4c 53 52 20 23 32 0d  |  R1,R6, LSR #2.|
0000d780  67 2a 1a 20 4d 4f 56 20  20 20 20 20 52 32 2c 52  |g*. MOV     R2,R|
0000d790  37 2c 20 4c 53 52 20 23  32 0d 67 34 1a 20 41 44  |7, LSR #2.g4. AD|
0000d7a0  44 20 20 20 20 20 52 31  2c 52 31 2c 20 23 78 65  |D     R1,R1, #xe|
0000d7b0  78 74 25 0d 67 3e 16 20  41 44 44 20 20 20 20 20  |xt%.g>. ADD     |
0000d7c0  52 32 2c 52 32 2c 20 23  32 0d 67 48 17 20 42 4c  |R2,R2, #2.gH. BL|
0000d7d0  20 20 20 20 20 20 72 65  61 64 5f 70 6f 69 6e 74  |      read_point|
0000d7e0  0d 67 52 13 20 43 4d 50  20 20 20 20 20 52 30 2c  |.gR. CMP     R0,|
0000d7f0  20 23 30 0d 67 5c 16 20  4d 4f 56 4e 45 20 20 20  | #0.g\. MOVNE   |
0000d800  52 31 30 2c 20 23 31 32  38 0d 67 66 1a 20 4d 4f  |R10, #128.gf. MO|
0000d810  56 20 20 20 20 20 52 31  2c 52 36 2c 20 4c 53 52  |V     R1,R6, LSR|
0000d820  20 23 32 0d 67 70 1a 20  4d 4f 56 20 20 20 20 20  | #2.gp. MOV     |
0000d830  52 32 2c 52 37 2c 20 4c  53 52 20 23 32 0d 67 7a  |R2,R7, LSR #2.gz|
0000d840  1a 20 41 44 44 20 20 20  20 20 52 31 2c 52 31 2c  |. ADD     R1,R1,|
0000d850  20 23 78 65 78 74 25 0d  67 84 1c 20 41 44 44 20  | #xext%.g.. ADD |
0000d860  20 20 20 20 52 32 2c 52  32 2c 20 23 79 65 78 74  |    R2,R2, #yext|
0000d870  25 2d 32 0d 67 8e 17 20  42 4c 20 20 20 20 20 20  |%-2.g.. BL      |
0000d880  72 65 61 64 5f 70 6f 69  6e 74 0d 67 98 13 20 43  |read_point.g.. C|
0000d890  4d 50 20 20 20 20 20 52  30 2c 20 23 30 0d 67 a2  |MP     R0, #0.g.|
0000d8a0  16 20 4d 4f 56 4e 45 20  20 20 52 31 30 2c 20 23  |. MOVNE   R10, #|
0000d8b0  31 32 38 0d 67 ac 18 20  42 20 20 20 20 20 20 20  |128.g.. B       |
0000d8c0  70 31 5f 73 69 64 65 77  61 79 73 0d 67 b6 11 20  |p1_sideways.g.. |
0000d8d0  2e 70 31 5f 73 69 64 65  77 61 79 73 0d 67 c0 1b  |.p1_sideways.g..|
0000d8e0  20 43 4d 50 20 20 20 20  20 52 31 30 2c 20 23 31  | CMP     R10, #1|
0000d8f0  32 38 2b 32 35 2a 32 0d  67 ca 1b 20 4d 4f 56 47  |28+25*2.g.. MOVG|
0000d900  54 20 20 20 52 31 30 2c  20 23 31 32 38 2b 32 35  |T   R10, #128+25|
0000d910  2a 32 0d 67 d4 1b 20 43  4d 50 20 20 20 20 20 52  |*2.g.. CMP     R|
0000d920  31 30 2c 20 23 31 32 38  2d 32 35 2a 32 0d 67 de  |10, #128-25*2.g.|
0000d930  1b 20 4d 4f 56 4c 54 20  20 20 52 31 30 2c 20 23  |. MOVLT   R10, #|
0000d940  31 32 38 2d 32 35 2a 32  0d 67 e8 16 20 43 4d 50  |128-25*2.g.. CMP|
0000d950  20 20 20 20 20 52 31 30  2c 20 23 31 32 38 0d 67  |     R10, #128.g|
0000d960  f2 18 20 41 44 44 4c 54  20 20 20 52 31 30 2c 52  |.. ADDLT   R10,R|
0000d970  31 30 2c 20 23 31 0d 67  fc 18 20 53 55 42 47 54  |10, #1.g.. SUBGT|
0000d980  20 20 20 52 31 30 2c 52  31 30 2c 20 23 31 0d 68  |   R10,R10, #1.h|
0000d990  06 1b 20 42 49 43 20 20  20 20 20 52 38 2c 52 38  |.. BIC     R8,R8|
0000d9a0  2c 20 23 32 35 35 3c 3c  38 0d 68 10 1d 20 84 52  |, #255<<8.h.. .R|
0000d9b0  20 20 20 20 20 52 38 2c  52 38 2c 52 31 30 2c 20  |     R8,R8,R10, |
0000d9c0  4c 53 4c 20 23 38 0d 68  1a 1a 20 53 55 42 20 20  |LSL #8.h.. SUB  |
0000d9d0  20 20 20 52 31 30 2c 52  31 30 2c 20 23 31 32 38  |   R10,R10, #128|
0000d9e0  0d 68 24 1e 20 41 44 44  20 20 20 20 20 52 36 2c  |.h$. ADD     R6,|
0000d9f0  52 36 2c 52 31 30 2c 20  41 53 52 20 23 33 0d 68  |R6,R10, ASR #3.h|
0000da00  2e 06 20 3a 0d 68 38 1b  20 80 20 20 20 20 20 52  |.. :.h8. .     R|
0000da10  31 30 2c 52 38 2c 20 23  32 35 35 3c 3c 31 36 0d  |10,R8, #255<<16.|
0000da20  68 42 1d 20 4d 4f 56 20  20 20 20 20 52 31 30 2c  |hB. MOV     R10,|
0000da30  52 31 30 2c 20 4c 53 52  20 23 31 36 0d 68 4c 06  |R10, LSR #16.hL.|
0000da40  20 3a 0d 68 56 1a 20 4d  4f 56 20 20 20 20 20 52  | :.hV. MOV     R|
0000da50  31 2c 52 36 2c 20 4c 53  52 20 23 32 0d 68 60 1a  |1,R6, LSR #2.h`.|
0000da60  20 4d 4f 56 20 20 20 20  20 52 32 2c 52 37 2c 20  | MOV     R2,R7, |
0000da70  4c 53 52 20 23 32 0d 68  6a 1e 20 41 44 44 20 20  |LSR #2.hj. ADD  |
0000da80  20 20 20 52 31 2c 52 31  2c 20 23 78 65 78 74 25  |   R1,R1, #xext%|
0000da90  2f 32 2b 31 0d 68 74 1a  20 41 44 44 20 20 20 20  |/2+1.ht. ADD    |
0000daa0  20 52 32 2c 52 32 2c 20  23 79 65 78 74 25 0d 68  | R2,R2, #yext%.h|
0000dab0  7e 17 20 42 4c 20 20 20  20 20 20 72 65 61 64 5f  |~. BL      read_|
0000dac0  70 6f 69 6e 74 0d 68 88  13 20 43 4d 50 20 20 20  |point.h.. CMP   |
0000dad0  20 20 52 30 2c 20 23 30  0d 68 92 16 20 42 4e 45  |  R0, #0.h.. BNE|
0000dae0  20 20 20 20 20 70 31 5f  6e 6f 74 5f 75 70 0d 68  |     p1_not_up.h|
0000daf0  9c 1a 20 4d 4f 56 20 20  20 20 20 52 31 2c 52 36  |.. MOV     R1,R6|
0000db00  2c 20 4c 53 52 20 23 32  0d 68 a6 1a 20 4d 4f 56  |, LSR #2.h.. MOV|
0000db10  20 20 20 20 20 52 32 2c  52 37 2c 20 4c 53 52 20  |     R2,R7, LSR |
0000db20  23 32 0d 68 b0 1e 20 41  44 44 20 20 20 20 20 52  |#2.h.. ADD     R|
0000db30  31 2c 52 31 2c 20 23 78  65 78 74 25 2f 32 2d 31  |1,R1, #xext%/2-1|
0000db40  0d 68 ba 1a 20 41 44 44  20 20 20 20 20 52 32 2c  |.h.. ADD     R2,|
0000db50  52 32 2c 20 23 79 65 78  74 25 0d 68 c4 17 20 42  |R2, #yext%.h.. B|
0000db60  4c 20 20 20 20 20 20 72  65 61 64 5f 70 6f 69 6e  |L      read_poin|
0000db70  74 0d 68 ce 13 20 43 4d  50 20 20 20 20 20 52 30  |t.h.. CMP     R0|
0000db80  2c 20 23 30 0d 68 d8 16  20 42 4e 45 20 20 20 20  |, #0.h.. BNE    |
0000db90  20 70 31 5f 6e 6f 74 5f  75 70 0d 68 e2 15 20 4d  | p1_not_up.h.. M|
0000dba0  4f 56 20 20 20 20 20 52  30 2c 20 23 31 32 39 0d  |OV     R0, #129.|
0000dbb0  68 ec 13 20 4d 4f 56 20  20 20 20 20 52 31 2c 20  |h.. MOV     R1, |
0000dbc0  23 30 0d 68 f6 17 20 53  55 42 20 20 20 20 20 52  |#0.h.. SUB     R|
0000dbd0  31 2c 52 31 2c 20 23 36  38 0d 69 00 15 20 4d 4f  |1,R1, #68.i.. MO|
0000dbe0  56 20 20 20 20 20 52 32  2c 20 23 32 35 35 0d 69  |V     R2, #255.i|
0000dbf0  0a 16 20 53 57 49 20 20  20 20 20 22 4f 53 5f 42  |.. SWI     "OS_B|
0000dc00  79 74 65 22 0d 69 14 15  20 43 4d 50 20 20 20 20  |yte".i.. CMP    |
0000dc10  20 52 31 2c 20 23 32 35  35 0d 69 1e 18 20 41 44  | R1, #255.i.. AD|
0000dc20  44 45 51 20 20 20 52 31  30 2c 52 31 30 2c 20 23  |DEQ   R10,R10, #|
0000dc30  34 0d 69 28 0f 20 2e 70  31 5f 6e 6f 74 5f 75 70  |4.i(. .p1_not_up|
0000dc40  0d 69 32 06 20 3a 0d 69  3c 1a 20 4d 4f 56 20 20  |.i2. :.i<. MOV  |
0000dc50  20 20 20 52 31 2c 52 36  2c 20 4c 53 52 20 23 32  |   R1,R6, LSR #2|
0000dc60  0d 69 46 1a 20 4d 4f 56  20 20 20 20 20 52 32 2c  |.iF. MOV     R2,|
0000dc70  52 37 2c 20 4c 53 52 20  23 32 0d 69 50 1c 20 41  |R7, LSR #2.iP. A|
0000dc80  44 44 20 20 20 20 20 52  31 2c 52 31 2c 20 23 78  |DD     R1,R1, #x|
0000dc90  65 78 74 25 2d 32 0d 69  5a 17 20 42 4c 20 20 20  |ext%-2.iZ. BL   |
0000dca0  20 20 20 72 65 61 64 5f  70 6f 69 6e 74 0d 69 64  |   read_point.id|
0000dcb0  13 20 43 4d 50 20 20 20  20 20 52 30 2c 20 23 30  |. CMP     R0, #0|
0000dcc0  0d 69 6e 18 20 42 4e 45  20 20 20 20 20 70 31 5f  |.in. BNE     p1_|
0000dcd0  6e 6f 74 5f 64 6f 77 6e  0d 69 78 1a 20 4d 4f 56  |not_down.ix. MOV|
0000dce0  20 20 20 20 20 52 31 2c  52 36 2c 20 4c 53 52 20  |     R1,R6, LSR |
0000dcf0  23 32 0d 69 82 1a 20 4d  4f 56 20 20 20 20 20 52  |#2.i.. MOV     R|
0000dd00  32 2c 52 37 2c 20 4c 53  52 20 23 32 0d 69 8c 17  |2,R7, LSR #2.i..|
0000dd10  20 42 4c 20 20 20 20 20  20 72 65 61 64 5f 70 6f  | BL      read_po|
0000dd20  69 6e 74 0d 69 96 13 20  43 4d 50 20 20 20 20 20  |int.i.. CMP     |
0000dd30  52 30 2c 20 23 30 0d 69  a0 18 20 42 4e 45 20 20  |R0, #0.i.. BNE  |
0000dd40  20 20 20 70 31 5f 6e 6f  74 5f 64 6f 77 6e 0d 69  |   p1_not_down.i|
0000dd50  aa 15 20 4d 4f 56 20 20  20 20 20 52 30 2c 20 23  |.. MOV     R0, #|
0000dd60  31 32 39 0d 69 b4 13 20  4d 4f 56 20 20 20 20 20  |129.i.. MOV     |
0000dd70  52 31 2c 20 23 30 0d 69  be 17 20 53 55 42 20 20  |R1, #0.i.. SUB  |
0000dd80  20 20 20 52 31 2c 52 31  2c 20 23 38 33 0d 69 c8  |   R1,R1, #83.i.|
0000dd90  15 20 4d 4f 56 20 20 20  20 20 52 32 2c 20 23 32  |. MOV     R2, #2|
0000dda0  35 35 0d 69 d2 16 20 53  57 49 20 20 20 20 20 22  |55.i.. SWI     "|
0000ddb0  4f 53 5f 42 79 74 65 22  0d 69 dc 15 20 43 4d 50  |OS_Byte".i.. CMP|
0000ddc0  20 20 20 20 20 52 31 2c  20 23 32 35 35 0d 69 e6  |     R1, #255.i.|
0000ddd0  18 20 53 55 42 45 51 20  20 20 52 31 30 2c 52 31  |. SUBEQ   R10,R1|
0000dde0  30 2c 20 23 32 0d 69 f0  11 20 2e 70 31 5f 6e 6f  |0, #2.i.. .p1_no|
0000ddf0  74 5f 64 6f 77 6e 0d 69  fa 06 20 3a 0d 6a 04 18  |t_down.i.. :.j..|
0000de00  20 53 55 42 20 20 20 20  20 52 31 30 2c 52 31 30  | SUB     R10,R10|
0000de10  2c 20 23 31 0d 6a 0e 06  20 3a 0d 6a 18 16 20 43  |, #1.j.. :.j.. C|
0000de20  4d 50 20 20 20 20 20 52  31 30 2c 20 23 31 32 38  |MP     R10, #128|
0000de30  0d 6a 22 12 20 42 45 51  20 20 20 20 20 70 31 5f  |.j". BEQ     p1_|
0000de40  75 64 0d 6a 2c 12 20 42  47 54 20 20 20 20 20 70  |ud.j,. BGT     p|
0000de50  31 5f 75 70 0d 6a 36 1a  20 4d 4f 56 20 20 20 20  |1_up.j6. MOV    |
0000de60  20 52 31 2c 52 36 2c 20  4c 53 52 20 23 32 0d 6a  | R1,R6, LSR #2.j|
0000de70  40 1a 20 4d 4f 56 20 20  20 20 20 52 32 2c 52 37  |@. MOV     R2,R7|
0000de80  2c 20 4c 53 52 20 23 32  0d 6a 4a 1c 20 41 44 44  |, LSR #2.jJ. ADD|
0000de90  20 20 20 20 20 52 31 2c  52 31 2c 20 23 78 65 78  |     R1,R1, #xex|
0000dea0  74 25 2f 32 0d 6a 54 16  20 53 55 42 20 20 20 20  |t%/2.jT. SUB    |
0000deb0  20 52 32 2c 52 32 2c 20  23 31 0d 6a 5e 17 20 42  | R2,R2, #1.j^. B|
0000dec0  4c 20 20 20 20 20 20 72  65 61 64 5f 70 6f 69 6e  |L      read_poin|
0000ded0  74 0d 6a 68 13 20 43 4d  50 20 20 20 20 20 52 30  |t.jh. CMP     R0|
0000dee0  2c 20 23 30 0d 6a 72 16  20 4d 4f 56 4e 45 20 20  |, #0.jr. MOVNE  |
0000def0  20 52 31 30 2c 20 23 31  32 38 0d 6a 7c 12 20 42  | R10, #128.j|. B|
0000df00  20 20 20 20 20 20 20 70  31 5f 75 64 0d 6a 86 0b  |       p1_ud.j..|
0000df10  20 2e 70 31 5f 75 70 0d  6a 90 1a 20 4d 4f 56 20  | .p1_up.j.. MOV |
0000df20  20 20 20 20 52 31 2c 52  36 2c 20 4c 53 52 20 23  |    R1,R6, LSR #|
0000df30  32 0d 6a 9a 1a 20 4d 4f  56 20 20 20 20 20 52 32  |2.j.. MOV     R2|
0000df40  2c 52 37 2c 20 4c 53 52  20 23 32 0d 6a a4 1a 20  |,R7, LSR #2.j.. |
0000df50  41 44 44 20 20 20 20 20  52 31 2c 52 31 2c 20 23  |ADD     R1,R1, #|
0000df60  78 65 78 74 25 0d 6a ae  1a 20 41 44 44 20 20 20  |xext%.j.. ADD   |
0000df70  20 20 52 32 2c 52 32 2c  20 23 79 65 78 74 25 0d  |  R2,R2, #yext%.|
0000df80  6a b8 17 20 42 4c 20 20  20 20 20 20 72 65 61 64  |j.. BL      read|
0000df90  5f 70 6f 69 6e 74 0d 6a  c2 13 20 43 4d 50 20 20  |_point.j.. CMP  |
0000dfa0  20 20 20 52 30 2c 20 23  30 0d 6a cc 16 20 4d 4f  |   R0, #0.j.. MO|
0000dfb0  56 4e 45 20 20 20 52 31  30 2c 20 23 31 32 38 0d  |VNE   R10, #128.|
0000dfc0  6a d6 1a 20 4d 4f 56 20  20 20 20 20 52 31 2c 52  |j.. MOV     R1,R|
0000dfd0  36 2c 20 4c 53 52 20 23  32 0d 6a e0 1a 20 4d 4f  |6, LSR #2.j.. MO|
0000dfe0  56 20 20 20 20 20 52 32  2c 52 37 2c 20 4c 53 52  |V     R2,R7, LSR|
0000dff0  20 23 32 0d 6a ea 1a 20  41 44 44 20 20 20 20 20  | #2.j.. ADD     |
0000e000  52 32 2c 52 32 2c 20 23  79 65 78 74 25 0d 6a f4  |R2,R2, #yext%.j.|
0000e010  17 20 42 4c 20 20 20 20  20 20 72 65 61 64 5f 70  |. BL      read_p|
0000e020  6f 69 6e 74 0d 6a fe 13  20 43 4d 50 20 20 20 20  |oint.j.. CMP    |
0000e030  20 52 30 2c 20 23 30 0d  6b 08 16 20 4d 4f 56 4e  | R0, #0.k.. MOVN|
0000e040  45 20 20 20 52 31 30 2c  20 23 31 32 38 0d 6b 12  |E   R10, #128.k.|
0000e050  12 20 42 20 20 20 20 20  20 20 70 31 5f 75 64 0d  |. B       p1_ud.|
0000e060  6b 1c 0b 20 2e 70 31 5f  75 64 0d 6b 26 1b 20 43  |k.. .p1_ud.k&. C|
0000e070  4d 50 20 20 20 20 20 52  31 30 2c 20 23 31 32 38  |MP     R10, #128|
0000e080  2b 31 30 2a 34 0d 6b 30  1b 20 4d 4f 56 47 54 20  |+10*4.k0. MOVGT |
0000e090  20 20 52 31 30 2c 20 23  31 32 38 2b 31 30 2a 34  |  R10, #128+10*4|
0000e0a0  0d 6b 3a 1a 20 43 4d 50  20 20 20 20 20 52 31 30  |.k:. CMP     R10|
0000e0b0  2c 20 23 31 32 38 2d 38  2a 34 0d 6b 44 1a 20 4d  |, #128-8*4.kD. M|
0000e0c0  4f 56 4c 54 20 20 20 52  31 30 2c 20 23 31 32 38  |OVLT   R10, #128|
0000e0d0  2d 38 2a 34 0d 6b 4e 16  20 43 4d 50 20 20 20 20  |-8*4.kN. CMP    |
0000e0e0  20 52 31 30 2c 20 23 31  32 38 0d 6b 58 1c 20 42  | R10, #128.kX. B|
0000e0f0  49 43 20 20 20 20 20 52  38 2c 52 38 2c 20 23 32  |IC     R8,R8, #2|
0000e100  35 35 3c 3c 31 36 0d 6b  62 1e 20 84 52 20 20 20  |55<<16.kb. .R   |
0000e110  20 20 52 38 2c 52 38 2c  52 31 30 2c 20 4c 53 4c  |  R8,R8,R10, LSL|
0000e120  20 23 31 36 0d 6b 6c 1a  20 53 55 42 20 20 20 20  | #16.kl. SUB    |
0000e130  20 52 31 30 2c 52 31 30  2c 20 23 31 32 38 0d 6b  | R10,R10, #128.k|
0000e140  76 1e 20 41 44 44 20 20  20 20 20 52 37 2c 52 37  |v. ADD     R7,R7|
0000e150  2c 52 31 30 2c 20 41 53  52 20 23 32 0d 6b 80 06  |,R10, ASR #2.k..|
0000e160  20 3a 0d 6b 8a 1e 20 4c  44 52 20 20 20 20 20 52  | :.k.. LDR     R|
0000e170  30 2c 20 61 64 72 5f 70  31 5f 77 65 61 70 6f 6e  |0, adr_p1_weapon|
0000e180  0d 6b 94 14 20 4c 44 52  20 20 20 20 20 52 30 2c  |.k.. LDR     R0,|
0000e190  5b 52 30 5d 0d 6b 9e 13  20 43 4d 50 20 20 20 20  |[R0].k.. CMP    |
0000e1a0  20 52 30 2c 20 23 32 0d  6b a8 1b 20 42 45 51 20  | R0, #2.k.. BEQ |
0000e1b0  20 20 20 20 70 31 5f 66  69 72 65 5f 70 69 73 74  |    p1_fire_pist|
0000e1c0  6f 6c 0d 6b b2 13 20 43  4d 50 20 20 20 20 20 52  |ol.k.. CMP     R|
0000e1d0  30 2c 20 23 33 0d 6b bc  18 20 42 45 51 20 20 20  |0, #3.k.. BEQ   |
0000e1e0  20 20 70 31 5f 66 69 72  65 5f 67 75 6e 0d 6b c6  |  p1_fire_gun.k.|
0000e1f0  13 20 43 4d 50 20 20 20  20 20 52 30 2c 20 23 34  |. CMP     R0, #4|
0000e200  0d 6b d0 1b 20 42 45 51  20 20 20 20 20 70 31 5f  |.k.. BEQ     p1_|
0000e210  66 69 72 65 5f 6d 6f 72  74 61 72 0d 6b da 13 20  |fire_mortar.k.. |
0000e220  43 4d 50 20 20 20 20 20  52 30 2c 20 23 35 0d 6b  |CMP     R0, #5.k|
0000e230  e4 1b 20 42 45 51 20 20  20 20 20 70 31 5f 66 69  |.. BEQ     p1_fi|
0000e240  72 65 5f 68 6f 6d 69 6e  67 0d 6b ee 13 20 43 4d  |re_homing.k.. CM|
0000e250  50 20 20 20 20 20 52 30  2c 20 23 36 0d 6b f8 1c  |P     R0, #6.k..|
0000e260  20 42 45 51 20 20 20 20  20 70 31 5f 66 69 72 65  | BEQ     p1_fire|
0000e270  5f 73 65 65 6b 69 6e 67  0d 6c 02 13 20 43 4d 50  |_seeking.l.. CMP|
0000e280  20 20 20 20 20 52 30 2c  20 23 37 0d 6c 0c 1d 20  |     R0, #7.l.. |
0000e290  42 45 51 20 20 20 20 20  70 31 5f 66 69 72 65 5f  |BEQ     p1_fire_|
0000e2a0  76 65 72 74 69 63 61 6c  0d 6c 16 13 20 43 4d 50  |vertical.l.. CMP|
0000e2b0  20 20 20 20 20 52 30 2c  20 23 38 0d 6c 20 1a 20  |     R0, #8.l . |
0000e2c0  42 45 51 20 20 20 20 20  70 31 5f 66 69 72 65 5f  |BEQ     p1_fire_|
0000e2d0  66 6c 61 6d 65 0d 6c 2a  13 20 43 4d 50 20 20 20  |flame.l*. CMP   |
0000e2e0  20 20 52 30 2c 20 23 39  0d 6c 34 19 20 42 45 51  |  R0, #9.l4. BEQ|
0000e2f0  20 20 20 20 20 70 31 5f  66 69 72 65 5f 62 6f 6d  |     p1_fire_bom|
0000e300  62 0d 6c 3e 06 20 3a 0d  6c 48 14 20 2e 70 31 5f  |b.l>. :.lH. .p1_|
0000e310  66 69 72 65 5f 70 69 73  74 6f 6c 0d 6c 52 18 20  |fire_pistol.lR. |
0000e320  4c 44 52 20 20 20 20 20  52 30 2c 20 70 31 5f 66  |LDR     R0, p1_f|
0000e330  69 72 65 0d 6c 5c 13 20  43 4d 50 20 20 20 20 20  |ire.l\. CMP     |
0000e340  52 30 2c 20 23 30 0d 6c  66 1b 20 42 45 51 20 20  |R0, #0.lf. BEQ  |
0000e350  20 20 20 70 31 5f 70 69  73 74 6f 6c 5f 73 68 6f  |   p1_pistol_sho|
0000e360  74 0d 6c 70 15 20 4d 4f  56 20 20 20 20 20 52 30  |t.lp. MOV     R0|
0000e370  2c 20 23 31 32 39 0d 6c  7a 13 20 4d 4f 56 20 20  |, #129.lz. MOV  |
0000e380  20 20 20 52 31 2c 20 23  30 0d 6c 84 17 20 53 55  |   R1, #0.l.. SU|
0000e390  42 20 20 20 20 20 52 31  2c 52 31 2c 20 23 38 34  |B     R1,R1, #84|
0000e3a0  0d 6c 8e 15 20 4d 4f 56  20 20 20 20 20 52 32 2c  |.l.. MOV     R2,|
0000e3b0  20 23 32 35 35 0d 6c 98  16 20 53 57 49 20 20 20  | #255.l.. SWI   |
0000e3c0  20 20 22 4f 53 5f 42 79  74 65 22 0d 6c a2 15 20  |  "OS_Byte".l.. |
0000e3d0  43 4d 50 20 20 20 20 20  52 31 2c 20 23 32 35 35  |CMP     R1, #255|
0000e3e0  0d 6c ac 13 20 4d 4f 56  4e 45 20 20 20 52 30 2c  |.l.. MOVNE   R0,|
0000e3f0  20 23 30 0d 6c b6 18 20  53 54 52 4e 45 20 20 20  | #0.l.. STRNE   |
0000e400  52 30 2c 20 70 31 5f 66  69 72 65 0d 6c c0 1f 20  |R0, p1_fire.l.. |
0000e410  42 20 20 20 20 20 20 20  70 31 5f 6e 6f 74 5f 66  |B       p1_not_f|
0000e420  69 72 65 5f 70 69 73 74  6f 6c 0d 6c ca 14 20 2e  |ire_pistol.l.. .|
0000e430  70 31 5f 70 69 73 74 6f  6c 5f 73 68 6f 74 0d 6c  |p1_pistol_shot.l|
0000e440  d4 15 20 4d 4f 56 20 20  20 20 20 52 30 2c 20 23  |.. MOV     R0, #|
0000e450  31 32 39 0d 6c de 13 20  4d 4f 56 20 20 20 20 20  |129.l.. MOV     |
0000e460  52 31 2c 20 23 30 0d 6c  e8 17 20 53 55 42 20 20  |R1, #0.l.. SUB  |
0000e470  20 20 20 52 31 2c 52 31  2c 20 23 38 34 0d 6c f2  |   R1,R1, #84.l.|
0000e480  15 20 4d 4f 56 20 20 20  20 20 52 32 2c 20 23 32  |. MOV     R2, #2|
0000e490  35 35 0d 6c fc 16 20 53  57 49 20 20 20 20 20 22  |55.l.. SWI     "|
0000e4a0  4f 53 5f 42 79 74 65 22  0d 6d 06 15 20 43 4d 50  |OS_Byte".m.. CMP|
0000e4b0  20 20 20 20 20 52 31 2c  20 23 32 35 35 0d 6d 10  |     R1, #255.m.|
0000e4c0  1f 20 42 4e 45 20 20 20  20 20 70 31 5f 6e 6f 74  |. BNE     p1_not|
0000e4d0  5f 66 69 72 65 5f 70 69  73 74 6f 6c 0d 6d 1a 13  |_fire_pistol.m..|
0000e4e0  20 4d 4f 56 20 20 20 20  20 52 30 2c 20 23 32 0d  | MOV     R0, #2.|
0000e4f0  6d 24 1a 20 4d 4f 56 20  20 20 20 20 52 31 2c 52  |m$. MOV     R1,R|
0000e500  36 2c 20 4c 53 52 20 23  32 0d 6d 2e 1a 20 4d 4f  |6, LSR #2.m.. MO|
0000e510  56 20 20 20 20 20 52 32  2c 52 37 2c 20 4c 53 52  |V     R2,R7, LSR|
0000e520  20 23 32 0d 6d 38 1a 20  41 44 44 20 20 20 20 20  | #2.m8. ADD     |
0000e530  52 31 2c 52 31 2c 20 23  78 65 78 74 25 0d 6d 42  |R1,R1, #xext%.mB|
0000e540  1e 20 41 44 44 20 20 20  20 20 52 32 2c 52 32 2c  |. ADD     R2,R2,|
0000e550  20 23 79 65 78 74 25 2f  34 2a 32 0d 6d 4c 18 20  | #yext%/4*2.mL. |
0000e560  52 53 42 20 20 20 20 20  52 32 2c 52 32 2c 20 23  |RSB     R2,R2, #|
0000e570  32 35 36 0d 6d 56 14 20  4d 4f 56 20 20 20 20 20  |256.mV. MOV     |
0000e580  52 33 2c 20 23 38 30 0d  6d 60 13 20 4d 4f 56 20  |R3, #80.m`. MOV |
0000e590  20 20 20 20 52 34 2c 20  23 30 0d 6d 6a 13 20 4d  |    R4, #0.mj. M|
0000e5a0  4f 56 20 20 20 20 20 52  35 2c 20 23 31 0d 6d 74  |OV     R5, #1.mt|
0000e5b0  13 20 54 53 54 20 20 20  20 20 52 38 2c 20 23 31  |. TST     R8, #1|
0000e5c0  0d 6d 7e 16 20 52 53 42  4e 45 20 20 20 52 33 2c  |.m~. RSBNE   R3,|
0000e5d0  52 33 2c 20 23 30 0d 6d  88 1a 20 53 55 42 4e 45  |R3, #0.m.. SUBNE|
0000e5e0  20 20 20 52 31 2c 52 31  2c 20 23 78 65 78 74 25  |   R1,R1, #xext%|
0000e5f0  0d 6d 92 15 20 42 4c 20  20 20 20 20 20 61 64 64  |.m.. BL      add|
0000e600  5f 63 65 6c 6c 0d 6d 9c  13 20 4d 4f 56 20 20 20  |_cell.m.. MOV   |
0000e610  20 20 52 35 2c 20 23 31  0d 6d a6 13 20 4d 4f 56  |  R5, #1.m.. MOV|
0000e620  20 20 20 20 20 52 30 2c  20 23 31 0d 6d b0 18 20  |     R0, #1.m.. |
0000e630  53 54 52 20 20 20 20 20  52 30 2c 20 70 31 5f 66  |STR     R0, p1_f|
0000e640  69 72 65 0d 6d ba 13 20  4d 4f 56 20 20 20 20 20  |ire.m.. MOV     |
0000e650  52 30 2c 20 23 37 0d 6d  c4 14 20 4d 56 4e 20 20  |R0, #7.m.. MVN  |
0000e660  20 20 20 52 31 2c 20 23  31 34 0d 6d ce 17 20 4d  |   R1, #14.m.. M|
0000e670  4f 56 20 20 20 20 20 52  32 2c 20 23 31 32 38 30  |OV     R2, #1280|
0000e680  30 0d 6d d8 13 20 4d 4f  56 20 20 20 20 20 52 33  |0.m.. MOV     R3|
0000e690  2c 20 23 30 0d 6d e2 1c  20 53 57 49 20 20 20 20  |, #0.m.. SWI    |
0000e6a0  20 22 53 6f 75 6e 64 5f  43 6f 6e 74 72 6f 6c 22  | "Sound_Control"|
0000e6b0  0d 6d ec 18 20 2e 70 31  5f 6e 6f 74 5f 66 69 72  |.m.. .p1_not_fir|
0000e6c0  65 5f 70 69 73 74 6f 6c  0d 6d f6 18 20 42 20 20  |e_pistol.m.. B  |
0000e6d0  20 20 20 20 20 70 31 5f  65 6e 64 5f 66 69 72 65  |     p1_end_fire|
0000e6e0  0d 6e 00 06 20 3a 0d 6e  0a 11 20 2e 70 31 5f 66  |.n.. :.n.. .p1_f|
0000e6f0  69 72 65 5f 67 75 6e 0d  6e 14 15 20 4d 4f 56 20  |ire_gun.n.. MOV |
0000e700  20 20 20 20 52 30 2c 20  23 31 32 39 0d 6e 1e 13  |    R0, #129.n..|
0000e710  20 4d 4f 56 20 20 20 20  20 52 31 2c 20 23 30 0d  | MOV     R1, #0.|
0000e720  6e 28 17 20 53 55 42 20  20 20 20 20 52 31 2c 52  |n(. SUB     R1,R|
0000e730  31 2c 20 23 38 34 0d 6e  32 15 20 4d 4f 56 20 20  |1, #84.n2. MOV  |
0000e740  20 20 20 52 32 2c 20 23  32 35 35 0d 6e 3c 16 20  |   R2, #255.n<. |
0000e750  53 57 49 20 20 20 20 20  22 4f 53 5f 42 79 74 65  |SWI     "OS_Byte|
0000e760  22 0d 6e 46 15 20 43 4d  50 20 20 20 20 20 52 31  |".nF. CMP     R1|
0000e770  2c 20 23 32 35 35 0d 6e  50 1c 20 42 4e 45 20 20  |, #255.nP. BNE  |
0000e780  20 20 20 70 31 5f 6e 6f  74 5f 66 69 72 65 5f 67  |   p1_not_fire_g|
0000e790  75 6e 0d 6e 5a 18 20 4c  44 52 20 20 20 20 20 52  |un.nZ. LDR     R|
0000e7a0  30 2c 20 70 31 5f 66 69  72 65 0d 6e 64 16 20 41  |0, p1_fire.nd. A|
0000e7b0  44 44 20 20 20 20 20 52  30 2c 52 30 2c 20 23 31  |DD     R0,R0, #1|
0000e7c0  0d 6e 6e 16 20 80 20 20  20 20 20 52 30 2c 52 30  |.nn. .     R0,R0|
0000e7d0  2c 20 23 25 31 31 0d 6e  78 18 20 53 54 52 20 20  |, #%11.nx. STR  |
0000e7e0  20 20 20 52 30 2c 20 70  31 5f 66 69 72 65 0d 6e  |   R0, p1_fire.n|
0000e7f0  82 15 20 54 53 54 20 20  20 20 20 52 30 2c 20 23  |.. TST     R0, #|
0000e800  25 31 31 0d 6e 8c 1c 20  42 4e 45 20 20 20 20 20  |%11.n.. BNE     |
0000e810  70 31 5f 6e 6f 74 5f 66  69 72 65 5f 67 75 6e 0d  |p1_not_fire_gun.|
0000e820  6e 96 13 20 4d 4f 56 20  20 20 20 20 52 30 2c 20  |n.. MOV     R0, |
0000e830  23 33 0d 6e a0 1a 20 4d  4f 56 20 20 20 20 20 52  |#3.n.. MOV     R|
0000e840  31 2c 52 36 2c 20 4c 53  52 20 23 32 0d 6e aa 1a  |1,R6, LSR #2.n..|
0000e850  20 4d 4f 56 20 20 20 20  20 52 32 2c 52 37 2c 20  | MOV     R2,R7, |
0000e860  4c 53 52 20 23 32 0d 6e  b4 1a 20 41 44 44 20 20  |LSR #2.n.. ADD  |
0000e870  20 20 20 52 31 2c 52 31  2c 20 23 78 65 78 74 25  |   R1,R1, #xext%|
0000e880  0d 6e be 1e 20 41 44 44  20 20 20 20 20 52 32 2c  |.n.. ADD     R2,|
0000e890  52 32 2c 20 23 79 65 78  74 25 2f 34 2a 32 0d 6e  |R2, #yext%/4*2.n|
0000e8a0  c8 18 20 52 53 42 20 20  20 20 20 52 32 2c 52 32  |.. RSB     R2,R2|
0000e8b0  2c 20 23 32 35 36 0d 6e  d2 14 20 4d 4f 56 20 20  |, #256.n.. MOV  |
0000e8c0  20 20 20 52 33 2c 20 23  38 30 0d 6e dc 18 20 4c  |   R3, #80.n.. L|
0000e8d0  44 52 20 20 20 20 20 52  35 2c 20 61 64 72 5f 72  |DR     R5, adr_r|
0000e8e0  6e 64 0d 6e e6 14 20 4c  44 52 20 20 20 20 20 52  |nd.n.. LDR     R|
0000e8f0  35 2c 5b 52 35 5d 0d 6e  f0 15 20 80 20 20 20 20  |5,[R5].n.. .    |
0000e900  20 52 34 2c 52 35 2c 20  23 31 35 0d 6e fa 16 20  | R4,R5, #15.n.. |
0000e910  53 55 42 20 20 20 20 20  52 34 2c 52 34 2c 20 23  |SUB     R4,R4, #|
0000e920  37 0d 6f 04 1a 20 80 20  20 20 20 20 52 35 2c 52  |7.o.. .     R5,R|
0000e930  35 2c 20 23 25 31 31 30  30 30 30 0d 6f 0e 1a 20  |5, #%110000.o.. |
0000e940  4d 4f 56 20 20 20 20 20  52 35 2c 52 35 2c 20 4c  |MOV     R5,R5, L|
0000e950  53 52 20 23 34 0d 6f 18  15 20 41 44 44 20 20 20  |SR #4.o.. ADD   |
0000e960  20 20 52 31 2c 52 31 2c  52 35 0d 6f 22 13 20 4d  |  R1,R1,R5.o". M|
0000e970  4f 56 20 20 20 20 20 52  35 2c 20 23 31 0d 6f 2c  |OV     R5, #1.o,|
0000e980  13 20 54 53 54 20 20 20  20 20 52 38 2c 20 23 31  |. TST     R8, #1|
0000e990  0d 6f 36 16 20 52 53 42  4e 45 20 20 20 52 33 2c  |.o6. RSBNE   R3,|
0000e9a0  52 33 2c 20 23 30 0d 6f  40 1c 20 53 55 42 4e 45  |R3, #0.o@. SUBNE|
0000e9b0  20 20 20 52 31 2c 52 31  2c 20 23 78 65 78 74 25  |   R1,R1, #xext%|
0000e9c0  2b 32 0d 6f 4a 15 20 42  4c 20 20 20 20 20 20 61  |+2.oJ. BL      a|
0000e9d0  64 64 5f 63 65 6c 6c 0d  6f 54 13 20 4d 4f 56 20  |dd_cell.oT. MOV |
0000e9e0  20 20 20 20 52 35 2c 20  23 31 0d 6f 5e 13 20 4d  |    R5, #1.o^. M|
0000e9f0  4f 56 20 20 20 20 20 52  30 2c 20 23 38 0d 6f 68  |OV     R0, #8.oh|
0000ea00  14 20 4d 56 4e 20 20 20  20 20 52 31 2c 20 23 31  |. MVN     R1, #1|
0000ea10  32 0d 6f 72 17 20 4d 4f  56 20 20 20 20 20 52 32  |2.or. MOV     R2|
0000ea20  2c 20 23 31 32 38 30 30  0d 6f 7c 13 20 4d 4f 56  |, #12800.o|. MOV|
0000ea30  20 20 20 20 20 52 33 2c  20 23 30 0d 6f 86 1c 20  |     R3, #0.o.. |
0000ea40  53 57 49 20 20 20 20 20  22 53 6f 75 6e 64 5f 43  |SWI     "Sound_C|
0000ea50  6f 6e 74 72 6f 6c 22 0d  6f 90 15 20 2e 70 31 5f  |ontrol".o.. .p1_|
0000ea60  6e 6f 74 5f 66 69 72 65  5f 67 75 6e 0d 6f 9a 18  |not_fire_gun.o..|
0000ea70  20 42 20 20 20 20 20 20  20 70 31 5f 65 6e 64 5f  | B       p1_end_|
0000ea80  66 69 72 65 0d 6f a4 06  20 3a 0d 6f ae 14 20 2e  |fire.o.. :.o.. .|
0000ea90  70 31 5f 66 69 72 65 5f  6d 6f 72 74 61 72 0d 6f  |p1_fire_mortar.o|
0000eaa0  b8 15 20 4d 4f 56 20 20  20 20 20 52 30 2c 20 23  |.. MOV     R0, #|
0000eab0  31 32 39 0d 6f c2 13 20  4d 4f 56 20 20 20 20 20  |129.o.. MOV     |
0000eac0  52 31 2c 20 23 30 0d 6f  cc 17 20 53 55 42 20 20  |R1, #0.o.. SUB  |
0000ead0  20 20 20 52 31 2c 52 31  2c 20 23 38 34 0d 6f d6  |   R1,R1, #84.o.|
0000eae0  15 20 4d 4f 56 20 20 20  20 20 52 32 2c 20 23 32  |. MOV     R2, #2|
0000eaf0  35 35 0d 6f e0 16 20 53  57 49 20 20 20 20 20 22  |55.o.. SWI     "|
0000eb00  4f 53 5f 42 79 74 65 22  0d 6f ea 15 20 43 4d 50  |OS_Byte".o.. CMP|
0000eb10  20 20 20 20 20 52 31 2c  20 23 32 35 35 0d 6f f4  |     R1, #255.o.|
0000eb20  1f 20 42 4e 45 20 20 20  20 20 70 31 5f 6e 6f 74  |. BNE     p1_not|
0000eb30  5f 66 69 72 65 5f 6d 6f  72 74 61 72 0d 6f fe 18  |_fire_mortar.o..|
0000eb40  20 4c 44 52 20 20 20 20  20 52 30 2c 20 70 31 5f  | LDR     R0, p1_|
0000eb50  66 69 72 65 0d 70 08 16  20 41 44 44 20 20 20 20  |fire.p.. ADD    |
0000eb60  20 52 30 2c 52 30 2c 20  23 31 0d 70 12 19 20 80  | R0,R0, #1.p.. .|
0000eb70  20 20 20 20 20 52 30 2c  52 30 2c 20 23 25 31 31  |     R0,R0, #%11|
0000eb80  31 31 31 0d 70 1c 18 20  53 54 52 20 20 20 20 20  |111.p.. STR     |
0000eb90  52 30 2c 20 70 31 5f 66  69 72 65 0d 70 26 18 20  |R0, p1_fire.p&. |
0000eba0  54 53 54 20 20 20 20 20  52 30 2c 20 23 25 31 31  |TST     R0, #%11|
0000ebb0  31 31 31 0d 70 30 1c 20  42 4e 45 20 20 20 20 20  |111.p0. BNE     |
0000ebc0  70 31 5f 6e 6f 74 5f 66  69 72 65 5f 67 75 6e 0d  |p1_not_fire_gun.|
0000ebd0  70 3a 13 20 4d 4f 56 20  20 20 20 20 52 30 2c 20  |p:. MOV     R0, |
0000ebe0  23 34 0d 70 44 1a 20 4d  4f 56 20 20 20 20 20 52  |#4.pD. MOV     R|
0000ebf0  31 2c 52 36 2c 20 4c 53  52 20 23 32 0d 70 4e 1a  |1,R6, LSR #2.pN.|
0000ec00  20 4d 4f 56 20 20 20 20  20 52 32 2c 52 37 2c 20  | MOV     R2,R7, |
0000ec10  4c 53 52 20 23 32 0d 70  58 1a 20 41 44 44 20 20  |LSR #2.pX. ADD  |
0000ec20  20 20 20 52 31 2c 52 31  2c 20 23 78 65 78 74 25  |   R1,R1, #xext%|
0000ec30  0d 70 62 1e 20 41 44 44  20 20 20 20 20 52 32 2c  |.pb. ADD     R2,|
0000ec40  52 32 2c 20 23 79 65 78  74 25 2f 34 2a 32 0d 70  |R2, #yext%/4*2.p|
0000ec50  6c 18 20 52 53 42 20 20  20 20 20 52 32 2c 52 32  |l. RSB     R2,R2|
0000ec60  2c 20 23 32 35 36 0d 70  76 14 20 4d 4f 56 20 20  |, #256.pv. MOV  |
0000ec70  20 20 20 52 33 2c 20 23  33 30 0d 70 80 14 20 4d  |   R3, #30.p.. M|
0000ec80  4f 56 20 20 20 20 20 52  34 2c 20 23 34 30 0d 70  |OV     R4, #40.p|
0000ec90  8a 13 20 4d 4f 56 20 20  20 20 20 52 35 2c 20 23  |.. MOV     R5, #|
0000eca0  31 0d 70 94 13 20 54 53  54 20 20 20 20 20 52 38  |1.p.. TST     R8|
0000ecb0  2c 20 23 31 0d 70 9e 16  20 52 53 42 4e 45 20 20  |, #1.p.. RSBNE  |
0000ecc0  20 52 33 2c 52 33 2c 20  23 30 0d 70 a8 1a 20 53  | R3,R3, #0.p.. S|
0000ecd0  55 42 4e 45 20 20 20 52  31 2c 52 31 2c 20 23 78  |UBNE   R1,R1, #x|
0000ece0  65 78 74 25 0d 70 b2 15  20 42 4c 20 20 20 20 20  |ext%.p.. BL     |
0000ecf0  20 61 64 64 5f 63 65 6c  6c 0d 70 bc 13 20 4d 4f  | add_cell.p.. MO|
0000ed00  56 20 20 20 20 20 52 35  2c 20 23 31 0d 70 c6 13  |V     R5, #1.p..|
0000ed10  20 4d 4f 56 20 20 20 20  20 52 30 2c 20 23 31 0d  | MOV     R0, #1.|
0000ed20  70 d0 18 20 53 54 52 20  20 20 20 20 52 30 2c 20  |p.. STR     R0, |
0000ed30  70 31 5f 66 69 72 65 0d  70 da 18 20 2e 70 31 5f  |p1_fire.p.. .p1_|
0000ed40  6e 6f 74 5f 66 69 72 65  5f 6d 6f 72 74 61 72 0d  |not_fire_mortar.|
0000ed50  70 e4 18 20 42 20 20 20  20 20 20 20 70 31 5f 65  |p.. B       p1_e|
0000ed60  6e 64 5f 66 69 72 65 0d  70 ee 06 20 3a 0d 70 f8  |nd_fire.p.. :.p.|
0000ed70  14 20 2e 70 31 5f 66 69  72 65 5f 68 6f 6d 69 6e  |. .p1_fire_homin|
0000ed80  67 0d 71 02 14 20 2e 70  31 5f 68 6f 6d 69 6e 67  |g.q.. .p1_homing|
0000ed90  5f 73 68 6f 74 0d 71 0c  15 20 4d 4f 56 20 20 20  |_shot.q.. MOV   |
0000eda0  20 20 52 30 2c 20 23 31  32 39 0d 71 16 13 20 4d  |  R0, #129.q.. M|
0000edb0  4f 56 20 20 20 20 20 52  31 2c 20 23 30 0d 71 20  |OV     R1, #0.q |
0000edc0  17 20 53 55 42 20 20 20  20 20 52 31 2c 52 31 2c  |. SUB     R1,R1,|
0000edd0  20 23 38 34 0d 71 2a 15  20 4d 4f 56 20 20 20 20  | #84.q*. MOV    |
0000ede0  20 52 32 2c 20 23 32 35  35 0d 71 34 16 20 53 57  | R2, #255.q4. SW|
0000edf0  49 20 20 20 20 20 22 4f  53 5f 42 79 74 65 22 0d  |I     "OS_Byte".|
0000ee00  71 3e 15 20 43 4d 50 20  20 20 20 20 52 31 2c 20  |q>. CMP     R1, |
0000ee10  23 32 35 35 0d 71 48 1f  20 42 4e 45 20 20 20 20  |#255.qH. BNE    |
0000ee20  20 70 31 5f 6e 6f 74 5f  66 69 72 65 5f 68 6f 6d  | p1_not_fire_hom|
0000ee30  69 6e 67 0d 71 52 18 20  4c 44 52 20 20 20 20 20  |ing.qR. LDR     |
0000ee40  52 30 2c 20 70 31 5f 66  69 72 65 0d 71 5c 16 20  |R0, p1_fire.q\. |
0000ee50  41 44 44 20 20 20 20 20  52 30 2c 52 30 2c 20 23  |ADD     R0,R0, #|
0000ee60  31 0d 71 66 18 20 80 20  20 20 20 20 52 30 2c 52  |1.qf. .     R0,R|
0000ee70  30 2c 20 23 25 31 31 31  31 0d 71 70 18 20 53 54  |0, #%1111.qp. ST|
0000ee80  52 20 20 20 20 20 52 30  2c 20 70 31 5f 66 69 72  |R     R0, p1_fir|
0000ee90  65 0d 71 7a 17 20 54 53  54 20 20 20 20 20 52 30  |e.qz. TST     R0|
0000eea0  2c 20 23 25 31 31 31 31  0d 71 84 1f 20 42 4e 45  |, #%1111.q.. BNE|
0000eeb0  20 20 20 20 20 70 31 5f  6e 6f 74 5f 66 69 72 65  |     p1_not_fire|
0000eec0  5f 68 6f 6d 69 6e 67 0d  71 8e 13 20 4d 4f 56 20  |_homing.q.. MOV |
0000eed0  20 20 20 20 52 30 2c 20  23 35 0d 71 98 1a 20 4d  |    R0, #5.q.. M|
0000eee0  4f 56 20 20 20 20 20 52  31 2c 52 36 2c 20 4c 53  |OV     R1,R6, LS|
0000eef0  52 20 23 32 0d 71 a2 1a  20 4d 4f 56 20 20 20 20  |R #2.q.. MOV    |
0000ef00  20 52 32 2c 52 37 2c 20  4c 53 52 20 23 32 0d 71  | R2,R7, LSR #2.q|
0000ef10  ac 1a 20 41 44 44 20 20  20 20 20 52 31 2c 52 31  |.. ADD     R1,R1|
0000ef20  2c 20 23 78 65 78 74 25  0d 71 b6 1c 20 41 44 44  |, #xext%.q.. ADD|
0000ef30  20 20 20 20 20 52 32 2c  52 32 2c 20 23 79 65 78  |     R2,R2, #yex|
0000ef40  74 25 2f 32 0d 71 c0 18  20 52 53 42 20 20 20 20  |t%/2.q.. RSB    |
0000ef50  20 52 32 2c 52 32 2c 20  23 32 35 36 0d 71 ca 14  | R2,R2, #256.q..|
0000ef60  20 4d 4f 56 20 20 20 20  20 52 33 2c 20 23 36 34  | MOV     R3, #64|
0000ef70  0d 71 d4 18 20 4c 44 52  20 20 20 20 20 52 34 2c  |.q.. LDR     R4,|
0000ef80  20 61 64 72 5f 72 6e 64  0d 71 de 14 20 4c 44 52  | adr_rnd.q.. LDR|
0000ef90  20 20 20 20 20 52 34 2c  5b 52 34 5d 0d 71 e8 15  |     R4,[R4].q..|
0000efa0  20 80 20 20 20 20 20 52  34 2c 52 34 2c 20 23 31  | .     R4,R4, #1|
0000efb0  35 0d 71 f2 16 20 53 55  42 20 20 20 20 20 52 34  |5.q.. SUB     R4|
0000efc0  2c 52 34 2c 20 23 37 0d  71 fc 39 20 4d 4f 56 20  |,R4, #7.q.9 MOV |
0000efd0  20 20 20 20 52 35 2c 20  23 32 32 34 3c 3c 38 20  |    R5, #224<<8 |
0000efe0  20 20 20 20 20 20 20 20  20 3b 20 48 6f 6d 69 6e  |         ; Homin|
0000eff0  67 20 69 6e 20 6f 6e 20  70 6c 61 79 65 72 20 32  |g in on player 2|
0000f000  0d 72 06 15 20 84 52 20  20 20 20 20 52 35 2c 52  |.r.. .R     R5,R|
0000f010  35 2c 20 23 31 0d 72 10  13 20 54 53 54 20 20 20  |5, #1.r.. TST   |
0000f020  20 20 52 38 2c 20 23 31  0d 72 1a 16 20 52 53 42  |  R8, #1.r.. RSB|
0000f030  4e 45 20 20 20 52 33 2c  52 33 2c 20 23 30 0d 72  |NE   R3,R3, #0.r|
0000f040  24 1a 20 53 55 42 4e 45  20 20 20 52 31 2c 52 31  |$. SUBNE   R1,R1|
0000f050  2c 20 23 78 65 78 74 25  0d 72 2e 15 20 42 4c 20  |, #xext%.r.. BL |
0000f060  20 20 20 20 20 61 64 64  5f 63 65 6c 6c 0d 72 38  |     add_cell.r8|
0000f070  13 20 4d 4f 56 20 20 20  20 20 52 35 2c 20 23 31  |. MOV     R5, #1|
0000f080  0d 72 42 13 20 4d 4f 56  20 20 20 20 20 52 30 2c  |.rB. MOV     R0,|
0000f090  20 23 38 0d 72 4c 14 20  4d 56 4e 20 20 20 20 20  | #8.rL. MVN     |
0000f0a0  52 31 2c 20 23 31 30 0d  72 56 16 20 4d 4f 56 20  |R1, #10.rV. MOV |
0000f0b0  20 20 20 20 52 32 2c 20  23 38 30 30 30 0d 72 60  |    R2, #8000.r`|
0000f0c0  13 20 4d 4f 56 20 20 20  20 20 52 33 2c 20 23 30  |. MOV     R3, #0|
0000f0d0  0d 72 6a 1c 20 53 57 49  20 20 20 20 20 22 53 6f  |.rj. SWI     "So|
0000f0e0  75 6e 64 5f 43 6f 6e 74  72 6f 6c 22 0d 72 74 18  |und_Control".rt.|
0000f0f0  20 2e 70 31 5f 6e 6f 74  5f 66 69 72 65 5f 68 6f  | .p1_not_fire_ho|
0000f100  6d 69 6e 67 0d 72 7e 18  20 42 20 20 20 20 20 20  |ming.r~. B      |
0000f110  20 70 31 5f 65 6e 64 5f  66 69 72 65 0d 72 88 06  | p1_end_fire.r..|
0000f120  20 3a 0d 72 92 15 20 2e  70 31 5f 66 69 72 65 5f  | :.r.. .p1_fire_|
0000f130  73 65 65 6b 69 6e 67 0d  72 9c 15 20 2e 70 31 5f  |seeking.r.. .p1_|
0000f140  73 65 65 6b 69 6e 67 5f  73 68 6f 74 0d 72 a6 15  |seeking_shot.r..|
0000f150  20 4d 4f 56 20 20 20 20  20 52 30 2c 20 23 31 32  | MOV     R0, #12|
0000f160  39 0d 72 b0 13 20 4d 4f  56 20 20 20 20 20 52 31  |9.r.. MOV     R1|
0000f170  2c 20 23 30 0d 72 ba 17  20 53 55 42 20 20 20 20  |, #0.r.. SUB    |
0000f180  20 52 31 2c 52 31 2c 20  23 38 34 0d 72 c4 15 20  | R1,R1, #84.r.. |
0000f190  4d 4f 56 20 20 20 20 20  52 32 2c 20 23 32 35 35  |MOV     R2, #255|
0000f1a0  0d 72 ce 16 20 53 57 49  20 20 20 20 20 22 4f 53  |.r.. SWI     "OS|
0000f1b0  5f 42 79 74 65 22 0d 72  d8 15 20 43 4d 50 20 20  |_Byte".r.. CMP  |
0000f1c0  20 20 20 52 31 2c 20 23  32 35 35 0d 72 e2 20 20  |   R1, #255.r.  |
0000f1d0  42 4e 45 20 20 20 20 20  70 31 5f 6e 6f 74 5f 66  |BNE     p1_not_f|
0000f1e0  69 72 65 5f 73 65 65 6b  69 6e 67 0d 72 ec 13 20  |ire_seeking.r.. |
0000f1f0  4d 4f 56 20 20 20 20 20  52 30 2c 20 23 36 0d 72  |MOV     R0, #6.r|
0000f200  f6 1a 20 4d 4f 56 20 20  20 20 20 52 31 2c 52 36  |.. MOV     R1,R6|
0000f210  2c 20 4c 53 52 20 23 32  0d 73 00 1a 20 4d 4f 56  |, LSR #2.s.. MOV|
0000f220  20 20 20 20 20 52 32 2c  52 37 2c 20 4c 53 52 20  |     R2,R7, LSR |
0000f230  23 32 0d 73 0a 1e 20 41  44 44 20 20 20 20 20 52  |#2.s.. ADD     R|
0000f240  31 2c 52 31 2c 20 23 78  65 78 74 25 2a 33 2f 32  |1,R1, #xext%*3/2|
0000f250  0d 73 14 1e 20 41 44 44  20 20 20 20 20 52 32 2c  |.s.. ADD     R2,|
0000f260  52 32 2c 20 23 79 65 78  74 25 2f 34 2a 32 0d 73  |R2, #yext%/4*2.s|
0000f270  1e 18 20 52 53 42 20 20  20 20 20 52 32 2c 52 32  |.. RSB     R2,R2|
0000f280  2c 20 23 32 35 36 0d 73  28 14 20 4d 4f 56 20 20  |, #256.s(. MOV  |
0000f290  20 20 20 52 33 2c 20 23  33 32 0d 73 32 13 20 4d  |   R3, #32.s2. M|
0000f2a0  4f 56 20 20 20 20 20 52  34 2c 20 23 30 0d 73 3c  |OV     R4, #0.s<|
0000f2b0  3a 20 4d 4f 56 20 20 20  20 20 52 35 2c 20 23 31  |: MOV     R5, #1|
0000f2c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0000f2d0  3b 20 48 6f 6d 69 6e 67  20 69 6e 20 6f 6e 20 70  |; Homing in on p|
0000f2e0  6c 61 79 65 72 20 32 0d  73 46 13 20 54 53 54 20  |layer 2.sF. TST |
0000f2f0  20 20 20 20 52 38 2c 20  23 31 0d 73 50 16 20 52  |    R8, #1.sP. R|
0000f300  53 42 4e 45 20 20 20 52  33 2c 52 33 2c 20 23 30  |SBNE   R3,R3, #0|
0000f310  0d 73 5a 1c 20 53 55 42  4e 45 20 20 20 52 31 2c  |.sZ. SUBNE   R1,|
0000f320  52 31 2c 20 23 78 65 78  74 25 2a 32 0d 73 64 15  |R1, #xext%*2.sd.|
0000f330  20 42 4c 20 20 20 20 20  20 61 64 64 5f 63 65 6c  | BL      add_cel|
0000f340  6c 0d 73 6e 13 20 4d 4f  56 20 20 20 20 20 52 35  |l.sn. MOV     R5|
0000f350  2c 20 23 31 0d 73 78 13  20 4d 4f 56 20 20 20 20  |, #1.sx. MOV    |
0000f360  20 52 39 2c 20 23 32 0d  73 82 1f 20 4c 44 52 20  | R9, #2.s.. LDR |
0000f370  20 20 20 20 52 31 30 2c  20 61 64 72 5f 70 31 5f  |    R10, adr_p1_|
0000f380  77 65 61 70 6f 6e 0d 73  8c 15 20 53 54 52 20 20  |weapon.s.. STR  |
0000f390  20 20 20 52 39 2c 5b 52  31 30 5d 0d 73 96 13 20  |   R9,[R10].s.. |
0000f3a0  4d 4f 56 20 20 20 20 20  52 30 2c 20 23 38 0d 73  |MOV     R0, #8.s|
0000f3b0  a0 14 20 4d 56 4e 20 20  20 20 20 52 31 2c 20 23  |.. MVN     R1, #|
0000f3c0  31 34 0d 73 aa 16 20 4d  4f 56 20 20 20 20 20 52  |14.s.. MOV     R|
0000f3d0  32 2c 20 23 35 31 32 30  0d 73 b4 13 20 4d 4f 56  |2, #5120.s.. MOV|
0000f3e0  20 20 20 20 20 52 33 2c  20 23 30 0d 73 be 1c 20  |     R3, #0.s.. |
0000f3f0  53 57 49 20 20 20 20 20  22 53 6f 75 6e 64 5f 43  |SWI     "Sound_C|
0000f400  6f 6e 74 72 6f 6c 22 0d  73 c8 13 20 4d 4f 56 20  |ontrol".s.. MOV |
0000f410  20 20 20 20 52 30 2c 20  23 31 0d 73 d2 18 20 53  |    R0, #1.s.. S|
0000f420  54 52 20 20 20 20 20 52  30 2c 20 70 31 5f 66 69  |TR     R0, p1_fi|
0000f430  72 65 0d 73 dc 19 20 2e  70 31 5f 6e 6f 74 5f 66  |re.s.. .p1_not_f|
0000f440  69 72 65 5f 73 65 65 6b  69 6e 67 0d 73 e6 18 20  |ire_seeking.s.. |
0000f450  42 20 20 20 20 20 20 20  70 31 5f 65 6e 64 5f 66  |B       p1_end_f|
0000f460  69 72 65 0d 73 f0 06 20  3a 0d 73 fa 16 20 2e 70  |ire.s.. :.s.. .p|
0000f470  31 5f 66 69 72 65 5f 76  65 72 74 69 63 61 6c 0d  |1_fire_vertical.|
0000f480  74 04 18 20 4c 44 52 20  20 20 20 20 52 30 2c 20  |t.. LDR     R0, |
0000f490  70 31 5f 66 69 72 65 0d  74 0e 13 20 43 4d 50 20  |p1_fire.t.. CMP |
0000f4a0  20 20 20 20 52 30 2c 20  23 30 0d 74 18 1d 20 42  |    R0, #0.t.. B|
0000f4b0  45 51 20 20 20 20 20 70  31 5f 76 65 72 74 69 63  |EQ     p1_vertic|
0000f4c0  61 6c 5f 73 68 6f 74 0d  74 22 15 20 4d 4f 56 20  |al_shot.t". MOV |
0000f4d0  20 20 20 20 52 30 2c 20  23 31 32 39 0d 74 2c 13  |    R0, #129.t,.|
0000f4e0  20 4d 4f 56 20 20 20 20  20 52 31 2c 20 23 30 0d  | MOV     R1, #0.|
0000f4f0  74 36 17 20 53 55 42 20  20 20 20 20 52 31 2c 52  |t6. SUB     R1,R|
0000f500  31 2c 20 23 38 34 0d 74  40 15 20 4d 4f 56 20 20  |1, #84.t@. MOV  |
0000f510  20 20 20 52 32 2c 20 23  32 35 35 0d 74 4a 16 20  |   R2, #255.tJ. |
0000f520  53 57 49 20 20 20 20 20  22 4f 53 5f 42 79 74 65  |SWI     "OS_Byte|
0000f530  22 0d 74 54 15 20 43 4d  50 20 20 20 20 20 52 31  |".tT. CMP     R1|
0000f540  2c 20 23 32 35 35 0d 74  5e 13 20 4d 4f 56 4e 45  |, #255.t^. MOVNE|
0000f550  20 20 20 52 30 2c 20 23  30 0d 74 68 18 20 53 54  |   R0, #0.th. ST|
0000f560  52 4e 45 20 20 20 52 30  2c 20 70 31 5f 66 69 72  |RNE   R0, p1_fir|
0000f570  65 0d 74 72 21 20 42 20  20 20 20 20 20 20 70 31  |e.tr! B       p1|
0000f580  5f 6e 6f 74 5f 66 69 72  65 5f 76 65 72 74 69 63  |_not_fire_vertic|
0000f590  61 6c 0d 74 7c 16 20 2e  70 31 5f 76 65 72 74 69  |al.t|. .p1_verti|
0000f5a0  63 61 6c 5f 73 68 6f 74  0d 74 86 15 20 4d 4f 56  |cal_shot.t.. MOV|
0000f5b0  20 20 20 20 20 52 30 2c  20 23 31 32 39 0d 74 90  |     R0, #129.t.|
0000f5c0  13 20 4d 4f 56 20 20 20  20 20 52 31 2c 20 23 30  |. MOV     R1, #0|
0000f5d0  0d 74 9a 17 20 53 55 42  20 20 20 20 20 52 31 2c  |.t.. SUB     R1,|
0000f5e0  52 31 2c 20 23 38 34 0d  74 a4 15 20 4d 4f 56 20  |R1, #84.t.. MOV |
0000f5f0  20 20 20 20 52 32 2c 20  23 32 35 35 0d 74 ae 16  |    R2, #255.t..|
0000f600  20 53 57 49 20 20 20 20  20 22 4f 53 5f 42 79 74  | SWI     "OS_Byt|
0000f610  65 22 0d 74 b8 15 20 43  4d 50 20 20 20 20 20 52  |e".t.. CMP     R|
0000f620  31 2c 20 23 32 35 35 0d  74 c2 21 20 42 4e 45 20  |1, #255.t.! BNE |
0000f630  20 20 20 20 70 31 5f 6e  6f 74 5f 66 69 72 65 5f  |    p1_not_fire_|
0000f640  76 65 72 74 69 63 61 6c  0d 74 cc 13 20 4d 4f 56  |vertical.t.. MOV|
0000f650  20 20 20 20 20 52 30 2c  20 23 37 0d 74 d6 1a 20  |     R0, #7.t.. |
0000f660  4d 4f 56 20 20 20 20 20  52 31 2c 52 36 2c 20 4c  |MOV     R1,R6, L|
0000f670  53 52 20 23 32 0d 74 e0  1a 20 4d 4f 56 20 20 20  |SR #2.t.. MOV   |
0000f680  20 20 52 32 2c 52 37 2c  20 4c 53 52 20 23 32 0d  |  R2,R7, LSR #2.|
0000f690  74 ea 1a 20 41 44 44 20  20 20 20 20 52 31 2c 52  |t.. ADD     R1,R|
0000f6a0  31 2c 20 23 78 65 78 74  25 0d 74 f4 1e 20 41 44  |1, #xext%.t.. AD|
0000f6b0  44 20 20 20 20 20 52 32  2c 52 32 2c 20 23 79 65  |D     R2,R2, #ye|
0000f6c0  78 74 25 2f 34 2a 32 0d  74 fe 18 20 52 53 42 20  |xt%/4*2.t.. RSB |
0000f6d0  20 20 20 20 52 32 2c 52  32 2c 20 23 32 35 36 0d  |    R2,R2, #256.|
0000f6e0  75 08 13 20 4d 4f 56 20  20 20 20 20 52 33 2c 20  |u.. MOV     R3, |
0000f6f0  23 30 0d 75 12 14 20 4d  4f 56 20 20 20 20 20 52  |#0.u.. MOV     R|
0000f700  34 2c 20 23 36 34 0d 75  1c 13 20 4d 4f 56 20 20  |4, #64.u.. MOV  |
0000f710  20 20 20 52 35 2c 20 23  31 0d 75 26 13 20 54 53  |   R5, #1.u&. TS|
0000f720  54 20 20 20 20 20 52 38  2c 20 23 31 0d 75 30 16  |T     R8, #1.u0.|
0000f730  20 52 53 42 4e 45 20 20  20 52 33 2c 52 33 2c 20  | RSBNE   R3,R3, |
0000f740  23 30 0d 75 3a 1a 20 53  55 42 4e 45 20 20 20 52  |#0.u:. SUBNE   R|
0000f750  31 2c 52 31 2c 20 23 78  65 78 74 25 0d 75 44 15  |1,R1, #xext%.uD.|
0000f760  20 42 4c 20 20 20 20 20  20 61 64 64 5f 63 65 6c  | BL      add_cel|
0000f770  6c 0d 75 4e 13 20 4d 4f  56 20 20 20 20 20 52 35  |l.uN. MOV     R5|
0000f780  2c 20 23 32 0d 75 58 13  20 4d 4f 56 20 20 20 20  |, #2.uX. MOV    |
0000f790  20 52 30 2c 20 23 31 0d  75 62 18 20 53 54 52 20  | R0, #1.ub. STR |
0000f7a0  20 20 20 20 52 30 2c 20  70 31 5f 66 69 72 65 0d  |    R0, p1_fire.|
0000f7b0  75 6c 13 20 4d 4f 56 20  20 20 20 20 52 30 2c 20  |ul. MOV     R0, |
0000f7c0  23 37 0d 75 76 14 20 4d  56 4e 20 20 20 20 20 52  |#7.uv. MVN     R|
0000f7d0  31 2c 20 23 31 34 0d 75  80 17 20 4d 4f 56 20 20  |1, #14.u.. MOV  |
0000f7e0  20 20 20 52 32 2c 20 23  31 30 32 34 30 0d 75 8a  |   R2, #10240.u.|
0000f7f0  13 20 4d 4f 56 20 20 20  20 20 52 33 2c 20 23 30  |. MOV     R3, #0|
0000f800  0d 75 94 1c 20 53 57 49  20 20 20 20 20 22 53 6f  |.u.. SWI     "So|
0000f810  75 6e 64 5f 43 6f 6e 74  72 6f 6c 22 0d 75 9e 1a  |und_Control".u..|
0000f820  20 2e 70 31 5f 6e 6f 74  5f 66 69 72 65 5f 76 65  | .p1_not_fire_ve|
0000f830  72 74 69 63 61 6c 0d 75  a8 18 20 42 20 20 20 20  |rtical.u.. B    |
0000f840  20 20 20 70 31 5f 65 6e  64 5f 66 69 72 65 0d 75  |   p1_end_fire.u|
0000f850  b2 06 20 3a 0d 75 bc 13  20 2e 70 31 5f 66 69 72  |.. :.u.. .p1_fir|
0000f860  65 5f 66 6c 61 6d 65 0d  75 c6 13 20 2e 70 31 5f  |e_flame.u.. .p1_|
0000f870  66 6c 61 6d 65 5f 73 68  6f 74 0d 75 d0 15 20 4d  |flame_shot.u.. M|
0000f880  4f 56 20 20 20 20 20 52  30 2c 20 23 31 32 39 0d  |OV     R0, #129.|
0000f890  75 da 13 20 4d 4f 56 20  20 20 20 20 52 31 2c 20  |u.. MOV     R1, |
0000f8a0  23 30 0d 75 e4 17 20 53  55 42 20 20 20 20 20 52  |#0.u.. SUB     R|
0000f8b0  31 2c 52 31 2c 20 23 38  34 0d 75 ee 15 20 4d 4f  |1,R1, #84.u.. MO|
0000f8c0  56 20 20 20 20 20 52 32  2c 20 23 32 35 35 0d 75  |V     R2, #255.u|
0000f8d0  f8 16 20 53 57 49 20 20  20 20 20 22 4f 53 5f 42  |.. SWI     "OS_B|
0000f8e0  79 74 65 22 0d 76 02 15  20 43 4d 50 20 20 20 20  |yte".v.. CMP    |
0000f8f0  20 52 31 2c 20 23 32 35  35 0d 76 0c 1e 20 42 4e  | R1, #255.v.. BN|
0000f900  45 20 20 20 20 20 70 31  5f 6e 6f 74 5f 66 69 72  |E     p1_not_fir|
0000f910  65 5f 66 6c 61 6d 65 0d  76 16 14 20 4d 4f 56 20  |e_flame.v.. MOV |
0000f920  20 20 20 20 52 30 2c 20  23 31 30 0d 76 20 1a 20  |    R0, #10.v . |
0000f930  4d 4f 56 20 20 20 20 20  52 31 2c 52 36 2c 20 4c  |MOV     R1,R6, L|
0000f940  53 52 20 23 32 0d 76 2a  1a 20 4d 4f 56 20 20 20  |SR #2.v*. MOV   |
0000f950  20 20 52 32 2c 52 37 2c  20 4c 53 52 20 23 32 0d  |  R2,R7, LSR #2.|
0000f960  76 34 1a 20 41 44 44 20  20 20 20 20 52 31 2c 52  |v4. ADD     R1,R|
0000f970  31 2c 20 23 78 65 78 74  25 0d 76 3e 1e 20 41 44  |1, #xext%.v>. AD|
0000f980  44 20 20 20 20 20 52 32  2c 52 32 2c 20 23 79 65  |D     R2,R2, #ye|
0000f990  78 74 25 2f 34 2a 32 0d  76 48 18 20 52 53 42 20  |xt%/4*2.vH. RSB |
0000f9a0  20 20 20 20 52 32 2c 52  32 2c 20 23 32 35 36 0d  |    R2,R2, #256.|
0000f9b0  76 52 14 20 4d 4f 56 20  20 20 20 20 52 33 2c 20  |vR. MOV     R3, |
0000f9c0  23 36 34 0d 76 5c 18 20  4c 44 52 20 20 20 20 20  |#64.v\. LDR     |
0000f9d0  52 34 2c 20 61 64 72 5f  72 6e 64 0d 76 66 14 20  |R4, adr_rnd.vf. |
0000f9e0  4c 44 52 20 20 20 20 20  52 34 2c 5b 52 34 5d 0d  |LDR     R4,[R4].|
0000f9f0  76 70 14 20 80 20 20 20  20 20 52 34 2c 52 34 2c  |vp. .     R4,R4,|
0000fa00  20 23 37 0d 76 7a 16 20  53 55 42 20 20 20 20 20  | #7.vz. SUB     |
0000fa10  52 34 2c 52 34 2c 20 23  31 0d 76 84 13 20 4d 4f  |R4,R4, #1.v.. MO|
0000fa20  56 20 20 20 20 20 52 35  2c 20 23 31 0d 76 8e 13  |V     R5, #1.v..|
0000fa30  20 54 53 54 20 20 20 20  20 52 38 2c 20 23 31 0d  | TST     R8, #1.|
0000fa40  76 98 16 20 52 53 42 4e  45 20 20 20 52 33 2c 52  |v.. RSBNE   R3,R|
0000fa50  33 2c 20 23 30 0d 76 a2  1a 20 53 55 42 4e 45 20  |3, #0.v.. SUBNE |
0000fa60  20 20 52 31 2c 52 31 2c  20 23 78 65 78 74 25 0d  |  R1,R1, #xext%.|
0000fa70  76 ac 15 20 42 4c 20 20  20 20 20 20 61 64 64 5f  |v.. BL      add_|
0000fa80  63 65 6c 6c 0d 76 b6 17  20 2e 70 31 5f 6e 6f 74  |cell.v.. .p1_not|
0000fa90  5f 66 69 72 65 5f 66 6c  61 6d 65 0d 76 c0 18 20  |_fire_flame.v.. |
0000faa0  42 20 20 20 20 20 20 20  70 31 5f 65 6e 64 5f 66  |B       p1_end_f|
0000fab0  69 72 65 0d 76 ca 06 20  3a 0d 76 d4 12 20 2e 70  |ire.v.. :.v.. .p|
0000fac0  31 5f 66 69 72 65 5f 62  6f 6d 62 0d 76 de 15 20  |1_fire_bomb.v.. |
0000fad0  4d 4f 56 20 20 20 20 20  52 30 2c 20 23 31 32 39  |MOV     R0, #129|
0000fae0  0d 76 e8 13 20 4d 4f 56  20 20 20 20 20 52 31 2c  |.v.. MOV     R1,|
0000faf0  20 23 30 0d 76 f2 17 20  53 55 42 20 20 20 20 20  | #0.v.. SUB     |
0000fb00  52 31 2c 52 31 2c 20 23  38 34 0d 76 fc 15 20 4d  |R1,R1, #84.v.. M|
0000fb10  4f 56 20 20 20 20 20 52  32 2c 20 23 32 35 35 0d  |OV     R2, #255.|
0000fb20  77 06 16 20 53 57 49 20  20 20 20 20 22 4f 53 5f  |w.. SWI     "OS_|
0000fb30  42 79 74 65 22 0d 77 10  15 20 43 4d 50 20 20 20  |Byte".w.. CMP   |
0000fb40  20 20 52 31 2c 20 23 32  35 35 0d 77 1a 1d 20 42  |  R1, #255.w.. B|
0000fb50  4e 45 20 20 20 20 20 70  31 5f 6e 6f 74 5f 66 69  |NE     p1_not_fi|
0000fb60  72 65 5f 62 6f 6d 62 0d  77 24 18 20 4c 44 52 20  |re_bomb.w$. LDR |
0000fb70  20 20 20 20 52 30 2c 20  70 31 5f 66 69 72 65 0d  |    R0, p1_fire.|
0000fb80  77 2e 16 20 41 44 44 20  20 20 20 20 52 30 2c 52  |w.. ADD     R0,R|
0000fb90  30 2c 20 23 31 0d 77 38  14 20 43 4d 50 20 20 20  |0, #1.w8. CMP   |
0000fba0  20 20 52 30 2c 20 23 31  30 0d 77 42 13 20 4d 4f  |  R0, #10.wB. MO|
0000fbb0  56 47 54 20 20 20 52 30  2c 20 23 30 0d 77 4c 18  |VGT   R0, #0.wL.|
0000fbc0  20 53 54 52 20 20 20 20  20 52 30 2c 20 70 31 5f  | STR     R0, p1_|
0000fbd0  66 69 72 65 0d 77 56 13  20 43 4d 50 20 20 20 20  |fire.wV. CMP    |
0000fbe0  20 52 30 2c 20 23 30 0d  77 60 1d 20 42 4e 45 20  | R0, #0.w`. BNE |
0000fbf0  20 20 20 20 70 31 5f 6e  6f 74 5f 66 69 72 65 5f  |    p1_not_fire_|
0000fc00  62 6f 6d 62 0d 77 6a 14  20 4d 4f 56 20 20 20 20  |bomb.wj. MOV    |
0000fc10  20 52 30 2c 20 23 31 32  0d 77 74 1a 20 4d 4f 56  | R0, #12.wt. MOV|
0000fc20  20 20 20 20 20 52 31 2c  52 36 2c 20 4c 53 52 20  |     R1,R6, LSR |
0000fc30  23 32 0d 77 7e 1a 20 4d  4f 56 20 20 20 20 20 52  |#2.w~. MOV     R|
0000fc40  32 2c 52 37 2c 20 4c 53  52 20 23 32 0d 77 88 1c  |2,R7, LSR #2.w..|
0000fc50  20 41 44 44 20 20 20 20  20 52 31 2c 52 31 2c 20  | ADD     R1,R1, |
0000fc60  23 78 65 78 74 25 2b 31  0d 77 92 1e 20 41 44 44  |#xext%+1.w.. ADD|
0000fc70  20 20 20 20 20 52 32 2c  52 32 2c 20 23 79 65 78  |     R2,R2, #yex|
0000fc80  74 25 2f 34 2a 32 0d 77  9c 18 20 52 53 42 20 20  |t%/4*2.w.. RSB  |
0000fc90  20 20 20 52 32 2c 52 32  2c 20 23 32 35 36 0d 77  |   R2,R2, #256.w|
0000fca0  a6 14 20 4d 4f 56 20 20  20 20 20 52 33 2c 20 23  |.. MOV     R3, #|
0000fcb0  34 30 0d 77 b0 14 20 4d  4f 56 20 20 20 20 20 52  |40.w.. MOV     R|
0000fcc0  34 2c 20 23 34 30 0d 77  ba 1d 20 4d 4f 56 20 20  |4, #40.w.. MOV  |
0000fcd0  20 20 20 52 35 2c 20 23  62 6f 6d 62 5f 70 61 75  |   R5, #bomb_pau|
0000fce0  73 65 25 0d 77 c4 13 20  54 53 54 20 20 20 20 20  |se%.w.. TST     |
0000fcf0  52 38 2c 20 23 31 0d 77  ce 16 20 52 53 42 4e 45  |R8, #1.w.. RSBNE|
0000fd00  20 20 20 52 33 2c 52 33  2c 20 23 30 0d 77 d8 1c  |   R3,R3, #0.w..|
0000fd10  20 53 55 42 4e 45 20 20  20 52 31 2c 52 31 2c 20  | SUBNE   R1,R1, |
0000fd20  23 78 65 78 74 25 2b 32  0d 77 e2 15 20 42 4c 20  |#xext%+2.w.. BL |
0000fd30  20 20 20 20 20 61 64 64  5f 63 65 6c 6c 0d 77 ec  |     add_cell.w.|
0000fd40  13 20 4d 4f 56 20 20 20  20 20 52 35 2c 20 23 31  |. MOV     R5, #1|
0000fd50  0d 77 f6 13 20 4d 4f 56  20 20 20 20 20 52 30 2c  |.w.. MOV     R0,|
0000fd60  20 23 31 0d 78 00 18 20  53 54 52 20 20 20 20 20  | #1.x.. STR     |
0000fd70  52 30 2c 20 70 31 5f 66  69 72 65 0d 78 0a 16 20  |R0, p1_fire.x.. |
0000fd80  2e 70 31 5f 6e 6f 74 5f  66 69 72 65 5f 62 6f 6d  |.p1_not_fire_bom|
0000fd90  62 0d 78 14 18 20 42 20  20 20 20 20 20 20 70 31  |b.x.. B       p1|
0000fda0  5f 65 6e 64 5f 66 69 72  65 0d 78 1e 06 20 3a 0d  |_end_fire.x.. :.|
0000fdb0  78 28 11 20 2e 70 31 5f  65 6e 64 5f 66 69 72 65  |x(. .p1_end_fire|
0000fdc0  0d 78 32 06 20 3a 0d 78  3c 13 20 4d 4f 56 20 20  |.x2. :.x<. MOV  |
0000fdd0  20 20 20 52 30 2c 20 23  31 0d 78 46 1a 20 4d 4f  |   R0, #1.xF. MO|
0000fde0  56 20 20 20 20 20 52 31  2c 52 36 2c 20 4c 53 52  |V     R1,R6, LSR|
0000fdf0  20 23 32 0d 78 50 1a 20  4d 4f 56 20 20 20 20 20  | #2.xP. MOV     |
0000fe00  52 32 2c 52 37 2c 20 4c  53 52 20 23 32 0d 78 5a  |R2,R7, LSR #2.xZ|
0000fe10  13 20 54 53 54 20 20 20  20 20 52 38 2c 20 23 31  |. TST     R8, #1|
0000fe20  0d 78 64 16 20 41 44 44  45 51 20 20 20 52 31 2c  |.xd. ADDEQ   R1,|
0000fe30  52 31 2c 20 23 31 0d 78  6e 1c 20 41 44 44 4e 45  |R1, #1.xn. ADDNE|
0000fe40  20 20 20 52 31 2c 52 31  2c 20 23 78 65 78 74 25  |   R1,R1, #xext%|
0000fe50  2d 31 0d 78 78 1c 20 41  44 44 20 20 20 20 20 52  |-1.xx. ADD     R|
0000fe60  32 2c 52 32 2c 20 23 79  65 78 74 25 2f 34 0d 78  |2,R2, #yext%/4.x|
0000fe70  82 18 20 52 53 42 20 20  20 20 20 52 32 2c 52 32  |.. RSB     R2,R2|
0000fe80  2c 20 23 32 35 36 0d 78  8c 18 20 4c 44 52 20 20  |, #256.x.. LDR  |
0000fe90  20 20 20 52 33 2c 20 61  64 72 5f 72 6e 64 0d 78  |   R3, adr_rnd.x|
0000fea0  96 14 20 4c 44 52 20 20  20 20 20 52 33 2c 5b 52  |.. LDR     R3,[R|
0000feb0  33 5d 0d 78 a0 18 20 54  53 54 20 20 20 20 20 52  |3].x.. TST     R|
0000fec0  33 2c 20 23 25 31 30 30  30 30 0d 78 aa 16 20 53  |3, #%10000.x.. S|
0000fed0  55 42 45 51 20 20 20 52  32 2c 52 32 2c 20 23 31  |UBEQ   R2,R2, #1|
0000fee0  0d 78 b4 15 20 80 20 20  20 20 20 52 33 2c 52 33  |.x.. .     R3,R3|
0000fef0  2c 20 23 31 35 0d 78 be  16 20 53 55 42 20 20 20  |, #15.x.. SUB   |
0000ff00  20 20 52 33 2c 52 33 2c  20 23 37 0d 78 c8 13 20  |  R3,R3, #7.x.. |
0000ff10  4d 4f 56 20 20 20 20 20  52 34 2c 20 23 30 0d 78  |MOV     R4, #0.x|
0000ff20  d2 17 20 53 55 42 20 20  20 20 20 52 34 2c 52 34  |.. SUB     R4,R4|
0000ff30  2c 20 23 34 30 0d 78 dc  14 20 4d 4f 56 20 20 20  |, #40.x.. MOV   |
0000ff40  20 20 52 35 2c 20 23 33  32 0d 78 e6 15 20 42 4c  |  R5, #32.x.. BL|
0000ff50  20 20 20 20 20 20 61 64  64 5f 63 65 6c 6c 0d 78  |      add_cell.x|
0000ff60  f0 13 20 4d 4f 56 20 20  20 20 20 52 35 2c 20 23  |.. MOV     R5, #|
0000ff70  31 0d 78 fa 06 20 3a 0d  79 04 14 20 80 20 20 20  |1.x.. :.y.. .   |
0000ff80  20 20 52 30 2c 52 38 2c  20 23 31 0d 79 0e 1a 20  |  R0,R8, #1.y.. |
0000ff90  4d 4f 56 20 20 20 20 20  52 31 2c 52 36 2c 20 4c  |MOV     R1,R6, L|
0000ffa0  53 52 20 23 32 0d 79 18  1a 20 4d 4f 56 20 20 20  |SR #2.y.. MOV   |
0000ffb0  20 20 52 32 2c 52 37 2c  20 4c 53 52 20 23 32 0d  |  R2,R7, LSR #2.|
0000ffc0  79 22 19 20 4c 44 52 20  20 20 20 20 52 39 2c 20  |y". LDR     R9, |
0000ffd0  61 64 72 5f 70 31 5f 78  0d 79 2c 14 20 53 54 52  |adr_p1_x.y,. STR|
0000ffe0  20 20 20 20 20 52 31 2c  5b 52 39 5d 0d 79 36 19  |     R1,[R9].y6.|
0000fff0  20 4c 44 52 20 20 20 20  20 52 39 2c 20 61 64 72  | LDR     R9, adr|
00010000  5f 70 31 5f 79 0d 79 40  14 20 53 54 52 20 20 20  |_p1_y.y@. STR   |
00010010  20 20 52 32 2c 5b 52 39  5d 0d 79 4a 1d 20 42 4c  |  R2,[R9].yJ. BL|
00010020  20 20 20 20 20 20 70 6c  6f 74 5f 73 70 72 69 74  |      plot_sprit|
00010030  65 5f 31 36 31 36 0d 79  54 06 20 3a 0d 79 5e 19  |e_1616.yT. :.y^.|
00010040  20 4c 44 4d 46 44 20 20  20 52 31 33 21 2c 7b 52  | LDMFD   R13!,{R|
00010050  39 2c 50 43 7d 0d 79 68  06 20 3a 0d 79 72 0d 20  |9,PC}.yh. :.yr. |
00010060  2e 61 64 72 5f 72 6e 64  0d 79 7c 10 20 45 51 55  |.adr_rnd.y|. EQU|
00010070  44 20 20 20 20 72 6e 64  0d 79 86 13 20 2e 61 64  |D    rnd.y.. .ad|
00010080  72 5f 70 31 5f 77 65 61  70 6f 6e 0d 79 90 16 20  |r_p1_weapon.y.. |
00010090  45 51 55 44 20 20 20 20  70 31 5f 77 65 61 70 6f  |EQUD    p1_weapo|
000100a0  6e 0d 79 9a 0e 20 2e 61  64 72 5f 70 31 5f 78 0d  |n.y.. .adr_p1_x.|
000100b0  79 a4 11 20 45 51 55 44  20 20 20 20 70 31 5f 78  |y.. EQUD    p1_x|
000100c0  0d 79 ae 0e 20 2e 61 64  72 5f 70 31 5f 79 0d 79  |.y.. .adr_p1_y.y|
000100d0  b8 11 20 45 51 55 44 20  20 20 20 70 31 5f 79 0d  |.. EQUD    p1_y.|
000100e0  79 c2 06 20 3a 0d 79 cc  06 20 5d 0d 79 d6 14 20  |y.. :.y.. ].y.. |
000100f0  50 25 3d 63 6c 67 5f 72  6f 75 74 69 6e 65 25 0d  |P%=clg_routine%.|
00010100  79 e0 19 20 4c 25 3d 63  6c 67 5f 72 6f 75 74 69  |y.. L%=clg_routi|
00010110  6e 65 25 2b 31 30 32 30  0d 79 ea 0f 20 5b 4f 50  |ne%+1020.y.. [OP|
00010120  54 20 70 61 73 73 25 0d  79 f4 06 20 3a 0d 79 fe  |T pass%.y.. :.y.|
00010130  19 20 2e 63 6c 67 5f 61  64 72 5f 73 63 72 65 65  |. .clg_adr_scree|
00010140  6e 73 74 6f 72 65 0d 7a  08 18 20 45 51 55 44 20  |nstore.z.. EQUD |
00010150  20 20 20 73 63 72 65 65  6e 73 74 6f 72 65 0d 7a  |   screenstore.z|
00010160  12 14 20 2e 63 6c 67 5f  73 63 72 65 65 6e 64 61  |.. .clg_screenda|
00010170  74 61 0d 7a 1c 18 20 45  51 55 44 20 20 20 20 73  |ta.z.. EQUD    s|
00010180  63 72 65 65 6e 64 61 74  61 25 0d 7a 26 06 20 3a  |creendata%.z&. :|
00010190  0d 7a 30 09 20 2e 63 6c  67 0d 7a 3a 1e 20 53 54  |.z0. .clg.z:. ST|
000101a0  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 30 2d 52  |MFD   R13!,{R0-R|
000101b0  31 32 2c 52 31 34 7d 0d  7a 44 23 20 41 44 52 20  |12,R14}.zD# ADR |
000101c0  20 20 20 20 52 30 2c 20  63 6c 67 5f 74 65 6d 70  |    R0, clg_temp|
000101d0  5f 72 65 67 5f 73 74 6f  72 65 0d 7a 4e 1a 20 53  |_reg_store.zN. S|
000101e0  54 4d 49 41 20 20 20 52  30 2c 20 7b 52 31 33 2c  |TMIA   R0, {R13,|
000101f0  52 31 34 7d 0d 7a 58 25  20 4c 44 52 20 20 20 20  |R14}.zX% LDR    |
00010200  20 52 31 33 2c 20 63 6c  67 5f 61 64 72 5f 73 63  | R13, clg_adr_sc|
00010210  72 65 65 6e 73 74 6f 72  65 0d 7a 62 17 20 4c 44  |reenstore.zb. LD|
00010220  52 20 20 20 20 20 52 31  33 2c 20 5b 52 31 33 5d  |R     R13, [R13]|
00010230  0d 7a 6c 20 20 4c 44 52  20 20 20 20 20 52 31 34  |.zl  LDR     R14|
00010240  2c 20 63 6c 67 5f 73 63  72 65 65 6e 64 61 74 61  |, clg_screendata|
00010250  0d 7a 76 14 20 4d 4f 56  20 20 20 20 20 52 31 32  |.zv. MOV     R12|
00010260  2c 20 23 30 0d 7a 80 0f  20 2e 63 6c 67 5f 6c 6f  |, #0.z.. .clg_lo|
00010270  6f 70 31 0d 7a 8a 06 20  5d 0d 7a 94 10 20 e3 20  |op1.z.. ].z.. . |
00010280  61 25 3d 31 20 b8 20 32  36 0d 7a 9e 0f 20 5b 4f  |a%=1 . 26.z.. [O|
00010290  50 54 20 70 61 73 73 25  0d 7a a8 1a 20 4c 44 4d  |PT pass%.z.. LDM|
000102a0  49 41 20 20 20 52 31 34  21 2c 7b 52 30 2d 52 31  |IA   R14!,{R0-R1|
000102b0  31 7d 0d 7a b2 1a 20 53  54 4d 49 41 20 20 20 52  |1}.z.. STMIA   R|
000102c0  31 33 21 2c 7b 52 30 2d  52 31 31 7d 0d 7a bc 06  |13!,{R0-R11}.z..|
000102d0  20 5d 0d 7a c6 06 20 ed  0d 7a d0 0f 20 5b 4f 50  | ].z.. ..z.. [OP|
000102e0  54 20 70 61 73 73 25 0d  7a da 18 20 41 44 44 20  |T pass%.z.. ADD |
000102f0  20 20 20 20 52 31 32 2c  52 31 32 2c 20 23 31 0d  |    R12,R12, #1.|
00010300  7a e4 15 20 43 4d 50 20  20 20 20 20 52 31 32 2c  |z.. CMP     R12,|
00010310  20 23 36 35 0d 7a ee 16  20 42 4c 54 20 20 20 20  | #65.z.. BLT    |
00010320  20 63 6c 67 5f 6c 6f 6f  70 31 0d 7a f8 06 20 5d  | clg_loop1.z.. ]|
00010330  0d 7b 02 10 20 e3 20 61  25 3d 31 20 b8 20 32 30  |.{.. . a%=1 . 20|
00010340  0d 7b 0c 0f 20 5b 4f 50  54 20 70 61 73 73 25 0d  |.{.. [OPT pass%.|
00010350  7b 16 19 20 4c 44 4d 49  41 20 20 20 52 31 34 21  |{.. LDMIA   R14!|
00010360  2c 7b 52 30 2d 52 39 7d  0d 7b 20 19 20 53 54 4d  |,{R0-R9}.{ . STM|
00010370  49 41 20 20 20 52 31 33  21 2c 7b 52 30 2d 52 39  |IA   R13!,{R0-R9|
00010380  7d 0d 7b 2a 06 20 5d 0d  7b 34 06 20 ed 0d 7b 3e  |}.{*. ].{4. ..{>|
00010390  0f 20 5b 4f 50 54 20 70  61 73 73 25 0d 7b 48 23  |. [OPT pass%.{H#|
000103a0  20 41 44 52 20 20 20 20  20 52 30 2c 20 63 6c 67  | ADR     R0, clg|
000103b0  5f 74 65 6d 70 5f 72 65  67 5f 73 74 6f 72 65 0d  |_temp_reg_store.|
000103c0  7b 52 1a 20 4c 44 4d 49  41 20 20 20 52 30 2c 20  |{R. LDMIA   R0, |
000103d0  7b 52 31 33 2c 52 31 34  7d 0d 7b 5c 1d 20 4c 44  |{R13,R14}.{\. LD|
000103e0  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 30 2d 52  |MFD   R13!,{R0-R|
000103f0  31 32 2c 50 43 7d 0d 7b  66 06 20 3a 0d 7b 70 18  |12,PC}.{f. :.{p.|
00010400  20 2e 63 6c 67 5f 74 65  6d 70 5f 72 65 67 5f 73  | .clg_temp_reg_s|
00010410  74 6f 72 65 0d 7b 7a 0e  20 45 51 55 44 20 20 20  |tore.{z. EQUD   |
00010420  20 30 0d 7b 84 0e 20 45  51 55 44 20 20 20 20 30  | 0.{.. EQUD    0|
00010430  0d 7b 8e 06 20 3a 0d 7b  98 06 20 5d 0d 7b a2 16  |.{.. :.{.. ].{..|
00010440  20 50 25 3d 73 70 6c 69  74 5f 72 6f 75 74 69 6e  | P%=split_routin|
00010450  65 25 0d 7b ac 1b 20 4c  25 3d 73 70 6c 69 74 5f  |e%.{.. L%=split_|
00010460  72 6f 75 74 69 6e 65 25  2b 31 30 32 30 0d 7b b6  |routine%+1020.{.|
00010470  0f 20 5b 4f 50 54 20 70  61 73 73 25 0d 7b c0 06  |. [OPT pass%.{..|
00010480  20 3a 0d 7b ca 06 20 3a  0d 7b d4 17 20 2e 73 70  | :.{.. :.{.. .sp|
00010490  6c 69 74 5f 73 63 72 65  65 6e 73 74 6f 72 65 0d  |lit_screenstore.|
000104a0  7b de 19 20 45 51 55 44  20 20 20 20 73 63 72 65  |{.. EQUD    scre|
000104b0  65 6e 73 74 6f 72 65 25  0d 7b e8 16 20 2e 73 70  |enstore%.{.. .sp|
000104c0  6c 69 74 5f 61 64 72 5f  73 63 72 65 65 6e 0d 7b  |lit_adr_screen.{|
000104d0  f2 13 20 45 51 55 44 20  20 20 20 73 63 72 65 65  |.. EQUD    scree|
000104e0  6e 0d 7b fc 14 20 2e 73  70 6c 69 74 5f 61 64 72  |n.{.. .split_adr|
000104f0  5f 70 31 5f 79 0d 7c 06  11 20 45 51 55 44 20 20  |_p1_y.|.. EQUD  |
00010500  20 20 70 31 5f 79 0d 7c  10 14 20 2e 73 70 6c 69  |  p1_y.|.. .spli|
00010510  74 5f 61 64 72 5f 70 32  5f 79 0d 7c 1a 11 20 45  |t_adr_p2_y.|.. E|
00010520  51 55 44 20 20 20 20 70  32 5f 79 0d 7c 24 11 20  |QUD    p2_y.|$. |
00010530  2e 73 70 6c 69 74 5f 70  31 5f 79 31 0d 7c 2e 0e  |.split_p1_y1.|..|
00010540  20 45 51 55 44 20 20 20  20 30 0d 7c 38 11 20 2e  | EQUD    0.|8. .|
00010550  73 70 6c 69 74 5f 70 32  5f 79 31 0d 7c 42 0e 20  |split_p2_y1.|B. |
00010560  45 51 55 44 20 20 20 20  30 0d 7c 4c 11 20 2e 73  |EQUD    0.|L. .s|
00010570  70 6c 69 74 5f 70 31 5f  79 32 0d 7c 56 0e 20 45  |plit_p1_y2.|V. E|
00010580  51 55 44 20 20 20 20 30  0d 7c 60 11 20 2e 73 70  |QUD    0.|`. .sp|
00010590  6c 69 74 5f 70 32 5f 79  32 0d 7c 6a 0e 20 45 51  |lit_p2_y2.|j. EQ|
000105a0  55 44 20 20 20 20 30 0d  7c 74 11 20 2e 73 70 6c  |UD    0.|t. .spl|
000105b0  69 74 5f 70 31 5f 79 33  0d 7c 7e 0e 20 45 51 55  |it_p1_y3.|~. EQU|
000105c0  44 20 20 20 20 30 0d 7c  88 11 20 2e 73 70 6c 69  |D    0.|.. .spli|
000105d0  74 5f 70 32 5f 79 33 0d  7c 92 0e 20 45 51 55 44  |t_p2_y3.|.. EQUD|
000105e0  20 20 20 20 30 0d 7c 9c  06 20 3a 0d 7c a6 12 20  |    0.|.. :.|.. |
000105f0  2e 73 70 6c 69 74 5f 73  63 72 65 65 6e 0d 7c b0  |.split_screen.|.|
00010600  1e 20 53 54 4d 46 44 20  20 20 52 31 33 21 2c 7b  |. STMFD   R13!,{|
00010610  52 30 2d 52 31 32 2c 52  31 34 7d 0d 7c ba 25 20  |R0-R12,R14}.|.% |
00010620  41 44 52 20 20 20 20 20  52 30 2c 20 73 70 6c 69  |ADR     R0, spli|
00010630  74 5f 74 65 6d 70 5f 72  65 67 5f 73 74 6f 72 65  |t_temp_reg_store|
00010640  0d 7c c4 1a 20 53 54 4d  49 41 20 20 20 52 30 2c  |.|.. STMIA   R0,|
00010650  20 7b 52 31 33 2c 52 31  34 7d 0d 7c ce 22 20 4c  | {R13,R14}.|." L|
00010660  44 52 20 20 20 20 20 52  31 33 2c 20 73 70 6c 69  |DR     R13, spli|
00010670  74 5f 61 64 72 5f 73 63  72 65 65 6e 0d 7c d8 17  |t_adr_screen.|..|
00010680  20 4c 44 52 20 20 20 20  20 52 31 33 2c 20 5b 52  | LDR     R13, [R|
00010690  31 33 5d 0d 7c e2 14 20  4d 4f 56 20 20 20 20 20  |13].|.. MOV     |
000106a0  52 31 32 2c 20 23 30 0d  7c ec 1f 20 4c 44 52 20  |R12, #0.|.. LDR |
000106b0  20 20 20 20 52 30 2c 20  73 70 6c 69 74 5f 61 64  |    R0, split_ad|
000106c0  72 5f 70 31 5f 79 0d 7c  f6 14 20 4c 44 52 20 20  |r_p1_y.|.. LDR  |
000106d0  20 20 20 52 30 2c 5b 52  30 5d 0d 7d 00 1c 20 4c  |   R0,[R0].}.. L|
000106e0  44 52 20 20 20 20 20 52  31 2c 20 73 70 6c 69 74  |DR     R1, split|
000106f0  5f 70 31 5f 79 31 0d 7d  0a 1c 20 4c 44 52 20 20  |_p1_y1.}.. LDR  |
00010700  20 20 20 52 32 2c 20 73  70 6c 69 74 5f 70 31 5f  |   R2, split_p1_|
00010710  79 32 0d 7d 14 1c 20 4c  44 52 20 20 20 20 20 52  |y2.}.. LDR     R|
00010720  33 2c 20 73 70 6c 69 74  5f 70 31 5f 79 33 0d 7d  |3, split_p1_y3.}|
00010730  1e 1c 20 53 54 52 20 20  20 20 20 52 30 2c 20 73  |.. STR     R0, s|
00010740  70 6c 69 74 5f 70 31 5f  79 31 0d 7d 28 1c 20 53  |plit_p1_y1.}(. S|
00010750  54 52 20 20 20 20 20 52  31 2c 20 73 70 6c 69 74  |TR     R1, split|
00010760  5f 70 31 5f 79 32 0d 7d  32 1c 20 53 54 52 20 20  |_p1_y2.}2. STR  |
00010770  20 20 20 52 32 2c 20 73  70 6c 69 74 5f 70 31 5f  |   R2, split_p1_|
00010780  79 33 0d 7d 3c 15 20 41  44 44 20 20 20 20 20 52  |y3.}<. ADD     R|
00010790  30 2c 52 30 2c 52 31 0d  7d 46 15 20 41 44 44 20  |0,R0,R1.}F. ADD |
000107a0  20 20 20 20 52 30 2c 52  30 2c 52 32 0d 7d 50 15  |    R0,R0,R2.}P.|
000107b0  20 41 44 44 20 20 20 20  20 52 30 2c 52 30 2c 52  | ADD     R0,R0,R|
000107c0  33 0d 7d 5a 16 20 41 44  44 20 20 20 20 20 52 30  |3.}Z. ADD     R0|
000107d0  2c 52 30 2c 20 23 32 0d  7d 64 1a 20 4d 4f 56 20  |,R0, #2.}d. MOV |
000107e0  20 20 20 20 52 30 2c 52  30 2c 20 41 53 52 20 23  |    R0,R0, ASR #|
000107f0  32 0d 7d 6e 18 20 52 53  42 20 20 20 20 20 52 30  |2.}n. RSB     R0|
00010800  2c 52 30 2c 20 23 32 35  36 0d 7d 78 17 20 53 55  |,R0, #256.}x. SU|
00010810  42 20 20 20 20 20 52 30  2c 52 30 2c 20 23 36 34  |B     R0,R0, #64|
00010820  0d 7d 82 15 20 43 4d 50  20 20 20 20 20 52 30 2c  |.}.. CMP     R0,|
00010830  20 23 31 34 38 0d 7d 8c  15 20 4d 4f 56 47 54 20  | #148.}.. MOVGT |
00010840  20 20 52 30 2c 20 23 31  34 38 0d 7d 96 13 20 43  |  R0, #148.}.. C|
00010850  4d 50 20 20 20 20 20 52  30 2c 20 23 30 0d 7d a0  |MP     R0, #0.}.|
00010860  13 20 4d 4f 56 4c 54 20  20 20 52 30 2c 20 23 30  |. MOVLT   R0, #0|
00010870  0d 7d aa 23 20 4c 44 52  20 20 20 20 20 52 31 34  |.}.# LDR     R14|
00010880  2c 20 73 70 6c 69 74 5f  73 63 72 65 65 6e 73 74  |, split_screenst|
00010890  6f 72 65 0d 7d b4 19 20  4d 4f 56 20 20 20 20 20  |ore.}.. MOV     |
000108a0  52 31 2c 20 23 79 5f 73  68 69 66 74 0d 7d be 1a  |R1, #y_shift.}..|
000108b0  20 4d 4c 41 20 20 20 20  20 52 31 34 2c 52 31 2c  | MLA     R14,R1,|
000108c0  52 30 2c 52 31 34 0d 7d  c8 11 20 2e 73 70 6c 69  |R0,R14.}.. .spli|
000108d0  74 5f 6c 6f 6f 70 31 0d  7d d2 06 20 5d 0d 7d dc  |t_loop1.}.. ].}.|
000108e0  10 20 e3 20 61 25 3d 31  20 b8 20 31 30 0d 7d e6  |. . a%=1 . 10.}.|
000108f0  0f 20 5b 4f 50 54 20 70  61 73 73 25 0d 7d f0 1a  |. [OPT pass%.}..|
00010900  20 4c 44 4d 49 41 20 20  20 52 31 34 21 2c 7b 52  | LDMIA   R14!,{R|
00010910  30 2d 52 31 31 7d 0d 7d  fa 1a 20 53 54 4d 49 41  |0-R11}.}.. STMIA|
00010920  20 20 20 52 31 33 21 2c  7b 52 30 2d 52 31 31 7d  |   R13!,{R0-R11}|
00010930  0d 7e 04 06 20 5d 0d 7e  0e 06 20 ed 0d 7e 18 0f  |.~.. ].~.. ..~..|
00010940  20 5b 4f 50 54 20 70 61  73 73 25 0d 7e 22 18 20  | [OPT pass%.~". |
00010950  41 44 44 20 20 20 20 20  52 31 32 2c 52 31 32 2c  |ADD     R12,R12,|
00010960  20 23 31 0d 7e 2c 15 20  43 4d 50 20 20 20 20 20  | #1.~,. CMP     |
00010970  52 31 32 2c 20 23 37 32  0d 7e 36 18 20 42 4c 54  |R12, #72.~6. BLT|
00010980  20 20 20 20 20 73 70 6c  69 74 5f 6c 6f 6f 70 31  |     split_loop1|
00010990  0d 7e 40 06 20 5d 0d 7e  4a 10 20 e3 20 61 25 3d  |.~@. ].~J. . a%=|
000109a0  30 20 b8 20 31 31 0d 7e  54 0f 20 5b 4f 50 54 20  |0 . 11.~T. [OPT |
000109b0  70 61 73 73 25 0d 7e 5e  15 20 4d 4f 56 20 20 20  |pass%.~^. MOV   |
000109c0  20 20 61 25 2c 20 23 31  32 37 0d 7e 68 1c 20 84  |  a%, #127.~h. .|
000109d0  52 20 20 20 20 20 61 25  2c 61 25 2c 61 25 2c 20  |R     a%,a%,a%, |
000109e0  4c 53 4c 20 23 38 0d 7e  72 1d 20 84 52 20 20 20  |LSL #8.~r. .R   |
000109f0  20 20 61 25 2c 61 25 2c  61 25 2c 20 4c 53 4c 20  |  a%,a%,a%, LSL |
00010a00  23 31 36 0d 7e 7c 06 20  5d 0d 7e 86 06 20 ed 0d  |#16.~|. ].~.. ..|
00010a10  7e 90 0f 20 5b 4f 50 54  20 70 61 73 73 25 0d 7e  |~.. [OPT pass%.~|
00010a20  9a 14 20 4d 4f 56 20 20  20 20 20 52 31 32 2c 20  |.. MOV     R12, |
00010a30  23 30 0d 7e a4 11 20 2e  73 70 6c 69 74 5f 6c 6f  |#0.~.. .split_lo|
00010a40  6f 70 33 0d 7e ae 1a 20  53 54 4d 49 41 20 20 20  |op3.~.. STMIA   |
00010a50  52 31 33 21 2c 7b 52 30  2d 52 31 31 7d 0d 7e b8  |R13!,{R0-R11}.~.|
00010a60  18 20 41 44 44 20 20 20  20 20 52 31 32 2c 52 31  |. ADD     R12,R1|
00010a70  32 2c 20 23 31 0d 7e c2  16 20 43 4d 50 20 20 20  |2, #1.~.. CMP   |
00010a80  20 20 52 31 32 2c 20 23  32 38 30 0d 7e cc 18 20  |  R12, #280.~.. |
00010a90  42 4c 54 20 20 20 20 20  73 70 6c 69 74 5f 6c 6f  |BLT     split_lo|
00010aa0  6f 70 33 0d 7e d6 06 20  3a 0d 7e e0 22 20 4c 44  |op3.~.. :.~." LD|
00010ab0  52 20 20 20 20 20 52 31  33 2c 20 73 70 6c 69 74  |R     R13, split|
00010ac0  5f 61 64 72 5f 73 63 72  65 65 6e 0d 7e ea 17 20  |_adr_screen.~.. |
00010ad0  4c 44 52 20 20 20 20 20  52 31 33 2c 20 5b 52 31  |LDR     R13, [R1|
00010ae0  33 5d 0d 7e f4 1c 20 41  44 44 20 20 20 20 20 52  |3].~.. ADD     R|
00010af0  31 33 2c 52 31 33 2c 20  23 26 42 39 30 30 0d 7e  |13,R13, #&B900.~|
00010b00  fe 14 20 4d 4f 56 20 20  20 20 20 52 31 32 2c 20  |.. MOV     R12, |
00010b10  23 30 0d 7f 08 1f 20 4c  44 52 20 20 20 20 20 52  |#0.... LDR     R|
00010b20  30 2c 20 73 70 6c 69 74  5f 61 64 72 5f 70 32 5f  |0, split_adr_p2_|
00010b30  79 0d 7f 12 14 20 4c 44  52 20 20 20 20 20 52 30  |y.... LDR     R0|
00010b40  2c 5b 52 30 5d 0d 7f 1c  1c 20 4c 44 52 20 20 20  |,[R0].... LDR   |
00010b50  20 20 52 31 2c 20 73 70  6c 69 74 5f 70 32 5f 79  |  R1, split_p2_y|
00010b60  31 0d 7f 26 1c 20 4c 44  52 20 20 20 20 20 52 32  |1..&. LDR     R2|
00010b70  2c 20 73 70 6c 69 74 5f  70 32 5f 79 32 0d 7f 30  |, split_p2_y2..0|
00010b80  1c 20 4c 44 52 20 20 20  20 20 52 33 2c 20 73 70  |. LDR     R3, sp|
00010b90  6c 69 74 5f 70 32 5f 79  33 0d 7f 3a 1c 20 53 54  |lit_p2_y3..:. ST|
00010ba0  52 20 20 20 20 20 52 30  2c 20 73 70 6c 69 74 5f  |R     R0, split_|
00010bb0  70 32 5f 79 31 0d 7f 44  1c 20 53 54 52 20 20 20  |p2_y1..D. STR   |
00010bc0  20 20 52 31 2c 20 73 70  6c 69 74 5f 70 32 5f 79  |  R1, split_p2_y|
00010bd0  32 0d 7f 4e 1c 20 53 54  52 20 20 20 20 20 52 32  |2..N. STR     R2|
00010be0  2c 20 73 70 6c 69 74 5f  70 32 5f 79 33 0d 7f 58  |, split_p2_y3..X|
00010bf0  15 20 41 44 44 20 20 20  20 20 52 30 2c 52 30 2c  |. ADD     R0,R0,|
00010c00  52 31 0d 7f 62 15 20 41  44 44 20 20 20 20 20 52  |R1..b. ADD     R|
00010c10  30 2c 52 30 2c 52 32 0d  7f 6c 15 20 41 44 44 20  |0,R0,R2..l. ADD |
00010c20  20 20 20 20 52 30 2c 52  30 2c 52 33 0d 7f 76 16  |    R0,R0,R3..v.|
00010c30  20 41 44 44 20 20 20 20  20 52 30 2c 52 30 2c 20  | ADD     R0,R0, |
00010c40  23 32 0d 7f 80 1a 20 4d  4f 56 20 20 20 20 20 52  |#2.... MOV     R|
00010c50  30 2c 52 30 2c 20 41 53  52 20 23 32 0d 7f 8a 18  |0,R0, ASR #2....|
00010c60  20 52 53 42 20 20 20 20  20 52 30 2c 52 30 2c 20  | RSB     R0,R0, |
00010c70  23 32 35 36 0d 7f 94 17  20 53 55 42 20 20 20 20  |#256.... SUB    |
00010c80  20 52 30 2c 52 30 2c 20  23 36 34 0d 7f 9e 15 20  | R0,R0, #64.... |
00010c90  43 4d 50 20 20 20 20 20  52 30 2c 20 23 31 34 38  |CMP     R0, #148|
00010ca0  0d 7f a8 15 20 4d 4f 56  47 54 20 20 20 52 30 2c  |.... MOVGT   R0,|
00010cb0  20 23 31 34 38 0d 7f b2  13 20 43 4d 50 20 20 20  | #148.... CMP   |
00010cc0  20 20 52 30 2c 20 23 30  0d 7f bc 13 20 4d 4f 56  |  R0, #0.... MOV|
00010cd0  4c 54 20 20 20 52 30 2c  20 23 30 0d 7f c6 23 20  |LT   R0, #0...# |
00010ce0  4c 44 52 20 20 20 20 20  52 31 34 2c 20 73 70 6c  |LDR     R14, spl|
00010cf0  69 74 5f 73 63 72 65 65  6e 73 74 6f 72 65 0d 7f  |it_screenstore..|
00010d00  d0 19 20 4d 4f 56 20 20  20 20 20 52 31 2c 20 23  |.. MOV     R1, #|
00010d10  79 5f 73 68 69 66 74 0d  7f da 1a 20 4d 4c 41 20  |y_shift.... MLA |
00010d20  20 20 20 20 52 31 34 2c  52 31 2c 52 30 2c 52 31  |    R14,R1,R0,R1|
00010d30  34 0d 7f e4 11 20 2e 73  70 6c 69 74 5f 6c 6f 6f  |4.... .split_loo|
00010d40  70 32 0d 7f ee 06 20 5d  0d 7f f8 10 20 e3 20 61  |p2.... ].... . a|
00010d50  25 3d 31 20 b8 20 31 30  0d 80 02 0f 20 5b 4f 50  |%=1 . 10.... [OP|
00010d60  54 20 70 61 73 73 25 0d  80 0c 1a 20 4c 44 4d 49  |T pass%.... LDMI|
00010d70  41 20 20 20 52 31 34 21  2c 7b 52 30 2d 52 31 31  |A   R14!,{R0-R11|
00010d80  7d 0d 80 16 1a 20 53 54  4d 49 41 20 20 20 52 31  |}.... STMIA   R1|
00010d90  33 21 2c 7b 52 30 2d 52  31 31 7d 0d 80 20 06 20  |3!,{R0-R11}.. . |
00010da0  5d 0d 80 2a 06 20 ed 0d  80 34 0f 20 5b 4f 50 54  |]..*. ...4. [OPT|
00010db0  20 70 61 73 73 25 0d 80  3e 18 20 41 44 44 20 20  | pass%..>. ADD  |
00010dc0  20 20 20 52 31 32 2c 52  31 32 2c 20 23 31 0d 80  |   R12,R12, #1..|
00010dd0  48 15 20 43 4d 50 20 20  20 20 20 52 31 32 2c 20  |H. CMP     R12, |
00010de0  23 37 32 0d 80 52 18 20  42 4c 54 20 20 20 20 20  |#72..R. BLT     |
00010df0  73 70 6c 69 74 5f 6c 6f  6f 70 32 0d 80 5c 25 20  |split_loop2..\% |
00010e00  41 44 52 20 20 20 20 20  52 30 2c 20 73 70 6c 69  |ADR     R0, spli|
00010e10  74 5f 74 65 6d 70 5f 72  65 67 5f 73 74 6f 72 65  |t_temp_reg_store|
00010e20  0d 80 66 1a 20 4c 44 4d  49 41 20 20 20 52 30 2c  |..f. LDMIA   R0,|
00010e30  20 7b 52 31 33 2c 52 31  34 7d 0d 80 70 1d 20 4c  | {R13,R14}..p. L|
00010e40  44 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 30 2d  |DMFD   R13!,{R0-|
00010e50  52 31 32 2c 50 43 7d 0d  80 7a 06 20 3a 0d 80 84  |R12,PC}..z. :...|
00010e60  1a 20 2e 73 70 6c 69 74  5f 74 65 6d 70 5f 72 65  |. .split_temp_re|
00010e70  67 5f 73 74 6f 72 65 0d  80 8e 0e 20 45 51 55 44  |g_store.... EQUD|
00010e80  20 20 20 20 30 0d 80 98  0e 20 45 51 55 44 20 20  |    0.... EQUD  |
00010e90  20 20 30 0d 80 a2 06 20  3a 0d 80 ac 06 20 3a 0d  |  0.... :.... :.|
00010ea0  80 b6 06 20 5d 0d 80 c0  18 20 50 25 3d 73 70 72  |... ].... P%=spr|
00010eb0  69 74 65 5f 72 6f 75 74  69 6e 65 73 25 0d 80 ca  |ite_routines%...|
00010ec0  1d 20 4c 25 3d 73 70 72  69 74 65 5f 72 6f 75 74  |. L%=sprite_rout|
00010ed0  69 6e 65 73 25 2b 38 31  39 31 0d 80 d4 0f 20 5b  |ines%+8191.... [|
00010ee0  4f 50 54 20 70 61 73 73  25 0d 80 de 06 20 3a 0d  |OPT pass%.... :.|
00010ef0  80 e8 06 20 3a 0d 80 f2  06 20 3a 0d 80 fc 16 20  |... :.... :.... |
00010f00  2e 70 6c 6f 74 5f 73 70  72 69 74 65 5f 31 32 31  |.plot_sprite_121|
00010f10  32 0d 81 06 06 20 3a 0d  81 10 1e 20 53 54 4d 46  |2.... :.... STMF|
00010f20  44 20 20 20 52 31 33 21  2c 7b 52 30 2d 52 31 32  |D   R13!,{R0-R12|
00010f30  2c 52 31 34 7d 0d 81 1a  06 20 3a 0d 81 24 31 20  |,R14}.... :..$1 |
00010f40  3a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |:               |
00010f50  20 20 20 20 20 20 20 20  20 20 20 20 20 3b 20 52  |             ; R|
00010f60  30 20 73 70 72 69 74 65  20 6e 6f 2e 0d 81 2e 2e  |0 sprite no.....|
00010f70  20 3a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  | :              |
00010f80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3b 20  |              ; |
00010f90  52 31 20 78 2d 63 6f 6f  72 64 0d 81 38 2e 20 3a  |R1 x-coord..8. :|
00010fa0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00010fb0  20 20 20 20 20 20 20 20  20 20 20 20 3b 20 52 32  |            ; R2|
00010fc0  20 79 2d 63 6f 6f 72 64  0d 81 42 06 20 3a 0d 81  | y-coord..B. :..|
00010fd0  4c 18 20 52 53 42 20 20  20 20 20 52 32 2c 52 32  |L. RSB     R2,R2|
00010fe0  2c 20 23 32 35 36 0d 81  56 06 20 3a 0d 81 60 13  |, #256..V. :..`.|
00010ff0  20 43 4d 50 20 20 20 20  20 52 31 2c 20 23 30 0d  | CMP     R1, #0.|
00011000  81 6a 1c 20 42 4c 45 20  20 20 20 20 70 73 6d 5f  |.j. BLE     psm_|
00011010  6e 6f 5f 70 6c 6f 74 31  32 31 32 0d 81 74 14 20  |no_plot1212..t. |
00011020  43 4d 50 20 20 20 20 20  52 32 2c 20 23 31 32 0d  |CMP     R2, #12.|
00011030  81 7e 1c 20 42 4c 45 20  20 20 20 20 70 73 6d 5f  |.~. BLE     psm_|
00011040  6e 6f 5f 70 6c 6f 74 31  32 31 32 0d 81 88 17 20  |no_plot1212.... |
00011050  43 4d 50 20 20 20 20 20  52 31 2c 20 23 33 32 30  |CMP     R1, #320|
00011060  2d 38 0d 81 92 1c 20 42  47 45 20 20 20 20 20 70  |-8.... BGE     p|
00011070  73 6d 5f 6e 6f 5f 70 6c  6f 74 31 32 31 32 0d 81  |sm_no_plot1212..|
00011080  9c 15 20 43 4d 50 20 20  20 20 20 52 32 2c 20 23  |.. CMP     R2, #|
00011090  32 35 36 0d 81 a6 1c 20  42 47 45 20 20 20 20 20  |256.... BGE     |
000110a0  70 73 6d 5f 6e 6f 5f 70  6c 6f 74 31 32 31 32 0d  |psm_no_plot1212.|
000110b0  81 b0 19 20 42 20 20 20  20 20 20 20 70 73 6d 5f  |... B       psm_|
000110c0  70 6c 6f 74 31 32 31 32  0d 81 ba 15 20 2e 70 73  |plot1212.... .ps|
000110d0  6d 5f 6e 6f 5f 70 6c 6f  74 31 32 31 32 0d 81 c4  |m_no_plot1212...|
000110e0  1d 20 4c 44 4d 46 44 20  20 20 52 31 33 21 2c 7b  |. LDMFD   R13!,{|
000110f0  52 30 2d 52 31 32 2c 50  43 7d 0d 81 ce 12 20 2e  |R0-R12,PC}.... .|
00011100  70 73 6d 5f 70 6c 6f 74  31 32 31 32 0d 81 d8 06  |psm_plot1212....|
00011110  20 3a 0d 81 e2 34 20 80  20 20 20 20 20 52 33 2c  | :...4 .     R3,|
00011120  52 31 2c 20 23 25 31 31  20 20 20 20 20 20 20 20  |R1, #%11        |
00011130  20 20 3b 20 63 61 6c 63  75 6c 61 74 65 20 78 20  |  ; calculate x |
00011140  6f 66 66 73 65 74 0d 81  ec 32 20 4d 4f 56 20 20  |offset...2 MOV  |
00011150  20 20 20 52 30 2c 52 30  2c 20 4c 53 4c 20 23 32  |   R0,R0, LSL #2|
00011160  20 20 20 20 20 20 20 20  3b 20 72 65 61 6c 69 73  |        ; realis|
00011170  65 20 73 70 72 69 74 65  0d 81 f6 2e 20 41 44 44  |e sprite.... ADD|
00011180  20 20 20 20 20 52 30 2c  52 30 2c 20 52 33 20 20  |     R0,R0, R3  |
00011190  20 20 20 20 20 20 20 20  20 20 3b 20 61 64 64 20  |          ; add |
000111a0  6f 66 66 73 65 74 0d 82  00 33 20 42 49 43 20 20  |offset...3 BIC  |
000111b0  20 20 20 52 31 2c 52 31  2c 20 23 25 31 31 20 20  |   R1,R1, #%11  |
000111c0  20 20 20 20 20 20 20 20  3b 20 6d 61 6b 65 20 78  |        ; make x|
000111d0  20 64 69 76 20 62 79 20  34 0d 82 0a 06 20 3a 0d  | div by 4.... :.|
000111e0  82 14 35 20 4d 4f 56 20  20 20 20 20 52 37 2c 20  |..5 MOV     R7, |
000111f0  23 78 5f 73 68 69 66 74  20 20 20 20 20 20 20 20  |#x_shift        |
00011200  20 3b 20 67 65 74 20 73  63 72 65 65 6e 20 73 68  | ; get screen sh|
00011210  69 66 74 73 0d 82 1e 19  20 4d 4f 56 20 20 20 20  |ifts.... MOV    |
00011220  20 52 38 2c 20 23 79 5f  73 68 69 66 74 0d 82 28  | R8, #y_shift..(|
00011230  40 20 4c 44 52 20 20 20  20 20 52 39 2c 20 73 70  |@ LDR     R9, sp|
00011240  72 69 74 65 5f 61 64 72  5f 73 63 72 65 65 6e 73  |rite_adr_screens|
00011250  74 6f 72 65 3b 20 67 65  74 20 73 63 72 65 65 6e  |tore; get screen|
00011260  73 74 6f 72 65 20 61 64  64 72 65 73 73 0d 82 32  |store address..2|
00011270  14 20 4c 44 52 20 20 20  20 20 52 39 2c 5b 52 39  |. LDR     R9,[R9|
00011280  5d 0d 82 3c 06 20 3a 0d  82 46 18 20 4d 4c 41 20  |]..<. :..F. MLA |
00011290  20 20 20 20 52 33 2c 52  37 2c 52 31 2c 52 39 0d  |    R3,R7,R1,R9.|
000112a0  82 50 18 20 4d 4c 41 20  20 20 20 20 52 32 2c 52  |.P. MLA     R2,R|
000112b0  38 2c 52 32 2c 52 33 0d  82 5a 06 20 3a 0d 82 64  |8,R2,R3..Z. :..d|
000112c0  3d 20 4c 44 52 20 20 20  20 20 52 37 2c 20 61 64  |= LDR     R7, ad|
000112d0  72 5f 73 70 72 69 74 65  73 31 20 20 20 20 20 3b  |r_sprites1     ;|
000112e0  20 67 65 74 20 73 74 61  72 74 20 61 64 64 72 65  | get start addre|
000112f0  73 73 20 6f 66 20 64 61  74 61 0d 82 6e 43 20 4c  |ss of data..nC L|
00011300  44 52 20 20 20 20 20 52  38 2c 20 73 70 72 5f 73  |DR     R8, spr_s|
00011310  69 7a 65 31 20 20 20 20  20 20 20 20 3b 20 67 65  |ize1        ; ge|
00011320  74 20 6c 65 6e 67 74 68  20 6f 66 20 64 61 74 61  |t length of data|
00011330  20 66 6f 72 20 31 20 73  70 72 69 74 65 0d 82 78  | for 1 sprite..x|
00011340  3e 20 4d 4c 41 20 20 20  20 20 52 30 2c 52 38 2c  |> MLA     R0,R8,|
00011350  52 30 2c 52 37 20 20 20  20 20 20 20 20 20 20 3b  |R0,R7          ;|
00011360  20 63 61 6c 63 75 6c 61  74 65 20 70 6f 73 69 74  | calculate posit|
00011370  69 6f 6e 20 6f 66 20 64  61 74 61 0d 82 82 3e 20  |ion of data...> |
00011380  41 44 44 20 20 20 20 20  52 31 2c 52 30 2c 52 38  |ADD     R1,R0,R8|
00011390  2c 20 4c 53 52 20 23 31  20 20 20 20 20 3b 20 63  |, LSR #1     ; c|
000113a0  61 6c 63 75 6c 61 74 65  20 70 6f 73 69 74 69 6f  |alculate positio|
000113b0  6e 20 6f 66 20 6d 61 73  6b 0d 82 8c 06 20 3a 0d  |n of mask.... :.|
000113c0  82 96 13 20 4d 4f 56 20  20 20 20 20 52 33 2c 20  |... MOV     R3, |
000113d0  23 31 0d 82 a0 1e 20 53  54 52 20 20 20 20 20 52  |#1.... STR     R|
000113e0  33 2c 20 73 31 32 31 32  5f 63 6f 75 6e 74 65 72  |3, s1212_counter|
000113f0  0d 82 aa 06 20 3a 0d 82  b4 17 20 2e 73 31 32 31  |.... :.... .s121|
00011400  32 5f 73 70 72 69 74 65  5f 6c 6f 6f 70 0d 82 be  |2_sprite_loop...|
00011410  06 20 3a 0d 82 c8 06 20  5d 0d 82 d2 10 20 e3 20  |. :.... ].... . |
00011420  61 25 3d 31 20 b8 20 31  32 0d 82 dc 0f 20 5b 4f  |a%=1 . 12.... [O|
00011430  50 54 20 70 61 73 73 25  0d 82 e6 06 20 3a 0d 82  |PT pass%.... :..|
00011440  f0 37 20 4c 44 4d 49 41  20 20 20 52 32 2c 7b 52  |.7 LDMIA   R2,{R|
00011450  33 2d 52 35 7d 20 20 20  20 20 20 20 20 20 20 20  |3-R5}           |
00011460  3b 20 67 65 74 20 73 6f  6d 65 20 62 61 63 6b 67  |; get some backg|
00011470  72 6f 75 6e 64 0d 82 fa  31 20 4c 44 4d 49 41 20  |round...1 LDMIA |
00011480  20 20 52 31 21 2c 7b 52  38 2d 52 31 30 7d 20 20  |  R1!,{R8-R10}  |
00011490  20 20 20 20 20 20 20 3b  20 67 65 74 20 73 6f 6d  |       ; get som|
000114a0  65 20 6d 61 73 6b 0d 83  04 35 20 80 20 20 20 20  |e mask...5 .    |
000114b0  20 52 33 2c 52 33 2c 52  38 20 20 20 20 20 20 20  | R3,R3,R8       |
000114c0  20 20 20 20 20 20 3b 20  6d 61 73 6b 20 6f 66 66  |      ; mask off|
000114d0  20 62 61 63 6b 67 72 6f  75 6e 64 0d 83 0e 13 20  | background.... |
000114e0  80 20 20 20 20 20 52 34  2c 52 34 2c 52 39 0d 83  |.     R4,R4,R9..|
000114f0  18 14 20 80 20 20 20 20  20 52 35 2c 52 35 2c 52  |.. .     R5,R5,R|
00011500  31 30 0d 83 22 33 20 4c  44 4d 49 41 20 20 20 52  |10.."3 LDMIA   R|
00011510  30 21 2c 7b 52 38 2d 52  31 30 7d 20 20 20 20 20  |0!,{R8-R10}     |
00011520  20 20 20 20 3b 20 67 65  74 20 73 6f 6d 65 20 73  |    ; get some s|
00011530  70 72 69 74 65 0d 83 2c  3f 20 84 52 20 20 20 20  |prite..,? .R    |
00011540  20 52 33 2c 52 33 2c 52  38 20 20 20 20 20 20 20  | R3,R3,R8       |
00011550  20 20 20 20 20 20 3b 20  6d 65 72 67 65 20 73 70  |      ; merge sp|
00011560  72 69 74 65 20 77 69 74  68 20 62 61 63 6b 67 72  |rite with backgr|
00011570  6f 75 6e 64 0d 83 36 14  20 84 52 20 20 20 20 20  |ound..6. .R     |
00011580  52 34 2c 52 34 2c 52 39  0d 83 40 15 20 84 52 20  |R4,R4,R9..@. .R |
00011590  20 20 20 20 52 35 2c 52  35 2c 52 31 30 0d 83 4a  |    R5,R5,R10..J|
000115a0  37 20 53 54 4d 49 41 20  20 20 52 32 2c 7b 52 33  |7 STMIA   R2,{R3|
000115b0  2d 52 35 7d 20 20 20 20  20 20 20 20 20 20 20 3b  |-R5}           ;|
000115c0  20 73 74 6f 72 65 20 6d  61 73 6b 65 64 20 73 70  | store masked sp|
000115d0  72 69 74 65 0d 83 54 06  20 3a 0d 83 5e 1c 20 53  |rite..T. :..^. S|
000115e0  55 42 20 20 20 20 20 52  32 2c 52 32 2c 20 23 79  |UB     R2,R2, #y|
000115f0  5f 73 68 69 66 74 0d 83  68 06 20 3a 0d 83 72 06  |_shift..h. :..r.|
00011600  20 5d 0d 83 7c 06 20 ed  0d 83 86 0f 20 5b 4f 50  | ]..|. ..... [OP|
00011610  54 20 70 61 73 73 25 0d  83 90 06 20 3a 0d 83 9a  |T pass%.... :...|
00011620  1e 20 4c 44 52 20 20 20  20 20 52 33 2c 20 73 31  |. LDR     R3, s1|
00011630  32 31 32 5f 63 6f 75 6e  74 65 72 0d 83 a4 16 20  |212_counter.... |
00011640  41 44 44 20 20 20 20 20  52 33 2c 52 33 2c 20 23  |ADD     R3,R3, #|
00011650  31 0d 83 ae 1e 20 53 54  52 20 20 20 20 20 52 33  |1.... STR     R3|
00011660  2c 20 73 31 32 31 32 5f  63 6f 75 6e 74 65 72 0d  |, s1212_counter.|
00011670  83 b8 13 20 43 4d 50 20  20 20 20 20 52 33 2c 20  |... CMP     R3, |
00011680  23 31 0d 83 c2 1e 20 42  4c 45 20 20 20 20 20 73  |#1.... BLE     s|
00011690  31 32 31 32 5f 73 70 72  69 74 65 5f 6c 6f 6f 70  |1212_sprite_loop|
000116a0  0d 83 cc 06 20 3a 0d 83  d6 1d 20 4c 44 4d 46 44  |.... :.... LDMFD|
000116b0  20 20 20 52 31 33 21 2c  7b 52 30 2d 52 31 32 2c  |   R13!,{R0-R12,|
000116c0  50 43 7d 0d 83 e0 06 20  3a 0d 83 ea 13 20 2e 73  |PC}.... :.... .s|
000116d0  31 32 31 32 5f 63 6f 75  6e 74 65 72 0d 83 f4 0e  |1212_counter....|
000116e0  20 45 51 55 44 20 20 20  20 30 0d 83 fe 06 20 3a  | EQUD    0.... :|
000116f0  0d 84 08 12 20 2e 61 64  72 5f 73 70 72 69 74 65  |.... .adr_sprite|
00011700  73 31 0d 84 12 37 20 45  51 55 44 20 20 20 20 73  |s1...7 EQUD    s|
00011710  70 72 69 74 65 73 31 25  20 20 20 20 20 20 20 20  |prites1%        |
00011720  20 20 20 20 3b 20 61 64  64 72 65 73 73 20 6f 66  |    ; address of|
00011730  20 73 70 72 69 74 65 73  31 0d 84 1c 0f 20 2e 73  | sprites1.... .s|
00011740  70 72 5f 73 69 7a 65 31  0d 84 26 41 20 45 51 55  |pr_size1..&A EQU|
00011750  44 20 20 20 20 38 2f 38  2a 31 32 2a 31 32 2a 32  |D    8/8*12*12*2|
00011760  20 20 20 20 20 20 20 20  20 20 3b 20 6c 65 6e 67  |          ; leng|
00011770  74 68 20 6f 66 20 6f 6e  65 20 73 70 72 69 74 65  |th of one sprite|
00011780  31 20 2b 20 6d 61 73 6b  31 0d 84 30 06 20 3a 0d  |1 + mask1..0. :.|
00011790  84 3a 06 20 3a 0d 84 44  06 20 3a 0d 84 4e 16 20  |.:. :..D. :..N. |
000117a0  2e 70 6c 6f 74 5f 73 70  72 69 74 65 5f 31 32 36  |.plot_sprite_126|
000117b0  34 0d 84 58 06 20 3a 0d  84 62 1e 20 53 54 4d 46  |4..X. :..b. STMF|
000117c0  44 20 20 20 52 31 33 21  2c 7b 52 30 2d 52 31 32  |D   R13!,{R0-R12|
000117d0  2c 52 31 34 7d 0d 84 6c  06 20 3a 0d 84 76 31 20  |,R14}..l. :..v1 |
000117e0  3a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |:               |
000117f0  20 20 20 20 20 20 20 20  20 20 20 20 20 3b 20 52  |             ; R|
00011800  30 20 73 70 72 69 74 65  20 6e 6f 2e 0d 84 80 2e  |0 sprite no.....|
00011810  20 3a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  | :              |
00011820  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3b 20  |              ; |
00011830  52 31 20 78 2d 63 6f 6f  72 64 0d 84 8a 2e 20 3a  |R1 x-coord.... :|
00011840  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00011850  20 20 20 20 20 20 20 20  20 20 20 20 3b 20 52 32  |            ; R2|
00011860  20 79 2d 63 6f 6f 72 64  0d 84 94 06 20 3a 0d 84  | y-coord.... :..|
00011870  9e 18 20 52 53 42 20 20  20 20 20 52 32 2c 52 32  |.. RSB     R2,R2|
00011880  2c 20 23 32 35 36 0d 84  a8 06 20 3a 0d 84 b2 13  |, #256.... :....|
00011890  20 43 4d 50 20 20 20 20  20 52 31 2c 20 23 30 0d  | CMP     R1, #0.|
000118a0  84 bc 1c 20 42 4c 45 20  20 20 20 20 70 73 6d 5f  |... BLE     psm_|
000118b0  6e 6f 5f 70 6c 6f 74 31  32 36 34 0d 84 c6 14 20  |no_plot1264.... |
000118c0  43 4d 50 20 20 20 20 20  52 32 2c 20 23 33 32 0d  |CMP     R2, #32.|
000118d0  84 d0 1c 20 42 4c 45 20  20 20 20 20 70 73 6d 5f  |... BLE     psm_|
000118e0  6e 6f 5f 70 6c 6f 74 31  32 36 34 0d 84 da 17 20  |no_plot1264.... |
000118f0  43 4d 50 20 20 20 20 20  52 31 2c 20 23 33 32 30  |CMP     R1, #320|
00011900  2d 38 0d 84 e4 1c 20 42  47 45 20 20 20 20 20 70  |-8.... BGE     p|
00011910  73 6d 5f 6e 6f 5f 70 6c  6f 74 31 32 36 34 0d 84  |sm_no_plot1264..|
00011920  ee 15 20 43 4d 50 20 20  20 20 20 52 32 2c 20 23  |.. CMP     R2, #|
00011930  32 35 36 0d 84 f8 1c 20  42 47 45 20 20 20 20 20  |256.... BGE     |
00011940  70 73 6d 5f 6e 6f 5f 70  6c 6f 74 31 32 36 34 0d  |psm_no_plot1264.|
00011950  85 02 19 20 42 20 20 20  20 20 20 20 70 73 6d 5f  |... B       psm_|
00011960  70 6c 6f 74 31 32 36 34  0d 85 0c 15 20 2e 70 73  |plot1264.... .ps|
00011970  6d 5f 6e 6f 5f 70 6c 6f  74 31 32 36 34 0d 85 16  |m_no_plot1264...|
00011980  1d 20 4c 44 4d 46 44 20  20 20 52 31 33 21 2c 7b  |. LDMFD   R13!,{|
00011990  52 30 2d 52 31 32 2c 50  43 7d 0d 85 20 12 20 2e  |R0-R12,PC}.. . .|
000119a0  70 73 6d 5f 70 6c 6f 74  31 32 36 34 0d 85 2a 06  |psm_plot1264..*.|
000119b0  20 3a 0d 85 34 34 20 80  20 20 20 20 20 52 33 2c  | :..44 .     R3,|
000119c0  52 31 2c 20 23 25 31 31  20 20 20 20 20 20 20 20  |R1, #%11        |
000119d0  20 20 3b 20 63 61 6c 63  75 6c 61 74 65 20 78 20  |  ; calculate x |
000119e0  6f 66 66 73 65 74 0d 85  3e 32 20 4d 4f 56 20 20  |offset..>2 MOV  |
000119f0  20 20 20 52 30 2c 52 30  2c 20 4c 53 4c 20 23 32  |   R0,R0, LSL #2|
00011a00  20 20 20 20 20 20 20 20  3b 20 72 65 61 6c 69 73  |        ; realis|
00011a10  65 20 73 70 72 69 74 65  0d 85 48 2e 20 41 44 44  |e sprite..H. ADD|
00011a20  20 20 20 20 20 52 30 2c  52 30 2c 20 52 33 20 20  |     R0,R0, R3  |
00011a30  20 20 20 20 20 20 20 20  20 20 3b 20 61 64 64 20  |          ; add |
00011a40  6f 66 66 73 65 74 0d 85  52 33 20 42 49 43 20 20  |offset..R3 BIC  |
00011a50  20 20 20 52 31 2c 52 31  2c 20 23 25 31 31 20 20  |   R1,R1, #%11  |
00011a60  20 20 20 20 20 20 20 20  3b 20 6d 61 6b 65 20 78  |        ; make x|
00011a70  20 64 69 76 20 62 79 20  34 0d 85 5c 06 20 3a 0d  | div by 4..\. :.|
00011a80  85 66 35 20 4d 4f 56 20  20 20 20 20 52 37 2c 20  |.f5 MOV     R7, |
00011a90  23 78 5f 73 68 69 66 74  20 20 20 20 20 20 20 20  |#x_shift        |
00011aa0  20 3b 20 67 65 74 20 73  63 72 65 65 6e 20 73 68  | ; get screen sh|
00011ab0  69 66 74 73 0d 85 70 19  20 4d 4f 56 20 20 20 20  |ifts..p. MOV    |
00011ac0  20 52 38 2c 20 23 79 5f  73 68 69 66 74 0d 85 7a  | R8, #y_shift..z|
00011ad0  40 20 4c 44 52 20 20 20  20 20 52 39 2c 20 73 70  |@ LDR     R9, sp|
00011ae0  72 69 74 65 5f 61 64 72  5f 73 63 72 65 65 6e 73  |rite_adr_screens|
00011af0  74 6f 72 65 3b 20 67 65  74 20 73 63 72 65 65 6e  |tore; get screen|
00011b00  73 74 6f 72 65 20 61 64  64 72 65 73 73 0d 85 84  |store address...|
00011b10  14 20 4c 44 52 20 20 20  20 20 52 39 2c 5b 52 39  |. LDR     R9,[R9|
00011b20  5d 0d 85 8e 06 20 3a 0d  85 98 18 20 4d 4c 41 20  |].... :.... MLA |
00011b30  20 20 20 20 52 33 2c 52  37 2c 52 31 2c 52 39 0d  |    R3,R7,R1,R9.|
00011b40  85 a2 18 20 4d 4c 41 20  20 20 20 20 52 32 2c 52  |... MLA     R2,R|
00011b50  38 2c 52 32 2c 52 33 0d  85 ac 06 20 3a 0d 85 b6  |8,R2,R3.... :...|
00011b60  3d 20 4c 44 52 20 20 20  20 20 52 37 2c 20 61 64  |= LDR     R7, ad|
00011b70  72 5f 73 70 72 69 74 65  73 33 20 20 20 20 20 3b  |r_sprites3     ;|
00011b80  20 67 65 74 20 73 74 61  72 74 20 61 64 64 72 65  | get start addre|
00011b90  73 73 20 6f 66 20 64 61  74 61 0d 85 c0 43 20 4c  |ss of data...C L|
00011ba0  44 52 20 20 20 20 20 52  38 2c 20 73 70 72 5f 73  |DR     R8, spr_s|
00011bb0  69 7a 65 33 20 20 20 20  20 20 20 20 3b 20 67 65  |ize3        ; ge|
00011bc0  74 20 6c 65 6e 67 74 68  20 6f 66 20 64 61 74 61  |t length of data|
00011bd0  20 66 6f 72 20 31 20 73  70 72 69 74 65 0d 85 ca  | for 1 sprite...|
00011be0  3e 20 4d 4c 41 20 20 20  20 20 52 30 2c 52 38 2c  |> MLA     R0,R8,|
00011bf0  52 30 2c 52 37 20 20 20  20 20 20 20 20 20 20 3b  |R0,R7          ;|
00011c00  20 63 61 6c 63 75 6c 61  74 65 20 70 6f 73 69 74  | calculate posit|
00011c10  69 6f 6e 20 6f 66 20 64  61 74 61 0d 85 d4 3e 20  |ion of data...> |
00011c20  41 44 44 20 20 20 20 20  52 31 2c 52 30 2c 52 38  |ADD     R1,R0,R8|
00011c30  2c 20 4c 53 52 20 23 31  20 20 20 20 20 3b 20 63  |, LSR #1     ; c|
00011c40  61 6c 63 75 6c 61 74 65  20 70 6f 73 69 74 69 6f  |alculate positio|
00011c50  6e 20 6f 66 20 6d 61 73  6b 0d 85 de 06 20 3a 0d  |n of mask.... :.|
00011c60  85 e8 13 20 4d 4f 56 20  20 20 20 20 52 33 2c 20  |... MOV     R3, |
00011c70  23 31 0d 85 f2 1e 20 53  54 52 20 20 20 20 20 52  |#1.... STR     R|
00011c80  33 2c 20 73 31 32 36 34  5f 63 6f 75 6e 74 65 72  |3, s1264_counter|
00011c90  0d 85 fc 06 20 3a 0d 86  06 17 20 2e 73 31 32 36  |.... :.... .s126|
00011ca0  34 5f 73 70 72 69 74 65  5f 6c 6f 6f 70 0d 86 10  |4_sprite_loop...|
00011cb0  06 20 3a 0d 86 1a 06 20  5d 0d 86 24 0f 20 e3 20  |. :.... ]..$. . |
00011cc0  61 25 3d 31 20 b8 20 38  0d 86 2e 0f 20 5b 4f 50  |a%=1 . 8.... [OP|
00011cd0  54 20 70 61 73 73 25 0d  86 38 06 20 3a 0d 86 42  |T pass%..8. :..B|
00011ce0  37 20 4c 44 4d 49 41 20  20 20 52 32 2c 7b 52 33  |7 LDMIA   R2,{R3|
00011cf0  2d 52 35 7d 20 20 20 20  20 20 20 20 20 20 20 3b  |-R5}           ;|
00011d00  20 67 65 74 20 73 6f 6d  65 20 62 61 63 6b 67 72  | get some backgr|
00011d10  6f 75 6e 64 0d 86 4c 31  20 4c 44 4d 49 41 20 20  |ound..L1 LDMIA  |
00011d20  20 52 31 21 2c 7b 52 38  2d 52 31 30 7d 20 20 20  | R1!,{R8-R10}   |
00011d30  20 20 20 20 20 20 3b 20  67 65 74 20 73 6f 6d 65  |      ; get some|
00011d40  20 6d 61 73 6b 0d 86 56  35 20 80 20 20 20 20 20  | mask..V5 .     |
00011d50  52 33 2c 52 33 2c 52 38  20 20 20 20 20 20 20 20  |R3,R3,R8        |
00011d60  20 20 20 20 20 3b 20 6d  61 73 6b 20 6f 66 66 20  |     ; mask off |
00011d70  62 61 63 6b 67 72 6f 75  6e 64 0d 86 60 13 20 80  |background..`. .|
00011d80  20 20 20 20 20 52 34 2c  52 34 2c 52 39 0d 86 6a  |     R4,R4,R9..j|
00011d90  14 20 80 20 20 20 20 20  52 35 2c 52 35 2c 52 31  |. .     R5,R5,R1|
00011da0  30 0d 86 74 33 20 4c 44  4d 49 41 20 20 20 52 30  |0..t3 LDMIA   R0|
00011db0  21 2c 7b 52 38 2d 52 31  30 7d 20 20 20 20 20 20  |!,{R8-R10}      |
00011dc0  20 20 20 3b 20 67 65 74  20 73 6f 6d 65 20 73 70  |   ; get some sp|
00011dd0  72 69 74 65 0d 86 7e 3f  20 84 52 20 20 20 20 20  |rite..~? .R     |
00011de0  52 33 2c 52 33 2c 52 38  20 20 20 20 20 20 20 20  |R3,R3,R8        |
00011df0  20 20 20 20 20 3b 20 6d  65 72 67 65 20 73 70 72  |     ; merge spr|
00011e00  69 74 65 20 77 69 74 68  20 62 61 63 6b 67 72 6f  |ite with backgro|
00011e10  75 6e 64 0d 86 88 14 20  84 52 20 20 20 20 20 52  |und.... .R     R|
00011e20  34 2c 52 34 2c 52 39 0d  86 92 15 20 84 52 20 20  |4,R4,R9.... .R  |
00011e30  20 20 20 52 35 2c 52 35  2c 52 31 30 0d 86 9c 37  |   R5,R5,R10...7|
00011e40  20 53 54 4d 49 41 20 20  20 52 32 2c 7b 52 33 2d  | STMIA   R2,{R3-|
00011e50  52 35 7d 20 20 20 20 20  20 20 20 20 20 20 3b 20  |R5}           ; |
00011e60  73 74 6f 72 65 20 6d 61  73 6b 65 64 20 73 70 72  |store masked spr|
00011e70  69 74 65 0d 86 a6 06 20  3a 0d 86 b0 1c 20 53 55  |ite.... :.... SU|
00011e80  42 20 20 20 20 20 52 32  2c 52 32 2c 20 23 79 5f  |B     R2,R2, #y_|
00011e90  73 68 69 66 74 0d 86 ba  06 20 3a 0d 86 c4 06 20  |shift.... :.... |
00011ea0  5d 0d 86 ce 06 20 ed 0d  86 d8 0f 20 5b 4f 50 54  |].... ..... [OPT|
00011eb0  20 70 61 73 73 25 0d 86  e2 06 20 3a 0d 86 ec 1e  | pass%.... :....|
00011ec0  20 4c 44 52 20 20 20 20  20 52 33 2c 20 73 31 32  | LDR     R3, s12|
00011ed0  36 34 5f 63 6f 75 6e 74  65 72 0d 86 f6 16 20 41  |64_counter.... A|
00011ee0  44 44 20 20 20 20 20 52  33 2c 52 33 2c 20 23 31  |DD     R3,R3, #1|
00011ef0  0d 87 00 1e 20 53 54 52  20 20 20 20 20 52 33 2c  |.... STR     R3,|
00011f00  20 73 31 32 36 34 5f 63  6f 75 6e 74 65 72 0d 87  | s1264_counter..|
00011f10  0a 13 20 43 4d 50 20 20  20 20 20 52 33 2c 20 23  |.. CMP     R3, #|
00011f20  38 0d 87 14 1e 20 42 4c  45 20 20 20 20 20 73 31  |8.... BLE     s1|
00011f30  32 36 34 5f 73 70 72 69  74 65 5f 6c 6f 6f 70 0d  |264_sprite_loop.|
00011f40  87 1e 06 20 3a 0d 87 28  1d 20 4c 44 4d 46 44 20  |... :..(. LDMFD |
00011f50  20 20 52 31 33 21 2c 7b  52 30 2d 52 31 32 2c 50  |  R13!,{R0-R12,P|
00011f60  43 7d 0d 87 32 06 20 3a  0d 87 3c 13 20 2e 73 31  |C}..2. :..<. .s1|
00011f70  32 36 34 5f 63 6f 75 6e  74 65 72 0d 87 46 0e 20  |264_counter..F. |
00011f80  45 51 55 44 20 20 20 20  30 0d 87 50 06 20 3a 0d  |EQUD    0..P. :.|
00011f90  87 5a 12 20 2e 61 64 72  5f 73 70 72 69 74 65 73  |.Z. .adr_sprites|
00011fa0  33 0d 87 64 37 20 45 51  55 44 20 20 20 20 73 70  |3..d7 EQUD    sp|
00011fb0  72 69 74 65 73 33 25 20  20 20 20 20 20 20 20 20  |rites3%         |
00011fc0  20 20 20 3b 20 61 64 64  72 65 73 73 20 6f 66 20  |   ; address of |
00011fd0  73 70 72 69 74 65 73 31  0d 87 6e 0f 20 2e 73 70  |sprites1..n. .sp|
00011fe0  72 5f 73 69 7a 65 33 0d  87 78 41 20 45 51 55 44  |r_size3..xA EQUD|
00011ff0  20 20 20 20 38 2f 38 2a  31 32 2a 36 34 2a 32 20  |    8/8*12*64*2 |
00012000  20 20 20 20 20 20 20 20  20 3b 20 6c 65 6e 67 74  |         ; lengt|
00012010  68 20 6f 66 20 6f 6e 65  20 73 70 72 69 74 65 31  |h of one sprite1|
00012020  20 2b 20 6d 61 73 6b 31  0d 87 82 1c 20 2e 73 70  | + mask1.... .sp|
00012030  72 69 74 65 5f 61 64 72  5f 73 63 72 65 65 6e 73  |rite_adr_screens|
00012040  74 6f 72 65 0d 87 8c 18  20 45 51 55 44 20 20 20  |tore.... EQUD   |
00012050  20 73 63 72 65 65 6e 73  74 6f 72 65 0d 87 96 06  | screenstore....|
00012060  20 3a 0d 87 a0 06 20 3a  0d 87 aa 06 20 3a 0d 87  | :.... :.... :..|
00012070  b4 16 20 2e 70 6c 6f 74  5f 73 70 72 69 74 65 5f  |.. .plot_sprite_|
00012080  32 30 31 36 0d 87 be 06  20 3a 0d 87 c8 1e 20 53  |2016.... :.... S|
00012090  54 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 30 2d  |TMFD   R13!,{R0-|
000120a0  52 31 32 2c 52 31 34 7d  0d 87 d2 06 20 3a 0d 87  |R12,R14}.... :..|
000120b0  dc 31 20 3a 20 20 20 20  20 20 20 20 20 20 20 20  |.1 :            |
000120c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000120d0  3b 20 52 30 20 73 70 72  69 74 65 20 6e 6f 2e 0d  |; R0 sprite no..|
000120e0  87 e6 2e 20 3a 20 20 20  20 20 20 20 20 20 20 20  |... :           |
000120f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00012100  20 3b 20 52 31 20 78 2d  63 6f 6f 72 64 0d 87 f0  | ; R1 x-coord...|
00012110  2e 20 3a 20 20 20 20 20  20 20 20 20 20 20 20 20  |. :             |
00012120  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |               ;|
00012130  20 52 32 20 79 2d 63 6f  6f 72 64 0d 87 fa 06 20  | R2 y-coord.... |
00012140  3a 0d 88 04 18 20 52 53  42 20 20 20 20 20 52 32  |:.... RSB     R2|
00012150  2c 52 32 2c 20 23 32 35  36 0d 88 0e 06 20 3a 0d  |,R2, #256.... :.|
00012160  88 18 13 20 43 4d 50 20  20 20 20 20 52 31 2c 20  |... CMP     R1, |
00012170  23 30 0d 88 22 1c 20 42  4c 45 20 20 20 20 20 70  |#0..". BLE     p|
00012180  73 6d 5f 6e 6f 5f 70 6c  6f 74 32 30 31 36 0d 88  |sm_no_plot2016..|
00012190  2c 14 20 43 4d 50 20 20  20 20 20 52 32 2c 20 23  |,. CMP     R2, #|
000121a0  31 36 0d 88 36 1c 20 42  4c 45 20 20 20 20 20 70  |16..6. BLE     p|
000121b0  73 6d 5f 6e 6f 5f 70 6c  6f 74 32 30 31 36 0d 88  |sm_no_plot2016..|
000121c0  40 18 20 43 4d 50 20 20  20 20 20 52 31 2c 20 23  |@. CMP     R1, #|
000121d0  33 32 30 2d 31 36 0d 88  4a 1c 20 42 47 45 20 20  |320-16..J. BGE  |
000121e0  20 20 20 70 73 6d 5f 6e  6f 5f 70 6c 6f 74 32 30  |   psm_no_plot20|
000121f0  31 36 0d 88 54 15 20 43  4d 50 20 20 20 20 20 52  |16..T. CMP     R|
00012200  32 2c 20 23 32 35 36 0d  88 5e 1c 20 42 47 45 20  |2, #256..^. BGE |
00012210  20 20 20 20 70 73 6d 5f  6e 6f 5f 70 6c 6f 74 32  |    psm_no_plot2|
00012220  30 31 36 0d 88 68 19 20  42 20 20 20 20 20 20 20  |016..h. B       |
00012230  70 73 6d 5f 70 6c 6f 74  32 30 31 36 0d 88 72 15  |psm_plot2016..r.|
00012240  20 2e 70 73 6d 5f 6e 6f  5f 70 6c 6f 74 32 30 31  | .psm_no_plot201|
00012250  36 0d 88 7c 1d 20 4c 44  4d 46 44 20 20 20 52 31  |6..|. LDMFD   R1|
00012260  33 21 2c 7b 52 30 2d 52  31 32 2c 50 43 7d 0d 88  |3!,{R0-R12,PC}..|
00012270  86 12 20 2e 70 73 6d 5f  70 6c 6f 74 32 30 31 36  |.. .psm_plot2016|
00012280  0d 88 90 06 20 3a 0d 88  9a 34 20 80 20 20 20 20  |.... :...4 .    |
00012290  20 52 33 2c 52 31 2c 20  23 25 31 31 20 20 20 20  | R3,R1, #%11    |
000122a0  20 20 20 20 20 20 3b 20  63 61 6c 63 75 6c 61 74  |      ; calculat|
000122b0  65 20 78 20 6f 66 66 73  65 74 0d 88 a4 32 20 4d  |e x offset...2 M|
000122c0  4f 56 20 20 20 20 20 52  30 2c 52 30 2c 20 4c 53  |OV     R0,R0, LS|
000122d0  4c 20 23 32 20 20 20 20  20 20 20 20 3b 20 72 65  |L #2        ; re|
000122e0  61 6c 69 73 65 20 73 70  72 69 74 65 0d 88 ae 2e  |alise sprite....|
000122f0  20 41 44 44 20 20 20 20  20 52 30 2c 52 30 2c 20  | ADD     R0,R0, |
00012300  52 33 20 20 20 20 20 20  20 20 20 20 20 20 3b 20  |R3            ; |
00012310  61 64 64 20 6f 66 66 73  65 74 0d 88 b8 33 20 42  |add offset...3 B|
00012320  49 43 20 20 20 20 20 52  31 2c 52 31 2c 20 23 25  |IC     R1,R1, #%|
00012330  31 31 20 20 20 20 20 20  20 20 20 20 3b 20 6d 61  |11          ; ma|
00012340  6b 65 20 78 20 64 69 76  20 62 79 20 34 0d 88 c2  |ke x div by 4...|
00012350  06 20 3a 0d 88 cc 35 20  4d 4f 56 20 20 20 20 20  |. :...5 MOV     |
00012360  52 37 2c 20 23 78 5f 73  68 69 66 74 20 20 20 20  |R7, #x_shift    |
00012370  20 20 20 20 20 3b 20 67  65 74 20 73 63 72 65 65  |     ; get scree|
00012380  6e 20 73 68 69 66 74 73  0d 88 d6 19 20 4d 4f 56  |n shifts.... MOV|
00012390  20 20 20 20 20 52 38 2c  20 23 79 5f 73 68 69 66  |     R8, #y_shif|
000123a0  74 0d 88 e0 40 20 4c 44  52 20 20 20 20 20 52 39  |t...@ LDR     R9|
000123b0  2c 20 73 70 72 69 74 65  5f 61 64 72 5f 73 63 72  |, sprite_adr_scr|
000123c0  65 65 6e 73 74 6f 72 65  3b 20 67 65 74 20 73 63  |eenstore; get sc|
000123d0  72 65 65 6e 73 74 6f 72  65 20 61 64 64 72 65 73  |reenstore addres|
000123e0  73 0d 88 ea 14 20 4c 44  52 20 20 20 20 20 52 39  |s.... LDR     R9|
000123f0  2c 5b 52 39 5d 0d 88 f4  06 20 3a 0d 88 fe 18 20  |,[R9].... :.... |
00012400  4d 4c 41 20 20 20 20 20  52 33 2c 52 37 2c 52 31  |MLA     R3,R7,R1|
00012410  2c 52 39 0d 89 08 18 20  4d 4c 41 20 20 20 20 20  |,R9.... MLA     |
00012420  52 32 2c 52 38 2c 52 32  2c 52 33 0d 89 12 06 20  |R2,R8,R2,R3.... |
00012430  3a 0d 89 1c 3d 20 4c 44  52 20 20 20 20 20 52 37  |:...= LDR     R7|
00012440  2c 20 61 64 72 5f 73 70  72 69 74 65 73 32 20 20  |, adr_sprites2  |
00012450  20 20 20 3b 20 67 65 74  20 73 74 61 72 74 20 61  |   ; get start a|
00012460  64 64 72 65 73 73 20 6f  66 20 64 61 74 61 0d 89  |ddress of data..|
00012470  26 43 20 4c 44 52 20 20  20 20 20 52 38 2c 20 73  |&C LDR     R8, s|
00012480  70 72 5f 73 69 7a 65 32  20 20 20 20 20 20 20 20  |pr_size2        |
00012490  3b 20 67 65 74 20 6c 65  6e 67 74 68 20 6f 66 20  |; get length of |
000124a0  64 61 74 61 20 66 6f 72  20 31 20 73 70 72 69 74  |data for 1 sprit|
000124b0  65 0d 89 30 3e 20 4d 4c  41 20 20 20 20 20 52 30  |e..0> MLA     R0|
000124c0  2c 52 38 2c 52 30 2c 52  37 20 20 20 20 20 20 20  |,R8,R0,R7       |
000124d0  20 20 20 3b 20 63 61 6c  63 75 6c 61 74 65 20 70  |   ; calculate p|
000124e0  6f 73 69 74 69 6f 6e 20  6f 66 20 64 61 74 61 0d  |osition of data.|
000124f0  89 3a 3e 20 41 44 44 20  20 20 20 20 52 31 2c 52  |.:> ADD     R1,R|
00012500  30 2c 52 38 2c 20 4c 53  52 20 23 31 20 20 20 20  |0,R8, LSR #1    |
00012510  20 3b 20 63 61 6c 63 75  6c 61 74 65 20 70 6f 73  | ; calculate pos|
00012520  69 74 69 6f 6e 20 6f 66  20 6d 61 73 6b 0d 89 44  |ition of mask..D|
00012530  06 20 3a 0d 89 4e 13 20  4d 4f 56 20 20 20 20 20  |. :..N. MOV     |
00012540  52 33 2c 20 23 31 0d 89  58 1e 20 53 54 52 20 20  |R3, #1..X. STR  |
00012550  20 20 20 52 33 2c 20 73  32 30 31 36 5f 63 6f 75  |   R3, s2016_cou|
00012560  6e 74 65 72 0d 89 62 06  20 3a 0d 89 6c 17 20 2e  |nter..b. :..l. .|
00012570  73 32 30 31 36 5f 73 70  72 69 74 65 5f 6c 6f 6f  |s2016_sprite_loo|
00012580  70 0d 89 76 06 20 3a 0d  89 80 06 20 5d 0d 89 8a  |p..v. :.... ]...|
00012590  0f 20 e3 20 61 25 3d 31  20 b8 20 34 0d 89 94 0f  |. . a%=1 . 4....|
000125a0  20 5b 4f 50 54 20 70 61  73 73 25 0d 89 9e 06 20  | [OPT pass%.... |
000125b0  3a 0d 89 a8 37 20 4c 44  4d 49 41 20 20 20 52 32  |:...7 LDMIA   R2|
000125c0  2c 7b 52 33 2d 52 37 7d  20 20 20 20 20 20 20 20  |,{R3-R7}        |
000125d0  20 20 20 3b 20 67 65 74  20 73 6f 6d 65 20 62 61  |   ; get some ba|
000125e0  63 6b 67 72 6f 75 6e 64  0d 89 b2 31 20 4c 44 4d  |ckground...1 LDM|
000125f0  49 41 20 20 20 52 31 21  2c 7b 52 38 2d 52 31 32  |IA   R1!,{R8-R12|
00012600  7d 20 20 20 20 20 20 20  20 20 3b 20 67 65 74 20  |}         ; get |
00012610  73 6f 6d 65 20 6d 61 73  6b 0d 89 bc 35 20 80 20  |some mask...5 . |
00012620  20 20 20 20 52 33 2c 52  33 2c 52 38 20 20 20 20  |    R3,R3,R8    |
00012630  20 20 20 20 20 20 20 20  20 3b 20 6d 61 73 6b 20  |         ; mask |
00012640  6f 66 66 20 62 61 63 6b  67 72 6f 75 6e 64 0d 89  |off background..|
00012650  c6 13 20 80 20 20 20 20  20 52 34 2c 52 34 2c 52  |.. .     R4,R4,R|
00012660  39 0d 89 d0 14 20 80 20  20 20 20 20 52 35 2c 52  |9.... .     R5,R|
00012670  35 2c 52 31 30 0d 89 da  14 20 80 20 20 20 20 20  |5,R10.... .     |
00012680  52 36 2c 52 36 2c 52 31  31 0d 89 e4 14 20 80 20  |R6,R6,R11.... . |
00012690  20 20 20 20 52 37 2c 52  37 2c 52 31 32 0d 89 ee  |    R7,R7,R12...|
000126a0  33 20 4c 44 4d 49 41 20  20 20 52 30 21 2c 7b 52  |3 LDMIA   R0!,{R|
000126b0  38 2d 52 31 32 7d 20 20  20 20 20 20 20 20 20 3b  |8-R12}         ;|
000126c0  20 67 65 74 20 73 6f 6d  65 20 73 70 72 69 74 65  | get some sprite|
000126d0  0d 89 f8 3f 20 84 52 20  20 20 20 20 52 33 2c 52  |...? .R     R3,R|
000126e0  33 2c 52 38 20 20 20 20  20 20 20 20 20 20 20 20  |3,R8            |
000126f0  20 3b 20 6d 65 72 67 65  20 73 70 72 69 74 65 20  | ; merge sprite |
00012700  77 69 74 68 20 62 61 63  6b 67 72 6f 75 6e 64 0d  |with background.|
00012710  8a 02 14 20 84 52 20 20  20 20 20 52 34 2c 52 34  |... .R     R4,R4|
00012720  2c 52 39 0d 8a 0c 15 20  84 52 20 20 20 20 20 52  |,R9.... .R     R|
00012730  35 2c 52 35 2c 52 31 30  0d 8a 16 15 20 84 52 20  |5,R5,R10.... .R |
00012740  20 20 20 20 52 36 2c 52  36 2c 52 31 31 0d 8a 20  |    R6,R6,R11.. |
00012750  15 20 84 52 20 20 20 20  20 52 37 2c 52 37 2c 52  |. .R     R7,R7,R|
00012760  31 32 0d 8a 2a 37 20 53  54 4d 49 41 20 20 20 52  |12..*7 STMIA   R|
00012770  32 2c 7b 52 33 2d 52 37  7d 20 20 20 20 20 20 20  |2,{R3-R7}       |
00012780  20 20 20 20 3b 20 73 74  6f 72 65 20 6d 61 73 6b  |    ; store mask|
00012790  65 64 20 73 70 72 69 74  65 0d 8a 34 06 20 3a 0d  |ed sprite..4. :.|
000127a0  8a 3e 1c 20 53 55 42 20  20 20 20 20 52 32 2c 52  |.>. SUB     R2,R|
000127b0  32 2c 20 23 79 5f 73 68  69 66 74 0d 8a 48 06 20  |2, #y_shift..H. |
000127c0  3a 0d 8a 52 06 20 5d 0d  8a 5c 06 20 ed 0d 8a 66  |:..R. ]..\. ...f|
000127d0  0f 20 5b 4f 50 54 20 70  61 73 73 25 0d 8a 70 06  |. [OPT pass%..p.|
000127e0  20 3a 0d 8a 7a 1e 20 4c  44 52 20 20 20 20 20 52  | :..z. LDR     R|
000127f0  33 2c 20 73 32 30 31 36  5f 63 6f 75 6e 74 65 72  |3, s2016_counter|
00012800  0d 8a 84 16 20 41 44 44  20 20 20 20 20 52 33 2c  |.... ADD     R3,|
00012810  52 33 2c 20 23 31 0d 8a  8e 1e 20 53 54 52 20 20  |R3, #1.... STR  |
00012820  20 20 20 52 33 2c 20 73  32 30 31 36 5f 63 6f 75  |   R3, s2016_cou|
00012830  6e 74 65 72 0d 8a 98 13  20 43 4d 50 20 20 20 20  |nter.... CMP    |
00012840  20 52 33 2c 20 23 34 0d  8a a2 1e 20 42 4c 45 20  | R3, #4.... BLE |
00012850  20 20 20 20 73 32 30 31  36 5f 73 70 72 69 74 65  |    s2016_sprite|
00012860  5f 6c 6f 6f 70 0d 8a ac  06 20 3a 0d 8a b6 1d 20  |_loop.... :.... |
00012870  4c 44 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 30  |LDMFD   R13!,{R0|
00012880  2d 52 31 32 2c 50 43 7d  0d 8a c0 06 20 3a 0d 8a  |-R12,PC}.... :..|
00012890  ca 13 20 2e 73 32 30 31  36 5f 63 6f 75 6e 74 65  |.. .s2016_counte|
000128a0  72 0d 8a d4 0e 20 45 51  55 44 20 20 20 20 30 0d  |r.... EQUD    0.|
000128b0  8a de 06 20 3a 0d 8a e8  12 20 2e 61 64 72 5f 73  |... :.... .adr_s|
000128c0  70 72 69 74 65 73 32 0d  8a f2 37 20 45 51 55 44  |prites2...7 EQUD|
000128d0  20 20 20 20 73 70 72 69  74 65 73 32 25 20 20 20  |    sprites2%   |
000128e0  20 20 20 20 20 20 20 20  20 3b 20 61 64 64 72 65  |         ; addre|
000128f0  73 73 20 6f 66 20 73 70  72 69 74 65 73 32 0d 8a  |ss of sprites2..|
00012900  fc 0f 20 2e 73 70 72 5f  73 69 7a 65 32 0d 8b 06  |.. .spr_size2...|
00012910  41 20 45 51 55 44 20 20  20 20 38 2f 38 2a 31 36  |A EQUD    8/8*16|
00012920  2a 32 30 2a 32 20 20 20  20 20 20 20 20 20 20 3b  |*20*2          ;|
00012930  20 6c 65 6e 67 74 68 20  6f 66 20 6f 6e 65 20 73  | length of one s|
00012940  70 72 69 74 65 32 20 2b  20 6d 61 73 6b 32 0d 8b  |prite2 + mask2..|
00012950  10 06 20 3a 0d 8b 1a 06  20 3a 0d 8b 24 06 20 3a  |.. :.... :..$. :|
00012960  0d 8b 2e 16 20 2e 70 6c  6f 74 5f 73 70 72 69 74  |.... .plot_sprit|
00012970  65 5f 30 38 30 34 0d 8b  38 06 20 3a 0d 8b 42 1e  |e_0804..8. :..B.|
00012980  20 53 54 4d 46 44 20 20  20 52 31 33 21 2c 7b 52  | STMFD   R13!,{R|
00012990  30 2d 52 31 32 2c 52 31  34 7d 0d 8b 4c 06 20 3a  |0-R12,R14}..L. :|
000129a0  0d 8b 56 31 20 3a 20 20  20 20 20 20 20 20 20 20  |..V1 :          |
000129b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000129c0  20 20 3b 20 52 30 20 73  70 72 69 74 65 20 6e 6f  |  ; R0 sprite no|
000129d0  2e 0d 8b 60 2e 20 3a 20  20 20 20 20 20 20 20 20  |...`. :         |
000129e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000129f0  20 20 20 3b 20 52 31 20  78 2d 63 6f 6f 72 64 0d  |   ; R1 x-coord.|
00012a00  8b 6a 2e 20 3a 20 20 20  20 20 20 20 20 20 20 20  |.j. :           |
00012a10  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00012a20  20 3b 20 52 32 20 79 2d  63 6f 6f 72 64 0d 8b 74  | ; R2 y-coord..t|
00012a30  06 20 3a 0d 8b 7e 18 20  52 53 42 20 20 20 20 20  |. :..~. RSB     |
00012a40  52 32 2c 52 32 2c 20 23  32 35 36 0d 8b 88 06 20  |R2,R2, #256.... |
00012a50  3a 0d 8b 92 13 20 43 4d  50 20 20 20 20 20 52 31  |:.... CMP     R1|
00012a60  2c 20 23 30 0d 8b 9c 1c  20 42 4c 45 20 20 20 20  |, #0.... BLE    |
00012a70  20 70 73 6d 5f 6e 6f 5f  70 6c 6f 74 30 38 30 34  | psm_no_plot0804|
00012a80  0d 8b a6 13 20 43 4d 50  20 20 20 20 20 52 32 2c  |.... CMP     R2,|
00012a90  20 23 34 0d 8b b0 1c 20  42 4c 45 20 20 20 20 20  | #4.... BLE     |
00012aa0  70 73 6d 5f 6e 6f 5f 70  6c 6f 74 30 38 30 34 0d  |psm_no_plot0804.|
00012ab0  8b ba 17 20 43 4d 50 20  20 20 20 20 52 31 2c 20  |... CMP     R1, |
00012ac0  23 33 32 30 2d 34 0d 8b  c4 1c 20 42 47 45 20 20  |#320-4.... BGE  |
00012ad0  20 20 20 70 73 6d 5f 6e  6f 5f 70 6c 6f 74 30 38  |   psm_no_plot08|
00012ae0  30 34 0d 8b ce 15 20 43  4d 50 20 20 20 20 20 52  |04.... CMP     R|
00012af0  32 2c 20 23 32 35 36 0d  8b d8 1c 20 42 47 45 20  |2, #256.... BGE |
00012b00  20 20 20 20 70 73 6d 5f  6e 6f 5f 70 6c 6f 74 30  |    psm_no_plot0|
00012b10  38 30 34 0d 8b e2 19 20  42 20 20 20 20 20 20 20  |804.... B       |
00012b20  70 73 6d 5f 70 6c 6f 74  30 38 30 34 0d 8b ec 15  |psm_plot0804....|
00012b30  20 2e 70 73 6d 5f 6e 6f  5f 70 6c 6f 74 30 38 30  | .psm_no_plot080|
00012b40  34 0d 8b f6 1d 20 4c 44  4d 46 44 20 20 20 52 31  |4.... LDMFD   R1|
00012b50  33 21 2c 7b 52 30 2d 52  31 32 2c 50 43 7d 0d 8c  |3!,{R0-R12,PC}..|
00012b60  00 12 20 2e 70 73 6d 5f  70 6c 6f 74 30 38 30 34  |.. .psm_plot0804|
00012b70  0d 8c 0a 06 20 3a 0d 8c  14 34 20 80 20 20 20 20  |.... :...4 .    |
00012b80  20 52 33 2c 52 31 2c 20  23 25 31 31 20 20 20 20  | R3,R1, #%11    |
00012b90  20 20 20 20 20 20 3b 20  63 61 6c 63 75 6c 61 74  |      ; calculat|
00012ba0  65 20 78 20 6f 66 66 73  65 74 0d 8c 1e 32 20 4d  |e x offset...2 M|
00012bb0  4f 56 20 20 20 20 20 52  30 2c 52 30 2c 20 4c 53  |OV     R0,R0, LS|
00012bc0  4c 20 23 32 20 20 20 20  20 20 20 20 3b 20 72 65  |L #2        ; re|
00012bd0  61 6c 69 73 65 20 73 70  72 69 74 65 0d 8c 28 2e  |alise sprite..(.|
00012be0  20 41 44 44 20 20 20 20  20 52 30 2c 52 30 2c 20  | ADD     R0,R0, |
00012bf0  52 33 20 20 20 20 20 20  20 20 20 20 20 20 3b 20  |R3            ; |
00012c00  61 64 64 20 6f 66 66 73  65 74 0d 8c 32 33 20 42  |add offset..23 B|
00012c10  49 43 20 20 20 20 20 52  31 2c 52 31 2c 20 23 25  |IC     R1,R1, #%|
00012c20  31 31 20 20 20 20 20 20  20 20 20 20 3b 20 6d 61  |11          ; ma|
00012c30  6b 65 20 78 20 64 69 76  20 62 79 20 34 0d 8c 3c  |ke x div by 4..<|
00012c40  06 20 3a 0d 8c 46 35 20  4d 4f 56 20 20 20 20 20  |. :..F5 MOV     |
00012c50  52 37 2c 20 23 78 5f 73  68 69 66 74 20 20 20 20  |R7, #x_shift    |
00012c60  20 20 20 20 20 3b 20 67  65 74 20 73 63 72 65 65  |     ; get scree|
00012c70  6e 20 73 68 69 66 74 73  0d 8c 50 19 20 4d 4f 56  |n shifts..P. MOV|
00012c80  20 20 20 20 20 52 38 2c  20 23 79 5f 73 68 69 66  |     R8, #y_shif|
00012c90  74 0d 8c 5a 40 20 4c 44  52 20 20 20 20 20 52 39  |t..Z@ LDR     R9|
00012ca0  2c 20 73 70 72 69 74 65  5f 61 64 72 5f 73 63 72  |, sprite_adr_scr|
00012cb0  65 65 6e 73 74 6f 72 65  3b 20 67 65 74 20 73 63  |eenstore; get sc|
00012cc0  72 65 65 6e 73 74 6f 72  65 20 61 64 64 72 65 73  |reenstore addres|
00012cd0  73 0d 8c 64 14 20 4c 44  52 20 20 20 20 20 52 39  |s..d. LDR     R9|
00012ce0  2c 5b 52 39 5d 0d 8c 6e  06 20 3a 0d 8c 78 18 20  |,[R9]..n. :..x. |
00012cf0  4d 4c 41 20 20 20 20 20  52 33 2c 52 37 2c 52 31  |MLA     R3,R7,R1|
00012d00  2c 52 39 0d 8c 82 18 20  4d 4c 41 20 20 20 20 20  |,R9.... MLA     |
00012d10  52 32 2c 52 38 2c 52 32  2c 52 33 0d 8c 8c 06 20  |R2,R8,R2,R3.... |
00012d20  3a 0d 8c 96 3d 20 4c 44  52 20 20 20 20 20 52 37  |:...= LDR     R7|
00012d30  2c 20 61 64 72 5f 73 70  72 69 74 65 73 34 20 20  |, adr_sprites4  |
00012d40  20 20 20 3b 20 67 65 74  20 73 74 61 72 74 20 61  |   ; get start a|
00012d50  64 64 72 65 73 73 20 6f  66 20 64 61 74 61 0d 8c  |ddress of data..|
00012d60  a0 43 20 4c 44 52 20 20  20 20 20 52 38 2c 20 73  |.C LDR     R8, s|
00012d70  70 72 5f 73 69 7a 65 34  20 20 20 20 20 20 20 20  |pr_size4        |
00012d80  3b 20 67 65 74 20 6c 65  6e 67 74 68 20 6f 66 20  |; get length of |
00012d90  64 61 74 61 20 66 6f 72  20 31 20 73 70 72 69 74  |data for 1 sprit|
00012da0  65 0d 8c aa 3e 20 4d 4c  41 20 20 20 20 20 52 30  |e...> MLA     R0|
00012db0  2c 52 38 2c 52 30 2c 52  37 20 20 20 20 20 20 20  |,R8,R0,R7       |
00012dc0  20 20 20 3b 20 63 61 6c  63 75 6c 61 74 65 20 70  |   ; calculate p|
00012dd0  6f 73 69 74 69 6f 6e 20  6f 66 20 64 61 74 61 0d  |osition of data.|
00012de0  8c b4 3e 20 41 44 44 20  20 20 20 20 52 31 2c 52  |..> ADD     R1,R|
00012df0  30 2c 52 38 2c 20 4c 53  52 20 23 31 20 20 20 20  |0,R8, LSR #1    |
00012e00  20 3b 20 63 61 6c 63 75  6c 61 74 65 20 70 6f 73  | ; calculate pos|
00012e10  69 74 69 6f 6e 20 6f 66  20 6d 61 73 6b 0d 8c be  |ition of mask...|
00012e20  06 20 3a 0d 8c c8 13 3b  4d 4f 56 20 20 20 20 20  |. :....;MOV     |
00012e30  52 33 2c 20 23 31 0d 8c  d2 1e 3b 53 54 52 20 20  |R3, #1....;STR  |
00012e40  20 20 20 52 33 2c 20 73  30 38 30 34 5f 63 6f 75  |   R3, s0804_cou|
00012e50  6e 74 65 72 0d 8c dc 06  20 3a 0d 8c e6 17 20 2e  |nter.... :.... .|
00012e60  73 30 38 30 34 5f 73 70  72 69 74 65 5f 6c 6f 6f  |s0804_sprite_loo|
00012e70  70 0d 8c f0 06 20 3a 0d  8c fa 06 20 5d 0d 8d 04  |p.... :.... ]...|
00012e80  0f 20 e3 20 61 25 3d 31  20 b8 20 34 0d 8d 0e 0f  |. . a%=1 . 4....|
00012e90  20 5b 4f 50 54 20 70 61  73 73 25 0d 8d 18 06 20  | [OPT pass%.... |
00012ea0  3a 0d 8d 22 3a 20 4c 44  4d 49 41 20 20 20 52 32  |:..": LDMIA   R2|
00012eb0  2c 7b 52 33 2c 52 34 7d  20 20 20 20 20 20 20 20  |,{R3,R4}        |
00012ec0  20 20 20 20 20 20 3b 20  67 65 74 20 73 6f 6d 65  |      ; get some|
00012ed0  20 62 61 63 6b 67 72 6f  75 6e 64 0d 8d 2c 34 20  | background..,4 |
00012ee0  4c 44 4d 49 41 20 20 20  52 31 21 2c 7b 52 38 2c  |LDMIA   R1!,{R8,|
00012ef0  52 39 7d 20 20 20 20 20  20 20 20 20 20 20 20 20  |R9}             |
00012f00  3b 20 67 65 74 20 73 6f  6d 65 20 6d 61 73 6b 0d  |; get some mask.|
00012f10  8d 36 35 20 80 20 20 20  20 20 52 33 2c 52 33 2c  |.65 .     R3,R3,|
00012f20  52 38 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |R8             ;|
00012f30  20 6d 61 73 6b 20 6f 66  66 20 62 61 63 6b 67 72  | mask off backgr|
00012f40  6f 75 6e 64 0d 8d 40 13  20 80 20 20 20 20 20 52  |ound..@. .     R|
00012f50  34 2c 52 34 2c 52 39 0d  8d 4a 32 20 4c 44 4d 49  |4,R4,R9..J2 LDMI|
00012f60  41 20 20 20 52 30 21 2c  7b 52 38 2c 52 39 7d 20  |A   R0!,{R8,R9} |
00012f70  20 20 20 20 20 20 20 20  3b 20 67 65 74 20 73 6f  |        ; get so|
00012f80  6d 65 20 73 70 72 69 74  65 0d 8d 54 3f 20 84 52  |me sprite..T? .R|
00012f90  20 20 20 20 20 52 33 2c  52 33 2c 52 38 20 20 20  |     R3,R3,R8   |
00012fa0  20 20 20 20 20 20 20 20  20 20 3b 20 6d 65 72 67  |          ; merg|
00012fb0  65 20 73 70 72 69 74 65  20 77 69 74 68 20 62 61  |e sprite with ba|
00012fc0  63 6b 67 72 6f 75 6e 64  0d 8d 5e 14 20 84 52 20  |ckground..^. .R |
00012fd0  20 20 20 20 52 34 2c 52  34 2c 52 39 0d 8d 68 37  |    R4,R4,R9..h7|
00012fe0  20 53 54 4d 49 41 20 20  20 52 32 2c 7b 52 33 2c  | STMIA   R2,{R3,|
00012ff0  52 34 7d 20 20 20 20 20  20 20 20 20 20 20 3b 20  |R4}           ; |
00013000  73 74 6f 72 65 20 6d 61  73 6b 65 64 20 73 70 72  |store masked spr|
00013010  69 74 65 0d 8d 72 06 20  3a 0d 8d 7c 1c 20 53 55  |ite..r. :..|. SU|
00013020  42 20 20 20 20 20 52 32  2c 52 32 2c 20 23 79 5f  |B     R2,R2, #y_|
00013030  73 68 69 66 74 0d 8d 86  06 20 3a 0d 8d 90 06 20  |shift.... :.... |
00013040  5d 0d 8d 9a 06 20 ed 0d  8d a4 0f 20 5b 4f 50 54  |].... ..... [OPT|
00013050  20 70 61 73 73 25 0d 8d  ae 06 20 3a 0d 8d b8 1e  | pass%.... :....|
00013060  3b 4c 44 52 20 20 20 20  20 52 33 2c 20 73 30 38  |;LDR     R3, s08|
00013070  30 34 5f 63 6f 75 6e 74  65 72 0d 8d c2 16 3b 41  |04_counter....;A|
00013080  44 44 20 20 20 20 20 52  33 2c 52 33 2c 20 23 31  |DD     R3,R3, #1|
00013090  0d 8d cc 1e 3b 53 54 52  20 20 20 20 20 52 33 2c  |....;STR     R3,|
000130a0  20 73 30 38 30 34 5f 63  6f 75 6e 74 65 72 0d 8d  | s0804_counter..|
000130b0  d6 13 3b 43 4d 50 20 20  20 20 20 52 33 2c 20 23  |..;CMP     R3, #|
000130c0  31 0d 8d e0 1e 3b 42 4c  45 20 20 20 20 20 73 30  |1....;BLE     s0|
000130d0  38 30 34 5f 73 70 72 69  74 65 5f 6c 6f 6f 70 0d  |804_sprite_loop.|
000130e0  8d ea 06 20 3a 0d 8d f4  1d 20 4c 44 4d 46 44 20  |... :.... LDMFD |
000130f0  20 20 52 31 33 21 2c 7b  52 30 2d 52 31 32 2c 50  |  R13!,{R0-R12,P|
00013100  43 7d 0d 8d fe 06 20 3a  0d 8e 08 13 20 2e 73 30  |C}.... :.... .s0|
00013110  38 30 34 5f 63 6f 75 6e  74 65 72 0d 8e 12 0e 20  |804_counter.... |
00013120  45 51 55 44 20 20 20 20  30 0d 8e 1c 06 20 3a 0d  |EQUD    0.... :.|
00013130  8e 26 12 20 2e 61 64 72  5f 73 70 72 69 74 65 73  |.&. .adr_sprites|
00013140  34 0d 8e 30 37 20 45 51  55 44 20 20 20 20 73 70  |4..07 EQUD    sp|
00013150  72 69 74 65 73 34 25 20  20 20 20 20 20 20 20 20  |rites4%         |
00013160  20 20 20 3b 20 61 64 64  72 65 73 73 20 6f 66 20  |   ; address of |
00013170  73 70 72 69 74 65 73 34  0d 8e 3a 0f 20 2e 73 70  |sprites4..:. .sp|
00013180  72 5f 73 69 7a 65 34 0d  8e 44 41 20 45 51 55 44  |r_size4..DA EQUD|
00013190  20 20 20 20 38 2f 38 2a  38 2a 34 2a 32 20 20 20  |    8/8*8*4*2   |
000131a0  20 20 20 20 20 20 20 20  20 3b 20 6c 65 6e 67 74  |         ; lengt|
000131b0  68 20 6f 66 20 6f 6e 65  20 73 70 72 69 74 65 34  |h of one sprite4|
000131c0  20 2b 20 6d 61 73 6b 34  0d 8e 4e 06 20 3a 0d 8e  | + mask4..N. :..|
000131d0  58 06 20 3a 0d 8e 62 06  20 3a 0d 8e 6c 16 20 2e  |X. :..b. :..l. .|
000131e0  70 6c 6f 74 5f 73 70 72  69 74 65 5f 31 32 30 38  |plot_sprite_1208|
000131f0  0d 8e 76 06 20 3a 0d 8e  80 1e 20 53 54 4d 46 44  |..v. :.... STMFD|
00013200  20 20 20 52 31 33 21 2c  7b 52 30 2d 52 31 32 2c  |   R13!,{R0-R12,|
00013210  52 31 34 7d 0d 8e 8a 06  20 3a 0d 8e 94 31 20 3a  |R14}.... :...1 :|
00013220  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00013230  20 20 20 20 20 20 20 20  20 20 20 20 3b 20 52 30  |            ; R0|
00013240  20 73 70 72 69 74 65 20  6e 6f 2e 0d 8e 9e 2e 20  | sprite no..... |
00013250  3a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |:               |
00013260  20 20 20 20 20 20 20 20  20 20 20 20 20 3b 20 52  |             ; R|
00013270  31 20 78 2d 63 6f 6f 72  64 0d 8e a8 2e 20 3a 20  |1 x-coord.... : |
00013280  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00013290  20 20 20 20 20 20 20 20  20 20 20 3b 20 52 32 20  |           ; R2 |
000132a0  79 2d 63 6f 6f 72 64 0d  8e b2 06 20 3a 0d 8e bc  |y-coord.... :...|
000132b0  18 20 52 53 42 20 20 20  20 20 52 32 2c 52 32 2c  |. RSB     R2,R2,|
000132c0  20 23 32 35 36 0d 8e c6  06 20 3a 0d 8e d0 13 20  | #256.... :.... |
000132d0  43 4d 50 20 20 20 20 20  52 31 2c 20 23 30 0d 8e  |CMP     R1, #0..|
000132e0  da 1c 20 42 4c 45 20 20  20 20 20 70 73 6d 5f 6e  |.. BLE     psm_n|
000132f0  6f 5f 70 6c 6f 74 31 32  30 38 0d 8e e4 13 20 43  |o_plot1208.... C|
00013300  4d 50 20 20 20 20 20 52  32 2c 20 23 38 0d 8e ee  |MP     R2, #8...|
00013310  1c 20 42 4c 45 20 20 20  20 20 70 73 6d 5f 6e 6f  |. BLE     psm_no|
00013320  5f 70 6c 6f 74 31 32 30  38 0d 8e f8 17 20 43 4d  |_plot1208.... CM|
00013330  50 20 20 20 20 20 52 31  2c 20 23 33 32 30 2d 38  |P     R1, #320-8|
00013340  0d 8f 02 1c 20 42 47 45  20 20 20 20 20 70 73 6d  |.... BGE     psm|
00013350  5f 6e 6f 5f 70 6c 6f 74  31 32 30 38 0d 8f 0c 15  |_no_plot1208....|
00013360  20 43 4d 50 20 20 20 20  20 52 32 2c 20 23 32 35  | CMP     R2, #25|
00013370  36 0d 8f 16 1c 20 42 47  45 20 20 20 20 20 70 73  |6.... BGE     ps|
00013380  6d 5f 6e 6f 5f 70 6c 6f  74 31 32 30 38 0d 8f 20  |m_no_plot1208.. |
00013390  19 20 42 20 20 20 20 20  20 20 70 73 6d 5f 70 6c  |. B       psm_pl|
000133a0  6f 74 31 32 30 38 0d 8f  2a 15 20 2e 70 73 6d 5f  |ot1208..*. .psm_|
000133b0  6e 6f 5f 70 6c 6f 74 31  32 30 38 0d 8f 34 1d 20  |no_plot1208..4. |
000133c0  4c 44 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 30  |LDMFD   R13!,{R0|
000133d0  2d 52 31 32 2c 50 43 7d  0d 8f 3e 12 20 2e 70 73  |-R12,PC}..>. .ps|
000133e0  6d 5f 70 6c 6f 74 31 32  30 38 0d 8f 48 06 20 3a  |m_plot1208..H. :|
000133f0  0d 8f 52 34 20 80 20 20  20 20 20 52 33 2c 52 31  |..R4 .     R3,R1|
00013400  2c 20 23 25 31 31 20 20  20 20 20 20 20 20 20 20  |, #%11          |
00013410  3b 20 63 61 6c 63 75 6c  61 74 65 20 78 20 6f 66  |; calculate x of|
00013420  66 73 65 74 0d 8f 5c 32  20 4d 4f 56 20 20 20 20  |fset..\2 MOV    |
00013430  20 52 30 2c 52 30 2c 20  4c 53 4c 20 23 32 20 20  | R0,R0, LSL #2  |
00013440  20 20 20 20 20 20 3b 20  72 65 61 6c 69 73 65 20  |      ; realise |
00013450  73 70 72 69 74 65 0d 8f  66 2e 20 41 44 44 20 20  |sprite..f. ADD  |
00013460  20 20 20 52 30 2c 52 30  2c 20 52 33 20 20 20 20  |   R0,R0, R3    |
00013470  20 20 20 20 20 20 20 20  3b 20 61 64 64 20 6f 66  |        ; add of|
00013480  66 73 65 74 0d 8f 70 33  20 42 49 43 20 20 20 20  |fset..p3 BIC    |
00013490  20 52 31 2c 52 31 2c 20  23 25 31 31 20 20 20 20  | R1,R1, #%11    |
000134a0  20 20 20 20 20 20 3b 20  6d 61 6b 65 20 78 20 64  |      ; make x d|
000134b0  69 76 20 62 79 20 34 0d  8f 7a 06 20 3a 0d 8f 84  |iv by 4..z. :...|
000134c0  35 20 4d 4f 56 20 20 20  20 20 52 37 2c 20 23 78  |5 MOV     R7, #x|
000134d0  5f 73 68 69 66 74 20 20  20 20 20 20 20 20 20 3b  |_shift         ;|
000134e0  20 67 65 74 20 73 63 72  65 65 6e 20 73 68 69 66  | get screen shif|
000134f0  74 73 0d 8f 8e 19 20 4d  4f 56 20 20 20 20 20 52  |ts.... MOV     R|
00013500  38 2c 20 23 79 5f 73 68  69 66 74 0d 8f 98 40 20  |8, #y_shift...@ |
00013510  4c 44 52 20 20 20 20 20  52 39 2c 20 73 70 72 69  |LDR     R9, spri|
00013520  74 65 5f 61 64 72 5f 73  63 72 65 65 6e 73 74 6f  |te_adr_screensto|
00013530  72 65 3b 20 67 65 74 20  73 63 72 65 65 6e 73 74  |re; get screenst|
00013540  6f 72 65 20 61 64 64 72  65 73 73 0d 8f a2 14 20  |ore address.... |
00013550  4c 44 52 20 20 20 20 20  52 39 2c 5b 52 39 5d 0d  |LDR     R9,[R9].|
00013560  8f ac 06 20 3a 0d 8f b6  18 20 4d 4c 41 20 20 20  |... :.... MLA   |
00013570  20 20 52 33 2c 52 37 2c  52 31 2c 52 39 0d 8f c0  |  R3,R7,R1,R9...|
00013580  18 20 4d 4c 41 20 20 20  20 20 52 32 2c 52 38 2c  |. MLA     R2,R8,|
00013590  52 32 2c 52 33 0d 8f ca  06 20 3a 0d 8f d4 3d 20  |R2,R3.... :...= |
000135a0  4c 44 52 20 20 20 20 20  52 37 2c 20 61 64 72 5f  |LDR     R7, adr_|
000135b0  73 70 72 69 74 65 73 35  20 20 20 20 20 3b 20 67  |sprites5     ; g|
000135c0  65 74 20 73 74 61 72 74  20 61 64 64 72 65 73 73  |et start address|
000135d0  20 6f 66 20 64 61 74 61  0d 8f de 43 20 4c 44 52  | of data...C LDR|
000135e0  20 20 20 20 20 52 38 2c  20 73 70 72 5f 73 69 7a  |     R8, spr_siz|
000135f0  65 35 20 20 20 20 20 20  20 20 3b 20 67 65 74 20  |e5        ; get |
00013600  6c 65 6e 67 74 68 20 6f  66 20 64 61 74 61 20 66  |length of data f|
00013610  6f 72 20 31 20 73 70 72  69 74 65 0d 8f e8 3e 20  |or 1 sprite...> |
00013620  4d 4c 41 20 20 20 20 20  52 30 2c 52 38 2c 52 30  |MLA     R0,R8,R0|
00013630  2c 52 37 20 20 20 20 20  20 20 20 20 20 3b 20 63  |,R7          ; c|
00013640  61 6c 63 75 6c 61 74 65  20 70 6f 73 69 74 69 6f  |alculate positio|
00013650  6e 20 6f 66 20 64 61 74  61 0d 8f f2 3e 20 41 44  |n of data...> AD|
00013660  44 20 20 20 20 20 52 31  2c 52 30 2c 52 38 2c 20  |D     R1,R0,R8, |
00013670  4c 53 52 20 23 31 20 20  20 20 20 3b 20 63 61 6c  |LSR #1     ; cal|
00013680  63 75 6c 61 74 65 20 70  6f 73 69 74 69 6f 6e 20  |culate position |
00013690  6f 66 20 6d 61 73 6b 0d  8f fc 06 20 3a 0d 90 06  |of mask.... :...|
000136a0  13 3b 4d 4f 56 20 20 20  20 20 52 33 2c 20 23 31  |.;MOV     R3, #1|
000136b0  0d 90 10 1e 3b 53 54 52  20 20 20 20 20 52 33 2c  |....;STR     R3,|
000136c0  20 73 31 32 30 38 5f 63  6f 75 6e 74 65 72 0d 90  | s1208_counter..|
000136d0  1a 06 20 3a 0d 90 24 17  20 2e 73 31 32 30 38 5f  |.. :..$. .s1208_|
000136e0  73 70 72 69 74 65 5f 6c  6f 6f 70 0d 90 2e 06 20  |sprite_loop.... |
000136f0  3a 0d 90 38 06 20 5d 0d  90 42 0f 20 e3 20 61 25  |:..8. ]..B. . a%|
00013700  3d 31 20 b8 20 38 0d 90  4c 0f 20 5b 4f 50 54 20  |=1 . 8..L. [OPT |
00013710  70 61 73 73 25 0d 90 56  06 20 3a 0d 90 60 37 20  |pass%..V. :..`7 |
00013720  4c 44 4d 49 41 20 20 20  52 32 2c 7b 52 33 2c 52  |LDMIA   R2,{R3,R|
00013730  34 2c 52 35 7d 20 20 20  20 20 20 20 20 3b 20 67  |4,R5}        ; g|
00013740  65 74 20 73 6f 6d 65 20  62 61 63 6b 67 72 6f 75  |et some backgrou|
00013750  6e 64 0d 90 6a 31 20 4c  44 4d 49 41 20 20 20 52  |nd..j1 LDMIA   R|
00013760  31 21 2c 7b 52 38 2c 52  39 2c 52 31 30 7d 20 20  |1!,{R8,R9,R10}  |
00013770  20 20 20 20 3b 20 67 65  74 20 73 6f 6d 65 20 6d  |    ; get some m|
00013780  61 73 6b 0d 90 74 35 20  80 20 20 20 20 20 52 33  |ask..t5 .     R3|
00013790  2c 52 33 2c 52 38 20 20  20 20 20 20 20 20 20 20  |,R3,R8          |
000137a0  20 20 20 3b 20 6d 61 73  6b 20 6f 66 66 20 62 61  |   ; mask off ba|
000137b0  63 6b 67 72 6f 75 6e 64  0d 90 7e 13 20 80 20 20  |ckground..~. .  |
000137c0  20 20 20 52 34 2c 52 34  2c 52 39 0d 90 88 14 20  |   R4,R4,R9.... |
000137d0  80 20 20 20 20 20 52 35  2c 52 35 2c 52 31 30 0d  |.     R5,R5,R10.|
000137e0  90 92 33 20 4c 44 4d 49  41 20 20 20 52 30 21 2c  |..3 LDMIA   R0!,|
000137f0  7b 52 38 2c 52 39 2c 52  31 30 7d 20 20 20 20 20  |{R8,R9,R10}     |
00013800  20 3b 20 67 65 74 20 73  6f 6d 65 20 73 70 72 69  | ; get some spri|
00013810  74 65 0d 90 9c 3f 20 84  52 20 20 20 20 20 52 33  |te...? .R     R3|
00013820  2c 52 33 2c 52 38 20 20  20 20 20 20 20 20 20 20  |,R3,R8          |
00013830  20 20 20 3b 20 6d 65 72  67 65 20 73 70 72 69 74  |   ; merge sprit|
00013840  65 20 77 69 74 68 20 62  61 63 6b 67 72 6f 75 6e  |e with backgroun|
00013850  64 0d 90 a6 14 20 84 52  20 20 20 20 20 52 34 2c  |d.... .R     R4,|
00013860  52 34 2c 52 39 0d 90 b0  15 20 84 52 20 20 20 20  |R4,R9.... .R    |
00013870  20 52 35 2c 52 35 2c 52  31 30 0d 90 ba 37 20 53  | R5,R5,R10...7 S|
00013880  54 4d 49 41 20 20 20 52  32 2c 7b 52 33 2c 52 34  |TMIA   R2,{R3,R4|
00013890  2c 52 35 7d 20 20 20 20  20 20 20 20 3b 20 73 74  |,R5}        ; st|
000138a0  6f 72 65 20 6d 61 73 6b  65 64 20 73 70 72 69 74  |ore masked sprit|
000138b0  65 0d 90 c4 06 20 3a 0d  90 ce 1c 20 53 55 42 20  |e.... :.... SUB |
000138c0  20 20 20 20 52 32 2c 52  32 2c 20 23 79 5f 73 68  |    R2,R2, #y_sh|
000138d0  69 66 74 0d 90 d8 06 20  3a 0d 90 e2 06 20 5d 0d  |ift.... :.... ].|
000138e0  90 ec 06 20 ed 0d 90 f6  0f 20 5b 4f 50 54 20 70  |... ..... [OPT p|
000138f0  61 73 73 25 0d 91 00 06  20 3a 0d 91 0a 1e 3b 4c  |ass%.... :....;L|
00013900  44 52 20 20 20 20 20 52  33 2c 20 73 31 32 30 38  |DR     R3, s1208|
00013910  5f 63 6f 75 6e 74 65 72  0d 91 14 16 3b 41 44 44  |_counter....;ADD|
00013920  20 20 20 20 20 52 33 2c  52 33 2c 20 23 31 0d 91  |     R3,R3, #1..|
00013930  1e 1e 3b 53 54 52 20 20  20 20 20 52 33 2c 20 73  |..;STR     R3, s|
00013940  31 32 30 38 5f 63 6f 75  6e 74 65 72 0d 91 28 13  |1208_counter..(.|
00013950  3b 43 4d 50 20 20 20 20  20 52 33 2c 20 23 31 0d  |;CMP     R3, #1.|
00013960  91 32 1e 3b 42 4c 45 20  20 20 20 20 73 31 32 30  |.2.;BLE     s120|
00013970  38 5f 73 70 72 69 74 65  5f 6c 6f 6f 70 0d 91 3c  |8_sprite_loop..<|
00013980  06 20 3a 0d 91 46 1d 20  4c 44 4d 46 44 20 20 20  |. :..F. LDMFD   |
00013990  52 31 33 21 2c 7b 52 30  2d 52 31 32 2c 50 43 7d  |R13!,{R0-R12,PC}|
000139a0  0d 91 50 06 20 3a 0d 91  5a 13 20 2e 73 31 32 30  |..P. :..Z. .s120|
000139b0  38 5f 63 6f 75 6e 74 65  72 0d 91 64 0e 20 45 51  |8_counter..d. EQ|
000139c0  55 44 20 20 20 20 30 0d  91 6e 06 20 3a 0d 91 78  |UD    0..n. :..x|
000139d0  12 20 2e 61 64 72 5f 73  70 72 69 74 65 73 35 0d  |. .adr_sprites5.|
000139e0  91 82 37 20 45 51 55 44  20 20 20 20 73 70 72 69  |..7 EQUD    spri|
000139f0  74 65 73 35 25 20 20 20  20 20 20 20 20 20 20 20  |tes5%           |
00013a00  20 3b 20 61 64 64 72 65  73 73 20 6f 66 20 73 70  | ; address of sp|
00013a10  72 69 74 65 73 35 0d 91  8c 0f 20 2e 73 70 72 5f  |rites5.... .spr_|
00013a20  73 69 7a 65 35 0d 91 96  41 20 45 51 55 44 20 20  |size5...A EQUD  |
00013a30  20 20 38 2f 38 2a 31 32  2a 38 2a 32 20 20 20 20  |  8/8*12*8*2    |
00013a40  20 20 20 20 20 20 20 3b  20 6c 65 6e 67 74 68 20  |       ; length |
00013a50  6f 66 20 6f 6e 65 20 73  70 72 69 74 65 35 20 2b  |of one sprite5 +|
00013a60  20 6d 61 73 6b 35 0d 91  a0 06 20 3a 0d 91 aa 06  | mask5.... :....|
00013a70  20 3a 0d 91 b4 06 20 3a  0d 91 be 16 20 2e 70 6c  | :.... :.... .pl|
00013a80  6f 74 5f 73 70 72 69 74  65 5f 31 36 31 36 0d 91  |ot_sprite_1616..|
00013a90  c8 06 20 3a 0d 91 d2 1e  20 53 54 4d 46 44 20 20  |.. :.... STMFD  |
00013aa0  20 52 31 33 21 2c 7b 52  30 2d 52 31 32 2c 52 31  | R13!,{R0-R12,R1|
00013ab0  34 7d 0d 91 dc 06 20 3a  0d 91 e6 31 20 3a 20 20  |4}.... :...1 :  |
00013ac0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00013ad0  20 20 20 20 20 20 20 20  20 20 3b 20 52 30 20 73  |          ; R0 s|
00013ae0  70 72 69 74 65 20 6e 6f  2e 0d 91 f0 2e 20 3a 20  |prite no..... : |
00013af0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00013b00  20 20 20 20 20 20 20 20  20 20 20 3b 20 52 31 20  |           ; R1 |
00013b10  78 2d 63 6f 6f 72 64 0d  91 fa 2e 20 3a 20 20 20  |x-coord.... :   |
00013b20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00013b30  20 20 20 20 20 20 20 20  20 3b 20 52 32 20 79 2d  |         ; R2 y-|
00013b40  63 6f 6f 72 64 0d 92 04  06 20 3a 0d 92 0e 18 20  |coord.... :.... |
00013b50  52 53 42 20 20 20 20 20  52 32 2c 52 32 2c 20 23  |RSB     R2,R2, #|
00013b60  32 35 36 0d 92 18 06 20  3a 0d 92 22 13 20 43 4d  |256.... :..". CM|
00013b70  50 20 20 20 20 20 52 31  2c 20 23 30 0d 92 2c 1c  |P     R1, #0..,.|
00013b80  20 42 4c 45 20 20 20 20  20 70 73 6d 5f 6e 6f 5f  | BLE     psm_no_|
00013b90  70 6c 6f 74 31 36 31 36  0d 92 36 14 20 43 4d 50  |plot1616..6. CMP|
00013ba0  20 20 20 20 20 52 32 2c  20 23 31 36 0d 92 40 1c  |     R2, #16..@.|
00013bb0  20 42 4c 45 20 20 20 20  20 70 73 6d 5f 6e 6f 5f  | BLE     psm_no_|
00013bc0  70 6c 6f 74 31 36 31 36  0d 92 4a 18 20 43 4d 50  |plot1616..J. CMP|
00013bd0  20 20 20 20 20 52 31 2c  20 23 33 32 30 2d 31 36  |     R1, #320-16|
00013be0  0d 92 54 1c 20 42 47 45  20 20 20 20 20 70 73 6d  |..T. BGE     psm|
00013bf0  5f 6e 6f 5f 70 6c 6f 74  31 36 31 36 0d 92 5e 15  |_no_plot1616..^.|
00013c00  20 43 4d 50 20 20 20 20  20 52 32 2c 20 23 32 35  | CMP     R2, #25|
00013c10  36 0d 92 68 1c 20 42 47  45 20 20 20 20 20 70 73  |6..h. BGE     ps|
00013c20  6d 5f 6e 6f 5f 70 6c 6f  74 31 36 31 36 0d 92 72  |m_no_plot1616..r|
00013c30  19 20 42 20 20 20 20 20  20 20 70 73 6d 5f 70 6c  |. B       psm_pl|
00013c40  6f 74 31 36 31 36 0d 92  7c 15 20 2e 70 73 6d 5f  |ot1616..|. .psm_|
00013c50  6e 6f 5f 70 6c 6f 74 31  36 31 36 0d 92 86 1d 20  |no_plot1616.... |
00013c60  4c 44 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 30  |LDMFD   R13!,{R0|
00013c70  2d 52 31 32 2c 50 43 7d  0d 92 90 12 20 2e 70 73  |-R12,PC}.... .ps|
00013c80  6d 5f 70 6c 6f 74 31 36  31 36 0d 92 9a 06 20 3a  |m_plot1616.... :|
00013c90  0d 92 a4 34 20 80 20 20  20 20 20 52 33 2c 52 31  |...4 .     R3,R1|
00013ca0  2c 20 23 25 31 31 20 20  20 20 20 20 20 20 20 20  |, #%11          |
00013cb0  3b 20 63 61 6c 63 75 6c  61 74 65 20 78 20 6f 66  |; calculate x of|
00013cc0  66 73 65 74 0d 92 ae 32  20 4d 4f 56 20 20 20 20  |fset...2 MOV    |
00013cd0  20 52 30 2c 52 30 2c 20  4c 53 4c 20 23 32 20 20  | R0,R0, LSL #2  |
00013ce0  20 20 20 20 20 20 3b 20  72 65 61 6c 69 73 65 20  |      ; realise |
00013cf0  73 70 72 69 74 65 0d 92  b8 2e 20 41 44 44 20 20  |sprite.... ADD  |
00013d00  20 20 20 52 30 2c 52 30  2c 20 52 33 20 20 20 20  |   R0,R0, R3    |
00013d10  20 20 20 20 20 20 20 20  3b 20 61 64 64 20 6f 66  |        ; add of|
00013d20  66 73 65 74 0d 92 c2 33  20 42 49 43 20 20 20 20  |fset...3 BIC    |
00013d30  20 52 31 2c 52 31 2c 20  23 25 31 31 20 20 20 20  | R1,R1, #%11    |
00013d40  20 20 20 20 20 20 3b 20  6d 61 6b 65 20 78 20 64  |      ; make x d|
00013d50  69 76 20 62 79 20 34 0d  92 cc 06 20 3a 0d 92 d6  |iv by 4.... :...|
00013d60  35 20 4d 4f 56 20 20 20  20 20 52 37 2c 20 23 78  |5 MOV     R7, #x|
00013d70  5f 73 68 69 66 74 20 20  20 20 20 20 20 20 20 3b  |_shift         ;|
00013d80  20 67 65 74 20 73 63 72  65 65 6e 20 73 68 69 66  | get screen shif|
00013d90  74 73 0d 92 e0 19 20 4d  4f 56 20 20 20 20 20 52  |ts.... MOV     R|
00013da0  38 2c 20 23 79 5f 73 68  69 66 74 0d 92 ea 40 20  |8, #y_shift...@ |
00013db0  4c 44 52 20 20 20 20 20  52 39 2c 20 73 70 72 69  |LDR     R9, spri|
00013dc0  74 65 5f 61 64 72 5f 73  63 72 65 65 6e 73 74 6f  |te_adr_screensto|
00013dd0  72 65 3b 20 67 65 74 20  73 63 72 65 65 6e 73 74  |re; get screenst|
00013de0  6f 72 65 20 61 64 64 72  65 73 73 0d 92 f4 14 20  |ore address.... |
00013df0  4c 44 52 20 20 20 20 20  52 39 2c 5b 52 39 5d 0d  |LDR     R9,[R9].|
00013e00  92 fe 06 20 3a 0d 93 08  18 20 4d 4c 41 20 20 20  |... :.... MLA   |
00013e10  20 20 52 33 2c 52 37 2c  52 31 2c 52 39 0d 93 12  |  R3,R7,R1,R9...|
00013e20  18 20 4d 4c 41 20 20 20  20 20 52 32 2c 52 38 2c  |. MLA     R2,R8,|
00013e30  52 32 2c 52 33 0d 93 1c  06 20 3a 0d 93 26 3d 20  |R2,R3.... :..&= |
00013e40  4c 44 52 20 20 20 20 20  52 37 2c 20 61 64 72 5f  |LDR     R7, adr_|
00013e50  73 70 72 69 74 65 73 36  20 20 20 20 20 3b 20 67  |sprites6     ; g|
00013e60  65 74 20 73 74 61 72 74  20 61 64 64 72 65 73 73  |et start address|
00013e70  20 6f 66 20 64 61 74 61  0d 93 30 43 20 4c 44 52  | of data..0C LDR|
00013e80  20 20 20 20 20 52 38 2c  20 73 70 72 5f 73 69 7a  |     R8, spr_siz|
00013e90  65 36 20 20 20 20 20 20  20 20 3b 20 67 65 74 20  |e6        ; get |
00013ea0  6c 65 6e 67 74 68 20 6f  66 20 64 61 74 61 20 66  |length of data f|
00013eb0  6f 72 20 31 20 73 70 72  69 74 65 0d 93 3a 3e 20  |or 1 sprite..:> |
00013ec0  4d 4c 41 20 20 20 20 20  52 30 2c 52 38 2c 52 30  |MLA     R0,R8,R0|
00013ed0  2c 52 37 20 20 20 20 20  20 20 20 20 20 3b 20 63  |,R7          ; c|
00013ee0  61 6c 63 75 6c 61 74 65  20 70 6f 73 69 74 69 6f  |alculate positio|
00013ef0  6e 20 6f 66 20 64 61 74  61 0d 93 44 3e 20 41 44  |n of data..D> AD|
00013f00  44 20 20 20 20 20 52 31  2c 52 30 2c 52 38 2c 20  |D     R1,R0,R8, |
00013f10  4c 53 52 20 23 31 20 20  20 20 20 3b 20 63 61 6c  |LSR #1     ; cal|
00013f20  63 75 6c 61 74 65 20 70  6f 73 69 74 69 6f 6e 20  |culate position |
00013f30  6f 66 20 6d 61 73 6b 0d  93 4e 06 20 3a 0d 93 58  |of mask..N. :..X|
00013f40  13 20 4d 4f 56 20 20 20  20 20 52 33 2c 20 23 31  |. MOV     R3, #1|
00013f50  0d 93 62 1e 20 53 54 52  20 20 20 20 20 52 33 2c  |..b. STR     R3,|
00013f60  20 73 31 36 31 36 5f 63  6f 75 6e 74 65 72 0d 93  | s1616_counter..|
00013f70  6c 06 20 3a 0d 93 76 17  20 2e 73 31 36 31 36 5f  |l. :..v. .s1616_|
00013f80  73 70 72 69 74 65 5f 6c  6f 6f 70 0d 93 80 06 20  |sprite_loop.... |
00013f90  3a 0d 93 8a 06 20 5d 0d  93 94 0f 20 e3 20 61 25  |:.... ].... . a%|
00013fa0  3d 31 20 b8 20 34 0d 93  9e 0f 20 5b 4f 50 54 20  |=1 . 4.... [OPT |
00013fb0  70 61 73 73 25 0d 93 a8  06 20 3a 0d 93 b2 37 20  |pass%.... :...7 |
00013fc0  4c 44 4d 49 41 20 20 20  52 32 2c 7b 52 33 2d 52  |LDMIA   R2,{R3-R|
00013fd0  36 7d 20 20 20 20 20 20  20 20 20 20 20 3b 20 67  |6}           ; g|
00013fe0  65 74 20 73 6f 6d 65 20  62 61 63 6b 67 72 6f 75  |et some backgrou|
00013ff0  6e 64 0d 93 bc 31 20 4c  44 4d 49 41 20 20 20 52  |nd...1 LDMIA   R|
00014000  31 21 2c 7b 52 38 2d 52  31 31 7d 20 20 20 20 20  |1!,{R8-R11}     |
00014010  20 20 20 20 3b 20 67 65  74 20 73 6f 6d 65 20 6d  |    ; get some m|
00014020  61 73 6b 0d 93 c6 35 20  80 20 20 20 20 20 52 33  |ask...5 .     R3|
00014030  2c 52 33 2c 52 38 20 20  20 20 20 20 20 20 20 20  |,R3,R8          |
00014040  20 20 20 3b 20 6d 61 73  6b 20 6f 66 66 20 62 61  |   ; mask off ba|
00014050  63 6b 67 72 6f 75 6e 64  0d 93 d0 13 20 80 20 20  |ckground.... .  |
00014060  20 20 20 52 34 2c 52 34  2c 52 39 0d 93 da 14 20  |   R4,R4,R9.... |
00014070  80 20 20 20 20 20 52 35  2c 52 35 2c 52 31 30 0d  |.     R5,R5,R10.|
00014080  93 e4 14 20 80 20 20 20  20 20 52 35 2c 52 35 2c  |... .     R5,R5,|
00014090  52 31 31 0d 93 ee 33 20  4c 44 4d 49 41 20 20 20  |R11...3 LDMIA   |
000140a0  52 30 21 2c 7b 52 38 2d  52 31 31 7d 20 20 20 20  |R0!,{R8-R11}    |
000140b0  20 20 20 20 20 3b 20 67  65 74 20 73 6f 6d 65 20  |     ; get some |
000140c0  73 70 72 69 74 65 0d 93  f8 3f 20 84 52 20 20 20  |sprite...? .R   |
000140d0  20 20 52 33 2c 52 33 2c  52 38 20 20 20 20 20 20  |  R3,R3,R8      |
000140e0  20 20 20 20 20 20 20 3b  20 6d 65 72 67 65 20 73  |       ; merge s|
000140f0  70 72 69 74 65 20 77 69  74 68 20 62 61 63 6b 67  |prite with backg|
00014100  72 6f 75 6e 64 0d 94 02  14 20 84 52 20 20 20 20  |round.... .R    |
00014110  20 52 34 2c 52 34 2c 52  39 0d 94 0c 15 20 84 52  | R4,R4,R9.... .R|
00014120  20 20 20 20 20 52 35 2c  52 35 2c 52 31 30 0d 94  |     R5,R5,R10..|
00014130  16 15 20 84 52 20 20 20  20 20 52 36 2c 52 36 2c  |.. .R     R6,R6,|
00014140  52 31 31 0d 94 20 37 20  53 54 4d 49 41 20 20 20  |R11.. 7 STMIA   |
00014150  52 32 2c 7b 52 33 2d 52  36 7d 20 20 20 20 20 20  |R2,{R3-R6}      |
00014160  20 20 20 20 20 3b 20 73  74 6f 72 65 20 6d 61 73  |     ; store mas|
00014170  6b 65 64 20 73 70 72 69  74 65 0d 94 2a 06 20 3a  |ked sprite..*. :|
00014180  0d 94 34 1c 20 53 55 42  20 20 20 20 20 52 32 2c  |..4. SUB     R2,|
00014190  52 32 2c 20 23 79 5f 73  68 69 66 74 0d 94 3e 06  |R2, #y_shift..>.|
000141a0  20 3a 0d 94 48 06 20 5d  0d 94 52 06 20 ed 0d 94  | :..H. ]..R. ...|
000141b0  5c 0f 20 5b 4f 50 54 20  70 61 73 73 25 0d 94 66  |\. [OPT pass%..f|
000141c0  06 20 3a 0d 94 70 1e 20  4c 44 52 20 20 20 20 20  |. :..p. LDR     |
000141d0  52 33 2c 20 73 31 36 31  36 5f 63 6f 75 6e 74 65  |R3, s1616_counte|
000141e0  72 0d 94 7a 16 20 41 44  44 20 20 20 20 20 52 33  |r..z. ADD     R3|
000141f0  2c 52 33 2c 20 23 31 0d  94 84 1e 20 53 54 52 20  |,R3, #1.... STR |
00014200  20 20 20 20 52 33 2c 20  73 31 36 31 36 5f 63 6f  |    R3, s1616_co|
00014210  75 6e 74 65 72 0d 94 8e  13 20 43 4d 50 20 20 20  |unter.... CMP   |
00014220  20 20 52 33 2c 20 23 34  0d 94 98 1e 20 42 4c 45  |  R3, #4.... BLE|
00014230  20 20 20 20 20 73 31 36  31 36 5f 73 70 72 69 74  |     s1616_sprit|
00014240  65 5f 6c 6f 6f 70 0d 94  a2 06 20 3a 0d 94 ac 1d  |e_loop.... :....|
00014250  20 4c 44 4d 46 44 20 20  20 52 31 33 21 2c 7b 52  | LDMFD   R13!,{R|
00014260  30 2d 52 31 32 2c 50 43  7d 0d 94 b6 06 20 3a 0d  |0-R12,PC}.... :.|
00014270  94 c0 13 20 2e 73 31 36  31 36 5f 63 6f 75 6e 74  |... .s1616_count|
00014280  65 72 0d 94 ca 0e 20 45  51 55 44 20 20 20 20 30  |er.... EQUD    0|
00014290  0d 94 d4 06 20 3a 0d 94  de 12 20 2e 61 64 72 5f  |.... :.... .adr_|
000142a0  73 70 72 69 74 65 73 36  0d 94 e8 37 20 45 51 55  |sprites6...7 EQU|
000142b0  44 20 20 20 20 73 70 72  69 74 65 73 36 25 20 20  |D    sprites6%  |
000142c0  20 20 20 20 20 20 20 20  20 20 3b 20 61 64 64 72  |          ; addr|
000142d0  65 73 73 20 6f 66 20 73  70 72 69 74 65 73 36 0d  |ess of sprites6.|
000142e0  94 f2 0f 20 2e 73 70 72  5f 73 69 7a 65 36 0d 94  |... .spr_size6..|
000142f0  fc 41 20 45 51 55 44 20  20 20 20 38 2f 38 2a 31  |.A EQUD    8/8*1|
00014300  36 2a 31 36 2a 32 20 20  20 20 20 20 20 20 20 20  |6*16*2          |
00014310  3b 20 6c 65 6e 67 74 68  20 6f 66 20 6f 6e 65 20  |; length of one |
00014320  73 70 72 69 74 65 36 20  2b 20 6d 61 73 6b 36 0d  |sprite6 + mask6.|
00014330  95 06 06 20 3a 0d 95 10  06 20 3a 0d 95 1a 06 20  |... :.... :.... |
00014340  5d 0d 95 24 16 20 50 25  3d 66 69 6c 6c 5f 72 6f  |]..$. P%=fill_ro|
00014350  75 74 69 6e 65 73 25 0d  95 2e 1b 20 4c 25 3d 66  |utines%.... L%=f|
00014360  69 6c 6c 5f 72 6f 75 74  69 6e 65 73 25 2b 38 31  |ill_routines%+81|
00014370  39 31 0d 95 38 0f 20 5b  4f 50 54 20 70 61 73 73  |91..8. [OPT pass|
00014380  25 0d 95 42 06 20 3a 0d  95 4c 06 20 3a 0d 95 56  |%..B. :..L. :..V|
00014390  06 20 3a 0d 95 60 14 20  2e 66 69 6c 6c 5f 66 69  |. :..`. .fill_fi|
000143a0  6c 6c 5f 31 32 31 32 0d  95 6a 06 20 3a 0d 95 74  |ll_1212..j. :..t|
000143b0  1e 20 53 54 4d 46 44 20  20 20 52 31 33 21 2c 7b  |. STMFD   R13!,{|
000143c0  52 30 2d 52 31 32 2c 52  31 34 7d 0d 95 7e 06 20  |R0-R12,R14}..~. |
000143d0  3a 0d 95 88 2f 20 3a 20  20 20 20 20 20 20 20 20  |:.../ :         |
000143e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000143f0  20 20 20 3b 20 52 30 20  66 69 6c 6c 20 6e 6f 2e  |   ; R0 fill no.|
00014400  0d 95 92 2e 20 3a 20 20  20 20 20 20 20 20 20 20  |.... :          |
00014410  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00014420  20 20 3b 20 52 31 20 78  2d 63 6f 6f 72 64 0d 95  |  ; R1 x-coord..|
00014430  9c 2e 20 3a 20 20 20 20  20 20 20 20 20 20 20 20  |.. :            |
00014440  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00014450  3b 20 52 32 20 79 2d 63  6f 6f 72 64 0d 95 a6 06  |; R2 y-coord....|
00014460  20 3a 0d 95 b0 18 20 52  53 42 20 20 20 20 20 52  | :.... RSB     R|
00014470  32 2c 52 32 2c 20 23 32  35 36 0d 95 ba 06 20 3a  |2,R2, #256.... :|
00014480  0d 95 c4 13 20 43 4d 50  20 20 20 20 20 52 31 2c  |.... CMP     R1,|
00014490  20 23 30 0d 95 ce 1c 20  42 4c 45 20 20 20 20 20  | #0.... BLE     |
000144a0  70 73 6d 5f 6e 6f 5f 66  69 6c 6c 31 32 31 32 0d  |psm_no_fill1212.|
000144b0  95 d8 14 20 43 4d 50 20  20 20 20 20 52 32 2c 20  |... CMP     R2, |
000144c0  23 31 32 0d 95 e2 1c 20  42 4c 45 20 20 20 20 20  |#12.... BLE     |
000144d0  70 73 6d 5f 6e 6f 5f 66  69 6c 6c 31 32 31 32 0d  |psm_no_fill1212.|
000144e0  95 ec 17 20 43 4d 50 20  20 20 20 20 52 31 2c 20  |... CMP     R1, |
000144f0  23 33 32 30 2d 38 0d 95  f6 1c 20 42 47 45 20 20  |#320-8.... BGE  |
00014500  20 20 20 70 73 6d 5f 6e  6f 5f 66 69 6c 6c 31 32  |   psm_no_fill12|
00014510  31 32 0d 96 00 15 20 43  4d 50 20 20 20 20 20 52  |12.... CMP     R|
00014520  32 2c 20 23 32 35 36 0d  96 0a 1c 20 42 47 45 20  |2, #256.... BGE |
00014530  20 20 20 20 70 73 6d 5f  6e 6f 5f 66 69 6c 6c 31  |    psm_no_fill1|
00014540  32 31 32 0d 96 14 19 20  42 20 20 20 20 20 20 20  |212.... B       |
00014550  70 73 6d 5f 66 69 6c 6c  31 32 31 32 0d 96 1e 15  |psm_fill1212....|
00014560  20 2e 70 73 6d 5f 6e 6f  5f 66 69 6c 6c 31 32 31  | .psm_no_fill121|
00014570  32 0d 96 28 1d 20 4c 44  4d 46 44 20 20 20 52 31  |2..(. LDMFD   R1|
00014580  33 21 2c 7b 52 30 2d 52  31 32 2c 50 43 7d 0d 96  |3!,{R0-R12,PC}..|
00014590  32 12 20 2e 70 73 6d 5f  66 69 6c 6c 31 32 31 32  |2. .psm_fill1212|
000145a0  0d 96 3c 06 20 3a 0d 96  46 35 20 4d 4f 56 20 20  |..<. :..F5 MOV  |
000145b0  20 20 20 52 37 2c 20 23  78 5f 73 68 69 66 74 20  |   R7, #x_shift |
000145c0  20 20 20 20 20 20 20 20  3b 20 67 65 74 20 73 63  |        ; get sc|
000145d0  72 65 65 6e 20 73 68 69  66 74 73 0d 96 50 19 20  |reen shifts..P. |
000145e0  4d 4f 56 20 20 20 20 20  52 38 2c 20 23 79 5f 73  |MOV     R8, #y_s|
000145f0  68 69 66 74 0d 96 5a 06  20 3a 0d 96 64 3e 20 4c  |hift..Z. :..d> L|
00014600  44 52 20 20 20 20 20 52  39 2c 20 66 69 6c 6c 5f  |DR     R9, fill_|
00014610  61 64 72 5f 73 63 72 65  65 6e 73 74 6f 72 65 3b  |adr_screenstore;|
00014620  20 67 65 74 20 73 63 72  65 65 6e 73 74 6f 72 65  | get screenstore|
00014630  20 61 64 64 72 65 73 73  0d 96 6e 14 20 4c 44 52  | address..n. LDR|
00014640  20 20 20 20 20 52 39 2c  5b 52 39 5d 0d 96 78 18  |     R9,[R9]..x.|
00014650  20 4d 4c 41 20 20 20 20  20 52 33 2c 52 37 2c 52  | MLA     R3,R7,R|
00014660  31 2c 52 39 0d 96 82 18  20 4d 4c 41 20 20 20 20  |1,R9.... MLA    |
00014670  20 52 30 2c 52 38 2c 52  32 2c 52 33 0d 96 8c 06  | R0,R8,R2,R3....|
00014680  20 3a 0d 96 96 36 20 4c  44 52 20 20 20 20 20 52  | :...6 LDR     R|
00014690  39 2c 20 66 69 6c 6c 5f  73 63 72 65 65 6e 64 61  |9, fill_screenda|
000146a0  74 61 20 20 3b 20 67 65  74 20 73 63 72 65 65 6e  |ta  ; get screen|
000146b0  20 61 64 64 72 65 73 73  0d 96 a0 18 20 4d 4c 41  | address.... MLA|
000146c0  20 20 20 20 20 52 33 2c  52 37 2c 52 31 2c 52 39  |     R3,R7,R1,R9|
000146d0  0d 96 aa 18 20 4d 4c 41  20 20 20 20 20 52 31 2c  |.... MLA     R1,|
000146e0  52 38 2c 52 32 2c 52 33  0d 96 b4 06 20 3a 0d 96  |R8,R2,R3.... :..|
000146f0  be 13 20 4d 4f 56 20 20  20 20 20 52 33 2c 20 23  |.. MOV     R3, #|
00014700  31 0d 96 c8 1e 20 53 54  52 20 20 20 20 20 52 33  |1.... STR     R3|
00014710  2c 20 66 31 32 31 32 5f  63 6f 75 6e 74 65 72 0d  |, f1212_counter.|
00014720  96 d2 06 20 3a 0d 96 dc  15 20 2e 66 31 32 31 32  |... :.... .f1212|
00014730  5f 66 69 6c 6c 5f 6c 6f  6f 70 0d 96 e6 06 20 3a  |_fill_loop.... :|
00014740  0d 96 f0 06 20 5d 0d 96  fa 10 20 e3 20 61 25 3d  |.... ].... . a%=|
00014750  31 20 b8 20 31 32 0d 97  04 0f 20 5b 4f 50 54 20  |1 . 12.... [OPT |
00014760  70 61 73 73 25 0d 97 0e  06 20 3a 0d 97 18 37 20  |pass%.... :...7 |
00014770  4c 44 4d 49 41 20 20 20  52 31 2c 7b 52 33 2d 52  |LDMIA   R1,{R3-R|
00014780  35 7d 20 20 20 20 20 20  20 20 20 20 20 3b 20 67  |5}           ; g|
00014790  65 74 20 73 6f 6d 65 20  62 61 63 6b 67 72 6f 75  |et some backgrou|
000147a0  6e 64 0d 97 22 35 20 53  54 4d 49 41 20 20 20 52  |nd.."5 STMIA   R|
000147b0  30 2c 7b 52 33 2d 52 35  7d 20 20 20 20 20 20 20  |0,{R3-R5}       |
000147c0  20 20 20 20 3b 20 73 74  6f 72 65 20 6d 61 73 6b  |    ; store mask|
000147d0  65 64 20 66 69 6c 6c 0d  97 2c 06 20 3a 0d 97 36  |ed fill..,. :..6|
000147e0  1c 20 53 55 42 20 20 20  20 20 52 30 2c 52 30 2c  |. SUB     R0,R0,|
000147f0  20 23 79 5f 73 68 69 66  74 0d 97 40 1c 20 53 55  | #y_shift..@. SU|
00014800  42 20 20 20 20 20 52 31  2c 52 31 2c 20 23 79 5f  |B     R1,R1, #y_|
00014810  73 68 69 66 74 0d 97 4a  06 20 3a 0d 97 54 06 20  |shift..J. :..T. |
00014820  5d 0d 97 5e 06 20 ed 0d  97 68 0f 20 5b 4f 50 54  |]..^. ...h. [OPT|
00014830  20 70 61 73 73 25 0d 97  72 06 20 3a 0d 97 7c 1e  | pass%..r. :..|.|
00014840  20 4c 44 52 20 20 20 20  20 52 33 2c 20 66 31 32  | LDR     R3, f12|
00014850  31 32 5f 63 6f 75 6e 74  65 72 0d 97 86 16 20 41  |12_counter.... A|
00014860  44 44 20 20 20 20 20 52  33 2c 52 33 2c 20 23 31  |DD     R3,R3, #1|
00014870  0d 97 90 1e 20 53 54 52  20 20 20 20 20 52 33 2c  |.... STR     R3,|
00014880  20 66 31 32 31 32 5f 63  6f 75 6e 74 65 72 0d 97  | f1212_counter..|
00014890  9a 13 20 43 4d 50 20 20  20 20 20 52 33 2c 20 23  |.. CMP     R3, #|
000148a0  31 0d 97 a4 1c 20 42 4c  45 20 20 20 20 20 66 31  |1.... BLE     f1|
000148b0  32 31 32 5f 66 69 6c 6c  5f 6c 6f 6f 70 0d 97 ae  |212_fill_loop...|
000148c0  06 20 3a 0d 97 b8 1d 20  4c 44 4d 46 44 20 20 20  |. :.... LDMFD   |
000148d0  52 31 33 21 2c 7b 52 30  2d 52 31 32 2c 50 43 7d  |R13!,{R0-R12,PC}|
000148e0  0d 97 c2 06 20 3a 0d 97  cc 13 20 2e 66 31 32 31  |.... :.... .f121|
000148f0  32 5f 63 6f 75 6e 74 65  72 0d 97 d6 0e 20 45 51  |2_counter.... EQ|
00014900  55 44 20 20 20 20 30 0d  97 e0 06 20 3a 0d 97 ea  |UD    0.... :...|
00014910  06 20 3a 0d 97 f4 06 20  3a 0d 97 fe 14 20 2e 66  |. :.... :.... .f|
00014920  69 6c 6c 5f 66 69 6c 6c  5f 31 32 36 34 0d 98 08  |ill_fill_1264...|
00014930  06 20 3a 0d 98 12 1e 20  53 54 4d 46 44 20 20 20  |. :.... STMFD   |
00014940  52 31 33 21 2c 7b 52 30  2d 52 31 32 2c 52 31 34  |R13!,{R0-R12,R14|
00014950  7d 0d 98 1c 06 20 3a 0d  98 26 2f 20 3a 20 20 20  |}.... :..&/ :   |
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 30 20 66 69  |         ; R0 fi|
00014980  6c 6c 20 6e 6f 2e 0d 98  30 2e 20 3a 20 20 20 20  |ll no...0. :    |
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 20  3b 20 52 31 20 78 2d 63  |        ; R1 x-c|
000149b0  6f 6f 72 64 0d 98 3a 2e  20 3a 20 20 20 20 20 20  |oord..:. :      |
000149c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000149d0  20 20 20 20 20 20 3b 20  52 32 20 79 2d 63 6f 6f  |      ; R2 y-coo|
000149e0  72 64 0d 98 44 06 20 3a  0d 98 4e 18 20 52 53 42  |rd..D. :..N. RSB|
000149f0  20 20 20 20 20 52 32 2c  52 32 2c 20 23 32 35 36  |     R2,R2, #256|
00014a00  0d 98 58 06 20 3a 0d 98  62 13 20 43 4d 50 20 20  |..X. :..b. CMP  |
00014a10  20 20 20 52 31 2c 20 23  30 0d 98 6c 1c 20 42 4c  |   R1, #0..l. BL|
00014a20  45 20 20 20 20 20 70 73  6d 5f 6e 6f 5f 66 69 6c  |E     psm_no_fil|
00014a30  6c 31 32 36 34 0d 98 76  14 20 43 4d 50 20 20 20  |l1264..v. CMP   |
00014a40  20 20 52 32 2c 20 23 33  32 0d 98 80 1c 20 42 4c  |  R2, #32.... BL|
00014a50  45 20 20 20 20 20 70 73  6d 5f 6e 6f 5f 66 69 6c  |E     psm_no_fil|
00014a60  6c 31 32 36 34 0d 98 8a  17 20 43 4d 50 20 20 20  |l1264.... CMP   |
00014a70  20 20 52 31 2c 20 23 33  32 30 2d 38 0d 98 94 1c  |  R1, #320-8....|
00014a80  20 42 47 45 20 20 20 20  20 70 73 6d 5f 6e 6f 5f  | BGE     psm_no_|
00014a90  66 69 6c 6c 31 32 36 34  0d 98 9e 15 20 43 4d 50  |fill1264.... CMP|
00014aa0  20 20 20 20 20 52 32 2c  20 23 32 35 36 0d 98 a8  |     R2, #256...|
00014ab0  1c 20 42 47 45 20 20 20  20 20 70 73 6d 5f 6e 6f  |. BGE     psm_no|
00014ac0  5f 66 69 6c 6c 31 32 36  34 0d 98 b2 19 20 42 20  |_fill1264.... B |
00014ad0  20 20 20 20 20 20 70 73  6d 5f 66 69 6c 6c 31 32  |      psm_fill12|
00014ae0  36 34 0d 98 bc 15 20 2e  70 73 6d 5f 6e 6f 5f 66  |64.... .psm_no_f|
00014af0  69 6c 6c 31 32 36 34 0d  98 c6 1d 20 4c 44 4d 46  |ill1264.... LDMF|
00014b00  44 20 20 20 52 31 33 21  2c 7b 52 30 2d 52 31 32  |D   R13!,{R0-R12|
00014b10  2c 50 43 7d 0d 98 d0 12  20 2e 70 73 6d 5f 66 69  |,PC}.... .psm_fi|
00014b20  6c 6c 31 32 36 34 0d 98  da 06 20 3a 0d 98 e4 35  |ll1264.... :...5|
00014b30  20 4d 4f 56 20 20 20 20  20 52 37 2c 20 23 78 5f  | MOV     R7, #x_|
00014b40  73 68 69 66 74 20 20 20  20 20 20 20 20 20 3b 20  |shift         ; |
00014b50  67 65 74 20 73 63 72 65  65 6e 20 73 68 69 66 74  |get screen shift|
00014b60  73 0d 98 ee 19 20 4d 4f  56 20 20 20 20 20 52 38  |s.... MOV     R8|
00014b70  2c 20 23 79 5f 73 68 69  66 74 0d 98 f8 06 20 3a  |, #y_shift.... :|
00014b80  0d 99 02 3e 20 4c 44 52  20 20 20 20 20 52 39 2c  |...> LDR     R9,|
00014b90  20 66 69 6c 6c 5f 61 64  72 5f 73 63 72 65 65 6e  | fill_adr_screen|
00014ba0  73 74 6f 72 65 3b 20 67  65 74 20 73 63 72 65 65  |store; get scree|
00014bb0  6e 73 74 6f 72 65 20 61  64 64 72 65 73 73 0d 99  |nstore address..|
00014bc0  0c 14 20 4c 44 52 20 20  20 20 20 52 39 2c 5b 52  |.. LDR     R9,[R|
00014bd0  39 5d 0d 99 16 18 20 4d  4c 41 20 20 20 20 20 52  |9].... MLA     R|
00014be0  33 2c 52 37 2c 52 31 2c  52 39 0d 99 20 18 20 4d  |3,R7,R1,R9.. . M|
00014bf0  4c 41 20 20 20 20 20 52  30 2c 52 38 2c 52 32 2c  |LA     R0,R8,R2,|
00014c00  52 33 0d 99 2a 06 20 3a  0d 99 34 36 20 4c 44 52  |R3..*. :..46 LDR|
00014c10  20 20 20 20 20 52 39 2c  20 66 69 6c 6c 5f 73 63  |     R9, fill_sc|
00014c20  72 65 65 6e 64 61 74 61  20 20 3b 20 67 65 74 20  |reendata  ; get |
00014c30  73 63 72 65 65 6e 20 61  64 64 72 65 73 73 0d 99  |screen address..|
00014c40  3e 18 20 4d 4c 41 20 20  20 20 20 52 33 2c 52 37  |>. MLA     R3,R7|
00014c50  2c 52 31 2c 52 39 0d 99  48 18 20 4d 4c 41 20 20  |,R1,R9..H. MLA  |
00014c60  20 20 20 52 31 2c 52 38  2c 52 32 2c 52 33 0d 99  |   R1,R8,R2,R3..|
00014c70  52 06 20 3a 0d 99 5c 13  20 4d 4f 56 20 20 20 20  |R. :..\. MOV    |
00014c80  20 52 33 2c 20 23 31 0d  99 66 1e 20 53 54 52 20  | R3, #1..f. STR |
00014c90  20 20 20 20 52 33 2c 20  66 31 32 36 34 5f 63 6f  |    R3, f1264_co|
00014ca0  75 6e 74 65 72 0d 99 70  06 20 3a 0d 99 7a 15 20  |unter..p. :..z. |
00014cb0  2e 66 31 32 36 34 5f 66  69 6c 6c 5f 6c 6f 6f 70  |.f1264_fill_loop|
00014cc0  0d 99 84 06 20 3a 0d 99  8e 06 20 5d 0d 99 98 0f  |.... :.... ]....|
00014cd0  20 e3 20 61 25 3d 31 20  b8 20 38 0d 99 a2 0f 20  | . a%=1 . 8.... |
00014ce0  5b 4f 50 54 20 70 61 73  73 25 0d 99 ac 06 20 3a  |[OPT pass%.... :|
00014cf0  0d 99 b6 37 20 4c 44 4d  49 41 20 20 20 52 31 2c  |...7 LDMIA   R1,|
00014d00  7b 52 33 2d 52 35 7d 20  20 20 20 20 20 20 20 20  |{R3-R5}         |
00014d10  20 20 3b 20 67 65 74 20  73 6f 6d 65 20 62 61 63  |  ; get some bac|
00014d20  6b 67 72 6f 75 6e 64 0d  99 c0 35 20 53 54 4d 49  |kground...5 STMI|
00014d30  41 20 20 20 52 30 2c 7b  52 33 2d 52 35 7d 20 20  |A   R0,{R3-R5}  |
00014d40  20 20 20 20 20 20 20 20  20 3b 20 73 74 6f 72 65  |         ; store|
00014d50  20 6d 61 73 6b 65 64 20  66 69 6c 6c 0d 99 ca 06  | masked fill....|
00014d60  20 3a 0d 99 d4 1c 20 53  55 42 20 20 20 20 20 52  | :.... SUB     R|
00014d70  30 2c 52 30 2c 20 23 79  5f 73 68 69 66 74 0d 99  |0,R0, #y_shift..|
00014d80  de 1c 20 53 55 42 20 20  20 20 20 52 31 2c 52 31  |.. SUB     R1,R1|
00014d90  2c 20 23 79 5f 73 68 69  66 74 0d 99 e8 06 20 3a  |, #y_shift.... :|
00014da0  0d 99 f2 06 20 5d 0d 99  fc 06 20 ed 0d 9a 06 0f  |.... ].... .....|
00014db0  20 5b 4f 50 54 20 70 61  73 73 25 0d 9a 10 06 20  | [OPT pass%.... |
00014dc0  3a 0d 9a 1a 1e 20 4c 44  52 20 20 20 20 20 52 33  |:.... LDR     R3|
00014dd0  2c 20 66 31 32 36 34 5f  63 6f 75 6e 74 65 72 0d  |, f1264_counter.|
00014de0  9a 24 16 20 41 44 44 20  20 20 20 20 52 33 2c 52  |.$. ADD     R3,R|
00014df0  33 2c 20 23 31 0d 9a 2e  1e 20 53 54 52 20 20 20  |3, #1.... STR   |
00014e00  20 20 52 33 2c 20 66 31  32 36 34 5f 63 6f 75 6e  |  R3, f1264_coun|
00014e10  74 65 72 0d 9a 38 13 20  43 4d 50 20 20 20 20 20  |ter..8. CMP     |
00014e20  52 33 2c 20 23 38 0d 9a  42 1c 20 42 4c 45 20 20  |R3, #8..B. BLE  |
00014e30  20 20 20 66 31 32 36 34  5f 66 69 6c 6c 5f 6c 6f  |   f1264_fill_lo|
00014e40  6f 70 0d 9a 4c 06 20 3a  0d 9a 56 1d 20 4c 44 4d  |op..L. :..V. LDM|
00014e50  46 44 20 20 20 52 31 33  21 2c 7b 52 30 2d 52 31  |FD   R13!,{R0-R1|
00014e60  32 2c 50 43 7d 0d 9a 60  06 20 3a 0d 9a 6a 13 20  |2,PC}..`. :..j. |
00014e70  2e 66 31 32 36 34 5f 63  6f 75 6e 74 65 72 0d 9a  |.f1264_counter..|
00014e80  74 0e 20 45 51 55 44 20  20 20 20 30 0d 9a 7e 06  |t. EQUD    0..~.|
00014e90  20 3a 0d 9a 88 15 20 2e  66 69 6c 6c 5f 73 63 72  | :.... .fill_scr|
00014ea0  65 65 6e 64 61 74 61 0d  9a 92 18 20 45 51 55 44  |eendata.... EQUD|
00014eb0  20 20 20 20 73 63 72 65  65 6e 64 61 74 61 25 0d  |    screendata%.|
00014ec0  9a 9c 1a 20 2e 66 69 6c  6c 5f 61 64 72 5f 73 63  |... .fill_adr_sc|
00014ed0  72 65 65 6e 73 74 6f 72  65 0d 9a a6 18 20 45 51  |reenstore.... EQ|
00014ee0  55 44 20 20 20 20 73 63  72 65 65 6e 73 74 6f 72  |UD    screenstor|
00014ef0  65 0d 9a b0 06 20 3a 0d  9a ba 06 20 3a 0d 9a c4  |e.... :.... :...|
00014f00  06 20 3a 0d 9a ce 14 20  2e 66 69 6c 6c 5f 66 69  |. :.... .fill_fi|
00014f10  6c 6c 5f 32 30 31 36 0d  9a d8 06 20 3a 0d 9a e2  |ll_2016.... :...|
00014f20  1e 20 53 54 4d 46 44 20  20 20 52 31 33 21 2c 7b  |. STMFD   R13!,{|
00014f30  52 30 2d 52 31 32 2c 52  31 34 7d 0d 9a ec 06 20  |R0-R12,R14}.... |
00014f40  3a 0d 9a f6 2f 20 3a 20  20 20 20 20 20 20 20 20  |:.../ :         |
00014f50  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00014f60  20 20 20 3b 20 52 30 20  66 69 6c 6c 20 6e 6f 2e  |   ; R0 fill no.|
00014f70  0d 9b 00 2e 20 3a 20 20  20 20 20 20 20 20 20 20  |.... :          |
00014f80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00014f90  20 20 3b 20 52 31 20 78  2d 63 6f 6f 72 64 0d 9b  |  ; R1 x-coord..|
00014fa0  0a 2e 20 3a 20 20 20 20  20 20 20 20 20 20 20 20  |.. :            |
00014fb0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00014fc0  3b 20 52 32 20 79 2d 63  6f 6f 72 64 0d 9b 14 06  |; R2 y-coord....|
00014fd0  20 3a 0d 9b 1e 18 20 52  53 42 20 20 20 20 20 52  | :.... RSB     R|
00014fe0  32 2c 52 32 2c 20 23 32  35 36 0d 9b 28 06 20 3a  |2,R2, #256..(. :|
00014ff0  0d 9b 32 13 20 43 4d 50  20 20 20 20 20 52 31 2c  |..2. CMP     R1,|
00015000  20 23 30 0d 9b 3c 1c 20  42 4c 45 20 20 20 20 20  | #0..<. BLE     |
00015010  70 73 6d 5f 6e 6f 5f 66  69 6c 6c 32 30 31 36 0d  |psm_no_fill2016.|
00015020  9b 46 14 20 43 4d 50 20  20 20 20 20 52 32 2c 20  |.F. CMP     R2, |
00015030  23 31 36 0d 9b 50 1c 20  42 4c 45 20 20 20 20 20  |#16..P. BLE     |
00015040  70 73 6d 5f 6e 6f 5f 66  69 6c 6c 32 30 31 36 0d  |psm_no_fill2016.|
00015050  9b 5a 18 20 43 4d 50 20  20 20 20 20 52 31 2c 20  |.Z. CMP     R1, |
00015060  23 33 32 30 2d 31 36 0d  9b 64 1c 20 42 47 45 20  |#320-16..d. BGE |
00015070  20 20 20 20 70 73 6d 5f  6e 6f 5f 66 69 6c 6c 32  |    psm_no_fill2|
00015080  30 31 36 0d 9b 6e 15 20  43 4d 50 20 20 20 20 20  |016..n. CMP     |
00015090  52 32 2c 20 23 32 35 36  0d 9b 78 1c 20 42 47 45  |R2, #256..x. BGE|
000150a0  20 20 20 20 20 70 73 6d  5f 6e 6f 5f 66 69 6c 6c  |     psm_no_fill|
000150b0  32 30 31 36 0d 9b 82 19  20 42 20 20 20 20 20 20  |2016.... B      |
000150c0  20 70 73 6d 5f 66 69 6c  6c 32 30 31 36 0d 9b 8c  | psm_fill2016...|
000150d0  15 20 2e 70 73 6d 5f 6e  6f 5f 66 69 6c 6c 32 30  |. .psm_no_fill20|
000150e0  31 36 0d 9b 96 1d 20 4c  44 4d 46 44 20 20 20 52  |16.... LDMFD   R|
000150f0  31 33 21 2c 7b 52 30 2d  52 31 32 2c 50 43 7d 0d  |13!,{R0-R12,PC}.|
00015100  9b a0 12 20 2e 70 73 6d  5f 66 69 6c 6c 32 30 31  |... .psm_fill201|
00015110  36 0d 9b aa 06 20 3a 0d  9b b4 35 20 4d 4f 56 20  |6.... :...5 MOV |
00015120  20 20 20 20 52 37 2c 20  23 78 5f 73 68 69 66 74  |    R7, #x_shift|
00015130  20 20 20 20 20 20 20 20  20 3b 20 67 65 74 20 73  |         ; get s|
00015140  63 72 65 65 6e 20 73 68  69 66 74 73 0d 9b be 19  |creen shifts....|
00015150  20 4d 4f 56 20 20 20 20  20 52 38 2c 20 23 79 5f  | MOV     R8, #y_|
00015160  73 68 69 66 74 0d 9b c8  06 20 3a 0d 9b d2 3e 20  |shift.... :...> |
00015170  4c 44 52 20 20 20 20 20  52 39 2c 20 66 69 6c 6c  |LDR     R9, fill|
00015180  5f 61 64 72 5f 73 63 72  65 65 6e 73 74 6f 72 65  |_adr_screenstore|
00015190  3b 20 67 65 74 20 73 63  72 65 65 6e 73 74 6f 72  |; get screenstor|
000151a0  65 20 61 64 64 72 65 73  73 0d 9b dc 14 20 4c 44  |e address.... LD|
000151b0  52 20 20 20 20 20 52 39  2c 5b 52 39 5d 0d 9b e6  |R     R9,[R9]...|
000151c0  18 20 4d 4c 41 20 20 20  20 20 52 33 2c 52 37 2c  |. MLA     R3,R7,|
000151d0  52 31 2c 52 39 0d 9b f0  18 20 4d 4c 41 20 20 20  |R1,R9.... MLA   |
000151e0  20 20 52 30 2c 52 38 2c  52 32 2c 52 33 0d 9b fa  |  R0,R8,R2,R3...|
000151f0  06 20 3a 0d 9c 04 36 20  4c 44 52 20 20 20 20 20  |. :...6 LDR     |
00015200  52 39 2c 20 66 69 6c 6c  5f 73 63 72 65 65 6e 64  |R9, fill_screend|
00015210  61 74 61 20 20 3b 20 67  65 74 20 73 63 72 65 65  |ata  ; get scree|
00015220  6e 20 61 64 64 72 65 73  73 0d 9c 0e 18 20 4d 4c  |n address.... ML|
00015230  41 20 20 20 20 20 52 33  2c 52 37 2c 52 31 2c 52  |A     R3,R7,R1,R|
00015240  39 0d 9c 18 18 20 4d 4c  41 20 20 20 20 20 52 31  |9.... MLA     R1|
00015250  2c 52 38 2c 52 32 2c 52  33 0d 9c 22 06 20 3a 0d  |,R8,R2,R3..". :.|
00015260  9c 2c 13 20 4d 4f 56 20  20 20 20 20 52 33 2c 20  |.,. MOV     R3, |
00015270  23 31 0d 9c 36 1e 20 53  54 52 20 20 20 20 20 52  |#1..6. STR     R|
00015280  33 2c 20 66 32 30 31 36  5f 63 6f 75 6e 74 65 72  |3, f2016_counter|
00015290  0d 9c 40 06 20 3a 0d 9c  4a 15 20 2e 66 32 30 31  |..@. :..J. .f201|
000152a0  36 5f 66 69 6c 6c 5f 6c  6f 6f 70 0d 9c 54 06 20  |6_fill_loop..T. |
000152b0  3a 0d 9c 5e 06 20 5d 0d  9c 68 0f 20 e3 20 61 25  |:..^. ]..h. . a%|
000152c0  3d 31 20 b8 20 34 0d 9c  72 0f 20 5b 4f 50 54 20  |=1 . 4..r. [OPT |
000152d0  70 61 73 73 25 0d 9c 7c  06 20 3a 0d 9c 86 37 20  |pass%..|. :...7 |
000152e0  4c 44 4d 49 41 20 20 20  52 31 2c 7b 52 33 2d 52  |LDMIA   R1,{R3-R|
000152f0  37 7d 20 20 20 20 20 20  20 20 20 20 20 3b 20 67  |7}           ; g|
00015300  65 74 20 73 6f 6d 65 20  62 61 63 6b 67 72 6f 75  |et some backgrou|
00015310  6e 64 0d 9c 90 35 20 53  54 4d 49 41 20 20 20 52  |nd...5 STMIA   R|
00015320  30 2c 7b 52 33 2d 52 37  7d 20 20 20 20 20 20 20  |0,{R3-R7}       |
00015330  20 20 20 20 3b 20 73 74  6f 72 65 20 6d 61 73 6b  |    ; store mask|
00015340  65 64 20 66 69 6c 6c 0d  9c 9a 06 20 3a 0d 9c a4  |ed fill.... :...|
00015350  1c 20 53 55 42 20 20 20  20 20 52 30 2c 52 30 2c  |. SUB     R0,R0,|
00015360  20 23 79 5f 73 68 69 66  74 0d 9c ae 1c 20 53 55  | #y_shift.... SU|
00015370  42 20 20 20 20 20 52 31  2c 52 31 2c 20 23 79 5f  |B     R1,R1, #y_|
00015380  73 68 69 66 74 0d 9c b8  06 20 3a 0d 9c c2 06 20  |shift.... :.... |
00015390  5d 0d 9c cc 06 20 ed 0d  9c d6 0f 20 5b 4f 50 54  |].... ..... [OPT|
000153a0  20 70 61 73 73 25 0d 9c  e0 06 20 3a 0d 9c ea 1e  | pass%.... :....|
000153b0  20 4c 44 52 20 20 20 20  20 52 33 2c 20 66 32 30  | LDR     R3, f20|
000153c0  31 36 5f 63 6f 75 6e 74  65 72 0d 9c f4 16 20 41  |16_counter.... A|
000153d0  44 44 20 20 20 20 20 52  33 2c 52 33 2c 20 23 31  |DD     R3,R3, #1|
000153e0  0d 9c fe 1e 20 53 54 52  20 20 20 20 20 52 33 2c  |.... STR     R3,|
000153f0  20 66 32 30 31 36 5f 63  6f 75 6e 74 65 72 0d 9d  | f2016_counter..|
00015400  08 13 20 43 4d 50 20 20  20 20 20 52 33 2c 20 23  |.. CMP     R3, #|
00015410  34 0d 9d 12 1c 20 42 4c  45 20 20 20 20 20 66 32  |4.... BLE     f2|
00015420  30 31 36 5f 66 69 6c 6c  5f 6c 6f 6f 70 0d 9d 1c  |016_fill_loop...|
00015430  06 20 3a 0d 9d 26 1d 20  4c 44 4d 46 44 20 20 20  |. :..&. LDMFD   |
00015440  52 31 33 21 2c 7b 52 30  2d 52 31 32 2c 50 43 7d  |R13!,{R0-R12,PC}|
00015450  0d 9d 30 06 20 3a 0d 9d  3a 13 20 2e 66 32 30 31  |..0. :..:. .f201|
00015460  36 5f 63 6f 75 6e 74 65  72 0d 9d 44 0e 20 45 51  |6_counter..D. EQ|
00015470  55 44 20 20 20 20 30 0d  9d 4e 06 20 3a 0d 9d 58  |UD    0..N. :..X|
00015480  06 20 3a 0d 9d 62 06 20  3a 0d 9d 6c 14 20 2e 66  |. :..b. :..l. .f|
00015490  69 6c 6c 5f 66 69 6c 6c  5f 30 38 30 34 0d 9d 76  |ill_fill_0804..v|
000154a0  06 20 3a 0d 9d 80 1e 20  53 54 4d 46 44 20 20 20  |. :.... STMFD   |
000154b0  52 31 33 21 2c 7b 52 30  2d 52 31 32 2c 52 31 34  |R13!,{R0-R12,R14|
000154c0  7d 0d 9d 8a 06 20 3a 0d  9d 94 2f 20 3a 20 20 20  |}.... :.../ :   |
000154d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000154e0  20 20 20 20 20 20 20 20  20 3b 20 52 30 20 66 69  |         ; R0 fi|
000154f0  6c 6c 20 6e 6f 2e 0d 9d  9e 2e 20 3a 20 20 20 20  |ll no..... :    |
00015500  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00015510  20 20 20 20 20 20 20 20  3b 20 52 31 20 78 2d 63  |        ; R1 x-c|
00015520  6f 6f 72 64 0d 9d a8 2e  20 3a 20 20 20 20 20 20  |oord.... :      |
00015530  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00015540  20 20 20 20 20 20 3b 20  52 32 20 79 2d 63 6f 6f  |      ; R2 y-coo|
00015550  72 64 0d 9d b2 06 20 3a  0d 9d bc 18 20 52 53 42  |rd.... :.... RSB|
00015560  20 20 20 20 20 52 32 2c  52 32 2c 20 23 32 35 36  |     R2,R2, #256|
00015570  0d 9d c6 06 20 3a 0d 9d  d0 13 20 43 4d 50 20 20  |.... :.... CMP  |
00015580  20 20 20 52 31 2c 20 23  30 0d 9d da 1c 20 42 4c  |   R1, #0.... BL|
00015590  45 20 20 20 20 20 70 73  6d 5f 6e 6f 5f 66 69 6c  |E     psm_no_fil|
000155a0  6c 30 38 30 34 0d 9d e4  13 20 43 4d 50 20 20 20  |l0804.... CMP   |
000155b0  20 20 52 32 2c 20 23 34  0d 9d ee 1c 20 42 4c 45  |  R2, #4.... BLE|
000155c0  20 20 20 20 20 70 73 6d  5f 6e 6f 5f 66 69 6c 6c  |     psm_no_fill|
000155d0  30 38 30 34 0d 9d f8 17  20 43 4d 50 20 20 20 20  |0804.... CMP    |
000155e0  20 52 31 2c 20 23 33 32  30 2d 34 0d 9e 02 1c 20  | R1, #320-4.... |
000155f0  42 47 45 20 20 20 20 20  70 73 6d 5f 6e 6f 5f 66  |BGE     psm_no_f|
00015600  69 6c 6c 30 38 30 34 0d  9e 0c 15 20 43 4d 50 20  |ill0804.... CMP |
00015610  20 20 20 20 52 32 2c 20  23 32 35 36 0d 9e 16 1c  |    R2, #256....|
00015620  20 42 47 45 20 20 20 20  20 70 73 6d 5f 6e 6f 5f  | BGE     psm_no_|
00015630  66 69 6c 6c 30 38 30 34  0d 9e 20 19 20 42 20 20  |fill0804.. . B  |
00015640  20 20 20 20 20 70 73 6d  5f 66 69 6c 6c 30 38 30  |     psm_fill080|
00015650  34 0d 9e 2a 15 20 2e 70  73 6d 5f 6e 6f 5f 66 69  |4..*. .psm_no_fi|
00015660  6c 6c 30 38 30 34 0d 9e  34 1d 20 4c 44 4d 46 44  |ll0804..4. LDMFD|
00015670  20 20 20 52 31 33 21 2c  7b 52 30 2d 52 31 32 2c  |   R13!,{R0-R12,|
00015680  50 43 7d 0d 9e 3e 12 20  2e 70 73 6d 5f 66 69 6c  |PC}..>. .psm_fil|
00015690  6c 30 38 30 34 0d 9e 48  06 20 3a 0d 9e 52 35 20  |l0804..H. :..R5 |
000156a0  4d 4f 56 20 20 20 20 20  52 37 2c 20 23 78 5f 73  |MOV     R7, #x_s|
000156b0  68 69 66 74 20 20 20 20  20 20 20 20 20 3b 20 67  |hift         ; g|
000156c0  65 74 20 73 63 72 65 65  6e 20 73 68 69 66 74 73  |et screen shifts|
000156d0  0d 9e 5c 19 20 4d 4f 56  20 20 20 20 20 52 38 2c  |..\. MOV     R8,|
000156e0  20 23 79 5f 73 68 69 66  74 0d 9e 66 06 20 3a 0d  | #y_shift..f. :.|
000156f0  9e 70 3e 20 4c 44 52 20  20 20 20 20 52 39 2c 20  |.p> LDR     R9, |
00015700  66 69 6c 6c 5f 61 64 72  5f 73 63 72 65 65 6e 73  |fill_adr_screens|
00015710  74 6f 72 65 3b 20 67 65  74 20 73 63 72 65 65 6e  |tore; get screen|
00015720  73 74 6f 72 65 20 61 64  64 72 65 73 73 0d 9e 7a  |store address..z|
00015730  14 20 4c 44 52 20 20 20  20 20 52 39 2c 5b 52 39  |. LDR     R9,[R9|
00015740  5d 0d 9e 84 18 20 4d 4c  41 20 20 20 20 20 52 33  |].... MLA     R3|
00015750  2c 52 37 2c 52 31 2c 52  39 0d 9e 8e 18 20 4d 4c  |,R7,R1,R9.... ML|
00015760  41 20 20 20 20 20 52 30  2c 52 38 2c 52 32 2c 52  |A     R0,R8,R2,R|
00015770  33 0d 9e 98 06 20 3a 0d  9e a2 36 20 4c 44 52 20  |3.... :...6 LDR |
00015780  20 20 20 20 52 39 2c 20  66 69 6c 6c 5f 73 63 72  |    R9, fill_scr|
00015790  65 65 6e 64 61 74 61 20  20 3b 20 67 65 74 20 73  |eendata  ; get s|
000157a0  63 72 65 65 6e 20 61 64  64 72 65 73 73 0d 9e ac  |creen address...|
000157b0  18 20 4d 4c 41 20 20 20  20 20 52 33 2c 52 37 2c  |. MLA     R3,R7,|
000157c0  52 31 2c 52 39 0d 9e b6  18 20 4d 4c 41 20 20 20  |R1,R9.... MLA   |
000157d0  20 20 52 31 2c 52 38 2c  52 32 2c 52 33 0d 9e c0  |  R1,R8,R2,R3...|
000157e0  06 20 3a 0d 9e ca 15 20  2e 66 30 38 30 34 5f 66  |. :.... .f0804_f|
000157f0  69 6c 6c 5f 6c 6f 6f 70  0d 9e d4 06 20 3a 0d 9e  |ill_loop.... :..|
00015800  de 06 20 5d 0d 9e e8 0f  20 e3 20 61 25 3d 31 20  |.. ].... . a%=1 |
00015810  b8 20 34 0d 9e f2 0f 20  5b 4f 50 54 20 70 61 73  |. 4.... [OPT pas|
00015820  73 25 0d 9e fc 06 20 3a  0d 9f 06 37 20 4c 44 4d  |s%.... :...7 LDM|
00015830  49 41 20 20 20 52 31 2c  7b 52 33 2d 52 34 7d 20  |IA   R1,{R3-R4} |
00015840  20 20 20 20 20 20 20 20  20 20 3b 20 67 65 74 20  |          ; get |
00015850  73 6f 6d 65 20 62 61 63  6b 67 72 6f 75 6e 64 0d  |some background.|
00015860  9f 10 35 20 53 54 4d 49  41 20 20 20 52 30 2c 7b  |..5 STMIA   R0,{|
00015870  52 33 2d 52 34 7d 20 20  20 20 20 20 20 20 20 20  |R3-R4}          |
00015880  20 3b 20 73 74 6f 72 65  20 6d 61 73 6b 65 64 20  | ; store masked |
00015890  66 69 6c 6c 0d 9f 1a 06  20 3a 0d 9f 24 1c 20 53  |fill.... :..$. S|
000158a0  55 42 20 20 20 20 20 52  30 2c 52 30 2c 20 23 79  |UB     R0,R0, #y|
000158b0  5f 73 68 69 66 74 0d 9f  2e 1c 20 53 55 42 20 20  |_shift.... SUB  |
000158c0  20 20 20 52 31 2c 52 31  2c 20 23 79 5f 73 68 69  |   R1,R1, #y_shi|
000158d0  66 74 0d 9f 38 06 20 3a  0d 9f 42 06 20 5d 0d 9f  |ft..8. :..B. ]..|
000158e0  4c 06 20 ed 0d 9f 56 0f  20 5b 4f 50 54 20 70 61  |L. ...V. [OPT pa|
000158f0  73 73 25 0d 9f 60 06 20  3a 0d 9f 6a 1d 20 4c 44  |ss%..`. :..j. LD|
00015900  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 30 2d 52  |MFD   R13!,{R0-R|
00015910  31 32 2c 50 43 7d 0d 9f  74 06 20 3a 0d 9f 7e 06  |12,PC}..t. :..~.|
00015920  20 3a 0d 9f 88 06 20 3a  0d 9f 92 14 20 2e 66 69  | :.... :.... .fi|
00015930  6c 6c 5f 66 69 6c 6c 5f  31 32 30 38 0d 9f 9c 06  |ll_fill_1208....|
00015940  20 3a 0d 9f a6 1e 20 53  54 4d 46 44 20 20 20 52  | :.... STMFD   R|
00015950  31 33 21 2c 7b 52 30 2d  52 31 32 2c 52 31 34 7d  |13!,{R0-R12,R14}|
00015960  0d 9f b0 06 20 3a 0d 9f  ba 2f 20 3a 20 20 20 20  |.... :.../ :    |
00015970  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00015980  20 20 20 20 20 20 20 20  3b 20 52 30 20 66 69 6c  |        ; R0 fil|
00015990  6c 20 6e 6f 2e 0d 9f c4  2e 20 3a 20 20 20 20 20  |l no..... :     |
000159a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000159b0  20 20 20 20 20 20 20 3b  20 52 31 20 78 2d 63 6f  |       ; R1 x-co|
000159c0  6f 72 64 0d 9f ce 2e 20  3a 20 20 20 20 20 20 20  |ord.... :       |
000159d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000159e0  20 20 20 20 20 3b 20 52  32 20 79 2d 63 6f 6f 72  |     ; R2 y-coor|
000159f0  64 0d 9f d8 06 20 3a 0d  9f e2 18 20 52 53 42 20  |d.... :.... RSB |
00015a00  20 20 20 20 52 32 2c 52  32 2c 20 23 32 35 36 0d  |    R2,R2, #256.|
00015a10  9f ec 06 20 3a 0d 9f f6  13 20 43 4d 50 20 20 20  |... :.... CMP   |
00015a20  20 20 52 31 2c 20 23 30  0d a0 00 1c 20 42 4c 45  |  R1, #0.... BLE|
00015a30  20 20 20 20 20 70 73 6d  5f 6e 6f 5f 66 69 6c 6c  |     psm_no_fill|
00015a40  31 32 30 38 0d a0 0a 13  20 43 4d 50 20 20 20 20  |1208.... CMP    |
00015a50  20 52 32 2c 20 23 38 0d  a0 14 1c 20 42 4c 45 20  | R2, #8.... BLE |
00015a60  20 20 20 20 70 73 6d 5f  6e 6f 5f 66 69 6c 6c 31  |    psm_no_fill1|
00015a70  32 30 38 0d a0 1e 17 20  43 4d 50 20 20 20 20 20  |208.... CMP     |
00015a80  52 31 2c 20 23 33 32 30  2d 38 0d a0 28 1c 20 42  |R1, #320-8..(. B|
00015a90  47 45 20 20 20 20 20 70  73 6d 5f 6e 6f 5f 66 69  |GE     psm_no_fi|
00015aa0  6c 6c 31 32 30 38 0d a0  32 15 20 43 4d 50 20 20  |ll1208..2. CMP  |
00015ab0  20 20 20 52 32 2c 20 23  32 35 36 0d a0 3c 1c 20  |   R2, #256..<. |
00015ac0  42 47 45 20 20 20 20 20  70 73 6d 5f 6e 6f 5f 66  |BGE     psm_no_f|
00015ad0  69 6c 6c 31 32 30 38 0d  a0 46 19 20 42 20 20 20  |ill1208..F. B   |
00015ae0  20 20 20 20 70 73 6d 5f  66 69 6c 6c 31 32 30 38  |    psm_fill1208|
00015af0  0d a0 50 15 20 2e 70 73  6d 5f 6e 6f 5f 66 69 6c  |..P. .psm_no_fil|
00015b00  6c 31 32 30 38 0d a0 5a  1d 20 4c 44 4d 46 44 20  |l1208..Z. LDMFD |
00015b10  20 20 52 31 33 21 2c 7b  52 30 2d 52 31 32 2c 50  |  R13!,{R0-R12,P|
00015b20  43 7d 0d a0 64 12 20 2e  70 73 6d 5f 66 69 6c 6c  |C}..d. .psm_fill|
00015b30  31 32 30 38 0d a0 6e 06  20 3a 0d a0 78 35 20 4d  |1208..n. :..x5 M|
00015b40  4f 56 20 20 20 20 20 52  37 2c 20 23 78 5f 73 68  |OV     R7, #x_sh|
00015b50  69 66 74 20 20 20 20 20  20 20 20 20 3b 20 67 65  |ift         ; ge|
00015b60  74 20 73 63 72 65 65 6e  20 73 68 69 66 74 73 0d  |t screen shifts.|
00015b70  a0 82 19 20 4d 4f 56 20  20 20 20 20 52 38 2c 20  |... MOV     R8, |
00015b80  23 79 5f 73 68 69 66 74  0d a0 8c 06 20 3a 0d a0  |#y_shift.... :..|
00015b90  96 3e 20 4c 44 52 20 20  20 20 20 52 39 2c 20 66  |.> LDR     R9, f|
00015ba0  69 6c 6c 5f 61 64 72 5f  73 63 72 65 65 6e 73 74  |ill_adr_screenst|
00015bb0  6f 72 65 3b 20 67 65 74  20 73 63 72 65 65 6e 73  |ore; get screens|
00015bc0  74 6f 72 65 20 61 64 64  72 65 73 73 0d a0 a0 14  |tore address....|
00015bd0  20 4c 44 52 20 20 20 20  20 52 39 2c 5b 52 39 5d  | LDR     R9,[R9]|
00015be0  0d a0 aa 18 20 4d 4c 41  20 20 20 20 20 52 33 2c  |.... MLA     R3,|
00015bf0  52 37 2c 52 31 2c 52 39  0d a0 b4 18 20 4d 4c 41  |R7,R1,R9.... MLA|
00015c00  20 20 20 20 20 52 30 2c  52 38 2c 52 32 2c 52 33  |     R0,R8,R2,R3|
00015c10  0d a0 be 06 20 3a 0d a0  c8 36 20 4c 44 52 20 20  |.... :...6 LDR  |
00015c20  20 20 20 52 39 2c 20 66  69 6c 6c 5f 73 63 72 65  |   R9, fill_scre|
00015c30  65 6e 64 61 74 61 20 20  3b 20 67 65 74 20 73 63  |endata  ; get sc|
00015c40  72 65 65 6e 20 61 64 64  72 65 73 73 0d a0 d2 18  |reen address....|
00015c50  20 4d 4c 41 20 20 20 20  20 52 33 2c 52 37 2c 52  | MLA     R3,R7,R|
00015c60  31 2c 52 39 0d a0 dc 18  20 4d 4c 41 20 20 20 20  |1,R9.... MLA    |
00015c70  20 52 31 2c 52 38 2c 52  32 2c 52 33 0d a0 e6 06  | R1,R8,R2,R3....|
00015c80  20 3a 0d a0 f0 06 20 5d  0d a0 fa 0f 20 e3 20 61  | :.... ].... . a|
00015c90  25 3d 31 20 b8 20 38 0d  a1 04 0f 20 5b 4f 50 54  |%=1 . 8.... [OPT|
00015ca0  20 70 61 73 73 25 0d a1  0e 06 20 3a 0d a1 18 34  | pass%.... :...4|
00015cb0  20 4c 44 4d 49 41 20 20  20 52 31 2c 7b 52 33 2d  | LDMIA   R1,{R3-|
00015cc0  52 35 7d 20 20 20 20 20  20 20 20 3b 20 67 65 74  |R5}        ; get|
00015cd0  20 73 6f 6d 65 20 62 61  63 6b 67 72 6f 75 6e 64  | some background|
00015ce0  0d a1 22 32 20 53 54 4d  49 41 20 20 20 52 30 2c  |.."2 STMIA   R0,|
00015cf0  7b 52 33 2d 52 35 7d 20  20 20 20 20 20 20 20 3b  |{R3-R5}        ;|
00015d00  20 73 74 6f 72 65 20 6d  61 73 6b 65 64 20 66 69  | store masked fi|
00015d10  6c 6c 0d a1 2c 06 20 3a  0d a1 36 1c 20 53 55 42  |ll..,. :..6. SUB|
00015d20  20 20 20 20 20 52 30 2c  52 30 2c 20 23 79 5f 73  |     R0,R0, #y_s|
00015d30  68 69 66 74 0d a1 40 1c  20 53 55 42 20 20 20 20  |hift..@. SUB    |
00015d40  20 52 31 2c 52 31 2c 20  23 79 5f 73 68 69 66 74  | R1,R1, #y_shift|
00015d50  0d a1 4a 06 20 3a 0d a1  54 06 20 5d 0d a1 5e 06  |..J. :..T. ]..^.|
00015d60  20 ed 0d a1 68 0f 20 5b  4f 50 54 20 70 61 73 73  | ...h. [OPT pass|
00015d70  25 0d a1 72 06 20 3a 0d  a1 7c 1d 20 4c 44 4d 46  |%..r. :..|. LDMF|
00015d80  44 20 20 20 52 31 33 21  2c 7b 52 30 2d 52 31 32  |D   R13!,{R0-R12|
00015d90  2c 50 43 7d 0d a1 86 06  20 3a 0d a1 90 06 20 3a  |,PC}.... :.... :|
00015da0  0d a1 9a 06 20 3a 0d a1  a4 14 20 2e 66 69 6c 6c  |.... :.... .fill|
00015db0  5f 66 69 6c 6c 5f 31 36  31 36 0d a1 ae 06 20 3a  |_fill_1616.... :|
00015dc0  0d a1 b8 1e 20 53 54 4d  46 44 20 20 20 52 31 33  |.... STMFD   R13|
00015dd0  21 2c 7b 52 30 2d 52 31  32 2c 52 31 34 7d 0d a1  |!,{R0-R12,R14}..|
00015de0  c2 06 20 3a 0d a1 cc 18  20 52 53 42 20 20 20 20  |.. :.... RSB    |
00015df0  20 52 32 2c 52 32 2c 20  23 32 35 36 0d a1 d6 06  | R2,R2, #256....|
00015e00  20 3a 0d a1 e0 13 20 43  4d 50 20 20 20 20 20 52  | :.... CMP     R|
00015e10  31 2c 20 23 30 0d a1 ea  1c 20 42 4c 45 20 20 20  |1, #0.... BLE   |
00015e20  20 20 70 73 6d 5f 6e 6f  5f 66 69 6c 6c 31 36 31  |  psm_no_fill161|
00015e30  36 0d a1 f4 14 20 43 4d  50 20 20 20 20 20 52 32  |6.... CMP     R2|
00015e40  2c 20 23 31 36 0d a1 fe  1c 20 42 4c 45 20 20 20  |, #16.... BLE   |
00015e50  20 20 70 73 6d 5f 6e 6f  5f 66 69 6c 6c 31 36 31  |  psm_no_fill161|
00015e60  36 0d a2 08 18 20 43 4d  50 20 20 20 20 20 52 31  |6.... CMP     R1|
00015e70  2c 20 23 33 32 30 2d 31  36 0d a2 12 1c 20 42 47  |, #320-16.... BG|
00015e80  45 20 20 20 20 20 70 73  6d 5f 6e 6f 5f 66 69 6c  |E     psm_no_fil|
00015e90  6c 31 36 31 36 0d a2 1c  15 20 43 4d 50 20 20 20  |l1616.... CMP   |
00015ea0  20 20 52 32 2c 20 23 32  35 36 0d a2 26 1c 20 42  |  R2, #256..&. B|
00015eb0  47 45 20 20 20 20 20 70  73 6d 5f 6e 6f 5f 66 69  |GE     psm_no_fi|
00015ec0  6c 6c 31 36 31 36 0d a2  30 19 20 42 20 20 20 20  |ll1616..0. B    |
00015ed0  20 20 20 70 73 6d 5f 66  69 6c 6c 31 36 31 36 0d  |   psm_fill1616.|
00015ee0  a2 3a 15 20 2e 70 73 6d  5f 6e 6f 5f 66 69 6c 6c  |.:. .psm_no_fill|
00015ef0  31 36 31 36 0d a2 44 1d  20 4c 44 4d 46 44 20 20  |1616..D. LDMFD  |
00015f00  20 52 31 33 21 2c 7b 52  30 2d 52 31 32 2c 50 43  | R13!,{R0-R12,PC|
00015f10  7d 0d a2 4e 12 20 2e 70  73 6d 5f 66 69 6c 6c 31  |}..N. .psm_fill1|
00015f20  36 31 36 0d a2 58 06 20  3a 0d a2 62 35 20 4d 4f  |616..X. :..b5 MO|
00015f30  56 20 20 20 20 20 52 37  2c 20 23 78 5f 73 68 69  |V     R7, #x_shi|
00015f40  66 74 20 20 20 20 20 20  20 20 20 3b 20 67 65 74  |ft         ; get|
00015f50  20 73 63 72 65 65 6e 20  73 68 69 66 74 73 0d a2  | screen shifts..|
00015f60  6c 19 20 4d 4f 56 20 20  20 20 20 52 38 2c 20 23  |l. MOV     R8, #|
00015f70  79 5f 73 68 69 66 74 0d  a2 76 06 20 3a 0d a2 80  |y_shift..v. :...|
00015f80  3e 20 4c 44 52 20 20 20  20 20 52 39 2c 20 66 69  |> LDR     R9, fi|
00015f90  6c 6c 5f 61 64 72 5f 73  63 72 65 65 6e 73 74 6f  |ll_adr_screensto|
00015fa0  72 65 3b 20 67 65 74 20  73 63 72 65 65 6e 73 74  |re; get screenst|
00015fb0  6f 72 65 20 61 64 64 72  65 73 73 0d a2 8a 14 20  |ore address.... |
00015fc0  4c 44 52 20 20 20 20 20  52 39 2c 5b 52 39 5d 0d  |LDR     R9,[R9].|
00015fd0  a2 94 18 20 4d 4c 41 20  20 20 20 20 52 33 2c 52  |... MLA     R3,R|
00015fe0  37 2c 52 31 2c 52 39 0d  a2 9e 18 20 4d 4c 41 20  |7,R1,R9.... MLA |
00015ff0  20 20 20 20 52 30 2c 52  38 2c 52 32 2c 52 33 0d  |    R0,R8,R2,R3.|
00016000  a2 a8 06 20 3a 0d a2 b2  36 20 4c 44 52 20 20 20  |... :...6 LDR   |
00016010  20 20 52 39 2c 20 66 69  6c 6c 5f 73 63 72 65 65  |  R9, fill_scree|
00016020  6e 64 61 74 61 20 20 3b  20 67 65 74 20 73 63 72  |ndata  ; get scr|
00016030  65 65 6e 20 61 64 64 72  65 73 73 0d a2 bc 18 20  |een address.... |
00016040  4d 4c 41 20 20 20 20 20  52 33 2c 52 37 2c 52 31  |MLA     R3,R7,R1|
00016050  2c 52 39 0d a2 c6 18 20  4d 4c 41 20 20 20 20 20  |,R9.... MLA     |
00016060  52 31 2c 52 38 2c 52 32  2c 52 33 0d a2 d0 06 20  |R1,R8,R2,R3.... |
00016070  3a 0d a2 da 13 20 4d 4f  56 20 20 20 20 20 52 33  |:.... MOV     R3|
00016080  2c 20 23 31 0d a2 e4 1e  20 53 54 52 20 20 20 20  |, #1.... STR    |
00016090  20 52 33 2c 20 66 31 36  31 36 5f 63 6f 75 6e 74  | R3, f1616_count|
000160a0  65 72 0d a2 ee 06 20 3a  0d a2 f8 15 20 2e 66 31  |er.... :.... .f1|
000160b0  36 31 36 5f 66 69 6c 6c  5f 6c 6f 6f 70 0d a3 02  |616_fill_loop...|
000160c0  06 20 3a 0d a3 0c 06 20  5d 0d a3 16 0f 20 e3 20  |. :.... ].... . |
000160d0  61 25 3d 31 20 b8 20 34  0d a3 20 0f 20 5b 4f 50  |a%=1 . 4.. . [OP|
000160e0  54 20 70 61 73 73 25 0d  a3 2a 06 20 3a 0d a3 34  |T pass%..*. :..4|
000160f0  17 20 4c 44 4d 49 41 20  20 20 52 31 2c 7b 52 32  |. LDMIA   R1,{R2|
00016100  2d 52 35 7d 0d a3 3e 17  20 53 54 4d 49 41 20 20  |-R5}..>. STMIA  |
00016110  20 52 30 2c 7b 52 32 2d  52 35 7d 0d a3 48 06 20  | R0,{R2-R5}..H. |
00016120  3a 0d a3 52 1c 20 53 55  42 20 20 20 20 20 52 30  |:..R. SUB     R0|
00016130  2c 52 30 2c 20 23 79 5f  73 68 69 66 74 0d a3 5c  |,R0, #y_shift..\|
00016140  1c 20 53 55 42 20 20 20  20 20 52 31 2c 52 31 2c  |. SUB     R1,R1,|
00016150  20 23 79 5f 73 68 69 66  74 0d a3 66 06 20 3a 0d  | #y_shift..f. :.|
00016160  a3 70 06 20 5d 0d a3 7a  06 20 ed 0d a3 84 0f 20  |.p. ]..z. ..... |
00016170  5b 4f 50 54 20 70 61 73  73 25 0d a3 8e 06 20 3a  |[OPT pass%.... :|
00016180  0d a3 98 1e 20 4c 44 52  20 20 20 20 20 52 33 2c  |.... LDR     R3,|
00016190  20 66 31 36 31 36 5f 63  6f 75 6e 74 65 72 0d a3  | f1616_counter..|
000161a0  a2 16 20 41 44 44 20 20  20 20 20 52 33 2c 52 33  |.. ADD     R3,R3|
000161b0  2c 20 23 31 0d a3 ac 1e  20 53 54 52 20 20 20 20  |, #1.... STR    |
000161c0  20 52 33 2c 20 66 31 36  31 36 5f 63 6f 75 6e 74  | R3, f1616_count|
000161d0  65 72 0d a3 b6 13 20 43  4d 50 20 20 20 20 20 52  |er.... CMP     R|
000161e0  33 2c 20 23 34 0d a3 c0  1c 20 42 4c 45 20 20 20  |3, #4.... BLE   |
000161f0  20 20 66 31 36 31 36 5f  66 69 6c 6c 5f 6c 6f 6f  |  f1616_fill_loo|
00016200  70 0d a3 ca 06 20 3a 0d  a3 d4 1d 20 4c 44 4d 46  |p.... :.... LDMF|
00016210  44 20 20 20 52 31 33 21  2c 7b 52 30 2d 52 31 32  |D   R13!,{R0-R12|
00016220  2c 50 43 7d 0d a3 de 06  20 3a 0d a3 e8 13 20 2e  |,PC}.... :.... .|
00016230  66 31 36 31 36 5f 63 6f  75 6e 74 65 72 0d a3 f2  |f1616_counter...|
00016240  0e 20 45 51 55 44 20 20  20 20 30 0d a3 fc 06 20  |. EQUD    0.... |
00016250  3a 0d a4 06 06 20 3a 0d  a4 10 06 20 3a 0d a4 1a  |:.... :.... :...|
00016260  14 20 2e 66 69 6c 6c 5f  66 69 6c 6c 5f 30 31 30  |. .fill_fill_010|
00016270  31 0d a4 24 06 20 3a 0d  a4 2e 1e 20 53 54 4d 46  |1..$. :.... STMF|
00016280  44 20 20 20 52 31 33 21  2c 7b 52 30 2d 52 31 32  |D   R13!,{R0-R12|
00016290  2c 52 31 34 7d 0d a4 38  06 20 3a 0d a4 42 18 20  |,R14}..8. :..B. |
000162a0  52 53 42 20 20 20 20 20  52 32 2c 52 32 2c 20 23  |RSB     R2,R2, #|
000162b0  32 35 36 0d a4 4c 06 20  3a 0d a4 56 13 20 43 4d  |256..L. :..V. CM|
000162c0  50 20 20 20 20 20 52 31  2c 20 23 30 0d a4 60 1c  |P     R1, #0..`.|
000162d0  20 42 4c 45 20 20 20 20  20 70 73 6d 5f 6e 6f 5f  | BLE     psm_no_|
000162e0  66 69 6c 6c 30 31 30 31  0d a4 6a 13 20 43 4d 50  |fill0101..j. CMP|
000162f0  20 20 20 20 20 52 32 2c  20 23 30 0d a4 74 1c 20  |     R2, #0..t. |
00016300  42 4c 45 20 20 20 20 20  70 73 6d 5f 6e 6f 5f 66  |BLE     psm_no_f|
00016310  69 6c 6c 30 31 30 31 0d  a4 7e 15 20 43 4d 50 20  |ill0101..~. CMP |
00016320  20 20 20 20 52 31 2c 20  23 33 32 30 0d a4 88 1c  |    R1, #320....|
00016330  20 42 47 45 20 20 20 20  20 70 73 6d 5f 6e 6f 5f  | BGE     psm_no_|
00016340  66 69 6c 6c 30 31 30 31  0d a4 92 15 20 43 4d 50  |fill0101.... CMP|
00016350  20 20 20 20 20 52 32 2c  20 23 32 35 36 0d a4 9c  |     R2, #256...|
00016360  1c 20 42 47 45 20 20 20  20 20 70 73 6d 5f 6e 6f  |. BGE     psm_no|
00016370  5f 66 69 6c 6c 30 31 30  31 0d a4 a6 19 20 42 20  |_fill0101.... B |
00016380  20 20 20 20 20 20 70 73  6d 5f 66 69 6c 6c 30 31  |      psm_fill01|
00016390  30 31 0d a4 b0 15 20 2e  70 73 6d 5f 6e 6f 5f 66  |01.... .psm_no_f|
000163a0  69 6c 6c 30 31 30 31 0d  a4 ba 1d 20 4c 44 4d 46  |ill0101.... LDMF|
000163b0  44 20 20 20 52 31 33 21  2c 7b 52 30 2d 52 31 32  |D   R13!,{R0-R12|
000163c0  2c 50 43 7d 0d a4 c4 12  20 2e 70 73 6d 5f 66 69  |,PC}.... .psm_fi|
000163d0  6c 6c 30 31 30 31 0d a4  ce 06 20 3a 0d a4 d8 35  |ll0101.... :...5|
000163e0  20 4d 4f 56 20 20 20 20  20 52 37 2c 20 23 78 5f  | MOV     R7, #x_|
000163f0  73 68 69 66 74 20 20 20  20 20 20 20 20 20 3b 20  |shift         ; |
00016400  67 65 74 20 73 63 72 65  65 6e 20 73 68 69 66 74  |get screen shift|
00016410  73 0d a4 e2 19 20 4d 4f  56 20 20 20 20 20 52 38  |s.... MOV     R8|
00016420  2c 20 23 79 5f 73 68 69  66 74 0d a4 ec 06 20 3a  |, #y_shift.... :|
00016430  0d a4 f6 3e 20 4c 44 52  20 20 20 20 20 52 39 2c  |...> LDR     R9,|
00016440  20 66 69 6c 6c 5f 61 64  72 5f 73 63 72 65 65 6e  | fill_adr_screen|
00016450  73 74 6f 72 65 3b 20 67  65 74 20 73 63 72 65 65  |store; get scree|
00016460  6e 73 74 6f 72 65 20 61  64 64 72 65 73 73 0d a5  |nstore address..|
00016470  00 14 20 4c 44 52 20 20  20 20 20 52 39 2c 5b 52  |.. LDR     R9,[R|
00016480  39 5d 0d a5 0a 18 20 4d  4c 41 20 20 20 20 20 52  |9].... MLA     R|
00016490  33 2c 52 37 2c 52 31 2c  52 39 0d a5 14 18 20 4d  |3,R7,R1,R9.... M|
000164a0  4c 41 20 20 20 20 20 52  30 2c 52 38 2c 52 32 2c  |LA     R0,R8,R2,|
000164b0  52 33 0d a5 1e 06 20 3a  0d a5 28 36 20 4c 44 52  |R3.... :..(6 LDR|
000164c0  20 20 20 20 20 52 39 2c  20 66 69 6c 6c 5f 73 63  |     R9, fill_sc|
000164d0  72 65 65 6e 64 61 74 61  20 20 3b 20 67 65 74 20  |reendata  ; get |
000164e0  73 63 72 65 65 6e 20 61  64 64 72 65 73 73 0d a5  |screen address..|
000164f0  32 18 20 4d 4c 41 20 20  20 20 20 52 33 2c 52 37  |2. MLA     R3,R7|
00016500  2c 52 31 2c 52 39 0d a5  3c 18 20 4d 4c 41 20 20  |,R1,R9..<. MLA  |
00016510  20 20 20 52 31 2c 52 38  2c 52 32 2c 52 33 0d a5  |   R1,R8,R2,R3..|
00016520  46 06 20 3a 0d a5 50 14  20 4c 44 52 42 20 20 20  |F. :..P. LDRB   |
00016530  20 52 32 2c 5b 52 31 5d  0d a5 5a 14 20 53 54 52  | R2,[R1]..Z. STR|
00016540  42 20 20 20 20 52 32 2c  5b 52 30 5d 0d a5 64 06  |B    R2,[R0]..d.|
00016550  20 3a 0d a5 6e 1d 20 4c  44 4d 46 44 20 20 20 52  | :..n. LDMFD   R|
00016560  31 33 21 2c 7b 52 30 2d  52 31 32 2c 50 43 7d 0d  |13!,{R0-R12,PC}.|
00016570  a5 78 06 20 3a 0d a5 82  06 20 5d 0d a5 8c 05 ed  |.x. :.... ].....|
00016580  0d a5 96 05 3a 0d a5 a0  19 21 63 6c 5f 61 64 72  |....:....!cl_adr|
00016590  5f 73 63 72 65 65 6e 3d  73 63 72 65 65 6e 0d a5  |_screen=screen..|
000165a0  aa 10 e3 20 61 25 3d 30  20 b8 20 32 35 35 0d a5  |... a%=0 . 255..|
000165b0  b4 14 20 72 25 3d b6 b6  28 61 25 2a 32 35 36 5e  |.. r%=..(a%*256^|
000165c0  33 29 0d a5 be 11 20 67  25 3d b6 28 61 25 2a 32  |3).... g%=.(a%*2|
000165d0  35 36 29 0d a5 c8 0a 20  62 25 3d 61 25 0d a5 d2  |56).... b%=a%...|
000165e0  4c 20 c8 99 20 22 43 6f  6c 6f 75 72 54 72 61 6e  |L .. "ColourTran|
000165f0  73 5f 52 65 74 75 72 6e  43 6f 6c 6f 75 72 4e 75  |s_ReturnColourNu|
00016600  6d 62 65 72 22 2c 28 72  25 3c 3c 38 29 2b 28 67  |mber",(r%<<8)+(g|
00016610  25 3c 3c 31 36 29 2b 28  62 25 3c 3c 32 34 29 20  |%<<16)+(b%<<24) |
00016620  b8 20 63 6f 6c 6f 75 72  25 0d a5 dc 1e 20 21 28  |. colour%.... !(|
00016630  66 6c 61 6d 65 5f 66 61  64 65 25 2b 61 25 29 3d  |flame_fade%+a%)=|
00016640  63 6f 6c 6f 75 72 25 0d  a5 e6 05 ed 0d a5 f0 05  |colour%.........|
00016650  3a 0d a5 fa 10 e3 20 61  25 3d 30 20 b8 20 32 35  |:..... a%=0 . 25|
00016660  35 0d a6 04 0f 20 72 25  3d 36 34 2b 61 25 2f 32  |5.... r%=64+a%/2|
00016670  0d a6 0e 10 20 67 25 3d  31 32 38 2b 61 25 2f 32  |.... g%=128+a%/2|
00016680  0d a6 18 10 20 62 25 3d  31 32 38 2b 61 25 2f 32  |.... b%=128+a%/2|
00016690  0d a6 22 4c 20 c8 99 20  22 43 6f 6c 6f 75 72 54  |.."L .. "ColourT|
000166a0  72 61 6e 73 5f 52 65 74  75 72 6e 43 6f 6c 6f 75  |rans_ReturnColou|
000166b0  72 4e 75 6d 62 65 72 22  2c 28 72 25 3c 3c 38 29  |rNumber",(r%<<8)|
000166c0  2b 28 67 25 3c 3c 31 36  29 2b 28 62 25 3c 3c 32  |+(g%<<16)+(b%<<2|
000166d0  34 29 20 b8 20 63 6f 6c  6f 75 72 25 0d a6 2c 1c  |4) . colour%..,.|
000166e0  20 21 28 67 75 6e 5f 66  61 64 65 25 2b 61 25 29  | !(gun_fade%+a%)|
000166f0  3d 63 6f 6c 6f 75 72 25  0d a6 36 05 ed 0d a6 40  |=colour%..6....@|
00016700  05 3a 0d a6 4a 3d 63 25  3d 8e 28 22 3c 54 68 69  |.:..J=c%=.("<Thi|
00016710  73 24 44 69 72 3e 2e 4c  65 76 65 6c 73 2e 4c 65  |s$Dir>.Levels.Le|
00016720  76 65 6c 22 2b c3 28 73  63 72 6e 25 29 2b 22 2e  |vel"+.(scrn%)+".|
00016730  50 6f 73 6e 22 2b c3 28  73 63 72 6e 25 29 29 0d  |Posn"+.(scrn%)).|
00016740  a6 54 0e e3 20 61 25 3d  30 20 b8 20 37 0d a6 5e  |.T.. a%=0 . 7..^|
00016750  0c 20 e8 23 63 25 2c 78  25 0d a6 68 0c 20 e8 23  |. .#c%,x%..h. .#|
00016760  63 25 2c 79 25 0d a6 72  19 20 21 28 61 25 2a 38  |c%,y%..r. !(a%*8|
00016770  2b 70 6f 73 69 74 69 6f  6e 73 29 3d 78 25 0d a6  |+positions)=x%..|
00016780  7c 1b 20 21 28 61 25 2a  38 2b 34 2b 70 6f 73 69  ||. !(a%*8+4+posi|
00016790  74 69 6f 6e 73 29 3d 79  25 0d a6 86 05 ed 0d a6  |tions)=y%.......|
000167a0  90 08 d9 23 63 25 0d a6  9a 05 3a 0d a6 a4 0d 70  |...#c%....:....p|
000167b0  25 3d 63 6c 69 73 74 25  0d a6 ae 10 e3 20 61 25  |%=clist%..... a%|
000167c0  3d 31 20 b8 20 36 34 30  0d a6 b8 11 20 f2 61 64  |=1 . 640.... .ad|
000167d0  64 5f 63 65 6c 6c 28 30  29 0d a6 c2 05 ed 0d a6  |d_cell(0).......|
000167e0  cc 11 f2 61 64 64 5f 63  65 6c 6c 28 2d 31 29 0d  |...add_cell(-1).|
000167f0  a6 d6 05 3a 0d a6 e0 0d  70 25 3d 73 6c 69 73 74  |...:....p%=slist|
00016800  25 0d a6 ea 0f e3 20 61  25 3d 31 20 b8 20 36 34  |%..... a%=1 . 64|
00016810  0d a6 f4 19 20 f2 61 64  64 5f 73 70 72 69 74 65  |.... .add_sprite|
00016820  28 30 2c 30 2c 30 2c 30  29 0d a6 fe 05 ed 0d a7  |(0,0,0,0).......|
00016830  08 19 f2 61 64 64 5f 73  70 72 69 74 65 28 30 2c  |...add_sprite(0,|
00016840  30 2c 2d 31 2c 30 29 0d  a7 12 0d 70 25 3d 73 6c  |0,-1,0)....p%=sl|
00016850  69 73 74 25 0d a7 1c 0f  e3 20 61 25 3d 31 20 b8  |ist%..... a%=1 .|
00016860  20 31 36 0d a7 26 19 20  f2 61 64 64 5f 73 70 72  | 16..&. .add_spr|
00016870  69 74 65 28 30 2c 30 2c  30 2c 30 29 0d a7 30 05  |ite(0,0,0,0)..0.|
00016880  ed 0d a7 3a 3e 63 25 3d  8e 28 22 3c 54 68 69 73  |...:>c%=.("<This|
00016890  24 44 69 72 3e 2e 4c 65  76 65 6c 73 2e 4c 65 76  |$Dir>.Levels.Lev|
000168a0  65 6c 22 2b c3 28 73 63  72 6e 25 29 2b 22 2e 44  |el"+.(scrn%)+".D|
000168b0  6f 6f 72 73 22 2b c3 28  73 63 72 6e 25 29 29 0d  |oors"+.(scrn%)).|
000168c0  a7 44 0e e3 20 61 25 3d  31 20 b8 20 34 0d a7 4e  |.D.. a%=1 . 4..N|
000168d0  0c 20 e8 23 63 25 2c 78  25 0d a7 58 0c 20 e8 23  |. .#c%,x%..X. .#|
000168e0  63 25 2c 79 25 0d a7 62  0c 20 e8 23 63 25 2c 74  |c%,y%..b. .#c%,t|
000168f0  25 0d a7 6c 0c 20 e8 23  63 25 2c 69 25 0d a7 76  |%..l. .#c%,i%..v|
00016900  1d 20 f2 61 64 64 5f 73  70 72 69 74 65 28 78 25  |. .add_sprite(x%|
00016910  2c 79 25 2c 31 33 2c 69  25 29 0d a7 80 05 ed 0d  |,y%,13,i%)......|
00016920  a7 8a 08 d9 23 63 25 0d  a7 94 39 63 25 3d 8e 28  |....#c%...9c%=.(|
00016930  22 3c 54 68 69 73 24 44  69 72 3e 2e 4c 65 76 65  |"<This$Dir>.Leve|
00016940  6c 73 2e 4c 65 76 65 6c  22 2b c3 28 73 63 72 6e  |ls.Level"+.(scrn|
00016950  25 29 2b 22 2e 47 53 77  69 74 63 68 65 73 22 29  |%)+".GSwitches")|
00016960  0d a7 9e 0e e3 20 61 25  3d 31 20 b8 20 34 0d a7  |..... a%=1 . 4..|
00016970  a8 0c 20 e8 23 63 25 2c  78 25 0d a7 b2 0c 20 e8  |.. .#c%,x%.... .|
00016980  23 63 25 2c 79 25 0d a7  bc 0c 20 e8 23 63 25 2c  |#c%,y%.... .#c%,|
00016990  74 25 0d a7 c6 0c 20 e8  23 63 25 2c 69 25 0d a7  |t%.... .#c%,i%..|
000169a0  d0 1d 20 f2 61 64 64 5f  73 70 72 69 74 65 28 78  |.. .add_sprite(x|
000169b0  25 2c 79 25 2c 31 34 2c  61 25 29 0d a7 da 05 ed  |%,y%,14,a%).....|
000169c0  0d a7 e4 08 d9 23 63 25  0d a7 ee 3d 63 25 3d 8e  |.....#c%...=c%=.|
000169d0  28 22 3c 54 68 69 73 24  44 69 72 3e 2e 4c 65 76  |("<This$Dir>.Lev|
000169e0  65 6c 73 2e 4c 65 76 65  6c 22 2b c3 28 73 63 72  |els.Level"+.(scr|
000169f0  6e 25 29 2b 22 2e 47 75  6e 73 22 2b c3 28 73 63  |n%)+".Guns"+.(sc|
00016a00  72 6e 25 29 29 0d a7 f8  0e e3 20 61 25 3d 31 20  |rn%))..... a%=1 |
00016a10  b8 20 34 0d a8 02 0c 20  e8 23 63 25 2c 78 25 0d  |. 4.... .#c%,x%.|
00016a20  a8 0c 0c 20 e8 23 63 25  2c 79 25 0d a8 16 0c 20  |... .#c%,y%.... |
00016a30  e8 23 63 25 2c 74 25 0d  a8 20 0c 20 e8 23 63 25  |.#c%,t%.. . .#c%|
00016a40  2c 69 25 0d a8 2a 1d 20  f2 61 64 64 5f 73 70 72  |,i%..*. .add_spr|
00016a50  69 74 65 28 78 25 2c 79  25 2c 31 35 2c 61 25 29  |ite(x%,y%,15,a%)|
00016a60  0d a8 34 05 ed 0d a8 3e  08 d9 23 63 25 0d a8 48  |..4....>..#c%..H|
00016a70  2d f2 61 64 64 5f 73 70  72 69 74 65 28 31 31 31  |-.add_sprite(111|
00016a80  36 2c 33 32 2c 32 2c 28  31 32 38 3c 3c 38 29 2b  |6,32,2,(128<<8)+|
00016a90  28 31 32 38 3c 3c 31 36  29 29 0d a8 52 2c f2 61  |(128<<16))..R,.a|
00016aa0  64 64 5f 73 70 72 69 74  65 28 38 34 2c 37 34 38  |dd_sprite(84,748|
00016ab0  2c 31 2c 28 31 32 38 3c  3c 38 29 2b 28 31 32 38  |,1,(128<<8)+(128|
00016ac0  3c 3c 31 36 29 29 0d a8  5c 3f 63 25 3d 8e 28 22  |<<16))..\?c%=.("|
00016ad0  3c 54 68 69 73 24 44 69  72 3e 2e 4c 65 76 65 6c  |<This$Dir>.Level|
00016ae0  73 2e 4c 65 76 65 6c 22  2b c3 28 73 63 72 6e 25  |s.Level"+.(scrn%|
00016af0  29 2b 22 2e 46 6c 61 6d  65 73 22 2b c3 28 73 63  |)+".Flames"+.(sc|
00016b00  72 6e 25 29 29 0d a8 66  0f e3 20 61 25 3d 31 20  |rn%))..f.. a%=1 |
00016b10  b8 20 31 36 0d a8 70 0c  20 e8 23 63 25 2c 78 25  |. 16..p. .#c%,x%|
00016b20  0d a8 7a 0c 20 e8 23 63  25 2c 79 25 0d a8 84 0c  |..z. .#c%,y%....|
00016b30  20 e8 23 63 25 2c 74 25  0d a8 8e 0c 20 e8 23 63  | .#c%,t%.... .#c|
00016b40  25 2c 69 25 0d a8 98 1c  20 f2 61 64 64 5f 73 70  |%,i%.... .add_sp|
00016b50  72 69 74 65 28 78 25 2c  79 25 2c 33 2c 69 25 29  |rite(x%,y%,3,i%)|
00016b60  0d a8 a2 05 ed 0d a8 ac  08 d9 23 63 25 0d a8 b6  |..........#c%...|
00016b70  0b d6 20 73 74 61 72 74  0d a8 c0 12 d6 20 63 6c  |.. start..... cl|
00016b80  65 61 72 5f 73 63 72 65  65 6e 0d a8 ca 05 e1 0d  |ear_screen......|
00016b90  a8 d4 05 3a 0d a8 de 05  3a 0d a8 e8 05 3a 0d a8  |...:....:....:..|
00016ba0  f2 0c dd 20 f2 65 72 72  6f 72 0d a8 fc 18 c8 99  |... .error......|
00016bb0  20 22 48 6f 75 72 67 6c  61 73 73 5f 53 6d 61 73  | "Hourglass_Smas|
00016bc0  68 22 0d a9 06 08 c8 97  20 87 0d a9 10 0c e7 20  |h"...... ...... |
00016bd0  9f 3d 31 37 20 8c 0d a9  1a 17 20 c8 99 20 22 4f  |.=17 ..... .. "O|
00016be0  53 5f 42 79 74 65 22 2c  31 31 32 2c 31 0d a9 24  |S_Byte",112,1..$|
00016bf0  06 20 db 0d a9 2e 17 20  c8 99 20 22 4f 53 5f 42  |. ..... .. "OS_B|
00016c00  79 74 65 22 2c 31 31 33  2c 31 0d a9 38 05 cc 0d  |yte",113,1..8...|
00016c10  a9 42 17 20 c8 99 20 22  4f 53 5f 42 79 74 65 22  |.B. .. "OS_Byte"|
00016c20  2c 31 31 32 2c 31 0d a9  4c 06 20 db 0d a9 56 17  |,112,1..L. ...V.|
00016c30  20 c8 99 20 22 4f 53 5f  42 79 74 65 22 2c 31 31  | .. "OS_Byte",11|
00016c40  33 2c 31 0d a9 60 17 20  f1 20 f6 24 3b 22 20 61  |3,1..`. . .$;" a|
00016c50  74 20 6c 69 6e 65 20 22  3b 9e 0d a9 6a 05 cd 0d  |t line ";...j...|
00016c60  a9 74 05 e1 0d a9 7e 05  3a 0d a9 88 05 3a 0d a9  |.t....~.:....:..|
00016c70  92 05 3a 0d a9 9c 1a dd  20 a4 62 6f 72 64 65 72  |..:..... .border|
00016c80  63 6f 6c 28 72 25 2c 67  25 2c 62 25 29 0d a9 a6  |col(r%,g%,b%)...|
00016c90  0f 20 5b 4f 50 54 20 70  61 73 73 25 0d a9 b0 13  |. [OPT pass%....|
00016ca0  3b 53 57 49 20 20 20 20  20 32 35 36 2b 31 39 0d  |;SWI     256+19.|
00016cb0  a9 ba 12 3b 53 57 49 20  20 20 20 20 32 35 36 2b  |...;SWI     256+|
00016cc0  30 0d a9 c4 13 3b 53 57  49 20 20 20 20 20 32 35  |0....;SWI     25|
00016cd0  36 2b 32 34 0d a9 ce 13  3b 53 57 49 20 20 20 20  |6+24....;SWI    |
00016ce0  20 32 35 36 2b 72 25 0d  a9 d8 13 3b 53 57 49 20  | 256+r%....;SWI |
00016cf0  20 20 20 20 32 35 36 2b  67 25 0d a9 e2 13 3b 53  |    256+g%....;S|
00016d00  57 49 20 20 20 20 20 32  35 36 2b 62 25 0d a9 ec  |WI     256+b%...|
00016d10  06 20 5d 0d a9 f6 06 3d  30 0d aa 00 05 3a 0d aa  |. ]....=0....:..|
00016d20  0a 05 3a 0d aa 14 05 3a  0d aa 1e 1e dd 20 f2 61  |..:....:..... .a|
00016d30  64 64 5f 73 70 72 69 74  65 28 78 25 2c 79 25 2c  |dd_sprite(x%,y%,|
00016d40  74 25 2c 69 25 29 0d aa  28 0f 21 28 70 25 2b 30  |t%,i%)..(.!(p%+0|
00016d50  30 29 3d 74 25 0d aa 32  0f 21 28 70 25 2b 30 34  |0)=t%..2.!(p%+04|
00016d60  29 3d 78 25 0d aa 3c 0f  21 28 70 25 2b 30 38 29  |)=x%..<.!(p%+08)|
00016d70  3d 79 25 0d aa 46 0f 21  28 70 25 2b 31 32 29 3d  |=y%..F.!(p%+12)=|
00016d80  69 25 0d aa 50 0a 70 25  2b 3d 31 36 0d aa 5a 05  |i%..P.p%+=16..Z.|
00016d90  e1 0d aa 64 05 3a 0d aa  6e 05 3a 0d aa 78 05 3a  |...d.:..n.:..x.:|
00016da0  0d aa 82 13 dd 20 f2 61  64 64 5f 63 65 6c 6c 28  |..... .add_cell(|
00016db0  74 25 29 0d aa 8c 0c 70  25 21 30 30 3d 74 25 0d  |t%)....p%!00=t%.|
00016dc0  aa 96 0a 70 25 2b 3d 33  32 0d aa a0 05 e1 0d aa  |...p%+=32.......|
00016dd0  aa 05 3a 0d aa b4 05 3a  0d aa be 05 3a 0d aa c8  |..:....:....:...|
00016de0  12 dd 20 f2 61 73 73 6d  5f 64 65 63 6f 6d 70 0d  |.. .assm_decomp.|
00016df0  aa d2 21 e3 20 70 61 73  73 25 3d 25 30 30 30 30  |..!. pass%=%0000|
00016e00  20 b8 20 25 31 30 31 30  20 88 20 25 31 30 31 30  | . %1010 . %1010|
00016e10  0d aa dc 14 20 50 25 3d  64 65 63 6f 6d 70 5f 63  |.... P%=decomp_c|
00016e20  6f 64 65 25 0d aa e6 19  20 4c 25 3d 64 65 63 6f  |ode%.... L%=deco|
00016e30  6d 70 5f 63 6f 64 65 25  2b 31 30 32 30 0d aa f0  |mp_code%+1020...|
00016e40  0f 20 5b 4f 50 54 20 70  61 73 73 25 0d aa fa 06  |. [OPT pass%....|
00016e50  20 3a 0d ab 04 0f 20 2e  64 63 5f 75 6e 75 73 65  | :.... .dc_unuse|
00016e60  64 0d ab 0e 0e 20 45 51  55 44 20 20 20 20 30 0d  |d.... EQUD    0.|
00016e70  ab 18 0d 20 2e 64 63 5f  63 6d 70 70 0d ab 22 0e  |... .dc_cmpp..".|
00016e80  20 45 51 55 44 20 20 20  20 30 0d ab 2c 10 20 2e  | EQUD    0..,. .|
00016e90  64 63 5f 61 64 64 72 65  73 73 0d ab 36 0e 20 45  |dc_address..6. E|
00016ea0  51 55 44 20 20 20 20 30  0d ab 40 0e 20 2e 64 63  |QUD    0..@. .dc|
00016eb0  5f 76 61 6c 75 65 0d ab  4a 0e 20 45 51 55 44 20  |_value..J. EQUD |
00016ec0  20 20 20 30 0d ab 54 14  20 2e 64 63 5f 72 65 70  |   0..T. .dc_rep|
00016ed0  65 74 69 74 69 6f 6e 73  0d ab 5e 0e 20 45 51 55  |etitions..^. EQU|
00016ee0  44 20 20 20 20 30 0d ab  68 06 20 3a 0d ab 72 0e  |D    0..h. :..r.|
00016ef0  20 2e 64 63 5f 73 74 61  72 74 0d ab 7c 18 20 4c  | .dc_start..|. L|
00016f00  44 52 20 20 20 20 20 52  30 2c 20 64 63 5f 63 6d  |DR     R0, dc_cm|
00016f10  70 70 0d ab 86 14 20 4c  44 52 20 20 20 20 20 52  |pp.... LDR     R|
00016f20  31 2c 5b 52 30 5d 0d ab  90 1a 20 53 54 52 20 20  |1,[R0].... STR  |
00016f30  20 20 20 52 31 2c 20 64  63 5f 75 6e 75 73 65 64  |   R1, dc_unused|
00016f40  0d ab 9a 16 20 41 44 44  20 20 20 20 20 52 30 2c  |.... ADD     R0,|
00016f50  52 30 2c 20 23 34 0d ab  a4 18 20 53 54 52 20 20  |R0, #4.... STR  |
00016f60  20 20 20 52 30 2c 20 64  63 5f 63 6d 70 70 0d ab  |   R0, dc_cmpp..|
00016f70  ae 15 20 2e 64 63 5f 72  65 70 65 61 74 5f 6c 6f  |.. .dc_repeat_lo|
00016f80  6f 70 31 0d ab b8 18 20  4c 44 52 20 20 20 20 20  |op1.... LDR     |
00016f90  52 30 2c 20 64 63 5f 63  6d 70 70 0d ab c2 14 20  |R0, dc_cmpp.... |
00016fa0  4c 44 52 20 20 20 20 20  52 30 2c 5b 52 30 5d 0d  |LDR     R0,[R0].|
00016fb0  ab cc 1a 20 4c 44 52 20  20 20 20 20 52 31 2c 20  |... LDR     R1, |
00016fc0  64 63 5f 75 6e 75 73 65  64 0d ab d6 12 20 43 4d  |dc_unused.... CM|
00016fd0  50 20 20 20 20 20 52 30  2c 52 31 0d ab e0 1a 20  |P     R0,R1.... |
00016fe0  42 45 51 20 20 20 20 20  64 63 5f 64 65 63 6f 6d  |BEQ     dc_decom|
00016ff0  70 72 65 73 73 0d ab ea  0d 20 2e 64 63 5f 63 6f  |press.... .dc_co|
00017000  70 79 0d ab f4 18 20 4c  44 52 20 20 20 20 20 52  |py.... LDR     R|
00017010  30 2c 20 64 63 5f 63 6d  70 70 0d ab fe 14 20 4c  |0, dc_cmpp.... L|
00017020  44 52 20 20 20 20 20 52  31 2c 5b 52 30 5d 0d ac  |DR     R1,[R0]..|
00017030  08 1b 20 4c 44 52 20 20  20 20 20 52 32 2c 20 64  |.. LDR     R2, d|
00017040  63 5f 61 64 64 72 65 73  73 0d ac 12 14 20 53 54  |c_address.... ST|
00017050  52 20 20 20 20 20 52 31  2c 5b 52 32 5d 0d ac 1c  |R     R1,[R2]...|
00017060  18 20 4c 44 52 20 20 20  20 20 52 30 2c 20 64 63  |. LDR     R0, dc|
00017070  5f 63 6d 70 70 0d ac 26  16 20 41 44 44 20 20 20  |_cmpp..&. ADD   |
00017080  20 20 52 30 2c 52 30 2c  20 23 34 0d ac 30 1b 20  |  R0,R0, #4..0. |
00017090  4c 44 52 20 20 20 20 20  52 32 2c 20 64 63 5f 61  |LDR     R2, dc_a|
000170a0  64 64 72 65 73 73 0d ac  3a 16 20 41 44 44 20 20  |ddress..:. ADD  |
000170b0  20 20 20 52 32 2c 52 32  2c 20 23 34 0d ac 44 18  |   R2,R2, #4..D.|
000170c0  20 53 54 52 20 20 20 20  20 52 30 2c 20 64 63 5f  | STR     R0, dc_|
000170d0  63 6d 70 70 0d ac 4e 1b  20 53 54 52 20 20 20 20  |cmpp..N. STR    |
000170e0  20 52 32 2c 20 64 63 5f  61 64 64 72 65 73 73 0d  | R2, dc_address.|
000170f0  ac 58 16 20 42 20 20 20  20 20 20 20 64 63 5f 75  |.X. B       dc_u|
00017100  6e 74 69 6c 31 0d ac 62  13 20 2e 64 63 5f 64 65  |ntil1..b. .dc_de|
00017110  63 6f 6d 70 72 65 73 73  0d ac 6c 18 20 4c 44 52  |compress..l. LDR|
00017120  20 20 20 20 20 52 30 2c  20 64 63 5f 63 6d 70 70  |     R0, dc_cmpp|
00017130  0d ac 76 18 20 4c 44 52  20 20 20 20 20 52 37 2c  |..v. LDR     R7,|
00017140  5b 52 30 2c 20 23 34 5d  0d ac 80 19 20 53 54 52  |[R0, #4].... STR|
00017150  20 20 20 20 20 52 37 2c  20 64 63 5f 76 61 6c 75  |     R7, dc_valu|
00017160  65 0d ac 8a 18 20 4c 44  52 20 20 20 20 20 52 30  |e.... LDR     R0|
00017170  2c 5b 52 30 2c 20 23 38  5d 0d ac 94 1f 20 53 54  |,[R0, #8].... ST|
00017180  52 20 20 20 20 20 52 30  2c 20 64 63 5f 72 65 70  |R     R0, dc_rep|
00017190  65 74 69 74 69 6f 6e 73  0d ac 9e 13 20 43 4d 50  |etitions.... CMP|
000171a0  20 20 20 20 20 52 30 2c  20 23 30 0d ac a8 16 20  |     R0, #0.... |
000171b0  42 45 51 20 20 20 20 20  64 63 5f 75 6e 74 69 6c  |BEQ     dc_until|
000171c0  31 0d ac b2 19 20 4c 44  52 20 20 20 20 20 52 37  |1.... LDR     R7|
000171d0  2c 20 64 63 5f 76 61 6c  75 65 0d ac bc 1b 20 4c  |, dc_value.... L|
000171e0  44 52 20 20 20 20 20 52  38 2c 20 64 63 5f 61 64  |DR     R8, dc_ad|
000171f0  64 72 65 73 73 0d ac c6  13 20 4d 4f 56 20 20 20  |dress.... MOV   |
00017200  20 20 52 39 2c 20 23 31  0d ac d0 15 20 2e 64 63  |  R9, #1.... .dc|
00017210  5f 72 65 70 65 61 74 5f  6c 6f 6f 70 32 0d ac da  |_repeat_loop2...|
00017220  15 20 53 54 4d 49 41 20  20 20 52 38 21 2c 7b 52  |. STMIA   R8!,{R|
00017230  37 7d 0d ac e4 16 20 41  44 44 20 20 20 20 20 52  |7}.... ADD     R|
00017240  39 2c 52 39 2c 20 23 31  0d ac ee 1f 20 4c 44 52  |9,R9, #1.... LDR|
00017250  20 20 20 20 20 52 30 2c  20 64 63 5f 72 65 70 65  |     R0, dc_repe|
00017260  74 69 74 69 6f 6e 73 0d  ac f8 12 20 43 4d 50 20  |titions.... CMP |
00017270  20 20 20 20 52 39 2c 52  30 0d ad 02 1c 20 42 4c  |    R9,R0.... BL|
00017280  45 20 20 20 20 20 64 63  5f 72 65 70 65 61 74 5f  |E     dc_repeat_|
00017290  6c 6f 6f 70 32 0d ad 0c  1b 20 53 54 52 20 20 20  |loop2.... STR   |
000172a0  20 20 52 38 2c 20 64 63  5f 61 64 64 72 65 73 73  |  R8, dc_address|
000172b0  0d ad 16 18 20 4c 44 52  20 20 20 20 20 52 30 2c  |.... LDR     R0,|
000172c0  20 64 63 5f 63 6d 70 70  0d ad 20 17 20 41 44 44  | dc_cmpp.. . ADD|
000172d0  20 20 20 20 20 52 30 2c  52 30 2c 20 23 31 32 0d  |     R0,R0, #12.|
000172e0  ad 2a 18 20 53 54 52 20  20 20 20 20 52 30 2c 20  |.*. STR     R0, |
000172f0  64 63 5f 63 6d 70 70 0d  ad 34 0f 20 2e 64 63 5f  |dc_cmpp..4. .dc_|
00017300  75 6e 74 69 6c 31 0d ad  3e 18 20 4c 44 52 20 20  |until1..>. LDR  |
00017310  20 20 20 52 30 2c 20 64  63 5f 63 6d 70 70 0d ad  |   R0, dc_cmpp..|
00017320  48 14 20 4c 44 52 20 20  20 20 20 52 31 2c 5b 52  |H. LDR     R1,[R|
00017330  30 5d 0d ad 52 1a 20 4c  44 52 20 20 20 20 20 52  |0]..R. LDR     R|
00017340  32 2c 20 64 63 5f 75 6e  75 73 65 64 0d ad 5c 12  |2, dc_unused..\.|
00017350  20 43 4d 50 20 20 20 20  20 52 31 2c 52 32 0d ad  | CMP     R1,R2..|
00017360  66 1c 20 42 4e 45 20 20  20 20 20 64 63 5f 72 65  |f. BNE     dc_re|
00017370  70 65 61 74 5f 6c 6f 6f  70 31 0d ad 70 18 20 4c  |peat_loop1..p. L|
00017380  44 52 20 20 20 20 20 52  33 2c 5b 52 30 2c 20 23  |DR     R3,[R0, #|
00017390  38 5d 0d ad 7a 13 20 43  4d 50 20 20 20 20 20 52  |8]..z. CMP     R|
000173a0  33 2c 20 23 30 0d ad 84  1c 20 42 4e 45 20 20 20  |3, #0.... BNE   |
000173b0  20 20 64 63 5f 72 65 70  65 61 74 5f 6c 6f 6f 70  |  dc_repeat_loop|
000173c0  31 0d ad 8e 13 20 4d 4f  56 20 20 20 20 20 50 43  |1.... MOV     PC|
000173d0  2c 52 31 34 0d ad 98 06  20 3a 0d ad a2 06 20 5d  |,R14.... :.... ]|
000173e0  0d ad ac 05 ed 0d ad b6  05 e1 0d ad c0 05 3a 0d  |..............:.|
000173f0  ad ca 05 3a 0d ad d4 05  3a 0d ad de 1c dd 20 f2  |...:....:..... .|
00017400  64 65 63 6f 6d 70 72 65  73 73 28 66 72 6f 6d 24  |decompress(from$|
00017410  2c 74 6f 25 29 0d ad e8  25 c8 99 20 22 4f 53 5f  |,to%)...%.. "OS_|
00017420  46 69 6c 65 22 2c 32 35  35 2c 66 72 6f 6d 24 2c  |File",255,from$,|
00017430  63 6d 70 64 61 74 61 25  2c 30 0d ad f2 13 21 64  |cmpdata%,0....!d|
00017440  63 5f 61 64 64 72 65 73  73 3d 74 6f 25 0d ad fc  |c_address=to%...|
00017450  15 21 64 63 5f 63 6d 70  70 3d 63 6d 70 64 61 74  |.!dc_cmpp=cmpdat|
00017460  61 25 0d ae 06 0e d6 20  64 63 5f 73 74 61 72 74  |a%..... dc_start|
00017470  0d ae 10 05 e1 0d ae 1a  05 3a 0d ae 24 05 3a 0d  |.........:..$.:.|
00017480  ae 2e 05 3a 0d ae 38 1c  dd 20 f2 61 73 73 65 6d  |...:..8.. .assem|
00017490  62 6c 65 5f 63 6c 65 61  72 5f 73 63 72 65 65 6e  |ble_clear_screen|
000174a0  0d ae 42 21 e3 20 70 61  73 73 25 3d 25 30 30 30  |..B!. pass%=%000|
000174b0  30 20 b8 20 25 31 30 31  30 20 88 20 25 31 30 31  |0 . %1010 . %101|
000174c0  30 0d ae 4c 10 20 50 25  3d 63 6c 5f 63 6f 64 65  |0..L. P%=cl_code|
000174d0  25 0d ae 56 15 20 4c 25  3d 63 6c 5f 63 6f 64 65  |%..V. L%=cl_code|
000174e0  25 2b 32 30 34 34 0d ae  60 0f 20 5b 4f 50 54 20  |%+2044..`. [OPT |
000174f0  70 61 73 73 25 0d ae 6a  06 20 3a 0d ae 74 0e 20  |pass%..j. :..t. |
00017500  2e 73 65 74 75 70 5f 63  73 0d ae 7e 1e 20 53 54  |.setup_cs..~. ST|
00017510  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 30 2d 52  |MFD   R13!,{R0-R|
00017520  31 32 2c 52 31 34 7d 0d  ae 88 20 20 4c 44 52 20  |12,R14}...  LDR |
00017530  20 20 20 20 52 30 2c 20  63 6c 5f 61 64 72 5f 76  |    R0, cl_adr_v|
00017540  64 75 5f 76 61 72 73 0d  ae 92 1e 20 4c 44 52 20  |du_vars.... LDR |
00017550  20 20 20 20 52 31 2c 20  63 6c 5f 61 64 72 5f 73  |    R1, cl_adr_s|
00017560  63 72 65 65 6e 0d ae 9c  3b 20 53 57 49 20 20 20  |creen...; SWI   |
00017570  20 20 22 4f 53 5f 52 65  61 64 56 64 75 56 61 72  |  "OS_ReadVduVar|
00017580  69 61 62 6c 65 73 22 20  20 20 3b 20 73 65 74 20  |iables"   ; set |
00017590  75 70 20 76 64 75 20 76  61 72 69 61 62 6c 65 73  |up vdu variables|
000175a0  0d ae a6 1d 20 4c 44 4d  46 44 20 20 20 52 31 33  |.... LDMFD   R13|
000175b0  21 2c 7b 52 30 2d 52 31  32 2c 50 43 7d 0d ae b0  |!,{R0-R12,PC}...|
000175c0  06 20 3a 0d ae ba 12 20  2e 63 6c 65 61 72 5f 73  |. :.... .clear_s|
000175d0  63 72 65 65 6e 0d ae c4  1e 20 53 54 4d 46 44 20  |creen.... STMFD |
000175e0  20 20 52 31 33 21 2c 7b  52 30 2d 52 31 32 2c 52  |  R13!,{R0-R12,R|
000175f0  31 34 7d 0d ae ce 06 20  3a 0d ae d8 45 20 4c 44  |14}.... :...E LD|
00017600  52 20 20 20 20 20 52 31  31 2c 20 61 64 72 5f 63  |R     R11, adr_c|
00017610  6c 73 63 6f 6c 6f 75 72  73 20 20 20 20 20 3b 20  |lscolours     ; |
00017620  67 65 74 20 74 68 65 20  61 64 64 72 65 73 73 20  |get the address |
00017630  6f 66 20 63 6f 6c 6f 75  72 20 64 61 74 61 0d ae  |of colour data..|
00017640  e2 2f 20 4d 4f 56 20 20  20 20 20 52 39 2c 20 23  |./ MOV     R9, #|
00017650  30 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |0               |
00017660  20 20 20 3b 20 79 20 63  6f 2d 6f 72 64 0d ae ec  |   ; y co-ord...|
00017670  06 20 3a 0d ae f6 0e 20  2e 63 6c 5f 6c 6f 6f 70  |. :.... .cl_loop|
00017680  31 0d af 00 06 20 3a 0d  af 0a 1f 20 4c 44 52 20  |1.... :.... LDR |
00017690  20 20 20 20 52 31 30 2c  20 63 6c 5f 61 64 72 5f  |    R10, cl_adr_|
000176a0  73 63 72 65 65 6e 0d af  14 39 20 4c 44 52 20 20  |screen...9 LDR  |
000176b0  20 20 20 52 31 30 2c 5b  52 31 30 5d 20 20 20 20  |   R10,[R10]    |
000176c0  20 20 20 20 20 20 20 20  20 20 20 3b 20 67 65 74  |           ; get|
000176d0  20 73 63 72 65 65 6e 20  61 64 64 72 65 73 73 0d  | screen address.|
000176e0  af 1e 35 20 41 44 44 20  20 20 20 20 52 37 2c 52  |..5 ADD     R7,R|
000176f0  31 30 2c 20 23 26 31 34  30 30 30 20 20 20 20 20  |10, #&14000     |
00017700  20 20 20 20 3b 20 67 65  74 20 73 63 72 65 65 6e  |    ; get screen|
00017710  20 65 6e 64 0d af 28 06  20 3a 0d af 32 0e 20 2e  | end..(. :..2. .|
00017720  63 6c 5f 6c 6f 6f 70 33  0d af 3c 06 20 5d 0d af  |cl_loop3..<. ]..|
00017730  46 10 20 e3 20 61 25 3d  30 20 b8 20 31 35 0d af  |F. . a%=0 . 15..|
00017740  50 18 20 e3 20 62 25 3d  30 20 b8 20 66 61 64 65  |P. . b%=0 . fade|
00017750  72 25 20 88 20 34 0d af  5a 0f 20 5b 4f 50 54 20  |r% . 4..Z. [OPT |
00017760  70 61 73 73 25 0d af 64  06 20 3a 0d af 6e 19 20  |pass%..d. :..n. |
00017770  41 44 44 20 20 20 20 20  52 31 30 2c 52 31 30 2c  |ADD     R10,R10,|
00017780  20 23 62 25 0d af 78 31  20 42 4c 20 20 20 20 20  | #b%..x1 BL     |
00017790  20 63 6c 5f 63 6c 73 20  20 20 20 20 20 20 20 20  | cl_cls         |
000177a0  20 20 20 20 20 20 20 20  20 3b 20 64 69 6d 20 73  |         ; dim s|
000177b0  63 72 65 65 6e 0d af 82  19 20 53 55 42 20 20 20  |creen.... SUB   |
000177c0  20 20 52 31 30 2c 52 31  30 2c 20 23 62 25 0d af  |  R10,R10, #b%..|
000177d0  8c 06 20 3a 0d af 96 14  20 4d 4f 56 20 20 20 20  |.. :.... MOV    |
000177e0  20 52 30 2c 20 23 31 39  0d af a0 16 20 53 57 49  | R0, #19.... SWI|
000177f0  20 20 20 20 20 22 4f 53  5f 42 79 74 65 22 0d af  |     "OS_Byte"..|
00017800  aa 06 20 3a 0d af b4 06  20 5d 0d af be 06 20 ed  |.. :.... ].... .|
00017810  0d af c8 06 20 ed 0d af  d2 0f 20 5b 4f 50 54 20  |.... ..... [OPT |
00017820  70 61 73 73 25 0d af dc  06 20 3a 0d af e6 15 20  |pass%.... :.... |
00017830  2e 63 6c 5f 65 6e 64 5f  72 6f 75 74 69 6e 65 73  |.cl_end_routines|
00017840  0d af f0 06 20 3a 0d af  fa 0c 20 2e 63 6c 5f 65  |.... :.... .cl_e|
00017850  6e 64 0d b0 04 1d 20 4c  44 4d 46 44 20 20 20 52  |nd.... LDMFD   R|
00017860  31 33 21 2c 7b 52 30 2d  52 31 32 2c 50 43 7d 0d  |13!,{R0-R12,PC}.|
00017870  b0 0e 06 20 3a 0d b0 18  0c 20 2e 63 6c 5f 63 6c  |... :.... .cl_cl|
00017880  73 0d b0 22 13 20 4d 4f  56 20 20 20 20 20 52 36  |s..". MOV     R6|
00017890  2c 52 31 30 0d b0 2c 15  20 4d 4f 56 20 20 20 20  |,R10..,. MOV    |
000178a0  20 52 34 2c 20 23 26 46  46 0d b0 36 0e 20 2e 63  | R4, #&FF..6. .c|
000178b0  6c 5f 6c 6f 6f 70 32 0d  b0 40 14 20 4c 44 52 20  |l_loop2..@. LDR |
000178c0  20 20 20 20 52 30 2c 5b  52 36 5d 0d b0 4a 06 20  |    R0,[R6]..J. |
000178d0  3a 0d b0 54 1a 20 4d 4f  56 20 20 20 20 20 52 33  |:..T. MOV     R3|
000178e0  2c 52 30 2c 20 52 4f 52  20 23 38 0d b0 5e 12 20  |,R0, ROR #8..^. |
000178f0  43 4d 50 20 20 20 20 20  52 33 2c 52 30 0d b0 68  |CMP     R3,R0..h|
00017900  18 20 42 4e 45 20 20 20  20 20 63 6c 5f 6e 6f 74  |. BNE     cl_not|
00017910  5f 73 61 6d 65 0d b0 72  13 20 80 20 20 20 20 20  |_same..r. .     |
00017920  52 31 2c 52 34 2c 52 30  0d b0 7c 18 20 4c 44 52  |R1,R4,R0..|. LDR|
00017930  42 20 20 20 20 52 31 2c  5b 52 31 31 2c 52 31 5d  |B    R1,[R11,R1]|
00017940  0d b0 86 1c 20 84 52 20  20 20 20 20 52 33 2c 52  |.... .R     R3,R|
00017950  31 2c 52 31 2c 20 4c 53  4c 20 23 38 0d b0 90 1d  |1,R1, LSL #8....|
00017960  20 84 52 20 20 20 20 20  52 33 2c 52 33 2c 52 33  | .R     R3,R3,R3|
00017970  2c 20 4c 53 4c 20 23 31  36 0d b0 9a 06 20 3a 0d  |, LSL #16.... :.|
00017980  b0 a4 1b 20 42 20 20 20  20 20 20 20 63 6c 5f 64  |... B       cl_d|
00017990  6f 6e 65 5f 70 69 78 65  6c 73 0d b0 ae 06 20 3a  |one_pixels.... :|
000179a0  0d b0 b8 11 20 2e 63 6c  5f 6e 6f 74 5f 73 61 6d  |.... .cl_not_sam|
000179b0  65 0d b0 c2 13 20 80 20  20 20 20 20 52 31 2c 52  |e.... .     R1,R|
000179c0  34 2c 52 30 0d b0 cc 18  20 4c 44 52 42 20 20 20  |4,R0.... LDRB   |
000179d0  20 52 31 2c 5b 52 31 31  2c 52 31 5d 0d b0 d6 12  | R1,[R11,R1]....|
000179e0  20 4d 4f 56 20 20 20 20  20 52 33 2c 52 31 0d b0  | MOV     R3,R1..|
000179f0  e0 06 20 3a 0d b0 ea 1b  20 80 20 20 20 20 20 52  |.. :.... .     R|
00017a00  31 2c 52 34 2c 52 30 2c  20 4c 53 52 20 23 38 0d  |1,R4,R0, LSR #8.|
00017a10  b0 f4 18 20 4c 44 52 42  20 20 20 20 52 31 2c 5b  |... LDRB    R1,[|
00017a20  52 31 31 2c 52 31 5d 0d  b0 fe 1c 20 84 52 20 20  |R11,R1].... .R  |
00017a30  20 20 20 52 33 2c 52 33  2c 52 31 2c 20 4c 53 4c  |   R3,R3,R1, LSL|
00017a40  20 23 38 0d b1 08 06 20  3a 0d b1 12 1c 20 80 20  | #8.... :.... . |
00017a50  20 20 20 20 52 31 2c 52  34 2c 52 30 2c 20 4c 53  |    R1,R4,R0, LS|
00017a60  52 20 23 31 36 0d b1 1c  18 20 4c 44 52 42 20 20  |R #16.... LDRB  |
00017a70  20 20 52 31 2c 5b 52 31  31 2c 52 31 5d 0d b1 26  |  R1,[R11,R1]..&|
00017a80  1d 20 84 52 20 20 20 20  20 52 33 2c 52 33 2c 52  |. .R     R3,R3,R|
00017a90  31 2c 20 4c 53 4c 20 23  31 36 0d b1 30 06 20 3a  |1, LSL #16..0. :|
00017aa0  0d b1 3a 1c 20 80 20 20  20 20 20 52 31 2c 52 34  |..:. .     R1,R4|
00017ab0  2c 52 30 2c 20 4c 53 52  20 23 32 34 0d b1 44 18  |,R0, LSR #24..D.|
00017ac0  20 4c 44 52 42 20 20 20  20 52 31 2c 5b 52 31 31  | LDRB    R1,[R11|
00017ad0  2c 52 31 5d 0d b1 4e 1d  20 84 52 20 20 20 20 20  |,R1]..N. .R     |
00017ae0  52 33 2c 52 33 2c 52 31  2c 20 4c 53 4c 20 23 32  |R3,R3,R1, LSL #2|
00017af0  34 0d b1 58 06 20 3a 0d  b1 62 14 20 2e 63 6c 5f  |4..X. :..b. .cl_|
00017b00  64 6f 6e 65 5f 70 69 78  65 6c 73 0d b1 6c 1f 20  |done_pixels..l. |
00017b10  53 54 52 20 20 20 20 20  52 33 2c 5b 52 36 5d 2c  |STR     R3,[R6],|
00017b20  20 23 66 61 64 65 72 25  2b 34 0d b1 76 06 20 3a  | #fader%+4..v. :|
00017b30  0d b1 80 12 20 43 4d 50  20 20 20 20 20 52 36 2c  |.... CMP     R6,|
00017b40  52 37 0d b1 8a 15 20 42  4c 54 20 20 20 20 20 63  |R7.... BLT     c|
00017b50  6c 5f 6c 6f 6f 70 32 0d  b1 94 06 20 3a 0d b1 9e  |l_loop2.... :...|
00017b60  0c 20 2e 63 6c 5f 65 6e  64 0d b1 a8 13 20 4d 4f  |. .cl_end.... MO|
00017b70  56 20 20 20 20 20 50 43  2c 52 31 34 0d b1 b2 06  |V     PC,R14....|
00017b80  20 3a 0d b1 bc 14 20 2e  61 64 72 5f 63 6c 73 63  | :.... .adr_clsc|
00017b90  6f 6c 6f 75 72 73 0d b1  c6 18 20 45 51 55 44 20  |olours.... EQUD |
00017ba0  20 20 20 63 6c 5f 63 6f  6c 6f 75 72 73 25 0d b1  |   cl_colours%..|
00017bb0  d0 15 20 2e 63 6c 5f 61  64 72 5f 76 64 75 5f 76  |.. .cl_adr_vdu_v|
00017bc0  61 72 73 0d b1 da 15 20  45 51 55 44 20 20 20 20  |ars.... EQUD    |
00017bd0  76 64 75 5f 76 61 72 73  0d b1 e4 13 20 2e 63 6c  |vdu_vars.... .cl|
00017be0  5f 61 64 72 5f 73 63 72  65 65 6e 0d b1 ee 13 20  |_adr_screen.... |
00017bf0  45 51 55 44 20 20 20 20  73 63 72 65 65 6e 0d b1  |EQUD    screen..|
00017c00  f8 0c 20 2e 73 63 72 65  65 6e 0d b2 02 0e 20 45  |.. .screen.... E|
00017c10  51 55 44 20 20 20 20 30  0d b2 0c 0e 20 2e 76 64  |QUD    0.... .vd|
00017c20  75 5f 76 61 72 73 0d b2  16 2c 20 45 51 55 44 20  |u_vars..., EQUD |
00017c30  20 20 20 31 34 39 20 20  20 20 20 20 20 20 20 20  |   149          |
00017c40  20 20 20 20 20 20 20 20  3b 20 76 64 75 20 64 61  |        ; vdu da|
00017c50  74 61 0d b2 20 0f 20 45  51 55 44 20 20 20 20 2d  |ta.. . EQUD    -|
00017c60  31 0d b2 2a 11 20 2e 73  63 72 65 65 6e 5f 73 69  |1..*. .screen_si|
00017c70  7a 65 0d b2 34 13 20 45  51 55 44 20 20 20 20 26  |ze..4. EQUD    &|
00017c80  31 34 30 30 30 0d b2 3e  06 20 3a 0d b2 48 06 20  |14000..>. :..H. |
00017c90  5d 0d b2 52 05 ed 0d b2  5c 0e d6 20 73 65 74 75  |]..R....\.. setu|
00017ca0  70 5f 63 73 0d b2 66 05  e1 0d b2 70 05 3a 0d b2  |p_cs..f....p.:..|
00017cb0  7a 05 3a 0d b2 84 05 3a  0d b2 8e 10 dd 20 f2 70  |z.:....:..... .p|
00017cc0  72 69 6e 74 28 61 24 29  0d b2 98 11 e7 20 61 24  |rint(a$)..... a$|
00017cd0  3d 22 22 20 8c 20 f1 3a  e1 0d b2 a2 17 ea 20 6c  |="" . .:...... l|
00017ce0  65 74 74 65 72 25 2c 77  69 64 74 68 25 2c 63 25  |etter%,width%,c%|
00017cf0  0d b2 ac 0a c8 91 20 30  2c 30 0d b2 b6 0b 78 25  |...... 0,0....x%|
00017d00  3d b1 2a 36 34 0d b2 c0  13 79 25 3d 31 30 32 34  |=.*64....y%=1024|
00017d10  2d bc 2a 36 34 2d 36 34  0d b2 ca 17 e3 20 6c 65  |-.*64-64..... le|
00017d20  74 74 65 72 25 3d 31 20  b8 20 a9 28 61 24 29 0d  |tter%=1 . .(a$).|
00017d30  b2 d4 1f 20 e7 20 78 25  3e 31 30 32 34 20 8c 20  |... . x%>1024 . |
00017d40  78 25 3d 30 3a 79 25 2d  3d 36 34 3a f1 27 0d b2  |x%=0:y%-=64:.'..|
00017d50  de 1b 20 61 73 63 25 3d  97 28 c1 61 24 2c 6c 65  |.. asc%=.(.a$,le|
00017d60  74 74 65 72 25 2c 31 29  29 0d b2 e8 10 20 e7 20  |tter%,1)).... . |
00017d70  61 73 63 25 3e 33 31 20  8c 0d b2 f2 33 20 20 c8  |asc%>31 ....3  .|
00017d80  99 20 22 4f 53 5f 53 70  72 69 74 65 4f 70 22 2c  |. "OS_SpriteOp",|
00017d90  26 31 32 38 2c 66 6f 6e  74 25 2c c3 61 73 63 25  |&128,font%,.asc%|
00017da0  20 b8 20 2c 2c 2c 77 69  64 74 68 25 0d b2 fc 2f  | . ,,,width%.../|
00017db0  20 20 c8 99 20 22 4f 53  5f 53 70 72 69 74 65 4f  |  .. "OS_SpriteO|
00017dc0  70 22 2c 26 31 32 32 2c  66 6f 6e 74 25 2c c3 61  |p",&122,font%,.a|
00017dd0  73 63 25 2c 78 25 2c 79  25 2c 30 0d b3 06 06 20  |sc%,x%,y%,0.... |
00017de0  cc 0d b3 10 25 20 20 e7  20 61 73 63 25 3d 39 20  |....%  . asc%=9 |
00017df0  8c 20 78 25 3d 28 a8 28  78 25 2f 32 35 36 29 2b  |. x%=(.(x%/256)+|
00017e00  31 29 2a 32 35 36 0d b3  1a 06 20 cd 0d b3 24 11  |1)*256.... ...$.|
00017e10  20 78 25 2b 3d 77 69 64  74 68 25 2a 34 0d b3 2e  | x%+=width%*4...|
00017e20  05 ed 0d b3 38 05 f1 0d  b3 42 05 e1 0d b3 4c 05  |....8....B....L.|
00017e30  3a 0d b3 56 05 3a 0d b3  60 0b dd 20 f2 74 69 6e  |:..V.:..`.. .tin|
00017e40  74 0d b3 6a 17 e3 20 70  25 3d 30 20 b8 20 26 31  |t..j.. p%=0 . &1|
00017e50  33 46 46 46 20 88 20 31  0d b3 74 4b 20 e7 20 73  |3FFF . 1..tK . s|
00017e60  63 72 65 65 6e 64 61 74  61 25 3f 70 25 3c 3e 30  |creendata%?p%<>0|
00017e70  20 8c 20 73 63 72 65 65  6e 64 61 74 61 25 3f 70  | . screendata%?p|
00017e80  25 3d 28 73 63 72 65 65  6e 64 61 74 61 25 3f 70  |%=(screendata%?p|
00017e90  25 20 84 20 25 31 31 29  20 82 20 28 b3 28 33 29  |% . %11) . (.(3)|
00017ea0  2d 31 29 0d b3 7e 05 ed  0d b3 88 05 e1 0d ff     |-1)..~.........|
00017eaf