From 2d0942a1d9891712fb5f24167e5dfaa086df644f Mon Sep 17 00:00:00 2001 From: scawful Date: Wed, 27 Nov 2024 10:54:02 -0500 Subject: [PATCH] Update Darknut enemy sprite probing behavior --- Sprites/Enemies/darknut.asm | 89 ++++++++++++++++++++++++++++--------- 1 file changed, 69 insertions(+), 20 deletions(-) diff --git a/Sprites/Enemies/darknut.asm b/Sprites/Enemies/darknut.asm index 110abe2..ff4635c 100644 --- a/Sprites/Enemies/darknut.asm +++ b/Sprites/Enemies/darknut.asm @@ -59,7 +59,7 @@ Sprite_Darknut_Prep: RTL .health - db $04, $0C, $12, $1C + db $04, $0C, $0F, $10 } ; ========================================================= @@ -68,33 +68,90 @@ DarknutSpeed = 04 Sprite_Darknut_Main: { - JSL Sprite_SpawnProbeAlways_long + LDA.w POSX : STA $02 + LDA.w POSY : STA $03 + LDA.w SprX, X : STA $04 + LDA.w SprY, X : STA $05 + JSL GetDistance8bit_Long + CMP.b #$50 : BCS .no_probe + ; JSL Sprite_SendOutProbe + JSL Sprite_SpawnProbeAlways_long + .no_probe + + ; TODO: Setup parrying sword gfx JSL Guard_ParrySwordAttacks + JSL Sprite_Move JSL Sprite_BounceFromTileCollision JSL Sprite_PlayerCantPassThrough JSL Sprite_DamageFlash_Long - LDA.w SprTimerA, X : BNE + - LDA.b #$04 - JSL Sprite_ApplySpeedTowardsPlayer - JSL GetRandomInt : AND.b #$03 : STA.w SprAction, X - %SetTimerA($A0) + LDA.w SprTimerA, X : BEQ + + LDA.b #$40 : STA.w SprTimerD, X + + LDA.w SprTimerD, X : BEQ ++ + LDA.b #$04 : JSL Sprite_ApplySpeedTowardsPlayer + JSL Sprite_DirectionToFacePlayer + TYA + STA.w SprMiscC, X + STA.w SprMiscE, X + STA.w SprAction, X + JSL Guard_ChaseLinkOnOneAxis + JMP +++ + ++ + JSR Sprite_Darknut_BasicMove + +++ JSR Goriya_HandleTileCollision LDA.w SprAction, X JSL UseImplicitRegIndexedLocalJumpTable - dw MoveUp - dw MoveDown - dw MoveLeft + dw FaceRight + dw FaceLeft + dw FaceDown + dw FaceUp + + FaceUp: + { + %PlayAnimation(0,1,10) + RTS + } + + FaceDown: + { + %StartOnFrame(2) + %PlayAnimation(2,3,10) + RTS + } + + FaceLeft: + { + %StartOnFrame(4) + %PlayAnimation(4,5,10) + RTS + } + + FaceRight: + { + %StartOnFrame(6) + %PlayAnimation(6,7,10) + RTS + } +} + +Sprite_Darknut_BasicMove: +{ + LDA.w SprAction, X + JSL JumpTableLocal + dw MoveRight + dw MoveLeft + dw MoveDown + dw MoveUp MoveUp: { - %PlayAnimation(0,1,10) LDA.b #-DarknutSpeed : STA.w SprYSpeed, X STZ.w SprXSpeed, X RTS @@ -102,8 +159,6 @@ Sprite_Darknut_Main: MoveDown: { - %StartOnFrame(2) - %PlayAnimation(2,3,10) LDA.b #DarknutSpeed : STA.w SprYSpeed, X STZ.w SprXSpeed, X RTS @@ -111,8 +166,6 @@ Sprite_Darknut_Main: MoveLeft: { - %StartOnFrame(4) - %PlayAnimation(4,5,10) LDA.b #-DarknutSpeed : STA.w SprXSpeed, X STZ.w SprYSpeed, X RTS @@ -120,13 +173,10 @@ Sprite_Darknut_Main: MoveRight: { - %StartOnFrame(6) - %PlayAnimation(6,7,10) LDA.b #DarknutSpeed : STA.w SprXSpeed, X STZ.w SprYSpeed, X RTS } - } ; ========================================================= @@ -136,9 +186,8 @@ Sprite_Darknut_Draw: JSL Sprite_PrepOamCoord JSL Sprite_OAM_AllocateDeferToPlayer - LDA $0DC0, X : CLC : ADC $0D90, X : TAY;Animation Frame + LDA.w SprGfx, X : CLC : ADC $0D90, X : TAY;Animation Frame LDA .start_index, Y : STA $06 - LDA.w SprFlash, X : STA $08 PHX