Change addresses to labels and remove SRAM trace calls

This commit is contained in:
cassidy
2021-12-06 00:41:55 -05:00
parent 774aeb5e73
commit fa76b61df0
30 changed files with 226 additions and 435 deletions

View File

@@ -63,7 +63,7 @@ RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
;ReadInventoryPond: ;ReadInventoryPond:
; CPX.b #$1B : BNE + : LDA.b #$01 : RTL : + ; CPX.b #$1B : BNE + : LDA.b #$01 : RTL : +
; LDA SRAMEquipment, X ; LDA WRAMEquipment, X
;RTL ;RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
@@ -83,10 +83,10 @@ RTS
FixAga2Bunny: FixAga2Bunny:
LDA.l FixFakeWorld : BEQ + ; Only use this fix is fakeworld fix is in use LDA.l FixFakeWorld : BEQ + ; Only use this fix is fakeworld fix is in use
LDA.l InvertedMode : BEQ +++ LDA.l InvertedMode : BEQ +++
LDA.b #$00 : STA !DARK_WORLD ; Switch to light world LDA.b #$00 : STA CurrentWorld ; Switch to light world
BRA ++ BRA ++
+++ +++
LDA.b #$40 : STA !DARK_WORLD ; Switch to dark world LDA.b #$40 : STA CurrentWorld ; Switch to dark world
++ ++
JSL DecideIfBunny : BNE + JSL DecideIfBunny : BNE +
JSR MakeBunny JSR MakeBunny

View File

@@ -55,92 +55,66 @@ CompassCountDungeonHandlers: ; pointers to functions that handle dungeon-specifi
CompassCount_Escape: CompassCount_Escape:
%DrawConstantNumber(0,8) %DrawConstantNumber(0,8)
LDA $7EF434 : LSR #4 LDA SewersLocations
JMP DrawDungeonCompassCounts_return_spot JMP DrawDungeonCompassCounts_return_spot
CompassCount_Eastern: CompassCount_Eastern:
%DrawConstantNumber(0,6) %DrawConstantNumber(0,6)
LDA $7EF436 : AND.b #$07 LDA EPLocations
JMP DrawDungeonCompassCounts_return_spot JMP DrawDungeonCompassCounts_return_spot
CompassCount_Desert: CompassCount_Desert:
%DrawConstantNumber(0,6) %DrawConstantNumber(0,6)
LDA $7EF435 : LSR #5 LDA DPLocations
JMP DrawDungeonCompassCounts_return_spot JMP DrawDungeonCompassCounts_return_spot
CompassCount_Agah: CompassCount_Agah:
%DrawConstantNumber(0,2) %DrawConstantNumber(0,2)
LDA $7EF435 : AND.b #$03 LDA CTLocations
JMP DrawDungeonCompassCounts_return_spot JMP DrawDungeonCompassCounts_return_spot
CompassCount_Swamp: CompassCount_Swamp:
%DrawConstantNumber(1,0) %DrawConstantNumber(1,0)
LDA $7EF439 : AND.b #$0F LDA SPLocations
JMP DrawDungeonCompassCounts_return_spot JMP DrawDungeonCompassCounts_return_spot
CompassCount_PoD: CompassCount_PoD:
%DrawConstantNumber(1,4) %DrawConstantNumber(1,4)
LDA $7EF434 : AND.b #$0F LDA PDLocations
JMP DrawDungeonCompassCounts_return_spot JMP DrawDungeonCompassCounts_return_spot
CompassCount_Mire: CompassCount_Mire:
%DrawConstantNumber(0,8) %DrawConstantNumber(0,8)
LDA $7EF438 : AND.b #$0F LDA MMLocations
JMP DrawDungeonCompassCounts_return_spot JMP DrawDungeonCompassCounts_return_spot
CompassCount_Skull: CompassCount_Skull:
%DrawConstantNumber(0,8) %DrawConstantNumber(0,8)
LDA $7EF437 : LSR #4 LDA SWLocations
JMP DrawDungeonCompassCounts_return_spot JMP DrawDungeonCompassCounts_return_spot
CompassCount_Ice: CompassCount_Ice:
%DrawConstantNumber(0,8) %DrawConstantNumber(0,8)
LDA $7EF438 : LSR #4 LDA IPLocations
JMP DrawDungeonCompassCounts_return_spot JMP DrawDungeonCompassCounts_return_spot
CompassCount_Hera: CompassCount_Hera:
%DrawConstantNumber(0,6) %DrawConstantNumber(0,6)
LDA $7EF435 : AND.b #$1C : LSR #2 LDA THLocations
JMP DrawDungeonCompassCounts_return_spot JMP DrawDungeonCompassCounts_return_spot
CompassCount_Thieves: CompassCount_Thieves:
%DrawConstantNumber(0,8) %DrawConstantNumber(0,8)
LDA $7EF437 : AND.b #$0F LDA TTLocations
JMP DrawDungeonCompassCounts_return_spot JMP DrawDungeonCompassCounts_return_spot
CompassCount_Trock: CompassCount_Trock:
%DrawConstantNumber(1,2) %DrawConstantNumber(1,2)
LDA $7EF439 : LSR #4 LDA TRLocations
JMP DrawDungeonCompassCounts_return_spot JMP DrawDungeonCompassCounts_return_spot
CompassCount_Gt: CompassCount_Gt:
%DrawConstantNumber(2,7) %DrawConstantNumber(2,7)
LDA $7EF436 : LSR #3 LDA GTLocations
JMP DrawDungeonCompassCounts_return_spot JMP DrawDungeonCompassCounts_return_spot
;--------------------------------------------------------------------------------
; $7EF434 - hhhhdddd - item locations checked
; h - hyrule castle/sewers
; d - palace of darkness
;--------------------------------------------------------------------------------
; $7EF435 - dddhhhaa - item locations checked
; d - desert palace
; h - tower of hera
; a - agahnim's tower
;--------------------------------------------------------------------------------
; $7EF436 - gggggeee - item locations checked
; g - ganon's tower
; e - eastern palace
;--------------------------------------------------------------------------------
; $7EF437 - sssstttt - item locations checked
; s - skull woods
; t - thieves town
;--------------------------------------------------------------------------------
; $7EF438 - iiiimmmm - item locations checked
; i - ice palace
; m - misery mire
;--------------------------------------------------------------------------------
; $7EF439 - ttttssss - item locations checked
; t - turtle rock
; s - swamp palace
;--------------------------------------------------------------------------------

View File

@@ -78,7 +78,6 @@
; JML $09A6B6 ; <- 4A6B6 tagalong.asm:1194 (SEP #$30 : RTS) ; JML $09A6B6 ; <- 4A6B6 tagalong.asm:1194 (SEP #$30 : RTS)
;} ;}
;================================================================ ;================================================================
!MAP_OVERLAY = "$7EF414" ; [2]
Sprite_ShowSolicitedMessageIfPlayerFacing_Alt: Sprite_ShowSolicitedMessageIfPlayerFacing_Alt:
{ {
STA $1CF0 STA $1CF0
@@ -108,11 +107,11 @@ Sprite_ShowSolicitedMessageIfPlayerFacing_Alt:
BRA .SayNothing BRA .SayNothing
.SahasrahlaDialogs .SahasrahlaDialogs
REP #$20 : LDA.l MapReveal_Sahasrahla : ORA !MAP_OVERLAY : STA !MAP_OVERLAY : SEP #$20 REP #$20 : LDA.l MapReveal_Sahasrahla : ORA MapOverlay : STA MapOverlay : SEP #$20
JSL DialogSahasrahla : BRA .SayNothing JSL DialogSahasrahla : BRA .SayNothing
.BombShopGuyDialog .BombShopGuyDialog
REP #$20 : LDA.l MapReveal_BombShop : ORA !MAP_OVERLAY : STA !MAP_OVERLAY : SEP #$20 REP #$20 : LDA.l MapReveal_BombShop : ORA MapOverlay : STA MapOverlay : SEP #$20
JSL DialogBombShopGuy JSL DialogBombShopGuy
.SayNothing .SayNothing

View File

@@ -24,7 +24,7 @@ CuccoStorm:
SEP #$30 ; set 8-bit accumulator index registers SEP #$30 ; set 8-bit accumulator index registers
LDA.l !CUCCO_STORM : BEQ + ; only if storm is on LDA.l !CUCCO_STORM : BEQ + ; only if storm is on
LDA.b $10 : CMP.b #$09 : BNE + ; only if outdoors LDA.b $10 : CMP.b #$09 : BNE + ; only if outdoors
LDA.l !LOOP_FRAMES_LOW : AND.b #$7F : BNE + ; check every 128 frames LDA.l LoopFrames : AND.b #$7F : BNE + ; check every 128 frames
- -
;==== Find a Cucco ;==== Find a Cucco

View File

@@ -394,7 +394,7 @@ AgahnimAsksAboutPed:
LDA.l InvincibleGanon LDA.l InvincibleGanon
CMP.b #$06 : BNE .vanilla CMP.b #$06 : BNE .vanilla
LDA.l $7EF300 ; check ped flag LDA.l OverworldEventData+$80 ; check ped flag
AND.b #$40 AND.b #$40
BNE .vanilla BNE .vanilla

View File

@@ -52,7 +52,7 @@ RTL
LDY.b #$01 LDY.b #$01
JSL Sprite_ShowSolicitedMessageIfPlayerFacing_PreserveMessage : BCC .dont_show JSL Sprite_ShowSolicitedMessageIfPlayerFacing_PreserveMessage : BCC .dont_show
LDA !GOAL_COUNTER LDA GoalCounter
CMP GoalItemRequirement : !BLT + CMP GoalItemRequirement : !BLT +
JSL.l ActivateGoal JSL.l ActivateGoal
+ +

View File

@@ -22,7 +22,7 @@ LockAgahnimDoors:
.crystalOrUnlock .crystalOrUnlock
LDA InvertedMode : AND.w #$00FF : BEQ .unlock LDA InvertedMode : AND.w #$00FF : BEQ .unlock
LDA $7EF2C3 : AND.w #$0020 : BNE .unlock ; Check if GT overlay is already on or not LDA OverworldEventData+$43 : AND.w #$0020 : BNE .unlock ; Check if GT overlay is already on or not
LDA $0308 : AND.w #$0080 : BEQ ++ ;If we are holding an item LDA $0308 : AND.w #$0080 : BEQ ++ ;If we are holding an item
.locked .locked
@@ -44,7 +44,7 @@ RTL
FlagAgahnimDoor: FlagAgahnimDoor:
LDA.l InvertedMode : BEQ .vanilla LDA.l InvertedMode : BEQ .vanilla
LDA $7EF2C3 : ORA #$20 : STA $7EF2C3 ; activate GT overlay LDA OverworldEventData+$43 : ORA #$20 : STA OverworldEventData+$43 ; activate GT overlay
.vanilla .vanilla
LDA.b #$28 : STA.b $72 LDA.b #$28 : STA.b $72
@@ -209,7 +209,7 @@ TurtleRockEntranceFix:
LDA TurtleRockAutoOpenFix : BEQ .done LDA TurtleRockAutoOpenFix : BEQ .done
LDA $8A : CMP.b #$47 : BNE .done LDA $8A : CMP.b #$47 : BNE .done
;If exiting to turtle rock ensure the entrance is open ;If exiting to turtle rock ensure the entrance is open
LDA.l $7EF2C7 : ORA.b #$20 : STA.l $7EF2C7 LDA.l OverworldEventData+$47 : ORA.b #$20 : STA.l OverworldEventData+$47
.done .done
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------

View File

@@ -2,7 +2,7 @@
; OnLoadOW ; OnLoadOW
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
;OnLoadMap: ;OnLoadMap:
; LDA $7EF2DB ; thing we wrote over ; LDA OverworldEventData+$5B ; thing we wrote over
;RTL ;RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
OnPrepFileSelect: OnPrepFileSelect:
@@ -84,8 +84,8 @@ OnAga2Defeated:
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
OnFileCreation: OnFileCreation:
TAX ; what we wrote over TAX ; what we wrote over
LDA StartingEquipment+$4C : STA $700340+$4C ; copy starting equipment swaps to file select screen LDA StartingEquipment+$4C : STA SRAMEquipment+$4C ; copy starting equipment swaps to file select screen
LDA StartingEquipment+$4E : STA $700340+$4E LDA StartingEquipment+$4E : STA SRAMEquipment+$4E
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
!RNG_ITEM_LOCK_IN = "$7F5090" !RNG_ITEM_LOCK_IN = "$7F5090"
@@ -126,32 +126,32 @@ OnNewFile:
PHX : PHP PHX : PHP
REP #$20 ; set 16-bit accumulator REP #$20 ; set 16-bit accumulator
LDA.l LinkStartingRupees : STA CurrentRupees : STA TargetRupees LDA.l LinkStartingRupees : STA CurrentRupees : STA TargetRupees
LDA.l StartingTime : STA $7EF454 LDA.l StartingTime : STA ChallengeTimer
LDA.l StartingTime+2 : STA $7EF454+2 LDA.l StartingTime+2 : STA ChallengeTimer+2
LDX.w #$004E : - ; copy over starting equipment LDX.w #$004E : - ; copy over starting equipment
LDA StartingEquipment, X : STA SRAMEquipment, X LDA StartingEquipment, X : STA WRAMEquipment, X
DEX : DEX DEX : DEX
BPL - BPL -
LDX #$000E : - LDX #$0008 : - ; copy starting keys to chest key counters in sram
LDA SewerKeys, X : STA $7EF4E0, X LDA DungeonKeys, X : STA DungeonChestKeys, X
DEX : DEX DEX : DEX
BPL - BPL -
SEP #$20 ; set 8-bit accumulator SEP #$20 ; set 8-bit accumulator
;LDA #$FF : STA !RNG_ITEM_LOCK_IN ; reset rng item lock-in ;LDA #$FF : STA !RNG_ITEM_LOCK_IN ; reset rng item lock-in
LDA.l PreopenCurtains : BEQ + LDA.l PreopenCurtains : BEQ +
LDA.b #$80 : STA $7EF061 ; open aga tower curtain LDA.b #$80 : STA RoomData[$30].high ; open aga tower curtain
LDA.b #$80 : STA $7EF093 ; open skull woods curtain LDA.b #$80 : STA RoomData[$49].high ; open skull woods curtain
+ +
LDA.l PreopenPyramid : BEQ + LDA.l PreopenPyramid : BEQ +
LDA.b #$20 : STA $7EF2DB ; pyramid hole already open LDA.b #$20 : STA OverworldEventData+$5B ; pyramid hole already open
+ +
LDA.l PreopenGanonsTower : BEQ + LDA.l PreopenGanonsTower : BEQ +
LDA.b #$20 : STA $7EF2C3 ; Ganons Tower already open LDA.b #$20 : STA OverworldEventData+$43 ; Ganons Tower already open
+ +
LDA StartingSword : STA SwordEquipment ; set starting sword type LDA StartingSword : STA SwordEquipment ; set starting sword type
@@ -235,8 +235,8 @@ PreItemGet:
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
PostItemGet: PostItemGet:
JML.l MaybeWriteSRAMTrace
RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
PostItemAnimation: PostItemAnimation:
LDA.b #$00 : STA !ITEM_BUSY ; mark item as finished LDA.b #$00 : STA !ITEM_BUSY ; mark item as finished

View File

@@ -8,7 +8,7 @@ FlipperKill:
LDA $7F5001 : BEQ .done ; skip if we're not marked in danger for softlock LDA $7F5001 : BEQ .done ; skip if we're not marked in danger for softlock
LDA $8A : CMP $7F5098 : BEQ .done ; skip if we're on the same screen we entered the water on LDA $8A : CMP $7F5098 : BEQ .done ; skip if we're on the same screen we entered the water on
;JSL.l KillFairies ; take away fairies ;JSL.l KillFairies ; take away fairies
LDA !IGNORE_FAIRIES : ORA.b #$04 : STA !IGNORE_FAIRIES LDA IgnoreFaeries : ORA.b #$04 : STA IgnoreFaeries
LDA.b #$00 : STA CurrentHealth ; kill link LDA.b #$00 : STA CurrentHealth ; kill link
LDA.b #$00 : STA $7F5001 ; mark fake flipper softlock as impossible LDA.b #$00 : STA $7F5001 ; mark fake flipper softlock as impossible
.done .done
@@ -18,9 +18,9 @@ RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
IgnoreFairyCheck: IgnoreFairyCheck:
LDX.b #$00 ; thing we wrote over LDX.b #$00 ; thing we wrote over
LDA !IGNORE_FAIRIES : BIT.b #$04 : BEQ .normal LDA IgnoreFaeries : BIT.b #$04 : BEQ .normal
AND.b #$FB : STA !IGNORE_FAIRIES ; clear ignore fairy flag AND.b #$FB : STA IgnoreFaeries ; clear ignore fairy flag
LDA.b #$F0 ; set check to invalid entry LDA.b #$F0 ; set check to invalid entry
RTL RTL
.normal .normal

View File

@@ -5,21 +5,21 @@ FloodGateAndMasterSwordFollowerReset:
JSL.l MasterSwordFollowerClear JSL.l MasterSwordFollowerClear
FloodGateReset: FloodGateReset:
LDA.l PersistentFloodgate : BNE + LDA.l PersistentFloodgate : BNE +
LDA $7EF2BB : AND.b #$DF : STA $7EF2BB ; reset water outside floodgate LDA OverworldEventData+$3B : AND.b #$DF : STA OverworldEventData+$3B ; reset water outside floodgate
LDA $7EF2FB : AND.b #$DF : STA $7EF2FB ; reset water outside swamp palace LDA OverworldEventData+$7B : AND.b #$DF : STA OverworldEventData+$7B ; reset water outside swamp palace
LDA $7EF216 : AND.b #$7F : STA $7EF216 ; clear water inside floodgate LDA RoomData[$010B].low : AND.b #$7F : STA RoomData[$010B].low ; clear water inside floodgate
LDA $7EF051 : AND.b #$FE : STA $7EF051 ; clear water front room (room 40) LDA RoomData[$28].high : AND.b #$FE : STA RoomData[$28].high ; clear water front room (room 40)
+ +
FloodGateResetInner: FloodGateResetInner:
LDA.l Bugfix_SwampWaterLevel : BEQ +++ LDA.l Bugfix_SwampWaterLevel : BEQ +++
LDA $7EF06F : AND.b #$04 : BEQ + ; Check if key in room 55 has been collected. LDA RoomData[$37].low : AND.b #$04 : BEQ + ; Check if key in room 55 has been collected.
LDA $7EF356 : AND.b #$01 : BNE ++ ; Check for flippers. This can otherwise softlock doors if flooded without flippers and no way to reset. LDA FlippersEquipment : AND.b #$01 : BNE ++ ; Check for flippers. This can otherwise softlock doors if flooded without flippers and no way to reset.
+ +
LDA $7EF06E : AND.b #$7F : STA $7EF06E ; clear water room 55 - outer room you shouldn't be able to softlock except in major glitches LDA RoomData[$37].low : AND.b #$7F : STA RoomData[$37].low ; clear water room 55 - outer room you shouldn't be able to softlock except in major glitches
++ ++
LDA $7EF06B : AND.b #$04 : BNE +++ ; Check if key in room 53 has been collected. LDA RoomData[$35].high : AND.b #$04 : BNE +++ ; Check if key in room 53 has been collected.
; no need to check for flippers on the inner room, as you can't get to the west door no matter what, without flippers. ; no need to check for flippers on the inner room, as you can't get to the west door no matter what, without flippers.
LDA $7EF06A : AND.b #$7F : STA $7EF06A ; clear water room 53 - inner room with the easy key flood softlock LDA RoomData[$35].low : AND.b #$7F : STA RoomData[$35].low ; clear water room 53 - inner room with the easy key flood softlock
+++ +++
RTL RTL
;================================================================================ ;================================================================================

View File

@@ -33,7 +33,7 @@ SpawnHauntedGroveItem:
TYX TYX
LDX $8A ; haunted grove (208D0A) LDX $8A ; haunted grove (208D0A)
LDA $7EF280, X : AND.b #$40 : BNE + LDA OverworldEventData, X : AND.b #$40 : BNE +
LDA.b #$1B : JSL Sound_SetSfx3PanLong LDA.b #$1B : JSL Sound_SetSfx3PanLong
+ +
RTL RTL

View File

@@ -16,20 +16,20 @@ GetAgahnimDeath:
CMP.b #13 : BNE + ; Agahnim 2 room CMP.b #13 : BNE + ; Agahnim 2 room
LDA.l Bugfix_SetWorldOnAgahnimDeath : BEQ ++ LDA.l Bugfix_SetWorldOnAgahnimDeath : BEQ ++
LDA.l InvertedMode : BEQ +++ LDA.l InvertedMode : BEQ +++
LDA.b #$00 : STA !DARK_WORLD ; Switch to light world LDA.b #$00 : STA CurrentWorld ; Switch to light world
BRA ++ BRA ++
+++ +++
LDA.b #$40 : STA !DARK_WORLD ; Switch to dark world LDA.b #$40 : STA CurrentWorld ; Switch to dark world
++ ++
LDA.b #$01 ; Use Agahnim 2 LDA.b #$01 ; Use Agahnim 2
RTL RTL
+ ; Elsewhere + ; Elsewhere
LDA.l Bugfix_SetWorldOnAgahnimDeath : BEQ ++ LDA.l Bugfix_SetWorldOnAgahnimDeath : BEQ ++
LDA.l InvertedMode : BEQ +++ LDA.l InvertedMode : BEQ +++
LDA.b #$40 : STA !DARK_WORLD ; Switch to dark world LDA.b #$40 : STA CurrentWorld ; Switch to dark world
BRA ++ BRA ++
+++ +++
LDA.b #$00 : STA !DARK_WORLD ; Switch to light world LDA.b #$00 : STA CurrentWorld ; Switch to light world
; (This will later get flipped to DW when Agahnim 1 ; (This will later get flipped to DW when Agahnim 1
; warps us to the pyramid) ; warps us to the pyramid)
++ ++

View File

@@ -1,7 +1,6 @@
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
; $7F5010 - Scratch Space (Callee Preserved) ; $7F5010 - Scratch Space (Callee Preserved)
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
!GOAL_COUNTER = "$7EF418"
!GOAL_DRAW_ADDRESS = "$7EC72A" !GOAL_DRAW_ADDRESS = "$7EC72A"
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
; DrawGoalIndicator moved to newhud.asm ; DrawGoalIndicator moved to newhud.asm
@@ -68,12 +67,12 @@ CheckGanonVulnerability:
.all_dungeons_no_agahnim .all_dungeons_no_agahnim
LDA.l PendantsField : AND.b #$07 : CMP.b #$07 : BNE .fail ; require all pendants LDA.l PendantsField : AND.b #$07 : CMP.b #$07 : BNE .fail ; require all pendants
LDA.l CrystalsField : AND.b #$7F : CMP.b #$7F : BNE .fail ; require all crystals LDA.l CrystalsField : AND.b #$7F : CMP.b #$7F : BNE .fail ; require all crystals
LDA.l $7EF2DB : AND.b #$20 : BEQ .fail ; require aga2 defeated (pyramid hole open) LDA.l OverworldEventData+$5B : AND.b #$20 : BEQ .fail ; require aga2 defeated (pyramid hole open)
BRA .success BRA .success
; 03 = crystals and aga 2 ; 03 = crystals and aga 2
.crystals_and_aga .crystals_and_aga
LDA.l $7EF2DB : AND.b #$20 : BEQ .fail ; check aga2 first then bleed in LDA.l OverworldEventData+$5B : AND.b #$20 : BEQ .fail ; check aga2 first then bleed in
; 04 = crystals only ; 04 = crystals only
.crystals .crystals
@@ -82,7 +81,7 @@ CheckGanonVulnerability:
; 05 = require goal item ; 05 = require goal item
.goal_item .goal_item
LDA.l !GOAL_COUNTER : CMP GoalItemRequirement LDA.l GoalCounter : CMP GoalItemRequirement
RTS RTS
; 06 = light speed ; 06 = light speed
@@ -96,7 +95,6 @@ CheckGanonVulnerability:
; 08 = Crystal bosses but no crystals ; 08 = Crystal bosses but no crystals
.bosses_only .bosses_only
;LDA.l $7EF2DDB : AND.b #$20 : BEQ .fail ; check aga2
JMP CheckForCrystalBossesDefeated JMP CheckForCrystalBossesDefeated
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
@@ -140,7 +138,7 @@ CheckAgaForPed:
CMP.b #$06 : BNE .vanilla CMP.b #$06 : BNE .vanilla
.light_speed .light_speed
LDA.l $7EF300 ; check ped flag LDA.l OverworldEventData+$80 ; check ped flag
AND.b #$40 AND.b #$40
BEQ .force_blue_ball BEQ .force_blue_ball
@@ -164,8 +162,8 @@ KillGanon:
CMP.b #$06 : BNE .exit CMP.b #$06 : BNE .exit
.light_speed .light_speed
LDA.l $7EF2DB : ORA.b #$20 : STA.l $7EF2DB ; pyramid hole LDA.l OverworldEventData+$5B : ORA.b #$20 : STA.l OverworldEventData+$5B ; pyramid hole
LDA.b #$08 : STA.l RoomData[$00].Low ; kill ganon LDA.b #$08 : STA.l RoomData[$00].high ; kill ganon
LDA.b #$02 : STA.l MoonPearlEquipment ; pearl but invisible in menu LDA.b #$02 : STA.l MoonPearlEquipment ; pearl but invisible in menu
.exit .exit
@@ -197,7 +195,7 @@ CheckForCrystalBossesDefeated:
LDA.l DrawHUDDungeonItems_boss_room_ids-4,X LDA.l DrawHUDDungeonItems_boss_room_ids-4,X
TAX TAX
LDA.l $7EF000,X LDA.l RoomData.l,X
AND.w #$0800 AND.w #$0800
BEQ ++ BEQ ++

View File

@@ -130,7 +130,7 @@ HeartUpgradeSpawnDecision: ; this should return #$00 to make the hp spawn
RTL RTL
.normal_behavior .normal_behavior
LDA $7EF280, X LDA OverworldEventData, X
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
SaveHeartCollectedStatus: SaveHeartCollectedStatus:
@@ -140,7 +140,7 @@ SaveHeartCollectedStatus:
RTL RTL
.normal_behavior .normal_behavior
LDA $7EF280, X : ORA.b #$40 : STA $7EF280, X LDA OverworldEventData, X : ORA.b #$40 : STA OverworldEventData, X
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
!REDRAW = "$7F5000" !REDRAW = "$7F5000"
@@ -195,7 +195,7 @@ MaybeMarkDigSpotCollected:
REP #$20 ; set 16-bit accumulator REP #$20 ; set 16-bit accumulator
LDA $8A LDA $8A
CMP.w #$2A : BNE + CMP.w #$2A : BNE +
LDA !HAS_GROVE_ITEM : ORA.w #$0001 : STA !HAS_GROVE_ITEM LDA HasGroveItem : ORA.w #$0001 : STA HasGroveItem
+ +
PLP : PLA PLP : PLA
RTL RTL

View File

@@ -71,7 +71,7 @@ Overworld_CreatePyramidHoleModified:
SEP #$30 SEP #$30
LDA $7EF2DB : ORA.b #$20 : STA $7EF2DB LDA OverworldEventData+$5B : ORA.b #$20 : STA OverworldEventData+$5B
LDA.b #$03 : STA $012F LDA.b #$03 : STA $012F
@@ -131,9 +131,9 @@ db $02, $02, $02, $02, $02, $02, $02, $00, $00, $01, $01, $01, $02, $00, $08, $0
Electric_Barrier: Electric_Barrier:
LDA InvertedMode : BEQ .done LDA InvertedMode : BEQ .done
LDA OverworldData, X : ORA #$40 : STA $7EF280, X ;set barrier dead LDA OverworldEventData, X : ORA #$40 : STA OverworldEventData, X ;set barrier dead
.done .done
LDA $7EF280, X ; what we wrote over LDA OverworldEventData, X ; what we wrote over
RTL RTL
@@ -187,7 +187,7 @@ RTL
TurtleRockPegSolved: TurtleRockPegSolved:
LDA.l InvertedMode : AND.w #$00FF : BNE + LDA.l InvertedMode : AND.w #$00FF : BNE +
LDA.l $7ef287 ; What we wrote over (reading flags for this screen) LDA.l OverworldEventData+07 ; What we wrote over (reading flags for this screen)
RTL RTL
+ +
LDA.w #$0020 ; We always treat puzzle as pre solved (overlay flag set) for inverted mode. LDA.w #$0020 ; We always treat puzzle as pre solved (overlay flag set) for inverted mode.

View File

@@ -21,7 +21,5 @@ MaidenCrystalScript:
LDA.b #$08 : STA MapIcons ; Update the map icon to just be Ganon's Tower LDA.b #$08 : STA MapIcons ; Update the map icon to just be Ganon's Tower
+ +
JSL.l MaybeWriteSRAMTrace
JML.l $1ECF35 ; <- F4F35 - sprite_crystal_maiden.asm : 426 JML.l $1ECF35 ; <- F4F35 - sprite_crystal_maiden.asm : 426
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------

View File

@@ -6,7 +6,7 @@ TryOpenMire:
LDA $8A : CMP.b #$70 : BNE .untriggered LDA $8A : CMP.b #$70 : BNE .untriggered
; Checks whether the Misery Mire dungeon is already revealed. ; Checks whether the Misery Mire dungeon is already revealed.
LDA $7EF2F0 : AND.b #$20 : BNE .untriggered LDA OverworldEventData+$70 : AND.b #$20 : BNE .untriggered
; You have to be in the trigger window. ; You have to be in the trigger window.
LDY.b #$02 : JSL.l Ancilla_CheckIfEntranceTriggered : BCC .untriggered LDY.b #$02 : JSL.l Ancilla_CheckIfEntranceTriggered : BCC .untriggered
@@ -25,7 +25,7 @@ TryOpenTRock:
LDA $8A : CMP.b #$47 : BNE .untriggered LDA $8A : CMP.b #$47 : BNE .untriggered
; Checks whether the Turtle Rock dungeon is already revealed. ; Checks whether the Turtle Rock dungeon is already revealed.
LDA $7EF2C7 : AND.b #$20 : BNE .untriggered LDA OverworldEventData+$47 : AND.b #$20 : BNE .untriggered
; You have to be in the trigger window. ; You have to be in the trigger window.
LDY.b #$03 : JSL.l Ancilla_CheckIfEntranceTriggered : BCC .untriggered LDY.b #$03 : JSL.l Ancilla_CheckIfEntranceTriggered : BCC .untriggered

16
msu.asm
View File

@@ -250,7 +250,7 @@ CheckMusicLoadRequest:
BRA .check_fallback-3 BRA .check_fallback-3
.lightworld .lightworld
PHA PHA
LDA $7EF300 : AND.b #$40 : BEQ + LDA OverworldEventData+$80 : AND.b #$40 : BEQ +
PLA PLA
LDA.b #60 : BRA .check_fallback-3 LDA.b #60 : BRA .check_fallback-3
+ +
@@ -344,7 +344,7 @@ CheckMusicLoadRequest:
+ +
CMP.b #$70 : BNE + ; Misery Mire CMP.b #$70 : BNE + ; Misery Mire
LDA $7EF2F0 : AND.b #$20 : BEQ .rain LDA OverworldEventData+$70 : AND.b #$20 : BEQ .rain
+ +
LDA ProgressIndicator : CMP.b #$02 : BCS + LDA ProgressIndicator : CMP.b #$02 : BCS +
@@ -517,16 +517,16 @@ PHA : XBA : PHA
; dont save if we already saved recently ; dont save if we already saved recently
REP #$20 REP #$20
LDA !MSU_RESUME_TRACK : AND #$00FF : BEQ ++ LDA !MSU_RESUME_TRACK : AND #$00FF : BEQ ++
LDA !NMI_COUNTER : !SUB !MSU_RESUME_TIME : PHA LDA NMIFrames : !SUB !MSU_RESUME_TIME : PHA
LDA !NMI_COUNTER+2 : SBC !MSU_RESUME_TIME+2 : BNE +++ LDA NMIFrames+2 : SBC !MSU_RESUME_TIME+2 : BNE +++
PLA : CMP MSUResumeTimer : !BLT .too_early PLA : CMP MSUResumeTimer : !BLT .too_early
BRA ++ BRA ++
+++ +++
PLA PLA
++ ++
; saving ; saving
LDA !NMI_COUNTER : STA !MSU_RESUME_TIME LDA NMIFrames : STA !MSU_RESUME_TIME
LDA !NMI_COUNTER+2 : STA !MSU_RESUME_TIME+2 LDA NMIFrames+2 : STA !MSU_RESUME_TIME+2
SEP #$20 SEP #$20
LDA !MSU_LOADED_TRACK : STA !MSU_RESUME_TRACK LDA !MSU_LOADED_TRACK : STA !MSU_RESUME_TRACK
@@ -683,8 +683,8 @@ MSUMain:
PLX PLX
TXA : CMP !MSU_RESUME_TRACK : BNE + ; dont resume if too late TXA : CMP !MSU_RESUME_TRACK : BNE + ; dont resume if too late
REP #$20 REP #$20
LDA !NMI_COUNTER : !SUB !MSU_RESUME_TIME : PHA LDA NMIFrames : !SUB !MSU_RESUME_TIME : PHA
LDA !NMI_COUNTER+2 : SBC !MSU_RESUME_TIME+2 : BNE ++ LDA NMIFrames+2 : SBC !MSU_RESUME_TIME+2 : BNE ++
PLA : CMP MSUResumeTimer : !BGE +++ PLA : CMP MSUResumeTimer : !BGE +++
SEP #$20 SEP #$20
LDA !FLAG_RESUME_FADEIN : BRA .done_resume LDA !FLAG_RESUME_FADEIN : BRA .done_resume

View File

@@ -33,7 +33,7 @@ PreOverworld_LoadProperties_ChooseMusic:
LDX.b #$05 ; Lost woods theme LDX.b #$05 ; Lost woods theme
; check if we've pulled from the master sword pedestal ; check if we've pulled from the master sword pedestal
LDA $7EF300 : AND.b #$40 : BEQ + LDA OverworldEventData+$80 : AND.b #$40 : BEQ +
LDX.b #$02 ; Default light world theme LDX.b #$02 ; Default light world theme
+ +
@@ -129,7 +129,7 @@ Overworld_FinishMirrorWarp:
; Check if we're entering the lost woods ; Check if we're entering the lost woods
CMP.b #$00 : BNE + CMP.b #$00 : BNE +
LDA $7EF300 : AND.b #$40 : BNE .endOfLightWorldChecks LDA OverworldEventData+$80 : AND.b #$40 : BNE .endOfLightWorldChecks
LDX.b #$05 ; lost woods theme LDX.b #$05 ; lost woods theme
BRA .endOfLightWorldChecks BRA .endOfLightWorldChecks
+ +
@@ -196,7 +196,7 @@ BirdTravel_LoadTargetAreaMusic:
;LDX.b #$05 ; Lost woods theme ;LDX.b #$05 ; Lost woods theme
; check if we've pulled from the master sword pedestal ; check if we've pulled from the master sword pedestal
;LDA $7EF300 : AND.b #$40 : BEQ + ;LDA OverworldEventData+$80 : AND.b #$40 : BEQ +
; LDX.b #$02 ; Default light world theme ; LDX.b #$02 ; Default light world theme
;+ ;+
@@ -222,7 +222,7 @@ BirdTravel_LoadTargetAreaMusic:
LDA $8A LDA $8A
; Misery Mire rain SFX ; Misery Mire rain SFX
CMP.b #$70 : BNE ++ CMP.b #$70 : BNE ++
LDA $7EF2F0 : AND.b #$20 : BNE ++ LDA OverworldEventData+$70 : AND.b #$20 : BNE ++
LDA.b #$01 : CMP $0131 : BEQ + LDA.b #$01 : CMP $0131 : BEQ +
STA $012D STA $012D
+ : BRA .checkInverted + : BRA .checkInverted

View File

@@ -58,14 +58,13 @@ SEP #$30
;================================================================================ ;================================================================================
; Draw Goal Item Indicator ; Draw Goal Item Indicator
!GOAL_COUNTER = "$7EF418"
!GOAL_DRAW_ADDRESS = "$7EC72A" !GOAL_DRAW_ADDRESS = "$7EC72A"
;================================================================================ ;================================================================================
SEP #$20 SEP #$20
LDA.l GoalItemRequirement : BNE + : JMP .done : + ; Star Meter LDA.l GoalItemRequirement : BNE + : JMP .done : + ; Star Meter
LDA.l !GOAL_COUNTER LDA.l GoalCounter
JSR HudHexToDec3Digit JSR HudHexToDec3Digit
REP #$20 REP #$20

View File

@@ -21,44 +21,42 @@
;UNUSED = "#$40" ;UNUSED = "#$40"
;MAGIC_BAT = "#$80" ;MAGIC_BAT = "#$80"
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
!NPC_FLAGS = "$7EF410"
!NPC_FLAGS_2 = "$7EF411"
ItemCheck_FairySword: ItemCheck_FairySword:
LDA !NPC_FLAGS_2 : AND.b #$08 LDA NpcFlags+1 : AND.b #$08
RTL RTL
ItemCheck_SmithSword: ItemCheck_SmithSword:
LDA !NPC_FLAGS_2 : AND.b #$04 LDA NpcFlags+1 : AND.b #$04
RTL RTL
ItemCheck_MagicBat: ItemCheck_MagicBat:
LDA !NPC_FLAGS_2 : AND.b #$80 LDA NpcFlags+1 : AND.b #$80
RTL RTL
ItemCheck_OldMan: ItemCheck_OldMan:
LDA !NPC_FLAGS : AND.b #$01 : CMP #$01 LDA NpcFlags : AND.b #$01 : CMP #$01
RTL RTL
ItemCheck_ZoraKing: ItemCheck_ZoraKing:
LDA !NPC_FLAGS : AND.b #$02 LDA NpcFlags : AND.b #$02
RTL RTL
ItemCheck_SickKid: ItemCheck_SickKid:
LDA !NPC_FLAGS : AND.b #$04 LDA NpcFlags : AND.b #$04
RTL RTL
ItemCheck_TreeKid: ItemCheck_TreeKid:
LDA !NPC_FLAGS : AND.b #$08 ; FluteBoy_Chillin - 73: LDA FluteEquipment LDA NpcFlags : AND.b #$08 ; FluteBoy_Chillin - 73: LDA FluteEquipment
RTL RTL
ItemCheck_TreeKid2: ItemCheck_TreeKid2:
LDA !NPC_FLAGS : AND.b #$08 : LSR #$02 ; FluteAardvark_InitialStateFromFluteState - 225: LDA FluteEquipment : AND.b #$03 LDA NpcFlags : AND.b #$08 : LSR #$02 ; FluteAardvark_InitialStateFromFluteState - 225: LDA FluteEquipment : AND.b #$03
RTL RTL
ItemCheck_TreeKid3: ItemCheck_TreeKid3:
JSL $0DD030 ; FluteAardvark_Draw - thing we wrote over JSL $0DD030 ; FluteAardvark_Draw - thing we wrote over
LDA !NPC_FLAGS : AND.b #$08 LDA NpcFlags : AND.b #$08
BEQ .normal BEQ .normal
BRA .done BRA .done
LDA.b #$05 LDA.b #$05
@@ -68,16 +66,16 @@ ItemCheck_TreeKid3:
RTL RTL
ItemCheck_Sahasrala: ItemCheck_Sahasrala:
LDA !NPC_FLAGS : AND.b #$10 LDA NpcFlags : AND.b #$10
RTL RTL
ItemCheck_Library: ItemCheck_Library:
LDA !NPC_FLAGS : AND.b #$80 LDA NpcFlags : AND.b #$80
RTL RTL
ItemCheck_Mushroom: ItemCheck_Mushroom:
LDA !NPC_FLAGS_2 : ROL #4 ; does the same thing as below LDA NpcFlags+1 : ROL #4 ; does the same thing as below
; LDA !NPC_FLAGS_2 : AND.b #$10 : BEQ .clear ; LDA NpcFlags+1 : AND.b #$10 : BEQ .clear
; SEC ; SEC
;RTL ;RTL
; .clear ; .clear
@@ -85,7 +83,7 @@ ItemCheck_Mushroom:
RTL RTL
ItemCheck_Powder: ItemCheck_Powder:
LDA !NPC_FLAGS_2 : AND.b #$20 LDA NpcFlags+1 : AND.b #$20
RTL RTL
ItemCheck_Catfish: ItemCheck_Catfish:
@@ -101,60 +99,60 @@ ItemCheck_Catfish:
;.oursNewers ;.oursNewers
;LDA #$00 : RTL ; give item ;LDA #$00 : RTL ; give item
;.junk ;.junk
LDA !NPC_FLAGS : AND.b #$20 LDA NpcFlags : AND.b #$20
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
ItemSet_FairySword: ItemSet_FairySword:
PHA : LDA !NPC_FLAGS_2 : ORA.b #$08 : STA !NPC_FLAGS_2 : PLA PHA : LDA NpcFlags+1 : ORA.b #$08 : STA NpcFlags+1 : PLA
RTL RTL
ItemSet_SmithSword: ItemSet_SmithSword:
PHA : LDA !NPC_FLAGS_2 : ORA.b #$04 : STA !NPC_FLAGS_2 : PLA PHA : LDA NpcFlags+1 : ORA.b #$04 : STA NpcFlags+1 : PLA
RTL RTL
ItemSet_MagicBat: ItemSet_MagicBat:
PHA : LDA !NPC_FLAGS_2 : ORA.b #$80 : STA !NPC_FLAGS_2 : PLA PHA : LDA NpcFlags+1 : ORA.b #$80 : STA NpcFlags+1 : PLA
RTL RTL
ItemSet_OldMan: ItemSet_OldMan:
JSL.l Link_ReceiveItem ; thing we wrote over JSL.l Link_ReceiveItem ; thing we wrote over
PHA : LDA !NPC_FLAGS : ORA.b #$01 : STA !NPC_FLAGS : PLA PHA : LDA NpcFlags : ORA.b #$01 : STA NpcFlags : PLA
RTL RTL
ItemSet_ZoraKing: ItemSet_ZoraKing:
;JSL $1DE1AA ; Sprite_SpawnFlippersItem ; thing we wrote over ;JSL $1DE1AA ; Sprite_SpawnFlippersItem ; thing we wrote over
PHA : LDA !NPC_FLAGS : ORA.b #$02 : STA !NPC_FLAGS : PLA PHA : LDA NpcFlags : ORA.b #$02 : STA NpcFlags : PLA
RTL RTL
ItemSet_SickKid: ItemSet_SickKid:
JSL.l Link_ReceiveItem ; thing we wrote over JSL.l Link_ReceiveItem ; thing we wrote over
PHA : LDA !NPC_FLAGS : ORA.b #$04 : STA !NPC_FLAGS : PLA PHA : LDA NpcFlags : ORA.b #$04 : STA NpcFlags : PLA
RTL RTL
ItemSet_TreeKid: ItemSet_TreeKid:
JSL.l Link_ReceiveItem ; thing we wrote over JSL.l Link_ReceiveItem ; thing we wrote over
PHA : LDA !NPC_FLAGS : ORA.b #$08 : STA !NPC_FLAGS : PLA PHA : LDA NpcFlags : ORA.b #$08 : STA NpcFlags : PLA
RTL RTL
ItemSet_Sahasrala: ItemSet_Sahasrala:
JSL.l Link_ReceiveItem ; thing we wrote over JSL.l Link_ReceiveItem ; thing we wrote over
PHA : LDA !NPC_FLAGS : ORA.b #$10 : STA !NPC_FLAGS : PLA PHA : LDA NpcFlags : ORA.b #$10 : STA NpcFlags : PLA
RTL RTL
ItemSet_Catfish: ItemSet_Catfish:
;JSL $00D52D ; GetAnimatedSpriteTile.variable ; thing we wrote over ;JSL $00D52D ; GetAnimatedSpriteTile.variable ; thing we wrote over
;JSL.l LoadCatfishItemGFX ;JSL.l LoadCatfishItemGFX
PHA : LDA !NPC_FLAGS : ORA.b #$20 : STA !NPC_FLAGS : PLA PHA : LDA NpcFlags : ORA.b #$20 : STA NpcFlags : PLA
RTL RTL
ItemSet_Library: ItemSet_Library:
JSL.l Link_ReceiveItem ; thing we wrote over JSL.l Link_ReceiveItem ; thing we wrote over
PHA : LDA !NPC_FLAGS : ORA.b #$80 : STA !NPC_FLAGS : PLA PHA : LDA NpcFlags : ORA.b #$80 : STA NpcFlags : PLA
RTL RTL
ItemSet_Mushroom: ItemSet_Mushroom:
PHA PHA
LDA !NPC_FLAGS_2 : ORA.b #$10 : STA !NPC_FLAGS_2 LDA NpcFlags+1 : ORA.b #$10 : STA NpcFlags+1
LDY $0E80, X ; Retrieve stored item type LDY $0E80, X ; Retrieve stored item type
BNE + BNE +
; if for any reason the item value is 0 reload it, just in case ; if for any reason the item value is 0 reload it, just in case
@@ -166,7 +164,7 @@ ItemSet_Mushroom:
RTL RTL
ItemSet_Powder: ItemSet_Powder:
PHA : LDA !NPC_FLAGS_2 : ORA.b #$20 : STA !NPC_FLAGS_2 : PLA PHA : LDA NpcFlags+1 : ORA.b #$20 : STA NpcFlags+1 : PLA
RTL RTL
;================================================================================ ;================================================================================

View File

@@ -15,7 +15,7 @@ InitOpenMode:
LDA.b #$02 : STA ProgressIndicator ; Go to post-escape phase (pre aga1) LDA.b #$02 : STA ProgressIndicator ; Go to post-escape phase (pre aga1)
LDA ProgressFlags : ORA #$14 : STA ProgressFlags ; remove uncle LDA ProgressFlags : ORA #$14 : STA ProgressFlags ; remove uncle
LDA StartingEntrance : CMP #$05 : BEQ ++ : LDA.b #$01 : ++ : STA StartingEntrance ; set spawn points to house+sanc unless already house+sanc+mountain LDA StartingEntrance : CMP #$05 : BEQ ++ : LDA.b #$01 : ++ : STA StartingEntrance ; set spawn points to house+sanc unless already house+sanc+mountain
LDA $7EF29B : ORA.b #$20 : STA $7EF29B ; open castle gate LDA OverworldEventData+$1B : ORA.b #$20 : STA OverworldEventData+$1B ; open castle gate
JSL MaybeSetPostAgaWorldState JSL MaybeSetPostAgaWorldState
+ +
RTL RTL
@@ -23,7 +23,7 @@ RTL
MaybeSetPostAgaWorldState: MaybeSetPostAgaWorldState:
LDA.l InstantPostAgaWorldState : BEQ + ; Skip if not enabled LDA.l InstantPostAgaWorldState : BEQ + ; Skip if not enabled
LDA.b #$03 : STA ProgressIndicator ; Go to post-aga phase LDA.b #$03 : STA ProgressIndicator ; Go to post-aga phase
LDA $7EF282 : ORA.b #$20 : STA $7EF282 ; make lumberjack tree accessible LDA OverworldEventData+$02 : ORA.b #$20 : STA OverworldEventData+$02 ; make lumberjack tree accessible
+ +
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------

View File

@@ -2,7 +2,7 @@
; Pendant / Crystal HUD Fix ; Pendant / Crystal HUD Fix
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
;CheckPendantHUD: ;CheckPendantHUD:
; LDA !HUD_FLAG : CMP.b #$40 ; check for hud flag instead ; LDA HudFlag : CMP.b #$40 ; check for hud flag instead
;RTL ;RTL
;================================================================================ ;================================================================================
FlipLWDWFlag: FlipLWDWFlag:
@@ -52,17 +52,16 @@ GetCrystalNumber:
PLX PLX
RTL RTL
;================================================================================ ;================================================================================
!MAP_OVERLAY = "$7EF414" ; [2]
OverworldMap_CheckObject: OverworldMap_CheckObject:
PHX PHX
;CPX.b #$01 : BNE + : JMP ++ : + : JMP .fail ;CPX.b #$01 : BNE + : JMP ++ : + : JMP .fail
LDA CurrentWorld : AND.b #$40 : BNE + LDA CurrentWorld : AND.b #$40 : BNE +
;LW Map ;LW Map
LDA.l MapMode : BEQ +++ LDA.l MapMode : BEQ +++
LDA MapField : ORA !MAP_OVERLAY : AND.b #$01 : BNE +++ LDA MapField : ORA MapOverlay : AND.b #$01 : BNE +++
PHX PHX
LDA.l .lw_map_offsets, X : TAX ; put map offset into X LDA.l .lw_map_offsets, X : TAX ; put map offset into X
LDA MapField, X : ORA !MAP_OVERLAY, X LDA MapField, X : ORA MapOverlay, X
PLX PLX
AND.l .lw_map_masks, X : BNE +++ AND.l .lw_map_masks, X : BNE +++
JMP .fail JMP .fail
@@ -73,10 +72,10 @@ OverworldMap_CheckObject:
+ +
;DW Map ;DW Map
LDA.l MapMode : BEQ +++ LDA.l MapMode : BEQ +++
LDA MapField : ORA !MAP_OVERLAY : AND.b #$02 : BNE +++ LDA MapField : ORA MapOverlay : AND.b #$02 : BNE +++
PHX PHX
LDA.l .dw_map_offsets, X : TAX ; put map offset into X LDA.l .dw_map_offsets, X : TAX ; put map offset into X
LDA.l MapField, X : ORA !MAP_OVERLAY, X LDA.l MapField, X : ORA MapOverlay, X
PLX PLX
AND.l .dw_map_masks, X : BNE +++ AND.l .dw_map_masks, X : BNE +++
JMP .fail JMP .fail
@@ -192,7 +191,7 @@ RTL
ShowDungeonItems: ShowDungeonItems:
LDA $040C : AND.w #$00FF : CMP.w #$00FF : BNE + : RTL : + ; return normal result if outdoors or in a cave LDA $040C : AND.w #$00FF : CMP.w #$00FF : BNE + : RTL : + ; return normal result if outdoors or in a cave
;LDA $F0 : AND.w #$0020 ; check for select ;LDA $F0 : AND.w #$0020 ; check for select
LDA !HUD_FLAG : AND.w #$0020 ; check hud flag LDA HudFlag : AND.w #$0020 ; check hud flag
BEQ + : LDA.w #$0000 : RTL : + ; if set, send the zero onwards BEQ + : LDA.w #$0000 : RTL : + ; if set, send the zero onwards
LDA $040C : AND.w #$00FF : CMP.w #$00FF ; original logic LDA $040C : AND.w #$00FF : CMP.w #$00FF ; original logic
RTL RTL
@@ -205,7 +204,7 @@ UpdateKeys:
LSR : TAX ; get dungeon index and store to X LSR : TAX ; get dungeon index and store to X
LDA CurrentSmallKeys ; load current key count LDA CurrentSmallKeys ; load current key count
STA SewerKeys, X ; save to main counts STA DungeonKeys, X ; save to main counts
CPX.b #$00 : BNE + CPX.b #$00 : BNE +
STA HyruleCastleKeys ; copy HC to sewers STA HyruleCastleKeys ; copy HC to sewers
@@ -365,7 +364,7 @@ DrawHUDDungeonItems:
DEX : DEX : BPL -- DEX : DEX : BPL --
LDA.l !HUD_FLAG : AND.w #$0020 : BEQ + LDA.l HudFlag : AND.w #$0020 : BEQ +
JMP .maps_and_compasses JMP .maps_and_compasses
@@ -438,7 +437,7 @@ DrawHUDDungeonItems:
.next_boss_kill .next_boss_kill
LDX.w .boss_room_ids,Y LDX.w .boss_room_ids,Y
LDA.l $7EF000,X LDA.l RoomData.l,X
AND.w #$0800 AND.w #$0800
BEQ ..skip_boss_kill BEQ ..skip_boss_kill

View File

@@ -5,7 +5,7 @@ IsItemAvailable:
CPX.b #$04 : BNE .finite CPX.b #$04 : BNE .finite
LDA.b #$01 : RTL LDA.b #$01 : RTL
.finite .finite
LDA $7EF33F, X LDA WRAMEquipment-1, X
RTL RTL
LoadBombCount: LoadBombCount:
LDA !INFINITE_BOMBS : BNE .infinite LDA !INFINITE_BOMBS : BNE .infinite

View File

@@ -266,8 +266,6 @@ RTS
;!SHOP_INVENTORY, X ;!SHOP_INVENTORY, X
;[id][$lo][$hi][purchase_counter] ;[id][$lo][$hi][purchase_counter]
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
;PurchaseCounts = "$7EF51A"
;--------------------------------------------------------------------------------
Shopkeeper_UploadVRAMTilesLong: Shopkeeper_UploadVRAMTilesLong:
JSR.w Shopkeeper_UploadVRAMTiles JSR.w Shopkeeper_UploadVRAMTiles
RTL RTL
@@ -587,7 +585,6 @@ db #$01, #$02, #$04
;-------------------- ;--------------------
;!SHOP_ID = "$7F5050" ;!SHOP_ID = "$7F5050"
;!SHOP_SRAM_INDEX = "$7F5062" ;!SHOP_SRAM_INDEX = "$7F5062"
;PurchaseCounts = "$7EF51A"
;-------------------- ;--------------------
Setup_ShopItemCollisionHitbox: Setup_ShopItemCollisionHitbox:
;The complications with XBA are to handle the fact that nintendo likes to store ;The complications with XBA are to handle the fact that nintendo likes to store

View File

@@ -32,7 +32,7 @@ SpriteSwap_Palette_ArmorAndGloves:
LDA !SPRITE_SWAP : BNE .continue LDA !SPRITE_SWAP : BNE .continue
LDA.b #$10 : STA $BC ; Load Original Sprite Location LDA.b #$10 : STA $BC ; Load Original Sprite Location
REP #$21 REP #$21
LDA $7EF35B LDA ArmorEquipment
JSL $1BEDFF ; Read Original Palette Code JSL $1BEDFF ; Read Original Palette Code
RTL RTL
.part_two .part_two
@@ -51,7 +51,7 @@ SpriteSwap_Palette_ArmorAndGloves:
REP #$20 ; set 16-bit accumulator REP #$20 ; set 16-bit accumulator
; Check what Link's armor value is. ; Check what Link's armor value is.
LDA $7EF35B : AND.w #$00FF : TAX LDA ArmorEquipment : AND.w #$00FF : TAX
; (DEC06, X) ; (DEC06, X)

301
stats.asm
View File

@@ -2,178 +2,36 @@
; Stat Tracking ; Stat Tracking
;================================================================================ ;================================================================================
; $7EF420 - $7EF468 - Stat Tracking ; $7EF420 - $7EF468 - Stat Tracking
;
; See sram.asm for adresses and documentation of stat values
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
; $7EF420 - bonk counter
;--------------------------------------------------------------------------------
; $7EF421 yyyyyaaa
; y - y item counter
; a - a item counter
;--------------------------------------------------------------------------------
; $7EF422 ssshhccc
; s - sword counter
; h - shield counter
; c - crystal counter
;--------------------------------------------------------------------------------
; $7EF423 - item counter
;--------------------------------------------------------------------------------
; $7EF424 mmkkkkkk
; m - mail counter
; k - small keys
;--------------------------------------------------------------------------------
; $7EF425w[2] 1111 2222 3333 4444
; 1 - lvl 1 sword bosses
; 2 - lvl 2 sword bosses
; 3 - lvl 3 sword bosses
; 4 - lvl 4 sword bosses
;--------------------------------------------------------------------------------
; $7EF427 kkkkcccc
; k - big keys
; c - big chests
;--------------------------------------------------------------------------------
; $7EF428 mmmmcccc
; k - maps
; c - compases
;--------------------------------------------------------------------------------
; $7EF429 bbbb--pp
; b - heart containers
; p - pendant upgrades
;--------------------------------------------------------------------------------
; $7EF42A b-sccccc
; b - bomb acquired
; s - silver arrow bow acquired
; c - chests before gtower big key
;--------------------------------------------------------------------------------
; $7EF42Bw[2] - rupees spent
;--------------------------------------------------------------------------------
; $7EF42D - s&q counter
;--------------------------------------------------------------------------------
; $7EF42Ew[2] - loop frame counter (low)
;--------------------------------------------------------------------------------
; $7EF430w[2] - loop frame counter (high)
;--------------------------------------------------------------------------------
; $7EF432 - locations before boots
;--------------------------------------------------------------------------------
; $7EF433 - locations before mirror
;--------------------------------------------------------------------------------
; $7EF434 - hhhhdddd - item locations checked
; h - hyrule castle
; d - palace of darkness
;--------------------------------------------------------------------------------
; $7EF435 - dddhhhaa - item locations checked
; d - desert palace
; h - tower of hera
; a - agahnim's tower
;--------------------------------------------------------------------------------
; $7EF436 - gggggeee - item locations checked
; g - ganon's tower
; e - eastern palace
;--------------------------------------------------------------------------------
; $7EF437 - sssstttt - item locations checked
; s - skull woods
; t - thieves town
;--------------------------------------------------------------------------------
; $7EF438 - iiiimmmm - item locations checked
; i - ice palace
; m - misery mire
;--------------------------------------------------------------------------------
; $7EF439 - ttttssss - item locations checked
; t - turtle rock
; s - swamp palace
;--------------------------------------------------------------------------------
; $7EF43A - times mirrored outdoors
;--------------------------------------------------------------------------------
; $7EF43B - times mirrored in dungeons
;--------------------------------------------------------------------------------
; $7EF43Cw[2] - screen transition counter
;--------------------------------------------------------------------------------
; $7EF43Ew[2] - nmi frame counter (low)
;--------------------------------------------------------------------------------
; $7EF440w[2] - nmi frame counter (high)
;--------------------------------------------------------------------------------
; $7EF442 - chest counter
;--------------------------------------------------------------------------------
; $7EF443 - lock stats
;--------------------------------------------------------------------------------
; $7EF444w[2] - item menu frame counter (low)
;--------------------------------------------------------------------------------
; $7EF446w[2] - item menu frame counter (high)
;--------------------------------------------------------------------------------
; $7EF448 - ---hhhhh
; h - heart pieces
;--------------------------------------------------------------------------------
; $7EF449 - death counter
;--------------------------------------------------------------------------------
; $7EF44A - reserved
;--------------------------------------------------------------------------------
; $7EF44B - flute counter
;--------------------------------------------------------------------------------
; $7EF44Cl[3] - Unused
;--------------------------------------------------------------------------------
; $7EF44Fl[3] - Unused
;--------------------------------------------------------------------------------
; $7EF452 - sssscccc
; s - swordless bosses
; c - capacity upgrades
;--------------------------------------------------------------------------------
; $7EF453 - fairy revival counter
;--------------------------------------------------------------------------------
; $7EF454w[2] - challenge timer (low)
;--------------------------------------------------------------------------------
; $7EF456w[2] - challenge timer (high)
;--------------------------------------------------------------------------------
; $7EF458w[2] - sword timestamp (low)
;--------------------------------------------------------------------------------
; $7EF45Aw[2] - sword timestamp (high)
;--------------------------------------------------------------------------------
; $7EF45Cw[2] - boots timestamp (low)
;--------------------------------------------------------------------------------
; $7EF45Ew[2] - boots timestamp (high)
;--------------------------------------------------------------------------------
; $7EF460w[2] - flute timestamp (low)
;--------------------------------------------------------------------------------
; $7EF462w[2] - flute timestamp (high)
;--------------------------------------------------------------------------------
; $7EF464w[2] - mirror timestamp (low)
;--------------------------------------------------------------------------------
; $7EF466w[2] - mirror timestamp (high)
;--------------------------------------------------------------------------------
; $7EF468 - chest turn counter
;--------------------------------------------------------------------------------
;--------------------------------------------------------------------------------
!LOCK_STATS = "$7EF443"
;--------------------------------------------------------------------------------
!BONK_COUNTER = "$7EF420"
IncrementBonkCounter: IncrementBonkCounter:
LDA !LOCK_STATS : BNE + LDA StatsLocked : BNE +
LDA !BONK_COUNTER : INC LDA BonkCounter : INC
CMP.b #100 : BEQ + ; decimal 100 CMP.b #100 : BEQ + ; decimal 100
STA !BONK_COUNTER STA BonkCounter
+ +
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
!SAVE_COUNTER = "$7EF42D"
StatSaveCounter: StatSaveCounter:
PHA PHA
LDA !LOCK_STATS : BNE + LDA StatsLocked : BNE +
LDA $10 : CMP.b #$17 : BNE + ; not a proper s&q, link probably died LDA $10 : CMP.b #$17 : BNE + ; not a proper s&q, link probably died
LDA !SAVE_COUNTER : INC LDA SaveQuitCounter : INC
CMP.b #100 : BEQ + ; decimal 100 CMP.b #100 : BEQ + ; decimal 100
STA !SAVE_COUNTER STA SaveQuitCounter
+ +
PLA PLA
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
!SAVE_COUNTER = "$7EF42D"
DecrementSaveCounter: DecrementSaveCounter:
PHA PHA
LDA !LOCK_STATS : BNE + LDA StatsLocked : BNE +
LDA !SAVE_COUNTER : DEC : STA !SAVE_COUNTER LDA SaveQuitCounter : DEC : STA SaveQuitCounter
+ +
PLA PLA
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
!TRANSITION_COUNTER = "$7EF43C"
DungeonHoleWarpTransition: DungeonHoleWarpTransition:
LDA $01C31F, X LDA $01C31F, X
BRA StatTransitionCounter BRA StatTransitionCounter
@@ -200,19 +58,18 @@ DungeonExitTransition:
LDA.b #$0F : STA $10 ; stop running through the transition LDA.b #$0F : STA $10 ; stop running through the transition
StatTransitionCounter: StatTransitionCounter:
PHA : PHP PHA : PHP
LDA !LOCK_STATS : BNE + LDA StatsLocked : BNE +
REP #$20 ; set 16-bit accumulator REP #$20 ; set 16-bit accumulator
LDA !TRANSITION_COUNTER : INC LDA ScreenTransitions : INC
CMP.w #999 : BEQ + ; decimal 999 CMP.w #999 : BEQ + ; decimal 999
STA !TRANSITION_COUNTER STA ScreenTransitions
+ +
PLP : PLA PLP : PLA
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
!FLUTE_COUNTER = "$7EF44B"
IncrementFlute: IncrementFlute:
LDA !LOCK_STATS : BNE + LDA StatsLocked : BNE +
LDA !FLUTE_COUNTER : INC : STA !FLUTE_COUNTER LDA FluteCounter : INC : STA FluteCounter
+ +
JSL.l StatTransitionCounter ; also increment transition counter JSL.l StatTransitionCounter ; also increment transition counter
RTL RTL
@@ -220,7 +77,7 @@ RTL
IncrementSmallKeys: IncrementSmallKeys:
STA CurrentSmallKeys ; thing we wrote over, write small key count STA CurrentSmallKeys ; thing we wrote over, write small key count
PHX PHX
LDA !LOCK_STATS : BNE + LDA StatsLocked : BNE +
JSL AddInventory_incrementKeyLong JSL AddInventory_incrementKeyLong
+ +
JSL.l UpdateKeys JSL.l UpdateKeys
@@ -232,7 +89,7 @@ RTL
IncrementSmallKeysNoPrimary: IncrementSmallKeysNoPrimary:
STA CurrentSmallKeys ; thing we wrote over, write small key count STA CurrentSmallKeys ; thing we wrote over, write small key count
PHX PHX
LDA !LOCK_STATS : BNE + LDA StatsLocked : BNE +
JSL AddInventory_incrementKeyLong JSL AddInventory_incrementKeyLong
+ +
JSL.l UpdateKeys JSL.l UpdateKeys
@@ -270,7 +127,7 @@ CountChestKey: ; called by neighbor functions
INC ; combines HC and Sewer counts INC ; combines HC and Sewer counts
+ TAX + TAX
.count .count
LDA $7EF4E0, X : INC : STA $7EF4E0, X LDA DungeonChestKeys, X : INC : STA DungeonChestKeys, X
.end .end
PLX : PLA PLX : PLA
RTS RTS
@@ -292,66 +149,59 @@ RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
IncrementAgahnim2Sword: IncrementAgahnim2Sword:
PHA PHA
LDA !LOCK_STATS : BNE + LDA StatsLocked : BNE +
JSL AddInventory_incrementBossSwordLong JSL AddInventory_incrementBossSwordLong
+ +
PLA PLA
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
!DEATH_COUNTER = "$7EF449"
IncrementDeathCounter: IncrementDeathCounter:
PHA PHA
LDA !LOCK_STATS : BNE + LDA StatsLocked : BNE +
LDA CurrentHealth : BNE + ; link is still alive, skip LDA CurrentHealth : BNE + ; link is still alive, skip
LDA !DEATH_COUNTER : INC : STA !DEATH_COUNTER LDA DeathCounter : INC : STA DeathCounter
;JSL.l DecrementSaveCounter
+ +
PLA PLA
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
!FAIRY_COUNTER = "$7EF453"
IncrementFairyRevivalCounter: IncrementFairyRevivalCounter:
STA BottleContents, X ; thing we wrote over STA BottleContents, X ; thing we wrote over
PHA PHA
LDA !LOCK_STATS : BNE + LDA StatsLocked : BNE +
LDA !FAIRY_COUNTER : INC : STA !FAIRY_COUNTER LDA FaerieRevivalCounter : INC : STA FaerieRevivalCounter
+ +
PLA PLA
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
!CHESTTURN_COUNTER = "$7EF468"
IncrementChestTurnCounter: IncrementChestTurnCounter:
PHA PHA
LDA !LOCK_STATS : BNE + LDA StatsLocked : BNE +
LDA !CHESTTURN_COUNTER : INC : STA !CHESTTURN_COUNTER LDA ChestTurnCounter : INC : STA ChestTurnCounter
+ +
PLA PLA
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
!CHEST_COUNTER = "$7EF442"
IncrementChestCounter: IncrementChestCounter:
LDA.b #$01 : STA $02E9 ; thing we wrote over LDA.b #$01 : STA $02E9 ; thing we wrote over
PHA PHA
LDA !LOCK_STATS : BNE + LDA StatsLocked : BNE +
LDA !CHEST_COUNTER : INC : STA !CHEST_COUNTER LDA ChestsOpened : INC : STA ChestsOpened
+ +
PLA PLA
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
!CHEST_COUNTER = "$7EF442"
DecrementChestCounter: DecrementChestCounter:
PHA PHA
LDA !LOCK_STATS : BNE + LDA StatsLocked : BNE +
LDA !CHEST_COUNTER : DEC : STA !CHEST_COUNTER LDA ChestsOpened : DEC : STA ChestsOpened
+ +
PLA PLA
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
!ITEM_TOTAL = "$7EF423"
DecrementItemCounter: DecrementItemCounter:
PHA PHA
LDA !LOCK_STATS : BNE + LDA StatsLocked : BNE +
LDA !ITEM_TOTAL : DEC : STA !ITEM_TOTAL LDA TotalItemCounter : DEC : STA TotalItemCounter
+ +
PLA PLA
RTL RTL
@@ -359,38 +209,36 @@ RTL
IncrementBigChestCounter: IncrementBigChestCounter:
JSL.l Dungeon_SaveRoomQuadrantData ; thing we wrote over JSL.l Dungeon_SaveRoomQuadrantData ; thing we wrote over
PHA PHA
LDA !LOCK_STATS : BNE + LDA StatsLocked : BNE +
%BottomHalf($7EF427) %BottomHalf(BigKeysBigChests)
+ +
PLA PLA
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
!DAMAGE_COUNTER = $7EF46A
!MAGIC_COUNTER = $7EF46C
IncrementDamageTakenCounter_Eight: IncrementDamageTakenCounter_Eight:
STA.l CurrentHealth STA.l CurrentHealth
PHA : PHP PHA : PHP
LDA !LOCK_STATS : BNE + LDA StatsLocked : BNE +
REP #$21 REP #$21
LDA.l !DAMAGE_COUNTER LDA.l DamageCounter
ADC.w #$0008 ADC.w #$0008
BCC ++ BCC ++
LDA.w #$FFFF LDA.w #$FFFF
++ STA.l !DAMAGE_COUNTER ++ STA.l DamageCounter
+ PLP + PLP
PLA PLA
RTL RTL
IncrementDamageTakenCounter_Arb: IncrementDamageTakenCounter_Arb:
PHP PHP
LDA !LOCK_STATS : BNE + LDA StatsLocked : BNE +
REP #$21 REP #$21
LDA.b $00 LDA.b $00
AND.w #$00FF AND.w #$00FF
ADC.l !DAMAGE_COUNTER ADC.l DamageCounter
BCC ++ BCC ++
LDA.w #$FFFF LDA.w #$FFFF
++ STA.l !DAMAGE_COUNTER ++ STA.l DamageCounter
+ PLP + PLP
LDA.l CurrentHealth LDA.l CurrentHealth
@@ -401,64 +249,61 @@ IncrementMagicUseCounter:
IncrementMagicUseCounterByrna: IncrementMagicUseCounterByrna:
PHA : PHP PHA : PHP
LDA !LOCK_STATS : BNE + LDA StatsLocked : BNE +
REP #$21 REP #$21
LDA.b $00 LDA.b $00
AND.w #$00FF AND.w #$00FF
ADC.l !MAGIC_COUNTER ADC.l MagicCounter
BCC ++ BCC ++
LDA.w #$FFFF LDA.w #$FFFF
++ STA.l !MAGIC_COUNTER ++ STA.l MagicCounter
+ PLP : PLA + PLP : PLA
RTL RTL
IncrementMagicUseCounterOne: IncrementMagicUseCounterOne:
LDA !LOCK_STATS : BNE + LDA StatsLocked : BNE +
REP #$20 REP #$20
LDA.l !MAGIC_COUNTER LDA.l MagicCounter
INC INC
BEQ ++ BEQ ++
STA.l !MAGIC_COUNTER STA.l MagicCounter
++ SEP #$20 ++ SEP #$20
+ LDA.l CurrentMagic + LDA.l CurrentMagic
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
!OW_MIRROR_COUNTER = "$7EF43A"
IncrementOWMirror: IncrementOWMirror:
PHA PHA
LDA !LOCK_STATS : BNE + LDA StatsLocked : BNE +
LDA CurrentWorld : BEQ + ; only do this for DW->LW LDA CurrentWorld : BEQ + ; only do this for DW->LW
LDA !OW_MIRROR_COUNTER : INC : STA !OW_MIRROR_COUNTER LDA OverworldMirrors : INC : STA OverworldMirrors
+ +
PLA PLA
JMP StatTransitionCounter JMP StatTransitionCounter
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
!UW_MIRROR_COUNTER = "$7EF43B"
IncrementUWMirror: IncrementUWMirror:
PHA PHA
LDA.b #$00 : STA $7F5035 ; bandaid patch bug with mirroring away from text LDA.b #$00 : STA $7F5035 ; bandaid patch bug with mirroring away from text
LDA !LOCK_STATS : BNE + LDA StatsLocked : BNE +
LDA $040C : CMP #$FF : BEQ + ; skip if we're in a cave or house LDA $040C : CMP #$FF : BEQ + ; skip if we're in a cave or house
LDA !UW_MIRROR_COUNTER : INC : STA !UW_MIRROR_COUNTER LDA UnderworldMirrors : INC : STA UnderworldMirrors
JSL.l StatTransitionCounter JSL.l StatTransitionCounter
+ +
PLA PLA
JSL.l Dungeon_SaveRoomData ; thing we wrote over JSL.l Dungeon_SaveRoomData ; thing we wrote over
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
!SPENT_RUPEES = "$7EF42B"
IncrementSpentRupees: IncrementSpentRupees:
DEC A : BPL .subtractRupees DEC A : BPL .subtractRupees
LDA.w #$0000 : STA $7EF LDA.w #$0000 : STA TargetRupees
RTL RTL
.subtractRupees .subtractRupees
PHA : PHP PHA : PHP
LDA !LOCK_STATS : AND.w #$00FF : BNE + LDA StatsLocked : AND.w #$00FF : BNE +
LDA !SPENT_RUPEES : INC LDA RupeesSpent : INC
CMP.w #9999 : BEQ + ; decimal 9999 CMP.w #9999 : BEQ + ; decimal 9999
STA !SPENT_RUPEES STA RupeesSpent
+ +
PLP : PLA PLP : PLA
RTL RTL
@@ -473,53 +318,39 @@ IndoorSubtileTransitionCounter:
STZ $0642 STZ $0642
JMP StatTransitionCounter JMP StatTransitionCounter
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
!CHEST_COUNTER = "$7EF442"
!MAIL_COUNTER = "$7EF424" ; mmkkkkkk
!BOSS_KILLS = "$7F5037" !BOSS_KILLS = "$7F5037"
!SWORD_KILLS_1 = "$7EF425"
!SWORD_KILLS_2 = "$7EF426"
!GTOWER_PRE_BIG_KEY = "$7EF42A" ; ---ccccc
!NONCHEST_COUNTER = "$7F503E" !NONCHEST_COUNTER = "$7F503E"
!SAVE_COUNTER = "$7EF42D"
!TRANSITION_COUNTER = "$7EF43C"
!NMI_COUNTER = "$7EF43E"
!LOOP_COUNTER = "$7EF42E"
!LAG_TIME = "$7F5038" !LAG_TIME = "$7F5038"
!RUPEES_COLLECTED = "$7F503C" !RUPEES_COLLECTED = "$7F503C"
!ITEM_TOTAL = "$7EF423"
StatsFinalPrep: StatsFinalPrep:
PHA : PHX : PHP PHA : PHX : PHP
SEP #$30 ; set 8-bit accumulator and index registers SEP #$30 ; set 8-bit accumulator and index registers
LDA !LOCK_STATS : BNE .ramPostOnly LDA StatsLocked : BNE .ramPostOnly
INC : STA !LOCK_STATS INC : STA StatsLocked
JSL.l AddInventory_incrementBossSwordLong JSL.l AddInventory_incrementBossSwordLong
LDA !MAIL_COUNTER : !ADD #$40 : STA !MAIL_COUNTER ; add green mail to mail count LDA HighestMail : INC : STA HighestMail ; add green mail to mail count
;LDA !GTOWER_PRE_BIG_KEY : DEC : AND #$1F : TAX LDA ScreenTransitions : DEC : STA ScreenTransitions ; remove extra transition from exiting gtower via duck
;LDA !GTOWER_PRE_BIG_KEY : AND #$E0 : STA !GTOWER_PRE_BIG_KEY
;TXA : ORA !GTOWER_PRE_BIG_KEY : STA !GTOWER_PRE_BIG_KEY
LDA !TRANSITION_COUNTER : DEC : STA !TRANSITION_COUNTER ; remove extra transition from exiting gtower via duck
.ramPostOnly .ramPostOnly
LDA !SWORD_KILLS_1 : LSR #4 : !ADD !SWORD_KILLS_1 : STA !BOSS_KILLS LDA SwordBossKills : LSR #4 : !ADD SwordBossKills : STA !BOSS_KILLS
LDA !SWORD_KILLS_2 : LSR #4 : !ADD !SWORD_KILLS_2 : !ADD !BOSS_KILLS : AND #$0F : STA !BOSS_KILLS LDA SwordBossKills+1 : LSR #4 : !ADD SwordBossKills+1 : !ADD !BOSS_KILLS : AND #$0F : STA !BOSS_KILLS
LDA !NMI_COUNTER : !SUB !LOOP_COUNTER : STA !LAG_TIME LDA NMIFrames : !SUB LoopFrames : STA !LAG_TIME
LDA !NMI_COUNTER+1 : SBC !LOOP_COUNTER+1 : STA !LAG_TIME+1 LDA NMIFrames+1 : SBC LoopFrames+1 : STA !LAG_TIME+1
LDA !NMI_COUNTER+2 : SBC !LOOP_COUNTER+2 : STA !LAG_TIME+2 LDA NMIFrames+2 : SBC LoopFrames+2 : STA !LAG_TIME+2
LDA !NMI_COUNTER+3 : SBC !LOOP_COUNTER+3 : STA !LAG_TIME+3 LDA NMIFrames+3 : SBC LoopFrames+3 : STA !LAG_TIME+3
LDA !SPENT_RUPEES : !ADD CurrentRupees : STA !RUPEES_COLLECTED LDA RupeesSpent : !ADD CurrentRupees : STA !RUPEES_COLLECTED
LDA !SPENT_RUPEES+1 : ADC $7EF363 : STA !RUPEES_COLLECTED+1 LDA RupeesSpent+1 : ADC CurrentRupees+1 : STA !RUPEES_COLLECTED+1
LDA !ITEM_TOTAL : !SUB !CHEST_COUNTER : STA !NONCHEST_COUNTER LDA TotalItemCounter : !SUB ChestsOpened : STA !NONCHEST_COUNTER
.done .done
PLP : PLX : PLA PLP : PLX : PLA

View File

@@ -1,21 +1,21 @@
;(address, type, shiftRight, bits, digits, xPos, lineNumber) ;(address, type, shiftRight, bits, digits, xPos, lineNumber)
%AddStat($7EF458, 1, 0, 32, 4, !FIRST_SWORD_X, !FIRST_SWORD_Y) %AddStat(SwordTime, 1, 0, 32, 4, !FIRST_SWORD_X, !FIRST_SWORD_Y)
%AddStat($7EF45C, 1, 0, 32, 4, !PEGASUS_BOOTS_X, !PEGASUS_BOOTS_Y) %AddStat(BootsTime, 1, 0, 32, 4, !PEGASUS_BOOTS_X, !PEGASUS_BOOTS_Y)
%AddStat($7EF460, 1, 0, 32, 4, !FLUTE_X, !FLUTE_Y) %AddStat(FluteTime, 1, 0, 32, 4, !FLUTE_X, !FLUTE_Y)
%AddStat($7EF464, 1, 0, 32, 4, !MIRROR_X, !MIRROR_Y) %AddStat(MirrorTime, 1, 0, 32, 4, !MIRROR_X, !MIRROR_Y)
%AddStat($7EF452, 0, 4, 04, 2, !SWORDLESS_X, !SWORDLESS_Y) %AddStat(SwordlessBossKills, 0, 0, 08, 2, !SWORDLESS_X, !SWORDLESS_Y)
%AddStat($7EF425, 0, 4, 04, 2, !FIGHTERS_SWORD_X, !FIGHTERS_SWORD_Y) %AddStat(SwordBossKills, 0, 4, 04, 2, !FIGHTERS_SWORD_X, !FIGHTERS_SWORD_Y)
%AddStat($7EF425, 0, 0, 04, 2, !MASTER_SWORD_X, !MASTER_SWORD_Y) %AddStat(SwordBossKills, 0, 0, 04, 2, !MASTER_SWORD_X, !MASTER_SWORD_Y)
%AddStat($7EF426, 0, 4, 04, 2, !TEMPERED_SWORD_X, !TEMPERED_SWORD_Y) %AddStat(SwordBossKills+1, 0, 4, 04, 2, !TEMPERED_SWORD_X, !TEMPERED_SWORD_Y)
%AddStat($7EF426, 0, 0, 04, 2, !GOLD_SWORD_X, !GOLD_SWORD_Y) %AddStat(SwordBossKills+1, 0, 0, 04, 2, !GOLD_SWORD_X, !GOLD_SWORD_Y)
%AddStat($7EF46A, 0, 0, 16, 5, !DAMAGETAKEN_X, !DAMAGETAKEN_Y) %AddStat(DamageCounter, 0, 0, 16, 5, !DAMAGETAKEN_X, !DAMAGETAKEN_Y)
%AddStat($7EF46C, 0, 0, 16, 5, !MAGICUSED_X, !MAGICUSED_Y) %AddStat(MagicCounter, 0, 0, 16, 5, !MAGICUSED_X, !MAGICUSED_Y)
%AddStat($7EF420, 0, 0, 08, 3, !BONKS_X, !BONKS_Y) %AddStat(BonkCounter, 0, 0, 08, 3, !BONKS_X, !BONKS_Y)
%AddStat($7EF42D, 0, 0, 08, 2, !SAVE_AND_QUITS_X, !SAVE_AND_QUITS_Y) %AddStat(SaveQuitCounter, 0, 0, 08, 2, !SAVE_AND_QUITS_X, !SAVE_AND_QUITS_Y)
%AddStat($7EF449, 0, 0, 08, 2, !DEATHS_X, !DEATHS_Y) %AddStat(DeathCounter, 0, 0, 08, 2, !DEATHS_X, !DEATHS_Y)
%AddStat($7EF453, 0, 0, 08, 3, !FAERIE_REVIVALS_X, !FAERIE_REVIVALS_Y) %AddStat(FaerieRevivalCounter, 0, 0, 08, 3, !FAERIE_REVIVALS_X, !FAERIE_REVIVALS_Y)
%AddStat($7EF444, 1, 8, 32, 4, !TOTAL_MENU_TIME_X, !TOTAL_MENU_TIME_Y) %AddStat(MenuFrames, 1, 8, 32, 4, !TOTAL_MENU_TIME_X, !TOTAL_MENU_TIME_Y)
%AddStat($7F5038, 1, 0, 32, 4, !TOTAL_LAG_TIME_X, !TOTAL_LAG_TIME_Y) %AddStat($7F5038, 1, 0, 32, 4, !TOTAL_LAG_TIME_X, !TOTAL_LAG_TIME_Y)
%AddStat($7EF423, 0, 0, 08, 3, !COLLECTION_RATE_X, !COLLECTION_RATE_Y) %AddStat(TotalItemCounter, 0, 0, 16, 3, !COLLECTION_RATE_X, !COLLECTION_RATE_Y)
%AddStat($7EF43E, 1, 0, 32, 4, !TOTAL_TIME_X, !TOTAL_TIME_Y) %AddStat(NMIFrames, 1, 0, 32, 4, !TOTAL_TIME_X, !TOTAL_TIME_Y)

View File

@@ -208,13 +208,13 @@ CheckMedallionSword:
.outdoors .outdoors
LDA $8A : CMP.b #$70 : BNE + LDA $8A : CMP.b #$70 : BNE +
LDA.l MireRequiredMedallion : TAX : LDA.l .medallion_type, X : CMP $0303 : BNE .done LDA.l MireRequiredMedallion : TAX : LDA.l .medallion_type, X : CMP $0303 : BNE .done
LDA $7EF2F0 : AND.b #$20 : BNE .done LDA OverworldEventData+$70 : AND.b #$20 : BNE .done
LDA.b #$08 : PHA : PLB ; set data bank to $08 LDA.b #$08 : PHA : PLB ; set data bank to $08
LDY.b #$02 : JSL.l Ancilla_CheckIfEntranceTriggered : BCS .permit ; misery mire LDY.b #$02 : JSL.l Ancilla_CheckIfEntranceTriggered : BCS .permit ; misery mire
BRA .done BRA .done
+ : CMP.b #$47 : BNE + + : CMP.b #$47 : BNE +
LDA.l TRockRequiredMedallion : TAX : LDA.l .medallion_type, X : CMP $0303 : BNE .done LDA.l TRockRequiredMedallion : TAX : LDA.l .medallion_type, X : CMP $0303 : BNE .done
LDA $7EF2C7 : AND.b #$20 : BNE .done LDA OverworldEventData+$47 : AND.b #$20 : BNE .done
LDA.b #$08 : PHA : PLB ; set data bank to $08 LDA.b #$08 : PHA : PLB ; set data bank to $08
LDY.b #$03 : JSL.l Ancilla_CheckIfEntranceTriggered : BCS .permit ; turtle rock LDY.b #$03 : JSL.l Ancilla_CheckIfEntranceTriggered : BCS .permit ; turtle rock
+ +

View File

@@ -2,8 +2,6 @@
; Challenge Timer ; Challenge Timer
;================================================================================ ;================================================================================
!Temp = "$7F5020" !Temp = "$7F5020"
!BaseTimer = "$7EF43E"
!ChallengeTimer = "$7EF454"
!TemporaryOHKO = "$7F50CC" !TemporaryOHKO = "$7F50CC"
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
!CLOCK_HOURS = "$7F5080" ; $7F5080 - $7F5083 - Clock Hours !CLOCK_HOURS = "$7F5080" ; $7F5080 - $7F5083 - Clock Hours
@@ -58,17 +56,17 @@ CalculateTimer:
STA.l !CLOCK_SECONDS+2 STA.l !CLOCK_SECONDS+2
LDA.l TimerStyle : AND.w #$00FF : CMP.w #$0002 : BNE + ; Stopwatch Mode LDA.l TimerStyle : AND.w #$00FF : CMP.w #$0002 : BNE + ; Stopwatch Mode
%Sub32(!BaseTimer,!ChallengeTimer,!CLOCK_TEMPORARY) %Sub32(NMIFrames,ChallengeTimer,!CLOCK_TEMPORARY)
BRA ++ BRA ++
+ CMP.w #$0001 : BNE ++ ; Countdown Mode + CMP.w #$0001 : BNE ++ ; Countdown Mode
%Sub32(!ChallengeTimer,!BaseTimer,!CLOCK_TEMPORARY) %Sub32(ChallengeTimer,NMIFrames,!CLOCK_TEMPORARY)
++ ++
%Blt32(!CLOCK_TEMPORARY,.halfCycle) : !BLT + %Blt32(!CLOCK_TEMPORARY,.halfCycle) : !BLT +
LDA.l TimeoutBehavior : AND.w #$00FF : BNE ++ ; DNF LDA.l TimeoutBehavior : AND.w #$00FF : BNE ++ ; DNF
LDA.w #$0002 : STA.l !Status ; Set DNF Mode LDA.w #$0002 : STA.l !Status ; Set DNF Mode
LDA.l !BaseTimer : STA.l !ChallengeTimer LDA.l NMIFrames : STA.l ChallengeTimer
LDA.l !BaseTimer+2 : STA.l !ChallengeTimer+2 LDA.l NMIFrames+2 : STA.l ChallengeTimer+2
RTS RTS
++ CMP.w #$0001 : BNE ++ ; Negative Time ++ CMP.w #$0001 : BNE ++ ; Negative Time
LDA.l !CLOCK_TEMPORARY : EOR.w #$FFFF : !ADD.w #$0001 : STA.l !CLOCK_TEMPORARY LDA.l !CLOCK_TEMPORARY : EOR.w #$FFFF : !ADD.w #$0001 : STA.l !CLOCK_TEMPORARY
@@ -77,8 +75,8 @@ CalculateTimer:
BRA .prepDigits BRA .prepDigits
++ CMP.w #$0002 : BNE ++ ; OHKO ++ CMP.w #$0002 : BNE ++ ; OHKO
LDA.w #$0002 : STA.l !Status ; Set DNF Mode LDA.w #$0002 : STA.l !Status ; Set DNF Mode
LDA.l !BaseTimer : STA.l !ChallengeTimer LDA.l NMIFrames : STA.l ChallengeTimer
LDA.l !BaseTimer+2 : STA.l !ChallengeTimer+2 LDA.l NMIFrames+2 : STA.l ChallengeTimer+2
RTS RTS
++ ; End Game ++ ; End Game
SEP #$30 SEP #$30