;================================================================================ ; Glitched Mode Fixes ;================================================================================ GetAgahnimPalette: LDA.b RoomIndex ; get room id CMP.b #13 : BNE + ; Agahnim 2 room LDA.b #$07 ; Use Agahnim 2 RTL + ; Elsewhere LDA.b #$0b ; Use Agahnim 1 RTL ;-------------------------------------------------------------------------------- GetAgahnimDeath: STA.w SpriteAncillaInteract, X ; thing we wrote over LDA.b RoomIndex ; get room id CMP.b #13 : BNE + ; Agahnim 2 room LDA.l Bugfix_SetWorldOnAgahnimDeath : BEQ ++ LDA.l InvertedMode : BEQ +++ LDA.b #$00 : STA.l CurrentWorld ; Switch to light world BRA ++ +++ LDA.b #$40 : STA.l CurrentWorld ; Switch to dark world ++ LDA.b #$01 ; Use Agahnim 2 RTL + ; Elsewhere LDA.l Bugfix_SetWorldOnAgahnimDeath : BEQ ++ LDA.l InvertedMode : BEQ +++ LDA.b #$40 : STA.l CurrentWorld ; Switch to dark world BRA ++ +++ LDA.b #$00 : STA.l CurrentWorld ; Switch to light world ; (This will later get flipped to DW when Agahnim 1 ; warps us to the pyramid) ++ LDA.b #$00 ; Use Agahnim 1 RTL ;-------------------------------------------------------------------------------- GetAgahnimType: LDA.b RoomIndex ; get room id CMP.b #13 : BNE + ; Agahnim 2 room LDA.b #$0006 ; Use Agahnim 2 BRA .done + ; Elsewhere LDA.b #$0001 ; Use Agahnim 1 .done RTL ;-------------------------------------------------------------------------------- GetAgahnimSlot: PHX ; thing we wrote over LDA.b RoomIndex ; get room id CMP.b #13 : BNE + ; Agahnim 2 room LDA.b #$01 ; Use Agahnim 2 JML GetAgahnimSlotReturn + ; Elsewhere LDA.b #$00 ; Use Agahnim 1 JML GetAgahnimSlotReturn ;-------------------------------------------------------------------------------- GetAgahnimLightning: INC.w SpriteAux, X ; thing we wrote over LDA.b RoomIndex ; get room id CMP.b #13 : BNE + ; Agahnim 2 room LDA.b #$01 ; Use Agahnim 2 RTL + ; Elsewhere LDA.b #$00 ; Use Agahnim 1 RTL ;-------------------------------------------------------------------------------- ;0 = Allow ;1 = Forbid AllowJoypadInput: LDA.l PermitSQFromBosses : BEQ .fullCheck LDA.w RoomItemsTaken : AND.b #$80 : BEQ .fullCheck LDA.w MedallionFlag : ORA.w CutsceneFlag ; we have heart container, do short check RTL .fullCheck LDA.w MedallionFlag : ORA.w CutsceneFlag : ORA.w NoMenu RTL ;--------------------------------------------------------------------------------