From c8ffba4603ba95c77779c84e2f5e7d03e06cdeba Mon Sep 17 00:00:00 2001 From: Pecusx Date: Fri, 29 Jul 2022 13:27:59 +0200 Subject: [PATCH] AI internals --- ai.asm | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++ constants.asm | 1 + scorch.xex | Bin 40701 -> 40783 bytes 3 files changed, 57 insertions(+) diff --git a/ai.asm b/ai.asm index c47413f..d6c0828 100644 --- a/ai.asm +++ b/ai.asm @@ -320,6 +320,62 @@ NoUseDefensive ; Toosser is like Poolshark but allways uses defensives jmp Poolshark .endp + +;---------------------------------------------- +.proc FindBestTarget1 +; find farthest tank neighbour +; X - shooting tank number +; returns target tank number in Y and +; direcion of shoot in A (0 - left, >0 - right) +;---------------------------------------------- + jsr MakeLowResDistances + lda #$00 + sta temp2 ; max possible distance + 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 + sec + lda LowResDistances,y + sbc LowResDistances,x + cmp temp2 ; bigest + bcc bigestIsBigger + sta temp2 + sty temp2+1 ; number of the farthest tank + inc tempor2 ; set direction to right + bne bigestIsBigger + +EnemyOnTheLeft + sec + lda LowResDistances,x + sbc LowResDistances,y + cmp temp2 ; lowest + bcc bigestIsBigger + sta temp2 + sty temp2+1 ; number of the farthest tank + +bigestIsBigger +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 + ldy temp2+1 + lda tempor2 + rts +.endp ;---------------------------------------------- .proc PurchaseAI ; ; A - skill of the TankNr diff --git a/constants.asm b/constants.asm index ee47917..1892553 100644 --- a/constants.asm +++ b/constants.asm @@ -20,6 +20,7 @@ CashOptionH GravityTable .by 10,20,25,30,40 MaxWindTable .by 5,20,40,70,99 RoundsTable .by 10,20,30,40,50 +AIForceTable .wo 400,500,650,750,850 ; starting shoot forces for different gravity flyDelayTable .by 255,150,75,35,1 seppukuTable .by 255, 45,25,15,9 mountainsDeltaTableH .by 0,1,3,5,7 diff --git a/scorch.xex b/scorch.xex index 24b64282615b93cc4f95d83ce99540a14862b88c..7225e6e8fcf7ba716794320fd276ceda74a8a6d6 100644 GIT binary patch delta 14385 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 RQEf(`{-MCGIWL?~{y#DkcLD$a