diff --git a/scorch.asm b/scorch.asm index b997d66..1d5309c 100644 --- a/scorch.asm +++ b/scorch.asm @@ -736,7 +736,6 @@ NotShooter lda Energy,x cmp EnergyDecrease bcc ldahashzero - beq ldahashzero ;sec sbc EnergyDecrease bpl NotNegativeEnergy @@ -942,7 +941,7 @@ SetunPlots ;let the tanks be visible! ldx #(maxPlayers-1) - lda #1 ; tank is visible + lda #99 ; tank is visible MakeTanksVisible sta eXistenZ,x dex diff --git a/scorch.xex b/scorch.xex index e2f4605..310e6c9 100644 Binary files a/scorch.xex and b/scorch.xex differ diff --git a/weapons.asm b/weapons.asm index 0868592..ee9f34d 100644 --- a/weapons.asm +++ b/weapons.asm @@ -1862,7 +1862,8 @@ EndOfFlight2 cmp #ind_Auto_Defense___ ; Auto Defence jeq AutoDefence cmp #ind_Mag_Deflector__ ; Mag Deflector - bne NoDefence + beq MagDeflector + jmp NoDefence MagDeflector ; now run defensive-aggressive weapon - Mag Deflector! ; get tank position @@ -1889,9 +1890,19 @@ RightDeflection bcs EndOfMagDeflector ; hit of course but we need RTS sbw XHit #36 ; change to left EndOfMagDeflector + mva #1 Erase + lda TankNr + pha ; store TankNr + stx TankNr ; store X in TankNr :) + jsr DrawTankNr ; now erase tank with shield (to erase shield) lda #0 sta ActiveDefenceWeapon,x ; deactivate used mag deflector weapon sta ShieldEnergy,x + sta Erase + jsr DrawTankNr ; draw tank without shield + ldx TankNr ; restore X value :) + pla + sta TankNr ; restore TankNr value :) mwa XHit xdraw ; why? !!! NoTankHitAtEndOfFight NoHitAtEndOfFight @@ -2305,7 +2316,8 @@ MIRValreadyAll jsr FlashTank ; first we flash tank mva #1 Erase jsr DrawTankNr ; and erase tank - mva #0 Erase + lda #0 + sta Erase ldx TankNr sta Energy,x ; clear tank energy sta eXistenZ,x ; erase from existence @@ -2394,7 +2406,8 @@ InverseScreenByte ; XHit , YHit - coordinates of hit ; X - index of the hit tank - ldx #0 + ldx NumberOfPlayers + dex CheckCollisionWithTankLoop lda eXistenZ,x beq DeadTank @@ -2440,9 +2453,8 @@ LeftFromTheTank OverTheTank BelowTheTank DeadTank - inx - cpx NumberOfPlayers - bne CheckCollisionWithTankLoop + dex + bpl CheckCollisionWithTankLoop rts CheckCollisionWithShieldedTank ; now we use Y as low byte and A as high byte of checked position (left right edgs of shield)