diff --git a/bugfixes.asm b/bugfixes.asm index 9a0e845..bc19080 100644 --- a/bugfixes.asm +++ b/bugfixes.asm @@ -274,18 +274,11 @@ SetItemRiseTimer: RTL .not_from_chest - LDA.l MultiworldJunkItemTimer : BEQ .default - LDA.l !MULTIWORLD_ITEM_PLAYER_ID : BNE .multiworld - LDA.l !MULTIWORLD_RECEIVING_ITEM : BNE .multiworld - BRA .default - - .multiworld - LDA.l !MULTIWORLD_ITEM_ID JSL.l ItemIsJunk BEQ .default .junk - LDA.l MultiworldJunkItemTimer : STA.w AncillaTimer, X + LDA.l JunkItemTimer : AND.b #$3F : STA.w AncillaTimer, X RTL .default @@ -294,10 +287,24 @@ SetItemRiseTimer: ;-------------------------------------------------------------------------------- ItemIsJunk: PHX - LDX.b #JunkItems_end-JunkItems-1 + LDA.l JunkItemTimer : BIT.b #$3F : BEQ .not_junk + BIT.b #$80 : BNE .check + LDA.l !MULTIWORLD_ITEM_PLAYER_ID : BNE .check + LDA.l !MULTIWORLD_RECEIVING_ITEM : BNE .check + BRA .not_junk + +.check + LDA.l JunkItemTimer : AND.b #$40 + BEQ + + LDA.b #JunkItems_triforce_end-JunkItems_end + + + CLC : ADC.b #JunkItems_end-JunkItems-1 + LDA.w AncillaGet, X + TAX - CMP.l JunkItems, X : BEQ .junk DEX : BPL - +.not_junk PLX LDA.b #$00 RTL @@ -330,4 +337,7 @@ JunkItems: db $D5 ; 5 Arrows db $D6 ; Good Bee .end + db $6B ; Power Star + db $6C ; Triforce Piece +.triforce_end ;-------------------------------------------------------------------------------- diff --git a/inventory.asm b/inventory.asm index e34f440..962cb94 100644 --- a/inventory.asm +++ b/inventory.asm @@ -810,12 +810,9 @@ LDA.w AncillaGet, X : CMP.b #$4A : BNE + ; collecting pre-activated flute LDA.b #$13 : JML Ancilla_SFX2_Near + ; not pre-activated flute - LDA.l !MULTIWORLD_RECEIVING_ITEM : BEQ .normal - LDA.l MultiworldJunkItemTimer : BEQ .normal - LDA.w AncillaGet, X JSL.l ItemIsJunk : BEQ .normal -.multijunk +.junk LDA.b #$3B : JML Ancilla_SFX3_Near ; what we wrote over .normal @@ -827,12 +824,9 @@ CPY.b #$4A : BNE + JSL Sound_SetSfxPanWithPlayerCoords : ORA.b #$13 : STA.w SFX2 RTL + ; normal itemget sfx - LDA.l !MULTIWORLD_RECEIVING_ITEM : BEQ .normal - LDA.l MultiworldJunkItemTimer : BEQ .normal - TYA JSL.l ItemIsJunk : BEQ .normal -.multijunk +.junk JSL Sound_SetSfxPanWithPlayerCoords : ORA.b #$3B : STA.w SFX3 RTL diff --git a/tables.asm b/tables.asm index 33d5e89..19fd8a7 100644 --- a/tables.asm +++ b/tables.asm @@ -463,9 +463,16 @@ db $00 ; #$00 = Original Behavior (default) - #$01 = Book can flip crystal switc ;-------------------------------------------------------------------------------- ; 0x1800A7 - 0x1800AE (unused) ;-------------------------------------------------------------------------------- +; 0x1800AF +; mtff ffff +; +; m - 0 = only shorten timer on multiworld items, 1 = shorten all items +; t - 0 = triforce pieces considered important, 1 = triforce pieces considered junk +; f - number of frames to show items +;-------------------------------------------------------------------------------- org $B080AF ; PC 0x1800AF -MultiworldJunkItemTimer: -db $00 ; number of frames to show junk items in a multiworld (#$00 = no change) +JunkItemTimer: +db $00 ; number of frames to show junk items (#$00 = no change) ;-------------------------------------------------------------------------------- org $B080B0 ; 0x1800B0-0x1800BF StaticDecryptionKey: