Files
alttpr-baserom/darkworldspawn.asm
2017-05-17 13:00:32 -04:00

63 lines
2.4 KiB
NASM

;================================================================================
; Dark World Spawn Location Fix & Master Sword Grove Fix
;--------------------------------------------------------------------------------
DarkWorldSaveFix:
LDA.b #$70 : PHA : PLB ; thing we wrote over - data bank change
JSL.l DarkWorldFlagSet
JSL.l MasterSwordFollowerClear
JSL.l StatSaveCounter
RTL
;--------------------------------------------------------------------------------
DarkWorldLoadFix:
SEP #$20 ; set 8 bit accumulator
JSL.l OnFileLoad
REP #$20 ; restore 16 bit accumulator
LDA.w #$0007 : STA $7EC00D : STA $7EC013 ; thing we wrote over - sets up some graphics timers
RTL
;--------------------------------------------------------------------------------
DarkWorldFlagSet:
PHA
LDA Bugfix_PreAgaDWDungeonDeathToFakeDW : BEQ +
LDA $10 : CMP #$12 : BEQ .done ; don't do anything in death mode
+
LDA.l Bugfix_MirrorlessSQToLW : BEQ +
LDA $7EF353 : BEQ .noMirror ; check if we have the mirror
+
LDA $7EF3C5 : CMP.b #$03 : !BLT .aga1Alive ; check if agahnim 1 is alive
BRA .done
.noMirror
.aga1Alive
LDA #$00 : STA $7EF3CA ; set flag to light world
;LDA $7EF3CC : CMP #$07 : BNE + : LDA.b #$00 : STA $7EF3CC : + ; clear frog
.done
PLA
RTL
;--------------------------------------------------------------------------------
SetDeathWorldChecked:
PHA
LDA $1B : BEQ + ; skip this for indoors
LDA $040C : CMP #$FF : BNE .done ; unless it's a cave
+
LDA $7EF3C5 : CMP.b #$03 : !BGE .done; thing we originally did - skip if agahnim 1 is dead
LDA $A0 : CMP.b #$00 : BEQ .done ; skip if we died in ganon's room
LDA.b #$00 : STA $7EF3CA : STA $7E0FFF ; set the world to the light world if he's still alive
;LDA $7EF3CC : CMP #$07 : BNE .done : LDA.b #$00 : STA $7EF3CC ; clear dwarf tagalong
.done
PLA
RTL
;--------------------------------------------------------------------------------
MasterSwordFollowerClear:
LDA $7EF3CC
CMP #$0E : BEQ .clear ; clear master sword follower
CMP #$07 : BEQ .clear ; clear frog
;CMP #$08 : BEQ .clear ; clear dwarf - consider flute implications
RTL
.clear
LDA.b #$00 : STA $7EF3CC ; clear follower
RTL
;--------------------------------------------------------------------------------
FixAgahnimFollowers:
LDA.b #$00 : STA $7EF3CC ; clear follower
JSL PrepDungeonExit ; thing we wrote over
RTL
;================================================================================