Merge branch 'master' into NewMinecart
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
; =========================================================
|
||||
; Sprite Properties
|
||||
; =========================================================
|
||||
; Collectible Sprites
|
||||
; (Pineapple, Seashell, Sword/Shield, Rock Sirloin)
|
||||
|
||||
!SPRID = $52 ; The sprite ID you are overwriting (HEX)
|
||||
!SPRID = $52
|
||||
!NbrTiles = 03 ; Number of tiles used in a frame
|
||||
!Harmless = 01 ; 00 = Sprite is Harmful, 01 = Sprite is Harmless
|
||||
!HVelocity = 00 ; Is your sprite going super fast? put 01 if it is
|
||||
@@ -32,8 +32,6 @@
|
||||
|
||||
%Set_Sprite_Properties(Sprite_Collectible_Prep, Sprite_Collectible_Long)
|
||||
|
||||
; =========================================================
|
||||
|
||||
Sprite_Collectible_Long:
|
||||
{
|
||||
PHB : PHK : PLB
|
||||
@@ -59,8 +57,6 @@ Sprite_Collectible_Long:
|
||||
RTL
|
||||
}
|
||||
|
||||
; =========================================================
|
||||
|
||||
Sprite_Collectible_Prep:
|
||||
{
|
||||
PHB : PHK : PLB
|
||||
@@ -80,12 +76,10 @@ Sprite_Collectible_Prep:
|
||||
RTL
|
||||
}
|
||||
|
||||
; =========================================================
|
||||
|
||||
Sprite_Collectible_Main:
|
||||
{
|
||||
LDA.w SprAction, X
|
||||
JSL UseImplicitRegIndexedLocalJumpTable
|
||||
JSL JumpTableLocal
|
||||
|
||||
dw Pineapple
|
||||
dw Seashell
|
||||
@@ -139,8 +133,6 @@ Sprite_Collectible_Main:
|
||||
|
||||
}
|
||||
|
||||
; =========================================================
|
||||
|
||||
Sprite_Pineapple_Draw:
|
||||
{
|
||||
JSL Sprite_PrepOamCoord
|
||||
@@ -196,9 +188,6 @@ Sprite_Pineapple_Draw:
|
||||
|
||||
RTS
|
||||
|
||||
|
||||
; =========================================================
|
||||
|
||||
.start_index
|
||||
db $00
|
||||
.nbr_of_tiles
|
||||
@@ -271,7 +260,6 @@ Sprite_SwordShield_Draw:
|
||||
|
||||
RTS
|
||||
|
||||
|
||||
.start_index
|
||||
db $00
|
||||
.nbr_of_tiles
|
||||
|
||||
@@ -32,8 +32,6 @@
|
||||
|
||||
%Set_Sprite_Properties(Sprite_DekuLeaf_Prep, Sprite_DekuLeaf_Long)
|
||||
|
||||
; =========================================================
|
||||
|
||||
Sprite_DekuLeaf_Long:
|
||||
{
|
||||
PHB : PHK : PLB
|
||||
@@ -50,8 +48,6 @@ Sprite_DekuLeaf_Long:
|
||||
RTL
|
||||
}
|
||||
|
||||
; =========================================================
|
||||
|
||||
Sprite_DekuLeaf_Prep:
|
||||
{
|
||||
PHB : PHK : PLB
|
||||
@@ -62,12 +58,10 @@ Sprite_DekuLeaf_Prep:
|
||||
RTL
|
||||
}
|
||||
|
||||
; =========================================================
|
||||
|
||||
Sprite_DekuLeaf_Main:
|
||||
{
|
||||
LDA.w SprAction, X
|
||||
JSL UseImplicitRegIndexedLocalJumpTable
|
||||
JSL JumpTableLocal
|
||||
|
||||
dw WaitForPlayer
|
||||
dw Whirlpool_Main
|
||||
@@ -95,61 +89,35 @@ Sprite_DekuLeaf_Main:
|
||||
|
||||
LDA $0AAB : BEQ .not_on
|
||||
|
||||
STZ $55 ; Reset cape flag
|
||||
STZ $0AAB ; Reset underwater flag
|
||||
STZ $0351 ; Reset ripple flag
|
||||
STZ $037B ; Reset invincibility flag
|
||||
STZ $02B2
|
||||
STZ $55 ; Reset cape flag
|
||||
STZ $0AAB ; Reset underwater flag
|
||||
STZ $0351 ; Reset ripple flag
|
||||
STZ $037B ; Reset invincibility flag
|
||||
STZ $02B2 ; Reset mask flag
|
||||
|
||||
LDA.b $10
|
||||
CMP.b #$0B
|
||||
BEQ .exit
|
||||
LDA.b $10 : CMP.b #$0B : BEQ .exit
|
||||
LDA.b $8A : AND.b #$40 : STA.b $7B : BEQ .no_mirror_portal
|
||||
LDA.b $20 : STA.w $1ADF
|
||||
LDA.b $21 : STA.w $1AEF
|
||||
LDA.b $22 : STA.w $1ABF
|
||||
LDA.b $23 : STA.w $1ACF
|
||||
.no_mirror_portal
|
||||
LDA.b #$23
|
||||
|
||||
LDA.b $8A
|
||||
AND.b #$40
|
||||
STA.b $7B
|
||||
#SetGameModeLikeMirror:
|
||||
STA.b $11
|
||||
STZ.w $03F8
|
||||
LDA.b #$01 : STA.w $02DB
|
||||
STZ.b $B0
|
||||
STZ.b $27 : STZ.b $28
|
||||
LDA.b #$14 : STA.b $5D
|
||||
|
||||
BEQ .no_mirror_portal
|
||||
|
||||
LDA.b $20
|
||||
STA.w $1ADF
|
||||
|
||||
LDA.b $21
|
||||
STA.w $1AEF
|
||||
|
||||
LDA.b $22
|
||||
STA.w $1ABF
|
||||
|
||||
LDA.b $23
|
||||
STA.w $1ACF
|
||||
|
||||
.no_mirror_portal
|
||||
LDA.b #$23
|
||||
|
||||
#SetGameModeLikeMirror:
|
||||
STA.b $11
|
||||
|
||||
STZ.w $03F8
|
||||
|
||||
LDA.b #$01
|
||||
STA.w $02DB
|
||||
|
||||
STZ.b $B0
|
||||
|
||||
STZ.b $27
|
||||
STZ.b $28
|
||||
|
||||
LDA.b #$14 ; LINKSTATE 14
|
||||
STA.b $5D
|
||||
|
||||
.not_on
|
||||
.exit
|
||||
.not_on
|
||||
.exit
|
||||
RTS
|
||||
}
|
||||
}
|
||||
|
||||
; =========================================================
|
||||
|
||||
Sprite_DekuLeaf_Draw:
|
||||
{
|
||||
JSL Sprite_PrepOamCoord
|
||||
@@ -159,7 +127,6 @@ Sprite_DekuLeaf_Draw:
|
||||
LDA $0DC0, X : CLC : ADC $0D90, X : TAY;Animation Frame
|
||||
LDA .start_index, Y : STA $06
|
||||
|
||||
|
||||
PHX
|
||||
LDX .nbr_of_tiles, Y ;amount of tiles -1
|
||||
LDY.b #$00
|
||||
@@ -207,9 +174,6 @@ Sprite_DekuLeaf_Draw:
|
||||
|
||||
RTS
|
||||
|
||||
|
||||
; =========================================================
|
||||
|
||||
.start_index
|
||||
db $00
|
||||
.nbr_of_tiles
|
||||
@@ -280,8 +244,6 @@ Sprite_Whirlpool_Draw:
|
||||
|
||||
RTS
|
||||
|
||||
|
||||
|
||||
.start_index
|
||||
db $00, $04, $08
|
||||
.nbr_of_tiles
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
; Pushable Ice Block
|
||||
|
||||
!SPRID = $D5; The sprite ID you are overwriting (HEX)
|
||||
!NbrTiles = 03 ; Number of tiles used in a frame
|
||||
!SPRID = $D5
|
||||
!NbrTiles = 02
|
||||
!Harmless = 01 ; 00 = Sprite is Harmful, 01 = Sprite is Harmless
|
||||
!HVelocity = 00 ; Is your sprite going super fast? put 01 if it is
|
||||
!Health = 00 ; Number of Health the sprite have
|
||||
@@ -11,7 +11,7 @@
|
||||
!SmallShadow = 00 ; 01 = small shadow, 00 = no shadow
|
||||
!Shadow = 00 ; 00 = don't draw shadow, 01 = draw a shadow
|
||||
!Palette = 00 ; Unused in this template (can be 0 to 7)
|
||||
!Hitbox = 00 ; 00 to 31, can be viewed in sprite draw tool
|
||||
!Hitbox = 09 ; 00 to 31, can be viewed in sprite draw tool
|
||||
!Persist = 00 ; 01 = your sprite continue to live offscreen
|
||||
!Statis = 00 ; 00 = is sprite is alive?, (kill all enemies room)
|
||||
!CollisionLayer = 00 ; 01 = will check both layer for collision
|
||||
@@ -33,15 +33,17 @@
|
||||
Sprite_IceBlock_Long:
|
||||
{
|
||||
PHB : PHK : PLB
|
||||
|
||||
LDA.w SprMiscC, X : BEQ .not_being_pushed
|
||||
STZ.w SprMiscC, X
|
||||
STZ.b $5E ; Clear Links speed
|
||||
STZ.b LinkSpeedTbl
|
||||
STZ.b $48 ; Clear push actions bitfield
|
||||
.not_being_pushed
|
||||
|
||||
LDA.w SprTimerA, X : BEQ .retain_momentum
|
||||
LDA.b #$01 : STA.w SprMiscC, X
|
||||
LDA.b #$84 : STA.b $48 ; Set statue and push block actions
|
||||
LDA.b #$04 : STA.b $5E ; Slipping into pit speed
|
||||
LDA.b #$04 : STA.b LinkSpeedTbl ; Slipping into pit speed
|
||||
.retain_momentum
|
||||
|
||||
JSR Sprite_IceBlock_Draw
|
||||
@@ -60,122 +62,115 @@ Sprite_IceBlock_Prep:
|
||||
LDA.w SprY, X : STA.w SprMiscE, X
|
||||
LDA.w SprXH, X : STA.w SprMiscF, X
|
||||
LDA.w SprYH, X : STA.w SprMiscG, X
|
||||
|
||||
STZ.w SprDefl, X
|
||||
LDA.w SprHitbox, X : ORA.b #$09 : STA.w SprHitbox, X
|
||||
PLB
|
||||
RTL
|
||||
}
|
||||
|
||||
Sprite_IceBlock_Main:
|
||||
{
|
||||
LDA.w SprAction, X
|
||||
JSL UseImplicitRegIndexedLocalJumpTable
|
||||
dw MovementHandler
|
||||
%PlayAnimation(0, 0, 1)
|
||||
|
||||
MovementHandler:
|
||||
{
|
||||
%PlayAnimation(0, 0, 1)
|
||||
JSR Statue_BlockSprites
|
||||
JSL Sprite_CheckDamageFromPlayer : BCC .no_damage
|
||||
LDA.w SprMiscD, X : STA.w SprX, X
|
||||
LDA.w SprMiscE, X : STA.w SprY, X
|
||||
LDA.w SprMiscF, X : STA.w SprXH, X
|
||||
LDA.w SprMiscG, X : STA.w SprYH, X
|
||||
STZ.w SprXSpeed, X : STZ.w SprYSpeed, X
|
||||
STZ.w SprTimerA, X : STZ.w SprMiscA, X
|
||||
.no_damage
|
||||
|
||||
JSR Statue_BlockSprites
|
||||
JSL Sprite_CheckDamageFromPlayer : BCC .no_damage
|
||||
LDA.w SprMiscD, X : STA.w SprX, X
|
||||
LDA.w SprMiscE, X : STA.w SprY, X
|
||||
LDA.w SprMiscF, X : STA.w SprXH, X
|
||||
LDA.w SprMiscG, X : STA.w SprYH, X
|
||||
STZ.w SprXSpeed, X : STZ.w SprYSpeed, X
|
||||
.no_damage
|
||||
STZ.w $0642
|
||||
JSR Sprite_IceBlock_CheckForSwitch : BCC .no_switch
|
||||
STZ.w SprXSpeed, X : STZ.w SprYSpeed, X
|
||||
LDA.b #$01 : STA.w $0642
|
||||
.no_switch
|
||||
|
||||
STZ.w $0642
|
||||
JSR Sprite_IceBlock_CheckForSwitch : BCC .no_switch
|
||||
STZ.w SprXSpeed, X : STZ.w SprYSpeed, X
|
||||
LDA.b #$01 : STA.w $0642
|
||||
.no_switch
|
||||
JSL Sprite_Move
|
||||
JSL Sprite_Get_16_bit_Coords
|
||||
JSL Sprite_CheckTileCollision
|
||||
; ----udlr , u = up, d = down, l = left, r = right
|
||||
LDA.w SprCollision, X : AND.b #$0F : BEQ +
|
||||
STZ.w SprMiscA, X
|
||||
+
|
||||
|
||||
JSL Sprite_Move ; Sprite MoveXY
|
||||
JSL Sprite_Get_16_bit_Coords ; Get 16bit coords
|
||||
JSL Sprite_CheckTileCollision ; Check Tile collision
|
||||
; ----udlr , u = up, d = down, l = left, r = right
|
||||
LDA.w SprCollision, X : AND.b #$0F : BEQ +
|
||||
STZ.w SprMiscA, X
|
||||
+
|
||||
; If link is in contact, register a push with the sprite
|
||||
; Run a timer briefly, and confirm the facing direction
|
||||
; matches the push direction (cached) and then initiate
|
||||
; the speed changes if they agree
|
||||
JSL Sprite_CheckDamageToPlayerSameLayer : BCC .NotInContact
|
||||
LDA.w SprMiscA, X : BNE .push_cached
|
||||
LDA.b $26 : STA.w SprMiscA, X
|
||||
JSR Sprite_ApplyPush
|
||||
.push_cached
|
||||
|
||||
; TODO: Update Link push collision reaction
|
||||
; If link is in contact, register a push with the sprite
|
||||
; Run a timer briefly, and confirm the facing direction
|
||||
; matches the push direction (cached) and then initiate
|
||||
; the speed changes if they agree
|
||||
|
||||
JSL Sprite_CheckDamageToPlayerSameLayer : BCC .NotInContact
|
||||
LDA.w SprMiscA, X : BNE .push_cached
|
||||
LDA.b $26 : STA.w SprMiscA, X
|
||||
JSR ApplyPush
|
||||
.push_cached
|
||||
LDA.b #$07 : STA.w SprTimerA, X
|
||||
STZ.b $5E
|
||||
JSL Sprite_RepelDash
|
||||
LDA.w SprTimerB, X : BNE .CancelHookshot
|
||||
LDA.w SprX, X : AND #$F8 : STA.w SprX, X
|
||||
LDA.w SprY, X : AND #$F8 : STA.w SprY, X
|
||||
RTS
|
||||
.CancelHookshot:
|
||||
JSL $0FF540
|
||||
LDA.b #$07 : STA.w SprTimerA, X
|
||||
STZ.b $5E
|
||||
JSL Sprite_RepelDash
|
||||
LDA.w SprTimerB, X : BNE .CancelHookshot
|
||||
LDA.w SprX, X : AND #$F8 : STA.w SprX, X
|
||||
LDA.w SprY, X : AND #$F8 : STA.w SprY, X
|
||||
RTS
|
||||
.NotInContact:
|
||||
LDA.w SprTimerA, X : BNE .delay_timer
|
||||
LDA.b #$0D : STA.w SprTimerB,X
|
||||
.delay_timer
|
||||
.CancelHookshot:
|
||||
JSL Sprite_CancelHookshot
|
||||
RTS
|
||||
}
|
||||
.NotInContact:
|
||||
|
||||
ApplyPush:
|
||||
{
|
||||
; Only apply the push if the facing direction
|
||||
; and pushing direction agree with each other
|
||||
LDA $26 : CMP.b #$01 : BEQ .push_right
|
||||
CMP.b #$02 : BEQ .push_left
|
||||
CMP.b #$04 : BEQ .push_down
|
||||
CMP.b #$08 : BEQ .push_up
|
||||
LDA.w SprTimerA, X : BNE .delay_timer
|
||||
LDA.b #$0D : STA.w SprTimerB, X
|
||||
.delay_timer
|
||||
RTS
|
||||
}
|
||||
|
||||
.push_right
|
||||
LDA #16 : STA.w SprXSpeed, X
|
||||
STZ.w SprYSpeed, X
|
||||
JMP +
|
||||
.push_left
|
||||
LDA #-16 : STA.w SprXSpeed, X
|
||||
STZ.w SprYSpeed, X
|
||||
JMP +
|
||||
.push_down
|
||||
STZ.w SprXSpeed, X
|
||||
LDA #16 : STA.w SprYSpeed, X
|
||||
JMP +
|
||||
.push_up
|
||||
STZ.w SprXSpeed, X
|
||||
LDA #-16 : STA.w SprYSpeed, X
|
||||
+
|
||||
Sprite_ApplyPush:
|
||||
{
|
||||
; Only apply the push if the facing direction
|
||||
; and pushing direction agree with each other
|
||||
LDA.w SprMiscA, X : CMP.b $26 : BEQ .push
|
||||
RTS
|
||||
}
|
||||
.push
|
||||
|
||||
LDA $26 : CMP.b #$01 : BEQ .push_right
|
||||
CMP.b #$02 : BEQ .push_left
|
||||
CMP.b #$04 : BEQ .push_down
|
||||
CMP.b #$08 : BEQ .push_up
|
||||
|
||||
.push_right
|
||||
LDA #16 : STA.w SprXSpeed, X : STZ.w SprYSpeed, X
|
||||
JMP +
|
||||
.push_left
|
||||
LDA #-16 : STA.w SprXSpeed, X : STZ.w SprYSpeed, X
|
||||
JMP +
|
||||
.push_down
|
||||
LDA #16 : STA.w SprYSpeed, X : STZ.w SprXSpeed, X
|
||||
JMP +
|
||||
.push_up
|
||||
LDA #-16 : STA.w SprYSpeed, X : STZ.w SprXSpeed, X
|
||||
+
|
||||
RTS
|
||||
}
|
||||
|
||||
; Check if the tile beneath the sprite is the sliding ice
|
||||
; Currently unused as it doesnt play well with the hitbox choices
|
||||
IceBlock_CheckForGround:
|
||||
{
|
||||
LDA.w SprY,X : CLC : ADC.b #$08 : STA.b $00
|
||||
LDA.w SprYH,X : ADC.b #$00 : STA.b $01
|
||||
LDA.w SprX,X : STA.b $02
|
||||
LDA.w SprXH,X : ADC.b #$00 : STA.b $03
|
||||
LDA.w $0F20,X
|
||||
LDA.w SprY, X : CLC : ADC.b #$08 : STA.b $00
|
||||
LDA.w SprYH, X : ADC.b #$00 : STA.b $01
|
||||
LDA.w SprX, X : STA.b $02
|
||||
LDA.w SprXH, X : ADC.b #$00 : STA.b $03
|
||||
LDA.w SprFloor, X
|
||||
PHY
|
||||
JSL $06E87B ; GetTileType_long
|
||||
JSL Sprite_GetTileAttr
|
||||
PLY
|
||||
|
||||
LDA.w $0FA5
|
||||
CMP.b #$0E : BNE .stop
|
||||
SEC
|
||||
RTS
|
||||
.stop
|
||||
STZ.w SprXSpeed,X
|
||||
STZ.w SprYSpeed,X
|
||||
LDA.w $0FA5 : CMP.b #$0E : BNE .stop
|
||||
SEC
|
||||
RTS
|
||||
.stop
|
||||
STZ.w SprXSpeed, X
|
||||
STZ.w SprYSpeed, X
|
||||
CLC
|
||||
RTS
|
||||
}
|
||||
@@ -185,14 +180,14 @@ Sprite_IceBlock_CheckForSwitch:
|
||||
LDY.b #$03
|
||||
|
||||
.next_tile
|
||||
LDA.w SprY,X : CLC : ADC.w .offset_y,Y : STA.b $00
|
||||
LDA.w SprYH,X : ADC.b #$00 : STA.b $01
|
||||
LDA.w SprX,X : CLC : ADC.w .offset_x,Y : STA.b $02
|
||||
LDA.w SprXH,X : ADC.b #$00 : STA.b $03
|
||||
LDA.w $0F20,X
|
||||
LDA.w SprY, X : CLC : ADC.w .offset_y, Y : STA.b $00
|
||||
LDA.w SprYH, X : ADC.b #$00 : STA.b $01
|
||||
LDA.w SprX, X : CLC : ADC.w .offset_x, Y : STA.b $02
|
||||
LDA.w SprXH, X : ADC.b #$00 : STA.b $03
|
||||
LDA.w SprFloor, X
|
||||
|
||||
PHY
|
||||
JSL $06E87B ; GetTileType_long
|
||||
JSL Sprite_GetTileAttr
|
||||
PLY
|
||||
|
||||
LDA.w $0FA5
|
||||
@@ -227,71 +222,38 @@ Statue_BlockSprites:
|
||||
LDY.b #$0F
|
||||
|
||||
.next
|
||||
LDA.w $0E20,Y
|
||||
CMP.b #$1C ; SPRITE 1C
|
||||
BEQ .skip
|
||||
; SPRITE 1C
|
||||
LDA.w SprType, Y : CMP.b #$1C : BEQ .skip
|
||||
CPY.w SprSlot : BEQ .skip
|
||||
TYA : EOR.b $1A : AND.b #$01 : BNE .skip
|
||||
LDA.w SprState, Y : CMP.b #$09 : BCC .skip
|
||||
|
||||
CPY.w $0FA0
|
||||
BEQ .skip
|
||||
|
||||
TYA
|
||||
EOR.b $1A
|
||||
AND.b #$01
|
||||
BNE .skip
|
||||
|
||||
LDA.w SprState,Y
|
||||
CMP.b #$09
|
||||
BCC .skip
|
||||
|
||||
LDA.w SprX,Y
|
||||
STA.b $04
|
||||
|
||||
LDA.w SprXH,Y
|
||||
STA.b $05
|
||||
|
||||
LDA.w SprY,Y
|
||||
STA.b $06
|
||||
|
||||
LDA.w SprYH,Y
|
||||
STA.b $07
|
||||
LDA.w SprX, Y : STA.b $04
|
||||
LDA.w SprXH, Y : STA.b $05
|
||||
LDA.w SprY, Y : STA.b $06
|
||||
LDA.w SprYH, Y : STA.b $07
|
||||
|
||||
REP #$20
|
||||
|
||||
LDA.w SprCachedX
|
||||
SEC
|
||||
SBC.b $04
|
||||
CLC
|
||||
ADC.w #$000C
|
||||
LDA.w SprCachedX
|
||||
SEC : SBC.b $04
|
||||
CLC : ADC.w #$000C : CMP.w #$0018 : BCS .skip
|
||||
|
||||
CMP.w #$0018
|
||||
BCS .skip
|
||||
|
||||
LDA.w SprCachedY
|
||||
SEC
|
||||
SBC.b $06
|
||||
CLC
|
||||
ADC.w #$000C
|
||||
|
||||
CMP.w #$0024
|
||||
BCS .skip
|
||||
LDA.w SprCachedY
|
||||
SEC : SBC.b $06
|
||||
CLC : ADC.w #$000C : CMP.w #$0024 : BCS .skip
|
||||
|
||||
SEP #$20
|
||||
|
||||
LDA.b #$04
|
||||
STA.w $0EA0,Y
|
||||
LDA.b #$04 : STA.w $0EA0, Y
|
||||
|
||||
PHY
|
||||
|
||||
LDA.b #$20
|
||||
JSL Sprite_CheckSlopedTileCollision ; JSR Sprite_ProjectSpeedTowardsLocation
|
||||
|
||||
PLY
|
||||
|
||||
LDA.b $00
|
||||
STA.w SprYRecoil,Y
|
||||
|
||||
LDA.b $01
|
||||
STA.w SprXRecoil,Y
|
||||
LDA.b $00 : STA.w SprYRecoil, Y
|
||||
LDA.b $01 : STA.w SprXRecoil, Y
|
||||
|
||||
.skip
|
||||
SEP #$20
|
||||
|
||||
53
Sprites/Objects/pedestal.asm
Normal file
53
Sprites/Objects/pedestal.asm
Normal file
@@ -0,0 +1,53 @@
|
||||
; Magic Pedestal Sprite
|
||||
;
|
||||
; Zora Temple (Map 1E)
|
||||
; Goron Desert (Map 36)
|
||||
; Fortress Secrets (Map 5E)
|
||||
|
||||
pushpc
|
||||
org $1EE05F
|
||||
JSL CheckForBook
|
||||
pullpc
|
||||
|
||||
CheckForBook:
|
||||
{
|
||||
LDA.b $2F : BNE .exit
|
||||
JSL Sprite_CheckDamageToPlayer : BCC .exit
|
||||
LDA.w $0202 : CMP.b #$0F : BNE .not_holding_book
|
||||
LDY.b #$01 : BIT.b $F4 : BVS .not_pressing_y
|
||||
.not_holding_book
|
||||
LDY.b #$00
|
||||
.not_pressing_y
|
||||
CPY.b #$01 : BNE .no_book_pose
|
||||
STZ.w $0300
|
||||
LDA.b #$20
|
||||
STA.w $037A
|
||||
STZ.w $012E
|
||||
.no_book_pose
|
||||
JSR PedestalPlaque
|
||||
.exit
|
||||
LDA.b AreaIndex : CMP.b #$30
|
||||
RTL
|
||||
}
|
||||
|
||||
PedestalPlaque:
|
||||
{
|
||||
LDA.b AreaIndex : CMP.b #$1E : BEQ .zora_temple
|
||||
CMP.b #$36 : BEQ .goron_desert
|
||||
CMP.b #$5E : BEQ .fortress_secrets
|
||||
JMP .return
|
||||
.zora_temple
|
||||
|
||||
LDA.l $7EF29E : AND.b #$20 : BNE .return
|
||||
LDA.b SongFlag : CMP.b #$03 : BNE .return
|
||||
LDA.b #$01 : STA $04C6
|
||||
STZ.b SongFlag
|
||||
JMP .return
|
||||
.goron_desert
|
||||
|
||||
.fortress_secrets
|
||||
|
||||
.return
|
||||
RTS
|
||||
}
|
||||
|
||||
@@ -73,7 +73,7 @@ BlueSpriteIndex = $7E0632
|
||||
Sprite_Portal_Main:
|
||||
{
|
||||
LDA.w SprAction, X
|
||||
JSL UseImplicitRegIndexedLocalJumpTable
|
||||
JSL JumpTableLocal
|
||||
|
||||
dw StateHandler
|
||||
dw BluePortal
|
||||
@@ -104,7 +104,6 @@ Sprite_Portal_Main:
|
||||
LDA.w SprY, X : STA.w BluePortal_X
|
||||
LDA.w SprX, X : STA.w BluePortal_Y
|
||||
LDA.b #$02 : STA.w SprSubtype, X
|
||||
|
||||
%GotoAction(1)
|
||||
RTS
|
||||
}
|
||||
@@ -124,9 +123,7 @@ Sprite_Portal_Main:
|
||||
JSL $0683EA ; Sprite_SetupHitbox_long
|
||||
JSL CheckIfHitBoxesOverlap : BCC .NoOverlap
|
||||
CLC
|
||||
|
||||
LDA $1B : BEQ .outdoors
|
||||
|
||||
%GotoAction(3) ; BluePortal_WarpDungeon
|
||||
.NoOverlap
|
||||
RTS
|
||||
@@ -171,10 +168,6 @@ Sprite_Portal_Main:
|
||||
LDA $7EC18A : STA $0604
|
||||
LDA $7EC18C : STA $0608
|
||||
LDA $7EC18E : STA $060C
|
||||
; LDA $7EC190 : STA $0610
|
||||
; LDA $7EC192 : STA $0612
|
||||
; LDA $7EC194 : STA $0614
|
||||
; LDA $7EC196 : STA $0616
|
||||
|
||||
PHX
|
||||
LDA.w OrangeSpriteIndex : TAX
|
||||
@@ -200,10 +193,6 @@ Sprite_Portal_Main:
|
||||
LDA $7EC18A : STA $0604 ; Small Room South
|
||||
LDA $7EC18C : STA $0608 ; Small Room West
|
||||
LDA $7EC18E : STA $060C ; Small Room South
|
||||
; LDA $7EC190 : STA $0610
|
||||
; LDA $7EC192 : STA $0612
|
||||
; LDA $7EC194 : STA $0614
|
||||
; LDA $7EC196 : STA $0616
|
||||
|
||||
PHX
|
||||
LDA.w BlueSpriteIndex : TAX
|
||||
|
||||
Reference in New Issue
Block a user