add kydreeok left head anim and handle death

This commit is contained in:
scawful
2024-06-10 00:56:57 -04:00
parent 097adf16e7
commit cec96536fb

View File

@@ -89,9 +89,16 @@ Sprite_Kydreeok_CheckIfDead:
LDA.w SprState, Y : BEQ .offspring2_dead LDA.w SprState, Y : BEQ .offspring2_dead
JMP .not_dead JMP .not_dead
.offspring2_dead .offspring2_dead
LDY #$01 : JSR ApplyKydreeokGraphics LDA.w SprMiscD, X : CMP.b #$02 : BEQ .dead
JSR SpawnLeftHead LDA.b #$02 : STA.w SprMiscD, X
JSR SpawnRightHead LDY.b #$01 : JSR ApplyKydreeokGraphics
JSR SpawnLeftHead
JSR SpawnRightHead
RTS
.dead
LDA.b #$60 : STA.w SprTimerA, X
LDA.b #$05 : STA SprAction, X
.not_dead .not_dead
RTS RTS
} }
@@ -108,6 +115,7 @@ Sprite_Kydreeok_Main:
dw Kydreeok_MoveXandY ; 02 dw Kydreeok_MoveXandY ; 02
dw Kydreeok_MoveXorY ; 03 dw Kydreeok_MoveXorY ; 03
dw Kydreeok_KeepWalking ; 04 dw Kydreeok_KeepWalking ; 04
dw Kydreeok_Dead ; 05
; ------------------------------------------------------- ; -------------------------------------------------------
; 0x00 ; 0x00
@@ -234,6 +242,52 @@ Sprite_Kydreeok_Main:
RTS RTS
} }
Kydreeok_Dead:
{
#_1DDC30: LDA.b #$00 ; SPRITE 00
#_1DDC32: JSL Sprite_SpawnDynamically
#_1DDC36: BMI .no_space
#_1DDC38: LDA.b #$0B
#_1DDC3A: STA.w $0AAA
#_1DDC3D: LDA.b #$04
#_1DDC3F: STA.w $0DD0,Y
#_1DDC42: LDA.b #$03
#_1DDC44: STA.w $0E40,Y
#_1DDC47: LDA.b #$0C
#_1DDC49: STA.w $0F50,Y
#_1DDC4C: LDA.w $0FD8
#_1DDC4F: STA.w $0D10,Y
#_1DDC52: LDA.w $0FD9
#_1DDC55: STA.w $0D30,Y
#_1DDC58: LDA.w $0FDA
#_1DDC5B: STA.w $0D00,Y
#_1DDC5E: LDA.w $0FDB
#_1DDC61: STA.w $0D20,Y
#_1DDC64: LDA.b #$1F
#_1DDC66: STA.w $0DF0,Y
#_1DDC69: STA.w $0D90,Y
#_1DDC6C: LDA.b #$02
#_1DDC6E: STA.w $0F20,Y
.no_space
LDA SprTimerA, X : BNE .continue
STZ.w $0422
STZ.w $0424
STZ.w $0DD0, X ; GG
.continue
RTS
}
} }
; ========================================================= ; =========================================================
@@ -274,7 +328,7 @@ SpawnLeftHead:
PHX PHX
; code that controls where to spawn the offspring. ; code that controls where to spawn the offspring.
REP #$20 REP #$20
LDA SprCachedX : SEC : SBC.w #$000F LDA SprCachedX : SEC : SBC.w #$0010
SEP #$20 SEP #$20
STA.w SprX, Y : XBA : STA.w SprXH, Y STA.w SprX, Y : XBA : STA.w SprXH, Y
@@ -300,42 +354,42 @@ SpawnLeftHead:
; ========================================================= ; =========================================================
SpawnCenterHead: ; SpawnCenterHead:
{ ; {
LDA #$CF ; LDA #$CF
JSL Sprite_SpawnDynamically : BMI .return ; JSL Sprite_SpawnDynamically : BMI .return
TYA : STA Offspring3_Id ; TYA : STA Offspring3_Id
;store the sub-type ; ;store the sub-type
LDA.b #$02 : STA $0E30, Y ; LDA.b #$02 : STA $0E30, Y
PHX ; PHX
; code that controls where to spawn the offspring. ; ; code that controls where to spawn the offspring.
REP #$20 ; REP #$20
LDA SprCachedX : CLC : ADC.w #$0004 ; LDA SprCachedX : CLC : ADC.w #$0004
SEP #$20 ; SEP #$20
STA.w SprX, Y : XBA : STA.w SprXH, Y ; STA.w SprX, Y : XBA : STA.w SprXH, Y
REP #$20 ; REP #$20
LDA SprCachedY : SEC : SBC.w #$000F ; LDA SprCachedY : SEC : SBC.w #$000F
SEP #$20 ; SEP #$20
STA.w SprY, Y : XBA : STA.w SprYH, Y ; STA.w SprY, Y : XBA : STA.w SprYH, Y
LDA.w SprX, Y : STA.w SprX, Y ; LDA.w SprX, Y : STA.w SprX, Y
STA.w SprMiscA, Y : STA.w $1A78 : STA.w $1A7A : STA.w $1A7C ; STA.w SprMiscA, Y : STA.w $1A78 : STA.w $1A7A : STA.w $1A7C
LDA.w SprY, Y : STA.w $1A79 : STA.w $1A7B : STA.w $1A7D : STA.w SprY, Y ; LDA.w SprY, Y : STA.w $1A79 : STA.w $1A7B : STA.w $1A7D : STA.w SprY, Y
STA.w SprMiscB, Y ; STA.w SprMiscB, Y
TYX ; TYX
STZ.w SprYRound, X ; STZ.w SprYRound, X
STZ.w SprXRound, X ; STZ.w SprXRound, X
PLX ; PLX
.return ; .return
RTS ; RTS
} ; }
; ========================================================= ; =========================================================
@@ -350,7 +404,7 @@ SpawnRightHead:
PHX PHX
; code that controls where to spawn the offspring. ; code that controls where to spawn the offspring.
REP #$20 REP #$20
LDA SprCachedX : CLC : ADC.w #$000C LDA SprCachedX : CLC : ADC.w #$000D
SEP #$20 SEP #$20
STA.w SprX, Y : XBA : STA.w SprXH, Y STA.w SprX, Y : XBA : STA.w SprXH, Y
@@ -527,50 +581,50 @@ StopIfOutOfBounds:
Sprite_ApplySpeedTowardsPlayerXOrY: Sprite_ApplySpeedTowardsPlayerXOrY:
{ {
JSL Sprite_IsBelowPlayer : BEQ .playerBelow JSL Sprite_IsBelowPlayer : BEQ .playerBelow
;playerAbove ;playerAbove
REP #$20
LDA SprCachedY : SEC : SBC $20 : CLC : ADC.w #$0006 : STA $01 ;delta Y
;added an extra 6 pixels because aparently if link.y is 6 above sprite.y it is concidered below ¯\_(ツ)_/¯
SEP #$20
JSL Sprite_IsToRightOfPlayer : BEQ .playerToTheRight1
;playerToTheLeft
REP #$20 REP #$20
LDA SprCachedY : SEC : SBC $20 : CLC : ADC.w #$0006 : STA $01 ;delta Y LDA SprCachedX : SEC : SBC $22 ;delta X
;added an extra 6 pixels because aparently if link.y is 6 above sprite.y it is concidered below ¯\_(ツ)_/¯
SEP #$20
JSL Sprite_IsToRightOfPlayer : BEQ .playerToTheRight1
;playerToTheLeft
REP #$20
LDA SprCachedX : SEC : SBC $22 ;delta X
CMP $01 : BCS .XGreaterThanY1 CMP $01 : BCS .XGreaterThanY1
;YGreaterThanX ;YGreaterThanX
SEP #$20 SEP #$20
LDA.b #$00 : SEC : SBC $00 : STA.w SprYSpeed LDA.b #$00 : SEC : SBC $00 : STA.w SprYSpeed
STZ.w SprXSpeed STZ.w SprXSpeed
RTS RTS
.XGreaterThanY1 .XGreaterThanY1
SEP #$20 SEP #$20
LDA.b #$00 : SEC : SBC $00 : STA.w SprXSpeed LDA.b #$00 : SEC : SBC $00 : STA.w SprXSpeed
STZ.w SprYSpeed STZ.w SprYSpeed
RTS RTS
.playerToTheRight1 .playerToTheRight1
REP #$20 REP #$20
LDA $22 : SEC : SBC SprCachedX ;delta X LDA $22 : SEC : SBC SprCachedX ;delta X
CMP $01 : BCS .XGreaterThanY2 CMP $01 : BCS .XGreaterThanY2
;YGreaterThanX ;YGreaterThanX
SEP #$20 SEP #$20
LDA.b #$00 : SEC : SBC $00 : STA.w SprYSpeed LDA.b #$00 : SEC : SBC $00 : STA.w SprYSpeed
STZ.w SprXSpeed STZ.w SprXSpeed
RTS RTS
.XGreaterThanY2 .XGreaterThanY2
SEP #$20 SEP #$20
LDA.b #$00 : CLC : ADC $00 : STA.w SprXSpeed LDA.b #$00 : CLC : ADC $00 : STA.w SprXSpeed
STZ.w SprYSpeed STZ.w SprYSpeed
RTS RTS
.playerBelow .playerBelow
@@ -586,17 +640,17 @@ Sprite_ApplySpeedTowardsPlayerXOrY:
LDA SprCachedX : SEC : SBC $22 ;delta X LDA SprCachedX : SEC : SBC $22 ;delta X
CMP $01 : BCS .XGreaterThanY3 CMP $01 : BCS .XGreaterThanY3
;YGreaterThanX ;YGreaterThanX
SEP #$20 SEP #$20
LDA.b #$00 : CLC : ADC $00 : STA.w SprYSpeed LDA.b #$00 : CLC : ADC $00 : STA.w SprYSpeed
STZ.w SprXSpeed STZ.w SprXSpeed
RTS RTS
.XGreaterThanY3 .XGreaterThanY3
SEP #$20 SEP #$20
LDA.b #$00 : SEC : SBC $00 : STA.w SprXSpeed LDA.b #$00 : SEC : SBC $00 : STA.w SprXSpeed
STZ.w SprYSpeed STZ.w SprYSpeed
RTS RTS
.playerToTheRight2 .playerToTheRight2
@@ -604,17 +658,17 @@ Sprite_ApplySpeedTowardsPlayerXOrY:
LDA $22 : SEC : SBC SprCachedX ;delta X LDA $22 : SEC : SBC SprCachedX ;delta X
CMP $01 : BCS .XGreaterThanY4 CMP $01 : BCS .XGreaterThanY4
;YGreaterThanX ;YGreaterThanX
SEP #$20 SEP #$20
LDA.b #$00 : CLC : ADC $00 : STA.w SprYSpeed LDA.b #$00 : CLC : ADC $00 : STA.w SprYSpeed
STZ.w SprXSpeed STZ.w SprXSpeed
RTS RTS
.XGreaterThanY4 .XGreaterThanY4
SEP #$20 SEP #$20
LDA.b #$00 : CLC : ADC $00 : STA.w SprXSpeed LDA.b #$00 : CLC : ADC $00 : STA.w SprXSpeed
STZ.w SprYSpeed STZ.w SprYSpeed
RTS RTS
} }
; ========================================================= ; =========================================================
@@ -629,7 +683,7 @@ ApplyPalette:
LDA #$7FFF : STA $7EC5E2 ;BG2 LDA #$7FFF : STA $7EC5E2 ;BG2
LDA #$319B : STA $7EC5E4 LDA #$319B : STA $7EC5E4
LDA #$15B6 : STA $7EC5E6 LDA #$15B6 : STA $7EC5E6
LDA #$0C79 : STA $7EC5E8 LDA #$369E : STA $7EC5E8
LDA #$14A5 : STA $7EC5EA LDA #$14A5 : STA $7EC5EA
LDA #$7E56 : STA $7EC5EC LDA #$7E56 : STA $7EC5EC
LDA #$65CA : STA $7EC5EE LDA #$65CA : STA $7EC5EE
@@ -703,31 +757,30 @@ Sprite_Kydreeok_Draw:
RTS RTS
.start_index
.start_index db $00, $08, $10
db $00, $0A, $14 .nbr_of_tiles
.nbr_of_tiles db 7, 7, 7
db 9, 9, 9 .x_offsets
.x_offsets dw -16, -16, 16, 16, -16, -16, 16, 16
dw -8, -16, -16, -16, -32, 8, 16, 16, 16, 32 dw -12, -28, 12, 28, -16, -16, 16, 16
dw -8, -16, -16, -16, -32, 8, 16, 16, 16, 32 dw -16, -16, 16, 16, -16, -16, 16, 16
dw -8, -16, -16, -16, -32, 8, 16, 16, 16, 32 .y_offsets
.y_offsets dw -52, -36, -52, -36, -8, 8, -8, 8
dw 8, -8, 8, -36, -36, 8, -8, 8, -36, -36 dw -36, -36, -36, -36, -6, 10, -8, 8
dw 8, -5, 11, -38, -38, 8, -8, 8, -39, -38 dw -36, -20, -36, -20, -8, 8, -6, 10
dw 8, -8, 8, -36, -36, 8, -5, 11, -36, -36 .chr
.chr db $CE, $EE, $CE, $EE, $00, $20, $00, $20
db $23, $00, $20, $0E, $0C, $23, $00, $20, $0E, $0C db $0E, $0C, $0E, $0C, $00, $20, $00, $20
db $23, $00, $20, $0E, $0C, $23, $00, $20, $0E, $0C db $CC, $EC, $CC, $EC, $00, $20, $00, $20
db $23, $00, $20, $0E, $0C, $23, $00, $20, $0E, $0C .properties
.properties db $39, $39, $79, $79, $39, $39, $79, $79
db $39, $39, $39, $39, $39, $79, $79, $79, $79, $79 db $39, $39, $79, $79, $39, $39, $79, $79
db $39, $39, $39, $39, $39, $79, $79, $79, $79, $79 db $39, $39, $79, $79, $39, $39, $79, $79
db $39, $39, $39, $39, $39, $79, $79, $79, $79, $79 .sizes
.sizes db $02, $02, $02, $02, $02, $02, $02, $02
db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 db $02, $02, $02, $02, $02, $02, $02, $02
db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 db $02, $02, $02, $02, $02, $02, $02, $02
db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02
} }
ApplyKydreeokGraphics: ApplyKydreeokGraphics: