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