96 lines
3.6 KiB
NASM
96 lines
3.6 KiB
NASM
;================================================================================
|
|
; Boots State Modifier
|
|
;--------------------------------------------------------------------------------
|
|
ModifyBoots:
|
|
PHA
|
|
LDA.l BootsModifier : CMP.b #$01 : BNE +
|
|
PLA : AND.l AbilityFlags : ORA.b #$04 : RTL ; yes boots
|
|
+ : CMP.b #$02 : BNE +
|
|
PLA : AND.l AbilityFlags : AND.b #$FB : RTL ; no boots
|
|
+ : LDA.l FakeBoots : CMP.b #$01 : BNE +
|
|
LDA.b LinkSlipping : BEQ ++ : LDA.b PitTileActField : BNE + ; hover check
|
|
++ : PLA : AND.l AbilityFlags : ORA.b #$04 : RTL ; yes boots, not hovering
|
|
+
|
|
PLA
|
|
AND.l AbilityFlags ; regular boots
|
|
RTL
|
|
;--------------------------------------------------------------------------------
|
|
AddBonkTremors:
|
|
PHA
|
|
LDA.b LinkIncapacitatedTimer : BNE + ; Check for incapacitated Link
|
|
JSL IncrementBonkCounter
|
|
+
|
|
LDA.l BootsModifier : CMP.b #$01 : BEQ +
|
|
LDA.l BootsEquipment : BNE + ; Check for Boots
|
|
PLA : RTL
|
|
+
|
|
PLA
|
|
JSL AddDashTremor : JSL Player_ApplyRumbleToSprites ; things we wrote over
|
|
RTL
|
|
;--------------------------------------------------------------------------------
|
|
BonkBreakableWall:
|
|
PHX : PHP
|
|
SEP #$30 ; set 8-bit accumulator and index registers
|
|
LDA.l BootsModifier : CMP.b #$01 : BEQ +
|
|
LDA.l BootsEquipment : BNE + ; Check for Boots
|
|
PLP : PLX : LDA.w #$0000 : RTL
|
|
+
|
|
PLP : PLX
|
|
LDA.w LinkDashing : AND.w #$00FF ; things we wrote over
|
|
RTL
|
|
;--------------------------------------------------------------------------------
|
|
BonkRockPile:
|
|
LDA.l BootsModifier : CMP.b #$01 : BEQ +
|
|
LDA.l BootsEquipment : BNE + ; Check for Boots
|
|
LDA.b #$00 : RTL
|
|
+
|
|
LDA.w TileActBE : AND.b #$70 ; things we wrote over
|
|
RTL
|
|
;--------------------------------------------------------------------------------
|
|
GravestoneHook:
|
|
LDA.l BootsModifier : CMP.b #$01 : BEQ +
|
|
LDA.l BootsEquipment : BEQ .done ; Check for Boots
|
|
+
|
|
LDA.w LinkDashing : BEQ .done ; things we wrote over
|
|
JML moveGravestone
|
|
.done
|
|
JML GravestoneHook_continue
|
|
;--------------------------------------------------------------------------------
|
|
JumpDownLedge:
|
|
LDA.l BootsModifier : CMP.b #$01 : BEQ +
|
|
LDA.l BootsEquipment : BNE + ; Check for Boots
|
|
; Disarm Waterwalk
|
|
LDA.b LinkSlipping : CMP.b #$01 : BNE +
|
|
STZ.b LinkSlipping
|
|
+
|
|
LDA.b IndoorsFlag : BNE .done : LDA.b #$02 : STA.b LinkLayer ; things we wrote over
|
|
.done
|
|
RTL
|
|
;--------------------------------------------------------------------------------
|
|
BonkRecoil:
|
|
LDA.l BootsModifier : CMP.b #$01 : BEQ +
|
|
LDA.l BootsEquipment : BNE + ; Check for Boots
|
|
LDA.b #$16 : STA.b LinkRecoilZ : RTL
|
|
+
|
|
LDA.b #$24 : STA.b LinkRecoilZ ; things we wrote over
|
|
RTL
|
|
;--------------------------------------------------------------------------------
|
|
BonkRecoilStop:
|
|
LDA.l BootsModifier : CMP.b #$01 : BEQ .return
|
|
LDA.l BootsEquipment : BNE .return
|
|
LDA.b LinkState : CMP.b #$02 : BNE .return
|
|
LDA.b LinkPosZ : BMI .return : CMP.b #$09 : BCC .return
|
|
LDA.b FrameCounter : AND.b #$01 : BNE .return
|
|
REP #$20
|
|
LDA.w $0114 : CMP.w #$0020 : SEP #$20 : BNE .return
|
|
LDA.b LinkRecoilY : BEQ ++ : BMI +
|
|
DEC : BRA ++
|
|
+ INC
|
|
++ STA.b LinkRecoilY
|
|
LDA.b LinkRecoilX : BEQ ++ : BMI +
|
|
DEC : BRA ++
|
|
+ INC
|
|
++ STA.b LinkRecoilX
|
|
.return
|
|
JML LinkHop_FindArbitraryLandingSpot
|