refactor darkworldspawn

reversed some labels
moved nomirror because 0 is already loaded
INC from 7 to 8
ORA instead of multiple branchings
SBC without SEC when carry is guaranteed
This commit is contained in:
spannerisms
2021-03-24 07:55:51 -04:00
parent a28726d20e
commit 8b9ea182d8

View File

@@ -4,8 +4,7 @@
DarkWorldSaveFix: DarkWorldSaveFix:
LDA.b #$70 : PHA : PLB ; thing we wrote over - data bank change LDA.b #$70 : PHA : PLB ; thing we wrote over - data bank change
JSL.l MasterSwordFollowerClear JSL.l MasterSwordFollowerClear
JSL.l StatSaveCounter JML.l StatSaveCounter
RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
DoWorldFix: DoWorldFix:
LDA InvertedMode : BEQ + LDA InvertedMode : BEQ +
@@ -14,12 +13,12 @@ DoWorldFix:
LDA.l Bugfix_MirrorlessSQToLW : BEQ .skip_mirror_check LDA.l Bugfix_MirrorlessSQToLW : BEQ .skip_mirror_check
LDA $7EF353 : BEQ .noMirror ; check if we have the mirror LDA $7EF353 : BEQ .noMirror ; check if we have the mirror
.skip_mirror_check ; alt entrance point .skip_mirror_check ; alt entrance point
LDA $7EF3C5 : CMP.b #$03 : !BLT .aga1Alive ; check if agahnim 1 is alive LDA $7EF3C5 : CMP.b #$03 : BCS .done ; check if agahnim 1 is alive
BRA .done
.noMirror
.aga1Alive .aga1Alive
LDA #$00 : STA $7EF3CA ; set flag to light world LDA #$00
LDA $7EF3CC : CMP #$07 : BNE + : LDA.b #$08 : STA $7EF3CC : + ; convert frog to dwarf .noMirror
STA $7EF3CA ; set flag to light world
LDA $7EF3CC : CMP #$07 : BNE .done : INC : STA $7EF3CC ; convert frog to dwarf
.done .done
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
@@ -29,8 +28,7 @@ SetDeathWorldChecked:
+ +
LDA $1B : BEQ .outdoors LDA $1B : BEQ .outdoors
LDA $040C : CMP #$FF : BNE .dungeon LDA $040C : CMP #$FF : BNE .dungeon
LDA $A0 : BNE ++ LDA $A0 : ORA $A1 : BNE ++
LDA $A1 : BNE ++
LDA GanonPyramidRespawn : BNE .pyramid ; if flag is set, force respawn at pyramid on death to ganon LDA GanonPyramidRespawn : BNE .pyramid ; if flag is set, force respawn at pyramid on death to ganon
++ ++
.outdoors .outdoors
@@ -42,7 +40,7 @@ JMP DoWorldFix_skip_mirror_check
.pyramid .pyramid
LDA #$40 : STA $7EF3CA ; set flag to dark world LDA #$40 : STA $7EF3CA ; set flag to dark world
LDA $7EF3CC : CMP #$08 : BNE + : LDA.b #$07 : STA $7EF3CC : + ; convert dwarf to frog LDA $7EF3CC : CMP #$08 : BNE .done : DEC : STA $7EF3CC : + ; convert dwarf to frog
.done .done
RTL RTL
;================================================================================ ;================================================================================
@@ -50,15 +48,13 @@ DoWorldFix_Inverted:
LDA.l Bugfix_MirrorlessSQToLW : BEQ .skip_mirror_check LDA.l Bugfix_MirrorlessSQToLW : BEQ .skip_mirror_check
LDA $7EF353 : BEQ .noMirror ; check if we have the mirror LDA $7EF353 : BEQ .noMirror ; check if we have the mirror
.skip_mirror_check ; alt entrance point .skip_mirror_check ; alt entrance point
LDA $7EF3C5 : CMP.b #$03 : !BLT .aga1Alive ; check if agahnim 1 is alive LDA $7EF3C5 : CMP.b #$03 : BCS .done ; check if agahnim 1 is alive
BRA .done
.noMirror .noMirror
.aga1Alive .aga1Alive
LDA #$40 : STA $7EF3CA ; set flag to dark world LDA #$40 : STA $7EF3CA ; set flag to dark world
LDA $7EF3CC LDA $7EF3CC
CMP #$07 : BEQ .clear ; clear frog CMP #$07 : BNE .done ; clear frog
CMP #$08 : BEQ .clear ; clear dwarf - consider flute implications CMP #$08 : BNE .done ; clear dwarf - consider flute implications
BRA .done
.clear .clear
LDA.b #$00 : STA $7EF3CC ; clear follower LDA.b #$00 : STA $7EF3CC ; clear follower
.done .done
@@ -67,8 +63,7 @@ RTL
SetDeathWorldChecked_Inverted: SetDeathWorldChecked_Inverted:
LDA $1B : BEQ .outdoors LDA $1B : BEQ .outdoors
LDA $040C : CMP #$FF : BNE .dungeon LDA $040C : CMP #$FF : BNE .dungeon
LDA $A0 : BNE ++ LDA $A0 : ORA $A1 : BNE ++
LDA $A1 : BNE ++
LDA GanonPyramidRespawn : BNE .castle ; if flag is set, force respawn at pyramid on death to ganon LDA GanonPyramidRespawn : BNE .castle ; if flag is set, force respawn at pyramid on death to ganon
++ ++
.outdoors .outdoors
@@ -95,16 +90,15 @@ RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
MasterSwordFollowerClear: MasterSwordFollowerClear:
LDA $7EF3CC LDA $7EF3CC
CMP #$0E : BEQ .clear ; clear master sword follower CMP #$0E : BNE .exit ; clear master sword follower
RTL
.clear
LDA.b #$00 : STA $7EF3CC ; clear follower LDA.b #$00 : STA $7EF3CC ; clear follower
RTL .exit
RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
FixAgahnimFollowers: FixAgahnimFollowers:
LDA.b #$00 : STA $7EF3CC ; clear follower LDA.b #$00 : STA $7EF3CC ; clear follower
JSL PrepDungeonExit ; thing we wrote over JML PrepDungeonExit ; thing we wrote over
RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
macro SetMinimum(base,filler,compare) macro SetMinimum(base,filler,compare)
LDA.l <compare> : !SUB.l <base> : !BLT ?done LDA.l <compare> : !SUB.l <base> : !BLT ?done
@@ -112,7 +106,7 @@ macro SetMinimum(base,filler,compare)
?done: ?done:
endmacro endmacro
RefreshRainAmmo: RefreshRainAmmo:
LDA $7EF3C5 : CMP.b #$01 : BEQ + : RTL : + ; check if we're in rain state LDA $7EF3C5 : CMP.b #$01 : BNE .done ; check if we're in rain state
.rain .rain
LDA $7EF3C8 LDA $7EF3C8
+ CMP.b #$03 : BNE + ; Uncle + CMP.b #$03 : BNE + ; Uncle
@@ -137,14 +131,14 @@ RTL
!INFINITE_BOMBS = "$7F50C9" !INFINITE_BOMBS = "$7F50C9"
!INFINITE_MAGIC = "$7F50CA" !INFINITE_MAGIC = "$7F50CA"
SetEscapeAssist: SetEscapeAssist:
LDA $7EF3C5 : CMP.b #$01 : BNE .notrain ; check if we're in rain state LDA $7EF3C5 : CMP.b #$01 : BNE .no_train ; check if we're in rain state
.rain .rain
LDA.l EscapeAssist LDA.l EscapeAssist
BIT.b #$04 : BEQ + : STA !INFINITE_MAGIC : + BIT.b #$04 : BEQ + : STA !INFINITE_MAGIC : +
BIT.b #$02 : BEQ + : STA !INFINITE_BOMBS : + BIT.b #$02 : BEQ + : STA !INFINITE_BOMBS : +
BIT.b #$01 : BEQ + : STA !INFINITE_ARROWS : + BIT.b #$01 : BEQ + : STA !INFINITE_ARROWS : +
BRA ++ BRA ++
.notrain .no_train ; choo choo
LDA.l EscapeAssist : BIT.b #$04 : BEQ + : LDA.b #$00 : STA !INFINITE_MAGIC : + LDA.l EscapeAssist : BIT.b #$04 : BEQ + : LDA.b #$00 : STA !INFINITE_MAGIC : +
LDA.l EscapeAssist : BIT.b #$02 : BEQ + : LDA.b #$00 : STA !INFINITE_BOMBS : + LDA.l EscapeAssist : BIT.b #$02 : BEQ + : LDA.b #$00 : STA !INFINITE_BOMBS : +
LDA.l EscapeAssist : BIT.b #$01 : BEQ + : LDA.b #$00 : STA !INFINITE_ARROWS : + LDA.l EscapeAssist : BIT.b #$01 : BEQ + : LDA.b #$00 : STA !INFINITE_ARROWS : +
@@ -153,8 +147,8 @@ RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
SetSilverBowMode: SetSilverBowMode:
LDA SilverArrowsUseRestriction : BEQ + ; fix bow type for restricted arrow mode LDA SilverArrowsUseRestriction : BEQ + ; fix bow type for restricted arrow mode
LDA $7EF340 : CMP.b #$3 : !BLT + LDA $7EF340 : CMP.b #$3 : BCC +
!SUB.b #$02 : STA $7EF340 SBC.b #$02 : STA $7EF340
+ +
RTL RTL
;================================================================================ ;================================================================================