Add offspring 3 neck control and formatting to kydreeok

This commit is contained in:
scawful
2024-06-07 18:10:58 -04:00
parent acb3000fbc
commit 9d932373c8

View File

@@ -121,8 +121,6 @@ Sprite_Kydreeok_Main:
STZ.w SprYSpeed : STZ.w SprXSpeed ;set velocitys to 0
JSR MoveBody
JSL Sprite_BounceFromTileCollision ;
JSR StopIfOutOfBounds
LDA SprTimerA, X : BNE .continue
@@ -145,7 +143,6 @@ Sprite_Kydreeok_Main:
LDA $36
JSL Sprite_ApplySpeedTowardsPlayer
JSL Sprite_BounceFromTileCollision ; JSR StopIfOutOfBounds
JSR StopIfOutOfBounds
JSR MoveBody
@@ -169,7 +166,6 @@ Sprite_Kydreeok_Main:
PHX
LDA $36 : STA $00
JSR Sprite_ApplySpeedTowardsPlayerXOrY
JSL Sprite_BounceFromTileCollision ; JSR StopIfOutOfBounds
JSR StopIfOutOfBounds
JSR MoveBody
@@ -207,7 +203,7 @@ Sprite_Kydreeok_Main:
.notEqualX
SEP #$20
JSL Sprite_BounceFromTileCollision ; JSR StopIfOutOfBounds
JSR StopIfOutOfBounds
;if both velocities are 0 go back to the Stalk_Player_XORY to re-set the course
LDA.w SprYSpeed : BNE .notZero
@@ -230,6 +226,30 @@ Sprite_Kydreeok_Main:
; =========================================================
Offspring1_Neck1_X = $19EA
Offspring1_Neck2_X = $19EC
Offspring1_Neck3_X = $19EE
Offspring1_Neck1_Y = $19EB
Offspring1_Neck2_Y = $19ED
Offspring1_Neck3_Y = $19EF
Offspring2_Neck1_X = $19F0
Offspring2_Neck2_X = $19F2
Offspring2_Neck3_X = $19F4
Offspring2_Neck1_Y = $19F1
Offspring2_Neck2_Y = $19F3
Offspring2_Neck3_Y = $19F5
Offspring3_Neck1_X = $1A78
Offspring3_Neck2_X = $1A7A
Offspring3_Neck3_X = $1A7C
Offspring3_Neck1_Y = $1A79
Offspring3_Neck2_Y = $1A7B
Offspring3_Neck3_Y = $1A7D
SpawnLeftHead:
{
LDA #$CF
@@ -281,7 +301,7 @@ SpawnCenterHead:
PHX
; code that controls where to spawn the offspring.
REP #$20
LDA SprCachedX : CLC : ADC.w #$0006
LDA SprCachedX : CLC : ADC.w #$0004
SEP #$20
STA.w SprX, Y : XBA : STA.w SprXH, Y
@@ -423,6 +443,10 @@ StopIfOutOfBounds:
LDA $19F2 : SEC : SBC #$04 : STA $19F2
LDA $19F4 : SEC : SBC #$04 : STA $19F4
LDA Offspring3_Neck1_X : SEC : SBC #$04 : STA Offspring3_Neck1_X
LDA Offspring3_Neck2_X : SEC : SBC #$04 : STA Offspring3_Neck2_X
LDA Offspring3_Neck3_X : SEC : SBC #$04 : STA Offspring3_Neck3_X
.not_out_of_bounds_Left
SEP #$20
@@ -439,6 +463,10 @@ StopIfOutOfBounds:
LDA $19F2 : CLC : ADC #$04 : STA $19F2
LDA $19F4 : CLC : ADC #$04 : STA $19F4
LDA Offspring3_Neck1_X : CLC : ADC #$04 : STA Offspring3_Neck1_X
LDA Offspring3_Neck2_X : CLC : ADC #$04 : STA Offspring3_Neck2_X
LDA Offspring3_Neck3_X : CLC : ADC #$04 : STA Offspring3_Neck3_X
.not_out_of_bounds_Right
SEP #$20
@@ -452,6 +480,10 @@ StopIfOutOfBounds:
LDA $19EC : SEC : SBC #$04 : STA $19EC
LDA $19EE : SEC : SBC #$04 : STA $19EE
LDA Offspring3_Neck1_Y : SEC : SBC #$04 : STA Offspring3_Neck1_Y
LDA Offspring3_Neck2_Y : SEC : SBC #$04 : STA Offspring3_Neck2_Y
LDA Offspring3_Neck3_Y : SEC : SBC #$04 : STA Offspring3_Neck3_Y
.not_out_of_bounds_Up
SEP #$20
@@ -471,6 +503,10 @@ StopIfOutOfBounds:
LDA $19F2 : CLC : ADC #$04 : STA $19F2
LDA $19F4 : CLC : ADC #$04 : STA $19F4
LDA Offspring3_Neck1_Y : CLC : ADC #$04 : STA Offspring3_Neck1_Y
LDA Offspring3_Neck2_Y : CLC : ADC #$04 : STA Offspring3_Neck2_Y
LDA Offspring3_Neck3_Y : CLC : ADC #$04 : STA Offspring3_Neck3_Y
.not_out_of_bounds_Down
SEP #$20
@@ -482,95 +518,95 @@ StopIfOutOfBounds:
Sprite_ApplySpeedTowardsPlayerXOrY:
{
JSL Sprite_IsBelowPlayer : BEQ .playerBelow
;playerAbove
JSL Sprite_IsBelowPlayer : BEQ .playerBelow
;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
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
JSL Sprite_IsToRightOfPlayer : BEQ .playerToTheRight1
;playerToTheLeft
REP #$20
LDA SprCachedX : SEC : SBC $22 ;delta X
REP #$20
LDA SprCachedX : SEC : SBC $22 ;delta X
CMP $01 : BCS .XGreaterThanY1
;YGreaterThanX
SEP #$20
LDA.b #$00 : SEC : SBC $00 : STA.w SprYSpeed
STZ.w SprXSpeed
RTS
CMP $01 : BCS .XGreaterThanY1
;YGreaterThanX
SEP #$20
LDA.b #$00 : SEC : SBC $00 : STA.w SprYSpeed
STZ.w SprXSpeed
RTS
.XGreaterThanY1
SEP #$20
LDA.b #$00 : SEC : SBC $00 : STA.w SprXSpeed
STZ.w SprYSpeed
RTS
.XGreaterThanY1
SEP #$20
LDA.b #$00 : SEC : SBC $00 : STA.w SprXSpeed
STZ.w SprYSpeed
RTS
.playerToTheRight1
REP #$20
LDA $22 : SEC : SBC SprCachedX ;delta X
.playerToTheRight1
REP #$20
LDA $22 : SEC : SBC SprCachedX ;delta X
CMP $01 : BCS .XGreaterThanY2
;YGreaterThanX
SEP #$20
LDA.b #$00 : SEC : SBC $00 : STA.w SprYSpeed
STZ.w SprXSpeed
RTS
CMP $01 : BCS .XGreaterThanY2
;YGreaterThanX
SEP #$20
LDA.b #$00 : SEC : SBC $00 : STA.w SprYSpeed
STZ.w SprXSpeed
RTS
.XGreaterThanY2
SEP #$20
LDA.b #$00 : CLC : ADC $00 : STA.w SprXSpeed
STZ.w SprYSpeed
RTS
.XGreaterThanY2
SEP #$20
LDA.b #$00 : CLC : ADC $00 : STA.w SprXSpeed
STZ.w SprYSpeed
RTS
.playerBelow
REP #$20
LDA $20 : SEC : SBC SprCachedY : 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
.playerBelow
REP #$20
LDA $20 : SEC : SBC SprCachedY : 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 .playerToTheRight2
;playerToTheLeft
JSL Sprite_IsToRightOfPlayer : BEQ .playerToTheRight2
;playerToTheLeft
REP #$20
LDA SprCachedX : SEC : SBC $22 ;delta X
REP #$20
LDA SprCachedX : SEC : SBC $22 ;delta X
CMP $01 : BCS .XGreaterThanY3
;YGreaterThanX
SEP #$20
LDA.b #$00 : CLC : ADC $00 : STA.w SprYSpeed
STZ.w SprXSpeed
RTS
CMP $01 : BCS .XGreaterThanY3
;YGreaterThanX
SEP #$20
LDA.b #$00 : CLC : ADC $00 : STA.w SprYSpeed
STZ.w SprXSpeed
RTS
.XGreaterThanY3
SEP #$20
LDA.b #$00 : SEC : SBC $00 : STA.w SprXSpeed
STZ.w SprYSpeed
RTS
.XGreaterThanY3
SEP #$20
LDA.b #$00 : SEC : SBC $00 : STA.w SprXSpeed
STZ.w SprYSpeed
RTS
.playerToTheRight2
REP #$20
LDA $22 : SEC : SBC SprCachedX ;delta X
.playerToTheRight2
REP #$20
LDA $22 : SEC : SBC SprCachedX ;delta X
CMP $01 : BCS .XGreaterThanY4
;YGreaterThanX
SEP #$20
LDA.b #$00 : CLC : ADC $00 : STA.w SprYSpeed
STZ.w SprXSpeed
RTS
CMP $01 : BCS .XGreaterThanY4
;YGreaterThanX
SEP #$20
LDA.b #$00 : CLC : ADC $00 : STA.w SprYSpeed
STZ.w SprXSpeed
RTS
.XGreaterThanY4
SEP #$20
LDA.b #$00 : CLC : ADC $00 : STA.w SprXSpeed
STZ.w SprYSpeed
RTS
.XGreaterThanY4
SEP #$20
LDA.b #$00 : CLC : ADC $00 : STA.w SprXSpeed
STZ.w SprYSpeed
RTS
}
; =========================================================
@@ -605,7 +641,9 @@ ApplyPalette:
Sprite_Kydreeok_Draw:
{
JSL Sprite_PrepOamCoord
JSL Sprite_OAM_AllocateDeferToPlayer
; JSL Sprite_OAM_AllocateDeferToPlayer
LDA.b #$08
JSL OAM_AllocateFromRegionE
LDA $0DC0, X : CLC : ADC $0D90, X : TAY;Animation Frame
LDA .start_index, Y : STA $06