cleanup portal sprite

This commit is contained in:
scawful
2024-07-04 12:10:05 -04:00
parent 3642c9bc03
commit fa7d25663d

View File

@@ -85,8 +85,6 @@ OrangeActive = $7E06FD
OrangeSpriteIndex = $7E0633 OrangeSpriteIndex = $7E0633
BlueSpriteIndex = $7E0632 BlueSpriteIndex = $7E0632
; ========================================================= ; =========================================================
; Main Sprite Code ; Main Sprite Code
; ========================================================= ; =========================================================
@@ -95,6 +93,7 @@ Sprite_Portal_Main:
{ {
LDA.w SprAction, X LDA.w SprAction, X
JSL UseImplicitRegIndexedLocalJumpTable JSL UseImplicitRegIndexedLocalJumpTable
dw StateHandler dw StateHandler
dw BluePortal dw BluePortal
dw OrangePortal dw OrangePortal
@@ -105,7 +104,6 @@ Sprite_Portal_Main:
dw BluePortal_WarpOverworld dw BluePortal_WarpOverworld
dw OrangePortal_WarpOverworld dw OrangePortal_WarpOverworld
StateHandler: StateHandler:
{ {
JSR CheckForDismissPortal JSR CheckForDismissPortal
@@ -136,33 +134,26 @@ Sprite_Portal_Main:
%StartOnFrame(0) %StartOnFrame(0)
%PlayAnimation(0,1,8) %PlayAnimation(0,1,8)
LDA $11 : CMP.b #$2A : BNE .not_warped_yet LDA $11 : CMP.b #$2A : BNE .not_warped_yet
STZ $11 STZ $11
.not_warped_yet .not_warped_yet
CLC
LDA SprTimerD, X : BNE .NoOverlap
JSL Link_SetupHitBox
JSL $0683EA ; Sprite_SetupHitbox_long
JSL CheckIfHitBoxesOverlap : BCC .NoOverlap
CLC CLC
LDA $1B : BEQ .outdoors LDA SprTimerD, X : BNE .NoOverlap
JSL Link_SetupHitBox
JSL $0683EA ; Sprite_SetupHitbox_long
%GotoAction(3) ; BluePortal_WarpDungeon JSL CheckIfHitBoxesOverlap : BCC .NoOverlap
.NoOverlap CLC
LDA $1B : BEQ .outdoors
%GotoAction(3) ; BluePortal_WarpDungeon
.NoOverlap
RTS RTS
.outdoors .outdoors
%GotoAction(5) ; BluePortal_WarpOverworld %GotoAction(5) ; BluePortal_WarpOverworld
RTS RTS
} }
@@ -171,11 +162,10 @@ Sprite_Portal_Main:
%StartOnFrame(2) %StartOnFrame(2)
%PlayAnimation(2,3,8) %PlayAnimation(2,3,8)
LDA $11 : CMP.b #$2A : BNE .not_warped_yet LDA $11 : CMP.b #$2A : BNE .not_warped_yet
STZ $11 STZ $11
.not_warped_yet .not_warped_yet
CLC CLC
LDA SprTimerD, X : BNE .NoOverlap LDA SprTimerD, X : BNE .NoOverlap
JSL Link_SetupHitBox JSL Link_SetupHitBox
JSL $0683EA ; Sprite_SetupHitbox_long JSL $0683EA ; Sprite_SetupHitbox_long
@@ -186,10 +176,10 @@ Sprite_Portal_Main:
LDA $1B : BEQ .outdoors LDA $1B : BEQ .outdoors
%GotoAction(4) ; OrangePortal_WarpDungeon %GotoAction(4) ; OrangePortal_WarpDungeon
.NoOverlap .NoOverlap
RTS RTS
.outdoors .outdoors
%GotoAction(6) ; OrangePortal_WarpOverworld %GotoAction(6) ; OrangePortal_WarpOverworld
RTS RTS
@@ -304,40 +294,36 @@ Sprite_Portal_Main:
CheckForDismissPortal: CheckForDismissPortal:
{ {
LDA $06FE : CMP.b #$02 : BCC .return LDA $06FE : CMP.b #$02 : BCC .return
LDA $7E0FA6 : BEQ .DespawnOrange ; Check what portal is spawning next LDA $7E0FA6 : BEQ .DespawnOrange ; Check what portal is spawning next
PHX
PHX LDA BlueSpriteIndex : TAX
LDA BlueSpriteIndex : TAX STZ.w $0DD0, X
STZ.w $0DD0, X DEC.w $06FE
DEC.w $06FE PLX
PLX .DespawnOrange
PHX
LDA OrangeSpriteIndex : TAX
.DespawnOrange STZ.w $0DD0, X
DEC.w $06FE
PHX PLX
LDA OrangeSpriteIndex : TAX
STZ.w $0DD0, X
DEC.w $06FE
PLX
RTS RTS
.return .return
INC $06FE ; This ticker needs to be reset when transitioning rooms and maps. INC $06FE ; This ticker needs to be reset when transitioning rooms and maps.
RTS RTS
} }
RejectOnTileCollision: RejectOnTileCollision:
{ {
LDA.w SprY, X : AND #$F8 : STA.b $00 : LDA.w SprYH, X : STA.b $01 LDA.w SprY, X : AND #$F8 : STA.b $00 : LDA.w SprYH, X : STA.b $01
LDA.w SprX, X : AND #$F8 : STA.b $02 : LDA.w SprXH, X : STA.b $03 LDA.w SprX, X : AND #$F8 : STA.b $02 : LDA.w SprXH, X : STA.b $03
; Fetch tile attributes based on current coordinates ; Fetch tile attributes based on current coordinates
LDA.b #$00 : JSL Sprite_GetTileAttr LDA.b #$00 : JSL Sprite_GetTileAttr
; Load the tile index ; Load the tile index
LDA $0FA5 : CLC : CMP.b #$00 : BEQ .not_out_of_bounds LDA $0FA5 : CLC : CMP.b #$00 : BEQ .not_out_of_bounds
CMP.b #$48 : BEQ .not_out_of_bounds CMP.b #$48 : BEQ .not_out_of_bounds
; Clear the sprite and make an error sound ; Clear the sprite and make an error sound
LDA #$3C ; SFX2.3C Error beep LDA #$3C ; SFX2.3C Error beep
@@ -347,7 +333,7 @@ RejectOnTileCollision:
DEC $06FE DEC $06FE
.not_out_of_bounds .not_out_of_bounds
RTS RTS
} }
;========================================================== ;==========================================================
@@ -400,7 +386,7 @@ Sprite_Portal_Draw:
TYA : LSR #2 : TAY TYA : LSR #2 : TAY
LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer LDA.b #$02 : ORA $0F : STA ($92), Y ; store size in oam buffer
PLY : INY PLY : INY
@@ -437,10 +423,5 @@ Sprite_Portal_Draw:
db $74 db $74
db $32 db $32
db $72 db $72
.sizes
db $02
db $02
db $02
db $02
} }