mirror of
https://github.com/Pecusx/scorch_src.git
synced 2026-05-21 06:39:40 +02:00
Barrels optimisation and more
This commit is contained in:
+14
-7
@@ -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
@@ -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
Binary file not shown.
@@ -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
@@ -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
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user