Home » Archimedes archive » Archimedes World » archimedes_world_volume_15_issue_4_scp.adf » GroundHog » !HogDemo/!RunImage
!HogDemo/!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 » Archimedes World » archimedes_world_volume_15_issue_4_scp.adf » GroundHog |
| Filename: | !HogDemo/!RunImage |
| Read OK: | ✔ |
| File size: | 1D191 bytes |
| Load address: | 0000 |
| Exec address: | 0000 |
File contents
10MODE28:MODE49
20IF MODE=49 THEN hires%=1 ELSE MODE15:MODE13:hires%=0
30OFF:A=RND(-TIME):*FX 200,1
40ON ERROR PROCerror:END
50SOUND ON:VOICES 8
60DIM code% 15000,menucode% 3000
70DIM NorSprites% 512*16,NorSprites2% 512*16
80EasSprites%=NorSprites%+1024
90SouSprites%=NorSprites%+2048:WesSprites%=NorSprites%+3072
100NorMasks%=NorSprites%+4096:EasMasks%=NorMasks%+1024
110SouMasks%=NorMasks%+2048:WesMasks%=NorMasks%+3072
120EasSprites2%=NorSprites2%+1024
130SouSprites2%=NorSprites2%+2048:WesSprites2%=NorSprites2%+3072
140NorMasks2%=NorSprites2%+4096:EasMasks2%=NorMasks2%+1024
150SouMasks2%=NorMasks2%+2048:WesMasks2%=NorMasks2%+3072
160DIM scenery% 256*33,colscenery% 256*33,map% (18*16)+2,doorspr% 2048
170DIM sin% 1005*12,cos% 1005*12,sin2% 361*4,cos2% 361*4
180DIM droidspr% 512,droidmask% 512,droids% 5*12,stack% 52,bullets% 129*16
190DIM Shuggy% 10*50*20*6,Shuggy2% 10*50*20*6,screen% 81920,colscreen% 81920,exitspr% 256
200DIM button1% 5*50*20*6:button2%=button1%+50*20*6:button3%=button2%+50*20*6
210button4%=button3%+50*20*6:button5%=button4%+50*20*6
220DIM clockval% 4,zeroclock% 4,firedirecs% 20*8,deaths% 65*8
230clockdata%=button1%
240DIM bossspr% 27648+4096,bossdata% 64,rndnos% 1024,fireballspr% 4096
250DIM fireballs% 12*4,passwords% 160,explosion% 5120,explosions% 10*3
260DIM menusprs% 5376,volume% 2,RUsure% 180*51,PressP% 144*50
270FOR CL%=0 TO 4:?(zeroclock%+CL%)=0:NEXT
280FOR SI%=0 TO 1004:!(sin%+(SI%*12))=256*SIN(RAD(360-(SI%*(0.36)))):NEXT
290FOR SI%=0 TO 1004:!(cos%+(SI%*12))=(-256)*COS(RAD(360-(SI%*(0.36)))):NEXT
300FOR SI%=0 TO 360:!(sin2%+(SI%*4))=256*SIN(RAD(SI%)):NEXT
310FOR SI%=0 TO 360:!(cos2%+(SI%*4))=(-256)*COS(RAD(SI%)):NEXT
320OSCLI "LOAD <HogDemo$Dir>.Sprites.Hog1 "+STR$~(NorSprites%)
330OSCLI "LOAD <HogDemo$Dir>.Sprites.Hog2 "+STR$~(NorSprites2%)
340OSCLI "LOAD <HogDemo$Dir>.Sprites.ColScenery "+STR$~(colscenery%)
350OSCLI "LOAD <HogDemo$Dir>.Sprites.Scenery "+STR$~(scenery%)
360OSCLI "LOAD <HogDemo$Dir>.Sprites.ColTable "+STR$~(passwords%)
370OSCLI "LOAD <HogDemo$Dir>.Sprites.Doors "+STR$~(doorspr%)
380OSCLI "LOAD <HogDemo$Dir>.Sprites.Exit "+STR$~(exitspr%)
390OSCLI "LOAD <HogDemo$Dir>.Sprites.DroidSpr "+STR$~(droidspr%)
400OSCLI "LOAD <HogDemo$Dir>.Sprites.DroidMask "+STR$~(droidmask%)
410OSCLI "LOAD <HogDemo$Dir>.Sprites.FireBall "+STR$~(fireballspr%)
420OSCLI "LOAD <HogDemo$Dir>.Sprites.Explosion "+STR$~(explosion%)
430OSCLI "LOAD <HogDemo$Dir>.Sprites.MenuSpr "+STR$~(menusprs%)
440SYS "Decrunch_Decrunch",%10000,"<HogDemo$Dir>.Sprites.RUsure",RUsure%
450SYS "Decrunch_Decrunch",%10000,"<HogDemo$Dir>.Sprites.PressP",PressP%
460PROCassemble
470SYS "XQTM_SoundControl",8,1,-1
480SYS "XQTM_Load","<HogDemo$Dir>.Sound.Quick"
490SYS "XQTM_Start"
500?(volume%)=60:?(volume%+1)=60
510SYS "XQTM_MusicVolume",?(volume%)
520REPEAT:FOR CL%=0 TO 63:?(clockdata%+(CL%*20))=RND(2)
530?(clockdata%+(CL%*20)+1)=RND(12):?(clockdata%+(CL%*20)+2)=RND(60)-1
540REPEAT:CH%=RND(13):UNTIL CH%<>7
550?(clockdata%+(CL%*20)+3)=CH%
560PL%=0:REPEAT:PL%=PL%+1
570Xpos%=4*RND(64):Ypos%=RND(200)+8
580IF CL%>0 THEN
590 NE%=0
600 FOR PCL%=0 TO CL%
610 Xpos2%=!(clockdata%+(PCL%*20)+4):Ypos2%=!(clockdata%+(PCL%*20)+8)
620 IF ABS(Xpos2%-Xpos%)<20 AND ABS(Ypos2%-Ypos%)<20 THEN NE%=1
630 NEXT
640 IF NE%=0 THEN PL%=10
650ENDIF
660UNTIL PL%=10
670!(clockdata%+(CL%*20)+4)=Xpos%:!(clockdata%+(CL%*20)+8)=Ypos%
680NEXT
690?(clockdata%+(64*20))=1
700?(clockdata%+(64*20)+1)=12:?(clockdata%+(64*20)+2)=0
710?(clockdata%+(64*20)+3)=7
720!(clockdata%+(64*20)+4)=128:!(clockdata%+(64*20)+8)=192
730!(end2)=0:!(choselevel)=1:!(tapedelay)=512
740SYS "Decrunch_Decrunch",%10000,"<HogDemo$Dir>.Sprites.MenuOpts",screen%
750CALL menucode%
760IF !(end2)=2 THEN
770 *FX 200,0
780 *FX 15,1
790 *DESKTOP
800ENDIF
810LE%=!(choselevel)
820REPEAT:CALL clearscreen
830!(showingtape)=0
840FOR FI%=0 TO 9:AN=5*SIN(RAD(FI%*36))
850!(firedirecs%+(FI%*8))=1024*SIN(RAD(AN))
860!(firedirecs%+(FI%*8)+4)=1024*COS(RAD(AN))
870NEXT
880FOR EX%=0 TO 9:?(explosions%+(EX%*3))=0:NEXT
890FOR FI%=0 TO 3:!(fireballs%+(FI%*12))=0:NEXT
900FOR DE%=0 TO 64:!(deaths%+(DE%*8))=0:NEXT
910FOR DR%=0 TO 4:?(droids%+(DR%*12))=0:?(droids%+(DR%*12)+9)=0:NEXT
920!(end)=0:!(ShugPos)=0:!(Slipno)=0:!(door1step)=0:!(door2step)=0
930!(door3step)=0:!(door4step)=0:!(door5step)=0:!(xpos)=1:!(ypos)=1
940!(xdis)=0:!(ydis)=0:!(direction)=3:!(dead)=0:!(bulletseed)=0
950OSCLI "LOAD <HogDemo$Dir>.Maps.Level"+FNstr(LE%)+" "+STR$~(map%)
960?(bossdata%)=0
970DR%=0:FOR B%=0 TO 15:FOR A%=0 TO 17
980IF ?(map%+(B%*18)+A%)=10 THEN !(door1pos)=(B%*5120)+(A%*16)
990IF ?(map%+(B%*18)+A%)=11 THEN !(door2pos)=(B%*5120)+(A%*16)
1000IF ?(map%+(B%*18)+A%)=12 THEN !(door3pos)=(B%*5120)+(A%*16)
1010IF ?(map%+(B%*18)+A%)=17 THEN !(door4pos)=(B%*5120)+(A%*16)
1020IF ?(map%+(B%*18)+A%)=18 THEN !(door5pos)=(B%*5120)+(A%*16)
1030IF ?(map%+(B%*18)+A%)=14 THEN !(exitpos)=(B%*5120)+(A%*16)
1040IF ?(map%+(B%*18)+A%)>18 AND ?(map%+(B%*18)+A%)<24 THEN
1050 ?(droids%+(DR%*12))=A%:?(droids%+(DR%*12)+1)=B%
1060 ?(droids%+(DR%*12)+2)=0:?(droids%+(DR%*12)+3)=0
1070 ?(droids%+(DR%*12)+4)=?(map%+(B%*18)+A%)-18:?(droids%+(DR%*12)+5)=1
1080 IF ?(droids%+(DR%*12)+4)=3 THEN ?(droids%+(DR%*12)+5)=2
1090 IF ?(droids%+(DR%*12)+4)=1 THEN ?(droids%+(DR%*12)+5)=0
1100 ?(droids%+(DR%*12)+6)=RND(2)-1:?(droids%+(DR%*12)+7)=RND(4)-1
1110 ?(droids%+(DR%*12)+8)=3:?(droids%+(DR%*12)+9)=A%:?(droids%+(DR%*12)+10)=B%
1120 ?(droids%+(DR%*12)+11)=9
1130 ?(map%+(B%*18)+A%)=0
1140 DR%=DR%+1
1150ENDIF
1160NEXT:NEXT
1170FOR RA%=0 TO 1024:?(rndnos%+RA%)=RND(256)-1:NEXT
1180!(level)=LE%:!(level2)=LE%:!(levelskip)=!(cheat2on)
1190*CHANNELVOICE 2 Torch
1200*CHANNELVOICE 3 DRONETP
1210*CHANNELVOICE 4 Kwak
1220*CHANNELVOICE 5 Heifer
1230*CHANNELVOICE 6 OpenDoor
1240*CHANNELVOICE 7 BULLET
1250*CHANNELVOICE 8 BULLET
1260CALL startgame
1270IF !(end)=2 THEN LE%=LE%+1:!(showpass)=1
1280IF LE%=4 THEN PROCending
1290IF !(end)=1 THEN SYS &6,112,1:SYS &6,113,1:CALL paradox
1300UNTIL !(end)=3
1310SYS &6,112,1:SYS &6,113,1
1320CALL paradox
1330UNTIL FALSE
1340
1350DEFPROCending
1360SYS "Decrunch_Decrunch",%10000,"<HogDemo$Dir>.Sprites.EndPic",screen%
1370FOR pass=0 TO 2 STEP 2
1380P%=Shuggy%
1390[ OPT pass
1400.endpiccy EQUD screen%
1410.hires EQUD hires%
1420.scrbank EQUD 0
1430.endofend EQUD 0
1440.base EQUD 0
1450.ending STMFD (13)!,{14}
1460 MOV R0,#200
1470 MOV R1,#0
1480 MOV R2,#0
1490 SWI &6
1500 MOV R0,#2
1510 SWI "OS_ReadDynamicArea"
1520 STR R0,base
1530 MOV R12,#2
1540 STR R12,scrbank
1550.mainloop LDR R12,scrbank
1560 RSB R12,R12,#3
1570 STR R12,scrbank
1580 MOV R0,#19
1590 SWI &6
1600 MOV R0,#113
1610 MOV R1,R12
1620 SWI &6
1630 LDR R10,hires
1640 LDR R11,base
1650 CMP R12,#1
1660 CMPEQ R10,#0
1670 ADDEQ R11,R11,#81920
1680 CMP R12,#1
1690 CMPEQ R10,#1
1700 ADDEQ R11,R11,#153600
1710 BL plotendpic
1720 SWI &2C
1730 MOVCS R2,#1
1740 STRCS R2,endofend
1750 LDR R0,endofend
1760 CMP R0,#0
1770 BEQ mainloop
1780 MOV R0,#200
1790 MOV R1,#1
1800 MOV R2,#0
1810 SWI &6
1820 MOV R0,#124
1830 SWI &6
1840 LDMFD (13)!,{pc}
1850.plotendpic STMFD (13)!,{14}
1860 LDR R0,hires
1870 CMP R0,#1
1880 BEQ hiresendpic
1890 LDR R0,endpiccy
1900 ADD R1,R0,#81920
1910.plotendpiclp LDMIA R0!,{R2-R10,R12}
1920 STMIA R11!,{R2-R10,R12}
1930 LDMIA R0!,{R2-R10,R12}
1940 STMIA R11!,{R2-R10,R12}
1950 LDMIA R0!,{R2-R10,R12}
1960 STMIA R11!,{R2-R10,R12}
1970 LDMIA R0!,{R2-R10,R12}
1980 STMIA R11!,{R2-R10,R12}
1990 LDMIA R0!,{R2-R10,R12}
2000 STMIA R11!,{R2-R10,R12}
2010 LDMIA R0!,{R2-R10,R12}
2020 STMIA R11!,{R2-R10,R12}
2030 LDMIA R0!,{R2-R10,R12}
2040 STMIA R11!,{R2-R10,R12}
2050 LDMIA R0!,{R2-R10,R12}
2060 STMIA R11!,{R2-R10,R12}
2070 CMP R0,R1
2080 BLT plotendpiclp
2090 SUB R11,R11,#81920
2100 LDMFD (13)!,{pc}
2110.hiresendpic LDR R0,endpiccy
2120 ADD R1,R0,#76800
2130.plotendpiclp ADD R14,R11,#320
2140 LDMIA R0!,{R2-R10,R12}
2150 STMIA R11!,{R2-R10,R12}
2160 STMIA R14!,{R2-R10,R12}
2170 LDMIA R0!,{R2-R10,R12}
2180 STMIA R11!,{R2-R10,R12}
2190 STMIA R14!,{R2-R10,R12}
2200 LDMIA R0!,{R2-R10,R12}
2210 STMIA R11!,{R2-R10,R12}
2220 STMIA R14!,{R2-R10,R12}
2230 LDMIA R0!,{R2-R10,R12}
2240 STMIA R11!,{R2-R10,R12}
2250 STMIA R14!,{R2-R10,R12}
2260 LDMIA R0!,{R2-R10,R12}
2270 STMIA R11!,{R2-R10,R12}
2280 STMIA R14!,{R2-R10,R12}
2290 LDMIA R0!,{R2-R10,R12}
2300 STMIA R11!,{R2-R10,R12}
2310 STMIA R14!,{R2-R10,R12}
2320 LDMIA R0!,{R2-R10,R12}
2330 STMIA R11!,{R2-R10,R12}
2340 STMIA R14!,{R2-R10,R12}
2350 LDMIA R0!,{R2-R10,R12}
2360 STMIA R11!,{R2-R10,R12}
2370 STMIA R14!,{R2-R10,R12}
2380 ADD R11,R11,#320
2390 CMP R0,R1
2400 BLT plotendpiclp
2410 SUB R11,R11,#153600
2420 LDMFD (13)!,{pc}
2430]
2440NEXT
2450CALL ending
2460*FX 15,1
2470*DESKTOP
2480ENDPROC
2490
2500DEFPROCassemble
2510FOR pass=0 TO 2 STEP 2
2520P%=code%
2530[ OPT pass
2540.NorSprites EQUD NorSprites%
2550.EasSprites EQUD EasSprites%
2560.SouSprites EQUD SouSprites%
2570.WesSprites EQUD WesSprites%
2580.NorMasks EQUD NorMasks%
2590.EasMasks EQUD EasMasks%
2600.SouMasks EQUD SouMasks%
2610.WesMasks EQUD WesMasks%
2620.Shuggy EQUD Shuggy%
2630.screen EQUD screen%
2640.colscreen EQUD colscreen%
2650.clockval EQUD clockval%
2660.zeroclock EQUD zeroclock%
2670.scenery EQUD scenery%
2680.colscenery EQUD colscenery%
2690.map EQUD map%
2700.droids EQUD droids%
2710.droidspr EQUD droidspr%
2720.droidmask EQUD droidmask%
2730.doorspr EQUD doorspr%
2740.volume EQUD volume%
2750.bossspr EQUD bossspr%
2760.bossdata EQUD bossdata%
2770.rndnos EQUD rndnos%
2780.bullets EQUD bullets%
2790.button1 EQUD button1%
2800.button2 EQUD button2%
2810.button3 EQUD button3%
2820.button4 EQUD button4%
2830.button5 EQUD button5%
2840.exitspr EQUD exitspr%
2850.firedirecs EQUD firedirecs%
2860.deaths EQUD deaths%
2870.stack EQUD stack%
2880.fireballs EQUD fireballs%
2890.fireballspr EQUD fireballspr%
2900.explosion EQUD explosion%
2910.explosions EQUD explosions%
2920.sin EQUD sin%
2930.cos EQUD cos%
2940.hires EQUD hires%
2950.storestack EQUD 0
2960.quickfix STMFD (13)!,{14}
2970 STR R13,storestack
2980 MOV R13,R11
2990 ADD R12,R11,#81920
3000 SUB R12,R12,#4480
3010 ADD R11,R11,#153600
3020 SUB R11,R11,#640
3030.qfloop2 ADD R14,R11,#320
3040 MOV R10,#7
3050.qfloop1 LDMIA R12!,{R0-R9}
3060 STMIA R11!,{R0-R9}
3070 STMIA R14!,{R0-R9}
3080 SUBS R10,R10,#1
3090 BPL qfloop1
3100 SUB R12,R12,#640
3110 SUB R11,R11,#960
3120 CMP R11,R13
3130 BGT qfloop2
3140 LDR R13,storestack
3150 LDMFD (13)!,{pc}
3160.shugclear EQUD 10*50*20*6
3170.buttonclear EQUD (50*20*6)-6
3180.startgame STMFD (13)!,{14}
3190 MOV R0,#200
3200 MOV R1,#0
3210 MOV R2,#0
3220 SWI &6
3230 LDR R0,button1
3240 LDR R1,button2
3250 LDR R2,button3
3260 LDR R3,button4
3270 LDR R4,button5
3280 LDR R5,buttonclear
3290 MOV R6,#1
3300.clearbuttonlp STR R6,[R0,R5]
3310 STR R6,[R1,R5]
3320 STR R6,[R2,R5]
3330 STR R6,[R3,R5]
3340 STR R6,[R4,R5]
3350 SUBS R5,R5,#6
3360 BPL clearbuttonlp
3370 LDR R0,showingtape
3380 CMP R0,#1
3390 BEQ skipclshug
3400 LDR R0,Shuggy
3410 LDR R1,shugclear
3420 MOV R2,#20
3430.clearshugloop STRB R2,[R0,R1]
3440 SUBS R1,R1,#6
3450 BPL clearshugloop
3460.skipclshug LDR R0,bullets
3470 MOV R1,#128*16
3480 MOV R2,#0
3490.clearbulloop STR R2,[R0,R1]
3500 SUBS R1,R1,#16
3510 BPL clearbulloop
3520 LDR R0,screen
3530 LDR R1,map
3540 ADD R10,R1,#288
3550.makescreenlp2 MOV R2,#17
3560.makescreenlp1 LDR R3,scenery
3570 LDRB R5,[R1]
3580 ADD R3,R3,R5,LSL #8
3590 ADD R4,R3,#256
3600 MOV R12,R0
3610.copyscenerylp LDMIA R3!,{R5-R8}
3620 STMIA R12,{R5-R8}
3630 ADD R12,R12,#320
3640 CMP R3,R4
3650 BLT copyscenerylp
3660 ADD R0,R0,#16
3670 ADD R1,R1,#1
3680 SUBS R2,R2,#1
3690 BPL makescreenlp1
3700 ADD R0,R0,#4800
3710 ADD R0,R0,#32
3720 CMP R1,R10
3730 BLT makescreenlp2
3740 LDR R0,colscreen
3750 LDR R1,map
3760 ADD R10,R1,#288
3770.makecolscrlp2 MOV R2,#17
3780.makecolscrlp1 LDR R3,colscenery
3790 LDRB R5,[R1]
3800 ADD R3,R3,R5,LSL #8
3810 ADD R4,R3,#256
3820 MOV R12,R0
3830.copycolscelp LDMIA R3!,{R5-R8}
3840 STMIA R12,{R5-R8}
3850 ADD R12,R12,#320
3860 CMP R3,R4
3870 BLT copycolscelp
3880 ADD R0,R0,#16
3890 ADD R1,R1,#1
3900 SUBS R2,R2,#1
3910 BPL makecolscrlp1
3920 ADD R0,R0,#4800
3930 ADD R0,R0,#32
3940 CMP R1,R10
3950 BLT makecolscrlp2
3960 MOV R0,#2
3970 SWI "OS_ReadDynamicArea"
3980 STR R0,base
3990 LDR R0,showpass
4000 CMP R0,#1
4010 MOVEQ R0,#0
4020 STREQ R0,showpass
4030 BLEQ doshowpass
4040 MOV R12,#2
4050 STR R12,scrbank
4060.mainloop LDR R12,scrbank
4070 RSB R12,R12,#3
4080 MOV R0,#19
4090 SWI &6
4100 MOV R0,#113
4110 MOV R1,R12
4120 SWI &6
4130.waitloop MOV R0,#1
4140 LDR R1,clockval
4150 SWI "OS_Word"
4160 LDR R0,[R1]
4170 CMP R0,#1
4180 BLT waitloop
4190 MOV R0,#2
4200 LDR R1,zeroclock
4210 SWI "OS_Word"
4220 LDR R10,hires
4230 LDR R11,base
4240 CMP R12,#1
4250 CMPEQ R10,#0
4260 ADDEQ R11,R11,#81920
4270 CMP R12,#1
4280 CMPEQ R10,#1
4290 ADDEQ R11,R11,#153600
4300 STR R12,scrbank
4310 LDR R0,showingtape
4320 CMP R0,#0
4330 BLEQ writepos
4340 BL drawscreen
4350 BL checkbuttons
4360 LDR R0,end
4370 CMP R0,#2
4380 BEQ compskipstuff
4390 BL dodoors
4400 BL doexit
4410 BL dobullets
4420 BL dofireballs
4430 BL drawshugs
4440 BL dodroids
4450 BL doclock
4460 LDR R0,bossdata
4470 LDRB R1,[R0]
4480 CMP R1,#3
4490 ADDEQ R0,R0,#4
4500 LDRB R1,[R0]
4510 CMP R1,#1
4520 BLEQ doboss1
4530 LDR R0,bossdata
4540 LDRB R1,[R0]
4550 CMP R1,#3
4560 ADDEQ R0,R0,#20
4570 LDRB R1,[R0]
4580 CMP R1,#2
4590 BLEQ doboss2
4600 LDR R0,bossdata
4610 LDRB R1,[R0]
4620 CMP R1,#4
4630 BLEQ doboss3
4640 BL doexpls
4650 LDR R0,showingtape
4660 CMP R0,#0
4670 BLEQ checkcol
4680 BL keys
4690 BL addtime
4700 LDR R5,showingtape
4710 RSB R5,R5,#1
4720 MOV R1,#255
4730 CMP R5,#0
4740 MOVEQ R0,#121
4750 MOVEQ R1,#0
4760 SWIEQ &6
4770 CMP R1,#255
4780 CMPLT R5,#1
4790 MOVLT R5,#3
4800 STRLT R5,end
4810 LDR R0,hires
4820 CMP R0,#1
4830 BLEQ quickfix
4840.compskipstuff LDR R0,end
4850 CMP R0,#0
4860 BEQ mainloop
4870 MOV R0,#200
4880 MOV R1,#1
4890 MOV R2,#0
4900 SWI &6
4910 MOV R0,#124
4920 SWI &6
4930 LDMFD (13)!,{pc}
4940.doexpls STMFD (13)!,{14}
4950 STR R13,store
4960 LDR R0,explosions
4970 ADD R1,R0,#30
4980.explsloop LDRB R2,[R0]
4990 CMP R2,#0
5000 BEQ skipexpl
5010 LDRB R3,[R0,#1]
5020 ADD R3,R3,R3,LSL #2
5030 MOV R2,R2,LSL #2
5040 ADD R2,R2,R3,LSL #6
5050 ADD R2,R2,R11
5060 LDRB R3,[R0,#2]
5070 ADD R4,R3,#1
5080 STRB R4,[R0,#2]
5090 CMP R4,#10
5100 MOVEQ R2,#0
5110 STREQB R2,[R0]
5120 BEQ skipexpl
5130 LDR R4,explosion
5140 ADD R3,R4,R3,LSL #8
5150 ADD R4,R3,#2560
5160 ADD R5,R3,#256
5170.plotexplloop LDMIA R2,{R6-R9}
5180 LDMIA R4!,{R10,R12-R14}
5190 AND R6,R6,R10
5200 AND R7,R7,R12
5210 AND R8,R8,R13
5220 AND R9,R9,R14
5230 LDMIA R3!,{R10,R12-R14}
5240 ORR R6,R6,R10
5250 ORR R7,R7,R12
5260 ORR R8,R8,R13
5270 ORR R9,R9,R14
5280 STMIA R2,{R6-R9}
5290 ADD R2,R2,#320
5300 CMP R3,R5
5310 BLT plotexplloop
5320.skipexpl ADD R0,R0,#3
5330 CMP R0,R1
5340 BLT explsloop
5350 LDR R13,store
5360 LDMFD (13)!,{pc}
5370.dofireballs STMFD (13)!,{14}
5380 STR R13,store
5390 LDR R0,fireballs
5400 ADD R1,R0,#48
5410.fireballloop LDR R2,[R0]
5420 CMP R2,#0
5430 BEQ skipfireball
5440 LDR R3,[R0,#4]
5450 LDR R4,[R0,#8]
5460 CMP R4,#0
5470 SUBEQ R3,R3,#2
5480 CMP R4,#1
5490 ADDEQ R2,R2,#2
5500 CMP R4,#2
5510 ADDEQ R3,R3,#2
5520 CMP R4,#3
5530 SUBEQ R2,R2,#2
5540 ADD R5,R3,R3,LSL #2
5550 ADD R5,R2,R5,LSL #6
5560 LDR R6,colscreen
5570 ADD R6,R6,R5
5580 LDR R7,[R6]
5590 LDR R8,[R6,#12]
5600 ADD R6,R6,#4800
5610 LDR R9,[R6]
5620 LDR R10,[R6,#12]
5630 CMP R7,#1
5640 CMPNE R8,#1
5650 CMPNE R9,#1
5660 CMPNE R10,#1
5670 MOVEQ R2,#0
5680 STR R2,[R0]
5690 BEQ skipfireball
5700 STR R3,[R0,#4]
5710 LDR R6,xpos
5720 LDR R7,ypos
5730 LDR R8,xdis
5740 LDR R9,ydis
5750 ADD R6,R8,R6,LSL #4
5760 ADD R7,R9,R7,LSL #4
5770 SUBS R6,R6,R2
5780 RSBMI R6,R6,#0
5790 SUBS R7,R7,R3
5800 RSBMI R7,R7,#0
5810 CMP R6,#14
5820 CMPLT R7,#14
5830 MOVLT R6,#1
5840 STRLT R6,end
5850 AND R6,R2,#2
5860 ADD R2,R5,R11
5870 LDR R3,fireballspr
5880 ADD R3,R3,R4,LSL #9
5890 CMP R6,#2
5900 ADDEQ R3,R3,#2048
5910 ADD R4,R3,#256
5920 MOV R14,#15
5930.plotfbloop LDMIA R2,{R5-R8}
5940 LDMIA R4!,{R9-R10,R12-R13}
5950 AND R5,R5,R9
5960 AND R6,R6,R10
5970 AND R7,R7,R12
5980 AND R8,R8,R13
5990 LDMIA R3!,{R9-R10,R12-R13}
6000 ORR R5,R5,R9
6010 ORR R6,R6,R10
6020 ORR R7,R7,R12
6030 ORR R8,R8,R13
6040 STMIA R2,{R5-R8}
6050 ADD R2,R2,#320
6060 SUBS R14,R14,#1
6070 BPL plotfbloop
6080.skipfireball ADD R0,R0,#12
6090 CMP R0,R1
6100 BLT fireballloop
6110 LDR R13,store
6120 LDMFD (13)!,{pc}
6130.hitboss1 STMFD (13)!,{14}
6140 MOV R8,R3
6150 MOV R9,R4
6160 BL addexpl
6170 MOV R3,#0
6180 STR R3,[R1]
6190 LDR R7,level
6200 CMP R7,#40
6210 MOVNE R7,#1
6220 MOVEQ R7,#3
6230 SUB R6,R6,R7
6240 CMP R6,#0
6250 STRLE R3,[R0]
6260 BLLE explodeboss1
6270 LDMFD (13)!,{pc}
6280.doboss1 STMFD (13)!,{14}
6290 STR R11,store
6300 STR R13,store2
6310 LDR R1,xpos
6320 LDR R2,ypos
6330 LDR R3,xdis
6340 LDR R4,ydis
6350 ADD R1,R3,R1,LSL #4
6360 ADD R2,R4,R2,LSL #4
6370 MOV R3,#0
6380 CMP R1,#160
6390 CMPLT R2,#144
6400 MOVLT R3,#1
6410 CMP R1,#96
6420 CMPGE R2,#80
6430 CMPGE R3,#1
6440 STREQ R3,end
6450 LDR R6,[R0,#12]
6460 LDR R1,bullets
6470 ADD R2,R1,#128*16
6480.checkhitboss1 MOV R5,#0
6490 LDR R3,[R1]
6500 LDR R4,[R1,#4]
6510 MOV R3,R3,LSR #8
6520 MOV R4,R4,LSR #8
6530 CMP R3,#160
6540 CMPLT R4,#144
6550 MOVLT R5,#1
6560 CMP R3,#112
6570 CMPGE R4,#96
6580 CMPGE R5,#1
6590 BLEQ hitboss1
6600 ADD R1,R1,#16
6610 CMP R1,R2
6620 BLE checkhitboss1
6630 STR R6,[R0,#12]
6640 LDR R1,[R0]
6650 CMP R1,#0
6660 LDMEQFD (13)!,{pc}
6670 LDR R1,[R0,#8]
6680 LDR R2,rndnos
6690 LDRB R2,[R2,R1]
6700 SUBS R1,R1,#1
6710 MOVMI R1,#1024
6720 STR R1,[R0,#8]
6730 CMP R2,#8
6740 BLLT boss1fireball
6750 LDRB R2,[R0,#2]
6760 LDRB R1,[R0,#1]
6770 SUBS R1,R1,#1
6780 MOVMI R1,#5
6790 STRB R1,[R0,#1]
6800 CMP R1,#0
6810 BLEQ boss1newspr
6820 LDR R3,bossspr
6830 MOV R7,#3
6840 RSB R6,R6,#512
6850 AND R6,R7,R6,LSR #7
6860 MOV R7,#6912
6870 MLA R3,R7,R6,R3
6880 ADD R1,R2,R2,LSL #3
6890 ADD R1,R3,R1,LSL #8
6900 MOV R0,#30720
6910 ADD R0,R0,#112
6920 ADD R0,R0,R11
6930 MOV R14,#47
6940.boss1loop LDMIA R1!,{R2-R13}
6950 STMIA R0,{R2-R13}
6960 ADD R0,R0,#320
6970 SUBS R14,R14,#1
6980 BPL boss1loop
6990 LDR R11,store
7000 LDR R13,store2
7010 LDMFD (13)!,{pc}
7020.boss1fireball STMFD (13)!,{14}
7030 LDR R1,fireballs
7040 MOV R3,#12*3
7050.boss1fbloop LDR R4,[R1,R3]
7060 CMP R4,#0
7070 BEQ boss1createfb
7080 SUBS R3,R3,#12
7090 BPL boss1fbloop
7100 LDMFD (13)!,{pc}
7110.boss1createfb ADD R1,R1,R3
7120 CMP R2,#4
7130 SUBGE R2,R2,#4
7140 STR R2,[R1,#8]
7150 CMP R2,#0
7160 MOVEQ R3,#112
7170 MOVEQ R4,#80
7180 CMP R2,#2
7190 MOVEQ R3,#144
7200 MOVEQ R4,#144
7210 CMP R2,#1
7220 MOVEQ R3,#160
7230 MOVEQ R4,#96
7240 CMP R2,#3
7250 MOVEQ R3,#96
7260 MOVEQ R4,#128
7270 STR R3,[R1]
7280 STR R4,[R1,#4]
7290 LDMFD (13)!,{pc}
7300.boss1newspr STMFD (13)!,{14}
7310 LDR R1,[R0,#4]
7320 SUBS R1,R1,#1
7330 MOVMI R1,#1024
7340 STR R1,[R0,#4]
7350 LDR R2,rndnos
7360 LDRB R3,[R2,R1]
7370 CMP R3,#170
7380 MOVLE R2,#1
7390 MOVGT R2,#2
7400 CMP R3,#85
7410 MOVLE R2,#0
7420 STRB R2,[R0,#2]
7430 LDMFD (13)!,{pc}
7440.hitboss2 STMFD (13)!,{14}
7450 LDR R8,[R3]
7460 LDR R9,[R3,#4]
7470 MOV R8,R8,LSR #8
7480 MOV R9,R9,LSR #8
7490 BL addexpl
7500 MOV R8,#0
7510 STR R8,[R3]
7520 LDR R9,level
7530 CMP R9,#24
7540 MOVNE R9,#2
7550 MOVEQ R9,#1
7560 SUB R6,R6,R9
7570 CMP R6,#0
7580 STRLE R8,[R0]
7590 BLLE explodeboss2
7600 LDMFD (13)!,{pc}
7610.doboss2 STMFD (13)!,{14}
7620 STR R11,store
7630 STR R13,store2
7640 LDR R1,xpos
7650 LDR R2,ypos
7660 LDR R3,xdis
7670 LDR R4,ydis
7680 ADD R3,R3,R1,LSL #4
7690 ADD R4,R4,R2,LSL #4
7700 LDR R1,[R0,#4]
7710 LDR R2,[R0,#8]
7720 LDRB R5,[R0,#3]
7730 CMP R5,#3
7740 SUBEQ R1,R1,#4
7750 CMPEQ R1,#16
7760 MOVEQ R5,#0
7770 CMP R5,#2
7780 ADDEQ R2,R2,#1
7790 CMPEQ R2,#208
7800 MOVEQ R5,#3
7810 CMP R5,#1
7820 ADDEQ R1,R1,#4
7830 CMPEQ R1,#208
7840 MOVEQ R5,#2
7850 CMP R5,#0
7860 SUBEQ R2,R2,#1
7870 CMPEQ R2,#16
7880 MOVEQ R5,#1
7890 STR R1,[R0,#4]
7900 STR R2,[R0,#8]
7910 STRB R5,[R0,#3]
7920 SUB R3,R3,#8
7930 SUB R4,R4,#8
7940 SUBS R3,R3,R1
7950 RSBMI R3,R3,#0
7960 SUBS R4,R4,R2
7970 RSBMI R4,R4,#0
7980 CMP R3,#23
7990 CMPLT R4,#23
8000 MOVLT R3,#1
8010 STRLT R3,end
8020 LDR R6,[R0,#16]
8030 LDR R3,bullets
8040 ADD R4,R3,#128*16
8050 MOV R7,#16
8060.checkhitboss2 LDR R5,[R3]
8070 LDR R8,[R3,#4]
8080 RSB R5,R7,R5,LSR #8
8090 RSB R8,R7,R8,LSR #8
8100 SUBS R5,R5,R1
8110 RSBMI R5,R5,#0
8120 SUBS R8,R8,R2
8130 RSBMI R8,R8,#0
8140 CMP R5,#15
8150 CMPLT R8,#15
8160 BLLT hitboss2
8170 ADD R3,R3,#16
8180 CMP R3,R4
8190 BLE checkhitboss2
8200 STR R6,[R0,#16]
8210 LDR R3,[R0]
8220 CMP R3,#0
8230 LDMEQFD (13)!,{pc}
8240 LDR R3,[R0,#12]
8250 LDR R4,rndnos
8260 LDRB R4,[R4,R3]
8270 SUBS R3,R3,#1
8280 MOVMI R3,#1024
8290 STR R3,[R0,#12]
8300 CMP R4,#4
8310 BLLT boss2fireball
8320 LDRB R4,[R0,#2]
8330 LDRB R3,[R0,#1]
8340 SUBS R3,R3,#1
8350 MOVMI R3,#3
8360 STRB R3,[R0,#1]
8370 CMP R3,#0
8380 RSBEQ R4,R4,#1
8390 STREQB R4,[R0,#2]
8400 ADD R0,R2,R2,LSL #2
8410 ADD R0,R1,R0,LSL #6
8420 ADD R0,R0,R11
8430 LDR R3,bossspr
8440 ADD R3,R3,#27648
8450 ADD R1,R3,R4,LSL #11
8460 ADD R2,R1,#1024
8470 MOV R14,#31
8480.boss2loop LDMIA R0,{R3-R6}
8490 LDMIA R2!,{R7-R10}
8500 AND R3,R3,R7
8510 AND R4,R4,R8
8520 AND R5,R5,R9
8530 AND R6,R6,R10
8540 LDMIA R1!,{R7-R10}
8550 ORR R3,R3,R7
8560 ORR R4,R4,R8
8570 ORR R5,R5,R9
8580 ORR R6,R6,R10
8590 STMIA R0!,{R3-R6}
8600 LDMIA R0,{R3-R6}
8610 LDMIA R2!,{R7-R10}
8620 AND R3,R3,R7
8630 AND R4,R4,R8
8640 AND R5,R5,R9
8650 AND R6,R6,R10
8660 LDMIA R1!,{R7-R10}
8670 ORR R3,R3,R7
8680 ORR R4,R4,R8
8690 ORR R5,R5,R9
8700 ORR R6,R6,R10
8710 STMIA R0!,{R3-R6}
8720 ADD R0,R0,#288
8730 SUBS R14,R14,#1
8740 BPL boss2loop
8750 LDR R11,store
8760 LDR R13,store2
8770 LDMFD (13)!,{pc}
8780.boss2fireball STMFD (13)!,{14}
8790 LDR R3,fireballs
8800 MOV R4,#12*3
8810.boss2fbloop LDR R5,[R3,R4]
8820 CMP R5,#0
8830 BEQ boss2createfb
8840 SUBS R4,R4,#12
8850 BPL boss2fbloop
8860 LDMFD (13)!,{pc}
8870.boss2createfb ADD R3,R3,R4
8880 LDRB R4,[R0,#3]
8890 ADD R4,R4,#1
8900 CMP R4,#3
8910 SUBGT R4,R4,#4
8920 STR R4,[R3,#8]
8930 CMP R4,#1
8940 ADDEQ R5,R1,#32
8950 ADDEQ R6,R2,#8
8960 CMP R4,#3
8970 MOVEQ R5,R1
8980 ADDEQ R6,R2,#8
8990 CMP R4,#2
9000 ADDEQ R5,R1,#8
9010 ADDEQ R6,R2,#32
9020 CMP R4,#0
9030 ADDEQ R5,R1,#8
9040 MOVEQ R6,R2
9050 STR R5,[R3]
9060 STR R6,[R3,#4]
9070 LDMFD (13)!,{pc}
9080.hitboss3 STMFD (13)!,{14}
9090 LDR R8,[R3]
9100 LDR R9,[R3,#4]
9110 MOV R8,R8,LSR #8
9120 MOV R9,R9,LSR #8
9130 BL addexpl
9140 MOV R8,#0
9150 STR R8,[R3]
9160 LDR R9,level
9170 CMP R9,#8
9180 MOVNE R9,#2
9190 MOVEQ R9,#1
9200 SUB R6,R6,R9
9210 CMP R6,#0
9220 STRLE R8,[R0]
9230 BLLE explodeboss2
9240 LDMFD (13)!,{pc}
9250.doboss3 STMFD (13)!,{14}
9260 STR R11,store
9270 STR R13,store2
9280 LDR R1,xpos
9290 LDR R2,ypos
9300 LDR R3,xdis
9310 LDR R4,ydis
9320 ADD R3,R3,R1,LSL #4
9330 ADD R4,R4,R2,LSL #4
9340 LDR R1,[R0,#4]
9350 LDR R2,[R0,#8]
9360 LDRB R5,[R0,#3]
9370 CMP R5,#1
9380 SUBEQ R1,R1,#4
9390 CMPEQ R1,#16
9400 MOVEQ R5,#0
9410 CMP R5,#0
9420 ADDEQ R1,R1,#4
9430 CMPEQ R1,#208
9440 MOVEQ R5,#1
9450 STR R1,[R0,#4]
9460 STR R2,[R0,#8]
9470 STRB R5,[R0,#3]
9480 SUB R3,R3,#8
9490 SUB R4,R4,#8
9500 SUBS R3,R3,R1
9510 RSBMI R3,R3,#0
9520 SUBS R4,R4,R2
9530 RSBMI R4,R4,#0
9540 CMP R3,#23
9550 CMPLT R4,#23
9560 MOVLT R3,#1
9570 STRLT R3,end
9580 LDR R6,[R0,#16]
9590 LDR R3,bullets
9600 ADD R4,R3,#128*16
9610 MOV R7,#16
9620.checkhitboss3 LDR R5,[R3]
9630 LDR R8,[R3,#4]
9640 RSB R5,R7,R5,LSR #8
9650 RSB R8,R7,R8,LSR #8
9660 SUBS R5,R5,R1
9670 RSBMI R5,R5,#0
9680 SUBS R8,R8,R2
9690 RSBMI R8,R8,#0
9700 CMP R5,#15
9710 CMPLT R8,#15
9720 BLLT hitboss3
9730 ADD R3,R3,#16
9740 CMP R3,R4
9750 BLE checkhitboss3
9760 STR R6,[R0,#16]
9770 LDR R3,[R0]
9780 CMP R3,#0
9790 LDMEQFD (13)!,{pc}
9800 LDR R3,[R0,#12]
9810 LDR R4,rndnos
9820 LDRB R4,[R4,R3]
9830 SUBS R3,R3,#1
9840 MOVMI R3,#1024
9850 STR R3,[R0,#12]
9860 CMP R4,#6
9870 BLLT boss3fireball
9880 LDRB R4,[R0,#2]
9890 LDRB R3,[R0,#1]
9900 SUBS R3,R3,#1
9910 MOVMI R3,#3
9920 STRB R3,[R0,#1]
9930 CMP R3,#0
9940 RSBEQ R4,R4,#1
9950 STREQB R4,[R0,#2]
9960 ADD R0,R2,R2,LSL #2
9970 ADD R0,R1,R0,LSL #6
9980 ADD R0,R0,R11
9990 LDR R3,bossspr
10000 ADD R1,R3,R4,LSL #11
10010 ADD R2,R1,#1024
10020 MOV R14,#31
10030.boss3loop LDMIA R0,{R3-R6}
10040 LDMIA R2!,{R7-R10}
10050 AND R3,R3,R7
10060 AND R4,R4,R8
10070 AND R5,R5,R9
10080 AND R6,R6,R10
10090 LDMIA R1!,{R7-R10}
10100 ORR R3,R3,R7
10110 ORR R4,R4,R8
10120 ORR R5,R5,R9
10130 ORR R6,R6,R10
10140 STMIA R0!,{R3-R6}
10150 LDMIA R0,{R3-R6}
10160 LDMIA R2!,{R7-R10}
10170 AND R3,R3,R7
10180 AND R4,R4,R8
10190 AND R5,R5,R9
10200 AND R6,R6,R10
10210 LDMIA R1!,{R7-R10}
10220 ORR R3,R3,R7
10230 ORR R4,R4,R8
10240 ORR R5,R5,R9
10250 ORR R6,R6,R10
10260 STMIA R0!,{R3-R6}
10270 ADD R0,R0,#288
10280 SUBS R14,R14,#1
10290 BPL boss3loop
10300 LDR R11,store
10310 LDR R13,store2
10320 LDMFD (13)!,{pc}
10330.boss3fireball STMFD (13)!,{14}
10340 LDR R3,fireballs
10350 MOV R4,#12*3
10360.boss3fbloop LDR R5,[R3,R4]
10370 CMP R5,#0
10380 BEQ boss3createfb
10390 SUBS R4,R4,#12
10400 BPL boss3fbloop
10410 LDMFD (13)!,{pc}
10420.boss3createfb ADD R3,R3,R4
10430 MOV R4,#0
10440 STR R4,[R3,#8]
10450 ADD R5,R1,#8
10460 STR R5,[R3]
10470 STR R2,[R3,#4]
10480 LDMFD (13)!,{pc}
10490.dobullets STMFD (13)!,{14}
10500 LDR R0,firedirecs
10510 LDR R1,fireseed
10520 LDR R2,swaydelay
10530 SUBS R2,R2,#1
10540 MOVMI R2,#3
10550 SUBMIS R1,R1,#8
10560 MOVMI R1,#9*8
10570 STR R1,fireseed
10580 STR R2,swaydelay
10590 LDR R0,bullets
10600 ADD R12,R0,#128*16
10610 LDR R9,colscreen
10620 MOV R10,#255
10630.bulletsloop LDR R1,[R0]
10640 CMP R1,#0
10650 BEQ skipbullet
10660 LDR R2,[R0,#4]
10670 LDR R3,[R0,#8]
10680 LDR R4,[R0,#12]
10690 ADD R1,R1,R3
10700 ADD R2,R2,R4
10710 MOV R6,R1,LSR #8
10720 MOV R7,R2,LSR #8
10730 ADD R8,R7,R7,LSL #2
10740 ADD R8,R6,R8,LSL #6
10750 MOV R5,R8,LSR #2
10760 LDR R5,[R9,R5,LSL #2]
10770 CMP R5,#12
10780 MOVEQ R6,R3
10790 RSBEQ R3,R4,#0
10800 RSBEQ R4,R6,#0
10810 STREQ R3,[R0,#8]
10820 STREQ R4,[R0,#12]
10830 BEQ skipbullet
10840 CMP R5,#13
10850 MOVEQ R6,R3
10860 MOVEQ R3,R4
10870 MOVEQ R4,R6
10880 STREQ R3,[R0,#8]
10890 STREQ R4,[R0,#12]
10900 BEQ skipbullet
10910 CMP R5,#1
10920 MOVEQ R1,#0
10930 STRNEB R10,[R11,R8]
10940 STR R1,[R0]
10950 STR R2,[R0,#4]
10960 LDR R1,droids
10970 ADD R2,R1,#60
10980.checkshotdr LDRB R3,[R1]
10990 CMP R3,#0
11000 BEQ skipchshdr
11010 LDRB R4,[R1,#2]
11020 ADD R3,R4,R3,LSL #4
11030 ADD R3,R3,#8
11040 LDRB R4,[R1,#1]
11050 LDRB R5,[R1,#3]
11060 ADD R4,R5,R4,LSL #4
11070 ADD R4,R4,#8
11080 SUBS R3,R3,R6
11090 RSBMI R3,R3,#0
11100 SUBS R4,R4,R7
11110 RSBMI R4,R4,#0
11120 CMP R3,#7
11130 CMPLT R4,#7
11140 MOVLT R5,#0
11150 STRLT R5,[R0]
11160 BLLT hitdroid
11170.skipchshdr ADD R1,R1,#12
11180 CMP R1,R2
11190 BLT checkshotdr
11200.skipbullet ADD R0,R0,#16
11210 CMP R0,R12
11220 BLT bulletsloop
11230 LDMFD (13)!,{pc}
11240.hitdroid STMFD (13)!,{14}
11250 LDR R3,stack
11260 STMIA R3,{R0-R3}
11270 MOV R0,#5
11280 LDR R1,volume
11290 LDRB R1,[R1,#1]
11300 MOV R1,R1,LSR #4
11310 RSB R1,R1,#0
11320 MOV R2,#5120
11330 MOV R3,#1
11340 SWI &40189
11350 LDR R3,stack
11360 LDMIA R3,{R0-R3}
11370 MOV R8,R6
11380 MOV R9,R7
11390 BL addexpl
11400 LDR R9,colscreen
11410 LDRB R3,[R1,#11]
11420 SUBS R3,R3,#1
11430 STRB R3,[R1,#11]
11440 BLMI killeddroid
11450 LDMFD (13)!,{pc}
11460.addexpl STMFD (13)!,{14}
11470 LDR R14,stack
11480 STMIA R14!,{R3-R4}
11490 LDR R3,explosions
11500 LDR R4,explosionseed
11510 SUBS R4,R4,#3
11520 MOVMI R4,#27
11530 STR R4,explosionseed
11540 ADD R3,R3,R4
11550 SUB R8,R8,#8
11560 SUB R9,R9,#8
11570 MOV R8,R8,LSR #2
11580 STRB R8,[R3]
11590 STRB R9,[R3,#1]
11600 MOV R8,#0
11610 STRB R8,[R3,#2]
11620 LDR R14,stack
11630 LDMIA R14!,{R3-R4}
11640 LDMFD (13)!,{pc}
11650.showingtape EQUD 0
11660.killeddroid STMFD (13)!,{14}
11670 LDR R3,stack
11680 STMIA R3,{R4-R8}
11690 STRB R5,[R1]
11700 LDR R4,deaths
11710 MOV R5,#64*8
11720 LDR R8,ShugPos
11730.killdrloop LDR R6,[R4,R5]
11740 CMP R6,R1
11750 ADDEQ R6,R4,R5
11760 LDREQ R7,[R6,#4]
11770 BLEQ wipedeath
11780 SUBS R5,R5,#8
11790 BPL killdrloop
11800 LDR R4,deaths
11810 MOV R5,#64*8
11820 MOV R7,#0
11830.stilldeadloop LDR R6,[R4,R5]
11840 CMP R6,#0
11850 MOVNE R7,#1
11860 SUBS R5,R5,#8
11870 BPL stilldeadloop
11880 STR R7,dead
11890 LDMFD (13)!,{pc}
11900.wipedeath STMFD (13)!,{14}
11910 CMP R8,R7
11920 MOVLE R7,#0
11930 STRLE R7,[R6]
11940 STRLE R7,[R6,#4]
11950 LDMFD (13)!,{pc}
11960.doclock STMFD (13)!,{14}
11970 LDR R0,clockxpos
11980 LDR R1,clockypos
11990 LDR R2,sin
12000 LDR R3,cos
12010 LDR R4,ShugPos
12020 LDR R2,[R2,R4,LSL #1]
12030 LDR R3,[R3,R4,LSL #1]
12040 MOV R9,#0
12050 MOV R10,#320
12060 MOV R12,#10
12070.clockloop ADD R0,R0,R2
12080 ADD R1,R1,R3
12090 MOV R5,R0,LSR #8
12100 MOV R6,R1,LSR #8
12110 MLA R5,R10,R6,R5
12120 ADD R5,R5,R11
12130 STRB R9,[R5]
12140 SUBS R12,R12,#1
12150 BPL clockloop
12160 LDMFD (13)!,{pc}
12170.dodroids STMFD (13)!,{14}
12180 LDR R0,droids
12190 ADD R1,R0,#60
12200 MOV R12,#320
12210.droidloop LDRB R2,[R0]
12220 CMP R2,#0
12230 BEQ skipdroid
12240 LDRB R2,[R0,#7]
12250 LDRB R3,[R0,#6]
12260 SUBS R2,R2,#1
12270 MOVMI R2,#3
12280 RSBMI R3,R3,#1
12290 STRB R2,[R0,#7]
12300 STRB R3,[R0,#6]
12310 LDR R9,droidspr
12320 LDR R10,droidmask
12330 CMP R3,#1
12340 ADDEQ R9,R9,#256
12350 ADDEQ R10,R10,#256
12360 LDRB R4,[R0,#2]
12370 LDRB R5,[R0,#3]
12380 LDRB R6,[R0,#5]
12390 CMP R6,#1
12400 SUBEQ R5,R5,#2
12410 CMP R6,#3
12420 ADDEQ R5,R5,#2
12430 CMP R6,#2
12440 ADDEQ R4,R4,#2
12450 CMP R6,#4
12460 SUBEQ R4,R4,#2
12470 LDRB R2,[R0]
12480 LDRB R3,[R0,#1]
12490 CMP R4,#0
12500 SUBLT R2,R2,#1
12510 MOVLT R4,#14
12520 BLLT droidcol
12530 CMP R4,#16
12540 ADDEQ R2,R2,#1
12550 MOVEQ R4,#0
12560 CMP R5,#0
12570 SUBLT R3,R3,#1
12580 MOVLT R5,#14
12590 BLLT droidcol
12600 CMP R5,#16
12610 ADDEQ R3,R3,#1
12620 MOVEQ R5,#0
12630 CMP R4,#2
12640 ADDEQ R2,R2,#1
12650 BLEQ droidcol
12660 CMP R4,#2
12670 SUBEQ R2,R2,#1
12680 CMP R5,#2
12690 ADDEQ R3,R3,#1
12700 BLEQ droidcol
12710 CMP R5,#2
12720 SUBEQ R3,R3,#1
12730 CMP R6,#0
12740 BEQ dontupdate
12750 STRB R2,[R0]
12760 STRB R3,[R0,#1]
12770 STRB R4,[R0,#2]
12780 STRB R5,[R0,#3]
12790.dontupdate ADD R2,R4,R2,LSL #4
12800 ADD R3,R5,R3,LSL #4
12810 LDR R4,xpos
12820 LDR R5,ypos
12830 LDR R6,xdis
12840 LDR R8,ydis
12850 ADD R4,R6,R4,LSL #4
12860 ADD R5,R8,R5,LSL #4
12870 SUBS R4,R4,R2
12880 RSBMI R4,R4,#0
12890 SUBS R5,R5,R3
12900 RSBMI R5,R5,#0
12910 CMP R4,#14
12920 CMPLT R5,#14
12930 BLLT adddeath
12940 ADD R3,R3,R3,LSL #2
12950 ADD R2,R2,R3,LSL #6
12960 ADD R2,R2,R11
12970 ADD R8,R9,#256
12980.droidplotloop MOV R6,#15
12990.droidhorloop LDRB R3,[R2]
13000 LDRB R5,[R10]
13010 AND R3,R3,R5
13020 LDRB R5,[R9]
13030 ORR R3,R3,R5
13040 STRB R3,[R2]
13050 ADD R2,R2,#1
13060 ADD R9,R9,#1
13070 ADD R10,R10,#1
13080 SUBS R6,R6,#1
13090 BPL droidhorloop
13100 ADD R2,R2,#304
13110 CMP R9,R8
13120 BLT droidplotloop
13130.skipdroid ADD R0,R0,#12
13140 CMP R0,R1
13150 BLT droidloop
13160 LDMFD (13)!,{pc}
13170.NorSprites EQUD NorSprites%
13180.EasSprites EQUD EasSprites%
13190.SouSprites EQUD SouSprites%
13200.WesSprites EQUD WesSprites%
13210.NorMasks EQUD NorMasks%
13220.EasMasks EQUD EasMasks%
13230.SouMasks EQUD SouMasks%
13240.WesMasks EQUD WesMasks%
13250.Shuggy EQUD Shuggy%
13260.screen EQUD screen%
13270.colscreen EQUD colscreen%
13280.clockval EQUD clockval%
13290.zeroclock EQUD zeroclock%
13300.scenery EQUD scenery%
13310.map EQUD map%
13320.droids EQUD droids%
13330.droidspr EQUD droidspr%
13340.droidmask EQUD droidmask%
13350.volume EQUD volume%
13360.colscenery EQUD colscenery%
13370.doorspr EQUD doorspr%
13380.bossspr EQUD bossspr%
13390.bossdata EQUD bossdata%
13400.rndnos EQUD rndnos%
13410.bullets EQUD bullets%
13420.button1 EQUD button1%
13430.button2 EQUD button2%
13440.button3 EQUD button3%
13450.button4 EQUD button4%
13460.button5 EQUD button5%
13470.exitspr EQUD exitspr%
13480.firedirecs EQUD firedirecs%
13490.deaths EQUD deaths%
13500.stack EQUD stack%
13510.fireballs EQUD fireballs%
13520.fireballspr EQUD fireballspr%
13530.explosion EQUD explosion%
13540.explosions EQUD explosions%
13550.sin EQUD sin%
13560.cos EQUD cos%
13570.hires EQUD hires%
13580.base EQUD 0
13590.scrbank EQUD 0
13600.buttonclear EQUD (50*20*6)-6
13610.explosionseed EQUD 0
13620.fireballseed EQUD 96
13630.fireseed EQUD 9*8
13640.slipsize EQUD 50*20*6
13650.bulletchan EQUD 7
13660.bulsounddel EQUD 3
13670.showpass EQUD 0
13680.bulletseed EQUD 0
13690.flickshug EQUD 1
13700.level EQUD 0
13710.ShugPos EQUD 0
13720.Slipno EQUD 0
13730.cdslips EQUD 0
13740.exitpos EQUD 0
13750.exitstep EQUD 0
13760.dead EQUD 0
13770.flicker EQUD 0
13780.firedelay EQUD 3
13790.swaydelay EQUD 3
13800.door1pos EQUD 0
13810.door2pos EQUD 0
13820.door3pos EQUD 0
13830.door4pos EQUD 0
13840.door5pos EQUD 0
13850.door1step EQUD 0
13860.door2step EQUD 0
13870.door3step EQUD 0
13880.door4step EQUD 0
13890.door5step EQUD 0
13900.direction EQUD 3
13910.step EQUD 0
13920.stepcount EQUD 7
13930.clockxpos EQUD 305<<8
13940.clockypos EQUD 16<<8
13950.levelskip EQUD 0
13960.store EQUD 0
13970.store2 EQUD 0
13980.adddeath STMFD (13)!,{14}
13990 MOV R4,#1
14000 STR R4,dead
14010 LDR R4,deaths
14020 MOV R5,#64*8
14030.adddeathloop LDR R6,[R4,R5]
14040 CMP R6,#0
14050 ADDEQ R4,R4,R5
14060 STREQ R0,[R4]
14070 LDREQ R5,ShugPos
14080 STREQ R5,[R4,#4]
14090 LDMEQFD (13)!,{pc}
14100 SUBS R5,R5,#8
14110 BPL adddeathloop
14120 MOV R4,#1
14130 STR R4,end
14140 LDMFD (13)!,{pc}
14150.droidcol STMFD (13)!,{14}
14160 LDR R8,map
14170 MOV R7,#18
14180 MLA R7,R3,R7,R2
14190 LDRB R7,[R8,R7]
14200 CMP R7,#0
14210 LDMEQFD (13)!,{pc}
14220 CMP R7,#7
14230 LDMEQFD (13)!,{pc}
14240 CMP R7,#8
14250 LDMEQFD (13)!,{pc}
14260 CMP R7,#9
14270 LDMEQFD (13)!,{pc}
14280 CMP R7,#15
14290 LDMEQFD (13)!,{pc}
14300 CMP R7,#16
14310 LDMEQFD (13)!,{pc}
14320 LDRB R7,[R0,#4]
14330 CMP R7,#2
14340 RSBEQ R6,R6,#4
14350 STREQB R6,[R0,#5]
14360 CMP R7,#3
14370 RSBEQ R6,R6,#6
14380 STREQB R6,[R0,#5]
14390 CMP R7,#4
14400 SUBEQ R6,R6,#1
14410 STREQB R6,[R0,#5]
14420 CMP R7,#5
14430 ADDEQ R6,R6,#1
14440 STREQB R6,[R0,#5]
14450 CMP R6,#0
14460 MOVEQ R6,#4
14470 STREQB R6,[R0,#5]
14480 CMP R6,#5
14490 MOVEQ R6,#1
14500 STREQB R6,[R0,#5]
14510 MOV R6,#0
14520 LDMFD (13)!,{pc}
14530.end EQUD 0
14540.checkcol STMFD (13)!,{14}
14550 LDR R7,ypos
14560 LDR R8,ydis
14570 ADD R8,R8,R7,LSL #4
14580 LDR R6,xpos
14590 LDR R7,xdis
14600 ADD R7,R7,R6,LSL #4
14610 LDR R0,Shuggy
14620 LDR R1,ShugPos
14630 ADD R0,R0,R1
14640 MOV R10,#9
14650 LDR R12,slipsize
14660.checkcolloop LDRB R1,[R0]
14670 LDRB R2,[R0,#1]
14680 LDRB R3,[R0,#2]
14690 LDRB R4,[R0,#3]
14700 CMP R1,#20
14710 LDMEQFD (13)!,{pc}
14720 ADD R1,R3,R1,LSL #4
14730 ADD R2,R4,R2,LSL #4
14740 SUBS R1,R1,R7
14750 RSBLT R1,R1,#0
14760 SUBS R2,R2,R8
14770 RSBLT R2,R2,#0
14780 CMP R1,#0
14790 CMPEQ R2,#0
14800 BEQ skipcolcheck
14810 CMP R1,#12
14820 CMPLE R2,#12
14830 MOVLE R3,#1
14840 STRLE R3,end
14850.skipcolcheck ADD R0,R0,R12
14860 SUBS R10,R10,#1
14870 BPL checkcolloop
14880 LDMFD (13)!,{pc}
14890.doexit STMFD (13)!,{14}
14900 LDR R0,exitstep
14910 SUBS R0,R0,#1
14920 MOVMI R0,#9
14930 STR R0,exitstep
14940 CMP R0,#4
14950 LDMGTFD (13)!,{pc}
14960 LDR R0,exitpos
14970 ADD R0,R0,R11
14980 LDR R1,exitspr
14990 ADD R2,R1,#256
15000.exitloop LDMIA R1!,{R3-R6}
15010 STMIA R0,{R3-R6}
15020 ADD R0,R0,#320
15030 CMP R1,R2
15040 BLT exitloop
15050 LDMFD (13)!,{pc}
15060.dodoors STMFD (13)!,{14}
15070 LDR R3,doorspr
15080 LDR R12,ShugPos
15090 LDR R0,button1
15100 LDR R0,[R0,R12]
15110 LDR R1,door1pos
15120 LDR R2,door1step
15130 BL doadoor
15140 STR R2,door1step
15150 LDR R0,button2
15160 LDR R0,[R0,R12]
15170 LDR R1,door2pos
15180 LDR R2,door2step
15190 BL doadoor
15200 STR R2,door2step
15210 LDR R0,button3
15220 LDR R0,[R0,R12]
15230 LDR R1,door3pos
15240 LDR R2,door3step
15250 BL doadoor
15260 STR R2,door3step
15270 LDR R0,button4
15280 LDR R0,[R0,R12]
15290 LDR R1,door4pos
15300 LDR R2,door4step
15310 BL doadoor
15320 STR R2,door4step
15330 LDR R0,button5
15340 LDR R0,[R0,R12]
15350 LDR R1,door5pos
15360 LDR R2,door5step
15370 BL doadoor
15380 STR R2,door5step
15390 LDMFD (13)!,{pc}
15400.xpos EQUD 1
15410.ypos EQUD 1
15420.xdis EQUD 0
15430.ydis EQUD 0
15440.doadoor STMFD (13)!,{14}
15450 CMP R1,#0
15460 LDMEQFD (13)!,{pc}
15470 CMP R0,#1
15480 CMPLT R2,#7
15490 ADDLT R2,R2,#1
15500 CMP R2,#0
15510 LDMEQFD (13)!,{pc}
15520 CMP R0,#0
15530 CMPGT R2,#0
15540 SUBGT R2,R2,#1
15550 CMP R2,#7
15560 BLEQ cleardoor
15570 CMP R2,#6
15580 BLEQ soliddoor
15590 ADD R5,R3,R2,LSL #8
15600 ADD R6,R5,#256
15610 ADD R1,R1,R11
15620.doorloop LDMIA R5!,{R7-R10}
15630 STMIA R1,{R7-R10}
15640 ADD R1,R1,#320
15650 CMP R5,R6
15660 BLT doorloop
15670 CMP R2,#4
15680 MOVEQ R0,#6
15690 LDREQ R1,volume
15700 LDREQB R1,[R1,#1]
15710 MOVEQ R1,R1,LSR #2
15720 RSBEQ R1,R1,#0
15730 MOVEQ R2,#10240
15740 MOVEQ R3,#0
15750 SWIEQ &40189
15760 MOVEQ R2,#4
15770 LDREQ R3,doorspr
15780 LDMFD (13)!,{pc}
15790.cleardoor STMFD (13)!,{14}
15800 LDR R5,colscreen
15810 ADD R5,R5,R1
15820 MOV R6,#7
15830 MOV R7,#0
15840 MOV R8,#0
15850 MOV R9,#0
15860 MOV R10,#0
15870.clearloop STMIA R5,{R7-R10}
15880 ADD R5,R5,#320
15890 SUBS R6,R6,#1
15900 BPL clearloop
15910 LDMFD (13)!,{pc}
15920.soliddoor STMFD (13)!,{14}
15930 LDR R5,colscreen
15940 ADD R5,R5,R1
15950 MOV R6,#7
15960 MOV R7,#1
15970 MOV R8,#1
15980 MOV R9,#1
15990 MOV R10,#1
16000.solidloop STMIA R5,{R7-R10}
16010 ADD R5,R5,#320
16020 SUBS R6,R6,#1
16030 BPL solidloop
16040 LDMFD (13)!,{pc}
16050.checkbuttons STMFD (13)!,{14}
16060 LDR R0,xpos
16070 LDR R1,ypos
16080 LDR R2,xdis
16090 LDR R3,ydis
16100 ADD R0,R2,R0,LSL #4
16110 ADD R1,R3,R1,LSL #4
16120 ADD R1,R1,R1,LSL #2
16130 ADD R0,R0,R1,LSL #6
16140 LDR R1,colscreen
16150 ADD R0,R1,R0
16160 MOV R1,#15
16170 MOV R2,#0
16180.checkbutloop LDMIA R0,{R7-R10}
16190 CMP R7,#2
16200 CMPNE R8,#2
16210 CMPNE R9,#2
16220 CMPNE R10,#2
16230 MOVEQ R2,#2
16240 CMP R7,#3
16250 CMPNE R8,#3
16260 CMPNE R9,#3
16270 CMPNE R10,#3
16280 MOVEQ R2,#3
16290 CMP R7,#4
16300 CMPNE R8,#4
16310 CMPNE R9,#4
16320 CMPNE R10,#4
16330 MOVEQ R2,#4
16340 CMP R7,#6
16350 CMPNE R8,#6
16360 CMPNE R9,#6
16370 CMPNE R10,#6
16380 MOVEQ R2,#6
16390 CMP R7,#7
16400 CMPNE R8,#7
16410 CMPNE R9,#7
16420 CMPNE R10,#7
16430 MOVEQ R2,#7
16440 CMP R7,#5
16450 CMPNE R8,#5
16460 CMPNE R9,#5
16470 CMPNE R10,#5
16480 LDR R7,showingtape
16490 LDR R12,dead
16500 CMPEQ R7,#0
16510 CMPEQ R12,#0
16520 MOVEQ R7,#2
16530 STREQ R7,end
16540 BLEQ fadewhite
16550 LDR R7,end
16560 CMP R7,#2
16570 LDMEQFD (13)!,{pc}
16580 ADD R0,R0,#320
16590 SUBS R1,R1,#1
16600 BPL checkbutloop
16610 MOV R3,#1
16620 MOV R4,#1
16630 MOV R5,#1
16640 MOV R9,#1
16650 MOV R10,#1
16660 CMP R2,#2
16670 MOVEQ R3,#0
16680 CMP R2,#3
16690 MOVEQ R4,#0
16700 CMP R2,#4
16710 MOVEQ R5,#0
16720 CMP R2,#6
16730 MOVEQ R9,#0
16740 CMP R2,#7
16750 MOVEQ R10,#0
16760 LDR R6,level
16770 LDR R8,bossdata
16780 CMP R6,#40
16790 LDR R7,[R8]
16800 LDREQ R7,[R8,#20]
16810 CMP R6,#24
16820 CMPNE R6,#40
16830 CMPNE R6,#8
16840 CMPNE R6,#48
16850 CMPNE R6,#32
16860 CMPEQ R7,#0
16870 MOVEQ R3,#0
16880 LDR R6,ShugPos
16890 LDR R7,button1
16900 LDR R8,[R7,R6]
16910 CMP R8,#0
16920 MOVEQ R3,#0
16930 STR R3,[R7,R6]
16940 LDR R7,button2
16950 LDR R8,[R7,R6]
16960 CMP R8,#0
16970 MOVEQ R4,#0
16980 STR R4,[R7,R6]
16990 LDR R7,button3
17000 LDR R8,[R7,R6]
17010 CMP R8,#0
17020 MOVEQ R5,#0
17030 STR R5,[R7,R6]
17040 LDR R7,button4
17050 LDR R8,[R7,R6]
17060 CMP R8,#0
17070 MOVEQ R9,#0
17080 STR R9,[R7,R6]
17090 LDR R7,button5
17100 LDR R8,[R7,R6]
17110 CMP R8,#0
17120 MOVEQ R10,#0
17130 STR R10,[R7,R6]
17140 LDMFD (13)!,{pc}
17150.addtime STMFD (13)!,{14}
17160 LDR R0,ShugPos
17170 ADD R0,R0,#6
17180 STR R0,ShugPos
17190 LDR R1,Shuggy
17200 LDR R2,Slipno
17210 LDR R3,slipsize
17220 MLA R1,R2,R3,R1
17230 ADD R1,R1,R0
17240 LDRB R2,[R1]
17250 LDRB R3,[R1,#1]
17260 LDRB R4,[R1,#2]
17270 LDRB R5,[R1,#3]
17280 LDR R6,showingtape
17290 CMP R6,#1
17300 STREQ R2,xpos
17310 STREQ R3,ypos
17320 STREQ R4,xdis
17330 STREQ R5,ydis
17340 CMPEQ R2,#69
17350 MOVEQ R2,#3
17360 STREQ R2,end
17370 LDR R1,slipsize
17380 SUB R1,R1,#1280
17390 CMP R0,R1
17400 BLGT droidadv
17410 LDR R0,ShugPos
17420 LDR R1,slipsize
17430 CMP R0,R1
17440 BLGE slip
17450 LDMFD (13)!,{pc}
17460.droidadv STMFD (13)!,{14}
17470 LDR R0,flicker
17480 SUBS R0,R0,#1
17490 MOVMI R0,#7
17500 STR R0,flicker
17510 CMP R0,#3
17520 LDMGTFD (13)!,{pc}
17530 LDR R9,droids
17540 ADD R10,R9,#60
17550.droidadvloop LDRB R2,[R9,#9]
17560 CMP R2,#0
17570 BEQ droidadvskip
17580 LDRB R3,[R9,#10]
17590 MOV R2,R2,LSL #4
17600 MOV R3,R3,LSL #4
17610 ADD R3,R3,R3,LSL #2
17620 ADD R1,R2,R3,LSL #6
17630 ADD R1,R1,R11
17640 LDR R2,droidspr
17650 LDR R3,droidmask
17660 BL generalplot1
17670.droidadvskip ADD R9,R9,#12
17680 CMP R9,R10
17690 BLT droidadvloop
17700 LDMFD (13)!,{pc}
17710.slip STMFD (13)!,{14}
17720 MOV R0,#2
17730 LDR R1,volume
17740 LDRB R1,[R1,#1]
17750 MOV R1,R1,LSR #2
17760 RSB R1,R1,#0
17770 MOV R2,#5120
17780 MOV R3,#1
17790 SWI &40189
17800 BL fadewhite
17810 MOV R0,#0
17820 STR R0,ShugPos
17830 LDR R0,Slipno
17840 ADD R0,R0,#1
17850 CMP R0,#10
17860 MOVEQ R0,#1
17870 STREQ R0,end
17880 STR R0,Slipno
17890 LDR R0,droids
17900 ADD R1,R0,#60
17910.resetdroids LDRB R2,[R0,#9]
17920 CMP R2,#0
17930 BEQ skipreset
17940 LDRB R3,[R0,#10]
17950 MOV R4,#0
17960 STRB R2,[R0,#0]
17970 STRB R3,[R0,#1]
17980 STRB R4,[R0,#2]
17990 STRB R4,[R0,#3]
18000 MOV R4,#9
18010 STRB R4,[R0,#11]
18020 MOV R4,#1
18030 LDRB R12,[R0,#4]
18040 CMP R12,#1
18050 MOVEQ R4,#0
18060 CMP R12,#3
18070 MOVEQ R4,#2
18080 STRB R4,[R0,#5]
18090.skipreset ADD R0,R0,#12
18100 CMP R0,R1
18110 BLT resetdroids
18120 LDR R0,bullets
18130 MOV R1,#128*16
18140 MOV R2,#0
18150.clearbulloop STR R2,[R0,R1]
18160 SUBS R1,R1,#16
18170 BPL clearbulloop
18180 MOV R0,#0
18190 STR R0,bulletseed
18200 MOV R4,#9*8
18210 STR R4,fireseed
18220 LDR R0,level
18230 CMP R0,#16
18240 CMPNE R0,#40
18250 BLEQ resetboss1
18260 LDR R0,level
18270 CMP R0,#24
18280 CMPNE R0,#40
18290 CMPNE R0,#48
18300 BLEQ resetboss2
18310 LDR R0,level
18320 CMP R0,#8
18330 CMPNE R0,#32
18340 BLEQ resetboss3
18350 LDR R0,fireballs
18360 MOV R1,#36
18370 MOV R2,#0
18380.clearfbs STR R2,[R0,R1]
18390 SUBS R1,R1,#12
18400 BPL clearfbs
18410 LDMFD (13)!,{pc}
18420.resetboss1 STMFD (13)!,{14}
18430 MOV R0,#1
18440 MOV R1,#5
18450 MOV R2,#0
18460 MOV R3,#512
18470 LDR R4,bossdata
18480 LDR R5,level
18490 CMP R5,#40
18500 ADDEQ R4,R4,#4
18510 STRB R0,[R4]
18520 STRB R1,[R4,#1]
18530 STRB R2,[R4,#2]
18540 STR R2,[R4,#4]
18550 STR R2,[R4,#8]
18560 STR R3,[R4,#12]
18570 LDMFD (13)!,{pc}
18580.resetboss2 STMFD (13)!,{14}
18590 MOV R0,#0
18600 MOV R1,#1
18610 MOV R2,#2
18620 MOV R3,#3
18630 MOV R4,#16
18640 MOV R5,#64
18650 MOV R6,#256
18660 LDR R7,bossdata
18670 LDR R8,level
18680 CMP R8,#40
18690 ADDEQ R7,R7,#20
18700 STRB R2,[R7]
18710 STRB R3,[R7,#1]
18720 STRB R0,[R7,#2]
18730 STRB R1,[R7,#3]
18740 STR R5,[R7,#4]
18750 STR R4,[R7,#8]
18760 STR R0,[R7,#12]
18770 STR R6,[R7,#16]
18780 LDMFD (13)!,{pc}
18790.resetboss3 STMFD (13)!,{14}
18800 MOV R0,#0
18810 MOV R1,#1
18820 MOV R2,#3
18830 MOV R3,#4
18840 MOV R4,#64
18850 MOV R5,#256
18860 MOV R6,#208
18870 LDR R7,bossdata
18880 STRB R3,[R7]
18890 STRB R2,[R7,#1]
18900 STRB R0,[R7,#2]
18910 STRB R0,[R7,#3]
18920 STR R4,[R7,#4]
18930 STR R6,[R7,#8]
18940 STR R0,[R7,#12]
18950 STR R5,[R7,#16]
18960 LDMFD (13)!,{pc}
18970.curshug STMFD (13)!,{14}
18980 LDR R9,dead
18990 LDR R7,flickshug
19000 RSB R7,R7,#1
19010 STR R7,flickshug
19020 CMP R9,#1
19030 CMPEQ R7,#1
19040 MOVEQ R9,#0
19050 LDMFD (13)!,{pc}
19060.drawshugs STMFD (13)!,{14}
19070 LDR R0,Shuggy
19080 LDR R1,ShugPos
19090 ADD R0,R0,R1
19100 LDR R12,slipsize
19110 LDR R10,Slipno
19120.sliploop LDRB R1,[R0]
19130 LDRB R2,[R0,#1]
19140 LDRB R3,[R0,#2]
19150 LDRB R4,[R0,#3]
19160 LDRB R5,[R0,#4]
19170 LDRB R6,[R0,#5]
19180 CMP R1,#20
19190 LDMEQFD (13)!,{pc}
19200 LDR R7,xpos
19210 CMP R7,R1
19220 LDR R7,ypos
19230 CMPEQ R7,R2
19240 LDR R7,xdis
19250 CMPEQ R7,R3
19260 LDR R7,ydis
19270 CMPEQ R7,R4
19280 MOV R9,#0
19290 CMP R10,#0
19300 BLEQ curshug
19310 ADD R1,R3,R1,LSL #4
19320 ADD R2,R4,R2,LSL #4
19330 CMP R6,#4
19340 BLGE firebullet
19350 CMP R9,#1
19360 LDMEQFD (13)!,{pc}
19370 LDR R3,bullets
19380 ADD R4,R3,#128*16
19390.shotyourself LDR R8,[R3]
19400 CMP R8,#0
19410 BEQ skipshotself
19420 LDR R9,[R3,#4]
19430 MOV R8,R8,LSR #8
19440 MOV R9,R9,LSR #8
19450 SUB R8,R8,#8
19460 SUB R9,R9,#8
19470 SUBS R8,R8,R1
19480 RSBMI R8,R8,#0
19490 SUBS R9,R9,R2
19500 RSBMI R9,R9,#0
19510 CMP R8,#7
19520 CMPLT R9,#7
19530 MOVLT R8,#1
19540 STRLT R8,end
19550.skipshotself ADD R3,R3,#16
19560 CMP R3,R4
19570 BLT shotyourself
19580 ADD R2,R2,R2,LSL #2
19590 ADD R1,R1,R2,LSL #6
19600 ADD R1,R1,R11
19610 CMP R5,#1
19620 LDREQ R2,NorSprites
19630 LDREQ R3,NorMasks
19640 CMP R5,#2
19650 LDREQ R2,EasSprites
19660 LDREQ R3,EasMasks
19670 CMP R5,#3
19680 LDREQ R2,SouSprites
19690 LDREQ R3,SouMasks
19700 CMP R5,#4
19710 LDREQ R2,WesSprites
19720 LDREQ R3,WesMasks
19730 ADD R2,R2,R6,LSL #8
19740 ADD R3,R3,R6,LSL #8
19750 BL generalplot1
19760 ADD R0,R0,R12
19770 SUBS R10,R10,#1
19780 BPL sliploop
19790 LDMFD (13)!,{pc}
19800.firebullet STMFD (13)!,{14}
19810 LDR R3,stack
19820 STMIA R3,{R0-R3}
19830 LDR R0,bulletchan
19840 LDR R1,bulsounddel
19850 SUBS R1,R1,#1
19860 MOVMI R1,#3
19870 STR R1,bulsounddel
19880 ADDMI R0,R0,#1
19890 CMP R0,#9
19900 MOVEQ R0,#7
19910 CMP R1,#3
19920 STREQ R0,bulletchan
19930 LDREQ R1,volume
19940 LDREQB R1,[R1,#1]
19950 MOVEQ R1,R1,LSR #4
19960 RSBEQ R1,R1,#0
19970 MOVEQ R2,#5120
19980 MOVEQ R3,#1
19990 SWIEQ &40189
20000 LDR R3,stack
20010 LDMIA R3,{R0-R3}
20020 CMP R5,#1
20030 ADDEQ R3,R1,#8
20040 MOVEQ R4,R2
20050 CMP R5,#3
20060 ADDEQ R3,R1,#8
20070 ADDEQ R4,R2,#16
20080 CMP R5,#2
20090 ADDEQ R3,R1,#16
20100 ADDEQ R4,R2,#8
20110 CMP R5,#4
20120 MOVEQ R3,R1
20130 ADDEQ R4,R2,#8
20140 LDR R6,bullets
20150 LDR R14,bulletseed
20160 ADD R14,R14,#16
20170 CMP R14,#128*16
20180 MOVEQ R14,#0
20190 STR R14,bulletseed
20200 ADD R6,R6,R14
20210 MOV R3,R3,LSL #8
20220 MOV R4,R4,LSL #8
20230 STR R3,[R6]
20240 STR R4,[R6,#4]
20250 LDR R3,firedirecs
20260 LDR R4,fireseed
20270 ADD R3,R3,R4
20280 LDR R7,[R3]
20290 LDR R14,[R3,#4]
20300 CMP R5,#2
20310 RSBLT R14,R14,#0
20320 MOVEQ R3,R7
20330 MOVEQ R7,R14
20340 MOVEQ R14,R3
20350 CMP R5,#4
20360 MOVEQ R3,R7
20370 RSBEQ R7,R14,#0
20380 MOVEQ R14,R3
20390 STR R7,[R6,#8]
20400 STR R14,[R6,#12]
20410 LDRB R5,[R0,#4]
20420 LDRB R6,[R0,#5]
20430 SUB R6,R6,#2
20440 LDMFD (13)!,{pc}
20450.drawscreen STMFD (13)!,{14}
20460 LDR R0,screen
20470 ADD R12,R11,#81920
20480.drawscrloop LDMIA R0!,{R1-R10}
20490 STMIA R11!,{R1-R10}
20500 CMP R11,R12
20510 BLT drawscrloop
20520 SUB R11,R11,#81920
20530 LDMFD (13)!,{pc}
20540.writepos STMFD (13)!,{14}
20550 LDR R0,Shuggy
20560 LDR R1,Slipno
20570 LDR R2,slipsize
20580 LDR R3,ShugPos
20590 MLA R4,R1,R2,R3
20600 ADD R0,R0,R4
20610 LDR R1,xpos
20620 LDR R2,ypos
20630 LDR R3,xdis
20640 LDR R4,ydis
20650 LDR R5,direction
20660 LDR R6,step
20670 STRB R1,[R0]
20680 STRB R2,[R0,#1]
20690 STRB R3,[R0,#2]
20700 STRB R4,[R0,#3]
20710 STRB R5,[R0,#4]
20720 STRB R6,[R0,#5]
20730 LDMFD (13)!,{pc}
20740.moveup EQUD 0
20750.moveright EQUD 0
20760.movedown EQUD 0
20770.moveleft EQUD 0
20780.prevhitwall EQUD 0
20790.colscreen EQUD colscreen%
20800.keys STMFD (13)!,{14}
20810 LDR R0,prevhitwall
20820 SUBS R0,R0,#1
20830 MOVMI R0,#0
20840 STR R0,prevhitwall
20850 LDR R3,volume
20860 LDRB R4,[R3]
20870 LDRB R5,[R3,#1]
20880 MOV R0,#121
20890 MOV R1,#113 EOR &80
20900 SWI &06
20910 CMP R1,#255
20920 SUBEQ R4,R4,#1
20930 MOV R1,#114 EOR &80
20940 SWI &06
20950 CMP R1,#255
20960 ADDEQ R4,R4,#1
20970 MOV R1,#115 EOR &80
20980 SWI &06
20990 CMP R1,#255
21000 SUBEQ R5,R5,#1
21010 MOV R1,#20 EOR &80
21020 SWI &06
21030 CMP R1,#255
21040 ADDEQ R5,R5,#1
21050 CMP R4,#0
21060 MOVLT R4,#0
21070 CMP R4,#64
21080 MOVGT R4,#64
21090 CMP R5,#0
21100 MOVLT R5,#0
21110 CMP R5,#60
21120 MOVGT R5,#60
21130 STRB R4,[R3]
21140 STRB R5,[R3,#1]
21150 MOV R0,R4
21160 SWI "XQTM_MusicVolume"
21170 LDR R3,xpos
21180 LDR R4,ypos
21190 LDR R5,xdis
21200 LDR R6,ydis
21210 LDR R7,direction
21220 LDR R8,step
21230 LDR R9,stepcount
21240 MOV R10,#0
21250 SWI &2C
21260 BLCS quit
21270 MOV R0,#121
21280 MOV R1,#183
21290 SWI &06
21300 CMP R1,#255
21310 BLEQ pause
21320 MOV R0,#121
21330 MOV R1,#225
21340 SWI &06
21350 LDR R2,moveleft
21360 CMP R1,#255
21370 CMPNE R2,#1
21380 BLEQ left
21390 MOV R0,#0
21400 STR R0,moveleft
21410 MOV R0,#121
21420 MOV R1,#194
21430 SWI &06
21440 LDR R2,moveright
21450 CMP R1,#255
21460 CMPNE R2,#1
21470 BLEQ right
21480 MOV R0,#0
21490 STR R0,moveright
21500 STR R3,xpos
21510 STR R4,ypos
21520 STR R5,xdis
21530 STR R6,ydis
21540 MOV R0,#121
21550 MOV R1,#207
21560 SWI &06
21570 LDR R2,moveup
21580 CMP R1,#255
21590 CMPNE R2,#1
21600 BLEQ up
21610 MOV R0,#0
21620 STR R0,moveup
21630 MOV R0,#121
21640 MOV R1,#232
21650 SWI &06
21660 LDR R2,movedown
21670 CMP R1,#255
21680 CMPNE R2,#1
21690 BLEQ down
21700 MOV R0,#0
21710 STR R0,movedown
21720 CMP R8,#1
21730 SUBGT R8,R8,#2
21740 CMP R8,#1
21750 SUBGT R8,R8,#2
21760 CMP R10,#1
21770 BLEQ dostep
21780 LDR R10,firedelay
21790 SUBS R10,R10,#1
21800 MOVMI R10,#0
21810 MOV R0,#121
21820 MOV R1,#201
21830 SWI &06
21840 CMP R1,#255
21850 ADDEQ R8,R8,#2
21860 CMPEQ R10,#0
21870 ADDEQ R8,R8,#2
21880 MOVEQ R10,#3
21890 STREQ R10,firedelay
21900 STR R3,xpos
21910 STR R4,ypos
21920 STR R5,xdis
21930 STR R6,ydis
21940 STR R7,direction
21950 STR R8,step
21960 STR R9,stepcount
21970 STR R10,firedelay
21980 LDMFD (13)!,{pc}
21990.dostep STMFD (13)!,{14}
22000 SUBS R9,R9,#1
22010 MOVMI R9,#7
22020 RSBMI R8,R8,#1
22030 LDMFD (13)!,{pc}
22040.hires EQUD hires%
22050.PressPspr EQUD PressP%
22060.PressPpos EQUD ((103+(hires%*87))*320)+88
22070.pause STMFD (13)!,{R0-R12,14}
22080.pauseloop MOV R1,#183
22090 SWI &6
22100 CMP R1,#255
22110 BLEQ pauseloop
22120 LDR R10,hires
22130 LDR R0,base
22140 LDR R12,scrbank
22150 CMP R12,#2
22160 CMPEQ R10,#0
22170 ADDEQ R0,R0,#81920
22180 CMP R12,#2
22190 CMPEQ R10,#1
22200 ADDEQ R0,R0,#153600
22210 LDR R1,PressPpos
22220 ADD R0,R0,R1
22230 ADD R14,R0,#320
22240 LDR R1,PressPspr
22250 LDR R2,hires
22260 MOV R11,#49
22270.PressPposlp LDR R2,hires
22280 CMP R2,#1
22290 LDMIA R1!,{R2-R10,R12}
22300 STMIA R0!,{R2-R10,R12}
22310 STMEQIA R14!,{R2-R10,R12}
22320 LDMIA R1!,{R2-R10,R12}
22330 STMIA R0!,{R2-R10,R12}
22340 STMEQIA R14!,{R2-R10,R12}
22350 LDMIA R1!,{R2-R10,R12}
22360 STMIA R0!,{R2-R10,R12}
22370 STMEQIA R14!,{R2-R10,R12}
22380 LDMIA R1!,{R2-R7}
22390 STMIA R0!,{R2-R7}
22400 STMEQIA R14!,{R2-R7}
22410 ADD R0,R0,#176
22420 ADDEQ R0,R0,#320
22430 ADD R14,R0,#320
22440 SUBS R11,R11,#1
22450 BPL PressPposlp
22460 MOV R0,#121
22470 LDR R12,levelskip
22480.pauseloop MOV R1,#226
22490 SWI &6
22500 CMP R1,#255
22510 CMPEQ R12,#1
22520 MOVEQ R3,#2
22530 STREQ R3,end
22540 LDMEQFD (13)!,{R0-R12,pc}
22550 MOV R1,#183
22560 SWI &06
22570 CMP R1,#255
22580 BLNE pauseloop
22590.pauseloop MOV R1,#183
22600 SWI &6
22610 CMP R1,#255
22620 BLEQ pauseloop
22630 LDMFD (13)!,{R0-R12,pc}
22640.RUsurespr EQUD RUsure%
22650.RUsurepos EQUD ((102+(hires%*87))*320)+70
22660.quit STMFD (13)!,{R0-R12,14}
22670 LDR R10,hires
22680 LDR R0,base
22690 LDR R12,scrbank
22700 CMP R12,#2
22710 CMPEQ R10,#0
22720 ADDEQ R0,R0,#81920
22730 CMP R12,#2
22740 CMPEQ R10,#1
22750 ADDEQ R0,R0,#153600
22760 LDR R1,RUsurepos
22770 ADD R0,R0,R1
22780 ADD R14,R0,#320
22790 LDR R1,RUsurespr
22800 LDR R2,hires
22810 MOV R11,#50
22820.plotRUsurelp LDR R2,hires
22830 CMP R2,#1
22840 LDMIA R1!,{R2-R10,R12}
22850 STMIA R0!,{R2-R10,R12}
22860 STMEQIA R14!,{R2-R10,R12}
22870 LDMIA R1!,{R2-R10,R12}
22880 STMIA R0!,{R2-R10,R12}
22890 STMEQIA R14!,{R2-R10,R12}
22900 LDMIA R1!,{R2-R10,R12}
22910 STMIA R0!,{R2-R10,R12}
22920 STMEQIA R14!,{R2-R10,R12}
22930 LDMIA R1!,{R2-R10,R12}
22940 STMIA R0!,{R2-R10,R12}
22950 STMEQIA R14!,{R2-R10,R12}
22960 LDMIA R1!,{R2-R6}
22970 STMIA R0!,{R2-R6}
22980 STMEQIA R14!,{R2-R6}
22990 ADD R0,R0,#140
23000 ADDEQ R0,R0,#320
23010 ADD R14,R0,#320
23020 SUBS R11,R11,#1
23030 BPL plotRUsurelp
23040 MOV R4,#0
23050 MOV R5,#0
23060.rusureloop MOV R0,#121
23070 MOV R1,#68 EOR &80
23080 SWI &06
23090 CMP R1,#255
23100 MOVEQ R4,#1
23110 MOV R0,#121
23120 MOV R1,#85 EOR &80
23130 SWI &06
23140 CMP R1,#255
23150 MOVEQ R5,#1
23160 CMP R4,#0
23170 CMPEQ R5,#0
23180 BEQ rusureloop
23190 CMP R4,#1
23200 MOVEQ R2,#3
23210 STREQ R2,end
23220 MOV R0,#124
23230 SWI &6
23240 LDMFD (13)!,{R0-R12,pc}
23250.left STMFD (13)!,{14}
23260 MOV R0,#121
23270 MOV R1,#0
23280 SWI &06
23290 CMP R1,#0
23300 MOVNE R7,#4
23310 SUBS R5,R5,#2
23320 MOVMI R5,#14
23330 SUBMI R3,R3,#1
23340 MOV R10,#1
23350 ADD R1,R5,R3,LSL #4
23360 ADD R2,R6,R4,LSL #4
23370 ADD R0,R2,R2,LSL #2
23380 ADD R0,R1,R0,LSL #6
23390 LDR R1,colscreen
23400 ADD R0,R1,R0
23410 MOV R0,R0,LSR #2
23420 MOV R0,R0,LSL #2
23430 LDR R1,[R0]
23440 CMP R1,#1
23450 MOVGT R1,#0
23460 LDR R2,[R0,#640]
23470 CMP R2,#1
23480 ADDLE R1,R1,R2
23490 LDR R2,[R0,#1280]
23500 CMP R2,#1
23510 ADDLE R1,R1,R2
23520 LDR R2,[R0,#1920]
23530 CMP R2,#1
23540 ADDLE R1,R1,R2
23550 ADD R0,R0,#2560
23560 LDR R2,[R0]
23570 CMP R2,#1
23580 MOVGT R2,#0
23590 LDR R12,[R0,#640]
23600 CMP R12,#1
23610 ADDLE R2,R2,R12
23620 LDR R12,[R0,#1280]
23630 CMP R12,#1
23640 ADDLE R2,R2,R12
23650 LDR R12,[R0,#1920]
23660 CMP R12,#1
23670 ADDLE R2,R2,R12
23680 CMP R1,#0
23690 CMPEQ R2,#0
23700 LDMEQFD (13)!,{pc}
23710 LDR R3,xpos
23720 LDR R4,ypos
23730 LDR R5,xdis
23740 LDR R6,ydis
23750 CMP R1,#0
23760 CMPNE R2,#0
23770 BNE hitwall
23780 MOV R0,#1
23790 CMP R1,#0
23800 STREQ R0,moveup
23810 CMP R2,#0
23820 STREQ R0,movedown
23830 LDMFD (13)!,{pc}
23840.right STMFD (13)!,{14}
23850 MOV R0,#121
23860 MOV R1,#0
23870 SWI &06
23880 CMP R1,#0
23890 MOVNE R7,#2
23900 ADD R5,R5,#2
23910 CMP R5,#16
23920 MOVEQ R5,#0
23930 ADDEQ R3,R3,#1
23940 MOV R10,#1
23950 ADD R1,R5,R3,LSL #4
23960 ADD R2,R6,R4,LSL #4
23970 ADD R0,R2,R2,LSL #2
23980 ADD R0,R1,R0,LSL #6
23990 LDR R1,colscreen
24000 ADD R0,R1,R0
24010 ADD R0,R0,#16
24020 LDR R1,[R0]
24030 CMP R1,#1
24040 MOVGT R1,#0
24050 LDR R2,[R0,#640]
24060 CMP R2,#1
24070 ADDLE R1,R1,R2
24080 LDR R2,[R0,#1280]
24090 CMP R2,#1
24100 ADDLE R1,R1,R2
24110 LDR R2,[R0,#1920]
24120 CMP R2,#1
24130 ADDLE R1,R1,R2
24140 ADD R0,R0,#2560
24150 LDR R2,[R0]
24160 CMP R2,#1
24170 MOVGT R2,#0
24180 LDR R12,[R0,#640]
24190 CMP R12,#1
24200 ADDLE R2,R2,R12
24210 LDR R12,[R0,#1280]
24220 CMP R12,#1
24230 ADDLE R2,R2,R12
24240 LDR R12,[R0,#1920]
24250 CMP R12,#1
24260 ADDLE R2,R2,R12
24270 CMP R1,#0
24280 CMPEQ R2,#0
24290 LDMEQFD (13)!,{pc}
24300 LDR R3,xpos
24310 LDR R4,ypos
24320 LDR R5,xdis
24330 LDR R6,ydis
24340 CMP R1,#0
24350 CMPNE R2,#0
24360 BNE hitwall
24370 MOV R0,#1
24380 CMP R1,#0
24390 STREQ R0,moveup
24400 CMP R2,#0
24410 STREQ R0,movedown
24420 LDMFD (13)!,{pc}
24430.up STMFD (13)!,{14}
24440 MOV R0,#121
24450 MOV R1,#0
24460 SWI &06
24470 CMP R1,#0
24480 MOVNE R7,#1
24490 SUBS R6,R6,#2
24500 MOVMI R6,#14
24510 SUBMI R4,R4,#1
24520 MOV R10,#1
24530 ADD R1,R5,R3,LSL #4
24540 ADD R2,R6,R4,LSL #4
24550 ADD R0,R2,R2,LSL #2
24560 ADD R0,R1,R0,LSL #6
24570 LDR R1,colscreen
24580 ADD R0,R1,R0
24590 LDMIA R0,{R0-R2,R12}
24600 CMP R0,#1
24610 MOVGT R0,#0
24620 CMP R1,#1
24630 ADDLE R0,R0,R1
24640 CMP R2,#1
24650 MOVGT R2,#0
24660 CMP R12,#1
24670 ADDLE R2,R2,R12
24680 CMP R0,#0
24690 CMPEQ R2,#0
24700 LDMEQFD (13)!,{pc}
24710 LDR R3,xpos
24720 LDR R4,ypos
24730 LDR R5,xdis
24740 LDR R6,ydis
24750 CMP R0,#0
24760 CMPNE R2,#0
24770 BNE hitwall
24780 MOV R1,#1
24790 CMP R0,#0
24800 STREQ R1,moveleft
24810 CMP R2,#0
24820 STREQ R1,moveright
24830 LDMFD (13)!,{pc}
24840.down STMFD (13)!,{14}
24850 MOV R0,#121
24860 MOV R1,#0
24870 SWI &06
24880 CMP R1,#0
24890 MOVNE R7,#3
24900 ADD R6,R6,#2
24910 CMP R6,#16
24920 MOVEQ R6,#0
24930 ADDEQ R4,R4,#1
24940 MOV R10,#1
24950 ADD R1,R5,R3,LSL #4
24960 ADD R2,R6,R4,LSL #4
24970 ADD R0,R2,R2,LSL #2
24980 ADD R0,R1,R0,LSL #6
24990 LDR R1,colscreen
25000 ADD R0,R1,R0
25010 ADD R0,R0,#4800
25020 LDMIA R0,{R0-R2,R12}
25030 CMP R0,#1
25040 MOVGT R0,#0
25050 CMP R1,#1
25060 ADDLE R0,R0,R1
25070 CMP R2,#1
25080 MOVGT R2,#0
25090 CMP R12,#1
25100 ADDLE R2,R2,R12
25110 CMP R0,#0
25120 CMPEQ R2,#0
25130 LDMEQFD (13)!,{pc}
25140 LDR R3,xpos
25150 LDR R4,ypos
25160 LDR R5,xdis
25170 LDR R6,ydis
25180 CMP R0,#0
25190 CMPNE R2,#0
25200 BNE hitwall
25210 MOV R1,#1
25220 CMP R0,#0
25230 STREQ R1,moveleft
25240 CMP R2,#0
25250 STREQ R1,moveright
25260 LDMFD (13)!,{pc}
25270.volume EQUD volume%
25280.hitwall STMFD (13)!,{R0-R3}
25290 LDR R0,prevhitwall
25300 CMP R0,#0
25310 LDMGTFD (13)!,{R0-R3}
25320 LDMGTFD (13)!,{pc}
25330 MOV R0,#32
25340 STR R0,prevhitwall
25350 MOV R0,#4
25360 LDR R1,volume
25370 LDRB R1,[R1,#1]
25380 MOV R1,R1,LSR #2
25390 RSB R1,R1,#0
25400 MOV R2,#7680
25410 MOV R3,#0
25420 SWI &40189
25430 LDMFD (13)!,{R0-R3}
25440 LDMFD (13)!,{pc}
25450.generalplot1 STMFD (13)!,{14}
25460 MOV R14,#&FF
25470 STR R0,store3
25480 LDR R0,stack2
25490 STMIA R0,{R1-R13}
25500 ADD R0,R2,#256
25510.genplotloop2 MOV R9,#3
25520.genplotloop1 LDMIA R3!,{R4}
25530 AND R5,R14,R4
25540 AND R6,R14,R4,LSR #8
25550 AND R7,R14,R4,LSR #16
25560 AND R8,R14,R4,LSR #24
25570 LDRB R10,[R1]
25580 LDRB R11,[R1,#1]
25590 LDRB R12,[R1,#2]
25600 LDRB R13,[R1,#3]
25610 AND R10,R5,R10
25620 AND R11,R6,R11
25630 AND R12,R7,R12
25640 AND R13,R8,R13
25650 LDMIA R2!,{R4}
25660 AND R5,R14,R4
25670 AND R6,R14,R4,LSR #8
25680 AND R7,R14,R4,LSR #16
25690 AND R8,R14,R4,LSR #24
25700 ORR R10,R5,R10
25710 ORR R11,R6,R11
25720 ORR R12,R7,R12
25730 ORR R13,R8,R13
25740 STRB R10,[R1]
25750 STRB R11,[R1,#1]
25760 STRB R12,[R1,#2]
25770 STRB R13,[R1,#3]
25780 ADD R1,R1,#4
25790 SUBS R9,R9,#1
25800 BPL genplotloop1
25810 ADD R1,R1,#304
25820 CMP R2,R0
25830 BLT genplotloop2
25840 LDR R0,stack2
25850 LDMIA R0,{R1-R13}
25860 LDR R0,store3
25870 LDMFD (13)!,{pc}
25880.hires EQUD hires%
25890.paradox STMFD (13)!,{14}
25900 MOV R0,#2
25910 SWI "OS_ReadDynamicArea"
25920 STR R0,base2
25930 MOV R12,#640
25940 LDR R0,hires
25950 CMP R0,#0
25960 MOVEQ R9,#32
25970 MOVGT R9,#64
25980.paradoxloop MOV R0,#19
25990 SWI &6
26000 MOV R10,#9
26010.topbitloop2 MOV R14,R12
26020 LDR R0,base2
26030 ADD R11,R0,R12
26040 LDMIA R11,{R0-R7}
26050.topbitloop1 STMIA R11,{R0-R7}
26060 SUB R11,R11,#320
26070 SUBS R14,R14,#320
26080 BPL topbitloop1
26090 ADD R12,R12,#32
26100 SUBS R10,R10,#1
26110 BPL topbitloop2
26120 LDR R0,hires
26130 CMP R0,#0
26140 RSBEQ R8,R12,#81920
26150 RSBGT R8,R12,#153600
26160 MOV R10,#9
26170.lowerbitloop2 MOV R14,R12
26180 LDR R0,base2
26190 ADD R11,R0,R8
26200 LDMIA R11,{R0-R7}
26210.lowerbitloop1 STMIA R11,{R0-R7}
26220 ADD R11,R11,#320
26230 SUBS R14,R14,#320
26240 BPL lowerbitloop1
26250 ADD R8,R8,#32
26260 SUBS R10,R10,#1
26270 BPL lowerbitloop2
26280 ADD R12,R12,#960
26290 SUBS R9,R9,#1
26300 BPL paradoxloop
26310 MOV R0,#0
26320 MOV R1,#0
26330 MOV R2,#0
26340 MOV R3,#0
26350 MOV R4,#0
26360 MOV R5,#0
26370 MOV R6,#0
26380 MOV R7,#0
26390 MOV R8,#0
26400 MOV R9,#0
26410 LDR R10,base2
26420 LDR R12,hires
26430 CMP R12,#0
26440 ADDEQ R11,R10,#81920
26450 ADDGT R11,R10,#153600
26460.blackscreen STMIA R10!,{R0-R9}
26470 CMP R10,R11
26480 BLT blackscreen
26490 LDMFD (13)!,{pc}
26500.volume EQUD volume%
26510.stack2 EQUD stack%
26520.store3 EQUD 0
26530.explodeboss1 STMFD (13)!,{14}
26540 LDR R3,stack2
26550 STMIA R3,{R0-R3}
26560 MOV R0,#3
26570 LDR R1,volume
26580 LDRB R1,[R1,#1]
26590 MOV R1,R1,LSR #2
26600 RSB R1,R1,#0
26610 MOV R2,#5120
26620 MOV R3,#1
26630 SWI &40189
26640 LDR R3,stack2
26650 LDMIA R3,{R0-R3}
26660 MOV R8,#120
26670 MOV R9,#104
26680 BL addexpl
26690 MOV R8,#136
26700 MOV R9,#104
26710 BL addexpl
26720 MOV R8,#152
26730 MOV R9,#104
26740 BL addexpl
26750 MOV R8,#120
26760 MOV R9,#120
26770 BL addexpl
26780 MOV R8,#136
26790 MOV R9,#120
26800 BL addexpl
26810 MOV R8,#152
26820 MOV R9,#120
26830 BL addexpl
26840 MOV R8,#120
26850 MOV R9,#136
26860 BL addexpl
26870 MOV R8,#136
26880 MOV R9,#136
26890 BL addexpl
26900 MOV R8,#152
26910 MOV R9,#136
26920 BL addexpl
26930 LDMFD (13)!,{pc}
26940.explodeboss2 STMFD (13)!,{14}
26950 LDR R3,stack2
26960 STMIA R3,{R0-R3}
26970 MOV R0,#3
26980 LDR R1,volume
26990 LDRB R1,[R1,#1]
27000 MOV R1,R1,LSR #2
27010 RSB R1,R1,#0
27020 MOV R2,#5120
27030 MOV R3,#1
27040 SWI &40189
27050 LDR R3,stack2
27060 LDMIA R3,{R0-R3}
27070 LDR R1,[R0,#4]
27080 LDR R2,[R0,#8]
27090 ADD R8,R1,#8
27100 ADD R9,R2,#8
27110 BL addexpl
27120 ADD R8,R1,#24
27130 ADD R9,R2,#8
27140 BL addexpl
27150 ADD R8,R1,#8
27160 ADD R9,R2,#24
27170 BL addexpl
27180 ADD R8,R1,#24
27190 ADD R9,R2,#24
27200 BL addexpl
27210 LDMFD (13)!,{pc}
27220.screen2 EQUD screen%
27230.clock EQUD menusprs%+3328
27240.hires EQUD hires%
27250.clearscreen STMFD (13)!,{14}
27260 LDR R0,screen2
27270 ADD R12,R0,#81920
27280 MOV R1,#0
27290 MOV R2,#0
27300 MOV R3,#0
27310 MOV R4,#0
27320 MOV R5,#0
27330 MOV R6,#0
27340 MOV R7,#0
27350 MOV R8,#0
27360 MOV R9,#0
27370 MOV R10,#0
27380.clsloop STMIA R0!,{R1-R10}
27390 CMP R0,R12
27400 BLT clsloop
27410 LDR R0,screen2
27420 ADD R0,R0,#288
27430 LDR R1,clock
27440 ADD R2,R1,#1024
27450.writeclckloop LDMIA R1!,{R3-R10}
27460 STMIA R0,{R3-R10}
27470 ADD R0,R0,#320
27480 CMP R1,R2
27490 BLT writeclckloop
27500 LDMFD (13)!,{pc}
27510.base2 EQUD 0
27520.storeforfade EQUD 0
27530.storeforfade2 EQUD 0
27540.fadetable EQUB 1:EQUB 2:EQUB 3:EQUB 44
27550 EQUB 5:EQUB 6:EQUB 7:EQUB 56
27560 EQUB 9:EQUB 10:EQUB 11:EQUB 164
27570 EQUB 13:EQUB 14:EQUB 15:EQUB 176
27580 EQUB 17:EQUB 18:EQUB 19:EQUB 60
27590 EQUB 21:EQUB 22:EQUB 23:EQUB 60
27600 EQUB 25:EQUB 26:EQUB 27:EQUB 180
27610 EQUB 29:EQUB 30:EQUB 31:EQUB 180
27620 EQUB 33:EQUB 34:EQUB 35:EQUB 76
27630 EQUB 37:EQUB 38:EQUB 39:EQUB 88
27640 EQUB 41:EQUB 42:EQUB 43:EQUB 196
27650 EQUB 45:EQUB 46:EQUB 47:EQUB 208
27660 EQUB 49:EQUB 50:EQUB 51:EQUB 92
27670 EQUB 53:EQUB 54:EQUB 55:EQUB 92
27680 EQUB 57:EQUB 58:EQUB 59:EQUB 212
27690 EQUB 61:EQUB 62:EQUB 63:EQUB 212
27700 EQUB 65:EQUB 66:EQUB 67:EQUB 108
27710 EQUB 69:EQUB 70:EQUB 71:EQUB 120
27720 EQUB 73:EQUB 74:EQUB 75:EQUB 228
27730 EQUB 77:EQUB 78:EQUB 79:EQUB 240
27740 EQUB 81:EQUB 82:EQUB 83:EQUB 124
27750 EQUB 85:EQUB 86:EQUB 87:EQUB 124
27760 EQUB 89:EQUB 90:EQUB 91:EQUB 244
27770 EQUB 93:EQUB 94:EQUB 95:EQUB 244
27780 EQUB 97:EQUB 98:EQUB 99:EQUB 108
27790 EQUB 101:EQUB 102:EQUB 103:EQUB 120
27800 EQUB 105:EQUB 106:EQUB 107:EQUB 228
27810 EQUB 109:EQUB 110:EQUB 111:EQUB 240
27820 EQUB 113:EQUB 114:EQUB 115:EQUB 124
27830 EQUB 117:EQUB 118:EQUB 119:EQUB 124
27840 EQUB 121:EQUB 122:EQUB 123:EQUB 244
27850 EQUB 125:EQUB 126:EQUB 127:EQUB 244
27860 EQUB 129:EQUB 130:EQUB 131:EQUB 172
27870 EQUB 133:EQUB 134:EQUB 135:EQUB 184
27880 EQUB 137:EQUB 138:EQUB 139:EQUB 172
27890 EQUB 141:EQUB 142:EQUB 143:EQUB 184
27900 EQUB 145:EQUB 146:EQUB 147:EQUB 188
27910 EQUB 149:EQUB 150:EQUB 151:EQUB 188
27920 EQUB 153:EQUB 154:EQUB 155:EQUB 188
27930 EQUB 157:EQUB 158:EQUB 159:EQUB 188
27940 EQUB 161:EQUB 162:EQUB 163:EQUB 204
27950 EQUB 165:EQUB 166:EQUB 167:EQUB 216
27960 EQUB 169:EQUB 170:EQUB 171:EQUB 204
27970 EQUB 173:EQUB 174:EQUB 175:EQUB 240
27980 EQUB 177:EQUB 178:EQUB 179:EQUB 220
27990 EQUB 181:EQUB 182:EQUB 183:EQUB 220
28000 EQUB 185:EQUB 186:EQUB 187:EQUB 220
28010 EQUB 189:EQUB 190:EQUB 191:EQUB 220
28020 EQUB 193:EQUB 194:EQUB 195:EQUB 236
28030 EQUB 197:EQUB 198:EQUB 199:EQUB 252
28040 EQUB 201:EQUB 202:EQUB 203:EQUB 236
28050 EQUB 205:EQUB 206:EQUB 207:EQUB 252
28060 EQUB 209:EQUB 210:EQUB 211:EQUB 252
28070 EQUB 213:EQUB 214:EQUB 215:EQUB 252
28080 EQUB 217:EQUB 218:EQUB 219:EQUB 252
28090 EQUB 221:EQUB 222:EQUB 223:EQUB 252
28100 EQUB 225:EQUB 226:EQUB 227:EQUB 236
28110 EQUB 229:EQUB 230:EQUB 231:EQUB 248
28120 EQUB 233:EQUB 234:EQUB 235:EQUB 236
28130 EQUB 237:EQUB 238:EQUB 239:EQUB 248
28140 EQUB 241:EQUB 242:EQUB 243:EQUB 252
28150 EQUB 245:EQUB 246:EQUB 247:EQUB 252
28160 EQUB 249:EQUB 250:EQUB 251:EQUB 252
28170 EQUB 253:EQUB 254:EQUB 255:EQUB 255
28180.fadewhite STMFD (13)!,{14}
28190 STR R0,storeforfade
28200 STR R1,storeforfade2
28210 MOV R0,#2
28220 SWI "OS_ReadDynamicArea"
28230 STR R0,base2
28240 ADR R4,fadetable
28250 MOV R9,#&FF
28260 MOV R12,#15
28270.fadeloop MOV R0,#19
28280 SWI &6
28290 LDR R11,base2
28300 LDR R0,hires
28310 CMP R0,#0
28320 ADDEQ R10,R11,#163840
28330 ADDGT R10,R11,#307200
28340.pixelfade LDMIA R11,{R0-R3}
28350 AND R5,R9,R0
28360 AND R6,R9,R0,LSR #8
28370 AND R7,R9,R0,LSR #16
28380 AND R8,R9,R0,LSR #24
28390 LDRB R5,[R4,R5]
28400 LDRB R6,[R4,R6]
28410 LDRB R7,[R4,R7]
28420 LDRB R8,[R4,R8]
28430 MOV R0,R5
28440 ORR R0,R0,R6,LSL #8
28450 ORR R0,R0,R7,LSL #16
28460 ORR R0,R0,R8,LSL #24
28470 AND R5,R9,R1
28480 AND R6,R9,R1,LSR #8
28490 AND R7,R9,R1,LSR #16
28500 AND R8,R9,R1,LSR #24
28510 LDRB R5,[R4,R5]
28520 LDRB R6,[R4,R6]
28530 LDRB R7,[R4,R7]
28540 LDRB R8,[R4,R8]
28550 MOV R1,R5
28560 ORR R1,R1,R6,LSL #8
28570 ORR R1,R1,R7,LSL #16
28580 ORR R1,R1,R8,LSL #24
28590 AND R5,R9,R2
28600 AND R6,R9,R2,LSR #8
28610 AND R7,R9,R2,LSR #16
28620 AND R8,R9,R2,LSR #24
28630 LDRB R5,[R4,R5]
28640 LDRB R6,[R4,R6]
28650 LDRB R7,[R4,R7]
28660 LDRB R8,[R4,R8]
28670 MOV R2,R5
28680 ORR R2,R2,R6,LSL #8
28690 ORR R2,R2,R7,LSL #16
28700 ORR R2,R2,R8,LSL #24
28710 AND R5,R9,R3
28720 AND R6,R9,R3,LSR #8
28730 AND R7,R9,R3,LSR #16
28740 AND R8,R9,R3,LSR #24
28750 LDRB R5,[R4,R5]
28760 LDRB R6,[R4,R6]
28770 LDRB R7,[R4,R7]
28780 LDRB R8,[R4,R8]
28790 MOV R3,R5
28800 ORR R3,R3,R6,LSL #8
28810 ORR R3,R3,R7,LSL #16
28820 ORR R3,R3,R8,LSL #24
28830 STMIA R11!,{R0-R3}
28840 CMP R11,R10
28850 BLT pixelfade
28860 SUBS R12,R12,#1
28870 BPL fadeloop
28880 LDR R0,storeforfade
28890 LDR R1,storeforfade2
28900 LDMFD (13)!,{pc}
28910.digitsprs EQUD menusprs%
28920.digiclock1 EQUD menusprs%+1280
28930.clockpos EQUD (320*112)+112
28940.level2 EQUD 0
28950.passwords EQUD passwords%
28960.doshowpass STMFD (13)!,{14}
28970 MOV R0,#113
28980 MOV R1,#1
28990 SWI &6
29000 MOV R0,#2
29010 SWI "OS_ReadDynamicArea"
29020 MOV R11,R0
29030 BL drawscreen
29040 LDR R0,passwords
29050 LDR R1,level2
29060 SUB R1,R1,#1
29070 ADD R0,R0,R1,LSL #1
29080 LDR R2,clockpos
29090 ADD R2,R2,R11
29100 LDR R3,digiclock1
29110 ADD R4,R3,#64*32
29120.plotdigilp2 MOV R5,#3
29130.plotdigilp1 LDMIA R3!,{R6-R9}
29140 STMIA R2!,{R6-R9}
29150 SUBS R5,R5,#1
29160 BPL plotdigilp1
29170 ADD R2,R2,#256
29180 CMP R3,R4
29190 BLT plotdigilp2
29200 SUB R2,R2,#10240
29210 ADD R3,R2,#2560
29220 ADD R3,R3,#8
29230 LDRB R4,[R0]
29240 BL plotdigit
29250 ADD R3,R2,#2560
29260 ADD R3,R3,#36
29270 LDRB R4,[R0,#1]
29280 BL plotdigit
29290 LDR R0,hires
29300 CMP R0,#1
29310 BLEQ quickfix
29320 MOV R0,#121
29330.loopshowpass MOV R1,#226
29340 SWI &06
29350 CMP R1,#255
29360 BNE loopshowpass
29370 LDMFD (13)!,{pc}
29380.plotdigit STMFD (13)!,{14}
29390 MOV R9,#1
29400 ADD R10,R3,#12
29410 MOV R12,#0
29420.tencountloop CMP R4,#10
29430 BLT skiptencount
29440 SUB R4,R4,#10
29450 ADD R12,R12,#1
29460 B tencountloop
29470.skiptencount LDR R5,digitsprs
29480 ADD R8,R5,R12,LSL #7
29490 ADD R5,R8,#128
29500.plotdigitloop LDMIA R8!,{R6,R7}
29510 STMIA R3,{R6,R7}
29520 ADD R3,R3,#320
29530 CMP R8,R5
29540 BLT plotdigitloop
29550 CMP R9,#1
29560 MOVEQ R12,R4
29570 MOVEQ R9,#0
29580 MOVEQ R3,R10
29590 BEQ skiptencount
29600 LDMFD (13)!,{pc}
29610]
29620NEXT
29630FOR pass=0 TO 2 STEP 2
29640P%=menucode%
29650[ OPT pass
29660.digitsprs EQUD menusprs%
29670.digiclock1 EQUD menusprs%+1280
29680.anaclock1 EQUD menusprs%+3328
29690.clockdata EQUD clockdata%
29700.menuopts EQUD screen%
29710.menuoptsmask EQUD screen%+40960
29720.passwords EQUD passwords%
29730.hires EQUD hires%
29740.sin2 EQUD sin2%
29750.cos2 EQUD cos2%
29760.volume EQUD volume%
29770.store2 EQUD 0
29780.end2 EQUD 0
29790.base2 EQUD 0
29800.scrbank2 EQUD 0
29810.enterpass EQUD 0
29820.tapedelay EQUD 0
29830.choselevel EQUD 1
29840.flickonoff EQUD 0
29850.flickdelay EQUD 7
29860.lastclock EQUD 0
29870.hourmin EQUD 0
29880.changepassdel EQUD 0
29890.option EQUD 1
29900.optionypos EQUD 96
29910.cheaton EQUD 0
29920.cheat2on EQUD 0
29930 STMFD (13)!,{14}
29940 MOV R0,#15
29950 STR R0,changedigdel
29960 MOV R0,#200
29970 MOV R1,#0
29980 MOV R2,#0
29990 SWI &6
30000 MOV R0,#2
30010 SWI "OS_ReadDynamicArea"
30020 STR R0,base2
30030 MOV R12,#2
30040 STR R12,scrbank2
30050.mainloop LDR R12,scrbank2
30060 RSB R12,R12,#3
30070 MOV R0,#19
30080 SWI &6
30090 MOV R0,#113
30100 MOV R1,R12
30110 SWI &6
30120 LDR R10,hires
30130 LDR R11,base2
30140 CMP R12,#1
30150 CMPEQ R10,#0
30160 ADDEQ R11,R11,#81920
30170 CMP R12,#1
30180 CMPEQ R10,#1
30190 ADDEQ R11,R11,#153600
30200 STR R12,scrbank2
30210 BL cls
30220 BL drawclocks
30230 BL drawoption
30240 BL keys
30250 LDR R0,hires
30260 CMP R0,#1
30270 BLEQ quickfix
30280 LDR R0,end2
30290 CMP R0,#0
30300 BEQ mainloop
30310 MOV R0,#200
30320 MOV R1,#1
30330 MOV R2,#0
30340 SWI &6
30350 MOV R0,#124
30360 SWI &6
30370 LDMFD (13)!,{pc}
30380.storestack EQUD 0
30390.quickfix STMFD (13)!,{14}
30400 STR R13,storestack
30410 MOV R13,R11
30420 ADD R12,R11,#81920
30430 SUB R12,R12,#4480
30440 ADD R11,R11,#153600
30450 SUB R11,R11,#640
30460.qfloop2 ADD R14,R11,#320
30470 MOV R10,#7
30480.qfloop1 LDMIA R12!,{R0-R9}
30490 STMIA R11!,{R0-R9}
30500 STMIA R14!,{R0-R9}
30510 SUBS R10,R10,#1
30520 BPL qfloop1
30530 SUB R12,R12,#640
30540 SUB R11,R11,#960
30550 CMP R11,R13
30560 BGT qfloop2
30570 LDR R13,storestack
30580 LDMFD (13)!,{pc}
30590.drawoption STMFD (13)!,{14}
30600 LDR R0,optionypos
30610 LDR R1,option
30620 CMP R0,#96
30630 SUBNE R0,R0,#16
30640 CMN R0,#64
30650 ADDEQ R1,R1,#1
30660 MOVEQ R0,#240
30670 CMP R1,#4
30680 MOVEQ R1,#1
30690 STR R0,optionypos
30700 STR R1,option
30710 LDR R0,menuopts
30720 LDR R1,menuoptsmask
30730 LDR R2,option
30740 ADD R0,R0,R2,LSL #13
30750 ADD R1,R1,R2,LSL #13
30760 MOV R5,#0
30770 LDR R4,optionypos
30780 CMP R4,#0
30790 RSBLT R5,R4,#0
30800 MOVLT R4,#0
30810 ADD R0,R0,R5,LSL #7
30820 ADD R1,R1,R5,LSL #7
30830 CMP R4,#192
30840 SUBGT R5,R4,#192
30850 MOV R3,#96
30860 ADD R2,R4,R4,LSL #2
30870 ADD R2,R3,R2,LSL #6
30880 ADD R2,R2,R11
30890 MOV R12,#63
30900 SUB R12,R12,R5
30910.drawoptloop2 MOV R14,#7
30920.drawoptloop1 LDMIA R2,{R3-R6}
30930 LDMIA R1!,{R7-R10}
30940 AND R3,R3,R7
30950 AND R4,R4,R8
30960 AND R5,R5,R9
30970 AND R6,R6,R10
30980 LDMIA R0!,{R7-R10}
30990 ORR R3,R3,R7
31000 ORR R4,R4,R8
31010 ORR R5,R5,R9
31020 ORR R6,R6,R10
31030 STMIA R2!,{R3-R6}
31040 SUBS R14,R14,#1
31050 BPL drawoptloop1
31060 ADD R2,R2,#192
31070 SUBS R12,R12,#1
31080 BPL drawoptloop2
31090 LDMFD (13)!,{pc}
31100.drawclocks STMFD (13)!,{14}
31110 MOV R0,#0
31120 STR R0,lastclock
31130 LDR R0,clockdata
31140 ADD R1,R0,#64*20
31150.clockloop LDRB R2,[R0,#1]
31160 LDRB R3,[R0,#2]
31170 LDRB R4,[R0,#3]
31180 SUB R4,R4,#7
31190 ADD R3,R3,R4
31200 CMP R3,#0
31210 SUBLT R2,R2,#1
31220 ADDLT R3,R3,#60
31230 CMP R3,#60
31240 ADDGE R2,R2,#1
31250 SUBGE R3,R3,#60
31260 CMP R2,#0
31270 MOVEQ R2,#12
31280 CMP R2,#13
31290 MOVEQ R2,#1
31300 STRB R2,[R0,#1]
31310 STRB R3,[R0,#2]
31320 LDRB R2,[R0]
31330 CMP R2,#1
31340 BLEQ dodigiclock1
31350 LDRB R2,[R0]
31360 CMP R2,#2
31370 BLEQ doanaclock1
31380 ADD R0,R0,#20
31390 CMP R0,R1
31400 BLT clockloop
31410 LDR R12,lastclock
31420 CMP R12,#1
31430 LDMEQFD (13)!,{pc}
31440 LDR R2,enterpass
31450 CMP R2,#1
31460 STREQ R2,lastclock
31470 BEQ flicktimer
31480 LDMFD (13)!,{pc}
31490.flicktimer LDR R3,flickdelay
31500 LDR R4,flickonoff
31510 SUBS R3,R3,#1
31520 MOVMI R3,#7
31530 RSBMI R4,R4,#1
31540 STR R3,flickdelay
31550 STR R4,flickonoff
31560 B clockloop
31570.doanaclock1 STMFD (13)!,{14}
31580 LDR R2,[R0,#4]
31590 LDR R3,[R0,#8]
31600 ADD R3,R3,R3,LSL #2
31610 ADD R2,R2,R3,LSL #6
31620 ADD R2,R2,R11
31630 LDR R3,anaclock1
31640 ADD R4,R3,#32*32
31650 ADD R5,R3,#32*32
31660.plotanaloop2 MOV R6,#3
31670.plotanaloop1 LDMIA R2,{R7-R8}
31680 LDMIA R4!,{R9-R10}
31690 AND R7,R7,R9
31700 AND R8,R8,R10
31710 LDMIA R3!,{R9-R10}
31720 ORR R7,R7,R9
31730 ORR R8,R8,R10
31740 STMIA R2!,{R7-R8}
31750 SUBS R6,R6,#1
31760 BPL plotanaloop1
31770 ADD R2,R2,#288
31780 CMP R3,R5
31790 BLT plotanaloop2
31800 LDR R2,[R0,#4]
31810 LDR R3,[R0,#8]
31820 ADD R2,R2,#16
31830 ADD R3,R3,#16
31840 MOV R2,R2,LSL #8
31850 MOV R3,R3,LSL #8
31860 LDRB R4,[R0,#1]
31870 MOV R5,R4,LSL #5
31880 SUB R4,R5,R4,LSL #1
31890 LDRB R5,[R0,#2]
31900 ADD R4,R4,R5,LSR #1
31910 CMP R4,#360
31920 SUBGT R4,R4,#360
31930 STR R4,store2
31940 LDR R5,cos2
31950 LDR R5,[R5,R4,LSL #2]
31960 LDR R6,sin2
31970 LDR R4,[R6,R4,LSL #2]
31980 MOV R6,#8
31990 MOV R14,#0
32000.weehandloop MOV R7,R2,LSR #8
32010 MOV R8,R3,LSR #8
32020 ADD R8,R8,R8,LSL #2
32030 ADD R7,R7,R8,LSL #6
32040 STRB R14,[R11,R7]
32050 ADD R2,R2,R4
32060 ADD R3,R3,R5
32070 SUBS R6,R6,#1
32080 BPL weehandloop
32090 LDR R2,[R0,#4]
32100 LDR R3,[R0,#8]
32110 ADD R2,R2,#16
32120 ADD R3,R3,#16
32130 MOV R2,R2,LSL #8
32140 MOV R3,R3,LSL #8
32150 LDRB R4,[R0,#2]
32160 MOV R5,R4,LSL #3
32170 SUB R4,R5,R4,LSL #1
32180 LDR R5,cos2
32190 LDR R5,[R5,R4,LSL #2]
32200 LDR R6,sin2
32210 LDR R4,[R6,R4,LSL #2]
32220 MOV R6,#12
32230 MOV R14,#0
32240.bighandloop MOV R7,R2,LSR #8
32250 MOV R8,R3,LSR #8
32260 ADD R8,R8,R8,LSL #2
32270 ADD R7,R7,R8,LSL #6
32280 STRB R14,[R11,R7]
32290 ADD R2,R2,R4
32300 ADD R3,R3,R5
32310 SUBS R6,R6,#1
32320 BPL bighandloop
32330 LDMFD (13)!,{pc}
32340.dodigiclock1 STMFD (13)!,{14}
32350 LDR R2,[R0,#4]
32360 LDR R3,[R0,#8]
32370 ADD R3,R3,R3,LSL #2
32380 ADD R2,R2,R3,LSL #6
32390 ADD R2,R2,R11
32400 LDR R3,digiclock1
32410 ADD R4,R3,#64*32
32420.plotdigi1lp2 MOV R5,#3
32430.plotdigi1lp1 LDMIA R3!,{R6-R9}
32440 STMIA R2!,{R6-R9}
32450 SUBS R5,R5,#1
32460 BPL plotdigi1lp1
32470 ADD R2,R2,#256
32480 CMP R3,R4
32490 BLT plotdigi1lp2
32500 SUB R2,R2,#10240
32510 LDR R4,flickonoff
32520 LDR R10,hourmin
32530 LDR R12,lastclock
32540 CMP R12,#1
32550 CMPEQ R4,#0
32560 CMPEQ R10,#1
32570 BEQ skiphour
32580 ADD R3,R2,#2560
32590 ADD R3,R3,#8
32600 LDRB R4,[R0,#1]
32610 BL plotdigit
32620 LDR R4,flickonoff
32630 LDR R10,hourmin
32640 LDR R12,lastclock
32650 CMP R12,#1
32660 CMPEQ R4,#0
32670 CMPEQ R10,#2
32680 LDMEQFD (13)!,{pc}
32690.skiphour ADD R3,R2,#2560
32700 ADD R3,R3,#36
32710 LDRB R4,[R0,#2]
32720 BL plotdigit
32730 LDMFD (13)!,{pc}
32740.plotdigit STMFD (13)!,{14}
32750 MOV R9,#1
32760 ADD R10,R3,#12
32770 MOV R12,#0
32780.tencountloop CMP R4,#10
32790 BLT skiptencount
32800 SUB R4,R4,#10
32810 ADD R12,R12,#1
32820 B tencountloop
32830.skiptencount LDR R5,digitsprs
32840 ADD R8,R5,R12,LSL #7
32850 ADD R5,R8,#128
32860.plotdigitloop LDMIA R8!,{R6,R7}
32870 STMIA R3,{R6,R7}
32880 ADD R3,R3,#320
32890 CMP R8,R5
32900 BLT plotdigitloop
32910 CMP R9,#1
32920 MOVEQ R12,R4
32930 MOVEQ R9,#0
32940 MOVEQ R3,R10
32950 BEQ skiptencount
32960 LDMFD (13)!,{pc}
32970.cls STMFD (13)!,{14}
32980 MOV R0,#0
32990 MOV R1,#0
33000 MOV R2,#0
33010 MOV R3,#0
33020 MOV R4,#0
33030 MOV R5,#0
33040 MOV R6,#0
33050 MOV R7,#0
33060 MOV R8,#0
33070 MOV R9,#0
33080 ADD R10,R11,#81920
33090.clsloop STMIA R11!,{R0-R9}
33100 CMP R11,R10
33110 BLT clsloop
33120 SUB R11,R11,#81920
33130 LDMFD (13)!,{pc}
33140.cheatcode EQUD 209:EQUD 214:EQUD 162:EQUD 178
33150.cheatcode2 EQUD 195:EQUD 165:EQUD 209:EQUD 212
33160.checkcheat STMFD (13)!,{14}
33170 MOV R1,#(82 EOR &80)
33180 SWI &6
33190 CMP R1,#255
33200 LDMEQFD (13)!,{pc}
33210 MOV R1,#(83 EOR &80)
33220 SWI &6
33230 CMP R1,#255
33240 LDMEQFD (13)!,{pc}
33250 MOV R1,#(54 EOR &80)
33260 SWI &6
33270 CMP R1,#255
33280 LDMEQFD (13)!,{pc}
33290 MOV R8,#0
33300 MOV R9,#3
33310 ADR R10,cheatcode
33320.cheatloop LDR R1,[R10,R9,LSL #2]
33330 SWI &06
33340 CMP R1,#255
33350 ADDEQ R8,R8,#1
33360 SUBS R9,R9,#1
33370 BPL cheatloop
33380 CMP R8,#4
33390 MOVEQ R0,#1
33400 STREQ R0,cheaton
33410 BLEQ activatecheat
33420 MOV R0,#121
33430 MOV R8,#0
33440 MOV R9,#3
33450 ADR R10,cheatcode2
33460.cheatloop LDR R1,[R10,R9,LSL #2]
33470 SWI &06
33480 CMP R1,#255
33490 ADDEQ R8,R8,#1
33500 SUBS R9,R9,#1
33510 BPL cheatloop
33520 CMP R8,#4
33530 MOVEQ R0,#1
33540 STREQ R0,cheat2on
33550 BLEQ activatecheat
33560 MOV R0,#121
33570 LDMFD (13)!,{pc}
33580.activatecheat STMFD (13)!,{14}
33590 LDR R0,clockdata
33600 ADD R1,R0,#64*20
33610.clockloop LDRB R4,[R0,#3]
33620 MOV R2,#12
33630 MOV R3,#0
33640 SUB R4,R4,#7
33650 SUB R3,R3,R4
33660 CMP R3,#0
33670 SUBLT R2,R2,#1
33680 ADDLT R3,R3,#60
33690 CMP R3,#60
33700 ADDGE R2,R2,#1
33710 SUBGE R3,R3,#60
33720 CMP R2,#0
33730 MOVEQ R2,#12
33740 CMP R2,#13
33750 MOVEQ R2,#1
33760 STRB R2,[R0,#1]
33770 STRB R3,[R0,#2]
33780 ADD R0,R0,#20
33790 CMP R0,R1
33800 BLT clockloop
33810 LDMFD (13)!,{pc}
33820.keys STMFD (13)!,{14}
33830 LDR R3,volume
33840 LDRB R4,[R3]
33850 LDRB R5,[R3,#1]
33860 MOV R0,#121
33870 MOV R1,#113 EOR &80
33880 SWI &06
33890 CMP R1,#255
33900 MOVEQ R6,#512
33910 STREQ R6,tapedelay
33920 SUBEQ R4,R4,#1
33930 MOV R1,#114 EOR &80
33940 SWI &06
33950 CMP R1,#255
33960 MOVEQ R6,#512
33970 STREQ R6,tapedelay
33980 ADDEQ R4,R4,#1
33990 MOV R1,#115 EOR &80
34000 SWI &06
34010 CMP R1,#255
34020 MOVEQ R6,#512
34030 STREQ R6,tapedelay
34040 SUBEQ R5,R5,#1
34050 MOV R1,#20 EOR &80
34060 SWI &06
34070 CMP R1,#255
34080 MOVEQ R6,#512
34090 STREQ R6,tapedelay
34100 ADDEQ R5,R5,#1
34110 CMP R4,#0
34120 MOVLT R4,#0
34130 CMP R4,#64
34140 MOVGT R4,#64
34150 CMP R5,#0
34160 MOVLT R5,#0
34170 CMP R5,#60
34180 MOVGT R5,#60
34190 STRB R4,[R3]
34200 STRB R5,[R3,#1]
34210 MOV R0,R4
34220 SWI "XQTM_MusicVolume"
34230 LDR R0,enterpass
34240 CMP R0,#1
34250 BEQ passcode
34260 MOV R0,#121
34270 SWI &2C
34280 BLCS quit
34290 BL checkcheat
34300 MOV R0,#121
34310 LDR R3,optionypos
34320 MOV R1,#226
34330 SWI &06
34340 CMP R1,#255
34350 MOVEQ R4,#512
34360 STREQ R4,tapedelay
34370 CMPEQ R3,#96
34380 MOVEQ R3,#80
34390 STREQ R3,optionypos
34400 LDR R4,entpassdel
34410 SUBS R4,R4,#1
34420 MOVMI R4,#0
34430 STR R4,entpassdel
34440 MOV R1,#201
34450 SWI &06
34460 CMP R1,#255
34470 CMPEQ R4,#0
34480 CMPEQ R3,#96
34490 BLEQ choseoption
34500 LDMFD (13)!,{pc}
34510.hires EQUD hires%
34520.RUsurespr EQUD RUsure%
34530.RUsurepos EQUD ((102+(hires%*87))*320)+70
34540.quit STMFD (13)!,{R0-R12,14}
34550 LDR R10,hires
34560 MOV R0,#2
34570 SWI "OS_ReadDynamicArea"
34580 LDR R12,scrbank2
34590 CMP R12,#2
34600 CMPEQ R10,#0
34610 ADDEQ R0,R0,#81920
34620 CMP R12,#2
34630 CMPEQ R10,#1
34640 ADDEQ R0,R0,#153600
34650 LDR R1,RUsurepos
34660 ADD R0,R0,R1
34670 ADD R14,R0,#320
34680 LDR R1,RUsurespr
34690 LDR R2,hires
34700 MOV R11,#50
34710.plotRUsurelp LDR R2,hires
34720 CMP R2,#1
34730 LDMIA R1!,{R2-R10,R12}
34740 STMIA R0!,{R2-R10,R12}
34750 STMEQIA R14!,{R2-R10,R12}
34760 LDMIA R1!,{R2-R10,R12}
34770 STMIA R0!,{R2-R10,R12}
34780 STMEQIA R14!,{R2-R10,R12}
34790 LDMIA R1!,{R2-R10,R12}
34800 STMIA R0!,{R2-R10,R12}
34810 STMEQIA R14!,{R2-R10,R12}
34820 LDMIA R1!,{R2-R10,R12}
34830 STMIA R0!,{R2-R10,R12}
34840 STMEQIA R14!,{R2-R10,R12}
34850 LDMIA R1!,{R2-R6}
34860 STMIA R0!,{R2-R6}
34870 STMEQIA R14!,{R2-R6}
34880 ADD R0,R0,#140
34890 ADDEQ R0,R0,#320
34900 ADD R14,R0,#320
34910 SUBS R11,R11,#1
34920 BPL plotRUsurelp
34930 MOV R4,#0
34940 MOV R5,#0
34950.rusureloop MOV R0,#121
34960 MOV R1,#68 EOR &80
34970 SWI &06
34980 CMP R1,#255
34990 MOVEQ R4,#1
35000 MOV R0,#121
35010 MOV R1,#85 EOR &80
35020 SWI &06
35030 CMP R1,#255
35040 MOVEQ R5,#1
35050 CMP R4,#0
35060 CMPEQ R5,#0
35070 BEQ rusureloop
35080 CMP R4,#1
35090 MOVEQ R2,#2
35100 STREQ R2,end2
35110 MOV R0,#124
35120 SWI &6
35130 LDMFD (13)!,{R0-R12,pc}
35140.entpassdel EQUD 0
35150.changedigdel EQUD 0
35160.choseoption STMFD (13)!,{14}
35170 LDR R3,option
35180 CMP R3,#1
35190 STREQ R3,end2
35200 CMP R3,#2
35210 BLEQ quit
35220 CMP R3,#3
35230 MOVEQ R4,#1
35240 STREQ R4,enterpass
35250 STREQ R4,hourmin
35260 MOVEQ R4,#5
35270 STREQ R4,changepassdel
35280 MOVEQ R4,#15
35290 STREQ R4,entpassdel
35300 CMP R3,#4
35310 MOVEQ R4,#3
35320 STREQ R4,end2
35330 LDMFD (13)!,{pc}
35340.passcode MOV R0,#121
35350 MOV R1,#240
35360 SWI &06
35370 CMP R1,#255
35380 MOVEQ R2,#0
35390 STREQ R2,enterpass
35400 LDR R12,changepassdel
35410 CMP R12,#20
35420 SUBLT R12,R12,#1
35430 CMP R12,#0
35440 MOVLT R12,#0
35450 STR R12,changepassdel
35460 LDR R12,changedigdel
35470 SUBS R12,R12,#1
35480 MOVMI R12,#0
35490 STR R12,changedigdel
35500 LDR R3,hourmin
35510 LDR R4,clockdata
35520 ADD R4,R4,#64*20
35530 LDRB R5,[R4,R3]
35540 MOV R1,#226
35550 SWI &06
35560 CMP R1,#255
35570 MOVNE R12,#128
35580 STRNE R12,changepassdel
35590 BLEQ changedigit
35600 LDR R12,changedigdel
35610 MOV R1,#201
35620 SWI &06
35630 CMP R1,#255
35640 CMPEQ R12,#0
35650 MOVEQ R12,#14
35660 STREQ R12,changedigdel
35670 ADDEQ R3,R3,#1
35680 LDREQB R5,[R4,R3]
35690 CMPEQ R3,#3
35700 STR R3,hourmin
35710 BEQ checkpass
35720 CMP R5,#13
35730 CMPEQ R3,#1
35740 MOVEQ R5,#1
35750 CMP R5,#60
35760 CMPEQ R3,#2
35770 MOVEQ R5,#0
35780 STRB R5,[R4,R3]
35790 LDMFD (13)!,{pc}
35800.changedigit STMFD (13)!,{14}
35810 MOV R12,#7
35820 STR R12,flickdelay
35830 MOV R12,#1
35840 STR R12,flickonoff
35850 LDR R12,changepassdel
35860 CMP R12,#128
35870 MOVEQ R12,#11
35880 STREQ R12,changepassdel
35890 BEQ firsthit
35900 CMP R12,#0
35910 LDMGTFD (13)!,{pc}
35920 MOV R12,#1
35930 STR R12,changepassdel
35940.firsthit ADD R5,R5,#1
35950 LDMFD (13)!,{pc}
35960.checkpass MOV R6,#0
35970 STR R6,enterpass
35980 LDR R7,passwords
35990 ADD R8,R7,#160
36000 ADD R3,R4,#1
36010 LDRB R0,[R3]
36020 LDRB R1,[R3,#1]
36030 MOV R9,#1
36040.checkpassloop LDRB R3,[R7]
36050 LDRB R4,[R7,#1]
36060 CMP R0,R3
36070 CMPEQ R1,R4
36080 MOVEQ R2,#1
36090 STREQ R2,end2
36100 STREQ R9,choselevel
36110 ADD R9,R9,#1
36120 ADD R7,R7,#2
36130 CMP R7,R8
36140 BLT checkpassloop
36150 LDMFD (13)!,{pc}
36160]
36170NEXT
36180ENDPROC
36190
36200DEFFNstr(number%)
36210THO=0:HUN=0:TEN=0
36220REPEAT:IF number%>999 THEN number%=number%-1000:THO=THO+1
36230UNTIL number%<1000
36240REPEAT:IF number%>99 THEN number%=number%-100:HUN=HUN+1
36250UNTIL number%<100
36260REPEAT:IF number%>9 THEN number%=number%-10:TEN=TEN+1
36270UNTIL number%<10
36280IF THO=0 AND HUN=0 AND TEN=0 THEN =CHR$(48+number%)
36290IF THO=0 AND HUN=0 THEN =CHR$(48+TEN)+CHR$(48+number%)
36300IF THO=0 THEN =CHR$(48+HUN)+CHR$(48+TEN)+CHR$(48+number%)
36310=CHR$(48+THO)+CHR$(48+HUN)+CHR$(48+TEN)+CHR$(48+number%)
36320
36330
36340
36350DEFPROCerror
36360ON ERROR END
36370SYS &6,112,1:SYS &6,113,1
36380CLS:PRINTREPORT$,ERL
36390PRINT~(code%)
36400*FX 200,0
36410ENDPROC
36420
36430
�28:�49
(� �=49 � hires%=1 � �15:�13:hires%=0
�:A=�(-�):*FX 200,1
(� � �error:�
2� �:È 8
< � code% 15000,menucode% 3000
F,� NorSprites% 512*16,NorSprites2% 512*16
P EasSprites%=NorSprites%+1024
Z=SouSprites%=NorSprites%+2048:WesSprites%=NorSprites%+3072
d7NorMasks%=NorSprites%+4096:EasMasks%=NorMasks%+1024
n5SouMasks%=NorMasks%+2048:WesMasks%=NorMasks%+3072
x"EasSprites2%=NorSprites2%+1024
�ASouSprites2%=NorSprites2%+2048:WesSprites2%=NorSprites2%+3072
�;NorMasks2%=NorSprites2%+4096:EasMasks2%=NorMasks2%+1024
�9SouMasks2%=NorMasks2%+2048:WesMasks2%=NorMasks2%+3072
�E� scenery% 256*33,colscenery% 256*33,map% (18*16)+2,doorspr% 2048
�7� sin% 1005*12,cos% 1005*12,sin2% 361*4,cos2% 361*4
�I� droidspr% 512,droidmask% 512,droids% 5*12,stack% 52,bullets% 129*16
�X� Shuggy% 10*50*20*6,Shuggy2% 10*50*20*6,screen% 81920,colscreen% 81920,exitspr% 256
�L� button1% 5*50*20*6:button2%=button1%+50*20*6:button3%=button2%+50*20*6
�7button4%=button3%+50*20*6:button5%=button4%+50*20*6
�<� clockval% 4,zeroclock% 4,firedirecs% 20*8,deaths% 65*8
�clockdata%=button1%
�E� bossspr% 27648+4096,bossdata% 64,rndnos% 1024,fireballspr% 4096
�E� fireballs% 12*4,passwords% 160,explosion% 5120,explosions% 10*3
<� menusprs% 5376,volume% 2,RUsure% 180*51,PressP% 144*50
%� CL%=0 � 4:?(zeroclock%+CL%)=0:�
@� SI%=0 � 1004:!(sin%+(SI%*12))=256*�(�(360-(SI%*(0.36)))):�
"C� SI%=0 � 1004:!(cos%+(SI%*12))=(-256)*�(�(360-(SI%*(0.36)))):�
,2� SI%=0 � 360:!(sin2%+(SI%*4))=256*�(�(SI%)):�
65� SI%=0 � 360:!(cos2%+(SI%*4))=(-256)*�(�(SI%)):�
@8� "LOAD <HogDemo$Dir>.Sprites.Hog1 "+�~(NorSprites%)
J9� "LOAD <HogDemo$Dir>.Sprites.Hog2 "+�~(NorSprites2%)
T>� "LOAD <HogDemo$Dir>.Sprites.ColScenery "+�~(colscenery%)
^8� "LOAD <HogDemo$Dir>.Sprites.Scenery "+�~(scenery%)
h;� "LOAD <HogDemo$Dir>.Sprites.ColTable "+�~(passwords%)
r6� "LOAD <HogDemo$Dir>.Sprites.Doors "+�~(doorspr%)
|5� "LOAD <HogDemo$Dir>.Sprites.Exit "+�~(exitspr%)
�:� "LOAD <HogDemo$Dir>.Sprites.DroidSpr "+�~(droidspr%)
�<� "LOAD <HogDemo$Dir>.Sprites.DroidMask "+�~(droidmask%)
�=� "LOAD <HogDemo$Dir>.Sprites.FireBall "+�~(fireballspr%)
�<� "LOAD <HogDemo$Dir>.Sprites.Explosion "+�~(explosion%)
�9� "LOAD <HogDemo$Dir>.Sprites.MenuSpr "+�~(menusprs%)
�Hș "Decrunch_Decrunch",%10000,"<HogDemo$Dir>.Sprites.RUsure",RUsure%
�Hș "Decrunch_Decrunch",%10000,"<HogDemo$Dir>.Sprites.PressP",PressP%
�
�assemble
�!ș "XQTM_SoundControl",8,1,-1
�.ș "XQTM_Load","<HogDemo$Dir>.Sound.Quick"
�ș "XQTM_Start"
�!?(volume%)=60:?(volume%+1)=60
�$ș "XQTM_MusicVolume",?(volume%)
.�:� CL%=0 � 63:?(clockdata%+(CL%*20))=�(2)
C?(clockdata%+(CL%*20)+1)=�(12):?(clockdata%+(CL%*20)+2)=�(60)-1
�:CH%=�(13):� CH%<>7
& ?(clockdata%+(CL%*20)+3)=CH%
0PL%=0:�:PL%=PL%+1
: Xpos%=4*�(64):Ypos%=�(200)+8
D
� CL%>0 �
N
NE%=0
X � PCL%=0 � CL%
bF Xpos2%=!(clockdata%+(PCL%*20)+4):Ypos2%=!(clockdata%+(PCL%*20)+8)
l6 � �(Xpos2%-Xpos%)<20 � �(Ypos2%-Ypos%)<20 � NE%=1
v �
� � NE%=0 � PL%=10
��
�� PL%=10
�A!(clockdata%+(CL%*20)+4)=Xpos%:!(clockdata%+(CL%*20)+8)=Ypos%
��
�?(clockdata%+(64*20))=1
�8?(clockdata%+(64*20)+1)=12:?(clockdata%+(64*20)+2)=0
�?(clockdata%+(64*20)+3)=7
�;!(clockdata%+(64*20)+4)=128:!(clockdata%+(64*20)+8)=192
�.!(end2)=0:!(choselevel)=1:!(tapedelay)=512
�Jș "Decrunch_Decrunch",%10000,"<HogDemo$Dir>.Sprites.MenuOpts",screen%
�� menucode%
�� !(end2)=2 �
*FX 200,0
*FX 15,1
*DESKTOP
�
*LE%=!(choselevel)
4�:� clearscreen
>!(showingtape)=0
H!� FI%=0 � 9:AN=5*�(�(FI%*36))
R(!(firedirecs%+(FI%*8))=1024*�(�(AN))
\*!(firedirecs%+(FI%*8)+4)=1024*�(�(AN))
f�
p*� EX%=0 � 9:?(explosions%+(EX%*3))=0:�
z*� FI%=0 � 3:!(fireballs%+(FI%*12))=0:�
�'� DE%=0 � 64:!(deaths%+(DE%*8))=0:�
�?� DR%=0 � 4:?(droids%+(DR%*12))=0:?(droids%+(DR%*12)+9)=0:�
�C!(end)=0:!(ShugPos)=0:!(Slipno)=0:!(door1step)=0:!(door2step)=0
�D!(door3step)=0:!(door4step)=0:!(door5step)=0:!(xpos)=1:!(ypos)=1
�@!(xdis)=0:!(ydis)=0:!(direction)=3:!(dead)=0:!(bulletseed)=0
�<� "LOAD <HogDemo$Dir>.Maps.Level"+�str(LE%)+" "+�~(map%)
�?(bossdata%)=0
�!DR%=0:� B%=0 � 15:� A%=0 � 17
�;� ?(map%+(B%*18)+A%)=10 � !(door1pos)=(B%*5120)+(A%*16)
�;� ?(map%+(B%*18)+A%)=11 � !(door2pos)=(B%*5120)+(A%*16)
�;� ?(map%+(B%*18)+A%)=12 � !(door3pos)=(B%*5120)+(A%*16)
�;� ?(map%+(B%*18)+A%)=17 � !(door4pos)=(B%*5120)+(A%*16)
�;� ?(map%+(B%*18)+A%)=18 � !(door5pos)=(B%*5120)+(A%*16)
:� ?(map%+(B%*18)+A%)=14 � !(exitpos)=(B%*5120)+(A%*16)
5� ?(map%+(B%*18)+A%)>18 � ?(map%+(B%*18)+A%)<24 �
4 ?(droids%+(DR%*12))=A%:?(droids%+(DR%*12)+1)=B%
$4 ?(droids%+(DR%*12)+2)=0:?(droids%+(DR%*12)+3)=0
.H ?(droids%+(DR%*12)+4)=?(map%+(B%*18)+A%)-18:?(droids%+(DR%*12)+5)=1
88 � ?(droids%+(DR%*12)+4)=3 � ?(droids%+(DR%*12)+5)=2
B8 � ?(droids%+(DR%*12)+4)=1 � ?(droids%+(DR%*12)+5)=0
L> ?(droids%+(DR%*12)+6)=�(2)-1:?(droids%+(DR%*12)+7)=�(4)-1
VO ?(droids%+(DR%*12)+8)=3:?(droids%+(DR%*12)+9)=A%:?(droids%+(DR%*12)+10)=B%
` ?(droids%+(DR%*12)+11)=9
j ?(map%+(B%*18)+A%)=0
t DR%=DR%+1
~�
��:�
�,� RA%=0 � 1024:?(rndnos%+RA%)=�(256)-1:�
�7!(level)=LE%:!(level2)=LE%:!(levelskip)=!(cheat2on)
�*CHANNELVOICE 2 Torch
�*CHANNELVOICE 3 DRONETP
�*CHANNELVOICE 4 Kwak
�*CHANNELVOICE 5 Heifer
�*CHANNELVOICE 6 OpenDoor
�*CHANNELVOICE 7 BULLET
�*CHANNELVOICE 8 BULLET
�� startgame
�(� !(end)=2 � LE%=LE%+1:!(showpass)=1
� LE%=4 � �ending
2� !(end)=1 � ș &6,112,1:ș &6,113,1:� paradox
� !(end)=3
È™ &6,112,1:È™ &6,113,1
(
� paradox
2� �
<
F��ending
PHÈ™ "Decrunch_Decrunch",%10000,"<HogDemo$Dir>.Sprites.EndPic",screen%
Z� pass=0 � 2 � 2
dP%=Shuggy%
n[ OPT pass
x.endpiccy EQUD screen%
�.hires EQUD hires%
�.scrbank EQUD 0
�.endofend EQUD 0
�.base EQUD 0
�#.ending STMFD (13)!,{14}
� MOV R0,#200
� MOV R1,#0
� MOV R2,#0
� SWI &6
� MOV R0,#2
�+ SWI "OS_ReadDynamicArea"
� STR R0,base
� MOV R12,#2
" STR R12,scrbank
".mainloop LDR R12,scrbank
! RSB R12,R12,#3
"" STR R12,scrbank
, MOV R0,#19
6 SWI &6
@ MOV R0,#113
J MOV R1,R12
T SWI &6
^ LDR R10,hires
h LDR R11,base
r CMP R12,#1
| CMPEQ R10,#0
�' ADDEQ R11,R11,#81920
� CMP R12,#1
� CMPEQ R10,#1
�( ADDEQ R11,R11,#153600
� BL plotendpic
� SWI &2C
� MOVCS R2,#1
�$ STRCS R2,endofend
�" LDR R0,endofend
� CMP R0,#0
� BEQ mainloop
� MOV R0,#200
� MOV R1,#1
MOV R2,#0
SWI &6
MOV R0,#124
& SWI &6
0# LDMFD (13)!,{pc}
:#.plotendpic STMFD (13)!,{14}
D LDR R0,hires
N CMP R0,#1
X" BEQ hiresendpic
b" LDR R0,endpiccy
l# ADD R1,R0,#81920
v).plotendpiclp LDMIA R0!,{R2-R10,R12}
�* STMIA R11!,{R2-R10,R12}
�) LDMIA R0!,{R2-R10,R12}
�* STMIA R11!,{R2-R10,R12}
�) LDMIA R0!,{R2-R10,R12}
�* STMIA R11!,{R2-R10,R12}
�) LDMIA R0!,{R2-R10,R12}
�* STMIA R11!,{R2-R10,R12}
�) LDMIA R0!,{R2-R10,R12}
�* STMIA R11!,{R2-R10,R12}
�) LDMIA R0!,{R2-R10,R12}
�* STMIA R11!,{R2-R10,R12}
�) LDMIA R0!,{R2-R10,R12}
�* STMIA R11!,{R2-R10,R12}
) LDMIA R0!,{R2-R10,R12}
* STMIA R11!,{R2-R10,R12}
CMP R0,R1
# BLT plotendpiclp
*% SUB R11,R11,#81920
4# LDMFD (13)!,{pc}
>".hiresendpic LDR R0,endpiccy
H# ADD R1,R0,#76800
R#.plotendpiclp ADD R14,R11,#320
\) LDMIA R0!,{R2-R10,R12}
f* STMIA R11!,{R2-R10,R12}
p* STMIA R14!,{R2-R10,R12}
z) LDMIA R0!,{R2-R10,R12}
�* STMIA R11!,{R2-R10,R12}
�* STMIA R14!,{R2-R10,R12}
�) LDMIA R0!,{R2-R10,R12}
�* STMIA R11!,{R2-R10,R12}
�* STMIA R14!,{R2-R10,R12}
�) LDMIA R0!,{R2-R10,R12}
�* STMIA R11!,{R2-R10,R12}
�* STMIA R14!,{R2-R10,R12}
�) LDMIA R0!,{R2-R10,R12}
�* STMIA R11!,{R2-R10,R12}
�* STMIA R14!,{R2-R10,R12}
�) LDMIA R0!,{R2-R10,R12}
�* STMIA R11!,{R2-R10,R12}
* STMIA R14!,{R2-R10,R12}
) LDMIA R0!,{R2-R10,R12}
* STMIA R11!,{R2-R10,R12}
$* STMIA R14!,{R2-R10,R12}
.) LDMIA R0!,{R2-R10,R12}
8* STMIA R11!,{R2-R10,R12}
B* STMIA R14!,{R2-R10,R12}
L# ADD R11,R11,#320
V CMP R0,R1
`# BLT plotendpiclp
j& SUB R11,R11,#153600
t# LDMFD (13)!,{pc}
~]
��
�� ending
�*FX 15,1
�*DESKTOP
��
�
���assemble
�� pass=0 � 2 � 2
�P%=code%
�[ OPT pass
�#.NorSprites EQUD NorSprites%
�#.EasSprites EQUD EasSprites%
#.SouSprites EQUD SouSprites%
#.WesSprites EQUD WesSprites%
!.NorMasks EQUD NorMasks%
!.EasMasks EQUD EasMasks%
(!.SouMasks EQUD SouMasks%
2!.WesMasks EQUD WesMasks%
<.Shuggy EQUD Shuggy%
F.screen EQUD screen%
P".colscreen EQUD colscreen%
Z!.clockval EQUD clockval%
d".zeroclock EQUD zeroclock%
n .scenery EQUD scenery%
x#.colscenery EQUD colscenery%
�.map EQUD map%
�.droids EQUD droids%
�!.droidspr EQUD droidspr%
�".droidmask EQUD droidmask%
� .doorspr EQUD doorspr%
�.volume EQUD volume%
� .bossspr EQUD bossspr%
�!.bossdata EQUD bossdata%
�.rndnos EQUD rndnos%
� .bullets EQUD bullets%
� .button1 EQUD button1%
� .button2 EQUD button2%
� .button3 EQUD button3%
.button4 EQUD button4%
.button5 EQUD button5%
.exitspr EQUD exitspr%
"#.firedirecs EQUD firedirecs%
,.deaths EQUD deaths%
6.stack EQUD stack%
@".fireballs EQUD fireballs%
J$.fireballspr EQUD fireballspr%
T".explosion EQUD explosion%
^#.explosions EQUD explosions%
h.sin EQUD sin%
r.cos EQUD cos%
|.hires EQUD hires%
�.storestack EQUD 0
�#.quickfix STMFD (13)!,{14}
�% STR R13,storestack
� MOV R13,R11
�% ADD R12,R11,#81920
�$ SUB R12,R12,#4480
�& ADD R11,R11,#153600
�# SUB R11,R11,#640
�#.qfloop2 ADD R14,R11,#320
� MOV R10,#7
�%.qfloop1 LDMIA R12!,{R0-R9}
�% STMIA R11!,{R0-R9}
�% STMIA R14!,{R0-R9}
" SUBS R10,R10,#1
BPL qfloop1
# SUB R12,R12,#640
&# SUB R11,R11,#960
0 CMP R11,R13
: BGT qfloop2
D% LDR R13,storestack
N# LDMFD (13)!,{pc}
X".shugclear EQUD 10*50*20*6
b#.buttonclear EQUD (50*20*6)-6
l#.startgame STMFD (13)!,{14}
v MOV R0,#200
� MOV R1,#0
� MOV R2,#0
� SWI &6
�! LDR R0,button1
�! LDR R1,button2
�! LDR R2,button3
�! LDR R3,button4
�! LDR R4,button5
�% LDR R5,buttonclear
� MOV R6,#1
�!.clearbuttonlp STR R6,[R0,R5]
�! STR R6,[R1,R5]
�! STR R6,[R2,R5]
! STR R6,[R3,R5]
! STR R6,[R4,R5]
SUBS R5,R5,#6
$ BPL clearbuttonlp
*% LDR R0,showingtape
4 CMP R0,#1
>! BEQ skipclshug
H LDR R0,Shuggy
R# LDR R1,shugclear
\ MOV R2,#20
f".clearshugloop STRB R2,[R0,R1]
p SUBS R1,R1,#6
z$ BPL clearshugloop
�!.skipclshug LDR R0,bullets
�! MOV R1,#128*16
� MOV R2,#0
�!.clearbulloop STR R2,[R0,R1]
�! SUBS R1,R1,#16
�# BPL clearbulloop
� LDR R0,screen
� LDR R1,map
�" ADD R10,R1,#288
�.makescreenlp2 MOV R2,#17
�!.makescreenlp1 LDR R3,scenery
� LDRB R5,[R1]
�& ADD R3,R3,R5,LSL #8
! ADD R4,R3,#256
MOV R12,R0
$.copyscenerylp LDMIA R3!,{R5-R8}
$$ STMIA R12,{R5-R8}
.# ADD R12,R12,#320
8 CMP R3,R4
B$ BLT copyscenerylp
L ADD R0,R0,#16
V ADD R1,R1,#1
` SUBS R2,R2,#1
j$ BPL makescreenlp1
t" ADD R0,R0,#4800
~ ADD R0,R0,#32
� CMP R1,R10
�$ BLT makescreenlp2
�# LDR R0,colscreen
� LDR R1,map
�" ADD R10,R1,#288
�.makecolscrlp2 MOV R2,#17
�$.makecolscrlp1 LDR R3,colscenery
� LDRB R5,[R1]
�& ADD R3,R3,R5,LSL #8
�! ADD R4,R3,#256
� MOV R12,R0
�$.copycolscelp LDMIA R3!,{R5-R8}
$ STMIA R12,{R5-R8}
# ADD R12,R12,#320
CMP R3,R4
# BLT copycolscelp
( ADD R0,R0,#16
2 ADD R1,R1,#1
< SUBS R2,R2,#1
F$ BPL makecolscrlp1
P" ADD R0,R0,#4800
Z ADD R0,R0,#32
d CMP R1,R10
n$ BLT makecolscrlp2
x MOV R0,#2
�+ SWI "OS_ReadDynamicArea"
� STR R0,base
�" LDR R0,showpass
� CMP R0,#1
� �Q R0,#0
�$ STREQ R0,showpass
�" BLEQ doshowpass
� MOV R12,#2
�" STR R12,scrbank
�".mainloop LDR R12,scrbank
�! RSB R12,R12,#3
� MOV R0,#19
� SWI &6
MOV R0,#113
MOV R1,R12
SWI &6
".waitloop MOV R0,#1
," LDR R1,clockval
6 SWI "OS_Word"
@ LDR R0,[R1]
J CMP R0,#1
T BLT waitloop
^ MOV R0,#2
h# LDR R1,zeroclock
r SWI "OS_Word"
| LDR R10,hires
� LDR R11,base
� CMP R12,#1
� CMPEQ R10,#0
�' ADDEQ R11,R11,#81920
� CMP R12,#1
� CMPEQ R10,#1
�( ADDEQ R11,R11,#153600
�" STR R12,scrbank
�% LDR R0,showingtape
� CMP R0,#0
� BLEQ writepos
� BL drawscreen
�" BL checkbuttons
LDR R0,end
CMP R0,#2
$ BEQ compskipstuff
& BL dodoors
0 BL doexit
: BL dobullets
D! BL dofireballs
N BL drawshugs
X BL dodroids
b BL doclock
l" LDR R0,bossdata
v LDRB R1,[R0]
� CMP R1,#3
�! ADDEQ R0,R0,#4
� LDRB R1,[R0]
� CMP R1,#1
� BLEQ doboss1
�" LDR R0,bossdata
� LDRB R1,[R0]
� CMP R1,#3
�" ADDEQ R0,R0,#20
� LDRB R1,[R0]
� CMP R1,#2
� BLEQ doboss2
�" LDR R0,bossdata
LDRB R1,[R0]
CMP R1,#4
BLEQ doboss3
BL doexpls
*% LDR R0,showingtape
4 CMP R0,#0
> BLEQ checkcol
H BL keys
R BL addtime
\% LDR R5,showingtape
f RSB R5,R5,#1
p MOV R1,#255
z CMP R5,#0
� �Q R0,#121
� �Q R1,#0
� SWIEQ &6
� CMP R1,#255
� CMPLT R5,#1
� MOVLT R5,#3
� STRLT R5,end
� LDR R0,hires
� CMP R0,#1
� BLEQ quickfix
�.compskipstuff LDR R0,end
� CMP R0,#0
� BEQ mainloop
MOV R0,#200
MOV R1,#1
MOV R2,#0
$ SWI &6
. MOV R0,#124
8 SWI &6
B# LDMFD (13)!,{pc}
L#.doexpls STMFD (13)!,{14}
V STR R13,store
`$ LDR R0,explosions
j ADD R1,R0,#30
t.explsloop LDRB R2,[R0]
~ CMP R2,#0
� BEQ skipexpl
�" LDRB R3,[R0,#1]
�& ADD R3,R3,R3,LSL #2
�# MOV R2,R2,LSL #2
�& ADD R2,R2,R3,LSL #6
� ADD R2,R2,R11
�" LDRB R3,[R0,#2]
� ADD R4,R3,#1
�" STRB R4,[R0,#2]
� CMP R4,#10
� �Q R2,#0
�! STREQB R2,[R0]
BEQ skipexpl
# LDR R4,explosion
& ADD R3,R4,R3,LSL #8
" ADD R4,R3,#2560
(! ADD R5,R3,#256
2#.plotexplloop LDMIA R2,{R6-R9}
<* LDMIA R4!,{R10,R12-R14}
F � R6,R6,R10
P � R7,R7,R12
Z � R8,R8,R13
d � R9,R9,R14
n* LDMIA R3!,{R10,R12-R14}
x �R R6,R6,R10
� �R R7,R7,R12
� �R R8,R8,R13
� �R R9,R9,R14
�# STMIA R2,{R6-R9}
�! ADD R2,R2,#320
� CMP R3,R5
�# BLT plotexplloop
�.skipexpl ADD R0,R0,#3
� CMP R0,R1
� BLT explsloop
� LDR R13,store
�# LDMFD (13)!,{pc}
�#.dofireballs STMFD (13)!,{14}
STR R13,store
# LDR R0,fireballs
ADD R1,R0,#48
".fireballloop LDR R2,[R0]
, CMP R2,#0
6# BEQ skipfireball
@! LDR R3,[R0,#4]
J! LDR R4,[R0,#8]
T CMP R4,#0
^! SUBEQ R3,R3,#2
h CMP R4,#1
r! ADDEQ R2,R2,#2
| CMP R4,#2
�! ADDEQ R3,R3,#2
� CMP R4,#3
�! SUBEQ R2,R2,#2
�& ADD R5,R3,R3,LSL #2
�& ADD R5,R2,R5,LSL #6
�# LDR R6,colscreen
� ADD R6,R6,R5
� LDR R7,[R6]
�" LDR R8,[R6,#12]
�" ADD R6,R6,#4800
� LDR R9,[R6]
�# LDR R10,[R6,#12]
� CMP R7,#1
CMPNE R8,#1
CMPNE R9,#1
CMPNE R10,#1
& �Q R2,#0
0 STR R2,[R0]
:# BEQ skipfireball
D! STR R3,[R0,#4]
N LDR R6,xpos
X LDR R7,ypos
b LDR R8,xdis
l LDR R9,ydis
v& ADD R6,R8,R6,LSL #4
�& ADD R7,R9,R7,LSL #4
� SUBS R6,R6,R2
�! RSBMI R6,R6,#0
� SUBS R7,R7,R3
�! RSBMI R7,R7,#0
� CMP R6,#14
� CMPLT R7,#14
� MOVLT R6,#1
� STRLT R6,end
� � R6,R2,#2
� ADD R2,R5,R11
�% LDR R3,fireballspr
�& ADD R3,R3,R4,LSL #9
CMP R6,#2
$ ADDEQ R3,R3,#2048
! ADD R4,R3,#256
MOV R14,#15
*#.plotfbloop LDMIA R2,{R5-R8}
4- LDMIA R4!,{R9-R10,R12-R13}
> � R5,R5,R9
H � R6,R6,R10
R � R7,R7,R12
\ � R8,R8,R13
f- LDMIA R3!,{R9-R10,R12-R13}
p �R R5,R5,R9
z �R R6,R6,R10
� �R R7,R7,R12
� �R R8,R8,R13
�# STMIA R2,{R5-R8}
�! ADD R2,R2,#320
�" SUBS R14,R14,#1
�! BPL plotfbloop
� .skipfireball ADD R0,R0,#12
� CMP R0,R1
�# BLT fireballloop
� LDR R13,store
�# LDMFD (13)!,{pc}
�#.hitboss1 STMFD (13)!,{14}
� MOV R8,R3
MOV R9,R4
BL addexpl
MOV R3,#0
$ STR R3,[R1]
. LDR R7,level
8 CMP R7,#40
B MOVNE R7,#1
L �Q R7,#3
V SUB R6,R6,R7
` CMP R6,#0
j STRLE R3,[R0]
t$ BLLE explodeboss1
~# LDMFD (13)!,{pc}
�#.doboss1 STMFD (13)!,{14}
� STR R11,store
�! STR R13,store2
� LDR R1,xpos
� LDR R2,ypos
� LDR R3,xdis
� LDR R4,ydis
�& ADD R1,R3,R1,LSL #4
�& ADD R2,R4,R2,LSL #4
� MOV R3,#0
� CMP R1,#160
� CMPLT R2,#144
MOVLT R3,#1
CMP R1,#96
CMPGE R2,#80
CMPGE R3,#1
( STREQ R3,end
2" LDR R6,[R0,#12]
<! LDR R1,bullets
F$ ADD R2,R1,#128*16
P.checkhitboss1 MOV R5,#0
Z LDR R3,[R1]
d! LDR R4,[R1,#4]
n# MOV R3,R3,LSR #8
x# MOV R4,R4,LSR #8
� CMP R3,#160
� CMPLT R4,#144
� MOVLT R5,#1
� CMP R3,#112
� CMPGE R4,#96
� CMPGE R5,#1
� BLEQ hitboss1
� ADD R1,R1,#16
� CMP R1,R2
�$ BLE checkhitboss1
�" STR R6,[R0,#12]
� LDR R1,[R0]
� CMP R1,#0
% LDMEQFD (13)!,{pc}
! LDR R1,[R0,#8]
LDR R2,rndnos
"" LDRB R2,[R2,R1]
, SUBS R1,R1,#1
6! MOVMI R1,#1024
@! STR R1,[R0,#8]
J CMP R2,#8
T% BLLT boss1fireball
^" LDRB R2,[R0,#2]
h" LDRB R1,[R0,#1]
r SUBS R1,R1,#1
| MOVMI R1,#5
�" STRB R1,[R0,#1]
� CMP R1,#0
�# BLEQ boss1newspr
�! LDR R3,bossspr
� MOV R7,#3
�! RSB R6,R6,#512
�$ � R6,R7,R6,LSR #7
� MOV R7,#6912
�" MLA R3,R7,R6,R3
�& ADD R1,R2,R2,LSL #3
�& ADD R1,R3,R1,LSL #8
� MOV R0,#30720
�! ADD R0,R0,#112
ADD R0,R0,R11
MOV R14,#47
%.boss1loop LDMIA R1!,{R2-R13}
&$ STMIA R0,{R2-R13}
0! ADD R0,R0,#320
:" SUBS R14,R14,#1
D BPL boss1loop
N LDR R11,store
X! LDR R13,store2
b# LDMFD (13)!,{pc}
l#.boss1fireball STMFD (13)!,{14}
v# LDR R1,fireballs
� MOV R3,#12*3
�!.boss1fbloop LDR R4,[R1,R3]
� CMP R4,#0
�$ BEQ boss1createfb
�! SUBS R3,R3,#12
�" BPL boss1fbloop
�# LDMFD (13)!,{pc}
�.boss1createfb ADD R1,R1,R3
� CMP R2,#4
�! SUBGE R2,R2,#4
�! STR R2,[R1,#8]
� CMP R2,#0
� �Q R3,#112
�Q R4,#80
CMP R2,#2
�Q R3,#144
�Q R4,#144
* CMP R2,#1
4 �Q R3,#160
> �Q R4,#96
H CMP R2,#3
R �Q R3,#96
\ �Q R4,#128
f STR R3,[R1]
p! STR R4,[R1,#4]
z# LDMFD (13)!,{pc}
�#.boss1newspr STMFD (13)!,{14}
�! LDR R1,[R0,#4]
� SUBS R1,R1,#1
�! MOVMI R1,#1024
�! STR R1,[R0,#4]
� LDR R2,rndnos
�" LDRB R3,[R2,R1]
� CMP R3,#170
� MOVLE R2,#1
� MOVGT R2,#2
� CMP R3,#85
� MOVLE R2,#0
�" STRB R2,[R0,#2]
# LDMFD (13)!,{pc}
#.hitboss2 STMFD (13)!,{14}
LDR R8,[R3]
$! LDR R9,[R3,#4]
.# MOV R8,R8,LSR #8
8# MOV R9,R9,LSR #8
B BL addexpl
L MOV R8,#0
V STR R8,[R3]
` LDR R9,level
j CMP R9,#24
t MOVNE R9,#2
~ �Q R9,#1
� SUB R6,R6,R9
� CMP R6,#0
� STRLE R8,[R0]
�$ BLLE explodeboss2
�# LDMFD (13)!,{pc}
�#.doboss2 STMFD (13)!,{14}
� STR R11,store
�! STR R13,store2
� LDR R1,xpos
� LDR R2,ypos
� LDR R3,xdis
� LDR R4,ydis
& ADD R3,R3,R1,LSL #4
& ADD R4,R4,R2,LSL #4
! LDR R1,[R0,#4]
! LDR R2,[R0,#8]
(" LDRB R5,[R0,#3]
2 CMP R5,#3
<! SUBEQ R1,R1,#4
F CMPEQ R1,#16
P �Q R5,#0
Z CMP R5,#2
d! ADDEQ R2,R2,#1
n CMPEQ R2,#208
x �Q R5,#3
� CMP R5,#1
�! ADDEQ R1,R1,#4
� CMPEQ R1,#208
� �Q R5,#2
� CMP R5,#0
�! SUBEQ R2,R2,#1
� CMPEQ R2,#16
� �Q R5,#1
�! STR R1,[R0,#4]
�! STR R2,[R0,#8]
�" STRB R5,[R0,#3]
� SUB R3,R3,#8
� SUB R4,R4,#8
SUBS R3,R3,R1
! RSBMI R3,R3,#0
SUBS R4,R4,R2
"! RSBMI R4,R4,#0
, CMP R3,#23
6 CMPLT R4,#23
@ MOVLT R3,#1
J STRLT R3,end
T" LDR R6,[R0,#16]
^! LDR R3,bullets
h$ ADD R4,R3,#128*16
r MOV R7,#16
|.checkhitboss2 LDR R5,[R3]
�! LDR R8,[R3,#4]
�& RSB R5,R7,R5,LSR #8
�& RSB R8,R7,R8,LSR #8
� SUBS R5,R5,R1
�! RSBMI R5,R5,#0
� SUBS R8,R8,R2
�! RSBMI R8,R8,#0
� CMP R5,#15
� CMPLT R8,#15
� BLLT hitboss2
� ADD R3,R3,#16
� CMP R3,R4
�$ BLE checkhitboss2
" STR R6,[R0,#16]
LDR R3,[R0]
CMP R3,#0
&% LDMEQFD (13)!,{pc}
0" LDR R3,[R0,#12]
: LDR R4,rndnos
D" LDRB R4,[R4,R3]
N SUBS R3,R3,#1
X! MOVMI R3,#1024
b" STR R3,[R0,#12]
l CMP R4,#4
v% BLLT boss2fireball
�" LDRB R4,[R0,#2]
�" LDRB R3,[R0,#1]
� SUBS R3,R3,#1
� MOVMI R3,#3
�" STRB R3,[R0,#1]
� CMP R3,#0
�! RSBEQ R4,R4,#1
�$ STREQB R4,[R0,#2]
�& ADD R0,R2,R2,LSL #2
�& ADD R0,R1,R0,LSL #6
� ADD R0,R0,R11
�! LDR R3,bossspr
�# ADD R3,R3,#27648
!' ADD R1,R3,R4,LSL #11
!" ADD R2,R1,#1024
! MOV R14,#31
! #.boss2loop LDMIA R0,{R3-R6}
!*% LDMIA R2!,{R7-R10}
!4 � R3,R3,R7
!> � R4,R4,R8
!H � R5,R5,R9
!R � R6,R6,R10
!\% LDMIA R1!,{R7-R10}
!f �R R3,R3,R7
!p �R R4,R4,R8
!z �R R5,R5,R9
!� �R R6,R6,R10
!�$ STMIA R0!,{R3-R6}
!�# LDMIA R0,{R3-R6}
!�% LDMIA R2!,{R7-R10}
!� � R3,R3,R7
!� � R4,R4,R8
!� � R5,R5,R9
!� � R6,R6,R10
!�% LDMIA R1!,{R7-R10}
!� �R R3,R3,R7
!� �R R4,R4,R8
!� �R R5,R5,R9
!� �R R6,R6,R10
"$ STMIA R0!,{R3-R6}
"! ADD R0,R0,#288
"" SUBS R14,R14,#1
"$ BPL boss2loop
". LDR R11,store
"8! LDR R13,store2
"B# LDMFD (13)!,{pc}
"L#.boss2fireball STMFD (13)!,{14}
"V# LDR R3,fireballs
"` MOV R4,#12*3
"j!.boss2fbloop LDR R5,[R3,R4]
"t CMP R5,#0
"~$ BEQ boss2createfb
"�! SUBS R4,R4,#12
"�" BPL boss2fbloop
"�# LDMFD (13)!,{pc}
"�.boss2createfb ADD R3,R3,R4
"�" LDRB R4,[R0,#3]
"� ADD R4,R4,#1
"� CMP R4,#3
"�! SUBGT R4,R4,#4
"�! STR R4,[R3,#8]
"� CMP R4,#1
"�" ADDEQ R5,R1,#32
"�! ADDEQ R6,R2,#8
# CMP R4,#3
#
�Q R5,R1
#! ADDEQ R6,R2,#8
# CMP R4,#2
#(! ADDEQ R5,R1,#8
#2" ADDEQ R6,R2,#32
#< CMP R4,#0
#F! ADDEQ R5,R1,#8
#P �Q R6,R2
#Z STR R5,[R3]
#d! STR R6,[R3,#4]
#n# LDMFD (13)!,{pc}
#x#.hitboss3 STMFD (13)!,{14}
#� LDR R8,[R3]
#�! LDR R9,[R3,#4]
#�# MOV R8,R8,LSR #8
#�# MOV R9,R9,LSR #8
#� BL addexpl
#� MOV R8,#0
#� STR R8,[R3]
#� LDR R9,level
#� CMP R9,#8
#� MOVNE R9,#2
#� �Q R9,#1
#� SUB R6,R6,R9
#� CMP R6,#0
$ STRLE R8,[R0]
$$ BLLE explodeboss2
$# LDMFD (13)!,{pc}
$"#.doboss3 STMFD (13)!,{14}
$, STR R11,store
$6! STR R13,store2
$@ LDR R1,xpos
$J LDR R2,ypos
$T LDR R3,xdis
$^ LDR R4,ydis
$h& ADD R3,R3,R1,LSL #4
$r& ADD R4,R4,R2,LSL #4
$|! LDR R1,[R0,#4]
$�! LDR R2,[R0,#8]
$�" LDRB R5,[R0,#3]
$� CMP R5,#1
$�! SUBEQ R1,R1,#4
$� CMPEQ R1,#16
$� �Q R5,#0
$� CMP R5,#0
$�! ADDEQ R1,R1,#4
$� CMPEQ R1,#208
$� �Q R5,#1
$�! STR R1,[R0,#4]
$�! STR R2,[R0,#8]
$�" STRB R5,[R0,#3]
% SUB R3,R3,#8
% SUB R4,R4,#8
% SUBS R3,R3,R1
%&! RSBMI R3,R3,#0
%0 SUBS R4,R4,R2
%:! RSBMI R4,R4,#0
%D CMP R3,#23
%N CMPLT R4,#23
%X MOVLT R3,#1
%b STRLT R3,end
%l" LDR R6,[R0,#16]
%v! LDR R3,bullets
%�$ ADD R4,R3,#128*16
%� MOV R7,#16
%�.checkhitboss3 LDR R5,[R3]
%�! LDR R8,[R3,#4]
%�& RSB R5,R7,R5,LSR #8
%�& RSB R8,R7,R8,LSR #8
%� SUBS R5,R5,R1
%�! RSBMI R5,R5,#0
%� SUBS R8,R8,R2
%�! RSBMI R8,R8,#0
%� CMP R5,#15
%� CMPLT R8,#15
%� BLLT hitboss3
& ADD R3,R3,#16
& CMP R3,R4
&$ BLE checkhitboss3
& " STR R6,[R0,#16]
&* LDR R3,[R0]
&4 CMP R3,#0
&>% LDMEQFD (13)!,{pc}
&H" LDR R3,[R0,#12]
&R LDR R4,rndnos
&\" LDRB R4,[R4,R3]
&f SUBS R3,R3,#1
&p! MOVMI R3,#1024
&z" STR R3,[R0,#12]
&� CMP R4,#6
&�% BLLT boss3fireball
&�" LDRB R4,[R0,#2]
&�" LDRB R3,[R0,#1]
&� SUBS R3,R3,#1
&� MOVMI R3,#3
&�" STRB R3,[R0,#1]
&� CMP R3,#0
&�! RSBEQ R4,R4,#1
&�$ STREQB R4,[R0,#2]
&�& ADD R0,R2,R2,LSL #2
&�& ADD R0,R1,R0,LSL #6
&� ADD R0,R0,R11
'! LDR R3,bossspr
'' ADD R1,R3,R4,LSL #11
'" ADD R2,R1,#1024
'$ MOV R14,#31
'.#.boss3loop LDMIA R0,{R3-R6}
'8% LDMIA R2!,{R7-R10}
'B � R3,R3,R7
'L � R4,R4,R8
'V � R5,R5,R9
'` � R6,R6,R10
'j% LDMIA R1!,{R7-R10}
't �R R3,R3,R7
'~ �R R4,R4,R8
'� �R R5,R5,R9
'� �R R6,R6,R10
'�$ STMIA R0!,{R3-R6}
'�# LDMIA R0,{R3-R6}
'�% LDMIA R2!,{R7-R10}
'� � R3,R3,R7
'� � R4,R4,R8
'� � R5,R5,R9
'� � R6,R6,R10
'�% LDMIA R1!,{R7-R10}
'� �R R3,R3,R7
'� �R R4,R4,R8
( �R R5,R5,R9
(
�R R6,R6,R10
($ STMIA R0!,{R3-R6}
(! ADD R0,R0,#288
((" SUBS R14,R14,#1
(2 BPL boss3loop
(< LDR R11,store
(F! LDR R13,store2
(P# LDMFD (13)!,{pc}
(Z#.boss3fireball STMFD (13)!,{14}
(d# LDR R3,fireballs
(n MOV R4,#12*3
(x!.boss3fbloop LDR R5,[R3,R4]
(� CMP R5,#0
(�$ BEQ boss3createfb
(�! SUBS R4,R4,#12
(�" BPL boss3fbloop
(�# LDMFD (13)!,{pc}
(�.boss3createfb ADD R3,R3,R4
(� MOV R4,#0
(�! STR R4,[R3,#8]
(� ADD R5,R1,#8
(� STR R5,[R3]
(�! STR R2,[R3,#4]
(�# LDMFD (13)!,{pc}
(�#.dobullets STMFD (13)!,{14}
)$ LDR R0,firedirecs
)" LDR R1,fireseed
)# LDR R2,swaydelay
)" SUBS R2,R2,#1
), MOVMI R2,#3
)6" SUBMIS R1,R1,#8
)@ MOVMI R1,#9*8
)J" STR R1,fireseed
)T# STR R2,swaydelay
)^! LDR R0,bullets
)h% ADD R12,R0,#128*16
)r# LDR R9,colscreen
)| MOV R10,#255
)�.bulletsloop LDR R1,[R0]
)� CMP R1,#0
)�! BEQ skipbullet
)�! LDR R2,[R0,#4]
)�! LDR R3,[R0,#8]
)�" LDR R4,[R0,#12]
)� ADD R1,R1,R3
)� ADD R2,R2,R4
)�# MOV R6,R1,LSR #8
)�# MOV R7,R2,LSR #8
)�& ADD R8,R7,R7,LSL #2
)�& ADD R8,R6,R8,LSL #6
)�# MOV R5,R8,LSR #2
*( LDR R5,[R9,R5,LSL #2]
* CMP R5,#12
* �Q R6,R3
*&! RSBEQ R3,R4,#0
*0! RSBEQ R4,R6,#0
*:# STREQ R3,[R0,#8]
*D$ STREQ R4,[R0,#12]
*N! BEQ skipbullet
*X CMP R5,#13
*b �Q R6,R3
*l �Q R3,R4
*v �Q R4,R6
*�# STREQ R3,[R0,#8]
*�$ STREQ R4,[R0,#12]
*�! BEQ skipbullet
*� CMP R5,#1
*� �Q R1,#0
*�& STRNEB R10,[R11,R8]
*� STR R1,[R0]
*�! STR R2,[R0,#4]
*� LDR R1,droids
*� ADD R2,R1,#60
*�.checkshotdr LDRB R3,[R1]
*� CMP R3,#0
*�! BEQ skipchshdr
+" LDRB R4,[R1,#2]
+& ADD R3,R4,R3,LSL #4
+ ADD R3,R3,#8
+ " LDRB R4,[R1,#1]
+*" LDRB R5,[R1,#3]
+4& ADD R4,R5,R4,LSL #4
+> ADD R4,R4,#8
+H SUBS R3,R3,R6
+R! RSBMI R3,R3,#0
+\ SUBS R4,R4,R7
+f! RSBMI R4,R4,#0
+p CMP R3,#7
+z CMPLT R4,#7
+� MOVLT R5,#0
+� STRLT R5,[R0]
+� BLLT hitdroid
+� .skipchshdr ADD R1,R1,#12
+� CMP R1,R2
+�" BLT checkshotdr
+� .skipbullet ADD R0,R0,#16
+� CMP R0,R12
+�" BLT bulletsloop
+�# LDMFD (13)!,{pc}
+�#.hitdroid STMFD (13)!,{14}
+� LDR R3,stack
+�# STMIA R3,{R0-R3}
, MOV R0,#5
, LDR R1,volume
," LDRB R1,[R1,#1]
,$# MOV R1,R1,LSR #4
,. RSB R1,R1,#0
,8 MOV R2,#5120
,B MOV R3,#1
,L SWI &40189
,V LDR R3,stack
,`# LDMIA R3,{R0-R3}
,j MOV R8,R6
,t MOV R9,R7
,~ BL addexpl
,�# LDR R9,colscreen
,�# LDRB R3,[R1,#11]
,� SUBS R3,R3,#1
,�# STRB R3,[R1,#11]
,�# BLMI killeddroid
,�# LDMFD (13)!,{pc}
,�#.addexpl STMFD (13)!,{14}
,� LDR R14,stack
,�% STMIA R14!,{R3-R4}
,�$ LDR R3,explosions
,�' LDR R4,explosionseed
,� SUBS R4,R4,#3
- MOVMI R4,#27
-
' STR R4,explosionseed
- ADD R3,R3,R4
- SUB R8,R8,#8
-( SUB R9,R9,#8
-2# MOV R8,R8,LSR #2
-< STRB R8,[R3]
-F" STRB R9,[R3,#1]
-P MOV R8,#0
-Z" STRB R8,[R3,#2]
-d LDR R14,stack
-n% LDMIA R14!,{R3-R4}
-x# LDMFD (13)!,{pc}
-�.showingtape EQUD 0
-�#.killeddroid STMFD (13)!,{14}
-� LDR R3,stack
-�# STMIA R3,{R4-R8}
-� STRB R5,[R1]
-� LDR R4,deaths
-� MOV R5,#64*8
-�! LDR R8,ShugPos
-�!.killdrloop LDR R6,[R4,R5]
-� CMP R6,R1
-�! ADDEQ R6,R4,R5
-�# LDREQ R7,[R6,#4]
-�! BLEQ wipedeath
. SUBS R5,R5,#8
.! BPL killdrloop
. LDR R4,deaths
." MOV R5,#64*8
., MOV R7,#0
.6!.stilldeadloop LDR R6,[R4,R5]
.@ CMP R6,#0
.J MOVNE R7,#1
.T SUBS R5,R5,#8
.^$ BPL stilldeadloop
.h STR R7,dead
.r# LDMFD (13)!,{pc}
.|#.wipedeath STMFD (13)!,{14}
.� CMP R8,R7
.� MOVLE R7,#0
.� STRLE R7,[R6]
.�# STRLE R7,[R6,#4]
.�# LDMFD (13)!,{pc}
.�#.doclock STMFD (13)!,{14}
.�# LDR R0,clockxpos
.�# LDR R1,clockypos
.� LDR R2,sin
.� LDR R3,cos
.�! LDR R4,ShugPos
.�( LDR R2,[R2,R4,LSL #1]
.�( LDR R3,[R3,R4,LSL #1]
/ MOV R9,#0
/ MOV R10,#320
/ MOV R12,#10
/&.clockloop ADD R0,R0,R2
/0 ADD R1,R1,R3
/:# MOV R5,R0,LSR #8
/D# MOV R6,R1,LSR #8
/N# MLA R5,R10,R6,R5
/X ADD R5,R5,R11
/b STRB R9,[R5]
/l" SUBS R12,R12,#1
/v BPL clockloop
/�# LDMFD (13)!,{pc}
/�#.dodroids STMFD (13)!,{14}
/� LDR R0,droids
/� ADD R1,R0,#60
/� MOV R12,#320
/�.droidloop LDRB R2,[R0]
/� CMP R2,#0
/� BEQ skipdroid
/�" LDRB R2,[R0,#7]
/�" LDRB R3,[R0,#6]
/� SUBS R2,R2,#1
/� MOVMI R2,#3
/�! RSBMI R3,R3,#1
0" STRB R2,[R0,#7]
0" STRB R3,[R0,#6]
0" LDR R9,droidspr
0 $ LDR R10,droidmask
0* CMP R3,#1
04# ADDEQ R9,R9,#256
0>% ADDEQ R10,R10,#256
0H" LDRB R4,[R0,#2]
0R" LDRB R5,[R0,#3]
0\" LDRB R6,[R0,#5]
0f CMP R6,#1
0p! SUBEQ R5,R5,#2
0z CMP R6,#3
0�! ADDEQ R5,R5,#2
0� CMP R6,#2
0�! ADDEQ R4,R4,#2
0� CMP R6,#4
0�! SUBEQ R4,R4,#2
0� LDRB R2,[R0]
0�" LDRB R3,[R0,#1]
0� CMP R4,#0
0�! SUBLT R2,R2,#1
0� MOVLT R4,#14
0� BLLT droidcol
0� CMP R4,#16
0�! ADDEQ R2,R2,#1
1 �Q R4,#0
1 CMP R5,#0
1! SUBLT R3,R3,#1
1$ MOVLT R5,#14
1. BLLT droidcol
18 CMP R5,#16
1B! ADDEQ R3,R3,#1
1L �Q R5,#0
1V CMP R4,#2
1`! ADDEQ R2,R2,#1
1j BLEQ droidcol
1t CMP R4,#2
1~! SUBEQ R2,R2,#1
1� CMP R5,#2
1�! ADDEQ R3,R3,#1
1� BLEQ droidcol
1� CMP R5,#2
1�! SUBEQ R3,R3,#1
1� CMP R6,#0
1�! BEQ dontupdate
1� STRB R2,[R0]
1�" STRB R3,[R0,#1]
1�" STRB R4,[R0,#2]
1�" STRB R5,[R0,#3]
1�&.dontupdate ADD R2,R4,R2,LSL #4
2 & ADD R3,R5,R3,LSL #4
2
LDR R4,xpos
2 LDR R5,ypos
2 LDR R6,xdis
2( LDR R8,ydis
22& ADD R4,R6,R4,LSL #4
2<& ADD R5,R8,R5,LSL #4
2F SUBS R4,R4,R2
2P! RSBMI R4,R4,#0
2Z SUBS R5,R5,R3
2d! RSBMI R5,R5,#0
2n CMP R4,#14
2x CMPLT R5,#14
2� BLLT adddeath
2�& ADD R3,R3,R3,LSL #2
2�& ADD R2,R2,R3,LSL #6
2� ADD R2,R2,R11
2�! ADD R8,R9,#256
2�.droidplotloop MOV R6,#15
2�.droidhorloop LDRB R3,[R2]
2� LDRB R5,[R10]
2� � R3,R3,R5
2� LDRB R5,[R9]
2� �R R3,R3,R5
2� STRB R3,[R2]
2� ADD R2,R2,#1
3 ADD R9,R9,#1
3! ADD R10,R10,#1
3 SUBS R6,R6,#1
3"# BPL droidhorloop
3,! ADD R2,R2,#304
36 CMP R9,R8
3@$ BLT droidplotloop
3J .skipdroid ADD R0,R0,#12
3T CMP R0,R1
3^ BLT droidloop
3h# LDMFD (13)!,{pc}
3r#.NorSprites EQUD NorSprites%
3|#.EasSprites EQUD EasSprites%
3�#.SouSprites EQUD SouSprites%
3�#.WesSprites EQUD WesSprites%
3�!.NorMasks EQUD NorMasks%
3�!.EasMasks EQUD EasMasks%
3�!.SouMasks EQUD SouMasks%
3�!.WesMasks EQUD WesMasks%
3�.Shuggy EQUD Shuggy%
3�.screen EQUD screen%
3�".colscreen EQUD colscreen%
3�!.clockval EQUD clockval%
3�".zeroclock EQUD zeroclock%
3� .scenery EQUD scenery%
3�.map EQUD map%
4.droids EQUD droids%
4!.droidspr EQUD droidspr%
4".droidmask EQUD droidmask%
4&.volume EQUD volume%
40#.colscenery EQUD colscenery%
4: .doorspr EQUD doorspr%
4D .bossspr EQUD bossspr%
4N!.bossdata EQUD bossdata%
4X.rndnos EQUD rndnos%
4b .bullets EQUD bullets%
4l .button1 EQUD button1%
4v .button2 EQUD button2%
4� .button3 EQUD button3%
4� .button4 EQUD button4%
4� .button5 EQUD button5%
4� .exitspr EQUD exitspr%
4�#.firedirecs EQUD firedirecs%
4�.deaths EQUD deaths%
4�.stack EQUD stack%
4�".fireballs EQUD fireballs%
4�$.fireballspr EQUD fireballspr%
4�".explosion EQUD explosion%
4�#.explosions EQUD explosions%
4�.sin EQUD sin%
4�.cos EQUD cos%
5.hires EQUD hires%
5.base EQUD 0
5.scrbank EQUD 0
5 #.buttonclear EQUD (50*20*6)-6
5*.explosionseed EQUD 0
54.fireballseed EQUD 96
5>.fireseed EQUD 9*8
5H.slipsize EQUD 50*20*6
5R.bulletchan EQUD 7
5\.bulsounddel EQUD 3
5f.showpass EQUD 0
5p.bulletseed EQUD 0
5z.flickshug EQUD 1
5�.level EQUD 0
5�.ShugPos EQUD 0
5�.Slipno EQUD 0
5�.cdslips EQUD 0
5�.exitpos EQUD 0
5�.exitstep EQUD 0
5�.dead EQUD 0
5�.flicker EQUD 0
5�.firedelay EQUD 3
5�.swaydelay EQUD 3
5�.door1pos EQUD 0
5�.door2pos EQUD 0
5�.door3pos EQUD 0
6.door4pos EQUD 0
6.door5pos EQUD 0
6.door1step EQUD 0
6$.door2step EQUD 0
6..door3step EQUD 0
68.door4step EQUD 0
6B.door5step EQUD 0
6L.direction EQUD 3
6V.step EQUD 0
6`.stepcount EQUD 7
6j.clockxpos EQUD 305<<8
6t.clockypos EQUD 16<<8
6~.levelskip EQUD 0
6�.store EQUD 0
6�.store2 EQUD 0
6�#.adddeath STMFD (13)!,{14}
6� MOV R4,#1
6� STR R4,dead
6� LDR R4,deaths
6� MOV R5,#64*8
6�!.adddeathloop LDR R6,[R4,R5]
6� CMP R6,#0
6�! ADDEQ R4,R4,R5
6� STREQ R0,[R4]
6�# LDREQ R5,ShugPos
7 # STREQ R5,[R4,#4]
7
% LDMEQFD (13)!,{pc}
7 SUBS R5,R5,#8
7# BPL adddeathloop
7( MOV R4,#1
72 STR R4,end
7<# LDMFD (13)!,{pc}
7F#.droidcol STMFD (13)!,{14}
7P LDR R8,map
7Z MOV R7,#18
7d" MLA R7,R3,R7,R2
7n" LDRB R7,[R8,R7]
7x CMP R7,#0
7�% LDMEQFD (13)!,{pc}
7� CMP R7,#7
7�% LDMEQFD (13)!,{pc}
7� CMP R7,#8
7�% LDMEQFD (13)!,{pc}
7� CMP R7,#9
7�% LDMEQFD (13)!,{pc}
7� CMP R7,#15
7�% LDMEQFD (13)!,{pc}
7� CMP R7,#16
7�% LDMEQFD (13)!,{pc}
7�" LDRB R7,[R0,#4]
7� CMP R7,#2
8! RSBEQ R6,R6,#4
8$ STREQB R6,[R0,#5]
8 CMP R7,#3
8"! RSBEQ R6,R6,#6
8,$ STREQB R6,[R0,#5]
86 CMP R7,#4
8@! SUBEQ R6,R6,#1
8J$ STREQB R6,[R0,#5]
8T CMP R7,#5
8^! ADDEQ R6,R6,#1
8h$ STREQB R6,[R0,#5]
8r CMP R6,#0
8| �Q R6,#4
8�$ STREQB R6,[R0,#5]
8� CMP R6,#5
8� �Q R6,#1
8�$ STREQB R6,[R0,#5]
8� MOV R6,#0
8�# LDMFD (13)!,{pc}
8�.end EQUD 0
8�#.checkcol STMFD (13)!,{14}
8� LDR R7,ypos
8� LDR R8,ydis
8�& ADD R8,R8,R7,LSL #4
8� LDR R6,xpos
8� LDR R7,xdis
9& ADD R7,R7,R6,LSL #4
9 LDR R0,Shuggy
9! LDR R1,ShugPos
9& ADD R0,R0,R1
90 MOV R10,#9
9:# LDR R12,slipsize
9D.checkcolloop LDRB R1,[R0]
9N" LDRB R2,[R0,#1]
9X" LDRB R3,[R0,#2]
9b" LDRB R4,[R0,#3]
9l CMP R1,#20
9v% LDMEQFD (13)!,{pc}
9�& ADD R1,R3,R1,LSL #4
9�& ADD R2,R4,R2,LSL #4
9� SUBS R1,R1,R7
9�! RSBLT R1,R1,#0
9� SUBS R2,R2,R8
9�! RSBLT R2,R2,#0
9� CMP R1,#0
9� CMPEQ R2,#0
9�# BEQ skipcolcheck
9� CMP R1,#12
9� CMPLE R2,#12
9� MOVLE R3,#1
9� STRLE R3,end
: .skipcolcheck ADD R0,R0,R12
:" SUBS R10,R10,#1
:# BPL checkcolloop
: # LDMFD (13)!,{pc}
:*#.doexit STMFD (13)!,{14}
:4" LDR R0,exitstep
:> SUBS R0,R0,#1
:H MOVMI R0,#9
:R" STR R0,exitstep
:\ CMP R0,#4
:f% LDMGTFD (13)!,{pc}
:p! LDR R0,exitpos
:z ADD R0,R0,R11
:�! LDR R1,exitspr
:�! ADD R2,R1,#256
:�$.exitloop LDMIA R1!,{R3-R6}
:�# STMIA R0,{R3-R6}
:�! ADD R0,R0,#320
:� CMP R1,R2
:� BLT exitloop
:�# LDMFD (13)!,{pc}
:�#.dodoors STMFD (13)!,{14}
:�! LDR R3,doorspr
:�" LDR R12,ShugPos
:�! LDR R0,button1
:�" LDR R0,[R0,R12]
;" LDR R1,door1pos
;# LDR R2,door1step
; BL doadoor
;$# STR R2,door1step
;.! LDR R0,button2
;8" LDR R0,[R0,R12]
;B" LDR R1,door2pos
;L# LDR R2,door2step
;V BL doadoor
;`# STR R2,door2step
;j! LDR R0,button3
;t" LDR R0,[R0,R12]
;~" LDR R1,door3pos
;�# LDR R2,door3step
;� BL doadoor
;�# STR R2,door3step
;�! LDR R0,button4
;�" LDR R0,[R0,R12]
;�" LDR R1,door4pos
;�# LDR R2,door4step
;� BL doadoor
;�# STR R2,door4step
;�! LDR R0,button5
;�" LDR R0,[R0,R12]
;�" LDR R1,door5pos
<