Zora Link dive vertical stairs and nonzero tiles
This commit is contained in:
@@ -89,9 +89,49 @@ LinkState_UsingZoraMask:
|
|||||||
|
|
||||||
.swimming
|
.swimming
|
||||||
; Check if we are indoors or outdoors
|
; Check if we are indoors or outdoors
|
||||||
LDA $1B : BEQ .overworld ; z flag is 1
|
LDA $1B : BNE .dungeon ; z flag is 1
|
||||||
|
|
||||||
; DUNGEON -------------------------------------------------------------------
|
; OVERWORLD -----------------------------------------------------------------
|
||||||
|
.overworld
|
||||||
|
{
|
||||||
|
; Check the Y button and clear state if activated
|
||||||
|
JSR Link_CheckNewY_ButtonPress : BCC .return
|
||||||
|
LDA $3A : AND.b #$BF : STA $3A
|
||||||
|
|
||||||
|
; Check if already underwater
|
||||||
|
LDA $0AAB : BEQ .dive
|
||||||
|
|
||||||
|
STZ $55 ; Reset cape flag
|
||||||
|
STZ $0AAB ; Reset underwater flag
|
||||||
|
STZ $0351 ; Reset ripple flag
|
||||||
|
STZ $037B ; Reset invincibility flag
|
||||||
|
LDA #$04 : STA $5D ; Put Link in Swimming State
|
||||||
|
|
||||||
|
JMP .return
|
||||||
|
|
||||||
|
.dive
|
||||||
|
; Handle overworld underwater swimming
|
||||||
|
LDA #$01 : STA $55 ; Set cape flag
|
||||||
|
STA $037B ; Set invincible flag
|
||||||
|
LDA #$08 : STA $5E ; Set underwater speed
|
||||||
|
LDA #$01 : STA $0AAB ; Set underwater flag
|
||||||
|
STA $0351 ; Set ripple flag
|
||||||
|
|
||||||
|
; Splash visual effect
|
||||||
|
LDA.b #$15 : LDY.b #$00
|
||||||
|
JSL AddTransitionSplash
|
||||||
|
|
||||||
|
; Stay in swimming mode
|
||||||
|
LDA #$04 : STA $5D
|
||||||
|
; Splash sound effect
|
||||||
|
; LDA #$24 : STA $012E
|
||||||
|
|
||||||
|
.return
|
||||||
|
JSR $E8F0 ; HandleIndoorCameraAndDoors
|
||||||
|
RTS
|
||||||
|
}
|
||||||
|
|
||||||
|
; DUNGEON DIVE --------------------------------------------------------------
|
||||||
.dungeon
|
.dungeon
|
||||||
{
|
{
|
||||||
; Check if we are in water or not
|
; Check if we are in water or not
|
||||||
@@ -100,6 +140,9 @@ LinkState_UsingZoraMask:
|
|||||||
; Check if already underwater
|
; Check if already underwater
|
||||||
LDA $0AAB : BNE .return_dungeon : CLC
|
LDA $0AAB : BNE .return_dungeon : CLC
|
||||||
|
|
||||||
|
; Check if we are on a proper tile or not
|
||||||
|
;
|
||||||
|
|
||||||
; Check the Y button and clear state if activated
|
; Check the Y button and clear state if activated
|
||||||
JSR Link_CheckNewY_ButtonPress : BCC .return_dungeon
|
JSR Link_CheckNewY_ButtonPress : BCC .return_dungeon
|
||||||
LDA $3A : AND.b #$BF : STA $3A
|
LDA $3A : AND.b #$BF : STA $3A
|
||||||
@@ -127,75 +170,38 @@ LinkState_UsingZoraMask:
|
|||||||
JSR $E8F0 ; HandleIndoorCameraAndDoors
|
JSR $E8F0 ; HandleIndoorCameraAndDoors
|
||||||
RTS
|
RTS
|
||||||
}
|
}
|
||||||
|
|
||||||
; OVERWORLD -----------------------------------------------------------------
|
|
||||||
|
|
||||||
.overworld
|
|
||||||
; Check the Y button and clear state if activated
|
|
||||||
JSR Link_CheckNewY_ButtonPress : BCC .return
|
|
||||||
LDA $3A : AND.b #$BF : STA $3A
|
|
||||||
|
|
||||||
; Check if already underwater
|
|
||||||
LDA $0AAB : BEQ .dive
|
|
||||||
|
|
||||||
STZ $55 ; Reset cape flag
|
|
||||||
STZ $0AAB ; Reset underwater flag
|
|
||||||
STZ $0351 ; Reset ripple flag
|
|
||||||
LDA #$00 : STA $037B ; Reset invincibility flag
|
|
||||||
LDA #$04 : STA $5D
|
|
||||||
|
|
||||||
JMP .return
|
|
||||||
|
|
||||||
.dive
|
|
||||||
; Handle overworld underwater swimming
|
|
||||||
LDA #$01 : STA $55 ; Set cape flag
|
|
||||||
STA $037B ; Set invincible flag
|
|
||||||
LDA #$08 : STA $5E ; Set underwater speed
|
|
||||||
LDA #$01 : STA $0AAB ; Set underwater flag
|
|
||||||
STA $0351 ; Water ripples around sprite
|
|
||||||
|
|
||||||
; Splash visual effect
|
|
||||||
LDA.b #$15 : LDY.b #$00
|
|
||||||
JSL AddTransitionSplash
|
|
||||||
|
|
||||||
; Stay in swimming mode
|
|
||||||
LDA #$04 : STA $5D
|
|
||||||
; Splash sound effect
|
|
||||||
; LDA #$24 : STA $012E
|
|
||||||
|
|
||||||
.return
|
|
||||||
JSR $E8F0 ; HandleIndoorCameraAndDoors
|
|
||||||
RTS
|
|
||||||
}
|
}
|
||||||
|
|
||||||
print "Next address for jump in bank07: ", pc
|
|
||||||
|
|
||||||
; =============================================================================
|
|
||||||
|
|
||||||
.dungeon_resurface
|
.dungeon_resurface
|
||||||
{
|
{
|
||||||
|
LDA $1B : BEQ .return_default ; We are in overworld actually
|
||||||
|
|
||||||
; Check if the player is actually diving
|
; Check if the player is actually diving
|
||||||
LDA $0AAB : BEQ .return_default
|
LDA $0AAB : BEQ .return_default
|
||||||
|
|
||||||
|
; Check if the ground level is safe
|
||||||
|
; Otherwise, eject the player back to the surface
|
||||||
|
LDA $0114 : BNE .remove_dive : CLC
|
||||||
|
|
||||||
; Check the Y button and clear state if activated
|
; Check the Y button and clear state if activated
|
||||||
JSR Link_CheckNewY_ButtonPress : BCC .return_default
|
JSR Link_CheckNewY_ButtonPress : BCC .return_default
|
||||||
LDA $3A : AND.b #$BF : STA $3A
|
LDA $3A : AND.b #$BF : STA $3A
|
||||||
{
|
{
|
||||||
; Restore Swimming state
|
; Restore Swimming Effects
|
||||||
LDA.b #$15 : LDY.b #$00
|
LDA.b #$15 : LDY.b #$00 : JSL AddTransitionSplash
|
||||||
JSL AddTransitionSplash
|
.remove_dive
|
||||||
|
|
||||||
LDA #$04 : STA $5D ; Set Link to Swimming State
|
LDA #$04 : STA $5D ; Set Link to Swimming State
|
||||||
LDA #$01 : STA $EE ; Set Link to upper level
|
LDA #$01 : STA $EE ; Set Link to upper level
|
||||||
STA $0345
|
STA $0345 ; Set deep water flag
|
||||||
|
|
||||||
|
; Remove Diving Effects
|
||||||
|
LDA $67 : AND #$01 : STA $2F
|
||||||
STZ $5E ; Reset speed to normal
|
STZ $5E ; Reset speed to normal
|
||||||
STZ $0AAB ; Reset underwater flag
|
STZ $0AAB ; Reset underwater flag
|
||||||
STZ $0351 ; Reset ripple flag
|
STZ $0351 ; Reset ripple flag
|
||||||
STZ $24 ; Reset z coordinate for link
|
STZ $24 ; Reset z coordinate for link
|
||||||
STZ $0372 ; Reset link bounce flag
|
STZ $0372 ; Reset link bounce flag
|
||||||
LDA #$62
|
LDA #$62 : STA $9A ; Reset dungeon layer
|
||||||
STA $9A
|
|
||||||
JMP .return_default
|
JMP .return_default
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -205,6 +211,23 @@ print "Next address for jump in bank07: ", pc
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.dungeon_stairs
|
||||||
|
{
|
||||||
|
LDA $02B2 : CMP #$02 : BNE .return_hop
|
||||||
|
STZ $5E ; Reset speed to normal
|
||||||
|
STZ $0AAB ; Reset underwater flag
|
||||||
|
LDA #$62 : STA $9A ; Reset dungeon layer
|
||||||
|
.return_hop
|
||||||
|
LDA #$06 : STA $5D ; Set Link to Recoil State
|
||||||
|
RTS
|
||||||
|
}
|
||||||
|
|
||||||
|
; =============================================================================
|
||||||
|
|
||||||
|
|
||||||
|
print "Next address for jump in bank07: ", pc
|
||||||
|
|
||||||
|
|
||||||
; End of LinkState_Swimming
|
; End of LinkState_Swimming
|
||||||
org $079781
|
org $079781
|
||||||
JSR LinkState_UsingZoraMask
|
JSR LinkState_UsingZoraMask
|
||||||
@@ -217,6 +240,12 @@ org $0782D2
|
|||||||
CLC
|
CLC
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
|
; C2C3
|
||||||
|
org $07C307
|
||||||
|
JSR LinkState_UsingZoraMask_dungeon_stairs
|
||||||
|
RTS
|
||||||
|
|
||||||
|
|
||||||
; =============================================================================
|
; =============================================================================
|
||||||
; Disassembled/Debugged Code of Conn's Zora Flippers
|
; Disassembled/Debugged Code of Conn's Zora Flippers
|
||||||
; May God Give Me Strength
|
; May God Give Me Strength
|
||||||
|
|||||||
Reference in New Issue
Block a user