diff --git a/artwork/weapons_AW6_mod.fnt b/artwork/weapons_AW6_mod.fnt index ac98175..251c7c7 100644 Binary files a/artwork/weapons_AW6_mod.fnt and b/artwork/weapons_AW6_mod.fnt differ diff --git a/constants.asm b/constants.asm index 33d3fec..c9972fe 100644 --- a/constants.asm +++ b/constants.asm @@ -277,6 +277,7 @@ WeaponPriceH ; weapons prices (tables with prices of weapons) .by >price_Lazy_Boy_______ .by >price_Lazy_Darwin____ .by >price_Auto_Defense___ + .by >price_Spy_Hard_______ WeaponPriceL .by $7f - run SpyHard after inventory + .DS 1 ;---------------------------------------------------- ;Erase .DS 1 ; if 1 only mask of the character is printed ; on the graphics screen. if 0 character is printed normally diff --git a/weapons.asm b/weapons.asm index 1fe901a..fbe63e6 100644 --- a/weapons.asm +++ b/weapons.asm @@ -1163,12 +1163,16 @@ callInventory jsr Purchase afterInventory jsr MakeDarkScreen - RmtSong song_ingame - mva #0 escFlag jsr DisplayStatus jsr SetMainScreen jsr WaitOneFrame jsr DrawTanks + bit SpyHardFlag + bpl NoSpyHard + jsr SpyHard +NoSpyHard + RmtSong song_ingame + mva #0 escFlag jsr WaitForKeyRelease jmp BeforeFire @ @@ -2429,6 +2433,52 @@ InverseScreenByte rts .endp ; ------------------------------------------------- +.proc SpyHard +; ------------------------------------------------- + mvx TankNr TargetTankNr ; save +RepeatSpy + mvx #0 TankNr +CheckNextTankSH + cpx TargetTankNr + beq ThisTankItsMe + lda Energy,x ; only active players + beq ThisTankIsDead + ; run SpyHard for tank in X + jsr DisplaySpyInfo + jsr FlashTank +@ jsr GetKey + bit escFlag + bmi SpyHardEnd + cmp #@kbcode._space ; $21 ; Space + beq SpyHardEnd + cmp #@kbcode._ret ; Return key (5200 - fire) + beq SpyHardEnd + cmp #@kbcode._left ; $6 + beq SelectNextTank + cmp #@kbcode._right ; $07 ; cursor right + bne @- +ThisTankIsDead +ThisTankItsMe +SelectNextTank + inc TankNr + ldx TankNr + cpx NumberOfPlayers + bne CheckNextTankSH + beq RepeatSpy +SpyHardEnd + mvx TargetTankNr TankNr ; restore + jsr DisplaySpyInfo + mva #0 SpyHardFlag + rts +.endp +.proc DisplaySpyInfo + lda TankStatusColoursTable,x + sta COLOR2 ; set color of status line + jsr PutTankNameOnScreen + jsr DisplayStatus + rts +.endp +; ------------------------------------------------- .proc TankFlying ; ------------------------------------------------- ; This routine is run from inside of the main loop