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 STZ.w SprYSpeed : STZ.w SprXSpeed ;set velocitys to 0
JSR MoveBody JSR MoveBody
JSL Sprite_BounceFromTileCollision ;
JSR StopIfOutOfBounds JSR StopIfOutOfBounds
LDA SprTimerA, X : BNE .continue LDA SprTimerA, X : BNE .continue
@@ -145,7 +143,6 @@ Sprite_Kydreeok_Main:
LDA $36 LDA $36
JSL Sprite_ApplySpeedTowardsPlayer JSL Sprite_ApplySpeedTowardsPlayer
JSL Sprite_BounceFromTileCollision ; JSR StopIfOutOfBounds
JSR StopIfOutOfBounds JSR StopIfOutOfBounds
JSR MoveBody JSR MoveBody
@@ -169,7 +166,6 @@ Sprite_Kydreeok_Main:
PHX PHX
LDA $36 : STA $00 LDA $36 : STA $00
JSR Sprite_ApplySpeedTowardsPlayerXOrY JSR Sprite_ApplySpeedTowardsPlayerXOrY
JSL Sprite_BounceFromTileCollision ; JSR StopIfOutOfBounds
JSR StopIfOutOfBounds JSR StopIfOutOfBounds
JSR MoveBody JSR MoveBody
@@ -207,7 +203,7 @@ Sprite_Kydreeok_Main:
.notEqualX .notEqualX
SEP #$20 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 ;if both velocities are 0 go back to the Stalk_Player_XORY to re-set the course
LDA.w SprYSpeed : BNE .notZero 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: SpawnLeftHead:
{ {
LDA #$CF LDA #$CF
@@ -281,7 +301,7 @@ SpawnCenterHead:
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 #$0006 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
@@ -423,6 +443,10 @@ StopIfOutOfBounds:
LDA $19F2 : SEC : SBC #$04 : STA $19F2 LDA $19F2 : SEC : SBC #$04 : STA $19F2
LDA $19F4 : SEC : SBC #$04 : STA $19F4 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 .not_out_of_bounds_Left
SEP #$20 SEP #$20
@@ -439,6 +463,10 @@ StopIfOutOfBounds:
LDA $19F2 : CLC : ADC #$04 : STA $19F2 LDA $19F2 : CLC : ADC #$04 : STA $19F2
LDA $19F4 : CLC : ADC #$04 : STA $19F4 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 .not_out_of_bounds_Right
SEP #$20 SEP #$20
@@ -452,6 +480,10 @@ StopIfOutOfBounds:
LDA $19EC : SEC : SBC #$04 : STA $19EC LDA $19EC : SEC : SBC #$04 : STA $19EC
LDA $19EE : SEC : SBC #$04 : STA $19EE 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 .not_out_of_bounds_Up
SEP #$20 SEP #$20
@@ -471,6 +503,10 @@ StopIfOutOfBounds:
LDA $19F2 : CLC : ADC #$04 : STA $19F2 LDA $19F2 : CLC : ADC #$04 : STA $19F2
LDA $19F4 : CLC : ADC #$04 : STA $19F4 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 .not_out_of_bounds_Down
SEP #$20 SEP #$20
@@ -482,95 +518,95 @@ StopIfOutOfBounds:
Sprite_ApplySpeedTowardsPlayerXOrY: Sprite_ApplySpeedTowardsPlayerXOrY:
{ {
JSL Sprite_IsBelowPlayer : BEQ .playerBelow JSL Sprite_IsBelowPlayer : BEQ .playerBelow
;playerAbove ;playerAbove
REP #$20 REP #$20
LDA SprCachedY : SEC : SBC $20 : CLC : ADC.w #$0006 : STA $01 ;delta Y 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 ¯\_(ツ)_/¯ ;added an extra 6 pixels because aparently if link.y is 6 above sprite.y it is concidered below ¯\_(ツ)_/¯
SEP #$20 SEP #$20
JSL Sprite_IsToRightOfPlayer : BEQ .playerToTheRight1 JSL Sprite_IsToRightOfPlayer : BEQ .playerToTheRight1
;playerToTheLeft ;playerToTheLeft
REP #$20 REP #$20
LDA SprCachedX : SEC : SBC $22 ;delta X 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
REP #$20 REP #$20
LDA $20 : SEC : SBC SprCachedY : CLC : ADC.w #$0006 : STA $01 ;delta Y 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 ¯\_(ツ)_/¯ ;added an extra 6 pixels because aparently if link.y is 6 above sprite.y it is concidered below ¯\_(ツ)_/¯
SEP #$20 SEP #$20
JSL Sprite_IsToRightOfPlayer : BEQ .playerToTheRight2 JSL Sprite_IsToRightOfPlayer : BEQ .playerToTheRight2
;playerToTheLeft ;playerToTheLeft
REP #$20 REP #$20
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
REP #$20 REP #$20
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
} }
; ========================================================= ; =========================================================
@@ -605,7 +641,9 @@ ApplyPalette:
Sprite_Kydreeok_Draw: Sprite_Kydreeok_Draw:
{ {
JSL Sprite_PrepOamCoord 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 $0DC0, X : CLC : ADC $0D90, X : TAY;Animation Frame
LDA .start_index, Y : STA $06 LDA .start_index, Y : STA $06