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 <