Change addresses to labels and remove SRAM trace calls
This commit is contained in:
@@ -63,7 +63,7 @@ RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
;ReadInventoryPond:
|
||||
; CPX.b #$1B : BNE + : LDA.b #$01 : RTL : +
|
||||
; LDA SRAMEquipment, X
|
||||
; LDA WRAMEquipment, X
|
||||
;RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
@@ -83,10 +83,10 @@ RTS
|
||||
FixAga2Bunny:
|
||||
LDA.l FixFakeWorld : BEQ + ; Only use this fix is fakeworld fix is in use
|
||||
LDA.l InvertedMode : BEQ +++
|
||||
LDA.b #$00 : STA !DARK_WORLD ; Switch to light world
|
||||
LDA.b #$00 : STA CurrentWorld ; Switch to light world
|
||||
BRA ++
|
||||
+++
|
||||
LDA.b #$40 : STA !DARK_WORLD ; Switch to dark world
|
||||
LDA.b #$40 : STA CurrentWorld ; Switch to dark world
|
||||
++
|
||||
JSL DecideIfBunny : BNE +
|
||||
JSR MakeBunny
|
||||
|
||||
@@ -49,92 +49,66 @@ CompassCountDungeonHandlers: ; pointers to functions that handle dungeon-specifi
|
||||
|
||||
CompassCount_Escape:
|
||||
%DrawConstantNumber(0,8)
|
||||
LDA $7EF434 : LSR #4
|
||||
LDA SewersLocations
|
||||
JMP DrawDungeonCompassCounts_return_spot
|
||||
|
||||
CompassCount_Eastern:
|
||||
%DrawConstantNumber(0,6)
|
||||
LDA $7EF436 : AND.b #$07
|
||||
LDA EPLocations
|
||||
JMP DrawDungeonCompassCounts_return_spot
|
||||
|
||||
CompassCount_Desert:
|
||||
%DrawConstantNumber(0,6)
|
||||
LDA $7EF435 : LSR #5
|
||||
LDA DPLocations
|
||||
JMP DrawDungeonCompassCounts_return_spot
|
||||
|
||||
CompassCount_Agah:
|
||||
%DrawConstantNumber(0,2)
|
||||
LDA $7EF435 : AND.b #$03
|
||||
LDA CTLocations
|
||||
JMP DrawDungeonCompassCounts_return_spot
|
||||
|
||||
CompassCount_Swamp:
|
||||
%DrawConstantNumber(1,0)
|
||||
LDA $7EF439 : AND.b #$0F
|
||||
LDA SPLocations
|
||||
JMP DrawDungeonCompassCounts_return_spot
|
||||
|
||||
CompassCount_PoD:
|
||||
%DrawConstantNumber(1,4)
|
||||
LDA $7EF434 : AND.b #$0F
|
||||
LDA PDLocations
|
||||
JMP DrawDungeonCompassCounts_return_spot
|
||||
|
||||
CompassCount_Mire:
|
||||
%DrawConstantNumber(0,8)
|
||||
LDA $7EF438 : AND.b #$0F
|
||||
LDA MMLocations
|
||||
JMP DrawDungeonCompassCounts_return_spot
|
||||
|
||||
CompassCount_Skull:
|
||||
%DrawConstantNumber(0,8)
|
||||
LDA $7EF437 : LSR #4
|
||||
LDA SWLocations
|
||||
JMP DrawDungeonCompassCounts_return_spot
|
||||
|
||||
CompassCount_Ice:
|
||||
%DrawConstantNumber(0,8)
|
||||
LDA $7EF438 : LSR #4
|
||||
LDA IPLocations
|
||||
JMP DrawDungeonCompassCounts_return_spot
|
||||
|
||||
CompassCount_Hera:
|
||||
%DrawConstantNumber(0,6)
|
||||
LDA $7EF435 : AND.b #$1C : LSR #2
|
||||
LDA THLocations
|
||||
JMP DrawDungeonCompassCounts_return_spot
|
||||
|
||||
CompassCount_Thieves:
|
||||
%DrawConstantNumber(0,8)
|
||||
LDA $7EF437 : AND.b #$0F
|
||||
LDA TTLocations
|
||||
JMP DrawDungeonCompassCounts_return_spot
|
||||
|
||||
CompassCount_Trock:
|
||||
%DrawConstantNumber(1,2)
|
||||
LDA $7EF439 : LSR #4
|
||||
LDA TRLocations
|
||||
JMP DrawDungeonCompassCounts_return_spot
|
||||
|
||||
CompassCount_Gt:
|
||||
%DrawConstantNumber(2,7)
|
||||
LDA $7EF436 : LSR #3
|
||||
LDA GTLocations
|
||||
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
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
@@ -78,7 +78,6 @@
|
||||
; JML $09A6B6 ; <- 4A6B6 tagalong.asm:1194 (SEP #$30 : RTS)
|
||||
;}
|
||||
;================================================================
|
||||
!MAP_OVERLAY = "$7EF414" ; [2]
|
||||
Sprite_ShowSolicitedMessageIfPlayerFacing_Alt:
|
||||
{
|
||||
STA $1CF0
|
||||
@@ -108,11 +107,11 @@ Sprite_ShowSolicitedMessageIfPlayerFacing_Alt:
|
||||
BRA .SayNothing
|
||||
|
||||
.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
|
||||
|
||||
.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
|
||||
|
||||
.SayNothing
|
||||
|
||||
@@ -24,7 +24,7 @@ CuccoStorm:
|
||||
SEP #$30 ; set 8-bit accumulator index registers
|
||||
LDA.l !CUCCO_STORM : BEQ + ; only if storm is on
|
||||
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
|
||||
|
||||
@@ -394,7 +394,7 @@ AgahnimAsksAboutPed:
|
||||
LDA.l InvincibleGanon
|
||||
CMP.b #$06 : BNE .vanilla
|
||||
|
||||
LDA.l $7EF300 ; check ped flag
|
||||
LDA.l OverworldEventData+$80 ; check ped flag
|
||||
AND.b #$40
|
||||
BNE .vanilla
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ RTL
|
||||
LDY.b #$01
|
||||
|
||||
JSL Sprite_ShowSolicitedMessageIfPlayerFacing_PreserveMessage : BCC .dont_show
|
||||
LDA !GOAL_COUNTER
|
||||
LDA GoalCounter
|
||||
CMP GoalItemRequirement : !BLT +
|
||||
JSL.l ActivateGoal
|
||||
+
|
||||
|
||||
@@ -22,7 +22,7 @@ LockAgahnimDoors:
|
||||
.crystalOrUnlock
|
||||
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
|
||||
|
||||
.locked
|
||||
@@ -44,7 +44,7 @@ RTL
|
||||
FlagAgahnimDoor:
|
||||
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
|
||||
LDA.b #$28 : STA.b $72
|
||||
@@ -209,7 +209,7 @@ TurtleRockEntranceFix:
|
||||
LDA TurtleRockAutoOpenFix : BEQ .done
|
||||
LDA $8A : CMP.b #$47 : BNE .done
|
||||
;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
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
26
events.asm
26
events.asm
@@ -2,7 +2,7 @@
|
||||
; OnLoadOW
|
||||
;--------------------------------------------------------------------------------
|
||||
;OnLoadMap:
|
||||
; LDA $7EF2DB ; thing we wrote over
|
||||
; LDA OverworldEventData+$5B ; thing we wrote over
|
||||
;RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
OnPrepFileSelect:
|
||||
@@ -84,8 +84,8 @@ OnAga2Defeated:
|
||||
;--------------------------------------------------------------------------------
|
||||
OnFileCreation:
|
||||
TAX ; what we wrote over
|
||||
LDA StartingEquipment+$4C : STA $700340+$4C ; copy starting equipment swaps to file select screen
|
||||
LDA StartingEquipment+$4E : STA $700340+$4E
|
||||
LDA StartingEquipment+$4C : STA SRAMEquipment+$4C ; copy starting equipment swaps to file select screen
|
||||
LDA StartingEquipment+$4E : STA SRAMEquipment+$4E
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!RNG_ITEM_LOCK_IN = "$7F5090"
|
||||
@@ -126,32 +126,32 @@ OnNewFile:
|
||||
PHX : PHP
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA.l LinkStartingRupees : STA CurrentRupees : STA TargetRupees
|
||||
LDA.l StartingTime : STA $7EF454
|
||||
LDA.l StartingTime+2 : STA $7EF454+2
|
||||
LDA.l StartingTime : STA ChallengeTimer
|
||||
LDA.l StartingTime+2 : STA ChallengeTimer+2
|
||||
|
||||
LDX.w #$004E : - ; copy over starting equipment
|
||||
LDA StartingEquipment, X : STA SRAMEquipment, X
|
||||
LDA StartingEquipment, X : STA WRAMEquipment, X
|
||||
DEX : DEX
|
||||
BPL -
|
||||
|
||||
LDX #$000E : -
|
||||
LDA SewerKeys, X : STA $7EF4E0, X
|
||||
LDX #$0008 : - ; copy starting keys to chest key counters in sram
|
||||
LDA DungeonKeys, X : STA DungeonChestKeys, X
|
||||
DEX : DEX
|
||||
BPL -
|
||||
|
||||
SEP #$20 ; set 8-bit accumulator
|
||||
;LDA #$FF : STA !RNG_ITEM_LOCK_IN ; reset rng item lock-in
|
||||
LDA.l PreopenCurtains : BEQ +
|
||||
LDA.b #$80 : STA $7EF061 ; open aga tower curtain
|
||||
LDA.b #$80 : STA $7EF093 ; open skull woods curtain
|
||||
LDA.b #$80 : STA RoomData[$30].high ; open aga tower curtain
|
||||
LDA.b #$80 : STA RoomData[$49].high ; open skull woods curtain
|
||||
+
|
||||
|
||||
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.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
|
||||
@@ -235,8 +235,8 @@ PreItemGet:
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
PostItemGet:
|
||||
JML.l MaybeWriteSRAMTrace
|
||||
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
PostItemAnimation:
|
||||
LDA.b #$00 : STA !ITEM_BUSY ; mark item as finished
|
||||
|
||||
@@ -8,7 +8,7 @@ FlipperKill:
|
||||
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
|
||||
;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 $7F5001 ; mark fake flipper softlock as impossible
|
||||
.done
|
||||
@@ -18,9 +18,9 @@ RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
IgnoreFairyCheck:
|
||||
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
|
||||
RTL
|
||||
.normal
|
||||
|
||||
@@ -5,21 +5,21 @@ FloodGateAndMasterSwordFollowerReset:
|
||||
JSL.l MasterSwordFollowerClear
|
||||
FloodGateReset:
|
||||
LDA.l PersistentFloodgate : BNE +
|
||||
LDA $7EF2BB : AND.b #$DF : STA $7EF2BB ; reset water outside floodgate
|
||||
LDA $7EF2FB : AND.b #$DF : STA $7EF2FB ; reset water outside swamp palace
|
||||
LDA $7EF216 : AND.b #$7F : STA $7EF216 ; clear water inside floodgate
|
||||
LDA $7EF051 : AND.b #$FE : STA $7EF051 ; clear water front room (room 40)
|
||||
LDA OverworldEventData+$3B : AND.b #$DF : STA OverworldEventData+$3B ; reset water outside floodgate
|
||||
LDA OverworldEventData+$7B : AND.b #$DF : STA OverworldEventData+$7B ; reset water outside swamp palace
|
||||
LDA RoomData[$010B].low : AND.b #$7F : STA RoomData[$010B].low ; clear water inside floodgate
|
||||
LDA RoomData[$28].high : AND.b #$FE : STA RoomData[$28].high ; clear water front room (room 40)
|
||||
+
|
||||
FloodGateResetInner:
|
||||
LDA.l Bugfix_SwampWaterLevel : BEQ +++
|
||||
LDA $7EF06F : 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 RoomData[$37].low : AND.b #$04 : BEQ + ; Check if key in room 55 has been collected.
|
||||
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.
|
||||
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
|
||||
;================================================================================
|
||||
|
||||
@@ -33,7 +33,7 @@ SpawnHauntedGroveItem:
|
||||
TYX
|
||||
|
||||
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
|
||||
+
|
||||
RTL
|
||||
|
||||
@@ -16,20 +16,20 @@ GetAgahnimDeath:
|
||||
CMP.b #13 : BNE + ; Agahnim 2 room
|
||||
LDA.l Bugfix_SetWorldOnAgahnimDeath : 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 ++
|
||||
+++
|
||||
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
|
||||
RTL
|
||||
+ ; Elsewhere
|
||||
LDA.l Bugfix_SetWorldOnAgahnimDeath : 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 ++
|
||||
+++
|
||||
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
|
||||
; warps us to the pyramid)
|
||||
++
|
||||
|
||||
16
goalitem.asm
16
goalitem.asm
@@ -1,7 +1,6 @@
|
||||
;--------------------------------------------------------------------------------
|
||||
; $7F5010 - Scratch Space (Callee Preserved)
|
||||
;--------------------------------------------------------------------------------
|
||||
!GOAL_COUNTER = "$7EF418"
|
||||
!GOAL_DRAW_ADDRESS = "$7EC72A"
|
||||
;--------------------------------------------------------------------------------
|
||||
; DrawGoalIndicator moved to newhud.asm
|
||||
@@ -68,12 +67,12 @@ CheckGanonVulnerability:
|
||||
.all_dungeons_no_agahnim
|
||||
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 $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
|
||||
|
||||
; 03 = crystals and aga 2
|
||||
.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
|
||||
.crystals
|
||||
@@ -82,7 +81,7 @@ CheckGanonVulnerability:
|
||||
|
||||
; 05 = require goal item
|
||||
.goal_item
|
||||
LDA.l !GOAL_COUNTER : CMP GoalItemRequirement
|
||||
LDA.l GoalCounter : CMP GoalItemRequirement
|
||||
RTS
|
||||
|
||||
; 06 = light speed
|
||||
@@ -96,7 +95,6 @@ CheckGanonVulnerability:
|
||||
|
||||
; 08 = Crystal bosses but no crystals
|
||||
.bosses_only
|
||||
;LDA.l $7EF2DDB : AND.b #$20 : BEQ .fail ; check aga2
|
||||
JMP CheckForCrystalBossesDefeated
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
@@ -140,7 +138,7 @@ CheckAgaForPed:
|
||||
CMP.b #$06 : BNE .vanilla
|
||||
|
||||
.light_speed
|
||||
LDA.l $7EF300 ; check ped flag
|
||||
LDA.l OverworldEventData+$80 ; check ped flag
|
||||
AND.b #$40
|
||||
BEQ .force_blue_ball
|
||||
|
||||
@@ -164,8 +162,8 @@ KillGanon:
|
||||
CMP.b #$06 : BNE .exit
|
||||
|
||||
.light_speed
|
||||
LDA.l $7EF2DB : ORA.b #$20 : STA.l $7EF2DB ; pyramid hole
|
||||
LDA.b #$08 : STA.l RoomData[$00].Low ; kill ganon
|
||||
LDA.l OverworldEventData+$5B : ORA.b #$20 : STA.l OverworldEventData+$5B ; pyramid hole
|
||||
LDA.b #$08 : STA.l RoomData[$00].high ; kill ganon
|
||||
LDA.b #$02 : STA.l MoonPearlEquipment ; pearl but invisible in menu
|
||||
|
||||
.exit
|
||||
@@ -197,7 +195,7 @@ CheckForCrystalBossesDefeated:
|
||||
|
||||
LDA.l DrawHUDDungeonItems_boss_room_ids-4,X
|
||||
TAX
|
||||
LDA.l $7EF000,X
|
||||
LDA.l RoomData.l,X
|
||||
|
||||
AND.w #$0800
|
||||
BEQ ++
|
||||
|
||||
@@ -130,7 +130,7 @@ HeartUpgradeSpawnDecision: ; this should return #$00 to make the hp spawn
|
||||
RTL
|
||||
|
||||
.normal_behavior
|
||||
LDA $7EF280, X
|
||||
LDA OverworldEventData, X
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
SaveHeartCollectedStatus:
|
||||
@@ -140,7 +140,7 @@ SaveHeartCollectedStatus:
|
||||
RTL
|
||||
|
||||
.normal_behavior
|
||||
LDA $7EF280, X : ORA.b #$40 : STA $7EF280, X
|
||||
LDA OverworldEventData, X : ORA.b #$40 : STA OverworldEventData, X
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!REDRAW = "$7F5000"
|
||||
@@ -195,7 +195,7 @@ MaybeMarkDigSpotCollected:
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA $8A
|
||||
CMP.w #$2A : BNE +
|
||||
LDA !HAS_GROVE_ITEM : ORA.w #$0001 : STA !HAS_GROVE_ITEM
|
||||
LDA HasGroveItem : ORA.w #$0001 : STA HasGroveItem
|
||||
+
|
||||
PLP : PLA
|
||||
RTL
|
||||
|
||||
@@ -71,7 +71,7 @@ Overworld_CreatePyramidHoleModified:
|
||||
|
||||
SEP #$30
|
||||
|
||||
LDA $7EF2DB : ORA.b #$20 : STA $7EF2DB
|
||||
LDA OverworldEventData+$5B : ORA.b #$20 : STA OverworldEventData+$5B
|
||||
|
||||
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:
|
||||
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
|
||||
LDA $7EF280, X ; what we wrote over
|
||||
LDA OverworldEventData, X ; what we wrote over
|
||||
RTL
|
||||
|
||||
|
||||
@@ -187,7 +187,7 @@ RTL
|
||||
|
||||
TurtleRockPegSolved:
|
||||
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
|
||||
+
|
||||
LDA.w #$0020 ; We always treat puzzle as pre solved (overlay flag set) for inverted mode.
|
||||
|
||||
@@ -21,7 +21,5 @@ MaidenCrystalScript:
|
||||
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
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
@@ -6,7 +6,7 @@ TryOpenMire:
|
||||
LDA $8A : CMP.b #$70 : BNE .untriggered
|
||||
|
||||
; 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.
|
||||
LDY.b #$02 : JSL.l Ancilla_CheckIfEntranceTriggered : BCC .untriggered
|
||||
@@ -25,7 +25,7 @@ TryOpenTRock:
|
||||
LDA $8A : CMP.b #$47 : BNE .untriggered
|
||||
|
||||
; 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.
|
||||
LDY.b #$03 : JSL.l Ancilla_CheckIfEntranceTriggered : BCC .untriggered
|
||||
|
||||
16
msu.asm
16
msu.asm
@@ -250,7 +250,7 @@ CheckMusicLoadRequest:
|
||||
BRA .check_fallback-3
|
||||
.lightworld
|
||||
PHA
|
||||
LDA $7EF300 : AND.b #$40 : BEQ +
|
||||
LDA OverworldEventData+$80 : AND.b #$40 : BEQ +
|
||||
PLA
|
||||
LDA.b #60 : BRA .check_fallback-3
|
||||
+
|
||||
@@ -344,7 +344,7 @@ CheckMusicLoadRequest:
|
||||
+
|
||||
|
||||
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 +
|
||||
@@ -517,16 +517,16 @@ PHA : XBA : PHA
|
||||
; dont save if we already saved recently
|
||||
REP #$20
|
||||
LDA !MSU_RESUME_TRACK : AND #$00FF : BEQ ++
|
||||
LDA !NMI_COUNTER : !SUB !MSU_RESUME_TIME : PHA
|
||||
LDA !NMI_COUNTER+2 : SBC !MSU_RESUME_TIME+2 : BNE +++
|
||||
LDA NMIFrames : !SUB !MSU_RESUME_TIME : PHA
|
||||
LDA NMIFrames+2 : SBC !MSU_RESUME_TIME+2 : BNE +++
|
||||
PLA : CMP MSUResumeTimer : !BLT .too_early
|
||||
BRA ++
|
||||
+++
|
||||
PLA
|
||||
++
|
||||
; saving
|
||||
LDA !NMI_COUNTER : STA !MSU_RESUME_TIME
|
||||
LDA !NMI_COUNTER+2 : STA !MSU_RESUME_TIME+2
|
||||
LDA NMIFrames : STA !MSU_RESUME_TIME
|
||||
LDA NMIFrames+2 : STA !MSU_RESUME_TIME+2
|
||||
SEP #$20
|
||||
|
||||
LDA !MSU_LOADED_TRACK : STA !MSU_RESUME_TRACK
|
||||
@@ -683,8 +683,8 @@ MSUMain:
|
||||
PLX
|
||||
TXA : CMP !MSU_RESUME_TRACK : BNE + ; dont resume if too late
|
||||
REP #$20
|
||||
LDA !NMI_COUNTER : !SUB !MSU_RESUME_TIME : PHA
|
||||
LDA !NMI_COUNTER+2 : SBC !MSU_RESUME_TIME+2 : BNE ++
|
||||
LDA NMIFrames : !SUB !MSU_RESUME_TIME : PHA
|
||||
LDA NMIFrames+2 : SBC !MSU_RESUME_TIME+2 : BNE ++
|
||||
PLA : CMP MSUResumeTimer : !BGE +++
|
||||
SEP #$20
|
||||
LDA !FLAG_RESUME_FADEIN : BRA .done_resume
|
||||
|
||||
@@ -33,7 +33,7 @@ PreOverworld_LoadProperties_ChooseMusic:
|
||||
LDX.b #$05 ; Lost woods theme
|
||||
|
||||
; 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
|
||||
+
|
||||
|
||||
@@ -129,7 +129,7 @@ Overworld_FinishMirrorWarp:
|
||||
|
||||
; Check if we're entering the lost woods
|
||||
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
|
||||
BRA .endOfLightWorldChecks
|
||||
+
|
||||
@@ -196,7 +196,7 @@ BirdTravel_LoadTargetAreaMusic:
|
||||
;LDX.b #$05 ; Lost woods theme
|
||||
|
||||
; 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
|
||||
;+
|
||||
|
||||
@@ -222,7 +222,7 @@ BirdTravel_LoadTargetAreaMusic:
|
||||
LDA $8A
|
||||
; Misery Mire rain SFX
|
||||
CMP.b #$70 : BNE ++
|
||||
LDA $7EF2F0 : AND.b #$20 : BNE ++
|
||||
LDA OverworldEventData+$70 : AND.b #$20 : BNE ++
|
||||
LDA.b #$01 : CMP $0131 : BEQ +
|
||||
STA $012D
|
||||
+ : BRA .checkInverted
|
||||
|
||||
@@ -58,14 +58,13 @@ SEP #$30
|
||||
|
||||
;================================================================================
|
||||
; Draw Goal Item Indicator
|
||||
!GOAL_COUNTER = "$7EF418"
|
||||
!GOAL_DRAW_ADDRESS = "$7EC72A"
|
||||
;================================================================================
|
||||
|
||||
SEP #$20
|
||||
LDA.l GoalItemRequirement : BNE + : JMP .done : + ; Star Meter
|
||||
|
||||
LDA.l !GOAL_COUNTER
|
||||
LDA.l GoalCounter
|
||||
JSR HudHexToDec3Digit
|
||||
REP #$20
|
||||
|
||||
|
||||
56
npcitems.asm
56
npcitems.asm
@@ -21,44 +21,42 @@
|
||||
;UNUSED = "#$40"
|
||||
;MAGIC_BAT = "#$80"
|
||||
;--------------------------------------------------------------------------------
|
||||
!NPC_FLAGS = "$7EF410"
|
||||
!NPC_FLAGS_2 = "$7EF411"
|
||||
|
||||
ItemCheck_FairySword:
|
||||
LDA !NPC_FLAGS_2 : AND.b #$08
|
||||
LDA NpcFlags+1 : AND.b #$08
|
||||
RTL
|
||||
|
||||
ItemCheck_SmithSword:
|
||||
LDA !NPC_FLAGS_2 : AND.b #$04
|
||||
LDA NpcFlags+1 : AND.b #$04
|
||||
RTL
|
||||
|
||||
ItemCheck_MagicBat:
|
||||
LDA !NPC_FLAGS_2 : AND.b #$80
|
||||
LDA NpcFlags+1 : AND.b #$80
|
||||
RTL
|
||||
|
||||
ItemCheck_OldMan:
|
||||
LDA !NPC_FLAGS : AND.b #$01 : CMP #$01
|
||||
LDA NpcFlags : AND.b #$01 : CMP #$01
|
||||
RTL
|
||||
|
||||
ItemCheck_ZoraKing:
|
||||
LDA !NPC_FLAGS : AND.b #$02
|
||||
LDA NpcFlags : AND.b #$02
|
||||
RTL
|
||||
|
||||
ItemCheck_SickKid:
|
||||
LDA !NPC_FLAGS : AND.b #$04
|
||||
LDA NpcFlags : AND.b #$04
|
||||
RTL
|
||||
|
||||
ItemCheck_TreeKid:
|
||||
LDA !NPC_FLAGS : AND.b #$08 ; FluteBoy_Chillin - 73: LDA FluteEquipment
|
||||
LDA NpcFlags : AND.b #$08 ; FluteBoy_Chillin - 73: LDA FluteEquipment
|
||||
RTL
|
||||
|
||||
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
|
||||
|
||||
ItemCheck_TreeKid3:
|
||||
JSL $0DD030 ; FluteAardvark_Draw - thing we wrote over
|
||||
LDA !NPC_FLAGS : AND.b #$08
|
||||
LDA NpcFlags : AND.b #$08
|
||||
BEQ .normal
|
||||
BRA .done
|
||||
LDA.b #$05
|
||||
@@ -68,16 +66,16 @@ ItemCheck_TreeKid3:
|
||||
RTL
|
||||
|
||||
ItemCheck_Sahasrala:
|
||||
LDA !NPC_FLAGS : AND.b #$10
|
||||
LDA NpcFlags : AND.b #$10
|
||||
RTL
|
||||
|
||||
ItemCheck_Library:
|
||||
LDA !NPC_FLAGS : AND.b #$80
|
||||
LDA NpcFlags : AND.b #$80
|
||||
RTL
|
||||
|
||||
ItemCheck_Mushroom:
|
||||
LDA !NPC_FLAGS_2 : ROL #4 ; does the same thing as below
|
||||
; LDA !NPC_FLAGS_2 : AND.b #$10 : BEQ .clear
|
||||
LDA NpcFlags+1 : ROL #4 ; does the same thing as below
|
||||
; LDA NpcFlags+1 : AND.b #$10 : BEQ .clear
|
||||
; SEC
|
||||
;RTL
|
||||
; .clear
|
||||
@@ -85,7 +83,7 @@ ItemCheck_Mushroom:
|
||||
RTL
|
||||
|
||||
ItemCheck_Powder:
|
||||
LDA !NPC_FLAGS_2 : AND.b #$20
|
||||
LDA NpcFlags+1 : AND.b #$20
|
||||
RTL
|
||||
|
||||
ItemCheck_Catfish:
|
||||
@@ -101,60 +99,60 @@ ItemCheck_Catfish:
|
||||
;.oursNewers
|
||||
;LDA #$00 : RTL ; give item
|
||||
;.junk
|
||||
LDA !NPC_FLAGS : AND.b #$20
|
||||
LDA NpcFlags : AND.b #$20
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
ItemSet_OldMan:
|
||||
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
|
||||
|
||||
ItemSet_ZoraKing:
|
||||
;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
|
||||
|
||||
ItemSet_SickKid:
|
||||
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
|
||||
|
||||
ItemSet_TreeKid:
|
||||
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
|
||||
|
||||
ItemSet_Sahasrala:
|
||||
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
|
||||
|
||||
ItemSet_Catfish:
|
||||
;JSL $00D52D ; GetAnimatedSpriteTile.variable ; thing we wrote over
|
||||
;JSL.l LoadCatfishItemGFX
|
||||
PHA : LDA !NPC_FLAGS : ORA.b #$20 : STA !NPC_FLAGS : PLA
|
||||
PHA : LDA NpcFlags : ORA.b #$20 : STA NpcFlags : PLA
|
||||
RTL
|
||||
|
||||
ItemSet_Library:
|
||||
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
|
||||
|
||||
ItemSet_Mushroom:
|
||||
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
|
||||
BNE +
|
||||
; if for any reason the item value is 0 reload it, just in case
|
||||
@@ -166,7 +164,7 @@ ItemSet_Mushroom:
|
||||
RTL
|
||||
|
||||
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
|
||||
;================================================================================
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ InitOpenMode:
|
||||
LDA.b #$02 : STA ProgressIndicator ; Go to post-escape phase (pre aga1)
|
||||
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 $7EF29B : ORA.b #$20 : STA $7EF29B ; open castle gate
|
||||
LDA OverworldEventData+$1B : ORA.b #$20 : STA OverworldEventData+$1B ; open castle gate
|
||||
JSL MaybeSetPostAgaWorldState
|
||||
+
|
||||
RTL
|
||||
@@ -23,7 +23,7 @@ RTL
|
||||
MaybeSetPostAgaWorldState:
|
||||
LDA.l InstantPostAgaWorldState : BEQ + ; Skip if not enabled
|
||||
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
|
||||
;--------------------------------------------------------------------------------
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
; Pendant / Crystal HUD Fix
|
||||
;--------------------------------------------------------------------------------
|
||||
;CheckPendantHUD:
|
||||
; LDA !HUD_FLAG : CMP.b #$40 ; check for hud flag instead
|
||||
; LDA HudFlag : CMP.b #$40 ; check for hud flag instead
|
||||
;RTL
|
||||
;================================================================================
|
||||
FlipLWDWFlag:
|
||||
@@ -52,17 +52,16 @@ GetCrystalNumber:
|
||||
PLX
|
||||
RTL
|
||||
;================================================================================
|
||||
!MAP_OVERLAY = "$7EF414" ; [2]
|
||||
OverworldMap_CheckObject:
|
||||
PHX
|
||||
;CPX.b #$01 : BNE + : JMP ++ : + : JMP .fail
|
||||
LDA CurrentWorld : AND.b #$40 : BNE +
|
||||
;LW Map
|
||||
LDA.l MapMode : BEQ +++
|
||||
LDA MapField : ORA !MAP_OVERLAY : AND.b #$01 : BNE +++
|
||||
LDA MapField : ORA MapOverlay : AND.b #$01 : BNE +++
|
||||
PHX
|
||||
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
|
||||
AND.l .lw_map_masks, X : BNE +++
|
||||
JMP .fail
|
||||
@@ -73,10 +72,10 @@ OverworldMap_CheckObject:
|
||||
+
|
||||
;DW Map
|
||||
LDA.l MapMode : BEQ +++
|
||||
LDA MapField : ORA !MAP_OVERLAY : AND.b #$02 : BNE +++
|
||||
LDA MapField : ORA MapOverlay : AND.b #$02 : BNE +++
|
||||
PHX
|
||||
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
|
||||
AND.l .dw_map_masks, X : BNE +++
|
||||
JMP .fail
|
||||
@@ -192,7 +191,7 @@ RTL
|
||||
ShowDungeonItems:
|
||||
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 !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
|
||||
LDA $040C : AND.w #$00FF : CMP.w #$00FF ; original logic
|
||||
RTL
|
||||
@@ -205,7 +204,7 @@ UpdateKeys:
|
||||
LSR : TAX ; get dungeon index and store to X
|
||||
|
||||
LDA CurrentSmallKeys ; load current key count
|
||||
STA SewerKeys, X ; save to main counts
|
||||
STA DungeonKeys, X ; save to main counts
|
||||
|
||||
CPX.b #$00 : BNE +
|
||||
STA HyruleCastleKeys ; copy HC to sewers
|
||||
@@ -365,7 +364,7 @@ DrawHUDDungeonItems:
|
||||
DEX : DEX : BPL --
|
||||
|
||||
|
||||
LDA.l !HUD_FLAG : AND.w #$0020 : BEQ +
|
||||
LDA.l HudFlag : AND.w #$0020 : BEQ +
|
||||
|
||||
JMP .maps_and_compasses
|
||||
|
||||
@@ -438,7 +437,7 @@ DrawHUDDungeonItems:
|
||||
|
||||
.next_boss_kill
|
||||
LDX.w .boss_room_ids,Y
|
||||
LDA.l $7EF000,X
|
||||
LDA.l RoomData.l,X
|
||||
AND.w #$0800
|
||||
BEQ ..skip_boss_kill
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ IsItemAvailable:
|
||||
CPX.b #$04 : BNE .finite
|
||||
LDA.b #$01 : RTL
|
||||
.finite
|
||||
LDA $7EF33F, X
|
||||
LDA WRAMEquipment-1, X
|
||||
RTL
|
||||
LoadBombCount:
|
||||
LDA !INFINITE_BOMBS : BNE .infinite
|
||||
|
||||
@@ -266,8 +266,6 @@ RTS
|
||||
;!SHOP_INVENTORY, X
|
||||
;[id][$lo][$hi][purchase_counter]
|
||||
;--------------------------------------------------------------------------------
|
||||
;PurchaseCounts = "$7EF51A"
|
||||
;--------------------------------------------------------------------------------
|
||||
Shopkeeper_UploadVRAMTilesLong:
|
||||
JSR.w Shopkeeper_UploadVRAMTiles
|
||||
RTL
|
||||
@@ -587,7 +585,6 @@ db #$01, #$02, #$04
|
||||
;--------------------
|
||||
;!SHOP_ID = "$7F5050"
|
||||
;!SHOP_SRAM_INDEX = "$7F5062"
|
||||
;PurchaseCounts = "$7EF51A"
|
||||
;--------------------
|
||||
Setup_ShopItemCollisionHitbox:
|
||||
;The complications with XBA are to handle the fact that nintendo likes to store
|
||||
|
||||
@@ -32,7 +32,7 @@ SpriteSwap_Palette_ArmorAndGloves:
|
||||
LDA !SPRITE_SWAP : BNE .continue
|
||||
LDA.b #$10 : STA $BC ; Load Original Sprite Location
|
||||
REP #$21
|
||||
LDA $7EF35B
|
||||
LDA ArmorEquipment
|
||||
JSL $1BEDFF ; Read Original Palette Code
|
||||
RTL
|
||||
.part_two
|
||||
@@ -51,7 +51,7 @@ SpriteSwap_Palette_ArmorAndGloves:
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
|
||||
; Check what Link's armor value is.
|
||||
LDA $7EF35B : AND.w #$00FF : TAX
|
||||
LDA ArmorEquipment : AND.w #$00FF : TAX
|
||||
|
||||
; (DEC06, X)
|
||||
|
||||
|
||||
301
stats.asm
301
stats.asm
@@ -2,178 +2,36 @@
|
||||
; 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:
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA !BONK_COUNTER : INC
|
||||
LDA StatsLocked : BNE +
|
||||
LDA BonkCounter : INC
|
||||
CMP.b #100 : BEQ + ; decimal 100
|
||||
STA !BONK_COUNTER
|
||||
STA BonkCounter
|
||||
+
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!SAVE_COUNTER = "$7EF42D"
|
||||
StatSaveCounter:
|
||||
PHA
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA StatsLocked : BNE +
|
||||
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
|
||||
STA !SAVE_COUNTER
|
||||
STA SaveQuitCounter
|
||||
+
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!SAVE_COUNTER = "$7EF42D"
|
||||
DecrementSaveCounter:
|
||||
PHA
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA !SAVE_COUNTER : DEC : STA !SAVE_COUNTER
|
||||
LDA StatsLocked : BNE +
|
||||
LDA SaveQuitCounter : DEC : STA SaveQuitCounter
|
||||
+
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!TRANSITION_COUNTER = "$7EF43C"
|
||||
DungeonHoleWarpTransition:
|
||||
LDA $01C31F, X
|
||||
BRA StatTransitionCounter
|
||||
@@ -200,19 +58,18 @@ DungeonExitTransition:
|
||||
LDA.b #$0F : STA $10 ; stop running through the transition
|
||||
StatTransitionCounter:
|
||||
PHA : PHP
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA StatsLocked : BNE +
|
||||
REP #$20 ; set 16-bit accumulator
|
||||
LDA !TRANSITION_COUNTER : INC
|
||||
LDA ScreenTransitions : INC
|
||||
CMP.w #999 : BEQ + ; decimal 999
|
||||
STA !TRANSITION_COUNTER
|
||||
STA ScreenTransitions
|
||||
+
|
||||
PLP : PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!FLUTE_COUNTER = "$7EF44B"
|
||||
IncrementFlute:
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA !FLUTE_COUNTER : INC : STA !FLUTE_COUNTER
|
||||
LDA StatsLocked : BNE +
|
||||
LDA FluteCounter : INC : STA FluteCounter
|
||||
+
|
||||
JSL.l StatTransitionCounter ; also increment transition counter
|
||||
RTL
|
||||
@@ -220,7 +77,7 @@ RTL
|
||||
IncrementSmallKeys:
|
||||
STA CurrentSmallKeys ; thing we wrote over, write small key count
|
||||
PHX
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA StatsLocked : BNE +
|
||||
JSL AddInventory_incrementKeyLong
|
||||
+
|
||||
JSL.l UpdateKeys
|
||||
@@ -232,7 +89,7 @@ RTL
|
||||
IncrementSmallKeysNoPrimary:
|
||||
STA CurrentSmallKeys ; thing we wrote over, write small key count
|
||||
PHX
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA StatsLocked : BNE +
|
||||
JSL AddInventory_incrementKeyLong
|
||||
+
|
||||
JSL.l UpdateKeys
|
||||
@@ -270,7 +127,7 @@ CountChestKey: ; called by neighbor functions
|
||||
INC ; combines HC and Sewer counts
|
||||
+ TAX
|
||||
.count
|
||||
LDA $7EF4E0, X : INC : STA $7EF4E0, X
|
||||
LDA DungeonChestKeys, X : INC : STA DungeonChestKeys, X
|
||||
.end
|
||||
PLX : PLA
|
||||
RTS
|
||||
@@ -292,66 +149,59 @@ RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
IncrementAgahnim2Sword:
|
||||
PHA
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA StatsLocked : BNE +
|
||||
JSL AddInventory_incrementBossSwordLong
|
||||
+
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!DEATH_COUNTER = "$7EF449"
|
||||
IncrementDeathCounter:
|
||||
PHA
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA StatsLocked : BNE +
|
||||
LDA CurrentHealth : BNE + ; link is still alive, skip
|
||||
LDA !DEATH_COUNTER : INC : STA !DEATH_COUNTER
|
||||
;JSL.l DecrementSaveCounter
|
||||
LDA DeathCounter : INC : STA DeathCounter
|
||||
+
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!FAIRY_COUNTER = "$7EF453"
|
||||
IncrementFairyRevivalCounter:
|
||||
STA BottleContents, X ; thing we wrote over
|
||||
PHA
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA !FAIRY_COUNTER : INC : STA !FAIRY_COUNTER
|
||||
LDA StatsLocked : BNE +
|
||||
LDA FaerieRevivalCounter : INC : STA FaerieRevivalCounter
|
||||
+
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!CHESTTURN_COUNTER = "$7EF468"
|
||||
IncrementChestTurnCounter:
|
||||
PHA
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA !CHESTTURN_COUNTER : INC : STA !CHESTTURN_COUNTER
|
||||
LDA StatsLocked : BNE +
|
||||
LDA ChestTurnCounter : INC : STA ChestTurnCounter
|
||||
+
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!CHEST_COUNTER = "$7EF442"
|
||||
IncrementChestCounter:
|
||||
LDA.b #$01 : STA $02E9 ; thing we wrote over
|
||||
PHA
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA !CHEST_COUNTER : INC : STA !CHEST_COUNTER
|
||||
LDA StatsLocked : BNE +
|
||||
LDA ChestsOpened : INC : STA ChestsOpened
|
||||
+
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!CHEST_COUNTER = "$7EF442"
|
||||
DecrementChestCounter:
|
||||
PHA
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA !CHEST_COUNTER : DEC : STA !CHEST_COUNTER
|
||||
LDA StatsLocked : BNE +
|
||||
LDA ChestsOpened : DEC : STA ChestsOpened
|
||||
+
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!ITEM_TOTAL = "$7EF423"
|
||||
DecrementItemCounter:
|
||||
PHA
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA !ITEM_TOTAL : DEC : STA !ITEM_TOTAL
|
||||
LDA StatsLocked : BNE +
|
||||
LDA TotalItemCounter : DEC : STA TotalItemCounter
|
||||
+
|
||||
PLA
|
||||
RTL
|
||||
@@ -359,38 +209,36 @@ RTL
|
||||
IncrementBigChestCounter:
|
||||
JSL.l Dungeon_SaveRoomQuadrantData ; thing we wrote over
|
||||
PHA
|
||||
LDA !LOCK_STATS : BNE +
|
||||
%BottomHalf($7EF427)
|
||||
LDA StatsLocked : BNE +
|
||||
%BottomHalf(BigKeysBigChests)
|
||||
+
|
||||
PLA
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!DAMAGE_COUNTER = $7EF46A
|
||||
!MAGIC_COUNTER = $7EF46C
|
||||
IncrementDamageTakenCounter_Eight:
|
||||
STA.l CurrentHealth
|
||||
PHA : PHP
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA StatsLocked : BNE +
|
||||
REP #$21
|
||||
LDA.l !DAMAGE_COUNTER
|
||||
LDA.l DamageCounter
|
||||
ADC.w #$0008
|
||||
BCC ++
|
||||
LDA.w #$FFFF
|
||||
++ STA.l !DAMAGE_COUNTER
|
||||
++ STA.l DamageCounter
|
||||
+ PLP
|
||||
PLA
|
||||
RTL
|
||||
|
||||
IncrementDamageTakenCounter_Arb:
|
||||
PHP
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA StatsLocked : BNE +
|
||||
REP #$21
|
||||
LDA.b $00
|
||||
AND.w #$00FF
|
||||
ADC.l !DAMAGE_COUNTER
|
||||
ADC.l DamageCounter
|
||||
BCC ++
|
||||
LDA.w #$FFFF
|
||||
++ STA.l !DAMAGE_COUNTER
|
||||
++ STA.l DamageCounter
|
||||
+ PLP
|
||||
|
||||
LDA.l CurrentHealth
|
||||
@@ -401,64 +249,61 @@ IncrementMagicUseCounter:
|
||||
|
||||
IncrementMagicUseCounterByrna:
|
||||
PHA : PHP
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA StatsLocked : BNE +
|
||||
REP #$21
|
||||
LDA.b $00
|
||||
AND.w #$00FF
|
||||
ADC.l !MAGIC_COUNTER
|
||||
ADC.l MagicCounter
|
||||
BCC ++
|
||||
LDA.w #$FFFF
|
||||
++ STA.l !MAGIC_COUNTER
|
||||
++ STA.l MagicCounter
|
||||
+ PLP : PLA
|
||||
|
||||
RTL
|
||||
|
||||
IncrementMagicUseCounterOne:
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA StatsLocked : BNE +
|
||||
REP #$20
|
||||
LDA.l !MAGIC_COUNTER
|
||||
LDA.l MagicCounter
|
||||
INC
|
||||
BEQ ++
|
||||
STA.l !MAGIC_COUNTER
|
||||
STA.l MagicCounter
|
||||
++ SEP #$20
|
||||
+ LDA.l CurrentMagic
|
||||
RTL
|
||||
|
||||
;--------------------------------------------------------------------------------
|
||||
!OW_MIRROR_COUNTER = "$7EF43A"
|
||||
IncrementOWMirror:
|
||||
PHA
|
||||
LDA !LOCK_STATS : BNE +
|
||||
LDA StatsLocked : BNE +
|
||||
LDA CurrentWorld : BEQ + ; only do this for DW->LW
|
||||
LDA !OW_MIRROR_COUNTER : INC : STA !OW_MIRROR_COUNTER
|
||||
LDA OverworldMirrors : INC : STA OverworldMirrors
|
||||
+
|
||||
PLA
|
||||
JMP StatTransitionCounter
|
||||
;--------------------------------------------------------------------------------
|
||||
!UW_MIRROR_COUNTER = "$7EF43B"
|
||||
IncrementUWMirror:
|
||||
PHA
|
||||
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 !UW_MIRROR_COUNTER : INC : STA !UW_MIRROR_COUNTER
|
||||
LDA UnderworldMirrors : INC : STA UnderworldMirrors
|
||||
JSL.l StatTransitionCounter
|
||||
+
|
||||
PLA
|
||||
JSL.l Dungeon_SaveRoomData ; thing we wrote over
|
||||
RTL
|
||||
;--------------------------------------------------------------------------------
|
||||
!SPENT_RUPEES = "$7EF42B"
|
||||
IncrementSpentRupees:
|
||||
DEC A : BPL .subtractRupees
|
||||
LDA.w #$0000 : STA $7EF
|
||||
LDA.w #$0000 : STA TargetRupees
|
||||
RTL
|
||||
.subtractRupees
|
||||
PHA : PHP
|
||||
LDA !LOCK_STATS : AND.w #$00FF : BNE +
|
||||
LDA !SPENT_RUPEES : INC
|
||||
LDA StatsLocked : AND.w #$00FF : BNE +
|
||||
LDA RupeesSpent : INC
|
||||
CMP.w #9999 : BEQ + ; decimal 9999
|
||||
STA !SPENT_RUPEES
|
||||
STA RupeesSpent
|
||||
+
|
||||
PLP : PLA
|
||||
RTL
|
||||
@@ -473,53 +318,39 @@ IndoorSubtileTransitionCounter:
|
||||
STZ $0642
|
||||
JMP StatTransitionCounter
|
||||
;--------------------------------------------------------------------------------
|
||||
!CHEST_COUNTER = "$7EF442"
|
||||
!MAIL_COUNTER = "$7EF424" ; mmkkkkkk
|
||||
!BOSS_KILLS = "$7F5037"
|
||||
!SWORD_KILLS_1 = "$7EF425"
|
||||
!SWORD_KILLS_2 = "$7EF426"
|
||||
!GTOWER_PRE_BIG_KEY = "$7EF42A" ; ---ccccc
|
||||
!NONCHEST_COUNTER = "$7F503E"
|
||||
!SAVE_COUNTER = "$7EF42D"
|
||||
!TRANSITION_COUNTER = "$7EF43C"
|
||||
|
||||
!NMI_COUNTER = "$7EF43E"
|
||||
!LOOP_COUNTER = "$7EF42E"
|
||||
!LAG_TIME = "$7F5038"
|
||||
|
||||
!RUPEES_COLLECTED = "$7F503C"
|
||||
!ITEM_TOTAL = "$7EF423"
|
||||
|
||||
StatsFinalPrep:
|
||||
PHA : PHX : PHP
|
||||
SEP #$30 ; set 8-bit accumulator and index registers
|
||||
|
||||
LDA !LOCK_STATS : BNE .ramPostOnly
|
||||
INC : STA !LOCK_STATS
|
||||
LDA StatsLocked : BNE .ramPostOnly
|
||||
INC : STA StatsLocked
|
||||
|
||||
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 !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
|
||||
LDA ScreenTransitions : DEC : STA ScreenTransitions ; remove extra transition from exiting gtower via duck
|
||||
|
||||
.ramPostOnly
|
||||
LDA !SWORD_KILLS_1 : LSR #4 : !ADD !SWORD_KILLS_1 : STA !BOSS_KILLS
|
||||
LDA !SWORD_KILLS_2 : LSR #4 : !ADD !SWORD_KILLS_2 : !ADD !BOSS_KILLS : AND #$0F : STA !BOSS_KILLS
|
||||
LDA SwordBossKills : LSR #4 : !ADD SwordBossKills : 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 !NMI_COUNTER+1 : SBC !LOOP_COUNTER+1 : STA !LAG_TIME+1
|
||||
LDA !NMI_COUNTER+2 : SBC !LOOP_COUNTER+2 : STA !LAG_TIME+2
|
||||
LDA !NMI_COUNTER+3 : SBC !LOOP_COUNTER+3 : STA !LAG_TIME+3
|
||||
LDA NMIFrames : !SUB LoopFrames : STA !LAG_TIME
|
||||
LDA NMIFrames+1 : SBC LoopFrames+1 : STA !LAG_TIME+1
|
||||
LDA NMIFrames+2 : SBC LoopFrames+2 : STA !LAG_TIME+2
|
||||
LDA NMIFrames+3 : SBC LoopFrames+3 : STA !LAG_TIME+3
|
||||
|
||||
LDA !SPENT_RUPEES : !ADD CurrentRupees : STA !RUPEES_COLLECTED
|
||||
LDA !SPENT_RUPEES+1 : ADC $7EF363 : STA !RUPEES_COLLECTED+1
|
||||
LDA RupeesSpent : !ADD CurrentRupees : STA !RUPEES_COLLECTED
|
||||
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
|
||||
PLP : PLX : PLA
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
;(address, type, shiftRight, bits, digits, xPos, lineNumber)
|
||||
|
||||
%AddStat($7EF458, 1, 0, 32, 4, !FIRST_SWORD_X, !FIRST_SWORD_Y)
|
||||
%AddStat($7EF45C, 1, 0, 32, 4, !PEGASUS_BOOTS_X, !PEGASUS_BOOTS_Y)
|
||||
%AddStat($7EF460, 1, 0, 32, 4, !FLUTE_X, !FLUTE_Y)
|
||||
%AddStat($7EF464, 1, 0, 32, 4, !MIRROR_X, !MIRROR_Y)
|
||||
%AddStat($7EF452, 0, 4, 04, 2, !SWORDLESS_X, !SWORDLESS_Y)
|
||||
%AddStat($7EF425, 0, 4, 04, 2, !FIGHTERS_SWORD_X, !FIGHTERS_SWORD_Y)
|
||||
%AddStat($7EF425, 0, 0, 04, 2, !MASTER_SWORD_X, !MASTER_SWORD_Y)
|
||||
%AddStat($7EF426, 0, 4, 04, 2, !TEMPERED_SWORD_X, !TEMPERED_SWORD_Y)
|
||||
%AddStat($7EF426, 0, 0, 04, 2, !GOLD_SWORD_X, !GOLD_SWORD_Y)
|
||||
%AddStat($7EF46A, 0, 0, 16, 5, !DAMAGETAKEN_X, !DAMAGETAKEN_Y)
|
||||
%AddStat($7EF46C, 0, 0, 16, 5, !MAGICUSED_X, !MAGICUSED_Y)
|
||||
%AddStat($7EF420, 0, 0, 08, 3, !BONKS_X, !BONKS_Y)
|
||||
%AddStat($7EF42D, 0, 0, 08, 2, !SAVE_AND_QUITS_X, !SAVE_AND_QUITS_Y)
|
||||
%AddStat($7EF449, 0, 0, 08, 2, !DEATHS_X, !DEATHS_Y)
|
||||
%AddStat($7EF453, 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(SwordTime, 1, 0, 32, 4, !FIRST_SWORD_X, !FIRST_SWORD_Y)
|
||||
%AddStat(BootsTime, 1, 0, 32, 4, !PEGASUS_BOOTS_X, !PEGASUS_BOOTS_Y)
|
||||
%AddStat(FluteTime, 1, 0, 32, 4, !FLUTE_X, !FLUTE_Y)
|
||||
%AddStat(MirrorTime, 1, 0, 32, 4, !MIRROR_X, !MIRROR_Y)
|
||||
%AddStat(SwordlessBossKills, 0, 0, 08, 2, !SWORDLESS_X, !SWORDLESS_Y)
|
||||
%AddStat(SwordBossKills, 0, 4, 04, 2, !FIGHTERS_SWORD_X, !FIGHTERS_SWORD_Y)
|
||||
%AddStat(SwordBossKills, 0, 0, 04, 2, !MASTER_SWORD_X, !MASTER_SWORD_Y)
|
||||
%AddStat(SwordBossKills+1, 0, 4, 04, 2, !TEMPERED_SWORD_X, !TEMPERED_SWORD_Y)
|
||||
%AddStat(SwordBossKills+1, 0, 0, 04, 2, !GOLD_SWORD_X, !GOLD_SWORD_Y)
|
||||
%AddStat(DamageCounter, 0, 0, 16, 5, !DAMAGETAKEN_X, !DAMAGETAKEN_Y)
|
||||
%AddStat(MagicCounter, 0, 0, 16, 5, !MAGICUSED_X, !MAGICUSED_Y)
|
||||
%AddStat(BonkCounter, 0, 0, 08, 3, !BONKS_X, !BONKS_Y)
|
||||
%AddStat(SaveQuitCounter, 0, 0, 08, 2, !SAVE_AND_QUITS_X, !SAVE_AND_QUITS_Y)
|
||||
%AddStat(DeathCounter, 0, 0, 08, 2, !DEATHS_X, !DEATHS_Y)
|
||||
%AddStat(FaerieRevivalCounter, 0, 0, 08, 3, !FAERIE_REVIVALS_X, !FAERIE_REVIVALS_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($7EF423, 0, 0, 08, 3, !COLLECTION_RATE_X, !COLLECTION_RATE_Y)
|
||||
%AddStat($7EF43E, 1, 0, 32, 4, !TOTAL_TIME_X, !TOTAL_TIME_Y)
|
||||
%AddStat(TotalItemCounter, 0, 0, 16, 3, !COLLECTION_RATE_X, !COLLECTION_RATE_Y)
|
||||
%AddStat(NMIFrames, 1, 0, 32, 4, !TOTAL_TIME_X, !TOTAL_TIME_Y)
|
||||
|
||||
@@ -208,13 +208,13 @@ CheckMedallionSword:
|
||||
.outdoors
|
||||
LDA $8A : CMP.b #$70 : BNE +
|
||||
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
|
||||
LDY.b #$02 : JSL.l Ancilla_CheckIfEntranceTriggered : BCS .permit ; misery mire
|
||||
BRA .done
|
||||
+ : CMP.b #$47 : BNE +
|
||||
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
|
||||
LDY.b #$03 : JSL.l Ancilla_CheckIfEntranceTriggered : BCS .permit ; turtle rock
|
||||
+
|
||||
|
||||
14
timer.asm
14
timer.asm
@@ -2,8 +2,6 @@
|
||||
; Challenge Timer
|
||||
;================================================================================
|
||||
!Temp = "$7F5020"
|
||||
!BaseTimer = "$7EF43E"
|
||||
!ChallengeTimer = "$7EF454"
|
||||
!TemporaryOHKO = "$7F50CC"
|
||||
;--------------------------------------------------------------------------------
|
||||
!CLOCK_HOURS = "$7F5080" ; $7F5080 - $7F5083 - Clock Hours
|
||||
@@ -58,17 +56,17 @@ CalculateTimer:
|
||||
STA.l !CLOCK_SECONDS+2
|
||||
|
||||
LDA.l TimerStyle : AND.w #$00FF : CMP.w #$0002 : BNE + ; Stopwatch Mode
|
||||
%Sub32(!BaseTimer,!ChallengeTimer,!CLOCK_TEMPORARY)
|
||||
%Sub32(NMIFrames,ChallengeTimer,!CLOCK_TEMPORARY)
|
||||
BRA ++
|
||||
+ CMP.w #$0001 : BNE ++ ; Countdown Mode
|
||||
%Sub32(!ChallengeTimer,!BaseTimer,!CLOCK_TEMPORARY)
|
||||
%Sub32(ChallengeTimer,NMIFrames,!CLOCK_TEMPORARY)
|
||||
++
|
||||
|
||||
%Blt32(!CLOCK_TEMPORARY,.halfCycle) : !BLT +
|
||||
LDA.l TimeoutBehavior : AND.w #$00FF : BNE ++ ; DNF
|
||||
LDA.w #$0002 : STA.l !Status ; Set DNF Mode
|
||||
LDA.l !BaseTimer : STA.l !ChallengeTimer
|
||||
LDA.l !BaseTimer+2 : STA.l !ChallengeTimer+2
|
||||
LDA.l NMIFrames : STA.l ChallengeTimer
|
||||
LDA.l NMIFrames+2 : STA.l ChallengeTimer+2
|
||||
RTS
|
||||
++ CMP.w #$0001 : BNE ++ ; Negative Time
|
||||
LDA.l !CLOCK_TEMPORARY : EOR.w #$FFFF : !ADD.w #$0001 : STA.l !CLOCK_TEMPORARY
|
||||
@@ -77,8 +75,8 @@ CalculateTimer:
|
||||
BRA .prepDigits
|
||||
++ CMP.w #$0002 : BNE ++ ; OHKO
|
||||
LDA.w #$0002 : STA.l !Status ; Set DNF Mode
|
||||
LDA.l !BaseTimer : STA.l !ChallengeTimer
|
||||
LDA.l !BaseTimer+2 : STA.l !ChallengeTimer+2
|
||||
LDA.l NMIFrames : STA.l ChallengeTimer
|
||||
LDA.l NMIFrames+2 : STA.l ChallengeTimer+2
|
||||
RTS
|
||||
++ ; End Game
|
||||
SEP #$30
|
||||
|
||||
Reference in New Issue
Block a user