Fix up labels

still WIP

still do not use
This commit is contained in:
2022-09-18 18:11:21 -07:00
parent 6f138825d9
commit 4817fa2013
14 changed files with 102 additions and 71 deletions

View File

@@ -144,27 +144,24 @@ RefreshRainAmmo:
.done .done
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
!INFINITE_ARROWS = "$7F50C8"
!INFINITE_BOMBS = "$7F50C9"
!INFINITE_MAGIC = "$7F50CA"
SetEscapeAssist: SetEscapeAssist:
LDA ProgressIndicator : CMP.b #$01 : BNE .no_train ; check if we're in rain state LDA ProgressIndicator : CMP.b #$01 : BNE .no_train ; check if we're in rain state
.rain .rain
LDA.l EscapeAssist LDA.l EscapeAssist
BIT.b #$04 : BEQ + : STA !INFINITE_MAGIC : + BIT.b #$04 : BEQ + : STA InfiniteMagicModifier : +
BIT.b #$02 : BEQ + : STA !INFINITE_BOMBS : + BIT.b #$02 : BEQ + : STA InfiniteBombsModifier : +
BIT.b #$01 : BEQ + : STA !INFINITE_ARROWS : + BIT.b #$01 : BEQ + : STA InfiniteArrowsModifier : +
BRA ++ BRA ++
.no_train ; choo choo .no_train ; choo choo
LDA.l EscapeAssist LDA.l EscapeAssist
BIT.b #$40 : BEQ + : STA !INFINITE_MAGIC : + BIT.b #$40 : BEQ + : STA InfiniteMagicModifier : +
BIT.b #$20 : BEQ + : STA !INFINITE_BOMBS : + BIT.b #$20 : BEQ + : STA InfiniteBombsModifier : +
BIT.b #$10 : BEQ + : STA !INFINITE_ARROWS : + BIT.b #$10 : BEQ + : STA InfiniteArrowsModifier : +
++ ++
LDA.l SpecialWeapons : CMP #$01 : BNE + LDA.l SpecialWeapons : CMP #$01 : BNE +
LDA.l !WEAPON_LEVEL : BEQ + LDA.l SpecialWeaponLevel : BEQ +
LDA #$01 : STA !INFINITE_BOMBS LDA #$01 : STA InfiniteBombsModifier
+ +
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------

View File

@@ -309,7 +309,7 @@ DialogGanon2:
LDA.l SpecialWeapons : AND.w #$00FF LDA.l SpecialWeapons : AND.w #$00FF
CMP.w #$0001 : BEQ .bombs ; bombs if special bomb mode CMP.w #$0001 : BEQ .bombs ; bombs if special bomb mode
.silver_arrows .silver_arrows
LDA.l $BowTracking LDA.l BowTracking
BIT.w #$0080 : BNE + ; branch if bow BIT.w #$0080 : BNE + ; branch if bow
LDA.w #$0192 : JMP .done LDA.w #$0192 : JMP .done
@@ -330,26 +330,26 @@ DialogGanon2:
CMP.w #$0005 : BEQ .powder CMP.w #$0005 : BEQ .powder
CMP.w #$0010 : BEQ .bee CMP.w #$0010 : BEQ .bee
PHX : TAX PHX : TAX
LDA.l $7EF33F, X : PLX : AND #$00FF : BNE + LDA.l EquipmentWRAM-1, X : PLX : AND #$00FF : BNE +
LDA.w #$0192 : JMP .done LDA.w #$0192 : JMP .done
+ +
LDA.w #$0195 : BRA .done LDA.w #$0195 : BRA .done
.bombs .bombs
LDA.l $7EF343 : AND #$00FF : BNE + LDA.l BombsEquipment : AND #$00FF : BNE +
LDA.l $7F50C9 : AND #$00FF : BNE + ; check for infinite bombs LDA.l InfiniteBombsModifier : AND #$00FF : BNE + ; check for infinite bombs
LDA.w #$0192 : BRA .done LDA.w #$0192 : BRA .done
+ +
LDA.w #$0195 : BRA .done LDA.w #$0195 : BRA .done
.powder .powder
LDA.l $7EF38C : AND #$0010 : BNE + LDA.l InventoryTracking : AND #$0010 : BNE + ; check for powder
LDA.w #$0192 : BRA .done LDA.w #$0192 : BRA .done
+ +
LDA.w #$0195 : BRA .done LDA.w #$0195 : BRA .done
.bee .bee
LDA.l $7EF35C : AND #$00FF : CMP.w #$0007 : BEQ + : CMP.w #$0008 : BEQ + LDA.l BottleContentsOne : AND #$00FF : CMP.w #$0007 : BEQ + : CMP.w #$0008 : BEQ +
LDA.l $7EF35D : AND #$00FF : CMP.w #$0007 : BEQ + : CMP.w #$0008 : BEQ + LDA.l BottleContentsTwo : AND #$00FF : CMP.w #$0007 : BEQ + : CMP.w #$0008 : BEQ +
LDA.l $7EF35E : AND #$00FF : CMP.w #$0007 : BEQ + : CMP.w #$0008 : BEQ + LDA.l BottleContentsThree : AND #$00FF : CMP.w #$0007 : BEQ + : CMP.w #$0008 : BEQ +
LDA.l $7EF35F : AND #$00FF : CMP.w #$0007 : BEQ + : CMP.w #$0008 : BEQ + LDA.l BottleContentsFour : AND #$00FF : CMP.w #$0007 : BEQ + : CMP.w #$0008 : BEQ +
LDA.w #$0192 : BRA .done LDA.w #$0192 : BRA .done
+ +
LDA.w #$0195 : BRA .done LDA.w #$0195 : BRA .done

View File

@@ -59,9 +59,9 @@ RTL
OnUncleItemGet: OnUncleItemGet:
PHA PHA
LDA.l EscapeAssist LDA.l EscapeAssist
BIT.b #$04 : BEQ + : STA !INFINITE_MAGIC : + BIT.b #$04 : BEQ + : STA InfiniteMagicModifier : +
BIT.b #$02 : BEQ + : STA !INFINITE_BOMBS : + BIT.b #$02 : BEQ + : STA InfiniteBombsModifier : +
BIT.b #$01 : BEQ + : STA !INFINITE_ARROWS : + BIT.b #$01 : BEQ + : STA InfiniteArrowsModifier : +
LDA UncleItem_Player : STA !MULTIWORLD_ITEM_PLAYER_ID LDA UncleItem_Player : STA !MULTIWORLD_ITEM_PLAYER_ID
PLA PLA

View File

@@ -78,9 +78,9 @@ JMP .done
PHA PHA
TYA ; load bomb upgrade item TYA ; load bomb upgrade item
!SUB #$B0 ; convert to bomb level !SUB #$B0 ; convert to bomb level
CMP.l !WEAPON_LEVEL : !BGE + ; skip if highest is lower (this is an upgrade) CMP.l SpecialWeaponLevel : !BGE + ; skip if highest is lower (this is an upgrade)
LDA.l !WEAPON_LEVEL : !ADD #$B0 ; convert to item id LDA.l SpecialWeaponLevel : !ADD #$B0 ; convert to item id
TAY : PLA : LDA.l !WEAPON_LEVEL ; put bomb level into the thing to write TAY : PLA : LDA.l SpecialWeaponLevel ; put bomb level into the thing to write
JMP .done JMP .done
+ +
PLA PLA
@@ -89,9 +89,9 @@ JMP .done
PHA PHA
TYA ; load cane upgrade item TYA ; load cane upgrade item
!SUB #$B6 ; convert to cane level !SUB #$B6 ; convert to cane level
CMP.l !WEAPON_LEVEL : !BGE + ; skip if highest is lower (this is an upgrade) CMP.l SpecialWeaponLevel : !BGE + ; skip if highest is lower (this is an upgrade)
LDA.l !WEAPON_LEVEL : !ADD #$B6 ; convert to item id LDA.l SpecialWeaponLevel : !ADD #$B6 ; convert to item id
TAY : PLA : LDA.l !WEAPON_LEVEL ; put cane level into the thing to write TAY : PLA : LDA.l SpecialWeaponLevel ; put cane level into the thing to write
JMP .done JMP .done
+ +
PLA PLA

View File

@@ -3,15 +3,14 @@ NewDrawHud:
;================================================================================ ;================================================================================
; Draw bomb count ; Draw bomb count
!BOMBCOUNT_DRAW_ADDRESS = "$7EC75A" !BOMBCOUNT_DRAW_ADDRESS = "$7EC75A"
!INFINITE_BOMBS = "$7F50C9"
;================================================================================ ;================================================================================
LDA !INFINITE_BOMBS : BNE .infinite_bombs LDA InfiniteBombsModifier : BNE .infinite_bombs
.finite_bombs .finite_bombs
LDA.l SpecialWeapons : CMP #$01 : BNE .normal LDA.l SpecialWeapons : CMP #$01 : BNE .normal
LDA.l !WEAPON_LEVEL : BEQ .no_bombs LDA.l SpecialWeaponLevel : BEQ .no_bombs
.normal .normal
LDA.l $7EF343 ; bombs LDA.l BombsEquipment ; bombs
JSR HudHexToDec2Digit ;requires 8 bit registers! JSR HudHexToDec2Digit ;requires 8 bit registers!
REP #$20 REP #$20
LDX.b $06 : TXA : ORA.w #$2400 : STA !BOMBCOUNT_DRAW_ADDRESS ; Draw bombs 10 digit LDX.b $06 : TXA : ORA.w #$2400 : STA !BOMBCOUNT_DRAW_ADDRESS ; Draw bombs 10 digit
@@ -43,14 +42,13 @@ NewDrawHud:
;================================================================================ ;================================================================================
; Draw arrow count ; Draw arrow count
!ARROWCOUNT_DRAW_ADDRESS = "$7EC760" !ARROWCOUNT_DRAW_ADDRESS = "$7EC760"
!INFINITE_ARROWS = "$7F50C8"
;================================================================================ ;================================================================================
SEP #$20 SEP #$20
LDA.l ArrowMode : BNE + LDA.l ArrowMode : BNE +
LDA !INFINITE_ARROWS : BNE .infinite_arrows LDA InfiniteArrowsModifier : BNE .infinite_arrows
.finite_arrows .finite_arrows
LDA.l $7EF377 ; arrows LDA.l CurrentArrows ; arrows
JSR HudHexToDec2Digit JSR HudHexToDec2Digit
REP #$20 REP #$20
LDX.b $06 : TXA : ORA.w #$2400 : STA !ARROWCOUNT_DRAW_ADDRESS ; Draw arrows 10 digit LDX.b $06 : TXA : ORA.w #$2400 : STA !ARROWCOUNT_DRAW_ADDRESS ; Draw arrows 10 digit
@@ -175,7 +173,6 @@ NewDrawHud:
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
; Draw Magic Meter ; Draw Magic Meter
!INFINITE_MAGIC = "$7F50CA"
!DrawMagicMeter_mp_tilemap = "$0DFE0F" !DrawMagicMeter_mp_tilemap = "$0DFE0F"
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
LDA CurrentMagic : AND #$00FF ; crap we wrote over when placing the hook for OnDrawHud LDA CurrentMagic : AND #$00FF ; crap we wrote over when placing the hook for OnDrawHud
@@ -183,7 +180,7 @@ NewDrawHud:
AND #$FFF8 AND #$FFF8
TAX ; end of crap TAX ; end of crap
LDA !INFINITE_MAGIC : AND.w #$00FF : BNE + : JMP .green : + LDA InfiniteMagicModifier : AND.w #$00FF : BNE + : JMP .green : +
SEP #$20 : LDA.b #$80 : STA CurrentMagic : REP #$30 ; set magic to max SEP #$20 : LDA.b #$80 : STA CurrentMagic : REP #$30 ; set magic to max
LDX.w #$0080 ; load full magic meter graphics LDX.w #$0080 ; load full magic meter graphics
LDA $1A : AND.w #$000C : LSR #2 LDA $1A : AND.w #$000C : LSR #2

View File

@@ -418,14 +418,14 @@ AddReceivedItemExpandedGetItem:
LDA.b #$FF : STA.w $0B58,Y ; allows them to expire LDA.b #$FF : STA.w $0B58,Y ; allows them to expire
++ JMP .done ++ JMP .done
+ CMP.b #$B2 : BNE + ; Fairy + CMP.b #$B2 : BNE + ; Fairy
LDA.b #$E3 : JSL Sprite_SpawnDynamically : BMI .done LDA.b #$E3 : JSL Sprite_SpawnDynamically : BMI ++
LDA $22 : CLC : ADC.b #$03 : AND.b #$F8 : STA $0D10,Y LDA $22 : CLC : ADC.b #$03 : AND.b #$F8 : STA $0D10,Y
LDA $23 : ADC.b #$00 : STA $0D30,Y ; round X to nearest 8 LDA $23 : ADC.b #$00 : STA $0D30,Y ; round X to nearest 8
LDA.b $20 : SEC : SBC.b #$10 : STA.w $0D00,Y LDA.b $20 : SEC : SBC.b #$10 : STA.w $0D00,Y
LDA.b $21 : SBC.b #$00 : STA.w $0D20,Y ; move up 16 pixels LDA.b $21 : SBC.b #$00 : STA.w $0D20,Y ; move up 16 pixels
LDA.b $EE : STA.w $0F20,Y ; spawns on same layer as link LDA.b $EE : STA.w $0F20,Y ; spawns on same layer as link
LDA.b #$FF : STA.w $0B58,Y ; allows them to expire LDA.b #$FF : STA.w $0B58,Y ; allows them to expire
BRA .done ++ JMP .done
+ CMP.b #$B3 : BNE + ; Chicken + CMP.b #$B3 : BNE + ; Chicken
LDA.b #$0B : JSL Sprite_SpawnDynamically : BMI .done LDA.b #$0B : JSL Sprite_SpawnDynamically : BMI .done
LDA $22 : CLC : ADC.b #$03 : AND.b #$F8 : STA $0D10,Y LDA $22 : CLC : ADC.b #$03 : AND.b #$F8 : STA $0D10,Y
@@ -442,17 +442,17 @@ AddReceivedItemExpandedGetItem:
BRA .done BRA .done
+ CMP.b #$B6 : BNE + ; Bomb Upgrade + CMP.b #$B6 : BNE + ; Bomb Upgrade
LDA.l SpecialWeapons : CMP #$01 : BNE .done LDA.l SpecialWeapons : CMP #$01 : BNE .done
LDA #$01 : STA $7F50C9 ; infinite bombs LDA #$01 : STA InfiniteBombsModifier ; infinite bombs
JMP .done JMP .done
+ : CMP.b #$B7 : BNE + ; Cane Upgrade + : CMP.b #$B7 : BNE + ; Cane Upgrade
LDA.l SpecialWeapons : CMP #$03 : BEQ .blue_cane LDA.l SpecialWeapons : CMP #$03 : BEQ .blue_cane
CMP #$04 : BEQ .red_cane CMP #$04 : BEQ .red_cane
BRA .done BRA .done
.blue_cane .blue_cane
LDA #$01 : STA $7EF351 LDA #$01 : STA ByrnaEquipment
BRA .done BRA .done
.red_cane .red_cane
LDA #$01 : STA $7EF350 LDA #$01 : STA SomariaEquipment
BRA .done BRA .done
+ +
.done .done
@@ -600,7 +600,7 @@ AddReceivedItemExpanded:
LDA.b #$0E : STA $02D8 : JMP .done ; Bee in a bottle LDA.b #$0E : STA $02D8 : JMP .done ; Bee in a bottle
+++ +++
++ : CMP.b #$B6 : BNE ++ ; Progressive Bombs ++ : CMP.b #$B6 : BNE ++ ; Progressive Bombs
LDA !WEAPON_LEVEL LDA SpecialWeaponLevel
CMP.b #$00 : BNE + ; have no Bombs CMP.b #$00 : BNE + ; have no Bombs
LDA.b #$B1 : STA $02D8 : JMP .done LDA.b #$B1 : STA $02D8 : JMP .done
+ : CMP.b #$01 : BNE + ; have L-1 Bombs + : CMP.b #$01 : BNE + ; have L-1 Bombs
@@ -612,7 +612,7 @@ AddReceivedItemExpanded:
+ ; Everything Else + ; Everything Else
LDA.b #$B5 : STA $02D8 : JMP .done LDA.b #$B5 : STA $02D8 : JMP .done
++ : CMP.b #$BC : BNE ++ ; Progressive Cane ++ : CMP.b #$BC : BNE ++ ; Progressive Cane
LDA !WEAPON_LEVEL LDA SpecialWeaponLevel
CMP.b #$00 : BNE + ; have no Cane CMP.b #$00 : BNE + ; have no Cane
LDA.b #$B7 : STA $02D8 : JMP .done LDA.b #$B7 : STA $02D8 : JMP .done
+ : CMP.b #$01 : BNE + ; have L-1 Cane + : CMP.b #$01 : BNE + ; have L-1 Cane
@@ -1300,6 +1300,23 @@ ChestPrep:
SEC SEC
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
UpdateInventoryLocationExpanded:
{
REP #$30
TYA : AND #$00FF : ASL A : TAX
; Tells what inventory location to write to.
LDA.w AddReceivedItemExpanded_item_target_addr, X : STA $00
SEP #$30
LDA.b #$7E : STA $02
LDA.w AddReceivedItemExpanded_item_values, Y
JSL ItemDowngradeFix
RTL
}
;--------------------------------------------------------------------------------
; Set a flag in SRAM if we pick up a compass in its own dungeon with HUD compass ; Set a flag in SRAM if we pick up a compass in its own dungeon with HUD compass
; counts on ; counts on
MaybeFlagCompassTotalPickup: MaybeFlagCompassTotalPickup:

View File

@@ -1,6 +1,5 @@
!INFINITE_BOMBS = "$7F50C9"
IsItemAvailable: IsItemAvailable:
LDA !INFINITE_BOMBS : BEQ .finite LDA InfiniteBombsModifier : BEQ .finite
.infinite .infinite
CPX.b #$04 : BNE .finite CPX.b #$04 : BNE .finite
LDA.b #$01 : RTL LDA.b #$01 : RTL
@@ -8,35 +7,34 @@ IsItemAvailable:
LDA EquipmentWRAM-1, X LDA EquipmentWRAM-1, X
RTL RTL
LoadBombCount: LoadBombCount:
LDA !INFINITE_BOMBS : BNE .infinite LDA InfiniteBombsModifier : BNE .infinite
.finite .finite
LDA BombsEquipment LDA BombsEquipment
.infinite .infinite
RTL RTL
LoadBombCount16: LoadBombCount16:
LDA !INFINITE_BOMBS : AND.w #$00FF : BNE .infinite LDA InfiniteBombsModifier : AND.w #$00FF : BNE .infinite
.finite .finite
LDA BombsEquipment LDA BombsEquipment
.infinite .infinite
RTL RTL
StoreBombCount: StoreBombCount:
JSL IncrementBombsPlacedCounter JSL IncrementBombsPlacedCounter
PHA : LDA !INFINITE_BOMBS : BEQ .finite PHA : LDA InfiniteBombsModifier : BEQ .finite
.infinite .infinite
PLA : LDA.b #$01 : RTL PLA : LDA.b #$01 : RTL
.finite .finite
PLA : STA BombsEquipment PLA : STA BombsEquipment
RTL RTL
SearchForEquippedItem: SearchForEquippedItem:
LDA !INFINITE_BOMBS : BEQ + LDA InfiniteBombsModifier : BEQ +
LDA.b #$01 : LDX.b #$00 : RTL LDA.b #$01 : LDX.b #$00 : RTL
+ +
LDA BowEquipment ; thing we wrote over LDA BowEquipment ; thing we wrote over
RTL RTL
!INFINITE_ARROWS = "$7F50C8"
DecrementArrows: DecrementArrows:
LDA !INFINITE_ARROWS : BNE .infinite LDA InfiniteArrowsModifier : BNE .infinite
LDA.l ArrowMode : BNE .rupees : BRA .normal LDA.l ArrowMode : BNE .rupees : BRA .normal
.infinite .infinite
LDA.b #$01 : RTL LDA.b #$01 : RTL

View File

@@ -53,17 +53,17 @@ DamageClassCalc:
.not_cane_or_beam .not_cane_or_beam
CMP #$07 : BNE .no_change CMP #$07 : BNE .no_change
LDA SpecialWeapons : CMP #$01 : BNE .normal_bombs LDA SpecialWeapons : CMP #$01 : BNE .normal_bombs
LDA !WEAPON_LEVEL : BEQ .normal_bombs LDA SpecialWeaponLevel : BEQ .normal_bombs
LDA $0E20, X : CMP.b #$D6 : BEQ .unstunned_ganon LDA $0E20, X : CMP.b #$D6 : BEQ .unstunned_ganon
CMP.b #$D7 : BEQ .stunned_ganon CMP.b #$D7 : BEQ .stunned_ganon
CMP.b #$88 : BEQ .mothula CMP.b #$88 : BEQ .mothula
CMP.b #$91 : BEQ .stalfos_knight CMP.b #$91 : BEQ .stalfos_knight
CMP.b #$92 : BEQ .helmasaur_king CMP.b #$92 : BEQ .helmasaur_king
.special_level .special_level
LDA !WEAPON_LEVEL LDA SpecialWeaponLevel
BRA .done BRA .done
.mothula .mothula
LDA !WEAPON_LEVEL LDA SpecialWeaponLevel
CMP #$04 : !BGE .fix_mothula CMP #$04 : !BGE .fix_mothula
BRA .done BRA .done
.fix_mothula .fix_mothula
@@ -95,7 +95,7 @@ DamageClassCalc:
LDA.l !ANCILLA_DAMAGE, X LDA.l !ANCILLA_DAMAGE, X
PLX PLX
CMP.b #$06 : BNE .done ; not arrows CMP.b #$06 : BNE .done ; not arrows
LDA $7EF340 : CMP.b #$03 : !BGE .actual_silver_arrows LDA BowEquipment : CMP.b #$03 : !BGE .actual_silver_arrows
.normal_arrows .normal_arrows
LDA #$06 LDA #$06
.done .done
@@ -352,7 +352,7 @@ AllowBombingBarrier:
DrawBombInMenu: DrawBombInMenu:
JSL LoadBombCount16 : AND.w #$00FF : BEQ .noBombs JSL LoadBombCount16 : AND.w #$00FF : BEQ .noBombs
LDA SpecialWeapons : AND.w #$00FF : CMP.w #$0001 : BNE .vanillaBombs LDA SpecialWeapons : AND.w #$00FF : CMP.w #$0001 : BNE .vanillaBombs
LDA.l !WEAPON_LEVEL : AND.w #$00FF : BEQ .noBombs : STA $02 LDA.l SpecialWeaponLevel : AND.w #$00FF : BEQ .noBombs : STA $02
LDA.w #$FC81 : STA $04 LDA.w #$FC81 : STA $04
BRA .done BRA .done
.vanillaBombs .vanillaBombs
@@ -370,7 +370,7 @@ DrawSwordInMenu:
CMP.w #$0003 : BEQ .specialSword CMP.w #$0003 : BEQ .specialSword
CMP.w #$0004 : BEQ .specialSword CMP.w #$0004 : BEQ .specialSword
CMP.w #$0005 : BEQ .specialSword CMP.w #$0005 : BEQ .specialSword
LDA $7EF359 : AND.w #$00FF : CMP.w #$00FF : BEQ .noSword LDA SwordEquipment : AND.w #$00FF : CMP.w #$00FF : BEQ .noSword
.hasSword .hasSword
STA $02 STA $02
LDA.w #$F859 : STA $04 LDA.w #$F859 : STA $04
@@ -380,14 +380,14 @@ DrawSwordInMenu:
LDA.w #$F859 : STA $04 LDA.w #$F859 : STA $04
RTL RTL
.specialSword .specialSword
LDA !WEAPON_LEVEL : AND.w #$00FF : STA $02 LDA SpecialWeaponLevel : AND.w #$00FF : STA $02
LDA.w #$FC51 : STA $04 LDA.w #$FC51 : STA $04
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
DrawBombInYBox: DrawBombInYBox:
CPX.w #$0004 : BNE .done CPX.w #$0004 : BNE .done
LDA SpecialWeapons : AND.w #$00FF : CMP.w #$0001 : BNE .vanilla LDA SpecialWeapons : AND.w #$00FF : CMP.w #$0001 : BNE .vanilla
LDA !WEAPON_LEVEL : AND.w #$00FF : CLC : ADC.w #$00BD : BRA .done LDA SpecialWeaponLevel : AND.w #$00FF : CLC : ADC.w #$00BD : BRA .done
.vanilla .vanilla
LDA.w #$0001 LDA.w #$0001
.done .done
@@ -404,7 +404,7 @@ DrawBombOnHud:
PLB PLB
LDA.l SpecialWeapons : AND.w #$00FF : CMP.w #$0001 : BNE .regularBombs LDA.l SpecialWeapons : AND.w #$00FF : CMP.w #$0001 : BNE .regularBombs
LDA.l !WEAPON_LEVEL : AND.w #$00FF : ASL #2 : TAX LDA.l SpecialWeaponLevel : AND.w #$00FF : ASL #2 : TAX
LDA.l BombIcon, X : STA.l $7EC71A LDA.l BombIcon, X : STA.l $7EC71A
LDA.l BombIcon+2, X : STA.l $7EC71C LDA.l BombIcon+2, X : STA.l $7EC71C
.regularBombs .regularBombs
@@ -415,7 +415,7 @@ BombSpriteColor:
SetBombSpriteColor: SetBombSpriteColor:
LDA.l SpecialWeapons : CMP.b #$01 : BNE .normal LDA.l SpecialWeapons : CMP.b #$01 : BNE .normal
PHX PHX
LDA.l !WEAPON_LEVEL LDA.l SpecialWeaponLevel
TAX TAX
LDA.l BombSpriteColor, X LDA.l BombSpriteColor, X
STA $0B STA $0B

View File

@@ -173,11 +173,12 @@ InventoryTracking: skip 2 ; b r m p n s k f - - - - - - o q (bitfield)
; p = Magic Powder | n = Mushroom Past | s = Shovel ; p = Magic Powder | n = Mushroom Past | s = Shovel
; k = Inactive Flute | f = Active Flute | o = Any bomb acquired ; k = Inactive Flute | f = Active Flute | o = Any bomb acquired
; q = Quickswap locked ; q = Quickswap locked
BowTracking: skip 2 ; b s p - - - - - - - - - - - - - (bitfield) BowTracking: skip 1 ; b s p - - - - - (bitfield)
; b = Bow | s = Silver Arrows Upgrade | p = Second Progressive Bow ; b = Bow | s = Silver Arrows Upgrade | p = Second Progressive Bow
; The front end writes two distinct progressive bow items. p ; The front end writes two distinct progressive bow items. p
; indicates whether the "second" has been found independent of ; indicates whether the "second" has been found independent of
; the first ; the first
SpecialWeaponLevel: skip 1 ; Keeps track of level of weapon in bomb-only and cane-only modes
ItemLimitCounts: skip 16 ; Keeps track of limited non-progressive items such as lamp. ItemLimitCounts: skip 16 ; Keeps track of limited non-progressive items such as lamp.
; See: ItemSubstitutionRules in tables.asm ; See: ItemSubstitutionRules in tables.asm
; Right now this is only used for three items but extra space is ; Right now this is only used for three items but extra space is
@@ -313,7 +314,8 @@ HeartPieceCounter: skip 1 ; Total Number of heartpieces collected (integer
CrystalCounter: skip 1 ; Total Number of crystals collected (integer) CrystalCounter: skip 1 ; Total Number of crystals collected (integer)
DungeonsCompleted: skip 2 ; Bitfield indicating whether a dungeon's prize has been collected. DungeonsCompleted: skip 2 ; Bitfield indicating whether a dungeon's prize has been collected.
; This has the same shape as the dungeon item bitfields. ; This has the same shape as the dungeon item bitfields.
skip 44 ; Unused BombsPlaced: skip 2 ; Total Number of bombs placed (16-bit integer)
skip 42 ; Unused
ServiceSequenceRx: ; Service sequence receive ServiceSequenceRx: ; Service sequence receive
ServiceSequenceTx: ; Service sequence transmit ServiceSequenceTx: ; Service sequence transmit
ServiceSequence: skip 8 ; Service request block. See servicerequest.asm ServiceSequence: skip 8 ; Service request block. See servicerequest.asm
@@ -371,6 +373,26 @@ FileMarker: skip 1 ; $FF = Active save file | $00 = Inactive save f
skip 13 ; Unused skip 13 ; Unused
InverseChecksum: skip 2 ; Vanilla Inverse Checksum. Don't write unless computing checksum. InverseChecksum: skip 2 ; Vanilla Inverse Checksum. Don't write unless computing checksum.
;================================================================================
; Temporary Effects ($7F50C0 - $7F50CF)
;--------------------------------------------------------------------------------
base $7F50C0
SwordModifier: skip 1
ShieldModifier: skip 1 ; (not implemented)
ArmorModifier: skip 1
MagicModifier: skip 1
LightConeModifier: skip 1
CuccoStormModifier: skip 1
OldManDashModifier: skip 1
IcePhysicsModifier: skip 1
InfiniteArrowsModifier: skip 1
InfiniteBombsModifier: skip 1
InfiniteMagicModifier: skip 1
InvertDPadModifier: skip 1
TemporaryOHKO: skip 1
SpriteSwapper: skip 1
BootsModifier: skip 1 ; (0=Off, 1=Always, 2=Never)
;================================================================================ ;================================================================================
; Expanded SRAM ($7F6000 - $7F6FFF) ; Expanded SRAM ($7F6000 - $7F6FFF)
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
@@ -527,6 +549,7 @@ endmacro
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
%assertSRAM(InventoryTracking, $7EF38C) %assertSRAM(InventoryTracking, $7EF38C)
%assertSRAM(BowTracking, $7EF38E) %assertSRAM(BowTracking, $7EF38E)
%assertSRAM(SpecialWeaponLevel, $7EF38F)
%assertSRAM(ItemLimitCounts, $7EF390) %assertSRAM(ItemLimitCounts, $7EF390)
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
%assertSRAM(GameCounter, $7EF3FF) %assertSRAM(GameCounter, $7EF3FF)

View File

@@ -189,7 +189,7 @@ IncrementBombsPlacedCounter:
PHA PHA
LDA StatsLocked : BNE + LDA StatsLocked : BNE +
PHP : REP #$20 PHP : REP #$20
LDA !BOMBS_PLACED_COUNTER : INC : STA !BOMBS_PLACED_COUNTER LDA BombsPlaced : INC : STA BombsPlaced
PLP PLP
+ +
PLA PLA

View File

@@ -12,7 +12,7 @@
%AddStat(DamageCounter, 0, 0, 16, 5, !DAMAGETAKEN_X, !DAMAGETAKEN_Y) %AddStat(DamageCounter, 0, 0, 16, 5, !DAMAGETAKEN_X, !DAMAGETAKEN_Y)
%AddStat(MagicCounter, 0, 0, 16, 5, !MAGICUSED_X, !MAGICUSED_Y) %AddStat(MagicCounter, 0, 0, 16, 5, !MAGICUSED_X, !MAGICUSED_Y)
%AddStat(BonkCounter, 0, 0, 08, 3, !BONKS_X, !BONKS_Y) %AddStat(BonkCounter, 0, 0, 08, 3, !BONKS_X, !BONKS_Y)
%AddStat($7EF46E, 0, 0, 16, 4, !BOMBS_X, !BOMBS_Y) %AddStat(BombsPlaced, 0, 0, 16, 4, !BOMBS_X, !BOMBS_Y)
%AddStat(SaveQuitCounter, 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(DeathCounter, 0, 0, 08, 2, !DEATHS_X, !DEATHS_Y) %AddStat(DeathCounter, 0, 0, 08, 2, !DEATHS_X, !DEATHS_Y)
%AddStat(FaerieRevivalCounter, 0, 0, 08, 3, !FAERIE_REVIVALS_X, !FAERIE_REVIVALS_Y) %AddStat(FaerieRevivalCounter, 0, 0, 08, 3, !FAERIE_REVIVALS_X, !FAERIE_REVIVALS_Y)

View File

@@ -137,7 +137,7 @@ CheckTabletSword:
CMP #$05 : BEQ .check_special CMP #$05 : BEQ .check_special
BRA .normal BRA .normal
.check_special .check_special
LDA !WEAPON_LEVEL : CMP #$02 : !BLT + ; check for master bombs LDA SpecialWeaponLevel : CMP #$02 : !BLT + ; check for master bombs
LDA.b #$02 : RTL LDA.b #$02 : RTL
.normal .normal
LDA SwordEquipment ; get actual sword value LDA SwordEquipment ; get actual sword value

View File

@@ -2,7 +2,6 @@
; Challenge Timer ; Challenge Timer
;================================================================================ ;================================================================================
!Temp = "$7F5020" !Temp = "$7F5020"
!TemporaryOHKO = "$7F50CC"
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
!CLOCK_HOURS = "$7F5080" ; $7F5080 - $7F5083 - Clock Hours !CLOCK_HOURS = "$7F5080" ; $7F5080 - $7F5083 - Clock Hours
!CLOCK_MINUTES = "$7F5084" ; $7F5084 - $7F5087 - Clock Minutes !CLOCK_MINUTES = "$7F5084" ; $7F5084 - $7F5087 - Clock Minutes
@@ -176,7 +175,7 @@ DrawChallengeTimer:
RTL RTL
;-------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------
OHKOTimer: OHKOTimer:
LDA !TemporaryOHKO : BNE .kill LDA TemporaryOHKO : BNE .kill
LDA.l TimeoutBehavior : CMP #$02 : BNE + LDA.l TimeoutBehavior : CMP #$02 : BNE +
LDA !Status : AND.b #$02 : BEQ + LDA !Status : AND.b #$02 : BEQ +
.kill .kill

View File

@@ -247,7 +247,7 @@ RTL
+ ; Any Bow + ; Any Bow
LDA.b #$02 : RTL LDA.b #$02 : RTL
++ : CMP.b #$F7 : BNE ++ ; Progressive Bombs ++ : CMP.b #$F7 : BNE ++ ; Progressive Bombs
LDA !WEAPON_LEVEL LDA SpecialWeaponLevel
CMP.b #$00 : BNE + ; No Bombs CMP.b #$00 : BNE + ; No Bombs
LDA.b #$08 : RTL LDA.b #$08 : RTL
+ : CMP.b #$01 : BNE + ; L1 Bombs + : CMP.b #$01 : BNE + ; L1 Bombs