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