kydreeok replace spr ram w labels

This commit is contained in:
scawful
2024-06-07 00:55:09 -04:00
parent 4622b45724
commit 1c73035a74

View File

@@ -3,7 +3,7 @@
; ========================================================= ; =========================================================
!SPRID = $7A ; The sprite ID you are overwriting (HEX) !SPRID = $7A ; The sprite ID you are overwriting (HEX)
!NbrTiles = 10 ; Number of tiles used in a frame !NbrTiles = 08 ; Number of tiles used in a frame
!Harmless = 00 ; 00 = Sprite is Harmful, 01 = Sprite is Harmless !Harmless = 00 ; 00 = Sprite is Harmful, 01 = Sprite is Harmless
!HVelocity = 00 ; Is your sprite going super fast? put 01 if it is !HVelocity = 00 ; Is your sprite going super fast? put 01 if it is
!Health = 00 ; Number of Health the sprite have !Health = 00 ; Number of Health the sprite have
@@ -53,13 +53,13 @@ Sprite_Kydreeok_Prep:
{ {
PHB : PHK : PLB PHB : PHK : PLB
LDA #$40 : STA SprTimerA, X LDA #$40 : STA.w SprTimerA, X
LDA.b #$08 : STA $36 ; Stores initial movement speeds LDA.b #$08 : STA $36 ; Stores initial movement speeds
LDA.b #$06 : STA $0428 ; Allows BG1 to move LDA.b #$06 : STA $0428 ; Allows BG1 to move
; Cache the origin position of the sprite. ; Cache the origin position of the sprite.
LDA SprX, X : STA SprMiscA, X LDA SprX, X : STA.w SprMiscA, X
LDA SprY, X : STA SprMiscB, X LDA SprY, X : STA.w SprMiscB, X
JSR SpawnLeftHead JSR SpawnLeftHead
JSR SpawnCenterHead JSR SpawnCenterHead
@@ -67,6 +67,7 @@ Sprite_Kydreeok_Prep:
STZ.w Neck1_OffsetX : STZ.w Neck1_OffsetY STZ.w Neck1_OffsetX : STZ.w Neck1_OffsetY
STZ.w Neck2_OffsetX : STZ.w Neck2_OffsetY STZ.w Neck2_OffsetX : STZ.w Neck2_OffsetY
STZ.w Neck3_OffsetX : STZ.w Neck3_OffsetY
JSR ApplyPalette JSR ApplyPalette
@@ -102,7 +103,7 @@ Sprite_Kydreeok_Main:
LDA SprTimerA, X : BNE .continue LDA SprTimerA, X : BNE .continue
TXA : STA Kydreeok_Id TXA : STA Kydreeok_Id
LDA #$40 : STA SprTimerA, X LDA #$40 : STA.w SprTimerA, X
%GotoAction(1) %GotoAction(1)
.continue .continue
@@ -118,7 +119,7 @@ Sprite_Kydreeok_Main:
PHX PHX
STZ $0D40 : STZ $0D50 ;set velocitys to 0 STZ.w SprYSpeed : STZ.w SprXSpeed ;set velocitys to 0
JSR MoveBody JSR MoveBody
JSL Sprite_BounceFromTileCollision ; JSL Sprite_BounceFromTileCollision ;
@@ -191,7 +192,7 @@ Sprite_Kydreeok_Main:
REP #$20 REP #$20
; Use a range of + 0x05 because being exact equal didnt trigger consistently ; Use a range of + 0x05 because being exact equal didnt trigger consistently
LDA $20 : SBC $0FDA : CMP.w #$FFFB : BCC .notEqualY LDA $20 : SBC SprCachedY : CMP.w #$FFFB : BCC .notEqualY
SEP #$20 SEP #$20
%GotoAction(2) ; Kydreeok_MoveXandY %GotoAction(2) ; Kydreeok_MoveXandY
@@ -200,7 +201,7 @@ Sprite_Kydreeok_Main:
.notEqualY .notEqualY
; Use a range of + 0x05 because being exact equal didnt trigger consistently ; Use a range of + 0x05 because being exact equal didnt trigger consistently
LDA $22 : SBC $0FD8 : CMP.w #$FFFB : BCC .notEqualX LDA $22 : SBC SprCachedX : CMP.w #$FFFB : BCC .notEqualX
SEP #$20 SEP #$20
%GotoAction(2) ; Kydreeok_MoveXandY %GotoAction(2) ; Kydreeok_MoveXandY
@@ -209,8 +210,8 @@ Sprite_Kydreeok_Main:
JSL Sprite_BounceFromTileCollision ; JSR StopIfOutOfBounds JSL Sprite_BounceFromTileCollision ; 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 $0D40 : BNE .notZero LDA.w SprYSpeed : BNE .notZero
LDA $0D50 : BNE .notZero LDA.w SprXSpeed : BNE .notZero
%GotoAction(3) ; Kydreeok_MoveXorY %GotoAction(3) ; Kydreeok_MoveXorY
.notZero .notZero
@@ -241,14 +242,14 @@ SpawnLeftHead:
PHX PHX
; code that controls where to spawn the offspring. ; code that controls where to spawn the offspring.
REP #$20 REP #$20
LDA $0FD8 : SEC : SBC.w #$000F LDA SprCachedX : SEC : SBC.w #$000F
SEP #$20 SEP #$20
STA $0D10, Y : XBA : STA $0D30, Y STA.w SprX, Y : XBA : STA.w SprXH, Y
REP #$20 REP #$20
LDA $0FDA : SEC : SBC.w #$000F LDA SprCachedY : SEC : SBC.w #$000F
SEP #$20 SEP #$20
STA $0D00, Y : XBA : STA $0D20, Y STA.w SprY, Y : XBA : STA.w SprYH, Y
LDA.w SprX, Y LDA.w SprX, Y
STA.w SprMiscA, Y : STA.w $19EA : STA.w $19EC : STA.w $19EE STA.w SprMiscA, Y : STA.w $19EA : STA.w $19EC : STA.w $19EE
@@ -257,8 +258,8 @@ SpawnLeftHead:
TYX TYX
STZ $0D60, X STZ.w SprYRound, X
STZ $0D70, X STZ.w SprXRound, X
PLX PLX
.return .return
@@ -280,24 +281,24 @@ SpawnCenterHead:
PHX PHX
; code that controls where to spawn the offspring. ; code that controls where to spawn the offspring.
REP #$20 REP #$20
LDA $0FD8 : CLC : ADC.w #$0006 LDA SprCachedX : CLC : ADC.w #$0006
SEP #$20 SEP #$20
STA $0D10, Y : XBA : STA $0D30, Y STA.w SprX, Y : XBA : STA.w SprXH, Y
REP #$20 REP #$20
LDA $0FDA : SEC : SBC.w #$0006 LDA SprCachedY : SEC : SBC.w #$000F
SEP #$20 SEP #$20
STA $0D00, Y : XBA : STA $0D20, 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 $19F0 : STA.w $19F2 : STA.w $19F4 STA.w SprMiscA, Y : STA.w $1A78 : STA.w $1A7A : STA.w $1A7C
LDA.w SprY, Y : STA.w $19F1 : STA.w $19F3 : STA.w $19F5 : 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 $0D60, X STZ.w SprYRound, X
STZ $0D70, X STZ.w SprXRound, X
PLX PLX
.return .return
@@ -320,14 +321,14 @@ SpawnRightHead:
PHX PHX
; code that controls where to spawn the offspring. ; code that controls where to spawn the offspring.
REP #$20 REP #$20
LDA $0FD8 : CLC : ADC.w #$000C LDA SprCachedX : CLC : ADC.w #$000C
SEP #$20 SEP #$20
STA $0D10, Y : XBA : STA $0D30, Y STA.w SprX, Y : XBA : STA.w SprXH, Y
REP #$20 REP #$20
LDA $0FDA : SEC : SBC.w #$000F LDA SprCachedY : SEC : SBC.w #$000F
SEP #$20 SEP #$20
STA $0D00, Y : XBA : STA $0D20, 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 $19F0 : STA.w $19F2 : STA.w $19F4 STA.w SprMiscA, Y : STA.w $19F0 : STA.w $19F2 : STA.w $19F4
@@ -336,8 +337,8 @@ SpawnRightHead:
TYX TYX
STZ $0D60, X STZ.w SprYRound, X
STZ $0D70, X STZ.w SprXRound, X
PLX PLX
.return .return
@@ -351,13 +352,13 @@ MoveBody:
{ {
; Handle the shell bg movement ; Handle the shell bg movement
; Trinexx_MoveBody ; Trinexx_MoveBody
LDA.w $0D10, X : PHA LDA.w SprX, X : PHA
LDA.w $0D00, X : PHA LDA.w SprY, X : PHA
JSL Sprite_Move JSL Sprite_Move
PLA PLA
LDY.b #$00 : SEC : SBC.w $0D00, X : STA.w $0310 LDY.b #$00 : SEC : SBC.w SprY, X : STA.w $0310
BPL .pos_y_low BPL .pos_y_low
DEY DEY
@@ -367,7 +368,7 @@ MoveBody:
; ----------------------------------------------------- ; -----------------------------------------------------
PLA PLA
LDY.b #$00 : SEC : SBC.w $0D10, X : STA.w $0312 LDY.b #$00 : SEC : SBC.w SprX, X : STA.w $0312
BPL .pos_x_low BPL .pos_x_low
DEY DEY
@@ -379,13 +380,13 @@ MoveBody:
LDA.b #$01 : STA.w $0428 LDA.b #$01 : STA.w $0428
LDA.w $0D00, X : SEC : SBC.b #$0C : STA.w $0DB0, X LDA.w SprY, X : SEC : SBC.b #$0C : STA.w $0DB0, X
LDA.w $0B08 : SEC : SBC.w $0D10, X LDA.w $0B08 : SEC : SBC.w SprX, X
CLC : ADC.b #$02 CLC : ADC.b #$02
CMP.b #$04 : BCS .not_at_target CMP.b #$04 : BCS .not_at_target
LDA.w $0B09 : SEC : SBC.w $0D00, X LDA.w $0B09 : SEC : SBC.w SprY, X
CLC : ADC.b #$02 CLC : ADC.b #$02
CMP.b #$04 : BCS .not_at_target CMP.b #$04 : BCS .not_at_target
@@ -411,10 +412,10 @@ StopIfOutOfBounds:
; Set A to 00 if outside of certain bounds ; Set A to 00 if outside of certain bounds
REP #$20 REP #$20
LDA $0FD8 : CMP.w #$0A22 : BCS .notOutOfBoundsLeft LDA SprCachedX : CMP.w #$0A22 : BCS .notOutOfBoundsLeft
SEP #$20 SEP #$20
LDA $0D50 : CMP.b #$7F : BCC .notOutOfBoundsLeft LDA.w SprXSpeed : CMP.b #$7F : BCC .notOutOfBoundsLeft
LDA.b #-10 : STA $0D50 : STA $0D70 LDA.b #-10 : STA.w SprXSpeed : STA SprXRound
LDA $19EA : SEC : SBC #$04 : STA $19EA LDA $19EA : SEC : SBC #$04 : STA $19EA
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
@@ -427,10 +428,10 @@ StopIfOutOfBounds:
SEP #$20 SEP #$20
REP #$20 REP #$20
LDA $0FD8 : CMP.w #$1B00 : BCC .notOutOfBoundsRight LDA SprCachedX : CMP.w #$1B00 : BCC .notOutOfBoundsRight
SEP #$20 SEP #$20
LDA $0D50 : CMP.b #$80 : BCS .notOutOfBoundsRight LDA.w SprXSpeed : CMP.b #$80 : BCS .notOutOfBoundsRight
LDA.b #$00 : STA $0D50 : STA $0D70 LDA.b #$00 : STA.w SprXSpeed : STA SprXRound
LDA $19EA : CLC : ADC #$04 : STA $19EA LDA $19EA : CLC : ADC #$04 : STA $19EA
LDA $19EC : CLC : ADC #$04 : STA $19EC LDA $19EC : CLC : ADC #$04 : STA $19EC
LDA $19EE : CLC : ADC #$04 : STA $19EE LDA $19EE : CLC : ADC #$04 : STA $19EE
@@ -444,10 +445,10 @@ StopIfOutOfBounds:
; Upper bound ; Upper bound
REP #$20 REP #$20
LDA $0FDA : CMP.w #$0150 : BCS .notOutOfBoundsUp LDA SprCachedY : CMP.w #$0150 : BCS .notOutOfBoundsUp
SEP #$20 SEP #$20
LDA $0D40 : CMP.b #$7F : BCC .notOutOfBoundsUp LDA.w SprYSpeed : CMP.b #$7F : BCC .notOutOfBoundsUp
LDA.b #$00 : STA $0D40 : STA $0D60 LDA.b #$00 : STA.w SprYSpeed : STA SprYRound
LDA $19EA : SEC : SBC #$04 : STA $19EA LDA $19EA : SEC : SBC #$04 : STA $19EA
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
@@ -455,12 +456,11 @@ StopIfOutOfBounds:
.notOutOfBoundsUp .notOutOfBoundsUp
SEP #$20 SEP #$20
print "CHECK DOWNS", pc
REP #$20 REP #$20
LDA $0FDA : CMP.w #$01A0 : BCC .notOutOfBoundsDown LDA SprCachedY : CMP.w #$01A0 : BCC .notOutOfBoundsDown
SEP #$20 SEP #$20
LDA $0D40 : CMP.b #$80 : BCS .notOutOfBoundsDown LDA.w SprYSpeed : CMP.b #$80 : BCS .notOutOfBoundsDown
LDA.b #-10 : STA $0D40 : STA $0D60 ; Reverse the direction LDA.b #-10 : STA.w SprYSpeed : STA SprYRound ; Reverse the direction
; Modify the neck position ; Modify the neck position
; Makes them move away from each other a bit ; Makes them move away from each other a bit
@@ -487,7 +487,7 @@ Sprite_ApplySpeedTowardsPlayerXOrY:
;playerAbove ;playerAbove
REP #$20 REP #$20
LDA $0FDA : 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
@@ -495,44 +495,44 @@ Sprite_ApplySpeedTowardsPlayerXOrY:
;playerToTheLeft ;playerToTheLeft
REP #$20 REP #$20
LDA $0FD8 : 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 $0D40 LDA.b #$00 : SEC : SBC $00 : STA.w SprYSpeed
STZ $0D50 STZ.w SprXSpeed
RTS RTS
.XGreaterThanY1 .XGreaterThanY1
SEP #$20 SEP #$20
LDA.b #$00 : SEC : SBC $00 : STA $0D50 LDA.b #$00 : SEC : SBC $00 : STA.w SprXSpeed
STZ $0D40 STZ.w SprYSpeed
RTS RTS
.playerToTheRight1 .playerToTheRight1
REP #$20 REP #$20
LDA $22 : SEC : SBC $0FD8 ;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 $0D40 LDA.b #$00 : SEC : SBC $00 : STA.w SprYSpeed
STZ $0D50 STZ.w SprXSpeed
RTS RTS
.XGreaterThanY2 .XGreaterThanY2
SEP #$20 SEP #$20
LDA.b #$00 : CLC : ADC $00 : STA $0D50 LDA.b #$00 : CLC : ADC $00 : STA.w SprXSpeed
STZ $0D40 STZ.w SprYSpeed
RTS RTS
.playerBelow .playerBelow
REP #$20 REP #$20
LDA $20 : SEC : SBC $0FDA : 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
@@ -540,37 +540,37 @@ Sprite_ApplySpeedTowardsPlayerXOrY:
;playerToTheLeft ;playerToTheLeft
REP #$20 REP #$20
LDA $0FD8 : 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 $0D40 LDA.b #$00 : CLC : ADC $00 : STA.w SprYSpeed
STZ $0D50 STZ.w SprXSpeed
RTS RTS
.XGreaterThanY3 .XGreaterThanY3
SEP #$20 SEP #$20
LDA.b #$00 : SEC : SBC $00 : STA $0D50 LDA.b #$00 : SEC : SBC $00 : STA.w SprXSpeed
STZ $0D40 STZ.w SprYSpeed
RTS RTS
.playerToTheRight2 .playerToTheRight2
REP #$20 REP #$20
LDA $22 : SEC : SBC $0FD8 ;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 $0D40 LDA.b #$00 : CLC : ADC $00 : STA.w SprYSpeed
STZ $0D50 STZ.w SprXSpeed
RTS RTS
.XGreaterThanY4 .XGreaterThanY4
SEP #$20 SEP #$20
LDA.b #$00 : CLC : ADC $00 : STA $0D50 LDA.b #$00 : CLC : ADC $00 : STA.w SprXSpeed
STZ $0D40 STZ.w SprYSpeed
RTS RTS
} }