Barrels optimisation and more

This commit is contained in:
Pecusx
2022-07-27 13:03:10 +02:00
parent 513f13c5fc
commit 2c3b4d148e
6 changed files with 47 additions and 25 deletions
+14 -7
View File
@@ -722,6 +722,14 @@ ZeroesToGo6
bne ClearPM6
NoPlayerMissile
BarrelChange
ldy #$01
lda Erase
beq @+
dey
@ sty color
jsr DrawBarrel
; draw defensive weapons like shield ( tank number in X )
; in xdraw, ydraw we have coordinates left LOWER corner of Tank char
ldx TankNr
@@ -757,7 +765,6 @@ DrawTankFlag
jsr SetupXYdraw.X
jsr TypeChar
NoShieldDraw
DrawBarrel
DoNotDrawTankNr
rts
.endp
@@ -1912,12 +1919,12 @@ X lda XtanksTableL,x
; erase previous barrel
;cos(Angle) (but we use sin table only so some shenanigans happen)
mva #0 color
lda previousBarrelAngle,x
sta Angle
jsr DrawBarrelTech
mva #1 color
; mva #0 color
; lda previousBarrelAngle,x
; sta Angle
; jsr DrawBarrelTech
;
; mva #1 color
ldx TankNr
jsr SetupXYdraw
lda angleTable,x
+16 -7
View File
@@ -325,11 +325,11 @@ SettingEnergies
sta colpf2s ; status line "off"
sta colpf1s
lda #90 ; barrel fully erect
ldx #MaxPlayers-1
@ sta previousBarrelAngle,x
dex
bpl @-
; lda #90 ; barrel fully erect
; ldx #MaxPlayers-1
;@ sta previousBarrelAngle,x
; dex
; bpl @-
jsr drawmountains ;draw them
@@ -1213,20 +1213,29 @@ LimitForce
.endp
;----------------------------------------------
.proc MoveBarrelToNewPosition
mva #sfx_set_power_2 sfx_effect
mva #1 Erase
jsr DrawTankNr.BarrelChange
mva #0 Erase
MoveBarrel
jsr DrawTankNr
jsr DisplayStatus.displayAngle
ldx TankNr
mva #1 Erase
jsr DrawTankNr.BarrelChange
mva #0 Erase
lda NewAngle
cmp AngleTable,x
beq BarrelPositionIsFine
bcc rotateLeft ; older is bigger
rotateRight;older is lower
inc angleTable,x
jmp MoveBarrelToNewPosition
jmp MoveBarrel
rotateLeft
dec angleTable,x
jmp MoveBarrelToNewPosition
jmp MoveBarrel
BarrelPositionIsFine
jsr DrawTankNr
rts
.endp
BIN
View File
Binary file not shown.
+6
View File
@@ -1837,6 +1837,8 @@ FinishResultDisplay
mva #0 colpf1s
mva #TextForegroundColor colpf2s
VDLI DLIinterruptGameOver ; jsr SetDLI for Game Over screen
lda #song_game_over
jsr RmtSongSelect
; initial tank positions randomization
ldx #(MaxPlayers-1) ;maxNumberOfPlayers-1
@
@@ -1848,6 +1850,10 @@ MainTanksFloatingLoop
ldx #(MaxPlayers-1) ;maxNumberOfPlayers-1
AllTanksFloatingDown
stx TankNr
mva #1 Erase
jsr DrawTankNr
mva #0 Erase
ldx TankNr
inc Ytankstable,x
lda Ytankstable,x
; cmp #32 ; tank over screen - not visible
+2 -2
View File
@@ -348,8 +348,8 @@ AngleTable ;Angle of the barrel of each tank during the round
.DS [MaxPlayers]
NewAngle ; used in AI
.DS 1
previousBarrelAngle
.DS [MaxPlayers]
;previousBarrelAngle
; .DS [MaxPlayers]
EndOfTheBarrelX
.ds 2
EndOfTheBarrelY
+9 -9
View File
@@ -1139,6 +1139,7 @@ ToHighFill
;first, get current parameters (angle+force)
;for an active tank and display them
;(these values are taken from the previous round)
mva #0 Erase
ldx TankNr
@@ -1331,15 +1332,14 @@ CTRLPressedDown
pressedRight
ldx TankNr
lda AngleTable,x
sta previousBarrelAngle,x
lda pressTimer
spl:mva #0 pressTimer ; if >128 then reset to 0
cmp #25 ; 1/2s
bcs CTRLPressedRight
mva #sfx_set_power_2 sfx_effect
mva #1 Erase
jsr DrawTankNr.BarrelChange
dec AngleTable,x
lda AngleTable,x
cmp #255 ; -1
@@ -1350,9 +1350,9 @@ pressedRight
CTRLPressedRight
ldx TankNr
lda AngleTable,x
sta previousBarrelAngle,x
mva #sfx_set_power_2 sfx_effect
mva #1 Erase
jsr DrawTankNr.BarrelChange
lda AngleTable,x
sec
sbc #4
@@ -1366,14 +1366,14 @@ CTRLPressedRight
pressedLeft
ldx TankNr
lda AngleTable,x
sta previousBarrelAngle,x
lda pressTimer
spl:mva #0 pressTimer ; if >128 then reset to 0
cmp #25 ; 1/2s
bcs CTRLPressedLeft
mva #sfx_set_power_2 sfx_effect
mva #1 Erase
jsr DrawTankNr.BarrelChange
INC AngleTable,x
lda AngleTable,x
cmp #180
@@ -1384,9 +1384,9 @@ pressedLeft
CTRLPressedLeft
ldx TankNr
lda AngleTable,x
sta previousBarrelAngle,x
mva #sfx_set_power_2 sfx_effect
mva #1 Erase
jsr DrawTankNr.BarrelChange
lda AngleTable,x
clc
adc #4