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

!Play/!RunImage

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

� > !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
�:
�/*RmEnsure EXPLO RMLoad <This$Dir>.SFX.Explo
�3*RmEnsure TOKENRM RMLoad <This$Dir>.SFX.TokenRM
�+*RmEnsure ARG RMLoad <This$Dir>.SFX.Arg
�-*RmEnsure RARG RMLoad <This$Dir>.SFX.RArg
�1*RmEnsure LaughRM RMLoad <This$Dir>.SFX.Laugh
5*RmEnsure Revolver RMLoad <This$Dir>.SFX.Revolver
/*RmEnsure Gener RMLoad <This$Dir>.SFX.Gener
.*RmEnsure Gener RMLoad <This$Dir>.SFX.boom
"Ƞ 7
,ȡ 1,"boom"
6ȡ 2,"TOKENRM"
@ȡ 3,"ARG"
Jȡ 4,"RARG"
Tȡ 5,"LaughRM"
^ȡ 6,"Revolver"
hȡ 7,"Gener"
rȡ 8,"EXPLO"
|ș "Sound_Volume",127
�scream%=8192
�ping%=14336
�boom%=6400
�explosion%=3200
�fader%=8
�bomb_pause%=63
�seeking_sound%=7
�seeking_rate%=512
�gun_sound%=6
�gun_rate%=16384
�homing_sound%=7
�homing_rate%=16384
�clist_size%=640*32
slist_size%=1024
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%
0Jș "OS_File",17,"<This$Dir>.Graphics.SData0804" � type%,,,,spritelen4%
:Jș "OS_File",17,"<This$Dir>.Graphics.SData1208" � type%,,,,spritelen5%
DJș "OS_File",17,"<This$Dir>.Graphics.SData1616" � type%,,,,spritelen6%
NBș "OS_File",17,"<This$Dir>.Graphics.Font" � type%,,,,fontlen%
Xu� code% 12*1024,sprite_routines% 8192,fill_routines% 8192,clg_routine% 1024,split_routine% 1024,decomp_code% 1024
b�� sprites1% spritelen1%+4,sprites2% spritelen2%+4,sprites3% spritelen3%+4,sprites4% spritelen4%+4,sprites5% spritelen5%+4,sprites6% spritelen6%+4
l� screendata% 81924
v� screenstore% 81924
�+� clist% clist_size%,slist% slist_size%
�� cmpdata% 81924
�� flame_fade% 256
�� gun_fade% 256
�$� cl_code% 2048, cl_colours% 320
�� font% fontlen%+4
��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
*�
4�#chan%
>�
H� �>t%+200
R�assemble_clear_screen
\:
fscrn%=20
p�
z player1_lives%=3
� player2_lives%=3
� �
�  scrn%+=1
�  � scrn%>23 � scrn%=1
�U  �decompress("<This$Dir>.Levels.Level"+�(scrn%)+".CmpData"+�(scrn%),screendata%)
�  �tint
�  � clear_screen
�  �play
�  !screen=!screen1
�  �
�  �
�  ș "OS_Byte",112,2
�  �
  ș "OS_Byte",113,2
  ș "OS_Byte",112,1
  �
$:  �decompress("<This$Dir>.Graphics.CLogoData",screen%)
.  Ȗ
8  ș "OS_Byte",113,1
B  ș "OS_Byte",112,1
L-  � !player1_alive<>0 � player1_lives%-=1
V-  � !player2_alive<>0 � player2_lives%-=1
`Q  � player1_lives%=0 � player2_lives%=0 � player1_lives%+=1:player2_lives%+=1
j  � 128+42 Ȝ 0
t  � 0 Ȝ 0
~  � �0,0);
�,  �print("Player 1  :	"+�player1_lives%)
�+  �print("Player 2 :	"+�player2_lives%)
�  � 128 Ȝ 0
�  � 63 Ȝ 255
�* � player1_lives%=0 � player2_lives%=0
�	 t%=�
� �
� � �>t%+50
� � clear_screen
� �
� �
� ș "OS_Byte",112,2
 �

 ș "OS_Byte",113,2
 ș "OS_Byte",112,1
 �
(	 t%=�
2M � player1_lives%=0 � �decompress("<This$Dir>.Graphics.C�P2Wins",screen%)
<M � player2_lives%=0 � �decompress("<This$Dir>.Graphics.C�P1Wins",screen%)
F# ș "Sound_Control",5,-15,128,0
P Ȗ
Z ș "OS_Byte",113,1
d ș "OS_Byte",112,1
n �
x � �>t%+500
� � clear_screen
�� �
��
�:
�:
�:
�� �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
6quotient  = 2
@place     = 4
Jdsign     = 5
Tmsign     = 6
^
x_shift=1
hy_shift=320
r!� pass%=%0000 � %1010 � %1010
|
 P%=code%
� L%=code%+12*1024
� [OPT pass%
� :
� :
� :
� .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
0; MLA     R9,R7,R1,R9
:; MLA     R1,R8,R2,R9
D :
N STRB    R0,[R1]
X :
b LDMFD   R13!,{R1-R12,PC}
l :
v .vsync_counter
� CMP     R0, #4
� MOVNES  PC,R14
� LDR     R0, vsyncs
� ADD     R0,R0, #1
� STR     R0, vsyncs
� MOVS    PC,R14
� :
� .vsyncs
� EQUD    0
� :
� .start
� STMFD   R13!,{R0-R12,R14}
� :
 ADR     R0, vdu_vars
 ADR     R1, screen
; SWI     "OS_ReadVduVariables"   ; set up vdu variables
  LDR     R0, screen
* STR     R0, screen1
4 LDR     R1, screen_size
> ADD     R0,R0,R1
H STR     R0, screen2
R SWI     256+19
\ SWI     256+0
f SWI     256+24
p SWI     256+240
z SWI     256+240
� SWI     256+112
� BL      clg
� :
� MOV     R0, #16
� ADR     R1, vsync_counter
� MOV     R2, #1
� SWI     "OS_Claim"
� :
� MOV     R0, #14
� MOV     R1, #4
� SWI     "OS_Byte"
� :
� .total_loop
	 :
	�bordercol(0,0,0)
	 .vsync_loop
	$ LDR R0, vsyncs
	. CMP R0, #1
	8 BLT vsync_loop
	B MOV R0, #0
	L STR R0, vsyncs
	V :
	` LDR     R3, screen_bank
	j �     R3,R3, #1
	t STR     R3, screen_bank
	~ CMP     R3, #0
	� RSB     R1,R3, #2
	� LDREQ   R3, screen1
	� LDRNE   R3, screen2
	� STR     R3, screen
	� :
	� MOV     R0, #113
	� SWI     "OS_Byte"
	� :
	��bordercol(255,0,0)
	� BL      wipe_all
	� :
	�# SWI     "OS_ReadMonotonicTime"
 MOV     r2,r0

% LDR     r0, adr_explosion_spray2
 MOV     r1, #16
 .explo_loop1
( ADD     r2,r2,r2, ROR #1
2 LDR     r3,[r0]
< �     r3,r3,r2
F STR     r3,[r0], #4
P SUBS    r1,r1, #1
Z BPL     explo_loop1
d :
n�bordercol(0,255,0)
x :
� 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
� :
��bordercol(0,255,255)
� BL      split_screen
 :
�bordercol(255,255,255)
! SWI     "OS_ReadEscapeState"
" BCS     end
, :
6 LDR     R0, adr_end_game
@ LDR     R0,[R0]
J CMP     R0, #0
T BNE     end
^ :
h LDR     R0, rnd
r 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
� �     R3,R3, #1
� STR     R3, screen_bank
� RSB     R1,R3, #2
 CMP     R3, #0
 LDREQ   R3, screen1
 LDRNE   R3, screen2
& STR     R3, screen
0 BL      clear_screen
: :
D MOV     R0, #16
N ADR     R1, vsync_counter
X MOV     R2, #1
b SWI     "OS_Release"
l :
v MOV     R0, #13
� MOV     R1, #4
� SWI     "OS_Byte"
� :
� LDMFD   R13!,{R0-R12,PC}
� :
� .adr_end_game
� EQUD    end_game
� :
� .screen
� EQUD    0
� .screenstore
� EQUD    screenstore%
� .screenbank

 EQUD    0


 .screen1

 EQUD    0

 
 .screen2

* EQUD    0

4 .vdu_vars

>, EQUD    149                  ; vdu data

H EQUD    -1

R .screen_size

\ EQUD    &14000

f .screen_bank

p EQUD    1

z :

� .adr_explosion_spray2

� EQUD    explosion_spray

� :

� .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
 SUBEQ   R1,R1, #4
 BLEQ    fill_fill_2016
$! BEQ     wipe_end_sprite_loop
. :
8 CMP     R5, #2
B SUBEQ   R1,R1, #4
L BLEQ    fill_fill_2016
V! BEQ     wipe_end_sprite_loop
` :
j CMP     R5, #3
t BLT     not_a_1212
~ CMP     R5, #12
� 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
 ADD     R9,R9, #16
 CMP     R5, #0
( BGE     wsloop1
2 :
< LDR     R9, adr_clist
F
 .wcloop1
P LDMIA   R9,{R0-R7}
Z MOV     R1,R1, ASR #4
d MOV     R2,R2, ASR #4
n CMP     R0, #0
x 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
 SUBEQ   R2,R2, #2
" BLEQ    fill_fill_0804
, BEQ     wcell_skip
6 CMP     R0, #5
@ SUBEQ   R1,R1, #2
J SUBEQ   R2,R2, #2
T BLEQ    fill_fill_0804
^ BEQ     wcell_skip
h CMP     R0, #6
r 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
 SUBEQ   R2,R2, #2
 BLEQ    fill_fill_0804
& BEQ     wcell_skip
0 CMP     R0, #10
: SUBEQ   R1,R1, #4
D SUBEQ   R2,R2, #4
N BLEQ    fill_fill_1208
X BEQ     wcell_skip
b CMP     R0, #11
l SUBEQ   R1,R1, #8
v SUBEQ   R2,R2, #8
� BLEQ    fill_fill_2016
� CMP     R0, #12
� SUBEQ   R1,R1, #2
� SUBEQ   R2,R2, #2
� BLEQ    fill_fill_0804
� CMP     R0, #13
� SUBEQ   R1,R1, #4
� SUBEQ   R2,R2, #4
� BLEQ    fill_fill_1208
� .wcell_skip
� ADD     R9,R9, #32
� CMP     R0, #0
� BGE     wcloop1
 :
 LDMFD   R13!,{R0-R12,PC}
 :
  .update_sprites
* STMFD   R13!,{R0-R12,R14}
4 :
> LDR     R9, adr_slist
H .sloop1
R LDMIA   R9,{R5-R8}
\ CMP     R5, #1
f BLEQ    player1
p BEQ     end_sprite_loop
z 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
8 BLEQ    weapon_seeking
B BEQ     end_sprite_loop
L CMP     R5, #9
V BLEQ    weapon_vertical
` BEQ     end_sprite_loop
j CMP     R5, #10
t BLEQ    weapon_thrower
~ BEQ     end_sprite_loop
� CMP     R5, #11
� BLEQ    weapon_bomb
� BEQ     end_sprite_loop
� CMP     R5, #12
� BLEQ    weapon_cluster
� 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
2 BGE     sloop1
< :
F LDMFD   R13!,{R0-R12,PC}
P :
Z .p1_weapon
d EQUD    2
n .p2_weapon
x EQUD    2
� :
� .read_point
� STMFD   R13!,{R1-R12,R14}
� :
� RSB     R2,R2, #256
� :
�5 MOV     R7, #x_shift         ; get screen shifts
� MOV     R8, #y_shift
�6 LDR     R9, screenstore      ; get screen address
� :
� MLA     R9,R7,R1,R9
� MLA     R1,R8,R2,R9
� :
 LDRB    R0,[R1]
 :
 LDMFD   R13!,{R1-R12,PC}
" :
, .adr_clist
6 EQUD    clist%
@ .adr_slist
J EQUD    slist%
T :
^ .flame
h STMFD   R13!,{R9,R14}
r :
| LDR     R10, p1_x
� LDR     R11, p1_y
� MOV     R9,R6, ASR #2
� ADD     R9,R9, #8
� SUB     R10,R9,R10
� CMP     R10, #0
� BLT     not_touched11
� CMP     R10, #xext%+8
� BGT     not_touched11
� MOV     R9,R7, ASR #2
� ADD     R9,R9, #10
� SUB     R11,R9,R11
� CMP     R11, #0
� BLT     not_touched11
 CMP     R11, #yext%+8
 BGT     not_touched11
" LDR     R1, adr_player1_alive
& LDR     R0,[R1]
0 CMP     R0, #1
: BEQ     not_touched11
D MOV     R0, #1
N STR     R0,[R1]
X MOV     R0, #3
b MVN     R1, #14
l MOV     R2, #scream%
v MOV     R3, #0
� SWI     "Sound_Control"
� .not_touched11
� LDR     R10, p2_x
� LDR     R11, p2_y
� MOV     R9,R6, ASR #2
� ADD     R9,R9, #8
� SUB     R10,R9,R10
� CMP     R10, #0
� BLT     not_touched21
� CMP     R10, #xext%+8
� BGT     not_touched21
� MOV     R9,R7, ASR #2
� ADD     R9,R9, #10
 SUB     R11,R9,R11
 CMP     R11, #0
 BLT     not_touched21
  CMP     R11, #yext%+8
* BGT     not_touched21
4" LDR     R1, adr_player2_alive
> LDR     R0,[R1]
H CMP     R0, #1
R BEQ     not_touched21
\ MOV     R0, #1
f STR     R0,[R1]
p MOV     R0, #3
z MVN     R1, #14
� MOV     R2, #scream%
� MOV     R3, #0
� SWI     "Sound_Control"
� .not_touched21
� :
� ADD     R8,R8, #1
� CMP     R8, #15
� MOVGT   R8, #0
� MOV     R0, #2
� ADD     R0,R0,R8, LSR #2
� MOV     R1,R6, LSR #2
� MOV     R2,R7, LSR #2
� BL      plot_sprite_1212
 :
 LDMFD   R13!,{R9,PC}
 :
$ .adr_player1_alive
. EQUD    player1_alive
8 .adr_player2_alive
B EQUD    player2_alive
L :
V
 .door
` STMFD   R13!,{R9,R14}
j :
t TST     R8, #256
~ BNE     door_closing
� �     R0,R8, #31
� CMP     R0, #30
� ADDLT   R0,R0, #1
� BIC     R8,R8, #31
� �R     R8,R8,R0
� B       do_door
� .door_closing
� �     R0,R8, #31
� CMP     R0, #0
� SUBGT   R0,R0, #1
� BIC     R8,R8, #31
� �R     R8,R8,R0

 .do_door

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

 BL      plot_sprite_1208
 :
 LDMFD   R13!,{R9,PC}
( :
2 .weapon_pistol
< STMFD   R13!,{R9,R14}
F :
P MOV     R4, #2
Z BL      pick_up
d :
n SUB     R8,R8, #1
x CMP     R8, #0
� MOVLE   R5, #0
� :
� CMP     R5, #0
� :
� MOVGT   R0, #12
� MOVGT   R1,R6, LSR #2
� MOVGT   R2,R7, LSR #2
� BLGT    plot_sprite_1212
� :
� LDMFD   R13!,{R9,PC}
� :
� .weapon_gun
� STMFD   R13!,{R9,R14}
 :
 MOV     R4, #3
 BL      pick_up
" :
, SUB     R8,R8, #1
6 CMP     R8, #0
@ MOVLE   R5, #0
J :
T CMP     R5, #0
^ :
h MOVGT   R0, #13
r MOVGT   R1,R6, LSR #2
| MOVGT   R2,R7, LSR #2
� BLGT    plot_sprite_1212
� :
� LDMFD   R13!,{R9,PC}
� :
� .weapon_mortar
� STMFD   R13!,{R9,R14}
� :
� MOV     R4, #4
� BL      pick_up
� :
� SUB     R8,R8, #1
� CMP     R8, #0
� MOVLE   R5, #0
  :
  CMP     R5, #0
  :
 & MOVGT   R0, #14
 0 MOVGT   R1,R6, LSR #2
 : MOVGT   R2,R7, LSR #2
 D BLGT    plot_sprite_1212
 N :
 X LDMFD   R13!,{R9,PC}
 b :
 l .weapon_homing
 v STMFD   R13!,{R9,R14}
 � :
 � MOV     R4, #5
 � BL      pick_up
 � :
 � SUB     R8,R8, #1
 � CMP     R8, #0
 � MOVLE   R5, #0
 � :
 � CMP     R5, #0
 � :
 � MOVGT   R0, #15
 � MOVGT   R1,R6, LSR #2
 � MOVGT   R2,R7, LSR #2
! BLGT    plot_sprite_1212
! :
! LDMFD   R13!,{R9,PC}
!  :
!* .weapon_seeking
!4 STMFD   R13!,{R9,R14}
!> :
!H MOV     R4, #6
!R BL      pick_up
!\ :
!f SUB     R8,R8, #1
!p CMP     R8, #0
!z MOVLE   R5, #0
!� :
!� CMP     R5, #0
!� :
!� MOVGT   R0, #16
!� MOVGT   R1,R6, LSR #2
!� MOVGT   R2,R7, LSR #2
!� BLGT    plot_sprite_1212
!� :
!� LDMFD   R13!,{R9,PC}
!� :
!� .weapon_vertical
!� STMFD   R13!,{R9,R14}
!� :
" MOV     R4, #7
" BL      pick_up
" :
"$ SUB     R8,R8, #1
". CMP     R8, #0
"8 MOVLE   R5, #0
"B :
"L CMP     R5, #0
"V :
"` MOVGT   R0, #17
"j MOVGT   R1,R6, LSR #2
"t MOVGT   R2,R7, LSR #2
"~ BLGT    plot_sprite_1212
"� :
"� LDMFD   R13!,{R9,PC}
"� :
"� .weapon_thrower
"� STMFD   R13!,{R9,R14}
"� :
"� MOV     R4, #8
"� BL      pick_up
"� :
"� SUB     R8,R8, #1
"� CMP     R8, #0
"� MOVLE   R5, #0
# :
#
 CMP     R5, #0
# :
# MOVGT   R0, #18
#( MOVGT   R1,R6, LSR #2
#2 MOVGT   R2,R7, LSR #2
#< BLGT    plot_sprite_1212
#F :
#P LDMFD   R13!,{R9,PC}
#Z :
#d .weapon_bomb
#n STMFD   R13!,{R9,R14}
#x :
#� MOV     R4, #9
#� BL      pick_up
#� :
#� SUB     R8,R8, #1
#� CMP     R8, #0
#� MOVLE   R5, #0
#� :
#� CMP     R5, #0
#� :
#� MOVGT   R0, #19
#� MOVGT   R1,R6, LSR #2
#� MOVGT   R2,R7, LSR #2
#� BLGT    plot_sprite_1212
$ :
$ LDMFD   R13!,{R9,PC}
$ :
$" .weapon_cluster
$, STMFD   R13!,{R9,R14}
$6 :
$@ MOV     R4, #10
$J BL      pick_up
$T :
$^ SUB     R8,R8, #1
$h CMP     R8, #0
$r MOVLE   R5, #0
$| :
$� CMP     R5, #0
$� :
$� MOVGT   R0, #20
$� MOVGT   R1,R6, LSR #2
$� MOVGT   R2,R7, LSR #2
$� BLGT    plot_sprite_1212
$� :
$� LDMFD   R13!,{R9,PC}
$� :
$� :
$�
 .pick_up
$� LDR     R10, p1_x
$� LDR     R11, p1_y
% MOV     R9,R6, ASR #2
% ADD     R9,R9, #8
% SUB     R10,R9,R10
%& ADD     R10,R10, #2
%0 CMP     R10, #0
%: BLT     not_picked_up1
%D CMP     R10, #xext%+10
%N BGT     not_picked_up1
%X MOV     R9,R7, ASR #2
%b ADD     R9,R9, #12
%l SUB     R11,R9,R11
%v ADD     R11,R11, #2
%� CMP     R11, #0
%� BLT     not_picked_up1
%� CMP     R11, #yext%+14
%� BGT     not_picked_up1
%� MOV     R5, #0
%� STR     R4, p1_weapon
%� MOV     R0, #2
%� MVN     R1, #14
%� MOV     R2, #ping%
%� MOV     R3, #0
%� SWI     "Sound_Control"
%� .not_picked_up1
%� LDR     R10, p2_x
& LDR     R11, p2_y
& MOV     R9,R6, ASR #2
& ADD     R9,R9, #8
&  SUB     R10,R9,R10
&* ADD     R10,R10, #2
&4 CMP     R10, #0
&> BLT     not_picked_up2
&H CMP     R10, #xext%+10
&R BGT     not_picked_up2
&\ MOV     R9,R7, ASR #2
&f ADD     R9,R9, #12
&p SUB     R11,R9,R11
&z ADD     R11,R11, #2
&� CMP     R11, #0
&� BLT     not_picked_up2
&� CMP     R11, #yext%+16
&� BGT     not_picked_up2
&� MOV     R5, #0
&� STR     R4, p2_weapon
&� MOV     R0, #2
&� MVN     R1, #14
&� MOV     R2, #ping%
&� MOV     R3, #0
&� SWI     "Sound_Control"
&� .not_picked_up2
&� MOV     PC,R14
' :
' :
'
 .p1_x
'$ EQUD    0
'.
 .p1_y
'8 EQUD    0
'B
 .p2_x
'L EQUD    0
'V
 .p2_y
'` EQUD    0
'j :
't	 .rnd
'~ EQUD    ��-�
'� :
'� :
'� .update_cells
'� STMFD   R13!,{R0-R12,R14}
'� :
'� LDR     R9, adr_clist
'� .cloop1
'� LDMIA   R9,{R1-R8}
'� CMP     R1, #1
'� BLEQ    spray
'� BEQ     cell_skip
'� CMP     R1, #8
( BLEQ    spray2
(
 BEQ     cell_skip
( CMP     R1, #9
( BLEQ    spray3
(( BEQ     cell_skip
(2 CMP     R1, #2
(< BLEQ    pistol
(F BEQ     cell_skip
(P CMP     R1, #3
(Z BLEQ    gun
(d BEQ     cell_skip
(n CMP     R1, #4
(x BLEQ    mortar
(� BEQ     cell_skip
(� CMP     R1, #5
(� BLEQ    homing
(� BEQ     cell_skip
(� CMP     R1, #6
(� BLEQ    seeking
(� BEQ     cell_skip
(� CMP     R1, #7
(� BLEQ    vertical
(� BEQ     cell_skip
(� CMP     R1, #10
(� BLEQ    thrower
(� BEQ     cell_skip
) CMP     R1, #11
) BLEQ    explode
) BEQ     cell_skip
)" CMP     R1, #12
), BLEQ    bomb
)6 BEQ     cell_skip
)@ CMP     R1, #13
)J BLEQ    cluster
)T .cell_skip
)^ STMIA   R9!,{R1-R8}
)h CMP     R1, #0
)r BGT     cloop1
)| BNE     not_null
)� LDR     R1, adr_bclist
)� SUB     R2,R9, #32
)� CMP     R2,R1
)� MOVLT   R1,R2
)� STR     R1, adr_bclist
)� B       cloop1
)� .not_null
)� :
)� LDMFD   R13!,{R0-R12,PC}
)� :
)� .adr_bclist
)� EQUD    clist%
)� :
* .spray
* STMFD   R13!,{R9,R14}
* :
*& SUB     R5,R5, #1
*0 ADD     R2,R2,R4
*: ADD     R3,R3,R5
*D SUB     R6,R6, #1
*N CMP     R6, #0
*X MOVLE   R1, #0
*b LDMLEFD R13!,{R9,PC}
*l :
*v 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
*� BGE     no_spray
*� RSB     R3,R3, #256
*� LDR     R4, screenstore
+ MOV     R5, #y_shift
+ ADD     R4,R4,R2
+ MLA     R4,R5,R3,R4
+  LDRB    R0,[R4]
+* CMP     R0, #0
+4 �Q   R10, #1
+> MOVNE   R10, #0
+H BNE     no_spray
+R LDR     R0, adr_flame_fade
+\ MOV     R9,R6, ASL #3
+f CMP     R9, #255
+p MOVGT   R9, #255
+z 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}
+� :
+� .spray2
+� STMFD   R13!,{R9,R14}
+� :
+� SUB     R5,R5, #1
, ADD     R2,R2,R4
, ADD     R3,R3,R5
, SUB     R6,R6, #1
,$ CMP     R6, #0
,. MOVLE   R1, #0
,8 LDMLEFD R13!,{R9,PC}
,B :
,L STMFD   R13!,{R1-R6}
,V STMFD   R13!,{R6}
,` :
,j MOV     R6, #0
,t 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
,� CMP     R2, #320
,� BGE     no_spray2
,� CMP     R3, #256
- BGE     no_spray2
-
 RSB     R3,R3, #256
- SUB     R2,R2, #1
- SUB     R3,R3, #1
-( LDR     R4, screenstore
-2 MOV     R5, #y_shift
-< ADD     R4,R4,R2
-F; MLA     R4,R5,R3,R4
-PADD R4,R4,R3, ASL #8
-ZADD R4,R4,R3, ASL #6
-d LDRB    R0,[R4]
-n CMP     R0, #0
-x �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]
-� STRB    R0,[R4, #2]
-� ADD     R4,R4, #y_shift
. STRB    R0,[R4, #1]
. .no_spray2
. :
." LDMFD   R13!,{R1-R6}
., CMP     R10, #0
.6 RSBEQ   R5,R5, #0
.@ RSBEQ   R4,R4, #0
.J LDMFD   R13!,{R9,PC}
.T :
.^ .spray3
.h STMFD   R13!,{R9,R14}
.r :
.| 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}
.� :
.� MOV     R6, #0
/ BL      check_death
/ MOV     R6, #1
/ BL      check_death
/& :
/0 MOV     R2,R2, ASR #4
/: MOV     R3,R3, ASR #4
/D CMP     R2, #0
/N BLT     no_spray3
/X CMP     R3, #0
/b BLT     no_spray3
/l CMP     R2, #320
/v 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
/�ADD R4,R4,R3, ASL #8
/�ADD R4,R4,R3, ASL #6
/� LDRB    R0,[R4]
/� CMP     R0, #0
0 �Q   R10, #1
0 MOVNE   R10, #0
0 BNE     no_spray3
0  MOV     R0, #255
0* STRB    R0,[R4, #1]
04 ADD     R4,R4, #y_shift
0> STRB    R0,[R4]
0H STRB    R0,[R4, #1]
0R STRB    R0,[R4, #2]
0\ ADD     R4,R4, #y_shift
0f STRB    R0,[R4, #1]
0p .no_spray3
0z :
0� LDMFD   R13!,{R1-R6}
0� CMP     R10, #0
0� RSBEQ   R5,R5, #0
0� RSBEQ   R4,R4, #0
0� LDMFD   R13!,{R9,PC}
0� :
0� .adr_flame_fade
0� EQUD    flame_fade%
0� :
0� .adr_gun_fade
0� EQUD    gun_fade%
0� :
0�
 .thrower
1 STMFD   R13!,{R9,R14}
1 :
1 ADD     R2,R2,R4
1$ ADD     R3,R3,R5
1. �     R7,R6, #255<<8
18 MOV     R7,R7, ASR #8
1B ADD     R7,R7, #1
1L CMP     R7, #15
1V MOVGE   R1, #0
1` LDMGEFD   R13!,{R9,PC}
1j BIC     R6,R6, #255<<8
1t �R     R6,R6,R7, ASL #8
1~ :
1� STMFD   R13!,{R1-R6}
1� :
1� BL      check_death
1� :
1� MOV     R2,R2, ASR #4
1� 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
1� LDRB    R0,[R4, #2]
2 CMP     R0, #0
2
 �Q   R10, #1
2 MOVNE   R10, #0
2 BNE     no_thrower
2( RSB     R3,R3, #256
22 MOV     R0,R7
2< SUB     R1,R2, #4
2F SUB     R2,R3, #4
2P BL      plot_sprite_1208
2Z .no_thrower
2d :
2n LDMFD   R13!,{R1-R6}
2x CMP     R10, #0
2� �Q   R1, #0
2� LDMFD   R13!,{R9,PC}
2� :
2�
 .explode
2� STMFD   R13!,{R9,R14}
2� :
2� ADD     R2,R2,R4
2� ADD     R3,R3,R5
2� �     R7,R6, #255<<8
2� MOV     R7,R7, ASR #8
2� ADD     R7,R7, #1
2� CMP     R7, #15
2� MOVGE   R1, #0
3 LDMGEFD   R13!,{R9,PC}
3 BIC     R6,R6, #255<<8
3 �R     R6,R6,R7, ASL #8
3" ADD     R7,R7, #8
3, :
36 STMFD   R13!,{R1-R6}
3@ :
3J BL      check_death
3T :
3^ MOV     R2,R2, ASR #4
3h MOV     R3,R3, ASR #4
3r RSB     R3,R3, #256
3| LDR     R4, screenstore
3� MOV     R5, #y_shift
3� ADD     R4,R4,R2
3� MLA     R4,R5,R3,R4
3� LDRB    R0,[R4, #2]
3� CMP     R0, #0
3� �Q   R10, #1
3� MOVNE   R10, #0
3� BNE     no_explode
3� RSB     R3,R3, #256
3� MOV     R0,R7
3� SUB     R1,R2, #8
3� SUB     R2,R3, #8
3� BL      plot_sprite_2016
4 .no_explode
4 :
4 LDMFD   R13!,{R1-R6}
4& CMP     R10, #0
40 LDMFD   R13!,{R9,PC}
4: :
4D .pistol
4N STMFD   R13!,{R9,R14}
4X :
4b ADD     R2,R2,R4
4l ADD     R3,R3,R5
4v CMP     R4, #0
4� MOVLT   R7, #1
4� MOVGT   R7, #0
4� :
4� STMFD   R13!,{R1-R6}
4� :
4� BL      check_death
4� :
4� MOV     R2,R2, ASR #4
4� MOV     R3,R3, ASR #4
4� RSB     R3,R3, #256
4� LDR     R4, screenstore
4� MOV     R5, #y_shift
4� ADD     R4,R4,R2
5 MLA     R4,R5,R3,R4
5 LDRB    R0,[R4, #2]
5 CMP     R0, #0
5  �Q   R10, #1
5* MOVNE   R10, #0
54 BNE     no_pistol
5> RSB     R3,R3, #256
5H MOV     R0,R7
5R SUB     R1,R2, #2
5\ SUB     R2,R3, #2
5f BL      plot_sprite_0804
5p;LDR     R0, adr_gun_fade
5z;MOV     R9, #255
5�;LDRB    R0,[R0,R9]
5�;STRB    R0,[R4]
5�;STRB    R0,[R4, #1]
5� .no_pistol
5� :
5� LDMFD   R13!,{R1-R6}
5� CMP     R10, #0
5� �Q   R1, #0
5� LDMFD   R13!,{R9,PC}
5� :
5�	 .gun
5� STMFD   R13!,{R9,R14}
5� :
6 ADD     R2,R2,R4
6 ADD     R3,R3,R5
6 CMP     R4, #0
6$ MOVLT   R7, #3
6. MOVGT   R7, #2
68 :
6B STMFD   R13!,{R1-R6}
6L :
6V MOV     R6, #0
6` BL      check_death
6j MOV     R6, #1
6t BL      check_death
6~ :
6� MOV     R2,R2, ASR #4
6� MOV     R3,R3, ASR #4
6� RSB     R3,R3, #256
6� LDR     R4, screenstore
6� MOV     R5, #y_shift
6� ADD     R4,R4,R2
6� MLA     R4,R5,R3,R4
6� LDRB    R0,[R4]
6� CMP     R0, #0
6� �Q   R10, #1
6� MOVNE   R10, #0
6� BNE     no_gun
7 RSB     R3,R3, #256
7
 MOV     R0,R7
7 SUB     R1,R2, #2
7 SUB     R2,R3, #2
7( BL      plot_sprite_0804
72;LDR     R0, adr_gun_fade
7<;MOV     R9, #255
7F;LDRB    R0,[R0,R9]
7P;STRB    R0,[R4]
7Z .no_gun
7d :
7n LDMFD   R13!,{R1-R6}
7x CMP     R10, #0
7� �Q   R1, #0
7� LDMFD   R13!,{R9,PC}
7� :
7� .mortar
7� STMFD   R13!,{R9,R14}
7� :
7� SUB     R5,R5, #1
7� MOV     R0, #32
7� RSB     R0,R0, #0
7� CMP     R5,R0
7� MOVLT   R5,R0
7� ADD     R2,R2,R4
7� ADD     R3,R3,R5
8 :
8 STMFD   R13!,{R1-R6}
8 :
8" BL      check_death
8, :
86 MOV     R2,R2, ASR #4
8@ MOV     R3,R3, ASR #4
8J RSB     R3,R3, #256
8T LDR     R4, screenstore
8^ MOV     R5, #y_shift
8h ADD     R4,R4,R2
8r MLA     R4,R5,R3,R4
8| LDRB    R0,[R4]
8� CMP     R0, #0
8� �Q   R10, #1
8� MOVNE   R10, #0
8� �Q   R0, #255
8� STREQB  R0,[R4]
8� STREQB  R0,[R4, #1]
8� ADD     R2,R4, #y_shift
8� STREQB  R0,[R2]
8� STREQB  R0,[R2, #1]
8� :
8� LDMFD   R13!,{R1-R6}
8� CMP     R10, #0
8� BNE     end_mortar
9 SUB     R2,R2,R4, ASL #1
9 SUB     R3,R3,R5, ASL #1
9 MOV     R1,R2, ASR #4
9& MOV     R2,R3, ASR #4
90 RSB     R2,R2, #256
9: MOV     R9, #0
9D% LDR     R10, adr_explosion_spray
9N MOV     R0, #8
9X LDR     R8, rnd
9b �     R8,R8, #7
9l MOV     R6, #16<<8
9v MOV     R5, #32
9� .mortar_loop1
9� LDRB    R3,[R10], #1
9� LDRB    R4,[R10], #1
9� MOV     R3,R3, LSL #24
9� MOV     R4,R4, LSL #24
9� MOV     R3,R3, ASR #24
9� MOV     R4,R4, ASR #24
9� �     R3,R3, R8
9� �     R4,R4, R8
9� MOV     R3,R3, ASR #1
9� MOV     R4,R4, ASR #1
9� SUB     R3,R3,R3, ASR #2
9� SUB     R4,R4,R4, ASR #2
: ADD     R6,R6,R3, ASL #8
: ADD     R6,R6,R4, ASL #8
: �     R6,R6, #31<<8
:  BL      add_cell
:* CMP     R9, #8
:4 �Q   R0, #9
:> MOVGE   R5,R6
:H ADD     R9,R9, #1
:R CMP     R9, #16
:\ BLE     mortar_loop1
:f MOV     R5, #1
:p MOV     R0, #1
:z MVN     R1, #8
:� MOV     R2, #boom%
:� MOV     R3, #0
:� SWI     "Sound_Control"
:� MOV     R1, #0
:� .end_mortar
:� :
:� LDMFD   R13!,{R9,PC}
:� :
:�
 .cluster
:� STMFD   R13!,{R9,R14}
:� :
:� MVN     R0, #256
:� CMP     R5,R0
; MOVLT   R5,R0
; ADD     R2,R2,R4, ASR #3
; ADD     R3,R3,R5, ASR #3
;$ CMP     R4, #0
;. ADDLT   R4,R4, #1
;8 SUBGT   R4,R4, #1
;B MOV     R10,R6
;L :
;V STMFD   R13!,{R1-R6}
;` :
;j MOV     R2,R2, ASR #4
;t 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, #4]
;� CMP     R0, #0
;� SUBNE   R10,R10, #1
;� BNE     no_cluster
;� RSB     R3,R3, #256
;� MOV     R0, #18
;� SUB     R1,R2, #4
;� SUB     R2,R3, #4
< BL      plot_sprite_1208
<
 .no_cluster
< :
< LDMFD   R13!,{R1-R6}
<(  CMP     R10, #bomb_pause%-1
<2 ADDEQ   R3,R3, #4
<< CMP     R10,R6
<F SUBLT   R2,R2,R4, ASR #2
<P SUBLT   R3,R3,R5, ASR #2
<Z RSBLT   R4,R4, #0
<d RSBLT   R5,R5, #0
<n MOVLT   R4,R4, ASR #1
<x MOVLT   R5,R5, ASR #1
<� SUBEQ   R5,R5, #4
<� MOVGT   R5, #0
<� MOV     R6,R10
<� CMP     R6, #0
<� BNE     end_cluster
<� :
<� MOV     R1,R2, ASR #4
<� MOV     R2,R3, ASR #4
<� RSB     R2,R2, #248
<� MOV     R5, #bomb_pause%
<� MOV     R9, #0
<� LDR     R8, rnd
<� �     R8,R8, #7
=% LDR     R10, adr_explosion_spray
= .cluster_loop1
= LDRB    R3,[R10], #1
=" LDRB    R4,[R10], #1
=, MOV     R0, #4
=6 TSTEQ   R3, #%1
=@ �Q   R0, #12
=J MOV     R3,R3, LSL #24
=T MOV     R4,R4, LSL #24
=^ MOV     R3,R3, ASR #24
=h MOV     R4,R4, ASR #24
=r �     R3,R3, R8
=| �S    R4,R4, R8
=� RSBMI   R4,R4, #0
=� SUB     R3,R3,R3, ASR #2
=� BL      add_cell
=� ADD     R9,R9, #1
=� CMP     R9, #48
=� BLE     cluster_loop1
=� MOV     R5, #1
=� MOV     R0, #8
=� MVN     R1, #14
=�! MOV     R2, #explosion%*0.67
=� MOV     R3, #0
=� SWI     "Sound_Control"
=� MOV     R1, #0
> MOV     R5, #0
> .end_cluster
> :
>& LDMFD   R13!,{R9,PC}
>0 :
>: .adr_explosion_spray
>D EQUD    explosion_spray
>N :
>X
 .bomb
>b STMFD   R13!,{R9,R14}
>l :
>v MOV     R0, #256
>� RSB     R0,R0, #0
>� CMP     R5,R0
>� MOVLT   R5,R0
>� ADD     R2,R2,R4, ASR #2
>� ADD     R3,R3,R5, ASR #2
>� MOV     R10,R6
>� :
>� STMFD   R13!,{R1-R6}
>� :
>� MOV     R2,R2, ASR #4
>� MOV     R3,R3, ASR #4
>� RSB     R3,R3, #256
>�  LDR     R4, adr_screenstore
? LDR     R4,[R4]
? MOV     R5, #y_shift
? ADD     R4,R4,R2
?  MLA     R4,R5,R3,R4
?* ADD     R0,R4, #y_shift
?4 LDRB    R0,[R0]
?> CMP     R0, #0
?H SUBNE   R10,R10, #1
?R MOV     R0, #%00010111
?\ SUB     R4,R4, #y_shift
?f STRB    R0,[R4, #1]
?p ADD     R4,R4, #y_shift
?z STRB    R0,[R4]
?� STRB    R0,[R4, #1]
?� STRB    R0,[R4, #2]
?� :
?� LDMFD   R13!,{R1-R6}
?�  CMP     R10, #bomb_pause%-1
?� ADDEQ   R3,R3, #4
?� CMP     R10,R6
?� SUBLT   R2,R2,R4, ASR #2
?� SUBLT   R3,R3,R5, ASR #2
?� RSBLT   R4,R4, #0
?� RSBLT   R5,R5, #0
?� MOVLT   R4,R4, ASR #1
?� MOVLT   R5,R5, ASR #1
@ SUBEQ   R5,R5, #4
@ MOVGT   R5, #0
@ MOV     R6,R10
@$ CMP     R6, #0
@. BNE     end_bomb
@8 MOV     R1,R2, ASR #4
@B MOV     R2,R3, ASR #4
@L ADD     R2,R2, #2
@V RSB     R2,R2, #256
@` MOV     R9, #0
@j MOV     R0, #8
@t LDR     R8, rnd
@~ �     R8,R8, #7
@� MOV     R6, #16<<8
@� MOV     R5, #32
@�! ADR     R10, explosion_spray
@� .bomb_loop1
@� LDRB    R3,[R10], #1
@� LDRB    R4,[R10], #1
@� MOV     R3,R3, LSL #24
@� MOV     R4,R4, LSL #24
@� MOV     R3,R3, ASR #24
@� MOV     R4,R4, ASR #24
@� �     R3,R3, R8
@� �     R4,R4, R8
A SUB     R3,R3,R3, ASR #1
A
 SUB     R4,R4,R4, ASR #1
A ADD     R6,R6,R3, ASL #8
A ADD     R6,R6,R4, ASL #8
A( �     R6,R6, #31<<8
A2 BL      add_cell
A< CMP     R9, #24
AF �Q   R0, #9
AP MOVGE   R5,R6
AZ ADD     R9,R9, #1
Ad CMP     R9, #32
An BLE     bomb_loop1
Ax MOV     R5, #1
A� MOV     R0, #1
A� MVN     R1, #11
A� MOV     R2, #boom%
A� MOV     R3, #0
A� SWI     "Sound_Control"
A� MOV     R1, #0
A� MOV     R5, #0
A� .end_bomb
A� :
A� LDMFD   R13!,{R9,PC}
A� :
A� .adr_screenstore2
A� EQUD    screenstore
B :
B .homing
B STMFD   R13!,{R9,R14}
B" :
B,;MOV     R9,R6, LSR #8
B6;�     R9,R9, #255
B@;SUB     R9,R9, #1
BJ;BIC     R6,R6, #255<<8
BT;�R     R6,R6,R9, LSL #8
B^;CMP     R9, #0
Bh;�Q   R1, #0
Br :
B| TST     R6, #1
B� LDREQ   R10, p1_x
B� LDREQ   R11, p1_y
B� LDRNE   R10, p2_x
B� LDRNE   R11, p2_y
B� ADD     R10,R10, #xext%/2
B� ADD     R11,R11, #yext%/2
B� CMP     R2,R10, ASL #4
B� SUBGT   R4,R4, #1
B� ADDLT   R4,R4, #1
B� CMP     R3,R11, ASL #4
B� SUBGT   R5,R5, #1
B� ADDLT   R5,R5, #1
B�# MOV     R0, #max_homing_speed%
C CMP     R4,R0
C SUBGT   R4,R0, #1
C RSB     R0,R0, #0
C& CMP     R4,R0
C0 ADDLT   R4,R0, #1
C:# MOV     R0, #max_homing_speed%
CD CMP     R5,R0
CN SUBGT   R5,R0, #1
CX RSB     R0,R0, #0
Cb CMP     R5,R0
Cl ADDLT   R5,R0, #1
Cv ADD     R2,R2,R4
C� ADD     R3,R3,R5
C� MOV     R7, #0
C� CMN     R4, #10
C� ADDLT   R7,R7, #2
C� CMP     R4, #10
C� ADDGT   R7,R7, #4
C� CMN     R5, #10
C� ADDLT   R7,R7, #12
C� CMP     R5, #10
C� ADDGT   R7,R7, #6
C� :
C� ADD     R7,R7, #3
C� �     R0,R6, #%110
D MOV     R0,R0, ASR #1
D ADD     R0,R0, #1
D �     R0,R0, #%11
D  CMP     R0, #%1
D* ADDGT   R7,R7, #1
D4 BIC     R6,R6, #%110
D> �R     R6,R6,R0, ASL #1
DH CMP     R7, #5
DR MOVLT   R7, #21
D\ :
Df STMFD   R13!,{R1-R6}
Dp :
Dz BL      check_death
D� :
D� MOV     R2,R2, ASR #4
D� MOV     R3,R3, ASR #4
D� RSB     R3,R3, #256
D�  LDR     R4, adr_screenstore
D� LDR     R4,[R4]
D� MOV     R5, #y_shift
D� ADD     R4,R4,R2
D� MLA     R4,R5,R3,R4
D� LDRB    R0,[R4]
D� CMP     R0, #0
D� �Q   R10, #1
D� MOVNE   R10, #0
E BNE     no_homing
E RSB     R3,R3, #256
E MOV     R0,R7
E$ SUB     R1,R2, #2
E. SUB     R2,R3, #2
E8 BL      plot_sprite_0804
EB;LDR     R0, adr_gun_fade
EL;MOV     R9,R6, LSR #8
EV;�     R9,R9, #255
E`;CMP     R9, #255
Ej;MOVGT   R9, #255
Et;LDRB    R0,[R0,R9]
E~;STRB    R0,[R4]
E� .no_homing
E� :
E� LDMFD   R13!,{R1-R6}
E� CMP     R10, #0
E� BNE     end_homing
E� MOV     R0, #11
E� MOV     R1,R2, ASR #4
E� MOV     R2,R3, ASR #4
E� RSB     R2,R2, #256
E� RSB     R3,R4, #0
E� RSB     R4,R5, #0
E� MOV     R3,R3, ASR #2
F MOV     R4,R4, ASR #2
F
 �     R5,R6, #1
F BL      add_cell
F MOV     R5, #1
F( MOV     R0, #1
F2 MVN     R1, #4
F< MOV     R2, #explosion%
FF MOV     R3, #0
FP SWI     "Sound_Control"
FZ MOV     R1, #0
Fd .end_homing
Fn LDMFD   R13!,{R9,PC}
Fx :
F�
 .seeking
F� STMFD   R13!,{R9,R14}
F� :
F� TST     R6, #1
F� LDREQ   R10, p1_x
F� LDREQ   R11, p1_y
F� LDRNE   R10, p2_x
F� LDRNE   R11, p2_y
F� ADD     R10,R10, #xext%/2
F� ADD     R11,R11, #yext%/2
F� CMP     R2,R10, ASL #4
F� SUBGT   R4,R4, #1
F� ADDLT   R4,R4, #1
G CMP     R3,R11, ASL #4
G SUBGT   R5,R5, #1
G ADDLT   R5,R5, #1
G" MOV     R0, #16
G, CMP     R4,R0
G6 SUBGT   R4,R4, #1
G@ RSB     R0,R0, #0
GJ CMP     R4,R0
GT ADDLT   R4,R4, #1
G^ MOV     R0, #16
Gh CMP     R5,R0
Gr SUBGT   R5,R5, #1
G| RSB     R0,R0, #0
G� CMP     R5,R0
G� ADDLT   R5,R5, #1
G� :
G� STMFD   R13!,{R1-R6}
G� :
G� BL      check_death
G� :
G� MOV     R2,R2, ASR #4
G� MOV     R3,R3, ASR #4
G� RSB     R3,R3, #256
G�  LDR     R4, adr_screenstore
G� LDR     R4,[R4]
G� MOV     R5, #y_shift
H ADD     R4,R4,R2
H MLA     R4,R5,R3,R4
H LDRB    R0,[R4]
H& CMP     R0, #0
H0 �Q   R10, #1
H: BEQ     post_recalc
HD MOV     R10, #0
HN LDMFD   R13,{R1-R6}
HX SUB     R2,R2,R4, ASL #1
Hb SUB     R3,R3,R5, ASL #1
Hl MOV     R2,R2, ASR #4
Hv MOV     R3,R3, ASR #4
H� RSB     R3,R3, #256
H�  LDR     R4, adr_screenstore
H� LDR     R4,[R4]
H� MOV     R5, #y_shift
H� ADD     R4,R4,R2
H� MLA     R4,R5,R3,R4
H� .post_recalc
H� RSB     R3,R3, #256
H� MOV     R0, #4
H� TST     R6, #1
H� MOVNE   R0, #23
H� SUB     R1,R2, #2
H� SUB     R2,R3, #2
I BL      plot_sprite_0804
I .no_seeking
I :
I  LDMFD   R13!,{R1-R6}
I* CMP     R10, #0
I4 ADDNE   R2,R2,R4
I> ADDNE   R3,R3,R5
IH SUBEQ   R2,R2,R4, ASL #1
IR SUBEQ   R3,R3,R5, ASL #1
I\ �Q   R4, #0
If �Q   R5, #0
Ip LDMFD   R13!,{R9,PC}
Iz :
I� .vertical
I� STMFD   R13!,{R9,R14}
I� :
I� ADD     R2,R2,R4
I� ADD     R3,R3,R5
I� :
I� STMFD   R13!,{R1-R6}
I� :
I� BL      check_death
I� :
I� MOV     R2,R2, ASR #4
I� MOV     R3,R3, ASR #4
I� RSB     R3,R3, #256
J  LDR     R4, adr_screenstore
J LDR     R4,[R4]
J MOV     R5, #y_shift
J$ ADD     R4,R4,R2
J. MLA     R4,R5,R3,R4
J8 LDRB    R0,[R4]
JB CMP     R0, #0
JL �Q   R10, #1
JV MOVNE   R10, #0
J` BNE     no_vert
Jj RSB     R3,R3, #256
Jt MOV     R0, #22
J~ SUB     R1,R2, #2
J� SUB     R2,R3, #2
J� BL      plot_sprite_0804
J�;LDR     R0, adr_gun_fade
J�;MOV     R9, #255
J�;LDRB    R0,[R0,R9]
J�;STRB    R0,[R4]
J�;ADD     R4,R4, #320
J�;SUB     R4,R4, #1
J�;STRB    R0,[R4]
J�;STRB    R0,[R4, #2]
J�
 .no_vert
J� :
K LDMFD   R13!,{R1-R6}
K
 CMP     R10, #0
K �Q   R1, #0
K LDMFD   R13!,{R9,PC}
K( :
K2 .check_death
K< TST     R6, #1
KF LDREQ   R10, p1_x
KP LDREQ   R11, p1_y
KZ LDRNE   R10, p2_x
Kd LDRNE   R11, p2_y
Kn MOV     R9,R2, ASR #4
Kx SUB     R10,R9,R10
K� CMN     R10, #2
K� BLT     not_dead
K� CMP     R10, #xext%+2
K� BGT     not_dead
K� MOV     R9,R3, ASR #4
K� SUB     R11,R9,R11
K� CMN     R11, #2
K� BLT     not_dead
K� CMP     R11, #yext%+2
K� BGT     not_dead
K� TST     R6, #1
K� BNE     dead_player2
K� LDR     R0, player1_alive
L CMP     R0, #1
L BEQ     not_dead
L MOV     R0, #1
L" STR     R0, player1_alive
L, MOV     R0, #3
L6 MVN     R1, #14
L@ MOV     R2, #scream%
LJ MOV     R3, #0
LT SWI     "Sound_Control"
L^ B       not_dead
Lh .dead_player2
Lr LDR     R0, player2_alive
L| CMP     R0, #1
L� BEQ     not_dead
L� MOV     R0, #1
L� STR     R0, player2_alive
L� MOV     R0, #3
L� MVN     R1, #14
L� MOV     R2, #scream%
L� MOV     R3, #0
L� SWI     "Sound_Control"
L� .not_dead
L� MOV     PC,R14
L� :
L� .player1_alive
L� EQUD    0
M .player2_alive
M EQUD    0
M :
M& .explosion_spray
M0 ]
M: � a%=1 � 64
MD r%=�(20)+28
MN ang%=�(360)
MX x%=��(ang%)*r%
Mb y%=��(ang%)*r%
Ml! � x%<0 � x%=(x% � 128) � 255
Mv! � y%<0 � y%=(y% � 128) � 255
M� [OPT pass%
M� EQUB    x%
M� EQUB    y%
M� ]
M� �
M� [OPT pass%
M�
 ALIGN
M� :
M� .end_game
M� EQUD    0
M� .adr_screenstore
M� EQUD    screenstore
M� .adr_clist2
N EQUD    clist%
N :
N :
N  :
N* .add_cell
N4 STMFD   R13!,{R0-R12,R14}
N> :
NH RSB     R2,R2, #256
NR MOV     R1,R1, ASL #4
N\ MOV     R2,R2, ASL #4
Nf :
Np LDR     R9, adr_bclist
Nz .sloop1
N� LDR     R8,[R9], #32
N� CMP     R8, #0
N� LDRGT   R8,[R9], #32
N� CMPGT   R8, #0
N� LDRGT   R8,[R9], #32
N� CMPGT   R8, #0
N� LDRGT   R8,[R9], #32
N� CMPGT   R8, #0
N� BGT     sloop1
N� SUBEQ   R9,R9, #32
N� STMEQIA R9,{R0-R5}
N� STREQ   R9, adr_bclist
N� :
O LDMFD   R13!,{R0-R12,PC}
O :
O :
O$ :
O. .add_goodie
O8 STMFD   R13!,{R0-R12,R14}
OB :
OL LDR     R9, rnd
OV MOV     R9,R9, LSR #24
O` �     R0,R9, #255
Oj .goodie_loop
Ot CMP     R0, #8
O~ SUBGT   R0,R0, #8
O� BGT     goodie_loop
O� ADD     R0,R0, #4
O� �     R1,R9, #%111000
O� ADR     R2, positions
O� ADD     R2,R2,R1
O� LDR     R1,[R2]
O� LDR     R2,[R2, #4]
O� MOV     R3, #320
O� BL      add_sprite
O� :
O� LDMFD   R13!,{R0-R12,PC}
O� :
P .positions
P
 ]
P � a%=0 � 8
P [OPTpass%
P( EQUD    0
P2 EQUD    0
P< ]
PF �
PP [OPT pass%
PZ :
Pd .as_adr_slist
Pn EQUD    slist%
Px :
P� .add_sprite
P� STMFD   R13!,{R0-R12,R14}
P� :
P� LDR     R9, as_adr_slist
P� .sloop1
P� LDR     R8,[R9]
P� CMP     R8, #0
P� ADDNE   R9,R9, #16
P� BNE     sloop1
P� STMEQIA R9,{R0-R3}
P� BEQ     done_cell
P� .done_cell
P� :
Q LDMFD   R13!,{R0-R12,PC}
Q :
Q
 .p2_fire
Q" EQUD    0
Q, .explode_2
Q6 EQUD    0
Q@ :
QJ
 .player2
QT STMFD   R13!,{R9,R14}
Q^ :
Qh CMP     R6, #32
Qr MOVLT   R6, #32
Q| CMP     R7, #32
Q� MOVLT   R7, #32
Q� CMP     R6, #1280-80
Q� MOVGT   R6, #1280-80
Q� CMP     R7, #1024-80
Q� MOVGT   R7, #1024-80
Q� :
Q� LDR     R0, player2_alive
Q� CMP     R0, #0
Q� BEQ     play_player2
Q� BNE     explode_player2
Q� :
Q� .explode_player2
Q� :
R LDR     R0, explode_2
R ADD     R0,R0, #1
R STR     R0, explode_2
R& CMP     R0, #7<<3
R0 STRGT   R0, end_game
R: LDMGTFD R13!,{R9,PC}
RD CMP     R0, #7<<1
RN LDMGTFD R13!,{R9,PC}
RX MOV     R0,R0, ASR #1
Rb MOV     R1,R6, ASR #2
Rl MOV     R2,R7, ASR #2
Rv SUB     R1,R1, #4
R� BL      plot_sprite_2016
R� :
R� LDMFD   R13!,{R9,PC}
R� :
R� .play_player2
R� :
R� MOV     R1,R6, LSR #2
R� MOV     R2,R7, LSR #2
R� ADD     R1,R1, #xext%/2
R� BL      read_point
R� CMP     R0, #0
R� SUBEQ   R7,R7, #4
R� :
S MOV     R1,R6, LSR #2
S MOV     R2,R7, LSR #2
S ADD     R1,R1, #xext%/3
S  BL      read_point
S* CMP     R0, #0
S4 ADDNE   R7,R7, #4
S> :
SH MOV     R1,R6, LSR #2
SR MOV     R2,R7, LSR #2
S\ ADD     R1,R1, #xext%/3*2
Sf BL      read_point
Sp CMP     R0, #0
Sz ADDNE   R7,R7, #4
S� :
S� �     R10,R8, #255<<8
S� MOV     R10,R10, LSR #8
S� :
S� MOV     R1,R6, LSR #2
S� MOV     R2,R7, LSR #2
S� ADD     R1,R1, #xext%+1
S� ADD     R2,R2, #8
S� BL      read_point
S� CMP     R0, #0
S� BNE     p2_not_right
S� MOV     R1,R6, LSR #2
S� MOV     R2,R7, LSR #2
T ADD     R1,R1, #xext%
T ADD     R2,R2, #yext%-2
T BL      read_point
T$ CMP     R0, #0
T. BNE     p2_not_right
T8 MOV     R0, #129
TB MOV     R1, #0
TL SUB     R1,R1, #124
TV MOV     R2, #255
T` SWI     "OS_Byte"
Tj CMP     R1, #255
Tt BNE     p2_not_right
T~ ADD     R10,R10, #4
T� BIC     R8,R8, #1
T� .p2_not_right
T� :
T� MOV     R1,R6, LSR #2
T� MOV     R2,R7, LSR #2
T� SUB     R1,R1, #1
T� ADD     R2,R2, #8
T� BL      read_point
T� CMP     R0, #0
T� BNE     p2_not_left
T� MOV     R1,R6, LSR #2
T� MOV     R2,R7, LSR #2
U SUB     R1,R1, #1
U
 ADD     R2,R2, #yext%-2
U BL      read_point
U CMP     R0, #0
U( BNE     p2_not_left
U2 MOV     R0, #129
U< MOV     R1, #0
UF SUB     R1,R1, #123
UP MOV     R2, #255
UZ SWI     "OS_Byte"
Ud CMP     R1, #255
Un BNE     p2_not_left
Ux SUB     R10,R10, #4
U� �R     R8,R8, #1
U� .p2_not_left
U� :
U� CMP     R10, #128
U� BEQ     p2_sideways
U� BGT     p2_right
U� MOV     R1,R6, LSR #2
U� MOV     R2,R7, LSR #2
U� SUB     R1,R1, #1
U� ADD     R2,R2, #8
U� BL      read_point
U� CMP     R0, #0
U� MOVNE   R10, #128
V MOV     R1,R6, LSR #2
V MOV     R2,R7, LSR #2
V SUB     R1,R1, #1
V" ADD     R2,R2, #yext%-2
V, BL      read_point
V6 CMP     R0, #0
V@ MOVNE   R10, #128
VJ B       p2_sideways
VT .p2_right
V^ MOV     R1,R6, LSR #2
Vh MOV     R2,R7, LSR #2
Vr ADD     R1,R1, #xext%
V| ADD     R2,R2, #8
V� BL      read_point
V� CMP     R0, #0
V� MOVNE   R10, #128
V� MOV     R1,R6, LSR #2
V� MOV     R2,R7, LSR #2
V� ADD     R1,R1, #xext%
V� ADD     R2,R2, #yext%-2
V� BL      read_point
V� CMP     R0, #0
V� MOVNE   R10, #128
V� B       p2_sideways
V� .p2_sideways
V� CMP     R10, #128+25*2
W MOVGT   R10, #128+25*2
W CMP     R10, #128-25*2
W MOVLT   R10, #128-25*2
W& CMP     R10, #128
W0 ADDLT   R10,R10, #1
W: SUBGT   R10,R10, #1
WD BIC     R8,R8, #255<<8
WN �R     R8,R8,R10, LSL #8
WX SUB     R10,R10, #128
Wb ADD     R6,R6,R10, ASR #3
Wl :
Wv �     R10,R8, #255<<16
W� MOV     R10,R10, LSR #16
W� :
W� MOV     R1,R6, LSR #2
W� MOV     R2,R7, LSR #2
W� ADD     R1,R1, #xext%/2
W� ADD     R2,R2, #yext%
W� BL      read_point
W� CMP     R0, #0
W� BNE     p2_not_up
W�;MOV     R1,R6, LSR #2
W�;MOV     R2,R7, LSR #2
W�;ADD     R1,R1, #xext%/2
W�;ADD     R2,R2, #yext%
X;BL      read_point
X;CMP     R0, #0
X;BNE     p2_not_up
X  MOV     R0, #129
X* MOV     R1, #0
X4 SUB     R1,R1, #27
X> MOV     R2, #255
XH SWI     "OS_Byte"
XR CMP     R1, #255
X\ ADDEQ   R10,R10, #4
Xf .p2_not_up
Xp :
Xz MOV     R1,R6, LSR #2
X� MOV     R2,R7, LSR #2
X� ADD     R1,R1, #xext%-2
X� BL      read_point
X� CMP     R0, #0
X� BNE     p2_not_down
X� MOV     R1,R6, LSR #2
X� MOV     R2,R7, LSR #2
X� ADD     R1,R1, #2
X� BL      read_point
X� CMP     R0, #0
X� BNE     p2_not_down
X� MOV     R0, #129
X� MOV     R1, #0
Y SUB     R1,R1, #109
Y MOV     R2, #255
Y SWI     "OS_Byte"
Y$ CMP     R1, #255
Y. SUBEQ   R10,R10, #2
Y8 .p2_not_down
YB :
YL SUB     R10,R10, #1
YV :
Y` CMP     R10, #128
Yj BEQ     p2_ud
Yt BGT     p2_up
Y~ MOV     R1,R6, LSR #2
Y� MOV     R2,R7, LSR #2
Y� ADD     R1,R1, #xext%/2
Y� SUB     R2,R2, #1
Y� BL      read_point
Y� CMP     R0, #0
Y� MOVNE   R10, #128
Y� B       p2_ud
Y� .p2_up
Y� MOV     R1,R6, LSR #2
Y� MOV     R2,R7, LSR #2
Y� ADD     R1,R1, #xext%/2+2
Y� ADD     R2,R2, #yext%
Z BL      read_point
Z
 CMP     R0, #0
Z MOVNE   R10, #128
Z MOV     R1,R6, LSR #2
Z( MOV     R2,R7, LSR #2
Z2 ADD     R1,R1, #xext%/2-2
Z< ADD     R2,R2, #yext%
ZF BL      read_point
ZP CMP     R0, #0
ZZ MOVNE   R10, #128
Zd B       p2_ud
Zn .p2_ud
Zx CMP     R10, #128+11*4
Z� MOVGT   R10, #128+11*4
Z� CMP     R10, #128-8*4
Z� MOVLT   R10, #128-8*4
Z� CMP     R10, #128
Z� BIC     R8,R8, #255<<16
Z� �R     R8,R8,R10, LSL #16
Z� SUB     R10,R10, #128
Z� ADD     R7,R7,R10, ASR #2
Z� :
Z� LDR     R0, adr_p2_weapon
Z� LDR     R0,[R0]
[ CMP     R0, #2
[ BEQ     p2_fire_pistol
[" CMP     R0, #3
[, BEQ     p2_fire_gun
[6 CMP     R0, #4
[@ BEQ     p2_fire_mortar
[J CMP     R0, #5
[T BEQ     p2_fire_homing
[^ CMP     R0, #6
[h BEQ     p2_fire_seeking
[r CMP     R0, #7
[| BEQ     p2_fire_vertical
[� CMP     R0, #8
[� BEQ     p2_fire_flame
[� CMP     R0, #9
[� BEQ     p2_fire_bomb
[� CMP     R0, #10
[� BEQ     p2_fire_cluster
[� :
[� .p2_fire_pistol
[� LDR     R0, p2_fire
[� CMP     R0, #0
[� BEQ     p2_pistol_shot
[� MOV     R0, #129
[� MOV     R1, #0
\ SUB     R1,R1, #59
\ MOV     R2, #255
\ SWI     "OS_Byte"
\& CMP     R1, #255
\0 MOVNE   R0, #0
\: STRNE   R0, p2_fire
\D B       p2_not_fire_pistol
\N .p2_pistol_shot
\X MOV     R0, #129
\b MOV     R1, #0
\l SUB     R1,R1, #59
\v MOV     R2, #255
\� SWI     "OS_Byte"
\� CMP     R1, #255
\� BNE     p2_not_fire_pistol
\� MOV     R0, #2
\� 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, #80
\� MOV     R4, #0
\� MOV     R5, #0
\� TST     R8, #1
] RSBNE   R3,R3, #0
] SUBNE   R1,R1, #xext%
] BL      add_cell
]  MOV     R5, #2
]* MOV     R0, #1
]4 STR     R0, p2_fire
]> MOV     R0, #7
]H MVN     R1, #14
]R MOV     R2, #12800
]\ MOV     R3, #0
]f SWI     "Sound_Control"
]p .p2_not_fire_pistol
]z B       p2_end_fire
]� :
]� .p2_fire_gun
]� MOV     R0, #129
]� MOV     R1, #0
]� SUB     R1,R1, #59
]� MOV     R2, #255
]� SWI     "OS_Byte"
]� CMP     R1, #255
]� BNE     p2_not_fire_gun
]� LDR     R0, p2_fire
]� ADD     R0,R0, #1
]� �     R0,R0, #%11
]� STR     R0, p2_fire
^ TST     R0, #%11
^ BNE     p2_not_fire_gun
^ MOV     R0, #3
^$ MOV     R1,R6, LSR #2
^. MOV     R2,R7, LSR #2
^8 ADD     R1,R1, #xext%
^B ADD     R2,R2, #yext%/4*2
^L RSB     R2,R2, #256
^V MOV     R3, #80
^` LDR     R5, adr_rnd
^j LDR     R5,[R5]
^t �     R4,R5, #%1111
^~ SUB     R4,R4, #%0111
^� �     R5,R5, #%110000
^� MOV     R5,R5, LSR #4
^� ADD     R1,R1,R5
^� MOV     R5, #0
^� TST     R8, #1
^� RSBNE   R3,R3, #0
^� SUBNE   R1,R1, #xext%+2
^� BL      add_cell
^� MOV     R5, #2
^� MOV     R0, #gun_sound%
^� MVN     R1, #10
^� MOV     R2, #gun_rate%
_ MOV     R3, #0
_
 SWI     "Sound_Control"
_ .p2_not_fire_gun
_ B       p2_end_fire
_( :
_2 .p2_fire_mortar
_<;LDR     R0, p2_fire
_F;CMP     R0, #0
_P;BEQ     p2_mortar_shot
_Z;MOV     R0, #129
_d;MOV     R1, #0
_n;SUB     R1,R1, #59
_x;MOV     R2, #255
_�;SWI     "OS_Byte"
_�;CMP     R1, #255
_�;MOVNE   R0, #0
_�;STRNE   R0, p2_fire
_�;B       p2_not_fire_mortar
_�;.p2_mortar_shot
_� MOV     R0, #129
_� MOV     R1, #0
_� SUB     R1,R1, #59
_� MOV     R2, #255
_� SWI     "OS_Byte"
_� CMP     R1, #255
_� BNE     p2_not_fire_mortar
` LDR     R0, p2_fire
` ADD     R0,R0, #1
` �     R0,R0, #%11111
`" STR     R0, p2_fire
`, TST     R0, #%11111
`6 BNE     p2_not_fire_mortar
`@ MOV     R0, #4
`J MOV     R1,R6, LSR #2
`T MOV     R2,R7, LSR #2
`^ ADD     R1,R1, #xext%
`h ADD     R2,R2, #yext%/4*2
`r RSB     R2,R2, #256
`| MOV     R3, #30
`� MOV     R4, #40
`� MOV     R5, #0
`� TST     R8, #1
`� RSBNE   R3,R3, #0
`� SUBNE   R1,R1, #xext%
`� BL      add_cell
`� MOV     R5, #2
`� MOV     R0, #1
`� STR     R0, p2_fire
`� .p2_not_fire_mortar
`� B       p2_end_fire
`� :
`� .p2_fire_homing
a .p2_homing_shot
a MOV     R0, #129
a MOV     R1, #0
a& SUB     R1,R1, #59
a0 MOV     R2, #255
a: SWI     "OS_Byte"
aD CMP     R1, #255
aN BNE     p2_not_fire_homing
aX LDR     R0, p2_fire
ab ADD     R0,R0, #1
al �     R0,R0, #%1111
av STR     R0, p2_fire
a� TST     R0, #%1111
a� BNE     p2_not_fire_homing
a� MOV     R0, #5
a� MOV     R1,R6, LSR #2
a� MOV     R2,R7, LSR #2
a� ADD     R1,R1, #xext%
a� ADD     R2,R2, #yext%/4*2
a� RSB     R2,R2, #256
a� MOV     R3, #64
a� LDR     R4, adr_rnd
a� LDR     R4,[R4]
a� �     R4,R4, #15
a� SUB     R4,R4, #7
b9 MOV     R5, #224<<8          ; Homing in on player 1
b TST     R8, #1
b RSBNE   R3,R3, #0
b  SUBNE   R1,R1, #xext%
b* BL      add_cell
b4 MOV     R5, #7
b> MOV     R0, #homing_sound%
bH MVN     R1, #8
bR MOV     R2, #homing_rate%
b\ MOV     R3, #0
bf SWI     "Sound_Control"
bp .p2_not_fire_homing
bz B       p2_end_fire
b� :
b� .p2_fire_seeking
b� .p2_seeking_shot
b� MOV     R0, #129
b� MOV     R1, #0
b� SUB     R1,R1, #59
b� MOV     R2, #255
b� SWI     "OS_Byte"
b� CMP     R1, #255
b�  BNE     p2_not_fire_seeking
b� MOV     R0, #6
b� MOV     R1,R6, LSR #2
b� MOV     R2,R7, LSR #2
c ADD     R1,R1, #xext%*3/2
c ADD     R2,R2, #yext%/4*2
c RSB     R2,R2, #256
c$ MOV     R3, #32
c. MOV     R4, #0
c89 MOV     R5, #0               ; Homing in on player 1
cB TST     R8, #1
cL RSBNE   R3,R3, #0
cV SUBNE   R1,R1, #xext%*2
c` BL      add_cell
cj MOV     R5, #2
ct MOV     R9, #2
c~ LDR     R10, adr_p2_weapon
c� STR     R9,[R10]
c�  MOV     R0, #seeking_sound%
c� MVN     R1, #14
c� MOV     R2, #seeking_rate%
c� MOV     R3, #0
c� SWI     "Sound_Control"
c� MOV     R0, #1
c� STR     R0, p2_fire
c� .p2_not_fire_seeking
c� B       p2_end_fire
c� :
c� .p2_fire_vertical
d LDR     R0, p2_fire
d
 CMP     R0, #0
d BEQ     p2_vertical_shot
d MOV     R0, #129
d( MOV     R1, #0
d2 SUB     R1,R1, #59
d< MOV     R2, #255
dF SWI     "OS_Byte"
dP CMP     R1, #255
dZ MOVNE   R0, #0
dd STRNE   R0, p2_fire
dn! B       p2_not_fire_vertical
dx .p2_vertical_shot
d� MOV     R0, #129
d� MOV     R1, #0
d� SUB     R1,R1, #59
d� MOV     R2, #255
d� SWI     "OS_Byte"
d� CMP     R1, #255
d�! BNE     p2_not_fire_vertical
d� MOV     R0, #7
d� MOV     R1,R6, LSR #2
d� MOV     R2,R7, LSR #2
d� ADD     R1,R1, #xext%
d� ADD     R2,R2, #yext%/4*2
d� RSB     R2,R2, #256
e MOV     R3, #0
e MOV     R4, #64
e MOV     R5, #0
e" TST     R8, #1
e, RSBNE   R3,R3, #0
e6 SUBNE   R1,R1, #xext%
e@ BL      add_cell
eJ MOV     R5, #2
eT MOV     R0, #1
e^ STR     R0, p2_fire
eh MOV     R0, #7
er MVN     R1, #14
e| MOV     R2, #10240
e� MOV     R3, #0
e� SWI     "Sound_Control"
e� .p2_not_fire_vertical
e� B       p2_end_fire
e� :
e� .p2_fire_flame
e� MOV     R0, #129
e� MOV     R1, #0
e� SUB     R1,R1, #59
e� MOV     R2, #255
e� SWI     "OS_Byte"
e� CMP     R1, #255
e� BNE     p2_not_fire_flame
f MOV     R0, #10
f MOV     R1,R6, LSR #2
f MOV     R2,R7, LSR #2
f& ADD     R1,R1, #xext%
f0 ADD     R2,R2, #yext%/4*2
f: RSB     R2,R2, #256
fD MOV     R3, #72
fN LDR     R4, adr_rnd
fX LDR     R4,[R4]
fb �     R4,R4, #7
fl SUB     R4,R4, #1
fv MOV     R5,R5, LSR #4
f� ADD     R1,R1,R5
f� MOV     R5, #0
f� TST     R8, #1
f� RSBNE   R3,R3, #0
f� SUBNE   R1,R1, #xext%
f� BL      add_cell
f� .p2_not_fire_flame
f� B       p2_end_fire
f� :
f� .p2_fire_bomb
f� MOV     R0, #129
f� MOV     R1, #0
f� SUB     R1,R1, #59
g MOV     R2, #255
g SWI     "OS_Byte"
g CMP     R1, #255
g  BNE     p2_not_fire_bomb
g* LDR     R0, p2_fire
g4 ADD     R0,R0, #1
g> CMP     R0, #10
gH MOVGT   R0, #0
gR STR     R0, p2_fire
g\ CMP     R0, #0
gf BNE     p2_not_fire_bomb
gp MOV     R0, #12
gz MOV     R1,R6, LSR #2
g� MOV     R2,R7, LSR #2
g� ADD     R1,R1, #xext%+1
g� ADD     R2,R2, #yext%/4*2
g� RSB     R2,R2, #256
g� MOV     R3, #40
g� MOV     R4, #40
g� MOV     R5, #bomb_pause%
g� TST     R8, #1
g� RSBNE   R3,R3, #0
g� SUBNE   R1,R1, #xext%+2
g� BL      add_cell
g� MOV     R5, #2
g� MOV     R0, #1
h STR     R0, p2_fire
h .p2_not_fire_bomb
h B       p2_end_fire
h$ :
h. .p2_fire_cluster
h8 MOV     R0, #129
hB MOV     R1, #0
hL SUB     R1,R1, #59
hV MOV     R2, #255
h` SWI     "OS_Byte"
hj CMP     R1, #255
ht  BNE     p2_not_fire_cluster
h� MOV     R0, #13
h� MOV     R1,R6, LSR #2
h� MOV     R2,R7, LSR #2
h� ADD     R1,R1, #xext%+1
i ADD     R2,R2, #yext%/4*2
i
 RSB     R2,R2, #256
i MOV     R3, #512
i MOV     R4, #128
i(! MOV     R5, #bomb_pause%*.25
i2 TST     R8, #1
i< RSBNE   R3,R3, #0
iF SUBNE   R1,R1, #xext%+2
iP BL      add_cell
iZ ADD     R3,R3, #64
id ADD     R4,R4, #64
in ADD     R5,R5, #32
ix BL      add_cell
i� ADD     R3,R3, #64
i� ADD     R4,R4, #64
i� ADD     R5,R5, #32
i� BL      add_cell
i� MOV     R9, #2
i� LDR     R10, adr_p2_weapon
i� STR     R9,[R10]
i� MOV     R5, #2
i� MOV     R0, #1
i� STR     R0, p2_fire
i� .p2_not_fire_cluster
i� B       p2_end_fire
i� :
j .p2_end_fire
j :
j MOV     R0, #1
j" MOV     R1,R6, LSR #2
j, MOV     R2,R7, LSR #2
j6 TST     R8, #1
j@ ADDNE   R1,R1, #xext%
jJ ADD     R2,R2, #yext%/4
jT RSB     R2,R2, #256
j^ LDR     R3, adr_rnd
jh LDR     R3,[R3]
jr TST     R3, #%10000
j| SUBEQ   R2,R2, #1
j� �     R3,R3, #15
j� SUB     R3,R3, #7
j� MOV     R4, #0
j� SUB     R4,R4, #40
j� MOV     R5, #32
j� BL      add_cell
j� MOV     R5, #2
j� :
j� �     R0,R8, #1
j� ADD     R0,R0, #2
j� MOV     R1,R6, LSR #2
j� MOV     R2,R7, LSR #2
j� LDR     R3, adr_p2_x
k STR     R1,[R3]
k LDR     R3, adr_p2_y
k STR     R2,[R3]
k& BL      plot_sprite_1616
k0 :
k: LDMFD   R13!,{R9,PC}
kD :
kN .adr_p2_x
kX EQUD    p2_x
kb .adr_p2_y
kl EQUD    p2_y
kv .adr_p2_weapon
k� EQUD    p2_weapon
k� .adr_p1_weapon
k� EQUD    p1_weapon
k�
 .p1_fire
k� EQUD    0
k� .explode_1
k� EQUD    0
k� :
k�
 .player1
k� STMFD   R13!,{R9,R14}
k� :
k� CMP     R6, #32
k� MOVLT   R6, #32
l CMP     R7, #32
l MOVLT   R7, #32
l CMP     R6, #1280-64
l  MOVGT   R6, #1280-64
l* CMP     R7, #1024-64
l4 MOVGT   R7, #1024-64
l> :
lH LDR     R0, player1_alive
lR CMP     R0, #0
l\ BEQ     play_player1
lf BNE     explode_player1
lp :
lz .explode_player1
l� LDR     R0, explode_1
l� ADD     R0,R0, #1
l� STR     R0, explode_1
l� CMP     R0, #7<<3
l� STRGT   R0, end_game
l� LDMGTFD R13!,{R9,PC}
l� CMP     R0, #7<<1
l� LDMGTFD R13!,{R9,PC}
l� MOV     R0,R0, ASR #1
l� MOV     R1,R6, ASR #2
l� MOV     R2,R7, ASR #2
l� SUB     R1,R1, #4
l� BL      plot_sprite_2016
m :
m LDMFD   R13!,{R9,PC}
m :
m$ .play_player1
m. :
m8 MOV     R1,R6, LSR #2
mB MOV     R2,R7, LSR #2
mL ADD     R1,R1, #xext%/2
mV BL      read_point
m` CMP     R0, #0
mj SUBEQ   R7,R7, #4
mt :
m~ MOV     R1,R6, LSR #2
m� MOV     R2,R7, LSR #2
m� ADD     R1,R1, #xext%/3
m� BL      read_point
m� CMP     R0, #0
m� ADDNE   R7,R7, #4
m� :
m� MOV     R1,R6, LSR #2
m� MOV     R2,R7, LSR #2
m� ADD     R1,R1, #xext%/3*2
m� BL      read_point
m� CMP     R0, #0
m� ADDNE   R7,R7, #4
n :
n
 �     R10,R8, #255<<8
n MOV     R10,R10, LSR #8
n :
n( MOV     R1,R6, LSR #2
n2 MOV     R2,R7, LSR #2
n< ADD     R1,R1, #xext%-1
nF ADD     R2,R2, #8
nP BL      read_point
nZ CMP     R0, #0
nd BNE     p1_not_right
nn MOV     R1,R6, LSR #2
nx MOV     R2,R7, LSR #2
n� ADD     R1,R1, #xext%
n� ADD     R2,R2, #yext%-2
n� BL      read_point
n� CMP     R0, #0
n� BNE     p1_not_right
n� MOV     R0, #129
n� MOV     R1, #0
n� SUB     R1,R1, #67
n� MOV     R2, #255
n� SWI     "OS_Byte"
n� CMP     R1, #255
n� BNE     p1_not_right
n� ADD     R10,R10, #4
o BIC     R8,R8, #1
o .p1_not_right
o :
o" MOV     R1,R6, LSR #2
o, MOV     R2,R7, LSR #2
o6 SUB     R1,R1, #1
o@ ADD     R2,R2, #8
oJ BL      read_point
oT CMP     R0, #0
o^ BNE     p1_not_left
oh MOV     R1,R6, LSR #2
or MOV     R2,R7, LSR #2
o| SUB     R1,R1, #1
o� ADD     R2,R2, #yext%-2
o� BL      read_point
o� CMP     R0, #0
o� BNE     p1_not_left
o� MOV     R0, #129
o� MOV     R1, #0
o� SUB     R1,R1, #98
o� MOV     R2, #255
o� SWI     "OS_Byte"
o� CMP     R1, #255
o� BNE     p1_not_left
o� SUB     R10,R10, #4
o� �R     R8,R8, #1
p .p1_not_left
p :
p CMP     R10, #128
p& BEQ     p1_sideways
p0 BGT     p1_right
p: MOV     R1,R6, LSR #2
pD MOV     R2,R7, LSR #2
pN SUB     R1,R1, #1
pX ADD     R2,R2, #8
pb BL      read_point
pl CMP     R0, #0
pv MOVNE   R10, #128
p� MOV     R1,R6, LSR #2
p� MOV     R2,R7, LSR #2
p� SUB     R1,R1, #1
p� ADD     R2,R2, #yext%-2
p� BL      read_point
p� CMP     R0, #0
p� MOVNE   R10, #128
p� B       p1_sideways
p� .p1_right
p� MOV     R1,R6, LSR #2
p� MOV     R2,R7, LSR #2
p� ADD     R1,R1, #xext%
p� ADD     R2,R2, #8
q BL      read_point
q CMP     R0, #0
q MOVNE   R10, #128
q  MOV     R1,R6, LSR #2
q* MOV     R2,R7, LSR #2
q4 ADD     R1,R1, #xext%
q> ADD     R2,R2, #yext%-2
qH BL      read_point
qR CMP     R0, #0
q\ MOVNE   R10, #128
qf B       p1_sideways
qp .p1_sideways
qz CMP     R10, #128+25*2
q� MOVGT   R10, #128+25*2
q� CMP     R10, #128-25*2
q� MOVLT   R10, #128-25*2
q� CMP     R10, #128
q� ADDLT   R10,R10, #1
q� SUBGT   R10,R10, #1
q� BIC     R8,R8, #255<<8
q� �R     R8,R8,R10, LSL #8
q� SUB     R10,R10, #128
q� ADD     R6,R6,R10, ASR #3
q� :
q� �     R10,R8, #255<<16
q� MOV     R10,R10, LSR #16
r :
r MOV     R1,R6, LSR #2
r MOV     R2,R7, LSR #2
r$ ADD     R1,R1, #xext%/2+1
r. ADD     R2,R2, #yext%
r8 BL      read_point
rB CMP     R0, #0
rL BNE     p1_not_up
rV MOV     R1,R6, LSR #2
r` MOV     R2,R7, LSR #2
rj ADD     R1,R1, #xext%/2-1
rt ADD     R2,R2, #yext%
r~ BL      read_point
r� CMP     R0, #0
r� BNE     p1_not_up
r� MOV     R0, #129
r� MOV     R1, #0
r� SUB     R1,R1, #68
r� MOV     R2, #255
r� SWI     "OS_Byte"
r� CMP     R1, #255
r� ADDEQ   R10,R10, #4
r� .p1_not_up
r� :
r� MOV     R1,R6, LSR #2
s MOV     R2,R7, LSR #2
s
 ADD     R1,R1, #xext%-2
s BL      read_point
s CMP     R0, #0
s( BNE     p1_not_down
s2 MOV     R1,R6, LSR #2
s< MOV     R2,R7, LSR #2
sF ADD     R1,R1, #2
sP BL      read_point
sZ CMP     R0, #0
sd BNE     p1_not_down
sn MOV     R0, #129
sx MOV     R1, #0
s� SUB     R1,R1, #83
s� MOV     R2, #255
s� SWI     "OS_Byte"
s� CMP     R1, #255
s� SUBEQ   R10,R10, #2
s� .p1_not_down
s� :
s� SUB     R10,R10, #1
s� :
s� CMP     R10, #128
s� BEQ     p1_ud
s� BGT     p1_up
s� MOV     R1,R6, LSR #2
t MOV     R2,R7, LSR #2
t ADD     R1,R1, #xext%/2
t SUB     R2,R2, #1
t" BL      read_point
t, CMP     R0, #0
t6 MOVNE   R10, #128
t@ B       p1_ud
tJ .p1_up
tT MOV     R1,R6, LSR #2
t^ MOV     R2,R7, LSR #2
th ADD     R1,R1, #xext%/2+2
tr ADD     R2,R2, #yext%
t| BL      read_point
t� CMP     R0, #0
t� MOVNE   R10, #128
t� MOV     R1,R6, LSR #2
t� MOV     R2,R7, LSR #2
t� ADD     R1,R1, #xext%/2-2
t� ADD     R2,R2, #yext%
t� BL      read_point
t� CMP     R0, #0
t� MOVNE   R10, #128
t� B       p1_ud
t� .p1_ud
t� CMP     R10, #128+10*4
t� MOVGT   R10, #128+10*4
u CMP     R10, #128-8*4
u MOVLT   R10, #128-8*4
u CMP     R10, #128
u& BIC     R8,R8, #255<<16
u0 �R     R8,R8,R10, LSL #16
u: SUB     R10,R10, #128
uD ADD     R7,R7,R10, ASR #2
uN :
uX LDR     R0, adr_p1_weapon
ub LDR     R0,[R0]
ul CMP     R0, #2
uv BEQ     p1_fire_pistol
u� CMP     R0, #3
u� BEQ     p1_fire_gun
u� CMP     R0, #4
u� BEQ     p1_fire_mortar
u� CMP     R0, #5
u� BEQ     p1_fire_homing
u� CMP     R0, #6
u� BEQ     p1_fire_seeking
u� CMP     R0, #7
u� BEQ     p1_fire_vertical
u� CMP     R0, #8
u� BEQ     p1_fire_flame
u� CMP     R0, #9
v BEQ     p1_fire_bomb
v CMP     R0, #10
v BEQ     p1_fire_cluster
v  :
v* .p1_fire_pistol
v4 LDR     R0, p1_fire
v> CMP     R0, #0
vH BEQ     p1_pistol_shot
vR MOV     R0, #129
v\ MOV     R1, #0
vf SUB     R1,R1, #84
vp MOV     R2, #255
vz SWI     "OS_Byte"
v� CMP     R1, #255
v� MOVNE   R0, #0
v� STRNE   R0, p1_fire
v� B       p1_not_fire_pistol
v� .p1_pistol_shot
v� MOV     R0, #129
v� MOV     R1, #0
v� SUB     R1,R1, #84
v� MOV     R2, #255
v� SWI     "OS_Byte"
v� CMP     R1, #255
v� BNE     p1_not_fire_pistol
v� MOV     R0, #2
w MOV     R1,R6, LSR #2
w MOV     R2,R7, LSR #2
w ADD     R1,R1, #xext%
w$ ADD     R2,R2, #yext%/4*2
w. RSB     R2,R2, #256
w8 MOV     R3, #80
wB MOV     R4, #0
wL MOV     R5, #1
wV TST     R8, #1
w` RSBNE   R3,R3, #0
wj SUBNE   R1,R1, #xext%
wt BL      add_cell
w~ MOV     R5, #1
w� MOV     R0, #1
w� STR     R0, p1_fire
w� MOV     R0, #7
w� MVN     R1, #14
w� MOV     R2, #12800
w� MOV     R3, #0
w� SWI     "Sound_Control"
w� .p1_not_fire_pistol
w� B       p1_end_fire
w� :
w� .p1_fire_gun
w� MOV     R0, #129
x MOV     R1, #0
x
 SUB     R1,R1, #84
x MOV     R2, #255
x SWI     "OS_Byte"
x( CMP     R1, #255
x2 BNE     p1_not_fire_gun
x< LDR     R0, p1_fire
xF ADD     R0,R0, #1
xP �     R0,R0, #%11
xZ STR     R0, p1_fire
xd TST     R0, #%11
xn BNE     p1_not_fire_gun
xx MOV     R0, #3
x� MOV     R1,R6, LSR #2
x� MOV     R2,R7, LSR #2
x� ADD     R1,R1, #xext%
x� ADD     R2,R2, #yext%/4*2
x� RSB     R2,R2, #256
x� MOV     R3, #80
x� LDR     R5, adr_rnd
x� LDR     R5,[R5]
x� �     R4,R5, #15
x� SUB     R4,R4, #7
x� �     R5,R5, #%110000
x� MOV     R5,R5, LSR #4
x� ADD     R1,R1,R5
y MOV     R5, #1
y TST     R8, #1
y RSBNE   R3,R3, #0
y" SUBNE   R1,R1, #xext%+2
y, BL      add_cell
y6 MOV     R5, #1
y@ MOV     R0, #gun_sound%
yJ MVN     R1, #10
yT MOV     R2, #gun_rate%
y^ MOV     R3, #0
yh SWI     "Sound_Control"
yr .p1_not_fire_gun
y| B       p1_end_fire
y� :
y� .p1_fire_mortar
y� MOV     R0, #129
y� MOV     R1, #0
y� SUB     R1,R1, #84
y� MOV     R2, #255
y� SWI     "OS_Byte"
y� CMP     R1, #255
y� BNE     p1_not_fire_mortar
y� LDR     R0, p1_fire
y� ADD     R0,R0, #1
y� �     R0,R0, #%11111
y� STR     R0, p1_fire
z TST     R0, #%11111
z BNE     p1_not_fire_gun
z MOV     R0, #4
z& MOV     R1,R6, LSR #2
z0 MOV     R2,R7, LSR #2
z: ADD     R1,R1, #xext%
zD ADD     R2,R2, #yext%/4*2
zN RSB     R2,R2, #256
zX MOV     R3, #30
zb MOV     R4, #40
zl MOV     R5, #1
zv TST     R8, #1
z� RSBNE   R3,R3, #0
z� SUBNE   R1,R1, #xext%
z� BL      add_cell
z� MOV     R5, #1
z� MOV     R0, #1
z� STR     R0, p1_fire
z� .p1_not_fire_mortar
z� B       p1_end_fire
z� :
z� .p1_fire_homing
z� .p1_homing_shot
z� MOV     R0, #129
z� MOV     R1, #0
{ SUB     R1,R1, #84
{ MOV     R2, #255
{ SWI     "OS_Byte"
{  CMP     R1, #255
{* BNE     p1_not_fire_homing
{4 LDR     R0, p1_fire
{> ADD     R0,R0, #1
{H �     R0,R0, #%1111
{R STR     R0, p1_fire
{\ TST     R0, #%1111
{f BNE     p1_not_fire_homing
{p MOV     R0, #5
{z MOV     R1,R6, LSR #2
{� MOV     R2,R7, LSR #2
{� ADD     R1,R1, #xext%
{� ADD     R2,R2, #yext%/2
{� RSB     R2,R2, #256
{� MOV     R3, #64
{� LDR     R4, adr_rnd
{� LDR     R4,[R4]
{� �     R4,R4, #15
{� SUB     R4,R4, #7
{�9 MOV     R5, #224<<8          ; Homing in on player 2
{� �R     R5,R5, #1
{� TST     R8, #1
{� RSBNE   R3,R3, #0
| SUBNE   R1,R1, #xext%
| BL      add_cell
| MOV     R5, #1
|$ MOV     R0, #homing_sound%
|. MVN     R1, #10
|8 MOV     R2, #homing_rate%
|B MOV     R3, #0
|L SWI     "Sound_Control"
|V .p1_not_fire_homing
|` B       p1_end_fire
|j :
|t .p1_fire_seeking
|~ .p1_seeking_shot
|� MOV     R0, #129
|� MOV     R1, #0
|� SUB     R1,R1, #84
|� MOV     R2, #255
|� SWI     "OS_Byte"
|� CMP     R1, #255
|�  BNE     p1_not_fire_seeking
|� MOV     R0, #6
|� MOV     R1,R6, LSR #2
|� MOV     R2,R7, LSR #2
|� ADD     R1,R1, #xext%*3/2
|� ADD     R2,R2, #yext%/4*2
} RSB     R2,R2, #256
}
 MOV     R3, #32
} MOV     R4, #0
}: MOV     R5, #1                ; Homing in on player 2
}( TST     R8, #1
}2 RSBNE   R3,R3, #0
}< SUBNE   R1,R1, #xext%*2
}F BL      add_cell
}P MOV     R5, #1
}Z MOV     R9, #2
}d LDR     R10, adr_p1_weapon
}n STR     R9,[R10]
}x  MOV     R0, #seeking_sound%
}� MVN     R1, #14
}� MOV     R2, #seeking_rate%
}� MOV     R3, #0
}� SWI     "Sound_Control"
}� MOV     R0, #1
}� STR     R0, p1_fire
}� .p1_not_fire_seeking
}� B       p1_end_fire
}� :
}� .p1_fire_vertical
}� LDR     R0, p1_fire
}� CMP     R0, #0
}� BEQ     p1_vertical_shot
~ MOV     R0, #129
~ MOV     R1, #0
~ SUB     R1,R1, #84
~" MOV     R2, #255
~, SWI     "OS_Byte"
~6 CMP     R1, #255
~@ MOVNE   R0, #0
~J STRNE   R0, p1_fire
~T! B       p1_not_fire_vertical
~^ .p1_vertical_shot
~h MOV     R0, #129
~r MOV     R1, #0
~| SUB     R1,R1, #84
~� MOV     R2, #255
~� SWI     "OS_Byte"
~� CMP     R1, #255
~�! BNE     p1_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
~� MOV     R5, #1
 TST     R8, #1
 RSBNE   R3,R3, #0
 SUBNE   R1,R1, #xext%
& BL      add_cell
0 MOV     R5, #2
: MOV     R0, #1
D STR     R0, p1_fire
N MOV     R0, #7
X MVN     R1, #14
b MOV     R2, #10240
l MOV     R3, #0
v SWI     "Sound_Control"
� .p1_not_fire_vertical
� B       p1_end_fire
� :
� .p1_fire_flame
� .p1_flame_shot
� MOV     R0, #129
� MOV     R1, #0
� SUB     R1,R1, #84
� MOV     R2, #255
� SWI     "OS_Byte"
� CMP     R1, #255
� BNE     p1_not_fire_flame
� MOV     R0, #10
� MOV     R1,R6, LSR #2
� MOV     R2,R7, LSR #2
� ADD     R1,R1, #xext%
�  ADD     R2,R2, #yext%/4*2
�* RSB     R2,R2, #256
�4 MOV     R3, #64
�> LDR     R4, adr_rnd
�H LDR     R4,[R4]
�R �     R4,R4, #7
�\ SUB     R4,R4, #1
�f MOV     R5, #1
�p TST     R8, #1
�z RSBNE   R3,R3, #0
�� SUBNE   R1,R1, #xext%
�� BL      add_cell
�� .p1_not_fire_flame
�� B       p1_end_fire
�� :
�� .p1_fire_cluster
�� MOV     R0, #129
�� MOV     R1, #0
�� SUB     R1,R1, #84
�� MOV     R2, #255
�� SWI     "OS_Byte"
�� CMP     R1, #255
��  BNE     p1_not_fire_cluster
�; LDR     R0, p1_fire
�; ADD     R0,R0, #1
�; CMP     R0, #25
�$; MOVGT   R0, #0
�.; STR     R0, p1_fire
�8; CMP     R0, #0
�B!; BNE     p1_not_fire_cluster
�L MOV     R0, #13
�V MOV     R1,R6, LSR #2
�` MOV     R2,R7, LSR #2
�j ADD     R1,R1, #xext%+1
�t ADD     R2,R2, #yext%/4*2
�~ RSB     R2,R2, #256
�� MOV     R3, #768
�� MOV     R4, #128
��! MOV     R5, #bomb_pause%*.25
�� TST     R8, #1
�� RSBNE   R3,R3, #0
�� SUBNE   R1,R1, #xext%+2
�� BL      add_cell
�� SUB     R3,R3, #128
�� ADD     R4,R4, #128
�� ADD     R5,R5, #32
�� BL      add_cell
�� SUB     R3,R3, #128
� ADD     R4,R4, #128
�
 ADD     R5,R5, #32
� BL      add_cell
� MOV     R9, #2
�( LDR     R10, adr_p1_weapon
�2 STR     R9,[R10]
�< MOV     R5, #1
�F MOV     R0, #1
�P STR     R0, p1_fire
�Z .p1_not_fire_cluster
�d B       p1_end_fire
�n :
�x .p1_fire_bomb
�� MOV     R0, #129
�� MOV     R1, #0
�� SUB     R1,R1, #84
�� MOV     R2, #255
�� SWI     "OS_Byte"
�� CMP     R1, #255
�� BNE     p1_not_fire_bomb
�� LDR     R0, p1_fire
�� ADD     R0,R0, #1
�� CMP     R0, #10
�� MOVGT   R0, #0
�� STR     R0, p1_fire
�� CMP     R0, #0
� BNE     p1_not_fire_bomb
� MOV     R0, #12
� MOV     R1,R6, LSR #2
�" MOV     R2,R7, LSR #2
�, ADD     R1,R1, #xext%+1
�6 ADD     R2,R2, #yext%/4*2
�@ RSB     R2,R2, #256
�J MOV     R3, #40
�T MOV     R4, #40
�^ MOV     R5, #bomb_pause%
�h TST     R8, #1
�r RSBNE   R3,R3, #0
�| SUBNE   R1,R1, #xext%+2
�� BL      add_cell
�� MOV     R5, #1
�� MOV     R0, #1
�� STR     R0, p1_fire
�� .p1_not_fire_bomb
�� B       p1_end_fire
�� :
�� .p1_end_fire
�� :
�� MOV     R0, #1
�� MOV     R1,R6, LSR #2
�� MOV     R2,R7, LSR #2
�� TST     R8, #1
� ADDEQ   R1,R1, #1
� ADDNE   R1,R1, #xext%-1
� ADD     R2,R2, #yext%/4
�& RSB     R2,R2, #256
�0 LDR     R3, adr_rnd
�: LDR     R3,[R3]
�D TST     R3, #%10000
�N SUBEQ   R2,R2, #1
�X �     R3,R3, #15
�b SUB     R3,R3, #7
�l MOV     R4, #0
�v SUB     R4,R4, #40
�� MOV     R5, #32
�� BL      add_cell
�� MOV     R5, #1
�� :
�� �     R0,R8, #1
�� MOV     R1,R6, LSR #2
�� MOV     R2,R7, LSR #2
�� LDR     R9, adr_p1_x
�� STR     R1,[R9]
�� LDR     R9, adr_p1_y
�� STR     R2,[R9]
�� BL      plot_sprite_1616
�� :
� LDMFD   R13!,{R9,PC}
� :
�
 .adr_rnd
�  EQUD    rnd
�* .adr_p1_weapon
�4 EQUD    p1_weapon
�> .adr_p1_x
�H EQUD    p1_x
�R .adr_p1_y
�\ EQUD    p1_y
�f :
�p ]
�z P%=clg_routine%
�� L%=clg_routine%+1020
�� [OPT pass%
�� :
�� .clg_adr_screenstore
�� EQUD    screenstore
�� .clg_screendata
�� EQUD    screendata%
�� :
��	 .clg
�� STMFD   R13!,{R0-R12,R14}
��# ADR     R0, clg_temp_reg_store
�� STMIA   R0, {R13,R14}
��% LDR     R13, clg_adr_screenstore
� LDR     R13, [R13]
�  LDR     R14, clg_screendata
� MOV     R12, #0
�$ .clg_loop1
�. ]
�8 � a%=1 � 26
�B [OPT pass%
�L LDMIA   R14!,{R0-R11}
�V STMIA   R13!,{R0-R11}
�` ]
�j �
�t [OPT pass%
�~ ADD     R12,R12, #1
�� CMP     R12, #65
�� BLT     clg_loop1
�� ]
�� � a%=1 � 20
�� [OPT pass%
�� LDMIA   R14!,{R0-R9}
�� STMIA   R13!,{R0-R9}
�� ]
�� �
�� [OPT pass%
��# ADR     R0, clg_temp_reg_store
�� LDMIA   R0, {R13,R14}
� LDMFD   R13!,{R0-R12,PC}
�
 :
� .clg_temp_reg_store
� EQUD    0
�( EQUD    0
�2 :
�< ]
�F P%=split_routine%
�P L%=split_routine%+1020
�Z [OPT pass%
�d :
�n :
�x .split_screenstore
�� EQUD    screenstore%
�� .split_adr_screen
�� EQUD    screen
�� .split_adr_p1_y
�� EQUD    p1_y
�� .split_adr_p2_y
�� EQUD    p2_y
�� .split_p1_y1
�� EQUD    0
�� .split_p2_y1
�� EQUD    0
�� .split_p1_y2
�� EQUD    0
� .split_p2_y2
� EQUD    0
� .split_p1_y3
�" EQUD    0
�, .split_p2_y3
�6 EQUD    0
�@ :
�J .split_screen
�T STMFD   R13!,{R0-R12,R14}
�^% ADR     R0, split_temp_reg_store
�h STMIA   R0, {R13,R14}
�r" LDR     R13, split_adr_screen
�| LDR     R13, [R13]
�� MOV     R12, #0
�� LDR     R0, split_adr_p1_y
�� LDR     R0,[R0]
�� LDR     R1, split_p1_y1
�� LDR     R2, split_p1_y2
�� LDR     R3, split_p1_y3
�� STR     R0, split_p1_y1
�� STR     R1, split_p1_y2
�� STR     R2, split_p1_y3
�� ADD     R0,R0,R1
�� ADD     R0,R0,R2
�� ADD     R0,R0,R3
�� ADD     R0,R0, #2
� MOV     R0,R0, ASR #2
� RSB     R0,R0, #256
� SUB     R0,R0, #64
�& CMP     R0, #148
�0 MOVGT   R0, #148
�: CMP     R0, #0
�D MOVLT   R0, #0
�N# LDR     R14, split_screenstore
�X MOV     R1, #y_shift
�b MLA     R14,R1,R0,R14
�l .split_loop1
�v ]
�� � a%=1 � 10
�� [OPT pass%
�� LDMIA   R14!,{R0-R11}
�� STMIA   R13!,{R0-R11}
�� ]
�� �
�� [OPT pass%
�� ADD     R12,R12, #1
�� CMP     R12, #72
�� BLT     split_loop1
�� ]
�� � a%=0 � 11
�� [OPT pass%
� MOV     a%, #127
� �R     a%,a%,a%, LSL #8
� �R     a%,a%,a%, LSL #16
�  ]
�* �
�4 [OPT pass%
�> MOV     R12, #0
�H .split_loop3
�R STMIA   R13!,{R0-R11}
�\ ADD     R12,R12, #1
�f CMP     R12, #280
�p BLT     split_loop3
�z :
��" LDR     R13, split_adr_screen
�� LDR     R13, [R13]
�� ADD     R13,R13, #&B900
�� MOV     R12, #0
�� LDR     R0, split_adr_p2_y
�� LDR     R0,[R0]
�� LDR     R1, split_p2_y1
�� LDR     R2, split_p2_y2
�� LDR     R3, split_p2_y3
�� STR     R0, split_p2_y1
�� STR     R1, split_p2_y2
�� STR     R2, split_p2_y3
�� ADD     R0,R0,R1
� ADD     R0,R0,R2
� ADD     R0,R0,R3
� ADD     R0,R0, #2
�$ MOV     R0,R0, ASR #2
�. RSB     R0,R0, #256
�8 SUB     R0,R0, #64
�B CMP     R0, #148
�L MOVGT   R0, #148
�V CMP     R0, #0
�` MOVLT   R0, #0
�j# LDR     R14, split_screenstore
�t MOV     R1, #y_shift
�~ MLA     R14,R1,R0,R14
�� .split_loop2
�� ]
�� � a%=1 � 10
�� [OPT pass%
�� LDMIA   R14!,{R0-R11}
�� STMIA   R13!,{R0-R11}
�� ]
�� �
�� [OPT pass%
�� ADD     R12,R12, #1
�� CMP     R12, #72
�� BLT     split_loop2
�% ADR     R0, split_temp_reg_store
�
 LDMIA   R0, {R13,R14}
� LDMFD   R13!,{R0-R12,PC}
� :
�( .split_temp_reg_store
�2 EQUD    0
�< EQUD    0
�F :
�P :
�Z ]
�d P%=sprite_routines%
�n L%=sprite_routines%+8191
�x [OPT pass%
�� :
�� :
�� :
�� .plot_sprite_1212
�� :
�� 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_plot1212
� CMP     R2, #12
�" BLE     psm_no_plot1212
�, CMP     R1, #320-8
�6 BGE     psm_no_plot1212
�@ CMP     R2, #256
�J BGE     psm_no_plot1212
�T B       psm_plot1212
�^ .psm_no_plot1212
�h LDMFD   R13!,{R0-R12,PC}
�r .psm_plot1212
�| :
��4 �     R3,R1, #%11          ; calculate x offset
��2 MOV     R0,R0, LSL #2        ; realise sprite
��. ADD     R0,R0, R3            ; add offset
��3 BIC     R1,R1, #%11          ; make x div by 4
�� :
��5 MOV     R7, #x_shift         ; get screen shifts
�� MOV     R8, #y_shift
��@ LDR     R9, sprite_adr_screenstore; get screenstore address
�� LDR     R9,[R9]
�� :
�� MLA     R3,R7,R1,R9
�� MLA     R2,R8,R2,R3
�� :
�= LDR     R7, adr_sprites1     ; get start address of data
�C LDR     R8, spr_size1        ; 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
�0 :
�: MOV     R3, #1
�D STR     R3, s1212_counter
�N :
�X .s1212_sprite_loop
�b :
�l ]
�v � a%=1 � 12
�� [OPT pass%
�� :
��7 LDMIA   R2,{R3-R5}           ; get some background
��1 LDMIA   R1!,{R8-R10}         ; get some mask
��5 �     R3,R3,R8             ; mask off background
�� �     R4,R4,R9
�� �     R5,R5,R10
��3 LDMIA   R0!,{R8-R10}         ; get some sprite
��? �R     R3,R3,R8             ; merge sprite with background
�� �R     R4,R4,R9
�� �R     R5,R5,R10
��7 STMIA   R2,{R3-R5}           ; store masked sprite
�� :
� SUB     R2,R2, #y_shift
� :
� ]
�  �
�* [OPT pass%
�4 :
�> LDR     R3, s1212_counter
�H ADD     R3,R3, #1
�R STR     R3, s1212_counter
�\ CMP     R3, #1
�f BLE     s1212_sprite_loop
�p :
�z 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
�� :
�� :
�� :
�� .plot_sprite_1264
�� :
� STMFD   R13!,{R0-R12,R14}
� :
�1 :                            ; R0 sprite no.
�$. :                            ; R1 x-coord
�.. :                            ; R2 y-coord
�8 :
�B RSB     R2,R2, #256
�L :
�V CMP     R1, #0
�` BLE     psm_no_plot1264
�j CMP     R2, #32
�t BLE     psm_no_plot1264
�~ CMP     R1, #320-8
�� BGE     psm_no_plot1264
�� CMP     R2, #256
�� BGE     psm_no_plot1264
�� B       psm_plot1264
�� .psm_no_plot1264
�� LDMFD   R13!,{R0-R12,PC}
�� .psm_plot1264
�� :
��4 �     R3,R1, #%11          ; calculate x offset
��2 MOV     R0,R0, LSL #2        ; realise sprite
��. 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]
�2 :
�< MLA     R3,R7,R1,R9
�F MLA     R2,R8,R2,R3
�P :
�Z= LDR     R7, adr_sprites3     ; get start address of data
�dC LDR     R8, spr_size3        ; get length of data for 1 sprite
�n> MLA     R0,R8,R0,R7          ; calculate position of data
�x> ADD     R1,R0,R8, LSR #1     ; calculate position of mask
�� :
�� MOV     R3, #1
�� STR     R3, s1264_counter
�� :
�� .s1264_sprite_loop
�� :
�� ]
�� � a%=1 � 8
�� [OPT pass%
�� :
��7 LDMIA   R2,{R3-R5}           ; get some background
��1 LDMIA   R1!,{R8-R10}         ; get some mask
��5 �     R3,R3,R8             ; mask off background
� �     R4,R4,R9
� �     R5,R5,R10
�3 LDMIA   R0!,{R8-R10}         ; get some sprite
�"? �R     R3,R3,R8             ; merge sprite with background
�, �R     R4,R4,R9
�6 �R     R5,R5,R10
�@7 STMIA   R2,{R3-R5}           ; store masked sprite
�J :
�T SUB     R2,R2, #y_shift
�^ :
�h ]
�r �
�| [OPT pass%
�� :
�� LDR     R3, s1264_counter
�� ADD     R3,R3, #1
�� STR     R3, s1264_counter
�� CMP     R3, #8
�� BLE     s1264_sprite_loop
�� :
�� LDMFD   R13!,{R0-R12,PC}
�� :
�� .s1264_counter
�� EQUD    0
�� :
�� .adr_sprites3
�7 EQUD    sprites3%            ; address of sprites1
� .spr_size3
�A EQUD    8/8*12*64*2          ; length of one sprite1 + mask1
�& .sprite_adr_screenstore
�0 EQUD    screenstore
�: :
�D :
�N :
�X .plot_sprite_2016
�b :
�l STMFD   R13!,{R0-R12,R14}
�v :
��1 :                            ; R0 sprite no.
��. :                            ; R1 x-coord
��. :                            ; R2 y-coord
�� :
�� RSB     R2,R2, #256
�� :
�� CMP     R1, #0
�� BLE     psm_no_plot2016
�� CMP     R2, #16
�� BLE     psm_no_plot2016
�� CMP     R1, #320-16
�� BGE     psm_no_plot2016
�� CMP     R2, #256
� BGE     psm_no_plot2016
� B       psm_plot2016
� .psm_no_plot2016
�  LDMFD   R13!,{R0-R12,PC}
�* .psm_plot2016
�4 :
�>4 �     R3,R1, #%11          ; calculate x offset
�H2 MOV     R0,R0, LSL #2        ; realise sprite
�R. ADD     R0,R0, R3            ; add offset
�\3 BIC     R1,R1, #%11          ; make x div by 4
�f :
�p5 MOV     R7, #x_shift         ; get screen shifts
�z MOV     R8, #y_shift
��@ LDR     R9, sprite_adr_screenstore; get screenstore address
�� LDR     R9,[R9]
�� :
�� MLA     R3,R7,R1,R9
�� MLA     R2,R8,R2,R3
�� :
��= LDR     R7, adr_sprites2     ; get start address of data
��C LDR     R8, spr_size2        ; get length of data for 1 sprite
��> MLA     R0,R8,R0,R7          ; calculate position of data
��> ADD     R1,R0,R8, LSR #1     ; calculate position of mask
�� :
�� MOV     R3, #1
�� STR     R3, s2016_counter
� :
� .s2016_sprite_loop
� :
�$ ]
�. � a%=1 � 4
�8 [OPT pass%
�B :
�L7 LDMIA   R2,{R3-R7}           ; get some background
�V1 LDMIA   R1!,{R8-R12}         ; get some mask
�`5 �     R3,R3,R8             ; mask off background
�j �     R4,R4,R9
�t �     R5,R5,R10
�~ �     R6,R6,R11
�� �     R7,R7,R12
��3 LDMIA   R0!,{R8-R12}         ; get some sprite
��? �R     R3,R3,R8             ; merge sprite with background
�� �R     R4,R4,R9
�� �R     R5,R5,R10
�� �R     R6,R6,R11
�� �R     R7,R7,R12
��7 STMIA   R2,{R3-R7}           ; store masked sprite
�� :
�� SUB     R2,R2, #y_shift
�� :
�� ]
� �
�
 [OPT pass%
� :
� LDR     R3, s2016_counter
�( ADD     R3,R3, #1
�2 STR     R3, s2016_counter
�< CMP     R3, #4
�F BLE     s2016_sprite_loop
�P :
�Z LDMFD   R13!,{R0-R12,PC}
�d :
�n .s2016_counter
�x EQUD    0
�� :
�� .adr_sprites2
��7 EQUD    sprites2%            ; address of sprites2
�� .spr_size2
��A EQUD    8/8*16*20*2          ; length of one sprite2 + mask2
�� :
�� :
�� :
�� .plot_sprite_0804
�� :
�� STMFD   R13!,{R0-R12,R14}
�� :
��1 :                            ; R0 sprite no.
�. :                            ; R1 x-coord
�. :                            ; R2 y-coord
� :
�" RSB     R2,R2, #256
�, :
�6 CMP     R1, #0
�@ BLE     psm_no_plot0804
�J CMP     R2, #4
�T BLE     psm_no_plot0804
�^ CMP     R1, #320-4
�h BGE     psm_no_plot0804
�r CMP     R2, #256
�| BGE     psm_no_plot0804
�� B       psm_plot0804
�� .psm_no_plot0804
�� LDMFD   R13!,{R0-R12,PC}
�� .psm_plot0804
�� :
��4 �     R3,R1, #%11          ; calculate x offset
��2 MOV     R0,R0, LSL #2        ; realise sprite
��. ADD     R0,R0, R3            ; add offset
��3 BIC     R1,R1, #%11          ; make x div by 4
�� :
��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
�0 :
�:= LDR     R7, adr_sprites4     ; get start address of data
�DC LDR     R8, spr_size4        ; get length of data for 1 sprite
�N> MLA     R0,R8,R0,R7          ; calculate position of data
�X> ADD     R1,R0,R8, LSR #1     ; calculate position of mask
�b :
�l;MOV     R3, #1
�v;STR     R3, s0804_counter
�� :
�� .s0804_sprite_loop
�� :
�� ]
�� � a%=1 � 4
�� [OPT pass%
�� :
��: LDMIA   R2,{R3,R4}              ; get some background
��4 LDMIA   R1!,{R8,R9}             ; get some mask
��5 �     R3,R3,R8             ; mask off background
�� �     R4,R4,R9
��2 LDMIA   R0!,{R8,R9}         ; get some sprite
��? �R     R3,R3,R8             ; merge sprite with background
� �R     R4,R4,R9
�7 STMIA   R2,{R3,R4}           ; store masked sprite
� :
�  SUB     R2,R2, #y_shift
�* :
�4 ]
�> �
�H [OPT pass%
�R :
�\;LDR     R3, s0804_counter
�f;ADD     R3,R3, #1
�p;STR     R3, s0804_counter
�z;CMP     R3, #1
��;BLE     s0804_sprite_loop
�� :
�� LDMFD   R13!,{R0-R12,PC}
�� :
�� .s0804_counter
�� EQUD    0
�� :
�� .adr_sprites4
��7 EQUD    sprites4%            ; address of sprites4
�� .spr_size4
��A EQUD    8/8*8*4*2            ; length of one sprite4 + mask4
�� :
�� :
� :
� .plot_sprite_1208
� :
�$ STMFD   R13!,{R0-R12,R14}
�. :
�81 :                            ; R0 sprite no.
�B. :                            ; R1 x-coord
�L. :                            ; R2 y-coord
�V :
�` RSB     R2,R2, #256
�j :
�t CMP     R1, #0
�~ BLE     psm_no_plot1208
�� CMP     R2, #8
�� BLE     psm_no_plot1208
�� CMP     R1, #320-8
�� BGE     psm_no_plot1208
�� CMP     R2, #256
�� BGE     psm_no_plot1208
�� B       psm_plot1208
�� .psm_no_plot1208
�� LDMFD   R13!,{R0-R12,PC}
�� .psm_plot1208
�� :
��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
�2 MOV     R8, #y_shift
�<@ LDR     R9, sprite_adr_screenstore; get screenstore address
�F LDR     R9,[R9]
�P :
�Z MLA     R3,R7,R1,R9
�d MLA     R2,R8,R2,R3
�n :
�x= LDR     R7, adr_sprites5     ; get start address of data
��C LDR     R8, spr_size5        ; get length of data for 1 sprite
��> MLA     R0,R8,R0,R7          ; calculate position of data
��> ADD     R1,R0,R8, LSR #1     ; calculate position of mask
�� :
��;MOV     R3, #1
��;STR     R3, s1208_counter
�� :
�� .s1208_sprite_loop
�� :
�� ]
�� � a%=1 � 8
�� [OPT pass%
�� :
�7 LDMIA   R2,{R3,R4,R5}        ; get some background
�1 LDMIA   R1!,{R8,R9,R10}      ; get some mask
�5 �     R3,R3,R8             ; mask off background
�" �     R4,R4,R9
�, �     R5,R5,R10
�63 LDMIA   R0!,{R8,R9,R10}      ; get some sprite
�@? �R     R3,R3,R8             ; merge sprite with background
�J �R     R4,R4,R9
�T �R     R5,R5,R10
�^7 STMIA   R2,{R3,R4,R5}        ; store masked sprite
�h :
�r SUB     R2,R2, #y_shift
�| :
�� ]
�� �
�� [OPT pass%
�� :
��;LDR     R3, s1208_counter
��;ADD     R3,R3, #1
��;STR     R3, s1208_counter
��;CMP     R3, #1
��;BLE     s1208_sprite_loop
�� :
�� LDMFD   R13!,{R0-R12,PC}
�� :
�� .s1208_counter
� EQUD    0
� :
� .adr_sprites5
�&7 EQUD    sprites5%            ; address of sprites5
�0 .spr_size5
�:A EQUD    8/8*12*8*2           ; length of one sprite5 + mask5
�D :
�N :
�X :
�b .plot_sprite_1616
�l :
�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_plot1616
�� CMP     R2, #16
�� BLE     psm_no_plot1616
�� CMP     R1, #320-16
�� BGE     psm_no_plot1616
� CMP     R2, #256
� BGE     psm_no_plot1616
� B       psm_plot1616
�  .psm_no_plot1616
�* LDMFD   R13!,{R0-R12,PC}
�4 .psm_plot1616
�> :
�H4 �     R3,R1, #%11          ; calculate x offset
�R2 MOV     R0,R0, LSL #2        ; realise sprite
�\. ADD     R0,R0, R3            ; add offset
�f3 BIC     R1,R1, #%11          ; make x div by 4
�p :
�z5 MOV     R7, #x_shift         ; get screen shifts
�� MOV     R8, #y_shift
��@ LDR     R9, sprite_adr_screenstore; get screenstore address
�� LDR     R9,[R9]
�� :
�� MLA     R3,R7,R1,R9
�� MLA     R2,R8,R2,R3
�� :
��= LDR     R7, adr_sprites6     ; get start address of data
��C LDR     R8, spr_size6        ; get length of data for 1 sprite
��> MLA     R0,R8,R0,R7          ; calculate position of data
��> ADD     R1,R0,R8, LSR #1     ; calculate position of mask
�� :
�� MOV     R3, #1
� STR     R3, s1616_counter
� :
� .s1616_sprite_loop
�$ :
�. ]
�8 � a%=1 � 4
�B [OPT pass%
�L :
�V7 LDMIA   R2,{R3-R6}           ; get some background
�`1 LDMIA   R1!,{R8-R11}         ; get some mask
�j5 �     R3,R3,R8             ; mask off background
�t �     R4,R4,R9
�~ �     R5,R5,R10
�� �     R5,R5,R11
��3 LDMIA   R0!,{R8-R11}         ; get some sprite
��? �R     R3,R3,R8             ; merge sprite with background
�� �R     R4,R4,R9
�� �R     R5,R5,R10
�� �R     R6,R6,R11
��7 STMIA   R2,{R3-R6}           ; store masked sprite
�� :
�� SUB     R2,R2, #y_shift
�� :
�� ]
�� �
� [OPT pass%
�
 :
� LDR     R3, s1616_counter
� ADD     R3,R3, #1
�( STR     R3, s1616_counter
�2 CMP     R3, #4
�< BLE     s1616_sprite_loop
�F :
�P LDMFD   R13!,{R0-R12,PC}
�Z :
�d .s1616_counter
�n EQUD    0
�x :
�� .adr_sprites6
��7 EQUD    sprites6%            ; address of sprites6
�� .spr_size6
��A EQUD    8/8*16*16*2          ; length of one sprite6 + mask6
�� :
�� :
�� ]
�� P%=fill_routines%
�� L%=fill_routines%+8191
�� [OPT pass%
�� :
�� :
�� :
� .fill_fill_1212
� :
� STMFD   R13!,{R0-R12,R14}
�" :
�,/ :                            ; R0 fill no.
�6. :                            ; R1 x-coord
�@. :                            ; R2 y-coord
�J :
�T RSB     R2,R2, #256
�^ :
�h CMP     R1, #0
�r BLE     psm_no_fill1212
�| CMP     R2, #12
�� BLE     psm_no_fill1212
�� CMP     R1, #320-8
�� BGE     psm_no_fill1212
�� CMP     R2, #256
�� BGE     psm_no_fill1212
�� B       psm_fill1212
�� .psm_no_fill1212
�� LDMFD   R13!,{R0-R12,PC}
�� .psm_fill1212
�� :
��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
�0 :
�:6 LDR     R9, fill_screendata  ; get screen address
�D MLA     R3,R7,R1,R9
�N MLA     R1,R8,R2,R3
�X :
�b MOV     R3, #1
�l STR     R3, f1212_counter
�v :
�� .f1212_fill_loop
�� :
�� ]
�� � a%=1 � 12
�� [OPT pass%
�� :
��7 LDMIA   R1,{R3-R5}           ; get some background
��5 STMIA   R0,{R3-R5}           ; store masked fill
�� :
�� SUB     R0,R0, #y_shift
�� SUB     R1,R1, #y_shift
�� :
�� ]
� �
� [OPT pass%
� :
�  LDR     R3, f1212_counter
�* ADD     R3,R3, #1
�4 STR     R3, f1212_counter
�> CMP     R3, #1
�H BLE     f1212_fill_loop
�R :
�\ LDMFD   R13!,{R0-R12,PC}
�f :
�p .f1212_counter
�z EQUD    0
�� :
�� :
�� :
�� .fill_fill_1264
�� :
�� STMFD   R13!,{R0-R12,R14}
�� :
��/ :                            ; R0 fill no.
��. :                            ; R1 x-coord
��. :                            ; R2 y-coord
�� :
�� RSB     R2,R2, #256
�� :
� CMP     R1, #0
� BLE     psm_no_fill1264
� CMP     R2, #32
�$ BLE     psm_no_fill1264
�. CMP     R1, #320-8
�8 BGE     psm_no_fill1264
�B CMP     R2, #256
�L BGE     psm_no_fill1264
�V B       psm_fill1264
�` .psm_no_fill1264
�j LDMFD   R13!,{R0-R12,PC}
�t .psm_fill1264
�~ :
��5 MOV     R7, #x_shift         ; get screen shifts
�� MOV     R8, #y_shift
�� :
��> LDR     R9, fill_adr_screenstore; get screenstore address
�� LDR     R9,[R9]
�� MLA     R3,R7,R1,R9
�� MLA     R0,R8,R2,R3
�� :
��6 LDR     R9, fill_screendata  ; get screen address
�� MLA     R3,R7,R1,R9
�� MLA     R1,R8,R2,R3
�� :
� MOV     R3, #1
�
 STR     R3, f1264_counter
� :
� .f1264_fill_loop
�( :
�2 ]
�< � a%=1 � 8
�F [OPT pass%
�P :
�Z7 LDMIA   R1,{R3-R5}           ; get some background
�d5 STMIA   R0,{R3-R5}           ; store masked fill
�n :
�x SUB     R0,R0, #y_shift
�� SUB     R1,R1, #y_shift
�� :
�� ]
�� �
�� [OPT pass%
�� :
�� LDR     R3, f1264_counter
�� ADD     R3,R3, #1
�� STR     R3, f1264_counter
�� CMP     R3, #8
�� BLE     f1264_fill_loop
�� :
�� LDMFD   R13!,{R0-R12,PC}
� :
� .f1264_counter
� EQUD    0
�" :
�, .fill_screendata
�6 EQUD    screendata%
�@ .fill_adr_screenstore
�J EQUD    screenstore
�T :
�^ :
�h :
�r .fill_fill_2016
�| :
�� STMFD   R13!,{R0-R12,R14}
�� :
��/ :                            ; R0 fill no.
��. :                            ; R1 x-coord
��. :                            ; R2 y-coord
�� :
�� RSB     R2,R2, #256
�� :
�� CMP     R1, #0
�� BLE     psm_no_fill2016
�� CMP     R2, #16
�� BLE     psm_no_fill2016
�� CMP     R1, #320-16
� BGE     psm_no_fill2016
� CMP     R2, #256
� BGE     psm_no_fill2016
�& B       psm_fill2016
�0 .psm_no_fill2016
�: LDMFD   R13!,{R0-R12,PC}
�D .psm_fill2016
�N :
�X5 MOV     R7, #x_shift         ; get screen shifts
�b MOV     R8, #y_shift
�l :
�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, f2016_counter
�� :
�� .f2016_fill_loop
�� :
� ]
� � a%=1 � 4
� [OPT pass%
�  :
�*7 LDMIA   R1,{R3-R7}           ; get some background
�45 STMIA   R0,{R3-R7}           ; store masked fill
�> :
�H SUB     R0,R0, #y_shift
�R SUB     R1,R1, #y_shift
�\ :
�f ]
�p �
�z [OPT pass%
�� :
�� LDR     R3, f2016_counter
�� ADD     R3,R3, #1
�� STR     R3, f2016_counter
�� CMP     R3, #4
�� BLE     f2016_fill_loop
�� :
�� LDMFD   R13!,{R0-R12,PC}
�� :
�� .f2016_counter
�� EQUD    0
�� :
�� :
� :
� .fill_fill_0804
� :
�$ STMFD   R13!,{R0-R12,R14}
�. :
�8/ :                            ; R0 fill no.
�B. :                            ; R1 x-coord
�L. :                            ; R2 y-coord
�V :
�` RSB     R2,R2, #256
�j :
�t CMP     R1, #0
�~ BLE     psm_no_fill0804
�� CMP     R2, #4
�� BLE     psm_no_fill0804
�� CMP     R1, #320-4
�� BGE     psm_no_fill0804
�� CMP     R2, #256
�� BGE     psm_no_fill0804
�� B       psm_fill0804
�� .psm_no_fill0804
�� LDMFD   R13!,{R0-R12,PC}
�� .psm_fill0804
�� :
��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
�2 MLA     R0,R8,R2,R3
�< :
�F6 LDR     R9, fill_screendata  ; get screen address
�P MLA     R3,R7,R1,R9
�Z MLA     R1,R8,R2,R3
�d :
�n .f0804_fill_loop
�x :
�� ]
�� � 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
�� :
�� ]
�� �
�� [OPT pass%
� :
� LDMFD   R13!,{R0-R12,PC}
� :
�" :
�, :
�6 .fill_fill_1208
�@ :
�J STMFD   R13!,{R0-R12,R14}
�T :
�^/ :                            ; R0 fill no.
�h. :                            ; R1 x-coord
�r. :                            ; R2 y-coord
�| :
�� RSB     R2,R2, #256
�� :
�� CMP     R1, #0
�� BLE     psm_no_fill1208
�� CMP     R2, #8
�� BLE     psm_no_fill1208
�� CMP     R1, #320-8
�� BGE     psm_no_fill1208
�� CMP     R2, #256
�� BGE     psm_no_fill1208
�� B       psm_fill1208
�� .psm_no_fill1208
�� LDMFD   R13!,{R0-R12,PC}
� .psm_fill1208
� :
�5 MOV     R7, #x_shift         ; get screen shifts
�& MOV     R8, #y_shift
�0 :
�:> LDR     R9, fill_adr_screenstore; get screenstore address
�D LDR     R9,[R9]
�N MLA     R3,R7,R1,R9
�X MLA     R0,R8,R2,R3
�b :
�l6 LDR     R9, fill_screendata  ; get screen address
�v MLA     R3,R7,R1,R9
�� MLA     R1,R8,R2,R3
�� :
�� ]
�� � a%=1 � 8
�� [OPT pass%
�� :
��4 LDMIA   R1,{R3-R5}        ; get some background
��2 STMIA   R0,{R3-R5}        ; store masked fill
�� :
�� SUB     R0,R0, #y_shift
�� SUB     R1,R1, #y_shift
�� :
�� ]
� �
� [OPT pass%
� :
�  LDMFD   R13!,{R0-R12,PC}
�* :
�4 :
�> :
�H .fill_fill_1616
�R :
�\ STMFD   R13!,{R0-R12,R14}
�f :
�p RSB     R2,R2, #256
�z :
�� CMP     R1, #0
�� BLE     psm_no_fill1616
�� CMP     R2, #16
�� BLE     psm_no_fill1616
�� CMP     R1, #320-16
�� BGE     psm_no_fill1616
�� CMP     R2, #256
�� BGE     psm_no_fill1616
�� B       psm_fill1616
�� .psm_no_fill1616
�� LDMFD   R13!,{R0-R12,PC}
�� .psm_fill1616
�� :
�5 MOV     R7, #x_shift         ; get screen shifts
� MOV     R8, #y_shift
� :
�$> LDR     R9, fill_adr_screenstore; get screenstore address
�. LDR     R9,[R9]
�8 MLA     R3,R7,R1,R9
�B MLA     R0,R8,R2,R3
�L :
�V6 LDR     R9, fill_screendata  ; get screen address
�` MLA     R3,R7,R1,R9
�j MLA     R1,R8,R2,R3
�t :
�~ MOV     R3, #1
�� STR     R3, f1616_counter
�� :
�� .f1616_fill_loop
�� :
�� ]
�� � a%=1 � 4
�� [OPT pass%
�� :
�� LDMIA   R1,{R2-R5}
�� STMIA   R0,{R2-R5}
�� :
�� SUB     R0,R0, #y_shift
� SUB     R1,R1, #y_shift
�
 :
� ]
� �
�( [OPT pass%
�2 :
�< LDR     R3, f1616_counter
�F ADD     R3,R3, #1
�P STR     R3, f1616_counter
�Z CMP     R3, #4
�d BLE     f1616_fill_loop
�n :
�x LDMFD   R13!,{R0-R12,PC}
�� :
�� .f1616_counter
�� EQUD    0
�� :
�� :
�� :
�� .fill_fill_0101
�� :
�� STMFD   R13!,{R0-R12,R14}
�� :
�� RSB     R2,R2, #256
�� :
�� CMP     R1, #0
� BLE     psm_no_fill0101
� CMP     R2, #0
� BLE     psm_no_fill0101
�" CMP     R1, #320
�, BGE     psm_no_fill0101
�6 CMP     R2, #256
�@ BGE     psm_no_fill0101
�J B       psm_fill0101
�T .psm_no_fill0101
�^ LDMFD   R13!,{R0-R12,PC}
�h .psm_fill0101
�r :
�|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
�� :
�� LDRB    R2,[R1]
�� STRB    R2,[R0]
� :
� LDMFD   R13!,{R0-R12,PC}
� :
�& ]
�0�
�::
�D!cl_adr_screen=screen
�N� a%=0 � 255
�X r%=��(a%*256^3)
�b g%=�(a%*256)
�l
 b%=a%
�vL ș "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%
���
��:
��=c%=�("<This$Dir>.Levels.Level"+�(scrn%)+".Posn"+�(scrn%))
��� a%=0 � 7
� �#c%,x%
� �#c%,y%
� !(a%*8+positions)=x%
�  !(a%*8+4+positions)=y%
�*�
�4�#c%
�>:
�H
p%=clist%
�R� a%=1 � clist_size%/32-1
�\ �add_cell(0)
�f�
�p�add_cell(-1)
�z:
��
p%=slist%
��� a%=1 � slist_size%/16-1
�� �add_sprite(0,0,0,0)
���
���add_sprite(0,0,-1,0)
��
p%=slist%
��� a%=1 � 16
�� �add_sprite(0,0,0,0)
���
��>c%=�("<This$Dir>.Levels.Level"+�(scrn%)+".Doors"+�(scrn%))
��� a%=1 � 4
�� �#c%,x%
�� �#c%,y%
� �#c%,t%
� �#c%,i%
� �add_sprite(x%,y%,13,i%)
�$�
�.�#c%
�89c%=�("<This$Dir>.Levels.Level"+�(scrn%)+".GSwitches")
�B� a%=1 � 4
�L �#c%,x%
�V �#c%,y%
�` �#c%,t%
�j �#c%,i%
�t �add_sprite(x%,y%,14,a%)
�~�
���#c%
��=c%=�("<This$Dir>.Levels.Level"+�(scrn%)+".Guns"+�(scrn%))
��� a%=1 � 4
�� �#c%,x%
�� �#c%,y%
�� �#c%,t%
�� �#c%,i%
�� �add_sprite(x%,y%,15,a%)
���
���#c%
��-�add_sprite(1116,32,2,(128<<8)+(128<<16))
�<,�add_sprite(84,896,1,(128<<8)+(128<<16))
��?c%=�("<This$Dir>.Levels.Level"+�(scrn%)+".Flames"+�(scrn%))
��� a%=1 � 16
�� �#c%,x%
�� �#c%,y%
� �#c%,t%
� �#c%,i%
� �add_sprite(x%,y%,3,i%)
�"�
�,�#c%
�6� start
�@� clear_screen
�J�
�T:
�^:
�h:
�r� �error
�|	� � �
��
*FX 200,1
��ș "Hourglass_Smash"
��ȗ �
��� �=17 �
�� ș "OS_Byte",112,1
�� �
�� ș "OS_Byte",113,1
���
�� ș "OS_Byte",112,1
�� �
�� ș "OS_Byte",113,1
�� � �$;" at line ";�
���
�*RmKill EXPLO
�*RmKill TOKENRM
�*RmKill ARG
�&*RmKill RARG
�0*RmKill LaughRM
�:*RmKill Revolver
�D*RmKill Gener
�N
*FX 200,0
�X�
�b:
�l:
�v:
��� �bordercol(r%,g%,b%)
�� [OPT pass%
��;SWI     256+19
��;SWI     256+0
��;SWI     256+24
��;SWI     256+r%
��;SWI     256+g%
��;SWI     256+b%
�� ]
��=0
��:
��:
��:
�� �add_sprite(x%,y%,t%,i%)
�!(p%+00)=t%
�!(p%+04)=x%
� !(p%+08)=y%
�*!(p%+12)=i%
�4
p%+=16
�>�
�H:
�R:
�\:
�f� �add_cell(t%)
�pp%!00=t%
�z
p%+=32
���
��:
��:
��:
��� �assm_decomp
��!� pass%=%0000 � %1010 � %1010
�� P%=decomp_code%
�� L%=decomp_code%+1020
�� [OPT pass%
�� :
�� .dc_unused
�� EQUD    0
��
 .dc_cmpp
� EQUD    0
� .dc_address
� EQUD    0
�$ .dc_value
�. EQUD    0
�8 .dc_repetitions
�B EQUD    0
�L :
�V .dc_start
�` LDR     R0, dc_cmpp
�j LDR     R1,[R0]
�t STR     R1, dc_unused
�~ ADD     R0,R0, #4
�� STR     R0, dc_cmpp
�� .dc_repeat_loop1
�� LDR     R0, dc_cmpp
�� LDR     R0,[R0]
�� LDR     R1, dc_unused
�� CMP     R0,R1
�� BEQ     dc_decompress
��
 .dc_copy
�� LDR     R0, dc_cmpp
�� LDR     R1,[R0]
�� LDR     R2, dc_address
�� STR     R1,[R2]
� LDR     R0, dc_cmpp
�
 ADD     R0,R0, #4
� LDR     R2, dc_address
� ADD     R2,R2, #4
�( STR     R0, dc_cmpp
�2 STR     R2, dc_address
�< B       dc_until1
�F .dc_decompress
�P LDR     R0, dc_cmpp
�Z LDR     R7,[R0, #4]
�d STR     R7, dc_value
�n LDR     R0,[R0, #8]
�x STR     R0, dc_repetitions
�� CMP     R0, #0
�� BEQ     dc_until1
�� LDR     R7, dc_value
�� LDR     R8, dc_address
�� MOV     R9, #1
�� .dc_repeat_loop2
�� STMIA   R8!,{R7}
�� ADD     R9,R9, #1
�� LDR     R0, dc_repetitions
�� CMP     R9,R0
�� BLE     dc_repeat_loop2
�� STR     R8, dc_address
�� LDR     R0, dc_cmpp
� ADD     R0,R0, #12
� STR     R0, dc_cmpp
� .dc_until1
�" LDR     R0, dc_cmpp
�, LDR     R1,[R0]
�6 LDR     R2, dc_unused
�@ CMP     R1,R2
�J BNE     dc_repeat_loop1
�T LDR     R3,[R0, #8]
�^ CMP     R3, #0
�h BNE     dc_repeat_loop1
�r MOV     PC,R14
�| :
�� ]
���
���
��:
��:
��:
��� �decompress(from$,to%)
��%ș "OS_File",255,from$,cmpdata%,0
��!dc_address=to%
��!dc_cmpp=cmpdata%
��� dc_start
���
��:
�:
�:
�� �assemble_clear_screen
�&!� pass%=%0000 � %1010 � %1010
�0 P%=cl_code%
�: L%=cl_code%+2044
�D [OPT pass%
�N :
�X .setup_cs
�b STMFD   R13!,{R0-R12,R14}
�l  LDR     R0, cl_adr_vdu_vars
�v LDR     R1, cl_adr_screen
��; SWI     "OS_ReadVduVariables"   ; set up vdu variables
�� LDMFD   R13!,{R0-R12,PC}
�� :
�� .clear_screen
�� STMFD   R13!,{R0-R12,R14}
�� :
��E LDR     R11, adr_clscolours     ; get the address of colour data
��/ MOV     R9, #0                  ; y co-ord
�� :
�� .cl_loop1
�� :
�� LDR     R10, cl_adr_screen
��9 LDR     R10,[R10]               ; get screen address
�5 ADD     R7,R10, #&14000         ; get screen end
� :
� .cl_loop3
�  ]
�* � a%=0 � 15
�4 � b%=0 � fader% � 4
�> [OPT pass%
�H :
�R ADD     R10,R10, #b%
�\1 BL      cl_cls                  ; dim screen
�f SUB     R10,R10, #b%
�p :
�z MOV     R0, #19
�� SWI     "OS_Byte"
�� :
�� ]
�� �
�� �
�� [OPT pass%
�� :
�� .cl_end_routines
�� :
�� .cl_end
�� LDMFD   R13!,{R0-R12,PC}
�� :
�� .cl_cls
� MOV     R6,R10
� MOV     R4, #&FF
� .cl_loop2
�$ LDR     R0,[R6]
�. :
�8 MOV     R3,R0, ROR #8
�B CMP     R3,R0
�L BNE     cl_not_same
�V �     R1,R4,R0
�` LDRB    R1,[R11,R1]
�j �R     R3,R1,R1, LSL #8
�t �R     R3,R3,R3, LSL #16
�~ :
�� B       cl_done_pixels
�� :
�� .cl_not_same
�� �     R1,R4,R0
�� LDRB    R1,[R11,R1]
�� MOV     R3,R1
�� :
�� �     R1,R4,R0, LSR #8
�� LDRB    R1,[R11,R1]
�� �R     R3,R3,R1, LSL #8
�� :
�� �     R1,R4,R0, LSR #16
� LDRB    R1,[R11,R1]
�
 �R     R3,R3,R1, LSL #16
� :
� �     R1,R4,R0, LSR #24
�( LDRB    R1,[R11,R1]
�2 �R     R3,R3,R1, LSL #24
�< :
�F .cl_done_pixels
�P STR     R3,[R6], #fader%+4
�Z :
�d CMP     R6,R7
�n BLT     cl_loop2
�x :
�� .cl_end
�� MOV     PC,R14
�� :
�� .adr_clscolours
�� EQUD    cl_colours%
�� .cl_adr_vdu_vars
�� EQUD    vdu_vars
�� .cl_adr_screen
�� EQUD    screen
�� .screen
�� EQUD    0
�� .vdu_vars
��, EQUD    149                  ; vdu data
� EQUD    -1
� .screen_size
� EQUD    &14000
�" :
�, ]
�6�
�@� setup_cs
�J�
�T:
�^:
�h:
�r� �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
��
��
�&�
�0:
�::
�D� �tint
�N� p%=0 � &13FFF � 1
�XK � screendata%?p%<>0 � screendata%?p%=(screendata%?p% � %11) � (�(3)-1)
�b�
�l�
�
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 2f  2a 52 6d 45 6e 73 75 72  |...:.../*RmEnsur|
00000100  65 20 45 58 50 4c 4f 20  52 4d 4c 6f 61 64 20 3c  |e EXPLO RMLoad <|
00000110  54 68 69 73 24 44 69 72  3e 2e 53 46 58 2e 45 78  |This$Dir>.SFX.Ex|
00000120  70 6c 6f 0d 00 dc 33 2a  52 6d 45 6e 73 75 72 65  |plo...3*RmEnsure|
00000130  20 54 4f 4b 45 4e 52 4d  20 52 4d 4c 6f 61 64 20  | TOKENRM RMLoad |
00000140  3c 54 68 69 73 24 44 69  72 3e 2e 53 46 58 2e 54  |<This$Dir>.SFX.T|
00000150  6f 6b 65 6e 52 4d 0d 00  e6 2b 2a 52 6d 45 6e 73  |okenRM...+*RmEns|
00000160  75 72 65 20 41 52 47 20  52 4d 4c 6f 61 64 20 3c  |ure ARG RMLoad <|
00000170  54 68 69 73 24 44 69 72  3e 2e 53 46 58 2e 41 72  |This$Dir>.SFX.Ar|
00000180  67 0d 00 f0 2d 2a 52 6d  45 6e 73 75 72 65 20 52  |g...-*RmEnsure R|
00000190  41 52 47 20 52 4d 4c 6f  61 64 20 3c 54 68 69 73  |ARG RMLoad <This|
000001a0  24 44 69 72 3e 2e 53 46  58 2e 52 41 72 67 0d 00  |$Dir>.SFX.RArg..|
000001b0  fa 31 2a 52 6d 45 6e 73  75 72 65 20 4c 61 75 67  |.1*RmEnsure Laug|
000001c0  68 52 4d 20 52 4d 4c 6f  61 64 20 3c 54 68 69 73  |hRM RMLoad <This|
000001d0  24 44 69 72 3e 2e 53 46  58 2e 4c 61 75 67 68 0d  |$Dir>.SFX.Laugh.|
000001e0  01 04 35 2a 52 6d 45 6e  73 75 72 65 20 52 65 76  |..5*RmEnsure Rev|
000001f0  6f 6c 76 65 72 20 52 4d  4c 6f 61 64 20 3c 54 68  |olver RMLoad <Th|
00000200  69 73 24 44 69 72 3e 2e  53 46 58 2e 52 65 76 6f  |is$Dir>.SFX.Revo|
00000210  6c 76 65 72 0d 01 0e 2f  2a 52 6d 45 6e 73 75 72  |lver.../*RmEnsur|
00000220  65 20 47 65 6e 65 72 20  52 4d 4c 6f 61 64 20 3c  |e Gener RMLoad <|
00000230  54 68 69 73 24 44 69 72  3e 2e 53 46 58 2e 47 65  |This$Dir>.SFX.Ge|
00000240  6e 65 72 0d 01 18 2e 2a  52 6d 45 6e 73 75 72 65  |ner....*RmEnsure|
00000250  20 47 65 6e 65 72 20 52  4d 4c 6f 61 64 20 3c 54  | Gener RMLoad <T|
00000260  68 69 73 24 44 69 72 3e  2e 53 46 58 2e 62 6f 6f  |his$Dir>.SFX.boo|
00000270  6d 0d 01 22 08 c8 a0 20  37 0d 01 2c 0f c8 a1 20  |m.."... 7..,... |
00000280  31 2c 22 62 6f 6f 6d 22  0d 01 36 12 c8 a1 20 32  |1,"boom"..6... 2|
00000290  2c 22 54 4f 4b 45 4e 52  4d 22 0d 01 40 0e c8 a1  |,"TOKENRM"..@...|
000002a0  20 33 2c 22 41 52 47 22  0d 01 4a 0f c8 a1 20 34  | 3,"ARG"..J... 4|
000002b0  2c 22 52 41 52 47 22 0d  01 54 12 c8 a1 20 35 2c  |,"RARG"..T... 5,|
000002c0  22 4c 61 75 67 68 52 4d  22 0d 01 5e 13 c8 a1 20  |"LaughRM"..^... |
000002d0  36 2c 22 52 65 76 6f 6c  76 65 72 22 0d 01 68 10  |6,"Revolver"..h.|
000002e0  c8 a1 20 37 2c 22 47 65  6e 65 72 22 0d 01 72 10  |.. 7,"Gener"..r.|
000002f0  c8 a1 20 38 2c 22 45 58  50 4c 4f 22 0d 01 7c 19  |.. 8,"EXPLO"..|.|
00000300  c8 99 20 22 53 6f 75 6e  64 5f 56 6f 6c 75 6d 65  |.. "Sound_Volume|
00000310  22 2c 31 32 37 0d 01 86  10 73 63 72 65 61 6d 25  |",127....scream%|
00000320  3d 38 31 39 32 0d 01 90  0f 70 69 6e 67 25 3d 31  |=8192....ping%=1|
00000330  34 33 33 36 0d 01 9a 0e  62 6f 6f 6d 25 3d 36 34  |4336....boom%=64|
00000340  30 30 0d 01 a4 13 65 78  70 6c 6f 73 69 6f 6e 25  |00....explosion%|
00000350  3d 33 32 30 30 0d 01 ae  0c 66 61 64 65 72 25 3d  |=3200....fader%=|
00000360  38 0d 01 b8 12 62 6f 6d  62 5f 70 61 75 73 65 25  |8....bomb_pause%|
00000370  3d 36 33 0d 01 c2 14 73  65 65 6b 69 6e 67 5f 73  |=63....seeking_s|
00000380  6f 75 6e 64 25 3d 37 0d  01 cc 15 73 65 65 6b 69  |ound%=7....seeki|
00000390  6e 67 5f 72 61 74 65 25  3d 35 31 32 0d 01 d6 10  |ng_rate%=512....|
000003a0  67 75 6e 5f 73 6f 75 6e  64 25 3d 36 0d 01 e0 13  |gun_sound%=6....|
000003b0  67 75 6e 5f 72 61 74 65  25 3d 31 36 33 38 34 0d  |gun_rate%=16384.|
000003c0  01 ea 13 68 6f 6d 69 6e  67 5f 73 6f 75 6e 64 25  |...homing_sound%|
000003d0  3d 37 0d 01 f4 16 68 6f  6d 69 6e 67 5f 72 61 74  |=7....homing_rat|
000003e0  65 25 3d 31 36 33 38 34  0d 01 fe 16 63 6c 69 73  |e%=16384....clis|
000003f0  74 5f 73 69 7a 65 25 3d  36 34 30 2a 33 32 0d 02  |t_size%=640*32..|
00000400  08 14 73 6c 69 73 74 5f  73 69 7a 65 25 3d 31 30  |..slist_size%=10|
00000410  32 34 0d 02 12 4a c8 99  20 22 4f 53 5f 46 69 6c  |24...J.. "OS_Fil|
00000420  65 22 2c 31 37 2c 22 3c  54 68 69 73 24 44 69 72  |e",17,"<This$Dir|
00000430  3e 2e 47 72 61 70 68 69  63 73 2e 53 44 61 74 61  |>.Graphics.SData|
00000440  31 32 31 32 22 20 b8 20  74 79 70 65 25 2c 2c 2c  |1212" . type%,,,|
00000450  2c 73 70 72 69 74 65 6c  65 6e 31 25 0d 02 1c 4a  |,spritelen1%...J|
00000460  c8 99 20 22 4f 53 5f 46  69 6c 65 22 2c 31 37 2c  |.. "OS_File",17,|
00000470  22 3c 54 68 69 73 24 44  69 72 3e 2e 47 72 61 70  |"<This$Dir>.Grap|
00000480  68 69 63 73 2e 53 44 61  74 61 32 30 31 36 22 20  |hics.SData2016" |
00000490  b8 20 74 79 70 65 25 2c  2c 2c 2c 73 70 72 69 74  |. type%,,,,sprit|
000004a0  65 6c 65 6e 32 25 0d 02  26 4a c8 99 20 22 4f 53  |elen2%..&J.. "OS|
000004b0  5f 46 69 6c 65 22 2c 31  37 2c 22 3c 54 68 69 73  |_File",17,"<This|
000004c0  24 44 69 72 3e 2e 47 72  61 70 68 69 63 73 2e 53  |$Dir>.Graphics.S|
000004d0  44 61 74 61 31 32 36 34  22 20 b8 20 74 79 70 65  |Data1264" . type|
000004e0  25 2c 2c 2c 2c 73 70 72  69 74 65 6c 65 6e 33 25  |%,,,,spritelen3%|
000004f0  0d 02 30 4a c8 99 20 22  4f 53 5f 46 69 6c 65 22  |..0J.. "OS_File"|
00000500  2c 31 37 2c 22 3c 54 68  69 73 24 44 69 72 3e 2e  |,17,"<This$Dir>.|
00000510  47 72 61 70 68 69 63 73  2e 53 44 61 74 61 30 38  |Graphics.SData08|
00000520  30 34 22 20 b8 20 74 79  70 65 25 2c 2c 2c 2c 73  |04" . type%,,,,s|
00000530  70 72 69 74 65 6c 65 6e  34 25 0d 02 3a 4a c8 99  |pritelen4%..:J..|
00000540  20 22 4f 53 5f 46 69 6c  65 22 2c 31 37 2c 22 3c  | "OS_File",17,"<|
00000550  54 68 69 73 24 44 69 72  3e 2e 47 72 61 70 68 69  |This$Dir>.Graphi|
00000560  63 73 2e 53 44 61 74 61  31 32 30 38 22 20 b8 20  |cs.SData1208" . |
00000570  74 79 70 65 25 2c 2c 2c  2c 73 70 72 69 74 65 6c  |type%,,,,spritel|
00000580  65 6e 35 25 0d 02 44 4a  c8 99 20 22 4f 53 5f 46  |en5%..DJ.. "OS_F|
00000590  69 6c 65 22 2c 31 37 2c  22 3c 54 68 69 73 24 44  |ile",17,"<This$D|
000005a0  69 72 3e 2e 47 72 61 70  68 69 63 73 2e 53 44 61  |ir>.Graphics.SDa|
000005b0  74 61 31 36 31 36 22 20  b8 20 74 79 70 65 25 2c  |ta1616" . type%,|
000005c0  2c 2c 2c 73 70 72 69 74  65 6c 65 6e 36 25 0d 02  |,,,spritelen6%..|
000005d0  4e 42 c8 99 20 22 4f 53  5f 46 69 6c 65 22 2c 31  |NB.. "OS_File",1|
000005e0  37 2c 22 3c 54 68 69 73  24 44 69 72 3e 2e 47 72  |7,"<This$Dir>.Gr|
000005f0  61 70 68 69 63 73 2e 46  6f 6e 74 22 20 b8 20 74  |aphics.Font" . t|
00000600  79 70 65 25 2c 2c 2c 2c  66 6f 6e 74 6c 65 6e 25  |ype%,,,,fontlen%|
00000610  0d 02 58 75 de 20 63 6f  64 65 25 20 31 32 2a 31  |..Xu. code% 12*1|
00000620  30 32 34 2c 73 70 72 69  74 65 5f 72 6f 75 74 69  |024,sprite_routi|
00000630  6e 65 73 25 20 38 31 39  32 2c 66 69 6c 6c 5f 72  |nes% 8192,fill_r|
00000640  6f 75 74 69 6e 65 73 25  20 38 31 39 32 2c 63 6c  |outines% 8192,cl|
00000650  67 5f 72 6f 75 74 69 6e  65 25 20 31 30 32 34 2c  |g_routine% 1024,|
00000660  73 70 6c 69 74 5f 72 6f  75 74 69 6e 65 25 20 31  |split_routine% 1|
00000670  30 32 34 2c 64 65 63 6f  6d 70 5f 63 6f 64 65 25  |024,decomp_code%|
00000680  20 31 30 32 34 0d 02 62  95 de 20 73 70 72 69 74  | 1024..b.. sprit|
00000690  65 73 31 25 20 73 70 72  69 74 65 6c 65 6e 31 25  |es1% spritelen1%|
000006a0  2b 34 2c 73 70 72 69 74  65 73 32 25 20 73 70 72  |+4,sprites2% spr|
000006b0  69 74 65 6c 65 6e 32 25  2b 34 2c 73 70 72 69 74  |itelen2%+4,sprit|
000006c0  65 73 33 25 20 73 70 72  69 74 65 6c 65 6e 33 25  |es3% spritelen3%|
000006d0  2b 34 2c 73 70 72 69 74  65 73 34 25 20 73 70 72  |+4,sprites4% spr|
000006e0  69 74 65 6c 65 6e 34 25  2b 34 2c 73 70 72 69 74  |itelen4%+4,sprit|
000006f0  65 73 35 25 20 73 70 72  69 74 65 6c 65 6e 35 25  |es5% spritelen5%|
00000700  2b 34 2c 73 70 72 69 74  65 73 36 25 20 73 70 72  |+4,sprites6% spr|
00000710  69 74 65 6c 65 6e 36 25  2b 34 0d 02 6c 17 de 20  |itelen6%+4..l.. |
00000720  73 63 72 65 65 6e 64 61  74 61 25 20 38 31 39 32  |screendata% 8192|
00000730  34 0d 02 76 18 de 20 73  63 72 65 65 6e 73 74 6f  |4..v.. screensto|
00000740  72 65 25 20 38 31 39 32  34 0d 02 80 2b de 20 63  |re% 81924...+. c|
00000750  6c 69 73 74 25 20 63 6c  69 73 74 5f 73 69 7a 65  |list% clist_size|
00000760  25 2c 73 6c 69 73 74 25  20 73 6c 69 73 74 5f 73  |%,slist% slist_s|
00000770  69 7a 65 25 0d 02 8a 14  de 20 63 6d 70 64 61 74  |ize%..... cmpdat|
00000780  61 25 20 38 31 39 32 34  0d 02 94 15 de 20 66 6c  |a% 81924..... fl|
00000790  61 6d 65 5f 66 61 64 65  25 20 32 35 36 0d 02 9e  |ame_fade% 256...|
000007a0  13 de 20 67 75 6e 5f 66  61 64 65 25 20 32 35 36  |.. gun_fade% 256|
000007b0  0d 02 a8 24 de 20 63 6c  5f 63 6f 64 65 25 20 32  |...$. cl_code% 2|
000007c0  30 34 38 2c 20 63 6c 5f  63 6f 6c 6f 75 72 73 25  |048, cl_colours%|
000007d0  20 33 32 30 0d 02 b2 16  de 20 66 6f 6e 74 25 20  | 320..... font% |
000007e0  66 6f 6e 74 6c 65 6e 25  2b 34 0d 02 bc 10 f2 61  |fontlen%+4.....a|
000007f0  73 73 6d 5f 64 65 63 6f  6d 70 0d 02 c6 36 f2 64  |ssm_decomp...6.d|
00000800  65 63 6f 6d 70 72 65 73  73 28 22 3c 54 68 69 73  |ecompress("<This|
00000810  24 44 69 72 3e 2e 47 72  61 70 68 69 63 73 2e 43  |$Dir>.Graphics.C|
00000820  4d 4c 44 61 74 61 22 2c  73 63 72 65 65 6e 25 29  |MLData",screen%)|
00000830  0d 02 d0 12 21 66 6f 6e  74 25 3d 32 32 2a 31 30  |....!font%=22*10|
00000840  32 34 0d 02 da 3a c8 99  20 22 4f 53 5f 53 70 72  |24...:.. "OS_Spr|
00000850  69 74 65 4f 70 22 2c 26  31 30 41 2c 66 6f 6e 74  |iteOp",&10A,font|
00000860  25 2c 22 3c 54 68 69 73  24 44 69 72 3e 2e 47 72  |%,"<This$Dir>.Gr|
00000870  61 70 68 69 63 73 2e 46  6f 6e 74 22 0d 02 e4 08  |aphics.Font"....|
00000880  74 25 3d 91 0d 02 ee 12  50 25 3d 63 6c 5f 63 6f  |t%=.....P%=cl_co|
00000890  6c 6f 75 72 73 25 0d 02  f8 16 4c 25 3d 63 6c 5f  |lours%....L%=cl_|
000008a0  63 6f 6c 6f 75 72 73 25  2b 32 35 36 0d 03 02 22  |colours%+256..."|
000008b0  63 68 61 6e 25 3d 8e 28  22 3c 54 68 69 73 24 44  |chan%=.("<This$D|
000008c0  69 72 3e 2e 46 61 64 65  43 6f 6c 73 22 29 0d 03  |ir>.FadeCols")..|
000008d0  0c 10 e3 20 63 25 3d 30  20 b8 20 32 35 35 0d 03  |... c%=0 . 255..|
000008e0  16 10 20 3f 50 25 3d 9a  23 63 68 61 6e 25 0d 03  |.. ?P%=.#chan%..|
000008f0  20 0a 20 50 25 2b 3d 31  0d 03 2a 05 ed 0d 03 34  | . P%+=1..*....4|
00000900  0b d9 23 63 68 61 6e 25  0d 03 3e 05 f5 0d 03 48  |..#chan%..>....H|
00000910  0e fd 20 91 3e 74 25 2b  32 30 30 0d 03 52 1a f2  |.. .>t%+200..R..|
00000920  61 73 73 65 6d 62 6c 65  5f 63 6c 65 61 72 5f 73  |assemble_clear_s|
00000930  63 72 65 65 6e 0d 03 5c  05 3a 0d 03 66 0c 73 63  |creen..\.:..f.sc|
00000940  72 6e 25 3d 32 30 0d 03  70 05 f5 0d 03 7a 15 20  |rn%=20..p....z. |
00000950  70 6c 61 79 65 72 31 5f  6c 69 76 65 73 25 3d 33  |player1_lives%=3|
00000960  0d 03 84 15 20 70 6c 61  79 65 72 32 5f 6c 69 76  |.... player2_liv|
00000970  65 73 25 3d 33 0d 03 8e  06 20 f5 0d 03 98 0e 20  |es%=3.... ..... |
00000980  20 73 63 72 6e 25 2b 3d  31 0d 03 a2 1a 20 20 e7  | scrn%+=1....  .|
00000990  20 73 63 72 6e 25 3e 32  33 20 8c 20 73 63 72 6e  | scrn%>23 . scrn|
000009a0  25 3d 31 0d 03 ac 55 20  20 f2 64 65 63 6f 6d 70  |%=1...U  .decomp|
000009b0  72 65 73 73 28 22 3c 54  68 69 73 24 44 69 72 3e  |ress("<This$Dir>|
000009c0  2e 4c 65 76 65 6c 73 2e  4c 65 76 65 6c 22 2b c3  |.Levels.Level"+.|
000009d0  28 73 63 72 6e 25 29 2b  22 2e 43 6d 70 44 61 74  |(scrn%)+".CmpDat|
000009e0  61 22 2b c3 28 73 63 72  6e 25 29 2c 73 63 72 65  |a"+.(scrn%),scre|
000009f0  65 6e 64 61 74 61 25 29  0d 03 b6 0b 20 20 f2 74  |endata%)....  .t|
00000a00  69 6e 74 0d 03 c0 14 20  20 d6 20 63 6c 65 61 72  |int....  . clear|
00000a10  5f 73 63 72 65 65 6e 0d  03 ca 0b 20 20 f2 70 6c  |_screen....  .pl|
00000a20  61 79 0d 03 d4 16 20 20  21 73 63 72 65 65 6e 3d  |ay....  !screen=|
00000a30  21 73 63 72 65 65 6e 31  0d 03 de 07 20 20 db 0d  |!screen1....  ..|
00000a40  03 e8 07 20 20 87 0d 03  f2 18 20 20 c8 99 20 22  |...  .....  .. "|
00000a50  4f 53 5f 42 79 74 65 22  2c 31 31 32 2c 32 0d 03  |OS_Byte",112,2..|
00000a60  fc 07 20 20 db 0d 04 06  18 20 20 c8 99 20 22 4f  |..  .....  .. "O|
00000a70  53 5f 42 79 74 65 22 2c  31 31 33 2c 32 0d 04 10  |S_Byte",113,2...|
00000a80  18 20 20 c8 99 20 22 4f  53 5f 42 79 74 65 22 2c  |.  .. "OS_Byte",|
00000a90  31 31 32 2c 31 0d 04 1a  07 20 20 db 0d 04 24 3a  |112,1....  ...$:|
00000aa0  20 20 f2 64 65 63 6f 6d  70 72 65 73 73 28 22 3c  |  .decompress("<|
00000ab0  54 68 69 73 24 44 69 72  3e 2e 47 72 61 70 68 69  |This$Dir>.Graphi|
00000ac0  63 73 2e 43 4c 6f 67 6f  44 61 74 61 22 2c 73 63  |cs.CLogoData",sc|
00000ad0  72 65 65 6e 25 29 0d 04  2e 08 20 20 c8 96 0d 04  |reen%)....  ....|
00000ae0  38 18 20 20 c8 99 20 22  4f 53 5f 42 79 74 65 22  |8.  .. "OS_Byte"|
00000af0  2c 31 31 33 2c 31 0d 04  42 18 20 20 c8 99 20 22  |,113,1..B.  .. "|
00000b00  4f 53 5f 42 79 74 65 22  2c 31 31 32 2c 31 0d 04  |OS_Byte",112,1..|
00000b10  4c 2d 20 20 e7 20 21 70  6c 61 79 65 72 31 5f 61  |L-  . !player1_a|
00000b20  6c 69 76 65 3c 3e 30 20  8c 20 70 6c 61 79 65 72  |live<>0 . player|
00000b30  31 5f 6c 69 76 65 73 25  2d 3d 31 0d 04 56 2d 20  |1_lives%-=1..V- |
00000b40  20 e7 20 21 70 6c 61 79  65 72 32 5f 61 6c 69 76  | . !player2_aliv|
00000b50  65 3c 3e 30 20 8c 20 70  6c 61 79 65 72 32 5f 6c  |e<>0 . player2_l|
00000b60  69 76 65 73 25 2d 3d 31  0d 04 60 51 20 20 e7 20  |ives%-=1..`Q  . |
00000b70  70 6c 61 79 65 72 31 5f  6c 69 76 65 73 25 3d 30  |player1_lives%=0|
00000b80  20 80 20 70 6c 61 79 65  72 32 5f 6c 69 76 65 73  | . player2_lives|
00000b90  25 3d 30 20 8c 20 70 6c  61 79 65 72 31 5f 6c 69  |%=0 . player1_li|
00000ba0  76 65 73 25 2b 3d 31 3a  70 6c 61 79 65 72 32 5f  |ves%+=1:player2_|
00000bb0  6c 69 76 65 73 25 2b 3d  31 0d 04 6a 13 20 20 fb  |lives%+=1..j.  .|
00000bc0  20 31 32 38 2b 34 32 20  c8 9c 20 30 0d 04 74 0e  | 128+42 .. 0..t.|
00000bd0  20 20 fb 20 30 20 c8 9c  20 30 0d 04 7e 0e 20 20  |  . 0 .. 0..~.  |
00000be0  f1 20 8a 30 2c 30 29 3b  0d 04 88 2c 20 20 f2 70  |. .0,0);...,  .p|
00000bf0  72 69 6e 74 28 22 50 6c  61 79 65 72 20 31 20 20  |rint("Player 1  |
00000c00  3a 09 22 2b c3 70 6c 61  79 65 72 31 5f 6c 69 76  |:."+.player1_liv|
00000c10  65 73 25 29 0d 04 92 2b  20 20 f2 70 72 69 6e 74  |es%)...+  .print|
00000c20  28 22 50 6c 61 79 65 72  20 32 20 3a 09 22 2b c3  |("Player 2 :."+.|
00000c30  70 6c 61 79 65 72 32 5f  6c 69 76 65 73 25 29 0d  |player2_lives%).|
00000c40  04 9c 10 20 20 fb 20 31  32 38 20 c8 9c 20 30 0d  |...  . 128 .. 0.|
00000c50  04 a6 11 20 20 fb 20 36  33 20 c8 9c 20 32 35 35  |...  . 63 .. 255|
00000c60  0d 04 b0 2a 20 fd 20 70  6c 61 79 65 72 31 5f 6c  |...* . player1_l|
00000c70  69 76 65 73 25 3d 30 20  84 20 70 6c 61 79 65 72  |ives%=0 . player|
00000c80  32 5f 6c 69 76 65 73 25  3d 30 0d 04 ba 09 20 74  |2_lives%=0.... t|
00000c90  25 3d 91 0d 04 c4 06 20  f5 0d 04 ce 0e 20 fd 20  |%=..... ..... . |
00000ca0  91 3e 74 25 2b 35 30 0d  04 d8 13 20 d6 20 63 6c  |.>t%+50.... . cl|
00000cb0  65 61 72 5f 73 63 72 65  65 6e 0d 04 e2 06 20 db  |ear_screen.... .|
00000cc0  0d 04 ec 06 20 87 0d 04  f6 17 20 c8 99 20 22 4f  |.... ..... .. "O|
00000cd0  53 5f 42 79 74 65 22 2c  31 31 32 2c 32 0d 05 00  |S_Byte",112,2...|
00000ce0  06 20 db 0d 05 0a 17 20  c8 99 20 22 4f 53 5f 42  |. ..... .. "OS_B|
00000cf0  79 74 65 22 2c 31 31 33  2c 32 0d 05 14 17 20 c8  |yte",113,2.... .|
00000d00  99 20 22 4f 53 5f 42 79  74 65 22 2c 31 31 32 2c  |. "OS_Byte",112,|
00000d10  31 0d 05 1e 06 20 db 0d  05 28 09 20 74 25 3d 91  |1.... ...(. t%=.|
00000d20  0d 05 32 4d 20 e7 20 70  6c 61 79 65 72 31 5f 6c  |..2M . player1_l|
00000d30  69 76 65 73 25 3d 30 20  8c 20 f2 64 65 63 6f 6d  |ives%=0 . .decom|
00000d40  70 72 65 73 73 28 22 3c  54 68 69 73 24 44 69 72  |press("<This$Dir|
00000d50  3e 2e 47 72 61 70 68 69  63 73 2e 43 a0 50 32 57  |>.Graphics.C.P2W|
00000d60  69 6e 73 22 2c 73 63 72  65 65 6e 25 29 0d 05 3c  |ins",screen%)..<|
00000d70  4d 20 e7 20 70 6c 61 79  65 72 32 5f 6c 69 76 65  |M . player2_live|
00000d80  73 25 3d 30 20 8c 20 f2  64 65 63 6f 6d 70 72 65  |s%=0 . .decompre|
00000d90  73 73 28 22 3c 54 68 69  73 24 44 69 72 3e 2e 47  |ss("<This$Dir>.G|
00000da0  72 61 70 68 69 63 73 2e  43 a0 50 31 57 69 6e 73  |raphics.C.P1Wins|
00000db0  22 2c 73 63 72 65 65 6e  25 29 0d 05 46 23 20 c8  |",screen%)..F# .|
00000dc0  99 20 22 53 6f 75 6e 64  5f 43 6f 6e 74 72 6f 6c  |. "Sound_Control|
00000dd0  22 2c 35 2c 2d 31 35 2c  31 32 38 2c 30 0d 05 50  |",5,-15,128,0..P|
00000de0  07 20 c8 96 0d 05 5a 17  20 c8 99 20 22 4f 53 5f  |. ....Z. .. "OS_|
00000df0  42 79 74 65 22 2c 31 31  33 2c 31 0d 05 64 17 20  |Byte",113,1..d. |
00000e00  c8 99 20 22 4f 53 5f 42  79 74 65 22 2c 31 31 32  |.. "OS_Byte",112|
00000e10  2c 31 0d 05 6e 06 20 f5  0d 05 78 0f 20 fd 20 91  |,1..n. ...x. . .|
00000e20  3e 74 25 2b 35 30 30 0d  05 82 13 20 d6 20 63 6c  |>t%+500.... . cl|
00000e30  65 61 72 5f 73 63 72 65  65 6e 0d 05 8c 07 fd 20  |ear_screen..... |
00000e40  a3 0d 05 96 05 e0 0d 05  a0 05 3a 0d 05 aa 05 3a  |..........:....:|
00000e50  0d 05 b4 05 3a 0d 05 be  0b dd 20 f2 70 6c 61 79  |....:..... .play|
00000e60  0d 05 c8 11 73 70 72 61  79 5f 63 6f 6c 25 3d 36  |....spray_col%=6|
00000e70  33 0d 05 d2 18 6d 61 78  5f 68 6f 6d 69 6e 67 5f  |3....max_homing_|
00000e80  73 70 65 65 64 25 3d 31  36 0d 05 dc 40 c8 99 20  |speed%=16...@.. |
00000e90  22 4f 53 5f 46 69 6c 65  22 2c 32 35 35 2c 22 3c  |"OS_File",255,"<|
00000ea0  54 68 69 73 24 44 69 72  3e 2e 47 72 61 70 68 69  |This$Dir>.Graphi|
00000eb0  63 73 2e 53 44 61 74 61  31 32 31 32 22 2c 73 70  |cs.SData1212",sp|
00000ec0  72 69 74 65 73 31 25 2c  30 0d 05 e6 40 c8 99 20  |rites1%,0...@.. |
00000ed0  22 4f 53 5f 46 69 6c 65  22 2c 32 35 35 2c 22 3c  |"OS_File",255,"<|
00000ee0  54 68 69 73 24 44 69 72  3e 2e 47 72 61 70 68 69  |This$Dir>.Graphi|
00000ef0  63 73 2e 53 44 61 74 61  32 30 31 36 22 2c 73 70  |cs.SData2016",sp|
00000f00  72 69 74 65 73 32 25 2c  30 0d 05 f0 40 c8 99 20  |rites2%,0...@.. |
00000f10  22 4f 53 5f 46 69 6c 65  22 2c 32 35 35 2c 22 3c  |"OS_File",255,"<|
00000f20  54 68 69 73 24 44 69 72  3e 2e 47 72 61 70 68 69  |This$Dir>.Graphi|
00000f30  63 73 2e 53 44 61 74 61  31 32 36 34 22 2c 73 70  |cs.SData1264",sp|
00000f40  72 69 74 65 73 33 25 2c  30 0d 05 fa 40 c8 99 20  |rites3%,0...@.. |
00000f50  22 4f 53 5f 46 69 6c 65  22 2c 32 35 35 2c 22 3c  |"OS_File",255,"<|
00000f60  54 68 69 73 24 44 69 72  3e 2e 47 72 61 70 68 69  |This$Dir>.Graphi|
00000f70  63 73 2e 53 44 61 74 61  30 38 30 34 22 2c 73 70  |cs.SData0804",sp|
00000f80  72 69 74 65 73 34 25 2c  30 0d 06 04 40 c8 99 20  |rites4%,0...@.. |
00000f90  22 4f 53 5f 46 69 6c 65  22 2c 32 35 35 2c 22 3c  |"OS_File",255,"<|
00000fa0  54 68 69 73 24 44 69 72  3e 2e 47 72 61 70 68 69  |This$Dir>.Graphi|
00000fb0  63 73 2e 53 44 61 74 61  31 32 30 38 22 2c 73 70  |cs.SData1208",sp|
00000fc0  72 69 74 65 73 35 25 2c  30 0d 06 0e 40 c8 99 20  |rites5%,0...@.. |
00000fd0  22 4f 53 5f 46 69 6c 65  22 2c 32 35 35 2c 22 3c  |"OS_File",255,"<|
00000fe0  54 68 69 73 24 44 69 72  3e 2e 47 72 61 70 68 69  |This$Dir>.Graphi|
00000ff0  63 73 2e 53 44 61 74 61  31 36 31 36 22 2c 73 70  |cs.SData1616",sp|
00001000  72 69 74 65 73 36 25 2c  30 0d 06 18 11 6e 75 6d  |rites6%,0....num|
00001010  62 65 72 20 20 20 20 3d  20 30 0d 06 22 11 64 69  |ber    = 0..".di|
00001020  76 69 73 6f 72 20 20 20  3d 20 31 0d 06 2c 11 72  |visor   = 1..,.r|
00001030  65 6d 61 69 6e 20 20 20  20 3d 20 33 0d 06 36 11  |emain    = 3..6.|
00001040  71 75 6f 74 69 65 6e 74  20 20 3d 20 32 0d 06 40  |quotient  = 2..@|
00001050  11 70 6c 61 63 65 20 20  20 20 20 3d 20 34 0d 06  |.place     = 4..|
00001060  4a 11 64 73 69 67 6e 20  20 20 20 20 3d 20 35 0d  |J.dsign     = 5.|
00001070  06 54 11 6d 73 69 67 6e  20 20 20 20 20 3d 20 36  |.T.msign     = 6|
00001080  0d 06 5e 0d 78 5f 73 68  69 66 74 3d 31 0d 06 68  |..^.x_shift=1..h|
00001090  0f 79 5f 73 68 69 66 74  3d 33 32 30 0d 06 72 21  |.y_shift=320..r!|
000010a0  e3 20 70 61 73 73 25 3d  25 30 30 30 30 20 b8 20  |. pass%=%0000 . |
000010b0  25 31 30 31 30 20 88 20  25 31 30 31 30 0d 06 7c  |%1010 . %1010..||
000010c0  0d 20 50 25 3d 63 6f 64  65 25 0d 06 86 15 20 4c  |. P%=code%.... L|
000010d0  25 3d 63 6f 64 65 25 2b  31 32 2a 31 30 32 34 0d  |%=code%+12*1024.|
000010e0  06 90 0f 20 5b 4f 50 54  20 70 61 73 73 25 0d 06  |... [OPT pass%..|
000010f0  9a 06 20 3a 0d 06 a4 06  20 3a 0d 06 ae 06 20 3a  |.. :.... :.... :|
00001100  0d 06 b8 0b 20 2e 70 6f  69 6e 74 0d 06 c2 1e 20  |.... .point.... |
00001110  53 54 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 31  |STMFD   R13!,{R1|
00001120  2d 52 31 32 2c 52 31 34  7d 0d 06 cc 06 20 3a 0d  |-R12,R14}.... :.|
00001130  06 d6 18 20 52 53 42 20  20 20 20 20 52 32 2c 52  |... RSB     R2,R|
00001140  32 2c 20 23 32 35 36 0d  06 e0 06 20 3a 0d 06 ea  |2, #256.... :...|
00001150  36 3b 20 4d 4f 56 20 20  20 20 20 52 37 2c 20 23  |6; MOV     R7, #|
00001160  78 5f 73 68 69 66 74 20  20 20 20 20 20 20 20 20  |x_shift         |
00001170  3b 20 67 65 74 20 73 63  72 65 65 6e 20 73 68 69  |; get screen shi|
00001180  66 74 73 0d 06 f4 1a 3b  20 4d 4f 56 20 20 20 20  |fts....; MOV    |
00001190  20 52 38 2c 20 23 79 5f  73 68 69 66 74 0d 06 fe  | R8, #y_shift...|
000011a0  36 20 4c 44 52 20 20 20  20 20 52 39 2c 20 73 63  |6 LDR     R9, sc|
000011b0  72 65 65 6e 73 74 6f 72  65 20 20 20 20 20 20 3b  |reenstore      ;|
000011c0  20 67 65 74 20 73 63 72  65 65 6e 20 61 64 64 72  | get screen addr|
000011d0  65 73 73 0d 07 08 06 20  3a 0d 07 12 10 41 44 44  |ess.... :....ADD|
000011e0  20 72 39 2c 72 39 2c 72  31 0d 07 1c 18 41 44 44  | r9,r9,r1....ADD|
000011f0  20 72 39 2c 72 39 2c 72  32 2c 20 41 53 4c 20 23  | r9,r9,r2, ASL #|
00001200  38 0d 07 26 18 41 44 44  20 72 39 2c 72 39 2c 72  |8..&.ADD r9,r9,r|
00001210  32 2c 20 41 53 4c 20 23  36 0d 07 30 19 3b 20 4d  |2, ASL #6..0.; M|
00001220  4c 41 20 20 20 20 20 52  39 2c 52 37 2c 52 31 2c  |LA     R9,R7,R1,|
00001230  52 39 0d 07 3a 19 3b 20  4d 4c 41 20 20 20 20 20  |R9..:.; MLA     |
00001240  52 31 2c 52 38 2c 52 32  2c 52 39 0d 07 44 06 20  |R1,R8,R2,R9..D. |
00001250  3a 0d 07 4e 14 20 53 54  52 42 20 20 20 20 52 30  |:..N. STRB    R0|
00001260  2c 5b 52 31 5d 0d 07 58  06 20 3a 0d 07 62 1d 20  |,[R1]..X. :..b. |
00001270  4c 44 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 31  |LDMFD   R13!,{R1|
00001280  2d 52 31 32 2c 50 43 7d  0d 07 6c 06 20 3a 0d 07  |-R12,PC}..l. :..|
00001290  76 13 20 2e 76 73 79 6e  63 5f 63 6f 75 6e 74 65  |v. .vsync_counte|
000012a0  72 0d 07 80 13 20 43 4d  50 20 20 20 20 20 52 30  |r.... CMP     R0|
000012b0  2c 20 23 34 0d 07 8a 13  20 4d 4f 56 4e 45 53 20  |, #4.... MOVNES |
000012c0  20 50 43 2c 52 31 34 0d  07 94 17 20 4c 44 52 20  | PC,R14.... LDR |
000012d0  20 20 20 20 52 30 2c 20  76 73 79 6e 63 73 0d 07  |    R0, vsyncs..|
000012e0  9e 16 20 41 44 44 20 20  20 20 20 52 30 2c 52 30  |.. ADD     R0,R0|
000012f0  2c 20 23 31 0d 07 a8 17  20 53 54 52 20 20 20 20  |, #1.... STR    |
00001300  20 52 30 2c 20 76 73 79  6e 63 73 0d 07 b2 13 20  | R0, vsyncs.... |
00001310  4d 4f 56 53 20 20 20 20  50 43 2c 52 31 34 0d 07  |MOVS    PC,R14..|
00001320  bc 06 20 3a 0d 07 c6 0c  20 2e 76 73 79 6e 63 73  |.. :.... .vsyncs|
00001330  0d 07 d0 0e 20 45 51 55  44 20 20 20 20 30 0d 07  |.... EQUD    0..|
00001340  da 06 20 3a 0d 07 e4 0b  20 2e 73 74 61 72 74 0d  |.. :.... .start.|
00001350  07 ee 1e 20 53 54 4d 46  44 20 20 20 52 31 33 21  |... STMFD   R13!|
00001360  2c 7b 52 30 2d 52 31 32  2c 52 31 34 7d 0d 07 f8  |,{R0-R12,R14}...|
00001370  06 20 3a 0d 08 02 19 20  41 44 52 20 20 20 20 20  |. :.... ADR     |
00001380  52 30 2c 20 76 64 75 5f  76 61 72 73 0d 08 0c 17  |R0, vdu_vars....|
00001390  20 41 44 52 20 20 20 20  20 52 31 2c 20 73 63 72  | ADR     R1, scr|
000013a0  65 65 6e 0d 08 16 3b 20  53 57 49 20 20 20 20 20  |een...; SWI     |
000013b0  22 4f 53 5f 52 65 61 64  56 64 75 56 61 72 69 61  |"OS_ReadVduVaria|
000013c0  62 6c 65 73 22 20 20 20  3b 20 73 65 74 20 75 70  |bles"   ; set up|
000013d0  20 76 64 75 20 76 61 72  69 61 62 6c 65 73 0d 08  | vdu variables..|
000013e0  20 17 20 4c 44 52 20 20  20 20 20 52 30 2c 20 73  | . LDR     R0, s|
000013f0  63 72 65 65 6e 0d 08 2a  18 20 53 54 52 20 20 20  |creen..*. STR   |
00001400  20 20 52 30 2c 20 73 63  72 65 65 6e 31 0d 08 34  |  R0, screen1..4|
00001410  1c 20 4c 44 52 20 20 20  20 20 52 31 2c 20 73 63  |. LDR     R1, sc|
00001420  72 65 65 6e 5f 73 69 7a  65 0d 08 3e 15 20 41 44  |reen_size..>. AD|
00001430  44 20 20 20 20 20 52 30  2c 52 30 2c 52 31 0d 08  |D     R0,R0,R1..|
00001440  48 18 20 53 54 52 20 20  20 20 20 52 30 2c 20 73  |H. STR     R0, s|
00001450  63 72 65 65 6e 32 0d 08  52 13 20 53 57 49 20 20  |creen2..R. SWI  |
00001460  20 20 20 32 35 36 2b 31  39 0d 08 5c 12 20 53 57  |   256+19..\. SW|
00001470  49 20 20 20 20 20 32 35  36 2b 30 0d 08 66 13 20  |I     256+0..f. |
00001480  53 57 49 20 20 20 20 20  32 35 36 2b 32 34 0d 08  |SWI     256+24..|
00001490  70 14 20 53 57 49 20 20  20 20 20 32 35 36 2b 32  |p. SWI     256+2|
000014a0  34 30 0d 08 7a 14 20 53  57 49 20 20 20 20 20 32  |40..z. SWI     2|
000014b0  35 36 2b 32 34 30 0d 08  84 14 20 53 57 49 20 20  |56+240.... SWI  |
000014c0  20 20 20 32 35 36 2b 31  31 32 0d 08 8e 10 20 42  |   256+112.... B|
000014d0  4c 20 20 20 20 20 20 63  6c 67 0d 08 98 06 20 3a  |L      clg.... :|
000014e0  0d 08 a2 14 20 4d 4f 56  20 20 20 20 20 52 30 2c  |.... MOV     R0,|
000014f0  20 23 31 36 0d 08 ac 1e  20 41 44 52 20 20 20 20  | #16.... ADR    |
00001500  20 52 31 2c 20 76 73 79  6e 63 5f 63 6f 75 6e 74  | R1, vsync_count|
00001510  65 72 0d 08 b6 13 20 4d  4f 56 20 20 20 20 20 52  |er.... MOV     R|
00001520  32 2c 20 23 31 0d 08 c0  17 20 53 57 49 20 20 20  |2, #1.... SWI   |
00001530  20 20 22 4f 53 5f 43 6c  61 69 6d 22 0d 08 ca 06  |  "OS_Claim"....|
00001540  20 3a 0d 08 d4 14 20 4d  4f 56 20 20 20 20 20 52  | :.... MOV     R|
00001550  30 2c 20 23 31 34 0d 08  de 13 20 4d 4f 56 20 20  |0, #14.... MOV  |
00001560  20 20 20 52 31 2c 20 23  34 0d 08 e8 16 20 53 57  |   R1, #4.... SW|
00001570  49 20 20 20 20 20 22 4f  53 5f 42 79 74 65 22 0d  |I     "OS_Byte".|
00001580  08 f2 06 20 3a 0d 08 fc  10 20 2e 74 6f 74 61 6c  |... :.... .total|
00001590  5f 6c 6f 6f 70 0d 09 06  06 20 3a 0d 09 10 15 a4  |_loop.... :.....|
000015a0  62 6f 72 64 65 72 63 6f  6c 28 30 2c 30 2c 30 29  |bordercol(0,0,0)|
000015b0  0d 09 1a 10 20 2e 76 73  79 6e 63 5f 6c 6f 6f 70  |.... .vsync_loop|
000015c0  0d 09 24 13 20 4c 44 52  20 52 30 2c 20 76 73 79  |..$. LDR R0, vsy|
000015d0  6e 63 73 0d 09 2e 0f 20  43 4d 50 20 52 30 2c 20  |ncs.... CMP R0, |
000015e0  23 31 0d 09 38 13 20 42  4c 54 20 76 73 79 6e 63  |#1..8. BLT vsync|
000015f0  5f 6c 6f 6f 70 0d 09 42  0f 20 4d 4f 56 20 52 30  |_loop..B. MOV R0|
00001600  2c 20 23 30 0d 09 4c 13  20 53 54 52 20 52 30 2c  |, #0..L. STR R0,|
00001610  20 76 73 79 6e 63 73 0d  09 56 06 20 3a 0d 09 60  | vsyncs..V. :..`|
00001620  1c 20 4c 44 52 20 20 20  20 20 52 33 2c 20 73 63  |. LDR     R3, sc|
00001630  72 65 65 6e 5f 62 61 6e  6b 0d 09 6a 14 20 82 20  |reen_bank..j. . |
00001640  20 20 20 20 52 33 2c 52  33 2c 20 23 31 0d 09 74  |    R3,R3, #1..t|
00001650  1c 20 53 54 52 20 20 20  20 20 52 33 2c 20 73 63  |. STR     R3, sc|
00001660  72 65 65 6e 5f 62 61 6e  6b 0d 09 7e 13 20 43 4d  |reen_bank..~. CM|
00001670  50 20 20 20 20 20 52 33  2c 20 23 30 0d 09 88 16  |P     R3, #0....|
00001680  20 52 53 42 20 20 20 20  20 52 31 2c 52 33 2c 20  | RSB     R1,R3, |
00001690  23 32 0d 09 92 18 20 4c  44 52 45 51 20 20 20 52  |#2.... LDREQ   R|
000016a0  33 2c 20 73 63 72 65 65  6e 31 0d 09 9c 18 20 4c  |3, screen1.... L|
000016b0  44 52 4e 45 20 20 20 52  33 2c 20 73 63 72 65 65  |DRNE   R3, scree|
000016c0  6e 32 0d 09 a6 17 20 53  54 52 20 20 20 20 20 52  |n2.... STR     R|
000016d0  33 2c 20 73 63 72 65 65  6e 0d 09 b0 06 20 3a 0d  |3, screen.... :.|
000016e0  09 ba 15 20 4d 4f 56 20  20 20 20 20 52 30 2c 20  |... MOV     R0, |
000016f0  23 31 31 33 0d 09 c4 16  20 53 57 49 20 20 20 20  |#113.... SWI    |
00001700  20 22 4f 53 5f 42 79 74  65 22 0d 09 ce 06 20 3a  | "OS_Byte".... :|
00001710  0d 09 d8 17 a4 62 6f 72  64 65 72 63 6f 6c 28 32  |.....bordercol(2|
00001720  35 35 2c 30 2c 30 29 0d  09 e2 15 20 42 4c 20 20  |55,0,0).... BL  |
00001730  20 20 20 20 77 69 70 65  5f 61 6c 6c 0d 09 ec 06  |    wipe_all....|
00001740  20 3a 0d 09 f6 23 20 53  57 49 20 20 20 20 20 22  | :...# SWI     "|
00001750  4f 53 5f 52 65 61 64 4d  6f 6e 6f 74 6f 6e 69 63  |OS_ReadMonotonic|
00001760  54 69 6d 65 22 0d 0a 00  12 20 4d 4f 56 20 20 20  |Time".... MOV   |
00001770  20 20 72 32 2c 72 30 0d  0a 0a 25 20 4c 44 52 20  |  r2,r0...% LDR |
00001780  20 20 20 20 72 30 2c 20  61 64 72 5f 65 78 70 6c  |    r0, adr_expl|
00001790  6f 73 69 6f 6e 5f 73 70  72 61 79 32 0d 0a 14 14  |osion_spray2....|
000017a0  20 4d 4f 56 20 20 20 20  20 72 31 2c 20 23 31 36  | MOV     r1, #16|
000017b0  0d 0a 1e 11 20 2e 65 78  70 6c 6f 5f 6c 6f 6f 70  |.... .explo_loop|
000017c0  31 0d 0a 28 1d 20 41 44  44 20 20 20 20 20 72 32  |1..(. ADD     r2|
000017d0  2c 72 32 2c 72 32 2c 20  52 4f 52 20 23 31 0d 0a  |,r2,r2, ROR #1..|
000017e0  32 14 20 4c 44 52 20 20  20 20 20 72 33 2c 5b 72  |2. LDR     r3,[r|
000017f0  30 5d 0d 0a 3c 13 20 82  20 20 20 20 20 72 33 2c  |0]..<. .     r3,|
00001800  72 33 2c 72 32 0d 0a 46  18 20 53 54 52 20 20 20  |r3,r2..F. STR   |
00001810  20 20 72 33 2c 5b 72 30  5d 2c 20 23 34 0d 0a 50  |  r3,[r0], #4..P|
00001820  16 20 53 55 42 53 20 20  20 20 72 31 2c 72 31 2c  |. SUBS    r1,r1,|
00001830  20 23 31 0d 0a 5a 18 20  42 50 4c 20 20 20 20 20  | #1..Z. BPL     |
00001840  65 78 70 6c 6f 5f 6c 6f  6f 70 31 0d 0a 64 06 20  |explo_loop1..d. |
00001850  3a 0d 0a 6e 17 a4 62 6f  72 64 65 72 63 6f 6c 28  |:..n..bordercol(|
00001860  30 2c 32 35 35 2c 30 29  0d 0a 78 06 20 3a 0d 0a  |0,255,0)..x. :..|
00001870  82 14 20 4c 44 52 20 20  20 20 20 52 30 2c 20 72  |.. LDR     R0, r|
00001880  6e 64 0d 0a 8c 18 20 54  53 54 20 20 20 20 20 52  |nd.... TST     R|
00001890  30 2c 20 23 32 35 35 3c  3c 38 0d 0a 96 17 20 42  |0, #255<<8.... B|
000018a0  4c 45 51 20 20 20 20 61  64 64 5f 67 6f 6f 64 69  |LEQ    add_goodi|
000018b0  65 0d 0a a0 18 20 54 53  54 20 20 20 20 20 52 30  |e.... TST     R0|
000018c0  2c 20 23 32 35 35 3c 3c  34 0d 0a aa 17 20 42 4c  |, #255<<4.... BL|
000018d0  45 51 20 20 20 20 61 64  64 5f 67 6f 6f 64 69 65  |EQ    add_goodie|
000018e0  0d 0a b4 06 20 3a 0d 0a  be 1b 20 42 4c 20 20 20  |.... :.... BL   |
000018f0  20 20 20 75 70 64 61 74  65 5f 73 70 72 69 74 65  |   update_sprite|
00001900  73 0d 0a c8 06 20 3a 0d  0a d2 17 a4 62 6f 72 64  |s.... :.....bord|
00001910  65 72 63 6f 6c 28 30 2c  30 2c 32 35 35 29 0d 0a  |ercol(0,0,255)..|
00001920  dc 19 20 42 4c 20 20 20  20 20 20 75 70 64 61 74  |.. BL      updat|
00001930  65 5f 63 65 6c 6c 73 0d  0a e6 06 20 3a 0d 0a f0  |e_cells.... :...|
00001940  19 a4 62 6f 72 64 65 72  63 6f 6c 28 30 2c 32 35  |..bordercol(0,25|
00001950  35 2c 32 35 35 29 0d 0a  fa 19 20 42 4c 20 20 20  |5,255).... BL   |
00001960  20 20 20 73 70 6c 69 74  5f 73 63 72 65 65 6e 0d  |   split_screen.|
00001970  0b 04 06 20 3a 0d 0b 0e  1b a4 62 6f 72 64 65 72  |... :.....border|
00001980  63 6f 6c 28 32 35 35 2c  32 35 35 2c 32 35 35 29  |col(255,255,255)|
00001990  0d 0b 18 21 20 53 57 49  20 20 20 20 20 22 4f 53  |...! SWI     "OS|
000019a0  5f 52 65 61 64 45 73 63  61 70 65 53 74 61 74 65  |_ReadEscapeState|
000019b0  22 0d 0b 22 10 20 42 43  53 20 20 20 20 20 65 6e  |"..". BCS     en|
000019c0  64 0d 0b 2c 06 20 3a 0d  0b 36 1d 20 4c 44 52 20  |d..,. :..6. LDR |
000019d0  20 20 20 20 52 30 2c 20  61 64 72 5f 65 6e 64 5f  |    R0, adr_end_|
000019e0  67 61 6d 65 0d 0b 40 14  20 4c 44 52 20 20 20 20  |game..@. LDR    |
000019f0  20 52 30 2c 5b 52 30 5d  0d 0b 4a 13 20 43 4d 50  | R0,[R0]..J. CMP|
00001a00  20 20 20 20 20 52 30 2c  20 23 30 0d 0b 54 10 20  |     R0, #0..T. |
00001a10  42 4e 45 20 20 20 20 20  65 6e 64 0d 0b 5e 06 20  |BNE     end..^. |
00001a20  3a 0d 0b 68 14 20 4c 44  52 20 20 20 20 20 52 30  |:..h. LDR     R0|
00001a30  2c 20 72 6e 64 0d 0b 72  1d 20 41 44 44 20 20 20  |, rnd..r. ADD   |
00001a40  20 20 52 30 2c 52 30 2c  52 30 2c 20 52 4f 52 20  |  R0,R0,R0, ROR |
00001a50  23 31 0d 0b 7c 19 20 80  20 20 20 20 20 52 31 2c  |#1..|. .     R1,|
00001a60  52 30 2c 20 23 32 35 35  3c 3c 38 0d 0b 86 14 20  |R0, #255<<8.... |
00001a70  4c 44 52 20 20 20 20 20  52 31 2c 5b 52 31 5d 0d  |LDR     R1,[R1].|
00001a80  0b 90 13 20 82 20 20 20  20 20 52 30 2c 52 30 2c  |... .     R0,R0,|
00001a90  52 31 0d 0b 9a 14 20 53  54 52 20 20 20 20 20 52  |R1.... STR     R|
00001aa0  30 2c 20 72 6e 64 0d 0b  a4 06 20 3a 0d 0b ae 17  |0, rnd.... :....|
00001ab0  20 42 20 20 20 20 20 20  20 74 6f 74 61 6c 5f 6c  | B       total_l|
00001ac0  6f 6f 70 0d 0b b8 06 20  3a 0d 0b c2 09 20 2e 65  |oop.... :.... .e|
00001ad0  6e 64 0d 0b cc 06 20 3a  0d 0b d6 15 a4 62 6f 72  |nd.... :.....bor|
00001ae0  64 65 72 63 6f 6c 28 30  2c 30 2c 30 29 0d 0b e0  |dercol(0,0,0)...|
00001af0  1c 20 4c 44 52 20 20 20  20 20 52 33 2c 20 73 63  |. LDR     R3, sc|
00001b00  72 65 65 6e 5f 62 61 6e  6b 0d 0b ea 14 20 82 20  |reen_bank.... . |
00001b10  20 20 20 20 52 33 2c 52  33 2c 20 23 31 0d 0b f4  |    R3,R3, #1...|
00001b20  1c 20 53 54 52 20 20 20  20 20 52 33 2c 20 73 63  |. STR     R3, sc|
00001b30  72 65 65 6e 5f 62 61 6e  6b 0d 0b fe 16 20 52 53  |reen_bank.... RS|
00001b40  42 20 20 20 20 20 52 31  2c 52 33 2c 20 23 32 0d  |B     R1,R3, #2.|
00001b50  0c 08 13 20 43 4d 50 20  20 20 20 20 52 33 2c 20  |... CMP     R3, |
00001b60  23 30 0d 0c 12 18 20 4c  44 52 45 51 20 20 20 52  |#0.... LDREQ   R|
00001b70  33 2c 20 73 63 72 65 65  6e 31 0d 0c 1c 18 20 4c  |3, screen1.... L|
00001b80  44 52 4e 45 20 20 20 52  33 2c 20 73 63 72 65 65  |DRNE   R3, scree|
00001b90  6e 32 0d 0c 26 17 20 53  54 52 20 20 20 20 20 52  |n2..&. STR     R|
00001ba0  33 2c 20 73 63 72 65 65  6e 0d 0c 30 19 20 42 4c  |3, screen..0. BL|
00001bb0  20 20 20 20 20 20 63 6c  65 61 72 5f 73 63 72 65  |      clear_scre|
00001bc0  65 6e 0d 0c 3a 06 20 3a  0d 0c 44 14 20 4d 4f 56  |en..:. :..D. MOV|
00001bd0  20 20 20 20 20 52 30 2c  20 23 31 36 0d 0c 4e 1e  |     R0, #16..N.|
00001be0  20 41 44 52 20 20 20 20  20 52 31 2c 20 76 73 79  | ADR     R1, vsy|
00001bf0  6e 63 5f 63 6f 75 6e 74  65 72 0d 0c 58 13 20 4d  |nc_counter..X. M|
00001c00  4f 56 20 20 20 20 20 52  32 2c 20 23 31 0d 0c 62  |OV     R2, #1..b|
00001c10  19 20 53 57 49 20 20 20  20 20 22 4f 53 5f 52 65  |. SWI     "OS_Re|
00001c20  6c 65 61 73 65 22 0d 0c  6c 06 20 3a 0d 0c 76 14  |lease"..l. :..v.|
00001c30  20 4d 4f 56 20 20 20 20  20 52 30 2c 20 23 31 33  | MOV     R0, #13|
00001c40  0d 0c 80 13 20 4d 4f 56  20 20 20 20 20 52 31 2c  |.... MOV     R1,|
00001c50  20 23 34 0d 0c 8a 16 20  53 57 49 20 20 20 20 20  | #4.... SWI     |
00001c60  22 4f 53 5f 42 79 74 65  22 0d 0c 94 06 20 3a 0d  |"OS_Byte".... :.|
00001c70  0c 9e 1d 20 4c 44 4d 46  44 20 20 20 52 31 33 21  |... LDMFD   R13!|
00001c80  2c 7b 52 30 2d 52 31 32  2c 50 43 7d 0d 0c a8 06  |,{R0-R12,PC}....|
00001c90  20 3a 0d 0c b2 12 20 2e  61 64 72 5f 65 6e 64 5f  | :.... .adr_end_|
00001ca0  67 61 6d 65 0d 0c bc 15  20 45 51 55 44 20 20 20  |game.... EQUD   |
00001cb0  20 65 6e 64 5f 67 61 6d  65 0d 0c c6 06 20 3a 0d  | end_game.... :.|
00001cc0  0c d0 0c 20 2e 73 63 72  65 65 6e 0d 0c da 0e 20  |... .screen.... |
00001cd0  45 51 55 44 20 20 20 20  30 0d 0c e4 11 20 2e 73  |EQUD    0.... .s|
00001ce0  63 72 65 65 6e 73 74 6f  72 65 0d 0c ee 19 20 45  |creenstore.... E|
00001cf0  51 55 44 20 20 20 20 73  63 72 65 65 6e 73 74 6f  |QUD    screensto|
00001d00  72 65 25 0d 0c f8 10 20  2e 73 63 72 65 65 6e 62  |re%.... .screenb|
00001d10  61 6e 6b 0d 0d 02 0e 20  45 51 55 44 20 20 20 20  |ank.... EQUD    |
00001d20  30 0d 0d 0c 0d 20 2e 73  63 72 65 65 6e 31 0d 0d  |0.... .screen1..|
00001d30  16 0e 20 45 51 55 44 20  20 20 20 30 0d 0d 20 0d  |.. EQUD    0.. .|
00001d40  20 2e 73 63 72 65 65 6e  32 0d 0d 2a 0e 20 45 51  | .screen2..*. EQ|
00001d50  55 44 20 20 20 20 30 0d  0d 34 0e 20 2e 76 64 75  |UD    0..4. .vdu|
00001d60  5f 76 61 72 73 0d 0d 3e  2c 20 45 51 55 44 20 20  |_vars..>, EQUD  |
00001d70  20 20 31 34 39 20 20 20  20 20 20 20 20 20 20 20  |  149           |
00001d80  20 20 20 20 20 20 20 3b  20 76 64 75 20 64 61 74  |       ; vdu dat|
00001d90  61 0d 0d 48 0f 20 45 51  55 44 20 20 20 20 2d 31  |a..H. EQUD    -1|
00001da0  0d 0d 52 11 20 2e 73 63  72 65 65 6e 5f 73 69 7a  |..R. .screen_siz|
00001db0  65 0d 0d 5c 13 20 45 51  55 44 20 20 20 20 26 31  |e..\. EQUD    &1|
00001dc0  34 30 30 30 0d 0d 66 11  20 2e 73 63 72 65 65 6e  |4000..f. .screen|
00001dd0  5f 62 61 6e 6b 0d 0d 70  0e 20 45 51 55 44 20 20  |_bank..p. EQUD  |
00001de0  20 20 31 0d 0d 7a 06 20  3a 0d 0d 84 1a 20 2e 61  |  1..z. :.... .a|
00001df0  64 72 5f 65 78 70 6c 6f  73 69 6f 6e 5f 73 70 72  |dr_explosion_spr|
00001e00  61 79 32 0d 0d 8e 1c 20  45 51 55 44 20 20 20 20  |ay2.... EQUD    |
00001e10  65 78 70 6c 6f 73 69 6f  6e 5f 73 70 72 61 79 0d  |explosion_spray.|
00001e20  0d 98 06 20 3a 0d 0d a2  0e 20 2e 77 69 70 65 5f  |... :.... .wipe_|
00001e30  61 6c 6c 0d 0d ac 1e 20  53 54 4d 46 44 20 20 20  |all.... STMFD   |
00001e40  52 31 33 21 2c 7b 52 30  2d 52 31 32 2c 52 31 34  |R13!,{R0-R12,R14|
00001e50  7d 0d 0d b6 06 20 3a 0d  0d c0 1a 20 4c 44 52 20  |}.... :.... LDR |
00001e60  20 20 20 20 52 39 2c 20  61 64 72 5f 73 6c 69 73  |    R9, adr_slis|
00001e70  74 0d 0d ca 0d 20 2e 77  73 6c 6f 6f 70 31 0d 0d  |t.... .wsloop1..|
00001e80  d4 17 20 4c 44 4d 49 41  20 20 20 52 39 2c 7b 52  |.. LDMIA   R9,{R|
00001e90  35 2d 52 38 7d 0d 0d de  06 20 3a 0d 0d e8 1a 20  |5-R8}.... :.... |
00001ea0  4d 4f 56 20 20 20 20 20  52 31 2c 52 36 2c 20 4c  |MOV     R1,R6, L|
00001eb0  53 52 20 23 32 0d 0d f2  1a 20 4d 4f 56 20 20 20  |SR #2.... MOV   |
00001ec0  20 20 52 32 2c 52 37 2c  20 4c 53 52 20 23 32 0d  |  R2,R7, LSR #2.|
00001ed0  0d fc 06 20 3a 0d 0e 06  13 20 43 4d 50 20 20 20  |... :.... CMP   |
00001ee0  20 20 52 35 2c 20 23 31  0d 0e 10 16 20 53 55 42  |  R5, #1.... SUB|
00001ef0  45 51 20 20 20 52 31 2c  52 31 2c 20 23 34 0d 0e  |EQ   R1,R1, #4..|
00001f00  1a 1b 20 42 4c 45 51 20  20 20 20 66 69 6c 6c 5f  |.. BLEQ    fill_|
00001f10  66 69 6c 6c 5f 32 30 31  36 0d 0e 24 21 20 42 45  |fill_2016..$! BE|
00001f20  51 20 20 20 20 20 77 69  70 65 5f 65 6e 64 5f 73  |Q     wipe_end_s|
00001f30  70 72 69 74 65 5f 6c 6f  6f 70 0d 0e 2e 06 20 3a  |prite_loop.... :|
00001f40  0d 0e 38 13 20 43 4d 50  20 20 20 20 20 52 35 2c  |..8. CMP     R5,|
00001f50  20 23 32 0d 0e 42 16 20  53 55 42 45 51 20 20 20  | #2..B. SUBEQ   |
00001f60  52 31 2c 52 31 2c 20 23  34 0d 0e 4c 1b 20 42 4c  |R1,R1, #4..L. BL|
00001f70  45 51 20 20 20 20 66 69  6c 6c 5f 66 69 6c 6c 5f  |EQ    fill_fill_|
00001f80  32 30 31 36 0d 0e 56 21  20 42 45 51 20 20 20 20  |2016..V! BEQ    |
00001f90  20 77 69 70 65 5f 65 6e  64 5f 73 70 72 69 74 65  | wipe_end_sprite|
00001fa0  5f 6c 6f 6f 70 0d 0e 60  06 20 3a 0d 0e 6a 13 20  |_loop..`. :..j. |
00001fb0  43 4d 50 20 20 20 20 20  52 35 2c 20 23 33 0d 0e  |CMP     R5, #3..|
00001fc0  74 17 20 42 4c 54 20 20  20 20 20 6e 6f 74 5f 61  |t. BLT     not_a|
00001fd0  5f 31 32 31 32 0d 0e 7e  14 20 43 4d 50 20 20 20  |_1212..~. CMP   |
00001fe0  20 20 52 35 2c 20 23 31  32 0d 0e 88 17 20 42 47  |  R5, #12.... BG|
00001ff0  54 20 20 20 20 20 6e 6f  74 5f 61 5f 31 32 31 32  |T     not_a_1212|
00002000  0d 0e 92 1b 20 42 4c 20  20 20 20 20 20 66 69 6c  |.... BL      fil|
00002010  6c 5f 66 69 6c 6c 5f 31  32 31 32 0d 0e 9c 21 20  |l_fill_1212...! |
00002020  42 20 20 20 20 20 20 20  77 69 70 65 5f 65 6e 64  |B       wipe_end|
00002030  5f 73 70 72 69 74 65 5f  6c 6f 6f 70 0d 0e a6 10  |_sprite_loop....|
00002040  20 2e 6e 6f 74 5f 61 5f  31 32 31 32 0d 0e b0 06  | .not_a_1212....|
00002050  20 3a 0d 0e ba 14 20 43  4d 50 20 20 20 20 20 52  | :.... CMP     R|
00002060  35 2c 20 23 31 33 0d 0e  c4 1b 20 42 4c 45 51 20  |5, #13.... BLEQ |
00002070  20 20 20 66 69 6c 6c 5f  66 69 6c 6c 5f 31 32 36  |   fill_fill_126|
00002080  34 0d 0e ce 06 20 3a 0d  0e d8 14 20 43 4d 50 20  |4.... :.... CMP |
00002090  20 20 20 20 52 35 2c 20  23 31 34 0d 0e e2 1b 20  |    R5, #14.... |
000020a0  42 4c 45 51 20 20 20 20  66 69 6c 6c 5f 66 69 6c  |BLEQ    fill_fil|
000020b0  6c 5f 31 32 30 38 0d 0e  ec 14 20 43 4d 50 20 20  |l_1208.... CMP  |
000020c0  20 20 20 52 35 2c 20 23  31 35 0d 0e f6 1b 20 42  |   R5, #15.... B|
000020d0  4c 45 51 20 20 20 20 66  69 6c 6c 5f 66 69 6c 6c  |LEQ    fill_fill|
000020e0  5f 31 32 30 38 0d 0f 00  06 20 3a 0d 0f 0a 1a 20  |_1208.... :.... |
000020f0  2e 77 69 70 65 5f 65 6e  64 5f 73 70 72 69 74 65  |.wipe_end_sprite|
00002100  5f 6c 6f 6f 70 0d 0f 14  17 20 41 44 44 20 20 20  |_loop.... ADD   |
00002110  20 20 52 39 2c 52 39 2c  20 23 31 36 0d 0f 1e 13  |  R9,R9, #16....|
00002120  20 43 4d 50 20 20 20 20  20 52 35 2c 20 23 30 0d  | CMP     R5, #0.|
00002130  0f 28 14 20 42 47 45 20  20 20 20 20 77 73 6c 6f  |.(. BGE     wslo|
00002140  6f 70 31 0d 0f 32 06 20  3a 0d 0f 3c 1a 20 4c 44  |op1..2. :..<. LD|
00002150  52 20 20 20 20 20 52 39  2c 20 61 64 72 5f 63 6c  |R     R9, adr_cl|
00002160  69 73 74 0d 0f 46 0d 20  2e 77 63 6c 6f 6f 70 31  |ist..F. .wcloop1|
00002170  0d 0f 50 17 20 4c 44 4d  49 41 20 20 20 52 39 2c  |..P. LDMIA   R9,|
00002180  7b 52 30 2d 52 37 7d 0d  0f 5a 1a 20 4d 4f 56 20  |{R0-R7}..Z. MOV |
00002190  20 20 20 20 52 31 2c 52  31 2c 20 41 53 52 20 23  |    R1,R1, ASR #|
000021a0  34 0d 0f 64 1a 20 4d 4f  56 20 20 20 20 20 52 32  |4..d. MOV     R2|
000021b0  2c 52 32 2c 20 41 53 52  20 23 34 0d 0f 6e 13 20  |,R2, ASR #4..n. |
000021c0  43 4d 50 20 20 20 20 20  52 30 2c 20 23 30 0d 0f  |CMP     R0, #0..|
000021d0  78 17 20 42 45 51 20 20  20 20 20 77 63 65 6c 6c  |x. BEQ     wcell|
000021e0  5f 73 6b 69 70 0d 0f 82  13 20 43 4d 50 20 20 20  |_skip.... CMP   |
000021f0  20 20 52 30 2c 20 23 31  0d 0f 8c 1b 20 42 4c 45  |  R0, #1.... BLE|
00002200  51 20 20 20 20 66 69 6c  6c 5f 66 69 6c 6c 5f 30  |Q    fill_fill_0|
00002210  31 30 31 0d 0f 96 17 20  42 45 51 20 20 20 20 20  |101.... BEQ     |
00002220  77 63 65 6c 6c 5f 73 6b  69 70 0d 0f a0 13 20 43  |wcell_skip.... C|
00002230  4d 50 20 20 20 20 20 52  30 2c 20 23 32 0d 0f aa  |MP     R0, #2...|
00002240  16 20 53 55 42 45 51 20  20 20 52 31 2c 52 31 2c  |. SUBEQ   R1,R1,|
00002250  20 23 32 0d 0f b4 16 20  53 55 42 45 51 20 20 20  | #2.... SUBEQ   |
00002260  52 32 2c 52 32 2c 20 23  32 0d 0f be 1b 20 42 4c  |R2,R2, #2.... BL|
00002270  45 51 20 20 20 20 66 69  6c 6c 5f 66 69 6c 6c 5f  |EQ    fill_fill_|
00002280  30 38 30 34 0d 0f c8 17  20 42 45 51 20 20 20 20  |0804.... BEQ    |
00002290  20 77 63 65 6c 6c 5f 73  6b 69 70 0d 0f d2 13 20  | wcell_skip.... |
000022a0  43 4d 50 20 20 20 20 20  52 30 2c 20 23 33 0d 0f  |CMP     R0, #3..|
000022b0  dc 16 20 53 55 42 45 51  20 20 20 52 31 2c 52 31  |.. SUBEQ   R1,R1|
000022c0  2c 20 23 32 0d 0f e6 16  20 53 55 42 45 51 20 20  |, #2.... SUBEQ  |
000022d0  20 52 32 2c 52 32 2c 20  23 32 0d 0f f0 1b 20 42  | R2,R2, #2.... B|
000022e0  4c 45 51 20 20 20 20 66  69 6c 6c 5f 66 69 6c 6c  |LEQ    fill_fill|
000022f0  5f 30 38 30 34 0d 0f fa  17 20 42 45 51 20 20 20  |_0804.... BEQ   |
00002300  20 20 77 63 65 6c 6c 5f  73 6b 69 70 0d 10 04 13  |  wcell_skip....|
00002310  20 43 4d 50 20 20 20 20  20 52 30 2c 20 23 34 0d  | CMP     R0, #4.|
00002320  10 0e 16 20 53 55 42 45  51 20 20 20 52 31 2c 52  |... SUBEQ   R1,R|
00002330  31 2c 20 23 32 0d 10 18  16 20 53 55 42 45 51 20  |1, #2.... SUBEQ |
00002340  20 20 52 32 2c 52 32 2c  20 23 32 0d 10 22 1b 20  |  R2,R2, #2..". |
00002350  42 4c 45 51 20 20 20 20  66 69 6c 6c 5f 66 69 6c  |BLEQ    fill_fil|
00002360  6c 5f 30 38 30 34 0d 10  2c 17 20 42 45 51 20 20  |l_0804..,. BEQ  |
00002370  20 20 20 77 63 65 6c 6c  5f 73 6b 69 70 0d 10 36  |   wcell_skip..6|
00002380  13 20 43 4d 50 20 20 20  20 20 52 30 2c 20 23 35  |. CMP     R0, #5|
00002390  0d 10 40 16 20 53 55 42  45 51 20 20 20 52 31 2c  |..@. SUBEQ   R1,|
000023a0  52 31 2c 20 23 32 0d 10  4a 16 20 53 55 42 45 51  |R1, #2..J. SUBEQ|
000023b0  20 20 20 52 32 2c 52 32  2c 20 23 32 0d 10 54 1b  |   R2,R2, #2..T.|
000023c0  20 42 4c 45 51 20 20 20  20 66 69 6c 6c 5f 66 69  | BLEQ    fill_fi|
000023d0  6c 6c 5f 30 38 30 34 0d  10 5e 17 20 42 45 51 20  |ll_0804..^. BEQ |
000023e0  20 20 20 20 77 63 65 6c  6c 5f 73 6b 69 70 0d 10  |    wcell_skip..|
000023f0  68 13 20 43 4d 50 20 20  20 20 20 52 30 2c 20 23  |h. CMP     R0, #|
00002400  36 0d 10 72 16 20 53 55  42 45 51 20 20 20 52 31  |6..r. SUBEQ   R1|
00002410  2c 52 31 2c 20 23 34 0d  10 7c 16 20 53 55 42 45  |,R1, #4..|. SUBE|
00002420  51 20 20 20 52 32 2c 52  32 2c 20 23 34 0d 10 86  |Q   R2,R2, #4...|
00002430  1b 20 42 4c 45 51 20 20  20 20 66 69 6c 6c 5f 66  |. BLEQ    fill_f|
00002440  69 6c 6c 5f 31 32 30 38  0d 10 90 17 20 42 45 51  |ill_1208.... BEQ|
00002450  20 20 20 20 20 77 63 65  6c 6c 5f 73 6b 69 70 0d  |     wcell_skip.|
00002460  10 9a 13 20 43 4d 50 20  20 20 20 20 52 30 2c 20  |... CMP     R0, |
00002470  23 37 0d 10 a4 16 20 53  55 42 45 51 20 20 20 52  |#7.... SUBEQ   R|
00002480  31 2c 52 31 2c 20 23 32  0d 10 ae 16 20 53 55 42  |1,R1, #2.... SUB|
00002490  45 51 20 20 20 52 32 2c  52 32 2c 20 23 32 0d 10  |EQ   R2,R2, #2..|
000024a0  b8 1b 20 42 4c 45 51 20  20 20 20 66 69 6c 6c 5f  |.. BLEQ    fill_|
000024b0  66 69 6c 6c 5f 30 38 30  34 0d 10 c2 17 20 42 45  |fill_0804.... BE|
000024c0  51 20 20 20 20 20 77 63  65 6c 6c 5f 73 6b 69 70  |Q     wcell_skip|
000024d0  0d 10 cc 13 20 43 4d 50  20 20 20 20 20 52 30 2c  |.... CMP     R0,|
000024e0  20 23 38 0d 10 d6 16 20  53 55 42 45 51 20 20 20  | #8.... SUBEQ   |
000024f0  52 31 2c 52 31 2c 20 23  32 0d 10 e0 16 20 53 55  |R1,R1, #2.... SU|
00002500  42 45 51 20 20 20 52 32  2c 52 32 2c 20 23 32 0d  |BEQ   R2,R2, #2.|
00002510  10 ea 1b 20 42 4c 45 51  20 20 20 20 66 69 6c 6c  |... BLEQ    fill|
00002520  5f 66 69 6c 6c 5f 30 38  30 34 0d 10 f4 17 20 42  |_fill_0804.... B|
00002530  45 51 20 20 20 20 20 77  63 65 6c 6c 5f 73 6b 69  |EQ     wcell_ski|
00002540  70 0d 10 fe 13 20 43 4d  50 20 20 20 20 20 52 30  |p.... CMP     R0|
00002550  2c 20 23 39 0d 11 08 16  20 53 55 42 45 51 20 20  |, #9.... SUBEQ  |
00002560  20 52 31 2c 52 31 2c 20  23 32 0d 11 12 16 20 53  | R1,R1, #2.... S|
00002570  55 42 45 51 20 20 20 52  32 2c 52 32 2c 20 23 32  |UBEQ   R2,R2, #2|
00002580  0d 11 1c 1b 20 42 4c 45  51 20 20 20 20 66 69 6c  |.... BLEQ    fil|
00002590  6c 5f 66 69 6c 6c 5f 30  38 30 34 0d 11 26 17 20  |l_fill_0804..&. |
000025a0  42 45 51 20 20 20 20 20  77 63 65 6c 6c 5f 73 6b  |BEQ     wcell_sk|
000025b0  69 70 0d 11 30 14 20 43  4d 50 20 20 20 20 20 52  |ip..0. CMP     R|
000025c0  30 2c 20 23 31 30 0d 11  3a 16 20 53 55 42 45 51  |0, #10..:. SUBEQ|
000025d0  20 20 20 52 31 2c 52 31  2c 20 23 34 0d 11 44 16  |   R1,R1, #4..D.|
000025e0  20 53 55 42 45 51 20 20  20 52 32 2c 52 32 2c 20  | SUBEQ   R2,R2, |
000025f0  23 34 0d 11 4e 1b 20 42  4c 45 51 20 20 20 20 66  |#4..N. BLEQ    f|
00002600  69 6c 6c 5f 66 69 6c 6c  5f 31 32 30 38 0d 11 58  |ill_fill_1208..X|
00002610  17 20 42 45 51 20 20 20  20 20 77 63 65 6c 6c 5f  |. BEQ     wcell_|
00002620  73 6b 69 70 0d 11 62 14  20 43 4d 50 20 20 20 20  |skip..b. CMP    |
00002630  20 52 30 2c 20 23 31 31  0d 11 6c 16 20 53 55 42  | R0, #11..l. SUB|
00002640  45 51 20 20 20 52 31 2c  52 31 2c 20 23 38 0d 11  |EQ   R1,R1, #8..|
00002650  76 16 20 53 55 42 45 51  20 20 20 52 32 2c 52 32  |v. SUBEQ   R2,R2|
00002660  2c 20 23 38 0d 11 80 1b  20 42 4c 45 51 20 20 20  |, #8.... BLEQ   |
00002670  20 66 69 6c 6c 5f 66 69  6c 6c 5f 32 30 31 36 0d  | fill_fill_2016.|
00002680  11 8a 14 20 43 4d 50 20  20 20 20 20 52 30 2c 20  |... CMP     R0, |
00002690  23 31 32 0d 11 94 16 20  53 55 42 45 51 20 20 20  |#12.... SUBEQ   |
000026a0  52 31 2c 52 31 2c 20 23  32 0d 11 9e 16 20 53 55  |R1,R1, #2.... SU|
000026b0  42 45 51 20 20 20 52 32  2c 52 32 2c 20 23 32 0d  |BEQ   R2,R2, #2.|
000026c0  11 a8 1b 20 42 4c 45 51  20 20 20 20 66 69 6c 6c  |... BLEQ    fill|
000026d0  5f 66 69 6c 6c 5f 30 38  30 34 0d 11 b2 14 20 43  |_fill_0804.... C|
000026e0  4d 50 20 20 20 20 20 52  30 2c 20 23 31 33 0d 11  |MP     R0, #13..|
000026f0  bc 16 20 53 55 42 45 51  20 20 20 52 31 2c 52 31  |.. SUBEQ   R1,R1|
00002700  2c 20 23 34 0d 11 c6 16  20 53 55 42 45 51 20 20  |, #4.... SUBEQ  |
00002710  20 52 32 2c 52 32 2c 20  23 34 0d 11 d0 1b 20 42  | R2,R2, #4.... B|
00002720  4c 45 51 20 20 20 20 66  69 6c 6c 5f 66 69 6c 6c  |LEQ    fill_fill|
00002730  5f 31 32 30 38 0d 11 da  10 20 2e 77 63 65 6c 6c  |_1208.... .wcell|
00002740  5f 73 6b 69 70 0d 11 e4  17 20 41 44 44 20 20 20  |_skip.... ADD   |
00002750  20 20 52 39 2c 52 39 2c  20 23 33 32 0d 11 ee 13  |  R9,R9, #32....|
00002760  20 43 4d 50 20 20 20 20  20 52 30 2c 20 23 30 0d  | CMP     R0, #0.|
00002770  11 f8 14 20 42 47 45 20  20 20 20 20 77 63 6c 6f  |... BGE     wclo|
00002780  6f 70 31 0d 12 02 06 20  3a 0d 12 0c 1d 20 4c 44  |op1.... :.... LD|
00002790  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 30 2d 52  |MFD   R13!,{R0-R|
000027a0  31 32 2c 50 43 7d 0d 12  16 06 20 3a 0d 12 20 14  |12,PC}.... :.. .|
000027b0  20 2e 75 70 64 61 74 65  5f 73 70 72 69 74 65 73  | .update_sprites|
000027c0  0d 12 2a 1e 20 53 54 4d  46 44 20 20 20 52 31 33  |..*. STMFD   R13|
000027d0  21 2c 7b 52 30 2d 52 31  32 2c 52 31 34 7d 0d 12  |!,{R0-R12,R14}..|
000027e0  34 06 20 3a 0d 12 3e 1a  20 4c 44 52 20 20 20 20  |4. :..>. LDR    |
000027f0  20 52 39 2c 20 61 64 72  5f 73 6c 69 73 74 0d 12  | R9, adr_slist..|
00002800  48 0c 20 2e 73 6c 6f 6f  70 31 0d 12 52 17 20 4c  |H. .sloop1..R. L|
00002810  44 4d 49 41 20 20 20 52  39 2c 7b 52 35 2d 52 38  |DMIA   R9,{R5-R8|
00002820  7d 0d 12 5c 13 20 43 4d  50 20 20 20 20 20 52 35  |}..\. CMP     R5|
00002830  2c 20 23 31 0d 12 66 14  20 42 4c 45 51 20 20 20  |, #1..f. BLEQ   |
00002840  20 70 6c 61 79 65 72 31  0d 12 70 1c 20 42 45 51  | player1..p. BEQ|
00002850  20 20 20 20 20 65 6e 64  5f 73 70 72 69 74 65 5f  |     end_sprite_|
00002860  6c 6f 6f 70 0d 12 7a 13  20 43 4d 50 20 20 20 20  |loop..z. CMP    |
00002870  20 52 35 2c 20 23 32 0d  12 84 14 20 42 4c 45 51  | R5, #2.... BLEQ|
00002880  20 20 20 20 70 6c 61 79  65 72 32 0d 12 8e 1c 20  |    player2.... |
00002890  42 45 51 20 20 20 20 20  65 6e 64 5f 73 70 72 69  |BEQ     end_spri|
000028a0  74 65 5f 6c 6f 6f 70 0d  12 98 13 20 43 4d 50 20  |te_loop.... CMP |
000028b0  20 20 20 20 52 35 2c 20  23 33 0d 12 a2 12 20 42  |    R5, #3.... B|
000028c0  4c 45 51 20 20 20 20 66  6c 61 6d 65 0d 12 ac 1c  |LEQ    flame....|
000028d0  20 42 45 51 20 20 20 20  20 65 6e 64 5f 73 70 72  | BEQ     end_spr|
000028e0  69 74 65 5f 6c 6f 6f 70  0d 12 b6 13 20 43 4d 50  |ite_loop.... CMP|
000028f0  20 20 20 20 20 52 35 2c  20 23 34 0d 12 c0 1a 20  |     R5, #4.... |
00002900  42 4c 45 51 20 20 20 20  77 65 61 70 6f 6e 5f 70  |BLEQ    weapon_p|
00002910  69 73 74 6f 6c 0d 12 ca  1c 20 42 45 51 20 20 20  |istol.... BEQ   |
00002920  20 20 65 6e 64 5f 73 70  72 69 74 65 5f 6c 6f 6f  |  end_sprite_loo|
00002930  70 0d 12 d4 13 20 43 4d  50 20 20 20 20 20 52 35  |p.... CMP     R5|
00002940  2c 20 23 35 0d 12 de 17  20 42 4c 45 51 20 20 20  |, #5.... BLEQ   |
00002950  20 77 65 61 70 6f 6e 5f  67 75 6e 0d 12 e8 1c 20  | weapon_gun.... |
00002960  42 45 51 20 20 20 20 20  65 6e 64 5f 73 70 72 69  |BEQ     end_spri|
00002970  74 65 5f 6c 6f 6f 70 0d  12 f2 13 20 43 4d 50 20  |te_loop.... CMP |
00002980  20 20 20 20 52 35 2c 20  23 36 0d 12 fc 1a 20 42  |    R5, #6.... B|
00002990  4c 45 51 20 20 20 20 77  65 61 70 6f 6e 5f 6d 6f  |LEQ    weapon_mo|
000029a0  72 74 61 72 0d 13 06 1c  20 42 45 51 20 20 20 20  |rtar.... BEQ    |
000029b0  20 65 6e 64 5f 73 70 72  69 74 65 5f 6c 6f 6f 70  | end_sprite_loop|
000029c0  0d 13 10 13 20 43 4d 50  20 20 20 20 20 52 35 2c  |.... CMP     R5,|
000029d0  20 23 37 0d 13 1a 1a 20  42 4c 45 51 20 20 20 20  | #7.... BLEQ    |
000029e0  77 65 61 70 6f 6e 5f 68  6f 6d 69 6e 67 0d 13 24  |weapon_homing..$|
000029f0  1c 20 42 45 51 20 20 20  20 20 65 6e 64 5f 73 70  |. BEQ     end_sp|
00002a00  72 69 74 65 5f 6c 6f 6f  70 0d 13 2e 13 20 43 4d  |rite_loop.... CM|
00002a10  50 20 20 20 20 20 52 35  2c 20 23 38 0d 13 38 1b  |P     R5, #8..8.|
00002a20  20 42 4c 45 51 20 20 20  20 77 65 61 70 6f 6e 5f  | BLEQ    weapon_|
00002a30  73 65 65 6b 69 6e 67 0d  13 42 1c 20 42 45 51 20  |seeking..B. BEQ |
00002a40  20 20 20 20 65 6e 64 5f  73 70 72 69 74 65 5f 6c  |    end_sprite_l|
00002a50  6f 6f 70 0d 13 4c 13 20  43 4d 50 20 20 20 20 20  |oop..L. CMP     |
00002a60  52 35 2c 20 23 39 0d 13  56 1c 20 42 4c 45 51 20  |R5, #9..V. BLEQ |
00002a70  20 20 20 77 65 61 70 6f  6e 5f 76 65 72 74 69 63  |   weapon_vertic|
00002a80  61 6c 0d 13 60 1c 20 42  45 51 20 20 20 20 20 65  |al..`. BEQ     e|
00002a90  6e 64 5f 73 70 72 69 74  65 5f 6c 6f 6f 70 0d 13  |nd_sprite_loop..|
00002aa0  6a 14 20 43 4d 50 20 20  20 20 20 52 35 2c 20 23  |j. CMP     R5, #|
00002ab0  31 30 0d 13 74 1b 20 42  4c 45 51 20 20 20 20 77  |10..t. BLEQ    w|
00002ac0  65 61 70 6f 6e 5f 74 68  72 6f 77 65 72 0d 13 7e  |eapon_thrower..~|
00002ad0  1c 20 42 45 51 20 20 20  20 20 65 6e 64 5f 73 70  |. BEQ     end_sp|
00002ae0  72 69 74 65 5f 6c 6f 6f  70 0d 13 88 14 20 43 4d  |rite_loop.... CM|
00002af0  50 20 20 20 20 20 52 35  2c 20 23 31 31 0d 13 92  |P     R5, #11...|
00002b00  18 20 42 4c 45 51 20 20  20 20 77 65 61 70 6f 6e  |. BLEQ    weapon|
00002b10  5f 62 6f 6d 62 0d 13 9c  1c 20 42 45 51 20 20 20  |_bomb.... BEQ   |
00002b20  20 20 65 6e 64 5f 73 70  72 69 74 65 5f 6c 6f 6f  |  end_sprite_loo|
00002b30  70 0d 13 a6 14 20 43 4d  50 20 20 20 20 20 52 35  |p.... CMP     R5|
00002b40  2c 20 23 31 32 0d 13 b0  1b 20 42 4c 45 51 20 20  |, #12.... BLEQ  |
00002b50  20 20 77 65 61 70 6f 6e  5f 63 6c 75 73 74 65 72  |  weapon_cluster|
00002b60  0d 13 ba 1c 20 42 45 51  20 20 20 20 20 65 6e 64  |.... BEQ     end|
00002b70  5f 73 70 72 69 74 65 5f  6c 6f 6f 70 0d 13 c4 14  |_sprite_loop....|
00002b80  20 43 4d 50 20 20 20 20  20 52 35 2c 20 23 31 33  | CMP     R5, #13|
00002b90  0d 13 ce 11 20 42 4c 45  51 20 20 20 20 64 6f 6f  |.... BLEQ    doo|
00002ba0  72 0d 13 d8 1c 20 42 45  51 20 20 20 20 20 65 6e  |r.... BEQ     en|
00002bb0  64 5f 73 70 72 69 74 65  5f 6c 6f 6f 70 0d 13 e2  |d_sprite_loop...|
00002bc0  14 20 43 4d 50 20 20 20  20 20 52 35 2c 20 23 31  |. CMP     R5, #1|
00002bd0  34 0d 13 ec 13 20 42 4c  45 51 20 20 20 20 73 77  |4.... BLEQ    sw|
00002be0  69 74 63 68 0d 13 f6 1c  20 42 45 51 20 20 20 20  |itch.... BEQ    |
00002bf0  20 65 6e 64 5f 73 70 72  69 74 65 5f 6c 6f 6f 70  | end_sprite_loop|
00002c00  0d 14 00 14 20 43 4d 50  20 20 20 20 20 52 35 2c  |.... CMP     R5,|
00002c10  20 23 31 35 0d 14 0a 14  20 42 4c 45 51 20 20 20  | #15.... BLEQ   |
00002c20  20 67 75 6e 5f 67 75 6e  0d 14 14 15 20 2e 65 6e  | gun_gun.... .en|
00002c30  64 5f 73 70 72 69 74 65  5f 6c 6f 6f 70 0d 14 1e  |d_sprite_loop...|
00002c40  18 20 53 54 4d 49 41 20  20 20 52 39 21 2c 7b 52  |. STMIA   R9!,{R|
00002c50  35 2d 52 38 7d 0d 14 28  13 20 43 4d 50 20 20 20  |5-R8}..(. CMP   |
00002c60  20 20 52 35 2c 20 23 30  0d 14 32 13 20 42 47 45  |  R5, #0..2. BGE|
00002c70  20 20 20 20 20 73 6c 6f  6f 70 31 0d 14 3c 06 20  |     sloop1..<. |
00002c80  3a 0d 14 46 1d 20 4c 44  4d 46 44 20 20 20 52 31  |:..F. LDMFD   R1|
00002c90  33 21 2c 7b 52 30 2d 52  31 32 2c 50 43 7d 0d 14  |3!,{R0-R12,PC}..|
00002ca0  50 06 20 3a 0d 14 5a 0f  20 2e 70 31 5f 77 65 61  |P. :..Z. .p1_wea|
00002cb0  70 6f 6e 0d 14 64 0e 20  45 51 55 44 20 20 20 20  |pon..d. EQUD    |
00002cc0  32 0d 14 6e 0f 20 2e 70  32 5f 77 65 61 70 6f 6e  |2..n. .p2_weapon|
00002cd0  0d 14 78 0e 20 45 51 55  44 20 20 20 20 32 0d 14  |..x. EQUD    2..|
00002ce0  82 06 20 3a 0d 14 8c 10  20 2e 72 65 61 64 5f 70  |.. :.... .read_p|
00002cf0  6f 69 6e 74 0d 14 96 1e  20 53 54 4d 46 44 20 20  |oint.... STMFD  |
00002d00  20 52 31 33 21 2c 7b 52  31 2d 52 31 32 2c 52 31  | R13!,{R1-R12,R1|
00002d10  34 7d 0d 14 a0 06 20 3a  0d 14 aa 18 20 52 53 42  |4}.... :.... RSB|
00002d20  20 20 20 20 20 52 32 2c  52 32 2c 20 23 32 35 36  |     R2,R2, #256|
00002d30  0d 14 b4 06 20 3a 0d 14  be 35 20 4d 4f 56 20 20  |.... :...5 MOV  |
00002d40  20 20 20 52 37 2c 20 23  78 5f 73 68 69 66 74 20  |   R7, #x_shift |
00002d50  20 20 20 20 20 20 20 20  3b 20 67 65 74 20 73 63  |        ; get sc|
00002d60  72 65 65 6e 20 73 68 69  66 74 73 0d 14 c8 19 20  |reen shifts.... |
00002d70  4d 4f 56 20 20 20 20 20  52 38 2c 20 23 79 5f 73  |MOV     R8, #y_s|
00002d80  68 69 66 74 0d 14 d2 36  20 4c 44 52 20 20 20 20  |hift...6 LDR    |
00002d90  20 52 39 2c 20 73 63 72  65 65 6e 73 74 6f 72 65  | R9, screenstore|
00002da0  20 20 20 20 20 20 3b 20  67 65 74 20 73 63 72 65  |      ; get scre|
00002db0  65 6e 20 61 64 64 72 65  73 73 0d 14 dc 06 20 3a  |en address.... :|
00002dc0  0d 14 e6 18 20 4d 4c 41  20 20 20 20 20 52 39 2c  |.... MLA     R9,|
00002dd0  52 37 2c 52 31 2c 52 39  0d 14 f0 18 20 4d 4c 41  |R7,R1,R9.... MLA|
00002de0  20 20 20 20 20 52 31 2c  52 38 2c 52 32 2c 52 39  |     R1,R8,R2,R9|
00002df0  0d 14 fa 06 20 3a 0d 15  04 14 20 4c 44 52 42 20  |.... :.... LDRB |
00002e00  20 20 20 52 30 2c 5b 52  31 5d 0d 15 0e 06 20 3a  |   R0,[R1].... :|
00002e10  0d 15 18 1d 20 4c 44 4d  46 44 20 20 20 52 31 33  |.... LDMFD   R13|
00002e20  21 2c 7b 52 31 2d 52 31  32 2c 50 43 7d 0d 15 22  |!,{R1-R12,PC}.."|
00002e30  06 20 3a 0d 15 2c 0f 20  2e 61 64 72 5f 63 6c 69  |. :..,. .adr_cli|
00002e40  73 74 0d 15 36 13 20 45  51 55 44 20 20 20 20 63  |st..6. EQUD    c|
00002e50  6c 69 73 74 25 0d 15 40  0f 20 2e 61 64 72 5f 73  |list%..@. .adr_s|
00002e60  6c 69 73 74 0d 15 4a 13  20 45 51 55 44 20 20 20  |list..J. EQUD   |
00002e70  20 73 6c 69 73 74 25 0d  15 54 06 20 3a 0d 15 5e  | slist%..T. :..^|
00002e80  0b 20 2e 66 6c 61 6d 65  0d 15 68 1a 20 53 54 4d  |. .flame..h. STM|
00002e90  46 44 20 20 20 52 31 33  21 2c 7b 52 39 2c 52 31  |FD   R13!,{R9,R1|
00002ea0  34 7d 0d 15 72 06 20 3a  0d 15 7c 16 20 4c 44 52  |4}..r. :..|. LDR|
00002eb0  20 20 20 20 20 52 31 30  2c 20 70 31 5f 78 0d 15  |     R10, p1_x..|
00002ec0  86 16 20 4c 44 52 20 20  20 20 20 52 31 31 2c 20  |.. LDR     R11, |
00002ed0  70 31 5f 79 0d 15 90 1a  20 4d 4f 56 20 20 20 20  |p1_y.... MOV    |
00002ee0  20 52 39 2c 52 36 2c 20  41 53 52 20 23 32 0d 15  | R9,R6, ASR #2..|
00002ef0  9a 16 20 41 44 44 20 20  20 20 20 52 39 2c 52 39  |.. ADD     R9,R9|
00002f00  2c 20 23 38 0d 15 a4 17  20 53 55 42 20 20 20 20  |, #8.... SUB    |
00002f10  20 52 31 30 2c 52 39 2c  52 31 30 0d 15 ae 14 20  | R10,R9,R10.... |
00002f20  43 4d 50 20 20 20 20 20  52 31 30 2c 20 23 30 0d  |CMP     R10, #0.|
00002f30  15 b8 1a 20 42 4c 54 20  20 20 20 20 6e 6f 74 5f  |... BLT     not_|
00002f40  74 6f 75 63 68 65 64 31  31 0d 15 c2 1a 20 43 4d  |touched11.... CM|
00002f50  50 20 20 20 20 20 52 31  30 2c 20 23 78 65 78 74  |P     R10, #xext|
00002f60  25 2b 38 0d 15 cc 1a 20  42 47 54 20 20 20 20 20  |%+8.... BGT     |
00002f70  6e 6f 74 5f 74 6f 75 63  68 65 64 31 31 0d 15 d6  |not_touched11...|
00002f80  1a 20 4d 4f 56 20 20 20  20 20 52 39 2c 52 37 2c  |. MOV     R9,R7,|
00002f90  20 41 53 52 20 23 32 0d  15 e0 17 20 41 44 44 20  | ASR #2.... ADD |
00002fa0  20 20 20 20 52 39 2c 52  39 2c 20 23 31 30 0d 15  |    R9,R9, #10..|
00002fb0  ea 17 20 53 55 42 20 20  20 20 20 52 31 31 2c 52  |.. SUB     R11,R|
00002fc0  39 2c 52 31 31 0d 15 f4  14 20 43 4d 50 20 20 20  |9,R11.... CMP   |
00002fd0  20 20 52 31 31 2c 20 23  30 0d 15 fe 1a 20 42 4c  |  R11, #0.... BL|
00002fe0  54 20 20 20 20 20 6e 6f  74 5f 74 6f 75 63 68 65  |T     not_touche|
00002ff0  64 31 31 0d 16 08 1a 20  43 4d 50 20 20 20 20 20  |d11.... CMP     |
00003000  52 31 31 2c 20 23 79 65  78 74 25 2b 38 0d 16 12  |R11, #yext%+8...|
00003010  1a 20 42 47 54 20 20 20  20 20 6e 6f 74 5f 74 6f  |. BGT     not_to|
00003020  75 63 68 65 64 31 31 0d  16 1c 22 20 4c 44 52 20  |uched11..." LDR |
00003030  20 20 20 20 52 31 2c 20  61 64 72 5f 70 6c 61 79  |    R1, adr_play|
00003040  65 72 31 5f 61 6c 69 76  65 0d 16 26 14 20 4c 44  |er1_alive..&. LD|
00003050  52 20 20 20 20 20 52 30  2c 5b 52 31 5d 0d 16 30  |R     R0,[R1]..0|
00003060  13 20 43 4d 50 20 20 20  20 20 52 30 2c 20 23 31  |. CMP     R0, #1|
00003070  0d 16 3a 1a 20 42 45 51  20 20 20 20 20 6e 6f 74  |..:. BEQ     not|
00003080  5f 74 6f 75 63 68 65 64  31 31 0d 16 44 13 20 4d  |_touched11..D. M|
00003090  4f 56 20 20 20 20 20 52  30 2c 20 23 31 0d 16 4e  |OV     R0, #1..N|
000030a0  14 20 53 54 52 20 20 20  20 20 52 30 2c 5b 52 31  |. STR     R0,[R1|
000030b0  5d 0d 16 58 13 20 4d 4f  56 20 20 20 20 20 52 30  |]..X. MOV     R0|
000030c0  2c 20 23 33 0d 16 62 14  20 4d 56 4e 20 20 20 20  |, #3..b. MVN    |
000030d0  20 52 31 2c 20 23 31 34  0d 16 6c 19 20 4d 4f 56  | R1, #14..l. MOV|
000030e0  20 20 20 20 20 52 32 2c  20 23 73 63 72 65 61 6d  |     R2, #scream|
000030f0  25 0d 16 76 13 20 4d 4f  56 20 20 20 20 20 52 33  |%..v. MOV     R3|
00003100  2c 20 23 30 0d 16 80 1c  20 53 57 49 20 20 20 20  |, #0.... SWI    |
00003110  20 22 53 6f 75 6e 64 5f  43 6f 6e 74 72 6f 6c 22  | "Sound_Control"|
00003120  0d 16 8a 13 20 2e 6e 6f  74 5f 74 6f 75 63 68 65  |.... .not_touche|
00003130  64 31 31 0d 16 94 16 20  4c 44 52 20 20 20 20 20  |d11.... LDR     |
00003140  52 31 30 2c 20 70 32 5f  78 0d 16 9e 16 20 4c 44  |R10, p2_x.... LD|
00003150  52 20 20 20 20 20 52 31  31 2c 20 70 32 5f 79 0d  |R     R11, p2_y.|
00003160  16 a8 1a 20 4d 4f 56 20  20 20 20 20 52 39 2c 52  |... MOV     R9,R|
00003170  36 2c 20 41 53 52 20 23  32 0d 16 b2 16 20 41 44  |6, ASR #2.... AD|
00003180  44 20 20 20 20 20 52 39  2c 52 39 2c 20 23 38 0d  |D     R9,R9, #8.|
00003190  16 bc 17 20 53 55 42 20  20 20 20 20 52 31 30 2c  |... SUB     R10,|
000031a0  52 39 2c 52 31 30 0d 16  c6 14 20 43 4d 50 20 20  |R9,R10.... CMP  |
000031b0  20 20 20 52 31 30 2c 20  23 30 0d 16 d0 1a 20 42  |   R10, #0.... B|
000031c0  4c 54 20 20 20 20 20 6e  6f 74 5f 74 6f 75 63 68  |LT     not_touch|
000031d0  65 64 32 31 0d 16 da 1a  20 43 4d 50 20 20 20 20  |ed21.... CMP    |
000031e0  20 52 31 30 2c 20 23 78  65 78 74 25 2b 38 0d 16  | R10, #xext%+8..|
000031f0  e4 1a 20 42 47 54 20 20  20 20 20 6e 6f 74 5f 74  |.. BGT     not_t|
00003200  6f 75 63 68 65 64 32 31  0d 16 ee 1a 20 4d 4f 56  |ouched21.... MOV|
00003210  20 20 20 20 20 52 39 2c  52 37 2c 20 41 53 52 20  |     R9,R7, ASR |
00003220  23 32 0d 16 f8 17 20 41  44 44 20 20 20 20 20 52  |#2.... ADD     R|
00003230  39 2c 52 39 2c 20 23 31  30 0d 17 02 17 20 53 55  |9,R9, #10.... SU|
00003240  42 20 20 20 20 20 52 31  31 2c 52 39 2c 52 31 31  |B     R11,R9,R11|
00003250  0d 17 0c 14 20 43 4d 50  20 20 20 20 20 52 31 31  |.... CMP     R11|
00003260  2c 20 23 30 0d 17 16 1a  20 42 4c 54 20 20 20 20  |, #0.... BLT    |
00003270  20 6e 6f 74 5f 74 6f 75  63 68 65 64 32 31 0d 17  | not_touched21..|
00003280  20 1a 20 43 4d 50 20 20  20 20 20 52 31 31 2c 20  | . CMP     R11, |
00003290  23 79 65 78 74 25 2b 38  0d 17 2a 1a 20 42 47 54  |#yext%+8..*. BGT|
000032a0  20 20 20 20 20 6e 6f 74  5f 74 6f 75 63 68 65 64  |     not_touched|
000032b0  32 31 0d 17 34 22 20 4c  44 52 20 20 20 20 20 52  |21..4" LDR     R|
000032c0  31 2c 20 61 64 72 5f 70  6c 61 79 65 72 32 5f 61  |1, adr_player2_a|
000032d0  6c 69 76 65 0d 17 3e 14  20 4c 44 52 20 20 20 20  |live..>. LDR    |
000032e0  20 52 30 2c 5b 52 31 5d  0d 17 48 13 20 43 4d 50  | R0,[R1]..H. CMP|
000032f0  20 20 20 20 20 52 30 2c  20 23 31 0d 17 52 1a 20  |     R0, #1..R. |
00003300  42 45 51 20 20 20 20 20  6e 6f 74 5f 74 6f 75 63  |BEQ     not_touc|
00003310  68 65 64 32 31 0d 17 5c  13 20 4d 4f 56 20 20 20  |hed21..\. MOV   |
00003320  20 20 52 30 2c 20 23 31  0d 17 66 14 20 53 54 52  |  R0, #1..f. STR|
00003330  20 20 20 20 20 52 30 2c  5b 52 31 5d 0d 17 70 13  |     R0,[R1]..p.|
00003340  20 4d 4f 56 20 20 20 20  20 52 30 2c 20 23 33 0d  | MOV     R0, #3.|
00003350  17 7a 14 20 4d 56 4e 20  20 20 20 20 52 31 2c 20  |.z. MVN     R1, |
00003360  23 31 34 0d 17 84 19 20  4d 4f 56 20 20 20 20 20  |#14.... MOV     |
00003370  52 32 2c 20 23 73 63 72  65 61 6d 25 0d 17 8e 13  |R2, #scream%....|
00003380  20 4d 4f 56 20 20 20 20  20 52 33 2c 20 23 30 0d  | MOV     R3, #0.|
00003390  17 98 1c 20 53 57 49 20  20 20 20 20 22 53 6f 75  |... SWI     "Sou|
000033a0  6e 64 5f 43 6f 6e 74 72  6f 6c 22 0d 17 a2 13 20  |nd_Control".... |
000033b0  2e 6e 6f 74 5f 74 6f 75  63 68 65 64 32 31 0d 17  |.not_touched21..|
000033c0  ac 06 20 3a 0d 17 b6 16  20 41 44 44 20 20 20 20  |.. :.... ADD    |
000033d0  20 52 38 2c 52 38 2c 20  23 31 0d 17 c0 14 20 43  | R8,R8, #1.... C|
000033e0  4d 50 20 20 20 20 20 52  38 2c 20 23 31 35 0d 17  |MP     R8, #15..|
000033f0  ca 13 20 4d 4f 56 47 54  20 20 20 52 38 2c 20 23  |.. MOVGT   R8, #|
00003400  30 0d 17 d4 13 20 4d 4f  56 20 20 20 20 20 52 30  |0.... MOV     R0|
00003410  2c 20 23 32 0d 17 de 1d  20 41 44 44 20 20 20 20  |, #2.... ADD    |
00003420  20 52 30 2c 52 30 2c 52  38 2c 20 4c 53 52 20 23  | R0,R0,R8, LSR #|
00003430  32 0d 17 e8 1a 20 4d 4f  56 20 20 20 20 20 52 31  |2.... MOV     R1|
00003440  2c 52 36 2c 20 4c 53 52  20 23 32 0d 17 f2 1a 20  |,R6, LSR #2.... |
00003450  4d 4f 56 20 20 20 20 20  52 32 2c 52 37 2c 20 4c  |MOV     R2,R7, L|
00003460  53 52 20 23 32 0d 17 fc  1d 20 42 4c 20 20 20 20  |SR #2.... BL    |
00003470  20 20 70 6c 6f 74 5f 73  70 72 69 74 65 5f 31 32  |  plot_sprite_12|
00003480  31 32 0d 18 06 06 20 3a  0d 18 10 19 20 4c 44 4d  |12.... :.... LDM|
00003490  46 44 20 20 20 52 31 33  21 2c 7b 52 39 2c 50 43  |FD   R13!,{R9,PC|
000034a0  7d 0d 18 1a 06 20 3a 0d  18 24 17 20 2e 61 64 72  |}.... :..$. .adr|
000034b0  5f 70 6c 61 79 65 72 31  5f 61 6c 69 76 65 0d 18  |_player1_alive..|
000034c0  2e 1a 20 45 51 55 44 20  20 20 20 70 6c 61 79 65  |.. EQUD    playe|
000034d0  72 31 5f 61 6c 69 76 65  0d 18 38 17 20 2e 61 64  |r1_alive..8. .ad|
000034e0  72 5f 70 6c 61 79 65 72  32 5f 61 6c 69 76 65 0d  |r_player2_alive.|
000034f0  18 42 1a 20 45 51 55 44  20 20 20 20 70 6c 61 79  |.B. EQUD    play|
00003500  65 72 32 5f 61 6c 69 76  65 0d 18 4c 06 20 3a 0d  |er2_alive..L. :.|
00003510  18 56 0a 20 2e 64 6f 6f  72 0d 18 60 1a 20 53 54  |.V. .door..`. ST|
00003520  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 39 2c 52  |MFD   R13!,{R9,R|
00003530  31 34 7d 0d 18 6a 06 20  3a 0d 18 74 15 20 54 53  |14}..j. :..t. TS|
00003540  54 20 20 20 20 20 52 38  2c 20 23 32 35 36 0d 18  |T     R8, #256..|
00003550  7e 19 20 42 4e 45 20 20  20 20 20 64 6f 6f 72 5f  |~. BNE     door_|
00003560  63 6c 6f 73 69 6e 67 0d  18 88 15 20 80 20 20 20  |closing.... .   |
00003570  20 20 52 30 2c 52 38 2c  20 23 33 31 0d 18 92 14  |  R0,R8, #31....|
00003580  20 43 4d 50 20 20 20 20  20 52 30 2c 20 23 33 30  | CMP     R0, #30|
00003590  0d 18 9c 16 20 41 44 44  4c 54 20 20 20 52 30 2c  |.... ADDLT   R0,|
000035a0  52 30 2c 20 23 31 0d 18  a6 17 20 42 49 43 20 20  |R0, #1.... BIC  |
000035b0  20 20 20 52 38 2c 52 38  2c 20 23 33 31 0d 18 b0  |   R8,R8, #31...|
000035c0  14 20 84 52 20 20 20 20  20 52 38 2c 52 38 2c 52  |. .R     R8,R8,R|
000035d0  30 0d 18 ba 14 20 42 20  20 20 20 20 20 20 64 6f  |0.... B       do|
000035e0  5f 64 6f 6f 72 0d 18 c4  12 20 2e 64 6f 6f 72 5f  |_door.... .door_|
000035f0  63 6c 6f 73 69 6e 67 0d  18 ce 15 20 80 20 20 20  |closing.... .   |
00003600  20 20 52 30 2c 52 38 2c  20 23 33 31 0d 18 d8 13  |  R0,R8, #31....|
00003610  20 43 4d 50 20 20 20 20  20 52 30 2c 20 23 30 0d  | CMP     R0, #0.|
00003620  18 e2 16 20 53 55 42 47  54 20 20 20 52 30 2c 52  |... SUBGT   R0,R|
00003630  30 2c 20 23 31 0d 18 ec  17 20 42 49 43 20 20 20  |0, #1.... BIC   |
00003640  20 20 52 38 2c 52 38 2c  20 23 33 31 0d 18 f6 14  |  R8,R8, #31....|
00003650  20 84 52 20 20 20 20 20  52 38 2c 52 38 2c 52 30  | .R     R8,R8,R0|
00003660  0d 19 00 0d 20 2e 64 6f  5f 64 6f 6f 72 0d 19 0a  |.... .do_door...|
00003670  17 20 84 52 20 20 20 20  20 52 38 2c 52 38 2c 20  |. .R     R8,R8, |
00003680  23 32 35 36 0d 19 14 15  20 4c 44 52 20 20 20 20  |#256.... LDR    |
00003690  20 52 30 2c 20 70 31 5f  78 0d 19 1e 15 20 4c 44  | R0, p1_x.... LD|
000036a0  52 20 20 20 20 20 52 31  2c 20 70 31 5f 79 0d 19  |R     R1, p1_y..|
000036b0  28 1d 20 53 55 42 20 20  20 20 20 52 30 2c 52 36  |(. SUB     R0,R6|
000036c0  2c 52 30 2c 20 41 53 4c  20 23 32 0d 19 32 1d 20  |,R0, ASL #2..2. |
000036d0  53 55 42 20 20 20 20 20  52 31 2c 52 37 2c 52 31  |SUB     R1,R7,R1|
000036e0  2c 20 41 53 4c 20 23 32  0d 19 3c 13 20 43 4d 50  |, ASL #2..<. CMP|
000036f0  20 20 20 20 20 52 30 2c  20 23 30 0d 19 46 16 20  |     R0, #0..F. |
00003700  52 53 42 4c 54 20 20 20  52 30 2c 52 30 2c 20 23  |RSBLT   R0,R0, #|
00003710  30 0d 19 50 13 20 43 4d  50 20 20 20 20 20 52 31  |0..P. CMP     R1|
00003720  2c 20 23 30 0d 19 5a 16  20 52 53 42 4c 54 20 20  |, #0..Z. RSBLT  |
00003730  20 52 31 2c 52 31 2c 20  23 30 0d 19 64 15 20 41  | R1,R1, #0..d. A|
00003740  44 44 20 20 20 20 20 52  30 2c 52 30 2c 52 31 0d  |DD     R0,R0,R1.|
00003750  19 6e 15 20 43 4d 50 20  20 20 20 20 52 30 2c 20  |.n. CMP     R0, |
00003760  23 31 32 38 0d 19 78 18  20 42 49 43 4c 54 20 20  |#128..x. BICLT  |
00003770  20 52 38 2c 52 38 2c 20  23 32 35 36 0d 19 82 15  | R8,R8, #256....|
00003780  20 4c 44 52 20 20 20 20  20 52 30 2c 20 70 32 5f  | LDR     R0, p2_|
00003790  78 0d 19 8c 15 20 4c 44  52 20 20 20 20 20 52 31  |x.... LDR     R1|
000037a0  2c 20 70 32 5f 79 0d 19  96 1d 20 53 55 42 20 20  |, p2_y.... SUB  |
000037b0  20 20 20 52 30 2c 52 36  2c 52 30 2c 20 41 53 4c  |   R0,R6,R0, ASL|
000037c0  20 23 32 0d 19 a0 1d 20  53 55 42 20 20 20 20 20  | #2.... SUB     |
000037d0  52 31 2c 52 37 2c 52 31  2c 20 41 53 4c 20 23 32  |R1,R7,R1, ASL #2|
000037e0  0d 19 aa 13 20 43 4d 50  20 20 20 20 20 52 30 2c  |.... CMP     R0,|
000037f0  20 23 30 0d 19 b4 16 20  52 53 42 4c 54 20 20 20  | #0.... RSBLT   |
00003800  52 30 2c 52 30 2c 20 23  30 0d 19 be 13 20 43 4d  |R0,R0, #0.... CM|
00003810  50 20 20 20 20 20 52 31  2c 20 23 30 0d 19 c8 16  |P     R1, #0....|
00003820  20 52 53 42 4c 54 20 20  20 52 31 2c 52 31 2c 20  | RSBLT   R1,R1, |
00003830  23 30 0d 19 d2 15 20 41  44 44 20 20 20 20 20 52  |#0.... ADD     R|
00003840  30 2c 52 30 2c 52 31 0d  19 dc 15 20 43 4d 50 20  |0,R0,R1.... CMP |
00003850  20 20 20 20 52 30 2c 20  23 31 32 38 0d 19 e6 18  |    R0, #128....|
00003860  20 42 49 43 4c 54 20 20  20 52 38 2c 52 38 2c 20  | BICLT   R8,R8, |
00003870  23 32 35 36 0d 19 f0 0f  20 2e 70 6c 6f 74 5f 64  |#256.... .plot_d|
00003880  6f 6f 72 0d 19 fa 06 20  3a 0d 1a 04 15 20 80 20  |oor.... :.... . |
00003890  20 20 20 20 52 30 2c 52  38 2c 20 23 33 31 0d 1a  |    R0,R8, #31..|
000038a0  0e 1a 20 4d 4f 56 20 20  20 20 20 52 31 2c 52 36  |.. MOV     R1,R6|
000038b0  2c 20 4c 53 52 20 23 32  0d 1a 18 1a 20 4d 4f 56  |, LSR #2.... MOV|
000038c0  20 20 20 20 20 52 32 2c  52 37 2c 20 4c 53 52 20  |     R2,R7, LSR |
000038d0  23 32 0d 1a 22 1d 20 42  4c 20 20 20 20 20 20 70  |#2..". BL      p|
000038e0  6c 6f 74 5f 73 70 72 69  74 65 5f 31 32 36 34 0d  |lot_sprite_1264.|
000038f0  1a 2c 06 20 3a 0d 1a 36  19 20 4c 44 4d 46 44 20  |.,. :..6. LDMFD |
00003900  20 20 52 31 33 21 2c 7b  52 39 2c 50 43 7d 0d 1a  |  R13!,{R9,PC}..|
00003910  40 06 20 3a 0d 1a 4a 0c  20 2e 73 77 69 74 63 68  |@. :..J. .switch|
00003920  0d 1a 54 1a 20 53 54 4d  46 44 20 20 20 52 31 33  |..T. STMFD   R13|
00003930  21 2c 7b 52 39 2c 52 31  34 7d 0d 1a 5e 06 20 3a  |!,{R9,R14}..^. :|
00003940  0d 1a 68 13 20 4d 4f 56  20 20 20 20 20 52 30 2c  |..h. MOV     R0,|
00003950  20 23 30 0d 1a 72 06 20  3a 0d 1a 7c 15 20 4c 44  | #0..r. :..|. LD|
00003960  52 20 20 20 20 20 52 31  2c 20 70 31 5f 78 0d 1a  |R     R1, p1_x..|
00003970  86 15 20 4c 44 52 20 20  20 20 20 52 32 2c 20 70  |.. LDR     R2, p|
00003980  31 5f 79 0d 1a 90 1a 20  4d 4f 56 20 20 20 20 20  |1_y.... MOV     |
00003990  52 33 2c 52 36 2c 20 41  53 52 20 23 32 0d 1a 9a  |R3,R6, ASR #2...|
000039a0  1a 20 4d 4f 56 20 20 20  20 20 52 34 2c 52 37 2c  |. MOV     R4,R7,|
000039b0  20 41 53 52 20 23 32 0d  1a a4 16 20 41 44 44 20  | ASR #2.... ADD |
000039c0  20 20 20 20 52 34 2c 52  34 2c 20 23 38 0d 1a ae  |    R4,R4, #8...|
000039d0  12 20 43 4d 50 20 20 20  20 20 52 32 2c 52 34 0d  |. CMP     R2,R4.|
000039e0  1a b8 16 20 42 4e 45 20  20 20 20 20 6e 6f 74 5f  |... BNE     not_|
000039f0  70 31 5f 6f 6e 0d 1a c2  16 20 53 55 42 20 20 20  |p1_on.... SUB   |
00003a00  20 20 52 33 2c 52 33 2c  20 23 36 0d 1a cc 12 20  |  R3,R3, #6.... |
00003a10  43 4d 50 20 20 20 20 20  52 31 2c 52 33 0d 1a d6  |CMP     R1,R3...|
00003a20  16 20 42 4c 54 20 20 20  20 20 6e 6f 74 5f 70 31  |. BLT     not_p1|
00003a30  5f 6f 6e 0d 1a e0 17 20  41 44 44 20 20 20 20 20  |_on.... ADD     |
00003a40  52 33 2c 52 33 2c 20 23  31 30 0d 1a ea 12 20 43  |R3,R3, #10.... C|
00003a50  4d 50 20 20 20 20 20 52  31 2c 52 33 0d 1a f4 16  |MP     R1,R3....|
00003a60  20 42 47 54 20 20 20 20  20 6e 6f 74 5f 70 31 5f  | BGT     not_p1_|
00003a70  6f 6e 0d 1a fe 13 20 4d  4f 56 20 20 20 20 20 52  |on.... MOV     R|
00003a80  30 2c 20 23 32 0d 1b 08  0f 20 2e 6e 6f 74 5f 70  |0, #2.... .not_p|
00003a90  31 5f 6f 6e 0d 1b 12 15  20 4c 44 52 20 20 20 20  |1_on.... LDR    |
00003aa0  20 52 31 2c 20 70 32 5f  78 0d 1b 1c 15 20 4c 44  | R1, p2_x.... LD|
00003ab0  52 20 20 20 20 20 52 32  2c 20 70 32 5f 79 0d 1b  |R     R2, p2_y..|
00003ac0  26 1a 20 4d 4f 56 20 20  20 20 20 52 33 2c 52 36  |&. MOV     R3,R6|
00003ad0  2c 20 41 53 52 20 23 32  0d 1b 30 1a 20 4d 4f 56  |, ASR #2..0. MOV|
00003ae0  20 20 20 20 20 52 34 2c  52 37 2c 20 41 53 52 20  |     R4,R7, ASR |
00003af0  23 32 0d 1b 3a 16 20 41  44 44 20 20 20 20 20 52  |#2..:. ADD     R|
00003b00  34 2c 52 34 2c 20 23 38  0d 1b 44 12 20 43 4d 50  |4,R4, #8..D. CMP|
00003b10  20 20 20 20 20 52 32 2c  52 34 0d 1b 4e 16 20 42  |     R2,R4..N. B|
00003b20  4e 45 20 20 20 20 20 6e  6f 74 5f 70 32 5f 6f 6e  |NE     not_p2_on|
00003b30  0d 1b 58 16 20 53 55 42  20 20 20 20 20 52 33 2c  |..X. SUB     R3,|
00003b40  52 33 2c 20 23 36 0d 1b  62 12 20 43 4d 50 20 20  |R3, #6..b. CMP  |
00003b50  20 20 20 52 31 2c 52 33  0d 1b 6c 16 20 42 4c 54  |   R1,R3..l. BLT|
00003b60  20 20 20 20 20 6e 6f 74  5f 70 32 5f 6f 6e 0d 1b  |     not_p2_on..|
00003b70  76 17 20 41 44 44 20 20  20 20 20 52 33 2c 52 33  |v. ADD     R3,R3|
00003b80  2c 20 23 31 30 0d 1b 80  12 20 43 4d 50 20 20 20  |, #10.... CMP   |
00003b90  20 20 52 31 2c 52 33 0d  1b 8a 16 20 42 47 54 20  |  R1,R3.... BGT |
00003ba0  20 20 20 20 6e 6f 74 5f  70 32 5f 6f 6e 0d 1b 94  |    not_p2_on...|
00003bb0  13 20 4d 4f 56 20 20 20  20 20 52 30 2c 20 23 31  |. MOV     R0, #1|
00003bc0  0d 1b 9e 0f 20 2e 6e 6f  74 5f 70 32 5f 6f 6e 0d  |.... .not_p2_on.|
00003bd0  1b a8 06 20 3a 0d 1b b2  15 20 41 44 52 20 20 20  |... :.... ADR   |
00003be0  20 20 52 31 2c 20 67 75  6e 73 0d 1b bc 14 20 80  |  R1, guns.... .|
00003bf0  20 20 20 20 20 52 32 2c  52 38 2c 20 23 33 0d 1b  |     R2,R8, #3..|
00003c00  c6 1f 20 53 54 52 20 20  20 20 20 52 30 2c 5b 52  |.. STR     R0,[R|
00003c10  31 2c 52 32 2c 20 4c 53  4c 20 23 33 5d 0d 1b d0  |1,R2, LSL #3]...|
00003c20  06 20 3a 0d 1b da 14 20  4d 4f 56 20 20 20 20 20  |. :.... MOV     |
00003c30  52 30 2c 20 23 31 36 0d  1b e4 1a 20 4d 4f 56 20  |R0, #16.... MOV |
00003c40  20 20 20 20 52 31 2c 52  36 2c 20 4c 53 52 20 23  |    R1,R6, LSR #|
00003c50  32 0d 1b ee 1a 20 4d 4f  56 20 20 20 20 20 52 32  |2.... MOV     R2|
00003c60  2c 52 37 2c 20 4c 53 52  20 23 32 0d 1b f8 1d 20  |,R7, LSR #2.... |
00003c70  42 4c 20 20 20 20 20 20  70 6c 6f 74 5f 73 70 72  |BL      plot_spr|
00003c80  69 74 65 5f 31 32 30 38  0d 1c 02 06 20 3a 0d 1c  |ite_1208.... :..|
00003c90  0c 19 20 4c 44 4d 46 44  20 20 20 52 31 33 21 2c  |.. LDMFD   R13!,|
00003ca0  7b 52 39 2c 50 43 7d 0d  1c 16 06 20 3a 0d 1c 20  |{R9,PC}.... :.. |
00003cb0  0a 20 2e 67 75 6e 73 0d  1c 2a 0e 20 45 51 55 44  |. .guns..*. EQUD|
00003cc0  20 20 20 20 30 0d 1c 34  0e 20 45 51 55 44 20 20  |    0..4. EQUD  |
00003cd0  20 20 30 0d 1c 3e 0e 20  45 51 55 44 20 20 20 20  |  0..>. EQUD    |
00003ce0  30 0d 1c 48 0e 20 45 51  55 44 20 20 20 20 30 0d  |0..H. EQUD    0.|
00003cf0  1c 52 0e 20 45 51 55 44  20 20 20 20 30 0d 1c 5c  |.R. EQUD    0..\|
00003d00  0e 20 45 51 55 44 20 20  20 20 30 0d 1c 66 0e 20  |. EQUD    0..f. |
00003d10  45 51 55 44 20 20 20 20  30 0d 1c 70 0e 20 45 51  |EQUD    0..p. EQ|
00003d20  55 44 20 20 20 20 30 0d  1c 7a 06 20 3a 0d 1c 84  |UD    0..z. :...|
00003d30  0d 20 2e 67 75 6e 5f 67  75 6e 0d 1c 8e 1a 20 53  |. .gun_gun.... S|
00003d40  54 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 39 2c  |TMFD   R13!,{R9,|
00003d50  52 31 34 7d 0d 1c 98 06  20 3a 0d 1c a2 15 20 41  |R14}.... :.... A|
00003d60  44 52 20 20 20 20 20 52  30 2c 20 67 75 6e 73 0d  |DR     R0, guns.|
00003d70  1c ac 14 20 80 20 20 20  20 20 52 32 2c 52 38 2c  |... .     R2,R8,|
00003d80  20 23 33 0d 1c b6 1f 20  4c 44 52 20 20 20 20 20  | #3.... LDR     |
00003d90  52 33 2c 5b 52 30 2c 52  32 2c 20 4c 53 4c 20 23  |R3,[R0,R2, LSL #|
00003da0  33 5d 0d 1c c0 16 20 41  44 44 20 20 20 20 20 52  |3].... ADD     R|
00003db0  30 2c 52 30 2c 20 23 34  0d 1c ca 1f 20 4c 44 52  |0,R0, #4.... LDR|
00003dc0  20 20 20 20 20 52 34 2c  5b 52 30 2c 52 32 2c 20  |     R4,[R0,R2, |
00003dd0  4c 53 4c 20 23 33 5d 0d  1c d4 06 20 3a 0d 1c de  |LSL #3].... :...|
00003de0  13 20 43 4d 50 20 20 20  20 20 52 33 2c 20 23 30  |. CMP     R3, #0|
00003df0  0d 1c e8 17 20 42 45 51  20 20 20 20 20 6e 6f 5f  |.... BEQ     no_|
00003e00  67 75 6e 5f 67 75 6e 0d  1c f2 16 20 41 44 44 20  |gun_gun.... ADD |
00003e10  20 20 20 20 52 34 2c 52  34 2c 20 23 31 0d 1c fc  |    R4,R4, #1...|
00003e20  17 20 80 20 20 20 20 20  52 34 2c 52 34 2c 20 23  |. .     R4,R4, #|
00003e30  25 31 31 31 0d 1d 06 1f  20 53 54 52 20 20 20 20  |%111.... STR    |
00003e40  20 52 34 2c 5b 52 30 2c  52 32 2c 20 4c 53 4c 20  | R4,[R0,R2, LSL |
00003e50  23 33 5d 0d 1d 10 16 20  54 53 54 20 20 20 20 20  |#3].... TST     |
00003e60  52 34 2c 20 23 25 31 31  31 0d 1d 1a 17 20 42 4e  |R4, #%111.... BN|
00003e70  45 20 20 20 20 20 6e 6f  5f 67 75 6e 5f 67 75 6e  |E     no_gun_gun|
00003e80  0d 1d 24 16 20 53 55 42  20 20 20 20 20 52 35 2c  |..$. SUB     R5,|
00003e90  52 33 2c 20 23 31 0d 1d  2e 13 20 4d 4f 56 20 20  |R3, #1.... MOV  |
00003ea0  20 20 20 52 30 2c 20 23  34 0d 1d 38 1a 20 4d 4f  |   R0, #4..8. MO|
00003eb0  56 20 20 20 20 20 52 31  2c 52 36 2c 20 41 53 52  |V     R1,R6, ASR|
00003ec0  20 23 32 0d 1d 42 1a 20  4d 4f 56 20 20 20 20 20  | #2..B. MOV     |
00003ed0  52 32 2c 52 37 2c 20 41  53 52 20 23 32 0d 1d 4c  |R2,R7, ASR #2..L|
00003ee0  16 20 41 44 44 20 20 20  20 20 52 31 2c 52 31 2c  |. ADD     R1,R1,|
00003ef0  20 23 38 0d 1d 56 16 20  41 44 44 20 20 20 20 20  | #8..V. ADD     |
00003f00  52 32 2c 52 32 2c 20 23  35 0d 1d 60 18 20 52 53  |R2,R2, #5..`. RS|
00003f10  42 20 20 20 20 20 52 32  2c 52 32 2c 20 23 32 35  |B     R2,R2, #25|
00003f20  36 0d 1d 6a 14 20 4d 4f  56 20 20 20 20 20 52 33  |6..j. MOV     R3|
00003f30  2c 20 23 37 32 0d 1d 74  14 20 4c 44 52 20 20 20  |, #72..t. LDR   |
00003f40  20 20 52 34 2c 20 72 6e  64 0d 1d 7e 15 20 80 20  |  R4, rnd..~. . |
00003f50  20 20 20 20 52 34 2c 52  34 2c 20 23 31 35 0d 1d  |    R4,R4, #15..|
00003f60  88 16 20 41 44 44 20 20  20 20 20 52 34 2c 52 34  |.. ADD     R4,R4|
00003f70  2c 20 23 37 0d 1d 92 15  20 42 4c 20 20 20 20 20  |, #7.... BL     |
00003f80  20 61 64 64 5f 63 65 6c  6c 0d 1d 9c 13 20 4d 4f  | add_cell.... MO|
00003f90  56 20 20 20 20 20 52 30  2c 20 23 38 0d 1d a6 13  |V     R0, #8....|
00003fa0  20 4d 56 4e 20 20 20 20  20 52 31 2c 20 23 34 0d  | MVN     R1, #4.|
00003fb0  1d b0 17 20 4d 4f 56 20  20 20 20 20 52 32 2c 20  |... MOV     R2, |
00003fc0  23 31 32 38 30 30 0d 1d  ba 13 20 4d 4f 56 20 20  |#12800.... MOV  |
00003fd0  20 20 20 52 33 2c 20 23  31 0d 1d c4 1c 20 53 57  |   R3, #1.... SW|
00003fe0  49 20 20 20 20 20 22 53  6f 75 6e 64 5f 43 6f 6e  |I     "Sound_Con|
00003ff0  74 72 6f 6c 22 0d 1d ce  14 20 4d 4f 56 20 20 20  |trol".... MOV   |
00004000  20 20 52 35 2c 20 23 31  35 0d 1d d8 10 20 2e 6e  |  R5, #15.... .n|
00004010  6f 5f 67 75 6e 5f 67 75  6e 0d 1d e2 06 20 3a 0d  |o_gun_gun.... :.|
00004020  1d ec 14 20 4d 4f 56 20  20 20 20 20 52 30 2c 20  |... MOV     R0, |
00004030  23 31 37 0d 1d f6 1a 20  4d 4f 56 20 20 20 20 20  |#17.... MOV     |
00004040  52 31 2c 52 36 2c 20 4c  53 52 20 23 32 0d 1e 00  |R1,R6, LSR #2...|
00004050  1a 20 4d 4f 56 20 20 20  20 20 52 32 2c 52 37 2c  |. MOV     R2,R7,|
00004060  20 4c 53 52 20 23 32 0d  1e 0a 1d 20 42 4c 20 20  | LSR #2.... BL  |
00004070  20 20 20 20 70 6c 6f 74  5f 73 70 72 69 74 65 5f  |    plot_sprite_|
00004080  31 32 30 38 0d 1e 14 06  20 3a 0d 1e 1e 19 20 4c  |1208.... :.... L|
00004090  44 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 39 2c  |DMFD   R13!,{R9,|
000040a0  50 43 7d 0d 1e 28 06 20  3a 0d 1e 32 13 20 2e 77  |PC}..(. :..2. .w|
000040b0  65 61 70 6f 6e 5f 70 69  73 74 6f 6c 0d 1e 3c 1a  |eapon_pistol..<.|
000040c0  20 53 54 4d 46 44 20 20  20 52 31 33 21 2c 7b 52  | STMFD   R13!,{R|
000040d0  39 2c 52 31 34 7d 0d 1e  46 06 20 3a 0d 1e 50 13  |9,R14}..F. :..P.|
000040e0  20 4d 4f 56 20 20 20 20  20 52 34 2c 20 23 32 0d  | MOV     R4, #2.|
000040f0  1e 5a 14 20 42 4c 20 20  20 20 20 20 70 69 63 6b  |.Z. BL      pick|
00004100  5f 75 70 0d 1e 64 06 20  3a 0d 1e 6e 16 20 53 55  |_up..d. :..n. SU|
00004110  42 20 20 20 20 20 52 38  2c 52 38 2c 20 23 31 0d  |B     R8,R8, #1.|
00004120  1e 78 13 20 43 4d 50 20  20 20 20 20 52 38 2c 20  |.x. CMP     R8, |
00004130  23 30 0d 1e 82 13 20 4d  4f 56 4c 45 20 20 20 52  |#0.... MOVLE   R|
00004140  35 2c 20 23 30 0d 1e 8c  06 20 3a 0d 1e 96 13 20  |5, #0.... :.... |
00004150  43 4d 50 20 20 20 20 20  52 35 2c 20 23 30 0d 1e  |CMP     R5, #0..|
00004160  a0 06 20 3a 0d 1e aa 14  20 4d 4f 56 47 54 20 20  |.. :.... MOVGT  |
00004170  20 52 30 2c 20 23 31 32  0d 1e b4 1a 20 4d 4f 56  | R0, #12.... MOV|
00004180  47 54 20 20 20 52 31 2c  52 36 2c 20 4c 53 52 20  |GT   R1,R6, LSR |
00004190  23 32 0d 1e be 1a 20 4d  4f 56 47 54 20 20 20 52  |#2.... MOVGT   R|
000041a0  32 2c 52 37 2c 20 4c 53  52 20 23 32 0d 1e c8 1d  |2,R7, LSR #2....|
000041b0  20 42 4c 47 54 20 20 20  20 70 6c 6f 74 5f 73 70  | BLGT    plot_sp|
000041c0  72 69 74 65 5f 31 32 31  32 0d 1e d2 06 20 3a 0d  |rite_1212.... :.|
000041d0  1e dc 19 20 4c 44 4d 46  44 20 20 20 52 31 33 21  |... LDMFD   R13!|
000041e0  2c 7b 52 39 2c 50 43 7d  0d 1e e6 06 20 3a 0d 1e  |,{R9,PC}.... :..|
000041f0  f0 10 20 2e 77 65 61 70  6f 6e 5f 67 75 6e 0d 1e  |.. .weapon_gun..|
00004200  fa 1a 20 53 54 4d 46 44  20 20 20 52 31 33 21 2c  |.. STMFD   R13!,|
00004210  7b 52 39 2c 52 31 34 7d  0d 1f 04 06 20 3a 0d 1f  |{R9,R14}.... :..|
00004220  0e 13 20 4d 4f 56 20 20  20 20 20 52 34 2c 20 23  |.. MOV     R4, #|
00004230  33 0d 1f 18 14 20 42 4c  20 20 20 20 20 20 70 69  |3.... BL      pi|
00004240  63 6b 5f 75 70 0d 1f 22  06 20 3a 0d 1f 2c 16 20  |ck_up..". :..,. |
00004250  53 55 42 20 20 20 20 20  52 38 2c 52 38 2c 20 23  |SUB     R8,R8, #|
00004260  31 0d 1f 36 13 20 43 4d  50 20 20 20 20 20 52 38  |1..6. CMP     R8|
00004270  2c 20 23 30 0d 1f 40 13  20 4d 4f 56 4c 45 20 20  |, #0..@. MOVLE  |
00004280  20 52 35 2c 20 23 30 0d  1f 4a 06 20 3a 0d 1f 54  | R5, #0..J. :..T|
00004290  13 20 43 4d 50 20 20 20  20 20 52 35 2c 20 23 30  |. CMP     R5, #0|
000042a0  0d 1f 5e 06 20 3a 0d 1f  68 14 20 4d 4f 56 47 54  |..^. :..h. MOVGT|
000042b0  20 20 20 52 30 2c 20 23  31 33 0d 1f 72 1a 20 4d  |   R0, #13..r. M|
000042c0  4f 56 47 54 20 20 20 52  31 2c 52 36 2c 20 4c 53  |OVGT   R1,R6, LS|
000042d0  52 20 23 32 0d 1f 7c 1a  20 4d 4f 56 47 54 20 20  |R #2..|. MOVGT  |
000042e0  20 52 32 2c 52 37 2c 20  4c 53 52 20 23 32 0d 1f  | R2,R7, LSR #2..|
000042f0  86 1d 20 42 4c 47 54 20  20 20 20 70 6c 6f 74 5f  |.. BLGT    plot_|
00004300  73 70 72 69 74 65 5f 31  32 31 32 0d 1f 90 06 20  |sprite_1212.... |
00004310  3a 0d 1f 9a 19 20 4c 44  4d 46 44 20 20 20 52 31  |:.... LDMFD   R1|
00004320  33 21 2c 7b 52 39 2c 50  43 7d 0d 1f a4 06 20 3a  |3!,{R9,PC}.... :|
00004330  0d 1f ae 13 20 2e 77 65  61 70 6f 6e 5f 6d 6f 72  |.... .weapon_mor|
00004340  74 61 72 0d 1f b8 1a 20  53 54 4d 46 44 20 20 20  |tar.... STMFD   |
00004350  52 31 33 21 2c 7b 52 39  2c 52 31 34 7d 0d 1f c2  |R13!,{R9,R14}...|
00004360  06 20 3a 0d 1f cc 13 20  4d 4f 56 20 20 20 20 20  |. :.... MOV     |
00004370  52 34 2c 20 23 34 0d 1f  d6 14 20 42 4c 20 20 20  |R4, #4.... BL   |
00004380  20 20 20 70 69 63 6b 5f  75 70 0d 1f e0 06 20 3a  |   pick_up.... :|
00004390  0d 1f ea 16 20 53 55 42  20 20 20 20 20 52 38 2c  |.... SUB     R8,|
000043a0  52 38 2c 20 23 31 0d 1f  f4 13 20 43 4d 50 20 20  |R8, #1.... CMP  |
000043b0  20 20 20 52 38 2c 20 23  30 0d 1f fe 13 20 4d 4f  |   R8, #0.... MO|
000043c0  56 4c 45 20 20 20 52 35  2c 20 23 30 0d 20 08 06  |VLE   R5, #0. ..|
000043d0  20 3a 0d 20 12 13 20 43  4d 50 20 20 20 20 20 52  | :. .. CMP     R|
000043e0  35 2c 20 23 30 0d 20 1c  06 20 3a 0d 20 26 14 20  |5, #0. .. :. &. |
000043f0  4d 4f 56 47 54 20 20 20  52 30 2c 20 23 31 34 0d  |MOVGT   R0, #14.|
00004400  20 30 1a 20 4d 4f 56 47  54 20 20 20 52 31 2c 52  | 0. MOVGT   R1,R|
00004410  36 2c 20 4c 53 52 20 23  32 0d 20 3a 1a 20 4d 4f  |6, LSR #2. :. MO|
00004420  56 47 54 20 20 20 52 32  2c 52 37 2c 20 4c 53 52  |VGT   R2,R7, LSR|
00004430  20 23 32 0d 20 44 1d 20  42 4c 47 54 20 20 20 20  | #2. D. BLGT    |
00004440  70 6c 6f 74 5f 73 70 72  69 74 65 5f 31 32 31 32  |plot_sprite_1212|
00004450  0d 20 4e 06 20 3a 0d 20  58 19 20 4c 44 4d 46 44  |. N. :. X. LDMFD|
00004460  20 20 20 52 31 33 21 2c  7b 52 39 2c 50 43 7d 0d  |   R13!,{R9,PC}.|
00004470  20 62 06 20 3a 0d 20 6c  13 20 2e 77 65 61 70 6f  | b. :. l. .weapo|
00004480  6e 5f 68 6f 6d 69 6e 67  0d 20 76 1a 20 53 54 4d  |n_homing. v. STM|
00004490  46 44 20 20 20 52 31 33  21 2c 7b 52 39 2c 52 31  |FD   R13!,{R9,R1|
000044a0  34 7d 0d 20 80 06 20 3a  0d 20 8a 13 20 4d 4f 56  |4}. .. :. .. MOV|
000044b0  20 20 20 20 20 52 34 2c  20 23 35 0d 20 94 14 20  |     R4, #5. .. |
000044c0  42 4c 20 20 20 20 20 20  70 69 63 6b 5f 75 70 0d  |BL      pick_up.|
000044d0  20 9e 06 20 3a 0d 20 a8  16 20 53 55 42 20 20 20  | .. :. .. SUB   |
000044e0  20 20 52 38 2c 52 38 2c  20 23 31 0d 20 b2 13 20  |  R8,R8, #1. .. |
000044f0  43 4d 50 20 20 20 20 20  52 38 2c 20 23 30 0d 20  |CMP     R8, #0. |
00004500  bc 13 20 4d 4f 56 4c 45  20 20 20 52 35 2c 20 23  |.. MOVLE   R5, #|
00004510  30 0d 20 c6 06 20 3a 0d  20 d0 13 20 43 4d 50 20  |0. .. :. .. CMP |
00004520  20 20 20 20 52 35 2c 20  23 30 0d 20 da 06 20 3a  |    R5, #0. .. :|
00004530  0d 20 e4 14 20 4d 4f 56  47 54 20 20 20 52 30 2c  |. .. MOVGT   R0,|
00004540  20 23 31 35 0d 20 ee 1a  20 4d 4f 56 47 54 20 20  | #15. .. MOVGT  |
00004550  20 52 31 2c 52 36 2c 20  4c 53 52 20 23 32 0d 20  | R1,R6, LSR #2. |
00004560  f8 1a 20 4d 4f 56 47 54  20 20 20 52 32 2c 52 37  |.. MOVGT   R2,R7|
00004570  2c 20 4c 53 52 20 23 32  0d 21 02 1d 20 42 4c 47  |, LSR #2.!.. BLG|
00004580  54 20 20 20 20 70 6c 6f  74 5f 73 70 72 69 74 65  |T    plot_sprite|
00004590  5f 31 32 31 32 0d 21 0c  06 20 3a 0d 21 16 19 20  |_1212.!.. :.!.. |
000045a0  4c 44 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 39  |LDMFD   R13!,{R9|
000045b0  2c 50 43 7d 0d 21 20 06  20 3a 0d 21 2a 14 20 2e  |,PC}.! . :.!*. .|
000045c0  77 65 61 70 6f 6e 5f 73  65 65 6b 69 6e 67 0d 21  |weapon_seeking.!|
000045d0  34 1a 20 53 54 4d 46 44  20 20 20 52 31 33 21 2c  |4. STMFD   R13!,|
000045e0  7b 52 39 2c 52 31 34 7d  0d 21 3e 06 20 3a 0d 21  |{R9,R14}.!>. :.!|
000045f0  48 13 20 4d 4f 56 20 20  20 20 20 52 34 2c 20 23  |H. MOV     R4, #|
00004600  36 0d 21 52 14 20 42 4c  20 20 20 20 20 20 70 69  |6.!R. BL      pi|
00004610  63 6b 5f 75 70 0d 21 5c  06 20 3a 0d 21 66 16 20  |ck_up.!\. :.!f. |
00004620  53 55 42 20 20 20 20 20  52 38 2c 52 38 2c 20 23  |SUB     R8,R8, #|
00004630  31 0d 21 70 13 20 43 4d  50 20 20 20 20 20 52 38  |1.!p. CMP     R8|
00004640  2c 20 23 30 0d 21 7a 13  20 4d 4f 56 4c 45 20 20  |, #0.!z. MOVLE  |
00004650  20 52 35 2c 20 23 30 0d  21 84 06 20 3a 0d 21 8e  | R5, #0.!.. :.!.|
00004660  13 20 43 4d 50 20 20 20  20 20 52 35 2c 20 23 30  |. CMP     R5, #0|
00004670  0d 21 98 06 20 3a 0d 21  a2 14 20 4d 4f 56 47 54  |.!.. :.!.. MOVGT|
00004680  20 20 20 52 30 2c 20 23  31 36 0d 21 ac 1a 20 4d  |   R0, #16.!.. M|
00004690  4f 56 47 54 20 20 20 52  31 2c 52 36 2c 20 4c 53  |OVGT   R1,R6, LS|
000046a0  52 20 23 32 0d 21 b6 1a  20 4d 4f 56 47 54 20 20  |R #2.!.. MOVGT  |
000046b0  20 52 32 2c 52 37 2c 20  4c 53 52 20 23 32 0d 21  | R2,R7, LSR #2.!|
000046c0  c0 1d 20 42 4c 47 54 20  20 20 20 70 6c 6f 74 5f  |.. BLGT    plot_|
000046d0  73 70 72 69 74 65 5f 31  32 31 32 0d 21 ca 06 20  |sprite_1212.!.. |
000046e0  3a 0d 21 d4 19 20 4c 44  4d 46 44 20 20 20 52 31  |:.!.. LDMFD   R1|
000046f0  33 21 2c 7b 52 39 2c 50  43 7d 0d 21 de 06 20 3a  |3!,{R9,PC}.!.. :|
00004700  0d 21 e8 15 20 2e 77 65  61 70 6f 6e 5f 76 65 72  |.!.. .weapon_ver|
00004710  74 69 63 61 6c 0d 21 f2  1a 20 53 54 4d 46 44 20  |tical.!.. STMFD |
00004720  20 20 52 31 33 21 2c 7b  52 39 2c 52 31 34 7d 0d  |  R13!,{R9,R14}.|
00004730  21 fc 06 20 3a 0d 22 06  13 20 4d 4f 56 20 20 20  |!.. :.".. MOV   |
00004740  20 20 52 34 2c 20 23 37  0d 22 10 14 20 42 4c 20  |  R4, #7.".. BL |
00004750  20 20 20 20 20 70 69 63  6b 5f 75 70 0d 22 1a 06  |     pick_up."..|
00004760  20 3a 0d 22 24 16 20 53  55 42 20 20 20 20 20 52  | :."$. SUB     R|
00004770  38 2c 52 38 2c 20 23 31  0d 22 2e 13 20 43 4d 50  |8,R8, #1.".. CMP|
00004780  20 20 20 20 20 52 38 2c  20 23 30 0d 22 38 13 20  |     R8, #0."8. |
00004790  4d 4f 56 4c 45 20 20 20  52 35 2c 20 23 30 0d 22  |MOVLE   R5, #0."|
000047a0  42 06 20 3a 0d 22 4c 13  20 43 4d 50 20 20 20 20  |B. :."L. CMP    |
000047b0  20 52 35 2c 20 23 30 0d  22 56 06 20 3a 0d 22 60  | R5, #0."V. :."`|
000047c0  14 20 4d 4f 56 47 54 20  20 20 52 30 2c 20 23 31  |. MOVGT   R0, #1|
000047d0  37 0d 22 6a 1a 20 4d 4f  56 47 54 20 20 20 52 31  |7."j. MOVGT   R1|
000047e0  2c 52 36 2c 20 4c 53 52  20 23 32 0d 22 74 1a 20  |,R6, LSR #2."t. |
000047f0  4d 4f 56 47 54 20 20 20  52 32 2c 52 37 2c 20 4c  |MOVGT   R2,R7, L|
00004800  53 52 20 23 32 0d 22 7e  1d 20 42 4c 47 54 20 20  |SR #2."~. BLGT  |
00004810  20 20 70 6c 6f 74 5f 73  70 72 69 74 65 5f 31 32  |  plot_sprite_12|
00004820  31 32 0d 22 88 06 20 3a  0d 22 92 19 20 4c 44 4d  |12.".. :.".. LDM|
00004830  46 44 20 20 20 52 31 33  21 2c 7b 52 39 2c 50 43  |FD   R13!,{R9,PC|
00004840  7d 0d 22 9c 06 20 3a 0d  22 a6 14 20 2e 77 65 61  |}.".. :.".. .wea|
00004850  70 6f 6e 5f 74 68 72 6f  77 65 72 0d 22 b0 1a 20  |pon_thrower.".. |
00004860  53 54 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 39  |STMFD   R13!,{R9|
00004870  2c 52 31 34 7d 0d 22 ba  06 20 3a 0d 22 c4 13 20  |,R14}.".. :.".. |
00004880  4d 4f 56 20 20 20 20 20  52 34 2c 20 23 38 0d 22  |MOV     R4, #8."|
00004890  ce 14 20 42 4c 20 20 20  20 20 20 70 69 63 6b 5f  |.. BL      pick_|
000048a0  75 70 0d 22 d8 06 20 3a  0d 22 e2 16 20 53 55 42  |up.".. :.".. SUB|
000048b0  20 20 20 20 20 52 38 2c  52 38 2c 20 23 31 0d 22  |     R8,R8, #1."|
000048c0  ec 13 20 43 4d 50 20 20  20 20 20 52 38 2c 20 23  |.. CMP     R8, #|
000048d0  30 0d 22 f6 13 20 4d 4f  56 4c 45 20 20 20 52 35  |0.".. MOVLE   R5|
000048e0  2c 20 23 30 0d 23 00 06  20 3a 0d 23 0a 13 20 43  |, #0.#.. :.#.. C|
000048f0  4d 50 20 20 20 20 20 52  35 2c 20 23 30 0d 23 14  |MP     R5, #0.#.|
00004900  06 20 3a 0d 23 1e 14 20  4d 4f 56 47 54 20 20 20  |. :.#.. MOVGT   |
00004910  52 30 2c 20 23 31 38 0d  23 28 1a 20 4d 4f 56 47  |R0, #18.#(. MOVG|
00004920  54 20 20 20 52 31 2c 52  36 2c 20 4c 53 52 20 23  |T   R1,R6, LSR #|
00004930  32 0d 23 32 1a 20 4d 4f  56 47 54 20 20 20 52 32  |2.#2. MOVGT   R2|
00004940  2c 52 37 2c 20 4c 53 52  20 23 32 0d 23 3c 1d 20  |,R7, LSR #2.#<. |
00004950  42 4c 47 54 20 20 20 20  70 6c 6f 74 5f 73 70 72  |BLGT    plot_spr|
00004960  69 74 65 5f 31 32 31 32  0d 23 46 06 20 3a 0d 23  |ite_1212.#F. :.#|
00004970  50 19 20 4c 44 4d 46 44  20 20 20 52 31 33 21 2c  |P. LDMFD   R13!,|
00004980  7b 52 39 2c 50 43 7d 0d  23 5a 06 20 3a 0d 23 64  |{R9,PC}.#Z. :.#d|
00004990  11 20 2e 77 65 61 70 6f  6e 5f 62 6f 6d 62 0d 23  |. .weapon_bomb.#|
000049a0  6e 1a 20 53 54 4d 46 44  20 20 20 52 31 33 21 2c  |n. STMFD   R13!,|
000049b0  7b 52 39 2c 52 31 34 7d  0d 23 78 06 20 3a 0d 23  |{R9,R14}.#x. :.#|
000049c0  82 13 20 4d 4f 56 20 20  20 20 20 52 34 2c 20 23  |.. MOV     R4, #|
000049d0  39 0d 23 8c 14 20 42 4c  20 20 20 20 20 20 70 69  |9.#.. BL      pi|
000049e0  63 6b 5f 75 70 0d 23 96  06 20 3a 0d 23 a0 16 20  |ck_up.#.. :.#.. |
000049f0  53 55 42 20 20 20 20 20  52 38 2c 52 38 2c 20 23  |SUB     R8,R8, #|
00004a00  31 0d 23 aa 13 20 43 4d  50 20 20 20 20 20 52 38  |1.#.. CMP     R8|
00004a10  2c 20 23 30 0d 23 b4 13  20 4d 4f 56 4c 45 20 20  |, #0.#.. MOVLE  |
00004a20  20 52 35 2c 20 23 30 0d  23 be 06 20 3a 0d 23 c8  | R5, #0.#.. :.#.|
00004a30  13 20 43 4d 50 20 20 20  20 20 52 35 2c 20 23 30  |. CMP     R5, #0|
00004a40  0d 23 d2 06 20 3a 0d 23  dc 14 20 4d 4f 56 47 54  |.#.. :.#.. MOVGT|
00004a50  20 20 20 52 30 2c 20 23  31 39 0d 23 e6 1a 20 4d  |   R0, #19.#.. M|
00004a60  4f 56 47 54 20 20 20 52  31 2c 52 36 2c 20 4c 53  |OVGT   R1,R6, LS|
00004a70  52 20 23 32 0d 23 f0 1a  20 4d 4f 56 47 54 20 20  |R #2.#.. MOVGT  |
00004a80  20 52 32 2c 52 37 2c 20  4c 53 52 20 23 32 0d 23  | R2,R7, LSR #2.#|
00004a90  fa 1d 20 42 4c 47 54 20  20 20 20 70 6c 6f 74 5f  |.. BLGT    plot_|
00004aa0  73 70 72 69 74 65 5f 31  32 31 32 0d 24 04 06 20  |sprite_1212.$.. |
00004ab0  3a 0d 24 0e 19 20 4c 44  4d 46 44 20 20 20 52 31  |:.$.. LDMFD   R1|
00004ac0  33 21 2c 7b 52 39 2c 50  43 7d 0d 24 18 06 20 3a  |3!,{R9,PC}.$.. :|
00004ad0  0d 24 22 14 20 2e 77 65  61 70 6f 6e 5f 63 6c 75  |.$". .weapon_clu|
00004ae0  73 74 65 72 0d 24 2c 1a  20 53 54 4d 46 44 20 20  |ster.$,. STMFD  |
00004af0  20 52 31 33 21 2c 7b 52  39 2c 52 31 34 7d 0d 24  | R13!,{R9,R14}.$|
00004b00  36 06 20 3a 0d 24 40 14  20 4d 4f 56 20 20 20 20  |6. :.$@. MOV    |
00004b10  20 52 34 2c 20 23 31 30  0d 24 4a 14 20 42 4c 20  | R4, #10.$J. BL |
00004b20  20 20 20 20 20 70 69 63  6b 5f 75 70 0d 24 54 06  |     pick_up.$T.|
00004b30  20 3a 0d 24 5e 16 20 53  55 42 20 20 20 20 20 52  | :.$^. SUB     R|
00004b40  38 2c 52 38 2c 20 23 31  0d 24 68 13 20 43 4d 50  |8,R8, #1.$h. CMP|
00004b50  20 20 20 20 20 52 38 2c  20 23 30 0d 24 72 13 20  |     R8, #0.$r. |
00004b60  4d 4f 56 4c 45 20 20 20  52 35 2c 20 23 30 0d 24  |MOVLE   R5, #0.$|
00004b70  7c 06 20 3a 0d 24 86 13  20 43 4d 50 20 20 20 20  ||. :.$.. CMP    |
00004b80  20 52 35 2c 20 23 30 0d  24 90 06 20 3a 0d 24 9a  | R5, #0.$.. :.$.|
00004b90  14 20 4d 4f 56 47 54 20  20 20 52 30 2c 20 23 32  |. MOVGT   R0, #2|
00004ba0  30 0d 24 a4 1a 20 4d 4f  56 47 54 20 20 20 52 31  |0.$.. MOVGT   R1|
00004bb0  2c 52 36 2c 20 4c 53 52  20 23 32 0d 24 ae 1a 20  |,R6, LSR #2.$.. |
00004bc0  4d 4f 56 47 54 20 20 20  52 32 2c 52 37 2c 20 4c  |MOVGT   R2,R7, L|
00004bd0  53 52 20 23 32 0d 24 b8  1d 20 42 4c 47 54 20 20  |SR #2.$.. BLGT  |
00004be0  20 20 70 6c 6f 74 5f 73  70 72 69 74 65 5f 31 32  |  plot_sprite_12|
00004bf0  31 32 0d 24 c2 06 20 3a  0d 24 cc 19 20 4c 44 4d  |12.$.. :.$.. LDM|
00004c00  46 44 20 20 20 52 31 33  21 2c 7b 52 39 2c 50 43  |FD   R13!,{R9,PC|
00004c10  7d 0d 24 d6 06 20 3a 0d  24 e0 06 20 3a 0d 24 ea  |}.$.. :.$.. :.$.|
00004c20  0d 20 2e 70 69 63 6b 5f  75 70 0d 24 f4 16 20 4c  |. .pick_up.$.. L|
00004c30  44 52 20 20 20 20 20 52  31 30 2c 20 70 31 5f 78  |DR     R10, p1_x|
00004c40  0d 24 fe 16 20 4c 44 52  20 20 20 20 20 52 31 31  |.$.. LDR     R11|
00004c50  2c 20 70 31 5f 79 0d 25  08 1a 20 4d 4f 56 20 20  |, p1_y.%.. MOV  |
00004c60  20 20 20 52 39 2c 52 36  2c 20 41 53 52 20 23 32  |   R9,R6, ASR #2|
00004c70  0d 25 12 16 20 41 44 44  20 20 20 20 20 52 39 2c  |.%.. ADD     R9,|
00004c80  52 39 2c 20 23 38 0d 25  1c 17 20 53 55 42 20 20  |R9, #8.%.. SUB  |
00004c90  20 20 20 52 31 30 2c 52  39 2c 52 31 30 0d 25 26  |   R10,R9,R10.%&|
00004ca0  18 20 41 44 44 20 20 20  20 20 52 31 30 2c 52 31  |. ADD     R10,R1|
00004cb0  30 2c 20 23 32 0d 25 30  14 20 43 4d 50 20 20 20  |0, #2.%0. CMP   |
00004cc0  20 20 52 31 30 2c 20 23  30 0d 25 3a 1b 20 42 4c  |  R10, #0.%:. BL|
00004cd0  54 20 20 20 20 20 6e 6f  74 5f 70 69 63 6b 65 64  |T     not_picked|
00004ce0  5f 75 70 31 0d 25 44 1b  20 43 4d 50 20 20 20 20  |_up1.%D. CMP    |
00004cf0  20 52 31 30 2c 20 23 78  65 78 74 25 2b 31 30 0d  | R10, #xext%+10.|
00004d00  25 4e 1b 20 42 47 54 20  20 20 20 20 6e 6f 74 5f  |%N. BGT     not_|
00004d10  70 69 63 6b 65 64 5f 75  70 31 0d 25 58 1a 20 4d  |picked_up1.%X. M|
00004d20  4f 56 20 20 20 20 20 52  39 2c 52 37 2c 20 41 53  |OV     R9,R7, AS|
00004d30  52 20 23 32 0d 25 62 17  20 41 44 44 20 20 20 20  |R #2.%b. ADD    |
00004d40  20 52 39 2c 52 39 2c 20  23 31 32 0d 25 6c 17 20  | R9,R9, #12.%l. |
00004d50  53 55 42 20 20 20 20 20  52 31 31 2c 52 39 2c 52  |SUB     R11,R9,R|
00004d60  31 31 0d 25 76 18 20 41  44 44 20 20 20 20 20 52  |11.%v. ADD     R|
00004d70  31 31 2c 52 31 31 2c 20  23 32 0d 25 80 14 20 43  |11,R11, #2.%.. C|
00004d80  4d 50 20 20 20 20 20 52  31 31 2c 20 23 30 0d 25  |MP     R11, #0.%|
00004d90  8a 1b 20 42 4c 54 20 20  20 20 20 6e 6f 74 5f 70  |.. BLT     not_p|
00004da0  69 63 6b 65 64 5f 75 70  31 0d 25 94 1b 20 43 4d  |icked_up1.%.. CM|
00004db0  50 20 20 20 20 20 52 31  31 2c 20 23 79 65 78 74  |P     R11, #yext|
00004dc0  25 2b 31 34 0d 25 9e 1b  20 42 47 54 20 20 20 20  |%+14.%.. BGT    |
00004dd0  20 6e 6f 74 5f 70 69 63  6b 65 64 5f 75 70 31 0d  | not_picked_up1.|
00004de0  25 a8 13 20 4d 4f 56 20  20 20 20 20 52 35 2c 20  |%.. MOV     R5, |
00004df0  23 30 0d 25 b2 1a 20 53  54 52 20 20 20 20 20 52  |#0.%.. STR     R|
00004e00  34 2c 20 70 31 5f 77 65  61 70 6f 6e 0d 25 bc 13  |4, p1_weapon.%..|
00004e10  20 4d 4f 56 20 20 20 20  20 52 30 2c 20 23 32 0d  | MOV     R0, #2.|
00004e20  25 c6 14 20 4d 56 4e 20  20 20 20 20 52 31 2c 20  |%.. MVN     R1, |
00004e30  23 31 34 0d 25 d0 17 20  4d 4f 56 20 20 20 20 20  |#14.%.. MOV     |
00004e40  52 32 2c 20 23 70 69 6e  67 25 0d 25 da 13 20 4d  |R2, #ping%.%.. M|
00004e50  4f 56 20 20 20 20 20 52  33 2c 20 23 30 0d 25 e4  |OV     R3, #0.%.|
00004e60  1c 20 53 57 49 20 20 20  20 20 22 53 6f 75 6e 64  |. SWI     "Sound|
00004e70  5f 43 6f 6e 74 72 6f 6c  22 0d 25 ee 14 20 2e 6e  |_Control".%.. .n|
00004e80  6f 74 5f 70 69 63 6b 65  64 5f 75 70 31 0d 25 f8  |ot_picked_up1.%.|
00004e90  16 20 4c 44 52 20 20 20  20 20 52 31 30 2c 20 70  |. LDR     R10, p|
00004ea0  32 5f 78 0d 26 02 16 20  4c 44 52 20 20 20 20 20  |2_x.&.. LDR     |
00004eb0  52 31 31 2c 20 70 32 5f  79 0d 26 0c 1a 20 4d 4f  |R11, p2_y.&.. MO|
00004ec0  56 20 20 20 20 20 52 39  2c 52 36 2c 20 41 53 52  |V     R9,R6, ASR|
00004ed0  20 23 32 0d 26 16 16 20  41 44 44 20 20 20 20 20  | #2.&.. ADD     |
00004ee0  52 39 2c 52 39 2c 20 23  38 0d 26 20 17 20 53 55  |R9,R9, #8.& . SU|
00004ef0  42 20 20 20 20 20 52 31  30 2c 52 39 2c 52 31 30  |B     R10,R9,R10|
00004f00  0d 26 2a 18 20 41 44 44  20 20 20 20 20 52 31 30  |.&*. ADD     R10|
00004f10  2c 52 31 30 2c 20 23 32  0d 26 34 14 20 43 4d 50  |,R10, #2.&4. CMP|
00004f20  20 20 20 20 20 52 31 30  2c 20 23 30 0d 26 3e 1b  |     R10, #0.&>.|
00004f30  20 42 4c 54 20 20 20 20  20 6e 6f 74 5f 70 69 63  | BLT     not_pic|
00004f40  6b 65 64 5f 75 70 32 0d  26 48 1b 20 43 4d 50 20  |ked_up2.&H. CMP |
00004f50  20 20 20 20 52 31 30 2c  20 23 78 65 78 74 25 2b  |    R10, #xext%+|
00004f60  31 30 0d 26 52 1b 20 42  47 54 20 20 20 20 20 6e  |10.&R. BGT     n|
00004f70  6f 74 5f 70 69 63 6b 65  64 5f 75 70 32 0d 26 5c  |ot_picked_up2.&\|
00004f80  1a 20 4d 4f 56 20 20 20  20 20 52 39 2c 52 37 2c  |. MOV     R9,R7,|
00004f90  20 41 53 52 20 23 32 0d  26 66 17 20 41 44 44 20  | ASR #2.&f. ADD |
00004fa0  20 20 20 20 52 39 2c 52  39 2c 20 23 31 32 0d 26  |    R9,R9, #12.&|
00004fb0  70 17 20 53 55 42 20 20  20 20 20 52 31 31 2c 52  |p. SUB     R11,R|
00004fc0  39 2c 52 31 31 0d 26 7a  18 20 41 44 44 20 20 20  |9,R11.&z. ADD   |
00004fd0  20 20 52 31 31 2c 52 31  31 2c 20 23 32 0d 26 84  |  R11,R11, #2.&.|
00004fe0  14 20 43 4d 50 20 20 20  20 20 52 31 31 2c 20 23  |. CMP     R11, #|
00004ff0  30 0d 26 8e 1b 20 42 4c  54 20 20 20 20 20 6e 6f  |0.&.. BLT     no|
00005000  74 5f 70 69 63 6b 65 64  5f 75 70 32 0d 26 98 1b  |t_picked_up2.&..|
00005010  20 43 4d 50 20 20 20 20  20 52 31 31 2c 20 23 79  | CMP     R11, #y|
00005020  65 78 74 25 2b 31 36 0d  26 a2 1b 20 42 47 54 20  |ext%+16.&.. BGT |
00005030  20 20 20 20 6e 6f 74 5f  70 69 63 6b 65 64 5f 75  |    not_picked_u|
00005040  70 32 0d 26 ac 13 20 4d  4f 56 20 20 20 20 20 52  |p2.&.. MOV     R|
00005050  35 2c 20 23 30 0d 26 b6  1a 20 53 54 52 20 20 20  |5, #0.&.. STR   |
00005060  20 20 52 34 2c 20 70 32  5f 77 65 61 70 6f 6e 0d  |  R4, p2_weapon.|
00005070  26 c0 13 20 4d 4f 56 20  20 20 20 20 52 30 2c 20  |&.. MOV     R0, |
00005080  23 32 0d 26 ca 14 20 4d  56 4e 20 20 20 20 20 52  |#2.&.. MVN     R|
00005090  31 2c 20 23 31 34 0d 26  d4 17 20 4d 4f 56 20 20  |1, #14.&.. MOV  |
000050a0  20 20 20 52 32 2c 20 23  70 69 6e 67 25 0d 26 de  |   R2, #ping%.&.|
000050b0  13 20 4d 4f 56 20 20 20  20 20 52 33 2c 20 23 30  |. MOV     R3, #0|
000050c0  0d 26 e8 1c 20 53 57 49  20 20 20 20 20 22 53 6f  |.&.. SWI     "So|
000050d0  75 6e 64 5f 43 6f 6e 74  72 6f 6c 22 0d 26 f2 14  |und_Control".&..|
000050e0  20 2e 6e 6f 74 5f 70 69  63 6b 65 64 5f 75 70 32  | .not_picked_up2|
000050f0  0d 26 fc 13 20 4d 4f 56  20 20 20 20 20 50 43 2c  |.&.. MOV     PC,|
00005100  52 31 34 0d 27 06 06 20  3a 0d 27 10 06 20 3a 0d  |R14.'.. :.'.. :.|
00005110  27 1a 0a 20 2e 70 31 5f  78 0d 27 24 0e 20 45 51  |'.. .p1_x.'$. EQ|
00005120  55 44 20 20 20 20 30 0d  27 2e 0a 20 2e 70 31 5f  |UD    0.'.. .p1_|
00005130  79 0d 27 38 0e 20 45 51  55 44 20 20 20 20 30 0d  |y.'8. EQUD    0.|
00005140  27 42 0a 20 2e 70 32 5f  78 0d 27 4c 0e 20 45 51  |'B. .p2_x.'L. EQ|
00005150  55 44 20 20 20 20 30 0d  27 56 0a 20 2e 70 32 5f  |UD    0.'V. .p2_|
00005160  79 0d 27 60 0e 20 45 51  55 44 20 20 20 20 30 0d  |y.'`. EQUD    0.|
00005170  27 6a 06 20 3a 0d 27 74  09 20 2e 72 6e 64 0d 27  |'j. :.'t. .rnd.'|
00005180  7e 11 20 45 51 55 44 20  20 20 20 94 b3 2d 91 0d  |~. EQUD    ..-..|
00005190  27 88 06 20 3a 0d 27 92  06 20 3a 0d 27 9c 12 20  |'.. :.'.. :.'.. |
000051a0  2e 75 70 64 61 74 65 5f  63 65 6c 6c 73 0d 27 a6  |.update_cells.'.|
000051b0  1e 20 53 54 4d 46 44 20  20 20 52 31 33 21 2c 7b  |. STMFD   R13!,{|
000051c0  52 30 2d 52 31 32 2c 52  31 34 7d 0d 27 b0 06 20  |R0-R12,R14}.'.. |
000051d0  3a 0d 27 ba 1a 20 4c 44  52 20 20 20 20 20 52 39  |:.'.. LDR     R9|
000051e0  2c 20 61 64 72 5f 63 6c  69 73 74 0d 27 c4 0c 20  |, adr_clist.'.. |
000051f0  2e 63 6c 6f 6f 70 31 0d  27 ce 17 20 4c 44 4d 49  |.cloop1.'.. LDMI|
00005200  41 20 20 20 52 39 2c 7b  52 31 2d 52 38 7d 0d 27  |A   R9,{R1-R8}.'|
00005210  d8 13 20 43 4d 50 20 20  20 20 20 52 31 2c 20 23  |.. CMP     R1, #|
00005220  31 0d 27 e2 12 20 42 4c  45 51 20 20 20 20 73 70  |1.'.. BLEQ    sp|
00005230  72 61 79 0d 27 ec 16 20  42 45 51 20 20 20 20 20  |ray.'.. BEQ     |
00005240  63 65 6c 6c 5f 73 6b 69  70 0d 27 f6 13 20 43 4d  |cell_skip.'.. CM|
00005250  50 20 20 20 20 20 52 31  2c 20 23 38 0d 28 00 13  |P     R1, #8.(..|
00005260  20 42 4c 45 51 20 20 20  20 73 70 72 61 79 32 0d  | BLEQ    spray2.|
00005270  28 0a 16 20 42 45 51 20  20 20 20 20 63 65 6c 6c  |(.. BEQ     cell|
00005280  5f 73 6b 69 70 0d 28 14  13 20 43 4d 50 20 20 20  |_skip.(.. CMP   |
00005290  20 20 52 31 2c 20 23 39  0d 28 1e 13 20 42 4c 45  |  R1, #9.(.. BLE|
000052a0  51 20 20 20 20 73 70 72  61 79 33 0d 28 28 16 20  |Q    spray3.((. |
000052b0  42 45 51 20 20 20 20 20  63 65 6c 6c 5f 73 6b 69  |BEQ     cell_ski|
000052c0  70 0d 28 32 13 20 43 4d  50 20 20 20 20 20 52 31  |p.(2. CMP     R1|
000052d0  2c 20 23 32 0d 28 3c 13  20 42 4c 45 51 20 20 20  |, #2.(<. BLEQ   |
000052e0  20 70 69 73 74 6f 6c 0d  28 46 16 20 42 45 51 20  | pistol.(F. BEQ |
000052f0  20 20 20 20 63 65 6c 6c  5f 73 6b 69 70 0d 28 50  |    cell_skip.(P|
00005300  13 20 43 4d 50 20 20 20  20 20 52 31 2c 20 23 33  |. CMP     R1, #3|
00005310  0d 28 5a 10 20 42 4c 45  51 20 20 20 20 67 75 6e  |.(Z. BLEQ    gun|
00005320  0d 28 64 16 20 42 45 51  20 20 20 20 20 63 65 6c  |.(d. BEQ     cel|
00005330  6c 5f 73 6b 69 70 0d 28  6e 13 20 43 4d 50 20 20  |l_skip.(n. CMP  |
00005340  20 20 20 52 31 2c 20 23  34 0d 28 78 13 20 42 4c  |   R1, #4.(x. BL|
00005350  45 51 20 20 20 20 6d 6f  72 74 61 72 0d 28 82 16  |EQ    mortar.(..|
00005360  20 42 45 51 20 20 20 20  20 63 65 6c 6c 5f 73 6b  | BEQ     cell_sk|
00005370  69 70 0d 28 8c 13 20 43  4d 50 20 20 20 20 20 52  |ip.(.. CMP     R|
00005380  31 2c 20 23 35 0d 28 96  13 20 42 4c 45 51 20 20  |1, #5.(.. BLEQ  |
00005390  20 20 68 6f 6d 69 6e 67  0d 28 a0 16 20 42 45 51  |  homing.(.. BEQ|
000053a0  20 20 20 20 20 63 65 6c  6c 5f 73 6b 69 70 0d 28  |     cell_skip.(|
000053b0  aa 13 20 43 4d 50 20 20  20 20 20 52 31 2c 20 23  |.. CMP     R1, #|
000053c0  36 0d 28 b4 14 20 42 4c  45 51 20 20 20 20 73 65  |6.(.. BLEQ    se|
000053d0  65 6b 69 6e 67 0d 28 be  16 20 42 45 51 20 20 20  |eking.(.. BEQ   |
000053e0  20 20 63 65 6c 6c 5f 73  6b 69 70 0d 28 c8 13 20  |  cell_skip.(.. |
000053f0  43 4d 50 20 20 20 20 20  52 31 2c 20 23 37 0d 28  |CMP     R1, #7.(|
00005400  d2 15 20 42 4c 45 51 20  20 20 20 76 65 72 74 69  |.. BLEQ    verti|
00005410  63 61 6c 0d 28 dc 16 20  42 45 51 20 20 20 20 20  |cal.(.. BEQ     |
00005420  63 65 6c 6c 5f 73 6b 69  70 0d 28 e6 14 20 43 4d  |cell_skip.(.. CM|
00005430  50 20 20 20 20 20 52 31  2c 20 23 31 30 0d 28 f0  |P     R1, #10.(.|
00005440  14 20 42 4c 45 51 20 20  20 20 74 68 72 6f 77 65  |. BLEQ    throwe|
00005450  72 0d 28 fa 16 20 42 45  51 20 20 20 20 20 63 65  |r.(.. BEQ     ce|
00005460  6c 6c 5f 73 6b 69 70 0d  29 04 14 20 43 4d 50 20  |ll_skip.).. CMP |
00005470  20 20 20 20 52 31 2c 20  23 31 31 0d 29 0e 14 20  |    R1, #11.).. |
00005480  42 4c 45 51 20 20 20 20  65 78 70 6c 6f 64 65 0d  |BLEQ    explode.|
00005490  29 18 16 20 42 45 51 20  20 20 20 20 63 65 6c 6c  |).. BEQ     cell|
000054a0  5f 73 6b 69 70 0d 29 22  14 20 43 4d 50 20 20 20  |_skip.)". CMP   |
000054b0  20 20 52 31 2c 20 23 31  32 0d 29 2c 11 20 42 4c  |  R1, #12.),. BL|
000054c0  45 51 20 20 20 20 62 6f  6d 62 0d 29 36 16 20 42  |EQ    bomb.)6. B|
000054d0  45 51 20 20 20 20 20 63  65 6c 6c 5f 73 6b 69 70  |EQ     cell_skip|
000054e0  0d 29 40 14 20 43 4d 50  20 20 20 20 20 52 31 2c  |.)@. CMP     R1,|
000054f0  20 23 31 33 0d 29 4a 14  20 42 4c 45 51 20 20 20  | #13.)J. BLEQ   |
00005500  20 63 6c 75 73 74 65 72  0d 29 54 0f 20 2e 63 65  | cluster.)T. .ce|
00005510  6c 6c 5f 73 6b 69 70 0d  29 5e 18 20 53 54 4d 49  |ll_skip.)^. STMI|
00005520  41 20 20 20 52 39 21 2c  7b 52 31 2d 52 38 7d 0d  |A   R9!,{R1-R8}.|
00005530  29 68 13 20 43 4d 50 20  20 20 20 20 52 31 2c 20  |)h. CMP     R1, |
00005540  23 30 0d 29 72 13 20 42  47 54 20 20 20 20 20 63  |#0.)r. BGT     c|
00005550  6c 6f 6f 70 31 0d 29 7c  15 20 42 4e 45 20 20 20  |loop1.)|. BNE   |
00005560  20 20 6e 6f 74 5f 6e 75  6c 6c 0d 29 86 1b 20 4c  |  not_null.).. L|
00005570  44 52 20 20 20 20 20 52  31 2c 20 61 64 72 5f 62  |DR     R1, adr_b|
00005580  63 6c 69 73 74 0d 29 90  17 20 53 55 42 20 20 20  |clist.).. SUB   |
00005590  20 20 52 32 2c 52 39 2c  20 23 33 32 0d 29 9a 12  |  R2,R9, #32.)..|
000055a0  20 43 4d 50 20 20 20 20  20 52 32 2c 52 31 0d 29  | CMP     R2,R1.)|
000055b0  a4 12 20 4d 4f 56 4c 54  20 20 20 52 31 2c 52 32  |.. MOVLT   R1,R2|
000055c0  0d 29 ae 1b 20 53 54 52  20 20 20 20 20 52 31 2c  |.).. STR     R1,|
000055d0  20 61 64 72 5f 62 63 6c  69 73 74 0d 29 b8 13 20  | adr_bclist.).. |
000055e0  42 20 20 20 20 20 20 20  63 6c 6f 6f 70 31 0d 29  |B       cloop1.)|
000055f0  c2 0e 20 2e 6e 6f 74 5f  6e 75 6c 6c 0d 29 cc 06  |.. .not_null.)..|
00005600  20 3a 0d 29 d6 1d 20 4c  44 4d 46 44 20 20 20 52  | :.).. LDMFD   R|
00005610  31 33 21 2c 7b 52 30 2d  52 31 32 2c 50 43 7d 0d  |13!,{R0-R12,PC}.|
00005620  29 e0 06 20 3a 0d 29 ea  10 20 2e 61 64 72 5f 62  |).. :.).. .adr_b|
00005630  63 6c 69 73 74 0d 29 f4  13 20 45 51 55 44 20 20  |clist.).. EQUD  |
00005640  20 20 63 6c 69 73 74 25  0d 29 fe 06 20 3a 0d 2a  |  clist%.).. :.*|
00005650  08 0b 20 2e 73 70 72 61  79 0d 2a 12 1a 20 53 54  |.. .spray.*.. ST|
00005660  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 39 2c 52  |MFD   R13!,{R9,R|
00005670  31 34 7d 0d 2a 1c 06 20  3a 0d 2a 26 16 20 53 55  |14}.*.. :.*&. SU|
00005680  42 20 20 20 20 20 52 35  2c 52 35 2c 20 23 31 0d  |B     R5,R5, #1.|
00005690  2a 30 15 20 41 44 44 20  20 20 20 20 52 32 2c 52  |*0. ADD     R2,R|
000056a0  32 2c 52 34 0d 2a 3a 15  20 41 44 44 20 20 20 20  |2,R4.*:. ADD    |
000056b0  20 52 33 2c 52 33 2c 52  35 0d 2a 44 16 20 53 55  | R3,R3,R5.*D. SU|
000056c0  42 20 20 20 20 20 52 36  2c 52 36 2c 20 23 31 0d  |B     R6,R6, #1.|
000056d0  2a 4e 13 20 43 4d 50 20  20 20 20 20 52 36 2c 20  |*N. CMP     R6, |
000056e0  23 30 0d 2a 58 13 20 4d  4f 56 4c 45 20 20 20 52  |#0.*X. MOVLE   R|
000056f0  31 2c 20 23 30 0d 2a 62  19 20 4c 44 4d 4c 45 46  |1, #0.*b. LDMLEF|
00005700  44 20 52 31 33 21 2c 7b  52 39 2c 50 43 7d 0d 2a  |D R13!,{R9,PC}.*|
00005710  6c 06 20 3a 0d 2a 76 19  20 53 54 4d 46 44 20 20  |l. :.*v. STMFD  |
00005720  20 52 31 33 21 2c 7b 52  31 2d 52 36 7d 0d 2a 80  | R13!,{R1-R6}.*.|
00005730  06 20 3a 0d 2a 8a 1a 20  4d 4f 56 20 20 20 20 20  |. :.*.. MOV     |
00005740  52 32 2c 52 32 2c 20 41  53 52 20 23 34 0d 2a 94  |R2,R2, ASR #4.*.|
00005750  1a 20 4d 4f 56 20 20 20  20 20 52 33 2c 52 33 2c  |. MOV     R3,R3,|
00005760  20 41 53 52 20 23 34 0d  2a 9e 13 20 43 4d 50 20  | ASR #4.*.. CMP |
00005770  20 20 20 20 52 32 2c 20  23 30 0d 2a a8 15 20 42  |    R2, #0.*.. B|
00005780  4c 54 20 20 20 20 20 6e  6f 5f 73 70 72 61 79 0d  |LT     no_spray.|
00005790  2a b2 13 20 43 4d 50 20  20 20 20 20 52 33 2c 20  |*.. CMP     R3, |
000057a0  23 30 0d 2a bc 15 20 42  4c 54 20 20 20 20 20 6e  |#0.*.. BLT     n|
000057b0  6f 5f 73 70 72 61 79 0d  2a c6 15 20 43 4d 50 20  |o_spray.*.. CMP |
000057c0  20 20 20 20 52 32 2c 20  23 33 32 30 0d 2a d0 15  |    R2, #320.*..|
000057d0  20 42 47 45 20 20 20 20  20 6e 6f 5f 73 70 72 61  | BGE     no_spra|
000057e0  79 0d 2a da 15 20 43 4d  50 20 20 20 20 20 52 33  |y.*.. CMP     R3|
000057f0  2c 20 23 32 35 36 0d 2a  e4 15 20 42 47 45 20 20  |, #256.*.. BGE  |
00005800  20 20 20 6e 6f 5f 73 70  72 61 79 0d 2a ee 18 20  |   no_spray.*.. |
00005810  52 53 42 20 20 20 20 20  52 33 2c 52 33 2c 20 23  |RSB     R3,R3, #|
00005820  32 35 36 0d 2a f8 1c 20  4c 44 52 20 20 20 20 20  |256.*.. LDR     |
00005830  52 34 2c 20 73 63 72 65  65 6e 73 74 6f 72 65 0d  |R4, screenstore.|
00005840  2b 02 19 20 4d 4f 56 20  20 20 20 20 52 35 2c 20  |+.. MOV     R5, |
00005850  23 79 5f 73 68 69 66 74  0d 2b 0c 15 20 41 44 44  |#y_shift.+.. ADD|
00005860  20 20 20 20 20 52 34 2c  52 34 2c 52 32 0d 2b 16  |     R4,R4,R2.+.|
00005870  18 20 4d 4c 41 20 20 20  20 20 52 34 2c 52 35 2c  |. MLA     R4,R5,|
00005880  52 33 2c 52 34 0d 2b 20  14 20 4c 44 52 42 20 20  |R3,R4.+ . LDRB  |
00005890  20 20 52 30 2c 5b 52 34  5d 0d 2b 2a 13 20 43 4d  |  R0,[R4].+*. CM|
000058a0  50 20 20 20 20 20 52 30  2c 20 23 30 0d 2b 34 11  |P     R0, #0.+4.|
000058b0  20 ec 51 20 20 20 52 31  30 2c 20 23 31 0d 2b 3e  | .Q   R10, #1.+>|
000058c0  14 20 4d 4f 56 4e 45 20  20 20 52 31 30 2c 20 23  |. MOVNE   R10, #|
000058d0  30 0d 2b 48 15 20 42 4e  45 20 20 20 20 20 6e 6f  |0.+H. BNE     no|
000058e0  5f 73 70 72 61 79 0d 2b  52 1f 20 4c 44 52 20 20  |_spray.+R. LDR  |
000058f0  20 20 20 52 30 2c 20 61  64 72 5f 66 6c 61 6d 65  |   R0, adr_flame|
00005900  5f 66 61 64 65 0d 2b 5c  1a 20 4d 4f 56 20 20 20  |_fade.+\. MOV   |
00005910  20 20 52 39 2c 52 36 2c  20 41 53 4c 20 23 33 0d  |  R9,R6, ASL #3.|
00005920  2b 66 15 20 43 4d 50 20  20 20 20 20 52 39 2c 20  |+f. CMP     R9, |
00005930  23 32 35 35 0d 2b 70 15  20 4d 4f 56 47 54 20 20  |#255.+p. MOVGT  |
00005940  20 52 39 2c 20 23 32 35  35 0d 2b 7a 17 20 4c 44  | R9, #255.+z. LD|
00005950  52 42 20 20 20 20 52 30  2c 5b 52 30 2c 52 39 5d  |RB    R0,[R0,R9]|
00005960  0d 2b 84 14 20 53 54 52  42 20 20 20 20 52 30 2c  |.+.. STRB    R0,|
00005970  5b 52 34 5d 0d 2b 8e 0e  20 2e 6e 6f 5f 73 70 72  |[R4].+.. .no_spr|
00005980  61 79 0d 2b 98 06 20 3a  0d 2b a2 19 20 4c 44 4d  |ay.+.. :.+.. LDM|
00005990  46 44 20 20 20 52 31 33  21 2c 7b 52 31 2d 52 36  |FD   R13!,{R1-R6|
000059a0  7d 0d 2b ac 14 20 43 4d  50 20 20 20 20 20 52 31  |}.+.. CMP     R1|
000059b0  30 2c 20 23 30 0d 2b b6  16 20 52 53 42 45 51 20  |0, #0.+.. RSBEQ |
000059c0  20 20 52 35 2c 52 35 2c  20 23 30 0d 2b c0 17 20  |  R5,R5, #0.+.. |
000059d0  ec 51 20 20 20 52 35 2c  52 35 2c 20 41 53 52 20  |.Q   R5,R5, ASR |
000059e0  23 31 0d 2b ca 19 20 4c  44 4d 46 44 20 20 20 52  |#1.+.. LDMFD   R|
000059f0  31 33 21 2c 7b 52 39 2c  50 43 7d 0d 2b d4 06 20  |13!,{R9,PC}.+.. |
00005a00  3a 0d 2b de 0c 20 2e 73  70 72 61 79 32 0d 2b e8  |:.+.. .spray2.+.|
00005a10  1a 20 53 54 4d 46 44 20  20 20 52 31 33 21 2c 7b  |. STMFD   R13!,{|
00005a20  52 39 2c 52 31 34 7d 0d  2b f2 06 20 3a 0d 2b fc  |R9,R14}.+.. :.+.|
00005a30  16 20 53 55 42 20 20 20  20 20 52 35 2c 52 35 2c  |. SUB     R5,R5,|
00005a40  20 23 31 0d 2c 06 15 20  41 44 44 20 20 20 20 20  | #1.,.. ADD     |
00005a50  52 32 2c 52 32 2c 52 34  0d 2c 10 15 20 41 44 44  |R2,R2,R4.,.. ADD|
00005a60  20 20 20 20 20 52 33 2c  52 33 2c 52 35 0d 2c 1a  |     R3,R3,R5.,.|
00005a70  16 20 53 55 42 20 20 20  20 20 52 36 2c 52 36 2c  |. SUB     R6,R6,|
00005a80  20 23 31 0d 2c 24 13 20  43 4d 50 20 20 20 20 20  | #1.,$. CMP     |
00005a90  52 36 2c 20 23 30 0d 2c  2e 13 20 4d 4f 56 4c 45  |R6, #0.,.. MOVLE|
00005aa0  20 20 20 52 31 2c 20 23  30 0d 2c 38 19 20 4c 44  |   R1, #0.,8. LD|
00005ab0  4d 4c 45 46 44 20 52 31  33 21 2c 7b 52 39 2c 50  |MLEFD R13!,{R9,P|
00005ac0  43 7d 0d 2c 42 06 20 3a  0d 2c 4c 19 20 53 54 4d  |C}.,B. :.,L. STM|
00005ad0  46 44 20 20 20 52 31 33  21 2c 7b 52 31 2d 52 36  |FD   R13!,{R1-R6|
00005ae0  7d 0d 2c 56 16 20 53 54  4d 46 44 20 20 20 52 31  |}.,V. STMFD   R1|
00005af0  33 21 2c 7b 52 36 7d 0d  2c 60 06 20 3a 0d 2c 6a  |3!,{R6}.,`. :.,j|
00005b00  13 20 4d 4f 56 20 20 20  20 20 52 36 2c 20 23 30  |. MOV     R6, #0|
00005b10  0d 2c 74 18 20 42 4c 20  20 20 20 20 20 63 68 65  |.,t. BL      che|
00005b20  63 6b 5f 64 65 61 74 68  0d 2c 7e 13 20 4d 4f 56  |ck_death.,~. MOV|
00005b30  20 20 20 20 20 52 36 2c  20 23 31 0d 2c 88 18 20  |     R6, #1.,.. |
00005b40  42 4c 20 20 20 20 20 20  63 68 65 63 6b 5f 64 65  |BL      check_de|
00005b50  61 74 68 0d 2c 92 16 20  4c 44 4d 46 44 20 20 20  |ath.,.. LDMFD   |
00005b60  52 31 33 21 2c 7b 52 36  7d 0d 2c 9c 06 20 3a 0d  |R13!,{R6}.,.. :.|
00005b70  2c a6 1a 20 4d 4f 56 20  20 20 20 20 52 32 2c 52  |,.. MOV     R2,R|
00005b80  32 2c 20 41 53 52 20 23  34 0d 2c b0 1a 20 4d 4f  |2, ASR #4.,.. MO|
00005b90  56 20 20 20 20 20 52 33  2c 52 33 2c 20 41 53 52  |V     R3,R3, ASR|
00005ba0  20 23 34 0d 2c ba 13 20  43 4d 50 20 20 20 20 20  | #4.,.. CMP     |
00005bb0  52 32 2c 20 23 30 0d 2c  c4 16 20 42 4c 54 20 20  |R2, #0.,.. BLT  |
00005bc0  20 20 20 6e 6f 5f 73 70  72 61 79 32 0d 2c ce 13  |   no_spray2.,..|
00005bd0  20 43 4d 50 20 20 20 20  20 52 33 2c 20 23 30 0d  | CMP     R3, #0.|
00005be0  2c d8 16 20 42 4c 54 20  20 20 20 20 6e 6f 5f 73  |,.. BLT     no_s|
00005bf0  70 72 61 79 32 0d 2c e2  15 20 43 4d 50 20 20 20  |pray2.,.. CMP   |
00005c00  20 20 52 32 2c 20 23 33  32 30 0d 2c ec 16 20 42  |  R2, #320.,.. B|
00005c10  47 45 20 20 20 20 20 6e  6f 5f 73 70 72 61 79 32  |GE     no_spray2|
00005c20  0d 2c f6 15 20 43 4d 50  20 20 20 20 20 52 33 2c  |.,.. CMP     R3,|
00005c30  20 23 32 35 36 0d 2d 00  16 20 42 47 45 20 20 20  | #256.-.. BGE   |
00005c40  20 20 6e 6f 5f 73 70 72  61 79 32 0d 2d 0a 18 20  |  no_spray2.-.. |
00005c50  52 53 42 20 20 20 20 20  52 33 2c 52 33 2c 20 23  |RSB     R3,R3, #|
00005c60  32 35 36 0d 2d 14 16 20  53 55 42 20 20 20 20 20  |256.-.. SUB     |
00005c70  52 32 2c 52 32 2c 20 23  31 0d 2d 1e 16 20 53 55  |R2,R2, #1.-.. SU|
00005c80  42 20 20 20 20 20 52 33  2c 52 33 2c 20 23 31 0d  |B     R3,R3, #1.|
00005c90  2d 28 1c 20 4c 44 52 20  20 20 20 20 52 34 2c 20  |-(. LDR     R4, |
00005ca0  73 63 72 65 65 6e 73 74  6f 72 65 0d 2d 32 19 20  |screenstore.-2. |
00005cb0  4d 4f 56 20 20 20 20 20  52 35 2c 20 23 79 5f 73  |MOV     R5, #y_s|
00005cc0  68 69 66 74 0d 2d 3c 15  20 41 44 44 20 20 20 20  |hift.-<. ADD    |
00005cd0  20 52 34 2c 52 34 2c 52  32 0d 2d 46 19 3b 20 4d  | R4,R4,R2.-F.; M|
00005ce0  4c 41 20 20 20 20 20 52  34 2c 52 35 2c 52 33 2c  |LA     R4,R5,R3,|
00005cf0  52 34 0d 2d 50 18 41 44  44 20 52 34 2c 52 34 2c  |R4.-P.ADD R4,R4,|
00005d00  52 33 2c 20 41 53 4c 20  23 38 0d 2d 5a 18 41 44  |R3, ASL #8.-Z.AD|
00005d10  44 20 52 34 2c 52 34 2c  52 33 2c 20 41 53 4c 20  |D R4,R4,R3, ASL |
00005d20  23 36 0d 2d 64 14 20 4c  44 52 42 20 20 20 20 52  |#6.-d. LDRB    R|
00005d30  30 2c 5b 52 34 5d 0d 2d  6e 13 20 43 4d 50 20 20  |0,[R4].-n. CMP  |
00005d40  20 20 20 52 30 2c 20 23  30 0d 2d 78 11 20 ec 51  |   R0, #0.-x. .Q|
00005d50  20 20 20 52 31 30 2c 20  23 31 0d 2d 82 14 20 4d  |   R10, #1.-.. M|
00005d60  4f 56 4e 45 20 20 20 52  31 30 2c 20 23 30 0d 2d  |OVNE   R10, #0.-|
00005d70  8c 16 20 42 4e 45 20 20  20 20 20 6e 6f 5f 73 70  |.. BNE     no_sp|
00005d80  72 61 79 32 0d 2d 96 1f  20 4c 44 52 20 20 20 20  |ray2.-.. LDR    |
00005d90  20 52 30 2c 20 61 64 72  5f 66 6c 61 6d 65 5f 66  | R0, adr_flame_f|
00005da0  61 64 65 0d 2d a0 1a 20  4d 4f 56 20 20 20 20 20  |ade.-.. MOV     |
00005db0  52 39 2c 52 36 2c 20 41  53 4c 20 23 33 0d 2d aa  |R9,R6, ASL #3.-.|
00005dc0  15 20 43 4d 50 20 20 20  20 20 52 39 2c 20 23 32  |. CMP     R9, #2|
00005dd0  35 35 0d 2d b4 15 20 4d  4f 56 47 54 20 20 20 52  |55.-.. MOVGT   R|
00005de0  39 2c 20 23 32 35 35 0d  2d be 17 20 4c 44 52 42  |9, #255.-.. LDRB|
00005df0  20 20 20 20 52 30 2c 5b  52 30 2c 52 39 5d 0d 2d  |    R0,[R0,R9].-|
00005e00  c8 18 20 53 54 52 42 20  20 20 20 52 30 2c 5b 52  |.. STRB    R0,[R|
00005e10  34 2c 20 23 31 5d 0d 2d  d2 1c 20 41 44 44 20 20  |4, #1].-.. ADD  |
00005e20  20 20 20 52 34 2c 52 34  2c 20 23 79 5f 73 68 69  |   R4,R4, #y_shi|
00005e30  66 74 0d 2d dc 14 20 53  54 52 42 20 20 20 20 52  |ft.-.. STRB    R|
00005e40  30 2c 5b 52 34 5d 0d 2d  e6 18 20 53 54 52 42 20  |0,[R4].-.. STRB |
00005e50  20 20 20 52 30 2c 5b 52  34 2c 20 23 31 5d 0d 2d  |   R0,[R4, #1].-|
00005e60  f0 18 20 53 54 52 42 20  20 20 20 52 30 2c 5b 52  |.. STRB    R0,[R|
00005e70  34 2c 20 23 32 5d 0d 2d  fa 1c 20 41 44 44 20 20  |4, #2].-.. ADD  |
00005e80  20 20 20 52 34 2c 52 34  2c 20 23 79 5f 73 68 69  |   R4,R4, #y_shi|
00005e90  66 74 0d 2e 04 18 20 53  54 52 42 20 20 20 20 52  |ft.... STRB    R|
00005ea0  30 2c 5b 52 34 2c 20 23  31 5d 0d 2e 0e 0f 20 2e  |0,[R4, #1].... .|
00005eb0  6e 6f 5f 73 70 72 61 79  32 0d 2e 18 06 20 3a 0d  |no_spray2.... :.|
00005ec0  2e 22 19 20 4c 44 4d 46  44 20 20 20 52 31 33 21  |.". LDMFD   R13!|
00005ed0  2c 7b 52 31 2d 52 36 7d  0d 2e 2c 14 20 43 4d 50  |,{R1-R6}..,. CMP|
00005ee0  20 20 20 20 20 52 31 30  2c 20 23 30 0d 2e 36 16  |     R10, #0..6.|
00005ef0  20 52 53 42 45 51 20 20  20 52 35 2c 52 35 2c 20  | RSBEQ   R5,R5, |
00005f00  23 30 0d 2e 40 16 20 52  53 42 45 51 20 20 20 52  |#0..@. RSBEQ   R|
00005f10  34 2c 52 34 2c 20 23 30  0d 2e 4a 19 20 4c 44 4d  |4,R4, #0..J. LDM|
00005f20  46 44 20 20 20 52 31 33  21 2c 7b 52 39 2c 50 43  |FD   R13!,{R9,PC|
00005f30  7d 0d 2e 54 06 20 3a 0d  2e 5e 0c 20 2e 73 70 72  |}..T. :..^. .spr|
00005f40  61 79 33 0d 2e 68 1a 20  53 54 4d 46 44 20 20 20  |ay3..h. STMFD   |
00005f50  52 31 33 21 2c 7b 52 39  2c 52 31 34 7d 0d 2e 72  |R13!,{R9,R14}..r|
00005f60  06 20 3a 0d 2e 7c 16 20  53 55 42 20 20 20 20 20  |. :..|. SUB     |
00005f70  52 35 2c 52 35 2c 20 23  31 0d 2e 86 15 20 41 44  |R5,R5, #1.... AD|
00005f80  44 20 20 20 20 20 52 32  2c 52 32 2c 52 34 0d 2e  |D     R2,R2,R4..|
00005f90  90 15 20 41 44 44 20 20  20 20 20 52 33 2c 52 33  |.. ADD     R3,R3|
00005fa0  2c 52 35 0d 2e 9a 19 20  80 20 20 20 20 20 52 30  |,R5.... .     R0|
00005fb0  2c 52 36 2c 20 23 32 35  35 3c 3c 38 0d 2e a4 16  |,R6, #255<<8....|
00005fc0  20 53 55 42 20 20 20 20  20 52 30 2c 52 30 2c 20  | SUB     R0,R0, |
00005fd0  23 31 0d 2e ae 13 20 43  4d 50 20 20 20 20 20 52  |#1.... CMP     R|
00005fe0  30 2c 20 23 30 0d 2e b8  13 20 4d 4f 56 4c 45 20  |0, #0.... MOVLE |
00005ff0  20 20 52 31 2c 20 23 30  0d 2e c2 19 20 4c 44 4d  |  R1, #0.... LDM|
00006000  4c 45 46 44 20 52 31 33  21 2c 7b 52 39 2c 50 43  |LEFD R13!,{R9,PC|
00006010  7d 0d 2e cc 1b 20 42 49  43 20 20 20 20 20 52 36  |}.... BIC     R6|
00006020  2c 52 36 2c 20 23 32 35  35 3c 3c 38 0d 2e d6 14  |,R6, #255<<8....|
00006030  20 84 52 20 20 20 20 20  52 36 2c 52 36 2c 52 30  | .R     R6,R6,R0|
00006040  0d 2e e0 06 20 3a 0d 2e  ea 19 20 53 54 4d 46 44  |.... :.... STMFD|
00006050  20 20 20 52 31 33 21 2c  7b 52 31 2d 52 36 7d 0d  |   R13!,{R1-R6}.|
00006060  2e f4 06 20 3a 0d 2e fe  13 20 4d 4f 56 20 20 20  |... :.... MOV   |
00006070  20 20 52 36 2c 20 23 30  0d 2f 08 18 20 42 4c 20  |  R6, #0./.. BL |
00006080  20 20 20 20 20 63 68 65  63 6b 5f 64 65 61 74 68  |     check_death|
00006090  0d 2f 12 13 20 4d 4f 56  20 20 20 20 20 52 36 2c  |./.. MOV     R6,|
000060a0  20 23 31 0d 2f 1c 18 20  42 4c 20 20 20 20 20 20  | #1./.. BL      |
000060b0  63 68 65 63 6b 5f 64 65  61 74 68 0d 2f 26 06 20  |check_death./&. |
000060c0  3a 0d 2f 30 1a 20 4d 4f  56 20 20 20 20 20 52 32  |:./0. MOV     R2|
000060d0  2c 52 32 2c 20 41 53 52  20 23 34 0d 2f 3a 1a 20  |,R2, ASR #4./:. |
000060e0  4d 4f 56 20 20 20 20 20  52 33 2c 52 33 2c 20 41  |MOV     R3,R3, A|
000060f0  53 52 20 23 34 0d 2f 44  13 20 43 4d 50 20 20 20  |SR #4./D. CMP   |
00006100  20 20 52 32 2c 20 23 30  0d 2f 4e 16 20 42 4c 54  |  R2, #0./N. BLT|
00006110  20 20 20 20 20 6e 6f 5f  73 70 72 61 79 33 0d 2f  |     no_spray3./|
00006120  58 13 20 43 4d 50 20 20  20 20 20 52 33 2c 20 23  |X. CMP     R3, #|
00006130  30 0d 2f 62 16 20 42 4c  54 20 20 20 20 20 6e 6f  |0./b. BLT     no|
00006140  5f 73 70 72 61 79 33 0d  2f 6c 15 20 43 4d 50 20  |_spray3./l. CMP |
00006150  20 20 20 20 52 32 2c 20  23 33 32 30 0d 2f 76 16  |    R2, #320./v.|
00006160  20 42 47 45 20 20 20 20  20 6e 6f 5f 73 70 72 61  | BGE     no_spra|
00006170  79 33 0d 2f 80 15 20 43  4d 50 20 20 20 20 20 52  |y3./.. CMP     R|
00006180  33 2c 20 23 32 35 36 0d  2f 8a 16 20 42 47 45 20  |3, #256./.. BGE |
00006190  20 20 20 20 6e 6f 5f 73  70 72 61 79 33 0d 2f 94  |    no_spray3./.|
000061a0  18 20 52 53 42 20 20 20  20 20 52 33 2c 52 33 2c  |. RSB     R3,R3,|
000061b0  20 23 32 35 36 0d 2f 9e  16 20 53 55 42 20 20 20  | #256./.. SUB   |
000061c0  20 20 52 32 2c 52 32 2c  20 23 31 0d 2f a8 16 20  |  R2,R2, #1./.. |
000061d0  53 55 42 20 20 20 20 20  52 33 2c 52 33 2c 20 23  |SUB     R3,R3, #|
000061e0  31 0d 2f b2 1c 20 4c 44  52 20 20 20 20 20 52 34  |1./.. LDR     R4|
000061f0  2c 20 73 63 72 65 65 6e  73 74 6f 72 65 0d 2f bc  |, screenstore./.|
00006200  19 20 4d 4f 56 20 20 20  20 20 52 35 2c 20 23 79  |. MOV     R5, #y|
00006210  5f 73 68 69 66 74 0d 2f  c6 15 20 41 44 44 20 20  |_shift./.. ADD  |
00006220  20 20 20 52 34 2c 52 34  2c 52 32 0d 2f d0 19 3b  |   R4,R4,R2./..;|
00006230  20 4d 4c 41 20 20 20 20  20 52 34 2c 52 35 2c 52  | MLA     R4,R5,R|
00006240  33 2c 52 34 0d 2f da 18  41 44 44 20 52 34 2c 52  |3,R4./..ADD R4,R|
00006250  34 2c 52 33 2c 20 41 53  4c 20 23 38 0d 2f e4 18  |4,R3, ASL #8./..|
00006260  41 44 44 20 52 34 2c 52  34 2c 52 33 2c 20 41 53  |ADD R4,R4,R3, AS|
00006270  4c 20 23 36 0d 2f ee 14  20 4c 44 52 42 20 20 20  |L #6./.. LDRB   |
00006280  20 52 30 2c 5b 52 34 5d  0d 2f f8 13 20 43 4d 50  | R0,[R4]./.. CMP|
00006290  20 20 20 20 20 52 30 2c  20 23 30 0d 30 02 11 20  |     R0, #0.0.. |
000062a0  ec 51 20 20 20 52 31 30  2c 20 23 31 0d 30 0c 14  |.Q   R10, #1.0..|
000062b0  20 4d 4f 56 4e 45 20 20  20 52 31 30 2c 20 23 30  | MOVNE   R10, #0|
000062c0  0d 30 16 16 20 42 4e 45  20 20 20 20 20 6e 6f 5f  |.0.. BNE     no_|
000062d0  73 70 72 61 79 33 0d 30  20 15 20 4d 4f 56 20 20  |spray3.0 . MOV  |
000062e0  20 20 20 52 30 2c 20 23  32 35 35 0d 30 2a 18 20  |   R0, #255.0*. |
000062f0  53 54 52 42 20 20 20 20  52 30 2c 5b 52 34 2c 20  |STRB    R0,[R4, |
00006300  23 31 5d 0d 30 34 1c 20  41 44 44 20 20 20 20 20  |#1].04. ADD     |
00006310  52 34 2c 52 34 2c 20 23  79 5f 73 68 69 66 74 0d  |R4,R4, #y_shift.|
00006320  30 3e 14 20 53 54 52 42  20 20 20 20 52 30 2c 5b  |0>. STRB    R0,[|
00006330  52 34 5d 0d 30 48 18 20  53 54 52 42 20 20 20 20  |R4].0H. STRB    |
00006340  52 30 2c 5b 52 34 2c 20  23 31 5d 0d 30 52 18 20  |R0,[R4, #1].0R. |
00006350  53 54 52 42 20 20 20 20  52 30 2c 5b 52 34 2c 20  |STRB    R0,[R4, |
00006360  23 32 5d 0d 30 5c 1c 20  41 44 44 20 20 20 20 20  |#2].0\. ADD     |
00006370  52 34 2c 52 34 2c 20 23  79 5f 73 68 69 66 74 0d  |R4,R4, #y_shift.|
00006380  30 66 18 20 53 54 52 42  20 20 20 20 52 30 2c 5b  |0f. STRB    R0,[|
00006390  52 34 2c 20 23 31 5d 0d  30 70 0f 20 2e 6e 6f 5f  |R4, #1].0p. .no_|
000063a0  73 70 72 61 79 33 0d 30  7a 06 20 3a 0d 30 84 19  |spray3.0z. :.0..|
000063b0  20 4c 44 4d 46 44 20 20  20 52 31 33 21 2c 7b 52  | LDMFD   R13!,{R|
000063c0  31 2d 52 36 7d 0d 30 8e  14 20 43 4d 50 20 20 20  |1-R6}.0.. CMP   |
000063d0  20 20 52 31 30 2c 20 23  30 0d 30 98 16 20 52 53  |  R10, #0.0.. RS|
000063e0  42 45 51 20 20 20 52 35  2c 52 35 2c 20 23 30 0d  |BEQ   R5,R5, #0.|
000063f0  30 a2 16 20 52 53 42 45  51 20 20 20 52 34 2c 52  |0.. RSBEQ   R4,R|
00006400  34 2c 20 23 30 0d 30 ac  19 20 4c 44 4d 46 44 20  |4, #0.0.. LDMFD |
00006410  20 20 52 31 33 21 2c 7b  52 39 2c 50 43 7d 0d 30  |  R13!,{R9,PC}.0|
00006420  b6 06 20 3a 0d 30 c0 14  20 2e 61 64 72 5f 66 6c  |.. :.0.. .adr_fl|
00006430  61 6d 65 5f 66 61 64 65  0d 30 ca 18 20 45 51 55  |ame_fade.0.. EQU|
00006440  44 20 20 20 20 66 6c 61  6d 65 5f 66 61 64 65 25  |D    flame_fade%|
00006450  0d 30 d4 06 20 3a 0d 30  de 12 20 2e 61 64 72 5f  |.0.. :.0.. .adr_|
00006460  67 75 6e 5f 66 61 64 65  0d 30 e8 16 20 45 51 55  |gun_fade.0.. EQU|
00006470  44 20 20 20 20 67 75 6e  5f 66 61 64 65 25 0d 30  |D    gun_fade%.0|
00006480  f2 06 20 3a 0d 30 fc 0d  20 2e 74 68 72 6f 77 65  |.. :.0.. .throwe|
00006490  72 0d 31 06 1a 20 53 54  4d 46 44 20 20 20 52 31  |r.1.. STMFD   R1|
000064a0  33 21 2c 7b 52 39 2c 52  31 34 7d 0d 31 10 06 20  |3!,{R9,R14}.1.. |
000064b0  3a 0d 31 1a 15 20 41 44  44 20 20 20 20 20 52 32  |:.1.. ADD     R2|
000064c0  2c 52 32 2c 52 34 0d 31  24 15 20 41 44 44 20 20  |,R2,R4.1$. ADD  |
000064d0  20 20 20 52 33 2c 52 33  2c 52 35 0d 31 2e 19 20  |   R3,R3,R5.1.. |
000064e0  80 20 20 20 20 20 52 37  2c 52 36 2c 20 23 32 35  |.     R7,R6, #25|
000064f0  35 3c 3c 38 0d 31 38 1a  20 4d 4f 56 20 20 20 20  |5<<8.18. MOV    |
00006500  20 52 37 2c 52 37 2c 20  41 53 52 20 23 38 0d 31  | R7,R7, ASR #8.1|
00006510  42 16 20 41 44 44 20 20  20 20 20 52 37 2c 52 37  |B. ADD     R7,R7|
00006520  2c 20 23 31 0d 31 4c 14  20 43 4d 50 20 20 20 20  |, #1.1L. CMP    |
00006530  20 52 37 2c 20 23 31 35  0d 31 56 13 20 4d 4f 56  | R7, #15.1V. MOV|
00006540  47 45 20 20 20 52 31 2c  20 23 30 0d 31 60 1b 20  |GE   R1, #0.1`. |
00006550  4c 44 4d 47 45 46 44 20  20 20 52 31 33 21 2c 7b  |LDMGEFD   R13!,{|
00006560  52 39 2c 50 43 7d 0d 31  6a 1b 20 42 49 43 20 20  |R9,PC}.1j. BIC  |
00006570  20 20 20 52 36 2c 52 36  2c 20 23 32 35 35 3c 3c  |   R6,R6, #255<<|
00006580  38 0d 31 74 1c 20 84 52  20 20 20 20 20 52 36 2c  |8.1t. .R     R6,|
00006590  52 36 2c 52 37 2c 20 41  53 4c 20 23 38 0d 31 7e  |R6,R7, ASL #8.1~|
000065a0  06 20 3a 0d 31 88 19 20  53 54 4d 46 44 20 20 20  |. :.1.. STMFD   |
000065b0  52 31 33 21 2c 7b 52 31  2d 52 36 7d 0d 31 92 06  |R13!,{R1-R6}.1..|
000065c0  20 3a 0d 31 9c 18 20 42  4c 20 20 20 20 20 20 63  | :.1.. BL      c|
000065d0  68 65 63 6b 5f 64 65 61  74 68 0d 31 a6 06 20 3a  |heck_death.1.. :|
000065e0  0d 31 b0 1a 20 4d 4f 56  20 20 20 20 20 52 32 2c  |.1.. MOV     R2,|
000065f0  52 32 2c 20 41 53 52 20  23 34 0d 31 ba 1a 20 4d  |R2, ASR #4.1.. M|
00006600  4f 56 20 20 20 20 20 52  33 2c 52 33 2c 20 41 53  |OV     R3,R3, AS|
00006610  52 20 23 34 0d 31 c4 18  20 52 53 42 20 20 20 20  |R #4.1.. RSB    |
00006620  20 52 33 2c 52 33 2c 20  23 32 35 36 0d 31 ce 1c  | R3,R3, #256.1..|
00006630  20 4c 44 52 20 20 20 20  20 52 34 2c 20 73 63 72  | LDR     R4, scr|
00006640  65 65 6e 73 74 6f 72 65  0d 31 d8 19 20 4d 4f 56  |eenstore.1.. MOV|
00006650  20 20 20 20 20 52 35 2c  20 23 79 5f 73 68 69 66  |     R5, #y_shif|
00006660  74 0d 31 e2 15 20 41 44  44 20 20 20 20 20 52 34  |t.1.. ADD     R4|
00006670  2c 52 34 2c 52 32 0d 31  ec 18 20 4d 4c 41 20 20  |,R4,R2.1.. MLA  |
00006680  20 20 20 52 34 2c 52 35  2c 52 33 2c 52 34 0d 31  |   R4,R5,R3,R4.1|
00006690  f6 18 20 4c 44 52 42 20  20 20 20 52 30 2c 5b 52  |.. LDRB    R0,[R|
000066a0  34 2c 20 23 32 5d 0d 32  00 13 20 43 4d 50 20 20  |4, #2].2.. CMP  |
000066b0  20 20 20 52 30 2c 20 23  30 0d 32 0a 11 20 ec 51  |   R0, #0.2.. .Q|
000066c0  20 20 20 52 31 30 2c 20  23 31 0d 32 14 14 20 4d  |   R10, #1.2.. M|
000066d0  4f 56 4e 45 20 20 20 52  31 30 2c 20 23 30 0d 32  |OVNE   R10, #0.2|
000066e0  1e 17 20 42 4e 45 20 20  20 20 20 6e 6f 5f 74 68  |.. BNE     no_th|
000066f0  72 6f 77 65 72 0d 32 28  18 20 52 53 42 20 20 20  |rower.2(. RSB   |
00006700  20 20 52 33 2c 52 33 2c  20 23 32 35 36 0d 32 32  |  R3,R3, #256.22|
00006710  12 20 4d 4f 56 20 20 20  20 20 52 30 2c 52 37 0d  |. MOV     R0,R7.|
00006720  32 3c 16 20 53 55 42 20  20 20 20 20 52 31 2c 52  |2<. SUB     R1,R|
00006730  32 2c 20 23 34 0d 32 46  16 20 53 55 42 20 20 20  |2, #4.2F. SUB   |
00006740  20 20 52 32 2c 52 33 2c  20 23 34 0d 32 50 1d 20  |  R2,R3, #4.2P. |
00006750  42 4c 20 20 20 20 20 20  70 6c 6f 74 5f 73 70 72  |BL      plot_spr|
00006760  69 74 65 5f 31 32 30 38  0d 32 5a 10 20 2e 6e 6f  |ite_1208.2Z. .no|
00006770  5f 74 68 72 6f 77 65 72  0d 32 64 06 20 3a 0d 32  |_thrower.2d. :.2|
00006780  6e 19 20 4c 44 4d 46 44  20 20 20 52 31 33 21 2c  |n. LDMFD   R13!,|
00006790  7b 52 31 2d 52 36 7d 0d  32 78 14 20 43 4d 50 20  |{R1-R6}.2x. CMP |
000067a0  20 20 20 20 52 31 30 2c  20 23 30 0d 32 82 10 20  |    R10, #0.2.. |
000067b0  ec 51 20 20 20 52 31 2c  20 23 30 0d 32 8c 19 20  |.Q   R1, #0.2.. |
000067c0  4c 44 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 39  |LDMFD   R13!,{R9|
000067d0  2c 50 43 7d 0d 32 96 06  20 3a 0d 32 a0 0d 20 2e  |,PC}.2.. :.2.. .|
000067e0  65 78 70 6c 6f 64 65 0d  32 aa 1a 20 53 54 4d 46  |explode.2.. STMF|
000067f0  44 20 20 20 52 31 33 21  2c 7b 52 39 2c 52 31 34  |D   R13!,{R9,R14|
00006800  7d 0d 32 b4 06 20 3a 0d  32 be 15 20 41 44 44 20  |}.2.. :.2.. ADD |
00006810  20 20 20 20 52 32 2c 52  32 2c 52 34 0d 32 c8 15  |    R2,R2,R4.2..|
00006820  20 41 44 44 20 20 20 20  20 52 33 2c 52 33 2c 52  | ADD     R3,R3,R|
00006830  35 0d 32 d2 19 20 80 20  20 20 20 20 52 37 2c 52  |5.2.. .     R7,R|
00006840  36 2c 20 23 32 35 35 3c  3c 38 0d 32 dc 1a 20 4d  |6, #255<<8.2.. M|
00006850  4f 56 20 20 20 20 20 52  37 2c 52 37 2c 20 41 53  |OV     R7,R7, AS|
00006860  52 20 23 38 0d 32 e6 16  20 41 44 44 20 20 20 20  |R #8.2.. ADD    |
00006870  20 52 37 2c 52 37 2c 20  23 31 0d 32 f0 14 20 43  | R7,R7, #1.2.. C|
00006880  4d 50 20 20 20 20 20 52  37 2c 20 23 31 35 0d 32  |MP     R7, #15.2|
00006890  fa 13 20 4d 4f 56 47 45  20 20 20 52 31 2c 20 23  |.. MOVGE   R1, #|
000068a0  30 0d 33 04 1b 20 4c 44  4d 47 45 46 44 20 20 20  |0.3.. LDMGEFD   |
000068b0  52 31 33 21 2c 7b 52 39  2c 50 43 7d 0d 33 0e 1b  |R13!,{R9,PC}.3..|
000068c0  20 42 49 43 20 20 20 20  20 52 36 2c 52 36 2c 20  | BIC     R6,R6, |
000068d0  23 32 35 35 3c 3c 38 0d  33 18 1c 20 84 52 20 20  |#255<<8.3.. .R  |
000068e0  20 20 20 52 36 2c 52 36  2c 52 37 2c 20 41 53 4c  |   R6,R6,R7, ASL|
000068f0  20 23 38 0d 33 22 16 20  41 44 44 20 20 20 20 20  | #8.3". ADD     |
00006900  52 37 2c 52 37 2c 20 23  38 0d 33 2c 06 20 3a 0d  |R7,R7, #8.3,. :.|
00006910  33 36 19 20 53 54 4d 46  44 20 20 20 52 31 33 21  |36. STMFD   R13!|
00006920  2c 7b 52 31 2d 52 36 7d  0d 33 40 06 20 3a 0d 33  |,{R1-R6}.3@. :.3|
00006930  4a 18 20 42 4c 20 20 20  20 20 20 63 68 65 63 6b  |J. BL      check|
00006940  5f 64 65 61 74 68 0d 33  54 06 20 3a 0d 33 5e 1a  |_death.3T. :.3^.|
00006950  20 4d 4f 56 20 20 20 20  20 52 32 2c 52 32 2c 20  | MOV     R2,R2, |
00006960  41 53 52 20 23 34 0d 33  68 1a 20 4d 4f 56 20 20  |ASR #4.3h. MOV  |
00006970  20 20 20 52 33 2c 52 33  2c 20 41 53 52 20 23 34  |   R3,R3, ASR #4|
00006980  0d 33 72 18 20 52 53 42  20 20 20 20 20 52 33 2c  |.3r. RSB     R3,|
00006990  52 33 2c 20 23 32 35 36  0d 33 7c 1c 20 4c 44 52  |R3, #256.3|. LDR|
000069a0  20 20 20 20 20 52 34 2c  20 73 63 72 65 65 6e 73  |     R4, screens|
000069b0  74 6f 72 65 0d 33 86 19  20 4d 4f 56 20 20 20 20  |tore.3.. MOV    |
000069c0  20 52 35 2c 20 23 79 5f  73 68 69 66 74 0d 33 90  | R5, #y_shift.3.|
000069d0  15 20 41 44 44 20 20 20  20 20 52 34 2c 52 34 2c  |. ADD     R4,R4,|
000069e0  52 32 0d 33 9a 18 20 4d  4c 41 20 20 20 20 20 52  |R2.3.. MLA     R|
000069f0  34 2c 52 35 2c 52 33 2c  52 34 0d 33 a4 18 20 4c  |4,R5,R3,R4.3.. L|
00006a00  44 52 42 20 20 20 20 52  30 2c 5b 52 34 2c 20 23  |DRB    R0,[R4, #|
00006a10  32 5d 0d 33 ae 13 20 43  4d 50 20 20 20 20 20 52  |2].3.. CMP     R|
00006a20  30 2c 20 23 30 0d 33 b8  11 20 ec 51 20 20 20 52  |0, #0.3.. .Q   R|
00006a30  31 30 2c 20 23 31 0d 33  c2 14 20 4d 4f 56 4e 45  |10, #1.3.. MOVNE|
00006a40  20 20 20 52 31 30 2c 20  23 30 0d 33 cc 17 20 42  |   R10, #0.3.. B|
00006a50  4e 45 20 20 20 20 20 6e  6f 5f 65 78 70 6c 6f 64  |NE     no_explod|
00006a60  65 0d 33 d6 18 20 52 53  42 20 20 20 20 20 52 33  |e.3.. RSB     R3|
00006a70  2c 52 33 2c 20 23 32 35  36 0d 33 e0 12 20 4d 4f  |,R3, #256.3.. MO|
00006a80  56 20 20 20 20 20 52 30  2c 52 37 0d 33 ea 16 20  |V     R0,R7.3.. |
00006a90  53 55 42 20 20 20 20 20  52 31 2c 52 32 2c 20 23  |SUB     R1,R2, #|
00006aa0  38 0d 33 f4 16 20 53 55  42 20 20 20 20 20 52 32  |8.3.. SUB     R2|
00006ab0  2c 52 33 2c 20 23 38 0d  33 fe 1d 20 42 4c 20 20  |,R3, #8.3.. BL  |
00006ac0  20 20 20 20 70 6c 6f 74  5f 73 70 72 69 74 65 5f  |    plot_sprite_|
00006ad0  32 30 31 36 0d 34 08 10  20 2e 6e 6f 5f 65 78 70  |2016.4.. .no_exp|
00006ae0  6c 6f 64 65 0d 34 12 06  20 3a 0d 34 1c 19 20 4c  |lode.4.. :.4.. L|
00006af0  44 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 31 2d  |DMFD   R13!,{R1-|
00006b00  52 36 7d 0d 34 26 14 20  43 4d 50 20 20 20 20 20  |R6}.4&. CMP     |
00006b10  52 31 30 2c 20 23 30 0d  34 30 19 20 4c 44 4d 46  |R10, #0.40. LDMF|
00006b20  44 20 20 20 52 31 33 21  2c 7b 52 39 2c 50 43 7d  |D   R13!,{R9,PC}|
00006b30  0d 34 3a 06 20 3a 0d 34  44 0c 20 2e 70 69 73 74  |.4:. :.4D. .pist|
00006b40  6f 6c 0d 34 4e 1a 20 53  54 4d 46 44 20 20 20 52  |ol.4N. STMFD   R|
00006b50  31 33 21 2c 7b 52 39 2c  52 31 34 7d 0d 34 58 06  |13!,{R9,R14}.4X.|
00006b60  20 3a 0d 34 62 15 20 41  44 44 20 20 20 20 20 52  | :.4b. ADD     R|
00006b70  32 2c 52 32 2c 52 34 0d  34 6c 15 20 41 44 44 20  |2,R2,R4.4l. ADD |
00006b80  20 20 20 20 52 33 2c 52  33 2c 52 35 0d 34 76 13  |    R3,R3,R5.4v.|
00006b90  20 43 4d 50 20 20 20 20  20 52 34 2c 20 23 30 0d  | CMP     R4, #0.|
00006ba0  34 80 13 20 4d 4f 56 4c  54 20 20 20 52 37 2c 20  |4.. MOVLT   R7, |
00006bb0  23 31 0d 34 8a 13 20 4d  4f 56 47 54 20 20 20 52  |#1.4.. MOVGT   R|
00006bc0  37 2c 20 23 30 0d 34 94  06 20 3a 0d 34 9e 19 20  |7, #0.4.. :.4.. |
00006bd0  53 54 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 31  |STMFD   R13!,{R1|
00006be0  2d 52 36 7d 0d 34 a8 06  20 3a 0d 34 b2 18 20 42  |-R6}.4.. :.4.. B|
00006bf0  4c 20 20 20 20 20 20 63  68 65 63 6b 5f 64 65 61  |L      check_dea|
00006c00  74 68 0d 34 bc 06 20 3a  0d 34 c6 1a 20 4d 4f 56  |th.4.. :.4.. MOV|
00006c10  20 20 20 20 20 52 32 2c  52 32 2c 20 41 53 52 20  |     R2,R2, ASR |
00006c20  23 34 0d 34 d0 1a 20 4d  4f 56 20 20 20 20 20 52  |#4.4.. MOV     R|
00006c30  33 2c 52 33 2c 20 41 53  52 20 23 34 0d 34 da 18  |3,R3, ASR #4.4..|
00006c40  20 52 53 42 20 20 20 20  20 52 33 2c 52 33 2c 20  | RSB     R3,R3, |
00006c50  23 32 35 36 0d 34 e4 1c  20 4c 44 52 20 20 20 20  |#256.4.. LDR    |
00006c60  20 52 34 2c 20 73 63 72  65 65 6e 73 74 6f 72 65  | R4, screenstore|
00006c70  0d 34 ee 19 20 4d 4f 56  20 20 20 20 20 52 35 2c  |.4.. MOV     R5,|
00006c80  20 23 79 5f 73 68 69 66  74 0d 34 f8 15 20 41 44  | #y_shift.4.. AD|
00006c90  44 20 20 20 20 20 52 34  2c 52 34 2c 52 32 0d 35  |D     R4,R4,R2.5|
00006ca0  02 18 20 4d 4c 41 20 20  20 20 20 52 34 2c 52 35  |.. MLA     R4,R5|
00006cb0  2c 52 33 2c 52 34 0d 35  0c 18 20 4c 44 52 42 20  |,R3,R4.5.. LDRB |
00006cc0  20 20 20 52 30 2c 5b 52  34 2c 20 23 32 5d 0d 35  |   R0,[R4, #2].5|
00006cd0  16 13 20 43 4d 50 20 20  20 20 20 52 30 2c 20 23  |.. CMP     R0, #|
00006ce0  30 0d 35 20 11 20 ec 51  20 20 20 52 31 30 2c 20  |0.5 . .Q   R10, |
00006cf0  23 31 0d 35 2a 14 20 4d  4f 56 4e 45 20 20 20 52  |#1.5*. MOVNE   R|
00006d00  31 30 2c 20 23 30 0d 35  34 16 20 42 4e 45 20 20  |10, #0.54. BNE  |
00006d10  20 20 20 6e 6f 5f 70 69  73 74 6f 6c 0d 35 3e 18  |   no_pistol.5>.|
00006d20  20 52 53 42 20 20 20 20  20 52 33 2c 52 33 2c 20  | RSB     R3,R3, |
00006d30  23 32 35 36 0d 35 48 12  20 4d 4f 56 20 20 20 20  |#256.5H. MOV    |
00006d40  20 52 30 2c 52 37 0d 35  52 16 20 53 55 42 20 20  | R0,R7.5R. SUB  |
00006d50  20 20 20 52 31 2c 52 32  2c 20 23 32 0d 35 5c 16  |   R1,R2, #2.5\.|
00006d60  20 53 55 42 20 20 20 20  20 52 32 2c 52 33 2c 20  | SUB     R2,R3, |
00006d70  23 32 0d 35 66 1d 20 42  4c 20 20 20 20 20 20 70  |#2.5f. BL      p|
00006d80  6c 6f 74 5f 73 70 72 69  74 65 5f 30 38 30 34 0d  |lot_sprite_0804.|
00006d90  35 70 1d 3b 4c 44 52 20  20 20 20 20 52 30 2c 20  |5p.;LDR     R0, |
00006da0  61 64 72 5f 67 75 6e 5f  66 61 64 65 0d 35 7a 15  |adr_gun_fade.5z.|
00006db0  3b 4d 4f 56 20 20 20 20  20 52 39 2c 20 23 32 35  |;MOV     R9, #25|
00006dc0  35 0d 35 84 17 3b 4c 44  52 42 20 20 20 20 52 30  |5.5..;LDRB    R0|
00006dd0  2c 5b 52 30 2c 52 39 5d  0d 35 8e 14 3b 53 54 52  |,[R0,R9].5..;STR|
00006de0  42 20 20 20 20 52 30 2c  5b 52 34 5d 0d 35 98 18  |B    R0,[R4].5..|
00006df0  3b 53 54 52 42 20 20 20  20 52 30 2c 5b 52 34 2c  |;STRB    R0,[R4,|
00006e00  20 23 31 5d 0d 35 a2 0f  20 2e 6e 6f 5f 70 69 73  | #1].5.. .no_pis|
00006e10  74 6f 6c 0d 35 ac 06 20  3a 0d 35 b6 19 20 4c 44  |tol.5.. :.5.. LD|
00006e20  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 31 2d 52  |MFD   R13!,{R1-R|
00006e30  36 7d 0d 35 c0 14 20 43  4d 50 20 20 20 20 20 52  |6}.5.. CMP     R|
00006e40  31 30 2c 20 23 30 0d 35  ca 10 20 ec 51 20 20 20  |10, #0.5.. .Q   |
00006e50  52 31 2c 20 23 30 0d 35  d4 19 20 4c 44 4d 46 44  |R1, #0.5.. LDMFD|
00006e60  20 20 20 52 31 33 21 2c  7b 52 39 2c 50 43 7d 0d  |   R13!,{R9,PC}.|
00006e70  35 de 06 20 3a 0d 35 e8  09 20 2e 67 75 6e 0d 35  |5.. :.5.. .gun.5|
00006e80  f2 1a 20 53 54 4d 46 44  20 20 20 52 31 33 21 2c  |.. STMFD   R13!,|
00006e90  7b 52 39 2c 52 31 34 7d  0d 35 fc 06 20 3a 0d 36  |{R9,R14}.5.. :.6|
00006ea0  06 15 20 41 44 44 20 20  20 20 20 52 32 2c 52 32  |.. ADD     R2,R2|
00006eb0  2c 52 34 0d 36 10 15 20  41 44 44 20 20 20 20 20  |,R4.6.. ADD     |
00006ec0  52 33 2c 52 33 2c 52 35  0d 36 1a 13 20 43 4d 50  |R3,R3,R5.6.. CMP|
00006ed0  20 20 20 20 20 52 34 2c  20 23 30 0d 36 24 13 20  |     R4, #0.6$. |
00006ee0  4d 4f 56 4c 54 20 20 20  52 37 2c 20 23 33 0d 36  |MOVLT   R7, #3.6|
00006ef0  2e 13 20 4d 4f 56 47 54  20 20 20 52 37 2c 20 23  |.. MOVGT   R7, #|
00006f00  32 0d 36 38 06 20 3a 0d  36 42 19 20 53 54 4d 46  |2.68. :.6B. STMF|
00006f10  44 20 20 20 52 31 33 21  2c 7b 52 31 2d 52 36 7d  |D   R13!,{R1-R6}|
00006f20  0d 36 4c 06 20 3a 0d 36  56 13 20 4d 4f 56 20 20  |.6L. :.6V. MOV  |
00006f30  20 20 20 52 36 2c 20 23  30 0d 36 60 18 20 42 4c  |   R6, #0.6`. BL|
00006f40  20 20 20 20 20 20 63 68  65 63 6b 5f 64 65 61 74  |      check_deat|
00006f50  68 0d 36 6a 13 20 4d 4f  56 20 20 20 20 20 52 36  |h.6j. MOV     R6|
00006f60  2c 20 23 31 0d 36 74 18  20 42 4c 20 20 20 20 20  |, #1.6t. BL     |
00006f70  20 63 68 65 63 6b 5f 64  65 61 74 68 0d 36 7e 06  | check_death.6~.|
00006f80  20 3a 0d 36 88 1a 20 4d  4f 56 20 20 20 20 20 52  | :.6.. MOV     R|
00006f90  32 2c 52 32 2c 20 41 53  52 20 23 34 0d 36 92 1a  |2,R2, ASR #4.6..|
00006fa0  20 4d 4f 56 20 20 20 20  20 52 33 2c 52 33 2c 20  | MOV     R3,R3, |
00006fb0  41 53 52 20 23 34 0d 36  9c 18 20 52 53 42 20 20  |ASR #4.6.. RSB  |
00006fc0  20 20 20 52 33 2c 52 33  2c 20 23 32 35 36 0d 36  |   R3,R3, #256.6|
00006fd0  a6 1c 20 4c 44 52 20 20  20 20 20 52 34 2c 20 73  |.. LDR     R4, s|
00006fe0  63 72 65 65 6e 73 74 6f  72 65 0d 36 b0 19 20 4d  |creenstore.6.. M|
00006ff0  4f 56 20 20 20 20 20 52  35 2c 20 23 79 5f 73 68  |OV     R5, #y_sh|
00007000  69 66 74 0d 36 ba 15 20  41 44 44 20 20 20 20 20  |ift.6.. ADD     |
00007010  52 34 2c 52 34 2c 52 32  0d 36 c4 18 20 4d 4c 41  |R4,R4,R2.6.. MLA|
00007020  20 20 20 20 20 52 34 2c  52 35 2c 52 33 2c 52 34  |     R4,R5,R3,R4|
00007030  0d 36 ce 14 20 4c 44 52  42 20 20 20 20 52 30 2c  |.6.. LDRB    R0,|
00007040  5b 52 34 5d 0d 36 d8 13  20 43 4d 50 20 20 20 20  |[R4].6.. CMP    |
00007050  20 52 30 2c 20 23 30 0d  36 e2 11 20 ec 51 20 20  | R0, #0.6.. .Q  |
00007060  20 52 31 30 2c 20 23 31  0d 36 ec 14 20 4d 4f 56  | R10, #1.6.. MOV|
00007070  4e 45 20 20 20 52 31 30  2c 20 23 30 0d 36 f6 13  |NE   R10, #0.6..|
00007080  20 42 4e 45 20 20 20 20  20 6e 6f 5f 67 75 6e 0d  | BNE     no_gun.|
00007090  37 00 18 20 52 53 42 20  20 20 20 20 52 33 2c 52  |7.. RSB     R3,R|
000070a0  33 2c 20 23 32 35 36 0d  37 0a 12 20 4d 4f 56 20  |3, #256.7.. MOV |
000070b0  20 20 20 20 52 30 2c 52  37 0d 37 14 16 20 53 55  |    R0,R7.7.. SU|
000070c0  42 20 20 20 20 20 52 31  2c 52 32 2c 20 23 32 0d  |B     R1,R2, #2.|
000070d0  37 1e 16 20 53 55 42 20  20 20 20 20 52 32 2c 52  |7.. SUB     R2,R|
000070e0  33 2c 20 23 32 0d 37 28  1d 20 42 4c 20 20 20 20  |3, #2.7(. BL    |
000070f0  20 20 70 6c 6f 74 5f 73  70 72 69 74 65 5f 30 38  |  plot_sprite_08|
00007100  30 34 0d 37 32 1d 3b 4c  44 52 20 20 20 20 20 52  |04.72.;LDR     R|
00007110  30 2c 20 61 64 72 5f 67  75 6e 5f 66 61 64 65 0d  |0, adr_gun_fade.|
00007120  37 3c 15 3b 4d 4f 56 20  20 20 20 20 52 39 2c 20  |7<.;MOV     R9, |
00007130  23 32 35 35 0d 37 46 17  3b 4c 44 52 42 20 20 20  |#255.7F.;LDRB   |
00007140  20 52 30 2c 5b 52 30 2c  52 39 5d 0d 37 50 14 3b  | R0,[R0,R9].7P.;|
00007150  53 54 52 42 20 20 20 20  52 30 2c 5b 52 34 5d 0d  |STRB    R0,[R4].|
00007160  37 5a 0c 20 2e 6e 6f 5f  67 75 6e 0d 37 64 06 20  |7Z. .no_gun.7d. |
00007170  3a 0d 37 6e 19 20 4c 44  4d 46 44 20 20 20 52 31  |:.7n. LDMFD   R1|
00007180  33 21 2c 7b 52 31 2d 52  36 7d 0d 37 78 14 20 43  |3!,{R1-R6}.7x. C|
00007190  4d 50 20 20 20 20 20 52  31 30 2c 20 23 30 0d 37  |MP     R10, #0.7|
000071a0  82 10 20 ec 51 20 20 20  52 31 2c 20 23 30 0d 37  |.. .Q   R1, #0.7|
000071b0  8c 19 20 4c 44 4d 46 44  20 20 20 52 31 33 21 2c  |.. LDMFD   R13!,|
000071c0  7b 52 39 2c 50 43 7d 0d  37 96 06 20 3a 0d 37 a0  |{R9,PC}.7.. :.7.|
000071d0  0c 20 2e 6d 6f 72 74 61  72 0d 37 aa 1a 20 53 54  |. .mortar.7.. ST|
000071e0  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 39 2c 52  |MFD   R13!,{R9,R|
000071f0  31 34 7d 0d 37 b4 06 20  3a 0d 37 be 16 20 53 55  |14}.7.. :.7.. SU|
00007200  42 20 20 20 20 20 52 35  2c 52 35 2c 20 23 31 0d  |B     R5,R5, #1.|
00007210  37 c8 14 20 4d 4f 56 20  20 20 20 20 52 30 2c 20  |7.. MOV     R0, |
00007220  23 33 32 0d 37 d2 16 20  52 53 42 20 20 20 20 20  |#32.7.. RSB     |
00007230  52 30 2c 52 30 2c 20 23  30 0d 37 dc 12 20 43 4d  |R0,R0, #0.7.. CM|
00007240  50 20 20 20 20 20 52 35  2c 52 30 0d 37 e6 12 20  |P     R5,R0.7.. |
00007250  4d 4f 56 4c 54 20 20 20  52 35 2c 52 30 0d 37 f0  |MOVLT   R5,R0.7.|
00007260  15 20 41 44 44 20 20 20  20 20 52 32 2c 52 32 2c  |. ADD     R2,R2,|
00007270  52 34 0d 37 fa 15 20 41  44 44 20 20 20 20 20 52  |R4.7.. ADD     R|
00007280  33 2c 52 33 2c 52 35 0d  38 04 06 20 3a 0d 38 0e  |3,R3,R5.8.. :.8.|
00007290  19 20 53 54 4d 46 44 20  20 20 52 31 33 21 2c 7b  |. STMFD   R13!,{|
000072a0  52 31 2d 52 36 7d 0d 38  18 06 20 3a 0d 38 22 18  |R1-R6}.8.. :.8".|
000072b0  20 42 4c 20 20 20 20 20  20 63 68 65 63 6b 5f 64  | BL      check_d|
000072c0  65 61 74 68 0d 38 2c 06  20 3a 0d 38 36 1a 20 4d  |eath.8,. :.86. M|
000072d0  4f 56 20 20 20 20 20 52  32 2c 52 32 2c 20 41 53  |OV     R2,R2, AS|
000072e0  52 20 23 34 0d 38 40 1a  20 4d 4f 56 20 20 20 20  |R #4.8@. MOV    |
000072f0  20 52 33 2c 52 33 2c 20  41 53 52 20 23 34 0d 38  | R3,R3, ASR #4.8|
00007300  4a 18 20 52 53 42 20 20  20 20 20 52 33 2c 52 33  |J. RSB     R3,R3|
00007310  2c 20 23 32 35 36 0d 38  54 1c 20 4c 44 52 20 20  |, #256.8T. LDR  |
00007320  20 20 20 52 34 2c 20 73  63 72 65 65 6e 73 74 6f  |   R4, screensto|
00007330  72 65 0d 38 5e 19 20 4d  4f 56 20 20 20 20 20 52  |re.8^. MOV     R|
00007340  35 2c 20 23 79 5f 73 68  69 66 74 0d 38 68 15 20  |5, #y_shift.8h. |
00007350  41 44 44 20 20 20 20 20  52 34 2c 52 34 2c 52 32  |ADD     R4,R4,R2|
00007360  0d 38 72 18 20 4d 4c 41  20 20 20 20 20 52 34 2c  |.8r. MLA     R4,|
00007370  52 35 2c 52 33 2c 52 34  0d 38 7c 14 20 4c 44 52  |R5,R3,R4.8|. LDR|
00007380  42 20 20 20 20 52 30 2c  5b 52 34 5d 0d 38 86 13  |B    R0,[R4].8..|
00007390  20 43 4d 50 20 20 20 20  20 52 30 2c 20 23 30 0d  | CMP     R0, #0.|
000073a0  38 90 11 20 ec 51 20 20  20 52 31 30 2c 20 23 31  |8.. .Q   R10, #1|
000073b0  0d 38 9a 14 20 4d 4f 56  4e 45 20 20 20 52 31 30  |.8.. MOVNE   R10|
000073c0  2c 20 23 30 0d 38 a4 12  20 ec 51 20 20 20 52 30  |, #0.8.. .Q   R0|
000073d0  2c 20 23 32 35 35 0d 38  ae 14 20 53 54 52 45 51  |, #255.8.. STREQ|
000073e0  42 20 20 52 30 2c 5b 52  34 5d 0d 38 b8 18 20 53  |B  R0,[R4].8.. S|
000073f0  54 52 45 51 42 20 20 52  30 2c 5b 52 34 2c 20 23  |TREQB  R0,[R4, #|
00007400  31 5d 0d 38 c2 1c 20 41  44 44 20 20 20 20 20 52  |1].8.. ADD     R|
00007410  32 2c 52 34 2c 20 23 79  5f 73 68 69 66 74 0d 38  |2,R4, #y_shift.8|
00007420  cc 14 20 53 54 52 45 51  42 20 20 52 30 2c 5b 52  |.. STREQB  R0,[R|
00007430  32 5d 0d 38 d6 18 20 53  54 52 45 51 42 20 20 52  |2].8.. STREQB  R|
00007440  30 2c 5b 52 32 2c 20 23  31 5d 0d 38 e0 06 20 3a  |0,[R2, #1].8.. :|
00007450  0d 38 ea 19 20 4c 44 4d  46 44 20 20 20 52 31 33  |.8.. LDMFD   R13|
00007460  21 2c 7b 52 31 2d 52 36  7d 0d 38 f4 14 20 43 4d  |!,{R1-R6}.8.. CM|
00007470  50 20 20 20 20 20 52 31  30 2c 20 23 30 0d 38 fe  |P     R10, #0.8.|
00007480  17 20 42 4e 45 20 20 20  20 20 65 6e 64 5f 6d 6f  |. BNE     end_mo|
00007490  72 74 61 72 0d 39 08 1d  20 53 55 42 20 20 20 20  |rtar.9.. SUB    |
000074a0  20 52 32 2c 52 32 2c 52  34 2c 20 41 53 4c 20 23  | R2,R2,R4, ASL #|
000074b0  31 0d 39 12 1d 20 53 55  42 20 20 20 20 20 52 33  |1.9.. SUB     R3|
000074c0  2c 52 33 2c 52 35 2c 20  41 53 4c 20 23 31 0d 39  |,R3,R5, ASL #1.9|
000074d0  1c 1a 20 4d 4f 56 20 20  20 20 20 52 31 2c 52 32  |.. MOV     R1,R2|
000074e0  2c 20 41 53 52 20 23 34  0d 39 26 1a 20 4d 4f 56  |, ASR #4.9&. MOV|
000074f0  20 20 20 20 20 52 32 2c  52 33 2c 20 41 53 52 20  |     R2,R3, ASR |
00007500  23 34 0d 39 30 18 20 52  53 42 20 20 20 20 20 52  |#4.90. RSB     R|
00007510  32 2c 52 32 2c 20 23 32  35 36 0d 39 3a 13 20 4d  |2,R2, #256.9:. M|
00007520  4f 56 20 20 20 20 20 52  39 2c 20 23 30 0d 39 44  |OV     R9, #0.9D|
00007530  25 20 4c 44 52 20 20 20  20 20 52 31 30 2c 20 61  |% LDR     R10, a|
00007540  64 72 5f 65 78 70 6c 6f  73 69 6f 6e 5f 73 70 72  |dr_explosion_spr|
00007550  61 79 0d 39 4e 13 20 4d  4f 56 20 20 20 20 20 52  |ay.9N. MOV     R|
00007560  30 2c 20 23 38 0d 39 58  14 20 4c 44 52 20 20 20  |0, #8.9X. LDR   |
00007570  20 20 52 38 2c 20 72 6e  64 0d 39 62 14 20 80 20  |  R8, rnd.9b. . |
00007580  20 20 20 20 52 38 2c 52  38 2c 20 23 37 0d 39 6c  |    R8,R8, #7.9l|
00007590  17 20 4d 4f 56 20 20 20  20 20 52 36 2c 20 23 31  |. MOV     R6, #1|
000075a0  36 3c 3c 38 0d 39 76 14  20 4d 4f 56 20 20 20 20  |6<<8.9v. MOV    |
000075b0  20 52 35 2c 20 23 33 32  0d 39 80 12 20 2e 6d 6f  | R5, #32.9.. .mo|
000075c0  72 74 61 72 5f 6c 6f 6f  70 31 0d 39 8a 19 20 4c  |rtar_loop1.9.. L|
000075d0  44 52 42 20 20 20 20 52  33 2c 5b 52 31 30 5d 2c  |DRB    R3,[R10],|
000075e0  20 23 31 0d 39 94 19 20  4c 44 52 42 20 20 20 20  | #1.9.. LDRB    |
000075f0  52 34 2c 5b 52 31 30 5d  2c 20 23 31 0d 39 9e 1b  |R4,[R10], #1.9..|
00007600  20 4d 4f 56 20 20 20 20  20 52 33 2c 52 33 2c 20  | MOV     R3,R3, |
00007610  4c 53 4c 20 23 32 34 0d  39 a8 1b 20 4d 4f 56 20  |LSL #24.9.. MOV |
00007620  20 20 20 20 52 34 2c 52  34 2c 20 4c 53 4c 20 23  |    R4,R4, LSL #|
00007630  32 34 0d 39 b2 1b 20 4d  4f 56 20 20 20 20 20 52  |24.9.. MOV     R|
00007640  33 2c 52 33 2c 20 41 53  52 20 23 32 34 0d 39 bc  |3,R3, ASR #24.9.|
00007650  1b 20 4d 4f 56 20 20 20  20 20 52 34 2c 52 34 2c  |. MOV     R4,R4,|
00007660  20 41 53 52 20 23 32 34  0d 39 c6 14 20 82 20 20  | ASR #24.9.. .  |
00007670  20 20 20 52 33 2c 52 33  2c 20 52 38 0d 39 d0 14  |   R3,R3, R8.9..|
00007680  20 82 20 20 20 20 20 52  34 2c 52 34 2c 20 52 38  | .     R4,R4, R8|
00007690  0d 39 da 1a 20 4d 4f 56  20 20 20 20 20 52 33 2c  |.9.. MOV     R3,|
000076a0  52 33 2c 20 41 53 52 20  23 31 0d 39 e4 1a 20 4d  |R3, ASR #1.9.. M|
000076b0  4f 56 20 20 20 20 20 52  34 2c 52 34 2c 20 41 53  |OV     R4,R4, AS|
000076c0  52 20 23 31 0d 39 ee 1d  20 53 55 42 20 20 20 20  |R #1.9.. SUB    |
000076d0  20 52 33 2c 52 33 2c 52  33 2c 20 41 53 52 20 23  | R3,R3,R3, ASR #|
000076e0  32 0d 39 f8 1d 20 53 55  42 20 20 20 20 20 52 34  |2.9.. SUB     R4|
000076f0  2c 52 34 2c 52 34 2c 20  41 53 52 20 23 32 0d 3a  |,R4,R4, ASR #2.:|
00007700  02 1d 20 41 44 44 20 20  20 20 20 52 36 2c 52 36  |.. ADD     R6,R6|
00007710  2c 52 33 2c 20 41 53 4c  20 23 38 0d 3a 0c 1d 20  |,R3, ASL #8.:.. |
00007720  41 44 44 20 20 20 20 20  52 36 2c 52 36 2c 52 34  |ADD     R6,R6,R4|
00007730  2c 20 41 53 4c 20 23 38  0d 3a 16 18 20 80 20 20  |, ASL #8.:.. .  |
00007740  20 20 20 52 36 2c 52 36  2c 20 23 33 31 3c 3c 38  |   R6,R6, #31<<8|
00007750  0d 3a 20 15 20 42 4c 20  20 20 20 20 20 61 64 64  |.: . BL      add|
00007760  5f 63 65 6c 6c 0d 3a 2a  13 20 43 4d 50 20 20 20  |_cell.:*. CMP   |
00007770  20 20 52 39 2c 20 23 38  0d 3a 34 10 20 ec 51 20  |  R9, #8.:4. .Q |
00007780  20 20 52 30 2c 20 23 39  0d 3a 3e 12 20 4d 4f 56  |  R0, #9.:>. MOV|
00007790  47 45 20 20 20 52 35 2c  52 36 0d 3a 48 16 20 41  |GE   R5,R6.:H. A|
000077a0  44 44 20 20 20 20 20 52  39 2c 52 39 2c 20 23 31  |DD     R9,R9, #1|
000077b0  0d 3a 52 14 20 43 4d 50  20 20 20 20 20 52 39 2c  |.:R. CMP     R9,|
000077c0  20 23 31 36 0d 3a 5c 19  20 42 4c 45 20 20 20 20  | #16.:\. BLE    |
000077d0  20 6d 6f 72 74 61 72 5f  6c 6f 6f 70 31 0d 3a 66  | mortar_loop1.:f|
000077e0  13 20 4d 4f 56 20 20 20  20 20 52 35 2c 20 23 31  |. MOV     R5, #1|
000077f0  0d 3a 70 13 20 4d 4f 56  20 20 20 20 20 52 30 2c  |.:p. MOV     R0,|
00007800  20 23 31 0d 3a 7a 13 20  4d 56 4e 20 20 20 20 20  | #1.:z. MVN     |
00007810  52 31 2c 20 23 38 0d 3a  84 17 20 4d 4f 56 20 20  |R1, #8.:.. MOV  |
00007820  20 20 20 52 32 2c 20 23  62 6f 6f 6d 25 0d 3a 8e  |   R2, #boom%.:.|
00007830  13 20 4d 4f 56 20 20 20  20 20 52 33 2c 20 23 30  |. MOV     R3, #0|
00007840  0d 3a 98 1c 20 53 57 49  20 20 20 20 20 22 53 6f  |.:.. SWI     "So|
00007850  75 6e 64 5f 43 6f 6e 74  72 6f 6c 22 0d 3a a2 13  |und_Control".:..|
00007860  20 4d 4f 56 20 20 20 20  20 52 31 2c 20 23 30 0d  | MOV     R1, #0.|
00007870  3a ac 10 20 2e 65 6e 64  5f 6d 6f 72 74 61 72 0d  |:.. .end_mortar.|
00007880  3a b6 06 20 3a 0d 3a c0  19 20 4c 44 4d 46 44 20  |:.. :.:.. LDMFD |
00007890  20 20 52 31 33 21 2c 7b  52 39 2c 50 43 7d 0d 3a  |  R13!,{R9,PC}.:|
000078a0  ca 06 20 3a 0d 3a d4 0d  20 2e 63 6c 75 73 74 65  |.. :.:.. .cluste|
000078b0  72 0d 3a de 1a 20 53 54  4d 46 44 20 20 20 52 31  |r.:.. STMFD   R1|
000078c0  33 21 2c 7b 52 39 2c 52  31 34 7d 0d 3a e8 06 20  |3!,{R9,R14}.:.. |
000078d0  3a 0d 3a f2 15 20 4d 56  4e 20 20 20 20 20 52 30  |:.:.. MVN     R0|
000078e0  2c 20 23 32 35 36 0d 3a  fc 12 20 43 4d 50 20 20  |, #256.:.. CMP  |
000078f0  20 20 20 52 35 2c 52 30  0d 3b 06 12 20 4d 4f 56  |   R5,R0.;.. MOV|
00007900  4c 54 20 20 20 52 35 2c  52 30 0d 3b 10 1d 20 41  |LT   R5,R0.;.. A|
00007910  44 44 20 20 20 20 20 52  32 2c 52 32 2c 52 34 2c  |DD     R2,R2,R4,|
00007920  20 41 53 52 20 23 33 0d  3b 1a 1d 20 41 44 44 20  | ASR #3.;.. ADD |
00007930  20 20 20 20 52 33 2c 52  33 2c 52 35 2c 20 41 53  |    R3,R3,R5, AS|
00007940  52 20 23 33 0d 3b 24 13  20 43 4d 50 20 20 20 20  |R #3.;$. CMP    |
00007950  20 52 34 2c 20 23 30 0d  3b 2e 16 20 41 44 44 4c  | R4, #0.;.. ADDL|
00007960  54 20 20 20 52 34 2c 52  34 2c 20 23 31 0d 3b 38  |T   R4,R4, #1.;8|
00007970  16 20 53 55 42 47 54 20  20 20 52 34 2c 52 34 2c  |. SUBGT   R4,R4,|
00007980  20 23 31 0d 3b 42 13 20  4d 4f 56 20 20 20 20 20  | #1.;B. MOV     |
00007990  52 31 30 2c 52 36 0d 3b  4c 06 20 3a 0d 3b 56 19  |R10,R6.;L. :.;V.|
000079a0  20 53 54 4d 46 44 20 20  20 52 31 33 21 2c 7b 52  | STMFD   R13!,{R|
000079b0  31 2d 52 36 7d 0d 3b 60  06 20 3a 0d 3b 6a 1a 20  |1-R6}.;`. :.;j. |
000079c0  4d 4f 56 20 20 20 20 20  52 32 2c 52 32 2c 20 41  |MOV     R2,R2, A|
000079d0  53 52 20 23 34 0d 3b 74  1a 20 4d 4f 56 20 20 20  |SR #4.;t. MOV   |
000079e0  20 20 52 33 2c 52 33 2c  20 41 53 52 20 23 34 0d  |  R3,R3, ASR #4.|
000079f0  3b 7e 18 20 52 53 42 20  20 20 20 20 52 33 2c 52  |;~. RSB     R3,R|
00007a00  33 2c 20 23 32 35 36 0d  3b 88 1c 20 4c 44 52 20  |3, #256.;.. LDR |
00007a10  20 20 20 20 52 34 2c 20  73 63 72 65 65 6e 73 74  |    R4, screenst|
00007a20  6f 72 65 0d 3b 92 19 20  4d 4f 56 20 20 20 20 20  |ore.;.. MOV     |
00007a30  52 35 2c 20 23 79 5f 73  68 69 66 74 0d 3b 9c 15  |R5, #y_shift.;..|
00007a40  20 41 44 44 20 20 20 20  20 52 34 2c 52 34 2c 52  | ADD     R4,R4,R|
00007a50  32 0d 3b a6 18 20 4d 4c  41 20 20 20 20 20 52 34  |2.;.. MLA     R4|
00007a60  2c 52 35 2c 52 33 2c 52  34 0d 3b b0 18 20 4c 44  |,R5,R3,R4.;.. LD|
00007a70  52 42 20 20 20 20 52 30  2c 5b 52 34 2c 20 23 34  |RB    R0,[R4, #4|
00007a80  5d 0d 3b ba 13 20 43 4d  50 20 20 20 20 20 52 30  |].;.. CMP     R0|
00007a90  2c 20 23 30 0d 3b c4 18  20 53 55 42 4e 45 20 20  |, #0.;.. SUBNE  |
00007aa0  20 52 31 30 2c 52 31 30  2c 20 23 31 0d 3b ce 17  | R10,R10, #1.;..|
00007ab0  20 42 4e 45 20 20 20 20  20 6e 6f 5f 63 6c 75 73  | BNE     no_clus|
00007ac0  74 65 72 0d 3b d8 18 20  52 53 42 20 20 20 20 20  |ter.;.. RSB     |
00007ad0  52 33 2c 52 33 2c 20 23  32 35 36 0d 3b e2 14 20  |R3,R3, #256.;.. |
00007ae0  4d 4f 56 20 20 20 20 20  52 30 2c 20 23 31 38 0d  |MOV     R0, #18.|
00007af0  3b ec 16 20 53 55 42 20  20 20 20 20 52 31 2c 52  |;.. SUB     R1,R|
00007b00  32 2c 20 23 34 0d 3b f6  16 20 53 55 42 20 20 20  |2, #4.;.. SUB   |
00007b10  20 20 52 32 2c 52 33 2c  20 23 34 0d 3c 00 1d 20  |  R2,R3, #4.<.. |
00007b20  42 4c 20 20 20 20 20 20  70 6c 6f 74 5f 73 70 72  |BL      plot_spr|
00007b30  69 74 65 5f 31 32 30 38  0d 3c 0a 10 20 2e 6e 6f  |ite_1208.<.. .no|
00007b40  5f 63 6c 75 73 74 65 72  0d 3c 14 06 20 3a 0d 3c  |_cluster.<.. :.<|
00007b50  1e 19 20 4c 44 4d 46 44  20 20 20 52 31 33 21 2c  |.. LDMFD   R13!,|
00007b60  7b 52 31 2d 52 36 7d 0d  3c 28 20 20 43 4d 50 20  |{R1-R6}.<(  CMP |
00007b70  20 20 20 20 52 31 30 2c  20 23 62 6f 6d 62 5f 70  |    R10, #bomb_p|
00007b80  61 75 73 65 25 2d 31 0d  3c 32 16 20 41 44 44 45  |ause%-1.<2. ADDE|
00007b90  51 20 20 20 52 33 2c 52  33 2c 20 23 34 0d 3c 3c  |Q   R3,R3, #4.<<|
00007ba0  13 20 43 4d 50 20 20 20  20 20 52 31 30 2c 52 36  |. CMP     R10,R6|
00007bb0  0d 3c 46 1d 20 53 55 42  4c 54 20 20 20 52 32 2c  |.<F. SUBLT   R2,|
00007bc0  52 32 2c 52 34 2c 20 41  53 52 20 23 32 0d 3c 50  |R2,R4, ASR #2.<P|
00007bd0  1d 20 53 55 42 4c 54 20  20 20 52 33 2c 52 33 2c  |. SUBLT   R3,R3,|
00007be0  52 35 2c 20 41 53 52 20  23 32 0d 3c 5a 16 20 52  |R5, ASR #2.<Z. R|
00007bf0  53 42 4c 54 20 20 20 52  34 2c 52 34 2c 20 23 30  |SBLT   R4,R4, #0|
00007c00  0d 3c 64 16 20 52 53 42  4c 54 20 20 20 52 35 2c  |.<d. RSBLT   R5,|
00007c10  52 35 2c 20 23 30 0d 3c  6e 1a 20 4d 4f 56 4c 54  |R5, #0.<n. MOVLT|
00007c20  20 20 20 52 34 2c 52 34  2c 20 41 53 52 20 23 31  |   R4,R4, ASR #1|
00007c30  0d 3c 78 1a 20 4d 4f 56  4c 54 20 20 20 52 35 2c  |.<x. MOVLT   R5,|
00007c40  52 35 2c 20 41 53 52 20  23 31 0d 3c 82 16 20 53  |R5, ASR #1.<.. S|
00007c50  55 42 45 51 20 20 20 52  35 2c 52 35 2c 20 23 34  |UBEQ   R5,R5, #4|
00007c60  0d 3c 8c 13 20 4d 4f 56  47 54 20 20 20 52 35 2c  |.<.. MOVGT   R5,|
00007c70  20 23 30 0d 3c 96 13 20  4d 4f 56 20 20 20 20 20  | #0.<.. MOV     |
00007c80  52 36 2c 52 31 30 0d 3c  a0 13 20 43 4d 50 20 20  |R6,R10.<.. CMP  |
00007c90  20 20 20 52 36 2c 20 23  30 0d 3c aa 18 20 42 4e  |   R6, #0.<.. BN|
00007ca0  45 20 20 20 20 20 65 6e  64 5f 63 6c 75 73 74 65  |E     end_cluste|
00007cb0  72 0d 3c b4 06 20 3a 0d  3c be 1a 20 4d 4f 56 20  |r.<.. :.<.. MOV |
00007cc0  20 20 20 20 52 31 2c 52  32 2c 20 41 53 52 20 23  |    R1,R2, ASR #|
00007cd0  34 0d 3c c8 1a 20 4d 4f  56 20 20 20 20 20 52 32  |4.<.. MOV     R2|
00007ce0  2c 52 33 2c 20 41 53 52  20 23 34 0d 3c d2 18 20  |,R3, ASR #4.<.. |
00007cf0  52 53 42 20 20 20 20 20  52 32 2c 52 32 2c 20 23  |RSB     R2,R2, #|
00007d00  32 34 38 0d 3c dc 1d 20  4d 4f 56 20 20 20 20 20  |248.<.. MOV     |
00007d10  52 35 2c 20 23 62 6f 6d  62 5f 70 61 75 73 65 25  |R5, #bomb_pause%|
00007d20  0d 3c e6 13 20 4d 4f 56  20 20 20 20 20 52 39 2c  |.<.. MOV     R9,|
00007d30  20 23 30 0d 3c f0 14 20  4c 44 52 20 20 20 20 20  | #0.<.. LDR     |
00007d40  52 38 2c 20 72 6e 64 0d  3c fa 14 20 80 20 20 20  |R8, rnd.<.. .   |
00007d50  20 20 52 38 2c 52 38 2c  20 23 37 0d 3d 04 25 20  |  R8,R8, #7.=.% |
00007d60  4c 44 52 20 20 20 20 20  52 31 30 2c 20 61 64 72  |LDR     R10, adr|
00007d70  5f 65 78 70 6c 6f 73 69  6f 6e 5f 73 70 72 61 79  |_explosion_spray|
00007d80  0d 3d 0e 13 20 2e 63 6c  75 73 74 65 72 5f 6c 6f  |.=.. .cluster_lo|
00007d90  6f 70 31 0d 3d 18 19 20  4c 44 52 42 20 20 20 20  |op1.=.. LDRB    |
00007da0  52 33 2c 5b 52 31 30 5d  2c 20 23 31 0d 3d 22 19  |R3,[R10], #1.=".|
00007db0  20 4c 44 52 42 20 20 20  20 52 34 2c 5b 52 31 30  | LDRB    R4,[R10|
00007dc0  5d 2c 20 23 31 0d 3d 2c  13 20 4d 4f 56 20 20 20  |], #1.=,. MOV   |
00007dd0  20 20 52 30 2c 20 23 34  0d 3d 36 14 20 54 53 54  |  R0, #4.=6. TST|
00007de0  45 51 20 20 20 52 33 2c  20 23 25 31 0d 3d 40 11  |EQ   R3, #%1.=@.|
00007df0  20 ec 51 20 20 20 52 30  2c 20 23 31 32 0d 3d 4a  | .Q   R0, #12.=J|
00007e00  1b 20 4d 4f 56 20 20 20  20 20 52 33 2c 52 33 2c  |. MOV     R3,R3,|
00007e10  20 4c 53 4c 20 23 32 34  0d 3d 54 1b 20 4d 4f 56  | LSL #24.=T. MOV|
00007e20  20 20 20 20 20 52 34 2c  52 34 2c 20 4c 53 4c 20  |     R4,R4, LSL |
00007e30  23 32 34 0d 3d 5e 1b 20  4d 4f 56 20 20 20 20 20  |#24.=^. MOV     |
00007e40  52 33 2c 52 33 2c 20 41  53 52 20 23 32 34 0d 3d  |R3,R3, ASR #24.=|
00007e50  68 1b 20 4d 4f 56 20 20  20 20 20 52 34 2c 52 34  |h. MOV     R4,R4|
00007e60  2c 20 41 53 52 20 23 32  34 0d 3d 72 14 20 82 20  |, ASR #24.=r. . |
00007e70  20 20 20 20 52 33 2c 52  33 2c 20 52 38 0d 3d 7c  |    R3,R3, R8.=||
00007e80  14 20 82 53 20 20 20 20  52 34 2c 52 34 2c 20 52  |. .S    R4,R4, R|
00007e90  38 0d 3d 86 16 20 52 53  42 4d 49 20 20 20 52 34  |8.=.. RSBMI   R4|
00007ea0  2c 52 34 2c 20 23 30 0d  3d 90 1d 20 53 55 42 20  |,R4, #0.=.. SUB |
00007eb0  20 20 20 20 52 33 2c 52  33 2c 52 33 2c 20 41 53  |    R3,R3,R3, AS|
00007ec0  52 20 23 32 0d 3d 9a 15  20 42 4c 20 20 20 20 20  |R #2.=.. BL     |
00007ed0  20 61 64 64 5f 63 65 6c  6c 0d 3d a4 16 20 41 44  | add_cell.=.. AD|
00007ee0  44 20 20 20 20 20 52 39  2c 52 39 2c 20 23 31 0d  |D     R9,R9, #1.|
00007ef0  3d ae 14 20 43 4d 50 20  20 20 20 20 52 39 2c 20  |=.. CMP     R9, |
00007f00  23 34 38 0d 3d b8 1a 20  42 4c 45 20 20 20 20 20  |#48.=.. BLE     |
00007f10  63 6c 75 73 74 65 72 5f  6c 6f 6f 70 31 0d 3d c2  |cluster_loop1.=.|
00007f20  13 20 4d 4f 56 20 20 20  20 20 52 35 2c 20 23 31  |. MOV     R5, #1|
00007f30  0d 3d cc 13 20 4d 4f 56  20 20 20 20 20 52 30 2c  |.=.. MOV     R0,|
00007f40  20 23 38 0d 3d d6 14 20  4d 56 4e 20 20 20 20 20  | #8.=.. MVN     |
00007f50  52 31 2c 20 23 31 34 0d  3d e0 21 20 4d 4f 56 20  |R1, #14.=.! MOV |
00007f60  20 20 20 20 52 32 2c 20  23 65 78 70 6c 6f 73 69  |    R2, #explosi|
00007f70  6f 6e 25 2a 30 2e 36 37  0d 3d ea 13 20 4d 4f 56  |on%*0.67.=.. MOV|
00007f80  20 20 20 20 20 52 33 2c  20 23 30 0d 3d f4 1c 20  |     R3, #0.=.. |
00007f90  53 57 49 20 20 20 20 20  22 53 6f 75 6e 64 5f 43  |SWI     "Sound_C|
00007fa0  6f 6e 74 72 6f 6c 22 0d  3d fe 13 20 4d 4f 56 20  |ontrol".=.. MOV |
00007fb0  20 20 20 20 52 31 2c 20  23 30 0d 3e 08 13 20 4d  |    R1, #0.>.. M|
00007fc0  4f 56 20 20 20 20 20 52  35 2c 20 23 30 0d 3e 12  |OV     R5, #0.>.|
00007fd0  11 20 2e 65 6e 64 5f 63  6c 75 73 74 65 72 0d 3e  |. .end_cluster.>|
00007fe0  1c 06 20 3a 0d 3e 26 19  20 4c 44 4d 46 44 20 20  |.. :.>&. LDMFD  |
00007ff0  20 52 31 33 21 2c 7b 52  39 2c 50 43 7d 0d 3e 30  | R13!,{R9,PC}.>0|
00008000  06 20 3a 0d 3e 3a 19 20  2e 61 64 72 5f 65 78 70  |. :.>:. .adr_exp|
00008010  6c 6f 73 69 6f 6e 5f 73  70 72 61 79 0d 3e 44 1c  |losion_spray.>D.|
00008020  20 45 51 55 44 20 20 20  20 65 78 70 6c 6f 73 69  | EQUD    explosi|
00008030  6f 6e 5f 73 70 72 61 79  0d 3e 4e 06 20 3a 0d 3e  |on_spray.>N. :.>|
00008040  58 0a 20 2e 62 6f 6d 62  0d 3e 62 1a 20 53 54 4d  |X. .bomb.>b. STM|
00008050  46 44 20 20 20 52 31 33  21 2c 7b 52 39 2c 52 31  |FD   R13!,{R9,R1|
00008060  34 7d 0d 3e 6c 06 20 3a  0d 3e 76 15 20 4d 4f 56  |4}.>l. :.>v. MOV|
00008070  20 20 20 20 20 52 30 2c  20 23 32 35 36 0d 3e 80  |     R0, #256.>.|
00008080  16 20 52 53 42 20 20 20  20 20 52 30 2c 52 30 2c  |. RSB     R0,R0,|
00008090  20 23 30 0d 3e 8a 12 20  43 4d 50 20 20 20 20 20  | #0.>.. CMP     |
000080a0  52 35 2c 52 30 0d 3e 94  12 20 4d 4f 56 4c 54 20  |R5,R0.>.. MOVLT |
000080b0  20 20 52 35 2c 52 30 0d  3e 9e 1d 20 41 44 44 20  |  R5,R0.>.. ADD |
000080c0  20 20 20 20 52 32 2c 52  32 2c 52 34 2c 20 41 53  |    R2,R2,R4, AS|
000080d0  52 20 23 32 0d 3e a8 1d  20 41 44 44 20 20 20 20  |R #2.>.. ADD    |
000080e0  20 52 33 2c 52 33 2c 52  35 2c 20 41 53 52 20 23  | R3,R3,R5, ASR #|
000080f0  32 0d 3e b2 13 20 4d 4f  56 20 20 20 20 20 52 31  |2.>.. MOV     R1|
00008100  30 2c 52 36 0d 3e bc 06  20 3a 0d 3e c6 19 20 53  |0,R6.>.. :.>.. S|
00008110  54 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 31 2d  |TMFD   R13!,{R1-|
00008120  52 36 7d 0d 3e d0 06 20  3a 0d 3e da 1a 20 4d 4f  |R6}.>.. :.>.. MO|
00008130  56 20 20 20 20 20 52 32  2c 52 32 2c 20 41 53 52  |V     R2,R2, ASR|
00008140  20 23 34 0d 3e e4 1a 20  4d 4f 56 20 20 20 20 20  | #4.>.. MOV     |
00008150  52 33 2c 52 33 2c 20 41  53 52 20 23 34 0d 3e ee  |R3,R3, ASR #4.>.|
00008160  18 20 52 53 42 20 20 20  20 20 52 33 2c 52 33 2c  |. RSB     R3,R3,|
00008170  20 23 32 35 36 0d 3e f8  20 20 4c 44 52 20 20 20  | #256.>.  LDR   |
00008180  20 20 52 34 2c 20 61 64  72 5f 73 63 72 65 65 6e  |  R4, adr_screen|
00008190  73 74 6f 72 65 0d 3f 02  14 20 4c 44 52 20 20 20  |store.?.. LDR   |
000081a0  20 20 52 34 2c 5b 52 34  5d 0d 3f 0c 19 20 4d 4f  |  R4,[R4].?.. MO|
000081b0  56 20 20 20 20 20 52 35  2c 20 23 79 5f 73 68 69  |V     R5, #y_shi|
000081c0  66 74 0d 3f 16 15 20 41  44 44 20 20 20 20 20 52  |ft.?.. ADD     R|
000081d0  34 2c 52 34 2c 52 32 0d  3f 20 18 20 4d 4c 41 20  |4,R4,R2.? . MLA |
000081e0  20 20 20 20 52 34 2c 52  35 2c 52 33 2c 52 34 0d  |    R4,R5,R3,R4.|
000081f0  3f 2a 1c 20 41 44 44 20  20 20 20 20 52 30 2c 52  |?*. ADD     R0,R|
00008200  34 2c 20 23 79 5f 73 68  69 66 74 0d 3f 34 14 20  |4, #y_shift.?4. |
00008210  4c 44 52 42 20 20 20 20  52 30 2c 5b 52 30 5d 0d  |LDRB    R0,[R0].|
00008220  3f 3e 13 20 43 4d 50 20  20 20 20 20 52 30 2c 20  |?>. CMP     R0, |
00008230  23 30 0d 3f 48 18 20 53  55 42 4e 45 20 20 20 52  |#0.?H. SUBNE   R|
00008240  31 30 2c 52 31 30 2c 20  23 31 0d 3f 52 1b 20 4d  |10,R10, #1.?R. M|
00008250  4f 56 20 20 20 20 20 52  30 2c 20 23 25 30 30 30  |OV     R0, #%000|
00008260  31 30 31 31 31 0d 3f 5c  1c 20 53 55 42 20 20 20  |10111.?\. SUB   |
00008270  20 20 52 34 2c 52 34 2c  20 23 79 5f 73 68 69 66  |  R4,R4, #y_shif|
00008280  74 0d 3f 66 18 20 53 54  52 42 20 20 20 20 52 30  |t.?f. STRB    R0|
00008290  2c 5b 52 34 2c 20 23 31  5d 0d 3f 70 1c 20 41 44  |,[R4, #1].?p. AD|
000082a0  44 20 20 20 20 20 52 34  2c 52 34 2c 20 23 79 5f  |D     R4,R4, #y_|
000082b0  73 68 69 66 74 0d 3f 7a  14 20 53 54 52 42 20 20  |shift.?z. STRB  |
000082c0  20 20 52 30 2c 5b 52 34  5d 0d 3f 84 18 20 53 54  |  R0,[R4].?.. ST|
000082d0  52 42 20 20 20 20 52 30  2c 5b 52 34 2c 20 23 31  |RB    R0,[R4, #1|
000082e0  5d 0d 3f 8e 18 20 53 54  52 42 20 20 20 20 52 30  |].?.. STRB    R0|
000082f0  2c 5b 52 34 2c 20 23 32  5d 0d 3f 98 06 20 3a 0d  |,[R4, #2].?.. :.|
00008300  3f a2 19 20 4c 44 4d 46  44 20 20 20 52 31 33 21  |?.. LDMFD   R13!|
00008310  2c 7b 52 31 2d 52 36 7d  0d 3f ac 20 20 43 4d 50  |,{R1-R6}.?.  CMP|
00008320  20 20 20 20 20 52 31 30  2c 20 23 62 6f 6d 62 5f  |     R10, #bomb_|
00008330  70 61 75 73 65 25 2d 31  0d 3f b6 16 20 41 44 44  |pause%-1.?.. ADD|
00008340  45 51 20 20 20 52 33 2c  52 33 2c 20 23 34 0d 3f  |EQ   R3,R3, #4.?|
00008350  c0 13 20 43 4d 50 20 20  20 20 20 52 31 30 2c 52  |.. CMP     R10,R|
00008360  36 0d 3f ca 1d 20 53 55  42 4c 54 20 20 20 52 32  |6.?.. SUBLT   R2|
00008370  2c 52 32 2c 52 34 2c 20  41 53 52 20 23 32 0d 3f  |,R2,R4, ASR #2.?|
00008380  d4 1d 20 53 55 42 4c 54  20 20 20 52 33 2c 52 33  |.. SUBLT   R3,R3|
00008390  2c 52 35 2c 20 41 53 52  20 23 32 0d 3f de 16 20  |,R5, ASR #2.?.. |
000083a0  52 53 42 4c 54 20 20 20  52 34 2c 52 34 2c 20 23  |RSBLT   R4,R4, #|
000083b0  30 0d 3f e8 16 20 52 53  42 4c 54 20 20 20 52 35  |0.?.. RSBLT   R5|
000083c0  2c 52 35 2c 20 23 30 0d  3f f2 1a 20 4d 4f 56 4c  |,R5, #0.?.. MOVL|
000083d0  54 20 20 20 52 34 2c 52  34 2c 20 41 53 52 20 23  |T   R4,R4, ASR #|
000083e0  31 0d 3f fc 1a 20 4d 4f  56 4c 54 20 20 20 52 35  |1.?.. MOVLT   R5|
000083f0  2c 52 35 2c 20 41 53 52  20 23 31 0d 40 06 16 20  |,R5, ASR #1.@.. |
00008400  53 55 42 45 51 20 20 20  52 35 2c 52 35 2c 20 23  |SUBEQ   R5,R5, #|
00008410  34 0d 40 10 13 20 4d 4f  56 47 54 20 20 20 52 35  |4.@.. MOVGT   R5|
00008420  2c 20 23 30 0d 40 1a 13  20 4d 4f 56 20 20 20 20  |, #0.@.. MOV    |
00008430  20 52 36 2c 52 31 30 0d  40 24 13 20 43 4d 50 20  | R6,R10.@$. CMP |
00008440  20 20 20 20 52 36 2c 20  23 30 0d 40 2e 15 20 42  |    R6, #0.@.. B|
00008450  4e 45 20 20 20 20 20 65  6e 64 5f 62 6f 6d 62 0d  |NE     end_bomb.|
00008460  40 38 1a 20 4d 4f 56 20  20 20 20 20 52 31 2c 52  |@8. MOV     R1,R|
00008470  32 2c 20 41 53 52 20 23  34 0d 40 42 1a 20 4d 4f  |2, ASR #4.@B. MO|
00008480  56 20 20 20 20 20 52 32  2c 52 33 2c 20 41 53 52  |V     R2,R3, ASR|
00008490  20 23 34 0d 40 4c 16 20  41 44 44 20 20 20 20 20  | #4.@L. ADD     |
000084a0  52 32 2c 52 32 2c 20 23  32 0d 40 56 18 20 52 53  |R2,R2, #2.@V. RS|
000084b0  42 20 20 20 20 20 52 32  2c 52 32 2c 20 23 32 35  |B     R2,R2, #25|
000084c0  36 0d 40 60 13 20 4d 4f  56 20 20 20 20 20 52 39  |6.@`. MOV     R9|
000084d0  2c 20 23 30 0d 40 6a 13  20 4d 4f 56 20 20 20 20  |, #0.@j. MOV    |
000084e0  20 52 30 2c 20 23 38 0d  40 74 14 20 4c 44 52 20  | R0, #8.@t. LDR |
000084f0  20 20 20 20 52 38 2c 20  72 6e 64 0d 40 7e 14 20  |    R8, rnd.@~. |
00008500  80 20 20 20 20 20 52 38  2c 52 38 2c 20 23 37 0d  |.     R8,R8, #7.|
00008510  40 88 17 20 4d 4f 56 20  20 20 20 20 52 36 2c 20  |@.. MOV     R6, |
00008520  23 31 36 3c 3c 38 0d 40  92 14 20 4d 4f 56 20 20  |#16<<8.@.. MOV  |
00008530  20 20 20 52 35 2c 20 23  33 32 0d 40 9c 21 20 41  |   R5, #32.@.! A|
00008540  44 52 20 20 20 20 20 52  31 30 2c 20 65 78 70 6c  |DR     R10, expl|
00008550  6f 73 69 6f 6e 5f 73 70  72 61 79 0d 40 a6 10 20  |osion_spray.@.. |
00008560  2e 62 6f 6d 62 5f 6c 6f  6f 70 31 0d 40 b0 19 20  |.bomb_loop1.@.. |
00008570  4c 44 52 42 20 20 20 20  52 33 2c 5b 52 31 30 5d  |LDRB    R3,[R10]|
00008580  2c 20 23 31 0d 40 ba 19  20 4c 44 52 42 20 20 20  |, #1.@.. LDRB   |
00008590  20 52 34 2c 5b 52 31 30  5d 2c 20 23 31 0d 40 c4  | R4,[R10], #1.@.|
000085a0  1b 20 4d 4f 56 20 20 20  20 20 52 33 2c 52 33 2c  |. MOV     R3,R3,|
000085b0  20 4c 53 4c 20 23 32 34  0d 40 ce 1b 20 4d 4f 56  | LSL #24.@.. MOV|
000085c0  20 20 20 20 20 52 34 2c  52 34 2c 20 4c 53 4c 20  |     R4,R4, LSL |
000085d0  23 32 34 0d 40 d8 1b 20  4d 4f 56 20 20 20 20 20  |#24.@.. MOV     |
000085e0  52 33 2c 52 33 2c 20 41  53 52 20 23 32 34 0d 40  |R3,R3, ASR #24.@|
000085f0  e2 1b 20 4d 4f 56 20 20  20 20 20 52 34 2c 52 34  |.. MOV     R4,R4|
00008600  2c 20 41 53 52 20 23 32  34 0d 40 ec 14 20 82 20  |, ASR #24.@.. . |
00008610  20 20 20 20 52 33 2c 52  33 2c 20 52 38 0d 40 f6  |    R3,R3, R8.@.|
00008620  14 20 82 20 20 20 20 20  52 34 2c 52 34 2c 20 52  |. .     R4,R4, R|
00008630  38 0d 41 00 1d 20 53 55  42 20 20 20 20 20 52 33  |8.A.. SUB     R3|
00008640  2c 52 33 2c 52 33 2c 20  41 53 52 20 23 31 0d 41  |,R3,R3, ASR #1.A|
00008650  0a 1d 20 53 55 42 20 20  20 20 20 52 34 2c 52 34  |.. SUB     R4,R4|
00008660  2c 52 34 2c 20 41 53 52  20 23 31 0d 41 14 1d 20  |,R4, ASR #1.A.. |
00008670  41 44 44 20 20 20 20 20  52 36 2c 52 36 2c 52 33  |ADD     R6,R6,R3|
00008680  2c 20 41 53 4c 20 23 38  0d 41 1e 1d 20 41 44 44  |, ASL #8.A.. ADD|
00008690  20 20 20 20 20 52 36 2c  52 36 2c 52 34 2c 20 41  |     R6,R6,R4, A|
000086a0  53 4c 20 23 38 0d 41 28  18 20 80 20 20 20 20 20  |SL #8.A(. .     |
000086b0  52 36 2c 52 36 2c 20 23  33 31 3c 3c 38 0d 41 32  |R6,R6, #31<<8.A2|
000086c0  15 20 42 4c 20 20 20 20  20 20 61 64 64 5f 63 65  |. BL      add_ce|
000086d0  6c 6c 0d 41 3c 14 20 43  4d 50 20 20 20 20 20 52  |ll.A<. CMP     R|
000086e0  39 2c 20 23 32 34 0d 41  46 10 20 ec 51 20 20 20  |9, #24.AF. .Q   |
000086f0  52 30 2c 20 23 39 0d 41  50 12 20 4d 4f 56 47 45  |R0, #9.AP. MOVGE|
00008700  20 20 20 52 35 2c 52 36  0d 41 5a 16 20 41 44 44  |   R5,R6.AZ. ADD|
00008710  20 20 20 20 20 52 39 2c  52 39 2c 20 23 31 0d 41  |     R9,R9, #1.A|
00008720  64 14 20 43 4d 50 20 20  20 20 20 52 39 2c 20 23  |d. CMP     R9, #|
00008730  33 32 0d 41 6e 17 20 42  4c 45 20 20 20 20 20 62  |32.An. BLE     b|
00008740  6f 6d 62 5f 6c 6f 6f 70  31 0d 41 78 13 20 4d 4f  |omb_loop1.Ax. MO|
00008750  56 20 20 20 20 20 52 35  2c 20 23 31 0d 41 82 13  |V     R5, #1.A..|
00008760  20 4d 4f 56 20 20 20 20  20 52 30 2c 20 23 31 0d  | MOV     R0, #1.|
00008770  41 8c 14 20 4d 56 4e 20  20 20 20 20 52 31 2c 20  |A.. MVN     R1, |
00008780  23 31 31 0d 41 96 17 20  4d 4f 56 20 20 20 20 20  |#11.A.. MOV     |
00008790  52 32 2c 20 23 62 6f 6f  6d 25 0d 41 a0 13 20 4d  |R2, #boom%.A.. M|
000087a0  4f 56 20 20 20 20 20 52  33 2c 20 23 30 0d 41 aa  |OV     R3, #0.A.|
000087b0  1c 20 53 57 49 20 20 20  20 20 22 53 6f 75 6e 64  |. SWI     "Sound|
000087c0  5f 43 6f 6e 74 72 6f 6c  22 0d 41 b4 13 20 4d 4f  |_Control".A.. MO|
000087d0  56 20 20 20 20 20 52 31  2c 20 23 30 0d 41 be 13  |V     R1, #0.A..|
000087e0  20 4d 4f 56 20 20 20 20  20 52 35 2c 20 23 30 0d  | MOV     R5, #0.|
000087f0  41 c8 0e 20 2e 65 6e 64  5f 62 6f 6d 62 0d 41 d2  |A.. .end_bomb.A.|
00008800  06 20 3a 0d 41 dc 19 20  4c 44 4d 46 44 20 20 20  |. :.A.. LDMFD   |
00008810  52 31 33 21 2c 7b 52 39  2c 50 43 7d 0d 41 e6 06  |R13!,{R9,PC}.A..|
00008820  20 3a 0d 41 f0 16 20 2e  61 64 72 5f 73 63 72 65  | :.A.. .adr_scre|
00008830  65 6e 73 74 6f 72 65 32  0d 41 fa 18 20 45 51 55  |enstore2.A.. EQU|
00008840  44 20 20 20 20 73 63 72  65 65 6e 73 74 6f 72 65  |D    screenstore|
00008850  0d 42 04 06 20 3a 0d 42  0e 0c 20 2e 68 6f 6d 69  |.B.. :.B.. .homi|
00008860  6e 67 0d 42 18 1a 20 53  54 4d 46 44 20 20 20 52  |ng.B.. STMFD   R|
00008870  31 33 21 2c 7b 52 39 2c  52 31 34 7d 0d 42 22 06  |13!,{R9,R14}.B".|
00008880  20 3a 0d 42 2c 1a 3b 4d  4f 56 20 20 20 20 20 52  | :.B,.;MOV     R|
00008890  39 2c 52 36 2c 20 4c 53  52 20 23 38 0d 42 36 16  |9,R6, LSR #8.B6.|
000088a0  3b 80 20 20 20 20 20 52  39 2c 52 39 2c 20 23 32  |;.     R9,R9, #2|
000088b0  35 35 0d 42 40 16 3b 53  55 42 20 20 20 20 20 52  |55.B@.;SUB     R|
000088c0  39 2c 52 39 2c 20 23 31  0d 42 4a 1b 3b 42 49 43  |9,R9, #1.BJ.;BIC|
000088d0  20 20 20 20 20 52 36 2c  52 36 2c 20 23 32 35 35  |     R6,R6, #255|
000088e0  3c 3c 38 0d 42 54 1c 3b  84 52 20 20 20 20 20 52  |<<8.BT.;.R     R|
000088f0  36 2c 52 36 2c 52 39 2c  20 4c 53 4c 20 23 38 0d  |6,R6,R9, LSL #8.|
00008900  42 5e 13 3b 43 4d 50 20  20 20 20 20 52 39 2c 20  |B^.;CMP     R9, |
00008910  23 30 0d 42 68 10 3b ec  51 20 20 20 52 31 2c 20  |#0.Bh.;.Q   R1, |
00008920  23 30 0d 42 72 06 20 3a  0d 42 7c 13 20 54 53 54  |#0.Br. :.B|. TST|
00008930  20 20 20 20 20 52 36 2c  20 23 31 0d 42 86 16 20  |     R6, #1.B.. |
00008940  4c 44 52 45 51 20 20 20  52 31 30 2c 20 70 31 5f  |LDREQ   R10, p1_|
00008950  78 0d 42 90 16 20 4c 44  52 45 51 20 20 20 52 31  |x.B.. LDREQ   R1|
00008960  31 2c 20 70 31 5f 79 0d  42 9a 16 20 4c 44 52 4e  |1, p1_y.B.. LDRN|
00008970  45 20 20 20 52 31 30 2c  20 70 32 5f 78 0d 42 a4  |E   R10, p2_x.B.|
00008980  16 20 4c 44 52 4e 45 20  20 20 52 31 31 2c 20 70  |. LDRNE   R11, p|
00008990  32 5f 79 0d 42 ae 1e 20  41 44 44 20 20 20 20 20  |2_y.B.. ADD     |
000089a0  52 31 30 2c 52 31 30 2c  20 23 78 65 78 74 25 2f  |R10,R10, #xext%/|
000089b0  32 0d 42 b8 1e 20 41 44  44 20 20 20 20 20 52 31  |2.B.. ADD     R1|
000089c0  31 2c 52 31 31 2c 20 23  79 65 78 74 25 2f 32 0d  |1,R11, #yext%/2.|
000089d0  42 c2 1b 20 43 4d 50 20  20 20 20 20 52 32 2c 52  |B.. CMP     R2,R|
000089e0  31 30 2c 20 41 53 4c 20  23 34 0d 42 cc 16 20 53  |10, ASL #4.B.. S|
000089f0  55 42 47 54 20 20 20 52  34 2c 52 34 2c 20 23 31  |UBGT   R4,R4, #1|
00008a00  0d 42 d6 16 20 41 44 44  4c 54 20 20 20 52 34 2c  |.B.. ADDLT   R4,|
00008a10  52 34 2c 20 23 31 0d 42  e0 1b 20 43 4d 50 20 20  |R4, #1.B.. CMP  |
00008a20  20 20 20 52 33 2c 52 31  31 2c 20 41 53 4c 20 23  |   R3,R11, ASL #|
00008a30  34 0d 42 ea 16 20 53 55  42 47 54 20 20 20 52 35  |4.B.. SUBGT   R5|
00008a40  2c 52 35 2c 20 23 31 0d  42 f4 16 20 41 44 44 4c  |,R5, #1.B.. ADDL|
00008a50  54 20 20 20 52 35 2c 52  35 2c 20 23 31 0d 42 fe  |T   R5,R5, #1.B.|
00008a60  23 20 4d 4f 56 20 20 20  20 20 52 30 2c 20 23 6d  |# MOV     R0, #m|
00008a70  61 78 5f 68 6f 6d 69 6e  67 5f 73 70 65 65 64 25  |ax_homing_speed%|
00008a80  0d 43 08 12 20 43 4d 50  20 20 20 20 20 52 34 2c  |.C.. CMP     R4,|
00008a90  52 30 0d 43 12 16 20 53  55 42 47 54 20 20 20 52  |R0.C.. SUBGT   R|
00008aa0  34 2c 52 30 2c 20 23 31  0d 43 1c 16 20 52 53 42  |4,R0, #1.C.. RSB|
00008ab0  20 20 20 20 20 52 30 2c  52 30 2c 20 23 30 0d 43  |     R0,R0, #0.C|
00008ac0  26 12 20 43 4d 50 20 20  20 20 20 52 34 2c 52 30  |&. CMP     R4,R0|
00008ad0  0d 43 30 16 20 41 44 44  4c 54 20 20 20 52 34 2c  |.C0. ADDLT   R4,|
00008ae0  52 30 2c 20 23 31 0d 43  3a 23 20 4d 4f 56 20 20  |R0, #1.C:# MOV  |
00008af0  20 20 20 52 30 2c 20 23  6d 61 78 5f 68 6f 6d 69  |   R0, #max_homi|
00008b00  6e 67 5f 73 70 65 65 64  25 0d 43 44 12 20 43 4d  |ng_speed%.CD. CM|
00008b10  50 20 20 20 20 20 52 35  2c 52 30 0d 43 4e 16 20  |P     R5,R0.CN. |
00008b20  53 55 42 47 54 20 20 20  52 35 2c 52 30 2c 20 23  |SUBGT   R5,R0, #|
00008b30  31 0d 43 58 16 20 52 53  42 20 20 20 20 20 52 30  |1.CX. RSB     R0|
00008b40  2c 52 30 2c 20 23 30 0d  43 62 12 20 43 4d 50 20  |,R0, #0.Cb. CMP |
00008b50  20 20 20 20 52 35 2c 52  30 0d 43 6c 16 20 41 44  |    R5,R0.Cl. AD|
00008b60  44 4c 54 20 20 20 52 35  2c 52 30 2c 20 23 31 0d  |DLT   R5,R0, #1.|
00008b70  43 76 15 20 41 44 44 20  20 20 20 20 52 32 2c 52  |Cv. ADD     R2,R|
00008b80  32 2c 52 34 0d 43 80 15  20 41 44 44 20 20 20 20  |2,R4.C.. ADD    |
00008b90  20 52 33 2c 52 33 2c 52  35 0d 43 8a 13 20 4d 4f  | R3,R3,R5.C.. MO|
00008ba0  56 20 20 20 20 20 52 37  2c 20 23 30 0d 43 94 14  |V     R7, #0.C..|
00008bb0  20 43 4d 4e 20 20 20 20  20 52 34 2c 20 23 31 30  | CMN     R4, #10|
00008bc0  0d 43 9e 16 20 41 44 44  4c 54 20 20 20 52 37 2c  |.C.. ADDLT   R7,|
00008bd0  52 37 2c 20 23 32 0d 43  a8 14 20 43 4d 50 20 20  |R7, #2.C.. CMP  |
00008be0  20 20 20 52 34 2c 20 23  31 30 0d 43 b2 16 20 41  |   R4, #10.C.. A|
00008bf0  44 44 47 54 20 20 20 52  37 2c 52 37 2c 20 23 34  |DDGT   R7,R7, #4|
00008c00  0d 43 bc 14 20 43 4d 4e  20 20 20 20 20 52 35 2c  |.C.. CMN     R5,|
00008c10  20 23 31 30 0d 43 c6 17  20 41 44 44 4c 54 20 20  | #10.C.. ADDLT  |
00008c20  20 52 37 2c 52 37 2c 20  23 31 32 0d 43 d0 14 20  | R7,R7, #12.C.. |
00008c30  43 4d 50 20 20 20 20 20  52 35 2c 20 23 31 30 0d  |CMP     R5, #10.|
00008c40  43 da 16 20 41 44 44 47  54 20 20 20 52 37 2c 52  |C.. ADDGT   R7,R|
00008c50  37 2c 20 23 36 0d 43 e4  06 20 3a 0d 43 ee 16 20  |7, #6.C.. :.C.. |
00008c60  41 44 44 20 20 20 20 20  52 37 2c 52 37 2c 20 23  |ADD     R7,R7, #|
00008c70  33 0d 43 f8 17 20 80 20  20 20 20 20 52 30 2c 52  |3.C.. .     R0,R|
00008c80  36 2c 20 23 25 31 31 30  0d 44 02 1a 20 4d 4f 56  |6, #%110.D.. MOV|
00008c90  20 20 20 20 20 52 30 2c  52 30 2c 20 41 53 52 20  |     R0,R0, ASR |
00008ca0  23 31 0d 44 0c 16 20 41  44 44 20 20 20 20 20 52  |#1.D.. ADD     R|
00008cb0  30 2c 52 30 2c 20 23 31  0d 44 16 16 20 80 20 20  |0,R0, #1.D.. .  |
00008cc0  20 20 20 52 30 2c 52 30  2c 20 23 25 31 31 0d 44  |   R0,R0, #%11.D|
00008cd0  20 14 20 43 4d 50 20 20  20 20 20 52 30 2c 20 23  | . CMP     R0, #|
00008ce0  25 31 0d 44 2a 16 20 41  44 44 47 54 20 20 20 52  |%1.D*. ADDGT   R|
00008cf0  37 2c 52 37 2c 20 23 31  0d 44 34 19 20 42 49 43  |7,R7, #1.D4. BIC|
00008d00  20 20 20 20 20 52 36 2c  52 36 2c 20 23 25 31 31  |     R6,R6, #%11|
00008d10  30 0d 44 3e 1c 20 84 52  20 20 20 20 20 52 36 2c  |0.D>. .R     R6,|
00008d20  52 36 2c 52 30 2c 20 41  53 4c 20 23 31 0d 44 48  |R6,R0, ASL #1.DH|
00008d30  13 20 43 4d 50 20 20 20  20 20 52 37 2c 20 23 35  |. CMP     R7, #5|
00008d40  0d 44 52 14 20 4d 4f 56  4c 54 20 20 20 52 37 2c  |.DR. MOVLT   R7,|
00008d50  20 23 32 31 0d 44 5c 06  20 3a 0d 44 66 19 20 53  | #21.D\. :.Df. S|
00008d60  54 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 31 2d  |TMFD   R13!,{R1-|
00008d70  52 36 7d 0d 44 70 06 20  3a 0d 44 7a 18 20 42 4c  |R6}.Dp. :.Dz. BL|
00008d80  20 20 20 20 20 20 63 68  65 63 6b 5f 64 65 61 74  |      check_deat|
00008d90  68 0d 44 84 06 20 3a 0d  44 8e 1a 20 4d 4f 56 20  |h.D.. :.D.. MOV |
00008da0  20 20 20 20 52 32 2c 52  32 2c 20 41 53 52 20 23  |    R2,R2, ASR #|
00008db0  34 0d 44 98 1a 20 4d 4f  56 20 20 20 20 20 52 33  |4.D.. MOV     R3|
00008dc0  2c 52 33 2c 20 41 53 52  20 23 34 0d 44 a2 18 20  |,R3, ASR #4.D.. |
00008dd0  52 53 42 20 20 20 20 20  52 33 2c 52 33 2c 20 23  |RSB     R3,R3, #|
00008de0  32 35 36 0d 44 ac 20 20  4c 44 52 20 20 20 20 20  |256.D.  LDR     |
00008df0  52 34 2c 20 61 64 72 5f  73 63 72 65 65 6e 73 74  |R4, adr_screenst|
00008e00  6f 72 65 0d 44 b6 14 20  4c 44 52 20 20 20 20 20  |ore.D.. LDR     |
00008e10  52 34 2c 5b 52 34 5d 0d  44 c0 19 20 4d 4f 56 20  |R4,[R4].D.. MOV |
00008e20  20 20 20 20 52 35 2c 20  23 79 5f 73 68 69 66 74  |    R5, #y_shift|
00008e30  0d 44 ca 15 20 41 44 44  20 20 20 20 20 52 34 2c  |.D.. ADD     R4,|
00008e40  52 34 2c 52 32 0d 44 d4  18 20 4d 4c 41 20 20 20  |R4,R2.D.. MLA   |
00008e50  20 20 52 34 2c 52 35 2c  52 33 2c 52 34 0d 44 de  |  R4,R5,R3,R4.D.|
00008e60  14 20 4c 44 52 42 20 20  20 20 52 30 2c 5b 52 34  |. LDRB    R0,[R4|
00008e70  5d 0d 44 e8 13 20 43 4d  50 20 20 20 20 20 52 30  |].D.. CMP     R0|
00008e80  2c 20 23 30 0d 44 f2 11  20 ec 51 20 20 20 52 31  |, #0.D.. .Q   R1|
00008e90  30 2c 20 23 31 0d 44 fc  14 20 4d 4f 56 4e 45 20  |0, #1.D.. MOVNE |
00008ea0  20 20 52 31 30 2c 20 23  30 0d 45 06 16 20 42 4e  |  R10, #0.E.. BN|
00008eb0  45 20 20 20 20 20 6e 6f  5f 68 6f 6d 69 6e 67 0d  |E     no_homing.|
00008ec0  45 10 18 20 52 53 42 20  20 20 20 20 52 33 2c 52  |E.. RSB     R3,R|
00008ed0  33 2c 20 23 32 35 36 0d  45 1a 12 20 4d 4f 56 20  |3, #256.E.. MOV |
00008ee0  20 20 20 20 52 30 2c 52  37 0d 45 24 16 20 53 55  |    R0,R7.E$. SU|
00008ef0  42 20 20 20 20 20 52 31  2c 52 32 2c 20 23 32 0d  |B     R1,R2, #2.|
00008f00  45 2e 16 20 53 55 42 20  20 20 20 20 52 32 2c 52  |E.. SUB     R2,R|
00008f10  33 2c 20 23 32 0d 45 38  1d 20 42 4c 20 20 20 20  |3, #2.E8. BL    |
00008f20  20 20 70 6c 6f 74 5f 73  70 72 69 74 65 5f 30 38  |  plot_sprite_08|
00008f30  30 34 0d 45 42 1d 3b 4c  44 52 20 20 20 20 20 52  |04.EB.;LDR     R|
00008f40  30 2c 20 61 64 72 5f 67  75 6e 5f 66 61 64 65 0d  |0, adr_gun_fade.|
00008f50  45 4c 1a 3b 4d 4f 56 20  20 20 20 20 52 39 2c 52  |EL.;MOV     R9,R|
00008f60  36 2c 20 4c 53 52 20 23  38 0d 45 56 16 3b 80 20  |6, LSR #8.EV.;. |
00008f70  20 20 20 20 52 39 2c 52  39 2c 20 23 32 35 35 0d  |    R9,R9, #255.|
00008f80  45 60 15 3b 43 4d 50 20  20 20 20 20 52 39 2c 20  |E`.;CMP     R9, |
00008f90  23 32 35 35 0d 45 6a 15  3b 4d 4f 56 47 54 20 20  |#255.Ej.;MOVGT  |
00008fa0  20 52 39 2c 20 23 32 35  35 0d 45 74 17 3b 4c 44  | R9, #255.Et.;LD|
00008fb0  52 42 20 20 20 20 52 30  2c 5b 52 30 2c 52 39 5d  |RB    R0,[R0,R9]|
00008fc0  0d 45 7e 14 3b 53 54 52  42 20 20 20 20 52 30 2c  |.E~.;STRB    R0,|
00008fd0  5b 52 34 5d 0d 45 88 0f  20 2e 6e 6f 5f 68 6f 6d  |[R4].E.. .no_hom|
00008fe0  69 6e 67 0d 45 92 06 20  3a 0d 45 9c 19 20 4c 44  |ing.E.. :.E.. LD|
00008ff0  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 31 2d 52  |MFD   R13!,{R1-R|
00009000  36 7d 0d 45 a6 14 20 43  4d 50 20 20 20 20 20 52  |6}.E.. CMP     R|
00009010  31 30 2c 20 23 30 0d 45  b0 17 20 42 4e 45 20 20  |10, #0.E.. BNE  |
00009020  20 20 20 65 6e 64 5f 68  6f 6d 69 6e 67 0d 45 ba  |   end_homing.E.|
00009030  14 20 4d 4f 56 20 20 20  20 20 52 30 2c 20 23 31  |. MOV     R0, #1|
00009040  31 0d 45 c4 1a 20 4d 4f  56 20 20 20 20 20 52 31  |1.E.. MOV     R1|
00009050  2c 52 32 2c 20 41 53 52  20 23 34 0d 45 ce 1a 20  |,R2, ASR #4.E.. |
00009060  4d 4f 56 20 20 20 20 20  52 32 2c 52 33 2c 20 41  |MOV     R2,R3, A|
00009070  53 52 20 23 34 0d 45 d8  18 20 52 53 42 20 20 20  |SR #4.E.. RSB   |
00009080  20 20 52 32 2c 52 32 2c  20 23 32 35 36 0d 45 e2  |  R2,R2, #256.E.|
00009090  16 20 52 53 42 20 20 20  20 20 52 33 2c 52 34 2c  |. RSB     R3,R4,|
000090a0  20 23 30 0d 45 ec 16 20  52 53 42 20 20 20 20 20  | #0.E.. RSB     |
000090b0  52 34 2c 52 35 2c 20 23  30 0d 45 f6 1a 20 4d 4f  |R4,R5, #0.E.. MO|
000090c0  56 20 20 20 20 20 52 33  2c 52 33 2c 20 41 53 52  |V     R3,R3, ASR|
000090d0  20 23 32 0d 46 00 1a 20  4d 4f 56 20 20 20 20 20  | #2.F.. MOV     |
000090e0  52 34 2c 52 34 2c 20 41  53 52 20 23 32 0d 46 0a  |R4,R4, ASR #2.F.|
000090f0  14 20 80 20 20 20 20 20  52 35 2c 52 36 2c 20 23  |. .     R5,R6, #|
00009100  31 0d 46 14 15 20 42 4c  20 20 20 20 20 20 61 64  |1.F.. BL      ad|
00009110  64 5f 63 65 6c 6c 0d 46  1e 13 20 4d 4f 56 20 20  |d_cell.F.. MOV  |
00009120  20 20 20 52 35 2c 20 23  31 0d 46 28 13 20 4d 4f  |   R5, #1.F(. MO|
00009130  56 20 20 20 20 20 52 30  2c 20 23 31 0d 46 32 13  |V     R0, #1.F2.|
00009140  20 4d 56 4e 20 20 20 20  20 52 31 2c 20 23 34 0d  | MVN     R1, #4.|
00009150  46 3c 1c 20 4d 4f 56 20  20 20 20 20 52 32 2c 20  |F<. MOV     R2, |
00009160  23 65 78 70 6c 6f 73 69  6f 6e 25 0d 46 46 13 20  |#explosion%.FF. |
00009170  4d 4f 56 20 20 20 20 20  52 33 2c 20 23 30 0d 46  |MOV     R3, #0.F|
00009180  50 1c 20 53 57 49 20 20  20 20 20 22 53 6f 75 6e  |P. SWI     "Soun|
00009190  64 5f 43 6f 6e 74 72 6f  6c 22 0d 46 5a 13 20 4d  |d_Control".FZ. M|
000091a0  4f 56 20 20 20 20 20 52  31 2c 20 23 30 0d 46 64  |OV     R1, #0.Fd|
000091b0  10 20 2e 65 6e 64 5f 68  6f 6d 69 6e 67 0d 46 6e  |. .end_homing.Fn|
000091c0  19 20 4c 44 4d 46 44 20  20 20 52 31 33 21 2c 7b  |. LDMFD   R13!,{|
000091d0  52 39 2c 50 43 7d 0d 46  78 06 20 3a 0d 46 82 0d  |R9,PC}.Fx. :.F..|
000091e0  20 2e 73 65 65 6b 69 6e  67 0d 46 8c 1a 20 53 54  | .seeking.F.. ST|
000091f0  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 39 2c 52  |MFD   R13!,{R9,R|
00009200  31 34 7d 0d 46 96 06 20  3a 0d 46 a0 13 20 54 53  |14}.F.. :.F.. TS|
00009210  54 20 20 20 20 20 52 36  2c 20 23 31 0d 46 aa 16  |T     R6, #1.F..|
00009220  20 4c 44 52 45 51 20 20  20 52 31 30 2c 20 70 31  | LDREQ   R10, p1|
00009230  5f 78 0d 46 b4 16 20 4c  44 52 45 51 20 20 20 52  |_x.F.. LDREQ   R|
00009240  31 31 2c 20 70 31 5f 79  0d 46 be 16 20 4c 44 52  |11, p1_y.F.. LDR|
00009250  4e 45 20 20 20 52 31 30  2c 20 70 32 5f 78 0d 46  |NE   R10, p2_x.F|
00009260  c8 16 20 4c 44 52 4e 45  20 20 20 52 31 31 2c 20  |.. LDRNE   R11, |
00009270  70 32 5f 79 0d 46 d2 1e  20 41 44 44 20 20 20 20  |p2_y.F.. ADD    |
00009280  20 52 31 30 2c 52 31 30  2c 20 23 78 65 78 74 25  | R10,R10, #xext%|
00009290  2f 32 0d 46 dc 1e 20 41  44 44 20 20 20 20 20 52  |/2.F.. ADD     R|
000092a0  31 31 2c 52 31 31 2c 20  23 79 65 78 74 25 2f 32  |11,R11, #yext%/2|
000092b0  0d 46 e6 1b 20 43 4d 50  20 20 20 20 20 52 32 2c  |.F.. CMP     R2,|
000092c0  52 31 30 2c 20 41 53 4c  20 23 34 0d 46 f0 16 20  |R10, ASL #4.F.. |
000092d0  53 55 42 47 54 20 20 20  52 34 2c 52 34 2c 20 23  |SUBGT   R4,R4, #|
000092e0  31 0d 46 fa 16 20 41 44  44 4c 54 20 20 20 52 34  |1.F.. ADDLT   R4|
000092f0  2c 52 34 2c 20 23 31 0d  47 04 1b 20 43 4d 50 20  |,R4, #1.G.. CMP |
00009300  20 20 20 20 52 33 2c 52  31 31 2c 20 41 53 4c 20  |    R3,R11, ASL |
00009310  23 34 0d 47 0e 16 20 53  55 42 47 54 20 20 20 52  |#4.G.. SUBGT   R|
00009320  35 2c 52 35 2c 20 23 31  0d 47 18 16 20 41 44 44  |5,R5, #1.G.. ADD|
00009330  4c 54 20 20 20 52 35 2c  52 35 2c 20 23 31 0d 47  |LT   R5,R5, #1.G|
00009340  22 14 20 4d 4f 56 20 20  20 20 20 52 30 2c 20 23  |". MOV     R0, #|
00009350  31 36 0d 47 2c 12 20 43  4d 50 20 20 20 20 20 52  |16.G,. CMP     R|
00009360  34 2c 52 30 0d 47 36 16  20 53 55 42 47 54 20 20  |4,R0.G6. SUBGT  |
00009370  20 52 34 2c 52 34 2c 20  23 31 0d 47 40 16 20 52  | R4,R4, #1.G@. R|
00009380  53 42 20 20 20 20 20 52  30 2c 52 30 2c 20 23 30  |SB     R0,R0, #0|
00009390  0d 47 4a 12 20 43 4d 50  20 20 20 20 20 52 34 2c  |.GJ. CMP     R4,|
000093a0  52 30 0d 47 54 16 20 41  44 44 4c 54 20 20 20 52  |R0.GT. ADDLT   R|
000093b0  34 2c 52 34 2c 20 23 31  0d 47 5e 14 20 4d 4f 56  |4,R4, #1.G^. MOV|
000093c0  20 20 20 20 20 52 30 2c  20 23 31 36 0d 47 68 12  |     R0, #16.Gh.|
000093d0  20 43 4d 50 20 20 20 20  20 52 35 2c 52 30 0d 47  | CMP     R5,R0.G|
000093e0  72 16 20 53 55 42 47 54  20 20 20 52 35 2c 52 35  |r. SUBGT   R5,R5|
000093f0  2c 20 23 31 0d 47 7c 16  20 52 53 42 20 20 20 20  |, #1.G|. RSB    |
00009400  20 52 30 2c 52 30 2c 20  23 30 0d 47 86 12 20 43  | R0,R0, #0.G.. C|
00009410  4d 50 20 20 20 20 20 52  35 2c 52 30 0d 47 90 16  |MP     R5,R0.G..|
00009420  20 41 44 44 4c 54 20 20  20 52 35 2c 52 35 2c 20  | ADDLT   R5,R5, |
00009430  23 31 0d 47 9a 06 20 3a  0d 47 a4 19 20 53 54 4d  |#1.G.. :.G.. STM|
00009440  46 44 20 20 20 52 31 33  21 2c 7b 52 31 2d 52 36  |FD   R13!,{R1-R6|
00009450  7d 0d 47 ae 06 20 3a 0d  47 b8 18 20 42 4c 20 20  |}.G.. :.G.. BL  |
00009460  20 20 20 20 63 68 65 63  6b 5f 64 65 61 74 68 0d  |    check_death.|
00009470  47 c2 06 20 3a 0d 47 cc  1a 20 4d 4f 56 20 20 20  |G.. :.G.. MOV   |
00009480  20 20 52 32 2c 52 32 2c  20 41 53 52 20 23 34 0d  |  R2,R2, ASR #4.|
00009490  47 d6 1a 20 4d 4f 56 20  20 20 20 20 52 33 2c 52  |G.. MOV     R3,R|
000094a0  33 2c 20 41 53 52 20 23  34 0d 47 e0 18 20 52 53  |3, ASR #4.G.. RS|
000094b0  42 20 20 20 20 20 52 33  2c 52 33 2c 20 23 32 35  |B     R3,R3, #25|
000094c0  36 0d 47 ea 20 20 4c 44  52 20 20 20 20 20 52 34  |6.G.  LDR     R4|
000094d0  2c 20 61 64 72 5f 73 63  72 65 65 6e 73 74 6f 72  |, adr_screenstor|
000094e0  65 0d 47 f4 14 20 4c 44  52 20 20 20 20 20 52 34  |e.G.. LDR     R4|
000094f0  2c 5b 52 34 5d 0d 47 fe  19 20 4d 4f 56 20 20 20  |,[R4].G.. MOV   |
00009500  20 20 52 35 2c 20 23 79  5f 73 68 69 66 74 0d 48  |  R5, #y_shift.H|
00009510  08 15 20 41 44 44 20 20  20 20 20 52 34 2c 52 34  |.. ADD     R4,R4|
00009520  2c 52 32 0d 48 12 18 20  4d 4c 41 20 20 20 20 20  |,R2.H.. MLA     |
00009530  52 34 2c 52 35 2c 52 33  2c 52 34 0d 48 1c 14 20  |R4,R5,R3,R4.H.. |
00009540  4c 44 52 42 20 20 20 20  52 30 2c 5b 52 34 5d 0d  |LDRB    R0,[R4].|
00009550  48 26 13 20 43 4d 50 20  20 20 20 20 52 30 2c 20  |H&. CMP     R0, |
00009560  23 30 0d 48 30 11 20 ec  51 20 20 20 52 31 30 2c  |#0.H0. .Q   R10,|
00009570  20 23 31 0d 48 3a 18 20  42 45 51 20 20 20 20 20  | #1.H:. BEQ     |
00009580  70 6f 73 74 5f 72 65 63  61 6c 63 0d 48 44 14 20  |post_recalc.HD. |
00009590  4d 4f 56 20 20 20 20 20  52 31 30 2c 20 23 30 0d  |MOV     R10, #0.|
000095a0  48 4e 18 20 4c 44 4d 46  44 20 20 20 52 31 33 2c  |HN. LDMFD   R13,|
000095b0  7b 52 31 2d 52 36 7d 0d  48 58 1d 20 53 55 42 20  |{R1-R6}.HX. SUB |
000095c0  20 20 20 20 52 32 2c 52  32 2c 52 34 2c 20 41 53  |    R2,R2,R4, AS|
000095d0  4c 20 23 31 0d 48 62 1d  20 53 55 42 20 20 20 20  |L #1.Hb. SUB    |
000095e0  20 52 33 2c 52 33 2c 52  35 2c 20 41 53 4c 20 23  | R3,R3,R5, ASL #|
000095f0  31 0d 48 6c 1a 20 4d 4f  56 20 20 20 20 20 52 32  |1.Hl. MOV     R2|
00009600  2c 52 32 2c 20 41 53 52  20 23 34 0d 48 76 1a 20  |,R2, ASR #4.Hv. |
00009610  4d 4f 56 20 20 20 20 20  52 33 2c 52 33 2c 20 41  |MOV     R3,R3, A|
00009620  53 52 20 23 34 0d 48 80  18 20 52 53 42 20 20 20  |SR #4.H.. RSB   |
00009630  20 20 52 33 2c 52 33 2c  20 23 32 35 36 0d 48 8a  |  R3,R3, #256.H.|
00009640  20 20 4c 44 52 20 20 20  20 20 52 34 2c 20 61 64  |  LDR     R4, ad|
00009650  72 5f 73 63 72 65 65 6e  73 74 6f 72 65 0d 48 94  |r_screenstore.H.|
00009660  14 20 4c 44 52 20 20 20  20 20 52 34 2c 5b 52 34  |. LDR     R4,[R4|
00009670  5d 0d 48 9e 19 20 4d 4f  56 20 20 20 20 20 52 35  |].H.. MOV     R5|
00009680  2c 20 23 79 5f 73 68 69  66 74 0d 48 a8 15 20 41  |, #y_shift.H.. A|
00009690  44 44 20 20 20 20 20 52  34 2c 52 34 2c 52 32 0d  |DD     R4,R4,R2.|
000096a0  48 b2 18 20 4d 4c 41 20  20 20 20 20 52 34 2c 52  |H.. MLA     R4,R|
000096b0  35 2c 52 33 2c 52 34 0d  48 bc 11 20 2e 70 6f 73  |5,R3,R4.H.. .pos|
000096c0  74 5f 72 65 63 61 6c 63  0d 48 c6 18 20 52 53 42  |t_recalc.H.. RSB|
000096d0  20 20 20 20 20 52 33 2c  52 33 2c 20 23 32 35 36  |     R3,R3, #256|
000096e0  0d 48 d0 13 20 4d 4f 56  20 20 20 20 20 52 30 2c  |.H.. MOV     R0,|
000096f0  20 23 34 0d 48 da 13 20  54 53 54 20 20 20 20 20  | #4.H.. TST     |
00009700  52 36 2c 20 23 31 0d 48  e4 14 20 4d 4f 56 4e 45  |R6, #1.H.. MOVNE|
00009710  20 20 20 52 30 2c 20 23  32 33 0d 48 ee 16 20 53  |   R0, #23.H.. S|
00009720  55 42 20 20 20 20 20 52  31 2c 52 32 2c 20 23 32  |UB     R1,R2, #2|
00009730  0d 48 f8 16 20 53 55 42  20 20 20 20 20 52 32 2c  |.H.. SUB     R2,|
00009740  52 33 2c 20 23 32 0d 49  02 1d 20 42 4c 20 20 20  |R3, #2.I.. BL   |
00009750  20 20 20 70 6c 6f 74 5f  73 70 72 69 74 65 5f 30  |   plot_sprite_0|
00009760  38 30 34 0d 49 0c 10 20  2e 6e 6f 5f 73 65 65 6b  |804.I.. .no_seek|
00009770  69 6e 67 0d 49 16 06 20  3a 0d 49 20 19 20 4c 44  |ing.I.. :.I . LD|
00009780  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 31 2d 52  |MFD   R13!,{R1-R|
00009790  36 7d 0d 49 2a 14 20 43  4d 50 20 20 20 20 20 52  |6}.I*. CMP     R|
000097a0  31 30 2c 20 23 30 0d 49  34 15 20 41 44 44 4e 45  |10, #0.I4. ADDNE|
000097b0  20 20 20 52 32 2c 52 32  2c 52 34 0d 49 3e 15 20  |   R2,R2,R4.I>. |
000097c0  41 44 44 4e 45 20 20 20  52 33 2c 52 33 2c 52 35  |ADDNE   R3,R3,R5|
000097d0  0d 49 48 1d 20 53 55 42  45 51 20 20 20 52 32 2c  |.IH. SUBEQ   R2,|
000097e0  52 32 2c 52 34 2c 20 41  53 4c 20 23 31 0d 49 52  |R2,R4, ASL #1.IR|
000097f0  1d 20 53 55 42 45 51 20  20 20 52 33 2c 52 33 2c  |. SUBEQ   R3,R3,|
00009800  52 35 2c 20 41 53 4c 20  23 31 0d 49 5c 10 20 ec  |R5, ASL #1.I\. .|
00009810  51 20 20 20 52 34 2c 20  23 30 0d 49 66 10 20 ec  |Q   R4, #0.If. .|
00009820  51 20 20 20 52 35 2c 20  23 30 0d 49 70 19 20 4c  |Q   R5, #0.Ip. L|
00009830  44 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 39 2c  |DMFD   R13!,{R9,|
00009840  50 43 7d 0d 49 7a 06 20  3a 0d 49 84 0e 20 2e 76  |PC}.Iz. :.I.. .v|
00009850  65 72 74 69 63 61 6c 0d  49 8e 1a 20 53 54 4d 46  |ertical.I.. STMF|
00009860  44 20 20 20 52 31 33 21  2c 7b 52 39 2c 52 31 34  |D   R13!,{R9,R14|
00009870  7d 0d 49 98 06 20 3a 0d  49 a2 15 20 41 44 44 20  |}.I.. :.I.. ADD |
00009880  20 20 20 20 52 32 2c 52  32 2c 52 34 0d 49 ac 15  |    R2,R2,R4.I..|
00009890  20 41 44 44 20 20 20 20  20 52 33 2c 52 33 2c 52  | ADD     R3,R3,R|
000098a0  35 0d 49 b6 06 20 3a 0d  49 c0 19 20 53 54 4d 46  |5.I.. :.I.. STMF|
000098b0  44 20 20 20 52 31 33 21  2c 7b 52 31 2d 52 36 7d  |D   R13!,{R1-R6}|
000098c0  0d 49 ca 06 20 3a 0d 49  d4 18 20 42 4c 20 20 20  |.I.. :.I.. BL   |
000098d0  20 20 20 63 68 65 63 6b  5f 64 65 61 74 68 0d 49  |   check_death.I|
000098e0  de 06 20 3a 0d 49 e8 1a  20 4d 4f 56 20 20 20 20  |.. :.I.. MOV    |
000098f0  20 52 32 2c 52 32 2c 20  41 53 52 20 23 34 0d 49  | R2,R2, ASR #4.I|
00009900  f2 1a 20 4d 4f 56 20 20  20 20 20 52 33 2c 52 33  |.. MOV     R3,R3|
00009910  2c 20 41 53 52 20 23 34  0d 49 fc 18 20 52 53 42  |, ASR #4.I.. RSB|
00009920  20 20 20 20 20 52 33 2c  52 33 2c 20 23 32 35 36  |     R3,R3, #256|
00009930  0d 4a 06 20 20 4c 44 52  20 20 20 20 20 52 34 2c  |.J.  LDR     R4,|
00009940  20 61 64 72 5f 73 63 72  65 65 6e 73 74 6f 72 65  | adr_screenstore|
00009950  0d 4a 10 14 20 4c 44 52  20 20 20 20 20 52 34 2c  |.J.. LDR     R4,|
00009960  5b 52 34 5d 0d 4a 1a 19  20 4d 4f 56 20 20 20 20  |[R4].J.. MOV    |
00009970  20 52 35 2c 20 23 79 5f  73 68 69 66 74 0d 4a 24  | R5, #y_shift.J$|
00009980  15 20 41 44 44 20 20 20  20 20 52 34 2c 52 34 2c  |. ADD     R4,R4,|
00009990  52 32 0d 4a 2e 18 20 4d  4c 41 20 20 20 20 20 52  |R2.J.. MLA     R|
000099a0  34 2c 52 35 2c 52 33 2c  52 34 0d 4a 38 14 20 4c  |4,R5,R3,R4.J8. L|
000099b0  44 52 42 20 20 20 20 52  30 2c 5b 52 34 5d 0d 4a  |DRB    R0,[R4].J|
000099c0  42 13 20 43 4d 50 20 20  20 20 20 52 30 2c 20 23  |B. CMP     R0, #|
000099d0  30 0d 4a 4c 11 20 ec 51  20 20 20 52 31 30 2c 20  |0.JL. .Q   R10, |
000099e0  23 31 0d 4a 56 14 20 4d  4f 56 4e 45 20 20 20 52  |#1.JV. MOVNE   R|
000099f0  31 30 2c 20 23 30 0d 4a  60 14 20 42 4e 45 20 20  |10, #0.J`. BNE  |
00009a00  20 20 20 6e 6f 5f 76 65  72 74 0d 4a 6a 18 20 52  |   no_vert.Jj. R|
00009a10  53 42 20 20 20 20 20 52  33 2c 52 33 2c 20 23 32  |SB     R3,R3, #2|
00009a20  35 36 0d 4a 74 14 20 4d  4f 56 20 20 20 20 20 52  |56.Jt. MOV     R|
00009a30  30 2c 20 23 32 32 0d 4a  7e 16 20 53 55 42 20 20  |0, #22.J~. SUB  |
00009a40  20 20 20 52 31 2c 52 32  2c 20 23 32 0d 4a 88 16  |   R1,R2, #2.J..|
00009a50  20 53 55 42 20 20 20 20  20 52 32 2c 52 33 2c 20  | SUB     R2,R3, |
00009a60  23 32 0d 4a 92 1d 20 42  4c 20 20 20 20 20 20 70  |#2.J.. BL      p|
00009a70  6c 6f 74 5f 73 70 72 69  74 65 5f 30 38 30 34 0d  |lot_sprite_0804.|
00009a80  4a 9c 1d 3b 4c 44 52 20  20 20 20 20 52 30 2c 20  |J..;LDR     R0, |
00009a90  61 64 72 5f 67 75 6e 5f  66 61 64 65 0d 4a a6 15  |adr_gun_fade.J..|
00009aa0  3b 4d 4f 56 20 20 20 20  20 52 39 2c 20 23 32 35  |;MOV     R9, #25|
00009ab0  35 0d 4a b0 17 3b 4c 44  52 42 20 20 20 20 52 30  |5.J..;LDRB    R0|
00009ac0  2c 5b 52 30 2c 52 39 5d  0d 4a ba 14 3b 53 54 52  |,[R0,R9].J..;STR|
00009ad0  42 20 20 20 20 52 30 2c  5b 52 34 5d 0d 4a c4 18  |B    R0,[R4].J..|
00009ae0  3b 41 44 44 20 20 20 20  20 52 34 2c 52 34 2c 20  |;ADD     R4,R4, |
00009af0  23 33 32 30 0d 4a ce 16  3b 53 55 42 20 20 20 20  |#320.J..;SUB    |
00009b00  20 52 34 2c 52 34 2c 20  23 31 0d 4a d8 14 3b 53  | R4,R4, #1.J..;S|
00009b10  54 52 42 20 20 20 20 52  30 2c 5b 52 34 5d 0d 4a  |TRB    R0,[R4].J|
00009b20  e2 18 3b 53 54 52 42 20  20 20 20 52 30 2c 5b 52  |..;STRB    R0,[R|
00009b30  34 2c 20 23 32 5d 0d 4a  ec 0d 20 2e 6e 6f 5f 76  |4, #2].J.. .no_v|
00009b40  65 72 74 0d 4a f6 06 20  3a 0d 4b 00 19 20 4c 44  |ert.J.. :.K.. LD|
00009b50  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 31 2d 52  |MFD   R13!,{R1-R|
00009b60  36 7d 0d 4b 0a 14 20 43  4d 50 20 20 20 20 20 52  |6}.K.. CMP     R|
00009b70  31 30 2c 20 23 30 0d 4b  14 10 20 ec 51 20 20 20  |10, #0.K.. .Q   |
00009b80  52 31 2c 20 23 30 0d 4b  1e 19 20 4c 44 4d 46 44  |R1, #0.K.. LDMFD|
00009b90  20 20 20 52 31 33 21 2c  7b 52 39 2c 50 43 7d 0d  |   R13!,{R9,PC}.|
00009ba0  4b 28 06 20 3a 0d 4b 32  11 20 2e 63 68 65 63 6b  |K(. :.K2. .check|
00009bb0  5f 64 65 61 74 68 0d 4b  3c 13 20 54 53 54 20 20  |_death.K<. TST  |
00009bc0  20 20 20 52 36 2c 20 23  31 0d 4b 46 16 20 4c 44  |   R6, #1.KF. LD|
00009bd0  52 45 51 20 20 20 52 31  30 2c 20 70 31 5f 78 0d  |REQ   R10, p1_x.|
00009be0  4b 50 16 20 4c 44 52 45  51 20 20 20 52 31 31 2c  |KP. LDREQ   R11,|
00009bf0  20 70 31 5f 79 0d 4b 5a  16 20 4c 44 52 4e 45 20  | p1_y.KZ. LDRNE |
00009c00  20 20 52 31 30 2c 20 70  32 5f 78 0d 4b 64 16 20  |  R10, p2_x.Kd. |
00009c10  4c 44 52 4e 45 20 20 20  52 31 31 2c 20 70 32 5f  |LDRNE   R11, p2_|
00009c20  79 0d 4b 6e 1a 20 4d 4f  56 20 20 20 20 20 52 39  |y.Kn. MOV     R9|
00009c30  2c 52 32 2c 20 41 53 52  20 23 34 0d 4b 78 17 20  |,R2, ASR #4.Kx. |
00009c40  53 55 42 20 20 20 20 20  52 31 30 2c 52 39 2c 52  |SUB     R10,R9,R|
00009c50  31 30 0d 4b 82 14 20 43  4d 4e 20 20 20 20 20 52  |10.K.. CMN     R|
00009c60  31 30 2c 20 23 32 0d 4b  8c 15 20 42 4c 54 20 20  |10, #2.K.. BLT  |
00009c70  20 20 20 6e 6f 74 5f 64  65 61 64 0d 4b 96 1a 20  |   not_dead.K.. |
00009c80  43 4d 50 20 20 20 20 20  52 31 30 2c 20 23 78 65  |CMP     R10, #xe|
00009c90  78 74 25 2b 32 0d 4b a0  15 20 42 47 54 20 20 20  |xt%+2.K.. BGT   |
00009ca0  20 20 6e 6f 74 5f 64 65  61 64 0d 4b aa 1a 20 4d  |  not_dead.K.. M|
00009cb0  4f 56 20 20 20 20 20 52  39 2c 52 33 2c 20 41 53  |OV     R9,R3, AS|
00009cc0  52 20 23 34 0d 4b b4 17  20 53 55 42 20 20 20 20  |R #4.K.. SUB    |
00009cd0  20 52 31 31 2c 52 39 2c  52 31 31 0d 4b be 14 20  | R11,R9,R11.K.. |
00009ce0  43 4d 4e 20 20 20 20 20  52 31 31 2c 20 23 32 0d  |CMN     R11, #2.|
00009cf0  4b c8 15 20 42 4c 54 20  20 20 20 20 6e 6f 74 5f  |K.. BLT     not_|
00009d00  64 65 61 64 0d 4b d2 1a  20 43 4d 50 20 20 20 20  |dead.K.. CMP    |
00009d10  20 52 31 31 2c 20 23 79  65 78 74 25 2b 32 0d 4b  | R11, #yext%+2.K|
00009d20  dc 15 20 42 47 54 20 20  20 20 20 6e 6f 74 5f 64  |.. BGT     not_d|
00009d30  65 61 64 0d 4b e6 13 20  54 53 54 20 20 20 20 20  |ead.K.. TST     |
00009d40  52 36 2c 20 23 31 0d 4b  f0 19 20 42 4e 45 20 20  |R6, #1.K.. BNE  |
00009d50  20 20 20 64 65 61 64 5f  70 6c 61 79 65 72 32 0d  |   dead_player2.|
00009d60  4b fa 1e 20 4c 44 52 20  20 20 20 20 52 30 2c 20  |K.. LDR     R0, |
00009d70  70 6c 61 79 65 72 31 5f  61 6c 69 76 65 0d 4c 04  |player1_alive.L.|
00009d80  13 20 43 4d 50 20 20 20  20 20 52 30 2c 20 23 31  |. CMP     R0, #1|
00009d90  0d 4c 0e 15 20 42 45 51  20 20 20 20 20 6e 6f 74  |.L.. BEQ     not|
00009da0  5f 64 65 61 64 0d 4c 18  13 20 4d 4f 56 20 20 20  |_dead.L.. MOV   |
00009db0  20 20 52 30 2c 20 23 31  0d 4c 22 1e 20 53 54 52  |  R0, #1.L". STR|
00009dc0  20 20 20 20 20 52 30 2c  20 70 6c 61 79 65 72 31  |     R0, player1|
00009dd0  5f 61 6c 69 76 65 0d 4c  2c 13 20 4d 4f 56 20 20  |_alive.L,. MOV  |
00009de0  20 20 20 52 30 2c 20 23  33 0d 4c 36 14 20 4d 56  |   R0, #3.L6. MV|
00009df0  4e 20 20 20 20 20 52 31  2c 20 23 31 34 0d 4c 40  |N     R1, #14.L@|
00009e00  19 20 4d 4f 56 20 20 20  20 20 52 32 2c 20 23 73  |. MOV     R2, #s|
00009e10  63 72 65 61 6d 25 0d 4c  4a 13 20 4d 4f 56 20 20  |cream%.LJ. MOV  |
00009e20  20 20 20 52 33 2c 20 23  30 0d 4c 54 1c 20 53 57  |   R3, #0.LT. SW|
00009e30  49 20 20 20 20 20 22 53  6f 75 6e 64 5f 43 6f 6e  |I     "Sound_Con|
00009e40  74 72 6f 6c 22 0d 4c 5e  15 20 42 20 20 20 20 20  |trol".L^. B     |
00009e50  20 20 6e 6f 74 5f 64 65  61 64 0d 4c 68 12 20 2e  |  not_dead.Lh. .|
00009e60  64 65 61 64 5f 70 6c 61  79 65 72 32 0d 4c 72 1e  |dead_player2.Lr.|
00009e70  20 4c 44 52 20 20 20 20  20 52 30 2c 20 70 6c 61  | LDR     R0, pla|
00009e80  79 65 72 32 5f 61 6c 69  76 65 0d 4c 7c 13 20 43  |yer2_alive.L|. C|
00009e90  4d 50 20 20 20 20 20 52  30 2c 20 23 31 0d 4c 86  |MP     R0, #1.L.|
00009ea0  15 20 42 45 51 20 20 20  20 20 6e 6f 74 5f 64 65  |. BEQ     not_de|
00009eb0  61 64 0d 4c 90 13 20 4d  4f 56 20 20 20 20 20 52  |ad.L.. MOV     R|
00009ec0  30 2c 20 23 31 0d 4c 9a  1e 20 53 54 52 20 20 20  |0, #1.L.. STR   |
00009ed0  20 20 52 30 2c 20 70 6c  61 79 65 72 32 5f 61 6c  |  R0, player2_al|
00009ee0  69 76 65 0d 4c a4 13 20  4d 4f 56 20 20 20 20 20  |ive.L.. MOV     |
00009ef0  52 30 2c 20 23 33 0d 4c  ae 14 20 4d 56 4e 20 20  |R0, #3.L.. MVN  |
00009f00  20 20 20 52 31 2c 20 23  31 34 0d 4c b8 19 20 4d  |   R1, #14.L.. M|
00009f10  4f 56 20 20 20 20 20 52  32 2c 20 23 73 63 72 65  |OV     R2, #scre|
00009f20  61 6d 25 0d 4c c2 13 20  4d 4f 56 20 20 20 20 20  |am%.L.. MOV     |
00009f30  52 33 2c 20 23 30 0d 4c  cc 1c 20 53 57 49 20 20  |R3, #0.L.. SWI  |
00009f40  20 20 20 22 53 6f 75 6e  64 5f 43 6f 6e 74 72 6f  |   "Sound_Contro|
00009f50  6c 22 0d 4c d6 0e 20 2e  6e 6f 74 5f 64 65 61 64  |l".L.. .not_dead|
00009f60  0d 4c e0 13 20 4d 4f 56  20 20 20 20 20 50 43 2c  |.L.. MOV     PC,|
00009f70  52 31 34 0d 4c ea 06 20  3a 0d 4c f4 13 20 2e 70  |R14.L.. :.L.. .p|
00009f80  6c 61 79 65 72 31 5f 61  6c 69 76 65 0d 4c fe 0e  |layer1_alive.L..|
00009f90  20 45 51 55 44 20 20 20  20 30 0d 4d 08 13 20 2e  | EQUD    0.M.. .|
00009fa0  70 6c 61 79 65 72 32 5f  61 6c 69 76 65 0d 4d 12  |player2_alive.M.|
00009fb0  0e 20 45 51 55 44 20 20  20 20 30 0d 4d 1c 06 20  |. EQUD    0.M.. |
00009fc0  3a 0d 4d 26 15 20 2e 65  78 70 6c 6f 73 69 6f 6e  |:.M&. .explosion|
00009fd0  5f 73 70 72 61 79 0d 4d  30 06 20 5d 0d 4d 3a 10  |_spray.M0. ].M:.|
00009fe0  20 e3 20 61 25 3d 31 20  b8 20 36 34 0d 4d 44 10  | . a%=1 . 64.MD.|
00009ff0  20 72 25 3d b3 28 32 30  29 2b 32 38 0d 4d 4e 10  | r%=.(20)+28.MN.|
0000a000  20 61 6e 67 25 3d b3 28  33 36 30 29 0d 4d 58 13  | ang%=.(360).MX.|
0000a010  20 78 25 3d 9b b2 28 61  6e 67 25 29 2a 72 25 0d  | x%=..(ang%)*r%.|
0000a020  4d 62 13 20 79 25 3d b5  b2 28 61 6e 67 25 29 2a  |Mb. y%=..(ang%)*|
0000a030  72 25 0d 4d 6c 21 20 e7  20 78 25 3c 30 20 8c 20  |r%.Ml! . x%<0 . |
0000a040  78 25 3d 28 78 25 20 84  20 31 32 38 29 20 80 20  |x%=(x% . 128) . |
0000a050  32 35 35 0d 4d 76 21 20  e7 20 79 25 3c 30 20 8c  |255.Mv! . y%<0 .|
0000a060  20 79 25 3d 28 79 25 20  84 20 31 32 38 29 20 80  | y%=(y% . 128) .|
0000a070  20 32 35 35 0d 4d 80 0f  20 5b 4f 50 54 20 70 61  | 255.M.. [OPT pa|
0000a080  73 73 25 0d 4d 8a 0f 20  45 51 55 42 20 20 20 20  |ss%.M.. EQUB    |
0000a090  78 25 0d 4d 94 0f 20 45  51 55 42 20 20 20 20 79  |x%.M.. EQUB    y|
0000a0a0  25 0d 4d 9e 06 20 5d 0d  4d a8 06 20 ed 0d 4d b2  |%.M.. ].M.. ..M.|
0000a0b0  0f 20 5b 4f 50 54 20 70  61 73 73 25 0d 4d bc 0a  |. [OPT pass%.M..|
0000a0c0  20 41 4c 49 47 4e 0d 4d  c6 06 20 3a 0d 4d d0 0e  | ALIGN.M.. :.M..|
0000a0d0  20 2e 65 6e 64 5f 67 61  6d 65 0d 4d da 0e 20 45  | .end_game.M.. E|
0000a0e0  51 55 44 20 20 20 20 30  0d 4d e4 15 20 2e 61 64  |QUD    0.M.. .ad|
0000a0f0  72 5f 73 63 72 65 65 6e  73 74 6f 72 65 0d 4d ee  |r_screenstore.M.|
0000a100  18 20 45 51 55 44 20 20  20 20 73 63 72 65 65 6e  |. EQUD    screen|
0000a110  73 74 6f 72 65 0d 4d f8  10 20 2e 61 64 72 5f 63  |store.M.. .adr_c|
0000a120  6c 69 73 74 32 0d 4e 02  13 20 45 51 55 44 20 20  |list2.N.. EQUD  |
0000a130  20 20 63 6c 69 73 74 25  0d 4e 0c 06 20 3a 0d 4e  |  clist%.N.. :.N|
0000a140  16 06 20 3a 0d 4e 20 06  20 3a 0d 4e 2a 0e 20 2e  |.. :.N . :.N*. .|
0000a150  61 64 64 5f 63 65 6c 6c  0d 4e 34 1e 20 53 54 4d  |add_cell.N4. STM|
0000a160  46 44 20 20 20 52 31 33  21 2c 7b 52 30 2d 52 31  |FD   R13!,{R0-R1|
0000a170  32 2c 52 31 34 7d 0d 4e  3e 06 20 3a 0d 4e 48 18  |2,R14}.N>. :.NH.|
0000a180  20 52 53 42 20 20 20 20  20 52 32 2c 52 32 2c 20  | RSB     R2,R2, |
0000a190  23 32 35 36 0d 4e 52 1a  20 4d 4f 56 20 20 20 20  |#256.NR. MOV    |
0000a1a0  20 52 31 2c 52 31 2c 20  41 53 4c 20 23 34 0d 4e  | R1,R1, ASL #4.N|
0000a1b0  5c 1a 20 4d 4f 56 20 20  20 20 20 52 32 2c 52 32  |\. MOV     R2,R2|
0000a1c0  2c 20 41 53 4c 20 23 34  0d 4e 66 06 20 3a 0d 4e  |, ASL #4.Nf. :.N|
0000a1d0  70 1b 20 4c 44 52 20 20  20 20 20 52 39 2c 20 61  |p. LDR     R9, a|
0000a1e0  64 72 5f 62 63 6c 69 73  74 0d 4e 7a 0c 20 2e 73  |dr_bclist.Nz. .s|
0000a1f0  6c 6f 6f 70 31 0d 4e 84  19 20 4c 44 52 20 20 20  |loop1.N.. LDR   |
0000a200  20 20 52 38 2c 5b 52 39  5d 2c 20 23 33 32 0d 4e  |  R8,[R9], #32.N|
0000a210  8e 13 20 43 4d 50 20 20  20 20 20 52 38 2c 20 23  |.. CMP     R8, #|
0000a220  30 0d 4e 98 19 20 4c 44  52 47 54 20 20 20 52 38  |0.N.. LDRGT   R8|
0000a230  2c 5b 52 39 5d 2c 20 23  33 32 0d 4e a2 13 20 43  |,[R9], #32.N.. C|
0000a240  4d 50 47 54 20 20 20 52  38 2c 20 23 30 0d 4e ac  |MPGT   R8, #0.N.|
0000a250  19 20 4c 44 52 47 54 20  20 20 52 38 2c 5b 52 39  |. LDRGT   R8,[R9|
0000a260  5d 2c 20 23 33 32 0d 4e  b6 13 20 43 4d 50 47 54  |], #32.N.. CMPGT|
0000a270  20 20 20 52 38 2c 20 23  30 0d 4e c0 19 20 4c 44  |   R8, #0.N.. LD|
0000a280  52 47 54 20 20 20 52 38  2c 5b 52 39 5d 2c 20 23  |RGT   R8,[R9], #|
0000a290  33 32 0d 4e ca 13 20 43  4d 50 47 54 20 20 20 52  |32.N.. CMPGT   R|
0000a2a0  38 2c 20 23 30 0d 4e d4  13 20 42 47 54 20 20 20  |8, #0.N.. BGT   |
0000a2b0  20 20 73 6c 6f 6f 70 31  0d 4e de 17 20 53 55 42  |  sloop1.N.. SUB|
0000a2c0  45 51 20 20 20 52 39 2c  52 39 2c 20 23 33 32 0d  |EQ   R9,R9, #32.|
0000a2d0  4e e8 17 20 53 54 4d 45  51 49 41 20 52 39 2c 7b  |N.. STMEQIA R9,{|
0000a2e0  52 30 2d 52 35 7d 0d 4e  f2 1b 20 53 54 52 45 51  |R0-R5}.N.. STREQ|
0000a2f0  20 20 20 52 39 2c 20 61  64 72 5f 62 63 6c 69 73  |   R9, adr_bclis|
0000a300  74 0d 4e fc 06 20 3a 0d  4f 06 1d 20 4c 44 4d 46  |t.N.. :.O.. LDMF|
0000a310  44 20 20 20 52 31 33 21  2c 7b 52 30 2d 52 31 32  |D   R13!,{R0-R12|
0000a320  2c 50 43 7d 0d 4f 10 06  20 3a 0d 4f 1a 06 20 3a  |,PC}.O.. :.O.. :|
0000a330  0d 4f 24 06 20 3a 0d 4f  2e 10 20 2e 61 64 64 5f  |.O$. :.O.. .add_|
0000a340  67 6f 6f 64 69 65 0d 4f  38 1e 20 53 54 4d 46 44  |goodie.O8. STMFD|
0000a350  20 20 20 52 31 33 21 2c  7b 52 30 2d 52 31 32 2c  |   R13!,{R0-R12,|
0000a360  52 31 34 7d 0d 4f 42 06  20 3a 0d 4f 4c 14 20 4c  |R14}.OB. :.OL. L|
0000a370  44 52 20 20 20 20 20 52  39 2c 20 72 6e 64 0d 4f  |DR     R9, rnd.O|
0000a380  56 1b 20 4d 4f 56 20 20  20 20 20 52 39 2c 52 39  |V. MOV     R9,R9|
0000a390  2c 20 4c 53 52 20 23 32  34 0d 4f 60 16 20 80 20  |, LSR #24.O`. . |
0000a3a0  20 20 20 20 52 30 2c 52  39 2c 20 23 32 35 35 0d  |    R0,R9, #255.|
0000a3b0  4f 6a 11 20 2e 67 6f 6f  64 69 65 5f 6c 6f 6f 70  |Oj. .goodie_loop|
0000a3c0  0d 4f 74 13 20 43 4d 50  20 20 20 20 20 52 30 2c  |.Ot. CMP     R0,|
0000a3d0  20 23 38 0d 4f 7e 16 20  53 55 42 47 54 20 20 20  | #8.O~. SUBGT   |
0000a3e0  52 30 2c 52 30 2c 20 23  38 0d 4f 88 18 20 42 47  |R0,R0, #8.O.. BG|
0000a3f0  54 20 20 20 20 20 67 6f  6f 64 69 65 5f 6c 6f 6f  |T     goodie_loo|
0000a400  70 0d 4f 92 16 20 41 44  44 20 20 20 20 20 52 30  |p.O.. ADD     R0|
0000a410  2c 52 30 2c 20 23 34 0d  4f 9c 1a 20 80 20 20 20  |,R0, #4.O.. .   |
0000a420  20 20 52 31 2c 52 39 2c  20 23 25 31 31 31 30 30  |  R1,R9, #%11100|
0000a430  30 0d 4f a6 1a 20 41 44  52 20 20 20 20 20 52 32  |0.O.. ADR     R2|
0000a440  2c 20 70 6f 73 69 74 69  6f 6e 73 0d 4f b0 15 20  |, positions.O.. |
0000a450  41 44 44 20 20 20 20 20  52 32 2c 52 32 2c 52 31  |ADD     R2,R2,R1|
0000a460  0d 4f ba 14 20 4c 44 52  20 20 20 20 20 52 31 2c  |.O.. LDR     R1,|
0000a470  5b 52 32 5d 0d 4f c4 18  20 4c 44 52 20 20 20 20  |[R2].O.. LDR    |
0000a480  20 52 32 2c 5b 52 32 2c  20 23 34 5d 0d 4f ce 15  | R2,[R2, #4].O..|
0000a490  20 4d 4f 56 20 20 20 20  20 52 33 2c 20 23 33 32  | MOV     R3, #32|
0000a4a0  30 0d 4f d8 17 20 42 4c  20 20 20 20 20 20 61 64  |0.O.. BL      ad|
0000a4b0  64 5f 73 70 72 69 74 65  0d 4f e2 06 20 3a 0d 4f  |d_sprite.O.. :.O|
0000a4c0  ec 1d 20 4c 44 4d 46 44  20 20 20 52 31 33 21 2c  |.. LDMFD   R13!,|
0000a4d0  7b 52 30 2d 52 31 32 2c  50 43 7d 0d 4f f6 06 20  |{R0-R12,PC}.O.. |
0000a4e0  3a 0d 50 00 0f 20 2e 70  6f 73 69 74 69 6f 6e 73  |:.P.. .positions|
0000a4f0  0d 50 0a 06 20 5d 0d 50  14 0f 20 e3 20 61 25 3d  |.P.. ].P.. . a%=|
0000a500  30 20 b8 20 38 0d 50 1e  0e 20 5b 4f 50 54 70 61  |0 . 8.P.. [OPTpa|
0000a510  73 73 25 0d 50 28 0e 20  45 51 55 44 20 20 20 20  |ss%.P(. EQUD    |
0000a520  30 0d 50 32 0e 20 45 51  55 44 20 20 20 20 30 0d  |0.P2. EQUD    0.|
0000a530  50 3c 06 20 5d 0d 50 46  06 20 ed 0d 50 50 0f 20  |P<. ].PF. ..PP. |
0000a540  5b 4f 50 54 20 70 61 73  73 25 0d 50 5a 06 20 3a  |[OPT pass%.PZ. :|
0000a550  0d 50 64 12 20 2e 61 73  5f 61 64 72 5f 73 6c 69  |.Pd. .as_adr_sli|
0000a560  73 74 0d 50 6e 13 20 45  51 55 44 20 20 20 20 73  |st.Pn. EQUD    s|
0000a570  6c 69 73 74 25 0d 50 78  06 20 3a 0d 50 82 10 20  |list%.Px. :.P.. |
0000a580  2e 61 64 64 5f 73 70 72  69 74 65 0d 50 8c 1e 20  |.add_sprite.P.. |
0000a590  53 54 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 30  |STMFD   R13!,{R0|
0000a5a0  2d 52 31 32 2c 52 31 34  7d 0d 50 96 06 20 3a 0d  |-R12,R14}.P.. :.|
0000a5b0  50 a0 1d 20 4c 44 52 20  20 20 20 20 52 39 2c 20  |P.. LDR     R9, |
0000a5c0  61 73 5f 61 64 72 5f 73  6c 69 73 74 0d 50 aa 0c  |as_adr_slist.P..|
0000a5d0  20 2e 73 6c 6f 6f 70 31  0d 50 b4 14 20 4c 44 52  | .sloop1.P.. LDR|
0000a5e0  20 20 20 20 20 52 38 2c  5b 52 39 5d 0d 50 be 13  |     R8,[R9].P..|
0000a5f0  20 43 4d 50 20 20 20 20  20 52 38 2c 20 23 30 0d  | CMP     R8, #0.|
0000a600  50 c8 17 20 41 44 44 4e  45 20 20 20 52 39 2c 52  |P.. ADDNE   R9,R|
0000a610  39 2c 20 23 31 36 0d 50  d2 13 20 42 4e 45 20 20  |9, #16.P.. BNE  |
0000a620  20 20 20 73 6c 6f 6f 70  31 0d 50 dc 17 20 53 54  |   sloop1.P.. ST|
0000a630  4d 45 51 49 41 20 52 39  2c 7b 52 30 2d 52 33 7d  |MEQIA R9,{R0-R3}|
0000a640  0d 50 e6 16 20 42 45 51  20 20 20 20 20 64 6f 6e  |.P.. BEQ     don|
0000a650  65 5f 63 65 6c 6c 0d 50  f0 0f 20 2e 64 6f 6e 65  |e_cell.P.. .done|
0000a660  5f 63 65 6c 6c 0d 50 fa  06 20 3a 0d 51 04 1d 20  |_cell.P.. :.Q.. |
0000a670  4c 44 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 30  |LDMFD   R13!,{R0|
0000a680  2d 52 31 32 2c 50 43 7d  0d 51 0e 06 20 3a 0d 51  |-R12,PC}.Q.. :.Q|
0000a690  18 0d 20 2e 70 32 5f 66  69 72 65 0d 51 22 0e 20  |.. .p2_fire.Q". |
0000a6a0  45 51 55 44 20 20 20 20  30 0d 51 2c 0f 20 2e 65  |EQUD    0.Q,. .e|
0000a6b0  78 70 6c 6f 64 65 5f 32  0d 51 36 0e 20 45 51 55  |xplode_2.Q6. EQU|
0000a6c0  44 20 20 20 20 30 0d 51  40 06 20 3a 0d 51 4a 0d  |D    0.Q@. :.QJ.|
0000a6d0  20 2e 70 6c 61 79 65 72  32 0d 51 54 1a 20 53 54  | .player2.QT. ST|
0000a6e0  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 39 2c 52  |MFD   R13!,{R9,R|
0000a6f0  31 34 7d 0d 51 5e 06 20  3a 0d 51 68 14 20 43 4d  |14}.Q^. :.Qh. CM|
0000a700  50 20 20 20 20 20 52 36  2c 20 23 33 32 0d 51 72  |P     R6, #32.Qr|
0000a710  14 20 4d 4f 56 4c 54 20  20 20 52 36 2c 20 23 33  |. MOVLT   R6, #3|
0000a720  32 0d 51 7c 14 20 43 4d  50 20 20 20 20 20 52 37  |2.Q|. CMP     R7|
0000a730  2c 20 23 33 32 0d 51 86  14 20 4d 4f 56 4c 54 20  |, #32.Q.. MOVLT |
0000a740  20 20 52 37 2c 20 23 33  32 0d 51 90 19 20 43 4d  |  R7, #32.Q.. CM|
0000a750  50 20 20 20 20 20 52 36  2c 20 23 31 32 38 30 2d  |P     R6, #1280-|
0000a760  38 30 0d 51 9a 19 20 4d  4f 56 47 54 20 20 20 52  |80.Q.. MOVGT   R|
0000a770  36 2c 20 23 31 32 38 30  2d 38 30 0d 51 a4 19 20  |6, #1280-80.Q.. |
0000a780  43 4d 50 20 20 20 20 20  52 37 2c 20 23 31 30 32  |CMP     R7, #102|
0000a790  34 2d 38 30 0d 51 ae 19  20 4d 4f 56 47 54 20 20  |4-80.Q.. MOVGT  |
0000a7a0  20 52 37 2c 20 23 31 30  32 34 2d 38 30 0d 51 b8  | R7, #1024-80.Q.|
0000a7b0  06 20 3a 0d 51 c2 1e 20  4c 44 52 20 20 20 20 20  |. :.Q.. LDR     |
0000a7c0  52 30 2c 20 70 6c 61 79  65 72 32 5f 61 6c 69 76  |R0, player2_aliv|
0000a7d0  65 0d 51 cc 13 20 43 4d  50 20 20 20 20 20 52 30  |e.Q.. CMP     R0|
0000a7e0  2c 20 23 30 0d 51 d6 19  20 42 45 51 20 20 20 20  |, #0.Q.. BEQ    |
0000a7f0  20 70 6c 61 79 5f 70 6c  61 79 65 72 32 0d 51 e0  | play_player2.Q.|
0000a800  1c 20 42 4e 45 20 20 20  20 20 65 78 70 6c 6f 64  |. BNE     explod|
0000a810  65 5f 70 6c 61 79 65 72  32 0d 51 ea 06 20 3a 0d  |e_player2.Q.. :.|
0000a820  51 f4 15 20 2e 65 78 70  6c 6f 64 65 5f 70 6c 61  |Q.. .explode_pla|
0000a830  79 65 72 32 0d 51 fe 06  20 3a 0d 52 08 1a 20 4c  |yer2.Q.. :.R.. L|
0000a840  44 52 20 20 20 20 20 52  30 2c 20 65 78 70 6c 6f  |DR     R0, explo|
0000a850  64 65 5f 32 0d 52 12 16  20 41 44 44 20 20 20 20  |de_2.R.. ADD    |
0000a860  20 52 30 2c 52 30 2c 20  23 31 0d 52 1c 1a 20 53  | R0,R0, #1.R.. S|
0000a870  54 52 20 20 20 20 20 52  30 2c 20 65 78 70 6c 6f  |TR     R0, explo|
0000a880  64 65 5f 32 0d 52 26 16  20 43 4d 50 20 20 20 20  |de_2.R&. CMP    |
0000a890  20 52 30 2c 20 23 37 3c  3c 33 0d 52 30 19 20 53  | R0, #7<<3.R0. S|
0000a8a0  54 52 47 54 20 20 20 52  30 2c 20 65 6e 64 5f 67  |TRGT   R0, end_g|
0000a8b0  61 6d 65 0d 52 3a 19 20  4c 44 4d 47 54 46 44 20  |ame.R:. LDMGTFD |
0000a8c0  52 31 33 21 2c 7b 52 39  2c 50 43 7d 0d 52 44 16  |R13!,{R9,PC}.RD.|
0000a8d0  20 43 4d 50 20 20 20 20  20 52 30 2c 20 23 37 3c  | CMP     R0, #7<|
0000a8e0  3c 31 0d 52 4e 19 20 4c  44 4d 47 54 46 44 20 52  |<1.RN. LDMGTFD R|
0000a8f0  31 33 21 2c 7b 52 39 2c  50 43 7d 0d 52 58 1a 20  |13!,{R9,PC}.RX. |
0000a900  4d 4f 56 20 20 20 20 20  52 30 2c 52 30 2c 20 41  |MOV     R0,R0, A|
0000a910  53 52 20 23 31 0d 52 62  1a 20 4d 4f 56 20 20 20  |SR #1.Rb. MOV   |
0000a920  20 20 52 31 2c 52 36 2c  20 41 53 52 20 23 32 0d  |  R1,R6, ASR #2.|
0000a930  52 6c 1a 20 4d 4f 56 20  20 20 20 20 52 32 2c 52  |Rl. MOV     R2,R|
0000a940  37 2c 20 41 53 52 20 23  32 0d 52 76 16 20 53 55  |7, ASR #2.Rv. SU|
0000a950  42 20 20 20 20 20 52 31  2c 52 31 2c 20 23 34 0d  |B     R1,R1, #4.|
0000a960  52 80 1d 20 42 4c 20 20  20 20 20 20 70 6c 6f 74  |R.. BL      plot|
0000a970  5f 73 70 72 69 74 65 5f  32 30 31 36 0d 52 8a 06  |_sprite_2016.R..|
0000a980  20 3a 0d 52 94 19 20 4c  44 4d 46 44 20 20 20 52  | :.R.. LDMFD   R|
0000a990  31 33 21 2c 7b 52 39 2c  50 43 7d 0d 52 9e 06 20  |13!,{R9,PC}.R.. |
0000a9a0  3a 0d 52 a8 12 20 2e 70  6c 61 79 5f 70 6c 61 79  |:.R.. .play_play|
0000a9b0  65 72 32 0d 52 b2 06 20  3a 0d 52 bc 1a 20 4d 4f  |er2.R.. :.R.. MO|
0000a9c0  56 20 20 20 20 20 52 31  2c 52 36 2c 20 4c 53 52  |V     R1,R6, LSR|
0000a9d0  20 23 32 0d 52 c6 1a 20  4d 4f 56 20 20 20 20 20  | #2.R.. MOV     |
0000a9e0  52 32 2c 52 37 2c 20 4c  53 52 20 23 32 0d 52 d0  |R2,R7, LSR #2.R.|
0000a9f0  1c 20 41 44 44 20 20 20  20 20 52 31 2c 52 31 2c  |. ADD     R1,R1,|
0000aa00  20 23 78 65 78 74 25 2f  32 0d 52 da 17 20 42 4c  | #xext%/2.R.. BL|
0000aa10  20 20 20 20 20 20 72 65  61 64 5f 70 6f 69 6e 74  |      read_point|
0000aa20  0d 52 e4 13 20 43 4d 50  20 20 20 20 20 52 30 2c  |.R.. CMP     R0,|
0000aa30  20 23 30 0d 52 ee 16 20  53 55 42 45 51 20 20 20  | #0.R.. SUBEQ   |
0000aa40  52 37 2c 52 37 2c 20 23  34 0d 52 f8 06 20 3a 0d  |R7,R7, #4.R.. :.|
0000aa50  53 02 1a 20 4d 4f 56 20  20 20 20 20 52 31 2c 52  |S.. MOV     R1,R|
0000aa60  36 2c 20 4c 53 52 20 23  32 0d 53 0c 1a 20 4d 4f  |6, LSR #2.S.. MO|
0000aa70  56 20 20 20 20 20 52 32  2c 52 37 2c 20 4c 53 52  |V     R2,R7, LSR|
0000aa80  20 23 32 0d 53 16 1c 20  41 44 44 20 20 20 20 20  | #2.S.. ADD     |
0000aa90  52 31 2c 52 31 2c 20 23  78 65 78 74 25 2f 33 0d  |R1,R1, #xext%/3.|
0000aaa0  53 20 17 20 42 4c 20 20  20 20 20 20 72 65 61 64  |S . BL      read|
0000aab0  5f 70 6f 69 6e 74 0d 53  2a 13 20 43 4d 50 20 20  |_point.S*. CMP  |
0000aac0  20 20 20 52 30 2c 20 23  30 0d 53 34 16 20 41 44  |   R0, #0.S4. AD|
0000aad0  44 4e 45 20 20 20 52 37  2c 52 37 2c 20 23 34 0d  |DNE   R7,R7, #4.|
0000aae0  53 3e 06 20 3a 0d 53 48  1a 20 4d 4f 56 20 20 20  |S>. :.SH. MOV   |
0000aaf0  20 20 52 31 2c 52 36 2c  20 4c 53 52 20 23 32 0d  |  R1,R6, LSR #2.|
0000ab00  53 52 1a 20 4d 4f 56 20  20 20 20 20 52 32 2c 52  |SR. MOV     R2,R|
0000ab10  37 2c 20 4c 53 52 20 23  32 0d 53 5c 1e 20 41 44  |7, LSR #2.S\. AD|
0000ab20  44 20 20 20 20 20 52 31  2c 52 31 2c 20 23 78 65  |D     R1,R1, #xe|
0000ab30  78 74 25 2f 33 2a 32 0d  53 66 17 20 42 4c 20 20  |xt%/3*2.Sf. BL  |
0000ab40  20 20 20 20 72 65 61 64  5f 70 6f 69 6e 74 0d 53  |    read_point.S|
0000ab50  70 13 20 43 4d 50 20 20  20 20 20 52 30 2c 20 23  |p. CMP     R0, #|
0000ab60  30 0d 53 7a 16 20 41 44  44 4e 45 20 20 20 52 37  |0.Sz. ADDNE   R7|
0000ab70  2c 52 37 2c 20 23 34 0d  53 84 06 20 3a 0d 53 8e  |,R7, #4.S.. :.S.|
0000ab80  1a 20 80 20 20 20 20 20  52 31 30 2c 52 38 2c 20  |. .     R10,R8, |
0000ab90  23 32 35 35 3c 3c 38 0d  53 98 1c 20 4d 4f 56 20  |#255<<8.S.. MOV |
0000aba0  20 20 20 20 52 31 30 2c  52 31 30 2c 20 4c 53 52  |    R10,R10, LSR|
0000abb0  20 23 38 0d 53 a2 06 20  3a 0d 53 ac 1a 20 4d 4f  | #8.S.. :.S.. MO|
0000abc0  56 20 20 20 20 20 52 31  2c 52 36 2c 20 4c 53 52  |V     R1,R6, LSR|
0000abd0  20 23 32 0d 53 b6 1a 20  4d 4f 56 20 20 20 20 20  | #2.S.. MOV     |
0000abe0  52 32 2c 52 37 2c 20 4c  53 52 20 23 32 0d 53 c0  |R2,R7, LSR #2.S.|
0000abf0  1c 20 41 44 44 20 20 20  20 20 52 31 2c 52 31 2c  |. ADD     R1,R1,|
0000ac00  20 23 78 65 78 74 25 2b  31 0d 53 ca 16 20 41 44  | #xext%+1.S.. AD|
0000ac10  44 20 20 20 20 20 52 32  2c 52 32 2c 20 23 38 0d  |D     R2,R2, #8.|
0000ac20  53 d4 17 20 42 4c 20 20  20 20 20 20 72 65 61 64  |S.. BL      read|
0000ac30  5f 70 6f 69 6e 74 0d 53  de 13 20 43 4d 50 20 20  |_point.S.. CMP  |
0000ac40  20 20 20 52 30 2c 20 23  30 0d 53 e8 19 20 42 4e  |   R0, #0.S.. BN|
0000ac50  45 20 20 20 20 20 70 32  5f 6e 6f 74 5f 72 69 67  |E     p2_not_rig|
0000ac60  68 74 0d 53 f2 1a 20 4d  4f 56 20 20 20 20 20 52  |ht.S.. MOV     R|
0000ac70  31 2c 52 36 2c 20 4c 53  52 20 23 32 0d 53 fc 1a  |1,R6, LSR #2.S..|
0000ac80  20 4d 4f 56 20 20 20 20  20 52 32 2c 52 37 2c 20  | MOV     R2,R7, |
0000ac90  4c 53 52 20 23 32 0d 54  06 1a 20 41 44 44 20 20  |LSR #2.T.. ADD  |
0000aca0  20 20 20 52 31 2c 52 31  2c 20 23 78 65 78 74 25  |   R1,R1, #xext%|
0000acb0  0d 54 10 1c 20 41 44 44  20 20 20 20 20 52 32 2c  |.T.. ADD     R2,|
0000acc0  52 32 2c 20 23 79 65 78  74 25 2d 32 0d 54 1a 17  |R2, #yext%-2.T..|
0000acd0  20 42 4c 20 20 20 20 20  20 72 65 61 64 5f 70 6f  | BL      read_po|
0000ace0  69 6e 74 0d 54 24 13 20  43 4d 50 20 20 20 20 20  |int.T$. CMP     |
0000acf0  52 30 2c 20 23 30 0d 54  2e 19 20 42 4e 45 20 20  |R0, #0.T.. BNE  |
0000ad00  20 20 20 70 32 5f 6e 6f  74 5f 72 69 67 68 74 0d  |   p2_not_right.|
0000ad10  54 38 15 20 4d 4f 56 20  20 20 20 20 52 30 2c 20  |T8. MOV     R0, |
0000ad20  23 31 32 39 0d 54 42 13  20 4d 4f 56 20 20 20 20  |#129.TB. MOV    |
0000ad30  20 52 31 2c 20 23 30 0d  54 4c 18 20 53 55 42 20  | R1, #0.TL. SUB |
0000ad40  20 20 20 20 52 31 2c 52  31 2c 20 23 31 32 34 0d  |    R1,R1, #124.|
0000ad50  54 56 15 20 4d 4f 56 20  20 20 20 20 52 32 2c 20  |TV. MOV     R2, |
0000ad60  23 32 35 35 0d 54 60 16  20 53 57 49 20 20 20 20  |#255.T`. SWI    |
0000ad70  20 22 4f 53 5f 42 79 74  65 22 0d 54 6a 15 20 43  | "OS_Byte".Tj. C|
0000ad80  4d 50 20 20 20 20 20 52  31 2c 20 23 32 35 35 0d  |MP     R1, #255.|
0000ad90  54 74 19 20 42 4e 45 20  20 20 20 20 70 32 5f 6e  |Tt. BNE     p2_n|
0000ada0  6f 74 5f 72 69 67 68 74  0d 54 7e 18 20 41 44 44  |ot_right.T~. ADD|
0000adb0  20 20 20 20 20 52 31 30  2c 52 31 30 2c 20 23 34  |     R10,R10, #4|
0000adc0  0d 54 88 16 20 42 49 43  20 20 20 20 20 52 38 2c  |.T.. BIC     R8,|
0000add0  52 38 2c 20 23 31 0d 54  92 12 20 2e 70 32 5f 6e  |R8, #1.T.. .p2_n|
0000ade0  6f 74 5f 72 69 67 68 74  0d 54 9c 06 20 3a 0d 54  |ot_right.T.. :.T|
0000adf0  a6 1a 20 4d 4f 56 20 20  20 20 20 52 31 2c 52 36  |.. MOV     R1,R6|
0000ae00  2c 20 4c 53 52 20 23 32  0d 54 b0 1a 20 4d 4f 56  |, LSR #2.T.. MOV|
0000ae10  20 20 20 20 20 52 32 2c  52 37 2c 20 4c 53 52 20  |     R2,R7, LSR |
0000ae20  23 32 0d 54 ba 16 20 53  55 42 20 20 20 20 20 52  |#2.T.. SUB     R|
0000ae30  31 2c 52 31 2c 20 23 31  0d 54 c4 16 20 41 44 44  |1,R1, #1.T.. ADD|
0000ae40  20 20 20 20 20 52 32 2c  52 32 2c 20 23 38 0d 54  |     R2,R2, #8.T|
0000ae50  ce 17 20 42 4c 20 20 20  20 20 20 72 65 61 64 5f  |.. BL      read_|
0000ae60  70 6f 69 6e 74 0d 54 d8  13 20 43 4d 50 20 20 20  |point.T.. CMP   |
0000ae70  20 20 52 30 2c 20 23 30  0d 54 e2 18 20 42 4e 45  |  R0, #0.T.. BNE|
0000ae80  20 20 20 20 20 70 32 5f  6e 6f 74 5f 6c 65 66 74  |     p2_not_left|
0000ae90  0d 54 ec 1a 20 4d 4f 56  20 20 20 20 20 52 31 2c  |.T.. MOV     R1,|
0000aea0  52 36 2c 20 4c 53 52 20  23 32 0d 54 f6 1a 20 4d  |R6, LSR #2.T.. M|
0000aeb0  4f 56 20 20 20 20 20 52  32 2c 52 37 2c 20 4c 53  |OV     R2,R7, LS|
0000aec0  52 20 23 32 0d 55 00 16  20 53 55 42 20 20 20 20  |R #2.U.. SUB    |
0000aed0  20 52 31 2c 52 31 2c 20  23 31 0d 55 0a 1c 20 41  | R1,R1, #1.U.. A|
0000aee0  44 44 20 20 20 20 20 52  32 2c 52 32 2c 20 23 79  |DD     R2,R2, #y|
0000aef0  65 78 74 25 2d 32 0d 55  14 17 20 42 4c 20 20 20  |ext%-2.U.. BL   |
0000af00  20 20 20 72 65 61 64 5f  70 6f 69 6e 74 0d 55 1e  |   read_point.U.|
0000af10  13 20 43 4d 50 20 20 20  20 20 52 30 2c 20 23 30  |. CMP     R0, #0|
0000af20  0d 55 28 18 20 42 4e 45  20 20 20 20 20 70 32 5f  |.U(. BNE     p2_|
0000af30  6e 6f 74 5f 6c 65 66 74  0d 55 32 15 20 4d 4f 56  |not_left.U2. MOV|
0000af40  20 20 20 20 20 52 30 2c  20 23 31 32 39 0d 55 3c  |     R0, #129.U<|
0000af50  13 20 4d 4f 56 20 20 20  20 20 52 31 2c 20 23 30  |. MOV     R1, #0|
0000af60  0d 55 46 18 20 53 55 42  20 20 20 20 20 52 31 2c  |.UF. SUB     R1,|
0000af70  52 31 2c 20 23 31 32 33  0d 55 50 15 20 4d 4f 56  |R1, #123.UP. MOV|
0000af80  20 20 20 20 20 52 32 2c  20 23 32 35 35 0d 55 5a  |     R2, #255.UZ|
0000af90  16 20 53 57 49 20 20 20  20 20 22 4f 53 5f 42 79  |. SWI     "OS_By|
0000afa0  74 65 22 0d 55 64 15 20  43 4d 50 20 20 20 20 20  |te".Ud. CMP     |
0000afb0  52 31 2c 20 23 32 35 35  0d 55 6e 18 20 42 4e 45  |R1, #255.Un. BNE|
0000afc0  20 20 20 20 20 70 32 5f  6e 6f 74 5f 6c 65 66 74  |     p2_not_left|
0000afd0  0d 55 78 18 20 53 55 42  20 20 20 20 20 52 31 30  |.Ux. SUB     R10|
0000afe0  2c 52 31 30 2c 20 23 34  0d 55 82 15 20 84 52 20  |,R10, #4.U.. .R |
0000aff0  20 20 20 20 52 38 2c 52  38 2c 20 23 31 0d 55 8c  |    R8,R8, #1.U.|
0000b000  11 20 2e 70 32 5f 6e 6f  74 5f 6c 65 66 74 0d 55  |. .p2_not_left.U|
0000b010  96 06 20 3a 0d 55 a0 16  20 43 4d 50 20 20 20 20  |.. :.U.. CMP    |
0000b020  20 52 31 30 2c 20 23 31  32 38 0d 55 aa 18 20 42  | R10, #128.U.. B|
0000b030  45 51 20 20 20 20 20 70  32 5f 73 69 64 65 77 61  |EQ     p2_sidewa|
0000b040  79 73 0d 55 b4 15 20 42  47 54 20 20 20 20 20 70  |ys.U.. BGT     p|
0000b050  32 5f 72 69 67 68 74 0d  55 be 1a 20 4d 4f 56 20  |2_right.U.. MOV |
0000b060  20 20 20 20 52 31 2c 52  36 2c 20 4c 53 52 20 23  |    R1,R6, LSR #|
0000b070  32 0d 55 c8 1a 20 4d 4f  56 20 20 20 20 20 52 32  |2.U.. MOV     R2|
0000b080  2c 52 37 2c 20 4c 53 52  20 23 32 0d 55 d2 16 20  |,R7, LSR #2.U.. |
0000b090  53 55 42 20 20 20 20 20  52 31 2c 52 31 2c 20 23  |SUB     R1,R1, #|
0000b0a0  31 0d 55 dc 16 20 41 44  44 20 20 20 20 20 52 32  |1.U.. ADD     R2|
0000b0b0  2c 52 32 2c 20 23 38 0d  55 e6 17 20 42 4c 20 20  |,R2, #8.U.. BL  |
0000b0c0  20 20 20 20 72 65 61 64  5f 70 6f 69 6e 74 0d 55  |    read_point.U|
0000b0d0  f0 13 20 43 4d 50 20 20  20 20 20 52 30 2c 20 23  |.. CMP     R0, #|
0000b0e0  30 0d 55 fa 16 20 4d 4f  56 4e 45 20 20 20 52 31  |0.U.. MOVNE   R1|
0000b0f0  30 2c 20 23 31 32 38 0d  56 04 1a 20 4d 4f 56 20  |0, #128.V.. MOV |
0000b100  20 20 20 20 52 31 2c 52  36 2c 20 4c 53 52 20 23  |    R1,R6, LSR #|
0000b110  32 0d 56 0e 1a 20 4d 4f  56 20 20 20 20 20 52 32  |2.V.. MOV     R2|
0000b120  2c 52 37 2c 20 4c 53 52  20 23 32 0d 56 18 16 20  |,R7, LSR #2.V.. |
0000b130  53 55 42 20 20 20 20 20  52 31 2c 52 31 2c 20 23  |SUB     R1,R1, #|
0000b140  31 0d 56 22 1c 20 41 44  44 20 20 20 20 20 52 32  |1.V". ADD     R2|
0000b150  2c 52 32 2c 20 23 79 65  78 74 25 2d 32 0d 56 2c  |,R2, #yext%-2.V,|
0000b160  17 20 42 4c 20 20 20 20  20 20 72 65 61 64 5f 70  |. BL      read_p|
0000b170  6f 69 6e 74 0d 56 36 13  20 43 4d 50 20 20 20 20  |oint.V6. CMP    |
0000b180  20 52 30 2c 20 23 30 0d  56 40 16 20 4d 4f 56 4e  | R0, #0.V@. MOVN|
0000b190  45 20 20 20 52 31 30 2c  20 23 31 32 38 0d 56 4a  |E   R10, #128.VJ|
0000b1a0  18 20 42 20 20 20 20 20  20 20 70 32 5f 73 69 64  |. B       p2_sid|
0000b1b0  65 77 61 79 73 0d 56 54  0e 20 2e 70 32 5f 72 69  |eways.VT. .p2_ri|
0000b1c0  67 68 74 0d 56 5e 1a 20  4d 4f 56 20 20 20 20 20  |ght.V^. MOV     |
0000b1d0  52 31 2c 52 36 2c 20 4c  53 52 20 23 32 0d 56 68  |R1,R6, LSR #2.Vh|
0000b1e0  1a 20 4d 4f 56 20 20 20  20 20 52 32 2c 52 37 2c  |. MOV     R2,R7,|
0000b1f0  20 4c 53 52 20 23 32 0d  56 72 1a 20 41 44 44 20  | LSR #2.Vr. ADD |
0000b200  20 20 20 20 52 31 2c 52  31 2c 20 23 78 65 78 74  |    R1,R1, #xext|
0000b210  25 0d 56 7c 16 20 41 44  44 20 20 20 20 20 52 32  |%.V|. ADD     R2|
0000b220  2c 52 32 2c 20 23 38 0d  56 86 17 20 42 4c 20 20  |,R2, #8.V.. BL  |
0000b230  20 20 20 20 72 65 61 64  5f 70 6f 69 6e 74 0d 56  |    read_point.V|
0000b240  90 13 20 43 4d 50 20 20  20 20 20 52 30 2c 20 23  |.. CMP     R0, #|
0000b250  30 0d 56 9a 16 20 4d 4f  56 4e 45 20 20 20 52 31  |0.V.. MOVNE   R1|
0000b260  30 2c 20 23 31 32 38 0d  56 a4 1a 20 4d 4f 56 20  |0, #128.V.. MOV |
0000b270  20 20 20 20 52 31 2c 52  36 2c 20 4c 53 52 20 23  |    R1,R6, LSR #|
0000b280  32 0d 56 ae 1a 20 4d 4f  56 20 20 20 20 20 52 32  |2.V.. MOV     R2|
0000b290  2c 52 37 2c 20 4c 53 52  20 23 32 0d 56 b8 1a 20  |,R7, LSR #2.V.. |
0000b2a0  41 44 44 20 20 20 20 20  52 31 2c 52 31 2c 20 23  |ADD     R1,R1, #|
0000b2b0  78 65 78 74 25 0d 56 c2  1c 20 41 44 44 20 20 20  |xext%.V.. ADD   |
0000b2c0  20 20 52 32 2c 52 32 2c  20 23 79 65 78 74 25 2d  |  R2,R2, #yext%-|
0000b2d0  32 0d 56 cc 17 20 42 4c  20 20 20 20 20 20 72 65  |2.V.. BL      re|
0000b2e0  61 64 5f 70 6f 69 6e 74  0d 56 d6 13 20 43 4d 50  |ad_point.V.. CMP|
0000b2f0  20 20 20 20 20 52 30 2c  20 23 30 0d 56 e0 16 20  |     R0, #0.V.. |
0000b300  4d 4f 56 4e 45 20 20 20  52 31 30 2c 20 23 31 32  |MOVNE   R10, #12|
0000b310  38 0d 56 ea 18 20 42 20  20 20 20 20 20 20 70 32  |8.V.. B       p2|
0000b320  5f 73 69 64 65 77 61 79  73 0d 56 f4 11 20 2e 70  |_sideways.V.. .p|
0000b330  32 5f 73 69 64 65 77 61  79 73 0d 56 fe 1b 20 43  |2_sideways.V.. C|
0000b340  4d 50 20 20 20 20 20 52  31 30 2c 20 23 31 32 38  |MP     R10, #128|
0000b350  2b 32 35 2a 32 0d 57 08  1b 20 4d 4f 56 47 54 20  |+25*2.W.. MOVGT |
0000b360  20 20 52 31 30 2c 20 23  31 32 38 2b 32 35 2a 32  |  R10, #128+25*2|
0000b370  0d 57 12 1b 20 43 4d 50  20 20 20 20 20 52 31 30  |.W.. CMP     R10|
0000b380  2c 20 23 31 32 38 2d 32  35 2a 32 0d 57 1c 1b 20  |, #128-25*2.W.. |
0000b390  4d 4f 56 4c 54 20 20 20  52 31 30 2c 20 23 31 32  |MOVLT   R10, #12|
0000b3a0  38 2d 32 35 2a 32 0d 57  26 16 20 43 4d 50 20 20  |8-25*2.W&. CMP  |
0000b3b0  20 20 20 52 31 30 2c 20  23 31 32 38 0d 57 30 18  |   R10, #128.W0.|
0000b3c0  20 41 44 44 4c 54 20 20  20 52 31 30 2c 52 31 30  | ADDLT   R10,R10|
0000b3d0  2c 20 23 31 0d 57 3a 18  20 53 55 42 47 54 20 20  |, #1.W:. SUBGT  |
0000b3e0  20 52 31 30 2c 52 31 30  2c 20 23 31 0d 57 44 1b  | R10,R10, #1.WD.|
0000b3f0  20 42 49 43 20 20 20 20  20 52 38 2c 52 38 2c 20  | BIC     R8,R8, |
0000b400  23 32 35 35 3c 3c 38 0d  57 4e 1d 20 84 52 20 20  |#255<<8.WN. .R  |
0000b410  20 20 20 52 38 2c 52 38  2c 52 31 30 2c 20 4c 53  |   R8,R8,R10, LS|
0000b420  4c 20 23 38 0d 57 58 1a  20 53 55 42 20 20 20 20  |L #8.WX. SUB    |
0000b430  20 52 31 30 2c 52 31 30  2c 20 23 31 32 38 0d 57  | R10,R10, #128.W|
0000b440  62 1e 20 41 44 44 20 20  20 20 20 52 36 2c 52 36  |b. ADD     R6,R6|
0000b450  2c 52 31 30 2c 20 41 53  52 20 23 33 0d 57 6c 06  |,R10, ASR #3.Wl.|
0000b460  20 3a 0d 57 76 1b 20 80  20 20 20 20 20 52 31 30  | :.Wv. .     R10|
0000b470  2c 52 38 2c 20 23 32 35  35 3c 3c 31 36 0d 57 80  |,R8, #255<<16.W.|
0000b480  1d 20 4d 4f 56 20 20 20  20 20 52 31 30 2c 52 31  |. MOV     R10,R1|
0000b490  30 2c 20 4c 53 52 20 23  31 36 0d 57 8a 06 20 3a  |0, LSR #16.W.. :|
0000b4a0  0d 57 94 1a 20 4d 4f 56  20 20 20 20 20 52 31 2c  |.W.. MOV     R1,|
0000b4b0  52 36 2c 20 4c 53 52 20  23 32 0d 57 9e 1a 20 4d  |R6, LSR #2.W.. M|
0000b4c0  4f 56 20 20 20 20 20 52  32 2c 52 37 2c 20 4c 53  |OV     R2,R7, LS|
0000b4d0  52 20 23 32 0d 57 a8 1c  20 41 44 44 20 20 20 20  |R #2.W.. ADD    |
0000b4e0  20 52 31 2c 52 31 2c 20  23 78 65 78 74 25 2f 32  | R1,R1, #xext%/2|
0000b4f0  0d 57 b2 1a 20 41 44 44  20 20 20 20 20 52 32 2c  |.W.. ADD     R2,|
0000b500  52 32 2c 20 23 79 65 78  74 25 0d 57 bc 17 20 42  |R2, #yext%.W.. B|
0000b510  4c 20 20 20 20 20 20 72  65 61 64 5f 70 6f 69 6e  |L      read_poin|
0000b520  74 0d 57 c6 13 20 43 4d  50 20 20 20 20 20 52 30  |t.W.. CMP     R0|
0000b530  2c 20 23 30 0d 57 d0 16  20 42 4e 45 20 20 20 20  |, #0.W.. BNE    |
0000b540  20 70 32 5f 6e 6f 74 5f  75 70 0d 57 da 1a 3b 4d  | p2_not_up.W..;M|
0000b550  4f 56 20 20 20 20 20 52  31 2c 52 36 2c 20 4c 53  |OV     R1,R6, LS|
0000b560  52 20 23 32 0d 57 e4 1a  3b 4d 4f 56 20 20 20 20  |R #2.W..;MOV    |
0000b570  20 52 32 2c 52 37 2c 20  4c 53 52 20 23 32 0d 57  | R2,R7, LSR #2.W|
0000b580  ee 1c 3b 41 44 44 20 20  20 20 20 52 31 2c 52 31  |..;ADD     R1,R1|
0000b590  2c 20 23 78 65 78 74 25  2f 32 0d 57 f8 1a 3b 41  |, #xext%/2.W..;A|
0000b5a0  44 44 20 20 20 20 20 52  32 2c 52 32 2c 20 23 79  |DD     R2,R2, #y|
0000b5b0  65 78 74 25 0d 58 02 17  3b 42 4c 20 20 20 20 20  |ext%.X..;BL     |
0000b5c0  20 72 65 61 64 5f 70 6f  69 6e 74 0d 58 0c 13 3b  | read_point.X..;|
0000b5d0  43 4d 50 20 20 20 20 20  52 30 2c 20 23 30 0d 58  |CMP     R0, #0.X|
0000b5e0  16 16 3b 42 4e 45 20 20  20 20 20 70 32 5f 6e 6f  |..;BNE     p2_no|
0000b5f0  74 5f 75 70 0d 58 20 15  20 4d 4f 56 20 20 20 20  |t_up.X . MOV    |
0000b600  20 52 30 2c 20 23 31 32  39 0d 58 2a 13 20 4d 4f  | R0, #129.X*. MO|
0000b610  56 20 20 20 20 20 52 31  2c 20 23 30 0d 58 34 17  |V     R1, #0.X4.|
0000b620  20 53 55 42 20 20 20 20  20 52 31 2c 52 31 2c 20  | SUB     R1,R1, |
0000b630  23 32 37 0d 58 3e 15 20  4d 4f 56 20 20 20 20 20  |#27.X>. MOV     |
0000b640  52 32 2c 20 23 32 35 35  0d 58 48 16 20 53 57 49  |R2, #255.XH. SWI|
0000b650  20 20 20 20 20 22 4f 53  5f 42 79 74 65 22 0d 58  |     "OS_Byte".X|
0000b660  52 15 20 43 4d 50 20 20  20 20 20 52 31 2c 20 23  |R. CMP     R1, #|
0000b670  32 35 35 0d 58 5c 18 20  41 44 44 45 51 20 20 20  |255.X\. ADDEQ   |
0000b680  52 31 30 2c 52 31 30 2c  20 23 34 0d 58 66 0f 20  |R10,R10, #4.Xf. |
0000b690  2e 70 32 5f 6e 6f 74 5f  75 70 0d 58 70 06 20 3a  |.p2_not_up.Xp. :|
0000b6a0  0d 58 7a 1a 20 4d 4f 56  20 20 20 20 20 52 31 2c  |.Xz. MOV     R1,|
0000b6b0  52 36 2c 20 4c 53 52 20  23 32 0d 58 84 1a 20 4d  |R6, LSR #2.X.. M|
0000b6c0  4f 56 20 20 20 20 20 52  32 2c 52 37 2c 20 4c 53  |OV     R2,R7, LS|
0000b6d0  52 20 23 32 0d 58 8e 1c  20 41 44 44 20 20 20 20  |R #2.X.. ADD    |
0000b6e0  20 52 31 2c 52 31 2c 20  23 78 65 78 74 25 2d 32  | R1,R1, #xext%-2|
0000b6f0  0d 58 98 17 20 42 4c 20  20 20 20 20 20 72 65 61  |.X.. BL      rea|
0000b700  64 5f 70 6f 69 6e 74 0d  58 a2 13 20 43 4d 50 20  |d_point.X.. CMP |
0000b710  20 20 20 20 52 30 2c 20  23 30 0d 58 ac 18 20 42  |    R0, #0.X.. B|
0000b720  4e 45 20 20 20 20 20 70  32 5f 6e 6f 74 5f 64 6f  |NE     p2_not_do|
0000b730  77 6e 0d 58 b6 1a 20 4d  4f 56 20 20 20 20 20 52  |wn.X.. MOV     R|
0000b740  31 2c 52 36 2c 20 4c 53  52 20 23 32 0d 58 c0 1a  |1,R6, LSR #2.X..|
0000b750  20 4d 4f 56 20 20 20 20  20 52 32 2c 52 37 2c 20  | MOV     R2,R7, |
0000b760  4c 53 52 20 23 32 0d 58  ca 16 20 41 44 44 20 20  |LSR #2.X.. ADD  |
0000b770  20 20 20 52 31 2c 52 31  2c 20 23 32 0d 58 d4 17  |   R1,R1, #2.X..|
0000b780  20 42 4c 20 20 20 20 20  20 72 65 61 64 5f 70 6f  | BL      read_po|
0000b790  69 6e 74 0d 58 de 13 20  43 4d 50 20 20 20 20 20  |int.X.. CMP     |
0000b7a0  52 30 2c 20 23 30 0d 58  e8 18 20 42 4e 45 20 20  |R0, #0.X.. BNE  |
0000b7b0  20 20 20 70 32 5f 6e 6f  74 5f 64 6f 77 6e 0d 58  |   p2_not_down.X|
0000b7c0  f2 15 20 4d 4f 56 20 20  20 20 20 52 30 2c 20 23  |.. MOV     R0, #|
0000b7d0  31 32 39 0d 58 fc 13 20  4d 4f 56 20 20 20 20 20  |129.X.. MOV     |
0000b7e0  52 31 2c 20 23 30 0d 59  06 18 20 53 55 42 20 20  |R1, #0.Y.. SUB  |
0000b7f0  20 20 20 52 31 2c 52 31  2c 20 23 31 30 39 0d 59  |   R1,R1, #109.Y|
0000b800  10 15 20 4d 4f 56 20 20  20 20 20 52 32 2c 20 23  |.. MOV     R2, #|
0000b810  32 35 35 0d 59 1a 16 20  53 57 49 20 20 20 20 20  |255.Y.. SWI     |
0000b820  22 4f 53 5f 42 79 74 65  22 0d 59 24 15 20 43 4d  |"OS_Byte".Y$. CM|
0000b830  50 20 20 20 20 20 52 31  2c 20 23 32 35 35 0d 59  |P     R1, #255.Y|
0000b840  2e 18 20 53 55 42 45 51  20 20 20 52 31 30 2c 52  |.. SUBEQ   R10,R|
0000b850  31 30 2c 20 23 32 0d 59  38 11 20 2e 70 32 5f 6e  |10, #2.Y8. .p2_n|
0000b860  6f 74 5f 64 6f 77 6e 0d  59 42 06 20 3a 0d 59 4c  |ot_down.YB. :.YL|
0000b870  18 20 53 55 42 20 20 20  20 20 52 31 30 2c 52 31  |. SUB     R10,R1|
0000b880  30 2c 20 23 31 0d 59 56  06 20 3a 0d 59 60 16 20  |0, #1.YV. :.Y`. |
0000b890  43 4d 50 20 20 20 20 20  52 31 30 2c 20 23 31 32  |CMP     R10, #12|
0000b8a0  38 0d 59 6a 12 20 42 45  51 20 20 20 20 20 70 32  |8.Yj. BEQ     p2|
0000b8b0  5f 75 64 0d 59 74 12 20  42 47 54 20 20 20 20 20  |_ud.Yt. BGT     |
0000b8c0  70 32 5f 75 70 0d 59 7e  1a 20 4d 4f 56 20 20 20  |p2_up.Y~. MOV   |
0000b8d0  20 20 52 31 2c 52 36 2c  20 4c 53 52 20 23 32 0d  |  R1,R6, LSR #2.|
0000b8e0  59 88 1a 20 4d 4f 56 20  20 20 20 20 52 32 2c 52  |Y.. MOV     R2,R|
0000b8f0  37 2c 20 4c 53 52 20 23  32 0d 59 92 1c 20 41 44  |7, LSR #2.Y.. AD|
0000b900  44 20 20 20 20 20 52 31  2c 52 31 2c 20 23 78 65  |D     R1,R1, #xe|
0000b910  78 74 25 2f 32 0d 59 9c  16 20 53 55 42 20 20 20  |xt%/2.Y.. SUB   |
0000b920  20 20 52 32 2c 52 32 2c  20 23 31 0d 59 a6 17 20  |  R2,R2, #1.Y.. |
0000b930  42 4c 20 20 20 20 20 20  72 65 61 64 5f 70 6f 69  |BL      read_poi|
0000b940  6e 74 0d 59 b0 13 20 43  4d 50 20 20 20 20 20 52  |nt.Y.. CMP     R|
0000b950  30 2c 20 23 30 0d 59 ba  16 20 4d 4f 56 4e 45 20  |0, #0.Y.. MOVNE |
0000b960  20 20 52 31 30 2c 20 23  31 32 38 0d 59 c4 12 20  |  R10, #128.Y.. |
0000b970  42 20 20 20 20 20 20 20  70 32 5f 75 64 0d 59 ce  |B       p2_ud.Y.|
0000b980  0b 20 2e 70 32 5f 75 70  0d 59 d8 1a 20 4d 4f 56  |. .p2_up.Y.. MOV|
0000b990  20 20 20 20 20 52 31 2c  52 36 2c 20 4c 53 52 20  |     R1,R6, LSR |
0000b9a0  23 32 0d 59 e2 1a 20 4d  4f 56 20 20 20 20 20 52  |#2.Y.. MOV     R|
0000b9b0  32 2c 52 37 2c 20 4c 53  52 20 23 32 0d 59 ec 1e  |2,R7, LSR #2.Y..|
0000b9c0  20 41 44 44 20 20 20 20  20 52 31 2c 52 31 2c 20  | ADD     R1,R1, |
0000b9d0  23 78 65 78 74 25 2f 32  2b 32 0d 59 f6 1a 20 41  |#xext%/2+2.Y.. A|
0000b9e0  44 44 20 20 20 20 20 52  32 2c 52 32 2c 20 23 79  |DD     R2,R2, #y|
0000b9f0  65 78 74 25 0d 5a 00 17  20 42 4c 20 20 20 20 20  |ext%.Z.. BL     |
0000ba00  20 72 65 61 64 5f 70 6f  69 6e 74 0d 5a 0a 13 20  | read_point.Z.. |
0000ba10  43 4d 50 20 20 20 20 20  52 30 2c 20 23 30 0d 5a  |CMP     R0, #0.Z|
0000ba20  14 16 20 4d 4f 56 4e 45  20 20 20 52 31 30 2c 20  |.. MOVNE   R10, |
0000ba30  23 31 32 38 0d 5a 1e 1a  20 4d 4f 56 20 20 20 20  |#128.Z.. MOV    |
0000ba40  20 52 31 2c 52 36 2c 20  4c 53 52 20 23 32 0d 5a  | R1,R6, LSR #2.Z|
0000ba50  28 1a 20 4d 4f 56 20 20  20 20 20 52 32 2c 52 37  |(. MOV     R2,R7|
0000ba60  2c 20 4c 53 52 20 23 32  0d 5a 32 1e 20 41 44 44  |, LSR #2.Z2. ADD|
0000ba70  20 20 20 20 20 52 31 2c  52 31 2c 20 23 78 65 78  |     R1,R1, #xex|
0000ba80  74 25 2f 32 2d 32 0d 5a  3c 1a 20 41 44 44 20 20  |t%/2-2.Z<. ADD  |
0000ba90  20 20 20 52 32 2c 52 32  2c 20 23 79 65 78 74 25  |   R2,R2, #yext%|
0000baa0  0d 5a 46 17 20 42 4c 20  20 20 20 20 20 72 65 61  |.ZF. BL      rea|
0000bab0  64 5f 70 6f 69 6e 74 0d  5a 50 13 20 43 4d 50 20  |d_point.ZP. CMP |
0000bac0  20 20 20 20 52 30 2c 20  23 30 0d 5a 5a 16 20 4d  |    R0, #0.ZZ. M|
0000bad0  4f 56 4e 45 20 20 20 52  31 30 2c 20 23 31 32 38  |OVNE   R10, #128|
0000bae0  0d 5a 64 12 20 42 20 20  20 20 20 20 20 70 32 5f  |.Zd. B       p2_|
0000baf0  75 64 0d 5a 6e 0b 20 2e  70 32 5f 75 64 0d 5a 78  |ud.Zn. .p2_ud.Zx|
0000bb00  1b 20 43 4d 50 20 20 20  20 20 52 31 30 2c 20 23  |. CMP     R10, #|
0000bb10  31 32 38 2b 31 31 2a 34  0d 5a 82 1b 20 4d 4f 56  |128+11*4.Z.. MOV|
0000bb20  47 54 20 20 20 52 31 30  2c 20 23 31 32 38 2b 31  |GT   R10, #128+1|
0000bb30  31 2a 34 0d 5a 8c 1a 20  43 4d 50 20 20 20 20 20  |1*4.Z.. CMP     |
0000bb40  52 31 30 2c 20 23 31 32  38 2d 38 2a 34 0d 5a 96  |R10, #128-8*4.Z.|
0000bb50  1a 20 4d 4f 56 4c 54 20  20 20 52 31 30 2c 20 23  |. MOVLT   R10, #|
0000bb60  31 32 38 2d 38 2a 34 0d  5a a0 16 20 43 4d 50 20  |128-8*4.Z.. CMP |
0000bb70  20 20 20 20 52 31 30 2c  20 23 31 32 38 0d 5a aa  |    R10, #128.Z.|
0000bb80  1c 20 42 49 43 20 20 20  20 20 52 38 2c 52 38 2c  |. BIC     R8,R8,|
0000bb90  20 23 32 35 35 3c 3c 31  36 0d 5a b4 1e 20 84 52  | #255<<16.Z.. .R|
0000bba0  20 20 20 20 20 52 38 2c  52 38 2c 52 31 30 2c 20  |     R8,R8,R10, |
0000bbb0  4c 53 4c 20 23 31 36 0d  5a be 1a 20 53 55 42 20  |LSL #16.Z.. SUB |
0000bbc0  20 20 20 20 52 31 30 2c  52 31 30 2c 20 23 31 32  |    R10,R10, #12|
0000bbd0  38 0d 5a c8 1e 20 41 44  44 20 20 20 20 20 52 37  |8.Z.. ADD     R7|
0000bbe0  2c 52 37 2c 52 31 30 2c  20 41 53 52 20 23 32 0d  |,R7,R10, ASR #2.|
0000bbf0  5a d2 06 20 3a 0d 5a dc  1e 20 4c 44 52 20 20 20  |Z.. :.Z.. LDR   |
0000bc00  20 20 52 30 2c 20 61 64  72 5f 70 32 5f 77 65 61  |  R0, adr_p2_wea|
0000bc10  70 6f 6e 0d 5a e6 14 20  4c 44 52 20 20 20 20 20  |pon.Z.. LDR     |
0000bc20  52 30 2c 5b 52 30 5d 0d  5b 0e 13 20 43 4d 50 20  |R0,[R0].[.. CMP |
0000bc30  20 20 20 20 52 30 2c 20  23 32 0d 5b 18 1b 20 42  |    R0, #2.[.. B|
0000bc40  45 51 20 20 20 20 20 70  32 5f 66 69 72 65 5f 70  |EQ     p2_fire_p|
0000bc50  69 73 74 6f 6c 0d 5b 22  13 20 43 4d 50 20 20 20  |istol.[". CMP   |
0000bc60  20 20 52 30 2c 20 23 33  0d 5b 2c 18 20 42 45 51  |  R0, #3.[,. BEQ|
0000bc70  20 20 20 20 20 70 32 5f  66 69 72 65 5f 67 75 6e  |     p2_fire_gun|
0000bc80  0d 5b 36 13 20 43 4d 50  20 20 20 20 20 52 30 2c  |.[6. CMP     R0,|
0000bc90  20 23 34 0d 5b 40 1b 20  42 45 51 20 20 20 20 20  | #4.[@. BEQ     |
0000bca0  70 32 5f 66 69 72 65 5f  6d 6f 72 74 61 72 0d 5b  |p2_fire_mortar.[|
0000bcb0  4a 13 20 43 4d 50 20 20  20 20 20 52 30 2c 20 23  |J. CMP     R0, #|
0000bcc0  35 0d 5b 54 1b 20 42 45  51 20 20 20 20 20 70 32  |5.[T. BEQ     p2|
0000bcd0  5f 66 69 72 65 5f 68 6f  6d 69 6e 67 0d 5b 5e 13  |_fire_homing.[^.|
0000bce0  20 43 4d 50 20 20 20 20  20 52 30 2c 20 23 36 0d  | CMP     R0, #6.|
0000bcf0  5b 68 1c 20 42 45 51 20  20 20 20 20 70 32 5f 66  |[h. BEQ     p2_f|
0000bd00  69 72 65 5f 73 65 65 6b  69 6e 67 0d 5b 72 13 20  |ire_seeking.[r. |
0000bd10  43 4d 50 20 20 20 20 20  52 30 2c 20 23 37 0d 5b  |CMP     R0, #7.[|
0000bd20  7c 1d 20 42 45 51 20 20  20 20 20 70 32 5f 66 69  ||. BEQ     p2_fi|
0000bd30  72 65 5f 76 65 72 74 69  63 61 6c 0d 5b 86 13 20  |re_vertical.[.. |
0000bd40  43 4d 50 20 20 20 20 20  52 30 2c 20 23 38 0d 5b  |CMP     R0, #8.[|
0000bd50  90 1a 20 42 45 51 20 20  20 20 20 70 32 5f 66 69  |.. BEQ     p2_fi|
0000bd60  72 65 5f 66 6c 61 6d 65  0d 5b 9a 13 20 43 4d 50  |re_flame.[.. CMP|
0000bd70  20 20 20 20 20 52 30 2c  20 23 39 0d 5b a4 19 20  |     R0, #9.[.. |
0000bd80  42 45 51 20 20 20 20 20  70 32 5f 66 69 72 65 5f  |BEQ     p2_fire_|
0000bd90  62 6f 6d 62 0d 5b ae 14  20 43 4d 50 20 20 20 20  |bomb.[.. CMP    |
0000bda0  20 52 30 2c 20 23 31 30  0d 5b b8 1c 20 42 45 51  | R0, #10.[.. BEQ|
0000bdb0  20 20 20 20 20 70 32 5f  66 69 72 65 5f 63 6c 75  |     p2_fire_clu|
0000bdc0  73 74 65 72 0d 5b c2 06  20 3a 0d 5b cc 14 20 2e  |ster.[.. :.[.. .|
0000bdd0  70 32 5f 66 69 72 65 5f  70 69 73 74 6f 6c 0d 5b  |p2_fire_pistol.[|
0000bde0  d6 18 20 4c 44 52 20 20  20 20 20 52 30 2c 20 70  |.. LDR     R0, p|
0000bdf0  32 5f 66 69 72 65 0d 5b  e0 13 20 43 4d 50 20 20  |2_fire.[.. CMP  |
0000be00  20 20 20 52 30 2c 20 23  30 0d 5b ea 1b 20 42 45  |   R0, #0.[.. BE|
0000be10  51 20 20 20 20 20 70 32  5f 70 69 73 74 6f 6c 5f  |Q     p2_pistol_|
0000be20  73 68 6f 74 0d 5b f4 15  20 4d 4f 56 20 20 20 20  |shot.[.. MOV    |
0000be30  20 52 30 2c 20 23 31 32  39 0d 5b fe 13 20 4d 4f  | R0, #129.[.. MO|
0000be40  56 20 20 20 20 20 52 31  2c 20 23 30 0d 5c 08 17  |V     R1, #0.\..|
0000be50  20 53 55 42 20 20 20 20  20 52 31 2c 52 31 2c 20  | SUB     R1,R1, |
0000be60  23 35 39 0d 5c 12 15 20  4d 4f 56 20 20 20 20 20  |#59.\.. MOV     |
0000be70  52 32 2c 20 23 32 35 35  0d 5c 1c 16 20 53 57 49  |R2, #255.\.. SWI|
0000be80  20 20 20 20 20 22 4f 53  5f 42 79 74 65 22 0d 5c  |     "OS_Byte".\|
0000be90  26 15 20 43 4d 50 20 20  20 20 20 52 31 2c 20 23  |&. CMP     R1, #|
0000bea0  32 35 35 0d 5c 30 13 20  4d 4f 56 4e 45 20 20 20  |255.\0. MOVNE   |
0000beb0  52 30 2c 20 23 30 0d 5c  3a 18 20 53 54 52 4e 45  |R0, #0.\:. STRNE|
0000bec0  20 20 20 52 30 2c 20 70  32 5f 66 69 72 65 0d 5c  |   R0, p2_fire.\|
0000bed0  44 1f 20 42 20 20 20 20  20 20 20 70 32 5f 6e 6f  |D. B       p2_no|
0000bee0  74 5f 66 69 72 65 5f 70  69 73 74 6f 6c 0d 5c 4e  |t_fire_pistol.\N|
0000bef0  14 20 2e 70 32 5f 70 69  73 74 6f 6c 5f 73 68 6f  |. .p2_pistol_sho|
0000bf00  74 0d 5c 58 15 20 4d 4f  56 20 20 20 20 20 52 30  |t.\X. MOV     R0|
0000bf10  2c 20 23 31 32 39 0d 5c  62 13 20 4d 4f 56 20 20  |, #129.\b. MOV  |
0000bf20  20 20 20 52 31 2c 20 23  30 0d 5c 6c 17 20 53 55  |   R1, #0.\l. SU|
0000bf30  42 20 20 20 20 20 52 31  2c 52 31 2c 20 23 35 39  |B     R1,R1, #59|
0000bf40  0d 5c 76 15 20 4d 4f 56  20 20 20 20 20 52 32 2c  |.\v. MOV     R2,|
0000bf50  20 23 32 35 35 0d 5c 80  16 20 53 57 49 20 20 20  | #255.\.. SWI   |
0000bf60  20 20 22 4f 53 5f 42 79  74 65 22 0d 5c 8a 15 20  |  "OS_Byte".\.. |
0000bf70  43 4d 50 20 20 20 20 20  52 31 2c 20 23 32 35 35  |CMP     R1, #255|
0000bf80  0d 5c 94 1f 20 42 4e 45  20 20 20 20 20 70 32 5f  |.\.. BNE     p2_|
0000bf90  6e 6f 74 5f 66 69 72 65  5f 70 69 73 74 6f 6c 0d  |not_fire_pistol.|
0000bfa0  5c 9e 13 20 4d 4f 56 20  20 20 20 20 52 30 2c 20  |\.. MOV     R0, |
0000bfb0  23 32 0d 5c a8 1a 20 4d  4f 56 20 20 20 20 20 52  |#2.\.. MOV     R|
0000bfc0  31 2c 52 36 2c 20 4c 53  52 20 23 32 0d 5c b2 1a  |1,R6, LSR #2.\..|
0000bfd0  20 4d 4f 56 20 20 20 20  20 52 32 2c 52 37 2c 20  | MOV     R2,R7, |
0000bfe0  4c 53 52 20 23 32 0d 5c  bc 1a 20 41 44 44 20 20  |LSR #2.\.. ADD  |
0000bff0  20 20 20 52 31 2c 52 31  2c 20 23 78 65 78 74 25  |   R1,R1, #xext%|
0000c000  0d 5c c6 1e 20 41 44 44  20 20 20 20 20 52 32 2c  |.\.. ADD     R2,|
0000c010  52 32 2c 20 23 79 65 78  74 25 2f 34 2a 32 0d 5c  |R2, #yext%/4*2.\|
0000c020  d0 18 20 52 53 42 20 20  20 20 20 52 32 2c 52 32  |.. RSB     R2,R2|
0000c030  2c 20 23 32 35 36 0d 5c  da 14 20 4d 4f 56 20 20  |, #256.\.. MOV  |
0000c040  20 20 20 52 33 2c 20 23  38 30 0d 5c e4 13 20 4d  |   R3, #80.\.. M|
0000c050  4f 56 20 20 20 20 20 52  34 2c 20 23 30 0d 5c ee  |OV     R4, #0.\.|
0000c060  13 20 4d 4f 56 20 20 20  20 20 52 35 2c 20 23 30  |. MOV     R5, #0|
0000c070  0d 5c f8 13 20 54 53 54  20 20 20 20 20 52 38 2c  |.\.. TST     R8,|
0000c080  20 23 31 0d 5d 02 16 20  52 53 42 4e 45 20 20 20  | #1.].. RSBNE   |
0000c090  52 33 2c 52 33 2c 20 23  30 0d 5d 0c 1a 20 53 55  |R3,R3, #0.].. SU|
0000c0a0  42 4e 45 20 20 20 52 31  2c 52 31 2c 20 23 78 65  |BNE   R1,R1, #xe|
0000c0b0  78 74 25 0d 5d 16 15 20  42 4c 20 20 20 20 20 20  |xt%.].. BL      |
0000c0c0  61 64 64 5f 63 65 6c 6c  0d 5d 20 13 20 4d 4f 56  |add_cell.] . MOV|
0000c0d0  20 20 20 20 20 52 35 2c  20 23 32 0d 5d 2a 13 20  |     R5, #2.]*. |
0000c0e0  4d 4f 56 20 20 20 20 20  52 30 2c 20 23 31 0d 5d  |MOV     R0, #1.]|
0000c0f0  34 18 20 53 54 52 20 20  20 20 20 52 30 2c 20 70  |4. STR     R0, p|
0000c100  32 5f 66 69 72 65 0d 5d  3e 13 20 4d 4f 56 20 20  |2_fire.]>. MOV  |
0000c110  20 20 20 52 30 2c 20 23  37 0d 5d 48 14 20 4d 56  |   R0, #7.]H. MV|
0000c120  4e 20 20 20 20 20 52 31  2c 20 23 31 34 0d 5d 52  |N     R1, #14.]R|
0000c130  17 20 4d 4f 56 20 20 20  20 20 52 32 2c 20 23 31  |. MOV     R2, #1|
0000c140  32 38 30 30 0d 5d 5c 13  20 4d 4f 56 20 20 20 20  |2800.]\. MOV    |
0000c150  20 52 33 2c 20 23 30 0d  5d 66 1c 20 53 57 49 20  | R3, #0.]f. SWI |
0000c160  20 20 20 20 22 53 6f 75  6e 64 5f 43 6f 6e 74 72  |    "Sound_Contr|
0000c170  6f 6c 22 0d 5d 70 18 20  2e 70 32 5f 6e 6f 74 5f  |ol".]p. .p2_not_|
0000c180  66 69 72 65 5f 70 69 73  74 6f 6c 0d 5d 7a 18 20  |fire_pistol.]z. |
0000c190  42 20 20 20 20 20 20 20  70 32 5f 65 6e 64 5f 66  |B       p2_end_f|
0000c1a0  69 72 65 0d 5d 84 06 20  3a 0d 5d 8e 11 20 2e 70  |ire.].. :.].. .p|
0000c1b0  32 5f 66 69 72 65 5f 67  75 6e 0d 5d 98 15 20 4d  |2_fire_gun.].. M|
0000c1c0  4f 56 20 20 20 20 20 52  30 2c 20 23 31 32 39 0d  |OV     R0, #129.|
0000c1d0  5d a2 13 20 4d 4f 56 20  20 20 20 20 52 31 2c 20  |].. MOV     R1, |
0000c1e0  23 30 0d 5d ac 17 20 53  55 42 20 20 20 20 20 52  |#0.].. SUB     R|
0000c1f0  31 2c 52 31 2c 20 23 35  39 0d 5d b6 15 20 4d 4f  |1,R1, #59.].. MO|
0000c200  56 20 20 20 20 20 52 32  2c 20 23 32 35 35 0d 5d  |V     R2, #255.]|
0000c210  c0 16 20 53 57 49 20 20  20 20 20 22 4f 53 5f 42  |.. SWI     "OS_B|
0000c220  79 74 65 22 0d 5d ca 15  20 43 4d 50 20 20 20 20  |yte".].. CMP    |
0000c230  20 52 31 2c 20 23 32 35  35 0d 5d d4 1c 20 42 4e  | R1, #255.].. BN|
0000c240  45 20 20 20 20 20 70 32  5f 6e 6f 74 5f 66 69 72  |E     p2_not_fir|
0000c250  65 5f 67 75 6e 0d 5d de  18 20 4c 44 52 20 20 20  |e_gun.].. LDR   |
0000c260  20 20 52 30 2c 20 70 32  5f 66 69 72 65 0d 5d e8  |  R0, p2_fire.].|
0000c270  16 20 41 44 44 20 20 20  20 20 52 30 2c 52 30 2c  |. ADD     R0,R0,|
0000c280  20 23 31 0d 5d f2 16 20  80 20 20 20 20 20 52 30  | #1.].. .     R0|
0000c290  2c 52 30 2c 20 23 25 31  31 0d 5d fc 18 20 53 54  |,R0, #%11.].. ST|
0000c2a0  52 20 20 20 20 20 52 30  2c 20 70 32 5f 66 69 72  |R     R0, p2_fir|
0000c2b0  65 0d 5e 06 15 20 54 53  54 20 20 20 20 20 52 30  |e.^.. TST     R0|
0000c2c0  2c 20 23 25 31 31 0d 5e  10 1c 20 42 4e 45 20 20  |, #%11.^.. BNE  |
0000c2d0  20 20 20 70 32 5f 6e 6f  74 5f 66 69 72 65 5f 67  |   p2_not_fire_g|
0000c2e0  75 6e 0d 5e 1a 13 20 4d  4f 56 20 20 20 20 20 52  |un.^.. MOV     R|
0000c2f0  30 2c 20 23 33 0d 5e 24  1a 20 4d 4f 56 20 20 20  |0, #3.^$. MOV   |
0000c300  20 20 52 31 2c 52 36 2c  20 4c 53 52 20 23 32 0d  |  R1,R6, LSR #2.|
0000c310  5e 2e 1a 20 4d 4f 56 20  20 20 20 20 52 32 2c 52  |^.. MOV     R2,R|
0000c320  37 2c 20 4c 53 52 20 23  32 0d 5e 38 1a 20 41 44  |7, LSR #2.^8. AD|
0000c330  44 20 20 20 20 20 52 31  2c 52 31 2c 20 23 78 65  |D     R1,R1, #xe|
0000c340  78 74 25 0d 5e 42 1e 20  41 44 44 20 20 20 20 20  |xt%.^B. ADD     |
0000c350  52 32 2c 52 32 2c 20 23  79 65 78 74 25 2f 34 2a  |R2,R2, #yext%/4*|
0000c360  32 0d 5e 4c 18 20 52 53  42 20 20 20 20 20 52 32  |2.^L. RSB     R2|
0000c370  2c 52 32 2c 20 23 32 35  36 0d 5e 56 14 20 4d 4f  |,R2, #256.^V. MO|
0000c380  56 20 20 20 20 20 52 33  2c 20 23 38 30 0d 5e 60  |V     R3, #80.^`|
0000c390  18 20 4c 44 52 20 20 20  20 20 52 35 2c 20 61 64  |. LDR     R5, ad|
0000c3a0  72 5f 72 6e 64 0d 5e 6a  14 20 4c 44 52 20 20 20  |r_rnd.^j. LDR   |
0000c3b0  20 20 52 35 2c 5b 52 35  5d 0d 5e 74 18 20 80 20  |  R5,[R5].^t. . |
0000c3c0  20 20 20 20 52 34 2c 52  35 2c 20 23 25 31 31 31  |    R4,R5, #%111|
0000c3d0  31 0d 5e 7e 1a 20 53 55  42 20 20 20 20 20 52 34  |1.^~. SUB     R4|
0000c3e0  2c 52 34 2c 20 23 25 30  31 31 31 0d 5e 88 1a 20  |,R4, #%0111.^.. |
0000c3f0  80 20 20 20 20 20 52 35  2c 52 35 2c 20 23 25 31  |.     R5,R5, #%1|
0000c400  31 30 30 30 30 0d 5e 92  1a 20 4d 4f 56 20 20 20  |10000.^.. MOV   |
0000c410  20 20 52 35 2c 52 35 2c  20 4c 53 52 20 23 34 0d  |  R5,R5, LSR #4.|
0000c420  5e 9c 15 20 41 44 44 20  20 20 20 20 52 31 2c 52  |^.. ADD     R1,R|
0000c430  31 2c 52 35 0d 5e a6 13  20 4d 4f 56 20 20 20 20  |1,R5.^.. MOV    |
0000c440  20 52 35 2c 20 23 30 0d  5e b0 13 20 54 53 54 20  | R5, #0.^.. TST |
0000c450  20 20 20 20 52 38 2c 20  23 31 0d 5e ba 16 20 52  |    R8, #1.^.. R|
0000c460  53 42 4e 45 20 20 20 52  33 2c 52 33 2c 20 23 30  |SBNE   R3,R3, #0|
0000c470  0d 5e c4 1c 20 53 55 42  4e 45 20 20 20 52 31 2c  |.^.. SUBNE   R1,|
0000c480  52 31 2c 20 23 78 65 78  74 25 2b 32 0d 5e ce 15  |R1, #xext%+2.^..|
0000c490  20 42 4c 20 20 20 20 20  20 61 64 64 5f 63 65 6c  | BL      add_cel|
0000c4a0  6c 0d 5e d8 13 20 4d 4f  56 20 20 20 20 20 52 35  |l.^.. MOV     R5|
0000c4b0  2c 20 23 32 0d 5e e2 1c  20 4d 4f 56 20 20 20 20  |, #2.^.. MOV    |
0000c4c0  20 52 30 2c 20 23 67 75  6e 5f 73 6f 75 6e 64 25  | R0, #gun_sound%|
0000c4d0  0d 5e ec 14 20 4d 56 4e  20 20 20 20 20 52 31 2c  |.^.. MVN     R1,|
0000c4e0  20 23 31 30 0d 5e f6 1b  20 4d 4f 56 20 20 20 20  | #10.^.. MOV    |
0000c4f0  20 52 32 2c 20 23 67 75  6e 5f 72 61 74 65 25 0d  | R2, #gun_rate%.|
0000c500  5f 00 13 20 4d 4f 56 20  20 20 20 20 52 33 2c 20  |_.. MOV     R3, |
0000c510  23 30 0d 5f 0a 1c 20 53  57 49 20 20 20 20 20 22  |#0._.. SWI     "|
0000c520  53 6f 75 6e 64 5f 43 6f  6e 74 72 6f 6c 22 0d 5f  |Sound_Control"._|
0000c530  14 15 20 2e 70 32 5f 6e  6f 74 5f 66 69 72 65 5f  |.. .p2_not_fire_|
0000c540  67 75 6e 0d 5f 1e 18 20  42 20 20 20 20 20 20 20  |gun._.. B       |
0000c550  70 32 5f 65 6e 64 5f 66  69 72 65 0d 5f 28 06 20  |p2_end_fire._(. |
0000c560  3a 0d 5f 32 14 20 2e 70  32 5f 66 69 72 65 5f 6d  |:._2. .p2_fire_m|
0000c570  6f 72 74 61 72 0d 5f 3c  18 3b 4c 44 52 20 20 20  |ortar._<.;LDR   |
0000c580  20 20 52 30 2c 20 70 32  5f 66 69 72 65 0d 5f 46  |  R0, p2_fire._F|
0000c590  13 3b 43 4d 50 20 20 20  20 20 52 30 2c 20 23 30  |.;CMP     R0, #0|
0000c5a0  0d 5f 50 1b 3b 42 45 51  20 20 20 20 20 70 32 5f  |._P.;BEQ     p2_|
0000c5b0  6d 6f 72 74 61 72 5f 73  68 6f 74 0d 5f 5a 15 3b  |mortar_shot._Z.;|
0000c5c0  4d 4f 56 20 20 20 20 20  52 30 2c 20 23 31 32 39  |MOV     R0, #129|
0000c5d0  0d 5f 64 13 3b 4d 4f 56  20 20 20 20 20 52 31 2c  |._d.;MOV     R1,|
0000c5e0  20 23 30 0d 5f 6e 17 3b  53 55 42 20 20 20 20 20  | #0._n.;SUB     |
0000c5f0  52 31 2c 52 31 2c 20 23  35 39 0d 5f 78 15 3b 4d  |R1,R1, #59._x.;M|
0000c600  4f 56 20 20 20 20 20 52  32 2c 20 23 32 35 35 0d  |OV     R2, #255.|
0000c610  5f 82 16 3b 53 57 49 20  20 20 20 20 22 4f 53 5f  |_..;SWI     "OS_|
0000c620  42 79 74 65 22 0d 5f 8c  15 3b 43 4d 50 20 20 20  |Byte"._..;CMP   |
0000c630  20 20 52 31 2c 20 23 32  35 35 0d 5f 96 13 3b 4d  |  R1, #255._..;M|
0000c640  4f 56 4e 45 20 20 20 52  30 2c 20 23 30 0d 5f a0  |OVNE   R0, #0._.|
0000c650  18 3b 53 54 52 4e 45 20  20 20 52 30 2c 20 70 32  |.;STRNE   R0, p2|
0000c660  5f 66 69 72 65 0d 5f aa  1f 3b 42 20 20 20 20 20  |_fire._..;B     |
0000c670  20 20 70 32 5f 6e 6f 74  5f 66 69 72 65 5f 6d 6f  |  p2_not_fire_mo|
0000c680  72 74 61 72 0d 5f b4 14  3b 2e 70 32 5f 6d 6f 72  |rtar._..;.p2_mor|
0000c690  74 61 72 5f 73 68 6f 74  0d 5f be 15 20 4d 4f 56  |tar_shot._.. MOV|
0000c6a0  20 20 20 20 20 52 30 2c  20 23 31 32 39 0d 5f c8  |     R0, #129._.|
0000c6b0  13 20 4d 4f 56 20 20 20  20 20 52 31 2c 20 23 30  |. MOV     R1, #0|
0000c6c0  0d 5f d2 17 20 53 55 42  20 20 20 20 20 52 31 2c  |._.. SUB     R1,|
0000c6d0  52 31 2c 20 23 35 39 0d  5f dc 15 20 4d 4f 56 20  |R1, #59._.. MOV |
0000c6e0  20 20 20 20 52 32 2c 20  23 32 35 35 0d 5f e6 16  |    R2, #255._..|
0000c6f0  20 53 57 49 20 20 20 20  20 22 4f 53 5f 42 79 74  | SWI     "OS_Byt|
0000c700  65 22 0d 5f f0 15 20 43  4d 50 20 20 20 20 20 52  |e"._.. CMP     R|
0000c710  31 2c 20 23 32 35 35 0d  5f fa 1f 20 42 4e 45 20  |1, #255._.. BNE |
0000c720  20 20 20 20 70 32 5f 6e  6f 74 5f 66 69 72 65 5f  |    p2_not_fire_|
0000c730  6d 6f 72 74 61 72 0d 60  04 18 20 4c 44 52 20 20  |mortar.`.. LDR  |
0000c740  20 20 20 52 30 2c 20 70  32 5f 66 69 72 65 0d 60  |   R0, p2_fire.`|
0000c750  0e 16 20 41 44 44 20 20  20 20 20 52 30 2c 52 30  |.. ADD     R0,R0|
0000c760  2c 20 23 31 0d 60 18 19  20 80 20 20 20 20 20 52  |, #1.`.. .     R|
0000c770  30 2c 52 30 2c 20 23 25  31 31 31 31 31 0d 60 22  |0,R0, #%11111.`"|
0000c780  18 20 53 54 52 20 20 20  20 20 52 30 2c 20 70 32  |. STR     R0, p2|
0000c790  5f 66 69 72 65 0d 60 2c  18 20 54 53 54 20 20 20  |_fire.`,. TST   |
0000c7a0  20 20 52 30 2c 20 23 25  31 31 31 31 31 0d 60 36  |  R0, #%11111.`6|
0000c7b0  1f 20 42 4e 45 20 20 20  20 20 70 32 5f 6e 6f 74  |. BNE     p2_not|
0000c7c0  5f 66 69 72 65 5f 6d 6f  72 74 61 72 0d 60 40 13  |_fire_mortar.`@.|
0000c7d0  20 4d 4f 56 20 20 20 20  20 52 30 2c 20 23 34 0d  | MOV     R0, #4.|
0000c7e0  60 4a 1a 20 4d 4f 56 20  20 20 20 20 52 31 2c 52  |`J. MOV     R1,R|
0000c7f0  36 2c 20 4c 53 52 20 23  32 0d 60 54 1a 20 4d 4f  |6, LSR #2.`T. MO|
0000c800  56 20 20 20 20 20 52 32  2c 52 37 2c 20 4c 53 52  |V     R2,R7, LSR|
0000c810  20 23 32 0d 60 5e 1a 20  41 44 44 20 20 20 20 20  | #2.`^. ADD     |
0000c820  52 31 2c 52 31 2c 20 23  78 65 78 74 25 0d 60 68  |R1,R1, #xext%.`h|
0000c830  1e 20 41 44 44 20 20 20  20 20 52 32 2c 52 32 2c  |. ADD     R2,R2,|
0000c840  20 23 79 65 78 74 25 2f  34 2a 32 0d 60 72 18 20  | #yext%/4*2.`r. |
0000c850  52 53 42 20 20 20 20 20  52 32 2c 52 32 2c 20 23  |RSB     R2,R2, #|
0000c860  32 35 36 0d 60 7c 14 20  4d 4f 56 20 20 20 20 20  |256.`|. MOV     |
0000c870  52 33 2c 20 23 33 30 0d  60 86 14 20 4d 4f 56 20  |R3, #30.`.. MOV |
0000c880  20 20 20 20 52 34 2c 20  23 34 30 0d 60 90 13 20  |    R4, #40.`.. |
0000c890  4d 4f 56 20 20 20 20 20  52 35 2c 20 23 30 0d 60  |MOV     R5, #0.`|
0000c8a0  9a 13 20 54 53 54 20 20  20 20 20 52 38 2c 20 23  |.. TST     R8, #|
0000c8b0  31 0d 60 a4 16 20 52 53  42 4e 45 20 20 20 52 33  |1.`.. RSBNE   R3|
0000c8c0  2c 52 33 2c 20 23 30 0d  60 ae 1a 20 53 55 42 4e  |,R3, #0.`.. SUBN|
0000c8d0  45 20 20 20 52 31 2c 52  31 2c 20 23 78 65 78 74  |E   R1,R1, #xext|
0000c8e0  25 0d 60 b8 15 20 42 4c  20 20 20 20 20 20 61 64  |%.`.. BL      ad|
0000c8f0  64 5f 63 65 6c 6c 0d 60  c2 13 20 4d 4f 56 20 20  |d_cell.`.. MOV  |
0000c900  20 20 20 52 35 2c 20 23  32 0d 60 cc 13 20 4d 4f  |   R5, #2.`.. MO|
0000c910  56 20 20 20 20 20 52 30  2c 20 23 31 0d 60 d6 18  |V     R0, #1.`..|
0000c920  20 53 54 52 20 20 20 20  20 52 30 2c 20 70 32 5f  | STR     R0, p2_|
0000c930  66 69 72 65 0d 60 e0 18  20 2e 70 32 5f 6e 6f 74  |fire.`.. .p2_not|
0000c940  5f 66 69 72 65 5f 6d 6f  72 74 61 72 0d 60 ea 18  |_fire_mortar.`..|
0000c950  20 42 20 20 20 20 20 20  20 70 32 5f 65 6e 64 5f  | B       p2_end_|
0000c960  66 69 72 65 0d 60 f4 06  20 3a 0d 60 fe 14 20 2e  |fire.`.. :.`.. .|
0000c970  70 32 5f 66 69 72 65 5f  68 6f 6d 69 6e 67 0d 61  |p2_fire_homing.a|
0000c980  08 14 20 2e 70 32 5f 68  6f 6d 69 6e 67 5f 73 68  |.. .p2_homing_sh|
0000c990  6f 74 0d 61 12 15 20 4d  4f 56 20 20 20 20 20 52  |ot.a.. MOV     R|
0000c9a0  30 2c 20 23 31 32 39 0d  61 1c 13 20 4d 4f 56 20  |0, #129.a.. MOV |
0000c9b0  20 20 20 20 52 31 2c 20  23 30 0d 61 26 17 20 53  |    R1, #0.a&. S|
0000c9c0  55 42 20 20 20 20 20 52  31 2c 52 31 2c 20 23 35  |UB     R1,R1, #5|
0000c9d0  39 0d 61 30 15 20 4d 4f  56 20 20 20 20 20 52 32  |9.a0. MOV     R2|
0000c9e0  2c 20 23 32 35 35 0d 61  3a 16 20 53 57 49 20 20  |, #255.a:. SWI  |
0000c9f0  20 20 20 22 4f 53 5f 42  79 74 65 22 0d 61 44 15  |   "OS_Byte".aD.|
0000ca00  20 43 4d 50 20 20 20 20  20 52 31 2c 20 23 32 35  | CMP     R1, #25|
0000ca10  35 0d 61 4e 1f 20 42 4e  45 20 20 20 20 20 70 32  |5.aN. BNE     p2|
0000ca20  5f 6e 6f 74 5f 66 69 72  65 5f 68 6f 6d 69 6e 67  |_not_fire_homing|
0000ca30  0d 61 58 18 20 4c 44 52  20 20 20 20 20 52 30 2c  |.aX. LDR     R0,|
0000ca40  20 70 32 5f 66 69 72 65  0d 61 62 16 20 41 44 44  | p2_fire.ab. ADD|
0000ca50  20 20 20 20 20 52 30 2c  52 30 2c 20 23 31 0d 61  |     R0,R0, #1.a|
0000ca60  6c 18 20 80 20 20 20 20  20 52 30 2c 52 30 2c 20  |l. .     R0,R0, |
0000ca70  23 25 31 31 31 31 0d 61  76 18 20 53 54 52 20 20  |#%1111.av. STR  |
0000ca80  20 20 20 52 30 2c 20 70  32 5f 66 69 72 65 0d 61  |   R0, p2_fire.a|
0000ca90  80 17 20 54 53 54 20 20  20 20 20 52 30 2c 20 23  |.. TST     R0, #|
0000caa0  25 31 31 31 31 0d 61 8a  1f 20 42 4e 45 20 20 20  |%1111.a.. BNE   |
0000cab0  20 20 70 32 5f 6e 6f 74  5f 66 69 72 65 5f 68 6f  |  p2_not_fire_ho|
0000cac0  6d 69 6e 67 0d 61 94 13  20 4d 4f 56 20 20 20 20  |ming.a.. MOV    |
0000cad0  20 52 30 2c 20 23 35 0d  61 9e 1a 20 4d 4f 56 20  | R0, #5.a.. MOV |
0000cae0  20 20 20 20 52 31 2c 52  36 2c 20 4c 53 52 20 23  |    R1,R6, LSR #|
0000caf0  32 0d 61 a8 1a 20 4d 4f  56 20 20 20 20 20 52 32  |2.a.. MOV     R2|
0000cb00  2c 52 37 2c 20 4c 53 52  20 23 32 0d 61 b2 1a 20  |,R7, LSR #2.a.. |
0000cb10  41 44 44 20 20 20 20 20  52 31 2c 52 31 2c 20 23  |ADD     R1,R1, #|
0000cb20  78 65 78 74 25 0d 61 bc  1e 20 41 44 44 20 20 20  |xext%.a.. ADD   |
0000cb30  20 20 52 32 2c 52 32 2c  20 23 79 65 78 74 25 2f  |  R2,R2, #yext%/|
0000cb40  34 2a 32 0d 61 c6 18 20  52 53 42 20 20 20 20 20  |4*2.a.. RSB     |
0000cb50  52 32 2c 52 32 2c 20 23  32 35 36 0d 61 d0 14 20  |R2,R2, #256.a.. |
0000cb60  4d 4f 56 20 20 20 20 20  52 33 2c 20 23 36 34 0d  |MOV     R3, #64.|
0000cb70  61 da 18 20 4c 44 52 20  20 20 20 20 52 34 2c 20  |a.. LDR     R4, |
0000cb80  61 64 72 5f 72 6e 64 0d  61 e4 14 20 4c 44 52 20  |adr_rnd.a.. LDR |
0000cb90  20 20 20 20 52 34 2c 5b  52 34 5d 0d 61 ee 15 20  |    R4,[R4].a.. |
0000cba0  80 20 20 20 20 20 52 34  2c 52 34 2c 20 23 31 35  |.     R4,R4, #15|
0000cbb0  0d 61 f8 16 20 53 55 42  20 20 20 20 20 52 34 2c  |.a.. SUB     R4,|
0000cbc0  52 34 2c 20 23 37 0d 62  02 39 20 4d 4f 56 20 20  |R4, #7.b.9 MOV  |
0000cbd0  20 20 20 52 35 2c 20 23  32 32 34 3c 3c 38 20 20  |   R5, #224<<8  |
0000cbe0  20 20 20 20 20 20 20 20  3b 20 48 6f 6d 69 6e 67  |        ; Homing|
0000cbf0  20 69 6e 20 6f 6e 20 70  6c 61 79 65 72 20 31 0d  | in on player 1.|
0000cc00  62 0c 13 20 54 53 54 20  20 20 20 20 52 38 2c 20  |b.. TST     R8, |
0000cc10  23 31 0d 62 16 16 20 52  53 42 4e 45 20 20 20 52  |#1.b.. RSBNE   R|
0000cc20  33 2c 52 33 2c 20 23 30  0d 62 20 1a 20 53 55 42  |3,R3, #0.b . SUB|
0000cc30  4e 45 20 20 20 52 31 2c  52 31 2c 20 23 78 65 78  |NE   R1,R1, #xex|
0000cc40  74 25 0d 62 2a 15 20 42  4c 20 20 20 20 20 20 61  |t%.b*. BL      a|
0000cc50  64 64 5f 63 65 6c 6c 0d  62 34 13 20 4d 4f 56 20  |dd_cell.b4. MOV |
0000cc60  20 20 20 20 52 35 2c 20  23 37 0d 62 3e 1f 20 4d  |    R5, #7.b>. M|
0000cc70  4f 56 20 20 20 20 20 52  30 2c 20 23 68 6f 6d 69  |OV     R0, #homi|
0000cc80  6e 67 5f 73 6f 75 6e 64  25 0d 62 48 13 20 4d 56  |ng_sound%.bH. MV|
0000cc90  4e 20 20 20 20 20 52 31  2c 20 23 38 0d 62 52 1e  |N     R1, #8.bR.|
0000cca0  20 4d 4f 56 20 20 20 20  20 52 32 2c 20 23 68 6f  | MOV     R2, #ho|
0000ccb0  6d 69 6e 67 5f 72 61 74  65 25 0d 62 5c 13 20 4d  |ming_rate%.b\. M|
0000ccc0  4f 56 20 20 20 20 20 52  33 2c 20 23 30 0d 62 66  |OV     R3, #0.bf|
0000ccd0  1c 20 53 57 49 20 20 20  20 20 22 53 6f 75 6e 64  |. SWI     "Sound|
0000cce0  5f 43 6f 6e 74 72 6f 6c  22 0d 62 70 18 20 2e 70  |_Control".bp. .p|
0000ccf0  32 5f 6e 6f 74 5f 66 69  72 65 5f 68 6f 6d 69 6e  |2_not_fire_homin|
0000cd00  67 0d 62 7a 18 20 42 20  20 20 20 20 20 20 70 32  |g.bz. B       p2|
0000cd10  5f 65 6e 64 5f 66 69 72  65 0d 62 84 06 20 3a 0d  |_end_fire.b.. :.|
0000cd20  62 8e 15 20 2e 70 32 5f  66 69 72 65 5f 73 65 65  |b.. .p2_fire_see|
0000cd30  6b 69 6e 67 0d 62 98 15  20 2e 70 32 5f 73 65 65  |king.b.. .p2_see|
0000cd40  6b 69 6e 67 5f 73 68 6f  74 0d 62 a2 15 20 4d 4f  |king_shot.b.. MO|
0000cd50  56 20 20 20 20 20 52 30  2c 20 23 31 32 39 0d 62  |V     R0, #129.b|
0000cd60  ac 13 20 4d 4f 56 20 20  20 20 20 52 31 2c 20 23  |.. MOV     R1, #|
0000cd70  30 0d 62 b6 17 20 53 55  42 20 20 20 20 20 52 31  |0.b.. SUB     R1|
0000cd80  2c 52 31 2c 20 23 35 39  0d 62 c0 15 20 4d 4f 56  |,R1, #59.b.. MOV|
0000cd90  20 20 20 20 20 52 32 2c  20 23 32 35 35 0d 62 ca  |     R2, #255.b.|
0000cda0  16 20 53 57 49 20 20 20  20 20 22 4f 53 5f 42 79  |. SWI     "OS_By|
0000cdb0  74 65 22 0d 62 d4 15 20  43 4d 50 20 20 20 20 20  |te".b.. CMP     |
0000cdc0  52 31 2c 20 23 32 35 35  0d 62 de 20 20 42 4e 45  |R1, #255.b.  BNE|
0000cdd0  20 20 20 20 20 70 32 5f  6e 6f 74 5f 66 69 72 65  |     p2_not_fire|
0000cde0  5f 73 65 65 6b 69 6e 67  0d 62 e8 13 20 4d 4f 56  |_seeking.b.. MOV|
0000cdf0  20 20 20 20 20 52 30 2c  20 23 36 0d 62 f2 1a 20  |     R0, #6.b.. |
0000ce00  4d 4f 56 20 20 20 20 20  52 31 2c 52 36 2c 20 4c  |MOV     R1,R6, L|
0000ce10  53 52 20 23 32 0d 62 fc  1a 20 4d 4f 56 20 20 20  |SR #2.b.. MOV   |
0000ce20  20 20 52 32 2c 52 37 2c  20 4c 53 52 20 23 32 0d  |  R2,R7, LSR #2.|
0000ce30  63 06 1e 20 41 44 44 20  20 20 20 20 52 31 2c 52  |c.. ADD     R1,R|
0000ce40  31 2c 20 23 78 65 78 74  25 2a 33 2f 32 0d 63 10  |1, #xext%*3/2.c.|
0000ce50  1e 20 41 44 44 20 20 20  20 20 52 32 2c 52 32 2c  |. ADD     R2,R2,|
0000ce60  20 23 79 65 78 74 25 2f  34 2a 32 0d 63 1a 18 20  | #yext%/4*2.c.. |
0000ce70  52 53 42 20 20 20 20 20  52 32 2c 52 32 2c 20 23  |RSB     R2,R2, #|
0000ce80  32 35 36 0d 63 24 14 20  4d 4f 56 20 20 20 20 20  |256.c$. MOV     |
0000ce90  52 33 2c 20 23 33 32 0d  63 2e 13 20 4d 4f 56 20  |R3, #32.c.. MOV |
0000cea0  20 20 20 20 52 34 2c 20  23 30 0d 63 38 39 20 4d  |    R4, #0.c89 M|
0000ceb0  4f 56 20 20 20 20 20 52  35 2c 20 23 30 20 20 20  |OV     R5, #0   |
0000cec0  20 20 20 20 20 20 20 20  20 20 20 20 3b 20 48 6f  |            ; Ho|
0000ced0  6d 69 6e 67 20 69 6e 20  6f 6e 20 70 6c 61 79 65  |ming in on playe|
0000cee0  72 20 31 0d 63 42 13 20  54 53 54 20 20 20 20 20  |r 1.cB. TST     |
0000cef0  52 38 2c 20 23 31 0d 63  4c 16 20 52 53 42 4e 45  |R8, #1.cL. RSBNE|
0000cf00  20 20 20 52 33 2c 52 33  2c 20 23 30 0d 63 56 1c  |   R3,R3, #0.cV.|
0000cf10  20 53 55 42 4e 45 20 20  20 52 31 2c 52 31 2c 20  | SUBNE   R1,R1, |
0000cf20  23 78 65 78 74 25 2a 32  0d 63 60 15 20 42 4c 20  |#xext%*2.c`. BL |
0000cf30  20 20 20 20 20 61 64 64  5f 63 65 6c 6c 0d 63 6a  |     add_cell.cj|
0000cf40  13 20 4d 4f 56 20 20 20  20 20 52 35 2c 20 23 32  |. MOV     R5, #2|
0000cf50  0d 63 74 13 20 4d 4f 56  20 20 20 20 20 52 39 2c  |.ct. MOV     R9,|
0000cf60  20 23 32 0d 63 7e 1f 20  4c 44 52 20 20 20 20 20  | #2.c~. LDR     |
0000cf70  52 31 30 2c 20 61 64 72  5f 70 32 5f 77 65 61 70  |R10, adr_p2_weap|
0000cf80  6f 6e 0d 63 88 15 20 53  54 52 20 20 20 20 20 52  |on.c.. STR     R|
0000cf90  39 2c 5b 52 31 30 5d 0d  63 92 20 20 4d 4f 56 20  |9,[R10].c.  MOV |
0000cfa0  20 20 20 20 52 30 2c 20  23 73 65 65 6b 69 6e 67  |    R0, #seeking|
0000cfb0  5f 73 6f 75 6e 64 25 0d  63 9c 14 20 4d 56 4e 20  |_sound%.c.. MVN |
0000cfc0  20 20 20 20 52 31 2c 20  23 31 34 0d 63 a6 1f 20  |    R1, #14.c.. |
0000cfd0  4d 4f 56 20 20 20 20 20  52 32 2c 20 23 73 65 65  |MOV     R2, #see|
0000cfe0  6b 69 6e 67 5f 72 61 74  65 25 0d 63 b0 13 20 4d  |king_rate%.c.. M|
0000cff0  4f 56 20 20 20 20 20 52  33 2c 20 23 30 0d 63 ba  |OV     R3, #0.c.|
0000d000  1c 20 53 57 49 20 20 20  20 20 22 53 6f 75 6e 64  |. SWI     "Sound|
0000d010  5f 43 6f 6e 74 72 6f 6c  22 0d 63 c4 13 20 4d 4f  |_Control".c.. MO|
0000d020  56 20 20 20 20 20 52 30  2c 20 23 31 0d 63 ce 18  |V     R0, #1.c..|
0000d030  20 53 54 52 20 20 20 20  20 52 30 2c 20 70 32 5f  | STR     R0, p2_|
0000d040  66 69 72 65 0d 63 d8 19  20 2e 70 32 5f 6e 6f 74  |fire.c.. .p2_not|
0000d050  5f 66 69 72 65 5f 73 65  65 6b 69 6e 67 0d 63 e2  |_fire_seeking.c.|
0000d060  18 20 42 20 20 20 20 20  20 20 70 32 5f 65 6e 64  |. B       p2_end|
0000d070  5f 66 69 72 65 0d 63 ec  06 20 3a 0d 63 f6 16 20  |_fire.c.. :.c.. |
0000d080  2e 70 32 5f 66 69 72 65  5f 76 65 72 74 69 63 61  |.p2_fire_vertica|
0000d090  6c 0d 64 00 18 20 4c 44  52 20 20 20 20 20 52 30  |l.d.. LDR     R0|
0000d0a0  2c 20 70 32 5f 66 69 72  65 0d 64 0a 13 20 43 4d  |, p2_fire.d.. CM|
0000d0b0  50 20 20 20 20 20 52 30  2c 20 23 30 0d 64 14 1d  |P     R0, #0.d..|
0000d0c0  20 42 45 51 20 20 20 20  20 70 32 5f 76 65 72 74  | BEQ     p2_vert|
0000d0d0  69 63 61 6c 5f 73 68 6f  74 0d 64 1e 15 20 4d 4f  |ical_shot.d.. MO|
0000d0e0  56 20 20 20 20 20 52 30  2c 20 23 31 32 39 0d 64  |V     R0, #129.d|
0000d0f0  28 13 20 4d 4f 56 20 20  20 20 20 52 31 2c 20 23  |(. MOV     R1, #|
0000d100  30 0d 64 32 17 20 53 55  42 20 20 20 20 20 52 31  |0.d2. SUB     R1|
0000d110  2c 52 31 2c 20 23 35 39  0d 64 3c 15 20 4d 4f 56  |,R1, #59.d<. MOV|
0000d120  20 20 20 20 20 52 32 2c  20 23 32 35 35 0d 64 46  |     R2, #255.dF|
0000d130  16 20 53 57 49 20 20 20  20 20 22 4f 53 5f 42 79  |. SWI     "OS_By|
0000d140  74 65 22 0d 64 50 15 20  43 4d 50 20 20 20 20 20  |te".dP. CMP     |
0000d150  52 31 2c 20 23 32 35 35  0d 64 5a 13 20 4d 4f 56  |R1, #255.dZ. MOV|
0000d160  4e 45 20 20 20 52 30 2c  20 23 30 0d 64 64 18 20  |NE   R0, #0.dd. |
0000d170  53 54 52 4e 45 20 20 20  52 30 2c 20 70 32 5f 66  |STRNE   R0, p2_f|
0000d180  69 72 65 0d 64 6e 21 20  42 20 20 20 20 20 20 20  |ire.dn! B       |
0000d190  70 32 5f 6e 6f 74 5f 66  69 72 65 5f 76 65 72 74  |p2_not_fire_vert|
0000d1a0  69 63 61 6c 0d 64 78 16  20 2e 70 32 5f 76 65 72  |ical.dx. .p2_ver|
0000d1b0  74 69 63 61 6c 5f 73 68  6f 74 0d 64 82 15 20 4d  |tical_shot.d.. M|
0000d1c0  4f 56 20 20 20 20 20 52  30 2c 20 23 31 32 39 0d  |OV     R0, #129.|
0000d1d0  64 8c 13 20 4d 4f 56 20  20 20 20 20 52 31 2c 20  |d.. MOV     R1, |
0000d1e0  23 30 0d 64 96 17 20 53  55 42 20 20 20 20 20 52  |#0.d.. SUB     R|
0000d1f0  31 2c 52 31 2c 20 23 35  39 0d 64 a0 15 20 4d 4f  |1,R1, #59.d.. MO|
0000d200  56 20 20 20 20 20 52 32  2c 20 23 32 35 35 0d 64  |V     R2, #255.d|
0000d210  aa 16 20 53 57 49 20 20  20 20 20 22 4f 53 5f 42  |.. SWI     "OS_B|
0000d220  79 74 65 22 0d 64 b4 15  20 43 4d 50 20 20 20 20  |yte".d.. CMP    |
0000d230  20 52 31 2c 20 23 32 35  35 0d 64 be 21 20 42 4e  | R1, #255.d.! BN|
0000d240  45 20 20 20 20 20 70 32  5f 6e 6f 74 5f 66 69 72  |E     p2_not_fir|
0000d250  65 5f 76 65 72 74 69 63  61 6c 0d 64 c8 13 20 4d  |e_vertical.d.. M|
0000d260  4f 56 20 20 20 20 20 52  30 2c 20 23 37 0d 64 d2  |OV     R0, #7.d.|
0000d270  1a 20 4d 4f 56 20 20 20  20 20 52 31 2c 52 36 2c  |. MOV     R1,R6,|
0000d280  20 4c 53 52 20 23 32 0d  64 dc 1a 20 4d 4f 56 20  | LSR #2.d.. MOV |
0000d290  20 20 20 20 52 32 2c 52  37 2c 20 4c 53 52 20 23  |    R2,R7, LSR #|
0000d2a0  32 0d 64 e6 1a 20 41 44  44 20 20 20 20 20 52 31  |2.d.. ADD     R1|
0000d2b0  2c 52 31 2c 20 23 78 65  78 74 25 0d 64 f0 1e 20  |,R1, #xext%.d.. |
0000d2c0  41 44 44 20 20 20 20 20  52 32 2c 52 32 2c 20 23  |ADD     R2,R2, #|
0000d2d0  79 65 78 74 25 2f 34 2a  32 0d 64 fa 18 20 52 53  |yext%/4*2.d.. RS|
0000d2e0  42 20 20 20 20 20 52 32  2c 52 32 2c 20 23 32 35  |B     R2,R2, #25|
0000d2f0  36 0d 65 04 13 20 4d 4f  56 20 20 20 20 20 52 33  |6.e.. MOV     R3|
0000d300  2c 20 23 30 0d 65 0e 14  20 4d 4f 56 20 20 20 20  |, #0.e.. MOV    |
0000d310  20 52 34 2c 20 23 36 34  0d 65 18 13 20 4d 4f 56  | R4, #64.e.. MOV|
0000d320  20 20 20 20 20 52 35 2c  20 23 30 0d 65 22 13 20  |     R5, #0.e". |
0000d330  54 53 54 20 20 20 20 20  52 38 2c 20 23 31 0d 65  |TST     R8, #1.e|
0000d340  2c 16 20 52 53 42 4e 45  20 20 20 52 33 2c 52 33  |,. RSBNE   R3,R3|
0000d350  2c 20 23 30 0d 65 36 1a  20 53 55 42 4e 45 20 20  |, #0.e6. SUBNE  |
0000d360  20 52 31 2c 52 31 2c 20  23 78 65 78 74 25 0d 65  | R1,R1, #xext%.e|
0000d370  40 15 20 42 4c 20 20 20  20 20 20 61 64 64 5f 63  |@. BL      add_c|
0000d380  65 6c 6c 0d 65 4a 13 20  4d 4f 56 20 20 20 20 20  |ell.eJ. MOV     |
0000d390  52 35 2c 20 23 32 0d 65  54 13 20 4d 4f 56 20 20  |R5, #2.eT. MOV  |
0000d3a0  20 20 20 52 30 2c 20 23  31 0d 65 5e 18 20 53 54  |   R0, #1.e^. ST|
0000d3b0  52 20 20 20 20 20 52 30  2c 20 70 32 5f 66 69 72  |R     R0, p2_fir|
0000d3c0  65 0d 65 68 13 20 4d 4f  56 20 20 20 20 20 52 30  |e.eh. MOV     R0|
0000d3d0  2c 20 23 37 0d 65 72 14  20 4d 56 4e 20 20 20 20  |, #7.er. MVN    |
0000d3e0  20 52 31 2c 20 23 31 34  0d 65 7c 17 20 4d 4f 56  | R1, #14.e|. MOV|
0000d3f0  20 20 20 20 20 52 32 2c  20 23 31 30 32 34 30 0d  |     R2, #10240.|
0000d400  65 86 13 20 4d 4f 56 20  20 20 20 20 52 33 2c 20  |e.. MOV     R3, |
0000d410  23 30 0d 65 90 1c 20 53  57 49 20 20 20 20 20 22  |#0.e.. SWI     "|
0000d420  53 6f 75 6e 64 5f 43 6f  6e 74 72 6f 6c 22 0d 65  |Sound_Control".e|
0000d430  9a 1a 20 2e 70 32 5f 6e  6f 74 5f 66 69 72 65 5f  |.. .p2_not_fire_|
0000d440  76 65 72 74 69 63 61 6c  0d 65 a4 18 20 42 20 20  |vertical.e.. B  |
0000d450  20 20 20 20 20 70 32 5f  65 6e 64 5f 66 69 72 65  |     p2_end_fire|
0000d460  0d 65 ae 06 20 3a 0d 65  b8 13 20 2e 70 32 5f 66  |.e.. :.e.. .p2_f|
0000d470  69 72 65 5f 66 6c 61 6d  65 0d 65 c2 15 20 4d 4f  |ire_flame.e.. MO|
0000d480  56 20 20 20 20 20 52 30  2c 20 23 31 32 39 0d 65  |V     R0, #129.e|
0000d490  cc 13 20 4d 4f 56 20 20  20 20 20 52 31 2c 20 23  |.. MOV     R1, #|
0000d4a0  30 0d 65 d6 17 20 53 55  42 20 20 20 20 20 52 31  |0.e.. SUB     R1|
0000d4b0  2c 52 31 2c 20 23 35 39  0d 65 e0 15 20 4d 4f 56  |,R1, #59.e.. MOV|
0000d4c0  20 20 20 20 20 52 32 2c  20 23 32 35 35 0d 65 ea  |     R2, #255.e.|
0000d4d0  16 20 53 57 49 20 20 20  20 20 22 4f 53 5f 42 79  |. SWI     "OS_By|
0000d4e0  74 65 22 0d 65 f4 15 20  43 4d 50 20 20 20 20 20  |te".e.. CMP     |
0000d4f0  52 31 2c 20 23 32 35 35  0d 65 fe 1e 20 42 4e 45  |R1, #255.e.. BNE|
0000d500  20 20 20 20 20 70 32 5f  6e 6f 74 5f 66 69 72 65  |     p2_not_fire|
0000d510  5f 66 6c 61 6d 65 0d 66  08 14 20 4d 4f 56 20 20  |_flame.f.. MOV  |
0000d520  20 20 20 52 30 2c 20 23  31 30 0d 66 12 1a 20 4d  |   R0, #10.f.. M|
0000d530  4f 56 20 20 20 20 20 52  31 2c 52 36 2c 20 4c 53  |OV     R1,R6, LS|
0000d540  52 20 23 32 0d 66 1c 1a  20 4d 4f 56 20 20 20 20  |R #2.f.. MOV    |
0000d550  20 52 32 2c 52 37 2c 20  4c 53 52 20 23 32 0d 66  | R2,R7, LSR #2.f|
0000d560  26 1a 20 41 44 44 20 20  20 20 20 52 31 2c 52 31  |&. ADD     R1,R1|
0000d570  2c 20 23 78 65 78 74 25  0d 66 30 1e 20 41 44 44  |, #xext%.f0. ADD|
0000d580  20 20 20 20 20 52 32 2c  52 32 2c 20 23 79 65 78  |     R2,R2, #yex|
0000d590  74 25 2f 34 2a 32 0d 66  3a 18 20 52 53 42 20 20  |t%/4*2.f:. RSB  |
0000d5a0  20 20 20 52 32 2c 52 32  2c 20 23 32 35 36 0d 66  |   R2,R2, #256.f|
0000d5b0  44 14 20 4d 4f 56 20 20  20 20 20 52 33 2c 20 23  |D. MOV     R3, #|
0000d5c0  37 32 0d 66 4e 18 20 4c  44 52 20 20 20 20 20 52  |72.fN. LDR     R|
0000d5d0  34 2c 20 61 64 72 5f 72  6e 64 0d 66 58 14 20 4c  |4, adr_rnd.fX. L|
0000d5e0  44 52 20 20 20 20 20 52  34 2c 5b 52 34 5d 0d 66  |DR     R4,[R4].f|
0000d5f0  62 14 20 80 20 20 20 20  20 52 34 2c 52 34 2c 20  |b. .     R4,R4, |
0000d600  23 37 0d 66 6c 16 20 53  55 42 20 20 20 20 20 52  |#7.fl. SUB     R|
0000d610  34 2c 52 34 2c 20 23 31  0d 66 76 1a 20 4d 4f 56  |4,R4, #1.fv. MOV|
0000d620  20 20 20 20 20 52 35 2c  52 35 2c 20 4c 53 52 20  |     R5,R5, LSR |
0000d630  23 34 0d 66 80 15 20 41  44 44 20 20 20 20 20 52  |#4.f.. ADD     R|
0000d640  31 2c 52 31 2c 52 35 0d  66 8a 13 20 4d 4f 56 20  |1,R1,R5.f.. MOV |
0000d650  20 20 20 20 52 35 2c 20  23 30 0d 66 94 13 20 54  |    R5, #0.f.. T|
0000d660  53 54 20 20 20 20 20 52  38 2c 20 23 31 0d 66 9e  |ST     R8, #1.f.|
0000d670  16 20 52 53 42 4e 45 20  20 20 52 33 2c 52 33 2c  |. RSBNE   R3,R3,|
0000d680  20 23 30 0d 66 a8 1a 20  53 55 42 4e 45 20 20 20  | #0.f.. SUBNE   |
0000d690  52 31 2c 52 31 2c 20 23  78 65 78 74 25 0d 66 b2  |R1,R1, #xext%.f.|
0000d6a0  15 20 42 4c 20 20 20 20  20 20 61 64 64 5f 63 65  |. BL      add_ce|
0000d6b0  6c 6c 0d 66 bc 17 20 2e  70 32 5f 6e 6f 74 5f 66  |ll.f.. .p2_not_f|
0000d6c0  69 72 65 5f 66 6c 61 6d  65 0d 66 c6 18 20 42 20  |ire_flame.f.. B |
0000d6d0  20 20 20 20 20 20 70 32  5f 65 6e 64 5f 66 69 72  |      p2_end_fir|
0000d6e0  65 0d 66 d0 06 20 3a 0d  66 da 12 20 2e 70 32 5f  |e.f.. :.f.. .p2_|
0000d6f0  66 69 72 65 5f 62 6f 6d  62 0d 66 e4 15 20 4d 4f  |fire_bomb.f.. MO|
0000d700  56 20 20 20 20 20 52 30  2c 20 23 31 32 39 0d 66  |V     R0, #129.f|
0000d710  ee 13 20 4d 4f 56 20 20  20 20 20 52 31 2c 20 23  |.. MOV     R1, #|
0000d720  30 0d 66 f8 17 20 53 55  42 20 20 20 20 20 52 31  |0.f.. SUB     R1|
0000d730  2c 52 31 2c 20 23 35 39  0d 67 02 15 20 4d 4f 56  |,R1, #59.g.. MOV|
0000d740  20 20 20 20 20 52 32 2c  20 23 32 35 35 0d 67 0c  |     R2, #255.g.|
0000d750  16 20 53 57 49 20 20 20  20 20 22 4f 53 5f 42 79  |. SWI     "OS_By|
0000d760  74 65 22 0d 67 16 15 20  43 4d 50 20 20 20 20 20  |te".g.. CMP     |
0000d770  52 31 2c 20 23 32 35 35  0d 67 20 1d 20 42 4e 45  |R1, #255.g . BNE|
0000d780  20 20 20 20 20 70 32 5f  6e 6f 74 5f 66 69 72 65  |     p2_not_fire|
0000d790  5f 62 6f 6d 62 0d 67 2a  18 20 4c 44 52 20 20 20  |_bomb.g*. LDR   |
0000d7a0  20 20 52 30 2c 20 70 32  5f 66 69 72 65 0d 67 34  |  R0, p2_fire.g4|
0000d7b0  16 20 41 44 44 20 20 20  20 20 52 30 2c 52 30 2c  |. ADD     R0,R0,|
0000d7c0  20 23 31 0d 67 3e 14 20  43 4d 50 20 20 20 20 20  | #1.g>. CMP     |
0000d7d0  52 30 2c 20 23 31 30 0d  67 48 13 20 4d 4f 56 47  |R0, #10.gH. MOVG|
0000d7e0  54 20 20 20 52 30 2c 20  23 30 0d 67 52 18 20 53  |T   R0, #0.gR. S|
0000d7f0  54 52 20 20 20 20 20 52  30 2c 20 70 32 5f 66 69  |TR     R0, p2_fi|
0000d800  72 65 0d 67 5c 13 20 43  4d 50 20 20 20 20 20 52  |re.g\. CMP     R|
0000d810  30 2c 20 23 30 0d 67 66  1d 20 42 4e 45 20 20 20  |0, #0.gf. BNE   |
0000d820  20 20 70 32 5f 6e 6f 74  5f 66 69 72 65 5f 62 6f  |  p2_not_fire_bo|
0000d830  6d 62 0d 67 70 14 20 4d  4f 56 20 20 20 20 20 52  |mb.gp. MOV     R|
0000d840  30 2c 20 23 31 32 0d 67  7a 1a 20 4d 4f 56 20 20  |0, #12.gz. MOV  |
0000d850  20 20 20 52 31 2c 52 36  2c 20 4c 53 52 20 23 32  |   R1,R6, LSR #2|
0000d860  0d 67 84 1a 20 4d 4f 56  20 20 20 20 20 52 32 2c  |.g.. MOV     R2,|
0000d870  52 37 2c 20 4c 53 52 20  23 32 0d 67 8e 1c 20 41  |R7, LSR #2.g.. A|
0000d880  44 44 20 20 20 20 20 52  31 2c 52 31 2c 20 23 78  |DD     R1,R1, #x|
0000d890  65 78 74 25 2b 31 0d 67  98 1e 20 41 44 44 20 20  |ext%+1.g.. ADD  |
0000d8a0  20 20 20 52 32 2c 52 32  2c 20 23 79 65 78 74 25  |   R2,R2, #yext%|
0000d8b0  2f 34 2a 32 0d 67 a2 18  20 52 53 42 20 20 20 20  |/4*2.g.. RSB    |
0000d8c0  20 52 32 2c 52 32 2c 20  23 32 35 36 0d 67 ac 14  | R2,R2, #256.g..|
0000d8d0  20 4d 4f 56 20 20 20 20  20 52 33 2c 20 23 34 30  | MOV     R3, #40|
0000d8e0  0d 67 b6 14 20 4d 4f 56  20 20 20 20 20 52 34 2c  |.g.. MOV     R4,|
0000d8f0  20 23 34 30 0d 67 c0 1d  20 4d 4f 56 20 20 20 20  | #40.g.. MOV    |
0000d900  20 52 35 2c 20 23 62 6f  6d 62 5f 70 61 75 73 65  | R5, #bomb_pause|
0000d910  25 0d 67 ca 13 20 54 53  54 20 20 20 20 20 52 38  |%.g.. TST     R8|
0000d920  2c 20 23 31 0d 67 d4 16  20 52 53 42 4e 45 20 20  |, #1.g.. RSBNE  |
0000d930  20 52 33 2c 52 33 2c 20  23 30 0d 67 de 1c 20 53  | R3,R3, #0.g.. S|
0000d940  55 42 4e 45 20 20 20 52  31 2c 52 31 2c 20 23 78  |UBNE   R1,R1, #x|
0000d950  65 78 74 25 2b 32 0d 67  e8 15 20 42 4c 20 20 20  |ext%+2.g.. BL   |
0000d960  20 20 20 61 64 64 5f 63  65 6c 6c 0d 67 f2 13 20  |   add_cell.g.. |
0000d970  4d 4f 56 20 20 20 20 20  52 35 2c 20 23 32 0d 67  |MOV     R5, #2.g|
0000d980  fc 13 20 4d 4f 56 20 20  20 20 20 52 30 2c 20 23  |.. MOV     R0, #|
0000d990  31 0d 68 06 18 20 53 54  52 20 20 20 20 20 52 30  |1.h.. STR     R0|
0000d9a0  2c 20 70 32 5f 66 69 72  65 0d 68 10 16 20 2e 70  |, p2_fire.h.. .p|
0000d9b0  32 5f 6e 6f 74 5f 66 69  72 65 5f 62 6f 6d 62 0d  |2_not_fire_bomb.|
0000d9c0  68 1a 18 20 42 20 20 20  20 20 20 20 70 32 5f 65  |h.. B       p2_e|
0000d9d0  6e 64 5f 66 69 72 65 0d  68 24 06 20 3a 0d 68 2e  |nd_fire.h$. :.h.|
0000d9e0  15 20 2e 70 32 5f 66 69  72 65 5f 63 6c 75 73 74  |. .p2_fire_clust|
0000d9f0  65 72 0d 68 38 15 20 4d  4f 56 20 20 20 20 20 52  |er.h8. MOV     R|
0000da00  30 2c 20 23 31 32 39 0d  68 42 13 20 4d 4f 56 20  |0, #129.hB. MOV |
0000da10  20 20 20 20 52 31 2c 20  23 30 0d 68 4c 17 20 53  |    R1, #0.hL. S|
0000da20  55 42 20 20 20 20 20 52  31 2c 52 31 2c 20 23 35  |UB     R1,R1, #5|
0000da30  39 0d 68 56 15 20 4d 4f  56 20 20 20 20 20 52 32  |9.hV. MOV     R2|
0000da40  2c 20 23 32 35 35 0d 68  60 16 20 53 57 49 20 20  |, #255.h`. SWI  |
0000da50  20 20 20 22 4f 53 5f 42  79 74 65 22 0d 68 6a 15  |   "OS_Byte".hj.|
0000da60  20 43 4d 50 20 20 20 20  20 52 31 2c 20 23 32 35  | CMP     R1, #25|
0000da70  35 0d 68 74 20 20 42 4e  45 20 20 20 20 20 70 32  |5.ht  BNE     p2|
0000da80  5f 6e 6f 74 5f 66 69 72  65 5f 63 6c 75 73 74 65  |_not_fire_cluste|
0000da90  72 0d 68 d8 14 20 4d 4f  56 20 20 20 20 20 52 30  |r.h.. MOV     R0|
0000daa0  2c 20 23 31 33 0d 68 e2  1a 20 4d 4f 56 20 20 20  |, #13.h.. MOV   |
0000dab0  20 20 52 31 2c 52 36 2c  20 4c 53 52 20 23 32 0d  |  R1,R6, LSR #2.|
0000dac0  68 ec 1a 20 4d 4f 56 20  20 20 20 20 52 32 2c 52  |h.. MOV     R2,R|
0000dad0  37 2c 20 4c 53 52 20 23  32 0d 68 f6 1c 20 41 44  |7, LSR #2.h.. AD|
0000dae0  44 20 20 20 20 20 52 31  2c 52 31 2c 20 23 78 65  |D     R1,R1, #xe|
0000daf0  78 74 25 2b 31 0d 69 00  1e 20 41 44 44 20 20 20  |xt%+1.i.. ADD   |
0000db00  20 20 52 32 2c 52 32 2c  20 23 79 65 78 74 25 2f  |  R2,R2, #yext%/|
0000db10  34 2a 32 0d 69 0a 18 20  52 53 42 20 20 20 20 20  |4*2.i.. RSB     |
0000db20  52 32 2c 52 32 2c 20 23  32 35 36 0d 69 14 15 20  |R2,R2, #256.i.. |
0000db30  4d 4f 56 20 20 20 20 20  52 33 2c 20 23 35 31 32  |MOV     R3, #512|
0000db40  0d 69 1e 15 20 4d 4f 56  20 20 20 20 20 52 34 2c  |.i.. MOV     R4,|
0000db50  20 23 31 32 38 0d 69 28  21 20 4d 4f 56 20 20 20  | #128.i(! MOV   |
0000db60  20 20 52 35 2c 20 23 62  6f 6d 62 5f 70 61 75 73  |  R5, #bomb_paus|
0000db70  65 25 2a 2e 32 35 0d 69  32 13 20 54 53 54 20 20  |e%*.25.i2. TST  |
0000db80  20 20 20 52 38 2c 20 23  31 0d 69 3c 16 20 52 53  |   R8, #1.i<. RS|
0000db90  42 4e 45 20 20 20 52 33  2c 52 33 2c 20 23 30 0d  |BNE   R3,R3, #0.|
0000dba0  69 46 1c 20 53 55 42 4e  45 20 20 20 52 31 2c 52  |iF. SUBNE   R1,R|
0000dbb0  31 2c 20 23 78 65 78 74  25 2b 32 0d 69 50 15 20  |1, #xext%+2.iP. |
0000dbc0  42 4c 20 20 20 20 20 20  61 64 64 5f 63 65 6c 6c  |BL      add_cell|
0000dbd0  0d 69 5a 17 20 41 44 44  20 20 20 20 20 52 33 2c  |.iZ. ADD     R3,|
0000dbe0  52 33 2c 20 23 36 34 0d  69 64 17 20 41 44 44 20  |R3, #64.id. ADD |
0000dbf0  20 20 20 20 52 34 2c 52  34 2c 20 23 36 34 0d 69  |    R4,R4, #64.i|
0000dc00  6e 17 20 41 44 44 20 20  20 20 20 52 35 2c 52 35  |n. ADD     R5,R5|
0000dc10  2c 20 23 33 32 0d 69 78  15 20 42 4c 20 20 20 20  |, #32.ix. BL    |
0000dc20  20 20 61 64 64 5f 63 65  6c 6c 0d 69 82 17 20 41  |  add_cell.i.. A|
0000dc30  44 44 20 20 20 20 20 52  33 2c 52 33 2c 20 23 36  |DD     R3,R3, #6|
0000dc40  34 0d 69 8c 17 20 41 44  44 20 20 20 20 20 52 34  |4.i.. ADD     R4|
0000dc50  2c 52 34 2c 20 23 36 34  0d 69 96 17 20 41 44 44  |,R4, #64.i.. ADD|
0000dc60  20 20 20 20 20 52 35 2c  52 35 2c 20 23 33 32 0d  |     R5,R5, #32.|
0000dc70  69 a0 15 20 42 4c 20 20  20 20 20 20 61 64 64 5f  |i.. BL      add_|
0000dc80  63 65 6c 6c 0d 69 aa 13  20 4d 4f 56 20 20 20 20  |cell.i.. MOV    |
0000dc90  20 52 39 2c 20 23 32 0d  69 b4 1f 20 4c 44 52 20  | R9, #2.i.. LDR |
0000dca0  20 20 20 20 52 31 30 2c  20 61 64 72 5f 70 32 5f  |    R10, adr_p2_|
0000dcb0  77 65 61 70 6f 6e 0d 69  be 15 20 53 54 52 20 20  |weapon.i.. STR  |
0000dcc0  20 20 20 52 39 2c 5b 52  31 30 5d 0d 69 c8 13 20  |   R9,[R10].i.. |
0000dcd0  4d 4f 56 20 20 20 20 20  52 35 2c 20 23 32 0d 69  |MOV     R5, #2.i|
0000dce0  d2 13 20 4d 4f 56 20 20  20 20 20 52 30 2c 20 23  |.. MOV     R0, #|
0000dcf0  31 0d 69 dc 18 20 53 54  52 20 20 20 20 20 52 30  |1.i.. STR     R0|
0000dd00  2c 20 70 32 5f 66 69 72  65 0d 69 e6 19 20 2e 70  |, p2_fire.i.. .p|
0000dd10  32 5f 6e 6f 74 5f 66 69  72 65 5f 63 6c 75 73 74  |2_not_fire_clust|
0000dd20  65 72 0d 69 f0 18 20 42  20 20 20 20 20 20 20 70  |er.i.. B       p|
0000dd30  32 5f 65 6e 64 5f 66 69  72 65 0d 69 fa 06 20 3a  |2_end_fire.i.. :|
0000dd40  0d 6a 04 11 20 2e 70 32  5f 65 6e 64 5f 66 69 72  |.j.. .p2_end_fir|
0000dd50  65 0d 6a 0e 06 20 3a 0d  6a 18 13 20 4d 4f 56 20  |e.j.. :.j.. MOV |
0000dd60  20 20 20 20 52 30 2c 20  23 31 0d 6a 22 1a 20 4d  |    R0, #1.j". M|
0000dd70  4f 56 20 20 20 20 20 52  31 2c 52 36 2c 20 4c 53  |OV     R1,R6, LS|
0000dd80  52 20 23 32 0d 6a 2c 1a  20 4d 4f 56 20 20 20 20  |R #2.j,. MOV    |
0000dd90  20 52 32 2c 52 37 2c 20  4c 53 52 20 23 32 0d 6a  | R2,R7, LSR #2.j|
0000dda0  36 13 20 54 53 54 20 20  20 20 20 52 38 2c 20 23  |6. TST     R8, #|
0000ddb0  31 0d 6a 40 1a 20 41 44  44 4e 45 20 20 20 52 31  |1.j@. ADDNE   R1|
0000ddc0  2c 52 31 2c 20 23 78 65  78 74 25 0d 6a 4a 1c 20  |,R1, #xext%.jJ. |
0000ddd0  41 44 44 20 20 20 20 20  52 32 2c 52 32 2c 20 23  |ADD     R2,R2, #|
0000dde0  79 65 78 74 25 2f 34 0d  6a 54 18 20 52 53 42 20  |yext%/4.jT. RSB |
0000ddf0  20 20 20 20 52 32 2c 52  32 2c 20 23 32 35 36 0d  |    R2,R2, #256.|
0000de00  6a 5e 18 20 4c 44 52 20  20 20 20 20 52 33 2c 20  |j^. LDR     R3, |
0000de10  61 64 72 5f 72 6e 64 0d  6a 68 14 20 4c 44 52 20  |adr_rnd.jh. LDR |
0000de20  20 20 20 20 52 33 2c 5b  52 33 5d 0d 6a 72 18 20  |    R3,[R3].jr. |
0000de30  54 53 54 20 20 20 20 20  52 33 2c 20 23 25 31 30  |TST     R3, #%10|
0000de40  30 30 30 0d 6a 7c 16 20  53 55 42 45 51 20 20 20  |000.j|. SUBEQ   |
0000de50  52 32 2c 52 32 2c 20 23  31 0d 6a 86 15 20 80 20  |R2,R2, #1.j.. . |
0000de60  20 20 20 20 52 33 2c 52  33 2c 20 23 31 35 0d 6a  |    R3,R3, #15.j|
0000de70  90 16 20 53 55 42 20 20  20 20 20 52 33 2c 52 33  |.. SUB     R3,R3|
0000de80  2c 20 23 37 0d 6a 9a 13  20 4d 4f 56 20 20 20 20  |, #7.j.. MOV    |
0000de90  20 52 34 2c 20 23 30 0d  6a a4 17 20 53 55 42 20  | R4, #0.j.. SUB |
0000dea0  20 20 20 20 52 34 2c 52  34 2c 20 23 34 30 0d 6a  |    R4,R4, #40.j|
0000deb0  ae 14 20 4d 4f 56 20 20  20 20 20 52 35 2c 20 23  |.. MOV     R5, #|
0000dec0  33 32 0d 6a b8 15 20 42  4c 20 20 20 20 20 20 61  |32.j.. BL      a|
0000ded0  64 64 5f 63 65 6c 6c 0d  6a c2 13 20 4d 4f 56 20  |dd_cell.j.. MOV |
0000dee0  20 20 20 20 52 35 2c 20  23 32 0d 6a cc 06 20 3a  |    R5, #2.j.. :|
0000def0  0d 6a d6 14 20 80 20 20  20 20 20 52 30 2c 52 38  |.j.. .     R0,R8|
0000df00  2c 20 23 31 0d 6a e0 16  20 41 44 44 20 20 20 20  |, #1.j.. ADD    |
0000df10  20 52 30 2c 52 30 2c 20  23 32 0d 6a ea 1a 20 4d  | R0,R0, #2.j.. M|
0000df20  4f 56 20 20 20 20 20 52  31 2c 52 36 2c 20 4c 53  |OV     R1,R6, LS|
0000df30  52 20 23 32 0d 6a f4 1a  20 4d 4f 56 20 20 20 20  |R #2.j.. MOV    |
0000df40  20 52 32 2c 52 37 2c 20  4c 53 52 20 23 32 0d 6a  | R2,R7, LSR #2.j|
0000df50  fe 19 20 4c 44 52 20 20  20 20 20 52 33 2c 20 61  |.. LDR     R3, a|
0000df60  64 72 5f 70 32 5f 78 0d  6b 08 14 20 53 54 52 20  |dr_p2_x.k.. STR |
0000df70  20 20 20 20 52 31 2c 5b  52 33 5d 0d 6b 12 19 20  |    R1,[R3].k.. |
0000df80  4c 44 52 20 20 20 20 20  52 33 2c 20 61 64 72 5f  |LDR     R3, adr_|
0000df90  70 32 5f 79 0d 6b 1c 14  20 53 54 52 20 20 20 20  |p2_y.k.. STR    |
0000dfa0  20 52 32 2c 5b 52 33 5d  0d 6b 26 1d 20 42 4c 20  | R2,[R3].k&. BL |
0000dfb0  20 20 20 20 20 70 6c 6f  74 5f 73 70 72 69 74 65  |     plot_sprite|
0000dfc0  5f 31 36 31 36 0d 6b 30  06 20 3a 0d 6b 3a 19 20  |_1616.k0. :.k:. |
0000dfd0  4c 44 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 39  |LDMFD   R13!,{R9|
0000dfe0  2c 50 43 7d 0d 6b 44 06  20 3a 0d 6b 4e 0e 20 2e  |,PC}.kD. :.kN. .|
0000dff0  61 64 72 5f 70 32 5f 78  0d 6b 58 11 20 45 51 55  |adr_p2_x.kX. EQU|
0000e000  44 20 20 20 20 70 32 5f  78 0d 6b 62 0e 20 2e 61  |D    p2_x.kb. .a|
0000e010  64 72 5f 70 32 5f 79 0d  6b 6c 11 20 45 51 55 44  |dr_p2_y.kl. EQUD|
0000e020  20 20 20 20 70 32 5f 79  0d 6b 76 13 20 2e 61 64  |    p2_y.kv. .ad|
0000e030  72 5f 70 32 5f 77 65 61  70 6f 6e 0d 6b 80 16 20  |r_p2_weapon.k.. |
0000e040  45 51 55 44 20 20 20 20  70 32 5f 77 65 61 70 6f  |EQUD    p2_weapo|
0000e050  6e 0d 6b 8a 13 20 2e 61  64 72 5f 70 31 5f 77 65  |n.k.. .adr_p1_we|
0000e060  61 70 6f 6e 0d 6b 94 16  20 45 51 55 44 20 20 20  |apon.k.. EQUD   |
0000e070  20 70 31 5f 77 65 61 70  6f 6e 0d 6b 9e 0d 20 2e  | p1_weapon.k.. .|
0000e080  70 31 5f 66 69 72 65 0d  6b a8 0e 20 45 51 55 44  |p1_fire.k.. EQUD|
0000e090  20 20 20 20 30 0d 6b b2  0f 20 2e 65 78 70 6c 6f  |    0.k.. .explo|
0000e0a0  64 65 5f 31 0d 6b bc 0e  20 45 51 55 44 20 20 20  |de_1.k.. EQUD   |
0000e0b0  20 30 0d 6b c6 06 20 3a  0d 6b d0 0d 20 2e 70 6c  | 0.k.. :.k.. .pl|
0000e0c0  61 79 65 72 31 0d 6b da  1a 20 53 54 4d 46 44 20  |ayer1.k.. STMFD |
0000e0d0  20 20 52 31 33 21 2c 7b  52 39 2c 52 31 34 7d 0d  |  R13!,{R9,R14}.|
0000e0e0  6b e4 06 20 3a 0d 6b ee  14 20 43 4d 50 20 20 20  |k.. :.k.. CMP   |
0000e0f0  20 20 52 36 2c 20 23 33  32 0d 6b f8 14 20 4d 4f  |  R6, #32.k.. MO|
0000e100  56 4c 54 20 20 20 52 36  2c 20 23 33 32 0d 6c 02  |VLT   R6, #32.l.|
0000e110  14 20 43 4d 50 20 20 20  20 20 52 37 2c 20 23 33  |. CMP     R7, #3|
0000e120  32 0d 6c 0c 14 20 4d 4f  56 4c 54 20 20 20 52 37  |2.l.. MOVLT   R7|
0000e130  2c 20 23 33 32 0d 6c 16  19 20 43 4d 50 20 20 20  |, #32.l.. CMP   |
0000e140  20 20 52 36 2c 20 23 31  32 38 30 2d 36 34 0d 6c  |  R6, #1280-64.l|
0000e150  20 19 20 4d 4f 56 47 54  20 20 20 52 36 2c 20 23  | . MOVGT   R6, #|
0000e160  31 32 38 30 2d 36 34 0d  6c 2a 19 20 43 4d 50 20  |1280-64.l*. CMP |
0000e170  20 20 20 20 52 37 2c 20  23 31 30 32 34 2d 36 34  |    R7, #1024-64|
0000e180  0d 6c 34 19 20 4d 4f 56  47 54 20 20 20 52 37 2c  |.l4. MOVGT   R7,|
0000e190  20 23 31 30 32 34 2d 36  34 0d 6c 3e 06 20 3a 0d  | #1024-64.l>. :.|
0000e1a0  6c 48 1e 20 4c 44 52 20  20 20 20 20 52 30 2c 20  |lH. LDR     R0, |
0000e1b0  70 6c 61 79 65 72 31 5f  61 6c 69 76 65 0d 6c 52  |player1_alive.lR|
0000e1c0  13 20 43 4d 50 20 20 20  20 20 52 30 2c 20 23 30  |. CMP     R0, #0|
0000e1d0  0d 6c 5c 19 20 42 45 51  20 20 20 20 20 70 6c 61  |.l\. BEQ     pla|
0000e1e0  79 5f 70 6c 61 79 65 72  31 0d 6c 66 1c 20 42 4e  |y_player1.lf. BN|
0000e1f0  45 20 20 20 20 20 65 78  70 6c 6f 64 65 5f 70 6c  |E     explode_pl|
0000e200  61 79 65 72 31 0d 6c 70  06 20 3a 0d 6c 7a 15 20  |ayer1.lp. :.lz. |
0000e210  2e 65 78 70 6c 6f 64 65  5f 70 6c 61 79 65 72 31  |.explode_player1|
0000e220  0d 6c 84 1a 20 4c 44 52  20 20 20 20 20 52 30 2c  |.l.. LDR     R0,|
0000e230  20 65 78 70 6c 6f 64 65  5f 31 0d 6c 8e 16 20 41  | explode_1.l.. A|
0000e240  44 44 20 20 20 20 20 52  30 2c 52 30 2c 20 23 31  |DD     R0,R0, #1|
0000e250  0d 6c 98 1a 20 53 54 52  20 20 20 20 20 52 30 2c  |.l.. STR     R0,|
0000e260  20 65 78 70 6c 6f 64 65  5f 31 0d 6c a2 16 20 43  | explode_1.l.. C|
0000e270  4d 50 20 20 20 20 20 52  30 2c 20 23 37 3c 3c 33  |MP     R0, #7<<3|
0000e280  0d 6c ac 19 20 53 54 52  47 54 20 20 20 52 30 2c  |.l.. STRGT   R0,|
0000e290  20 65 6e 64 5f 67 61 6d  65 0d 6c b6 19 20 4c 44  | end_game.l.. LD|
0000e2a0  4d 47 54 46 44 20 52 31  33 21 2c 7b 52 39 2c 50  |MGTFD R13!,{R9,P|
0000e2b0  43 7d 0d 6c c0 16 20 43  4d 50 20 20 20 20 20 52  |C}.l.. CMP     R|
0000e2c0  30 2c 20 23 37 3c 3c 31  0d 6c ca 19 20 4c 44 4d  |0, #7<<1.l.. LDM|
0000e2d0  47 54 46 44 20 52 31 33  21 2c 7b 52 39 2c 50 43  |GTFD R13!,{R9,PC|
0000e2e0  7d 0d 6c d4 1a 20 4d 4f  56 20 20 20 20 20 52 30  |}.l.. MOV     R0|
0000e2f0  2c 52 30 2c 20 41 53 52  20 23 31 0d 6c de 1a 20  |,R0, ASR #1.l.. |
0000e300  4d 4f 56 20 20 20 20 20  52 31 2c 52 36 2c 20 41  |MOV     R1,R6, A|
0000e310  53 52 20 23 32 0d 6c e8  1a 20 4d 4f 56 20 20 20  |SR #2.l.. MOV   |
0000e320  20 20 52 32 2c 52 37 2c  20 41 53 52 20 23 32 0d  |  R2,R7, ASR #2.|
0000e330  6c f2 16 20 53 55 42 20  20 20 20 20 52 31 2c 52  |l.. SUB     R1,R|
0000e340  31 2c 20 23 34 0d 6c fc  1d 20 42 4c 20 20 20 20  |1, #4.l.. BL    |
0000e350  20 20 70 6c 6f 74 5f 73  70 72 69 74 65 5f 32 30  |  plot_sprite_20|
0000e360  31 36 0d 6d 06 06 20 3a  0d 6d 10 19 20 4c 44 4d  |16.m.. :.m.. LDM|
0000e370  46 44 20 20 20 52 31 33  21 2c 7b 52 39 2c 50 43  |FD   R13!,{R9,PC|
0000e380  7d 0d 6d 1a 06 20 3a 0d  6d 24 12 20 2e 70 6c 61  |}.m.. :.m$. .pla|
0000e390  79 5f 70 6c 61 79 65 72  31 0d 6d 2e 06 20 3a 0d  |y_player1.m.. :.|
0000e3a0  6d 38 1a 20 4d 4f 56 20  20 20 20 20 52 31 2c 52  |m8. MOV     R1,R|
0000e3b0  36 2c 20 4c 53 52 20 23  32 0d 6d 42 1a 20 4d 4f  |6, LSR #2.mB. MO|
0000e3c0  56 20 20 20 20 20 52 32  2c 52 37 2c 20 4c 53 52  |V     R2,R7, LSR|
0000e3d0  20 23 32 0d 6d 4c 1c 20  41 44 44 20 20 20 20 20  | #2.mL. ADD     |
0000e3e0  52 31 2c 52 31 2c 20 23  78 65 78 74 25 2f 32 0d  |R1,R1, #xext%/2.|
0000e3f0  6d 56 17 20 42 4c 20 20  20 20 20 20 72 65 61 64  |mV. BL      read|
0000e400  5f 70 6f 69 6e 74 0d 6d  60 13 20 43 4d 50 20 20  |_point.m`. CMP  |
0000e410  20 20 20 52 30 2c 20 23  30 0d 6d 6a 16 20 53 55  |   R0, #0.mj. SU|
0000e420  42 45 51 20 20 20 52 37  2c 52 37 2c 20 23 34 0d  |BEQ   R7,R7, #4.|
0000e430  6d 74 06 20 3a 0d 6d 7e  1a 20 4d 4f 56 20 20 20  |mt. :.m~. MOV   |
0000e440  20 20 52 31 2c 52 36 2c  20 4c 53 52 20 23 32 0d  |  R1,R6, LSR #2.|
0000e450  6d 88 1a 20 4d 4f 56 20  20 20 20 20 52 32 2c 52  |m.. MOV     R2,R|
0000e460  37 2c 20 4c 53 52 20 23  32 0d 6d 92 1c 20 41 44  |7, LSR #2.m.. AD|
0000e470  44 20 20 20 20 20 52 31  2c 52 31 2c 20 23 78 65  |D     R1,R1, #xe|
0000e480  78 74 25 2f 33 0d 6d 9c  17 20 42 4c 20 20 20 20  |xt%/3.m.. BL    |
0000e490  20 20 72 65 61 64 5f 70  6f 69 6e 74 0d 6d a6 13  |  read_point.m..|
0000e4a0  20 43 4d 50 20 20 20 20  20 52 30 2c 20 23 30 0d  | CMP     R0, #0.|
0000e4b0  6d b0 16 20 41 44 44 4e  45 20 20 20 52 37 2c 52  |m.. ADDNE   R7,R|
0000e4c0  37 2c 20 23 34 0d 6d ba  06 20 3a 0d 6d c4 1a 20  |7, #4.m.. :.m.. |
0000e4d0  4d 4f 56 20 20 20 20 20  52 31 2c 52 36 2c 20 4c  |MOV     R1,R6, L|
0000e4e0  53 52 20 23 32 0d 6d ce  1a 20 4d 4f 56 20 20 20  |SR #2.m.. MOV   |
0000e4f0  20 20 52 32 2c 52 37 2c  20 4c 53 52 20 23 32 0d  |  R2,R7, LSR #2.|
0000e500  6d d8 1e 20 41 44 44 20  20 20 20 20 52 31 2c 52  |m.. ADD     R1,R|
0000e510  31 2c 20 23 78 65 78 74  25 2f 33 2a 32 0d 6d e2  |1, #xext%/3*2.m.|
0000e520  17 20 42 4c 20 20 20 20  20 20 72 65 61 64 5f 70  |. BL      read_p|
0000e530  6f 69 6e 74 0d 6d ec 13  20 43 4d 50 20 20 20 20  |oint.m.. CMP    |
0000e540  20 52 30 2c 20 23 30 0d  6d f6 16 20 41 44 44 4e  | R0, #0.m.. ADDN|
0000e550  45 20 20 20 52 37 2c 52  37 2c 20 23 34 0d 6e 00  |E   R7,R7, #4.n.|
0000e560  06 20 3a 0d 6e 0a 1a 20  80 20 20 20 20 20 52 31  |. :.n.. .     R1|
0000e570  30 2c 52 38 2c 20 23 32  35 35 3c 3c 38 0d 6e 14  |0,R8, #255<<8.n.|
0000e580  1c 20 4d 4f 56 20 20 20  20 20 52 31 30 2c 52 31  |. MOV     R10,R1|
0000e590  30 2c 20 4c 53 52 20 23  38 0d 6e 1e 06 20 3a 0d  |0, LSR #8.n.. :.|
0000e5a0  6e 28 1a 20 4d 4f 56 20  20 20 20 20 52 31 2c 52  |n(. MOV     R1,R|
0000e5b0  36 2c 20 4c 53 52 20 23  32 0d 6e 32 1a 20 4d 4f  |6, LSR #2.n2. MO|
0000e5c0  56 20 20 20 20 20 52 32  2c 52 37 2c 20 4c 53 52  |V     R2,R7, LSR|
0000e5d0  20 23 32 0d 6e 3c 1c 20  41 44 44 20 20 20 20 20  | #2.n<. ADD     |
0000e5e0  52 31 2c 52 31 2c 20 23  78 65 78 74 25 2d 31 0d  |R1,R1, #xext%-1.|
0000e5f0  6e 46 16 20 41 44 44 20  20 20 20 20 52 32 2c 52  |nF. ADD     R2,R|
0000e600  32 2c 20 23 38 0d 6e 50  17 20 42 4c 20 20 20 20  |2, #8.nP. BL    |
0000e610  20 20 72 65 61 64 5f 70  6f 69 6e 74 0d 6e 5a 13  |  read_point.nZ.|
0000e620  20 43 4d 50 20 20 20 20  20 52 30 2c 20 23 30 0d  | CMP     R0, #0.|
0000e630  6e 64 19 20 42 4e 45 20  20 20 20 20 70 31 5f 6e  |nd. BNE     p1_n|
0000e640  6f 74 5f 72 69 67 68 74  0d 6e 6e 1a 20 4d 4f 56  |ot_right.nn. MOV|
0000e650  20 20 20 20 20 52 31 2c  52 36 2c 20 4c 53 52 20  |     R1,R6, LSR |
0000e660  23 32 0d 6e 78 1a 20 4d  4f 56 20 20 20 20 20 52  |#2.nx. MOV     R|
0000e670  32 2c 52 37 2c 20 4c 53  52 20 23 32 0d 6e 82 1a  |2,R7, LSR #2.n..|
0000e680  20 41 44 44 20 20 20 20  20 52 31 2c 52 31 2c 20  | ADD     R1,R1, |
0000e690  23 78 65 78 74 25 0d 6e  8c 1c 20 41 44 44 20 20  |#xext%.n.. ADD  |
0000e6a0  20 20 20 52 32 2c 52 32  2c 20 23 79 65 78 74 25  |   R2,R2, #yext%|
0000e6b0  2d 32 0d 6e 96 17 20 42  4c 20 20 20 20 20 20 72  |-2.n.. BL      r|
0000e6c0  65 61 64 5f 70 6f 69 6e  74 0d 6e a0 13 20 43 4d  |ead_point.n.. CM|
0000e6d0  50 20 20 20 20 20 52 30  2c 20 23 30 0d 6e aa 19  |P     R0, #0.n..|
0000e6e0  20 42 4e 45 20 20 20 20  20 70 31 5f 6e 6f 74 5f  | BNE     p1_not_|
0000e6f0  72 69 67 68 74 0d 6e b4  15 20 4d 4f 56 20 20 20  |right.n.. MOV   |
0000e700  20 20 52 30 2c 20 23 31  32 39 0d 6e be 13 20 4d  |  R0, #129.n.. M|
0000e710  4f 56 20 20 20 20 20 52  31 2c 20 23 30 0d 6e c8  |OV     R1, #0.n.|
0000e720  17 20 53 55 42 20 20 20  20 20 52 31 2c 52 31 2c  |. SUB     R1,R1,|
0000e730  20 23 36 37 0d 6e d2 15  20 4d 4f 56 20 20 20 20  | #67.n.. MOV    |
0000e740  20 52 32 2c 20 23 32 35  35 0d 6e dc 16 20 53 57  | R2, #255.n.. SW|
0000e750  49 20 20 20 20 20 22 4f  53 5f 42 79 74 65 22 0d  |I     "OS_Byte".|
0000e760  6e e6 15 20 43 4d 50 20  20 20 20 20 52 31 2c 20  |n.. CMP     R1, |
0000e770  23 32 35 35 0d 6e f0 19  20 42 4e 45 20 20 20 20  |#255.n.. BNE    |
0000e780  20 70 31 5f 6e 6f 74 5f  72 69 67 68 74 0d 6e fa  | p1_not_right.n.|
0000e790  18 20 41 44 44 20 20 20  20 20 52 31 30 2c 52 31  |. ADD     R10,R1|
0000e7a0  30 2c 20 23 34 0d 6f 04  16 20 42 49 43 20 20 20  |0, #4.o.. BIC   |
0000e7b0  20 20 52 38 2c 52 38 2c  20 23 31 0d 6f 0e 12 20  |  R8,R8, #1.o.. |
0000e7c0  2e 70 31 5f 6e 6f 74 5f  72 69 67 68 74 0d 6f 18  |.p1_not_right.o.|
0000e7d0  06 20 3a 0d 6f 22 1a 20  4d 4f 56 20 20 20 20 20  |. :.o". MOV     |
0000e7e0  52 31 2c 52 36 2c 20 4c  53 52 20 23 32 0d 6f 2c  |R1,R6, LSR #2.o,|
0000e7f0  1a 20 4d 4f 56 20 20 20  20 20 52 32 2c 52 37 2c  |. MOV     R2,R7,|
0000e800  20 4c 53 52 20 23 32 0d  6f 36 16 20 53 55 42 20  | LSR #2.o6. SUB |
0000e810  20 20 20 20 52 31 2c 52  31 2c 20 23 31 0d 6f 40  |    R1,R1, #1.o@|
0000e820  16 20 41 44 44 20 20 20  20 20 52 32 2c 52 32 2c  |. ADD     R2,R2,|
0000e830  20 23 38 0d 6f 4a 17 20  42 4c 20 20 20 20 20 20  | #8.oJ. BL      |
0000e840  72 65 61 64 5f 70 6f 69  6e 74 0d 6f 54 13 20 43  |read_point.oT. C|
0000e850  4d 50 20 20 20 20 20 52  30 2c 20 23 30 0d 6f 5e  |MP     R0, #0.o^|
0000e860  18 20 42 4e 45 20 20 20  20 20 70 31 5f 6e 6f 74  |. BNE     p1_not|
0000e870  5f 6c 65 66 74 0d 6f 68  1a 20 4d 4f 56 20 20 20  |_left.oh. MOV   |
0000e880  20 20 52 31 2c 52 36 2c  20 4c 53 52 20 23 32 0d  |  R1,R6, LSR #2.|
0000e890  6f 72 1a 20 4d 4f 56 20  20 20 20 20 52 32 2c 52  |or. MOV     R2,R|
0000e8a0  37 2c 20 4c 53 52 20 23  32 0d 6f 7c 16 20 53 55  |7, LSR #2.o|. SU|
0000e8b0  42 20 20 20 20 20 52 31  2c 52 31 2c 20 23 31 0d  |B     R1,R1, #1.|
0000e8c0  6f 86 1c 20 41 44 44 20  20 20 20 20 52 32 2c 52  |o.. ADD     R2,R|
0000e8d0  32 2c 20 23 79 65 78 74  25 2d 32 0d 6f 90 17 20  |2, #yext%-2.o.. |
0000e8e0  42 4c 20 20 20 20 20 20  72 65 61 64 5f 70 6f 69  |BL      read_poi|
0000e8f0  6e 74 0d 6f 9a 13 20 43  4d 50 20 20 20 20 20 52  |nt.o.. CMP     R|
0000e900  30 2c 20 23 30 0d 6f a4  18 20 42 4e 45 20 20 20  |0, #0.o.. BNE   |
0000e910  20 20 70 31 5f 6e 6f 74  5f 6c 65 66 74 0d 6f ae  |  p1_not_left.o.|
0000e920  15 20 4d 4f 56 20 20 20  20 20 52 30 2c 20 23 31  |. MOV     R0, #1|
0000e930  32 39 0d 6f b8 13 20 4d  4f 56 20 20 20 20 20 52  |29.o.. MOV     R|
0000e940  31 2c 20 23 30 0d 6f c2  17 20 53 55 42 20 20 20  |1, #0.o.. SUB   |
0000e950  20 20 52 31 2c 52 31 2c  20 23 39 38 0d 6f cc 15  |  R1,R1, #98.o..|
0000e960  20 4d 4f 56 20 20 20 20  20 52 32 2c 20 23 32 35  | MOV     R2, #25|
0000e970  35 0d 6f d6 16 20 53 57  49 20 20 20 20 20 22 4f  |5.o.. SWI     "O|
0000e980  53 5f 42 79 74 65 22 0d  6f e0 15 20 43 4d 50 20  |S_Byte".o.. CMP |
0000e990  20 20 20 20 52 31 2c 20  23 32 35 35 0d 6f ea 18  |    R1, #255.o..|
0000e9a0  20 42 4e 45 20 20 20 20  20 70 31 5f 6e 6f 74 5f  | BNE     p1_not_|
0000e9b0  6c 65 66 74 0d 6f f4 18  20 53 55 42 20 20 20 20  |left.o.. SUB    |
0000e9c0  20 52 31 30 2c 52 31 30  2c 20 23 34 0d 6f fe 15  | R10,R10, #4.o..|
0000e9d0  20 84 52 20 20 20 20 20  52 38 2c 52 38 2c 20 23  | .R     R8,R8, #|
0000e9e0  31 0d 70 08 11 20 2e 70  31 5f 6e 6f 74 5f 6c 65  |1.p.. .p1_not_le|
0000e9f0  66 74 0d 70 12 06 20 3a  0d 70 1c 16 20 43 4d 50  |ft.p.. :.p.. CMP|
0000ea00  20 20 20 20 20 52 31 30  2c 20 23 31 32 38 0d 70  |     R10, #128.p|
0000ea10  26 18 20 42 45 51 20 20  20 20 20 70 31 5f 73 69  |&. BEQ     p1_si|
0000ea20  64 65 77 61 79 73 0d 70  30 15 20 42 47 54 20 20  |deways.p0. BGT  |
0000ea30  20 20 20 70 31 5f 72 69  67 68 74 0d 70 3a 1a 20  |   p1_right.p:. |
0000ea40  4d 4f 56 20 20 20 20 20  52 31 2c 52 36 2c 20 4c  |MOV     R1,R6, L|
0000ea50  53 52 20 23 32 0d 70 44  1a 20 4d 4f 56 20 20 20  |SR #2.pD. MOV   |
0000ea60  20 20 52 32 2c 52 37 2c  20 4c 53 52 20 23 32 0d  |  R2,R7, LSR #2.|
0000ea70  70 4e 16 20 53 55 42 20  20 20 20 20 52 31 2c 52  |pN. SUB     R1,R|
0000ea80  31 2c 20 23 31 0d 70 58  16 20 41 44 44 20 20 20  |1, #1.pX. ADD   |
0000ea90  20 20 52 32 2c 52 32 2c  20 23 38 0d 70 62 17 20  |  R2,R2, #8.pb. |
0000eaa0  42 4c 20 20 20 20 20 20  72 65 61 64 5f 70 6f 69  |BL      read_poi|
0000eab0  6e 74 0d 70 6c 13 20 43  4d 50 20 20 20 20 20 52  |nt.pl. CMP     R|
0000eac0  30 2c 20 23 30 0d 70 76  16 20 4d 4f 56 4e 45 20  |0, #0.pv. MOVNE |
0000ead0  20 20 52 31 30 2c 20 23  31 32 38 0d 70 80 1a 20  |  R10, #128.p.. |
0000eae0  4d 4f 56 20 20 20 20 20  52 31 2c 52 36 2c 20 4c  |MOV     R1,R6, L|
0000eaf0  53 52 20 23 32 0d 70 8a  1a 20 4d 4f 56 20 20 20  |SR #2.p.. MOV   |
0000eb00  20 20 52 32 2c 52 37 2c  20 4c 53 52 20 23 32 0d  |  R2,R7, LSR #2.|
0000eb10  70 94 16 20 53 55 42 20  20 20 20 20 52 31 2c 52  |p.. SUB     R1,R|
0000eb20  31 2c 20 23 31 0d 70 9e  1c 20 41 44 44 20 20 20  |1, #1.p.. ADD   |
0000eb30  20 20 52 32 2c 52 32 2c  20 23 79 65 78 74 25 2d  |  R2,R2, #yext%-|
0000eb40  32 0d 70 a8 17 20 42 4c  20 20 20 20 20 20 72 65  |2.p.. BL      re|
0000eb50  61 64 5f 70 6f 69 6e 74  0d 70 b2 13 20 43 4d 50  |ad_point.p.. CMP|
0000eb60  20 20 20 20 20 52 30 2c  20 23 30 0d 70 bc 16 20  |     R0, #0.p.. |
0000eb70  4d 4f 56 4e 45 20 20 20  52 31 30 2c 20 23 31 32  |MOVNE   R10, #12|
0000eb80  38 0d 70 c6 18 20 42 20  20 20 20 20 20 20 70 31  |8.p.. B       p1|
0000eb90  5f 73 69 64 65 77 61 79  73 0d 70 d0 0e 20 2e 70  |_sideways.p.. .p|
0000eba0  31 5f 72 69 67 68 74 0d  70 da 1a 20 4d 4f 56 20  |1_right.p.. MOV |
0000ebb0  20 20 20 20 52 31 2c 52  36 2c 20 4c 53 52 20 23  |    R1,R6, LSR #|
0000ebc0  32 0d 70 e4 1a 20 4d 4f  56 20 20 20 20 20 52 32  |2.p.. MOV     R2|
0000ebd0  2c 52 37 2c 20 4c 53 52  20 23 32 0d 70 ee 1a 20  |,R7, LSR #2.p.. |
0000ebe0  41 44 44 20 20 20 20 20  52 31 2c 52 31 2c 20 23  |ADD     R1,R1, #|
0000ebf0  78 65 78 74 25 0d 70 f8  16 20 41 44 44 20 20 20  |xext%.p.. ADD   |
0000ec00  20 20 52 32 2c 52 32 2c  20 23 38 0d 71 02 17 20  |  R2,R2, #8.q.. |
0000ec10  42 4c 20 20 20 20 20 20  72 65 61 64 5f 70 6f 69  |BL      read_poi|
0000ec20  6e 74 0d 71 0c 13 20 43  4d 50 20 20 20 20 20 52  |nt.q.. CMP     R|
0000ec30  30 2c 20 23 30 0d 71 16  16 20 4d 4f 56 4e 45 20  |0, #0.q.. MOVNE |
0000ec40  20 20 52 31 30 2c 20 23  31 32 38 0d 71 20 1a 20  |  R10, #128.q . |
0000ec50  4d 4f 56 20 20 20 20 20  52 31 2c 52 36 2c 20 4c  |MOV     R1,R6, L|
0000ec60  53 52 20 23 32 0d 71 2a  1a 20 4d 4f 56 20 20 20  |SR #2.q*. MOV   |
0000ec70  20 20 52 32 2c 52 37 2c  20 4c 53 52 20 23 32 0d  |  R2,R7, LSR #2.|
0000ec80  71 34 1a 20 41 44 44 20  20 20 20 20 52 31 2c 52  |q4. ADD     R1,R|
0000ec90  31 2c 20 23 78 65 78 74  25 0d 71 3e 1c 20 41 44  |1, #xext%.q>. AD|
0000eca0  44 20 20 20 20 20 52 32  2c 52 32 2c 20 23 79 65  |D     R2,R2, #ye|
0000ecb0  78 74 25 2d 32 0d 71 48  17 20 42 4c 20 20 20 20  |xt%-2.qH. BL    |
0000ecc0  20 20 72 65 61 64 5f 70  6f 69 6e 74 0d 71 52 13  |  read_point.qR.|
0000ecd0  20 43 4d 50 20 20 20 20  20 52 30 2c 20 23 30 0d  | CMP     R0, #0.|
0000ece0  71 5c 16 20 4d 4f 56 4e  45 20 20 20 52 31 30 2c  |q\. MOVNE   R10,|
0000ecf0  20 23 31 32 38 0d 71 66  18 20 42 20 20 20 20 20  | #128.qf. B     |
0000ed00  20 20 70 31 5f 73 69 64  65 77 61 79 73 0d 71 70  |  p1_sideways.qp|
0000ed10  11 20 2e 70 31 5f 73 69  64 65 77 61 79 73 0d 71  |. .p1_sideways.q|
0000ed20  7a 1b 20 43 4d 50 20 20  20 20 20 52 31 30 2c 20  |z. CMP     R10, |
0000ed30  23 31 32 38 2b 32 35 2a  32 0d 71 84 1b 20 4d 4f  |#128+25*2.q.. MO|
0000ed40  56 47 54 20 20 20 52 31  30 2c 20 23 31 32 38 2b  |VGT   R10, #128+|
0000ed50  32 35 2a 32 0d 71 8e 1b  20 43 4d 50 20 20 20 20  |25*2.q.. CMP    |
0000ed60  20 52 31 30 2c 20 23 31  32 38 2d 32 35 2a 32 0d  | R10, #128-25*2.|
0000ed70  71 98 1b 20 4d 4f 56 4c  54 20 20 20 52 31 30 2c  |q.. MOVLT   R10,|
0000ed80  20 23 31 32 38 2d 32 35  2a 32 0d 71 a2 16 20 43  | #128-25*2.q.. C|
0000ed90  4d 50 20 20 20 20 20 52  31 30 2c 20 23 31 32 38  |MP     R10, #128|
0000eda0  0d 71 ac 18 20 41 44 44  4c 54 20 20 20 52 31 30  |.q.. ADDLT   R10|
0000edb0  2c 52 31 30 2c 20 23 31  0d 71 b6 18 20 53 55 42  |,R10, #1.q.. SUB|
0000edc0  47 54 20 20 20 52 31 30  2c 52 31 30 2c 20 23 31  |GT   R10,R10, #1|
0000edd0  0d 71 c0 1b 20 42 49 43  20 20 20 20 20 52 38 2c  |.q.. BIC     R8,|
0000ede0  52 38 2c 20 23 32 35 35  3c 3c 38 0d 71 ca 1d 20  |R8, #255<<8.q.. |
0000edf0  84 52 20 20 20 20 20 52  38 2c 52 38 2c 52 31 30  |.R     R8,R8,R10|
0000ee00  2c 20 4c 53 4c 20 23 38  0d 71 d4 1a 20 53 55 42  |, LSL #8.q.. SUB|
0000ee10  20 20 20 20 20 52 31 30  2c 52 31 30 2c 20 23 31  |     R10,R10, #1|
0000ee20  32 38 0d 71 de 1e 20 41  44 44 20 20 20 20 20 52  |28.q.. ADD     R|
0000ee30  36 2c 52 36 2c 52 31 30  2c 20 41 53 52 20 23 33  |6,R6,R10, ASR #3|
0000ee40  0d 71 e8 06 20 3a 0d 71  f2 1b 20 80 20 20 20 20  |.q.. :.q.. .    |
0000ee50  20 52 31 30 2c 52 38 2c  20 23 32 35 35 3c 3c 31  | R10,R8, #255<<1|
0000ee60  36 0d 71 fc 1d 20 4d 4f  56 20 20 20 20 20 52 31  |6.q.. MOV     R1|
0000ee70  30 2c 52 31 30 2c 20 4c  53 52 20 23 31 36 0d 72  |0,R10, LSR #16.r|
0000ee80  06 06 20 3a 0d 72 10 1a  20 4d 4f 56 20 20 20 20  |.. :.r.. MOV    |
0000ee90  20 52 31 2c 52 36 2c 20  4c 53 52 20 23 32 0d 72  | R1,R6, LSR #2.r|
0000eea0  1a 1a 20 4d 4f 56 20 20  20 20 20 52 32 2c 52 37  |.. MOV     R2,R7|
0000eeb0  2c 20 4c 53 52 20 23 32  0d 72 24 1e 20 41 44 44  |, LSR #2.r$. ADD|
0000eec0  20 20 20 20 20 52 31 2c  52 31 2c 20 23 78 65 78  |     R1,R1, #xex|
0000eed0  74 25 2f 32 2b 31 0d 72  2e 1a 20 41 44 44 20 20  |t%/2+1.r.. ADD  |
0000eee0  20 20 20 52 32 2c 52 32  2c 20 23 79 65 78 74 25  |   R2,R2, #yext%|
0000eef0  0d 72 38 17 20 42 4c 20  20 20 20 20 20 72 65 61  |.r8. BL      rea|
0000ef00  64 5f 70 6f 69 6e 74 0d  72 42 13 20 43 4d 50 20  |d_point.rB. CMP |
0000ef10  20 20 20 20 52 30 2c 20  23 30 0d 72 4c 16 20 42  |    R0, #0.rL. B|
0000ef20  4e 45 20 20 20 20 20 70  31 5f 6e 6f 74 5f 75 70  |NE     p1_not_up|
0000ef30  0d 72 56 1a 20 4d 4f 56  20 20 20 20 20 52 31 2c  |.rV. MOV     R1,|
0000ef40  52 36 2c 20 4c 53 52 20  23 32 0d 72 60 1a 20 4d  |R6, LSR #2.r`. M|
0000ef50  4f 56 20 20 20 20 20 52  32 2c 52 37 2c 20 4c 53  |OV     R2,R7, LS|
0000ef60  52 20 23 32 0d 72 6a 1e  20 41 44 44 20 20 20 20  |R #2.rj. ADD    |
0000ef70  20 52 31 2c 52 31 2c 20  23 78 65 78 74 25 2f 32  | R1,R1, #xext%/2|
0000ef80  2d 31 0d 72 74 1a 20 41  44 44 20 20 20 20 20 52  |-1.rt. ADD     R|
0000ef90  32 2c 52 32 2c 20 23 79  65 78 74 25 0d 72 7e 17  |2,R2, #yext%.r~.|
0000efa0  20 42 4c 20 20 20 20 20  20 72 65 61 64 5f 70 6f  | BL      read_po|
0000efb0  69 6e 74 0d 72 88 13 20  43 4d 50 20 20 20 20 20  |int.r.. CMP     |
0000efc0  52 30 2c 20 23 30 0d 72  92 16 20 42 4e 45 20 20  |R0, #0.r.. BNE  |
0000efd0  20 20 20 70 31 5f 6e 6f  74 5f 75 70 0d 72 9c 15  |   p1_not_up.r..|
0000efe0  20 4d 4f 56 20 20 20 20  20 52 30 2c 20 23 31 32  | MOV     R0, #12|
0000eff0  39 0d 72 a6 13 20 4d 4f  56 20 20 20 20 20 52 31  |9.r.. MOV     R1|
0000f000  2c 20 23 30 0d 72 b0 17  20 53 55 42 20 20 20 20  |, #0.r.. SUB    |
0000f010  20 52 31 2c 52 31 2c 20  23 36 38 0d 72 ba 15 20  | R1,R1, #68.r.. |
0000f020  4d 4f 56 20 20 20 20 20  52 32 2c 20 23 32 35 35  |MOV     R2, #255|
0000f030  0d 72 c4 16 20 53 57 49  20 20 20 20 20 22 4f 53  |.r.. SWI     "OS|
0000f040  5f 42 79 74 65 22 0d 72  ce 15 20 43 4d 50 20 20  |_Byte".r.. CMP  |
0000f050  20 20 20 52 31 2c 20 23  32 35 35 0d 72 d8 18 20  |   R1, #255.r.. |
0000f060  41 44 44 45 51 20 20 20  52 31 30 2c 52 31 30 2c  |ADDEQ   R10,R10,|
0000f070  20 23 34 0d 72 e2 0f 20  2e 70 31 5f 6e 6f 74 5f  | #4.r.. .p1_not_|
0000f080  75 70 0d 72 ec 06 20 3a  0d 72 f6 1a 20 4d 4f 56  |up.r.. :.r.. MOV|
0000f090  20 20 20 20 20 52 31 2c  52 36 2c 20 4c 53 52 20  |     R1,R6, LSR |
0000f0a0  23 32 0d 73 00 1a 20 4d  4f 56 20 20 20 20 20 52  |#2.s.. MOV     R|
0000f0b0  32 2c 52 37 2c 20 4c 53  52 20 23 32 0d 73 0a 1c  |2,R7, LSR #2.s..|
0000f0c0  20 41 44 44 20 20 20 20  20 52 31 2c 52 31 2c 20  | ADD     R1,R1, |
0000f0d0  23 78 65 78 74 25 2d 32  0d 73 14 17 20 42 4c 20  |#xext%-2.s.. BL |
0000f0e0  20 20 20 20 20 72 65 61  64 5f 70 6f 69 6e 74 0d  |     read_point.|
0000f0f0  73 1e 13 20 43 4d 50 20  20 20 20 20 52 30 2c 20  |s.. CMP     R0, |
0000f100  23 30 0d 73 28 18 20 42  4e 45 20 20 20 20 20 70  |#0.s(. BNE     p|
0000f110  31 5f 6e 6f 74 5f 64 6f  77 6e 0d 73 32 1a 20 4d  |1_not_down.s2. M|
0000f120  4f 56 20 20 20 20 20 52  31 2c 52 36 2c 20 4c 53  |OV     R1,R6, LS|
0000f130  52 20 23 32 0d 73 3c 1a  20 4d 4f 56 20 20 20 20  |R #2.s<. MOV    |
0000f140  20 52 32 2c 52 37 2c 20  4c 53 52 20 23 32 0d 73  | R2,R7, LSR #2.s|
0000f150  46 16 20 41 44 44 20 20  20 20 20 52 31 2c 52 31  |F. ADD     R1,R1|
0000f160  2c 20 23 32 0d 73 50 17  20 42 4c 20 20 20 20 20  |, #2.sP. BL     |
0000f170  20 72 65 61 64 5f 70 6f  69 6e 74 0d 73 5a 13 20  | read_point.sZ. |
0000f180  43 4d 50 20 20 20 20 20  52 30 2c 20 23 30 0d 73  |CMP     R0, #0.s|
0000f190  64 18 20 42 4e 45 20 20  20 20 20 70 31 5f 6e 6f  |d. BNE     p1_no|
0000f1a0  74 5f 64 6f 77 6e 0d 73  6e 15 20 4d 4f 56 20 20  |t_down.sn. MOV  |
0000f1b0  20 20 20 52 30 2c 20 23  31 32 39 0d 73 78 13 20  |   R0, #129.sx. |
0000f1c0  4d 4f 56 20 20 20 20 20  52 31 2c 20 23 30 0d 73  |MOV     R1, #0.s|
0000f1d0  82 17 20 53 55 42 20 20  20 20 20 52 31 2c 52 31  |.. SUB     R1,R1|
0000f1e0  2c 20 23 38 33 0d 73 8c  15 20 4d 4f 56 20 20 20  |, #83.s.. MOV   |
0000f1f0  20 20 52 32 2c 20 23 32  35 35 0d 73 96 16 20 53  |  R2, #255.s.. S|
0000f200  57 49 20 20 20 20 20 22  4f 53 5f 42 79 74 65 22  |WI     "OS_Byte"|
0000f210  0d 73 a0 15 20 43 4d 50  20 20 20 20 20 52 31 2c  |.s.. CMP     R1,|
0000f220  20 23 32 35 35 0d 73 aa  18 20 53 55 42 45 51 20  | #255.s.. SUBEQ |
0000f230  20 20 52 31 30 2c 52 31  30 2c 20 23 32 0d 73 b4  |  R10,R10, #2.s.|
0000f240  11 20 2e 70 31 5f 6e 6f  74 5f 64 6f 77 6e 0d 73  |. .p1_not_down.s|
0000f250  be 06 20 3a 0d 73 c8 18  20 53 55 42 20 20 20 20  |.. :.s.. SUB    |
0000f260  20 52 31 30 2c 52 31 30  2c 20 23 31 0d 73 d2 06  | R10,R10, #1.s..|
0000f270  20 3a 0d 73 dc 16 20 43  4d 50 20 20 20 20 20 52  | :.s.. CMP     R|
0000f280  31 30 2c 20 23 31 32 38  0d 73 e6 12 20 42 45 51  |10, #128.s.. BEQ|
0000f290  20 20 20 20 20 70 31 5f  75 64 0d 73 f0 12 20 42  |     p1_ud.s.. B|
0000f2a0  47 54 20 20 20 20 20 70  31 5f 75 70 0d 73 fa 1a  |GT     p1_up.s..|
0000f2b0  20 4d 4f 56 20 20 20 20  20 52 31 2c 52 36 2c 20  | MOV     R1,R6, |
0000f2c0  4c 53 52 20 23 32 0d 74  04 1a 20 4d 4f 56 20 20  |LSR #2.t.. MOV  |
0000f2d0  20 20 20 52 32 2c 52 37  2c 20 4c 53 52 20 23 32  |   R2,R7, LSR #2|
0000f2e0  0d 74 0e 1c 20 41 44 44  20 20 20 20 20 52 31 2c  |.t.. ADD     R1,|
0000f2f0  52 31 2c 20 23 78 65 78  74 25 2f 32 0d 74 18 16  |R1, #xext%/2.t..|
0000f300  20 53 55 42 20 20 20 20  20 52 32 2c 52 32 2c 20  | SUB     R2,R2, |
0000f310  23 31 0d 74 22 17 20 42  4c 20 20 20 20 20 20 72  |#1.t". BL      r|
0000f320  65 61 64 5f 70 6f 69 6e  74 0d 74 2c 13 20 43 4d  |ead_point.t,. CM|
0000f330  50 20 20 20 20 20 52 30  2c 20 23 30 0d 74 36 16  |P     R0, #0.t6.|
0000f340  20 4d 4f 56 4e 45 20 20  20 52 31 30 2c 20 23 31  | MOVNE   R10, #1|
0000f350  32 38 0d 74 40 12 20 42  20 20 20 20 20 20 20 70  |28.t@. B       p|
0000f360  31 5f 75 64 0d 74 4a 0b  20 2e 70 31 5f 75 70 0d  |1_ud.tJ. .p1_up.|
0000f370  74 54 1a 20 4d 4f 56 20  20 20 20 20 52 31 2c 52  |tT. MOV     R1,R|
0000f380  36 2c 20 4c 53 52 20 23  32 0d 74 5e 1a 20 4d 4f  |6, LSR #2.t^. MO|
0000f390  56 20 20 20 20 20 52 32  2c 52 37 2c 20 4c 53 52  |V     R2,R7, LSR|
0000f3a0  20 23 32 0d 74 68 1e 20  41 44 44 20 20 20 20 20  | #2.th. ADD     |
0000f3b0  52 31 2c 52 31 2c 20 23  78 65 78 74 25 2f 32 2b  |R1,R1, #xext%/2+|
0000f3c0  32 0d 74 72 1a 20 41 44  44 20 20 20 20 20 52 32  |2.tr. ADD     R2|
0000f3d0  2c 52 32 2c 20 23 79 65  78 74 25 0d 74 7c 17 20  |,R2, #yext%.t|. |
0000f3e0  42 4c 20 20 20 20 20 20  72 65 61 64 5f 70 6f 69  |BL      read_poi|
0000f3f0  6e 74 0d 74 86 13 20 43  4d 50 20 20 20 20 20 52  |nt.t.. CMP     R|
0000f400  30 2c 20 23 30 0d 74 90  16 20 4d 4f 56 4e 45 20  |0, #0.t.. MOVNE |
0000f410  20 20 52 31 30 2c 20 23  31 32 38 0d 74 9a 1a 20  |  R10, #128.t.. |
0000f420  4d 4f 56 20 20 20 20 20  52 31 2c 52 36 2c 20 4c  |MOV     R1,R6, L|
0000f430  53 52 20 23 32 0d 74 a4  1a 20 4d 4f 56 20 20 20  |SR #2.t.. MOV   |
0000f440  20 20 52 32 2c 52 37 2c  20 4c 53 52 20 23 32 0d  |  R2,R7, LSR #2.|
0000f450  74 ae 1e 20 41 44 44 20  20 20 20 20 52 31 2c 52  |t.. ADD     R1,R|
0000f460  31 2c 20 23 78 65 78 74  25 2f 32 2d 32 0d 74 b8  |1, #xext%/2-2.t.|
0000f470  1a 20 41 44 44 20 20 20  20 20 52 32 2c 52 32 2c  |. ADD     R2,R2,|
0000f480  20 23 79 65 78 74 25 0d  74 c2 17 20 42 4c 20 20  | #yext%.t.. BL  |
0000f490  20 20 20 20 72 65 61 64  5f 70 6f 69 6e 74 0d 74  |    read_point.t|
0000f4a0  cc 13 20 43 4d 50 20 20  20 20 20 52 30 2c 20 23  |.. CMP     R0, #|
0000f4b0  30 0d 74 d6 16 20 4d 4f  56 4e 45 20 20 20 52 31  |0.t.. MOVNE   R1|
0000f4c0  30 2c 20 23 31 32 38 0d  74 e0 12 20 42 20 20 20  |0, #128.t.. B   |
0000f4d0  20 20 20 20 70 31 5f 75  64 0d 74 ea 0b 20 2e 70  |    p1_ud.t.. .p|
0000f4e0  31 5f 75 64 0d 74 f4 1b  20 43 4d 50 20 20 20 20  |1_ud.t.. CMP    |
0000f4f0  20 52 31 30 2c 20 23 31  32 38 2b 31 30 2a 34 0d  | R10, #128+10*4.|
0000f500  74 fe 1b 20 4d 4f 56 47  54 20 20 20 52 31 30 2c  |t.. MOVGT   R10,|
0000f510  20 23 31 32 38 2b 31 30  2a 34 0d 75 08 1a 20 43  | #128+10*4.u.. C|
0000f520  4d 50 20 20 20 20 20 52  31 30 2c 20 23 31 32 38  |MP     R10, #128|
0000f530  2d 38 2a 34 0d 75 12 1a  20 4d 4f 56 4c 54 20 20  |-8*4.u.. MOVLT  |
0000f540  20 52 31 30 2c 20 23 31  32 38 2d 38 2a 34 0d 75  | R10, #128-8*4.u|
0000f550  1c 16 20 43 4d 50 20 20  20 20 20 52 31 30 2c 20  |.. CMP     R10, |
0000f560  23 31 32 38 0d 75 26 1c  20 42 49 43 20 20 20 20  |#128.u&. BIC    |
0000f570  20 52 38 2c 52 38 2c 20  23 32 35 35 3c 3c 31 36  | R8,R8, #255<<16|
0000f580  0d 75 30 1e 20 84 52 20  20 20 20 20 52 38 2c 52  |.u0. .R     R8,R|
0000f590  38 2c 52 31 30 2c 20 4c  53 4c 20 23 31 36 0d 75  |8,R10, LSL #16.u|
0000f5a0  3a 1a 20 53 55 42 20 20  20 20 20 52 31 30 2c 52  |:. SUB     R10,R|
0000f5b0  31 30 2c 20 23 31 32 38  0d 75 44 1e 20 41 44 44  |10, #128.uD. ADD|
0000f5c0  20 20 20 20 20 52 37 2c  52 37 2c 52 31 30 2c 20  |     R7,R7,R10, |
0000f5d0  41 53 52 20 23 32 0d 75  4e 06 20 3a 0d 75 58 1e  |ASR #2.uN. :.uX.|
0000f5e0  20 4c 44 52 20 20 20 20  20 52 30 2c 20 61 64 72  | LDR     R0, adr|
0000f5f0  5f 70 31 5f 77 65 61 70  6f 6e 0d 75 62 14 20 4c  |_p1_weapon.ub. L|
0000f600  44 52 20 20 20 20 20 52  30 2c 5b 52 30 5d 0d 75  |DR     R0,[R0].u|
0000f610  6c 13 20 43 4d 50 20 20  20 20 20 52 30 2c 20 23  |l. CMP     R0, #|
0000f620  32 0d 75 76 1b 20 42 45  51 20 20 20 20 20 70 31  |2.uv. BEQ     p1|
0000f630  5f 66 69 72 65 5f 70 69  73 74 6f 6c 0d 75 80 13  |_fire_pistol.u..|
0000f640  20 43 4d 50 20 20 20 20  20 52 30 2c 20 23 33 0d  | CMP     R0, #3.|
0000f650  75 8a 18 20 42 45 51 20  20 20 20 20 70 31 5f 66  |u.. BEQ     p1_f|
0000f660  69 72 65 5f 67 75 6e 0d  75 94 13 20 43 4d 50 20  |ire_gun.u.. CMP |
0000f670  20 20 20 20 52 30 2c 20  23 34 0d 75 9e 1b 20 42  |    R0, #4.u.. B|
0000f680  45 51 20 20 20 20 20 70  31 5f 66 69 72 65 5f 6d  |EQ     p1_fire_m|
0000f690  6f 72 74 61 72 0d 75 a8  13 20 43 4d 50 20 20 20  |ortar.u.. CMP   |
0000f6a0  20 20 52 30 2c 20 23 35  0d 75 b2 1b 20 42 45 51  |  R0, #5.u.. BEQ|
0000f6b0  20 20 20 20 20 70 31 5f  66 69 72 65 5f 68 6f 6d  |     p1_fire_hom|
0000f6c0  69 6e 67 0d 75 bc 13 20  43 4d 50 20 20 20 20 20  |ing.u.. CMP     |
0000f6d0  52 30 2c 20 23 36 0d 75  c6 1c 20 42 45 51 20 20  |R0, #6.u.. BEQ  |
0000f6e0  20 20 20 70 31 5f 66 69  72 65 5f 73 65 65 6b 69  |   p1_fire_seeki|
0000f6f0  6e 67 0d 75 d0 13 20 43  4d 50 20 20 20 20 20 52  |ng.u.. CMP     R|
0000f700  30 2c 20 23 37 0d 75 da  1d 20 42 45 51 20 20 20  |0, #7.u.. BEQ   |
0000f710  20 20 70 31 5f 66 69 72  65 5f 76 65 72 74 69 63  |  p1_fire_vertic|
0000f720  61 6c 0d 75 e4 13 20 43  4d 50 20 20 20 20 20 52  |al.u.. CMP     R|
0000f730  30 2c 20 23 38 0d 75 ee  1a 20 42 45 51 20 20 20  |0, #8.u.. BEQ   |
0000f740  20 20 70 31 5f 66 69 72  65 5f 66 6c 61 6d 65 0d  |  p1_fire_flame.|
0000f750  75 f8 13 20 43 4d 50 20  20 20 20 20 52 30 2c 20  |u.. CMP     R0, |
0000f760  23 39 0d 76 02 19 20 42  45 51 20 20 20 20 20 70  |#9.v.. BEQ     p|
0000f770  31 5f 66 69 72 65 5f 62  6f 6d 62 0d 76 0c 14 20  |1_fire_bomb.v.. |
0000f780  43 4d 50 20 20 20 20 20  52 30 2c 20 23 31 30 0d  |CMP     R0, #10.|
0000f790  76 16 1c 20 42 45 51 20  20 20 20 20 70 31 5f 66  |v.. BEQ     p1_f|
0000f7a0  69 72 65 5f 63 6c 75 73  74 65 72 0d 76 20 06 20  |ire_cluster.v . |
0000f7b0  3a 0d 76 2a 14 20 2e 70  31 5f 66 69 72 65 5f 70  |:.v*. .p1_fire_p|
0000f7c0  69 73 74 6f 6c 0d 76 34  18 20 4c 44 52 20 20 20  |istol.v4. LDR   |
0000f7d0  20 20 52 30 2c 20 70 31  5f 66 69 72 65 0d 76 3e  |  R0, p1_fire.v>|
0000f7e0  13 20 43 4d 50 20 20 20  20 20 52 30 2c 20 23 30  |. CMP     R0, #0|
0000f7f0  0d 76 48 1b 20 42 45 51  20 20 20 20 20 70 31 5f  |.vH. BEQ     p1_|
0000f800  70 69 73 74 6f 6c 5f 73  68 6f 74 0d 76 52 15 20  |pistol_shot.vR. |
0000f810  4d 4f 56 20 20 20 20 20  52 30 2c 20 23 31 32 39  |MOV     R0, #129|
0000f820  0d 76 5c 13 20 4d 4f 56  20 20 20 20 20 52 31 2c  |.v\. MOV     R1,|
0000f830  20 23 30 0d 76 66 17 20  53 55 42 20 20 20 20 20  | #0.vf. SUB     |
0000f840  52 31 2c 52 31 2c 20 23  38 34 0d 76 70 15 20 4d  |R1,R1, #84.vp. M|
0000f850  4f 56 20 20 20 20 20 52  32 2c 20 23 32 35 35 0d  |OV     R2, #255.|
0000f860  76 7a 16 20 53 57 49 20  20 20 20 20 22 4f 53 5f  |vz. SWI     "OS_|
0000f870  42 79 74 65 22 0d 76 84  15 20 43 4d 50 20 20 20  |Byte".v.. CMP   |
0000f880  20 20 52 31 2c 20 23 32  35 35 0d 76 8e 13 20 4d  |  R1, #255.v.. M|
0000f890  4f 56 4e 45 20 20 20 52  30 2c 20 23 30 0d 76 98  |OVNE   R0, #0.v.|
0000f8a0  18 20 53 54 52 4e 45 20  20 20 52 30 2c 20 70 31  |. STRNE   R0, p1|
0000f8b0  5f 66 69 72 65 0d 76 a2  1f 20 42 20 20 20 20 20  |_fire.v.. B     |
0000f8c0  20 20 70 31 5f 6e 6f 74  5f 66 69 72 65 5f 70 69  |  p1_not_fire_pi|
0000f8d0  73 74 6f 6c 0d 76 ac 14  20 2e 70 31 5f 70 69 73  |stol.v.. .p1_pis|
0000f8e0  74 6f 6c 5f 73 68 6f 74  0d 76 b6 15 20 4d 4f 56  |tol_shot.v.. MOV|
0000f8f0  20 20 20 20 20 52 30 2c  20 23 31 32 39 0d 76 c0  |     R0, #129.v.|
0000f900  13 20 4d 4f 56 20 20 20  20 20 52 31 2c 20 23 30  |. MOV     R1, #0|
0000f910  0d 76 ca 17 20 53 55 42  20 20 20 20 20 52 31 2c  |.v.. SUB     R1,|
0000f920  52 31 2c 20 23 38 34 0d  76 d4 15 20 4d 4f 56 20  |R1, #84.v.. MOV |
0000f930  20 20 20 20 52 32 2c 20  23 32 35 35 0d 76 de 16  |    R2, #255.v..|
0000f940  20 53 57 49 20 20 20 20  20 22 4f 53 5f 42 79 74  | SWI     "OS_Byt|
0000f950  65 22 0d 76 e8 15 20 43  4d 50 20 20 20 20 20 52  |e".v.. CMP     R|
0000f960  31 2c 20 23 32 35 35 0d  76 f2 1f 20 42 4e 45 20  |1, #255.v.. BNE |
0000f970  20 20 20 20 70 31 5f 6e  6f 74 5f 66 69 72 65 5f  |    p1_not_fire_|
0000f980  70 69 73 74 6f 6c 0d 76  fc 13 20 4d 4f 56 20 20  |pistol.v.. MOV  |
0000f990  20 20 20 52 30 2c 20 23  32 0d 77 06 1a 20 4d 4f  |   R0, #2.w.. MO|
0000f9a0  56 20 20 20 20 20 52 31  2c 52 36 2c 20 4c 53 52  |V     R1,R6, LSR|
0000f9b0  20 23 32 0d 77 10 1a 20  4d 4f 56 20 20 20 20 20  | #2.w.. MOV     |
0000f9c0  52 32 2c 52 37 2c 20 4c  53 52 20 23 32 0d 77 1a  |R2,R7, LSR #2.w.|
0000f9d0  1a 20 41 44 44 20 20 20  20 20 52 31 2c 52 31 2c  |. ADD     R1,R1,|
0000f9e0  20 23 78 65 78 74 25 0d  77 24 1e 20 41 44 44 20  | #xext%.w$. ADD |
0000f9f0  20 20 20 20 52 32 2c 52  32 2c 20 23 79 65 78 74  |    R2,R2, #yext|
0000fa00  25 2f 34 2a 32 0d 77 2e  18 20 52 53 42 20 20 20  |%/4*2.w.. RSB   |
0000fa10  20 20 52 32 2c 52 32 2c  20 23 32 35 36 0d 77 38  |  R2,R2, #256.w8|
0000fa20  14 20 4d 4f 56 20 20 20  20 20 52 33 2c 20 23 38  |. MOV     R3, #8|
0000fa30  30 0d 77 42 13 20 4d 4f  56 20 20 20 20 20 52 34  |0.wB. MOV     R4|
0000fa40  2c 20 23 30 0d 77 4c 13  20 4d 4f 56 20 20 20 20  |, #0.wL. MOV    |
0000fa50  20 52 35 2c 20 23 31 0d  77 56 13 20 54 53 54 20  | R5, #1.wV. TST |
0000fa60  20 20 20 20 52 38 2c 20  23 31 0d 77 60 16 20 52  |    R8, #1.w`. R|
0000fa70  53 42 4e 45 20 20 20 52  33 2c 52 33 2c 20 23 30  |SBNE   R3,R3, #0|
0000fa80  0d 77 6a 1a 20 53 55 42  4e 45 20 20 20 52 31 2c  |.wj. SUBNE   R1,|
0000fa90  52 31 2c 20 23 78 65 78  74 25 0d 77 74 15 20 42  |R1, #xext%.wt. B|
0000faa0  4c 20 20 20 20 20 20 61  64 64 5f 63 65 6c 6c 0d  |L      add_cell.|
0000fab0  77 7e 13 20 4d 4f 56 20  20 20 20 20 52 35 2c 20  |w~. MOV     R5, |
0000fac0  23 31 0d 77 88 13 20 4d  4f 56 20 20 20 20 20 52  |#1.w.. MOV     R|
0000fad0  30 2c 20 23 31 0d 77 92  18 20 53 54 52 20 20 20  |0, #1.w.. STR   |
0000fae0  20 20 52 30 2c 20 70 31  5f 66 69 72 65 0d 77 9c  |  R0, p1_fire.w.|
0000faf0  13 20 4d 4f 56 20 20 20  20 20 52 30 2c 20 23 37  |. MOV     R0, #7|
0000fb00  0d 77 a6 14 20 4d 56 4e  20 20 20 20 20 52 31 2c  |.w.. MVN     R1,|
0000fb10  20 23 31 34 0d 77 b0 17  20 4d 4f 56 20 20 20 20  | #14.w.. MOV    |
0000fb20  20 52 32 2c 20 23 31 32  38 30 30 0d 77 ba 13 20  | R2, #12800.w.. |
0000fb30  4d 4f 56 20 20 20 20 20  52 33 2c 20 23 30 0d 77  |MOV     R3, #0.w|
0000fb40  c4 1c 20 53 57 49 20 20  20 20 20 22 53 6f 75 6e  |.. SWI     "Soun|
0000fb50  64 5f 43 6f 6e 74 72 6f  6c 22 0d 77 ce 18 20 2e  |d_Control".w.. .|
0000fb60  70 31 5f 6e 6f 74 5f 66  69 72 65 5f 70 69 73 74  |p1_not_fire_pist|
0000fb70  6f 6c 0d 77 d8 18 20 42  20 20 20 20 20 20 20 70  |ol.w.. B       p|
0000fb80  31 5f 65 6e 64 5f 66 69  72 65 0d 77 e2 06 20 3a  |1_end_fire.w.. :|
0000fb90  0d 77 ec 11 20 2e 70 31  5f 66 69 72 65 5f 67 75  |.w.. .p1_fire_gu|
0000fba0  6e 0d 77 f6 15 20 4d 4f  56 20 20 20 20 20 52 30  |n.w.. MOV     R0|
0000fbb0  2c 20 23 31 32 39 0d 78  00 13 20 4d 4f 56 20 20  |, #129.x.. MOV  |
0000fbc0  20 20 20 52 31 2c 20 23  30 0d 78 0a 17 20 53 55  |   R1, #0.x.. SU|
0000fbd0  42 20 20 20 20 20 52 31  2c 52 31 2c 20 23 38 34  |B     R1,R1, #84|
0000fbe0  0d 78 14 15 20 4d 4f 56  20 20 20 20 20 52 32 2c  |.x.. MOV     R2,|
0000fbf0  20 23 32 35 35 0d 78 1e  16 20 53 57 49 20 20 20  | #255.x.. SWI   |
0000fc00  20 20 22 4f 53 5f 42 79  74 65 22 0d 78 28 15 20  |  "OS_Byte".x(. |
0000fc10  43 4d 50 20 20 20 20 20  52 31 2c 20 23 32 35 35  |CMP     R1, #255|
0000fc20  0d 78 32 1c 20 42 4e 45  20 20 20 20 20 70 31 5f  |.x2. BNE     p1_|
0000fc30  6e 6f 74 5f 66 69 72 65  5f 67 75 6e 0d 78 3c 18  |not_fire_gun.x<.|
0000fc40  20 4c 44 52 20 20 20 20  20 52 30 2c 20 70 31 5f  | LDR     R0, p1_|
0000fc50  66 69 72 65 0d 78 46 16  20 41 44 44 20 20 20 20  |fire.xF. ADD    |
0000fc60  20 52 30 2c 52 30 2c 20  23 31 0d 78 50 16 20 80  | R0,R0, #1.xP. .|
0000fc70  20 20 20 20 20 52 30 2c  52 30 2c 20 23 25 31 31  |     R0,R0, #%11|
0000fc80  0d 78 5a 18 20 53 54 52  20 20 20 20 20 52 30 2c  |.xZ. STR     R0,|
0000fc90  20 70 31 5f 66 69 72 65  0d 78 64 15 20 54 53 54  | p1_fire.xd. TST|
0000fca0  20 20 20 20 20 52 30 2c  20 23 25 31 31 0d 78 6e  |     R0, #%11.xn|
0000fcb0  1c 20 42 4e 45 20 20 20  20 20 70 31 5f 6e 6f 74  |. BNE     p1_not|
0000fcc0  5f 66 69 72 65 5f 67 75  6e 0d 78 78 13 20 4d 4f  |_fire_gun.xx. MO|
0000fcd0  56 20 20 20 20 20 52 30  2c 20 23 33 0d 78 82 1a  |V     R0, #3.x..|
0000fce0  20 4d 4f 56 20 20 20 20  20 52 31 2c 52 36 2c 20  | MOV     R1,R6, |
0000fcf0  4c 53 52 20 23 32 0d 78  8c 1a 20 4d 4f 56 20 20  |LSR #2.x.. MOV  |
0000fd00  20 20 20 52 32 2c 52 37  2c 20 4c 53 52 20 23 32  |   R2,R7, LSR #2|
0000fd10  0d 78 96 1a 20 41 44 44  20 20 20 20 20 52 31 2c  |.x.. ADD     R1,|
0000fd20  52 31 2c 20 23 78 65 78  74 25 0d 78 a0 1e 20 41  |R1, #xext%.x.. A|
0000fd30  44 44 20 20 20 20 20 52  32 2c 52 32 2c 20 23 79  |DD     R2,R2, #y|
0000fd40  65 78 74 25 2f 34 2a 32  0d 78 aa 18 20 52 53 42  |ext%/4*2.x.. RSB|
0000fd50  20 20 20 20 20 52 32 2c  52 32 2c 20 23 32 35 36  |     R2,R2, #256|
0000fd60  0d 78 b4 14 20 4d 4f 56  20 20 20 20 20 52 33 2c  |.x.. MOV     R3,|
0000fd70  20 23 38 30 0d 78 be 18  20 4c 44 52 20 20 20 20  | #80.x.. LDR    |
0000fd80  20 52 35 2c 20 61 64 72  5f 72 6e 64 0d 78 c8 14  | R5, adr_rnd.x..|
0000fd90  20 4c 44 52 20 20 20 20  20 52 35 2c 5b 52 35 5d  | LDR     R5,[R5]|
0000fda0  0d 78 d2 15 20 80 20 20  20 20 20 52 34 2c 52 35  |.x.. .     R4,R5|
0000fdb0  2c 20 23 31 35 0d 78 dc  16 20 53 55 42 20 20 20  |, #15.x.. SUB   |
0000fdc0  20 20 52 34 2c 52 34 2c  20 23 37 0d 78 e6 1a 20  |  R4,R4, #7.x.. |
0000fdd0  80 20 20 20 20 20 52 35  2c 52 35 2c 20 23 25 31  |.     R5,R5, #%1|
0000fde0  31 30 30 30 30 0d 78 f0  1a 20 4d 4f 56 20 20 20  |10000.x.. MOV   |
0000fdf0  20 20 52 35 2c 52 35 2c  20 4c 53 52 20 23 34 0d  |  R5,R5, LSR #4.|
0000fe00  78 fa 15 20 41 44 44 20  20 20 20 20 52 31 2c 52  |x.. ADD     R1,R|
0000fe10  31 2c 52 35 0d 79 04 13  20 4d 4f 56 20 20 20 20  |1,R5.y.. MOV    |
0000fe20  20 52 35 2c 20 23 31 0d  79 0e 13 20 54 53 54 20  | R5, #1.y.. TST |
0000fe30  20 20 20 20 52 38 2c 20  23 31 0d 79 18 16 20 52  |    R8, #1.y.. R|
0000fe40  53 42 4e 45 20 20 20 52  33 2c 52 33 2c 20 23 30  |SBNE   R3,R3, #0|
0000fe50  0d 79 22 1c 20 53 55 42  4e 45 20 20 20 52 31 2c  |.y". SUBNE   R1,|
0000fe60  52 31 2c 20 23 78 65 78  74 25 2b 32 0d 79 2c 15  |R1, #xext%+2.y,.|
0000fe70  20 42 4c 20 20 20 20 20  20 61 64 64 5f 63 65 6c  | BL      add_cel|
0000fe80  6c 0d 79 36 13 20 4d 4f  56 20 20 20 20 20 52 35  |l.y6. MOV     R5|
0000fe90  2c 20 23 31 0d 79 40 1c  20 4d 4f 56 20 20 20 20  |, #1.y@. MOV    |
0000fea0  20 52 30 2c 20 23 67 75  6e 5f 73 6f 75 6e 64 25  | R0, #gun_sound%|
0000feb0  0d 79 4a 14 20 4d 56 4e  20 20 20 20 20 52 31 2c  |.yJ. MVN     R1,|
0000fec0  20 23 31 30 0d 79 54 1b  20 4d 4f 56 20 20 20 20  | #10.yT. MOV    |
0000fed0  20 52 32 2c 20 23 67 75  6e 5f 72 61 74 65 25 0d  | R2, #gun_rate%.|
0000fee0  79 5e 13 20 4d 4f 56 20  20 20 20 20 52 33 2c 20  |y^. MOV     R3, |
0000fef0  23 30 0d 79 68 1c 20 53  57 49 20 20 20 20 20 22  |#0.yh. SWI     "|
0000ff00  53 6f 75 6e 64 5f 43 6f  6e 74 72 6f 6c 22 0d 79  |Sound_Control".y|
0000ff10  72 15 20 2e 70 31 5f 6e  6f 74 5f 66 69 72 65 5f  |r. .p1_not_fire_|
0000ff20  67 75 6e 0d 79 7c 18 20  42 20 20 20 20 20 20 20  |gun.y|. B       |
0000ff30  70 31 5f 65 6e 64 5f 66  69 72 65 0d 79 86 06 20  |p1_end_fire.y.. |
0000ff40  3a 0d 79 90 14 20 2e 70  31 5f 66 69 72 65 5f 6d  |:.y.. .p1_fire_m|
0000ff50  6f 72 74 61 72 0d 79 9a  15 20 4d 4f 56 20 20 20  |ortar.y.. MOV   |
0000ff60  20 20 52 30 2c 20 23 31  32 39 0d 79 a4 13 20 4d  |  R0, #129.y.. M|
0000ff70  4f 56 20 20 20 20 20 52  31 2c 20 23 30 0d 79 ae  |OV     R1, #0.y.|
0000ff80  17 20 53 55 42 20 20 20  20 20 52 31 2c 52 31 2c  |. SUB     R1,R1,|
0000ff90  20 23 38 34 0d 79 b8 15  20 4d 4f 56 20 20 20 20  | #84.y.. MOV    |
0000ffa0  20 52 32 2c 20 23 32 35  35 0d 79 c2 16 20 53 57  | R2, #255.y.. SW|
0000ffb0  49 20 20 20 20 20 22 4f  53 5f 42 79 74 65 22 0d  |I     "OS_Byte".|
0000ffc0  79 cc 15 20 43 4d 50 20  20 20 20 20 52 31 2c 20  |y.. CMP     R1, |
0000ffd0  23 32 35 35 0d 79 d6 1f  20 42 4e 45 20 20 20 20  |#255.y.. BNE    |
0000ffe0  20 70 31 5f 6e 6f 74 5f  66 69 72 65 5f 6d 6f 72  | p1_not_fire_mor|
0000fff0  74 61 72 0d 79 e0 18 20  4c 44 52 20 20 20 20 20  |tar.y.. LDR     |
00010000  52 30 2c 20 70 31 5f 66  69 72 65 0d 79 ea 16 20  |R0, p1_fire.y.. |
00010010  41 44 44 20 20 20 20 20  52 30 2c 52 30 2c 20 23  |ADD     R0,R0, #|
00010020  31 0d 79 f4 19 20 80 20  20 20 20 20 52 30 2c 52  |1.y.. .     R0,R|
00010030  30 2c 20 23 25 31 31 31  31 31 0d 79 fe 18 20 53  |0, #%11111.y.. S|
00010040  54 52 20 20 20 20 20 52  30 2c 20 70 31 5f 66 69  |TR     R0, p1_fi|
00010050  72 65 0d 7a 08 18 20 54  53 54 20 20 20 20 20 52  |re.z.. TST     R|
00010060  30 2c 20 23 25 31 31 31  31 31 0d 7a 12 1c 20 42  |0, #%11111.z.. B|
00010070  4e 45 20 20 20 20 20 70  31 5f 6e 6f 74 5f 66 69  |NE     p1_not_fi|
00010080  72 65 5f 67 75 6e 0d 7a  1c 13 20 4d 4f 56 20 20  |re_gun.z.. MOV  |
00010090  20 20 20 52 30 2c 20 23  34 0d 7a 26 1a 20 4d 4f  |   R0, #4.z&. MO|
000100a0  56 20 20 20 20 20 52 31  2c 52 36 2c 20 4c 53 52  |V     R1,R6, LSR|
000100b0  20 23 32 0d 7a 30 1a 20  4d 4f 56 20 20 20 20 20  | #2.z0. MOV     |
000100c0  52 32 2c 52 37 2c 20 4c  53 52 20 23 32 0d 7a 3a  |R2,R7, LSR #2.z:|
000100d0  1a 20 41 44 44 20 20 20  20 20 52 31 2c 52 31 2c  |. ADD     R1,R1,|
000100e0  20 23 78 65 78 74 25 0d  7a 44 1e 20 41 44 44 20  | #xext%.zD. ADD |
000100f0  20 20 20 20 52 32 2c 52  32 2c 20 23 79 65 78 74  |    R2,R2, #yext|
00010100  25 2f 34 2a 32 0d 7a 4e  18 20 52 53 42 20 20 20  |%/4*2.zN. RSB   |
00010110  20 20 52 32 2c 52 32 2c  20 23 32 35 36 0d 7a 58  |  R2,R2, #256.zX|
00010120  14 20 4d 4f 56 20 20 20  20 20 52 33 2c 20 23 33  |. MOV     R3, #3|
00010130  30 0d 7a 62 14 20 4d 4f  56 20 20 20 20 20 52 34  |0.zb. MOV     R4|
00010140  2c 20 23 34 30 0d 7a 6c  13 20 4d 4f 56 20 20 20  |, #40.zl. MOV   |
00010150  20 20 52 35 2c 20 23 31  0d 7a 76 13 20 54 53 54  |  R5, #1.zv. TST|
00010160  20 20 20 20 20 52 38 2c  20 23 31 0d 7a 80 16 20  |     R8, #1.z.. |
00010170  52 53 42 4e 45 20 20 20  52 33 2c 52 33 2c 20 23  |RSBNE   R3,R3, #|
00010180  30 0d 7a 8a 1a 20 53 55  42 4e 45 20 20 20 52 31  |0.z.. SUBNE   R1|
00010190  2c 52 31 2c 20 23 78 65  78 74 25 0d 7a 94 15 20  |,R1, #xext%.z.. |
000101a0  42 4c 20 20 20 20 20 20  61 64 64 5f 63 65 6c 6c  |BL      add_cell|
000101b0  0d 7a 9e 13 20 4d 4f 56  20 20 20 20 20 52 35 2c  |.z.. MOV     R5,|
000101c0  20 23 31 0d 7a a8 13 20  4d 4f 56 20 20 20 20 20  | #1.z.. MOV     |
000101d0  52 30 2c 20 23 31 0d 7a  b2 18 20 53 54 52 20 20  |R0, #1.z.. STR  |
000101e0  20 20 20 52 30 2c 20 70  31 5f 66 69 72 65 0d 7a  |   R0, p1_fire.z|
000101f0  bc 18 20 2e 70 31 5f 6e  6f 74 5f 66 69 72 65 5f  |.. .p1_not_fire_|
00010200  6d 6f 72 74 61 72 0d 7a  c6 18 20 42 20 20 20 20  |mortar.z.. B    |
00010210  20 20 20 70 31 5f 65 6e  64 5f 66 69 72 65 0d 7a  |   p1_end_fire.z|
00010220  d0 06 20 3a 0d 7a da 14  20 2e 70 31 5f 66 69 72  |.. :.z.. .p1_fir|
00010230  65 5f 68 6f 6d 69 6e 67  0d 7a e4 14 20 2e 70 31  |e_homing.z.. .p1|
00010240  5f 68 6f 6d 69 6e 67 5f  73 68 6f 74 0d 7a ee 15  |_homing_shot.z..|
00010250  20 4d 4f 56 20 20 20 20  20 52 30 2c 20 23 31 32  | MOV     R0, #12|
00010260  39 0d 7a f8 13 20 4d 4f  56 20 20 20 20 20 52 31  |9.z.. MOV     R1|
00010270  2c 20 23 30 0d 7b 02 17  20 53 55 42 20 20 20 20  |, #0.{.. SUB    |
00010280  20 52 31 2c 52 31 2c 20  23 38 34 0d 7b 0c 15 20  | R1,R1, #84.{.. |
00010290  4d 4f 56 20 20 20 20 20  52 32 2c 20 23 32 35 35  |MOV     R2, #255|
000102a0  0d 7b 16 16 20 53 57 49  20 20 20 20 20 22 4f 53  |.{.. SWI     "OS|
000102b0  5f 42 79 74 65 22 0d 7b  20 15 20 43 4d 50 20 20  |_Byte".{ . CMP  |
000102c0  20 20 20 52 31 2c 20 23  32 35 35 0d 7b 2a 1f 20  |   R1, #255.{*. |
000102d0  42 4e 45 20 20 20 20 20  70 31 5f 6e 6f 74 5f 66  |BNE     p1_not_f|
000102e0  69 72 65 5f 68 6f 6d 69  6e 67 0d 7b 34 18 20 4c  |ire_homing.{4. L|
000102f0  44 52 20 20 20 20 20 52  30 2c 20 70 31 5f 66 69  |DR     R0, p1_fi|
00010300  72 65 0d 7b 3e 16 20 41  44 44 20 20 20 20 20 52  |re.{>. ADD     R|
00010310  30 2c 52 30 2c 20 23 31  0d 7b 48 18 20 80 20 20  |0,R0, #1.{H. .  |
00010320  20 20 20 52 30 2c 52 30  2c 20 23 25 31 31 31 31  |   R0,R0, #%1111|
00010330  0d 7b 52 18 20 53 54 52  20 20 20 20 20 52 30 2c  |.{R. STR     R0,|
00010340  20 70 31 5f 66 69 72 65  0d 7b 5c 17 20 54 53 54  | p1_fire.{\. TST|
00010350  20 20 20 20 20 52 30 2c  20 23 25 31 31 31 31 0d  |     R0, #%1111.|
00010360  7b 66 1f 20 42 4e 45 20  20 20 20 20 70 31 5f 6e  |{f. BNE     p1_n|
00010370  6f 74 5f 66 69 72 65 5f  68 6f 6d 69 6e 67 0d 7b  |ot_fire_homing.{|
00010380  70 13 20 4d 4f 56 20 20  20 20 20 52 30 2c 20 23  |p. MOV     R0, #|
00010390  35 0d 7b 7a 1a 20 4d 4f  56 20 20 20 20 20 52 31  |5.{z. MOV     R1|
000103a0  2c 52 36 2c 20 4c 53 52  20 23 32 0d 7b 84 1a 20  |,R6, LSR #2.{.. |
000103b0  4d 4f 56 20 20 20 20 20  52 32 2c 52 37 2c 20 4c  |MOV     R2,R7, L|
000103c0  53 52 20 23 32 0d 7b 8e  1a 20 41 44 44 20 20 20  |SR #2.{.. ADD   |
000103d0  20 20 52 31 2c 52 31 2c  20 23 78 65 78 74 25 0d  |  R1,R1, #xext%.|
000103e0  7b 98 1c 20 41 44 44 20  20 20 20 20 52 32 2c 52  |{.. ADD     R2,R|
000103f0  32 2c 20 23 79 65 78 74  25 2f 32 0d 7b a2 18 20  |2, #yext%/2.{.. |
00010400  52 53 42 20 20 20 20 20  52 32 2c 52 32 2c 20 23  |RSB     R2,R2, #|
00010410  32 35 36 0d 7b ac 14 20  4d 4f 56 20 20 20 20 20  |256.{.. MOV     |
00010420  52 33 2c 20 23 36 34 0d  7b b6 18 20 4c 44 52 20  |R3, #64.{.. LDR |
00010430  20 20 20 20 52 34 2c 20  61 64 72 5f 72 6e 64 0d  |    R4, adr_rnd.|
00010440  7b c0 14 20 4c 44 52 20  20 20 20 20 52 34 2c 5b  |{.. LDR     R4,[|
00010450  52 34 5d 0d 7b ca 15 20  80 20 20 20 20 20 52 34  |R4].{.. .     R4|
00010460  2c 52 34 2c 20 23 31 35  0d 7b d4 16 20 53 55 42  |,R4, #15.{.. SUB|
00010470  20 20 20 20 20 52 34 2c  52 34 2c 20 23 37 0d 7b  |     R4,R4, #7.{|
00010480  de 39 20 4d 4f 56 20 20  20 20 20 52 35 2c 20 23  |.9 MOV     R5, #|
00010490  32 32 34 3c 3c 38 20 20  20 20 20 20 20 20 20 20  |224<<8          |
000104a0  3b 20 48 6f 6d 69 6e 67  20 69 6e 20 6f 6e 20 70  |; Homing in on p|
000104b0  6c 61 79 65 72 20 32 0d  7b e8 15 20 84 52 20 20  |layer 2.{.. .R  |
000104c0  20 20 20 52 35 2c 52 35  2c 20 23 31 0d 7b f2 13  |   R5,R5, #1.{..|
000104d0  20 54 53 54 20 20 20 20  20 52 38 2c 20 23 31 0d  | TST     R8, #1.|
000104e0  7b fc 16 20 52 53 42 4e  45 20 20 20 52 33 2c 52  |{.. RSBNE   R3,R|
000104f0  33 2c 20 23 30 0d 7c 06  1a 20 53 55 42 4e 45 20  |3, #0.|.. SUBNE |
00010500  20 20 52 31 2c 52 31 2c  20 23 78 65 78 74 25 0d  |  R1,R1, #xext%.|
00010510  7c 10 15 20 42 4c 20 20  20 20 20 20 61 64 64 5f  ||.. BL      add_|
00010520  63 65 6c 6c 0d 7c 1a 13  20 4d 4f 56 20 20 20 20  |cell.|.. MOV    |
00010530  20 52 35 2c 20 23 31 0d  7c 24 1f 20 4d 4f 56 20  | R5, #1.|$. MOV |
00010540  20 20 20 20 52 30 2c 20  23 68 6f 6d 69 6e 67 5f  |    R0, #homing_|
00010550  73 6f 75 6e 64 25 0d 7c  2e 14 20 4d 56 4e 20 20  |sound%.|.. MVN  |
00010560  20 20 20 52 31 2c 20 23  31 30 0d 7c 38 1e 20 4d  |   R1, #10.|8. M|
00010570  4f 56 20 20 20 20 20 52  32 2c 20 23 68 6f 6d 69  |OV     R2, #homi|
00010580  6e 67 5f 72 61 74 65 25  0d 7c 42 13 20 4d 4f 56  |ng_rate%.|B. MOV|
00010590  20 20 20 20 20 52 33 2c  20 23 30 0d 7c 4c 1c 20  |     R3, #0.|L. |
000105a0  53 57 49 20 20 20 20 20  22 53 6f 75 6e 64 5f 43  |SWI     "Sound_C|
000105b0  6f 6e 74 72 6f 6c 22 0d  7c 56 18 20 2e 70 31 5f  |ontrol".|V. .p1_|
000105c0  6e 6f 74 5f 66 69 72 65  5f 68 6f 6d 69 6e 67 0d  |not_fire_homing.|
000105d0  7c 60 18 20 42 20 20 20  20 20 20 20 70 31 5f 65  ||`. B       p1_e|
000105e0  6e 64 5f 66 69 72 65 0d  7c 6a 06 20 3a 0d 7c 74  |nd_fire.|j. :.|t|
000105f0  15 20 2e 70 31 5f 66 69  72 65 5f 73 65 65 6b 69  |. .p1_fire_seeki|
00010600  6e 67 0d 7c 7e 15 20 2e  70 31 5f 73 65 65 6b 69  |ng.|~. .p1_seeki|
00010610  6e 67 5f 73 68 6f 74 0d  7c 88 15 20 4d 4f 56 20  |ng_shot.|.. MOV |
00010620  20 20 20 20 52 30 2c 20  23 31 32 39 0d 7c 92 13  |    R0, #129.|..|
00010630  20 4d 4f 56 20 20 20 20  20 52 31 2c 20 23 30 0d  | MOV     R1, #0.|
00010640  7c 9c 17 20 53 55 42 20  20 20 20 20 52 31 2c 52  ||.. SUB     R1,R|
00010650  31 2c 20 23 38 34 0d 7c  a6 15 20 4d 4f 56 20 20  |1, #84.|.. MOV  |
00010660  20 20 20 52 32 2c 20 23  32 35 35 0d 7c b0 16 20  |   R2, #255.|.. |
00010670  53 57 49 20 20 20 20 20  22 4f 53 5f 42 79 74 65  |SWI     "OS_Byte|
00010680  22 0d 7c ba 15 20 43 4d  50 20 20 20 20 20 52 31  |".|.. CMP     R1|
00010690  2c 20 23 32 35 35 0d 7c  c4 20 20 42 4e 45 20 20  |, #255.|.  BNE  |
000106a0  20 20 20 70 31 5f 6e 6f  74 5f 66 69 72 65 5f 73  |   p1_not_fire_s|
000106b0  65 65 6b 69 6e 67 0d 7c  ce 13 20 4d 4f 56 20 20  |eeking.|.. MOV  |
000106c0  20 20 20 52 30 2c 20 23  36 0d 7c d8 1a 20 4d 4f  |   R0, #6.|.. MO|
000106d0  56 20 20 20 20 20 52 31  2c 52 36 2c 20 4c 53 52  |V     R1,R6, LSR|
000106e0  20 23 32 0d 7c e2 1a 20  4d 4f 56 20 20 20 20 20  | #2.|.. MOV     |
000106f0  52 32 2c 52 37 2c 20 4c  53 52 20 23 32 0d 7c ec  |R2,R7, LSR #2.|.|
00010700  1e 20 41 44 44 20 20 20  20 20 52 31 2c 52 31 2c  |. ADD     R1,R1,|
00010710  20 23 78 65 78 74 25 2a  33 2f 32 0d 7c f6 1e 20  | #xext%*3/2.|.. |
00010720  41 44 44 20 20 20 20 20  52 32 2c 52 32 2c 20 23  |ADD     R2,R2, #|
00010730  79 65 78 74 25 2f 34 2a  32 0d 7d 00 18 20 52 53  |yext%/4*2.}.. RS|
00010740  42 20 20 20 20 20 52 32  2c 52 32 2c 20 23 32 35  |B     R2,R2, #25|
00010750  36 0d 7d 0a 14 20 4d 4f  56 20 20 20 20 20 52 33  |6.}.. MOV     R3|
00010760  2c 20 23 33 32 0d 7d 14  13 20 4d 4f 56 20 20 20  |, #32.}.. MOV   |
00010770  20 20 52 34 2c 20 23 30  0d 7d 1e 3a 20 4d 4f 56  |  R4, #0.}.: MOV|
00010780  20 20 20 20 20 52 35 2c  20 23 31 20 20 20 20 20  |     R5, #1     |
00010790  20 20 20 20 20 20 20 20  20 20 20 3b 20 48 6f 6d  |           ; Hom|
000107a0  69 6e 67 20 69 6e 20 6f  6e 20 70 6c 61 79 65 72  |ing in on player|
000107b0  20 32 0d 7d 28 13 20 54  53 54 20 20 20 20 20 52  | 2.}(. TST     R|
000107c0  38 2c 20 23 31 0d 7d 32  16 20 52 53 42 4e 45 20  |8, #1.}2. RSBNE |
000107d0  20 20 52 33 2c 52 33 2c  20 23 30 0d 7d 3c 1c 20  |  R3,R3, #0.}<. |
000107e0  53 55 42 4e 45 20 20 20  52 31 2c 52 31 2c 20 23  |SUBNE   R1,R1, #|
000107f0  78 65 78 74 25 2a 32 0d  7d 46 15 20 42 4c 20 20  |xext%*2.}F. BL  |
00010800  20 20 20 20 61 64 64 5f  63 65 6c 6c 0d 7d 50 13  |    add_cell.}P.|
00010810  20 4d 4f 56 20 20 20 20  20 52 35 2c 20 23 31 0d  | MOV     R5, #1.|
00010820  7d 5a 13 20 4d 4f 56 20  20 20 20 20 52 39 2c 20  |}Z. MOV     R9, |
00010830  23 32 0d 7d 64 1f 20 4c  44 52 20 20 20 20 20 52  |#2.}d. LDR     R|
00010840  31 30 2c 20 61 64 72 5f  70 31 5f 77 65 61 70 6f  |10, adr_p1_weapo|
00010850  6e 0d 7d 6e 15 20 53 54  52 20 20 20 20 20 52 39  |n.}n. STR     R9|
00010860  2c 5b 52 31 30 5d 0d 7d  78 20 20 4d 4f 56 20 20  |,[R10].}x  MOV  |
00010870  20 20 20 52 30 2c 20 23  73 65 65 6b 69 6e 67 5f  |   R0, #seeking_|
00010880  73 6f 75 6e 64 25 0d 7d  82 14 20 4d 56 4e 20 20  |sound%.}.. MVN  |
00010890  20 20 20 52 31 2c 20 23  31 34 0d 7d 8c 1f 20 4d  |   R1, #14.}.. M|
000108a0  4f 56 20 20 20 20 20 52  32 2c 20 23 73 65 65 6b  |OV     R2, #seek|
000108b0  69 6e 67 5f 72 61 74 65  25 0d 7d 96 13 20 4d 4f  |ing_rate%.}.. MO|
000108c0  56 20 20 20 20 20 52 33  2c 20 23 30 0d 7d a0 1c  |V     R3, #0.}..|
000108d0  20 53 57 49 20 20 20 20  20 22 53 6f 75 6e 64 5f  | SWI     "Sound_|
000108e0  43 6f 6e 74 72 6f 6c 22  0d 7d aa 13 20 4d 4f 56  |Control".}.. MOV|
000108f0  20 20 20 20 20 52 30 2c  20 23 31 0d 7d b4 18 20  |     R0, #1.}.. |
00010900  53 54 52 20 20 20 20 20  52 30 2c 20 70 31 5f 66  |STR     R0, p1_f|
00010910  69 72 65 0d 7d be 19 20  2e 70 31 5f 6e 6f 74 5f  |ire.}.. .p1_not_|
00010920  66 69 72 65 5f 73 65 65  6b 69 6e 67 0d 7d c8 18  |fire_seeking.}..|
00010930  20 42 20 20 20 20 20 20  20 70 31 5f 65 6e 64 5f  | B       p1_end_|
00010940  66 69 72 65 0d 7d d2 06  20 3a 0d 7d dc 16 20 2e  |fire.}.. :.}.. .|
00010950  70 31 5f 66 69 72 65 5f  76 65 72 74 69 63 61 6c  |p1_fire_vertical|
00010960  0d 7d e6 18 20 4c 44 52  20 20 20 20 20 52 30 2c  |.}.. LDR     R0,|
00010970  20 70 31 5f 66 69 72 65  0d 7d f0 13 20 43 4d 50  | p1_fire.}.. CMP|
00010980  20 20 20 20 20 52 30 2c  20 23 30 0d 7d fa 1d 20  |     R0, #0.}.. |
00010990  42 45 51 20 20 20 20 20  70 31 5f 76 65 72 74 69  |BEQ     p1_verti|
000109a0  63 61 6c 5f 73 68 6f 74  0d 7e 04 15 20 4d 4f 56  |cal_shot.~.. MOV|
000109b0  20 20 20 20 20 52 30 2c  20 23 31 32 39 0d 7e 0e  |     R0, #129.~.|
000109c0  13 20 4d 4f 56 20 20 20  20 20 52 31 2c 20 23 30  |. MOV     R1, #0|
000109d0  0d 7e 18 17 20 53 55 42  20 20 20 20 20 52 31 2c  |.~.. SUB     R1,|
000109e0  52 31 2c 20 23 38 34 0d  7e 22 15 20 4d 4f 56 20  |R1, #84.~". MOV |
000109f0  20 20 20 20 52 32 2c 20  23 32 35 35 0d 7e 2c 16  |    R2, #255.~,.|
00010a00  20 53 57 49 20 20 20 20  20 22 4f 53 5f 42 79 74  | SWI     "OS_Byt|
00010a10  65 22 0d 7e 36 15 20 43  4d 50 20 20 20 20 20 52  |e".~6. CMP     R|
00010a20  31 2c 20 23 32 35 35 0d  7e 40 13 20 4d 4f 56 4e  |1, #255.~@. MOVN|
00010a30  45 20 20 20 52 30 2c 20  23 30 0d 7e 4a 18 20 53  |E   R0, #0.~J. S|
00010a40  54 52 4e 45 20 20 20 52  30 2c 20 70 31 5f 66 69  |TRNE   R0, p1_fi|
00010a50  72 65 0d 7e 54 21 20 42  20 20 20 20 20 20 20 70  |re.~T! B       p|
00010a60  31 5f 6e 6f 74 5f 66 69  72 65 5f 76 65 72 74 69  |1_not_fire_verti|
00010a70  63 61 6c 0d 7e 5e 16 20  2e 70 31 5f 76 65 72 74  |cal.~^. .p1_vert|
00010a80  69 63 61 6c 5f 73 68 6f  74 0d 7e 68 15 20 4d 4f  |ical_shot.~h. MO|
00010a90  56 20 20 20 20 20 52 30  2c 20 23 31 32 39 0d 7e  |V     R0, #129.~|
00010aa0  72 13 20 4d 4f 56 20 20  20 20 20 52 31 2c 20 23  |r. MOV     R1, #|
00010ab0  30 0d 7e 7c 17 20 53 55  42 20 20 20 20 20 52 31  |0.~|. SUB     R1|
00010ac0  2c 52 31 2c 20 23 38 34  0d 7e 86 15 20 4d 4f 56  |,R1, #84.~.. MOV|
00010ad0  20 20 20 20 20 52 32 2c  20 23 32 35 35 0d 7e 90  |     R2, #255.~.|
00010ae0  16 20 53 57 49 20 20 20  20 20 22 4f 53 5f 42 79  |. SWI     "OS_By|
00010af0  74 65 22 0d 7e 9a 15 20  43 4d 50 20 20 20 20 20  |te".~.. CMP     |
00010b00  52 31 2c 20 23 32 35 35  0d 7e a4 21 20 42 4e 45  |R1, #255.~.! BNE|
00010b10  20 20 20 20 20 70 31 5f  6e 6f 74 5f 66 69 72 65  |     p1_not_fire|
00010b20  5f 76 65 72 74 69 63 61  6c 0d 7e ae 13 20 4d 4f  |_vertical.~.. MO|
00010b30  56 20 20 20 20 20 52 30  2c 20 23 37 0d 7e b8 1a  |V     R0, #7.~..|
00010b40  20 4d 4f 56 20 20 20 20  20 52 31 2c 52 36 2c 20  | MOV     R1,R6, |
00010b50  4c 53 52 20 23 32 0d 7e  c2 1a 20 4d 4f 56 20 20  |LSR #2.~.. MOV  |
00010b60  20 20 20 52 32 2c 52 37  2c 20 4c 53 52 20 23 32  |   R2,R7, LSR #2|
00010b70  0d 7e cc 1a 20 41 44 44  20 20 20 20 20 52 31 2c  |.~.. ADD     R1,|
00010b80  52 31 2c 20 23 78 65 78  74 25 0d 7e d6 1e 20 41  |R1, #xext%.~.. A|
00010b90  44 44 20 20 20 20 20 52  32 2c 52 32 2c 20 23 79  |DD     R2,R2, #y|
00010ba0  65 78 74 25 2f 34 2a 32  0d 7e e0 18 20 52 53 42  |ext%/4*2.~.. RSB|
00010bb0  20 20 20 20 20 52 32 2c  52 32 2c 20 23 32 35 36  |     R2,R2, #256|
00010bc0  0d 7e ea 13 20 4d 4f 56  20 20 20 20 20 52 33 2c  |.~.. MOV     R3,|
00010bd0  20 23 30 0d 7e f4 14 20  4d 4f 56 20 20 20 20 20  | #0.~.. MOV     |
00010be0  52 34 2c 20 23 36 34 0d  7e fe 13 20 4d 4f 56 20  |R4, #64.~.. MOV |
00010bf0  20 20 20 20 52 35 2c 20  23 31 0d 7f 08 13 20 54  |    R5, #1.... T|
00010c00  53 54 20 20 20 20 20 52  38 2c 20 23 31 0d 7f 12  |ST     R8, #1...|
00010c10  16 20 52 53 42 4e 45 20  20 20 52 33 2c 52 33 2c  |. RSBNE   R3,R3,|
00010c20  20 23 30 0d 7f 1c 1a 20  53 55 42 4e 45 20 20 20  | #0.... SUBNE   |
00010c30  52 31 2c 52 31 2c 20 23  78 65 78 74 25 0d 7f 26  |R1,R1, #xext%..&|
00010c40  15 20 42 4c 20 20 20 20  20 20 61 64 64 5f 63 65  |. BL      add_ce|
00010c50  6c 6c 0d 7f 30 13 20 4d  4f 56 20 20 20 20 20 52  |ll..0. MOV     R|
00010c60  35 2c 20 23 32 0d 7f 3a  13 20 4d 4f 56 20 20 20  |5, #2..:. MOV   |
00010c70  20 20 52 30 2c 20 23 31  0d 7f 44 18 20 53 54 52  |  R0, #1..D. STR|
00010c80  20 20 20 20 20 52 30 2c  20 70 31 5f 66 69 72 65  |     R0, p1_fire|
00010c90  0d 7f 4e 13 20 4d 4f 56  20 20 20 20 20 52 30 2c  |..N. MOV     R0,|
00010ca0  20 23 37 0d 7f 58 14 20  4d 56 4e 20 20 20 20 20  | #7..X. MVN     |
00010cb0  52 31 2c 20 23 31 34 0d  7f 62 17 20 4d 4f 56 20  |R1, #14..b. MOV |
00010cc0  20 20 20 20 52 32 2c 20  23 31 30 32 34 30 0d 7f  |    R2, #10240..|
00010cd0  6c 13 20 4d 4f 56 20 20  20 20 20 52 33 2c 20 23  |l. MOV     R3, #|
00010ce0  30 0d 7f 76 1c 20 53 57  49 20 20 20 20 20 22 53  |0..v. SWI     "S|
00010cf0  6f 75 6e 64 5f 43 6f 6e  74 72 6f 6c 22 0d 7f 80  |ound_Control"...|
00010d00  1a 20 2e 70 31 5f 6e 6f  74 5f 66 69 72 65 5f 76  |. .p1_not_fire_v|
00010d10  65 72 74 69 63 61 6c 0d  7f 8a 18 20 42 20 20 20  |ertical.... B   |
00010d20  20 20 20 20 70 31 5f 65  6e 64 5f 66 69 72 65 0d  |    p1_end_fire.|
00010d30  7f 94 06 20 3a 0d 7f 9e  13 20 2e 70 31 5f 66 69  |... :.... .p1_fi|
00010d40  72 65 5f 66 6c 61 6d 65  0d 7f a8 13 20 2e 70 31  |re_flame.... .p1|
00010d50  5f 66 6c 61 6d 65 5f 73  68 6f 74 0d 7f b2 15 20  |_flame_shot.... |
00010d60  4d 4f 56 20 20 20 20 20  52 30 2c 20 23 31 32 39  |MOV     R0, #129|
00010d70  0d 7f bc 13 20 4d 4f 56  20 20 20 20 20 52 31 2c  |.... MOV     R1,|
00010d80  20 23 30 0d 7f c6 17 20  53 55 42 20 20 20 20 20  | #0.... SUB     |
00010d90  52 31 2c 52 31 2c 20 23  38 34 0d 7f d0 15 20 4d  |R1,R1, #84.... M|
00010da0  4f 56 20 20 20 20 20 52  32 2c 20 23 32 35 35 0d  |OV     R2, #255.|
00010db0  7f da 16 20 53 57 49 20  20 20 20 20 22 4f 53 5f  |... SWI     "OS_|
00010dc0  42 79 74 65 22 0d 7f e4  15 20 43 4d 50 20 20 20  |Byte".... CMP   |
00010dd0  20 20 52 31 2c 20 23 32  35 35 0d 7f ee 1e 20 42  |  R1, #255.... B|
00010de0  4e 45 20 20 20 20 20 70  31 5f 6e 6f 74 5f 66 69  |NE     p1_not_fi|
00010df0  72 65 5f 66 6c 61 6d 65  0d 7f f8 14 20 4d 4f 56  |re_flame.... MOV|
00010e00  20 20 20 20 20 52 30 2c  20 23 31 30 0d 80 02 1a  |     R0, #10....|
00010e10  20 4d 4f 56 20 20 20 20  20 52 31 2c 52 36 2c 20  | MOV     R1,R6, |
00010e20  4c 53 52 20 23 32 0d 80  0c 1a 20 4d 4f 56 20 20  |LSR #2.... MOV  |
00010e30  20 20 20 52 32 2c 52 37  2c 20 4c 53 52 20 23 32  |   R2,R7, LSR #2|
00010e40  0d 80 16 1a 20 41 44 44  20 20 20 20 20 52 31 2c  |.... ADD     R1,|
00010e50  52 31 2c 20 23 78 65 78  74 25 0d 80 20 1e 20 41  |R1, #xext%.. . A|
00010e60  44 44 20 20 20 20 20 52  32 2c 52 32 2c 20 23 79  |DD     R2,R2, #y|
00010e70  65 78 74 25 2f 34 2a 32  0d 80 2a 18 20 52 53 42  |ext%/4*2..*. RSB|
00010e80  20 20 20 20 20 52 32 2c  52 32 2c 20 23 32 35 36  |     R2,R2, #256|
00010e90  0d 80 34 14 20 4d 4f 56  20 20 20 20 20 52 33 2c  |..4. MOV     R3,|
00010ea0  20 23 36 34 0d 80 3e 18  20 4c 44 52 20 20 20 20  | #64..>. LDR    |
00010eb0  20 52 34 2c 20 61 64 72  5f 72 6e 64 0d 80 48 14  | R4, adr_rnd..H.|
00010ec0  20 4c 44 52 20 20 20 20  20 52 34 2c 5b 52 34 5d  | LDR     R4,[R4]|
00010ed0  0d 80 52 14 20 80 20 20  20 20 20 52 34 2c 52 34  |..R. .     R4,R4|
00010ee0  2c 20 23 37 0d 80 5c 16  20 53 55 42 20 20 20 20  |, #7..\. SUB    |
00010ef0  20 52 34 2c 52 34 2c 20  23 31 0d 80 66 13 20 4d  | R4,R4, #1..f. M|
00010f00  4f 56 20 20 20 20 20 52  35 2c 20 23 31 0d 80 70  |OV     R5, #1..p|
00010f10  13 20 54 53 54 20 20 20  20 20 52 38 2c 20 23 31  |. TST     R8, #1|
00010f20  0d 80 7a 16 20 52 53 42  4e 45 20 20 20 52 33 2c  |..z. RSBNE   R3,|
00010f30  52 33 2c 20 23 30 0d 80  84 1a 20 53 55 42 4e 45  |R3, #0.... SUBNE|
00010f40  20 20 20 52 31 2c 52 31  2c 20 23 78 65 78 74 25  |   R1,R1, #xext%|
00010f50  0d 80 8e 15 20 42 4c 20  20 20 20 20 20 61 64 64  |.... BL      add|
00010f60  5f 63 65 6c 6c 0d 80 98  17 20 2e 70 31 5f 6e 6f  |_cell.... .p1_no|
00010f70  74 5f 66 69 72 65 5f 66  6c 61 6d 65 0d 80 a2 18  |t_fire_flame....|
00010f80  20 42 20 20 20 20 20 20  20 70 31 5f 65 6e 64 5f  | B       p1_end_|
00010f90  66 69 72 65 0d 80 ac 06  20 3a 0d 80 b6 15 20 2e  |fire.... :.... .|
00010fa0  70 31 5f 66 69 72 65 5f  63 6c 75 73 74 65 72 0d  |p1_fire_cluster.|
00010fb0  80 c0 15 20 4d 4f 56 20  20 20 20 20 52 30 2c 20  |... MOV     R0, |
00010fc0  23 31 32 39 0d 80 ca 13  20 4d 4f 56 20 20 20 20  |#129.... MOV    |
00010fd0  20 52 31 2c 20 23 30 0d  80 d4 17 20 53 55 42 20  | R1, #0.... SUB |
00010fe0  20 20 20 20 52 31 2c 52  31 2c 20 23 38 34 0d 80  |    R1,R1, #84..|
00010ff0  de 15 20 4d 4f 56 20 20  20 20 20 52 32 2c 20 23  |.. MOV     R2, #|
00011000  32 35 35 0d 80 e8 16 20  53 57 49 20 20 20 20 20  |255.... SWI     |
00011010  22 4f 53 5f 42 79 74 65  22 0d 80 f2 15 20 43 4d  |"OS_Byte".... CM|
00011020  50 20 20 20 20 20 52 31  2c 20 23 32 35 35 0d 80  |P     R1, #255..|
00011030  fc 20 20 42 4e 45 20 20  20 20 20 70 31 5f 6e 6f  |.  BNE     p1_no|
00011040  74 5f 66 69 72 65 5f 63  6c 75 73 74 65 72 0d 81  |t_fire_cluster..|
00011050  06 19 3b 20 4c 44 52 20  20 20 20 20 52 30 2c 20  |..; LDR     R0, |
00011060  70 31 5f 66 69 72 65 0d  81 10 17 3b 20 41 44 44  |p1_fire....; ADD|
00011070  20 20 20 20 20 52 30 2c  52 30 2c 20 23 31 0d 81  |     R0,R0, #1..|
00011080  1a 15 3b 20 43 4d 50 20  20 20 20 20 52 30 2c 20  |..; CMP     R0, |
00011090  23 32 35 0d 81 24 14 3b  20 4d 4f 56 47 54 20 20  |#25..$.; MOVGT  |
000110a0  20 52 30 2c 20 23 30 0d  81 2e 19 3b 20 53 54 52  | R0, #0....; STR|
000110b0  20 20 20 20 20 52 30 2c  20 70 31 5f 66 69 72 65  |     R0, p1_fire|
000110c0  0d 81 38 14 3b 20 43 4d  50 20 20 20 20 20 52 30  |..8.; CMP     R0|
000110d0  2c 20 23 30 0d 81 42 21  3b 20 42 4e 45 20 20 20  |, #0..B!; BNE   |
000110e0  20 20 70 31 5f 6e 6f 74  5f 66 69 72 65 5f 63 6c  |  p1_not_fire_cl|
000110f0  75 73 74 65 72 0d 81 4c  14 20 4d 4f 56 20 20 20  |uster..L. MOV   |
00011100  20 20 52 30 2c 20 23 31  33 0d 81 56 1a 20 4d 4f  |  R0, #13..V. MO|
00011110  56 20 20 20 20 20 52 31  2c 52 36 2c 20 4c 53 52  |V     R1,R6, LSR|
00011120  20 23 32 0d 81 60 1a 20  4d 4f 56 20 20 20 20 20  | #2..`. MOV     |
00011130  52 32 2c 52 37 2c 20 4c  53 52 20 23 32 0d 81 6a  |R2,R7, LSR #2..j|
00011140  1c 20 41 44 44 20 20 20  20 20 52 31 2c 52 31 2c  |. ADD     R1,R1,|
00011150  20 23 78 65 78 74 25 2b  31 0d 81 74 1e 20 41 44  | #xext%+1..t. AD|
00011160  44 20 20 20 20 20 52 32  2c 52 32 2c 20 23 79 65  |D     R2,R2, #ye|
00011170  78 74 25 2f 34 2a 32 0d  81 7e 18 20 52 53 42 20  |xt%/4*2..~. RSB |
00011180  20 20 20 20 52 32 2c 52  32 2c 20 23 32 35 36 0d  |    R2,R2, #256.|
00011190  81 88 15 20 4d 4f 56 20  20 20 20 20 52 33 2c 20  |... MOV     R3, |
000111a0  23 37 36 38 0d 81 92 15  20 4d 4f 56 20 20 20 20  |#768.... MOV    |
000111b0  20 52 34 2c 20 23 31 32  38 0d 81 9c 21 20 4d 4f  | R4, #128...! MO|
000111c0  56 20 20 20 20 20 52 35  2c 20 23 62 6f 6d 62 5f  |V     R5, #bomb_|
000111d0  70 61 75 73 65 25 2a 2e  32 35 0d 81 a6 13 20 54  |pause%*.25.... T|
000111e0  53 54 20 20 20 20 20 52  38 2c 20 23 31 0d 81 b0  |ST     R8, #1...|
000111f0  16 20 52 53 42 4e 45 20  20 20 52 33 2c 52 33 2c  |. RSBNE   R3,R3,|
00011200  20 23 30 0d 81 ba 1c 20  53 55 42 4e 45 20 20 20  | #0.... SUBNE   |
00011210  52 31 2c 52 31 2c 20 23  78 65 78 74 25 2b 32 0d  |R1,R1, #xext%+2.|
00011220  81 c4 15 20 42 4c 20 20  20 20 20 20 61 64 64 5f  |... BL      add_|
00011230  63 65 6c 6c 0d 81 ce 18  20 53 55 42 20 20 20 20  |cell.... SUB    |
00011240  20 52 33 2c 52 33 2c 20  23 31 32 38 0d 81 d8 18  | R3,R3, #128....|
00011250  20 41 44 44 20 20 20 20  20 52 34 2c 52 34 2c 20  | ADD     R4,R4, |
00011260  23 31 32 38 0d 81 e2 17  20 41 44 44 20 20 20 20  |#128.... ADD    |
00011270  20 52 35 2c 52 35 2c 20  23 33 32 0d 81 ec 15 20  | R5,R5, #32.... |
00011280  42 4c 20 20 20 20 20 20  61 64 64 5f 63 65 6c 6c  |BL      add_cell|
00011290  0d 81 f6 18 20 53 55 42  20 20 20 20 20 52 33 2c  |.... SUB     R3,|
000112a0  52 33 2c 20 23 31 32 38  0d 82 00 18 20 41 44 44  |R3, #128.... ADD|
000112b0  20 20 20 20 20 52 34 2c  52 34 2c 20 23 31 32 38  |     R4,R4, #128|
000112c0  0d 82 0a 17 20 41 44 44  20 20 20 20 20 52 35 2c  |.... ADD     R5,|
000112d0  52 35 2c 20 23 33 32 0d  82 14 15 20 42 4c 20 20  |R5, #32.... BL  |
000112e0  20 20 20 20 61 64 64 5f  63 65 6c 6c 0d 82 1e 13  |    add_cell....|
000112f0  20 4d 4f 56 20 20 20 20  20 52 39 2c 20 23 32 0d  | MOV     R9, #2.|
00011300  82 28 1f 20 4c 44 52 20  20 20 20 20 52 31 30 2c  |.(. LDR     R10,|
00011310  20 61 64 72 5f 70 31 5f  77 65 61 70 6f 6e 0d 82  | adr_p1_weapon..|
00011320  32 15 20 53 54 52 20 20  20 20 20 52 39 2c 5b 52  |2. STR     R9,[R|
00011330  31 30 5d 0d 82 3c 13 20  4d 4f 56 20 20 20 20 20  |10]..<. MOV     |
00011340  52 35 2c 20 23 31 0d 82  46 13 20 4d 4f 56 20 20  |R5, #1..F. MOV  |
00011350  20 20 20 52 30 2c 20 23  31 0d 82 50 18 20 53 54  |   R0, #1..P. ST|
00011360  52 20 20 20 20 20 52 30  2c 20 70 31 5f 66 69 72  |R     R0, p1_fir|
00011370  65 0d 82 5a 19 20 2e 70  31 5f 6e 6f 74 5f 66 69  |e..Z. .p1_not_fi|
00011380  72 65 5f 63 6c 75 73 74  65 72 0d 82 64 18 20 42  |re_cluster..d. B|
00011390  20 20 20 20 20 20 20 70  31 5f 65 6e 64 5f 66 69  |       p1_end_fi|
000113a0  72 65 0d 82 6e 06 20 3a  0d 82 78 12 20 2e 70 31  |re..n. :..x. .p1|
000113b0  5f 66 69 72 65 5f 62 6f  6d 62 0d 82 82 15 20 4d  |_fire_bomb.... M|
000113c0  4f 56 20 20 20 20 20 52  30 2c 20 23 31 32 39 0d  |OV     R0, #129.|
000113d0  82 8c 13 20 4d 4f 56 20  20 20 20 20 52 31 2c 20  |... MOV     R1, |
000113e0  23 30 0d 82 96 17 20 53  55 42 20 20 20 20 20 52  |#0.... SUB     R|
000113f0  31 2c 52 31 2c 20 23 38  34 0d 82 a0 15 20 4d 4f  |1,R1, #84.... MO|
00011400  56 20 20 20 20 20 52 32  2c 20 23 32 35 35 0d 82  |V     R2, #255..|
00011410  aa 16 20 53 57 49 20 20  20 20 20 22 4f 53 5f 42  |.. SWI     "OS_B|
00011420  79 74 65 22 0d 82 b4 15  20 43 4d 50 20 20 20 20  |yte".... CMP    |
00011430  20 52 31 2c 20 23 32 35  35 0d 82 be 1d 20 42 4e  | R1, #255.... BN|
00011440  45 20 20 20 20 20 70 31  5f 6e 6f 74 5f 66 69 72  |E     p1_not_fir|
00011450  65 5f 62 6f 6d 62 0d 82  c8 18 20 4c 44 52 20 20  |e_bomb.... LDR  |
00011460  20 20 20 52 30 2c 20 70  31 5f 66 69 72 65 0d 82  |   R0, p1_fire..|
00011470  d2 16 20 41 44 44 20 20  20 20 20 52 30 2c 52 30  |.. ADD     R0,R0|
00011480  2c 20 23 31 0d 82 dc 14  20 43 4d 50 20 20 20 20  |, #1.... CMP    |
00011490  20 52 30 2c 20 23 31 30  0d 82 e6 13 20 4d 4f 56  | R0, #10.... MOV|
000114a0  47 54 20 20 20 52 30 2c  20 23 30 0d 82 f0 18 20  |GT   R0, #0.... |
000114b0  53 54 52 20 20 20 20 20  52 30 2c 20 70 31 5f 66  |STR     R0, p1_f|
000114c0  69 72 65 0d 82 fa 13 20  43 4d 50 20 20 20 20 20  |ire.... CMP     |
000114d0  52 30 2c 20 23 30 0d 83  04 1d 20 42 4e 45 20 20  |R0, #0.... BNE  |
000114e0  20 20 20 70 31 5f 6e 6f  74 5f 66 69 72 65 5f 62  |   p1_not_fire_b|
000114f0  6f 6d 62 0d 83 0e 14 20  4d 4f 56 20 20 20 20 20  |omb.... MOV     |
00011500  52 30 2c 20 23 31 32 0d  83 18 1a 20 4d 4f 56 20  |R0, #12.... MOV |
00011510  20 20 20 20 52 31 2c 52  36 2c 20 4c 53 52 20 23  |    R1,R6, LSR #|
00011520  32 0d 83 22 1a 20 4d 4f  56 20 20 20 20 20 52 32  |2..". MOV     R2|
00011530  2c 52 37 2c 20 4c 53 52  20 23 32 0d 83 2c 1c 20  |,R7, LSR #2..,. |
00011540  41 44 44 20 20 20 20 20  52 31 2c 52 31 2c 20 23  |ADD     R1,R1, #|
00011550  78 65 78 74 25 2b 31 0d  83 36 1e 20 41 44 44 20  |xext%+1..6. ADD |
00011560  20 20 20 20 52 32 2c 52  32 2c 20 23 79 65 78 74  |    R2,R2, #yext|
00011570  25 2f 34 2a 32 0d 83 40  18 20 52 53 42 20 20 20  |%/4*2..@. RSB   |
00011580  20 20 52 32 2c 52 32 2c  20 23 32 35 36 0d 83 4a  |  R2,R2, #256..J|
00011590  14 20 4d 4f 56 20 20 20  20 20 52 33 2c 20 23 34  |. MOV     R3, #4|
000115a0  30 0d 83 54 14 20 4d 4f  56 20 20 20 20 20 52 34  |0..T. MOV     R4|
000115b0  2c 20 23 34 30 0d 83 5e  1d 20 4d 4f 56 20 20 20  |, #40..^. MOV   |
000115c0  20 20 52 35 2c 20 23 62  6f 6d 62 5f 70 61 75 73  |  R5, #bomb_paus|
000115d0  65 25 0d 83 68 13 20 54  53 54 20 20 20 20 20 52  |e%..h. TST     R|
000115e0  38 2c 20 23 31 0d 83 72  16 20 52 53 42 4e 45 20  |8, #1..r. RSBNE |
000115f0  20 20 52 33 2c 52 33 2c  20 23 30 0d 83 7c 1c 20  |  R3,R3, #0..|. |
00011600  53 55 42 4e 45 20 20 20  52 31 2c 52 31 2c 20 23  |SUBNE   R1,R1, #|
00011610  78 65 78 74 25 2b 32 0d  83 86 15 20 42 4c 20 20  |xext%+2.... BL  |
00011620  20 20 20 20 61 64 64 5f  63 65 6c 6c 0d 83 90 13  |    add_cell....|
00011630  20 4d 4f 56 20 20 20 20  20 52 35 2c 20 23 31 0d  | MOV     R5, #1.|
00011640  83 9a 13 20 4d 4f 56 20  20 20 20 20 52 30 2c 20  |... MOV     R0, |
00011650  23 31 0d 83 a4 18 20 53  54 52 20 20 20 20 20 52  |#1.... STR     R|
00011660  30 2c 20 70 31 5f 66 69  72 65 0d 83 ae 16 20 2e  |0, p1_fire.... .|
00011670  70 31 5f 6e 6f 74 5f 66  69 72 65 5f 62 6f 6d 62  |p1_not_fire_bomb|
00011680  0d 83 b8 18 20 42 20 20  20 20 20 20 20 70 31 5f  |.... B       p1_|
00011690  65 6e 64 5f 66 69 72 65  0d 83 c2 06 20 3a 0d 83  |end_fire.... :..|
000116a0  cc 11 20 2e 70 31 5f 65  6e 64 5f 66 69 72 65 0d  |.. .p1_end_fire.|
000116b0  83 d6 06 20 3a 0d 83 e0  13 20 4d 4f 56 20 20 20  |... :.... MOV   |
000116c0  20 20 52 30 2c 20 23 31  0d 83 ea 1a 20 4d 4f 56  |  R0, #1.... MOV|
000116d0  20 20 20 20 20 52 31 2c  52 36 2c 20 4c 53 52 20  |     R1,R6, LSR |
000116e0  23 32 0d 83 f4 1a 20 4d  4f 56 20 20 20 20 20 52  |#2.... MOV     R|
000116f0  32 2c 52 37 2c 20 4c 53  52 20 23 32 0d 83 fe 13  |2,R7, LSR #2....|
00011700  20 54 53 54 20 20 20 20  20 52 38 2c 20 23 31 0d  | TST     R8, #1.|
00011710  84 08 16 20 41 44 44 45  51 20 20 20 52 31 2c 52  |... ADDEQ   R1,R|
00011720  31 2c 20 23 31 0d 84 12  1c 20 41 44 44 4e 45 20  |1, #1.... ADDNE |
00011730  20 20 52 31 2c 52 31 2c  20 23 78 65 78 74 25 2d  |  R1,R1, #xext%-|
00011740  31 0d 84 1c 1c 20 41 44  44 20 20 20 20 20 52 32  |1.... ADD     R2|
00011750  2c 52 32 2c 20 23 79 65  78 74 25 2f 34 0d 84 26  |,R2, #yext%/4..&|
00011760  18 20 52 53 42 20 20 20  20 20 52 32 2c 52 32 2c  |. RSB     R2,R2,|
00011770  20 23 32 35 36 0d 84 30  18 20 4c 44 52 20 20 20  | #256..0. LDR   |
00011780  20 20 52 33 2c 20 61 64  72 5f 72 6e 64 0d 84 3a  |  R3, adr_rnd..:|
00011790  14 20 4c 44 52 20 20 20  20 20 52 33 2c 5b 52 33  |. LDR     R3,[R3|
000117a0  5d 0d 84 44 18 20 54 53  54 20 20 20 20 20 52 33  |]..D. TST     R3|
000117b0  2c 20 23 25 31 30 30 30  30 0d 84 4e 16 20 53 55  |, #%10000..N. SU|
000117c0  42 45 51 20 20 20 52 32  2c 52 32 2c 20 23 31 0d  |BEQ   R2,R2, #1.|
000117d0  84 58 15 20 80 20 20 20  20 20 52 33 2c 52 33 2c  |.X. .     R3,R3,|
000117e0  20 23 31 35 0d 84 62 16  20 53 55 42 20 20 20 20  | #15..b. SUB    |
000117f0  20 52 33 2c 52 33 2c 20  23 37 0d 84 6c 13 20 4d  | R3,R3, #7..l. M|
00011800  4f 56 20 20 20 20 20 52  34 2c 20 23 30 0d 84 76  |OV     R4, #0..v|
00011810  17 20 53 55 42 20 20 20  20 20 52 34 2c 52 34 2c  |. SUB     R4,R4,|
00011820  20 23 34 30 0d 84 80 14  20 4d 4f 56 20 20 20 20  | #40.... MOV    |
00011830  20 52 35 2c 20 23 33 32  0d 84 8a 15 20 42 4c 20  | R5, #32.... BL |
00011840  20 20 20 20 20 61 64 64  5f 63 65 6c 6c 0d 84 94  |     add_cell...|
00011850  13 20 4d 4f 56 20 20 20  20 20 52 35 2c 20 23 31  |. MOV     R5, #1|
00011860  0d 84 9e 06 20 3a 0d 84  a8 14 20 80 20 20 20 20  |.... :.... .    |
00011870  20 52 30 2c 52 38 2c 20  23 31 0d 84 b2 1a 20 4d  | R0,R8, #1.... M|
00011880  4f 56 20 20 20 20 20 52  31 2c 52 36 2c 20 4c 53  |OV     R1,R6, LS|
00011890  52 20 23 32 0d 84 bc 1a  20 4d 4f 56 20 20 20 20  |R #2.... MOV    |
000118a0  20 52 32 2c 52 37 2c 20  4c 53 52 20 23 32 0d 84  | R2,R7, LSR #2..|
000118b0  c6 19 20 4c 44 52 20 20  20 20 20 52 39 2c 20 61  |.. LDR     R9, a|
000118c0  64 72 5f 70 31 5f 78 0d  84 d0 14 20 53 54 52 20  |dr_p1_x.... STR |
000118d0  20 20 20 20 52 31 2c 5b  52 39 5d 0d 84 da 19 20  |    R1,[R9].... |
000118e0  4c 44 52 20 20 20 20 20  52 39 2c 20 61 64 72 5f  |LDR     R9, adr_|
000118f0  70 31 5f 79 0d 84 e4 14  20 53 54 52 20 20 20 20  |p1_y.... STR    |
00011900  20 52 32 2c 5b 52 39 5d  0d 84 ee 1d 20 42 4c 20  | R2,[R9].... BL |
00011910  20 20 20 20 20 70 6c 6f  74 5f 73 70 72 69 74 65  |     plot_sprite|
00011920  5f 31 36 31 36 0d 84 f8  06 20 3a 0d 85 02 19 20  |_1616.... :.... |
00011930  4c 44 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 39  |LDMFD   R13!,{R9|
00011940  2c 50 43 7d 0d 85 0c 06  20 3a 0d 85 16 0d 20 2e  |,PC}.... :.... .|
00011950  61 64 72 5f 72 6e 64 0d  85 20 10 20 45 51 55 44  |adr_rnd.. . EQUD|
00011960  20 20 20 20 72 6e 64 0d  85 2a 13 20 2e 61 64 72  |    rnd..*. .adr|
00011970  5f 70 31 5f 77 65 61 70  6f 6e 0d 85 34 16 20 45  |_p1_weapon..4. E|
00011980  51 55 44 20 20 20 20 70  31 5f 77 65 61 70 6f 6e  |QUD    p1_weapon|
00011990  0d 85 3e 0e 20 2e 61 64  72 5f 70 31 5f 78 0d 85  |..>. .adr_p1_x..|
000119a0  48 11 20 45 51 55 44 20  20 20 20 70 31 5f 78 0d  |H. EQUD    p1_x.|
000119b0  85 52 0e 20 2e 61 64 72  5f 70 31 5f 79 0d 85 5c  |.R. .adr_p1_y..\|
000119c0  11 20 45 51 55 44 20 20  20 20 70 31 5f 79 0d 85  |. EQUD    p1_y..|
000119d0  66 06 20 3a 0d 85 70 06  20 5d 0d 85 7a 14 20 50  |f. :..p. ]..z. P|
000119e0  25 3d 63 6c 67 5f 72 6f  75 74 69 6e 65 25 0d 85  |%=clg_routine%..|
000119f0  84 19 20 4c 25 3d 63 6c  67 5f 72 6f 75 74 69 6e  |.. L%=clg_routin|
00011a00  65 25 2b 31 30 32 30 0d  85 8e 0f 20 5b 4f 50 54  |e%+1020.... [OPT|
00011a10  20 70 61 73 73 25 0d 85  98 06 20 3a 0d 85 a2 19  | pass%.... :....|
00011a20  20 2e 63 6c 67 5f 61 64  72 5f 73 63 72 65 65 6e  | .clg_adr_screen|
00011a30  73 74 6f 72 65 0d 85 ac  18 20 45 51 55 44 20 20  |store.... EQUD  |
00011a40  20 20 73 63 72 65 65 6e  73 74 6f 72 65 0d 85 b6  |  screenstore...|
00011a50  14 20 2e 63 6c 67 5f 73  63 72 65 65 6e 64 61 74  |. .clg_screendat|
00011a60  61 0d 85 c0 18 20 45 51  55 44 20 20 20 20 73 63  |a.... EQUD    sc|
00011a70  72 65 65 6e 64 61 74 61  25 0d 85 ca 06 20 3a 0d  |reendata%.... :.|
00011a80  85 d4 09 20 2e 63 6c 67  0d 85 de 1e 20 53 54 4d  |... .clg.... STM|
00011a90  46 44 20 20 20 52 31 33  21 2c 7b 52 30 2d 52 31  |FD   R13!,{R0-R1|
00011aa0  32 2c 52 31 34 7d 0d 85  e8 23 20 41 44 52 20 20  |2,R14}...# ADR  |
00011ab0  20 20 20 52 30 2c 20 63  6c 67 5f 74 65 6d 70 5f  |   R0, clg_temp_|
00011ac0  72 65 67 5f 73 74 6f 72  65 0d 85 f2 1a 20 53 54  |reg_store.... ST|
00011ad0  4d 49 41 20 20 20 52 30  2c 20 7b 52 31 33 2c 52  |MIA   R0, {R13,R|
00011ae0  31 34 7d 0d 85 fc 25 20  4c 44 52 20 20 20 20 20  |14}...% LDR     |
00011af0  52 31 33 2c 20 63 6c 67  5f 61 64 72 5f 73 63 72  |R13, clg_adr_scr|
00011b00  65 65 6e 73 74 6f 72 65  0d 86 06 17 20 4c 44 52  |eenstore.... LDR|
00011b10  20 20 20 20 20 52 31 33  2c 20 5b 52 31 33 5d 0d  |     R13, [R13].|
00011b20  86 10 20 20 4c 44 52 20  20 20 20 20 52 31 34 2c  |..  LDR     R14,|
00011b30  20 63 6c 67 5f 73 63 72  65 65 6e 64 61 74 61 0d  | clg_screendata.|
00011b40  86 1a 14 20 4d 4f 56 20  20 20 20 20 52 31 32 2c  |... MOV     R12,|
00011b50  20 23 30 0d 86 24 0f 20  2e 63 6c 67 5f 6c 6f 6f  | #0..$. .clg_loo|
00011b60  70 31 0d 86 2e 06 20 5d  0d 86 38 10 20 e3 20 61  |p1.... ]..8. . a|
00011b70  25 3d 31 20 b8 20 32 36  0d 86 42 0f 20 5b 4f 50  |%=1 . 26..B. [OP|
00011b80  54 20 70 61 73 73 25 0d  86 4c 1a 20 4c 44 4d 49  |T pass%..L. LDMI|
00011b90  41 20 20 20 52 31 34 21  2c 7b 52 30 2d 52 31 31  |A   R14!,{R0-R11|
00011ba0  7d 0d 86 56 1a 20 53 54  4d 49 41 20 20 20 52 31  |}..V. STMIA   R1|
00011bb0  33 21 2c 7b 52 30 2d 52  31 31 7d 0d 86 60 06 20  |3!,{R0-R11}..`. |
00011bc0  5d 0d 86 6a 06 20 ed 0d  86 74 0f 20 5b 4f 50 54  |]..j. ...t. [OPT|
00011bd0  20 70 61 73 73 25 0d 86  7e 18 20 41 44 44 20 20  | pass%..~. ADD  |
00011be0  20 20 20 52 31 32 2c 52  31 32 2c 20 23 31 0d 86  |   R12,R12, #1..|
00011bf0  88 15 20 43 4d 50 20 20  20 20 20 52 31 32 2c 20  |.. CMP     R12, |
00011c00  23 36 35 0d 86 92 16 20  42 4c 54 20 20 20 20 20  |#65.... BLT     |
00011c10  63 6c 67 5f 6c 6f 6f 70  31 0d 86 9c 06 20 5d 0d  |clg_loop1.... ].|
00011c20  86 a6 10 20 e3 20 61 25  3d 31 20 b8 20 32 30 0d  |... . a%=1 . 20.|
00011c30  86 b0 0f 20 5b 4f 50 54  20 70 61 73 73 25 0d 86  |... [OPT pass%..|
00011c40  ba 19 20 4c 44 4d 49 41  20 20 20 52 31 34 21 2c  |.. LDMIA   R14!,|
00011c50  7b 52 30 2d 52 39 7d 0d  86 c4 19 20 53 54 4d 49  |{R0-R9}.... STMI|
00011c60  41 20 20 20 52 31 33 21  2c 7b 52 30 2d 52 39 7d  |A   R13!,{R0-R9}|
00011c70  0d 86 ce 06 20 5d 0d 86  d8 06 20 ed 0d 86 e2 0f  |.... ].... .....|
00011c80  20 5b 4f 50 54 20 70 61  73 73 25 0d 86 ec 23 20  | [OPT pass%...# |
00011c90  41 44 52 20 20 20 20 20  52 30 2c 20 63 6c 67 5f  |ADR     R0, clg_|
00011ca0  74 65 6d 70 5f 72 65 67  5f 73 74 6f 72 65 0d 86  |temp_reg_store..|
00011cb0  f6 1a 20 4c 44 4d 49 41  20 20 20 52 30 2c 20 7b  |.. LDMIA   R0, {|
00011cc0  52 31 33 2c 52 31 34 7d  0d 87 00 1d 20 4c 44 4d  |R13,R14}.... LDM|
00011cd0  46 44 20 20 20 52 31 33  21 2c 7b 52 30 2d 52 31  |FD   R13!,{R0-R1|
00011ce0  32 2c 50 43 7d 0d 87 0a  06 20 3a 0d 87 14 18 20  |2,PC}.... :.... |
00011cf0  2e 63 6c 67 5f 74 65 6d  70 5f 72 65 67 5f 73 74  |.clg_temp_reg_st|
00011d00  6f 72 65 0d 87 1e 0e 20  45 51 55 44 20 20 20 20  |ore.... EQUD    |
00011d10  30 0d 87 28 0e 20 45 51  55 44 20 20 20 20 30 0d  |0..(. EQUD    0.|
00011d20  87 32 06 20 3a 0d 87 3c  06 20 5d 0d 87 46 16 20  |.2. :..<. ]..F. |
00011d30  50 25 3d 73 70 6c 69 74  5f 72 6f 75 74 69 6e 65  |P%=split_routine|
00011d40  25 0d 87 50 1b 20 4c 25  3d 73 70 6c 69 74 5f 72  |%..P. L%=split_r|
00011d50  6f 75 74 69 6e 65 25 2b  31 30 32 30 0d 87 5a 0f  |outine%+1020..Z.|
00011d60  20 5b 4f 50 54 20 70 61  73 73 25 0d 87 64 06 20  | [OPT pass%..d. |
00011d70  3a 0d 87 6e 06 20 3a 0d  87 78 17 20 2e 73 70 6c  |:..n. :..x. .spl|
00011d80  69 74 5f 73 63 72 65 65  6e 73 74 6f 72 65 0d 87  |it_screenstore..|
00011d90  82 19 20 45 51 55 44 20  20 20 20 73 63 72 65 65  |.. EQUD    scree|
00011da0  6e 73 74 6f 72 65 25 0d  87 8c 16 20 2e 73 70 6c  |nstore%.... .spl|
00011db0  69 74 5f 61 64 72 5f 73  63 72 65 65 6e 0d 87 96  |it_adr_screen...|
00011dc0  13 20 45 51 55 44 20 20  20 20 73 63 72 65 65 6e  |. EQUD    screen|
00011dd0  0d 87 a0 14 20 2e 73 70  6c 69 74 5f 61 64 72 5f  |.... .split_adr_|
00011de0  70 31 5f 79 0d 87 aa 11  20 45 51 55 44 20 20 20  |p1_y.... EQUD   |
00011df0  20 70 31 5f 79 0d 87 b4  14 20 2e 73 70 6c 69 74  | p1_y.... .split|
00011e00  5f 61 64 72 5f 70 32 5f  79 0d 87 be 11 20 45 51  |_adr_p2_y.... EQ|
00011e10  55 44 20 20 20 20 70 32  5f 79 0d 87 c8 11 20 2e  |UD    p2_y.... .|
00011e20  73 70 6c 69 74 5f 70 31  5f 79 31 0d 87 d2 0e 20  |split_p1_y1.... |
00011e30  45 51 55 44 20 20 20 20  30 0d 87 dc 11 20 2e 73  |EQUD    0.... .s|
00011e40  70 6c 69 74 5f 70 32 5f  79 31 0d 87 e6 0e 20 45  |plit_p2_y1.... E|
00011e50  51 55 44 20 20 20 20 30  0d 87 f0 11 20 2e 73 70  |QUD    0.... .sp|
00011e60  6c 69 74 5f 70 31 5f 79  32 0d 87 fa 0e 20 45 51  |lit_p1_y2.... EQ|
00011e70  55 44 20 20 20 20 30 0d  88 04 11 20 2e 73 70 6c  |UD    0.... .spl|
00011e80  69 74 5f 70 32 5f 79 32  0d 88 0e 0e 20 45 51 55  |it_p2_y2.... EQU|
00011e90  44 20 20 20 20 30 0d 88  18 11 20 2e 73 70 6c 69  |D    0.... .spli|
00011ea0  74 5f 70 31 5f 79 33 0d  88 22 0e 20 45 51 55 44  |t_p1_y3..". EQUD|
00011eb0  20 20 20 20 30 0d 88 2c  11 20 2e 73 70 6c 69 74  |    0..,. .split|
00011ec0  5f 70 32 5f 79 33 0d 88  36 0e 20 45 51 55 44 20  |_p2_y3..6. EQUD |
00011ed0  20 20 20 30 0d 88 40 06  20 3a 0d 88 4a 12 20 2e  |   0..@. :..J. .|
00011ee0  73 70 6c 69 74 5f 73 63  72 65 65 6e 0d 88 54 1e  |split_screen..T.|
00011ef0  20 53 54 4d 46 44 20 20  20 52 31 33 21 2c 7b 52  | STMFD   R13!,{R|
00011f00  30 2d 52 31 32 2c 52 31  34 7d 0d 88 5e 25 20 41  |0-R12,R14}..^% A|
00011f10  44 52 20 20 20 20 20 52  30 2c 20 73 70 6c 69 74  |DR     R0, split|
00011f20  5f 74 65 6d 70 5f 72 65  67 5f 73 74 6f 72 65 0d  |_temp_reg_store.|
00011f30  88 68 1a 20 53 54 4d 49  41 20 20 20 52 30 2c 20  |.h. STMIA   R0, |
00011f40  7b 52 31 33 2c 52 31 34  7d 0d 88 72 22 20 4c 44  |{R13,R14}..r" LD|
00011f50  52 20 20 20 20 20 52 31  33 2c 20 73 70 6c 69 74  |R     R13, split|
00011f60  5f 61 64 72 5f 73 63 72  65 65 6e 0d 88 7c 17 20  |_adr_screen..|. |
00011f70  4c 44 52 20 20 20 20 20  52 31 33 2c 20 5b 52 31  |LDR     R13, [R1|
00011f80  33 5d 0d 88 86 14 20 4d  4f 56 20 20 20 20 20 52  |3].... MOV     R|
00011f90  31 32 2c 20 23 30 0d 88  90 1f 20 4c 44 52 20 20  |12, #0.... LDR  |
00011fa0  20 20 20 52 30 2c 20 73  70 6c 69 74 5f 61 64 72  |   R0, split_adr|
00011fb0  5f 70 31 5f 79 0d 88 9a  14 20 4c 44 52 20 20 20  |_p1_y.... LDR   |
00011fc0  20 20 52 30 2c 5b 52 30  5d 0d 88 a4 1c 20 4c 44  |  R0,[R0].... LD|
00011fd0  52 20 20 20 20 20 52 31  2c 20 73 70 6c 69 74 5f  |R     R1, split_|
00011fe0  70 31 5f 79 31 0d 88 ae  1c 20 4c 44 52 20 20 20  |p1_y1.... LDR   |
00011ff0  20 20 52 32 2c 20 73 70  6c 69 74 5f 70 31 5f 79  |  R2, split_p1_y|
00012000  32 0d 88 b8 1c 20 4c 44  52 20 20 20 20 20 52 33  |2.... LDR     R3|
00012010  2c 20 73 70 6c 69 74 5f  70 31 5f 79 33 0d 88 c2  |, split_p1_y3...|
00012020  1c 20 53 54 52 20 20 20  20 20 52 30 2c 20 73 70  |. STR     R0, sp|
00012030  6c 69 74 5f 70 31 5f 79  31 0d 88 cc 1c 20 53 54  |lit_p1_y1.... ST|
00012040  52 20 20 20 20 20 52 31  2c 20 73 70 6c 69 74 5f  |R     R1, split_|
00012050  70 31 5f 79 32 0d 88 d6  1c 20 53 54 52 20 20 20  |p1_y2.... STR   |
00012060  20 20 52 32 2c 20 73 70  6c 69 74 5f 70 31 5f 79  |  R2, split_p1_y|
00012070  33 0d 88 e0 15 20 41 44  44 20 20 20 20 20 52 30  |3.... ADD     R0|
00012080  2c 52 30 2c 52 31 0d 88  ea 15 20 41 44 44 20 20  |,R0,R1.... ADD  |
00012090  20 20 20 52 30 2c 52 30  2c 52 32 0d 88 f4 15 20  |   R0,R0,R2.... |
000120a0  41 44 44 20 20 20 20 20  52 30 2c 52 30 2c 52 33  |ADD     R0,R0,R3|
000120b0  0d 88 fe 16 20 41 44 44  20 20 20 20 20 52 30 2c  |.... ADD     R0,|
000120c0  52 30 2c 20 23 32 0d 89  08 1a 20 4d 4f 56 20 20  |R0, #2.... MOV  |
000120d0  20 20 20 52 30 2c 52 30  2c 20 41 53 52 20 23 32  |   R0,R0, ASR #2|
000120e0  0d 89 12 18 20 52 53 42  20 20 20 20 20 52 30 2c  |.... RSB     R0,|
000120f0  52 30 2c 20 23 32 35 36  0d 89 1c 17 20 53 55 42  |R0, #256.... SUB|
00012100  20 20 20 20 20 52 30 2c  52 30 2c 20 23 36 34 0d  |     R0,R0, #64.|
00012110  89 26 15 20 43 4d 50 20  20 20 20 20 52 30 2c 20  |.&. CMP     R0, |
00012120  23 31 34 38 0d 89 30 15  20 4d 4f 56 47 54 20 20  |#148..0. MOVGT  |
00012130  20 52 30 2c 20 23 31 34  38 0d 89 3a 13 20 43 4d  | R0, #148..:. CM|
00012140  50 20 20 20 20 20 52 30  2c 20 23 30 0d 89 44 13  |P     R0, #0..D.|
00012150  20 4d 4f 56 4c 54 20 20  20 52 30 2c 20 23 30 0d  | MOVLT   R0, #0.|
00012160  89 4e 23 20 4c 44 52 20  20 20 20 20 52 31 34 2c  |.N# LDR     R14,|
00012170  20 73 70 6c 69 74 5f 73  63 72 65 65 6e 73 74 6f  | split_screensto|
00012180  72 65 0d 89 58 19 20 4d  4f 56 20 20 20 20 20 52  |re..X. MOV     R|
00012190  31 2c 20 23 79 5f 73 68  69 66 74 0d 89 62 1a 20  |1, #y_shift..b. |
000121a0  4d 4c 41 20 20 20 20 20  52 31 34 2c 52 31 2c 52  |MLA     R14,R1,R|
000121b0  30 2c 52 31 34 0d 89 6c  11 20 2e 73 70 6c 69 74  |0,R14..l. .split|
000121c0  5f 6c 6f 6f 70 31 0d 89  76 06 20 5d 0d 89 80 10  |_loop1..v. ]....|
000121d0  20 e3 20 61 25 3d 31 20  b8 20 31 30 0d 89 8a 0f  | . a%=1 . 10....|
000121e0  20 5b 4f 50 54 20 70 61  73 73 25 0d 89 94 1a 20  | [OPT pass%.... |
000121f0  4c 44 4d 49 41 20 20 20  52 31 34 21 2c 7b 52 30  |LDMIA   R14!,{R0|
00012200  2d 52 31 31 7d 0d 89 9e  1a 20 53 54 4d 49 41 20  |-R11}.... STMIA |
00012210  20 20 52 31 33 21 2c 7b  52 30 2d 52 31 31 7d 0d  |  R13!,{R0-R11}.|
00012220  89 a8 06 20 5d 0d 89 b2  06 20 ed 0d 89 bc 0f 20  |... ].... ..... |
00012230  5b 4f 50 54 20 70 61 73  73 25 0d 89 c6 18 20 41  |[OPT pass%.... A|
00012240  44 44 20 20 20 20 20 52  31 32 2c 52 31 32 2c 20  |DD     R12,R12, |
00012250  23 31 0d 89 d0 15 20 43  4d 50 20 20 20 20 20 52  |#1.... CMP     R|
00012260  31 32 2c 20 23 37 32 0d  89 da 18 20 42 4c 54 20  |12, #72.... BLT |
00012270  20 20 20 20 73 70 6c 69  74 5f 6c 6f 6f 70 31 0d  |    split_loop1.|
00012280  89 e4 06 20 5d 0d 89 ee  10 20 e3 20 61 25 3d 30  |... ].... . a%=0|
00012290  20 b8 20 31 31 0d 89 f8  0f 20 5b 4f 50 54 20 70  | . 11.... [OPT p|
000122a0  61 73 73 25 0d 8a 02 15  20 4d 4f 56 20 20 20 20  |ass%.... MOV    |
000122b0  20 61 25 2c 20 23 31 32  37 0d 8a 0c 1c 20 84 52  | a%, #127.... .R|
000122c0  20 20 20 20 20 61 25 2c  61 25 2c 61 25 2c 20 4c  |     a%,a%,a%, L|
000122d0  53 4c 20 23 38 0d 8a 16  1d 20 84 52 20 20 20 20  |SL #8.... .R    |
000122e0  20 61 25 2c 61 25 2c 61  25 2c 20 4c 53 4c 20 23  | a%,a%,a%, LSL #|
000122f0  31 36 0d 8a 20 06 20 5d  0d 8a 2a 06 20 ed 0d 8a  |16.. . ]..*. ...|
00012300  34 0f 20 5b 4f 50 54 20  70 61 73 73 25 0d 8a 3e  |4. [OPT pass%..>|
00012310  14 20 4d 4f 56 20 20 20  20 20 52 31 32 2c 20 23  |. MOV     R12, #|
00012320  30 0d 8a 48 11 20 2e 73  70 6c 69 74 5f 6c 6f 6f  |0..H. .split_loo|
00012330  70 33 0d 8a 52 1a 20 53  54 4d 49 41 20 20 20 52  |p3..R. STMIA   R|
00012340  31 33 21 2c 7b 52 30 2d  52 31 31 7d 0d 8a 5c 18  |13!,{R0-R11}..\.|
00012350  20 41 44 44 20 20 20 20  20 52 31 32 2c 52 31 32  | ADD     R12,R12|
00012360  2c 20 23 31 0d 8a 66 16  20 43 4d 50 20 20 20 20  |, #1..f. CMP    |
00012370  20 52 31 32 2c 20 23 32  38 30 0d 8a 70 18 20 42  | R12, #280..p. B|
00012380  4c 54 20 20 20 20 20 73  70 6c 69 74 5f 6c 6f 6f  |LT     split_loo|
00012390  70 33 0d 8a 7a 06 20 3a  0d 8a 84 22 20 4c 44 52  |p3..z. :..." LDR|
000123a0  20 20 20 20 20 52 31 33  2c 20 73 70 6c 69 74 5f  |     R13, split_|
000123b0  61 64 72 5f 73 63 72 65  65 6e 0d 8a 8e 17 20 4c  |adr_screen.... L|
000123c0  44 52 20 20 20 20 20 52  31 33 2c 20 5b 52 31 33  |DR     R13, [R13|
000123d0  5d 0d 8a 98 1c 20 41 44  44 20 20 20 20 20 52 31  |].... ADD     R1|
000123e0  33 2c 52 31 33 2c 20 23  26 42 39 30 30 0d 8a a2  |3,R13, #&B900...|
000123f0  14 20 4d 4f 56 20 20 20  20 20 52 31 32 2c 20 23  |. MOV     R12, #|
00012400  30 0d 8a ac 1f 20 4c 44  52 20 20 20 20 20 52 30  |0.... LDR     R0|
00012410  2c 20 73 70 6c 69 74 5f  61 64 72 5f 70 32 5f 79  |, split_adr_p2_y|
00012420  0d 8a b6 14 20 4c 44 52  20 20 20 20 20 52 30 2c  |.... LDR     R0,|
00012430  5b 52 30 5d 0d 8a c0 1c  20 4c 44 52 20 20 20 20  |[R0].... LDR    |
00012440  20 52 31 2c 20 73 70 6c  69 74 5f 70 32 5f 79 31  | R1, split_p2_y1|
00012450  0d 8a ca 1c 20 4c 44 52  20 20 20 20 20 52 32 2c  |.... LDR     R2,|
00012460  20 73 70 6c 69 74 5f 70  32 5f 79 32 0d 8a d4 1c  | split_p2_y2....|
00012470  20 4c 44 52 20 20 20 20  20 52 33 2c 20 73 70 6c  | LDR     R3, spl|
00012480  69 74 5f 70 32 5f 79 33  0d 8a de 1c 20 53 54 52  |it_p2_y3.... STR|
00012490  20 20 20 20 20 52 30 2c  20 73 70 6c 69 74 5f 70  |     R0, split_p|
000124a0  32 5f 79 31 0d 8a e8 1c  20 53 54 52 20 20 20 20  |2_y1.... STR    |
000124b0  20 52 31 2c 20 73 70 6c  69 74 5f 70 32 5f 79 32  | R1, split_p2_y2|
000124c0  0d 8a f2 1c 20 53 54 52  20 20 20 20 20 52 32 2c  |.... STR     R2,|
000124d0  20 73 70 6c 69 74 5f 70  32 5f 79 33 0d 8a fc 15  | split_p2_y3....|
000124e0  20 41 44 44 20 20 20 20  20 52 30 2c 52 30 2c 52  | ADD     R0,R0,R|
000124f0  31 0d 8b 06 15 20 41 44  44 20 20 20 20 20 52 30  |1.... ADD     R0|
00012500  2c 52 30 2c 52 32 0d 8b  10 15 20 41 44 44 20 20  |,R0,R2.... ADD  |
00012510  20 20 20 52 30 2c 52 30  2c 52 33 0d 8b 1a 16 20  |   R0,R0,R3.... |
00012520  41 44 44 20 20 20 20 20  52 30 2c 52 30 2c 20 23  |ADD     R0,R0, #|
00012530  32 0d 8b 24 1a 20 4d 4f  56 20 20 20 20 20 52 30  |2..$. MOV     R0|
00012540  2c 52 30 2c 20 41 53 52  20 23 32 0d 8b 2e 18 20  |,R0, ASR #2.... |
00012550  52 53 42 20 20 20 20 20  52 30 2c 52 30 2c 20 23  |RSB     R0,R0, #|
00012560  32 35 36 0d 8b 38 17 20  53 55 42 20 20 20 20 20  |256..8. SUB     |
00012570  52 30 2c 52 30 2c 20 23  36 34 0d 8b 42 15 20 43  |R0,R0, #64..B. C|
00012580  4d 50 20 20 20 20 20 52  30 2c 20 23 31 34 38 0d  |MP     R0, #148.|
00012590  8b 4c 15 20 4d 4f 56 47  54 20 20 20 52 30 2c 20  |.L. MOVGT   R0, |
000125a0  23 31 34 38 0d 8b 56 13  20 43 4d 50 20 20 20 20  |#148..V. CMP    |
000125b0  20 52 30 2c 20 23 30 0d  8b 60 13 20 4d 4f 56 4c  | R0, #0..`. MOVL|
000125c0  54 20 20 20 52 30 2c 20  23 30 0d 8b 6a 23 20 4c  |T   R0, #0..j# L|
000125d0  44 52 20 20 20 20 20 52  31 34 2c 20 73 70 6c 69  |DR     R14, spli|
000125e0  74 5f 73 63 72 65 65 6e  73 74 6f 72 65 0d 8b 74  |t_screenstore..t|
000125f0  19 20 4d 4f 56 20 20 20  20 20 52 31 2c 20 23 79  |. MOV     R1, #y|
00012600  5f 73 68 69 66 74 0d 8b  7e 1a 20 4d 4c 41 20 20  |_shift..~. MLA  |
00012610  20 20 20 52 31 34 2c 52  31 2c 52 30 2c 52 31 34  |   R14,R1,R0,R14|
00012620  0d 8b 88 11 20 2e 73 70  6c 69 74 5f 6c 6f 6f 70  |.... .split_loop|
00012630  32 0d 8b 92 06 20 5d 0d  8b 9c 10 20 e3 20 61 25  |2.... ].... . a%|
00012640  3d 31 20 b8 20 31 30 0d  8b a6 0f 20 5b 4f 50 54  |=1 . 10.... [OPT|
00012650  20 70 61 73 73 25 0d 8b  b0 1a 20 4c 44 4d 49 41  | pass%.... LDMIA|
00012660  20 20 20 52 31 34 21 2c  7b 52 30 2d 52 31 31 7d  |   R14!,{R0-R11}|
00012670  0d 8b ba 1a 20 53 54 4d  49 41 20 20 20 52 31 33  |.... STMIA   R13|
00012680  21 2c 7b 52 30 2d 52 31  31 7d 0d 8b c4 06 20 5d  |!,{R0-R11}.... ]|
00012690  0d 8b ce 06 20 ed 0d 8b  d8 0f 20 5b 4f 50 54 20  |.... ..... [OPT |
000126a0  70 61 73 73 25 0d 8b e2  18 20 41 44 44 20 20 20  |pass%.... ADD   |
000126b0  20 20 52 31 32 2c 52 31  32 2c 20 23 31 0d 8b ec  |  R12,R12, #1...|
000126c0  15 20 43 4d 50 20 20 20  20 20 52 31 32 2c 20 23  |. CMP     R12, #|
000126d0  37 32 0d 8b f6 18 20 42  4c 54 20 20 20 20 20 73  |72.... BLT     s|
000126e0  70 6c 69 74 5f 6c 6f 6f  70 32 0d 8c 00 25 20 41  |plit_loop2...% A|
000126f0  44 52 20 20 20 20 20 52  30 2c 20 73 70 6c 69 74  |DR     R0, split|
00012700  5f 74 65 6d 70 5f 72 65  67 5f 73 74 6f 72 65 0d  |_temp_reg_store.|
00012710  8c 0a 1a 20 4c 44 4d 49  41 20 20 20 52 30 2c 20  |... LDMIA   R0, |
00012720  7b 52 31 33 2c 52 31 34  7d 0d 8c 14 1d 20 4c 44  |{R13,R14}.... LD|
00012730  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 30 2d 52  |MFD   R13!,{R0-R|
00012740  31 32 2c 50 43 7d 0d 8c  1e 06 20 3a 0d 8c 28 1a  |12,PC}.... :..(.|
00012750  20 2e 73 70 6c 69 74 5f  74 65 6d 70 5f 72 65 67  | .split_temp_reg|
00012760  5f 73 74 6f 72 65 0d 8c  32 0e 20 45 51 55 44 20  |_store..2. EQUD |
00012770  20 20 20 30 0d 8c 3c 0e  20 45 51 55 44 20 20 20  |   0..<. EQUD   |
00012780  20 30 0d 8c 46 06 20 3a  0d 8c 50 06 20 3a 0d 8c  | 0..F. :..P. :..|
00012790  5a 06 20 5d 0d 8c 64 18  20 50 25 3d 73 70 72 69  |Z. ]..d. P%=spri|
000127a0  74 65 5f 72 6f 75 74 69  6e 65 73 25 0d 8c 6e 1d  |te_routines%..n.|
000127b0  20 4c 25 3d 73 70 72 69  74 65 5f 72 6f 75 74 69  | L%=sprite_routi|
000127c0  6e 65 73 25 2b 38 31 39  31 0d 8c 78 0f 20 5b 4f  |nes%+8191..x. [O|
000127d0  50 54 20 70 61 73 73 25  0d 8c 82 06 20 3a 0d 8c  |PT pass%.... :..|
000127e0  8c 06 20 3a 0d 8c 96 06  20 3a 0d 8c a0 16 20 2e  |.. :.... :.... .|
000127f0  70 6c 6f 74 5f 73 70 72  69 74 65 5f 31 32 31 32  |plot_sprite_1212|
00012800  0d 8c aa 06 20 3a 0d 8c  b4 1e 20 53 54 4d 46 44  |.... :.... STMFD|
00012810  20 20 20 52 31 33 21 2c  7b 52 30 2d 52 31 32 2c  |   R13!,{R0-R12,|
00012820  52 31 34 7d 0d 8c be 06  20 3a 0d 8c c8 31 20 3a  |R14}.... :...1 :|
00012830  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00012840  20 20 20 20 20 20 20 20  20 20 20 20 3b 20 52 30  |            ; R0|
00012850  20 73 70 72 69 74 65 20  6e 6f 2e 0d 8c d2 2e 20  | sprite no..... |
00012860  3a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |:               |
00012870  20 20 20 20 20 20 20 20  20 20 20 20 20 3b 20 52  |             ; R|
00012880  31 20 78 2d 63 6f 6f 72  64 0d 8c dc 2e 20 3a 20  |1 x-coord.... : |
00012890  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000128a0  20 20 20 20 20 20 20 20  20 20 20 3b 20 52 32 20  |           ; R2 |
000128b0  79 2d 63 6f 6f 72 64 0d  8c e6 06 20 3a 0d 8c f0  |y-coord.... :...|
000128c0  18 20 52 53 42 20 20 20  20 20 52 32 2c 52 32 2c  |. RSB     R2,R2,|
000128d0  20 23 32 35 36 0d 8c fa  06 20 3a 0d 8d 04 13 20  | #256.... :.... |
000128e0  43 4d 50 20 20 20 20 20  52 31 2c 20 23 30 0d 8d  |CMP     R1, #0..|
000128f0  0e 1c 20 42 4c 45 20 20  20 20 20 70 73 6d 5f 6e  |.. BLE     psm_n|
00012900  6f 5f 70 6c 6f 74 31 32  31 32 0d 8d 18 14 20 43  |o_plot1212.... C|
00012910  4d 50 20 20 20 20 20 52  32 2c 20 23 31 32 0d 8d  |MP     R2, #12..|
00012920  22 1c 20 42 4c 45 20 20  20 20 20 70 73 6d 5f 6e  |". BLE     psm_n|
00012930  6f 5f 70 6c 6f 74 31 32  31 32 0d 8d 2c 17 20 43  |o_plot1212..,. C|
00012940  4d 50 20 20 20 20 20 52  31 2c 20 23 33 32 30 2d  |MP     R1, #320-|
00012950  38 0d 8d 36 1c 20 42 47  45 20 20 20 20 20 70 73  |8..6. BGE     ps|
00012960  6d 5f 6e 6f 5f 70 6c 6f  74 31 32 31 32 0d 8d 40  |m_no_plot1212..@|
00012970  15 20 43 4d 50 20 20 20  20 20 52 32 2c 20 23 32  |. CMP     R2, #2|
00012980  35 36 0d 8d 4a 1c 20 42  47 45 20 20 20 20 20 70  |56..J. BGE     p|
00012990  73 6d 5f 6e 6f 5f 70 6c  6f 74 31 32 31 32 0d 8d  |sm_no_plot1212..|
000129a0  54 19 20 42 20 20 20 20  20 20 20 70 73 6d 5f 70  |T. B       psm_p|
000129b0  6c 6f 74 31 32 31 32 0d  8d 5e 15 20 2e 70 73 6d  |lot1212..^. .psm|
000129c0  5f 6e 6f 5f 70 6c 6f 74  31 32 31 32 0d 8d 68 1d  |_no_plot1212..h.|
000129d0  20 4c 44 4d 46 44 20 20  20 52 31 33 21 2c 7b 52  | LDMFD   R13!,{R|
000129e0  30 2d 52 31 32 2c 50 43  7d 0d 8d 72 12 20 2e 70  |0-R12,PC}..r. .p|
000129f0  73 6d 5f 70 6c 6f 74 31  32 31 32 0d 8d 7c 06 20  |sm_plot1212..|. |
00012a00  3a 0d 8d 86 34 20 80 20  20 20 20 20 52 33 2c 52  |:...4 .     R3,R|
00012a10  31 2c 20 23 25 31 31 20  20 20 20 20 20 20 20 20  |1, #%11         |
00012a20  20 3b 20 63 61 6c 63 75  6c 61 74 65 20 78 20 6f  | ; calculate x o|
00012a30  66 66 73 65 74 0d 8d 90  32 20 4d 4f 56 20 20 20  |ffset...2 MOV   |
00012a40  20 20 52 30 2c 52 30 2c  20 4c 53 4c 20 23 32 20  |  R0,R0, LSL #2 |
00012a50  20 20 20 20 20 20 20 3b  20 72 65 61 6c 69 73 65  |       ; realise|
00012a60  20 73 70 72 69 74 65 0d  8d 9a 2e 20 41 44 44 20  | sprite.... ADD |
00012a70  20 20 20 20 52 30 2c 52  30 2c 20 52 33 20 20 20  |    R0,R0, R3   |
00012a80  20 20 20 20 20 20 20 20  20 3b 20 61 64 64 20 6f  |         ; add o|
00012a90  66 66 73 65 74 0d 8d a4  33 20 42 49 43 20 20 20  |ffset...3 BIC   |
00012aa0  20 20 52 31 2c 52 31 2c  20 23 25 31 31 20 20 20  |  R1,R1, #%11   |
00012ab0  20 20 20 20 20 20 20 3b  20 6d 61 6b 65 20 78 20  |       ; make x |
00012ac0  64 69 76 20 62 79 20 34  0d 8d ae 06 20 3a 0d 8d  |div by 4.... :..|
00012ad0  b8 35 20 4d 4f 56 20 20  20 20 20 52 37 2c 20 23  |.5 MOV     R7, #|
00012ae0  78 5f 73 68 69 66 74 20  20 20 20 20 20 20 20 20  |x_shift         |
00012af0  3b 20 67 65 74 20 73 63  72 65 65 6e 20 73 68 69  |; get screen shi|
00012b00  66 74 73 0d 8d c2 19 20  4d 4f 56 20 20 20 20 20  |fts.... MOV     |
00012b10  52 38 2c 20 23 79 5f 73  68 69 66 74 0d 8d cc 40  |R8, #y_shift...@|
00012b20  20 4c 44 52 20 20 20 20  20 52 39 2c 20 73 70 72  | LDR     R9, spr|
00012b30  69 74 65 5f 61 64 72 5f  73 63 72 65 65 6e 73 74  |ite_adr_screenst|
00012b40  6f 72 65 3b 20 67 65 74  20 73 63 72 65 65 6e 73  |ore; get screens|
00012b50  74 6f 72 65 20 61 64 64  72 65 73 73 0d 8d d6 14  |tore address....|
00012b60  20 4c 44 52 20 20 20 20  20 52 39 2c 5b 52 39 5d  | LDR     R9,[R9]|
00012b70  0d 8d e0 06 20 3a 0d 8d  ea 18 20 4d 4c 41 20 20  |.... :.... MLA  |
00012b80  20 20 20 52 33 2c 52 37  2c 52 31 2c 52 39 0d 8d  |   R3,R7,R1,R9..|
00012b90  f4 18 20 4d 4c 41 20 20  20 20 20 52 32 2c 52 38  |.. MLA     R2,R8|
00012ba0  2c 52 32 2c 52 33 0d 8d  fe 06 20 3a 0d 8e 08 3d  |,R2,R3.... :...=|
00012bb0  20 4c 44 52 20 20 20 20  20 52 37 2c 20 61 64 72  | LDR     R7, adr|
00012bc0  5f 73 70 72 69 74 65 73  31 20 20 20 20 20 3b 20  |_sprites1     ; |
00012bd0  67 65 74 20 73 74 61 72  74 20 61 64 64 72 65 73  |get start addres|
00012be0  73 20 6f 66 20 64 61 74  61 0d 8e 12 43 20 4c 44  |s of data...C LD|
00012bf0  52 20 20 20 20 20 52 38  2c 20 73 70 72 5f 73 69  |R     R8, spr_si|
00012c00  7a 65 31 20 20 20 20 20  20 20 20 3b 20 67 65 74  |ze1        ; get|
00012c10  20 6c 65 6e 67 74 68 20  6f 66 20 64 61 74 61 20  | length of data |
00012c20  66 6f 72 20 31 20 73 70  72 69 74 65 0d 8e 1c 3e  |for 1 sprite...>|
00012c30  20 4d 4c 41 20 20 20 20  20 52 30 2c 52 38 2c 52  | MLA     R0,R8,R|
00012c40  30 2c 52 37 20 20 20 20  20 20 20 20 20 20 3b 20  |0,R7          ; |
00012c50  63 61 6c 63 75 6c 61 74  65 20 70 6f 73 69 74 69  |calculate positi|
00012c60  6f 6e 20 6f 66 20 64 61  74 61 0d 8e 26 3e 20 41  |on of data..&> A|
00012c70  44 44 20 20 20 20 20 52  31 2c 52 30 2c 52 38 2c  |DD     R1,R0,R8,|
00012c80  20 4c 53 52 20 23 31 20  20 20 20 20 3b 20 63 61  | LSR #1     ; ca|
00012c90  6c 63 75 6c 61 74 65 20  70 6f 73 69 74 69 6f 6e  |lculate position|
00012ca0  20 6f 66 20 6d 61 73 6b  0d 8e 30 06 20 3a 0d 8e  | of mask..0. :..|
00012cb0  3a 13 20 4d 4f 56 20 20  20 20 20 52 33 2c 20 23  |:. MOV     R3, #|
00012cc0  31 0d 8e 44 1e 20 53 54  52 20 20 20 20 20 52 33  |1..D. STR     R3|
00012cd0  2c 20 73 31 32 31 32 5f  63 6f 75 6e 74 65 72 0d  |, s1212_counter.|
00012ce0  8e 4e 06 20 3a 0d 8e 58  17 20 2e 73 31 32 31 32  |.N. :..X. .s1212|
00012cf0  5f 73 70 72 69 74 65 5f  6c 6f 6f 70 0d 8e 62 06  |_sprite_loop..b.|
00012d00  20 3a 0d 8e 6c 06 20 5d  0d 8e 76 10 20 e3 20 61  | :..l. ]..v. . a|
00012d10  25 3d 31 20 b8 20 31 32  0d 8e 80 0f 20 5b 4f 50  |%=1 . 12.... [OP|
00012d20  54 20 70 61 73 73 25 0d  8e 8a 06 20 3a 0d 8e 94  |T pass%.... :...|
00012d30  37 20 4c 44 4d 49 41 20  20 20 52 32 2c 7b 52 33  |7 LDMIA   R2,{R3|
00012d40  2d 52 35 7d 20 20 20 20  20 20 20 20 20 20 20 3b  |-R5}           ;|
00012d50  20 67 65 74 20 73 6f 6d  65 20 62 61 63 6b 67 72  | get some backgr|
00012d60  6f 75 6e 64 0d 8e 9e 31  20 4c 44 4d 49 41 20 20  |ound...1 LDMIA  |
00012d70  20 52 31 21 2c 7b 52 38  2d 52 31 30 7d 20 20 20  | R1!,{R8-R10}   |
00012d80  20 20 20 20 20 20 3b 20  67 65 74 20 73 6f 6d 65  |      ; get some|
00012d90  20 6d 61 73 6b 0d 8e a8  35 20 80 20 20 20 20 20  | mask...5 .     |
00012da0  52 33 2c 52 33 2c 52 38  20 20 20 20 20 20 20 20  |R3,R3,R8        |
00012db0  20 20 20 20 20 3b 20 6d  61 73 6b 20 6f 66 66 20  |     ; mask off |
00012dc0  62 61 63 6b 67 72 6f 75  6e 64 0d 8e b2 13 20 80  |background.... .|
00012dd0  20 20 20 20 20 52 34 2c  52 34 2c 52 39 0d 8e bc  |     R4,R4,R9...|
00012de0  14 20 80 20 20 20 20 20  52 35 2c 52 35 2c 52 31  |. .     R5,R5,R1|
00012df0  30 0d 8e c6 33 20 4c 44  4d 49 41 20 20 20 52 30  |0...3 LDMIA   R0|
00012e00  21 2c 7b 52 38 2d 52 31  30 7d 20 20 20 20 20 20  |!,{R8-R10}      |
00012e10  20 20 20 3b 20 67 65 74  20 73 6f 6d 65 20 73 70  |   ; get some sp|
00012e20  72 69 74 65 0d 8e d0 3f  20 84 52 20 20 20 20 20  |rite...? .R     |
00012e30  52 33 2c 52 33 2c 52 38  20 20 20 20 20 20 20 20  |R3,R3,R8        |
00012e40  20 20 20 20 20 3b 20 6d  65 72 67 65 20 73 70 72  |     ; merge spr|
00012e50  69 74 65 20 77 69 74 68  20 62 61 63 6b 67 72 6f  |ite with backgro|
00012e60  75 6e 64 0d 8e da 14 20  84 52 20 20 20 20 20 52  |und.... .R     R|
00012e70  34 2c 52 34 2c 52 39 0d  8e e4 15 20 84 52 20 20  |4,R4,R9.... .R  |
00012e80  20 20 20 52 35 2c 52 35  2c 52 31 30 0d 8e ee 37  |   R5,R5,R10...7|
00012e90  20 53 54 4d 49 41 20 20  20 52 32 2c 7b 52 33 2d  | STMIA   R2,{R3-|
00012ea0  52 35 7d 20 20 20 20 20  20 20 20 20 20 20 3b 20  |R5}           ; |
00012eb0  73 74 6f 72 65 20 6d 61  73 6b 65 64 20 73 70 72  |store masked spr|
00012ec0  69 74 65 0d 8e f8 06 20  3a 0d 8f 02 1c 20 53 55  |ite.... :.... SU|
00012ed0  42 20 20 20 20 20 52 32  2c 52 32 2c 20 23 79 5f  |B     R2,R2, #y_|
00012ee0  73 68 69 66 74 0d 8f 0c  06 20 3a 0d 8f 16 06 20  |shift.... :.... |
00012ef0  5d 0d 8f 20 06 20 ed 0d  8f 2a 0f 20 5b 4f 50 54  |].. . ...*. [OPT|
00012f00  20 70 61 73 73 25 0d 8f  34 06 20 3a 0d 8f 3e 1e  | pass%..4. :..>.|
00012f10  20 4c 44 52 20 20 20 20  20 52 33 2c 20 73 31 32  | LDR     R3, s12|
00012f20  31 32 5f 63 6f 75 6e 74  65 72 0d 8f 48 16 20 41  |12_counter..H. A|
00012f30  44 44 20 20 20 20 20 52  33 2c 52 33 2c 20 23 31  |DD     R3,R3, #1|
00012f40  0d 8f 52 1e 20 53 54 52  20 20 20 20 20 52 33 2c  |..R. STR     R3,|
00012f50  20 73 31 32 31 32 5f 63  6f 75 6e 74 65 72 0d 8f  | s1212_counter..|
00012f60  5c 13 20 43 4d 50 20 20  20 20 20 52 33 2c 20 23  |\. CMP     R3, #|
00012f70  31 0d 8f 66 1e 20 42 4c  45 20 20 20 20 20 73 31  |1..f. BLE     s1|
00012f80  32 31 32 5f 73 70 72 69  74 65 5f 6c 6f 6f 70 0d  |212_sprite_loop.|
00012f90  8f 70 06 20 3a 0d 8f 7a  1d 20 4c 44 4d 46 44 20  |.p. :..z. LDMFD |
00012fa0  20 20 52 31 33 21 2c 7b  52 30 2d 52 31 32 2c 50  |  R13!,{R0-R12,P|
00012fb0  43 7d 0d 8f 84 06 20 3a  0d 8f 8e 13 20 2e 73 31  |C}.... :.... .s1|
00012fc0  32 31 32 5f 63 6f 75 6e  74 65 72 0d 8f 98 0e 20  |212_counter.... |
00012fd0  45 51 55 44 20 20 20 20  30 0d 8f a2 06 20 3a 0d  |EQUD    0.... :.|
00012fe0  8f ac 12 20 2e 61 64 72  5f 73 70 72 69 74 65 73  |... .adr_sprites|
00012ff0  31 0d 8f b6 37 20 45 51  55 44 20 20 20 20 73 70  |1...7 EQUD    sp|
00013000  72 69 74 65 73 31 25 20  20 20 20 20 20 20 20 20  |rites1%         |
00013010  20 20 20 3b 20 61 64 64  72 65 73 73 20 6f 66 20  |   ; address of |
00013020  73 70 72 69 74 65 73 31  0d 8f c0 0f 20 2e 73 70  |sprites1.... .sp|
00013030  72 5f 73 69 7a 65 31 0d  8f ca 41 20 45 51 55 44  |r_size1...A EQUD|
00013040  20 20 20 20 38 2f 38 2a  31 32 2a 31 32 2a 32 20  |    8/8*12*12*2 |
00013050  20 20 20 20 20 20 20 20  20 3b 20 6c 65 6e 67 74  |         ; lengt|
00013060  68 20 6f 66 20 6f 6e 65  20 73 70 72 69 74 65 31  |h of one sprite1|
00013070  20 2b 20 6d 61 73 6b 31  0d 8f d4 06 20 3a 0d 8f  | + mask1.... :..|
00013080  de 06 20 3a 0d 8f e8 06  20 3a 0d 8f f2 16 20 2e  |.. :.... :.... .|
00013090  70 6c 6f 74 5f 73 70 72  69 74 65 5f 31 32 36 34  |plot_sprite_1264|
000130a0  0d 8f fc 06 20 3a 0d 90  06 1e 20 53 54 4d 46 44  |.... :.... STMFD|
000130b0  20 20 20 52 31 33 21 2c  7b 52 30 2d 52 31 32 2c  |   R13!,{R0-R12,|
000130c0  52 31 34 7d 0d 90 10 06  20 3a 0d 90 1a 31 20 3a  |R14}.... :...1 :|
000130d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000130e0  20 20 20 20 20 20 20 20  20 20 20 20 3b 20 52 30  |            ; R0|
000130f0  20 73 70 72 69 74 65 20  6e 6f 2e 0d 90 24 2e 20  | sprite no...$. |
00013100  3a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |:               |
00013110  20 20 20 20 20 20 20 20  20 20 20 20 20 3b 20 52  |             ; R|
00013120  31 20 78 2d 63 6f 6f 72  64 0d 90 2e 2e 20 3a 20  |1 x-coord.... : |
00013130  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00013140  20 20 20 20 20 20 20 20  20 20 20 3b 20 52 32 20  |           ; R2 |
00013150  79 2d 63 6f 6f 72 64 0d  90 38 06 20 3a 0d 90 42  |y-coord..8. :..B|
00013160  18 20 52 53 42 20 20 20  20 20 52 32 2c 52 32 2c  |. RSB     R2,R2,|
00013170  20 23 32 35 36 0d 90 4c  06 20 3a 0d 90 56 13 20  | #256..L. :..V. |
00013180  43 4d 50 20 20 20 20 20  52 31 2c 20 23 30 0d 90  |CMP     R1, #0..|
00013190  60 1c 20 42 4c 45 20 20  20 20 20 70 73 6d 5f 6e  |`. BLE     psm_n|
000131a0  6f 5f 70 6c 6f 74 31 32  36 34 0d 90 6a 14 20 43  |o_plot1264..j. C|
000131b0  4d 50 20 20 20 20 20 52  32 2c 20 23 33 32 0d 90  |MP     R2, #32..|
000131c0  74 1c 20 42 4c 45 20 20  20 20 20 70 73 6d 5f 6e  |t. BLE     psm_n|
000131d0  6f 5f 70 6c 6f 74 31 32  36 34 0d 90 7e 17 20 43  |o_plot1264..~. C|
000131e0  4d 50 20 20 20 20 20 52  31 2c 20 23 33 32 30 2d  |MP     R1, #320-|
000131f0  38 0d 90 88 1c 20 42 47  45 20 20 20 20 20 70 73  |8.... BGE     ps|
00013200  6d 5f 6e 6f 5f 70 6c 6f  74 31 32 36 34 0d 90 92  |m_no_plot1264...|
00013210  15 20 43 4d 50 20 20 20  20 20 52 32 2c 20 23 32  |. CMP     R2, #2|
00013220  35 36 0d 90 9c 1c 20 42  47 45 20 20 20 20 20 70  |56.... BGE     p|
00013230  73 6d 5f 6e 6f 5f 70 6c  6f 74 31 32 36 34 0d 90  |sm_no_plot1264..|
00013240  a6 19 20 42 20 20 20 20  20 20 20 70 73 6d 5f 70  |.. B       psm_p|
00013250  6c 6f 74 31 32 36 34 0d  90 b0 15 20 2e 70 73 6d  |lot1264.... .psm|
00013260  5f 6e 6f 5f 70 6c 6f 74  31 32 36 34 0d 90 ba 1d  |_no_plot1264....|
00013270  20 4c 44 4d 46 44 20 20  20 52 31 33 21 2c 7b 52  | LDMFD   R13!,{R|
00013280  30 2d 52 31 32 2c 50 43  7d 0d 90 c4 12 20 2e 70  |0-R12,PC}.... .p|
00013290  73 6d 5f 70 6c 6f 74 31  32 36 34 0d 90 ce 06 20  |sm_plot1264.... |
000132a0  3a 0d 90 d8 34 20 80 20  20 20 20 20 52 33 2c 52  |:...4 .     R3,R|
000132b0  31 2c 20 23 25 31 31 20  20 20 20 20 20 20 20 20  |1, #%11         |
000132c0  20 3b 20 63 61 6c 63 75  6c 61 74 65 20 78 20 6f  | ; calculate x o|
000132d0  66 66 73 65 74 0d 90 e2  32 20 4d 4f 56 20 20 20  |ffset...2 MOV   |
000132e0  20 20 52 30 2c 52 30 2c  20 4c 53 4c 20 23 32 20  |  R0,R0, LSL #2 |
000132f0  20 20 20 20 20 20 20 3b  20 72 65 61 6c 69 73 65  |       ; realise|
00013300  20 73 70 72 69 74 65 0d  90 ec 2e 20 41 44 44 20  | sprite.... ADD |
00013310  20 20 20 20 52 30 2c 52  30 2c 20 52 33 20 20 20  |    R0,R0, R3   |
00013320  20 20 20 20 20 20 20 20  20 3b 20 61 64 64 20 6f  |         ; add o|
00013330  66 66 73 65 74 0d 90 f6  33 20 42 49 43 20 20 20  |ffset...3 BIC   |
00013340  20 20 52 31 2c 52 31 2c  20 23 25 31 31 20 20 20  |  R1,R1, #%11   |
00013350  20 20 20 20 20 20 20 3b  20 6d 61 6b 65 20 78 20  |       ; make x |
00013360  64 69 76 20 62 79 20 34  0d 91 00 06 20 3a 0d 91  |div by 4.... :..|
00013370  0a 35 20 4d 4f 56 20 20  20 20 20 52 37 2c 20 23  |.5 MOV     R7, #|
00013380  78 5f 73 68 69 66 74 20  20 20 20 20 20 20 20 20  |x_shift         |
00013390  3b 20 67 65 74 20 73 63  72 65 65 6e 20 73 68 69  |; get screen shi|
000133a0  66 74 73 0d 91 14 19 20  4d 4f 56 20 20 20 20 20  |fts.... MOV     |
000133b0  52 38 2c 20 23 79 5f 73  68 69 66 74 0d 91 1e 40  |R8, #y_shift...@|
000133c0  20 4c 44 52 20 20 20 20  20 52 39 2c 20 73 70 72  | LDR     R9, spr|
000133d0  69 74 65 5f 61 64 72 5f  73 63 72 65 65 6e 73 74  |ite_adr_screenst|
000133e0  6f 72 65 3b 20 67 65 74  20 73 63 72 65 65 6e 73  |ore; get screens|
000133f0  74 6f 72 65 20 61 64 64  72 65 73 73 0d 91 28 14  |tore address..(.|
00013400  20 4c 44 52 20 20 20 20  20 52 39 2c 5b 52 39 5d  | LDR     R9,[R9]|
00013410  0d 91 32 06 20 3a 0d 91  3c 18 20 4d 4c 41 20 20  |..2. :..<. MLA  |
00013420  20 20 20 52 33 2c 52 37  2c 52 31 2c 52 39 0d 91  |   R3,R7,R1,R9..|
00013430  46 18 20 4d 4c 41 20 20  20 20 20 52 32 2c 52 38  |F. MLA     R2,R8|
00013440  2c 52 32 2c 52 33 0d 91  50 06 20 3a 0d 91 5a 3d  |,R2,R3..P. :..Z=|
00013450  20 4c 44 52 20 20 20 20  20 52 37 2c 20 61 64 72  | LDR     R7, adr|
00013460  5f 73 70 72 69 74 65 73  33 20 20 20 20 20 3b 20  |_sprites3     ; |
00013470  67 65 74 20 73 74 61 72  74 20 61 64 64 72 65 73  |get start addres|
00013480  73 20 6f 66 20 64 61 74  61 0d 91 64 43 20 4c 44  |s of data..dC LD|
00013490  52 20 20 20 20 20 52 38  2c 20 73 70 72 5f 73 69  |R     R8, spr_si|
000134a0  7a 65 33 20 20 20 20 20  20 20 20 3b 20 67 65 74  |ze3        ; get|
000134b0  20 6c 65 6e 67 74 68 20  6f 66 20 64 61 74 61 20  | length of data |
000134c0  66 6f 72 20 31 20 73 70  72 69 74 65 0d 91 6e 3e  |for 1 sprite..n>|
000134d0  20 4d 4c 41 20 20 20 20  20 52 30 2c 52 38 2c 52  | MLA     R0,R8,R|
000134e0  30 2c 52 37 20 20 20 20  20 20 20 20 20 20 3b 20  |0,R7          ; |
000134f0  63 61 6c 63 75 6c 61 74  65 20 70 6f 73 69 74 69  |calculate positi|
00013500  6f 6e 20 6f 66 20 64 61  74 61 0d 91 78 3e 20 41  |on of data..x> A|
00013510  44 44 20 20 20 20 20 52  31 2c 52 30 2c 52 38 2c  |DD     R1,R0,R8,|
00013520  20 4c 53 52 20 23 31 20  20 20 20 20 3b 20 63 61  | LSR #1     ; ca|
00013530  6c 63 75 6c 61 74 65 20  70 6f 73 69 74 69 6f 6e  |lculate position|
00013540  20 6f 66 20 6d 61 73 6b  0d 91 82 06 20 3a 0d 91  | of mask.... :..|
00013550  8c 13 20 4d 4f 56 20 20  20 20 20 52 33 2c 20 23  |.. MOV     R3, #|
00013560  31 0d 91 96 1e 20 53 54  52 20 20 20 20 20 52 33  |1.... STR     R3|
00013570  2c 20 73 31 32 36 34 5f  63 6f 75 6e 74 65 72 0d  |, s1264_counter.|
00013580  91 a0 06 20 3a 0d 91 aa  17 20 2e 73 31 32 36 34  |... :.... .s1264|
00013590  5f 73 70 72 69 74 65 5f  6c 6f 6f 70 0d 91 b4 06  |_sprite_loop....|
000135a0  20 3a 0d 91 be 06 20 5d  0d 91 c8 0f 20 e3 20 61  | :.... ].... . a|
000135b0  25 3d 31 20 b8 20 38 0d  91 d2 0f 20 5b 4f 50 54  |%=1 . 8.... [OPT|
000135c0  20 70 61 73 73 25 0d 91  dc 06 20 3a 0d 91 e6 37  | pass%.... :...7|
000135d0  20 4c 44 4d 49 41 20 20  20 52 32 2c 7b 52 33 2d  | LDMIA   R2,{R3-|
000135e0  52 35 7d 20 20 20 20 20  20 20 20 20 20 20 3b 20  |R5}           ; |
000135f0  67 65 74 20 73 6f 6d 65  20 62 61 63 6b 67 72 6f  |get some backgro|
00013600  75 6e 64 0d 91 f0 31 20  4c 44 4d 49 41 20 20 20  |und...1 LDMIA   |
00013610  52 31 21 2c 7b 52 38 2d  52 31 30 7d 20 20 20 20  |R1!,{R8-R10}    |
00013620  20 20 20 20 20 3b 20 67  65 74 20 73 6f 6d 65 20  |     ; get some |
00013630  6d 61 73 6b 0d 91 fa 35  20 80 20 20 20 20 20 52  |mask...5 .     R|
00013640  33 2c 52 33 2c 52 38 20  20 20 20 20 20 20 20 20  |3,R3,R8         |
00013650  20 20 20 20 3b 20 6d 61  73 6b 20 6f 66 66 20 62  |    ; mask off b|
00013660  61 63 6b 67 72 6f 75 6e  64 0d 92 04 13 20 80 20  |ackground.... . |
00013670  20 20 20 20 52 34 2c 52  34 2c 52 39 0d 92 0e 14  |    R4,R4,R9....|
00013680  20 80 20 20 20 20 20 52  35 2c 52 35 2c 52 31 30  | .     R5,R5,R10|
00013690  0d 92 18 33 20 4c 44 4d  49 41 20 20 20 52 30 21  |...3 LDMIA   R0!|
000136a0  2c 7b 52 38 2d 52 31 30  7d 20 20 20 20 20 20 20  |,{R8-R10}       |
000136b0  20 20 3b 20 67 65 74 20  73 6f 6d 65 20 73 70 72  |  ; get some spr|
000136c0  69 74 65 0d 92 22 3f 20  84 52 20 20 20 20 20 52  |ite.."? .R     R|
000136d0  33 2c 52 33 2c 52 38 20  20 20 20 20 20 20 20 20  |3,R3,R8         |
000136e0  20 20 20 20 3b 20 6d 65  72 67 65 20 73 70 72 69  |    ; merge spri|
000136f0  74 65 20 77 69 74 68 20  62 61 63 6b 67 72 6f 75  |te with backgrou|
00013700  6e 64 0d 92 2c 14 20 84  52 20 20 20 20 20 52 34  |nd..,. .R     R4|
00013710  2c 52 34 2c 52 39 0d 92  36 15 20 84 52 20 20 20  |,R4,R9..6. .R   |
00013720  20 20 52 35 2c 52 35 2c  52 31 30 0d 92 40 37 20  |  R5,R5,R10..@7 |
00013730  53 54 4d 49 41 20 20 20  52 32 2c 7b 52 33 2d 52  |STMIA   R2,{R3-R|
00013740  35 7d 20 20 20 20 20 20  20 20 20 20 20 3b 20 73  |5}           ; s|
00013750  74 6f 72 65 20 6d 61 73  6b 65 64 20 73 70 72 69  |tore masked spri|
00013760  74 65 0d 92 4a 06 20 3a  0d 92 54 1c 20 53 55 42  |te..J. :..T. SUB|
00013770  20 20 20 20 20 52 32 2c  52 32 2c 20 23 79 5f 73  |     R2,R2, #y_s|
00013780  68 69 66 74 0d 92 5e 06  20 3a 0d 92 68 06 20 5d  |hift..^. :..h. ]|
00013790  0d 92 72 06 20 ed 0d 92  7c 0f 20 5b 4f 50 54 20  |..r. ...|. [OPT |
000137a0  70 61 73 73 25 0d 92 86  06 20 3a 0d 92 90 1e 20  |pass%.... :.... |
000137b0  4c 44 52 20 20 20 20 20  52 33 2c 20 73 31 32 36  |LDR     R3, s126|
000137c0  34 5f 63 6f 75 6e 74 65  72 0d 92 9a 16 20 41 44  |4_counter.... AD|
000137d0  44 20 20 20 20 20 52 33  2c 52 33 2c 20 23 31 0d  |D     R3,R3, #1.|
000137e0  92 a4 1e 20 53 54 52 20  20 20 20 20 52 33 2c 20  |... STR     R3, |
000137f0  73 31 32 36 34 5f 63 6f  75 6e 74 65 72 0d 92 ae  |s1264_counter...|
00013800  13 20 43 4d 50 20 20 20  20 20 52 33 2c 20 23 38  |. CMP     R3, #8|
00013810  0d 92 b8 1e 20 42 4c 45  20 20 20 20 20 73 31 32  |.... BLE     s12|
00013820  36 34 5f 73 70 72 69 74  65 5f 6c 6f 6f 70 0d 92  |64_sprite_loop..|
00013830  c2 06 20 3a 0d 92 cc 1d  20 4c 44 4d 46 44 20 20  |.. :.... LDMFD  |
00013840  20 52 31 33 21 2c 7b 52  30 2d 52 31 32 2c 50 43  | R13!,{R0-R12,PC|
00013850  7d 0d 92 d6 06 20 3a 0d  92 e0 13 20 2e 73 31 32  |}.... :.... .s12|
00013860  36 34 5f 63 6f 75 6e 74  65 72 0d 92 ea 0e 20 45  |64_counter.... E|
00013870  51 55 44 20 20 20 20 30  0d 92 f4 06 20 3a 0d 92  |QUD    0.... :..|
00013880  fe 12 20 2e 61 64 72 5f  73 70 72 69 74 65 73 33  |.. .adr_sprites3|
00013890  0d 93 08 37 20 45 51 55  44 20 20 20 20 73 70 72  |...7 EQUD    spr|
000138a0  69 74 65 73 33 25 20 20  20 20 20 20 20 20 20 20  |ites3%          |
000138b0  20 20 3b 20 61 64 64 72  65 73 73 20 6f 66 20 73  |  ; address of s|
000138c0  70 72 69 74 65 73 31 0d  93 12 0f 20 2e 73 70 72  |prites1.... .spr|
000138d0  5f 73 69 7a 65 33 0d 93  1c 41 20 45 51 55 44 20  |_size3...A EQUD |
000138e0  20 20 20 38 2f 38 2a 31  32 2a 36 34 2a 32 20 20  |   8/8*12*64*2  |
000138f0  20 20 20 20 20 20 20 20  3b 20 6c 65 6e 67 74 68  |        ; length|
00013900  20 6f 66 20 6f 6e 65 20  73 70 72 69 74 65 31 20  | of one sprite1 |
00013910  2b 20 6d 61 73 6b 31 0d  93 26 1c 20 2e 73 70 72  |+ mask1..&. .spr|
00013920  69 74 65 5f 61 64 72 5f  73 63 72 65 65 6e 73 74  |ite_adr_screenst|
00013930  6f 72 65 0d 93 30 18 20  45 51 55 44 20 20 20 20  |ore..0. EQUD    |
00013940  73 63 72 65 65 6e 73 74  6f 72 65 0d 93 3a 06 20  |screenstore..:. |
00013950  3a 0d 93 44 06 20 3a 0d  93 4e 06 20 3a 0d 93 58  |:..D. :..N. :..X|
00013960  16 20 2e 70 6c 6f 74 5f  73 70 72 69 74 65 5f 32  |. .plot_sprite_2|
00013970  30 31 36 0d 93 62 06 20  3a 0d 93 6c 1e 20 53 54  |016..b. :..l. ST|
00013980  4d 46 44 20 20 20 52 31  33 21 2c 7b 52 30 2d 52  |MFD   R13!,{R0-R|
00013990  31 32 2c 52 31 34 7d 0d  93 76 06 20 3a 0d 93 80  |12,R14}..v. :...|
000139a0  31 20 3a 20 20 20 20 20  20 20 20 20 20 20 20 20  |1 :             |
000139b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |               ;|
000139c0  20 52 30 20 73 70 72 69  74 65 20 6e 6f 2e 0d 93  | R0 sprite no...|
000139d0  8a 2e 20 3a 20 20 20 20  20 20 20 20 20 20 20 20  |.. :            |
000139e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000139f0  3b 20 52 31 20 78 2d 63  6f 6f 72 64 0d 93 94 2e  |; R1 x-coord....|
00013a00  20 3a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  | :              |
00013a10  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3b 20  |              ; |
00013a20  52 32 20 79 2d 63 6f 6f  72 64 0d 93 9e 06 20 3a  |R2 y-coord.... :|
00013a30  0d 93 a8 18 20 52 53 42  20 20 20 20 20 52 32 2c  |.... RSB     R2,|
00013a40  52 32 2c 20 23 32 35 36  0d 93 b2 06 20 3a 0d 93  |R2, #256.... :..|
00013a50  bc 13 20 43 4d 50 20 20  20 20 20 52 31 2c 20 23  |.. CMP     R1, #|
00013a60  30 0d 93 c6 1c 20 42 4c  45 20 20 20 20 20 70 73  |0.... BLE     ps|
00013a70  6d 5f 6e 6f 5f 70 6c 6f  74 32 30 31 36 0d 93 d0  |m_no_plot2016...|
00013a80  14 20 43 4d 50 20 20 20  20 20 52 32 2c 20 23 31  |. CMP     R2, #1|
00013a90  36 0d 93 da 1c 20 42 4c  45 20 20 20 20 20 70 73  |6.... BLE     ps|
00013aa0  6d 5f 6e 6f 5f 70 6c 6f  74 32 30 31 36 0d 93 e4  |m_no_plot2016...|
00013ab0  18 20 43 4d 50 20 20 20  20 20 52 31 2c 20 23 33  |. CMP     R1, #3|
00013ac0  32 30 2d 31 36 0d 93 ee  1c 20 42 47 45 20 20 20  |20-16.... BGE   |
00013ad0  20 20 70 73 6d 5f 6e 6f  5f 70 6c 6f 74 32 30 31  |  psm_no_plot201|
00013ae0  36 0d 93 f8 15 20 43 4d  50 20 20 20 20 20 52 32  |6.... CMP     R2|
00013af0  2c 20 23 32 35 36 0d 94  02 1c 20 42 47 45 20 20  |, #256.... BGE  |
00013b00  20 20 20 70 73 6d 5f 6e  6f 5f 70 6c 6f 74 32 30  |   psm_no_plot20|
00013b10  31 36 0d 94 0c 19 20 42  20 20 20 20 20 20 20 70  |16.... B       p|
00013b20  73 6d 5f 70 6c 6f 74 32  30 31 36 0d 94 16 15 20  |sm_plot2016.... |
00013b30  2e 70 73 6d 5f 6e 6f 5f  70 6c 6f 74 32 30 31 36  |.psm_no_plot2016|
00013b40  0d 94 20 1d 20 4c 44 4d  46 44 20 20 20 52 31 33  |.. . LDMFD   R13|
00013b50  21 2c 7b 52 30 2d 52 31  32 2c 50 43 7d 0d 94 2a  |!,{R0-R12,PC}..*|
00013b60  12 20 2e 70 73 6d 5f 70  6c 6f 74 32 30 31 36 0d  |. .psm_plot2016.|
00013b70  94 34 06 20 3a 0d 94 3e  34 20 80 20 20 20 20 20  |.4. :..>4 .     |
00013b80  52 33 2c 52 31 2c 20 23  25 31 31 20 20 20 20 20  |R3,R1, #%11     |
00013b90  20 20 20 20 20 3b 20 63  61 6c 63 75 6c 61 74 65  |     ; calculate|
00013ba0  20 78 20 6f 66 66 73 65  74 0d 94 48 32 20 4d 4f  | x offset..H2 MO|
00013bb0  56 20 20 20 20 20 52 30  2c 52 30 2c 20 4c 53 4c  |V     R0,R0, LSL|
00013bc0  20 23 32 20 20 20 20 20  20 20 20 3b 20 72 65 61  | #2        ; rea|
00013bd0  6c 69 73 65 20 73 70 72  69 74 65 0d 94 52 2e 20  |lise sprite..R. |
00013be0  41 44 44 20 20 20 20 20  52 30 2c 52 30 2c 20 52  |ADD     R0,R0, R|
00013bf0  33 20 20 20 20 20 20 20  20 20 20 20 20 3b 20 61  |3            ; a|
00013c00  64 64 20 6f 66 66 73 65  74 0d 94 5c 33 20 42 49  |dd offset..\3 BI|
00013c10  43 20 20 20 20 20 52 31  2c 52 31 2c 20 23 25 31  |C     R1,R1, #%1|
00013c20  31 20 20 20 20 20 20 20  20 20 20 3b 20 6d 61 6b  |1          ; mak|
00013c30  65 20 78 20 64 69 76 20  62 79 20 34 0d 94 66 06  |e x div by 4..f.|
00013c40  20 3a 0d 94 70 35 20 4d  4f 56 20 20 20 20 20 52  | :..p5 MOV     R|
00013c50  37 2c 20 23 78 5f 73 68  69 66 74 20 20 20 20 20  |7, #x_shift     |
00013c60  20 20 20 20 3b 20 67 65  74 20 73 63 72 65 65 6e  |    ; get screen|
00013c70  20 73 68 69 66 74 73 0d  94 7a 19 20 4d 4f 56 20  | shifts..z. MOV |
00013c80  20 20 20 20 52 38 2c 20  23 79 5f 73 68 69 66 74  |    R8, #y_shift|
00013c90  0d 94 84 40 20 4c 44 52  20 20 20 20 20 52 39 2c  |...@ LDR     R9,|
00013ca0  20 73 70 72 69 74 65 5f  61 64 72 5f 73 63 72 65  | sprite_adr_scre|
00013cb0  65 6e 73 74 6f 72 65 3b  20 67 65 74 20 73 63 72  |enstore; get scr|
00013cc0  65 65 6e 73 74 6f 72 65  20 61 64 64 72 65 73 73  |eenstore address|
00013cd0  0d 94 8e 14 20 4c 44 52  20 20 20 20 20 52 39 2c  |.... LDR     R9,|
00013ce0  5b 52 39 5d 0d 94 98 06  20 3a 0d 94 a2 18 20 4d  |[R9].... :.... M|
00013cf0  4c 41 20 20 20 20 20 52  33 2c 52 37 2c 52 31 2c  |LA     R3,R7,R1,|
00013d00  52 39 0d 94 ac 18 20 4d  4c 41 20 20 20 20 20 52  |R9.... MLA     R|
00013d10  32 2c 52 38 2c 52 32 2c  52 33 0d 94 b6 06 20 3a  |2,R8,R2,R3.... :|
00013d20  0d 94 c0 3d 20 4c 44 52  20 20 20 20 20 52 37 2c  |...= LDR     R7,|
00013d30  20 61 64 72 5f 73 70 72  69 74 65 73 32 20 20 20  | adr_sprites2   |
00013d40  20 20 3b 20 67 65 74 20  73 74 61 72 74 20 61 64  |  ; get start ad|
00013d50  64 72 65 73 73 20 6f 66  20 64 61 74 61 0d 94 ca  |dress of data...|
00013d60  43 20 4c 44 52 20 20 20  20 20 52 38 2c 20 73 70  |C LDR     R8, sp|
00013d70  72 5f 73 69 7a 65 32 20  20 20 20 20 20 20 20 3b  |r_size2        ;|
00013d80  20 67 65 74 20 6c 65 6e  67 74 68 20 6f 66 20 64  | get length of d|
00013d90  61 74 61 20 66 6f 72 20  31 20 73 70 72 69 74 65  |ata for 1 sprite|
00013da0  0d 94 d4 3e 20 4d 4c 41  20 20 20 20 20 52 30 2c  |...> MLA     R0,|
00013db0  52 38 2c 52 30 2c 52 37  20 20 20 20 20 20 20 20  |R8,R0,R7        |
00013dc0  20 20 3b 20 63 61 6c 63  75 6c 61 74 65 20 70 6f  |  ; calculate po|
00013dd0  73 69 74 69 6f 6e 20 6f  66 20 64 61 74 61 0d 94  |sition of data..|
00013de0  de 3e 20 41 44 44 20 20  20 20 20 52 31 2c 52 30  |.> ADD     R1,R0|
00013df0  2c 52 38 2c 20 4c 53 52  20 23 31 20 20 20 20 20  |,R8, LSR #1     |
00013e00  3b 20 63 61 6c 63 75 6c  61 74 65 20 70 6f 73 69  |; calculate posi|
00013e10  74 69 6f 6e 20 6f 66 20  6d 61 73 6b 0d 94 e8 06  |tion of mask....|
00013e20  20 3a 0d 94 f2 13 20 4d  4f 56 20 20 20 20 20 52  | :.... MOV     R|
00013e30  33 2c 20 23 31 0d 94 fc  1e 20 53 54 52 20 20 20  |3, #1.... STR   |
00013e40  20 20 52 33 2c 20 73 32  30 31 36 5f 63 6f 75 6e  |  R3, s2016_coun|
00013e50  74 65 72 0d 95 06 06 20  3a 0d 95 10 17 20 2e 73  |ter.... :.... .s|
00013e60  32 30 31 36 5f 73 70 72  69 74 65 5f 6c 6f 6f 70  |2016_sprite_loop|
00013e70  0d 95 1a 06 20 3a 0d 95  24 06 20 5d 0d 95 2e 0f  |.... :..$. ]....|
00013e80  20 e3 20 61 25 3d 31 20  b8 20 34 0d 95 38 0f 20  | . a%=1 . 4..8. |
00013e90  5b 4f 50 54 20 70 61 73  73 25 0d 95 42 06 20 3a  |[OPT pass%..B. :|
00013ea0  0d 95 4c 37 20 4c 44 4d  49 41 20 20 20 52 32 2c  |..L7 LDMIA   R2,|
00013eb0  7b 52 33 2d 52 37 7d 20  20 20 20 20 20 20 20 20  |{R3-R7}         |
00013ec0  20 20 3b 20 67 65 74 20  73 6f 6d 65 20 62 61 63  |  ; get some bac|
00013ed0  6b 67 72 6f 75 6e 64 0d  95 56 31 20 4c 44 4d 49  |kground..V1 LDMI|
00013ee0  41 20 20 20 52 31 21 2c  7b 52 38 2d 52 31 32 7d  |A   R1!,{R8-R12}|
00013ef0  20 20 20 20 20 20 20 20  20 3b 20 67 65 74 20 73  |         ; get s|
00013f00  6f 6d 65 20 6d 61 73 6b  0d 95 60 35 20 80 20 20  |ome mask..`5 .  |
00013f10  20 20 20 52 33 2c 52 33  2c 52 38 20 20 20 20 20  |   R3,R3,R8     |
00013f20  20 20 20 20 20 20 20 20  3b 20 6d 61 73 6b 20 6f  |        ; mask o|
00013f30  66 66 20 62 61 63 6b 67  72 6f 75 6e 64 0d 95 6a  |ff background..j|
00013f40  13 20 80 20 20 20 20 20  52 34 2c 52 34 2c 52 39  |. .     R4,R4,R9|
00013f50  0d 95 74 14 20 80 20 20  20 20 20 52 35 2c 52 35  |..t. .     R5,R5|
00013f60  2c 52 31 30 0d 95 7e 14  20 80 20 20 20 20 20 52  |,R10..~. .     R|
00013f70  36 2c 52 36 2c 52 31 31  0d 95 88 14 20 80 20 20  |6,R6,R11.... .  |
00013f80  20 20 20 52 37 2c 52 37  2c 52 31 32 0d 95 92 33  |   R7,R7,R12...3|
00013f90  20 4c 44 4d 49 41 20 20  20 52 30 21 2c 7b 52 38  | LDMIA   R0!,{R8|
00013fa0  2d 52 31 32 7d 20 20 20  20 20 20 20 20 20 3b 20  |-R12}         ; |
00013fb0  67 65 74 20 73 6f 6d 65  20 73 70 72 69 74 65 0d  |get some sprite.|
00013fc0  95 9c 3f 20 84 52 20 20  20 20 20 52 33 2c 52 33  |..? .R     R3,R3|
00013fd0  2c 52 38 20 20 20 20 20  20 20 20 20 20 20 20 20  |,R8             |
00013fe0  3b 20 6d 65 72 67 65 20  73 70 72 69 74 65 20 77  |; merge sprite w|
00013ff0  69 74 68 20 62 61 63 6b  67 72 6f 75 6e 64 0d 95  |ith background..|
00014000  a6 14 20 84 52 20 20 20  20 20 52 34 2c 52 34 2c  |.. .R     R4,R4,|
00014010  52 39 0d 95 b0 15 20 84  52 20 20 20 20 20 52 35  |R9.... .R     R5|
00014020  2c 52 35 2c 52 31 30 0d  95 ba 15 20 84 52 20 20  |,R5,R10.... .R  |
00014030  20 20 20 52 36 2c 52 36  2c 52 31 31 0d 95 c4 15  |   R6,R6,R11....|
00014040  20 84 52 20 20 20 20 20  52 37 2c 52 37 2c 52 31  | .R     R7,R7,R1|
00014050  32 0d 95 ce 37 20 53 54  4d 49 41 20 20 20 52 32  |2...7 STMIA   R2|
00014060  2c 7b 52 33 2d 52 37 7d  20 20 20 20 20 20 20 20  |,{R3-R7}        |
00014070  20 20 20 3b 20 73 74 6f  72 65 20 6d 61 73 6b 65  |   ; store maske|
00014080  64 20 73 70 72 69 74 65  0d 95 d8 06 20 3a 0d 95  |d sprite.... :..|
00014090  e2 1c 20 53 55 42 20 20  20 20 20 52 32 2c 52 32  |.. SUB     R2,R2|
000140a0  2c 20 23 79 5f 73 68 69  66 74 0d 95 ec 06 20 3a  |, #y_shift.... :|
000140b0  0d 95 f6 06 20 5d 0d 96  00 06 20 ed 0d 96 0a 0f  |.... ].... .....|
000140c0  20 5b 4f 50 54 20 70 61  73 73 25 0d 96 14 06 20  | [OPT pass%.... |
000140d0  3a 0d 96 1e 1e 20 4c 44  52 20 20 20 20 20 52 33  |:.... LDR     R3|
000140e0  2c 20 73 32 30 31 36 5f  63 6f 75 6e 74 65 72 0d  |, s2016_counter.|
000140f0  96 28 16 20 41 44 44 20  20 20 20 20 52 33 2c 52  |.(. ADD     R3,R|
00014100  33 2c 20 23 31 0d 96 32  1e 20 53 54 52 20 20 20  |3, #1..2. STR   |
00014110  20 20 52 33 2c 20 73 32  30 31 36 5f 63 6f 75 6e  |  R3, s2016_coun|
00014120  74 65 72 0d 96 3c 13 20  43 4d 50 20 20 20 20 20  |ter..<. CMP     |
00014130  52 33 2c 20 23 34 0d 96  46 1e 20 42 4c 45 20 20  |R3, #4..F. BLE  |
00014140  20 20 20 73 32 30 31 36  5f 73 70 72 69 74 65 5f  |   s2016_sprite_|
00014150  6c 6f 6f 70 0d 96 50 06  20 3a 0d 96 5a 1d 20 4c  |loop..P. :..Z. L|
00014160  44 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 30 2d  |DMFD   R13!,{R0-|
00014170  52 31 32 2c 50 43 7d 0d  96 64 06 20 3a 0d 96 6e  |R12,PC}..d. :..n|
00014180  13 20 2e 73 32 30 31 36  5f 63 6f 75 6e 74 65 72  |. .s2016_counter|
00014190  0d 96 78 0e 20 45 51 55  44 20 20 20 20 30 0d 96  |..x. EQUD    0..|
000141a0  82 06 20 3a 0d 96 8c 12  20 2e 61 64 72 5f 73 70  |.. :.... .adr_sp|
000141b0  72 69 74 65 73 32 0d 96  96 37 20 45 51 55 44 20  |rites2...7 EQUD |
000141c0  20 20 20 73 70 72 69 74  65 73 32 25 20 20 20 20  |   sprites2%    |
000141d0  20 20 20 20 20 20 20 20  3b 20 61 64 64 72 65 73  |        ; addres|
000141e0  73 20 6f 66 20 73 70 72  69 74 65 73 32 0d 96 a0  |s of sprites2...|
000141f0  0f 20 2e 73 70 72 5f 73  69 7a 65 32 0d 96 aa 41  |. .spr_size2...A|
00014200  20 45 51 55 44 20 20 20  20 38 2f 38 2a 31 36 2a  | EQUD    8/8*16*|
00014210  32 30 2a 32 20 20 20 20  20 20 20 20 20 20 3b 20  |20*2          ; |
00014220  6c 65 6e 67 74 68 20 6f  66 20 6f 6e 65 20 73 70  |length of one sp|
00014230  72 69 74 65 32 20 2b 20  6d 61 73 6b 32 0d 96 b4  |rite2 + mask2...|
00014240  06 20 3a 0d 96 be 06 20  3a 0d 96 c8 06 20 3a 0d  |. :.... :.... :.|
00014250  96 d2 16 20 2e 70 6c 6f  74 5f 73 70 72 69 74 65  |... .plot_sprite|
00014260  5f 30 38 30 34 0d 96 dc  06 20 3a 0d 96 e6 1e 20  |_0804.... :.... |
00014270  53 54 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 30  |STMFD   R13!,{R0|
00014280  2d 52 31 32 2c 52 31 34  7d 0d 96 f0 06 20 3a 0d  |-R12,R14}.... :.|
00014290  96 fa 31 20 3a 20 20 20  20 20 20 20 20 20 20 20  |..1 :           |
000142a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000142b0  20 3b 20 52 30 20 73 70  72 69 74 65 20 6e 6f 2e  | ; R0 sprite no.|
000142c0  0d 97 04 2e 20 3a 20 20  20 20 20 20 20 20 20 20  |.... :          |
000142d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000142e0  20 20 3b 20 52 31 20 78  2d 63 6f 6f 72 64 0d 97  |  ; R1 x-coord..|
000142f0  0e 2e 20 3a 20 20 20 20  20 20 20 20 20 20 20 20  |.. :            |
00014300  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00014310  3b 20 52 32 20 79 2d 63  6f 6f 72 64 0d 97 18 06  |; R2 y-coord....|
00014320  20 3a 0d 97 22 18 20 52  53 42 20 20 20 20 20 52  | :..". RSB     R|
00014330  32 2c 52 32 2c 20 23 32  35 36 0d 97 2c 06 20 3a  |2,R2, #256..,. :|
00014340  0d 97 36 13 20 43 4d 50  20 20 20 20 20 52 31 2c  |..6. CMP     R1,|
00014350  20 23 30 0d 97 40 1c 20  42 4c 45 20 20 20 20 20  | #0..@. BLE     |
00014360  70 73 6d 5f 6e 6f 5f 70  6c 6f 74 30 38 30 34 0d  |psm_no_plot0804.|
00014370  97 4a 13 20 43 4d 50 20  20 20 20 20 52 32 2c 20  |.J. CMP     R2, |
00014380  23 34 0d 97 54 1c 20 42  4c 45 20 20 20 20 20 70  |#4..T. BLE     p|
00014390  73 6d 5f 6e 6f 5f 70 6c  6f 74 30 38 30 34 0d 97  |sm_no_plot0804..|
000143a0  5e 17 20 43 4d 50 20 20  20 20 20 52 31 2c 20 23  |^. CMP     R1, #|
000143b0  33 32 30 2d 34 0d 97 68  1c 20 42 47 45 20 20 20  |320-4..h. BGE   |
000143c0  20 20 70 73 6d 5f 6e 6f  5f 70 6c 6f 74 30 38 30  |  psm_no_plot080|
000143d0  34 0d 97 72 15 20 43 4d  50 20 20 20 20 20 52 32  |4..r. CMP     R2|
000143e0  2c 20 23 32 35 36 0d 97  7c 1c 20 42 47 45 20 20  |, #256..|. BGE  |
000143f0  20 20 20 70 73 6d 5f 6e  6f 5f 70 6c 6f 74 30 38  |   psm_no_plot08|
00014400  30 34 0d 97 86 19 20 42  20 20 20 20 20 20 20 70  |04.... B       p|
00014410  73 6d 5f 70 6c 6f 74 30  38 30 34 0d 97 90 15 20  |sm_plot0804.... |
00014420  2e 70 73 6d 5f 6e 6f 5f  70 6c 6f 74 30 38 30 34  |.psm_no_plot0804|
00014430  0d 97 9a 1d 20 4c 44 4d  46 44 20 20 20 52 31 33  |.... LDMFD   R13|
00014440  21 2c 7b 52 30 2d 52 31  32 2c 50 43 7d 0d 97 a4  |!,{R0-R12,PC}...|
00014450  12 20 2e 70 73 6d 5f 70  6c 6f 74 30 38 30 34 0d  |. .psm_plot0804.|
00014460  97 ae 06 20 3a 0d 97 b8  34 20 80 20 20 20 20 20  |... :...4 .     |
00014470  52 33 2c 52 31 2c 20 23  25 31 31 20 20 20 20 20  |R3,R1, #%11     |
00014480  20 20 20 20 20 3b 20 63  61 6c 63 75 6c 61 74 65  |     ; calculate|
00014490  20 78 20 6f 66 66 73 65  74 0d 97 c2 32 20 4d 4f  | x offset...2 MO|
000144a0  56 20 20 20 20 20 52 30  2c 52 30 2c 20 4c 53 4c  |V     R0,R0, LSL|
000144b0  20 23 32 20 20 20 20 20  20 20 20 3b 20 72 65 61  | #2        ; rea|
000144c0  6c 69 73 65 20 73 70 72  69 74 65 0d 97 cc 2e 20  |lise sprite.... |
000144d0  41 44 44 20 20 20 20 20  52 30 2c 52 30 2c 20 52  |ADD     R0,R0, R|
000144e0  33 20 20 20 20 20 20 20  20 20 20 20 20 3b 20 61  |3            ; a|
000144f0  64 64 20 6f 66 66 73 65  74 0d 97 d6 33 20 42 49  |dd offset...3 BI|
00014500  43 20 20 20 20 20 52 31  2c 52 31 2c 20 23 25 31  |C     R1,R1, #%1|
00014510  31 20 20 20 20 20 20 20  20 20 20 3b 20 6d 61 6b  |1          ; mak|
00014520  65 20 78 20 64 69 76 20  62 79 20 34 0d 97 e0 06  |e x div by 4....|
00014530  20 3a 0d 97 ea 35 20 4d  4f 56 20 20 20 20 20 52  | :...5 MOV     R|
00014540  37 2c 20 23 78 5f 73 68  69 66 74 20 20 20 20 20  |7, #x_shift     |
00014550  20 20 20 20 3b 20 67 65  74 20 73 63 72 65 65 6e  |    ; get screen|
00014560  20 73 68 69 66 74 73 0d  97 f4 19 20 4d 4f 56 20  | shifts.... MOV |
00014570  20 20 20 20 52 38 2c 20  23 79 5f 73 68 69 66 74  |    R8, #y_shift|
00014580  0d 97 fe 40 20 4c 44 52  20 20 20 20 20 52 39 2c  |...@ LDR     R9,|
00014590  20 73 70 72 69 74 65 5f  61 64 72 5f 73 63 72 65  | sprite_adr_scre|
000145a0  65 6e 73 74 6f 72 65 3b  20 67 65 74 20 73 63 72  |enstore; get scr|
000145b0  65 65 6e 73 74 6f 72 65  20 61 64 64 72 65 73 73  |eenstore address|
000145c0  0d 98 08 14 20 4c 44 52  20 20 20 20 20 52 39 2c  |.... LDR     R9,|
000145d0  5b 52 39 5d 0d 98 12 06  20 3a 0d 98 1c 18 20 4d  |[R9].... :.... M|
000145e0  4c 41 20 20 20 20 20 52  33 2c 52 37 2c 52 31 2c  |LA     R3,R7,R1,|
000145f0  52 39 0d 98 26 18 20 4d  4c 41 20 20 20 20 20 52  |R9..&. MLA     R|
00014600  32 2c 52 38 2c 52 32 2c  52 33 0d 98 30 06 20 3a  |2,R8,R2,R3..0. :|
00014610  0d 98 3a 3d 20 4c 44 52  20 20 20 20 20 52 37 2c  |..:= LDR     R7,|
00014620  20 61 64 72 5f 73 70 72  69 74 65 73 34 20 20 20  | adr_sprites4   |
00014630  20 20 3b 20 67 65 74 20  73 74 61 72 74 20 61 64  |  ; get start ad|
00014640  64 72 65 73 73 20 6f 66  20 64 61 74 61 0d 98 44  |dress of data..D|
00014650  43 20 4c 44 52 20 20 20  20 20 52 38 2c 20 73 70  |C LDR     R8, sp|
00014660  72 5f 73 69 7a 65 34 20  20 20 20 20 20 20 20 3b  |r_size4        ;|
00014670  20 67 65 74 20 6c 65 6e  67 74 68 20 6f 66 20 64  | get length of d|
00014680  61 74 61 20 66 6f 72 20  31 20 73 70 72 69 74 65  |ata for 1 sprite|
00014690  0d 98 4e 3e 20 4d 4c 41  20 20 20 20 20 52 30 2c  |..N> MLA     R0,|
000146a0  52 38 2c 52 30 2c 52 37  20 20 20 20 20 20 20 20  |R8,R0,R7        |
000146b0  20 20 3b 20 63 61 6c 63  75 6c 61 74 65 20 70 6f  |  ; calculate po|
000146c0  73 69 74 69 6f 6e 20 6f  66 20 64 61 74 61 0d 98  |sition of data..|
000146d0  58 3e 20 41 44 44 20 20  20 20 20 52 31 2c 52 30  |X> ADD     R1,R0|
000146e0  2c 52 38 2c 20 4c 53 52  20 23 31 20 20 20 20 20  |,R8, LSR #1     |
000146f0  3b 20 63 61 6c 63 75 6c  61 74 65 20 70 6f 73 69  |; calculate posi|
00014700  74 69 6f 6e 20 6f 66 20  6d 61 73 6b 0d 98 62 06  |tion of mask..b.|
00014710  20 3a 0d 98 6c 13 3b 4d  4f 56 20 20 20 20 20 52  | :..l.;MOV     R|
00014720  33 2c 20 23 31 0d 98 76  1e 3b 53 54 52 20 20 20  |3, #1..v.;STR   |
00014730  20 20 52 33 2c 20 73 30  38 30 34 5f 63 6f 75 6e  |  R3, s0804_coun|
00014740  74 65 72 0d 98 80 06 20  3a 0d 98 8a 17 20 2e 73  |ter.... :.... .s|
00014750  30 38 30 34 5f 73 70 72  69 74 65 5f 6c 6f 6f 70  |0804_sprite_loop|
00014760  0d 98 94 06 20 3a 0d 98  9e 06 20 5d 0d 98 a8 0f  |.... :.... ]....|
00014770  20 e3 20 61 25 3d 31 20  b8 20 34 0d 98 b2 0f 20  | . a%=1 . 4.... |
00014780  5b 4f 50 54 20 70 61 73  73 25 0d 98 bc 06 20 3a  |[OPT pass%.... :|
00014790  0d 98 c6 3a 20 4c 44 4d  49 41 20 20 20 52 32 2c  |...: LDMIA   R2,|
000147a0  7b 52 33 2c 52 34 7d 20  20 20 20 20 20 20 20 20  |{R3,R4}         |
000147b0  20 20 20 20 20 3b 20 67  65 74 20 73 6f 6d 65 20  |     ; get some |
000147c0  62 61 63 6b 67 72 6f 75  6e 64 0d 98 d0 34 20 4c  |background...4 L|
000147d0  44 4d 49 41 20 20 20 52  31 21 2c 7b 52 38 2c 52  |DMIA   R1!,{R8,R|
000147e0  39 7d 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |9}             ;|
000147f0  20 67 65 74 20 73 6f 6d  65 20 6d 61 73 6b 0d 98  | get some mask..|
00014800  da 35 20 80 20 20 20 20  20 52 33 2c 52 33 2c 52  |.5 .     R3,R3,R|
00014810  38 20 20 20 20 20 20 20  20 20 20 20 20 20 3b 20  |8             ; |
00014820  6d 61 73 6b 20 6f 66 66  20 62 61 63 6b 67 72 6f  |mask off backgro|
00014830  75 6e 64 0d 98 e4 13 20  80 20 20 20 20 20 52 34  |und.... .     R4|
00014840  2c 52 34 2c 52 39 0d 98  ee 32 20 4c 44 4d 49 41  |,R4,R9...2 LDMIA|
00014850  20 20 20 52 30 21 2c 7b  52 38 2c 52 39 7d 20 20  |   R0!,{R8,R9}  |
00014860  20 20 20 20 20 20 20 3b  20 67 65 74 20 73 6f 6d  |       ; get som|
00014870  65 20 73 70 72 69 74 65  0d 98 f8 3f 20 84 52 20  |e sprite...? .R |
00014880  20 20 20 20 52 33 2c 52  33 2c 52 38 20 20 20 20  |    R3,R3,R8    |
00014890  20 20 20 20 20 20 20 20  20 3b 20 6d 65 72 67 65  |         ; merge|
000148a0  20 73 70 72 69 74 65 20  77 69 74 68 20 62 61 63  | sprite with bac|
000148b0  6b 67 72 6f 75 6e 64 0d  99 02 14 20 84 52 20 20  |kground.... .R  |
000148c0  20 20 20 52 34 2c 52 34  2c 52 39 0d 99 0c 37 20  |   R4,R4,R9...7 |
000148d0  53 54 4d 49 41 20 20 20  52 32 2c 7b 52 33 2c 52  |STMIA   R2,{R3,R|
000148e0  34 7d 20 20 20 20 20 20  20 20 20 20 20 3b 20 73  |4}           ; s|
000148f0  74 6f 72 65 20 6d 61 73  6b 65 64 20 73 70 72 69  |tore masked spri|
00014900  74 65 0d 99 16 06 20 3a  0d 99 20 1c 20 53 55 42  |te.... :.. . SUB|
00014910  20 20 20 20 20 52 32 2c  52 32 2c 20 23 79 5f 73  |     R2,R2, #y_s|
00014920  68 69 66 74 0d 99 2a 06  20 3a 0d 99 34 06 20 5d  |hift..*. :..4. ]|
00014930  0d 99 3e 06 20 ed 0d 99  48 0f 20 5b 4f 50 54 20  |..>. ...H. [OPT |
00014940  70 61 73 73 25 0d 99 52  06 20 3a 0d 99 5c 1e 3b  |pass%..R. :..\.;|
00014950  4c 44 52 20 20 20 20 20  52 33 2c 20 73 30 38 30  |LDR     R3, s080|
00014960  34 5f 63 6f 75 6e 74 65  72 0d 99 66 16 3b 41 44  |4_counter..f.;AD|
00014970  44 20 20 20 20 20 52 33  2c 52 33 2c 20 23 31 0d  |D     R3,R3, #1.|
00014980  99 70 1e 3b 53 54 52 20  20 20 20 20 52 33 2c 20  |.p.;STR     R3, |
00014990  73 30 38 30 34 5f 63 6f  75 6e 74 65 72 0d 99 7a  |s0804_counter..z|
000149a0  13 3b 43 4d 50 20 20 20  20 20 52 33 2c 20 23 31  |.;CMP     R3, #1|
000149b0  0d 99 84 1e 3b 42 4c 45  20 20 20 20 20 73 30 38  |....;BLE     s08|
000149c0  30 34 5f 73 70 72 69 74  65 5f 6c 6f 6f 70 0d 99  |04_sprite_loop..|
000149d0  8e 06 20 3a 0d 99 98 1d  20 4c 44 4d 46 44 20 20  |.. :.... LDMFD  |
000149e0  20 52 31 33 21 2c 7b 52  30 2d 52 31 32 2c 50 43  | R13!,{R0-R12,PC|
000149f0  7d 0d 99 a2 06 20 3a 0d  99 ac 13 20 2e 73 30 38  |}.... :.... .s08|
00014a00  30 34 5f 63 6f 75 6e 74  65 72 0d 99 b6 0e 20 45  |04_counter.... E|
00014a10  51 55 44 20 20 20 20 30  0d 99 c0 06 20 3a 0d 99  |QUD    0.... :..|
00014a20  ca 12 20 2e 61 64 72 5f  73 70 72 69 74 65 73 34  |.. .adr_sprites4|
00014a30  0d 99 d4 37 20 45 51 55  44 20 20 20 20 73 70 72  |...7 EQUD    spr|
00014a40  69 74 65 73 34 25 20 20  20 20 20 20 20 20 20 20  |ites4%          |
00014a50  20 20 3b 20 61 64 64 72  65 73 73 20 6f 66 20 73  |  ; address of s|
00014a60  70 72 69 74 65 73 34 0d  99 de 0f 20 2e 73 70 72  |prites4.... .spr|
00014a70  5f 73 69 7a 65 34 0d 99  e8 41 20 45 51 55 44 20  |_size4...A EQUD |
00014a80  20 20 20 38 2f 38 2a 38  2a 34 2a 32 20 20 20 20  |   8/8*8*4*2    |
00014a90  20 20 20 20 20 20 20 20  3b 20 6c 65 6e 67 74 68  |        ; length|
00014aa0  20 6f 66 20 6f 6e 65 20  73 70 72 69 74 65 34 20  | of one sprite4 |
00014ab0  2b 20 6d 61 73 6b 34 0d  99 f2 06 20 3a 0d 99 fc  |+ mask4.... :...|
00014ac0  06 20 3a 0d 9a 06 06 20  3a 0d 9a 10 16 20 2e 70  |. :.... :.... .p|
00014ad0  6c 6f 74 5f 73 70 72 69  74 65 5f 31 32 30 38 0d  |lot_sprite_1208.|
00014ae0  9a 1a 06 20 3a 0d 9a 24  1e 20 53 54 4d 46 44 20  |... :..$. STMFD |
00014af0  20 20 52 31 33 21 2c 7b  52 30 2d 52 31 32 2c 52  |  R13!,{R0-R12,R|
00014b00  31 34 7d 0d 9a 2e 06 20  3a 0d 9a 38 31 20 3a 20  |14}.... :..81 : |
00014b10  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00014b20  20 20 20 20 20 20 20 20  20 20 20 3b 20 52 30 20  |           ; R0 |
00014b30  73 70 72 69 74 65 20 6e  6f 2e 0d 9a 42 2e 20 3a  |sprite no...B. :|
00014b40  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00014b50  20 20 20 20 20 20 20 20  20 20 20 20 3b 20 52 31  |            ; R1|
00014b60  20 78 2d 63 6f 6f 72 64  0d 9a 4c 2e 20 3a 20 20  | x-coord..L. :  |
00014b70  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00014b80  20 20 20 20 20 20 20 20  20 20 3b 20 52 32 20 79  |          ; R2 y|
00014b90  2d 63 6f 6f 72 64 0d 9a  56 06 20 3a 0d 9a 60 18  |-coord..V. :..`.|
00014ba0  20 52 53 42 20 20 20 20  20 52 32 2c 52 32 2c 20  | RSB     R2,R2, |
00014bb0  23 32 35 36 0d 9a 6a 06  20 3a 0d 9a 74 13 20 43  |#256..j. :..t. C|
00014bc0  4d 50 20 20 20 20 20 52  31 2c 20 23 30 0d 9a 7e  |MP     R1, #0..~|
00014bd0  1c 20 42 4c 45 20 20 20  20 20 70 73 6d 5f 6e 6f  |. BLE     psm_no|
00014be0  5f 70 6c 6f 74 31 32 30  38 0d 9a 88 13 20 43 4d  |_plot1208.... CM|
00014bf0  50 20 20 20 20 20 52 32  2c 20 23 38 0d 9a 92 1c  |P     R2, #8....|
00014c00  20 42 4c 45 20 20 20 20  20 70 73 6d 5f 6e 6f 5f  | BLE     psm_no_|
00014c10  70 6c 6f 74 31 32 30 38  0d 9a 9c 17 20 43 4d 50  |plot1208.... CMP|
00014c20  20 20 20 20 20 52 31 2c  20 23 33 32 30 2d 38 0d  |     R1, #320-8.|
00014c30  9a a6 1c 20 42 47 45 20  20 20 20 20 70 73 6d 5f  |... BGE     psm_|
00014c40  6e 6f 5f 70 6c 6f 74 31  32 30 38 0d 9a b0 15 20  |no_plot1208.... |
00014c50  43 4d 50 20 20 20 20 20  52 32 2c 20 23 32 35 36  |CMP     R2, #256|
00014c60  0d 9a ba 1c 20 42 47 45  20 20 20 20 20 70 73 6d  |.... BGE     psm|
00014c70  5f 6e 6f 5f 70 6c 6f 74  31 32 30 38 0d 9a c4 19  |_no_plot1208....|
00014c80  20 42 20 20 20 20 20 20  20 70 73 6d 5f 70 6c 6f  | B       psm_plo|
00014c90  74 31 32 30 38 0d 9a ce  15 20 2e 70 73 6d 5f 6e  |t1208.... .psm_n|
00014ca0  6f 5f 70 6c 6f 74 31 32  30 38 0d 9a d8 1d 20 4c  |o_plot1208.... L|
00014cb0  44 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 30 2d  |DMFD   R13!,{R0-|
00014cc0  52 31 32 2c 50 43 7d 0d  9a e2 12 20 2e 70 73 6d  |R12,PC}.... .psm|
00014cd0  5f 70 6c 6f 74 31 32 30  38 0d 9a ec 06 20 3a 0d  |_plot1208.... :.|
00014ce0  9a f6 34 20 80 20 20 20  20 20 52 33 2c 52 31 2c  |..4 .     R3,R1,|
00014cf0  20 23 25 31 31 20 20 20  20 20 20 20 20 20 20 3b  | #%11          ;|
00014d00  20 63 61 6c 63 75 6c 61  74 65 20 78 20 6f 66 66  | calculate x off|
00014d10  73 65 74 0d 9b 00 32 20  4d 4f 56 20 20 20 20 20  |set...2 MOV     |
00014d20  52 30 2c 52 30 2c 20 4c  53 4c 20 23 32 20 20 20  |R0,R0, LSL #2   |
00014d30  20 20 20 20 20 3b 20 72  65 61 6c 69 73 65 20 73  |     ; realise s|
00014d40  70 72 69 74 65 0d 9b 0a  2e 20 41 44 44 20 20 20  |prite.... ADD   |
00014d50  20 20 52 30 2c 52 30 2c  20 52 33 20 20 20 20 20  |  R0,R0, R3     |
00014d60  20 20 20 20 20 20 20 3b  20 61 64 64 20 6f 66 66  |       ; add off|
00014d70  73 65 74 0d 9b 14 33 20  42 49 43 20 20 20 20 20  |set...3 BIC     |
00014d80  52 31 2c 52 31 2c 20 23  25 31 31 20 20 20 20 20  |R1,R1, #%11     |
00014d90  20 20 20 20 20 3b 20 6d  61 6b 65 20 78 20 64 69  |     ; make x di|
00014da0  76 20 62 79 20 34 0d 9b  1e 06 20 3a 0d 9b 28 35  |v by 4.... :..(5|
00014db0  20 4d 4f 56 20 20 20 20  20 52 37 2c 20 23 78 5f  | MOV     R7, #x_|
00014dc0  73 68 69 66 74 20 20 20  20 20 20 20 20 20 3b 20  |shift         ; |
00014dd0  67 65 74 20 73 63 72 65  65 6e 20 73 68 69 66 74  |get screen shift|
00014de0  73 0d 9b 32 19 20 4d 4f  56 20 20 20 20 20 52 38  |s..2. MOV     R8|
00014df0  2c 20 23 79 5f 73 68 69  66 74 0d 9b 3c 40 20 4c  |, #y_shift..<@ L|
00014e00  44 52 20 20 20 20 20 52  39 2c 20 73 70 72 69 74  |DR     R9, sprit|
00014e10  65 5f 61 64 72 5f 73 63  72 65 65 6e 73 74 6f 72  |e_adr_screenstor|
00014e20  65 3b 20 67 65 74 20 73  63 72 65 65 6e 73 74 6f  |e; get screensto|
00014e30  72 65 20 61 64 64 72 65  73 73 0d 9b 46 14 20 4c  |re address..F. L|
00014e40  44 52 20 20 20 20 20 52  39 2c 5b 52 39 5d 0d 9b  |DR     R9,[R9]..|
00014e50  50 06 20 3a 0d 9b 5a 18  20 4d 4c 41 20 20 20 20  |P. :..Z. MLA    |
00014e60  20 52 33 2c 52 37 2c 52  31 2c 52 39 0d 9b 64 18  | R3,R7,R1,R9..d.|
00014e70  20 4d 4c 41 20 20 20 20  20 52 32 2c 52 38 2c 52  | MLA     R2,R8,R|
00014e80  32 2c 52 33 0d 9b 6e 06  20 3a 0d 9b 78 3d 20 4c  |2,R3..n. :..x= L|
00014e90  44 52 20 20 20 20 20 52  37 2c 20 61 64 72 5f 73  |DR     R7, adr_s|
00014ea0  70 72 69 74 65 73 35 20  20 20 20 20 3b 20 67 65  |prites5     ; ge|
00014eb0  74 20 73 74 61 72 74 20  61 64 64 72 65 73 73 20  |t start address |
00014ec0  6f 66 20 64 61 74 61 0d  9b 82 43 20 4c 44 52 20  |of data...C LDR |
00014ed0  20 20 20 20 52 38 2c 20  73 70 72 5f 73 69 7a 65  |    R8, spr_size|
00014ee0  35 20 20 20 20 20 20 20  20 3b 20 67 65 74 20 6c  |5        ; get l|
00014ef0  65 6e 67 74 68 20 6f 66  20 64 61 74 61 20 66 6f  |ength of data fo|
00014f00  72 20 31 20 73 70 72 69  74 65 0d 9b 8c 3e 20 4d  |r 1 sprite...> M|
00014f10  4c 41 20 20 20 20 20 52  30 2c 52 38 2c 52 30 2c  |LA     R0,R8,R0,|
00014f20  52 37 20 20 20 20 20 20  20 20 20 20 3b 20 63 61  |R7          ; ca|
00014f30  6c 63 75 6c 61 74 65 20  70 6f 73 69 74 69 6f 6e  |lculate position|
00014f40  20 6f 66 20 64 61 74 61  0d 9b 96 3e 20 41 44 44  | of data...> ADD|
00014f50  20 20 20 20 20 52 31 2c  52 30 2c 52 38 2c 20 4c  |     R1,R0,R8, L|
00014f60  53 52 20 23 31 20 20 20  20 20 3b 20 63 61 6c 63  |SR #1     ; calc|
00014f70  75 6c 61 74 65 20 70 6f  73 69 74 69 6f 6e 20 6f  |ulate position o|
00014f80  66 20 6d 61 73 6b 0d 9b  a0 06 20 3a 0d 9b aa 13  |f mask.... :....|
00014f90  3b 4d 4f 56 20 20 20 20  20 52 33 2c 20 23 31 0d  |;MOV     R3, #1.|
00014fa0  9b b4 1e 3b 53 54 52 20  20 20 20 20 52 33 2c 20  |...;STR     R3, |
00014fb0  73 31 32 30 38 5f 63 6f  75 6e 74 65 72 0d 9b be  |s1208_counter...|
00014fc0  06 20 3a 0d 9b c8 17 20  2e 73 31 32 30 38 5f 73  |. :.... .s1208_s|
00014fd0  70 72 69 74 65 5f 6c 6f  6f 70 0d 9b d2 06 20 3a  |prite_loop.... :|
00014fe0  0d 9b dc 06 20 5d 0d 9b  e6 0f 20 e3 20 61 25 3d  |.... ].... . a%=|
00014ff0  31 20 b8 20 38 0d 9b f0  0f 20 5b 4f 50 54 20 70  |1 . 8.... [OPT p|
00015000  61 73 73 25 0d 9b fa 06  20 3a 0d 9c 04 37 20 4c  |ass%.... :...7 L|
00015010  44 4d 49 41 20 20 20 52  32 2c 7b 52 33 2c 52 34  |DMIA   R2,{R3,R4|
00015020  2c 52 35 7d 20 20 20 20  20 20 20 20 3b 20 67 65  |,R5}        ; ge|
00015030  74 20 73 6f 6d 65 20 62  61 63 6b 67 72 6f 75 6e  |t some backgroun|
00015040  64 0d 9c 0e 31 20 4c 44  4d 49 41 20 20 20 52 31  |d...1 LDMIA   R1|
00015050  21 2c 7b 52 38 2c 52 39  2c 52 31 30 7d 20 20 20  |!,{R8,R9,R10}   |
00015060  20 20 20 3b 20 67 65 74  20 73 6f 6d 65 20 6d 61  |   ; get some ma|
00015070  73 6b 0d 9c 18 35 20 80  20 20 20 20 20 52 33 2c  |sk...5 .     R3,|
00015080  52 33 2c 52 38 20 20 20  20 20 20 20 20 20 20 20  |R3,R8           |
00015090  20 20 3b 20 6d 61 73 6b  20 6f 66 66 20 62 61 63  |  ; mask off bac|
000150a0  6b 67 72 6f 75 6e 64 0d  9c 22 13 20 80 20 20 20  |kground..". .   |
000150b0  20 20 52 34 2c 52 34 2c  52 39 0d 9c 2c 14 20 80  |  R4,R4,R9..,. .|
000150c0  20 20 20 20 20 52 35 2c  52 35 2c 52 31 30 0d 9c  |     R5,R5,R10..|
000150d0  36 33 20 4c 44 4d 49 41  20 20 20 52 30 21 2c 7b  |63 LDMIA   R0!,{|
000150e0  52 38 2c 52 39 2c 52 31  30 7d 20 20 20 20 20 20  |R8,R9,R10}      |
000150f0  3b 20 67 65 74 20 73 6f  6d 65 20 73 70 72 69 74  |; get some sprit|
00015100  65 0d 9c 40 3f 20 84 52  20 20 20 20 20 52 33 2c  |e..@? .R     R3,|
00015110  52 33 2c 52 38 20 20 20  20 20 20 20 20 20 20 20  |R3,R8           |
00015120  20 20 3b 20 6d 65 72 67  65 20 73 70 72 69 74 65  |  ; merge sprite|
00015130  20 77 69 74 68 20 62 61  63 6b 67 72 6f 75 6e 64  | with background|
00015140  0d 9c 4a 14 20 84 52 20  20 20 20 20 52 34 2c 52  |..J. .R     R4,R|
00015150  34 2c 52 39 0d 9c 54 15  20 84 52 20 20 20 20 20  |4,R9..T. .R     |
00015160  52 35 2c 52 35 2c 52 31  30 0d 9c 5e 37 20 53 54  |R5,R5,R10..^7 ST|
00015170  4d 49 41 20 20 20 52 32  2c 7b 52 33 2c 52 34 2c  |MIA   R2,{R3,R4,|
00015180  52 35 7d 20 20 20 20 20  20 20 20 3b 20 73 74 6f  |R5}        ; sto|
00015190  72 65 20 6d 61 73 6b 65  64 20 73 70 72 69 74 65  |re masked sprite|
000151a0  0d 9c 68 06 20 3a 0d 9c  72 1c 20 53 55 42 20 20  |..h. :..r. SUB  |
000151b0  20 20 20 52 32 2c 52 32  2c 20 23 79 5f 73 68 69  |   R2,R2, #y_shi|
000151c0  66 74 0d 9c 7c 06 20 3a  0d 9c 86 06 20 5d 0d 9c  |ft..|. :.... ]..|
000151d0  90 06 20 ed 0d 9c 9a 0f  20 5b 4f 50 54 20 70 61  |.. ..... [OPT pa|
000151e0  73 73 25 0d 9c a4 06 20  3a 0d 9c ae 1e 3b 4c 44  |ss%.... :....;LD|
000151f0  52 20 20 20 20 20 52 33  2c 20 73 31 32 30 38 5f  |R     R3, s1208_|
00015200  63 6f 75 6e 74 65 72 0d  9c b8 16 3b 41 44 44 20  |counter....;ADD |
00015210  20 20 20 20 52 33 2c 52  33 2c 20 23 31 0d 9c c2  |    R3,R3, #1...|
00015220  1e 3b 53 54 52 20 20 20  20 20 52 33 2c 20 73 31  |.;STR     R3, s1|
00015230  32 30 38 5f 63 6f 75 6e  74 65 72 0d 9c cc 13 3b  |208_counter....;|
00015240  43 4d 50 20 20 20 20 20  52 33 2c 20 23 31 0d 9c  |CMP     R3, #1..|
00015250  d6 1e 3b 42 4c 45 20 20  20 20 20 73 31 32 30 38  |..;BLE     s1208|
00015260  5f 73 70 72 69 74 65 5f  6c 6f 6f 70 0d 9c e0 06  |_sprite_loop....|
00015270  20 3a 0d 9c ea 1d 20 4c  44 4d 46 44 20 20 20 52  | :.... LDMFD   R|
00015280  31 33 21 2c 7b 52 30 2d  52 31 32 2c 50 43 7d 0d  |13!,{R0-R12,PC}.|
00015290  9c f4 06 20 3a 0d 9c fe  13 20 2e 73 31 32 30 38  |... :.... .s1208|
000152a0  5f 63 6f 75 6e 74 65 72  0d 9d 08 0e 20 45 51 55  |_counter.... EQU|
000152b0  44 20 20 20 20 30 0d 9d  12 06 20 3a 0d 9d 1c 12  |D    0.... :....|
000152c0  20 2e 61 64 72 5f 73 70  72 69 74 65 73 35 0d 9d  | .adr_sprites5..|
000152d0  26 37 20 45 51 55 44 20  20 20 20 73 70 72 69 74  |&7 EQUD    sprit|
000152e0  65 73 35 25 20 20 20 20  20 20 20 20 20 20 20 20  |es5%            |
000152f0  3b 20 61 64 64 72 65 73  73 20 6f 66 20 73 70 72  |; address of spr|
00015300  69 74 65 73 35 0d 9d 30  0f 20 2e 73 70 72 5f 73  |ites5..0. .spr_s|
00015310  69 7a 65 35 0d 9d 3a 41  20 45 51 55 44 20 20 20  |ize5..:A EQUD   |
00015320  20 38 2f 38 2a 31 32 2a  38 2a 32 20 20 20 20 20  | 8/8*12*8*2     |
00015330  20 20 20 20 20 20 3b 20  6c 65 6e 67 74 68 20 6f  |      ; length o|
00015340  66 20 6f 6e 65 20 73 70  72 69 74 65 35 20 2b 20  |f one sprite5 + |
00015350  6d 61 73 6b 35 0d 9d 44  06 20 3a 0d 9d 4e 06 20  |mask5..D. :..N. |
00015360  3a 0d 9d 58 06 20 3a 0d  9d 62 16 20 2e 70 6c 6f  |:..X. :..b. .plo|
00015370  74 5f 73 70 72 69 74 65  5f 31 36 31 36 0d 9d 6c  |t_sprite_1616..l|
00015380  06 20 3a 0d 9d 76 1e 20  53 54 4d 46 44 20 20 20  |. :..v. STMFD   |
00015390  52 31 33 21 2c 7b 52 30  2d 52 31 32 2c 52 31 34  |R13!,{R0-R12,R14|
000153a0  7d 0d 9d 80 06 20 3a 0d  9d 8a 31 20 3a 20 20 20  |}.... :...1 :   |
000153b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000153c0  20 20 20 20 20 20 20 20  20 3b 20 52 30 20 73 70  |         ; R0 sp|
000153d0  72 69 74 65 20 6e 6f 2e  0d 9d 94 2e 20 3a 20 20  |rite no..... :  |
000153e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000153f0  20 20 20 20 20 20 20 20  20 20 3b 20 52 31 20 78  |          ; R1 x|
00015400  2d 63 6f 6f 72 64 0d 9d  9e 2e 20 3a 20 20 20 20  |-coord.... :    |
00015410  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00015420  20 20 20 20 20 20 20 20  3b 20 52 32 20 79 2d 63  |        ; R2 y-c|
00015430  6f 6f 72 64 0d 9d a8 06  20 3a 0d 9d b2 18 20 52  |oord.... :.... R|
00015440  53 42 20 20 20 20 20 52  32 2c 52 32 2c 20 23 32  |SB     R2,R2, #2|
00015450  35 36 0d 9d bc 06 20 3a  0d 9d c6 13 20 43 4d 50  |56.... :.... CMP|
00015460  20 20 20 20 20 52 31 2c  20 23 30 0d 9d d0 1c 20  |     R1, #0.... |
00015470  42 4c 45 20 20 20 20 20  70 73 6d 5f 6e 6f 5f 70  |BLE     psm_no_p|
00015480  6c 6f 74 31 36 31 36 0d  9d da 14 20 43 4d 50 20  |lot1616.... CMP |
00015490  20 20 20 20 52 32 2c 20  23 31 36 0d 9d e4 1c 20  |    R2, #16.... |
000154a0  42 4c 45 20 20 20 20 20  70 73 6d 5f 6e 6f 5f 70  |BLE     psm_no_p|
000154b0  6c 6f 74 31 36 31 36 0d  9d ee 18 20 43 4d 50 20  |lot1616.... CMP |
000154c0  20 20 20 20 52 31 2c 20  23 33 32 30 2d 31 36 0d  |    R1, #320-16.|
000154d0  9d f8 1c 20 42 47 45 20  20 20 20 20 70 73 6d 5f  |... BGE     psm_|
000154e0  6e 6f 5f 70 6c 6f 74 31  36 31 36 0d 9e 02 15 20  |no_plot1616.... |
000154f0  43 4d 50 20 20 20 20 20  52 32 2c 20 23 32 35 36  |CMP     R2, #256|
00015500  0d 9e 0c 1c 20 42 47 45  20 20 20 20 20 70 73 6d  |.... BGE     psm|
00015510  5f 6e 6f 5f 70 6c 6f 74  31 36 31 36 0d 9e 16 19  |_no_plot1616....|
00015520  20 42 20 20 20 20 20 20  20 70 73 6d 5f 70 6c 6f  | B       psm_plo|
00015530  74 31 36 31 36 0d 9e 20  15 20 2e 70 73 6d 5f 6e  |t1616.. . .psm_n|
00015540  6f 5f 70 6c 6f 74 31 36  31 36 0d 9e 2a 1d 20 4c  |o_plot1616..*. L|
00015550  44 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 30 2d  |DMFD   R13!,{R0-|
00015560  52 31 32 2c 50 43 7d 0d  9e 34 12 20 2e 70 73 6d  |R12,PC}..4. .psm|
00015570  5f 70 6c 6f 74 31 36 31  36 0d 9e 3e 06 20 3a 0d  |_plot1616..>. :.|
00015580  9e 48 34 20 80 20 20 20  20 20 52 33 2c 52 31 2c  |.H4 .     R3,R1,|
00015590  20 23 25 31 31 20 20 20  20 20 20 20 20 20 20 3b  | #%11          ;|
000155a0  20 63 61 6c 63 75 6c 61  74 65 20 78 20 6f 66 66  | calculate x off|
000155b0  73 65 74 0d 9e 52 32 20  4d 4f 56 20 20 20 20 20  |set..R2 MOV     |
000155c0  52 30 2c 52 30 2c 20 4c  53 4c 20 23 32 20 20 20  |R0,R0, LSL #2   |
000155d0  20 20 20 20 20 3b 20 72  65 61 6c 69 73 65 20 73  |     ; realise s|
000155e0  70 72 69 74 65 0d 9e 5c  2e 20 41 44 44 20 20 20  |prite..\. ADD   |
000155f0  20 20 52 30 2c 52 30 2c  20 52 33 20 20 20 20 20  |  R0,R0, R3     |
00015600  20 20 20 20 20 20 20 3b  20 61 64 64 20 6f 66 66  |       ; add off|
00015610  73 65 74 0d 9e 66 33 20  42 49 43 20 20 20 20 20  |set..f3 BIC     |
00015620  52 31 2c 52 31 2c 20 23  25 31 31 20 20 20 20 20  |R1,R1, #%11     |
00015630  20 20 20 20 20 3b 20 6d  61 6b 65 20 78 20 64 69  |     ; make x di|
00015640  76 20 62 79 20 34 0d 9e  70 06 20 3a 0d 9e 7a 35  |v by 4..p. :..z5|
00015650  20 4d 4f 56 20 20 20 20  20 52 37 2c 20 23 78 5f  | MOV     R7, #x_|
00015660  73 68 69 66 74 20 20 20  20 20 20 20 20 20 3b 20  |shift         ; |
00015670  67 65 74 20 73 63 72 65  65 6e 20 73 68 69 66 74  |get screen shift|
00015680  73 0d 9e 84 19 20 4d 4f  56 20 20 20 20 20 52 38  |s.... MOV     R8|
00015690  2c 20 23 79 5f 73 68 69  66 74 0d 9e 8e 40 20 4c  |, #y_shift...@ L|
000156a0  44 52 20 20 20 20 20 52  39 2c 20 73 70 72 69 74  |DR     R9, sprit|
000156b0  65 5f 61 64 72 5f 73 63  72 65 65 6e 73 74 6f 72  |e_adr_screenstor|
000156c0  65 3b 20 67 65 74 20 73  63 72 65 65 6e 73 74 6f  |e; get screensto|
000156d0  72 65 20 61 64 64 72 65  73 73 0d 9e 98 14 20 4c  |re address.... L|
000156e0  44 52 20 20 20 20 20 52  39 2c 5b 52 39 5d 0d 9e  |DR     R9,[R9]..|
000156f0  a2 06 20 3a 0d 9e ac 18  20 4d 4c 41 20 20 20 20  |.. :.... MLA    |
00015700  20 52 33 2c 52 37 2c 52  31 2c 52 39 0d 9e b6 18  | R3,R7,R1,R9....|
00015710  20 4d 4c 41 20 20 20 20  20 52 32 2c 52 38 2c 52  | MLA     R2,R8,R|
00015720  32 2c 52 33 0d 9e c0 06  20 3a 0d 9e ca 3d 20 4c  |2,R3.... :...= L|
00015730  44 52 20 20 20 20 20 52  37 2c 20 61 64 72 5f 73  |DR     R7, adr_s|
00015740  70 72 69 74 65 73 36 20  20 20 20 20 3b 20 67 65  |prites6     ; ge|
00015750  74 20 73 74 61 72 74 20  61 64 64 72 65 73 73 20  |t start address |
00015760  6f 66 20 64 61 74 61 0d  9e d4 43 20 4c 44 52 20  |of data...C LDR |
00015770  20 20 20 20 52 38 2c 20  73 70 72 5f 73 69 7a 65  |    R8, spr_size|
00015780  36 20 20 20 20 20 20 20  20 3b 20 67 65 74 20 6c  |6        ; get l|
00015790  65 6e 67 74 68 20 6f 66  20 64 61 74 61 20 66 6f  |ength of data fo|
000157a0  72 20 31 20 73 70 72 69  74 65 0d 9e de 3e 20 4d  |r 1 sprite...> M|
000157b0  4c 41 20 20 20 20 20 52  30 2c 52 38 2c 52 30 2c  |LA     R0,R8,R0,|
000157c0  52 37 20 20 20 20 20 20  20 20 20 20 3b 20 63 61  |R7          ; ca|
000157d0  6c 63 75 6c 61 74 65 20  70 6f 73 69 74 69 6f 6e  |lculate position|
000157e0  20 6f 66 20 64 61 74 61  0d 9e e8 3e 20 41 44 44  | of data...> ADD|
000157f0  20 20 20 20 20 52 31 2c  52 30 2c 52 38 2c 20 4c  |     R1,R0,R8, L|
00015800  53 52 20 23 31 20 20 20  20 20 3b 20 63 61 6c 63  |SR #1     ; calc|
00015810  75 6c 61 74 65 20 70 6f  73 69 74 69 6f 6e 20 6f  |ulate position o|
00015820  66 20 6d 61 73 6b 0d 9e  f2 06 20 3a 0d 9e fc 13  |f mask.... :....|
00015830  20 4d 4f 56 20 20 20 20  20 52 33 2c 20 23 31 0d  | MOV     R3, #1.|
00015840  9f 06 1e 20 53 54 52 20  20 20 20 20 52 33 2c 20  |... STR     R3, |
00015850  73 31 36 31 36 5f 63 6f  75 6e 74 65 72 0d 9f 10  |s1616_counter...|
00015860  06 20 3a 0d 9f 1a 17 20  2e 73 31 36 31 36 5f 73  |. :.... .s1616_s|
00015870  70 72 69 74 65 5f 6c 6f  6f 70 0d 9f 24 06 20 3a  |prite_loop..$. :|
00015880  0d 9f 2e 06 20 5d 0d 9f  38 0f 20 e3 20 61 25 3d  |.... ]..8. . a%=|
00015890  31 20 b8 20 34 0d 9f 42  0f 20 5b 4f 50 54 20 70  |1 . 4..B. [OPT p|
000158a0  61 73 73 25 0d 9f 4c 06  20 3a 0d 9f 56 37 20 4c  |ass%..L. :..V7 L|
000158b0  44 4d 49 41 20 20 20 52  32 2c 7b 52 33 2d 52 36  |DMIA   R2,{R3-R6|
000158c0  7d 20 20 20 20 20 20 20  20 20 20 20 3b 20 67 65  |}           ; ge|
000158d0  74 20 73 6f 6d 65 20 62  61 63 6b 67 72 6f 75 6e  |t some backgroun|
000158e0  64 0d 9f 60 31 20 4c 44  4d 49 41 20 20 20 52 31  |d..`1 LDMIA   R1|
000158f0  21 2c 7b 52 38 2d 52 31  31 7d 20 20 20 20 20 20  |!,{R8-R11}      |
00015900  20 20 20 3b 20 67 65 74  20 73 6f 6d 65 20 6d 61  |   ; get some ma|
00015910  73 6b 0d 9f 6a 35 20 80  20 20 20 20 20 52 33 2c  |sk..j5 .     R3,|
00015920  52 33 2c 52 38 20 20 20  20 20 20 20 20 20 20 20  |R3,R8           |
00015930  20 20 3b 20 6d 61 73 6b  20 6f 66 66 20 62 61 63  |  ; mask off bac|
00015940  6b 67 72 6f 75 6e 64 0d  9f 74 13 20 80 20 20 20  |kground..t. .   |
00015950  20 20 52 34 2c 52 34 2c  52 39 0d 9f 7e 14 20 80  |  R4,R4,R9..~. .|
00015960  20 20 20 20 20 52 35 2c  52 35 2c 52 31 30 0d 9f  |     R5,R5,R10..|
00015970  88 14 20 80 20 20 20 20  20 52 35 2c 52 35 2c 52  |.. .     R5,R5,R|
00015980  31 31 0d 9f 92 33 20 4c  44 4d 49 41 20 20 20 52  |11...3 LDMIA   R|
00015990  30 21 2c 7b 52 38 2d 52  31 31 7d 20 20 20 20 20  |0!,{R8-R11}     |
000159a0  20 20 20 20 3b 20 67 65  74 20 73 6f 6d 65 20 73  |    ; get some s|
000159b0  70 72 69 74 65 0d 9f 9c  3f 20 84 52 20 20 20 20  |prite...? .R    |
000159c0  20 52 33 2c 52 33 2c 52  38 20 20 20 20 20 20 20  | R3,R3,R8       |
000159d0  20 20 20 20 20 20 3b 20  6d 65 72 67 65 20 73 70  |      ; merge sp|
000159e0  72 69 74 65 20 77 69 74  68 20 62 61 63 6b 67 72  |rite with backgr|
000159f0  6f 75 6e 64 0d 9f a6 14  20 84 52 20 20 20 20 20  |ound.... .R     |
00015a00  52 34 2c 52 34 2c 52 39  0d 9f b0 15 20 84 52 20  |R4,R4,R9.... .R |
00015a10  20 20 20 20 52 35 2c 52  35 2c 52 31 30 0d 9f ba  |    R5,R5,R10...|
00015a20  15 20 84 52 20 20 20 20  20 52 36 2c 52 36 2c 52  |. .R     R6,R6,R|
00015a30  31 31 0d 9f c4 37 20 53  54 4d 49 41 20 20 20 52  |11...7 STMIA   R|
00015a40  32 2c 7b 52 33 2d 52 36  7d 20 20 20 20 20 20 20  |2,{R3-R6}       |
00015a50  20 20 20 20 3b 20 73 74  6f 72 65 20 6d 61 73 6b  |    ; store mask|
00015a60  65 64 20 73 70 72 69 74  65 0d 9f ce 06 20 3a 0d  |ed sprite.... :.|
00015a70  9f d8 1c 20 53 55 42 20  20 20 20 20 52 32 2c 52  |... SUB     R2,R|
00015a80  32 2c 20 23 79 5f 73 68  69 66 74 0d 9f e2 06 20  |2, #y_shift.... |
00015a90  3a 0d 9f ec 06 20 5d 0d  9f f6 06 20 ed 0d a0 00  |:.... ].... ....|
00015aa0  0f 20 5b 4f 50 54 20 70  61 73 73 25 0d a0 0a 06  |. [OPT pass%....|
00015ab0  20 3a 0d a0 14 1e 20 4c  44 52 20 20 20 20 20 52  | :.... LDR     R|
00015ac0  33 2c 20 73 31 36 31 36  5f 63 6f 75 6e 74 65 72  |3, s1616_counter|
00015ad0  0d a0 1e 16 20 41 44 44  20 20 20 20 20 52 33 2c  |.... ADD     R3,|
00015ae0  52 33 2c 20 23 31 0d a0  28 1e 20 53 54 52 20 20  |R3, #1..(. STR  |
00015af0  20 20 20 52 33 2c 20 73  31 36 31 36 5f 63 6f 75  |   R3, s1616_cou|
00015b00  6e 74 65 72 0d a0 32 13  20 43 4d 50 20 20 20 20  |nter..2. CMP    |
00015b10  20 52 33 2c 20 23 34 0d  a0 3c 1e 20 42 4c 45 20  | R3, #4..<. BLE |
00015b20  20 20 20 20 73 31 36 31  36 5f 73 70 72 69 74 65  |    s1616_sprite|
00015b30  5f 6c 6f 6f 70 0d a0 46  06 20 3a 0d a0 50 1d 20  |_loop..F. :..P. |
00015b40  4c 44 4d 46 44 20 20 20  52 31 33 21 2c 7b 52 30  |LDMFD   R13!,{R0|
00015b50  2d 52 31 32 2c 50 43 7d  0d a0 5a 06 20 3a 0d a0  |-R12,PC}..Z. :..|
00015b60  64 13 20 2e 73 31 36 31  36 5f 63 6f 75 6e 74 65  |d. .s1616_counte|
00015b70  72 0d a0 6e 0e 20 45 51  55 44 20 20 20 20 30 0d  |r..n. EQUD    0.|
00015b80  a0 78 06 20 3a 0d a0 82  12 20 2e 61 64 72 5f 73  |.x. :.... .adr_s|
00015b90  70 72 69 74 65 73 36 0d  a0 8c 37 20 45 51 55 44  |prites6...7 EQUD|
00015ba0  20 20 20 20 73 70 72 69  74 65 73 36 25 20 20 20  |    sprites6%   |
00015bb0  20 20 20 20 20 20 20 20  20 3b 20 61 64 64 72 65  |         ; addre|
00015bc0  73 73 20 6f 66 20 73 70  72 69 74 65 73 36 0d a0  |ss of sprites6..|
00015bd0  96 0f 20 2e 73 70 72 5f  73 69 7a 65 36 0d a0 a0  |.. .spr_size6...|
00015be0  41 20 45 51 55 44 20 20  20 20 38 2f 38 2a 31 36  |A EQUD    8/8*16|
00015bf0  2a 31 36 2a 32 20 20 20  20 20 20 20 20 20 20 3b  |*16*2          ;|
00015c00  20 6c 65 6e 67 74 68 20  6f 66 20 6f 6e 65 20 73  | length of one s|
00015c10  70 72 69 74 65 36 20 2b  20 6d 61 73 6b 36 0d a0  |prite6 + mask6..|
00015c20  aa 06 20 3a 0d a0 b4 06  20 3a 0d a0 be 06 20 5d  |.. :.... :.... ]|
00015c30  0d a0 c8 16 20 50 25 3d  66 69 6c 6c 5f 72 6f 75  |.... P%=fill_rou|
00015c40  74 69 6e 65 73 25 0d a0  d2 1b 20 4c 25 3d 66 69  |tines%.... L%=fi|
00015c50  6c 6c 5f 72 6f 75 74 69  6e 65 73 25 2b 38 31 39  |ll_routines%+819|
00015c60  31 0d a0 dc 0f 20 5b 4f  50 54 20 70 61 73 73 25  |1.... [OPT pass%|
00015c70  0d a0 e6 06 20 3a 0d a0  f0 06 20 3a 0d a0 fa 06  |.... :.... :....|
00015c80  20 3a 0d a1 04 14 20 2e  66 69 6c 6c 5f 66 69 6c  | :.... .fill_fil|
00015c90  6c 5f 31 32 31 32 0d a1  0e 06 20 3a 0d a1 18 1e  |l_1212.... :....|
00015ca0  20 53 54 4d 46 44 20 20  20 52 31 33 21 2c 7b 52  | STMFD   R13!,{R|
00015cb0  30 2d 52 31 32 2c 52 31  34 7d 0d a1 22 06 20 3a  |0-R12,R14}..". :|
00015cc0  0d a1 2c 2f 20 3a 20 20  20 20 20 20 20 20 20 20  |..,/ :          |
00015cd0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00015ce0  20 20 3b 20 52 30 20 66  69 6c 6c 20 6e 6f 2e 0d  |  ; R0 fill no..|
00015cf0  a1 36 2e 20 3a 20 20 20  20 20 20 20 20 20 20 20  |.6. :           |
00015d00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00015d10  20 3b 20 52 31 20 78 2d  63 6f 6f 72 64 0d a1 40  | ; R1 x-coord..@|
00015d20  2e 20 3a 20 20 20 20 20  20 20 20 20 20 20 20 20  |. :             |
00015d30  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |               ;|
00015d40  20 52 32 20 79 2d 63 6f  6f 72 64 0d a1 4a 06 20  | R2 y-coord..J. |
00015d50  3a 0d a1 54 18 20 52 53  42 20 20 20 20 20 52 32  |:..T. RSB     R2|
00015d60  2c 52 32 2c 20 23 32 35  36 0d a1 5e 06 20 3a 0d  |,R2, #256..^. :.|
00015d70  a1 68 13 20 43 4d 50 20  20 20 20 20 52 31 2c 20  |.h. CMP     R1, |
00015d80  23 30 0d a1 72 1c 20 42  4c 45 20 20 20 20 20 70  |#0..r. BLE     p|
00015d90  73 6d 5f 6e 6f 5f 66 69  6c 6c 31 32 31 32 0d a1  |sm_no_fill1212..|
00015da0  7c 14 20 43 4d 50 20 20  20 20 20 52 32 2c 20 23  ||. CMP     R2, #|
00015db0  31 32 0d a1 86 1c 20 42  4c 45 20 20 20 20 20 70  |12.... BLE     p|
00015dc0  73 6d 5f 6e 6f 5f 66 69  6c 6c 31 32 31 32 0d a1  |sm_no_fill1212..|
00015dd0  90 17 20 43 4d 50 20 20  20 20 20 52 31 2c 20 23  |.. CMP     R1, #|
00015de0  33 32 30 2d 38 0d a1 9a  1c 20 42 47 45 20 20 20  |320-8.... BGE   |
00015df0  20 20 70 73 6d 5f 6e 6f  5f 66 69 6c 6c 31 32 31  |  psm_no_fill121|
00015e00  32 0d a1 a4 15 20 43 4d  50 20 20 20 20 20 52 32  |2.... CMP     R2|
00015e10  2c 20 23 32 35 36 0d a1  ae 1c 20 42 47 45 20 20  |, #256.... BGE  |
00015e20  20 20 20 70 73 6d 5f 6e  6f 5f 66 69 6c 6c 31 32  |   psm_no_fill12|
00015e30  31 32 0d a1 b8 19 20 42  20 20 20 20 20 20 20 70  |12.... B       p|
00015e40  73 6d 5f 66 69 6c 6c 31  32 31 32 0d a1 c2 15 20  |sm_fill1212.... |
00015e50  2e 70 73 6d 5f 6e 6f 5f  66 69 6c 6c 31 32 31 32  |.psm_no_fill1212|
00015e60  0d a1 cc 1d 20 4c 44 4d  46 44 20 20 20 52 31 33  |.... LDMFD   R13|
00015e70  21 2c 7b 52 30 2d 52 31  32 2c 50 43 7d 0d a1 d6  |!,{R0-R12,PC}...|
00015e80  12 20 2e 70 73 6d 5f 66  69 6c 6c 31 32 31 32 0d  |. .psm_fill1212.|
00015e90  a1 e0 06 20 3a 0d a1 ea  35 20 4d 4f 56 20 20 20  |... :...5 MOV   |
00015ea0  20 20 52 37 2c 20 23 78  5f 73 68 69 66 74 20 20  |  R7, #x_shift  |
00015eb0  20 20 20 20 20 20 20 3b  20 67 65 74 20 73 63 72  |       ; get scr|
00015ec0  65 65 6e 20 73 68 69 66  74 73 0d a1 f4 19 20 4d  |een shifts.... M|
00015ed0  4f 56 20 20 20 20 20 52  38 2c 20 23 79 5f 73 68  |OV     R8, #y_sh|
00015ee0  69 66 74 0d a1 fe 06 20  3a 0d a2 08 3e 20 4c 44  |ift.... :...> LD|
00015ef0  52 20 20 20 20 20 52 39  2c 20 66 69 6c 6c 5f 61  |R     R9, fill_a|
00015f00  64 72 5f 73 63 72 65 65  6e 73 74 6f 72 65 3b 20  |dr_screenstore; |
00015f10  67 65 74 20 73 63 72 65  65 6e 73 74 6f 72 65 20  |get screenstore |
00015f20  61 64 64 72 65 73 73 0d  a2 12 14 20 4c 44 52 20  |address.... LDR |
00015f30  20 20 20 20 52 39 2c 5b  52 39 5d 0d a2 1c 18 20  |    R9,[R9].... |
00015f40  4d 4c 41 20 20 20 20 20  52 33 2c 52 37 2c 52 31  |MLA     R3,R7,R1|
00015f50  2c 52 39 0d a2 26 18 20  4d 4c 41 20 20 20 20 20  |,R9..&. MLA     |
00015f60  52 30 2c 52 38 2c 52 32  2c 52 33 0d a2 30 06 20  |R0,R8,R2,R3..0. |
00015f70  3a 0d a2 3a 36 20 4c 44  52 20 20 20 20 20 52 39  |:..:6 LDR     R9|
00015f80  2c 20 66 69 6c 6c 5f 73  63 72 65 65 6e 64 61 74  |, fill_screendat|
00015f90  61 20 20 3b 20 67 65 74  20 73 63 72 65 65 6e 20  |a  ; get screen |
00015fa0  61 64 64 72 65 73 73 0d  a2 44 18 20 4d 4c 41 20  |address..D. MLA |
00015fb0  20 20 20 20 52 33 2c 52  37 2c 52 31 2c 52 39 0d  |    R3,R7,R1,R9.|
00015fc0  a2 4e 18 20 4d 4c 41 20  20 20 20 20 52 31 2c 52  |.N. MLA     R1,R|
00015fd0  38 2c 52 32 2c 52 33 0d  a2 58 06 20 3a 0d a2 62  |8,R2,R3..X. :..b|
00015fe0  13 20 4d 4f 56 20 20 20  20 20 52 33 2c 20 23 31  |. MOV     R3, #1|
00015ff0  0d a2 6c 1e 20 53 54 52  20 20 20 20 20 52 33 2c  |..l. STR     R3,|
00016000  20 66 31 32 31 32 5f 63  6f 75 6e 74 65 72 0d a2  | f1212_counter..|
00016010  76 06 20 3a 0d a2 80 15  20 2e 66 31 32 31 32 5f  |v. :.... .f1212_|
00016020  66 69 6c 6c 5f 6c 6f 6f  70 0d a2 8a 06 20 3a 0d  |fill_loop.... :.|
00016030  a2 94 06 20 5d 0d a2 9e  10 20 e3 20 61 25 3d 31  |... ].... . a%=1|
00016040  20 b8 20 31 32 0d a2 a8  0f 20 5b 4f 50 54 20 70  | . 12.... [OPT p|
00016050  61 73 73 25 0d a2 b2 06  20 3a 0d a2 bc 37 20 4c  |ass%.... :...7 L|
00016060  44 4d 49 41 20 20 20 52  31 2c 7b 52 33 2d 52 35  |DMIA   R1,{R3-R5|
00016070  7d 20 20 20 20 20 20 20  20 20 20 20 3b 20 67 65  |}           ; ge|
00016080  74 20 73 6f 6d 65 20 62  61 63 6b 67 72 6f 75 6e  |t some backgroun|
00016090  64 0d a2 c6 35 20 53 54  4d 49 41 20 20 20 52 30  |d...5 STMIA   R0|
000160a0  2c 7b 52 33 2d 52 35 7d  20 20 20 20 20 20 20 20  |,{R3-R5}        |
000160b0  20 20 20 3b 20 73 74 6f  72 65 20 6d 61 73 6b 65  |   ; store maske|
000160c0  64 20 66 69 6c 6c 0d a2  d0 06 20 3a 0d a2 da 1c  |d fill.... :....|
000160d0  20 53 55 42 20 20 20 20  20 52 30 2c 52 30 2c 20  | SUB     R0,R0, |
000160e0  23 79 5f 73 68 69 66 74  0d a2 e4 1c 20 53 55 42  |#y_shift.... SUB|
000160f0  20 20 20 20 20 52 31 2c  52 31 2c 20 23 79 5f 73  |     R1,R1, #y_s|
00016100  68 69 66 74 0d a2 ee 06  20 3a 0d a2 f8 06 20 5d  |hift.... :.... ]|
00016110  0d a3 02 06 20 ed 0d a3  0c 0f 20 5b 4f 50 54 20  |.... ..... [OPT |
00016120  70 61 73 73 25 0d a3 16  06 20 3a 0d a3 20 1e 20  |pass%.... :.. . |
00016130  4c 44 52 20 20 20 20 20  52 33 2c 20 66 31 32 31  |LDR     R3, f121|
00016140  32 5f 63 6f 75 6e 74 65  72 0d a3 2a 16 20 41 44  |2_counter..*. AD|
00016150  44 20 20 20 20 20 52 33  2c 52 33 2c 20 23 31 0d  |D     R3,R3, #1.|
00016160  a3 34 1e 20 53 54 52 20  20 20 20 20 52 33 2c 20  |.4. STR     R3, |
00016170  66 31 32 31 32 5f 63 6f  75 6e 74 65 72 0d a3 3e  |f1212_counter..>|
00016180  13 20 43 4d 50 20 20 20  20 20 52 33 2c 20 23 31  |. CMP     R3, #1|
00016190  0d a3 48 1c 20 42 4c 45  20 20 20 20 20 66 31 32  |..H. BLE     f12|
000161a0  31 32 5f 66 69 6c 6c 5f  6c 6f 6f 70 0d a3 52 06  |12_fill_loop..R.|
000161b0  20 3a 0d a3 5c 1d 20 4c  44 4d 46 44 20 20 20 52  | :..\. LDMFD   R|
000161c0  31 33 21 2c 7b 52 30 2d  52 31 32 2c 50 43 7d 0d  |13!,{R0-R12,PC}.|
000161d0  a3 66 06 20 3a 0d a3 70  13 20 2e 66 31 32 31 32  |.f. :..p. .f1212|
000161e0  5f 63 6f 75 6e 74 65 72  0d a3 7a 0e 20 45 51 55  |_counter..z. EQU|
000161f0  44 20 20 20 20 30 0d a3  84 06 20 3a 0d a3 8e 06  |D    0.... :....|
00016200  20 3a 0d a3 98 06 20 3a  0d a3 a2 14 20 2e 66 69  | :.... :.... .fi|
00016210  6c 6c 5f 66 69 6c 6c 5f  31 32 36 34 0d a3 ac 06  |ll_fill_1264....|
00016220  20 3a 0d a3 b6 1e 20 53  54 4d 46 44 20 20 20 52  | :.... STMFD   R|
00016230  31 33 21 2c 7b 52 30 2d  52 31 32 2c 52 31 34 7d  |13!,{R0-R12,R14}|
00016240  0d a3 c0 06 20 3a 0d a3  ca 2f 20 3a 20 20 20 20  |.... :.../ :    |
00016250  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00016260  20 20 20 20 20 20 20 20  3b 20 52 30 20 66 69 6c  |        ; R0 fil|
00016270  6c 20 6e 6f 2e 0d a3 d4  2e 20 3a 20 20 20 20 20  |l no..... :     |
00016280  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00016290  20 20 20 20 20 20 20 3b  20 52 31 20 78 2d 63 6f  |       ; R1 x-co|
000162a0  6f 72 64 0d a3 de 2e 20  3a 20 20 20 20 20 20 20  |ord.... :       |
000162b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000162c0  20 20 20 20 20 3b 20 52  32 20 79 2d 63 6f 6f 72  |     ; R2 y-coor|
000162d0  64 0d a3 e8 06 20 3a 0d  a3 f2 18 20 52 53 42 20  |d.... :.... RSB |
000162e0  20 20 20 20 52 32 2c 52  32 2c 20 23 32 35 36 0d  |    R2,R2, #256.|
000162f0  a3 fc 06 20 3a 0d a4 06  13 20 43 4d 50 20 20 20  |... :.... CMP   |
00016300  20 20 52 31 2c 20 23 30  0d a4 10 1c 20 42 4c 45  |  R1, #0.... BLE|
00016310  20 20 20 20 20 70 73 6d  5f 6e 6f 5f 66 69 6c 6c  |     psm_no_fill|
00016320  31 32 36 34 0d a4 1a 14  20 43 4d 50 20 20 20 20  |1264.... CMP    |
00016330  20 52 32 2c 20 23 33 32  0d a4 24 1c 20 42 4c 45  | R2, #32..$. BLE|
00016340  20 20 20 20 20 70 73 6d  5f 6e 6f 5f 66 69 6c 6c  |     psm_no_fill|
00016350  31 32 36 34 0d a4 2e 17  20 43 4d 50 20 20 20 20  |1264.... CMP    |
00016360  20 52 31 2c 20 23 33 32  30 2d 38 0d a4 38 1c 20  | R1, #320-8..8. |
00016370  42 47 45 20 20 20 20 20  70 73 6d 5f 6e 6f 5f 66  |BGE     psm_no_f|
00016380  69 6c 6c 31 32 36 34 0d  a4 42 15 20 43 4d 50 20  |ill1264..B. CMP |
00016390  20 20 20 20 52 32 2c 20  23 32 35 36 0d a4 4c 1c  |    R2, #256..L.|
000163a0  20 42 47 45 20 20 20 20  20 70 73 6d 5f 6e 6f 5f  | BGE     psm_no_|
000163b0  66 69 6c 6c 31 32 36 34  0d a4 56 19 20 42 20 20  |fill1264..V. B  |
000163c0  20 20 20 20 20 70 73 6d  5f 66 69 6c 6c 31 32 36  |     psm_fill126|
000163d0  34 0d a4 60 15 20 2e 70  73 6d 5f 6e 6f 5f 66 69  |4..`. .psm_no_fi|
000163e0  6c 6c 31 32 36 34 0d a4  6a 1d 20 4c 44 4d 46 44  |ll1264..j. LDMFD|
000163f0  20 20 20 52 31 33 21 2c  7b 52 30 2d 52 31 32 2c  |   R13!,{R0-R12,|
00016400  50 43 7d 0d a4 74 12 20  2e 70 73 6d 5f 66 69 6c  |PC}..t. .psm_fil|
00016410  6c 31 32 36 34 0d a4 7e  06 20 3a 0d a4 88 35 20  |l1264..~. :...5 |
00016420  4d 4f 56 20 20 20 20 20  52 37 2c 20 23 78 5f 73  |MOV     R7, #x_s|
00016430  68 69 66 74 20 20 20 20  20 20 20 20 20 3b 20 67  |hift         ; g|
00016440  65 74 20 73 63 72 65 65  6e 20 73 68 69 66 74 73  |et screen shifts|
00016450  0d a4 92 19 20 4d 4f 56  20 20 20 20 20 52 38 2c  |.... MOV     R8,|
00016460  20 23 79 5f 73 68 69 66  74 0d a4 9c 06 20 3a 0d  | #y_shift.... :.|
00016470  a4 a6 3e 20 4c 44 52 20  20 20 20 20 52 39 2c 20  |..> LDR     R9, |
00016480  66 69 6c 6c 5f 61 64 72  5f 73 63 72 65 65 6e 73  |fill_adr_screens|
00016490  74 6f 72 65 3b 20 67 65  74 20 73 63 72 65 65 6e  |tore; get screen|
000164a0  73 74 6f 72 65 20 61 64  64 72 65 73 73 0d a4 b0  |store address...|
000164b0  14 20 4c 44 52 20 20 20  20 20 52 39 2c 5b 52 39  |. LDR     R9,[R9|
000164c0  5d 0d a4 ba 18 20 4d 4c  41 20 20 20 20 20 52 33  |].... MLA     R3|
000164d0  2c 52 37 2c 52 31 2c 52  39 0d a4 c4 18 20 4d 4c  |,R7,R1,R9.... ML|
000164e0  41 20 20 20 20 20 52 30  2c 52 38 2c 52 32 2c 52  |A     R0,R8,R2,R|
000164f0  33 0d a4 ce 06 20 3a 0d  a4 d8 36 20 4c 44 52 20  |3.... :...6 LDR |
00016500  20 20 20 20 52 39 2c 20  66 69 6c 6c 5f 73 63 72  |    R9, fill_scr|
00016510  65 65 6e 64 61 74 61 20  20 3b 20 67 65 74 20 73  |eendata  ; get s|
00016520  63 72 65 65 6e 20 61 64  64 72 65 73 73 0d a4 e2  |creen address...|
00016530  18 20 4d 4c 41 20 20 20  20 20 52 33 2c 52 37 2c  |. MLA     R3,R7,|
00016540  52 31 2c 52 39 0d a4 ec  18 20 4d 4c 41 20 20 20  |R1,R9.... MLA   |
00016550  20 20 52 31 2c 52 38 2c  52 32 2c 52 33 0d a4 f6  |  R1,R8,R2,R3...|
00016560  06 20 3a 0d a5 00 13 20  4d 4f 56 20 20 20 20 20  |. :.... MOV     |
00016570  52 33 2c 20 23 31 0d a5  0a 1e 20 53 54 52 20 20  |R3, #1.... STR  |
00016580  20 20 20 52 33 2c 20 66  31 32 36 34 5f 63 6f 75  |   R3, f1264_cou|
00016590  6e 74 65 72 0d a5 14 06  20 3a 0d a5 1e 15 20 2e  |nter.... :.... .|
000165a0  66 31 32 36 34 5f 66 69  6c 6c 5f 6c 6f 6f 70 0d  |f1264_fill_loop.|
000165b0  a5 28 06 20 3a 0d a5 32  06 20 5d 0d a5 3c 0f 20  |.(. :..2. ]..<. |
000165c0  e3 20 61 25 3d 31 20 b8  20 38 0d a5 46 0f 20 5b  |. a%=1 . 8..F. [|
000165d0  4f 50 54 20 70 61 73 73  25 0d a5 50 06 20 3a 0d  |OPT pass%..P. :.|
000165e0  a5 5a 37 20 4c 44 4d 49  41 20 20 20 52 31 2c 7b  |.Z7 LDMIA   R1,{|
000165f0  52 33 2d 52 35 7d 20 20  20 20 20 20 20 20 20 20  |R3-R5}          |
00016600  20 3b 20 67 65 74 20 73  6f 6d 65 20 62 61 63 6b  | ; get some back|
00016610  67 72 6f 75 6e 64 0d a5  64 35 20 53 54 4d 49 41  |ground..d5 STMIA|
00016620  20 20 20 52 30 2c 7b 52  33 2d 52 35 7d 20 20 20  |   R0,{R3-R5}   |
00016630  20 20 20 20 20 20 20 20  3b 20 73 74 6f 72 65 20  |        ; store |
00016640  6d 61 73 6b 65 64 20 66  69 6c 6c 0d a5 6e 06 20  |masked fill..n. |
00016650  3a 0d a5 78 1c 20 53 55  42 20 20 20 20 20 52 30  |:..x. SUB     R0|
00016660  2c 52 30 2c 20 23 79 5f  73 68 69 66 74 0d a5 82  |,R0, #y_shift...|
00016670  1c 20 53 55 42 20 20 20  20 20 52 31 2c 52 31 2c  |. SUB     R1,R1,|
00016680  20 23 79 5f 73 68 69 66  74 0d a5 8c 06 20 3a 0d  | #y_shift.... :.|
00016690  a5 96 06 20 5d 0d a5 a0  06 20 ed 0d a5 aa 0f 20  |... ].... ..... |
000166a0  5b 4f 50 54 20 70 61 73  73 25 0d a5 b4 06 20 3a  |[OPT pass%.... :|
000166b0  0d a5 be 1e 20 4c 44 52  20 20 20 20 20 52 33 2c  |.... LDR     R3,|
000166c0  20 66 31 32 36 34 5f 63  6f 75 6e 74 65 72 0d a5  | f1264_counter..|
000166d0  c8 16 20 41 44 44 20 20  20 20 20 52 33 2c 52 33  |.. ADD     R3,R3|
000166e0  2c 20 23 31 0d a5 d2 1e  20 53 54 52 20 20 20 20  |, #1.... STR    |
000166f0  20 52 33 2c 20 66 31 32  36 34 5f 63 6f 75 6e 74  | R3, f1264_count|
00016700  65 72 0d a5 dc 13 20 43  4d 50 20 20 20 20 20 52  |er.... CMP     R|
00016710  33 2c 20 23 38 0d a5 e6  1c 20 42 4c 45 20 20 20  |3, #8.... BLE   |
00016720  20 20 66 31 32 36 34 5f  66 69 6c 6c 5f 6c 6f 6f  |  f1264_fill_loo|
00016730  70 0d a5 f0 06 20 3a 0d  a5 fa 1d 20 4c 44 4d 46  |p.... :.... LDMF|
00016740  44 20 20 20 52 31 33 21  2c 7b 52 30 2d 52 31 32  |D   R13!,{R0-R12|
00016750  2c 50 43 7d 0d a6 04 06  20 3a 0d a6 0e 13 20 2e  |,PC}.... :.... .|
00016760  66 31 32 36 34 5f 63 6f  75 6e 74 65 72 0d a6 18  |f1264_counter...|
00016770  0e 20 45 51 55 44 20 20  20 20 30 0d a6 22 06 20  |. EQUD    0..". |
00016780  3a 0d a6 2c 15 20 2e 66  69 6c 6c 5f 73 63 72 65  |:..,. .fill_scre|
00016790  65 6e 64 61 74 61 0d a6  36 18 20 45 51 55 44 20  |endata..6. EQUD |
000167a0  20 20 20 73 63 72 65 65  6e 64 61 74 61 25 0d a6  |   screendata%..|
000167b0  40 1a 20 2e 66 69 6c 6c  5f 61 64 72 5f 73 63 72  |@. .fill_adr_scr|
000167c0  65 65 6e 73 74 6f 72 65  0d a6 4a 18 20 45 51 55  |eenstore..J. EQU|
000167d0  44 20 20 20 20 73 63 72  65 65 6e 73 74 6f 72 65  |D    screenstore|
000167e0  0d a6 54 06 20 3a 0d a6  5e 06 20 3a 0d a6 68 06  |..T. :..^. :..h.|
000167f0  20 3a 0d a6 72 14 20 2e  66 69 6c 6c 5f 66 69 6c  | :..r. .fill_fil|
00016800  6c 5f 32 30 31 36 0d a6  7c 06 20 3a 0d a6 86 1e  |l_2016..|. :....|
00016810  20 53 54 4d 46 44 20 20  20 52 31 33 21 2c 7b 52  | STMFD   R13!,{R|
00016820  30 2d 52 31 32 2c 52 31  34 7d 0d a6 90 06 20 3a  |0-R12,R14}.... :|
00016830  0d a6 9a 2f 20 3a 20 20  20 20 20 20 20 20 20 20  |.../ :          |
00016840  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00016850  20 20 3b 20 52 30 20 66  69 6c 6c 20 6e 6f 2e 0d  |  ; R0 fill no..|
00016860  a6 a4 2e 20 3a 20 20 20  20 20 20 20 20 20 20 20  |... :           |
00016870  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00016880  20 3b 20 52 31 20 78 2d  63 6f 6f 72 64 0d a6 ae  | ; R1 x-coord...|
00016890  2e 20 3a 20 20 20 20 20  20 20 20 20 20 20 20 20  |. :             |
000168a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 3b  |               ;|
000168b0  20 52 32 20 79 2d 63 6f  6f 72 64 0d a6 b8 06 20  | R2 y-coord.... |
000168c0  3a 0d a6 c2 18 20 52 53  42 20 20 20 20 20 52 32  |:.... RSB     R2|
000168d0  2c 52 32 2c 20 23 32 35  36 0d a6 cc 06 20 3a 0d  |,R2, #256.... :.|
000168e0  a6 d6 13 20 43 4d 50 20  20 20 20 20 52 31 2c 20  |... CMP     R1, |
000168f0  23 30 0d a6 e0 1c 20 42  4c 45 20 20 20 20 20 70  |#0.... BLE     p|
00016900  73 6d 5f 6e 6f 5f 66 69  6c 6c 32 30 31 36 0d a6  |sm_no_fill2016..|
00016910  ea 14 20 43 4d 50 20 20  20 20 20 52 32 2c 20 23  |.. CMP     R2, #|
00016920  31 36 0d a6 f4 1c 20 42  4c 45 20 20 20 20 20 70  |16.... BLE     p|
00016930  73 6d 5f 6e 6f 5f 66 69  6c 6c 32 30 31 36 0d a6  |sm_no_fill2016..|
00016940  fe 18 20 43 4d 50 20 20  20 20 20 52 31 2c 20 23  |.. CMP     R1, #|
00016950  33 32 30 2d 31 36 0d a7  08 1c 20 42 47 45 20 20  |320-16.... BGE  |
00016960  20 20 20 70 73 6d 5f 6e  6f 5f 66 69 6c 6c 32 30  |   psm_no_fill20|
00016970  31 36 0d a7 12 15 20 43  4d 50 20 20 20 20 20 52  |16.... CMP     R|
00016980  32 2c 20 23 32 35 36 0d  a7 1c 1c 20 42 47 45 20  |2, #256.... BGE |
00016990  20 20 20 20 70 73 6d 5f  6e 6f 5f 66 69 6c 6c 32  |    psm_no_fill2|
000169a0  30 31 36 0d a7 26 19 20  42 20 20 20 20 20 20 20  |016..&. B       |
000169b0  70 73 6d 5f 66 69 6c 6c  32 30 31 36 0d a7 30 15  |psm_fill2016..0.|
000169c0  20 2e 70 73 6d 5f 6e 6f  5f 66 69 6c 6c 32 30 31  | .psm_no_fill201|
000169d0  36 0d a7 3a 1d 20 4c 44  4d 46 44 20 20 20 52 31  |6..:. LDMFD   R1|
000169e0  33 21 2c 7b 52 30 2d 52  31 32 2c 50 43 7d 0d a7  |3!,{R0-R12,PC}..|
000169f0  44 12 20 2e 70 73 6d 5f  66 69 6c 6c 32 30 31 36  |D. .psm_fill2016|
00016a00  0d a7 4e 06 20 3a 0d a7  58 35 20 4d 4f 56 20 20  |..N. :..X5 MOV  |
00016a10  20 20 20 52 37 2c 20 23  78 5f 73 68 69 66 74 20  |   R7, #x_shift |
00016a20  20 20 20 20 20 20 20 20  3b 20 67 65 74 20 73 63  |        ; get sc|
00016a30  72 65 65 6e 20 73 68 69  66 74 73 0d a7 62 19 20  |reen shifts..b. |
00016a40  4d 4f 56 20 20 20 20 20  52 38 2c 20 23 79 5f 73  |MOV     R8, #y_s|
00016a50  68 69 66 74 0d a7 6c 06  20 3a 0d a7 76 3e 20 4c  |hift..l. :..v> L|
00016a60  44 52 20 20 20 20 20 52  39 2c 20 66 69 6c 6c 5f  |DR     R9, fill_|
00016a70  61 64 72 5f 73 63 72 65  65 6e 73 74 6f 72 65 3b  |adr_screenstore;|
00016a80  20 67 65 74 20 73 63 72  65 65 6e 73 74 6f 72 65  | get screenstore|
00016a90  20 61 64 64 72 65 73 73  0d a7 80 14 20 4c 44 52  | address.... LDR|
00016aa0  20 20 20 20 20 52 39 2c  5b 52 39 5d 0d a7 8a 18  |     R9,[R9]....|
00016ab0  20 4d 4c 41 20 20 20 20  20 52 33 2c 52 37 2c 52  | MLA     R3,R7,R|
00016ac0  31 2c 52 39 0d a7 94 18  20 4d 4c 41 20 20 20 20  |1,R9.... MLA    |
00016ad0  20 52 30 2c 52 38 2c 52  32 2c 52 33 0d a7 9e 06  | R0,R8,R2,R3....|
00016ae0  20 3a 0d a7 a8 36 20 4c  44 52 20 20 20 20 20 52  | :...6 LDR     R|
00016af0  39 2c 20 66 69 6c 6c 5f  73 63 72 65 65 6e 64 61  |9, fill_screenda|
00016b00  74 61 20 20 3b 20 67 65  74 20 73 63 72 65 65 6e  |ta  ; get screen|
00016b10  20 61 64 64 72 65 73 73  0d a7 b2 18 20 4d 4c 41  | address.... MLA|
00016b20  20 20 20 20 20 52 33 2c  52 37 2c 52 31 2c 52 39  |     R3,R7,R1,R9|
00016b30  0d a7 bc 18 20 4d 4c 41  20 20 20 20 20 52 31 2c  |.... MLA     R1,|
00016b40  52 38 2c 52 32 2c 52 33  0d a7 c6 06 20 3a 0d a7  |R8,R2,R3.... :..|
00016b50  d0 13 20 4d 4f 56 20 20  20 20 20 52 33 2c 20 23  |.. MOV     R3, #|
00016b60  31 0d a7 da 1e 20 53 54  52 20 20 20 20 20 52 33  |1.... STR     R3|
00016b70  2c 20 66 32 30 31 36 5f  63 6f 75 6e 74 65 72 0d  |, f2016_counter.|
00016b80  a7 e4 06 20 3a 0d a7 ee  15 20 2e 66 32 30 31 36  |... :.... .f2016|
00016b90  5f 66 69 6c 6c 5f 6c 6f  6f 70 0d a7 f8 06 20 3a  |_fill_loop.... :|
00016ba0  0d a8 02 06 20 5d 0d a8  0c 0f 20 e3 20 61 25 3d  |.... ].... . a%=|
00016bb0  31 20 b8 20 34 0d a8 16  0f 20 5b 4f 50 54 20 70  |1 . 4.... [OPT p|
00016bc0  61 73 73 25 0d a8 20 06  20 3a 0d a8 2a 37 20 4c  |ass%.. . :..*7 L|
00016bd0  44 4d 49 41 20 20 20 52  31 2c 7b 52 33 2d 52 37  |DMIA   R1,{R3-R7|
00016be0  7d 20 20 20 20 20 20 20  20 20 20 20 3b 20 67 65  |}           ; ge|
00016bf0  74 20 73 6f 6d 65 20 62  61 63 6b 67 72 6f 75 6e  |t some backgroun|
00016c00  64 0d a8 34 35 20 53 54  4d 49 41 20 20 20 52 30  |d..45 STMIA   R0|
00016c10  2c 7b 52 33 2d 52 37 7d  20 20 20 20 20 20 20 20  |,{R3-R7}        |
00016c20  20 20 20 3b 20 73 74 6f  72 65 20 6d 61 73 6b 65  |   ; store maske|
00016c30  64 20 66 69 6c 6c 0d a8  3e 06 20 3a 0d a8 48 1c  |d fill..>. :..H.|
00016c40  20 53 55 42 20 20 20 20  20 52 30 2c 52 30 2c 20  | SUB     R0,R0, |
00016c50  23 79 5f 73 68 69 66 74  0d a8 52 1c 20 53 55 42  |#y_shift..R. SUB|
00016c60  20 20 20 20 20 52 31 2c  52 31 2c 20 23 79 5f 73  |     R1,R1, #y_s|
00016c70  68 69 66 74 0d a8 5c 06  20 3a 0d a8 66 06 20 5d  |hift..\. :..f. ]|
00016c80  0d a8 70 06 20 ed 0d a8  7a 0f 20 5b 4f 50 54 20  |..p. ...z. [OPT |
00016c90  70 61 73 73 25 0d a8 84  06 20 3a 0d a8 8e 1e 20  |pass%.... :.... |
00016ca0  4c 44 52 20 20 20 20 20  52 33 2c 20 66 32 30 31  |LDR     R3, f201|
00016cb0  36 5f 63 6f 75 6e 74 65  72 0d a8 98 16 20 41 44  |6_counter.... AD|
00016cc0  44 20 20 20 20 20 52 33  2c 52 33 2c 20 23 31 0d  |D     R3,R3, #1.|
00016cd0  a8 a2 1e 20 53 54 52 20  20 20 20 20 52 33 2c 20  |... STR     R3, |
00016ce0  66 32 30 31 36 5f 63 6f  75 6e 74 65 72 0d a8 ac  |f2016_counter...|
00016cf0  13 20 43 4d 50 20 20 20  20 20 52 33 2c 20 23 34  |. CMP     R3, #4|
00016d00  0d a8 b6 1c 20 42 4c 45  20 20 20 20 20 66 32 30  |.... BLE     f20|
00016d10  31 36 5f 66 69 6c 6c 5f  6c 6f 6f 70 0d a8 c0 06  |16_fill_loop....|
00016d20  20 3a 0d a8 ca 1d 20 4c  44 4d 46 44 20 20 20 52  | :.... LDMFD   R|
00016d30  31 33 21 2c 7b 52 30 2d  52 31 32 2c 50 43 7d 0d  |13!,{R0-R12,PC}.|
00016d40  a8 d4 06 20 3a 0d a8 de  13 20 2e 66 32 30 31 36  |... :.... .f2016|
00016d50  5f 63 6f 75 6e 74 65 72  0d a8 e8 0e 20 45 51 55  |_counter.... EQU|
00016d60  44 20 20 20 20 30 0d a8  f2 06 20 3a 0d a8 fc 06  |D    0.... :....|
00016d70  20 3a 0d a9 06 06 20 3a  0d a9 10 14 20 2e 66 69  | :.... :.... .fi|
00016d80  6c 6c 5f 66 69 6c 6c 5f  30 38 30 34 0d a9 1a 06  |ll_fill_0804....|
00016d90  20 3a 0d a9 24 1e 20 53  54 4d 46 44 20 20 20 52  | :..$. STMFD   R|
00016da0  31 33 21 2c 7b 52 30 2d  52 31 32 2c 52 31 34 7d  |13!,{R0-R12,R14}|
00016db0  0d a9 2e 06 20 3a 0d a9  38 2f 20 3a 20 20 20 20  |.... :..8/ :    |
00016dc0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00016dd0  20 20 20 20 20 20 20 20  3b 20 52 30 20 66 69 6c  |        ; R0 fil|
00016de0  6c 20 6e 6f 2e 0d a9 42  2e 20 3a 20 20 20 20 20  |l no...B. :     |
00016df0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00016e00  20 20 20 20 20 20 20 3b  20 52 31 20 78 2d 63 6f  |       ; R1 x-co|
00016e10  6f 72 64 0d a9 4c 2e 20  3a 20 20 20 20 20 20 20  |ord..L. :       |
00016e20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00016e30  20 20 20 20 20 3b 20 52  32 20 79 2d 63 6f 6f 72  |     ; R2 y-coor|
00016e40  64 0d a9 56 06 20 3a 0d  a9 60 18 20 52 53 42 20  |d..V. :..`. RSB |
00016e50  20 20 20 20 52 32 2c 52  32 2c 20 23 32 35 36 0d  |    R2,R2, #256.|
00016e60  a9 6a 06 20 3a 0d a9 74  13 20 43 4d 50 20 20 20  |.j. :..t. CMP   |
00016e70  20 20 52 31 2c 20 23 30  0d a9 7e 1c 20 42 4c 45  |  R1, #0..~. BLE|
00016e80  20 20 20 20 20 70 73 6d  5f 6e 6f 5f 66 69 6c 6c  |     psm_no_fill|
00016e90  30 38 30 34 0d a9 88 13  20 43 4d 50 20 20 20 20  |0804.... CMP    |
00016ea0  20 52 32 2c 20 23 34 0d  a9 92 1c 20 42 4c 45 20  | R2, #4.... BLE |
00016eb0  20 20 20 20 70 73 6d 5f  6e 6f 5f 66 69 6c 6c 30  |    psm_no_fill0|
00016ec0  38 30 34 0d a9 9c 17 20  43 4d 50 20 20 20 20 20  |804.... CMP     |
00016ed0  52 31 2c 20 23 33 32 30  2d 34 0d a9 a6 1c 20 42  |R1, #320-4.... B|
00016ee0  47 45 20 20 20 20 20 70  73 6d 5f 6e 6f 5f 66 69  |GE     psm_no_fi|
00016ef0  6c 6c 30 38 30 34 0d a9  b0 15 20 43 4d 50 20 20  |ll0804.... CMP  |
00016f00  20 20 20 52 32 2c 20 23  32 35 36 0d a9 ba 1c 20  |   R2, #256.... |
00016f10  42 47 45 20 20 20 20 20  70 73 6d 5f 6e 6f 5f 66  |BGE     psm_no_f|
00016f20  69 6c 6c 30 38 30 34 0d  a9 c4 19 20 42 20 20 20  |ill0804.... B   |
00016f30  20 20 20 20 70 73 6d 5f  66 69 6c 6c 30 38 30 34  |    psm_fill0804|
00016f40  0d a9 ce 15 20 2e 70 73  6d 5f 6e 6f 5f 66 69 6c  |.... .psm_no_fil|
00016f50  6c 30 38 30 34 0d a9 d8  1d 20 4c 44 4d 46 44 20  |l0804.... LDMFD |
00016f60  20 20 52 31 33 21 2c 7b  52 30 2d 52 31 32 2c 50  |  R13!,{R0-R12,P|
00016f70  43 7d 0d a9 e2 12 20 2e  70 73 6d 5f 66 69 6c 6c  |C}.... .psm_fill|
00016f80  30 38 30 34 0d a9 ec 06  20 3a 0d a9 f6 35 20 4d  |0804.... :...5 M|
00016f90  4f 56 20 20 20 20 20 52  37 2c 20 23 78 5f 73 68  |OV     R7, #x_sh|
00016fa0  69 66 74 20 20 20 20 20  20 20 20 20 3b 20 67 65  |ift         ; ge|
00016fb0  74 20 73 63 72 65 65 6e  20 73 68 69 66 74 73 0d  |t screen shifts.|
00016fc0  aa 00 19 20 4d 4f 56 20  20 20 20 20 52 38 2c 20  |... MOV     R8, |
00016fd0  23 79 5f 73 68 69 66 74  0d aa 0a 06 20 3a 0d aa  |#y_shift.... :..|
00016fe0  14 3e 20 4c 44 52 20 20  20 20 20 52 39 2c 20 66  |.> LDR     R9, f|
00016ff0  69 6c 6c 5f 61 64 72 5f  73 63 72 65 65 6e 73 74  |ill_adr_screenst|
00017000  6f 72 65 3b 20 67 65 74  20 73 63 72 65 65 6e 73  |ore; get screens|
00017010  74 6f 72 65 20 61 64 64  72 65 73 73 0d aa 1e 14  |tore address....|
00017020  20 4c 44 52 20 20 20 20  20 52 39 2c 5b 52 39 5d  | LDR     R9,[R9]|
00017030  0d aa 28 18 20 4d 4c 41  20 20 20 20 20 52 33 2c  |..(. MLA     R3,|
00017040  52 37 2c 52 31 2c 52 39  0d aa 32 18 20 4d 4c 41  |R7,R1,R9..2. MLA|
00017050  20 20 20 20 20 52 30 2c  52 38 2c 52 32 2c 52 33  |     R0,R8,R2,R3|
00017060  0d aa 3c 06 20 3a 0d aa  46 36 20 4c 44 52 20 20  |..<. :..F6 LDR  |
00017070  20 20 20 52 39 2c 20 66  69 6c 6c 5f 73 63 72 65  |   R9, fill_scre|
00017080  65 6e 64 61 74 61 20 20  3b 20 67 65 74 20 73 63  |endata  ; get sc|
00017090  72 65 65 6e 20 61 64 64  72 65 73 73 0d aa 50 18  |reen address..P.|
000170a0  20 4d 4c 41 20 20 20 20  20 52 33 2c 52 37 2c 52  | MLA     R3,R7,R|
000170b0  31 2c 52 39 0d aa 5a 18  20 4d 4c 41 20 20 20 20  |1,R9..Z. MLA    |
000170c0  20 52 31 2c 52 38 2c 52  32 2c 52 33 0d aa 64 06  | R1,R8,R2,R3..d.|
000170d0  20 3a 0d aa 6e 15 20 2e  66 30 38 30 34 5f 66 69  | :..n. .f0804_fi|
000170e0  6c 6c 5f 6c 6f 6f 70 0d  aa 78 06 20 3a 0d aa 82  |ll_loop..x. :...|
000170f0  06 20 5d 0d aa 8c 0f 20  e3 20 61 25 3d 31 20 b8  |. ].... . a%=1 .|
00017100  20 34 0d aa 96 0f 20 5b  4f 50 54 20 70 61 73 73  | 4.... [OPT pass|
00017110  25 0d aa a0 06 20 3a 0d  aa aa 37 20 4c 44 4d 49  |%.... :...7 LDMI|
00017120  41 20 20 20 52 31 2c 7b  52 33 2d 52 34 7d 20 20  |A   R1,{R3-R4}  |
00017130  20 20 20 20 20 20 20 20  20 3b 20 67 65 74 20 73  |         ; get s|
00017140  6f 6d 65 20 62 61 63 6b  67 72 6f 75 6e 64 0d aa  |ome background..|
00017150  b4 35 20 53 54 4d 49 41  20 20 20 52 30 2c 7b 52  |.5 STMIA   R0,{R|
00017160  33 2d 52 34 7d 20 20 20  20 20 20 20 20 20 20 20  |3-R4}           |
00017170  3b 20 73 74 6f 72 65 20  6d 61 73 6b 65 64 20 66  |; store masked f|
00017180  69 6c 6c 0d aa be 06 20  3a 0d aa c8 1c 20 53 55  |ill.... :.... SU|
00017190  42 20 20 20 20 20 52 30  2c 52 30 2c 20 23 79 5f  |B     R0,R0, #y_|
000171a0  73 68 69 66 74 0d aa d2  1c 20 53 55 42 20 20 20  |shift.... SUB   |
000171b0  20 20 52 31 2c 52 31 2c  20 23 79 5f 73 68 69 66  |  R1,R1, #y_shif|
000171c0  74 0d aa dc 06 20 3a 0d  aa e6 06 20 5d 0d aa f0  |t.... :.... ]...|
000171d0  06 20 ed 0d aa fa 0f 20  5b 4f 50 54 20 70 61 73  |. ..... [OPT pas|
000171e0  73 25 0d ab 04 06 20 3a  0d ab 0e 1d 20 4c 44 4d  |s%.... :.... LDM|
000171f0  46 44 20 20 20 52 31 33  21 2c 7b 52 30 2d 52 31  |FD   R13!,{R0-R1|
00017200  32 2c 50 43 7d 0d ab 18  06 20 3a 0d ab 22 06 20  |2,PC}.... :..". |
00017210  3a 0d ab 2c 06 20 3a 0d  ab 36 14 20 2e 66 69 6c  |:..,. :..6. .fil|
00017220  6c 5f 66 69 6c 6c 5f 31  32 30 38 0d ab 40 06 20  |l_fill_1208..@. |
00017230  3a 0d ab 4a 1e 20 53 54  4d 46 44 20 20 20 52 31  |:..J. STMFD   R1|
00017240  33 21 2c 7b 52 30 2d 52  31 32 2c 52 31 34 7d 0d  |3!,{R0-R12,R14}.|
00017250  ab 54 06 20 3a 0d ab 5e  2f 20 3a 20 20 20 20 20  |.T. :..^/ :     |
00017260  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00017270  20 20 20 20 20 20 20 3b  20 52 30 20 66 69 6c 6c  |       ; R0 fill|
00017280  20 6e 6f 2e 0d ab 68 2e  20 3a 20 20 20 20 20 20  | no...h. :      |
00017290  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000172a0  20 20 20 20 20 20 3b 20  52 31 20 78 2d 63 6f 6f  |      ; R1 x-coo|
000172b0  72 64 0d ab 72 2e 20 3a  20 20 20 20 20 20 20 20  |rd..r. :        |
000172c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000172d0  20 20 20 20 3b 20 52 32  20 79 2d 63 6f 6f 72 64  |    ; R2 y-coord|
000172e0  0d ab 7c 06 20 3a 0d ab  86 18 20 52 53 42 20 20  |..|. :.... RSB  |
000172f0  20 20 20 52 32 2c 52 32  2c 20 23 32 35 36 0d ab  |   R2,R2, #256..|
00017300  90 06 20 3a 0d ab 9a 13  20 43 4d 50 20 20 20 20  |.. :.... CMP    |
00017310  20 52 31 2c 20 23 30 0d  ab a4 1c 20 42 4c 45 20  | R1, #0.... BLE |
00017320  20 20 20 20 70 73 6d 5f  6e 6f 5f 66 69 6c 6c 31  |    psm_no_fill1|
00017330  32 30 38 0d ab ae 13 20  43 4d 50 20 20 20 20 20  |208.... CMP     |
00017340  52 32 2c 20 23 38 0d ab  b8 1c 20 42 4c 45 20 20  |R2, #8.... BLE  |
00017350  20 20 20 70 73 6d 5f 6e  6f 5f 66 69 6c 6c 31 32  |   psm_no_fill12|
00017360  30 38 0d ab c2 17 20 43  4d 50 20 20 20 20 20 52  |08.... CMP     R|
00017370  31 2c 20 23 33 32 30 2d  38 0d ab cc 1c 20 42 47  |1, #320-8.... BG|
00017380  45 20 20 20 20 20 70 73  6d 5f 6e 6f 5f 66 69 6c  |E     psm_no_fil|
00017390  6c 31 32 30 38 0d ab d6  15 20 43 4d 50 20 20 20  |l1208.... CMP   |
000173a0  20 20 52 32 2c 20 23 32  35 36 0d ab e0 1c 20 42  |  R2, #256.... B|
000173b0  47 45 20 20 20 20 20 70  73 6d 5f 6e 6f 5f 66 69  |GE     psm_no_fi|
000173c0  6c 6c 31 32 30 38 0d ab  ea 19 20 42 20 20 20 20  |ll1208.... B    |
000173d0  20 20 20 70 73 6d 5f 66  69 6c 6c 31 32 30 38 0d  |   psm_fill1208.|
000173e0  ab f4 15 20 2e 70 73 6d  5f 6e 6f 5f 66 69 6c 6c  |... .psm_no_fill|
000173f0  31 32 30 38 0d ab fe 1d  20 4c 44 4d 46 44 20 20  |1208.... LDMFD  |
00017400  20 52 31 33 21 2c 7b 52  30 2d 52 31 32 2c 50 43  | R13!,{R0-R12,PC|
00017410  7d 0d ac 08 12 20 2e 70  73 6d 5f 66 69 6c 6c 31  |}.... .psm_fill1|
00017420  32 30 38 0d ac 12 06 20  3a 0d ac 1c 35 20 4d 4f  |208.... :...5 MO|
00017430  56 20 20 20 20 20 52 37  2c 20 23 78 5f 73 68 69  |V     R7, #x_shi|
00017440  66 74 20 20 20 20 20 20  20 20 20 3b 20 67 65 74  |ft         ; get|
00017450  20 73 63 72 65 65 6e 20  73 68 69 66 74 73 0d ac  | screen shifts..|
00017460  26 19 20 4d 4f 56 20 20  20 20 20 52 38 2c 20 23  |&. MOV     R8, #|
00017470  79 5f 73 68 69 66 74 0d  ac 30 06 20 3a 0d ac 3a  |y_shift..0. :..:|
00017480  3e 20 4c 44 52 20 20 20  20 20 52 39 2c 20 66 69  |> LDR     R9, fi|
00017490  6c 6c 5f 61 64 72 5f 73  63 72 65 65 6e 73 74 6f  |ll_adr_screensto|
000174a0  72 65 3b 20 67 65 74 20  73 63 72 65 65 6e 73 74  |re; get screenst|
000174b0  6f 72 65 20 61 64 64 72  65 73 73 0d ac 44 14 20  |ore address..D. |
000174c0  4c 44 52 20 20 20 20 20  52 39 2c 5b 52 39 5d 0d  |LDR     R9,[R9].|
000174d0  ac 4e 18 20 4d 4c 41 20  20 20 20 20 52 33 2c 52  |.N. MLA     R3,R|
000174e0  37 2c 52 31 2c 52 39 0d  ac 58 18 20 4d 4c 41 20  |7,R1,R9..X. MLA |
000174f0  20 20 20 20 52 30 2c 52  38 2c 52 32 2c 52 33 0d  |    R0,R8,R2,R3.|
00017500  ac 62 06 20 3a 0d ac 6c  36 20 4c 44 52 20 20 20  |.b. :..l6 LDR   |
00017510  20 20 52 39 2c 20 66 69  6c 6c 5f 73 63 72 65 65  |  R9, fill_scree|
00017520  6e 64 61 74 61 20 20 3b  20 67 65 74 20 73 63 72  |ndata  ; get scr|
00017530  65 65 6e 20 61 64 64 72  65 73 73 0d ac 76 18 20  |een address..v. |
00017540  4d 4c 41 20 20 20 20 20  52 33 2c 52 37 2c 52 31  |MLA     R3,R7,R1|
00017550  2c 52 39 0d ac 80 18 20  4d 4c 41 20 20 20 20 20  |,R9.... MLA     |
00017560  52 31 2c 52 38 2c 52 32  2c 52 33 0d ac 8a 06 20  |R1,R8,R2,R3.... |
00017570  3a 0d ac 94 06 20 5d 0d  ac 9e 0f 20 e3 20 61 25  |:.... ].... . a%|
00017580  3d 31 20 b8 20 38 0d ac  a8 0f 20 5b 4f 50 54 20  |=1 . 8.... [OPT |
00017590  70 61 73 73 25 0d ac b2  06 20 3a 0d ac bc 34 20  |pass%.... :...4 |
000175a0  4c 44 4d 49 41 20 20 20  52 31 2c 7b 52 33 2d 52  |LDMIA   R1,{R3-R|
000175b0  35 7d 20 20 20 20 20 20  20 20 3b 20 67 65 74 20  |5}        ; get |
000175c0  73 6f 6d 65 20 62 61 63  6b 67 72 6f 75 6e 64 0d  |some background.|
000175d0  ac c6 32 20 53 54 4d 49  41 20 20 20 52 30 2c 7b  |..2 STMIA   R0,{|
000175e0  52 33 2d 52 35 7d 20 20  20 20 20 20 20 20 3b 20  |R3-R5}        ; |
000175f0  73 74 6f 72 65 20 6d 61  73 6b 65 64 20 66 69 6c  |store masked fil|
00017600  6c 0d ac d0 06 20 3a 0d  ac da 1c 20 53 55 42 20  |l.... :.... SUB |
00017610  20 20 20 20 52 30 2c 52  30 2c 20 23 79 5f 73 68  |    R0,R0, #y_sh|
00017620  69 66 74 0d ac e4 1c 20  53 55 42 20 20 20 20 20  |ift.... SUB     |
00017630  52 31 2c 52 31 2c 20 23  79 5f 73 68 69 66 74 0d  |R1,R1, #y_shift.|
00017640  ac ee 06 20 3a 0d ac f8  06 20 5d 0d ad 02 06 20  |... :.... ].... |
00017650  ed 0d ad 0c 0f 20 5b 4f  50 54 20 70 61 73 73 25  |..... [OPT pass%|
00017660  0d ad 16 06 20 3a 0d ad  20 1d 20 4c 44 4d 46 44  |.... :.. . LDMFD|
00017670  20 20 20 52 31 33 21 2c  7b 52 30 2d 52 31 32 2c  |   R13!,{R0-R12,|
00017680  50 43 7d 0d ad 2a 06 20  3a 0d ad 34 06 20 3a 0d  |PC}..*. :..4. :.|
00017690  ad 3e 06 20 3a 0d ad 48  14 20 2e 66 69 6c 6c 5f  |.>. :..H. .fill_|
000176a0  66 69 6c 6c 5f 31 36 31  36 0d ad 52 06 20 3a 0d  |fill_1616..R. :.|
000176b0  ad 5c 1e 20 53 54 4d 46  44 20 20 20 52 31 33 21  |.\. STMFD   R13!|
000176c0  2c 7b 52 30 2d 52 31 32  2c 52 31 34 7d 0d ad 66  |,{R0-R12,R14}..f|
000176d0  06 20 3a 0d ad 70 18 20  52 53 42 20 20 20 20 20  |. :..p. RSB     |
000176e0  52 32 2c 52 32 2c 20 23  32 35 36 0d ad 7a 06 20  |R2,R2, #256..z. |
000176f0  3a 0d ad 84 13 20 43 4d  50 20 20 20 20 20 52 31  |:.... CMP     R1|
00017700  2c 20 23 30 0d ad 8e 1c  20 42 4c 45 20 20 20 20  |, #0.... BLE    |
00017710  20 70 73 6d 5f 6e 6f 5f  66 69 6c 6c 31 36 31 36  | psm_no_fill1616|
00017720  0d ad 98 14 20 43 4d 50  20 20 20 20 20 52 32 2c  |.... CMP     R2,|
00017730  20 23 31 36 0d ad a2 1c  20 42 4c 45 20 20 20 20  | #16.... BLE    |
00017740  20 70 73 6d 5f 6e 6f 5f  66 69 6c 6c 31 36 31 36  | psm_no_fill1616|
00017750  0d ad ac 18 20 43 4d 50  20 20 20 20 20 52 31 2c  |.... CMP     R1,|
00017760  20 23 33 32 30 2d 31 36  0d ad b6 1c 20 42 47 45  | #320-16.... BGE|
00017770  20 20 20 20 20 70 73 6d  5f 6e 6f 5f 66 69 6c 6c  |     psm_no_fill|
00017780  31 36 31 36 0d ad c0 15  20 43 4d 50 20 20 20 20  |1616.... CMP    |
00017790  20 52 32 2c 20 23 32 35  36 0d ad ca 1c 20 42 47  | R2, #256.... BG|
000177a0  45 20 20 20 20 20 70 73  6d 5f 6e 6f 5f 66 69 6c  |E     psm_no_fil|
000177b0  6c 31 36 31 36 0d ad d4  19 20 42 20 20 20 20 20  |l1616.... B     |
000177c0  20 20 70 73 6d 5f 66 69  6c 6c 31 36 31 36 0d ad  |  psm_fill1616..|
000177d0  de 15 20 2e 70 73 6d 5f  6e 6f 5f 66 69 6c 6c 31  |.. .psm_no_fill1|
000177e0  36 31 36 0d ad e8 1d 20  4c 44 4d 46 44 20 20 20  |616.... LDMFD   |
000177f0  52 31 33 21 2c 7b 52 30  2d 52 31 32 2c 50 43 7d  |R13!,{R0-R12,PC}|
00017800  0d ad f2 12 20 2e 70 73  6d 5f 66 69 6c 6c 31 36  |.... .psm_fill16|
00017810  31 36 0d ad fc 06 20 3a  0d ae 06 35 20 4d 4f 56  |16.... :...5 MOV|
00017820  20 20 20 20 20 52 37 2c  20 23 78 5f 73 68 69 66  |     R7, #x_shif|
00017830  74 20 20 20 20 20 20 20  20 20 3b 20 67 65 74 20  |t         ; get |
00017840  73 63 72 65 65 6e 20 73  68 69 66 74 73 0d ae 10  |screen shifts...|
00017850  19 20 4d 4f 56 20 20 20  20 20 52 38 2c 20 23 79  |. MOV     R8, #y|
00017860  5f 73 68 69 66 74 0d ae  1a 06 20 3a 0d ae 24 3e  |_shift.... :..$>|
00017870  20 4c 44 52 20 20 20 20  20 52 39 2c 20 66 69 6c  | LDR     R9, fil|
00017880  6c 5f 61 64 72 5f 73 63  72 65 65 6e 73 74 6f 72  |l_adr_screenstor|
00017890  65 3b 20 67 65 74 20 73  63 72 65 65 6e 73 74 6f  |e; get screensto|
000178a0  72 65 20 61 64 64 72 65  73 73 0d ae 2e 14 20 4c  |re address.... L|
000178b0  44 52 20 20 20 20 20 52  39 2c 5b 52 39 5d 0d ae  |DR     R9,[R9]..|
000178c0  38 18 20 4d 4c 41 20 20  20 20 20 52 33 2c 52 37  |8. MLA     R3,R7|
000178d0  2c 52 31 2c 52 39 0d ae  42 18 20 4d 4c 41 20 20  |,R1,R9..B. MLA  |
000178e0  20 20 20 52 30 2c 52 38  2c 52 32 2c 52 33 0d ae  |   R0,R8,R2,R3..|
000178f0  4c 06 20 3a 0d ae 56 36  20 4c 44 52 20 20 20 20  |L. :..V6 LDR    |
00017900  20 52 39 2c 20 66 69 6c  6c 5f 73 63 72 65 65 6e  | R9, fill_screen|
00017910  64 61 74 61 20 20 3b 20  67 65 74 20 73 63 72 65  |data  ; get scre|
00017920  65 6e 20 61 64 64 72 65  73 73 0d ae 60 18 20 4d  |en address..`. M|
00017930  4c 41 20 20 20 20 20 52  33 2c 52 37 2c 52 31 2c  |LA     R3,R7,R1,|
00017940  52 39 0d ae 6a 18 20 4d  4c 41 20 20 20 20 20 52  |R9..j. MLA     R|
00017950  31 2c 52 38 2c 52 32 2c  52 33 0d ae 74 06 20 3a  |1,R8,R2,R3..t. :|
00017960  0d ae 7e 13 20 4d 4f 56  20 20 20 20 20 52 33 2c  |..~. MOV     R3,|
00017970  20 23 31 0d ae 88 1e 20  53 54 52 20 20 20 20 20  | #1.... STR     |
00017980  52 33 2c 20 66 31 36 31  36 5f 63 6f 75 6e 74 65  |R3, f1616_counte|
00017990  72 0d ae 92 06 20 3a 0d  ae 9c 15 20 2e 66 31 36  |r.... :.... .f16|
000179a0  31 36 5f 66 69 6c 6c 5f  6c 6f 6f 70 0d ae a6 06  |16_fill_loop....|
000179b0  20 3a 0d ae b0 06 20 5d  0d ae ba 0f 20 e3 20 61  | :.... ].... . a|
000179c0  25 3d 31 20 b8 20 34 0d  ae c4 0f 20 5b 4f 50 54  |%=1 . 4.... [OPT|
000179d0  20 70 61 73 73 25 0d ae  ce 06 20 3a 0d ae d8 17  | pass%.... :....|
000179e0  20 4c 44 4d 49 41 20 20  20 52 31 2c 7b 52 32 2d  | LDMIA   R1,{R2-|
000179f0  52 35 7d 0d ae e2 17 20  53 54 4d 49 41 20 20 20  |R5}.... STMIA   |
00017a00  52 30 2c 7b 52 32 2d 52  35 7d 0d ae ec 06 20 3a  |R0,{R2-R5}.... :|
00017a10  0d ae f6 1c 20 53 55 42  20 20 20 20 20 52 30 2c  |.... SUB     R0,|
00017a20  52 30 2c 20 23 79 5f 73  68 69 66 74 0d af 00 1c  |R0, #y_shift....|
00017a30  20 53 55 42 20 20 20 20  20 52 31 2c 52 31 2c 20  | SUB     R1,R1, |
00017a40  23 79 5f 73 68 69 66 74  0d af 0a 06 20 3a 0d af  |#y_shift.... :..|
00017a50  14 06 20 5d 0d af 1e 06  20 ed 0d af 28 0f 20 5b  |.. ].... ...(. [|
00017a60  4f 50 54 20 70 61 73 73  25 0d af 32 06 20 3a 0d  |OPT pass%..2. :.|
00017a70  af 3c 1e 20 4c 44 52 20  20 20 20 20 52 33 2c 20  |.<. LDR     R3, |
00017a80  66 31 36 31 36 5f 63 6f  75 6e 74 65 72 0d af 46  |f1616_counter..F|
00017a90  16 20 41 44 44 20 20 20  20 20 52 33 2c 52 33 2c  |. ADD     R3,R3,|
00017aa0  20 23 31 0d af 50 1e 20  53 54 52 20 20 20 20 20  | #1..P. STR     |
00017ab0  52 33 2c 20 66 31 36 31  36 5f 63 6f 75 6e 74 65  |R3, f1616_counte|
00017ac0  72 0d af 5a 13 20 43 4d  50 20 20 20 20 20 52 33  |r..Z. CMP     R3|
00017ad0  2c 20 23 34 0d af 64 1c  20 42 4c 45 20 20 20 20  |, #4..d. BLE    |
00017ae0  20 66 31 36 31 36 5f 66  69 6c 6c 5f 6c 6f 6f 70  | f1616_fill_loop|
00017af0  0d af 6e 06 20 3a 0d af  78 1d 20 4c 44 4d 46 44  |..n. :..x. LDMFD|
00017b00  20 20 20 52 31 33 21 2c  7b 52 30 2d 52 31 32 2c  |   R13!,{R0-R12,|
00017b10  50 43 7d 0d af 82 06 20  3a 0d af 8c 13 20 2e 66  |PC}.... :.... .f|
00017b20  31 36 31 36 5f 63 6f 75  6e 74 65 72 0d af 96 0e  |1616_counter....|
00017b30  20 45 51 55 44 20 20 20  20 30 0d af a0 06 20 3a  | EQUD    0.... :|
00017b40  0d af aa 06 20 3a 0d af  b4 06 20 3a 0d af be 14  |.... :.... :....|
00017b50  20 2e 66 69 6c 6c 5f 66  69 6c 6c 5f 30 31 30 31  | .fill_fill_0101|
00017b60  0d af c8 06 20 3a 0d af  d2 1e 20 53 54 4d 46 44  |.... :.... STMFD|
00017b70  20 20 20 52 31 33 21 2c  7b 52 30 2d 52 31 32 2c  |   R13!,{R0-R12,|
00017b80  52 31 34 7d 0d af dc 06  20 3a 0d af e6 18 20 52  |R14}.... :.... R|
00017b90  53 42 20 20 20 20 20 52  32 2c 52 32 2c 20 23 32  |SB     R2,R2, #2|
00017ba0  35 36 0d af f0 06 20 3a  0d af fa 13 20 43 4d 50  |56.... :.... CMP|
00017bb0  20 20 20 20 20 52 31 2c  20 23 30 0d b0 04 1c 20  |     R1, #0.... |
00017bc0  42 4c 45 20 20 20 20 20  70 73 6d 5f 6e 6f 5f 66  |BLE     psm_no_f|
00017bd0  69 6c 6c 30 31 30 31 0d  b0 0e 13 20 43 4d 50 20  |ill0101.... CMP |
00017be0  20 20 20 20 52 32 2c 20  23 30 0d b0 18 1c 20 42  |    R2, #0.... B|
00017bf0  4c 45 20 20 20 20 20 70  73 6d 5f 6e 6f 5f 66 69  |LE     psm_no_fi|
00017c00  6c 6c 30 31 30 31 0d b0  22 15 20 43 4d 50 20 20  |ll0101..". CMP  |
00017c10  20 20 20 52 31 2c 20 23  33 32 30 0d b0 2c 1c 20  |   R1, #320..,. |
00017c20  42 47 45 20 20 20 20 20  70 73 6d 5f 6e 6f 5f 66  |BGE     psm_no_f|
00017c30  69 6c 6c 30 31 30 31 0d  b0 36 15 20 43 4d 50 20  |ill0101..6. CMP |
00017c40  20 20 20 20 52 32 2c 20  23 32 35 36 0d b0 40 1c  |    R2, #256..@.|
00017c50  20 42 47 45 20 20 20 20  20 70 73 6d 5f 6e 6f 5f  | BGE     psm_no_|
00017c60  66 69 6c 6c 30 31 30 31  0d b0 4a 19 20 42 20 20  |fill0101..J. B  |
00017c70  20 20 20 20 20 70 73 6d  5f 66 69 6c 6c 30 31 30  |     psm_fill010|
00017c80  31 0d b0 54 15 20 2e 70  73 6d 5f 6e 6f 5f 66 69  |1..T. .psm_no_fi|
00017c90  6c 6c 30 31 30 31 0d b0  5e 1d 20 4c 44 4d 46 44  |ll0101..^. LDMFD|
00017ca0  20 20 20 52 31 33 21 2c  7b 52 30 2d 52 31 32 2c  |   R13!,{R0-R12,|
00017cb0  50 43 7d 0d b0 68 12 20  2e 70 73 6d 5f 66 69 6c  |PC}..h. .psm_fil|
00017cc0  6c 30 31 30 31 0d b0 72  06 20 3a 0d b0 7c 35 20  |l0101..r. :..|5 |
00017cd0  4d 4f 56 20 20 20 20 20  52 37 2c 20 23 78 5f 73  |MOV     R7, #x_s|
00017ce0  68 69 66 74 20 20 20 20  20 20 20 20 20 3b 20 67  |hift         ; g|
00017cf0  65 74 20 73 63 72 65 65  6e 20 73 68 69 66 74 73  |et screen shifts|
00017d00  0d b0 86 19 20 4d 4f 56  20 20 20 20 20 52 38 2c  |.... MOV     R8,|
00017d10  20 23 79 5f 73 68 69 66  74 0d b0 90 06 20 3a 0d  | #y_shift.... :.|
00017d20  b0 9a 3e 20 4c 44 52 20  20 20 20 20 52 39 2c 20  |..> LDR     R9, |
00017d30  66 69 6c 6c 5f 61 64 72  5f 73 63 72 65 65 6e 73  |fill_adr_screens|
00017d40  74 6f 72 65 3b 20 67 65  74 20 73 63 72 65 65 6e  |tore; get screen|
00017d50  73 74 6f 72 65 20 61 64  64 72 65 73 73 0d b0 a4  |store address...|
00017d60  14 20 4c 44 52 20 20 20  20 20 52 39 2c 5b 52 39  |. LDR     R9,[R9|
00017d70  5d 0d b0 ae 18 20 4d 4c  41 20 20 20 20 20 52 33  |].... MLA     R3|
00017d80  2c 52 37 2c 52 31 2c 52  39 0d b0 b8 18 20 4d 4c  |,R7,R1,R9.... ML|
00017d90  41 20 20 20 20 20 52 30  2c 52 38 2c 52 32 2c 52  |A     R0,R8,R2,R|
00017da0  33 0d b0 c2 06 20 3a 0d  b0 cc 36 20 4c 44 52 20  |3.... :...6 LDR |
00017db0  20 20 20 20 52 39 2c 20  66 69 6c 6c 5f 73 63 72  |    R9, fill_scr|
00017dc0  65 65 6e 64 61 74 61 20  20 3b 20 67 65 74 20 73  |eendata  ; get s|
00017dd0  63 72 65 65 6e 20 61 64  64 72 65 73 73 0d b0 d6  |creen address...|
00017de0  18 20 4d 4c 41 20 20 20  20 20 52 33 2c 52 37 2c  |. MLA     R3,R7,|
00017df0  52 31 2c 52 39 0d b0 e0  18 20 4d 4c 41 20 20 20  |R1,R9.... MLA   |
00017e00  20 20 52 31 2c 52 38 2c  52 32 2c 52 33 0d b0 ea  |  R1,R8,R2,R3...|
00017e10  06 20 3a 0d b0 f4 14 20  4c 44 52 42 20 20 20 20  |. :.... LDRB    |
00017e20  52 32 2c 5b 52 31 5d 0d  b0 fe 14 20 53 54 52 42  |R2,[R1].... STRB|
00017e30  20 20 20 20 52 32 2c 5b  52 30 5d 0d b1 08 06 20  |    R2,[R0].... |
00017e40  3a 0d b1 12 1d 20 4c 44  4d 46 44 20 20 20 52 31  |:.... LDMFD   R1|
00017e50  33 21 2c 7b 52 30 2d 52  31 32 2c 50 43 7d 0d b1  |3!,{R0-R12,PC}..|
00017e60  1c 06 20 3a 0d b1 26 06  20 5d 0d b1 30 05 ed 0d  |.. :..&. ]..0...|
00017e70  b1 3a 05 3a 0d b1 44 19  21 63 6c 5f 61 64 72 5f  |.:.:..D.!cl_adr_|
00017e80  73 63 72 65 65 6e 3d 73  63 72 65 65 6e 0d b1 4e  |screen=screen..N|
00017e90  10 e3 20 61 25 3d 30 20  b8 20 32 35 35 0d b1 58  |.. a%=0 . 255..X|
00017ea0  14 20 72 25 3d b6 b6 28  61 25 2a 32 35 36 5e 33  |. r%=..(a%*256^3|
00017eb0  29 0d b1 62 11 20 67 25  3d b6 28 61 25 2a 32 35  |)..b. g%=.(a%*25|
00017ec0  36 29 0d b1 6c 0a 20 62  25 3d 61 25 0d b1 76 4c  |6)..l. b%=a%..vL|
00017ed0  20 c8 99 20 22 43 6f 6c  6f 75 72 54 72 61 6e 73  | .. "ColourTrans|
00017ee0  5f 52 65 74 75 72 6e 43  6f 6c 6f 75 72 4e 75 6d  |_ReturnColourNum|
00017ef0  62 65 72 22 2c 28 72 25  3c 3c 38 29 2b 28 67 25  |ber",(r%<<8)+(g%|
00017f00  3c 3c 31 36 29 2b 28 62  25 3c 3c 32 34 29 20 b8  |<<16)+(b%<<24) .|
00017f10  20 63 6f 6c 6f 75 72 25  0d b1 80 1e 20 21 28 66  | colour%.... !(f|
00017f20  6c 61 6d 65 5f 66 61 64  65 25 2b 61 25 29 3d 63  |lame_fade%+a%)=c|
00017f30  6f 6c 6f 75 72 25 0d b1  8a 05 ed 0d b1 94 05 3a  |olour%.........:|
00017f40  0d b1 9e 10 e3 20 61 25  3d 30 20 b8 20 32 35 35  |..... a%=0 . 255|
00017f50  0d b1 a8 0f 20 72 25 3d  36 34 2b 61 25 2f 32 0d  |.... r%=64+a%/2.|
00017f60  b1 b2 10 20 67 25 3d 31  32 38 2b 61 25 2f 32 0d  |... g%=128+a%/2.|
00017f70  b1 bc 10 20 62 25 3d 31  32 38 2b 61 25 2f 32 0d  |... b%=128+a%/2.|
00017f80  b1 c6 4c 20 c8 99 20 22  43 6f 6c 6f 75 72 54 72  |..L .. "ColourTr|
00017f90  61 6e 73 5f 52 65 74 75  72 6e 43 6f 6c 6f 75 72  |ans_ReturnColour|
00017fa0  4e 75 6d 62 65 72 22 2c  28 72 25 3c 3c 38 29 2b  |Number",(r%<<8)+|
00017fb0  28 67 25 3c 3c 31 36 29  2b 28 62 25 3c 3c 32 34  |(g%<<16)+(b%<<24|
00017fc0  29 20 b8 20 63 6f 6c 6f  75 72 25 0d b1 d0 1c 20  |) . colour%.... |
00017fd0  21 28 67 75 6e 5f 66 61  64 65 25 2b 61 25 29 3d  |!(gun_fade%+a%)=|
00017fe0  63 6f 6c 6f 75 72 25 0d  b1 da 05 ed 0d b1 e4 05  |colour%.........|
00017ff0  3a 0d b1 ee 3d 63 25 3d  8e 28 22 3c 54 68 69 73  |:...=c%=.("<This|
00018000  24 44 69 72 3e 2e 4c 65  76 65 6c 73 2e 4c 65 76  |$Dir>.Levels.Lev|
00018010  65 6c 22 2b c3 28 73 63  72 6e 25 29 2b 22 2e 50  |el"+.(scrn%)+".P|
00018020  6f 73 6e 22 2b c3 28 73  63 72 6e 25 29 29 0d b1  |osn"+.(scrn%))..|
00018030  f8 0e e3 20 61 25 3d 30  20 b8 20 37 0d b2 02 0c  |... a%=0 . 7....|
00018040  20 e8 23 63 25 2c 78 25  0d b2 0c 0c 20 e8 23 63  | .#c%,x%.... .#c|
00018050  25 2c 79 25 0d b2 16 19  20 21 28 61 25 2a 38 2b  |%,y%.... !(a%*8+|
00018060  70 6f 73 69 74 69 6f 6e  73 29 3d 78 25 0d b2 20  |positions)=x%.. |
00018070  1b 20 21 28 61 25 2a 38  2b 34 2b 70 6f 73 69 74  |. !(a%*8+4+posit|
00018080  69 6f 6e 73 29 3d 79 25  0d b2 2a 05 ed 0d b2 34  |ions)=y%..*....4|
00018090  08 d9 23 63 25 0d b2 3e  05 3a 0d b2 48 0d 70 25  |..#c%..>.:..H.p%|
000180a0  3d 63 6c 69 73 74 25 0d  b2 52 1d e3 20 61 25 3d  |=clist%..R.. a%=|
000180b0  31 20 b8 20 63 6c 69 73  74 5f 73 69 7a 65 25 2f  |1 . clist_size%/|
000180c0  33 32 2d 31 0d b2 5c 11  20 f2 61 64 64 5f 63 65  |32-1..\. .add_ce|
000180d0  6c 6c 28 30 29 0d b2 66  05 ed 0d b2 70 11 f2 61  |ll(0)..f....p..a|
000180e0  64 64 5f 63 65 6c 6c 28  2d 31 29 0d b2 7a 05 3a  |dd_cell(-1)..z.:|
000180f0  0d b2 84 0d 70 25 3d 73  6c 69 73 74 25 0d b2 8e  |....p%=slist%...|
00018100  1d e3 20 61 25 3d 31 20  b8 20 73 6c 69 73 74 5f  |.. a%=1 . slist_|
00018110  73 69 7a 65 25 2f 31 36  2d 31 0d b2 98 19 20 f2  |size%/16-1.... .|
00018120  61 64 64 5f 73 70 72 69  74 65 28 30 2c 30 2c 30  |add_sprite(0,0,0|
00018130  2c 30 29 0d b2 a2 05 ed  0d b2 ac 19 f2 61 64 64  |,0)..........add|
00018140  5f 73 70 72 69 74 65 28  30 2c 30 2c 2d 31 2c 30  |_sprite(0,0,-1,0|
00018150  29 0d b2 b6 0d 70 25 3d  73 6c 69 73 74 25 0d b2  |)....p%=slist%..|
00018160  c0 0f e3 20 61 25 3d 31  20 b8 20 31 36 0d b2 ca  |... a%=1 . 16...|
00018170  19 20 f2 61 64 64 5f 73  70 72 69 74 65 28 30 2c  |. .add_sprite(0,|
00018180  30 2c 30 2c 30 29 0d b2  d4 05 ed 0d b2 de 3e 63  |0,0,0)........>c|
00018190  25 3d 8e 28 22 3c 54 68  69 73 24 44 69 72 3e 2e  |%=.("<This$Dir>.|
000181a0  4c 65 76 65 6c 73 2e 4c  65 76 65 6c 22 2b c3 28  |Levels.Level"+.(|
000181b0  73 63 72 6e 25 29 2b 22  2e 44 6f 6f 72 73 22 2b  |scrn%)+".Doors"+|
000181c0  c3 28 73 63 72 6e 25 29  29 0d b2 e8 0e e3 20 61  |.(scrn%))..... a|
000181d0  25 3d 31 20 b8 20 34 0d  b2 f2 0c 20 e8 23 63 25  |%=1 . 4.... .#c%|
000181e0  2c 78 25 0d b2 fc 0c 20  e8 23 63 25 2c 79 25 0d  |,x%.... .#c%,y%.|
000181f0  b3 06 0c 20 e8 23 63 25  2c 74 25 0d b3 10 0c 20  |... .#c%,t%.... |
00018200  e8 23 63 25 2c 69 25 0d  b3 1a 1d 20 f2 61 64 64  |.#c%,i%.... .add|
00018210  5f 73 70 72 69 74 65 28  78 25 2c 79 25 2c 31 33  |_sprite(x%,y%,13|
00018220  2c 69 25 29 0d b3 24 05  ed 0d b3 2e 08 d9 23 63  |,i%)..$.......#c|
00018230  25 0d b3 38 39 63 25 3d  8e 28 22 3c 54 68 69 73  |%..89c%=.("<This|
00018240  24 44 69 72 3e 2e 4c 65  76 65 6c 73 2e 4c 65 76  |$Dir>.Levels.Lev|
00018250  65 6c 22 2b c3 28 73 63  72 6e 25 29 2b 22 2e 47  |el"+.(scrn%)+".G|
00018260  53 77 69 74 63 68 65 73  22 29 0d b3 42 0e e3 20  |Switches")..B.. |
00018270  61 25 3d 31 20 b8 20 34  0d b3 4c 0c 20 e8 23 63  |a%=1 . 4..L. .#c|
00018280  25 2c 78 25 0d b3 56 0c  20 e8 23 63 25 2c 79 25  |%,x%..V. .#c%,y%|
00018290  0d b3 60 0c 20 e8 23 63  25 2c 74 25 0d b3 6a 0c  |..`. .#c%,t%..j.|
000182a0  20 e8 23 63 25 2c 69 25  0d b3 74 1d 20 f2 61 64  | .#c%,i%..t. .ad|
000182b0  64 5f 73 70 72 69 74 65  28 78 25 2c 79 25 2c 31  |d_sprite(x%,y%,1|
000182c0  34 2c 61 25 29 0d b3 7e  05 ed 0d b3 88 08 d9 23  |4,a%)..~.......#|
000182d0  63 25 0d b3 92 3d 63 25  3d 8e 28 22 3c 54 68 69  |c%...=c%=.("<Thi|
000182e0  73 24 44 69 72 3e 2e 4c  65 76 65 6c 73 2e 4c 65  |s$Dir>.Levels.Le|
000182f0  76 65 6c 22 2b c3 28 73  63 72 6e 25 29 2b 22 2e  |vel"+.(scrn%)+".|
00018300  47 75 6e 73 22 2b c3 28  73 63 72 6e 25 29 29 0d  |Guns"+.(scrn%)).|
00018310  b3 9c 0e e3 20 61 25 3d  31 20 b8 20 34 0d b3 a6  |.... a%=1 . 4...|
00018320  0c 20 e8 23 63 25 2c 78  25 0d b3 b0 0c 20 e8 23  |. .#c%,x%.... .#|
00018330  63 25 2c 79 25 0d b3 ba  0c 20 e8 23 63 25 2c 74  |c%,y%.... .#c%,t|
00018340  25 0d b3 c4 0c 20 e8 23  63 25 2c 69 25 0d b3 ce  |%.... .#c%,i%...|
00018350  1d 20 f2 61 64 64 5f 73  70 72 69 74 65 28 78 25  |. .add_sprite(x%|
00018360  2c 79 25 2c 31 35 2c 61  25 29 0d b3 d8 05 ed 0d  |,y%,15,a%)......|
00018370  b3 e2 08 d9 23 63 25 0d  b3 ec 2d f2 61 64 64 5f  |....#c%...-.add_|
00018380  73 70 72 69 74 65 28 31  31 31 36 2c 33 32 2c 32  |sprite(1116,32,2|
00018390  2c 28 31 32 38 3c 3c 38  29 2b 28 31 32 38 3c 3c  |,(128<<8)+(128<<|
000183a0  31 36 29 29 0d b4 3c 2c  f2 61 64 64 5f 73 70 72  |16))..<,.add_spr|
000183b0  69 74 65 28 38 34 2c 38  39 36 2c 31 2c 28 31 32  |ite(84,896,1,(12|
000183c0  38 3c 3c 38 29 2b 28 31  32 38 3c 3c 31 36 29 29  |8<<8)+(128<<16))|
000183d0  0d b4 dc 3f 63 25 3d 8e  28 22 3c 54 68 69 73 24  |...?c%=.("<This$|
000183e0  44 69 72 3e 2e 4c 65 76  65 6c 73 2e 4c 65 76 65  |Dir>.Levels.Leve|
000183f0  6c 22 2b c3 28 73 63 72  6e 25 29 2b 22 2e 46 6c  |l"+.(scrn%)+".Fl|
00018400  61 6d 65 73 22 2b c3 28  73 63 72 6e 25 29 29 0d  |ames"+.(scrn%)).|
00018410  b4 e6 0f e3 20 61 25 3d  31 20 b8 20 31 36 0d b4  |.... a%=1 . 16..|
00018420  f0 0c 20 e8 23 63 25 2c  78 25 0d b4 fa 0c 20 e8  |.. .#c%,x%.... .|
00018430  23 63 25 2c 79 25 0d b5  04 0c 20 e8 23 63 25 2c  |#c%,y%.... .#c%,|
00018440  74 25 0d b5 0e 0c 20 e8  23 63 25 2c 69 25 0d b5  |t%.... .#c%,i%..|
00018450  18 1c 20 f2 61 64 64 5f  73 70 72 69 74 65 28 78  |.. .add_sprite(x|
00018460  25 2c 79 25 2c 33 2c 69  25 29 0d b5 22 05 ed 0d  |%,y%,3,i%).."...|
00018470  b5 2c 08 d9 23 63 25 0d  b5 36 0b d6 20 73 74 61  |.,..#c%..6.. sta|
00018480  72 74 0d b5 40 12 d6 20  63 6c 65 61 72 5f 73 63  |rt..@.. clear_sc|
00018490  72 65 65 6e 0d b5 4a 05  e1 0d b5 54 05 3a 0d b5  |reen..J....T.:..|
000184a0  5e 05 3a 0d b5 68 05 3a  0d b5 72 0c dd 20 f2 65  |^.:..h.:..r.. .e|
000184b0  72 72 6f 72 0d b5 7c 09  ee 20 85 20 87 0d b5 86  |rror..|.. . ....|
000184c0  0d 2a 46 58 20 32 30 30  2c 31 0d b5 90 18 c8 99  |.*FX 200,1......|
000184d0  20 22 48 6f 75 72 67 6c  61 73 73 5f 53 6d 61 73  | "Hourglass_Smas|
000184e0  68 22 0d b5 9a 08 c8 97  20 87 0d b5 a4 0c e7 20  |h"...... ...... |
000184f0  9f 3d 31 37 20 8c 0d b5  ae 17 20 c8 99 20 22 4f  |.=17 ..... .. "O|
00018500  53 5f 42 79 74 65 22 2c  31 31 32 2c 31 0d b5 b8  |S_Byte",112,1...|
00018510  06 20 db 0d b5 c2 17 20  c8 99 20 22 4f 53 5f 42  |. ..... .. "OS_B|
00018520  79 74 65 22 2c 31 31 33  2c 31 0d b5 cc 05 cc 0d  |yte",113,1......|
00018530  b5 d6 17 20 c8 99 20 22  4f 53 5f 42 79 74 65 22  |... .. "OS_Byte"|
00018540  2c 31 31 32 2c 31 0d b5  e0 06 20 db 0d b5 ea 17  |,112,1.... .....|
00018550  20 c8 99 20 22 4f 53 5f  42 79 74 65 22 2c 31 31  | .. "OS_Byte",11|
00018560  33 2c 31 0d b5 f4 17 20  f1 20 f6 24 3b 22 20 61  |3,1.... . .$;" a|
00018570  74 20 6c 69 6e 65 20 22  3b 9e 0d b5 fe 05 cd 0d  |t line ";.......|
00018580  b6 08 11 2a 52 6d 4b 69  6c 6c 20 45 58 50 4c 4f  |...*RmKill EXPLO|
00018590  0d b6 12 13 2a 52 6d 4b  69 6c 6c 20 54 4f 4b 45  |....*RmKill TOKE|
000185a0  4e 52 4d 0d b6 1c 0f 2a  52 6d 4b 69 6c 6c 20 41  |NRM....*RmKill A|
000185b0  52 47 0d b6 26 10 2a 52  6d 4b 69 6c 6c 20 52 41  |RG..&.*RmKill RA|
000185c0  52 47 0d b6 30 13 2a 52  6d 4b 69 6c 6c 20 4c 61  |RG..0.*RmKill La|
000185d0  75 67 68 52 4d 0d b6 3a  14 2a 52 6d 4b 69 6c 6c  |ughRM..:.*RmKill|
000185e0  20 52 65 76 6f 6c 76 65  72 0d b6 44 11 2a 52 6d  | Revolver..D.*Rm|
000185f0  4b 69 6c 6c 20 47 65 6e  65 72 0d b6 4e 0d 2a 46  |Kill Gener..N.*F|
00018600  58 20 32 30 30 2c 30 0d  b6 58 05 e1 0d b6 62 05  |X 200,0..X....b.|
00018610  3a 0d b6 6c 05 3a 0d b6  76 05 3a 0d b6 80 1a dd  |:..l.:..v.:.....|
00018620  20 a4 62 6f 72 64 65 72  63 6f 6c 28 72 25 2c 67  | .bordercol(r%,g|
00018630  25 2c 62 25 29 0d b6 8a  0f 20 5b 4f 50 54 20 70  |%,b%).... [OPT p|
00018640  61 73 73 25 0d b6 94 13  3b 53 57 49 20 20 20 20  |ass%....;SWI    |
00018650  20 32 35 36 2b 31 39 0d  b6 9e 12 3b 53 57 49 20  | 256+19....;SWI |
00018660  20 20 20 20 32 35 36 2b  30 0d b6 a8 13 3b 53 57  |    256+0....;SW|
00018670  49 20 20 20 20 20 32 35  36 2b 32 34 0d b6 b2 13  |I     256+24....|
00018680  3b 53 57 49 20 20 20 20  20 32 35 36 2b 72 25 0d  |;SWI     256+r%.|
00018690  b6 bc 13 3b 53 57 49 20  20 20 20 20 32 35 36 2b  |...;SWI     256+|
000186a0  67 25 0d b6 c6 13 3b 53  57 49 20 20 20 20 20 32  |g%....;SWI     2|
000186b0  35 36 2b 62 25 0d b6 d0  06 20 5d 0d b6 da 06 3d  |56+b%.... ]....=|
000186c0  30 0d b6 e4 05 3a 0d b6  ee 05 3a 0d b6 f8 05 3a  |0....:....:....:|
000186d0  0d b7 02 1e dd 20 f2 61  64 64 5f 73 70 72 69 74  |..... .add_sprit|
000186e0  65 28 78 25 2c 79 25 2c  74 25 2c 69 25 29 0d b7  |e(x%,y%,t%,i%)..|
000186f0  0c 0f 21 28 70 25 2b 30  30 29 3d 74 25 0d b7 16  |..!(p%+00)=t%...|
00018700  0f 21 28 70 25 2b 30 34  29 3d 78 25 0d b7 20 0f  |.!(p%+04)=x%.. .|
00018710  21 28 70 25 2b 30 38 29  3d 79 25 0d b7 2a 0f 21  |!(p%+08)=y%..*.!|
00018720  28 70 25 2b 31 32 29 3d  69 25 0d b7 34 0a 70 25  |(p%+12)=i%..4.p%|
00018730  2b 3d 31 36 0d b7 3e 05  e1 0d b7 48 05 3a 0d b7  |+=16..>....H.:..|
00018740  52 05 3a 0d b7 5c 05 3a  0d b7 66 13 dd 20 f2 61  |R.:..\.:..f.. .a|
00018750  64 64 5f 63 65 6c 6c 28  74 25 29 0d b7 70 0c 70  |dd_cell(t%)..p.p|
00018760  25 21 30 30 3d 74 25 0d  b7 7a 0a 70 25 2b 3d 33  |%!00=t%..z.p%+=3|
00018770  32 0d b7 84 05 e1 0d b7  8e 05 3a 0d b7 98 05 3a  |2.........:....:|
00018780  0d b7 a2 05 3a 0d b7 ac  12 dd 20 f2 61 73 73 6d  |....:..... .assm|
00018790  5f 64 65 63 6f 6d 70 0d  b7 b6 21 e3 20 70 61 73  |_decomp...!. pas|
000187a0  73 25 3d 25 30 30 30 30  20 b8 20 25 31 30 31 30  |s%=%0000 . %1010|
000187b0  20 88 20 25 31 30 31 30  0d b7 c0 14 20 50 25 3d  | . %1010.... P%=|
000187c0  64 65 63 6f 6d 70 5f 63  6f 64 65 25 0d b7 ca 19  |decomp_code%....|
000187d0  20 4c 25 3d 64 65 63 6f  6d 70 5f 63 6f 64 65 25  | L%=decomp_code%|
000187e0  2b 31 30 32 30 0d b7 d4  0f 20 5b 4f 50 54 20 70  |+1020.... [OPT p|
000187f0  61 73 73 25 0d b7 de 06  20 3a 0d b7 e8 0f 20 2e  |ass%.... :.... .|
00018800  64 63 5f 75 6e 75 73 65  64 0d b7 f2 0e 20 45 51  |dc_unused.... EQ|
00018810  55 44 20 20 20 20 30 0d  b7 fc 0d 20 2e 64 63 5f  |UD    0.... .dc_|
00018820  63 6d 70 70 0d b8 06 0e  20 45 51 55 44 20 20 20  |cmpp.... EQUD   |
00018830  20 30 0d b8 10 10 20 2e  64 63 5f 61 64 64 72 65  | 0.... .dc_addre|
00018840  73 73 0d b8 1a 0e 20 45  51 55 44 20 20 20 20 30  |ss.... EQUD    0|
00018850  0d b8 24 0e 20 2e 64 63  5f 76 61 6c 75 65 0d b8  |..$. .dc_value..|
00018860  2e 0e 20 45 51 55 44 20  20 20 20 30 0d b8 38 14  |.. EQUD    0..8.|
00018870  20 2e 64 63 5f 72 65 70  65 74 69 74 69 6f 6e 73  | .dc_repetitions|
00018880  0d b8 42 0e 20 45 51 55  44 20 20 20 20 30 0d b8  |..B. EQUD    0..|
00018890  4c 06 20 3a 0d b8 56 0e  20 2e 64 63 5f 73 74 61  |L. :..V. .dc_sta|
000188a0  72 74 0d b8 60 18 20 4c  44 52 20 20 20 20 20 52  |rt..`. LDR     R|
000188b0  30 2c 20 64 63 5f 63 6d  70 70 0d b8 6a 14 20 4c  |0, dc_cmpp..j. L|
000188c0  44 52 20 20 20 20 20 52  31 2c 5b 52 30 5d 0d b8  |DR     R1,[R0]..|
000188d0  74 1a 20 53 54 52 20 20  20 20 20 52 31 2c 20 64  |t. STR     R1, d|
000188e0  63 5f 75 6e 75 73 65 64  0d b8 7e 16 20 41 44 44  |c_unused..~. ADD|
000188f0  20 20 20 20 20 52 30 2c  52 30 2c 20 23 34 0d b8  |     R0,R0, #4..|
00018900  88 18 20 53 54 52 20 20  20 20 20 52 30 2c 20 64  |.. STR     R0, d|
00018910  63 5f 63 6d 70 70 0d b8  92 15 20 2e 64 63 5f 72  |c_cmpp.... .dc_r|
00018920  65 70 65 61 74 5f 6c 6f  6f 70 31 0d b8 9c 18 20  |epeat_loop1.... |
00018930  4c 44 52 20 20 20 20 20  52 30 2c 20 64 63 5f 63  |LDR     R0, dc_c|
00018940  6d 70 70 0d b8 a6 14 20  4c 44 52 20 20 20 20 20  |mpp.... LDR     |
00018950  52 30 2c 5b 52 30 5d 0d  b8 b0 1a 20 4c 44 52 20  |R0,[R0].... LDR |
00018960  20 20 20 20 52 31 2c 20  64 63 5f 75 6e 75 73 65  |    R1, dc_unuse|
00018970  64 0d b8 ba 12 20 43 4d  50 20 20 20 20 20 52 30  |d.... CMP     R0|
00018980  2c 52 31 0d b8 c4 1a 20  42 45 51 20 20 20 20 20  |,R1.... BEQ     |
00018990  64 63 5f 64 65 63 6f 6d  70 72 65 73 73 0d b8 ce  |dc_decompress...|
000189a0  0d 20 2e 64 63 5f 63 6f  70 79 0d b8 d8 18 20 4c  |. .dc_copy.... L|
000189b0  44 52 20 20 20 20 20 52  30 2c 20 64 63 5f 63 6d  |DR     R0, dc_cm|
000189c0  70 70 0d b8 e2 14 20 4c  44 52 20 20 20 20 20 52  |pp.... LDR     R|
000189d0  31 2c 5b 52 30 5d 0d b8  ec 1b 20 4c 44 52 20 20  |1,[R0].... LDR  |
000189e0  20 20 20 52 32 2c 20 64  63 5f 61 64 64 72 65 73  |   R2, dc_addres|
000189f0  73 0d b8 f6 14 20 53 54  52 20 20 20 20 20 52 31  |s.... STR     R1|
00018a00  2c 5b 52 32 5d 0d b9 00  18 20 4c 44 52 20 20 20  |,[R2].... LDR   |
00018a10  20 20 52 30 2c 20 64 63  5f 63 6d 70 70 0d b9 0a  |  R0, dc_cmpp...|
00018a20  16 20 41 44 44 20 20 20  20 20 52 30 2c 52 30 2c  |. ADD     R0,R0,|
00018a30  20 23 34 0d b9 14 1b 20  4c 44 52 20 20 20 20 20  | #4.... LDR     |
00018a40  52 32 2c 20 64 63 5f 61  64 64 72 65 73 73 0d b9  |R2, dc_address..|
00018a50  1e 16 20 41 44 44 20 20  20 20 20 52 32 2c 52 32  |.. ADD     R2,R2|
00018a60  2c 20 23 34 0d b9 28 18  20 53 54 52 20 20 20 20  |, #4..(. STR    |
00018a70  20 52 30 2c 20 64 63 5f  63 6d 70 70 0d b9 32 1b  | R0, dc_cmpp..2.|
00018a80  20 53 54 52 20 20 20 20  20 52 32 2c 20 64 63 5f  | STR     R2, dc_|
00018a90  61 64 64 72 65 73 73 0d  b9 3c 16 20 42 20 20 20  |address..<. B   |
00018aa0  20 20 20 20 64 63 5f 75  6e 74 69 6c 31 0d b9 46  |    dc_until1..F|
00018ab0  13 20 2e 64 63 5f 64 65  63 6f 6d 70 72 65 73 73  |. .dc_decompress|
00018ac0  0d b9 50 18 20 4c 44 52  20 20 20 20 20 52 30 2c  |..P. LDR     R0,|
00018ad0  20 64 63 5f 63 6d 70 70  0d b9 5a 18 20 4c 44 52  | dc_cmpp..Z. LDR|
00018ae0  20 20 20 20 20 52 37 2c  5b 52 30 2c 20 23 34 5d  |     R7,[R0, #4]|
00018af0  0d b9 64 19 20 53 54 52  20 20 20 20 20 52 37 2c  |..d. STR     R7,|
00018b00  20 64 63 5f 76 61 6c 75  65 0d b9 6e 18 20 4c 44  | dc_value..n. LD|
00018b10  52 20 20 20 20 20 52 30  2c 5b 52 30 2c 20 23 38  |R     R0,[R0, #8|
00018b20  5d 0d b9 78 1f 20 53 54  52 20 20 20 20 20 52 30  |]..x. STR     R0|
00018b30  2c 20 64 63 5f 72 65 70  65 74 69 74 69 6f 6e 73  |, dc_repetitions|
00018b40  0d b9 82 13 20 43 4d 50  20 20 20 20 20 52 30 2c  |.... CMP     R0,|
00018b50  20 23 30 0d b9 8c 16 20  42 45 51 20 20 20 20 20  | #0.... BEQ     |
00018b60  64 63 5f 75 6e 74 69 6c  31 0d b9 96 19 20 4c 44  |dc_until1.... LD|
00018b70  52 20 20 20 20 20 52 37  2c 20 64 63 5f 76 61 6c  |R     R7, dc_val|
00018b80  75 65 0d b9 a0 1b 20 4c  44 52 20 20 20 20 20 52  |ue.... LDR     R|
00018b90  38 2c 20 64 63 5f 61 64  64 72 65 73 73 0d b9 aa  |8, dc_address...|
00018ba0  13 20 4d 4f 56 20 20 20  20 20 52 39 2c 20 23 31  |. MOV     R9, #1|
00018bb0  0d b9 b4 15 20 2e 64 63  5f 72 65 70 65 61 74 5f  |.... .dc_repeat_|
00018bc0  6c 6f 6f 70 32 0d b9 be  15 20 53 54 4d 49 41 20  |loop2.... STMIA |
00018bd0  20 20 52 38 21 2c 7b 52  37 7d 0d b9 c8 16 20 41  |  R8!,{R7}.... A|
00018be0  44 44 20 20 20 20 20 52  39 2c 52 39 2c 20 23 31  |DD     R9,R9, #1|
00018bf0  0d b9 d2 1f 20 4c 44 52  20 20 20 20 20 52 30 2c  |.... LDR     R0,|
00018c00  20 64 63 5f 72 65 70 65  74 69 74 69 6f 6e 73 0d  | dc_repetitions.|
00018c10  b9 dc 12 20 43 4d 50 20  20 20 20 20 52 39 2c 52  |... CMP     R9,R|
00018c20  30 0d b9 e6 1c 20 42 4c  45 20 20 20 20 20 64 63  |0.... BLE     dc|
00018c30  5f 72 65 70 65 61 74 5f  6c 6f 6f 70 32 0d b9 f0  |_repeat_loop2...|
00018c40  1b 20 53 54 52 20 20 20  20 20 52 38 2c 20 64 63  |. STR     R8, dc|
00018c50  5f 61 64 64 72 65 73 73  0d b9 fa 18 20 4c 44 52  |_address.... LDR|
00018c60  20 20 20 20 20 52 30 2c  20 64 63 5f 63 6d 70 70  |     R0, dc_cmpp|
00018c70  0d ba 04 17 20 41 44 44  20 20 20 20 20 52 30 2c  |.... ADD     R0,|
00018c80  52 30 2c 20 23 31 32 0d  ba 0e 18 20 53 54 52 20  |R0, #12.... STR |
00018c90  20 20 20 20 52 30 2c 20  64 63 5f 63 6d 70 70 0d  |    R0, dc_cmpp.|
00018ca0  ba 18 0f 20 2e 64 63 5f  75 6e 74 69 6c 31 0d ba  |... .dc_until1..|
00018cb0  22 18 20 4c 44 52 20 20  20 20 20 52 30 2c 20 64  |". LDR     R0, d|
00018cc0  63 5f 63 6d 70 70 0d ba  2c 14 20 4c 44 52 20 20  |c_cmpp..,. LDR  |
00018cd0  20 20 20 52 31 2c 5b 52  30 5d 0d ba 36 1a 20 4c  |   R1,[R0]..6. L|
00018ce0  44 52 20 20 20 20 20 52  32 2c 20 64 63 5f 75 6e  |DR     R2, dc_un|
00018cf0  75 73 65 64 0d ba 40 12  20 43 4d 50 20 20 20 20  |used..@. CMP    |
00018d00  20 52 31 2c 52 32 0d ba  4a 1c 20 42 4e 45 20 20  | R1,R2..J. BNE  |
00018d10  20 20 20 64 63 5f 72 65  70 65 61 74 5f 6c 6f 6f  |   dc_repeat_loo|
00018d20  70 31 0d ba 54 18 20 4c  44 52 20 20 20 20 20 52  |p1..T. LDR     R|
00018d30  33 2c 5b 52 30 2c 20 23  38 5d 0d ba 5e 13 20 43  |3,[R0, #8]..^. C|
00018d40  4d 50 20 20 20 20 20 52  33 2c 20 23 30 0d ba 68  |MP     R3, #0..h|
00018d50  1c 20 42 4e 45 20 20 20  20 20 64 63 5f 72 65 70  |. BNE     dc_rep|
00018d60  65 61 74 5f 6c 6f 6f 70  31 0d ba 72 13 20 4d 4f  |eat_loop1..r. MO|
00018d70  56 20 20 20 20 20 50 43  2c 52 31 34 0d ba 7c 06  |V     PC,R14..|.|
00018d80  20 3a 0d ba 86 06 20 5d  0d ba 90 05 ed 0d ba 9a  | :.... ]........|
00018d90  05 e1 0d ba a4 05 3a 0d  ba ae 05 3a 0d ba b8 05  |......:....:....|
00018da0  3a 0d ba c2 1c dd 20 f2  64 65 63 6f 6d 70 72 65  |:..... .decompre|
00018db0  73 73 28 66 72 6f 6d 24  2c 74 6f 25 29 0d ba cc  |ss(from$,to%)...|
00018dc0  25 c8 99 20 22 4f 53 5f  46 69 6c 65 22 2c 32 35  |%.. "OS_File",25|
00018dd0  35 2c 66 72 6f 6d 24 2c  63 6d 70 64 61 74 61 25  |5,from$,cmpdata%|
00018de0  2c 30 0d ba d6 13 21 64  63 5f 61 64 64 72 65 73  |,0....!dc_addres|
00018df0  73 3d 74 6f 25 0d ba e0  15 21 64 63 5f 63 6d 70  |s=to%....!dc_cmp|
00018e00  70 3d 63 6d 70 64 61 74  61 25 0d ba ea 0e d6 20  |p=cmpdata%..... |
00018e10  64 63 5f 73 74 61 72 74  0d ba f4 05 e1 0d ba fe  |dc_start........|
00018e20  05 3a 0d bb 08 05 3a 0d  bb 12 05 3a 0d bb 1c 1c  |.:....:....:....|
00018e30  dd 20 f2 61 73 73 65 6d  62 6c 65 5f 63 6c 65 61  |. .assemble_clea|
00018e40  72 5f 73 63 72 65 65 6e  0d bb 26 21 e3 20 70 61  |r_screen..&!. pa|
00018e50  73 73 25 3d 25 30 30 30  30 20 b8 20 25 31 30 31  |ss%=%0000 . %101|
00018e60  30 20 88 20 25 31 30 31  30 0d bb 30 10 20 50 25  |0 . %1010..0. P%|
00018e70  3d 63 6c 5f 63 6f 64 65  25 0d bb 3a 15 20 4c 25  |=cl_code%..:. L%|
00018e80  3d 63 6c 5f 63 6f 64 65  25 2b 32 30 34 34 0d bb  |=cl_code%+2044..|
00018e90  44 0f 20 5b 4f 50 54 20  70 61 73 73 25 0d bb 4e  |D. [OPT pass%..N|
00018ea0  06 20 3a 0d bb 58 0e 20  2e 73 65 74 75 70 5f 63  |. :..X. .setup_c|
00018eb0  73 0d bb 62 1e 20 53 54  4d 46 44 20 20 20 52 31  |s..b. STMFD   R1|
00018ec0  33 21 2c 7b 52 30 2d 52  31 32 2c 52 31 34 7d 0d  |3!,{R0-R12,R14}.|
00018ed0  bb 6c 20 20 4c 44 52 20  20 20 20 20 52 30 2c 20  |.l  LDR     R0, |
00018ee0  63 6c 5f 61 64 72 5f 76  64 75 5f 76 61 72 73 0d  |cl_adr_vdu_vars.|
00018ef0  bb 76 1e 20 4c 44 52 20  20 20 20 20 52 31 2c 20  |.v. LDR     R1, |
00018f00  63 6c 5f 61 64 72 5f 73  63 72 65 65 6e 0d bb 80  |cl_adr_screen...|
00018f10  3b 20 53 57 49 20 20 20  20 20 22 4f 53 5f 52 65  |; SWI     "OS_Re|
00018f20  61 64 56 64 75 56 61 72  69 61 62 6c 65 73 22 20  |adVduVariables" |
00018f30  20 20 3b 20 73 65 74 20  75 70 20 76 64 75 20 76  |  ; set up vdu v|
00018f40  61 72 69 61 62 6c 65 73  0d bb 8a 1d 20 4c 44 4d  |ariables.... LDM|
00018f50  46 44 20 20 20 52 31 33  21 2c 7b 52 30 2d 52 31  |FD   R13!,{R0-R1|
00018f60  32 2c 50 43 7d 0d bb 94  06 20 3a 0d bb 9e 12 20  |2,PC}.... :.... |
00018f70  2e 63 6c 65 61 72 5f 73  63 72 65 65 6e 0d bb a8  |.clear_screen...|
00018f80  1e 20 53 54 4d 46 44 20  20 20 52 31 33 21 2c 7b  |. STMFD   R13!,{|
00018f90  52 30 2d 52 31 32 2c 52  31 34 7d 0d bb b2 06 20  |R0-R12,R14}.... |
00018fa0  3a 0d bb bc 45 20 4c 44  52 20 20 20 20 20 52 31  |:...E LDR     R1|
00018fb0  31 2c 20 61 64 72 5f 63  6c 73 63 6f 6c 6f 75 72  |1, adr_clscolour|
00018fc0  73 20 20 20 20 20 3b 20  67 65 74 20 74 68 65 20  |s     ; get the |
00018fd0  61 64 64 72 65 73 73 20  6f 66 20 63 6f 6c 6f 75  |address of colou|
00018fe0  72 20 64 61 74 61 0d bb  c6 2f 20 4d 4f 56 20 20  |r data.../ MOV  |
00018ff0  20 20 20 52 39 2c 20 23  30 20 20 20 20 20 20 20  |   R9, #0       |
00019000  20 20 20 20 20 20 20 20  20 20 20 3b 20 79 20 63  |           ; y c|
00019010  6f 2d 6f 72 64 0d bb d0  06 20 3a 0d bb da 0e 20  |o-ord.... :.... |
00019020  2e 63 6c 5f 6c 6f 6f 70  31 0d bb e4 06 20 3a 0d  |.cl_loop1.... :.|
00019030  bb ee 1f 20 4c 44 52 20  20 20 20 20 52 31 30 2c  |... LDR     R10,|
00019040  20 63 6c 5f 61 64 72 5f  73 63 72 65 65 6e 0d bb  | cl_adr_screen..|
00019050  f8 39 20 4c 44 52 20 20  20 20 20 52 31 30 2c 5b  |.9 LDR     R10,[|
00019060  52 31 30 5d 20 20 20 20  20 20 20 20 20 20 20 20  |R10]            |
00019070  20 20 20 3b 20 67 65 74  20 73 63 72 65 65 6e 20  |   ; get screen |
00019080  61 64 64 72 65 73 73 0d  bc 02 35 20 41 44 44 20  |address...5 ADD |
00019090  20 20 20 20 52 37 2c 52  31 30 2c 20 23 26 31 34  |    R7,R10, #&14|
000190a0  30 30 30 20 20 20 20 20  20 20 20 20 3b 20 67 65  |000         ; ge|
000190b0  74 20 73 63 72 65 65 6e  20 65 6e 64 0d bc 0c 06  |t screen end....|
000190c0  20 3a 0d bc 16 0e 20 2e  63 6c 5f 6c 6f 6f 70 33  | :.... .cl_loop3|
000190d0  0d bc 20 06 20 5d 0d bc  2a 10 20 e3 20 61 25 3d  |.. . ]..*. . a%=|
000190e0  30 20 b8 20 31 35 0d bc  34 18 20 e3 20 62 25 3d  |0 . 15..4. . b%=|
000190f0  30 20 b8 20 66 61 64 65  72 25 20 88 20 34 0d bc  |0 . fader% . 4..|
00019100  3e 0f 20 5b 4f 50 54 20  70 61 73 73 25 0d bc 48  |>. [OPT pass%..H|
00019110  06 20 3a 0d bc 52 19 20  41 44 44 20 20 20 20 20  |. :..R. ADD     |
00019120  52 31 30 2c 52 31 30 2c  20 23 62 25 0d bc 5c 31  |R10,R10, #b%..\1|
00019130  20 42 4c 20 20 20 20 20  20 63 6c 5f 63 6c 73 20  | BL      cl_cls |
00019140  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00019150  20 3b 20 64 69 6d 20 73  63 72 65 65 6e 0d bc 66  | ; dim screen..f|
00019160  19 20 53 55 42 20 20 20  20 20 52 31 30 2c 52 31  |. SUB     R10,R1|
00019170  30 2c 20 23 62 25 0d bc  70 06 20 3a 0d bc 7a 14  |0, #b%..p. :..z.|
00019180  20 4d 4f 56 20 20 20 20  20 52 30 2c 20 23 31 39  | MOV     R0, #19|
00019190  0d bc 84 16 20 53 57 49  20 20 20 20 20 22 4f 53  |.... SWI     "OS|
000191a0  5f 42 79 74 65 22 0d bc  8e 06 20 3a 0d bc 98 06  |_Byte".... :....|
000191b0  20 5d 0d bc a2 06 20 ed  0d bc ac 06 20 ed 0d bc  | ].... ..... ...|
000191c0  b6 0f 20 5b 4f 50 54 20  70 61 73 73 25 0d bc c0  |.. [OPT pass%...|
000191d0  06 20 3a 0d bc ca 15 20  2e 63 6c 5f 65 6e 64 5f  |. :.... .cl_end_|
000191e0  72 6f 75 74 69 6e 65 73  0d bc d4 06 20 3a 0d bc  |routines.... :..|
000191f0  de 0c 20 2e 63 6c 5f 65  6e 64 0d bc e8 1d 20 4c  |.. .cl_end.... L|
00019200  44 4d 46 44 20 20 20 52  31 33 21 2c 7b 52 30 2d  |DMFD   R13!,{R0-|
00019210  52 31 32 2c 50 43 7d 0d  bc f2 06 20 3a 0d bc fc  |R12,PC}.... :...|
00019220  0c 20 2e 63 6c 5f 63 6c  73 0d bd 06 13 20 4d 4f  |. .cl_cls.... MO|
00019230  56 20 20 20 20 20 52 36  2c 52 31 30 0d bd 10 15  |V     R6,R10....|
00019240  20 4d 4f 56 20 20 20 20  20 52 34 2c 20 23 26 46  | MOV     R4, #&F|
00019250  46 0d bd 1a 0e 20 2e 63  6c 5f 6c 6f 6f 70 32 0d  |F.... .cl_loop2.|
00019260  bd 24 14 20 4c 44 52 20  20 20 20 20 52 30 2c 5b  |.$. LDR     R0,[|
00019270  52 36 5d 0d bd 2e 06 20  3a 0d bd 38 1a 20 4d 4f  |R6].... :..8. MO|
00019280  56 20 20 20 20 20 52 33  2c 52 30 2c 20 52 4f 52  |V     R3,R0, ROR|
00019290  20 23 38 0d bd 42 12 20  43 4d 50 20 20 20 20 20  | #8..B. CMP     |
000192a0  52 33 2c 52 30 0d bd 4c  18 20 42 4e 45 20 20 20  |R3,R0..L. BNE   |
000192b0  20 20 63 6c 5f 6e 6f 74  5f 73 61 6d 65 0d bd 56  |  cl_not_same..V|
000192c0  13 20 80 20 20 20 20 20  52 31 2c 52 34 2c 52 30  |. .     R1,R4,R0|
000192d0  0d bd 60 18 20 4c 44 52  42 20 20 20 20 52 31 2c  |..`. LDRB    R1,|
000192e0  5b 52 31 31 2c 52 31 5d  0d bd 6a 1c 20 84 52 20  |[R11,R1]..j. .R |
000192f0  20 20 20 20 52 33 2c 52  31 2c 52 31 2c 20 4c 53  |    R3,R1,R1, LS|
00019300  4c 20 23 38 0d bd 74 1d  20 84 52 20 20 20 20 20  |L #8..t. .R     |
00019310  52 33 2c 52 33 2c 52 33  2c 20 4c 53 4c 20 23 31  |R3,R3,R3, LSL #1|
00019320  36 0d bd 7e 06 20 3a 0d  bd 88 1b 20 42 20 20 20  |6..~. :.... B   |
00019330  20 20 20 20 63 6c 5f 64  6f 6e 65 5f 70 69 78 65  |    cl_done_pixe|
00019340  6c 73 0d bd 92 06 20 3a  0d bd 9c 11 20 2e 63 6c  |ls.... :.... .cl|
00019350  5f 6e 6f 74 5f 73 61 6d  65 0d bd a6 13 20 80 20  |_not_same.... . |
00019360  20 20 20 20 52 31 2c 52  34 2c 52 30 0d bd b0 18  |    R1,R4,R0....|
00019370  20 4c 44 52 42 20 20 20  20 52 31 2c 5b 52 31 31  | LDRB    R1,[R11|
00019380  2c 52 31 5d 0d bd ba 12  20 4d 4f 56 20 20 20 20  |,R1].... MOV    |
00019390  20 52 33 2c 52 31 0d bd  c4 06 20 3a 0d bd ce 1b  | R3,R1.... :....|
000193a0  20 80 20 20 20 20 20 52  31 2c 52 34 2c 52 30 2c  | .     R1,R4,R0,|
000193b0  20 4c 53 52 20 23 38 0d  bd d8 18 20 4c 44 52 42  | LSR #8.... LDRB|
000193c0  20 20 20 20 52 31 2c 5b  52 31 31 2c 52 31 5d 0d  |    R1,[R11,R1].|
000193d0  bd e2 1c 20 84 52 20 20  20 20 20 52 33 2c 52 33  |... .R     R3,R3|
000193e0  2c 52 31 2c 20 4c 53 4c  20 23 38 0d bd ec 06 20  |,R1, LSL #8.... |
000193f0  3a 0d bd f6 1c 20 80 20  20 20 20 20 52 31 2c 52  |:.... .     R1,R|
00019400  34 2c 52 30 2c 20 4c 53  52 20 23 31 36 0d be 00  |4,R0, LSR #16...|
00019410  18 20 4c 44 52 42 20 20  20 20 52 31 2c 5b 52 31  |. LDRB    R1,[R1|
00019420  31 2c 52 31 5d 0d be 0a  1d 20 84 52 20 20 20 20  |1,R1].... .R    |
00019430  20 52 33 2c 52 33 2c 52  31 2c 20 4c 53 4c 20 23  | R3,R3,R1, LSL #|
00019440  31 36 0d be 14 06 20 3a  0d be 1e 1c 20 80 20 20  |16.... :.... .  |
00019450  20 20 20 52 31 2c 52 34  2c 52 30 2c 20 4c 53 52  |   R1,R4,R0, LSR|
00019460  20 23 32 34 0d be 28 18  20 4c 44 52 42 20 20 20  | #24..(. LDRB   |
00019470  20 52 31 2c 5b 52 31 31  2c 52 31 5d 0d be 32 1d  | R1,[R11,R1]..2.|
00019480  20 84 52 20 20 20 20 20  52 33 2c 52 33 2c 52 31  | .R     R3,R3,R1|
00019490  2c 20 4c 53 4c 20 23 32  34 0d be 3c 06 20 3a 0d  |, LSL #24..<. :.|
000194a0  be 46 14 20 2e 63 6c 5f  64 6f 6e 65 5f 70 69 78  |.F. .cl_done_pix|
000194b0  65 6c 73 0d be 50 1f 20  53 54 52 20 20 20 20 20  |els..P. STR     |
000194c0  52 33 2c 5b 52 36 5d 2c  20 23 66 61 64 65 72 25  |R3,[R6], #fader%|
000194d0  2b 34 0d be 5a 06 20 3a  0d be 64 12 20 43 4d 50  |+4..Z. :..d. CMP|
000194e0  20 20 20 20 20 52 36 2c  52 37 0d be 6e 15 20 42  |     R6,R7..n. B|
000194f0  4c 54 20 20 20 20 20 63  6c 5f 6c 6f 6f 70 32 0d  |LT     cl_loop2.|
00019500  be 78 06 20 3a 0d be 82  0c 20 2e 63 6c 5f 65 6e  |.x. :.... .cl_en|
00019510  64 0d be 8c 13 20 4d 4f  56 20 20 20 20 20 50 43  |d.... MOV     PC|
00019520  2c 52 31 34 0d be 96 06  20 3a 0d be a0 14 20 2e  |,R14.... :.... .|
00019530  61 64 72 5f 63 6c 73 63  6f 6c 6f 75 72 73 0d be  |adr_clscolours..|
00019540  aa 18 20 45 51 55 44 20  20 20 20 63 6c 5f 63 6f  |.. EQUD    cl_co|
00019550  6c 6f 75 72 73 25 0d be  b4 15 20 2e 63 6c 5f 61  |lours%.... .cl_a|
00019560  64 72 5f 76 64 75 5f 76  61 72 73 0d be be 15 20  |dr_vdu_vars.... |
00019570  45 51 55 44 20 20 20 20  76 64 75 5f 76 61 72 73  |EQUD    vdu_vars|
00019580  0d be c8 13 20 2e 63 6c  5f 61 64 72 5f 73 63 72  |.... .cl_adr_scr|
00019590  65 65 6e 0d be d2 13 20  45 51 55 44 20 20 20 20  |een.... EQUD    |
000195a0  73 63 72 65 65 6e 0d be  dc 0c 20 2e 73 63 72 65  |screen.... .scre|
000195b0  65 6e 0d be e6 0e 20 45  51 55 44 20 20 20 20 30  |en.... EQUD    0|
000195c0  0d be f0 0e 20 2e 76 64  75 5f 76 61 72 73 0d be  |.... .vdu_vars..|
000195d0  fa 2c 20 45 51 55 44 20  20 20 20 31 34 39 20 20  |., EQUD    149  |
000195e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000195f0  3b 20 76 64 75 20 64 61  74 61 0d bf 04 0f 20 45  |; vdu data.... E|
00019600  51 55 44 20 20 20 20 2d  31 0d bf 0e 11 20 2e 73  |QUD    -1.... .s|
00019610  63 72 65 65 6e 5f 73 69  7a 65 0d bf 18 13 20 45  |creen_size.... E|
00019620  51 55 44 20 20 20 20 26  31 34 30 30 30 0d bf 22  |QUD    &14000.."|
00019630  06 20 3a 0d bf 2c 06 20  5d 0d bf 36 05 ed 0d bf  |. :..,. ]..6....|
00019640  40 0e d6 20 73 65 74 75  70 5f 63 73 0d bf 4a 05  |@.. setup_cs..J.|
00019650  e1 0d bf 54 05 3a 0d bf  5e 05 3a 0d bf 68 05 3a  |...T.:..^.:..h.:|
00019660  0d bf 72 10 dd 20 f2 70  72 69 6e 74 28 61 24 29  |..r.. .print(a$)|
00019670  0d bf 7c 11 e7 20 61 24  3d 22 22 20 8c 20 f1 3a  |..|.. a$="" . .:|
00019680  e1 0d bf 86 17 ea 20 6c  65 74 74 65 72 25 2c 77  |...... letter%,w|
00019690  69 64 74 68 25 2c 63 25  0d bf 90 0a c8 91 20 30  |idth%,c%...... 0|
000196a0  2c 30 0d bf 9a 0b 78 25  3d b1 2a 36 34 0d bf a4  |,0....x%=.*64...|
000196b0  13 79 25 3d 31 30 32 34  2d bc 2a 36 34 2d 36 34  |.y%=1024-.*64-64|
000196c0  0d bf ae 17 e3 20 6c 65  74 74 65 72 25 3d 31 20  |..... letter%=1 |
000196d0  b8 20 a9 28 61 24 29 0d  bf b8 1f 20 e7 20 78 25  |. .(a$).... . x%|
000196e0  3e 31 30 32 34 20 8c 20  78 25 3d 30 3a 79 25 2d  |>1024 . x%=0:y%-|
000196f0  3d 36 34 3a f1 27 0d bf  c2 1b 20 61 73 63 25 3d  |=64:.'.... asc%=|
00019700  97 28 c1 61 24 2c 6c 65  74 74 65 72 25 2c 31 29  |.(.a$,letter%,1)|
00019710  29 0d bf cc 10 20 e7 20  61 73 63 25 3e 33 31 20  |).... . asc%>31 |
00019720  8c 0d bf d6 33 20 20 c8  99 20 22 4f 53 5f 53 70  |....3  .. "OS_Sp|
00019730  72 69 74 65 4f 70 22 2c  26 31 32 38 2c 66 6f 6e  |riteOp",&128,fon|
00019740  74 25 2c c3 61 73 63 25  20 b8 20 2c 2c 2c 77 69  |t%,.asc% . ,,,wi|
00019750  64 74 68 25 0d bf e0 2f  20 20 c8 99 20 22 4f 53  |dth%.../  .. "OS|
00019760  5f 53 70 72 69 74 65 4f  70 22 2c 26 31 32 32 2c  |_SpriteOp",&122,|
00019770  66 6f 6e 74 25 2c c3 61  73 63 25 2c 78 25 2c 79  |font%,.asc%,x%,y|
00019780  25 2c 30 0d bf ea 06 20  cc 0d bf f4 25 20 20 e7  |%,0.... ....%  .|
00019790  20 61 73 63 25 3d 39 20  8c 20 78 25 3d 28 a8 28  | asc%=9 . x%=(.(|
000197a0  78 25 2f 32 35 36 29 2b  31 29 2a 32 35 36 0d bf  |x%/256)+1)*256..|
000197b0  fe 06 20 cd 0d c0 08 11  20 78 25 2b 3d 77 69 64  |.. ..... x%+=wid|
000197c0  74 68 25 2a 34 0d c0 12  05 ed 0d c0 1c 05 f1 0d  |th%*4...........|
000197d0  c0 26 05 e1 0d c0 30 05  3a 0d c0 3a 05 3a 0d c0  |.&....0.:..:.:..|
000197e0  44 0b dd 20 f2 74 69 6e  74 0d c0 4e 17 e3 20 70  |D.. .tint..N.. p|
000197f0  25 3d 30 20 b8 20 26 31  33 46 46 46 20 88 20 31  |%=0 . &13FFF . 1|
00019800  0d c0 58 4b 20 e7 20 73  63 72 65 65 6e 64 61 74  |..XK . screendat|
00019810  61 25 3f 70 25 3c 3e 30  20 8c 20 73 63 72 65 65  |a%?p%<>0 . scree|
00019820  6e 64 61 74 61 25 3f 70  25 3d 28 73 63 72 65 65  |ndata%?p%=(scree|
00019830  6e 64 61 74 61 25 3f 70  25 20 84 20 25 31 31 29  |ndata%?p% . %11)|
00019840  20 82 20 28 b3 28 33 29  2d 31 29 0d c0 62 05 ed  | . (.(3)-1)..b..|
00019850  0d c0 6c 05 e1 0d ff                              |..l....|
00019857