tw EQU 64 ORG #8000 ; DISP #9400 - $ JP Start IntJP JP Ret KillMan JP Ret AddScore JP Ret ExplSd JP Ret FireSd JP Ret InitDisp JP Ret ProjSd JP Ret ManSd JP Ret MutSd JP Ret GameLoop JP Ret nSBombs JP Ret SBombsd JP Ret ManGrab JP Ret ManDrop JP Ret JP FTTSTg JP W KL JP Ret KR JP Ret KU JP Ret KD JP Ret KS JP Ret KF JP Ret CallHL JP (HL) CallDE PUSH DE Ret RET CallBC PUSH BC RET AddressT DEFW PutTT,PutMT,PutBT,PutTM,PutMM,PutBM DEFW PutTB,PutMB,PutBB PTab DEFB #80,#40,#20,#10,8,4,2,1 ORG #8080 DEFB #C3 IntVec DEFW SInt StackSp DEFW 0 KScan PUSH BC CALL KL JR NZ $+7 LD A,1:LD (LeftF),A CALL KR JR NZ $+7 LD A,1:LD (RightF),A CALL KU JR NZ $+7 LD A,1:LD (UpF),A CALL KD JR NZ $+7 LD A,1:LD (DownF),A POP BC:RET SInt DI:PUSH AF:CALL KScan PUSH BC CALL CheckFire CALL CheckSmart POP BC LD A,(nInts) INC A LD (nInts),A LD A,(SRt) DEC A LD (SRt),A JR Z StepScreen CALL MSp CALL KScan POP AF:EI RET StepScreen PUSH HL CALL MSp LD HL,(pRateTl) LD A,(HL) AND #7 JR NZ SSM INC A SSM LD (SRt),A POP HL CALL KScan POP AF EI RET ORG #8100 Garb DEFB #C0,#30,#0C,#03 BVec DEFW BbSp,BbSp1,BbSp,BbSp1 Start DI:IM 2:PUSH IY:PUSH IX PUSH HL:PUSH DE:PUSH BC:PUSH AF EXX PUSH HL:PUSH DE:PUSH BC:PUSH AF XOR A:LD (EndF),A:LD (Killed),A:LD (Started),A LD (StackSp),SP CALL CLS CALL InitDisp CALL DefInts CALL DefRate TEntry CALL CrTl CALL ClTgs CALL PlRest CALL ClLrs CALL InitEx LD HL,Predef:LD DE,pNewPos LD BC,PredefE-Predef+1:LDIR CALL InitScreen LD A,5:LD (KeyS),A TLoop EI CALL HM CALL GameLoop LD A,(EndF):OR A:JR Z TLoop GameEnd DI:LD SP,(StackSp) POP AF:POP BC:POP DE:POP HL EXX POP AF:POP BC:POP DE:POP HL POP IX:POP IY LD A,(Killed) RET HM LD A,(HS) DEC A LD (HS),A RET NZ LD (NoMoved),A LD HL,HMloopE1 LD (HVec),HL LD A,68 LD (HS),A LD IX,TgTl LD B,36 HMloop PUSH BC LD HL,HIntHand:LD (IntVec),HL BIT 0,(IX) JR NZ HMloopE LD A,(IX+18):CP #11:JR C HML1 LD A,(NoMoved):INC A:LD (NoMoved),A HML1 DEC (IX+5) JR NZ HMloopE LD A,(IX+6) LD (IX+5),A LD L,(IX+7) LD H,(IX+8) CALL CallHL CALL DoitAttrEx LD A,(IX+17) CP 8 JR NC HMloopE CP 2:JR Z HM1 CP 3:JR Z HMloopE CP 7:JR Z HMloopE CALL ShootIN HMloopE DEFB #C3 HVec DEFW HMloopE1 HM1 CALL BombIN:JR HMloopE HMloopE1 LD HL,SInt:LD (IntVec),HL:LD DE,tw ADD IX,DE POP BC DJNZ HMloop LD A,(NoMoved):LD (NoRem),A:OR A:RET NZ LD A,(Started):LD (EndF),A RET HIntHand PUSH HL LD HL,HAInt LD (HVec),HL POP HL RET HAInt LD HL,SInt:LD (IntVec),HL CALL SInt LD HL,HMloopE1 LD (HVec),HL JR HMloopE1 CheckFire CALL KF JR NZ CFNP LD A,(FireF1) OR A RET NZ LD A,1 LD (FireF1),A LD (FireF),A RET CFNP XOR A LD (FireF1),A RET CheckSmart CALL KS JR NZ CSNP LD A,(SmartF1) OR A RET NZ LD A,1 LD (SmartF1),A LD (SmartF),A RET CSNP XOR A LD (SmartF1),A RET StepNPRight LD DE,(pNewPos) LD HL,EndDTl OR A SBC HL,DE JR NZ StepNPR1 LD DE,DTl StepNPR1 LD HL,8 ADD HL,DE LD (pNewPos),HL LD A,(nV0) INC A LD (nV0),A RET StepNPLeft PUSH AF:LD DE,(pNewPos) LD HL,DTl OR A SBC HL,DE JR NZ StepNPL1 LD DE,EndDTl StepNPL1 LD HL,0-8 ADD HL,DE LD (pNewPos),HL LD A,(nV0) DEC A LD (nV0),A POP AF:RET DefRate LD HL,RateTl+1 LD DE,RateTl-1 DRloop LD A,(HL) OR #80 LD (DE),A INC HL DEC DE CP #FF JR NZ DRloop LD HL,RateTl LD (pRateTl),HL RET MShLeft PUSH AF JR Z MSL1 LD A,(SRt):OR A:JR NZ MSL1 LD A,1 LD (nDir),A LD A,(Sp0) DEC A LD (nSp0),A MSL1 POP AF RET MShRight PUSH AF JR Z MSL1 LD A,(SRt):OR A:JR NZ MSL1 LD A,0 LD (nDir),A LD A,(Sp0) INC A LD (nSp0),A POP AF RET ClBigMaze LD HL,BigMaze LD DE,BigMaze+1 LD BC,#1800 LD (HL),0 LDIR RET RemoveFromBM EQU $ LD A,(SpY) LD B,A LD A,(Sp0) CALL ConBMXY RFBM1 LD A,(HL):AND #80:LD (HL),A INC L LD A,(HL):AND #80:LD (HL),A RET PlInBM EQU $ LD A,(SpY) LD B,A LD A,(Sp0) CALL ConBMXY PIBM1 LD A,(HL):AND #7F:CALL NZ SpHit INC L LD A,(HL):AND #7F:CALL NZ SpHit LD A,(HL):OR 2:LD (HL),A DEC L LD A,(HL):OR 2:LD (HL),A RET ConBMXY LD L,A LD A,B AND #1F ADD A,BigMaze/256 LD H,A RET ClDList EQU $ XOR A:LD (SppyF),A LD A,(nSp0):LD B,A LD A,(Sp0):CP B CALL NZ SetSppyF LD A,(nV0):LD B,A LD A,(V0):CP B CALL NZ SetSppyF LD A,(nSpY):LD B,A LD A,(SpY):CP B CALL NZ SetSppyF LD A,(oSpDirX):LD B,A LD A,(SpDirX):CP B CALL NZ SetSppyF LD A,(SppyF):OR A JR Z ClDList1 CALL CalcSppy LD (SpAddr),HL LD (nSpSh),DE ClDList1 LD A,(nV0):LD (V0),A LD A,(nSp0):LD (Sp0),A LD A,(nSpY):LD (SpY),A LD A,(nDir):LD (Dir),A LD A,(SpDirX):LD (oSpDirX),A RET PlDList LD A,(SppyF):OR A RET Z CALL CalcSppy PUSH HL EXX LD HL,(SpAddr) LD DE,(nSpSh) PUSH HL EXX LD B,8 PDListLoop1 LD A,(DE) XOR (HL) LD (HL),A INC H INC DE EXX LD A,(DE) XOR (HL) LD (HL),A INC H INC DE EXX DJNZ PDListLoop1 EXX LD B,8 POP HL INC L EXX POP HL INC L EXX PDListLoop2 LD A,(DE) XOR (HL) LD (HL),A INC H INC DE EXX LD A,(DE) XOR (HL) LD (HL),A INC H INC DE EXX DJNZ PDListLoop2 RET SpsAttr LD A,(SpY) LD L,A LD H,0 ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL LD DE,#5B00 OR A EX DE,HL SBC HL,DE LD A,(V0) LD E,A LD A,(Sp0) SUB E LD E,A LD D,0 ADD HL,DE LD (HL),7 INC L LD (HL),7 RET SetSppyF LD A,1 LD (SppyF),A RET CalcSppy EQU $ LD A,(V0) LD B,A LD A,(Sp0) SUB B LD (SpX),A PUSH AF LD A,(SpY) LD L,A LD H,0 ADD HL,HL LD DE,ConYT ADD HL,DE LD E,(HL) INC HL LD D,(HL) POP AF LD L,A LD H,0 ADD HL,DE LD DE,(cSpSh) RET PutSppy CALL CalcSppy LD B,8 PUSH HL PDLloop LD A,(DE) XOR (HL) LD (HL),A INC H INC DE DJNZ PDLloop POP HL LD B,8 INC L PDLloop1 LD A,(DE) XOR (HL) LD (HL),A INC H INC DE DJNZ PDLloop1 POP AF RET InitScreen LD IY,(pNewPos) LD DE,0 ISloop LD L,(IY) LD H,(IY+1) ADD HL,DE LD C,(IY+2) LD B,(IY+3) CALL CallBC LD BC,8 ADD IY,BC INC DE LD A,E CP 32 JR NZ ISloop CALL PutSppy RET ClTgs LD HL,TgTl LD DE,TgTl+1 LD BC,#1000 LD (HL),1 LDIR LD B,255 LD HL,TgTl LD DE,tw LD IX,pTgT+1 LD IY,pTgT+#101 ClTloop LD (IX),L LD (IY),H ADD HL,DE INC IX INC IY DJNZ ClTloop RET PlRest LD A,(nV0) LD C,A LD B,41 LD DE,tw LD HL,TgTl AlienLoop LD IY,0 BIT 1,(HL) CALL NZ Doit3 BIT 0,(HL) JP NZ NextAlien1 INC HL LD A,(HL) DEC HL SUB C CP 32 JR NC NextAlien1 CALL Doit NextAlien ADD HL,DE DJNZ AlienLoop RET NextAlien1 BIT 1,(HL) JR Z NextAlien RES 1,(HL) PUSH HL PUSH HL POP IX LD HL,Doit4 PUSH HL LD L,(IX+3) LD H,(IX+4) PUSH HL PUSH IY POP HL RET Doit4 POP HL JR NextAlien LD H,(IX+4) Doit PUSH BC PUSH DE PUSH HL PUSH HL POP IX CALL DoitAttr LD L,(IX+2) LD H,0 ADD HL,HL LD DE,ConYT ADD HL,DE ADD A,(HL) INC HL LD H,(HL) LD L,A LD (IX+9),L:LD (IX+10),H:SET 1,(IX) PUSH IY POP DE OR A SBC HL,DE JR Z Doit1 ADD HL,DE LD E,(IX+3) LD D,(IX+4) CALL CallDE LD DE,Doit1 PUSH DE LD E,(IX+3) LD D,(IX+4) PUSH DE PUSH IY POP HL RET Doit1 POP HL POP DE POP BC RET DoitAttrEx LD A,(V0) LD E,A LD A,(IX+1) SUB E CP 32 RET NC DoitAttr PUSH AF LD L,(IX+2) LD H,0 ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL LD DE,#5B00 EX DE,HL OR A SBC HL,DE LD E,A LD D,0 ADD HL,DE LD A,(IX+17):CP 4 LD A,(IX+19) LD (HL),A JR Z DIA3 POP AF RET DIA3 DEC L:LD (HL),A:INC L:INC L:LD (HL),A:POP AF RET Doit3 PUSH HL PUSH HL POP IX LD A,(IX+9) DEFB #FD : LD L,A LD A,(IX+10) DEFB #FD : LD H,A POP HL RET ClRest LD A,(V0) LD C,A RES 1,(IX) LD A,(IX+1) SUB C CP 32 RET NC SET 1,(IX) PUSH DE PUSH HL PUSH AF LD L,(IX+2) LD H,0 ADD HL,HL LD DE,ConYT ADD HL,DE LD E,(HL) INC HL LD D,(HL) POP AF LD L,A LD H,0 ADD HL,DE LD (IX+9),L LD (IX+10),H POP HL POP DE RET DSetRad LD L,(IX+34):LD H,(IX+35):LD A,(IX+36) XOR (HL):LD (HL),A SetRad LD L,(IX+2) LD H,0 ADD HL,HL LD DE,ConRT ADD HL,DE LD A,(HL) LD (IX+32),A INC HL LD H,(HL) LD (IX+33),H LD L,A CALL RadWeld XOR (HL) LD (HL),A RET RadWeld LD A,(Sp0) LD C,A LD A,(IX+1) SUB C ADD A,#80 LD L,A AND #7 LD C,A LD A,L RRCA:RRCA:RRCA:AND #1F LD L,(IX+32) LD H,(IX+33) LD E,A LD D,0 ADD HL,DE LD (IX+34),L:LD (IX+35),H LD D,#80 LD A,C:ADD A,PTab&#FF LD E,A LD A,(DE) LD (IX+36),A RET GTS1 POP AF GetTSpace LD A,R AND #1F CP 20;^ JR C GTS2 LD A,20;^ GTS2 LD B,A LD A,R ADD A,A PUSH AF PUSH BC CALL ConBMXY POP BC LD A,(HL) OR A JR NZ GTS1 POP AF RET GetMSpace LD A,R ADD A,A LD L,A LD H,ManH/256 BIT 7,(HL) JR Z GetMSpace RES 7,(HL) DEC (HL) LD A,L:LD B,(HL):RET CrMan CALL FTTSMn RET C LD L,(IY+2):LD (IX+1),L LD A,(IY+1):LD (IX+2),A LD HL,ManSh LD (IX+3),L LD (IX+4),H LD A,66 LD (IX+6),A LD A,R:AND #3F:ADD A,8 LD (IX+5),A LD HL,ManM LD (IX+7),L LD (IX+8),H LD (IX+#B),0 LD (IX+#E),0 LD A,(EntryNo) LD (IX+18),A LD (IX+17),8 LD (IX+0),0 LD (IX+19),7 RET FTTSMn PUSH AF XOR A LD IX,TgTl LD B,12 LD DE,tw FTTS1 INC A:BIT 0,(IX) JR NZ FTTS2 ADD IX,DE DJNZ FTTS1 LD IX,0 POP AF SCF RET FTTS2 LD (EntryNo),A POP AF OR A RET FTTSTg PUSH AF LD A,16 LD IX,TgTl+1024 LD B,20 LD DE,tw JR FTTS1 FTTSPj PUSH AF LD A,36 LD IY,TgTl+2048+256 LD B,5 LD DE,tw Ftts1 INC A:BIT 0,(IY) JR NZ Ftts2 ADD IY,DE DJNZ Ftts1 LD IY,0 POP AF SCF RET Ftts2 LD (EntryNo),A POP AF OR A RET FTTSB PUSH AF LD A,12 LD IY,TgTl+768 LD B,4 LD DE,tw FttsB1 INC A:BIT 0,(IY) JR NZ FttsB2 ADD IY,DE DJNZ FttsB1 LD IY,0 POP AF SCF RET FttsB2 LD (EntryNo),A POP AF OR A RET TShTl DEFW TSh0 : DEFW TM0 DEFW TSh1 : DEFW TM1 DEFW TSh2 : DEFW TM2 DEFW TSh3 : DEFW TM2 DEFW TSh4 : DEFW TM0 DEFW TSh0 : DEFW TM0 DEFW TSh0 : DEFW TM0 DEFW TSh0 : DEFW TM0 TColTl DEFB #44 DEFB #45 DEFB #45 DEFB #43 TSh0 LD A,#3C :XOR (HL):LD (HL),A:INC H LD A,#5A :XOR (HL):LD (HL),A:INC H LD A,#99 :XOR (HL):LD (HL),A:INC H LD A,#99 :XOR (HL):LD (HL),A:INC H LD A,#7E :XOR (HL):LD (HL),A:INC H LD A,#5A :XOR (HL):LD (HL),A:INC H LD A,#DB :XOR (HL):LD (HL),A:RET TSh1 LD A,#FC :XOR (HL):LD (HL),A:INC H LD A,#84 :XOR (HL):LD (HL),A:INC H LD A,#BF :XOR (HL):LD (HL),A:INC H LD A,#A1 :XOR (HL):LD (HL),A:INC H LD A,#A1 :XOR (HL):LD (HL),A:INC H LD A,#E1 :XOR (HL):LD (HL),A:INC H LD A,#21 :XOR (HL):LD (HL),A:INC H LD A,#3F :XOR (HL):LD (HL),A RET ManSh LD A,#38 :XOR (HL):LD (HL),A:INC H LD A,#38 :XOR (HL):LD (HL),A:INC H LD A,#92 :XOR (HL):LD (HL),A:INC H LD A,#7C :XOR (HL):LD (HL),A:INC H LD A,#38 :XOR (HL):LD (HL),A:INC H LD A,#7C :XOR (HL):LD (HL),A:INC H LD A,#28 :XOR (HL):LD (HL),A:INC H LD A,#6C :XOR (HL):LD (HL),A RET TSh2 LD A,#10:XOR (HL):LD (HL),A:INC H LD A,#28:XOR (HL):LD (HL),A:INC H LD A,#44:XOR (HL):LD (HL),A:INC H LD A,#82:XOR (HL):LD (HL),A:INC H LD A,#44:XOR (HL):LD (HL),A:INC H LD A,#28:XOR (HL):LD (HL),A:INC H LD A,#10 :XOR (HL):LD (HL),A RET TSh3 INC H LD A,#10:XOR (HL):LD (HL),A:INC H LD A,#38:XOR (HL):LD (HL),A:INC H LD A,#38:XOR (HL):LD (HL),A:INC H LD A,#10:XOR (HL):LD (HL),A RET TSh4a LD A,#03:XOR (HL):LD (HL),A:DEC H LD A,#0E:XOR (HL):LD (HL),A:DEC H LD A,#03:XOR (HL):LD (HL),A:RET TSh4b LD A,#FF:XOR (HL):LD (HL),A:INC H LD A,#AA:XOR (HL):LD (HL),A:INC H LD A,#FF:XOR (HL):LD (HL),A:RET TSh4c LD A,#80:XOR (HL):LD (HL),A:DEC H LD A,#E0:XOR (HL):LD (HL),A:DEC H LD A,#80:XOR (HL):LD (HL),A:RET TSh4 INC H:INC H LD A,L:AND #1F:JR Z TSh4L:CP #1F:JR Z TSh4R CALL TSh4b:DEC L:CALL TSh4a:INC L:INC L:INC H INC H:JP TSh4c TSh4L CALL TSh4b:INC L:JP TSh4c TSh4R CALL TSh4b:DEC L:JP TSh4a ManM LD A,(IX+#B) CP 2 RET C JR Z MM2 LD L,(IX+1) LD E,(IX+2) LD H,MountH/256 LD A,(HL) SUB E CP #FF CALL Z MMfd CP 1 JR NZ MM1 LD A,E INC H LD A,(HL) AND #80 OR E LD (HL),A LD (IX+6),66 LD (IX+#B),0 RET MMfd LD B,A:LD A,(IX+6):CP 15:LD A,B RET NC:CALL AddEx CALL KillMan INC H:LD (HL),#FF POP AF:BIT 1,(IX):LD (IX),1:RET Z:LD L,(IX+9) LD H,(IX+10):JP ManSh MM1 DEC (IX+2) DEC (IX+6) MM1a LD A,(IX+2) INC H LD A,(HL) AND #80 OR (IX+2) LD (HL),A RET MM2 LD L,(IX+1) LD H,ManH/256 LD A,(HL) AND #7F LD B,A DEC H LD A,(HL) DEC A CP B JR Z MM2Fini JR C MM1 INC (IX+2) JR MM1a MM2Fini LD (IX+#B),0 RET TM0 LD L,(IX+#C) LD H,(IX+#D) LD A,(HL) AND #80 LD (HL),A PUSH HL POP HL LD A,(IX+#B) OR A JR Z TM0MAll CP 1 JP Z TM0SwoopDown CP 2 JP Z TM0CarryUp CP 3 JP Z TM0Mutant JR TM0X TM0MAll LD L,(IX+1) LD E,(IX+2) LD H,MountH/256+1 BIT 7,(HL) JR Z TM0MAMF DEC H CALL TM0MA0 LD A,E OR A JP M TM0MAll CP 21;^ JR NC TM0X LD A,BigMaze/256 ADD A,E LD H,A LD A,(HL) CP 2:CALL Z SpHit OR A JR NZ TM0X LD (IX+1),L LD (IX+2),E TM0X1 LD (IX+#C),L LD (IX+#D),H TM0X LD L,(IX+#C) LD H,(IX+#D) LD A,(HL) OR (IX+18) LD (HL),A MManX JP DSetRad:RET TM0MAMF INC (IX+#B) SET 7,(HL) CALL FindManEnt PUSH IY:POP HL LD (IX+#F),L LD (IX+#10),H LD (IX+6),30 JR TM0X FindManEnt LD IY,TgTl LD B,37 LD DE,tw FMEloop LD A,(IY+17) CP 8 JR NZ FMEloopEnd BIT 0,(IY+0) JR NZ FMEloopEnd LD A,(IY+1) CP L JR NZ FMEloopEnd RET FMEloopEnd ADD IY,DE DJNZ FMEloop LD IY,0 RET TM0SwoopDown LD L,(IX+1) LD H,ManH/256 LD A,(HL) INC A JR Z TM0SDX AND #7F CP (IX+2) JR Z TM0SDEnd JP P TM0X LD A,(IX+2) ADD A,BigMaze/256-1 LD H,A LD A,(HL) AND #7F CP 2 CALL Z SpHit OR A JR NZ TM0X DEC (IX+2) JR TM0X1 TM0SDEnd INC (IX+#B) LD L,(IX+#F) LD H,(IX+#10) PUSH HL POP IY LD (IY+#B),1 PUSH IX POP HL LD (IY+#F),L LD (IY+#10),H CALL ManSd JP TM0X TM0SDX LD (IX+#B),0 JP TM0X TM0CarryUp LD L,(IX+1) LD A,(IX+2) CP 20 ;^ JR Z TM0CarryUpEnd ADD A,BigMaze/256+1 LD H,A LD A,(HL) AND #7F CP 2 CALL Z SpHit OR A JP NZ TM0X INC (IX+2) PUSH HL PUSH IX LD L,(IX+#F) LD H,(IX+#10) PUSH HL POP IX INC (IX+2) LD A,(IX+2):OR #80 LD L,(IX+1) LD H,ManH/256 LD (HL),A POP IX POP HL JP TM0X1 TM0CarryUpEnd INC (IX+#B) CALL KillMan LD (IX+6),1 LD (IX+19),#46 LD L,(IX+#F) LD H,(IX+#10) PUSH IX PUSH HL POP IX BIT 1,(IX):JR Z TM0CE1:LD L,(IX+9):LD H,(IX+10) LD E,(IX+3):LD D,(IX+4):CALL CallDE RES 1,(IX) TM0CE1 SET 0,(IX+0) LD L,(IX+1) LD H,ManH/256 LD (HL),#FF POP IX JP TM0X TM0Mutant CALL MutSd:LD A,R CP #30 JR C SillyMutant CALL T0Mut MutCode LD A,D:CP 1:JP C TM0X CP 21;^ JP NC TM0X LD A,BigMaze/256 ADD A,D LD H,A LD L,E LD A,(HL) AND #7F CP 2:CALL Z SpHit OR A JP NZ TM0X LD (IX+2),D LD (IX+1),E JP TM0X1 T0Mut LD A,(Sp0) SUB (IX+1) LD E,A JP P T0Mut1 NEG T0Mut1 LD B,A LD A,(SpY) SUB (IX+2) LD D,A JR NC T0Mut2 NEG T0Mut2 SUB B JR C T0Mut3 LD E,(IX+1) BIT 7,D LD D,(IX+2) JR NZ T0Mut2A INC D INC D T0Mut2A DEC D RET T0Mut3 LD D,(IX+2) BIT 7,E LD E,(IX+1) JR NZ T0Mut3A INC E INC E T0Mut3A DEC E RET SillyMutant LD D,(IX+2) LD E,(IX+1) LD A,R AND #F BIT 0,A JR NZ,MCode2 BIT 1,A JR NZ,MCode1 DEC D DEC D MCode1 INC D MCode2 BIT 2,A JP NZ,MutCode BIT 3,A JR NZ,MCode3 DEC E DEC E MCode3 INC E JP MutCode TM0MA0 LD A,R AND #7 CP 2 JR C TM0MA1b CP 3 JR C TM0MA1a LD A,(IX+#E) OR A JR Z TM0MA1 INC L INC L TM0MA1 DEC L JR TM0MA1b TM0MA1a LD A,(IX+#E) OR A JR NZ TM0MA1 INC L TM0MA1b LD A,(HL) INC A:INC A SUB E JR Z TM0MA2 JR C TM0MA3 INC E RET TM0MA2 LD A,R AND #1 RET NZ TM0MA4 INC E RET TM0MA3 LD A,R AND #3 JR Z TM0MA4 CP 1 RET Z DEC E RET TM1 LD L,(IX+#C) LD H,(IX+#D) LD A,(HL) AND #80 LD (HL),A PUSH HL LD B,(IX+1) LD L,(IX+2) POP HL CALL TM1Bomber LD A,BigMaze/256 ADD A,E LD H,A LD A,(HL) AND #7F CP 2:CALL Z SpHit OR A JP NZ TM0X LD A,(IX+1):LD (IX+37),A LD A,(IX+2):LD (IX+38),A LD A,(IX+#D):LD (IX+39),A LD (IX+1),L LD (IX+2),E JP TM0X1 TM1Bomber LD L,(IX+1) LD E,(IX+2) LD A,(IX+#E) OR A JR NZ TM1a INC L INC L TM1a DEC L DEC E RET NZ LD E,20;^ RET InvertCell0 LD B,(IX+1) LD L,(IX+2) InvertCell LD A,(V0):SUB B:NEG:CP 32:RET NC LD H,0:ADD HL,HL:LD DE,ConYT ADD HL,DE ADD A,(HL) INC HL LD H,(HL) LD L,A LD E,(IX+3) LD D,(IX+4) PUSH DE RET InitLine LD (IY+20),1 LD (IY+21),1 LD A,L SUB E LD L,A JP Z ILine1A JP P ILine1 NEG LD (IY+20),#FF ILine1 LD E,A LD A,H SUB D LD H,A JP Z ILine2A JP P ILine2 NEG LD (IY+21),#FF ILine2 LD D,A SUB E JR NC ILine3 LD (IY+22),E LD (IY+25),E SRA E LD (IY+23),E LD (IY+24),D LD A,(IY+20) LD (IY+26),A LD (IY+27),0 INC (IY+22) RET ILine3 EQU $ LD (IY+22),D LD (IY+25),D SRA D LD (IY+23),D LD (IY+24),E LD A,(IY+21) LD (IY+27),A LD (IY+26),0 INC (IY+22) RET ILine1A LD (IY+20),0 JR ILine1 ILine2A LD (IY+21),0 JR ILine2 NextPoint DEC (IX+22) JR NZ NextPointA SCF:RET NextPointA LD A,(IX+23) SUB (IX+24) LD (IX+23),A JP P NextPoint1 LD A,(IX+28) ADD A,(IX+20) LD (IX+28),A LD L,A LD A,(IX+29) ADD A,(IX+21) LD (IX+29),A LD H,A LD A,(IX+23) ADD A,(IX+25) LD (IX+23),A OR A RET NextPoint1 LD A,(IX+28) ADD A,(IX+26) LD (IX+28),A LD L,A LD A,(IX+29) ADD A,(IX+27) LD (IX+29),A LD H,A OR A RET ShootIN LD A,(Sp0) SUB (IX+1) JP P Sh1 NEG Sh1 CP 40 RET NC CALL FTTSPj RET C CALL ProjSd LD A,(Sp0) SUB (IX+1) LD L,A LD A,(SpY) LD H,A LD D,(IX+2) LD E,0 CALL InitLine LD (IY+28),2 LD (IY+29),2 LD A,(IX+1) LD (IY+30),A LD (IY+1),A LD A,(IX+2) LD (IY+31),A LD (IY+2),A LD (IY+5),1 LD (IY+6),1 LD (IY+3),PjSh1&#FF LD (IY+4),PjSh1/256 LD (IY+7),ProjM&#FF LD (IY+8),ProjM/256 LD (IY+17),9 LD (IY+0),0 LD (IY+19),#46 LD A,R AND #78 JR Z ShootIN1 LD (IY+22),118 ShootINRet PUSH IX PUSH IY POP IX CALL NextP CALL NC DoP POP IX RET ShootIN1 EQU $ SLA (IY+20):SLA (IY+21):SLA (IY+26) SLA (IY+27) LD (IY+22),56 JR ShootINRet ShootIN2 LD A,(IY+20):ADD A,A:ADD A,(IY+20) LD (IY+20),A LD A,(IY+21):ADD A,A:ADD A,(IY+21) LD (IY+21),A LD A,(IY+26):ADD A,A:ADD A,(IY+26) LD (IY+26),A LD A,(IY+27):ADD A,A:ADD A,(IY+27) LD (IY+27),A LD (IY+22),38:JR ShootINRet ProjM BIT 1,(IX) JR Z ProjM2 LD L,(IX+9):LD H,(IX+10):RES 1,(IX) CALL PjSh ProjM2 CALL NextP JR NC DoP ProjM1 SET 0,(IX+0):RET DoP LD A,(V0) LD B,A LD A,(IX+1) SUB B CP 32 RET NC LD L,(IX+2) LD H,0 ADD HL,HL LD DE,ConYT ADD HL,DE ADD A,(HL) INC HL LD H,(HL) LD L,A LD (IX+9),L:LD (IX+10),H:SET 1,(IX) CALL PjSh LD A,(SpY) CP (IX+2) RET NZ LD A,(Sp0) SUB (IX+1) NEG CP 2 RET NC SpHit PUSH AF:LD A,1:LD (Killed),A:LD (EndF),A POP AF:RET NextP CALL NextPoint RET C LD A,(IX+28) SRA A SRA A ADD A,(IX+30) LD (IX+1),A LD A,(IX+29) SRA A SRA A ADD A,(IX+31) LD (IX+2),A OR A JP P NextP1 SCF RET NextP1 CP 21;^ CCF RET PjSh LD A,(IX+29) AND 3 ADD A,A SUB H NEG ADD A,6 LD H,A LD A,(IX+28) AND 3 LD E,A LD D,Garb/256 LD A,(DE) XOR (HL) LD (HL),A INC H LD A,(DE) XOR (HL) LD (HL),A PjSh1 RET MoveProj LD IX,TgTl+2048+256 LD B,5 MovPj BIT 0,(IX+0) JR NZ MovPj1 DEC (IX+5) JR NZ MovPj1 LD A,(IX+6):LD (IX+5),A PUSH BC:CALL ProjM:POP BC MovPj1 LD DE,tw:ADD IX,DE DJNZ MovPj RET BombIN LD A,R:AND 7:RET NZ:CALL FTTSB:RET C LD L,(IX+37):LD (IY+#C),L LD H,(IX+39):LD (IY+#D),H LD A,(HL):OR A:RET NZ LD (IY),0 LD (IY+#11),10 LD A,(EntryNo):LD (IY+18),A OR (HL):LD (HL),A LD (IY+19),#45 LD (IY+#E),40 LD (IY+5),15:LD (IY+6),20 LD (IY+3),BbSp&#FF:LD (IY+4),BbSp/256 LD (IY+7),BbM&#FF:LD (IY+8),BbM/256 LD B,(IX+37):LD (IY+1),B LD L,(IX+38):LD (IY+2),L RET BbSp INC H:INC H LD A,(HL):XOR #3C:LD (HL),A:INC H LD A,(HL):XOR #24:LD (HL),A:INC H LD A,(HL):XOR #24:LD (HL),A:INC H LD A,(HL):XOR #3C:LD (HL),A RET BbSp1 INC H:INC H:INC H LD A,(HL):XOR #18:LD (HL),A:INC H LD A,(HL):XOR #18:LD (HL),A:RET BbM LD L,(IX+#C):LD H,(IX+#D) LD A,(IX+18):OR (HL):LD (HL),A LD L,(IX+9):LD H,(IX+10) LD E,(IX+3):LD D,(IX+4):BIT 1,(IX):CALL NZ CallDE LD A,(IX+#B):INC A:AND 3 LD (IX+#B),A:ADD A,A:ADD A,4:LD L,A LD H,BVec/256:LD A,(HL):LD (IX+3),A INC L:LD A,(HL):LD (IX+4),A DEC (IX+#E):JP NZ BbM1 LD L,(IX+#C):LD H,(IX+#D) LD A,(HL):AND #80:LD (HL),A LD (IX),1 RET BbM1 BIT 1,(IX):RET Z:LD L,(IX+9):LD H,(IX+10) LD E,(IX+3):LD D,(IX+4):PUSH DE:RET TM2 LD L,(IX+#C):LD H,(IX+#D):LD A,(HL) AND #80:LD (HL),A TM2a DEC (IX+22):JR Z TM2to LD A,(IX+23):SUB (IX+24) LD (IX+23),A:JP P TM21 LD A,(IX+1):ADD A,(IX+20):LD L,A LD A,(IX+2):ADD A,(IX+21):LD H,A LD A,(IX+23):ADD A,(IX+25) LD (IX+23),A JP TM22 TM22a LD H,20:JR TM22b;^ TM21 LD A,(IX+1):ADD A,(IX+26):LD L,A LD A,(IX+2):ADD A,(IX+27):LD H,A TM22 LD A,H:OR A:JR Z TM22a:CP 21;^ JR NZ TM22b:LD H,1 TM22b LD B,H:LD A,BigMaze/256:ADD A,H:LD H,A LD A,(HL):AND #7F:CP 2 CALL Z SpHit:OR A:JR NZ TM2to LD A,(HL):AND #80:OR (IX+18) LD (HL),A:LD (IX+2),B:LD (IX+1),L LD (IX+#C),L:LD (IX+#D),H JP DSetRad TM2to PUSH IX:POP IY:LD A,(SpY):LD H,A LD A,R:AND #F:SUB 7:ADD A,H:LD H,A LD A,(Sp0):LD L,A:LD E,(IX+1) LD A,R:AND #F:SUB 7:ADD A,L:LD L,A LD D,(IX+2):CALL InitLine LD (IX+22),40 LD L,(IX+#C):LD H,(IX+#D):LD A,(HL) AND #80:OR (IX+18):LD (HL),A JP DSetRad ClLrs LD HL,LrTl LD DE,LrTl+1 LD BC,#FF LD (HL),1 LDIR RET MSp PUSH IX PUSH IY PUSH HL PUSH DE PUSH BC PUSH AF CALL RemoveFromBM CALL MSp3 LD HL,(pRateTl) LD A,(HL) OR A PUSH HL CALL MSp1 POP HL LD A,(SRt) OR A JR NZ MShack1 LD A,(HL) OR A PUSH AF CALL P DecRight POP AF CALL M DecLeft CALL TryIncLeft CALL TryIncRight LD (pRateTl),HL MShack1 CALL PlInBM CALL Bumping CALL Ex CALL SpsAttr CALL RadLp LD A,(SmartF):OR A:CALL NZ SBb CALL IntJP POP AF POP BC POP DE POP HL POP IY POP IX EI RETI SBb XOR A:LD (SmartF),A:LD IX,TgTl+1024 CALL nSBombs:OR A:RET Z LD DE,tw LD B,20 SBl BIT 0,(IX):JR NZ SBe BIT 1,(IX) JR Z SBe CALL KIta SBe ADD IX,DE DJNZ SBl CALL SBombsd RET MSp3 LD A,(LeftF) LD B,A LD A,(RightF) XOR B RET Z LD A,B LD (SpDirX),A RET MSp1 EQU $ CALL M MShLeft CALL P MShRight CALL NewScreen CALL Slew CALL DrawScreen CALL ClDList CALL MoveProj LD A,(SpDirX) OR A LD HL,SpShL JR NZ MSp2 LD HL,SpShR MSp2 LD (cSpSh),HL CALL PlDList LD BC,(RadSp) CALL CRadSp OR A:SBC HL,BC:CALL NZ ShipChg CALL PlRest RET ShipChg LD A,(BC):XOR #C0:LD (BC),A:ADD HL,BC LD A,(HL):XOR #C0:LD (HL),A:RET CRadSp LD A,(SpY):LD L,A:LD H,0:ADD HL,HL LD DE,ConRT:ADD HL,DE:LD A,(HL):INC HL LD H,(HL):LD L,A:LD DE,16:ADD HL,DE LD (RadSp),HL:RET RadLp LD A,(RadWld):DEC A:LD (RadWld),A:RET NZ LD A,2:LD (RadWld),A LD IX,TgTl+1024 LD DE,tw LD B,20 RadLp1 BIT 0,(IX):JR NZ RadE LD L,(IX+34):LD H,(IX+35):LD A,(IX+36):XOR (HL) LD (HL),A:CALL RadWeld:XOR (HL):LD (HL),A LD DE,tw RadE ADD IX,DE DJNZ RadLp1 RET Bumping LD H,MountH/256 LD A,(Sp0) LD L,A LD A,(SpY) DEC A CP (HL) CALL NC Bumping1 CALL C Dropping INC L CP (HL) CALL NC Bumping1 CALL C Dropping RET Dropping PUSH HL PUSH AF LD A,(nMenCarried) OR A JR Z DroppingX INC H BIT 7,(HL) JR Z DroppingX CALL FTTSMn JR C DroppingX CALL ManDrop LD A,(SpY) LD (HL),A LD A,(nMenCarried) DEC A LD (nMenCarried),A LD (IX+0),0 LD (IX+1),L LD A,(SpY) LD (IX+2),A LD HL,ManSh LD (IX+3),L LD (IX+4),H LD (IX+5),1 LD (IX+6),66 LD HL,ManM LD (IX+7),L LD (IX+8),H LD (IX+#B),2 LD (IX+17),8 LD (IX+19),7 LD A,(EntryNo) LD (IX+18),A DroppingX POP AF POP HL RET Bumping1 PUSH HL PUSH AF LD A,(SpY) LD B,A INC H LD A,(HL) AND #7F CP B JR NZ Bump1X LD (HL),#FF CALL FindManEnt CALL ManGrab SET 0,(IY) BIT 1,(IY):JR Z Bum LD L,(IY+9):LD H,(IY+10):RES 1,(IY):CALL ManSh Bum LD A,(IY+#B) CP 1 JR NZ Bump1a LD L,(IY+#F) LD H,(IY+#10) PUSH HL POP IX LD (IX+#B),0 Bump1a LD A,(nMenCarried) INC A LD (nMenCarried),A Bump1X POP AF POP HL RET AddEx CALL ExplSd:CALL FindExSpace RET C LD D,(IX+1) LD E,(IX+2) RES 2,(IY+0) LD BC,0 INC C CALL DWexpl1 INC B CALL DWexpl1 DEC C CALL DWexpl1 DEC C CALL DWexpl1 DEC B CALL DWexpl1 DEC B CALL DWexpl1 INC C CALL DWexpl1 INC C DWexpl1 RES 0,(IY+0) LD (IY+3),C LD (IY+4),B LD (IY+1),E LD (IY+2),D LD (IY+7),0 LD (IY+5),1 LD (IY+8),6 LD (IY+9),2 LD (IY+10),1 PUSH DE LD DE,16 ADD IY,DE POP DE RET Ex LD IX,ExTabl LD DE,16 LD B,40 ExLoop CALL Exp ADD IX,DE DJNZ ExLoop RET Exp BIT 0,(IX+0) RET NZ LD L,(IX+6) LD H,(IX+7) CALL ExSh1 DEC (IX+5) JR NZ Ex1 LD A,(IX+9) ADD A,(IX+10) LD (IX+9),A LD A,(IX+9) SRA A LD (IX+5),A DEC (IX+8) JR Z ExEnd LD A,(IX+2) ADD A,(IX+4) LD (IX+2),A LD A,(IX+1) ADD A,(IX+3) LD (IX+1),A Ex1 PUSH BC CALL ExCalcAdd POP BC LD DE,16 LD (IX+6),L LD (IX+7),H CALL C ExSh1 RET ThingTab EQU $ DEFW TSh0,TM0:DEFB 0,0,1,#44 DEFW TSh1,TM1:DEFB 0,0,2,#45 DEFW TSh2,TM2:DEFB 0,0,3,#45 DEFW TSh4,TM2:DEFB 1,0,4,#43 DEFW TSh0,TM0:DEFB 1,3,1,#46 DEFW ManSh,ManM:DEFB 66,0,10,#07;Not here ! ExEnd SET 0,(IX+0) BIT 2,(IX+0) RET Z PUSH BC PUSH DE PUSH IX POP IY LD A,(IY+11):CP 6:JP Z ExEMan CALL FTTSTg JP C ExEnd1 LD A,(IY+11):DEC A LD L,A:LD H,0:ADD HL,HL:ADD HL,HL ADD HL,HL:LD DE,ThingTab:ADD HL,DE LD A,(HL):INC HL:LD (IX+3),A LD A,(HL):INC HL:LD (IX+4),A LD A,(HL):INC HL:LD (IX+7),A LD A,(HL):INC HL:LD (IX+8),A LD B,(HL):INC HL:LD (IX+6),B LD A,(HL):INC HL:LD (IX+#B),A LD A,(HL):INC HL:LD (IX+#11),A LD A,(HL):LD (IX+#13),A LD A,B:OR A:JR NZ ExHEnd1:LD A,R:AND #1F:ADD A,14 LD (IX+6),A ExHEnd1 LD (IX+5),1 LD A,(IY+2) LD (IX+1),A LD B,(IY+1) LD (IX+2),B LD A,(EntryNo) LD (IX+18),A LD A,R AND #1 LD (IX+#E),A LD (IX+0),0 LD (IX+10),0 LD L,(IX+2) LD A,(V0) LD B,A LD A,(IX+1) SUB B CP 32 JR NC ExEnd1 LD H,0 ADD HL,HL LD DE,ConYT ADD HL,DE ADD A,(HL) INC HL LD H,(HL) LD L,A LD E,(IX+3) LD D,(IX+4) CALL CallDE CALL ClRest ExEnd1 CALL SetRad LD L,(IX+1):LD A,(IX+2):ADD A,BigMaze/256:LD H,A LD A,(HL):AND #7F:JR NZ ExEnd2 LD A,(HL):OR (IX+18):LD (HL),A LD (IX+#C),L:LD (IX+#D),H ExEnd2 PUSH IY:POP IX POP DE POP BC RET ExCalcAdd LD A,(V0) LD B,A LD A,(IX+2) LD HL,0 SUB B CP 32 RET NC PUSH AF LD A,(IX+1) OR A JP M ExCA1 CP 21;^ JR NC ExCA1 AND #1F LD L,A POP AF LD H,0 ADD HL,HL LD DE,ConYT ADD HL,DE ADD A,(HL) INC HL LD H,(HL) LD L,A SCF RET ExCA1 POP AF OR A RET ExSh1 INC H INC H INC H LD A,#18:XOR (HL):LD (HL),A:INC H LD A,#18:XOR (HL):LD (HL),A RET ExEMan CALL CrMan PUSH IY:POP IX POP DE POP BC RET Wm PUSH DE:CALL GetMSpace:POP DE DEC A JR Wu W PUSH DE:CALL FindExSpace:POP DE RET C LD A,D:CP 6:JR Z Wm PUSH DE:CALL GetTSpace:POP DE Wu LD (IY+11),D SET 2,(IY+0) ADD A,7 LD C,A LD DE,#00FF CALL DWW INC D LD A,B SUB 7 LD B,A CALL DWW INC E LD A,C SUB 7 LD C,A CALL DWW INC E LD A,C SUB 7 LD C,A CALL DWW DEC D LD A,B ADD A,7 LD B,A CALL DWW DEC D LD A,B ADD A,7 LD B,A CALL DWW DEC E LD A,C ADD A,7 LD C,A CALL DWW DEC E LD A,C ADD A,7 LD C,A DWW RES 0,(IY+0) LD (IY+1),B LD (IY+2),C LD (IY+3),D LD (IY+4),E LD (IY+5),9 LD (IY+8),7 LD (IY+9),9 LD (IY+10),#FF LD (IY+7),0 PUSH DE LD DE,16 ADD IY,DE POP DE RET InitEx LD IX,ExTabl LD B,40 LD DE,16 InitExloop LD (IX+0),1 ADD IX,DE DJNZ InitExloop RET FindExSpace LD IY,ExTabl LD DE,16 LD B,40 FESloop OR A:BIT 0,(IY+0) RET NZ ADD IY,DE DJNZ FESloop SCF RET DecRight OR A RET Z LD A,(RightF) OR A RET NZ DEC HL RET DecLeft OR A RET Z LD A,(LeftF) OR A RET NZ INC HL RET TryIncLeft LD A,(LeftF) OR A RET Z XOR A:LD (LeftF),A DEC HL LD A,(HL) CP #FF RET NZ INC HL RET TryIncRight LD A,(RightF) OR A RET Z XOR A:LD (RightF),A INC HL LD A,(HL) CP #FF RET NZ DEC HL RET NewScreen LD HL,(pRateTl) LD A,(HL) OR A RET Z LD A,(nDir) OR A CALL NZ StepNPLeft JP Z StepNPRight RET Slew LD A,(SpDirX):OR A LD C,4:JR Z SlewL:LD C,27 SlewL LD A,(nV0) LD B,A LD A,(nSp0) SUB B CP C Slew1 RET Z CALL C StepNPLeft JP NC StepNPRight RET DrawScreen CALL DWupdown CALL FireIfNess LD IX,(pNewPos) LD IY,(pOP) LD DE,0 NSloop LD L,(IY) LD H,(IY+1) ADD HL,DE LD C,(IY+2) LD B,(IY+3) CALL CallBC LD L,(IX) LD H,(IX+1) ADD HL,DE LD C,(IX+2) LD B,(IX+3) CALL CallBC LD L,(IX+4) LD H,(IX+5) ADD HL,DE LD (HL),7 LD BC,8 ADD IX,BC ADD IY,BC INC E LD A,E CP 32 JR NZ NSloop LD HL,(pNewPos) LD (pOP),HL LD IX,LrTl LD DE,16 LD B,6 DWLloop BIT 0,(IX+0) CALL Z DWLdoit ADD IX,DE DJNZ DWLloop RET DWLdoit PUSH DE PUSH BC LD A,(V0) CALL DrawLr DEC (IX+9) JR NZ DWLdoit1 LD (IX+9),1 LD L,(IX+7) LD H,(IX+8) CALL CallHL DWLdoit1 BIT 0,(IX+0) LD A,(nV0) CALL Z DrawLr POP BC POP DE RET DrawLr LD B,A LD L,(IX+2) LD H,(IX+3) LD A,(IX+4) LD C,A SUB (IX+5) RET Z NEG LD E,A LD A,C SUB B JP M DrawLr1 CP 32 RET NC LD C,A ADD A,E CP 32 JR C DrawLr2 LD A,32 DrawLr2 SUB C LD B,A LD A,C ADD A,L LD L,A DrawLr3a LD C,B LD E,L DrawLr3 LD A,(HL) XOR #66 LD (HL),A INC L DJNZ DrawLr3 LD L,(IX+1) LD H,0 ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL LD A,E LD DE,#5B00 AND #1F EX DE,HL SBC HL,DE LD E,A LD D,0 ADD HL,DE LD B,C DrawLA LD (HL),7 INC L DJNZ DrawLA RET DrawLr1 ADD A,E RET M RET Z LD B,A:CP 32 JR C DrawLr3a LD B,32 JR DrawLr3a IncLrR LD A,(IX+4) LD B,(IX+5) INC A INC B CALL HitTB INC B CALL HitTB LD (IX+4),A LD (IX+5),B SUB B NEG CP 16 RET C LD HL,DecLrR LD (IX+7),L LD (IX+8),H RET HitTA LD H,(IX+#A) LD L,A LD A,(HL) AND #7F LD A,L RET Z CALL KIt LD A,L RET DecLrR LD A,(IX+4) LD B,(IX+5) INC A CALL HitTA INC A CALL HitTA INC B LD (IX+4),A LD (IX+5),B SUB B RET NZ SET 0,(IX+0) RET HitTB LD H,(IX+#A) LD L,B:LD C,A LD A,(HL) AND #7F LD A,C RET Z CALL KIt LD A,C RET KIta PUSH HL:PUSH DE:PUSH BC:PUSH AF:PUSH IX LD L,(IX+12):LD H,(IX+13):LD (HL),0:JR KItb KIt PUSH HL:PUSH DE:PUSH BC:PUSH AF PUSH IX:LD A,(HL) LD B,A AND #80 LD (HL),A LD A,B LD H,pTgT/256 AND #7F LD L,A LD E,(HL) INC H LD D,(HL) PUSH DE POP IX KItb BIT 0,(IX):JP NZ Error LD A,(IX+17) CP 10 JR Z KItE1 CP 3:JP Z KIpod SET 0,(IX) LD L,(IX+34):LD H,(IX+35):LD A,(IX+36):XOR (HL) LD (HL),A LD A,(IX+1) LD L,(IX+2) CALL AddEx LD A,(IX+17):LD DE,1 CP 1 JR NZ ScorD LD A,(IX+11):CP 3:JR NZ ScorC LD DE,5 ScorC CALL AddScore BIT 1,(IX):RES 1,(IX):JR Z KIt1 LD L,(IX+9):LD H,(IX+10) LD E,(IX+3) LD D,(IX+4) CALL CallDE KIt1 LD A,(IX+#B) OR A JR Z KItE DEC A JR Z KItCMFSD DEC A JR Z KItCMFSD KItE POP IX:POP AF:POP BC:POP DE:POP HL RET ScorD CP 4:JR C ScorC LD DE,3:JR ScorC KItE1 LD L,(IX+#C):LD H,(IX+#D) LD A,(IX+18):OR (HL):LD (HL),A JR KItE KItCMFSD LD L,(IX+#F) LD H,(IX+#10) PUSH HL POP IY LD (IY+#B),3 LD (IY+5),24:LD (IY+6),24 JR KItE KIpod BIT 1,(IX):LD (IX),0:LD (IX+5),1:LD (IX+6),2 JR Z KIpoda LD L,(IX+9):LD H,(IX+10):CALL TSh2 KIpoda LD (IX+17),7 LD (IX+3),TSh3&#FF LD (IX+4),TSh3/256 LD (IX+19),#45 LD L,(IX+34):LD H,(IX+35):LD A,(IX+36):XOR (HL) LD (HL),A:LD (IX+35),0 PUSH IX:POP IY LD B,5 KIPl PUSH BC CALL FTTSTg JR C KIPx PUSH IY:POP HL:PUSH IX:POP DE LD BC,tw:LDIR:LD A,(EntryNo) LD (IX+18),A POP BC DJNZ KIPl JP KItE KIPx POP BC JP KItE Error LD HL,0:LD DE,#4000:LD BC,#1800:LDIR DI:JP 0 IncLrL LD A,(IX+4) LD B,(IX+5) DEC A CALL HitTA DEC A CALL HitTA DEC B LD (IX+4),A LD (IX+5),B SUB B NEG CP 16 RET C LD HL,DecLrL LD (IX+7),L LD (IX+8),H RET DecLrL LD A,(IX+4) LD B,(IX+5) DEC A DEC B CALL HitTB DEC B CALL HitTB LD (IX+4),A LD (IX+5),B SUB B RET NZ SET 0,(IX+0) RET FindLrSp LD IX,LrTl LD DE,16 LD B,6 OR A FLSloop BIT 0,(IX) RET NZ ADD IX,DE DJNZ FLSloop SCF RET FireIfNess LD A,(FireF) OR A RET Z CALL FireSd XOR A LD (FireF),A CALL FindLrSp LD A,(SpDirX) OR A LD A,(Sp0) JR Z FIN1 INC A FIN2 LD (IX+4),A LD (IX+5),A LD A,(SpY) LD (IX+1),A LD L,A ADD A,BigMaze/256 LD (IX+#A),A LD H,0 ADD HL,HL LD DE,ConYT ADD HL,DE LD A,(HL) LD (IX+2),A INC HL LD A,(HL) ADD A,5 LD (IX+3),A CALL WhichM LD (IX+7),L LD (IX+8),H LD (IX+0),0 LD (IX+9),1 LD (IX+9),1 RET FIN1 INC A JR FIN2 WhichM LD HL,IncLrR LD A,(SpDirX) OR A RET Z LD HL,IncLrL RET PutTT LD A,(HL) CPL LD (HL),A RET PutBT LD A,1:XOR (HL):LD (HL),A INC H LD A,2:XOR (HL):LD (HL),A INC H LD A,4:XOR (HL):LD (HL),A INC H LD A,8:XOR (HL):LD (HL),A INC H LD A,#10:XOR (HL):LD (HL),A INC H LD A,#20:XOR (HL):LD (HL),A INC H LD A,#40:XOR (HL):LD (HL),A INC H LD A,#80:XOR (HL):LD (HL),A RET PutMB SET 2,H PutTM LD A,#C0:XOR (HL):LD (HL),A INC H LD A,#30:XOR (HL):LD (HL),A INC H LD A,#0C:XOR (HL):LD (HL),A INC H LD A,#03:XOR (HL):LD (HL),A RET PutMM INC H INC H INC H LD A,(HL):CPL:LD (HL),A RET PutBM SET 2,H PutMT LD A,#03:XOR (HL):LD (HL),A INC H LD A,#0C:XOR (HL):LD (HL),A INC H LD A,#30:XOR (HL):LD (HL),A INC H LD A,#C0:XOR (HL):LD (HL),A INC H RET PutTB LD A,#80 :XOR (HL):LD (HL),A INC H LD A,#40 :XOR (HL):LD (HL),A INC H LD A,#20 :XOR (HL):LD (HL),A INC H LD A,#10 :XOR (HL):LD (HL),A INC H LD A,#08 :XOR (HL):LD (HL),A INC H LD A,#04 :XOR (HL):LD (HL),A INC H LD A,#02 :XOR (HL):LD (HL),A INC H LD A,#01 :XOR (HL):LD (HL),A RET PutBB LD A,H ADD A,7 LD H,A LD A,(HL):CPL:LD (HL),A RET DWupdown LD A,(UpF) LD B,A LD A,(DownF) XOR B JR Z DWudexit LD A,B OR A PUSH AF CALL NZ MSpUp POP AF CALL Z MSpDown DWudexit XOR A LD (UpF),A LD (DownF),A RET MSpUp LD A,(nInts):BIT 0,A:RET Z LD A,(SpY) INC A CP 21;^ RET Z LD (nSpY),A RET MSpDown LD A,(nInts):BIT 0,A:RET Z LD A,(SpY) DEC A OR A RET Z LD (nSpY),A RET CrTl CALL ClBigMaze LD IX,OldDTl LD IY,DTl LD BC,#100 LD DE,0 LD HL,MountH CTloop PUSH HL PUSH BC PUSH DE CALL CTEntry POP DE PUSH DE CALL BMEntry POP DE LD BC,8 ADD IY,BC INC IX INC IX INC DE POP BC POP HL LD A,(IX-2) LD (HL),A INC H OR #80 LD (HL),A DEC H CPI JP V CTloop LD HL,DTl LD DE,EndDTl LD BC,400 LDIR LD HL,EndDTl-400 LD DE,DTl-400 LD BC,200 LDIR RET BMEntry LD B,(IX) INC B LD HL,BigMaze ADD HL,DE LD DE,#100 BMEloop SET 7,(HL) ADD HL,DE DJNZ BMEloop RET CTEntry LD L,(IX) LD H,0 ADD HL,HL LD DE,ConYT ADD HL,DE LD A,(HL) LD (IY),A INC HL LD A,(HL) LD (IY+1),A LD A,(IX+1) SUB #80 LD L,A LD H,0 ADD HL,HL LD DE,AddressT ADD HL,DE LD A,(HL) LD (IY+2),A INC HL LD A,(HL) LD (IY+3),A LD L,(IX) LD H,0 ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL LD DE,#5B00 OR A EX DE,HL SBC HL,DE LD (IY+4),L LD (IY+5),H LD (IY+6),7 RET DefInts LD HL,IntTab LD DE,IntTab+1 LD BC,#100 LD (HL),#80 LDIR LD A,IntTab/256 LD I,A RET CLS LD HL,#4000 LD DE,#4001 LD BC,#1800 LD (HL),0 LDIR LD (HL),#07 LD BC,#300 LDIR LD HL,#4220:LD DE,#4221:LD BC,#1F:LD (HL),#AA LDIR LD HL,#4760:LD DE,#4761:LD BC,#1F:LD (HL),#AA LDIR LD A,0:OUT (#FE),A RET OldDTl DEFB #02,#80,#02,#80,#02,#80,#02,#80 DEFB #03,#82,#03,#80,#03,#80,#03,#86 DEFB #02,#80,#02,#80,#02,#83,#02,#81 DEFB #02,#80,#02,#80,#02,#80,#02,#80 DEFB #03,#82,#04,#82,#05,#82,#05,#86 DEFB #04,#86,#03,#86,#02,#80,#02,#80 DEFB #02,#80,#02,#80,#02,#80,#02,#80 DEFB #02,#80,#02,#80,#02,#80,#02,#80 DEFB #03,#82,#04,#85,#04,#81,#05,#82 DEFB #06,#82,#06,#80,#06,#80,#06,#83 DEFB #06,#84,#06,#84,#06,#87,#05,#86 DEFB #04,#80,#04,#80,#04,#83,#04,#84 DEFB #04,#84,#04,#87,#03,#83,#03,#87 DEFB #02,#83,#02,#84,#02,#84,#02,#84 DEFB #02,#81,#02,#80,#02,#80,#02,#80 DEFB #02,#80,#02,#80,#02,#80,#02,#80 DEFB #03,#82,#04,#82,#05,#82,#06,#82 DEFB #07,#82,#07,#80,#07,#86,#06,#86 DEFB #05,#86,#04,#86,#03,#86,#02,#80 DEFB #02,#80,#02,#80,#02,#80,#02,#80 DEFB #03,#82,#03,#80,#03,#80,#03,#80 DEFB #03,#80,#03,#80,#03,#80,#03,#80 DEFB #03,#80,#03,#80,#04,#82,#04,#80 DEFB #04,#80,#04,#80,#04,#80,#04,#80 DEFB #04,#80,#04,#80,#04,#80,#04,#80 DEFB #04,#80,#04,#80,#04,#80,#04,#80 DEFB #05,#82,#05,#80,#05,#80,#05,#80 DEFB #05,#80,#05,#80,#05,#86,#04,#86 DEFB #03,#86,#02,#80,#02,#80,#02,#80 DEFB #02,#80,#02,#80,#02,#80,#02,#80 DEFB #02,#80,#02,#80,#02,#80,#02,#80 DEFB #03,#82,#03,#86,#02,#80,#02,#80 DEFB #02,#80,#02,#80,#02,#80,#02,#80 DEFB #02,#80,#02,#80,#02,#80,#02,#80 DEFB #03,#82,#04,#82,#05,#82,#06,#82 DEFB #07,#82,#08,#82,#09,#82,#09,#86 DEFB #08,#86,#07,#86,#06,#86,#05,#86 DEFB #04,#86,#03,#86,#02,#80,#02,#80 DEFB #02,#80,#02,#80,#02,#80,#02,#80 DEFB #02,#80,#02,#80,#02,#80,#02,#80 DEFB #03,#85,#03,#81,#03,#80,#03,#80 DEFB #03,#86,#02,#80,#02,#80,#02,#80 DEFB #02,#80,#02,#80,#02,#80,#02,#80 DEFB #03,#85,#03,#84,#03,#84,#03,#81 DEFB #03,#80,#03,#83,#03,#84,#03,#87 DEFB #02,#80,#02,#80,#02,#80,#02,#80 DEFB #02,#83,#02,#87,#02,#82,#02,#80 DEFB #02,#80,#03,#85,#03,#81,#03,#80 DEFB #03,#80,#03,#80,#03,#80,#03,#80 DEFB #03,#80,#03,#80,#03,#80,#03,#80 DEFB #03,#80,#03,#80,#03,#80,#03,#80 DEFB #03,#80,#03,#80,#03,#80,#03,#80 DEFB #03,#80,#04,#82,#05,#82,#05,#86 DEFB #04,#86,#03,#80,#03,#80,#03,#80 DEFB #03,#80,#03,#80,#03,#80,#03,#80 DEFB #03,#80,#03,#80,#03,#80,#03,#80 DEFB #04,#85,#04,#84,#04,#81,#04,#80 DEFB #04,#80,#04,#80,#04,#83,#04,#84 DEFB #04,#84,#04,#87,#03,#80,#03,#80 DEFB #03,#80,#03,#80,#03,#80,#03,#80 DEFB #03,#80,#03,#80,#03,#80,#03,#80 DEFB #03,#80,#03,#80,#03,#80,#03,#80 DEFB #03,#80,#03,#80,#03,#80,#03,#83 DEFB #03,#84,#03,#84,#03,#87,#02,#80 Predef DEFW DTl DEFW DTl DEFB 0,0,0 DEFB 0,0 DEFB 0 DEFB 0 DEFB 0 DEFB 0 DEFB 0 DEFB 0 DEFB 0 DEFB 68 DEFB 0 DEFB 1 DEFB 0 DEFB 0 DEFB 16 DEFB 17 DEFB 17 DEFB 16 DEFB 16 DEFB 0 DEFB 0 DEFW SpShR DEFW 0 DEFB 0 DEFB 0 DEFB 0 DEFW 0 DEFB 0 DEFB 0 DEFB 0 DEFB 0 DEFB 0 DEFW 0 DEFB 1 DEFB 0 DEFB 0 DEFB 0 PredefE DEFW RateTl DEFS 40 RateTl DEFB 0 DEFB 3,2,2,2,1,2,1,1,2,1,1,1,2 DEFB 1,1,1,1,2,1,1,1,1,1,1,1,1 DEFB 1,1,1,1,1,1,1,1,1,1,#FF ConRT DEFW #4760,#4660,#4560,#4460 DEFW #4360,#4260,#4160,#4060 DEFW #4740,#4640,#4540,#4440 DEFW #4340,#4240,#4140,#4040 DEFW #4720,#4620,#4520,#4420 DEFW #4320,#4220,#4120,#4020 ConYT DEFW 0,#50E0,#50C0,#50A0,#5080 DEFW #5060,#5040,#5020,#5000 DEFW #48E0,#48C0,#48A0,#4880 DEFW #4860,#4840,#4820,#4800 DEFW #40E0,#40C0,#40A0,#4080 DEFW #4060,#4040,#4020,#4000,0 SpShR DEFB 0,#C0,#E0,#7F,#FF,#30, 0, 0 DEFB 0, 0, 0,#E0,#FF,#C0, 0, 0 SpShL DEFB 0, 0, 0, 7,#FF, 3, 0, 0 DEFB 0, 3, 7,#FE,#FF,#0C, 0, 0 END EQU $ ORG #BB00 ; DISP #D000 - $ pNewPos DEFW DTl pOP DEFW DTl Killed DEFB 0 EndF DEFB 0 Started DEFB 0 NoMoved DEFB 0 NoRem DEFB 0 LeftF DEFB 0 RightF DEFB 0 UpF DEFB 0 DownF DEFB 0 FireF DEFB 0 FireF1 DEFB 0 IntIngF DEFB 0 HS DEFB 68 nInts DEFB 0 SRt DEFB 1 Dir DEFB 0 nDir DEFB 0 SpX DEFB 16 Sp0 DEFB 17 nSp0 DEFB 17 SpY DEFB 16 nSpY DEFB 16 V0 DEFB 0 nV0 DEFB 0 cSpSh DEFW SpShR nSpSh DEFW 0 SppyF DEFB 0 SpDirX DEFB 0 oSpDirX DEFB 0 SpAddr DEFW 0 EntryNo DEFB 0 nMenCarried DEFB 0 BrdC DEFB 0 SmartF1 DEFB 0 SmartF DEFB 0 RadSp DEFW 0 RadWld DEFB 1 RadScr DEFB 0 RadScr1 DEFB 0 KeyS DEFB 0 pRateTl DEFW RateTl ORG $!#FF + 1 IntTab DEFS #101 DEFS 400 DTl DEFS #800 EndDTl DEFS 400 ORG $!#FF + 1 BigMaze DEFS #1800 MountH DEFS #100 ManH DEFS #100 pTgT DEFS #200 TgTl DEFS #1000 LrTl DEFS #100 ExTabl DEFS #800 ENDEND EQU $