;================================================================================ ; Hard & Masochist Mode ;================================================================================ CalculateSpikeFloorDamage: REP #$20 ; set 16-bit accumulator LDA.b RoomIndex ; these are all decimal because i got them that way CMP.w #279 SEP #$20 ; set 8-bit accumulator BNE + LDA.l ByrnaCaveSpikeDamage STA.w DamageReceived RTL + LDA.w $D055, Y STA.w DamageReceived RTL ;-------------------------------------------------------------------------------- CalculateByrnaUsage: LDA.b IndoorsFlag : BEQ ++ REP #$20 ; set 16-bit accumulator LDA.b RoomIndex ; these are all decimal because i got them that way CMP.w #95 : BEQ + ; Ice Palace Spike Room CMP.w #172 : BEQ + ; Blind Boss Room CMP.w #179 : BEQ + ; Room in Misery Mire CMP.w #213 : BEQ + ; Laser Bridge CMP.w #279 : BEQ + ; Spike Cave SEP #$20 ; set 8-bit accumulator BRA ++ + SEP #$20 ; set 8-bit accumulator PHX : TYX LDA.l HardModeExclusionCaneOfByrnaUsage, X : STA.b Scrap00 PLX ++ LDA.l CurrentMagic ; thing we wrote over JML IncrementMagicUseCounterByrna ;-------------------------------------------------------------------------------- CalculateCapeUsage: LDA.b IndoorsFlag : BEQ ++ REP #$20 ; set 16-bit accumulator LDA.b RoomIndex ; these are all decimal because i got them that way CMP.w #95 : BEQ + ; Ice Palace Spike Room CMP.w #179 : BEQ + ; Room in Misery Mire CMP.w #213 : BEQ + ; Laser Bridge CMP.w #279 : BEQ + ; Spike Cave SEP #$20 ; set 8-bit accumulator BRA ++ + SEP #$20 ; set 8-bit accumulator PHX : TYX LDA.l HardModeExclusionCapeUsage, X : STA.b CapeTimer ; set cape decrement timer PLX ++ JML IncrementMagicUseCounterOne ;-------------------------------------------------------------------------------- ActivateInvulnerabilityOrDont: LDA.b IndoorsFlag : BEQ .nowhere_special REP #$20 ; set 16-bit accumulator LDA.b RoomIndex ; these are all decimal because i got them that way CMP.w #95 : BEQ .somewhere_cool ; Ice Palace Spike Room CMP.w #179 : BEQ .somewhere_cool ; Room in Misery Mire CMP.w #213 : BEQ .somewhere_cool ; Laser Bridge CMP.w #279 : BEQ .somewhere_cool ; Spike Cave SEP #$20 ; set 8-bit accumulator BRA .nowhere_special .somewhere_cool SEP #$20 ; set 8-bit accumulator LDA.b #$01 : STA.w NoDamage : RTL .nowhere_special LDA.l ByrnaInvulnerability : STA.w NoDamage RTL ;-------------------------------------------------------------------------------- GetItemDamageValue: CPX.b #$03 : BEQ .boomerang CPX.b #$04 : BEQ .boomerang CPX.b #$05 : BEQ .boomerang CPX.b #$39 : BEQ .hookshot CPX.b #$3b : BEQ .hookshot CPX.b #$3c : BEQ .hookshot CPX.b #$3d : BEQ .hookshot .normal LDA.l DamageSubclassValue,x ;what we wrote over RTL .boomerang LDA.l StunItemAction : AND.b #$01 : BNE .normal BRA .noDamage .hookshot LDA.l StunItemAction : AND.b #$02 : BNE .normal .noDamage LDA.b #$00 RTL ;-------------------------------------------------------------------------------- ;Argument : A = id we want to find return 00 if none found, 01 if found SearchAncilla: { STA.b Scrap05 PHX LDX.b #$00 .loop LDA.w AncillaID, X INX : CPX.b #$0A : BEQ .notFound CMP.b Scrap05 : BNE .loop LDA.b #$01 BRA .return .notFound LDA.b #$00 .return PLX RTS }