update anti kirby draw data and ai logic

This commit is contained in:
scawful
2024-06-16 22:08:37 -04:00
parent 202eb058f3
commit ac074fa5f7

View File

@@ -57,6 +57,7 @@ Sprite_AntiKirby_Prep:
LDA #$00 : STA.w SprDefl, X LDA #$00 : STA.w SprDefl, X
LDA #$00 : STA.w SprTileDie, X LDA #$00 : STA.w SprTileDie, X
STZ.w SprMiscB, X
LDY $0FFF LDY $0FFF
LDA .bump_damage, Y : STA.w SprBump, X LDA .bump_damage, Y : STA.w SprBump, X
@@ -80,94 +81,63 @@ Sprite_AntiKirby_Prep:
Sprite_AntiKirby_Main: Sprite_AntiKirby_Main:
{ {
JSL Sprite_IsToRightOfPlayer
TYA : CMP #$01 : BNE .WalkRight
.WalkLeft
LDA.b #$40 : STA.w SprMiscC, X
JMP +
.WalkRight
STZ.w SprMiscC, X
+
LDA.w SprAction, X LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable JSL UseImplicitRegIndexedLocalJumpTable
dw AntiKirby_Start dw AntiKirby_Main
dw AntiKirby_WalkRight
dw AntiKirby_WalkLeft
dw AntiKirby_Hurt dw AntiKirby_Hurt
dw AntiKirby_Suck dw AntiKirby_Suck
dw AntiKirby_Full dw AntiKirby_Full
dw AntiKirby_Death dw AntiKirby_Death
AntiKirby_Start: AntiKirby_Main:
{ {
; Check health ; Check health
LDA SprHealth, X : CMP.b #$01 : BCS .NotDead LDA SprHealth, X : CMP.b #$01 : BCS .NotDead
%GotoAction(6) %GotoAction(4)
RTS RTS
.NotDead .NotDead
; Randomly Suck ; Randomly Suck
JSL GetRandomInt : AND #$3F : BNE .not_done JSL GetRandomInt : AND #$3F : BNE .not_done
LDA #$04 : STA SprTimerA, X LDA #$04 : STA SprTimerA, X
%GotoAction(4) %GotoAction(2)
RTS RTS
.not_done .not_done
JSL Sprite_IsToRightOfPlayer %PlayAnimation(0, 2, 10) ; Start
TYA : CMP #$01 : BNE .WalkRight
.WalkLeft
%GotoAction(2)
RTS
.WalkRight
%GotoAction(1)
RTS
}
AntiKirby_WalkRight:
{
%PlayAnimation(0, 2, 10) ; Walk Right
PHX
JSL Sprite_DamageFlash_Long JSL Sprite_DamageFlash_Long
JSL Sprite_CheckDamageFromPlayerLong : BCC .NoDamage JSL Sprite_CheckDamageFromPlayerLong : BCC .NoDamage
LDA #!RecoilTime : STA SprTimerA, X LDA #!RecoilTime : STA SprTimerA, X
%GotoAction(3) ; Hurt %GotoAction(1) ; Hurt
PLX
RTS RTS
.NoDamage .NoDamage
%DoDamageToPlayerSameLayerOnContact() %DoDamageToPlayerSameLayerOnContact()
PLX
%MoveTowardPlayer(10) %MoveTowardPlayer(10)
JSL Sprite_BounceFromTileCollision JSL Sprite_BounceFromTileCollision
JSL Sprite_PlayerCantPassThrough JSL Sprite_PlayerCantPassThrough
%GotoAction(0)
RTS
}
AntiKirby_WalkLeft:
{
%PlayAnimation(3, 6, 10) ; Walk Left
PHX
JSL Sprite_DamageFlash_Long
JSL Sprite_CheckDamageFromPlayerLong : BCC .NoDamage
LDA #!RecoilTime : STA SprTimerA, X
%GotoAction(3) ; Hurt
PLX
RTS
.NoDamage
%DoDamageToPlayerSameLayerOnContact()
PLX
%MoveTowardPlayer(10)
JSL Sprite_BounceFromTileCollision
JSL Sprite_PlayerCantPassThrough
%GotoAction(0)
RTS RTS
} }
AntiKirby_Hurt: AntiKirby_Hurt:
{ {
%PlayAnimation(8, 8, 10) ; Hurt %PlayAnimation(3, 3, 10) ; Hurt
JSL Sprite_DamageFlash_Long
LDA SprTimerA, X : BNE .NotDone LDA SprTimerA, X : BNE .NotDone
%GotoAction(0) %GotoAction(0)
.NotDone .NotDone
@@ -177,7 +147,8 @@ Sprite_AntiKirby_Main:
AntiKirby_Suck: AntiKirby_Suck:
{ {
%PlayAnimation(9, 10, 10) ; Suck %PlayAnimation(4, 5, 10) ; Suck
LDA.b $0E : CLC : ADC.b #$30 : CMP.b #$60 : BCS .dont_tongue_link LDA.b $0E : CLC : ADC.b #$30 : CMP.b #$60 : BCS .dont_tongue_link
LDA.b $0F : CLC : ADC.b #$30 : CMP.b #$60 : BCS .dont_tongue_link LDA.b $0F : CLC : ADC.b #$30 : CMP.b #$60 : BCS .dont_tongue_link
@@ -188,7 +159,7 @@ Sprite_AntiKirby_Main:
JSL Sprite_ConvertVelocityToAngle JSL Sprite_ConvertVelocityToAngle
LSR A LSR A
STA.w SprMiscC,X STA.w SprMiscD,X
LDA.b #$5F LDA.b #$5F
STA.w SprTimerA, X STA.w SprTimerA, X
@@ -197,27 +168,26 @@ Sprite_AntiKirby_Main:
; ----------------------------------------------------- ; -----------------------------------------------------
.dont_tongue_link .dont_tongue_link
STZ.w SprAction, X
LDA.b #$10
STA.w SprTimerA, X
LDA.w SprTimerA, X : BNE +
STZ.w SprAction, X
+
RTS RTS
} }
AntiKirby_Full: AntiKirby_Full:
{ {
%PlayAnimation(11, 11, 10) ; Full ; %PlayAnimation(6, 6, 10) ; Full
LDA.w SprTimerA, X : BNE .lickylicky LDA.w SprTimerA, X : BNE .lickylicky
STZ.w SprAction, X STZ.w SprAction, X
LDA.b #$10 LDA.b #$10
STA.w SprTimerA, X STA.w SprTimerA, X
STZ.w SprFrame, X STZ.w SprFrame, X
STZ.w SprMiscA, X
STZ.w SprMiscG, X STZ.w SprMiscG, X
RTS RTS
@@ -231,7 +201,7 @@ Sprite_AntiKirby_Main:
LDA.w .anim, Y : STA.w SprGfx, X LDA.w .anim, Y : STA.w SprGfx, X
TYA TYA
LDY.w SprMiscC, X LDY.w SprMiscD, X
PHY PHY
CLC : ADC.w .index_offset_x, Y CLC : ADC.w .index_offset_x, Y
@@ -253,7 +223,7 @@ Sprite_AntiKirby_Main:
CLC : ADC.w .index_offset_y, Y CLC : ADC.w .index_offset_y, Y
TAY TAY
LDA.w .pos, Y : STA.w SprMiscA, X LDA.w .pos, Y : STA.w SprMiscE, X
STA.b $06 STA.b $06
STZ.b $07 STZ.b $07
@@ -292,7 +262,7 @@ Sprite_AntiKirby_Main:
AND.b #$03 AND.b #$03
INC A INC A
STA.w SprMiscG, X STA.w SprMiscG, X
STA.w SprMiscD, X STA.w SprMiscE, X
CMP.b #$01 : BNE .dont_steal_bomb CMP.b #$01 : BNE .dont_steal_bomb
LDA.l $7EF343 : BEQ .dont_steal_anything LDA.l $7EF343 : BEQ .dont_steal_anything
@@ -313,16 +283,13 @@ Sprite_AntiKirby_Main:
.dont_steal_arrow .dont_steal_arrow
CMP.b #$03 : BNE .dont_steal_rupee CMP.b #$03 : BNE .dont_steal_rupee
REP #$20 REP #$20
LDA.l $7EF360 : BEQ .dont_steal_anything LDA.l $7EF360 : BEQ .dont_steal_anything
DEC A DEC A
STA.l $7EF360 STA.l $7EF360
.exit .exit
SEP #$20 SEP #$20
RTS RTS
; ----------------------------------------------------- ; -----------------------------------------------------
.dont_steal_rupee .dont_steal_rupee
@@ -339,9 +306,9 @@ Sprite_AntiKirby_Main:
RTS RTS
.anim .anim
db $09, $09, $09, $09, $0A, $0A, $0A, $0A db $04, $04, $04, $04, $05, $05, $05, $05
db $0A, $0A, $0A, $0A, $0A, $0A, $0A, $0A db $05, $05, $05, $05, $05, $05, $05, $05
db $0A, $0A, $0A, $0A, $09, $09, $09, $09 db $05, $05, $05, $05, $04, $04, $04, $04
.pos .pos
db 0, 0, 0, 0, 0, 0, 0, 0 db 0, 0, 0, 0, 0, 0, 0, 0
@@ -357,15 +324,17 @@ Sprite_AntiKirby_Main:
db 0, 0, 0, 0, 0, 0, 0, 0 db 0, 0, 0, 0, 0, 0, 0, 0
.index_offset_x .index_offset_x
db $18, $18, $00, $30, $30, $30, $00, $18 ; db $18, $18, $00, $30, $30, $30, $00, $18
db $00, $00, $00, $00, $00, $00, $00, $00
.index_offset_y .index_offset_y
db $00, $18, $18, $18, $00, $30, $30, $30 ; db $00, $18, $18, $18, $00, $30, $30, $30
db $00, $00, $00, $00, $00, $00, $00, $00
} }
AntiKirby_Death: AntiKirby_Death:
{ {
%PlayAnimation(12, 12, 10) ; Death %PlayAnimation(3, 3, 10) ; Death
LDA.b #$06 : STA.w SprState, X LDA.b #$06 : STA.w SprState, X
LDA.b #$0A : STA.w SprTimerA, X LDA.b #$0A : STA.w SprTimerA, X
@@ -379,6 +348,8 @@ Sprite_AntiKirby_Main:
} }
} }
; 7-9: Walking with hat
; 10: Hurt with hat
Sprite_AntiKirby_Draw: Sprite_AntiKirby_Draw:
{ {
@@ -388,7 +359,8 @@ Sprite_AntiKirby_Draw:
LDA SprGfx, X : CLC : ADC SprFrame, X : TAY;Animation Frame LDA SprGfx, X : CLC : ADC SprFrame, X : TAY;Animation Frame
LDA .start_index, Y : STA $06 LDA .start_index, Y : STA $06
LDA SprMiscA, X : STA $08 LDA.w SprMiscA, X : STA $08
LDA.w SprMiscC, X : STA $09
PHX PHX
LDX .nbr_of_tiles, Y ;amount of tiles -1 LDX .nbr_of_tiles, Y ;amount of tiles -1
@@ -421,7 +393,7 @@ Sprite_AntiKirby_Draw:
INY INY
LDA .chr, X : STA ($90), Y LDA .chr, X : STA ($90), Y
INY INY
LDA .properties, X : ORA $08 : STA ($90), Y LDA .properties, X : ORA $08 : AND.b #$FF : ORA $09 : STA ($90), Y
PHY PHY
@@ -437,76 +409,68 @@ Sprite_AntiKirby_Draw:
RTS RTS
; Anti-Kirby V2 draw
.start_index .start_index
db $00, $01, $02, $03, $05, $06, $07, $08, $0A, $0B, $0D, $0F, $11 db $00, $01, $02, $03, $04, $06, $08, $0A, $0C, $0E, $10
.nbr_of_tiles .nbr_of_tiles
db 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1 db 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1
.x_offsets .x_offsets
dw 0 dw 0
dw 1
dw 0 dw 0
dw 0, 16
dw 0 dw 0
dw -1
dw 0 dw 0
dw 0, -16 dw 0, 8
dw 0 dw 0, 8
dw 0, 16 dw -4, 4
dw 0, 16 dw 0, -4
dw -4, 12 dw 0, -4
dw -4, 12 dw 0, -4
dw 0, -4
.y_offsets .y_offsets
dw 0 dw 0
dw 0 dw 0
dw 0 dw 0
dw 0, 0
dw 0
dw 0
dw 0
dw 0, 0
dw 0 dw 0
dw 0, 0 dw 0, 0
dw 0, 0 dw 0, 0
dw 0, 0 dw 0, 0
dw 0, 0 dw 0, -8
dw 0, -8
dw 0, -8
dw 0, -6
.chr .chr
db $00
db $02 db $02
db $00 db $00
db $04, $06 db $04
db $00
db $02
db $00
db $04, $06
db $20 db $20
db $08, $0A db $08, $09
db $28, $2A db $28, $29
db $22, $24 db $22, $23
db $22, $24 db $02, $25
db $00, $25
db $04, $25
db $20, $25
.properties .properties
db $37 db $37
db $37 db $37
db $37 db $37
db $37, $37
db $77
db $77
db $77
db $77, $77
db $37 db $37
db $37, $37 db $37, $37
db $37, $37 db $37, $37
db $37, $37 db $37, $37
db $37, $37 db $37, $3B
db $37, $3B
db $37, $3B
db $37, $3B
.sizes .sizes
db $02 db $02
db $02 db $02
db $02 db $02
db $02, $02
db $02
db $02
db $02 db $02
db $02, $02 db $02, $02
db $02 db $02, $02
db $02, $02
db $02, $02 db $02, $02
db $02, $02 db $02, $02
db $02, $02 db $02, $02