diff --git a/events.asm b/events.asm index 0a783f2..5ed8efc 100644 --- a/events.asm +++ b/events.asm @@ -103,11 +103,11 @@ RTL ;-------------------------------------------------------------------------------- OnAga2Defeated: JSL.l Dungeon_SaveRoomData_justKeys ; thing we wrote over, make sure this is first - LDA.b #$FF : STA.w DungeonID LDA.b #$01 : STA.l Aga2Duck LDA.w DungeonID : CMP.b #$1A : BNE + LDA.l DungeonsCompleted : ORA.b #$04 : STA.l DungeonsCompleted + + LDA.b #$FF : STA.w DungeonID JML.l IncrementAgahnim2Sword ;-------------------------------------------------------------------------------- OnFileCreation: diff --git a/inventory.asm b/inventory.asm index b7330ba..cf660f8 100644 --- a/inventory.asm +++ b/inventory.asm @@ -147,16 +147,17 @@ AddInventory: PHA : PHX : PHY : PHP : PHB PHK : PLB LDA.b #$7E : STA.b Scrap0D + LDA.l StatsLocked : BNE .done REP #$30 TYA : AND.w #$00FF : ASL : TAX SEP #$20 + LDA.w InventoryTable_properties,X : BIT.b #$01 : BEQ .done JSR.w ShopCheck : BCS .done JSR.w DungeonIncrement : BCS .done JSR.w IncrementByOne JSR.w StampItem - SEP #$20 JSR.w IncrementYAItems REP #$20 LDA.l TotalItemCounter : INC : TAY @@ -179,6 +180,7 @@ RTL ShopCheck: ; In: X - Receipt ID << 1 ; TODO: If we write all shops, we can use the ShopPurchase flag instead of this + PHX LDA.b IndoorsFlag : BEQ .count LDA.w ItemReceiptMethod : CMP.b #$01 : BEQ .count LDA.w InventoryTable_properties,X : BIT.b #$02 : BNE .count @@ -196,9 +198,11 @@ ShopCheck: SEP #$20 .count CLC + PLX RTS .nocount SEP #$21 + PLX RTS DungeonIncrement: @@ -207,10 +211,11 @@ DungeonIncrement: LDA.w InventoryTable_properties,X : BIT.b #$40 : BEQ + JSL.l CountChestKeyLong + + SEP #$10 LDA.b IndoorsFlag : BEQ .done LDA.w DungeonID : BMI .done CMP.l BallNChainDungeon : BNE + - CPY.w #$0032 : BEQ .ballchain_bigkey + CPY.b #$32 : BEQ .ballchain_bigkey + CMP.b #$04 : BCS + LDA.l SewersLocations : INC : STA.l SewersLocations : STA.l HCLocations @@ -218,19 +223,17 @@ DungeonIncrement: + LSR : TAX LDA.l DungeonLocationsChecked, X : INC : STA.l DungeonLocationsChecked, X - CPX.w #$000D : BNE + + CPX.b #$0D : BNE + LDA.l BigKeyField : BIT.b #$04 : BNE ++ LDA.l PreGTBKLocations : INC : STA.l PreGTBKLocations ++ + .done + REP #$11 PLX - CLC RTS .ballchain_bigkey - LDA.l BigKeysBigChests - CLC : ADC.b #$10 - STA.l BigKeysBigChests + REP #$10 PLX SEC RTS @@ -247,37 +250,40 @@ StampItem: INC.b Scrap0B : INC.b Scrap0B LDA.l NMIFrames+2 : STA.b [Scrap0B] .skip + SEP #$20 RTS IncrementYAItems: - LDA.w InventoryTable_properties,X - BIT.b #$10 : BNE .bomb_check - BIT.b #$20 : BNE .bow_check - BIT.b #$04 : BEQ .not_y - .y_item - LDA.l YAItemCounter : !ADD #$08 : STA.l YAItemCounter - BRA .done - .not_y - BIT.b #$08 : BEQ .done - .a_item - LDA.l YAItemCounter : INC : AND.b #$07 : TAX - LDA.l YAItemCounter : AND.b #$F8 : STA.l YAItemCounter - TXA : ORA.l YAItemCounter : STA.l YAItemCounter + PHX + LDA.w InventoryTable_properties,X + BIT.b #$10 : BNE .bomb_check + BIT.b #$20 : BNE .bow_check + BIT.b #$04 : BEQ .not_y + .y_item + LDA.l YAItemCounter : !ADD #$08 : STA.l YAItemCounter + BRA .done + .not_y + BIT.b #$08 : BEQ .done + .a_item + LDA.l YAItemCounter : INC : AND.b #$07 : TAX + LDA.l YAItemCounter : AND.b #$F8 : STA.l YAItemCounter + TXA : ORA.l YAItemCounter : STA.l YAItemCounter .done + PLX RTS .bow_check LDA.l BowEquipment : BNE + BRA .y_item - + -RTS .bomb_check - LDA.l InventoryTracking+1 : BIT.b #$02 : BNE + - ORA.b #$02 : STA.l InventoryTracking+1 - BRA .y_item - + + LDA.l InventoryTracking+1 : BIT.b #$02 : BNE + + ORA.b #$02 : STA.l InventoryTracking+1 + BRA .y_item + + + PLX RTS IncrementByOne: + PHX REP #$20 LDA.w InventoryTable_stat,X : BEQ .skip STA.b Scrap0B @@ -285,6 +291,7 @@ IncrementByOne: LDA.b #$00 : ADC.b [Scrap0B] : STA.b [Scrap0B] .skip SEP #$20 + PLX RTS IncrementBossSword: diff --git a/newitems.asm b/newitems.asm index 5b12930..84079ff 100644 --- a/newitems.asm +++ b/newitems.asm @@ -604,25 +604,31 @@ ItemBehavior: .increment_bigkey SEP #$20 - LDA.l BigKeysBigChests - CLC : ADC.b #$10 - STA.l BigKeysBigChests + LDA.l StatsLocked : BNE + + LDA.l BigKeysBigChests + CLC : ADC.b #$10 + STA.l BigKeysBigChests + + RTS .increment_map SEP #$20 - LDA.l MapsCompasses - CLC : ADC.b #$10 - STA.l MapsCompasses - JSL.l MaybeFlagMapTotalPickup + LDA.l StatsLocked : BNE + + LDA.l MapsCompasses + CLC : ADC.b #$10 + STA.l MapsCompasses + JSL.l MaybeFlagMapTotalPickup + + RTS .increment_compass SEP #$20 - LDA.l MapsCompasses : INC : AND.b #$0F : TAX - LDA.l MapsCompasses : AND.b #$F0 : STA.l MapsCompasses - TXA : ORA.l MapsCompasses : STA.l MapsCompasses - JSL MaybeFlagCompassTotalPickup + LDA.l StatsLocked : BNE + + LDA.l MapsCompasses : INC : AND.b #$0F : TAX + LDA.l MapsCompasses : AND.b #$F0 : STA.l MapsCompasses + TXA : ORA.l MapsCompasses : STA.l MapsCompasses + JSL MaybeFlagCompassTotalPickup + + RTS .pendant diff --git a/pendantcrystalhud.asm b/pendantcrystalhud.asm index 2365290..30ed118 100644 --- a/pendantcrystalhud.asm +++ b/pendantcrystalhud.asm @@ -127,23 +127,20 @@ ShowDungeonItems: RTL ;-------------------------------------------------------------------------------- UpdateKeys: - PHX : PHP - SEP #$30 ; set 8-bit accumulator & index registers - LDA.w DungeonID : CMP.b #$1F : !BLT .skip - - LSR : TAX ; get dungeon index and store to X - - LDA.l CurrentSmallKeys ; load current key count - STA.l DungeonKeys, X ; save to main counts - - CPX.b #$00 : BNE + - STA.l HyruleCastleKeys ; copy HC to sewers - + : CPX.b #$01 : BNE + - STA.l SewerKeys ; copy sewers to HC - + - .skip - JSL.l PostItemGet - PLP : PLX + PHX : PHP + SEP #$30 + LDA.l GenericKeys : BNE .skip + LDA.w DungeonID : CMP.b #$1F : BCS .skip + LSR : TAX + LDA.l CurrentSmallKeys + CPX.b #$02 : BCC .castle_sewers + STA.l DungeonKeys, X + BRA .skip + .castle_sewers + STA.l HyruleCastleKeys : STA.l SewerKeys + .skip + JSL.l PostItemGet + PLP : PLX RTL ;$37C = Sewer Passage ;$37D = Hyrule Castle diff --git a/stats.asm b/stats.asm index d3fbaca..dd56e4f 100644 --- a/stats.asm +++ b/stats.asm @@ -117,10 +117,10 @@ DecrementSmallKeys: RTL ;-------------------------------------------------------------------------------- CountChestKeyLong: - PHP + PHX : PHP SEP #$30 JSR.w CountChestKey - PLP + PLP : PLX RTL ;-------------------------------------------------------------------------------- CountChestKey: