mirror of
https://github.com/Pecusx/scorch_src.git
synced 2026-05-20 22:33:43 +02:00
All AI tanks works but...
This commit is contained in:
@@ -57,11 +57,23 @@ AIRoutines
|
|||||||
.word Shooter-1 ;Shooter
|
.word Shooter-1 ;Shooter
|
||||||
.word Poolshark-1 ;Poolshark
|
.word Poolshark-1 ;Poolshark
|
||||||
.word Tosser-1 ;Tosser
|
.word Tosser-1 ;Tosser
|
||||||
.word Tosser-1 ;Chooser
|
.word Chooser-1 ;Chooser
|
||||||
.word Tosser-1 ;Spoiler
|
.word Spoiler-1 ;Spoiler
|
||||||
.word Cyborg-1 ;Cyborg
|
.word Cyborg-1 ;Cyborg
|
||||||
.word Tosser-1 ;Unknown
|
.word Unknown-1 ;Unknown
|
||||||
|
|
||||||
|
;----------------------------------------------
|
||||||
|
.proc Unknown
|
||||||
|
; random robotank (from Poolshark to Cyborg)
|
||||||
|
randomize 4 13
|
||||||
|
and #%11111110
|
||||||
|
tay
|
||||||
|
lda AIRoutines+1,y
|
||||||
|
pha
|
||||||
|
lda AIRoutines,y
|
||||||
|
pha
|
||||||
|
rts
|
||||||
|
.endp
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
.proc Moron
|
.proc Moron
|
||||||
jsr RandomizeAngle
|
jsr RandomizeAngle
|
||||||
@@ -154,6 +166,7 @@ loop
|
|||||||
.endp
|
.endp
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
.proc Poolshark
|
.proc Poolshark
|
||||||
|
jsr UseBatteryOrFlag
|
||||||
; defensives
|
; defensives
|
||||||
jsr PoolsharkDefensives
|
jsr PoolsharkDefensives
|
||||||
firstShoot
|
firstShoot
|
||||||
@@ -213,8 +226,7 @@ AngleTable ; 16 bytes ;ba w $348b L$3350
|
|||||||
.by 18,26,34,43,50,58,66,74
|
.by 18,26,34,43,50,58,66,74
|
||||||
.endp
|
.endp
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
.proc PoolsharkDefensives
|
.proc UseBatteryOrFlag
|
||||||
; defensives
|
|
||||||
; if low energy ten use battery
|
; if low energy ten use battery
|
||||||
lda Energy,x
|
lda Energy,x
|
||||||
cmp #30
|
cmp #30
|
||||||
@@ -238,6 +250,10 @@ NoBatteries
|
|||||||
lda #ind_White_Flag_____
|
lda #ind_White_Flag_____
|
||||||
sta ActiveDefenceWeapon,x
|
sta ActiveDefenceWeapon,x
|
||||||
EnoughEnergy
|
EnoughEnergy
|
||||||
|
rts
|
||||||
|
.endp
|
||||||
|
;----------------------------------------------
|
||||||
|
.proc PoolsharkDefensives
|
||||||
; use best defensive :)
|
; use best defensive :)
|
||||||
; but not allways
|
; but not allways
|
||||||
randomize 1 3
|
randomize 1 3
|
||||||
@@ -268,6 +284,7 @@ DefensiveInUse
|
|||||||
.endp
|
.endp
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
.proc Tosser
|
.proc Tosser
|
||||||
|
jsr UseBatteryOrFlag
|
||||||
; use best defensive :)
|
; use best defensive :)
|
||||||
jsr TosserDefensives
|
jsr TosserDefensives
|
||||||
; Toosser is like Poolshark but allways uses defensives
|
; Toosser is like Poolshark but allways uses defensives
|
||||||
@@ -301,23 +318,173 @@ NoUseDefensive
|
|||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
.proc Cyborg
|
.proc Chooser
|
||||||
|
; like cyborg but more randomizing force
|
||||||
|
jsr UseBatteryOrFlag
|
||||||
; use defensives like Tosser
|
; use defensives like Tosser
|
||||||
jsr TosserDefensives
|
jsr TosserDefensives
|
||||||
; now select best target
|
; now select best target
|
||||||
jsr FindBestTarget1
|
jsr FindBestTarget3
|
||||||
sty TargetTankNr
|
sty TargetTankNr
|
||||||
; aiming
|
; aiming
|
||||||
jsr TakeAim ; direction still in A (0 - left, >0 - right)
|
jsr TakeAim ; direction still in A (0 - left, >0 - right)
|
||||||
lda #0
|
|
||||||
|
; choose the best weapon
|
||||||
|
lda TanksWeaponsTableL,x
|
||||||
|
sta temp
|
||||||
|
lda TanksWeaponsTableH,x
|
||||||
|
sta temp+1
|
||||||
|
ldy #ind_LeapFrog_______ ;the last offensive weapon to use
|
||||||
|
loop
|
||||||
|
dey
|
||||||
|
lda (temp),y
|
||||||
|
beq loop
|
||||||
|
tya
|
||||||
sta ActiveWeapon,x
|
sta ActiveWeapon,x
|
||||||
|
|
||||||
|
; randomizing force +-100
|
||||||
|
sbw Force #100 RandBoundaryLow
|
||||||
|
bpl NotNegativeEnergy
|
||||||
|
mwa #1 RandBoundaryLow
|
||||||
|
NotNegativeEnergy
|
||||||
|
adw Force #100 RandBoundaryHigh
|
||||||
|
jsr RandomizeForce
|
||||||
|
lda ForceTableH,x
|
||||||
|
bne HighForce
|
||||||
|
; if Force lower than 256 - set weapon to Baby Missile (for security :) )
|
||||||
|
lda #ind_Baby_Missile___
|
||||||
|
sta ActiveWeapon,x
|
||||||
|
HighForce
|
||||||
|
rts
|
||||||
|
.endp
|
||||||
|
;----------------------------------------------
|
||||||
|
.proc Spoiler
|
||||||
|
; like cyborg but little randomizing force
|
||||||
|
jsr UseBatteryOrFlag
|
||||||
|
; use defensives like Tosser
|
||||||
|
jsr TosserDefensives
|
||||||
|
; now select best target
|
||||||
|
jsr FindBestTarget3
|
||||||
|
sty TargetTankNr
|
||||||
|
; aiming
|
||||||
|
jsr TakeAim ; direction still in A (0 - left, >0 - right)
|
||||||
|
|
||||||
|
; choose the best weapon
|
||||||
|
lda TanksWeaponsTableL,x
|
||||||
|
sta temp
|
||||||
|
lda TanksWeaponsTableH,x
|
||||||
|
sta temp+1
|
||||||
|
ldy #ind_LeapFrog_______ ;the last offensive weapon to use
|
||||||
|
loop
|
||||||
|
dey
|
||||||
|
lda (temp),y
|
||||||
|
beq loop
|
||||||
|
tya
|
||||||
|
sta ActiveWeapon,x
|
||||||
|
|
||||||
|
; randomizing force +-50
|
||||||
|
sbw Force #50 RandBoundaryLow
|
||||||
|
bpl NotNegativeEnergy
|
||||||
|
mwa #1 RandBoundaryLow
|
||||||
|
NotNegativeEnergy
|
||||||
|
adw Force #50 RandBoundaryHigh
|
||||||
|
jsr RandomizeForce
|
||||||
|
lda ForceTableH,x
|
||||||
|
bne HighForce
|
||||||
|
; if Force lower than 256 - set weapon to Baby Missile (for security :) )
|
||||||
|
lda #ind_Baby_Missile___
|
||||||
|
sta ActiveWeapon,x
|
||||||
|
HighForce
|
||||||
|
rts
|
||||||
|
.endp
|
||||||
|
;----------------------------------------------
|
||||||
|
.proc Cyborg
|
||||||
|
jsr UseBatteryOrFlag
|
||||||
|
; use defensives like Tosser
|
||||||
|
jsr TosserDefensives
|
||||||
|
; now select best target
|
||||||
|
jsr FindBestTarget3
|
||||||
|
sty TargetTankNr
|
||||||
|
; aiming
|
||||||
|
jsr TakeAim ; direction still in A (0 - left, >0 - right)
|
||||||
|
|
||||||
|
; choose the best weapon
|
||||||
|
lda TanksWeaponsTableL,x
|
||||||
|
sta temp
|
||||||
|
lda TanksWeaponsTableH,x
|
||||||
|
sta temp+1
|
||||||
|
ldy #ind_LeapFrog_______ ;the last offensive weapon to use
|
||||||
|
loop
|
||||||
|
dey
|
||||||
|
lda (temp),y
|
||||||
|
beq loop
|
||||||
|
tya
|
||||||
|
sta ActiveWeapon,x
|
||||||
|
|
||||||
lda Force
|
lda Force
|
||||||
sta ForceTableL,x
|
sta ForceTableL,x
|
||||||
lda Force+1
|
lda Force+1
|
||||||
sta ForceTableH,x
|
sta ForceTableH,x
|
||||||
|
bne HighForce
|
||||||
|
; if Force lower than 256 - set weapon to Baby Missile (for security :) )
|
||||||
|
lda #ind_Baby_Missile___
|
||||||
|
sta ActiveWeapon,x
|
||||||
|
HighForce
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
|
|
||||||
|
;----------------------------------------------
|
||||||
|
.proc FindBestTarget3
|
||||||
|
; find target with lowest energy
|
||||||
|
; X - shooting tank number
|
||||||
|
; returns target tank number in Y and
|
||||||
|
; direcion of shoot in A (0 - left, >0 - right)
|
||||||
|
;----------------------------------------------
|
||||||
|
jsr MakeLowResDistances
|
||||||
|
lda #$ff
|
||||||
|
sta temp2 ; max possible energy
|
||||||
|
sta tempor2 ; direction of shoot
|
||||||
|
;ldx TankNr
|
||||||
|
ldy NumberOfPlayers
|
||||||
|
dey
|
||||||
|
|
||||||
|
loop01
|
||||||
|
cpy TankNr
|
||||||
|
beq skipThisPlayer
|
||||||
|
lda eXistenZ,y
|
||||||
|
beq skipThisPlayer
|
||||||
|
|
||||||
|
lda LowResDistances,x
|
||||||
|
cmp LowResDistances,y
|
||||||
|
bcs EnemyOnTheLeft
|
||||||
|
;enemy on the right
|
||||||
|
lda Energy,y
|
||||||
|
cmp temp2 ; lowest
|
||||||
|
bcs lowestIsLower
|
||||||
|
sta temp2
|
||||||
|
sty temp2+1 ; number of the closest tank
|
||||||
|
inc tempor2 ; set direction to right
|
||||||
|
bne lowestIsLower
|
||||||
|
|
||||||
|
EnemyOnTheLeft
|
||||||
|
lda Energy,y
|
||||||
|
cmp temp2 ; lowest
|
||||||
|
bcs lowestIsLower
|
||||||
|
sta temp2
|
||||||
|
sty temp2+1 ; number of the closest tank
|
||||||
|
|
||||||
|
lowestIsLower
|
||||||
|
skipThisPlayer
|
||||||
|
dey
|
||||||
|
bpl loop01
|
||||||
|
; now we have number of the farthest tank in temp2+1
|
||||||
|
; and direction (0 - left, >0 - right) in tempor2
|
||||||
|
; let's move them to registers
|
||||||
|
; in temp2 we have energy of target
|
||||||
|
ldy temp2+1
|
||||||
|
lda tempor2
|
||||||
|
rts
|
||||||
|
.endp
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
.proc FindBestTarget2
|
.proc FindBestTarget2
|
||||||
; find farthest tank neighbour
|
; find farthest tank neighbour
|
||||||
|
|||||||
+5
-5
@@ -420,6 +420,8 @@ DoNotFinishTheRound
|
|||||||
ldx tankNr
|
ldx tankNr
|
||||||
lda TankStatusColoursTable,x
|
lda TankStatusColoursTable,x
|
||||||
sta colpf2s ; set color of status line
|
sta colpf2s ; set color of status line
|
||||||
|
jsr PutTankNameOnScreen
|
||||||
|
jsr DisplayStatus
|
||||||
|
|
||||||
lda SkillTable,x
|
lda SkillTable,x
|
||||||
beq ManualShooting
|
beq ManualShooting
|
||||||
@@ -428,9 +430,7 @@ RoboTanks
|
|||||||
; robotanks shoot here
|
; robotanks shoot here
|
||||||
; TankNr still in X
|
; TankNr still in X
|
||||||
jsr ArtificialIntelligence
|
jsr ArtificialIntelligence
|
||||||
jsr PutTankNameOnScreen
|
;pause 30
|
||||||
jsr DisplayStatus
|
|
||||||
pause 30
|
|
||||||
ldx TankNr
|
ldx TankNr
|
||||||
jsr MoveBarrelToNewPosition
|
jsr MoveBarrelToNewPosition
|
||||||
lda kbcode
|
lda kbcode
|
||||||
@@ -476,7 +476,7 @@ StandardShoot
|
|||||||
jsr DecreaseWeaponBeforeShoot
|
jsr DecreaseWeaponBeforeShoot
|
||||||
jsr DisplayStatus
|
jsr DisplayStatus
|
||||||
|
|
||||||
ldx TankNr
|
; ldx TankNr
|
||||||
dec Energy,x ; lower energy to eventually let tanks commit suicide
|
dec Energy,x ; lower energy to eventually let tanks commit suicide
|
||||||
|
|
||||||
ShootNow
|
ShootNow
|
||||||
@@ -1221,7 +1221,7 @@ MoveBarrel
|
|||||||
mva #sfx_set_power_2 sfx_effect
|
mva #sfx_set_power_2 sfx_effect
|
||||||
jsr DrawTankNr
|
jsr DrawTankNr
|
||||||
jsr DisplayStatus.displayAngle
|
jsr DisplayStatus.displayAngle
|
||||||
ldx TankNr
|
; ldx TankNr
|
||||||
mva #1 Erase
|
mva #1 Erase
|
||||||
PAUSE 1
|
PAUSE 1
|
||||||
jsr DrawTankNr.BarrelChange
|
jsr DrawTankNr.BarrelChange
|
||||||
|
|||||||
BIN
Binary file not shown.
+1
-1
@@ -2094,7 +2094,7 @@ VerticallyUp
|
|||||||
AngleDisplay
|
AngleDisplay
|
||||||
mwa #textbuffer+40+23 displayposition
|
mwa #textbuffer+40+23 displayposition
|
||||||
jsr displaybyte
|
jsr displaybyte
|
||||||
|
ldx TankNr
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
;-------------------------------------------------
|
;-------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user