80 lines
2.5 KiB
NASM
80 lines
2.5 KiB
NASM
;================================================================================
|
|
; 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
|
|
;--------------------------------------------------------------------------------
|