add ancillae collision to portal rod sprites
This commit is contained in:
@@ -48,8 +48,45 @@ LinkItem_PortalRod:
|
|||||||
|
|
||||||
warnpc $07A568
|
warnpc $07A568
|
||||||
|
|
||||||
|
; Ancilla_CheckSpriteCollision
|
||||||
|
org $088DC3
|
||||||
|
JSL Ancilla_HandlePortalCollision : NOP
|
||||||
|
|
||||||
pullpc
|
pullpc
|
||||||
|
|
||||||
|
Ancilla_HandlePortalCollision:
|
||||||
|
{
|
||||||
|
LDA.w $0E20, Y : CMP.b #$03 : BNE .not_portal_arrow
|
||||||
|
; Check if Y is the orange or blue portal
|
||||||
|
LDA.w SprSubtype, Y : CMP.b #$02 : BEQ .blue_portal
|
||||||
|
CMP.b #$01 : BEQ .orange_portal
|
||||||
|
.orange_portal
|
||||||
|
PHY
|
||||||
|
LDY.w $0632 ; Blue Sprite ID
|
||||||
|
LDA.w SprX, Y : CLC : ADC.b #$10 : STA.w ANC0XL, X
|
||||||
|
LDA.w SprY, Y : STA.w ANC0YL, X
|
||||||
|
LDA.w SprXH, Y : STA.w ANC0XH, X
|
||||||
|
LDA.w SprYH, Y : STA.w ANC0YH, X
|
||||||
|
PLY
|
||||||
|
JMP .continue
|
||||||
|
|
||||||
|
.blue_portal
|
||||||
|
PHY
|
||||||
|
LDY.w $0633 ; Orange Sprite ID
|
||||||
|
LDA.w SprX, Y : STA.w ANC0XL, X
|
||||||
|
LDA.w SprY, Y : CLC : ADC.b #$10 : STA.w ANC0YL, X
|
||||||
|
LDA.w SprXH, Y : STA.w ANC0XH, X
|
||||||
|
LDA.w SprYH, Y : STA.w ANC0YH, X
|
||||||
|
PLY
|
||||||
|
.continue
|
||||||
|
LDA.b #$08
|
||||||
|
RTL
|
||||||
|
.not_portal_arrow
|
||||||
|
; Restore arrow deflection sprite code from $088DC3
|
||||||
|
LDA.w $0B6B,Y : AND.b #$08
|
||||||
|
RTL
|
||||||
|
}
|
||||||
|
|
||||||
macro SpawnPortal(x_offset, y_offset)
|
macro SpawnPortal(x_offset, y_offset)
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA $22 : CLC : ADC.w #<x_offset>
|
LDA $22 : CLC : ADC.w #<x_offset>
|
||||||
|
|||||||
@@ -61,7 +61,9 @@ Sprite_Portal_Prep:
|
|||||||
|
|
||||||
; Persist outside of camera
|
; Persist outside of camera
|
||||||
LDA #$00 : STA $0CAA, X
|
LDA #$00 : STA $0CAA, X
|
||||||
LDA SprHitbox, X : AND.b #$20 : STA SprHitbox, X
|
LDA SprHitbox, X : AND.b #$C0 : STA SprHitbox, X
|
||||||
|
STZ.w $0B6B, X
|
||||||
|
LDA.b #$FF : STA.w $0BA0, X
|
||||||
|
|
||||||
PLB
|
PLB
|
||||||
RTL
|
RTL
|
||||||
@@ -114,6 +116,7 @@ Sprite_Portal_Main:
|
|||||||
TXA : STA OrangeSpriteIndex
|
TXA : STA OrangeSpriteIndex
|
||||||
LDA $0D00, X : STA OrangePortal_X
|
LDA $0D00, X : STA OrangePortal_X
|
||||||
LDA $0D10, X : STA OrangePortal_Y
|
LDA $0D10, X : STA OrangePortal_Y
|
||||||
|
LDA.b #$01 : STA.w SprSubtype, X
|
||||||
|
|
||||||
%GotoAction(2)
|
%GotoAction(2)
|
||||||
RTS
|
RTS
|
||||||
@@ -122,6 +125,7 @@ Sprite_Portal_Main:
|
|||||||
TXA : STA BlueSpriteIndex
|
TXA : STA BlueSpriteIndex
|
||||||
LDA $0D00, X : STA BluePortal_X
|
LDA $0D00, X : STA BluePortal_X
|
||||||
LDA $0D10, X : STA BluePortal_Y
|
LDA $0D10, X : STA BluePortal_Y
|
||||||
|
LDA.b #$02 : STA.w SprSubtype, X
|
||||||
|
|
||||||
%GotoAction(1)
|
%GotoAction(1)
|
||||||
RTS
|
RTS
|
||||||
@@ -305,6 +309,7 @@ CheckForDismissPortal:
|
|||||||
PHX
|
PHX
|
||||||
LDA BlueSpriteIndex : TAX
|
LDA BlueSpriteIndex : TAX
|
||||||
STZ.w $0DD0, X
|
STZ.w $0DD0, X
|
||||||
|
DEC.w $06FE
|
||||||
PLX
|
PLX
|
||||||
JMP .return
|
JMP .return
|
||||||
|
|
||||||
@@ -313,6 +318,7 @@ CheckForDismissPortal:
|
|||||||
PHX
|
PHX
|
||||||
LDA OrangeSpriteIndex : TAX
|
LDA OrangeSpriteIndex : TAX
|
||||||
STZ.w $0DD0, X
|
STZ.w $0DD0, X
|
||||||
|
DEC.w $06FE
|
||||||
PLX
|
PLX
|
||||||
|
|
||||||
.return
|
.return
|
||||||
|
|||||||
Reference in New Issue
Block a user