From f45cbde341f90a2ad5a0615d325b84bd324d7bfc Mon Sep 17 00:00:00 2001 From: Pecusx Date: Wed, 31 Aug 2022 17:14:35 +0200 Subject: [PATCH] AI optimization (50b saved) --- ai.asm | 80 +++++++++++++++++++---------------------------------- scorch.xex | Bin 50496 -> 50446 bytes 2 files changed, 29 insertions(+), 51 deletions(-) diff --git a/ai.asm b/ai.asm index ab9e339..0c464db 100644 --- a/ai.asm +++ b/ai.asm @@ -155,13 +155,8 @@ endo ; choose the best weapon - ldy #last_offensive_____ ;the last weapon -loop - dey - lda (temp),y ; this is set up before calling the routine, has address of TanksWeaponsTable - beq loop - tya - sta ActiveWeapon,x + ldy #last_offensive_____ ;the last weapon to choose +1 + jsr ChooseBestOffensive rts .endp ;---------------------------------------------- @@ -207,17 +202,8 @@ endo ; choose the best weapon - lda TanksWeaponsTableL,x - sta temp - lda TanksWeaponsTableH,x - sta temp+1 - ldy #ind_Laser__________ ;the last offensive weapon -loop - dey - lda (temp),y - beq loop - tya - sta ActiveWeapon,x + ldy #ind_Laser__________ ;the last offensive weapon to choose +1 + jsr ChooseBestOffensive rts ;---------------------------------------------- @@ -331,17 +317,8 @@ NoUseDefensive 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 + ldy #ind_LeapFrog_______ ;the last offensive weapon to use +1 + jsr ChooseBestOffensive ; randomizing force +-100 sbw Force #100 RandBoundaryLow @@ -372,17 +349,8 @@ HighForce 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 + ldy #ind_LeapFrog_______ ;the last offensive weapon to use +1 + jsr ChooseBestOffensive ; randomizing force +-50 sbw Force #50 RandBoundaryLow @@ -412,17 +380,8 @@ HighForce 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 + ldy #ind_LeapFrog_______ ;the last offensive weapon to use +1 + jsr ChooseBestOffensive lda Force sta ForceTableL,x @@ -1052,3 +1011,22 @@ SorryNoPurchase rts .endp +;---------------------------------------------- +.proc ChooseBestOffensive +; choose the best weapon +; Y - the last offensive weapon to use + 1 +; X - TankNr +;---------------------------------------------- + + lda TanksWeaponsTableL,x + sta temp + lda TanksWeaponsTableH,x + sta temp+1 +loop + dey + lda (temp),y + beq loop + tya + sta ActiveWeapon,x + rts +.endp \ No newline at end of file diff --git a/scorch.xex b/scorch.xex index 09d1bd647dd69e64df3371da7a9e43d1eb1ef2a9..91079c2b4b5e31dfd25cba27cfd311bf48a5a57e 100644 GIT binary patch delta 16278 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 delta 16392 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