# Conflicts: # LTTP_RND_GeneralBugfixes.asm # bookofmudora.asm # build.bat # catfish.asm # compasses.asm # contrib.asm # darkworldspawn.asm # entrances.asm # events.asm # floodgatesoftlock.asm # flute.asm # framehook.asm # goalitem.asm # halfmagicbat.asm # heartpieces.asm # hooks.asm # inventory.asm # invertedmaps.asm # itemtext_lower.asm # lampmantlecone.asm # mantle.asm # msu.asm # music.asm # newhud.asm # newitems.asm # pendantcrystalhud.asm # ram.asm # rngfixes.asm # roomloading.asm # shopkeeper.asm # stats.asm # stats/credits.asm # stats/creditsnew.asm # stats/statConfig.asm # tables.asm # tablets.asm # utilities.asm # zoraking.asm
80 lines
2.5 KiB
NASM
80 lines
2.5 KiB
NASM
;================================================================================
|
|
; Frame Hook
|
|
;--------------------------------------------------------------------------------
|
|
FrameHookAction:
|
|
JSL $8080B5 ; Module_MainRouting
|
|
JSL CheckMusicLoadRequest
|
|
PHP : REP #$30 : PHA
|
|
SEP #$20
|
|
LDA.l StatsLocked : BNE ++
|
|
REP #$20 ; set 16-bit accumulator
|
|
LDA.l LoopFrames : INC : STA.l LoopFrames : BNE +
|
|
LDA.l LoopFrames+2 : INC : STA.l LoopFrames+2
|
|
+
|
|
LDA.l GameMode : CMP.w #$010E : BNE ++ ; move this to nmi hook?
|
|
LDA.l MenuFrames : INC : STA.l MenuFrames : BNE ++
|
|
LDA.l MenuFrames+2 : INC : STA.l MenuFrames+2
|
|
++
|
|
REP #$30 : PLA : PLP
|
|
|
|
RTL
|
|
|
|
!NMI_MW = "$7F5047"
|
|
;--------------------------------------------------------------------------------
|
|
NMIHookAction:
|
|
PHA : PHX : PHY : PHD ; thing we wrote over, push stuff
|
|
|
|
LDA !NMI_MW : BEQ ++
|
|
PHP
|
|
SEP #$30
|
|
|
|
LDA #$00 : STA !NMI_MW
|
|
|
|
; Multiworld text
|
|
LDA !NMI_MW+1 : BEQ +
|
|
LDA #$00 : STA !NMI_MW+1
|
|
JSL.l WriteText
|
|
+
|
|
PLP
|
|
++
|
|
|
|
LDA.l StatsLocked : AND.w #$00FF : BNE +
|
|
LDA.l NMIFrames : INC : STA.l NMIFrames : BNE +
|
|
LDA.l NMIFrames+2 : INC : STA.l NMIFrames+2
|
|
+
|
|
|
|
JML.l NMIHookReturn
|
|
|
|
;--------------------------------------------------------------------------------
|
|
PostNMIHookAction:
|
|
LDA.w NMIAux : BEQ +
|
|
PHK : PEA .return-1 ; push stack for RTL return
|
|
JMP.w [NMIAux]
|
|
.return
|
|
STZ.w NMIAux ; zero bank byte of NMI hook pointer
|
|
+
|
|
JSR.w TransferItemGFX
|
|
LDA.b INIDISPQ : STA.w INIDISP ; thing we wrote over, turn screen back on
|
|
|
|
JML.l PostNMIHookReturn
|
|
;--------------------------------------------------------------------------------
|
|
TransferItemGFX:
|
|
; Only used for shops now but could be used for anything. We should look at how door rando does this
|
|
; and try to unify one approach.
|
|
REP #$30
|
|
LDX.w ItemQueuePtr : BEQ .done
|
|
-
|
|
LDA.w ItemGFXQueue,X : STA.w ItemGFXPtr
|
|
LDA.w ItemTargetQueue,X : STA.w ItemGFXTarget
|
|
PHX
|
|
JSL.l TransferItemToVRAM
|
|
REP #$10
|
|
PLX
|
|
DEX #2
|
|
BPL -
|
|
|
|
STZ.w ItemQueuePtr
|
|
.done
|
|
SEP #$30
|
|
RTS
|