diff --git a/bookofmudora.asm b/bookofmudora.asm index 60c476f..349f8cd 100644 --- a/bookofmudora.asm +++ b/bookofmudora.asm @@ -65,7 +65,7 @@ GiveBonkItem: PHY : LDY.b #$24 : JSL.l AddInventory : PLY ; do inventory processing for a small key LDA.l CurrentSmallKeys : INC A : STA.l CurrentSmallKeys LDA.b #$2F : JSL.l Sound_SetSfx3PanLong - INC.w UpdateHUDFlag + LDA.b #$01 : STA.l UpdateHUDFlag RTL .notKey PHY : TAY : JSL.l Link_ReceiveItem : PLY diff --git a/data/customitems.4bpp b/data/customitems.4bpp index f7584f1..1ef9107 100644 Binary files a/data/customitems.4bpp and b/data/customitems.4bpp differ diff --git a/data/customitems.png b/data/customitems.png index 93adf4c..558dcde 100644 Binary files a/data/customitems.png and b/data/customitems.png differ diff --git a/dialog.asm b/dialog.asm index 53e3a45..1bead2f 100644 --- a/dialog.asm +++ b/dialog.asm @@ -61,7 +61,7 @@ LoadDialogAddressIndirect: RTL ;-------------------------------------------------------------------------------- FreeDungeonItemNotice: - STA.w ScratchBufferV + STA.l ScratchBufferV PHA : PHX : PHY PHP @@ -70,59 +70,59 @@ FreeDungeonItemNotice: REP #$10 ; set 16-bit index registers PEI.b (Scrap00) LDA.b Scrap02 : PHA - LDA.w ScratchBufferNV : PHA - LDA.w ScratchBufferNV+1 : PHA + LDA.l ScratchBufferNV : PHA + LDA.l ScratchBufferNV+1 : PHA ;-------------------------------- LDA.l FreeItemText : BNE + : JMP .skip : + - LDA.b #$00 : STA.w ScratchBufferNV ; initialize scratch + LDA.b #$00 : STA.l ScratchBufferNV ; initialize scratch LDA.l FreeItemText : AND.b #$01 : BEQ + ; show message for general small key - LDA.w ScratchBufferV : CMP.b #$24 : BNE + ; general small key + LDA.l ScratchBufferV : CMP.b #$24 : BNE + ; general small key %CopyDialog(Notice_SmallKeyOf) LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer %CopyDialog(Notice_Self) JMP .done + : LDA.l FreeItemText : AND.b #$02 : BEQ + ; show message for general compass - LDA.w ScratchBufferV : CMP.b #$25 : BNE + ; general compass + LDA.l ScratchBufferV : CMP.b #$25 : BNE + ; general compass %CopyDialog(Notice_CompassOf) LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer %CopyDialog(Notice_Self) JMP .done + : LDA.l FreeItemText : AND.b #$04 : BEQ + ; show message for general map - LDA.w ScratchBufferV : CMP.b #$33 : BNE + ; general map + LDA.l ScratchBufferV : CMP.b #$33 : BNE + ; general map %CopyDialog(Notice_MapOf) LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer %CopyDialog(Notice_Self) JMP .done + : LDA.l FreeItemText : AND.b #$08 : BEQ + ; show message for general big key - LDA.w ScratchBufferV : CMP.b #$32 : BNE + ; general big key + LDA.l ScratchBufferV : CMP.b #$32 : BNE + ; general big key %CopyDialog(Notice_BigKeyOf) LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer %CopyDialog(Notice_Self) JMP .done + LDA.l FreeItemText : AND.b #$04 : BEQ + ; show message for dungeon map - LDA.w ScratchBufferV : AND.b #$F0 ; looking at high bits only + LDA.l ScratchBufferV : AND.b #$F0 ; looking at high bits only CMP.b #$70 : BNE + ; map of... %CopyDialog(Notice_MapOf) JMP .dungeon + : LDA.l FreeItemText : AND.b #$02 : BEQ + ; show message for dungeon compass - LDA.w ScratchBufferV : AND.b #$F0 : CMP.b #$80 : BNE + ; compass of... + LDA.l ScratchBufferV : AND.b #$F0 : CMP.b #$80 : BNE + ; compass of... %CopyDialog(Notice_CompassOf) JMP .dungeon + : LDA.l FreeItemText : AND.b #$08 : BEQ + ; show message for dungeon big key - LDA.w ScratchBufferV : AND.b #$F0 : CMP.b #$90 : BNE + ; big key of... + LDA.l ScratchBufferV : AND.b #$F0 : CMP.b #$90 : BNE + ; big key of... %CopyDialog(Notice_BigKeyOf) JMP .dungeon + : LDA.l FreeItemText : AND.b #$01 : BEQ + ; show message for dungeon small key - LDA.w ScratchBufferV : AND.b #$F0 : CMP.b #$A0 : BNE + ; small key of... - LDA.w ScratchBufferV : CMP.b #$AF : BNE ++ : JMP .skip : ++ + LDA.l ScratchBufferV : AND.b #$F0 : CMP.b #$A0 : BNE + ; small key of... + LDA.l ScratchBufferV : CMP.b #$AF : BNE ++ : JMP .skip : ++ %CopyDialog(Notice_SmallKeyOf) - LDA.b #$01 : STA.w ScratchBufferNV ; set up a flip for small keys + LDA.b #$01 : STA.l ScratchBufferNV ; set up a flip for small keys BRA .dungeon + : LDA.l FreeItemText : AND.b #$20 : BEQ + ; show message for crystal - LDA.w ScratchBufferV : CMP.b #$B0 : !BLT + ; crystal # + LDA.l ScratchBufferV : CMP.b #$B0 : !BLT + ; crystal # CMP.b #$B7 : !BGE + %CopyDialog(Notice_Crystal) JMP .crystal @@ -131,14 +131,14 @@ FreeDungeonItemNotice: .dungeon LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer - LDA.w ScratchBufferV + LDA.l ScratchBufferV AND.b #$0F - STA.w ScratchBufferNV+1 - LDA.w ScratchBufferNV : BEQ + - LDA.w ScratchBufferNV - LDA.b #$0F : !SUB.w ScratchBufferNV+1 : STA.w ScratchBufferNV+1 ; flip the values for small keys + STA.l ScratchBufferNV+1 + LDA.l ScratchBufferNV : BEQ + + LDA.l ScratchBufferNV + LDA.b #$0F : !SUB.l ScratchBufferNV+1 : STA.l ScratchBufferNV+1 ; flip the values for small keys + - LDA.w ScratchBufferNV+1 + LDA.l ScratchBufferNV+1 ASL : TAX REP #$20 LDA.l DungeonItemIDMap,X : CMP.w #$0003 : BCC .hc_sewers @@ -152,7 +152,7 @@ FreeDungeonItemNotice: JMP.w .done + SEP #$20 - LDA.w ScratchBufferNV+1 + LDA.l ScratchBufferNV+1 CMP.b #$00 : BNE + ; ...light world %CopyDialog(Notice_LightWorld) : JMP .done + : CMP.b #$01 : BNE + ; ...dark world @@ -190,7 +190,7 @@ FreeDungeonItemNotice: .crystal LDA.l DialogReturnPointer : DEC #2 : STA.l DialogOffsetPointer - LDA.w ScratchBufferV + LDA.l ScratchBufferV AND.b #$0F ; looking at low bits only CMP.b #$00 : BNE + %CopyDialog(Notice_Six) : JMP .done @@ -216,8 +216,8 @@ FreeDungeonItemNotice: ;-------------------------------- .skip - PLA : STA.w ScratchBufferNV+1 - PLA : STA.w ScratchBufferNV + PLA : STA.l ScratchBufferNV+1 + PLA : STA.l ScratchBufferNV PLA : STA.b Scrap02 REP #$20 PLA : STA.b Scrap00 diff --git a/entrances.asm b/entrances.asm index 6431555..b7124cb 100644 --- a/entrances.asm +++ b/entrances.asm @@ -155,7 +155,7 @@ JML.l AllowStartFromExitReturn STZ.b SubSubModule STZ.w DeathReloadFlag STZ.w RespawnFlag - INC.w UpdateHUDFlag + LDA.b #$01 : STA.l UpdateHUDFlag JSL Equipment_SearchForEquippedItemLong JSL HUD_RebuildLong2 diff --git a/events.asm b/events.asm index 8741f09..bb8cd1d 100644 --- a/events.asm +++ b/events.asm @@ -22,7 +22,7 @@ JML.l ReturnFromOnDrawHud OnDungeonEntrance: STA.l PegColor ; thing we wrote over JSL MaybeFlagDungeonTotalsEntrance - INC.w UpdateHUDFlag + LDA.b #$01 : STA.l UpdateHUDFlag RTL ;-------------------------------------------------------------------------------- OnDungeonBossExit: @@ -46,7 +46,7 @@ OnDungeonExit: STA.w DungeonID : STZ.w Map16ChangeIndex ; thing we wrote over PHA : PHP - INC.w UpdateHUDFlag + LDA.b #$01 : STA.l UpdateHUDFlag JSL.l HUD_RebuildLong JSL.l FloodGateResetInner JSL.l SetSilverBowMode @@ -226,7 +226,7 @@ OnOWTransition: PHP SEP #$20 ; set 8-bit accumulator LDA.b #$FF : STA.l RNGLockIn ; clear lock-in - INC.w UpdateHUDFlag + LDA.b #$01 : STA.l UpdateHUDFlag PLP RTL ;-------------------------------------------------------------------------------- diff --git a/hooks.asm b/hooks.asm index d5de77b..3d66bdd 100644 --- a/hooks.asm +++ b/hooks.asm @@ -1420,7 +1420,7 @@ RebuildHUD_update_long: JSR.w RebuildHUD_update : RTL RefreshIcon_UpdateHUD: -INC.w UpdateHUDFlag +LDA.b #$01 : STA.l UpdateHUDFlag JSR.w RebuildHUD JSR.w UpdateEquippedItem RTS diff --git a/inventory.asm b/inventory.asm index 259cfcb..0e977b4 100644 --- a/inventory.asm +++ b/inventory.asm @@ -364,7 +364,7 @@ Link_ReceiveItem_HUDRefresh: + JSL.l HUD_RefreshIconLong ; thing we wrote over - INC.w UpdateHUDFlag + LDA.b #$01 : STA.l UpdateHUDFlag JSL.l PostItemGet RTL ;-------------------------------------------------------------------------------- @@ -379,7 +379,7 @@ HandleBombAbsorbtion: LDA.b #$04 : STA.w ItemCursor ; set selected item to bombs LDA.b #$01 : STA.w CurrentYItem ; set selected item to bombs JSL.l HUD_RebuildLong - INC.w UpdateHUDFlag + LDA.b #$01 : STA.l UpdateHUDFlag + RTL ;-------------------------------------------------------------------------------- diff --git a/msu.asm b/msu.asm index 2ca3da8..63188e8 100644 --- a/msu.asm +++ b/msu.asm @@ -164,27 +164,27 @@ CheckMusicLoadRequest: .continue LDA.l TournamentSeed : BNE +++ - LDA.w MSUPackRequest - CMP.w MSUPackCurrent : BEQ +++ - CMP.w MSUPackCount : !BLT ++ + LDA.l MSUPackRequest + CMP.l MSUPackCurrent : BEQ +++ + CMP.l MSUPackCount : !BLT ++ CMP.b #$FE : !BLT + - STA.w MSUPackCurrent + STA.l MSUPackCurrent SEP #$10 LDA.b #$00 LDX.b #$07 - - STA.w MSUFallbackTable,X + STA.l MSUFallbackTable,X DEX : BPL - REP #$10 BRA +++ - + : LDA.w MSUPackCurrent : STA.w MSUPackRequest - ++ : STA.w MSUPackCurrent + + : LDA.l MSUPackCurrent : STA.l MSUPackRequest + ++ : STA.l MSUPackCurrent JSL MSUInit_check_fallback +++ LDA.w MusicControlRequest : CMP.b #$08 : BEQ ++ ; Mirror SFX is not affected by NoBGM or pack $FE LDA.l NoBGM : BNE + - LDA.w MSUPackCurrent : CMP.b #$FE : BNE ++ + LDA.l MSUPackCurrent : CMP.b #$FE : BNE ++ + : JMP .mute ++ @@ -240,7 +240,7 @@ CheckMusicLoadRequest: LDA.l MusicShuffleTable-1,X : DEC : PHA AND.b #$07 : TAY PLA : LSR #3 : TAX - LDA.w MSUFallbackTable,X : BEQ .secondary_fallback : CMP.b #$FF : BEQ .mute + LDA.l MSUFallbackTable,X : BEQ .secondary_fallback : CMP.b #$FF : BEQ .mute - : CPY #$00 : BEQ + LSR : DEY : BRA - @@ -348,7 +348,7 @@ SpiralStairsPreCheck: + LDA.l BigKeyField : AND.w #$0004 : BEQ .done ; Check that we have the GT big key - LDA.w MSUFallbackTable+7 : AND.w #$0004 : BEQ .done ; Check that we have the extended track + LDA.l MSUFallbackTable+7 : AND.w #$0004 : BEQ .done ; Check that we have the extended track .fade LDX.b #$F1 : STX.w MusicControlRequest @@ -401,10 +401,10 @@ MSUInit: PHP LDA.b #$00 - STA.w MSULoadedTrack - STA.w MSUResumeTrack - STA.w MSUResumeTime : STA.w MSUResumeTime+1 : STA.w MSUResumeTime+2 : STA.w MSUResumeTime+3 - STA.w MSUResumeControl + STA.l MSULoadedTrack + STA.l MSUResumeTrack + STA.l MSUResumeTime : STA.l MSUResumeTime+1 : STA.l MSUResumeTime+2 : STA.l MSUResumeTime+3 + STA.l MSUResumeControl LDA.l NoBGM : BNE .done @@ -431,7 +431,7 @@ MSUInit: .wait_pack LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_AUDIO_BUSY : BNE .wait_pack LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_TRACK_MISSING : BEQ .check_pack - TXA : STA.w MSUPackCount + TXA : STA.l MSUPackCount BRA + ; Check the current MSU-1 pack for tracks that require SPC fallback @@ -453,7 +453,7 @@ MSUInit: LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_TRACK_MISSING : BNE + SEC + - LDA.w MSUFallbackTable,X : ROL : STA.w MSUFallbackTable,X + LDA.l MSUFallbackTable,X : ROL : STA.l MSUFallbackTable,X DEY : BPL .next_track DEX : BPL + @@ -474,11 +474,11 @@ MSUInit: ;-------------------------------------------------------------------------------- MSUStopPlaying: PHA : XBA : PHA - LDA.w MSULoadedTrack + LDA.l MSULoadedTrack JSR IsResumableTrack : BCC + ; dont save if we already saved recently REP #$20 - LDA.w MSUResumeTrack : AND #$00FF : BEQ ++ + LDA.l MSUResumeTrack : AND #$00FF : BEQ ++ LDA.l NMIFrames : !SUB MSUResumeTime : PHA LDA.l NMIFrames+2 : SBC MSUResumeTime+2 : BNE +++ PLA : CMP.l MSUResumeTimer : !BLT .too_early @@ -487,12 +487,12 @@ PHA : XBA : PHA PLA ++ ; saving - LDA.l NMIFrames : STA.w MSUResumeTime - LDA.l NMIFrames+2 : STA.w MSUResumeTime+2 + LDA.l NMIFrames : STA.l MSUResumeTime + LDA.l NMIFrames+2 : STA.l MSUResumeTime+2 SEP #$20 - LDA.w MSULoadedTrack : STA.w MSUResumeTrack - LDA.b #$00 : STA.w MSULoadedTrack ; dont take this path if we're calling again + LDA.l MSULoadedTrack : STA.l MSUResumeTrack + LDA.b #$00 : STA.l MSULoadedTrack ; dont take this path if we're calling again LDA.b #!FLAG_MSU_RESUME : STA.w MSUCTL ; save this track's position PLA : XBA : PLA RTS @@ -523,23 +523,23 @@ MSUMain: LDX.w MusicControl : BEQ + JMP .command_ff + - LDA.w MSUDelayedCommand : BEQ .do_fade + LDA.l MSUDelayedCommand : BEQ .do_fade .check_busy LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_AUDIO_BUSY : BNE - .ready LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_TRACK_MISSING : BNE - .start - LDA.w MSUResumeControl : BIT.b #!FLAG_RESUME_CANCEL : BEQ + - EOR.b #!FLAG_RESUME_CANCEL : STA.w MSUResumeControl - REP #$20 : LDA.w MSULoadedTrack : STA.w MSUTRACK : SEP #$20 + LDA.l MSUResumeControl : BIT.b #!FLAG_RESUME_CANCEL : BEQ + + EOR.b #!FLAG_RESUME_CANCEL : STA.l MSUResumeControl + REP #$20 : LDA.l MSULoadedTrack : STA.w MSUTRACK : SEP #$20 BRA - + LDA.b #!VAL_VOLUME_FULL STA.w TargetVolume - LDA.w MSUResumeControl : BIT.b #!FLAG_RESUME_FADEIN : BEQ + - EOR.b #!FLAG_RESUME_FADEIN : STA.w MSUResumeControl + LDA.l MSUResumeControl : BIT.b #!FLAG_RESUME_FADEIN : BEQ + + EOR.b #!FLAG_RESUME_FADEIN : STA.l MSUResumeControl LDA.b #$00 BRA ++ + @@ -551,17 +551,17 @@ MSUMain: LDA.w CurrentMSUTrack : DEC : PHA AND.b #$07 : TAY PLA : LSR #3 : TAX - LDA.w MSUFallbackTable,X : BEQ +++ : CMP.b #$FF : BEQ ++ + LDA.l MSUFallbackTable,X : BEQ +++ : CMP.b #$FF : BEQ ++ - : CPY #$00 : BEQ + LSR : DEY : BRA - + AND.b #$01 : BEQ +++ - ++ : LDA.w MSUDelayedCommand + ++ : LDA.l MSUDelayedCommand +++ : STA.w MSUCTL LDA.b #$00 - STA.w MSUDelayedCommand + STA.l MSUDelayedCommand JML SPCContinue .do_fade: @@ -624,9 +624,9 @@ MSUMain: + CPX.w CurrentControlRequest : BEQ - LDA.b #$00 : XBA - LDA.w MSUPackCurrent : BEQ + - - : CMP.w MSUPackCount : !BLT + - !SUB.w MSUPackCount : BRA - + LDA.l MSUPackCurrent : BEQ + + - : CMP.l MSUPackCount : !BLT + + !SUB.l MSUPackCount : BRA - + JSR MSUStopPlaying @@ -639,11 +639,11 @@ MSUMain: DEX : BNE - + STA.w MSUTRACK - STA.w MSULoadedTrack + STA.l MSULoadedTrack SEP #$20 PLX - TXA : CMP.w MSUResumeTrack : BNE + ; dont resume if too late + TXA : CMP.l MSUResumeTrack : BNE + ; dont resume if too late REP #$20 LDA.l NMIFrames : !SUB MSUResumeTime : PHA LDA.l NMIFrames+2 : SBC MSUResumeTime+2 : BNE ++ @@ -656,8 +656,8 @@ MSUMain: SEP #$20 LDA.b #!FLAG_RESUME_CANCEL .done_resume: - STA.w MSUResumeControl - LDA.b #$00 : STA.w MSUResumeTrack + STA.l MSUResumeControl + LDA.b #$00 : STA.l MSUResumeTrack + CPX #07 : BNE + ; Kakariko Village LDA.b GameMode : CMP #$07 : BNE + @@ -667,12 +667,12 @@ MSUMain: + TXA ++ - STA.w MSULoadedTrack + STA.l MSULoadedTrack STX.w CurrentMSUTrack - LDA.w MSUPackCurrent : CMP #$FE : !BLT + + LDA.l MSUPackCurrent : CMP #$FE : !BLT + LDA.b #$00 : BRA ++ + : LDA.l MSUTrackList-1,X - ++ : STA.w MSUDelayedCommand + ++ : STA.l MSUDelayedCommand LDA.l MSUExtendedFallbackList-1,X CMP.b #17 : BEQ + CMP.b #22 : BEQ + @@ -722,9 +722,9 @@ PendantFanfareWait: LDA.w MSUID+2 : CMP.w #!VAL_MSU_ID_23 : BNE .spc LDA.w MSUID+4 : CMP.w #!VAL_MSU_ID_45 : BNE .spc SEP #$20 - LDA.w MSUPackCurrent : CMP #$FE : !BGE .spc + LDA.l MSUPackCurrent : CMP #$FE : !BGE .spc LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_TRACK_MISSING : BNE .spc - LDA.w MSUDelayedCommand : BNE .continue + LDA.l MSUDelayedCommand : BNE .continue LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_AUDIO_PLAYING : BEQ .done .continue jml PendantFanfareContinue @@ -746,9 +746,9 @@ CrystalFanfareWait: LDA.w MSUID+2 : CMP.w #!VAL_MSU_ID_23 : BNE .spc LDA.w MSUID+4 : CMP.w #!VAL_MSU_ID_45 : BNE .spc SEP #$20 - LDA.w MSUPackCurrent : CMP.b #$FE : !BGE .spc + LDA.l MSUPackCurrent : CMP.b #$FE : !BGE .spc LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_TRACK_MISSING : BNE .spc - LDA.w MSUDelayedCommand : BNE .continue + LDA.l MSUDelayedCommand : BNE .continue LDA.w MSUSTATUS : BIT.b #!FLAG_MSU_STATUS_AUDIO_PLAYING : BEQ .done .continue jml CrystalFanfareContinue diff --git a/newhud.asm b/newhud.asm index 16e94b1..18a3955 100644 --- a/newhud.asm +++ b/newhud.asm @@ -65,7 +65,7 @@ NewHUD_DrawArrows: ;================================================================================ NewHUD_DrawGoal: REP #$20 - LDA.w UpdateHUDFlag : BEQ .no_goal + LDA.l UpdateHUDFlag : BEQ .no_goal LDA.l GoalItemRequirement : BEQ .no_goal LDA.l GoalItemIcon : STA.w HUDGoalIndicator @@ -122,7 +122,7 @@ NewHUD_DrawKeys: ;================================================================================ NewHUD_DrawDungeonCounters: - LDA.w UpdateHUDFlag : BEQ NewHUD_DrawPrizeIcon + LDA.l UpdateHUDFlag : BEQ NewHUD_DrawPrizeIcon LDA.l CompassMode : ORA.l MapHUDMode : BIT.b #$03 : BEQ NewHUD_DrawPrizeIcon LDX.b IndoorsFlag : BNE + JMP.w NewHUD_DrawMagicMeter @@ -147,7 +147,7 @@ NewHUD_DrawPrizeIcon: LDA.b GameMode CMP.b #$12 : BEQ .no_prize CMP.b #$0E : BEQ + - LDA.w UpdateHUDFlag : BEQ NewHUD_DrawItemCounter + LDA.l UpdateHUDFlag : BEQ NewHUD_DrawItemCounter + LDA.w DungeonID CMP.b #$1A : BCS .no_prize @@ -197,7 +197,7 @@ NewHUD_DrawPrizeIcon: ;================================================================================ NewHUD_DrawItemCounter: REP #$20 - LDA.w UpdateHUDFlag : BEQ NewHUD_DrawMagicMeter + LDA.l UpdateHUDFlag : BEQ NewHUD_DrawMagicMeter LDA.l ItemCounterHUD : AND.w #$00FF : BEQ NewHUD_DrawMagicMeter LDA.w #!SlashTile : STA.w HUDGoalIndicator+$08 LDA.l TotalItemCount : CMP.w #1000 : BCS .item_four_digits @@ -263,7 +263,7 @@ NewHUD_DrawMagicMeter: ;================================================================================ NewHUD_DoneDrawing: - STZ.w UpdateHUDFlag + LDA.b #$00 : STA.l UpdateHUDFlag PLB RTL diff --git a/newitems.asm b/newitems.asm index ad68b13..910ba74 100644 --- a/newitems.asm +++ b/newitems.asm @@ -429,7 +429,7 @@ ItemBehavior: .single_arrow LDA.l ArrowMode : BEQ + LDA.l CurrentArrows : INC : STA.l CurrentArrows ; Should be sole write to this address - INC.w UpdateHUDFlag ; in retro/rupee bow mode. + LDA.b #$01 : STA.l UpdateHUDFlag ; in retro/rupee bow mode. + RTS @@ -806,15 +806,15 @@ ResolveLootID: JMP.w .have_item .rng_single - JSL.l GetRNGItemSingle : STA.w ScratchBufferV+6 + JSL.l GetRNGItemSingle : STA.l ScratchBufferV+6 XBA : JSR.w MarkRNGItemSingle LDA.b #$FF : STA.l RNGLockIn ; clear lock-in - LDA.w ScratchBufferV+6 : JMP.w .get_item + LDA.l ScratchBufferV+6 : JMP.w .get_item .rng_multi - JSL.l GetRNGItemMulti : STA.w ScratchBufferV+6 + JSL.l GetRNGItemMulti : STA.l ScratchBufferV+6 LDA.b #$FF : STA.l RNGLockIn ; clear lock-in - LDA.w ScratchBufferV+6 : JMP.w .get_item + LDA.l ScratchBufferV+6 : JMP.w .get_item ;-------------------------------------------------------------------------------- DungeonItemMasks: @@ -939,32 +939,32 @@ GetRNGItemSingle: CMP.l RNGSingleTableSize : !BGE .single_reroll +++ - STA.w ScratchBufferV ; put our index value here + STA.l ScratchBufferV ; put our index value here LDX.b #$00 TAY .recheck TYA JSR.w CheckSingleItem : BEQ .single_unused ; already used - LDA.w ScratchBufferV : INC ; increment index + LDA.l ScratchBufferV : INC ; increment index CMP.l RNGSingleTableSize : BCC +++ : LDA.b #$00 : +++ ; rollover index if needed - STA.w ScratchBufferV ; store index + STA.l ScratchBufferV ; store index INX : TAY : TXA : CMP.l RNGSingleTableSize : BCC .recheck LDA.b #$5A ; everything is gone, default to null item - MAKE THIS AN OPTION FOR THIS AND THE OTHER ONE BRA .single_done .single_unused - LDA.w ScratchBufferV + LDA.l ScratchBufferV .single_done TAX : LDA.l RNGSingleItemTable, X - XBA : LDA.w ScratchBufferV : STA.l RNGLockIn : XBA + XBA : LDA.l ScratchBufferV : STA.l RNGLockIn : XBA PLY RTL ;-------------------------------------------------------------------------------- CheckSingleItem: LSR #3 : TAX - LDA.l RNGItem, X : STA.w ScratchBufferV+2 ; load value to temporary + LDA.l RNGItem, X : STA.l ScratchBufferV+2 ; load value to temporary PHX - LDA.w ScratchBufferV : AND.b #$07 : TAX ; load 0-7 part into X - LDA.w ScratchBufferV+2 + LDA.l ScratchBufferV : AND.b #$07 : TAX ; load 0-7 part into X + LDA.l ScratchBufferV+2 --- CPX.b #$00 : BEQ +++ LSR @@ -976,10 +976,10 @@ CheckSingleItem: RTS ;-------------------------------------------------------------------------------- MarkRNGItemSingle: - LSR #3 : STA.w ScratchBufferV+1 : TAX + LSR #3 : STA.l ScratchBufferV+1 : TAX LDA.l RNGItem, X - STA.w ScratchBufferV+2 - LDA.w ScratchBufferV : AND.b #$07 : TAX ; load 0-7 part into X + STA.l ScratchBufferV+2 + LDA.l ScratchBufferV : AND.b #$07 : TAX ; load 0-7 part into X LDA.b #01 --- CPX.b #$00 : BEQ +++ @@ -989,9 +989,9 @@ MarkRNGItemSingle: +++ PHA - LDA.w ScratchBufferV+1 : TAX + LDA.l ScratchBufferV+1 : TAX PLA - ORA.w ScratchBufferV+2 + ORA.l ScratchBufferV+2 STA.l RNGItem, X RTS ;-------------------------------------------------------------------------------- diff --git a/pendantcrystalhud.asm b/pendantcrystalhud.asm index 56959b1..8f36de3 100644 --- a/pendantcrystalhud.asm +++ b/pendantcrystalhud.asm @@ -17,7 +17,7 @@ RTL ;================================================================================ HUDRebuildIndoorHole: PHA - INC.w UpdateHUDFlag + LDA.b #$01 : STA.l UpdateHUDFlag LDA.l GenericKeys : BEQ .normal .generic PLA @@ -30,7 +30,7 @@ RTL RTL ;================================================================================ HUDRebuildIndoor: - INC.w UpdateHUDFlag + LDA.b #$01 : STA.l UpdateHUDFlag LDA.l GenericKeys : BEQ .normal .generic LDA.b #$00 : STA.l RoomDarkness diff --git a/quickswap.asm b/quickswap.asm index 5e06faf..af55f57 100644 --- a/quickswap.asm +++ b/quickswap.asm @@ -10,7 +10,7 @@ QuickSwap: LDA.l QuickSwapFlag : BEQ .done LDA.w ItemCursor : BEQ .done ; Skip everything if we don't have any items - INC.w UpdateHUDFlag + LDA.b #$01 : STA.l UpdateHUDFlag LDY.b #$14 PHX XBA ; restore the stashed value diff --git a/ram.asm b/ram.asm index 1968efc..ee40178 100644 --- a/ram.asm +++ b/ram.asm @@ -376,6 +376,13 @@ SpriteCoordCacheY = $7E0FDA ; ; NoMenu = $7E0FFC ; When set prevents menu, mirror, medallions ; +;=================================================================================================== +;=================================================================================================== +; DO NOT ADD ANY RANDOMIZER VARIABLES TO THE SPACE FROM $1100 to $1FFF +;--------------------------------------------------------------------------------------------------- +; It causes isses with major glitches +;=================================================================================================== +;=================================================================================================== GFXStripes = $7E1000 ; Used by stripes for arbitrary VRAM transfers. $100 bytes. RoomStripes = $7E1100 ; Used for room drawing. ; @@ -388,26 +395,7 @@ DelayTimer = $7E1CE9 ; ; TextID = $7E1CF0 ; Message ID and page. Word length. ; -UpdateHUDFlag = $7E1E03 ; Flag used to mark HUD updates and avoid heavy code segments. - ; -ToastBuffer = $7E1E0E ; Multiworld buffer. Word length. - ; -MSUResumeTime = $7E1E6B ; Mirrored MSU block -MSUResumeControl = $7E1E6F ; -MSUFallbackTable = $7E1E70 ; -MSUDelayedCommand = $7E1E79 ; -MSUPackCount = $7E1E7A ; -MSUPackCurrent = $7E1E7B ; -MSUPackRequest = $7E1E7C ; -MSULoadedTrack = $7E1E7D ; -MSUResumeTrack = $7E1E7F ; -ClockHours = $7E1E90 ; Clock Hours -ClockMinutes = $7E1E94 ; Clock Minutes -ClockSeconds = $7E1E98 ; Clock Seconds -ClockBuffer = $7E1E9C ; Clock Temporary -ScratchBufferNV = $7E1EA0 ; Non-volatile scratch buffer. Must preserve values through return. -ScratchBufferV = $7E1EB0 ; Volatile scratch buffer. Can clobber at will. ;================================================================================ ; UNMIRRORED WRAM @@ -419,6 +407,28 @@ TileUploadBuffer = $7EA180 ; 0x300 bytes ; ItemGetGFX = $7EBD40 ; Item receipt graphics location ; +UpdateHUDFlag = $7EBE00 ; Flag used to mark HUD updates and avoid heavy code segments. + ; +ToastBuffer = $7EBE02 ; Multiworld buffer. Word length. + ; + +MSUResumeTime = $7EBE6B ; Mirrored MSU block +MSUResumeControl = $7EBE6F ; +MSUFallbackTable = $7EBE70 ; +MSUDelayedCommand = $7EBE79 ; +MSUPackCount = $7EBE7A ; +MSUPackCurrent = $7EBE7B ; +MSUPackRequest = $7EBE7C ; +MSULoadedTrack = $7EBE7D ; +MSUResumeTrack = $7EBE7F ; + +ClockHours = $7EBE90 ; Clock Hours +ClockMinutes = $7EBE94 ; Clock Minutes +ClockSeconds = $7EBE98 ; Clock Seconds +ClockBuffer = $7EBE9C ; Clock Temporary +ScratchBufferNV = $7EBEA0 ; Non-volatile scratch buffer. Must preserve values through return. +ScratchBufferV = $7EBEB0 ; Volatile scratch buffer. Can clobber at will. + RoomFade = $7EC005 ; Flags fade to black on room transitions. Word length. FadeTimer = $7EC007 ; Timer for transition fading and mosaics. Word length. FadeDirection = $7EC009 ; Word length @@ -861,23 +871,23 @@ endmacro %assertRAM(MessageSubModule, $7E1CD8) %assertRAM(MessageCursor, $7E1CE8) %assertRAM(DelayTimer, $7E1CE9) -%assertRAM(TextID, $7E1CF0) -%assertRAM(ToastBuffer, $7E1E0E) -%assertRAM(MSUResumeTime, $7E1E6B) -%assertRAM(MSUResumeControl, $7E1E6F) -%assertRAM(MSUFallbackTable, $7E1E70) -%assertRAM(MSUDelayedCommand, $7E1E79) -%assertRAM(MSUPackCount, $7E1E7A) -%assertRAM(MSUPackCurrent, $7E1E7B) -%assertRAM(MSUPackRequest, $7E1E7C) -%assertRAM(MSULoadedTrack, $7E1E7D) -%assertRAM(MSUResumeTrack, $7E1E7F) -%assertRAM(ClockHours, $7E1E90) -%assertRAM(ClockMinutes, $7E1E94) -%assertRAM(ClockSeconds, $7E1E98) -%assertRAM(ClockBuffer, $7E1E9C) -%assertRAM(ScratchBufferNV, $7E1EA0) -%assertRAM(ScratchBufferV, $7E1EB0) +;%assertRAM(TextID, $7E1CF0) +;%assertRAM(ToastBuffer, $7E1E0E) +;%assertRAM(MSUResumeTime, $7E1E6B) +;%assertRAM(MSUResumeControl, $7E1E6F) +;%assertRAM(MSUFallbackTable, $7E1E70) +;%assertRAM(MSUDelayedCommand, $7E1E79) +;%assertRAM(MSUPackCount, $7E1E7A) +;%assertRAM(MSUPackCurrent, $7E1E7B) +;%assertRAM(MSUPackRequest, $7E1E7C) +;%assertRAM(MSULoadedTrack, $7E1E7D) +;%assertRAM(MSUResumeTrack, $7E1E7F) +;%assertRAM(ClockHours, $7E1E90) +;%assertRAM(ClockMinutes, $7E1E94) +;%assertRAM(ClockSeconds, $7E1E98) +;%assertRAM(ClockBuffer, $7E1E9C) +;%assertRAM(ScratchBufferNV, $7E1EA0) +;%assertRAM(ScratchBufferV, $7E1EB0) %assertRAM(TileUploadBuffer, $7EA180) %assertRAM(RoomFade, $7EC005) %assertRAM(FadeTimer, $7EC007) diff --git a/retro.asm b/retro.asm index c2c178c..4dbb574 100644 --- a/retro.asm +++ b/retro.asm @@ -11,7 +11,7 @@ LoadBombCount16: .infinite RTL StoreBombCount: - INC.w UpdateHUDFlag + LDA.b #$01 : STA.l UpdateHUDFlag PHA : LDA.l InfiniteBombs : BEQ .finite .infinite PLA : LDA.b #$01 : RTL diff --git a/stats.asm b/stats.asm index 7322ab0..d315fef 100644 --- a/stats.asm +++ b/stats.asm @@ -78,12 +78,12 @@ IncrementSmallKeys: STA.l CurrentSmallKeys ; thing we wrote over, write small key count PHX LDA.l StatsLocked : BNE + - LDA.l SmallKeyCounter : INC : STA.l SmallKeyCounter + LDA.l SmallKeyCounter : INC : STA.l SmallKeyCounter + JSL.l UpdateKeys PHY : LDY.b #24 : JSL.l AddInventory : PLY JSL.l HUD_RebuildLong - INC.w UpdateHUDFlag + LDA.b #$01 : STA.l UpdateHUDFlag PLX RTL ;-------------------------------------------------------------------------------- @@ -106,7 +106,7 @@ IncrementSmallKeysNoPrimary: ++ PLP + - INC.w UpdateHUDFlag + LDA.b #$01 : STA.l UpdateHUDFlag JSL.l HUD_RebuildLong PLX RTL diff --git a/timer.asm b/timer.asm index e37d3b8..b501a15 100644 --- a/timer.asm +++ b/timer.asm @@ -36,12 +36,12 @@ endmacro ;-------------------------------------------------------------------------------- CalculateTimer: LDA.w #$0000 - STA.w ClockHours ; clear digit storage - STA.w ClockHours+2 - STA.w ClockMinutes - STA.w ClockMinutes+2 - STA.w ClockSeconds - STA.w ClockSeconds+2 + STA.l ClockHours ; clear digit storage + STA.l ClockHours+2 + STA.l ClockMinutes + STA.l ClockMinutes+2 + STA.l ClockSeconds + STA.l ClockSeconds+2 LDA.l TimerStyle : AND.w #$00FF : CMP.w #$0002 : BNE + ; Stopwatch Mode %Sub32(NMIFrames,ChallengeTimer,ClockBuffer) @@ -57,8 +57,8 @@ CalculateTimer: LDA.l NMIFrames+2 : STA.l ChallengeTimer+2 RTS ++ CMP.w #$0001 : BNE ++ ; Negative Time - LDA.w ClockBuffer : EOR.w #$FFFF : !ADD.w #$0001 : STA.w ClockBuffer - LDA.w ClockBuffer+2 : EOR.w #$FFFF : ADC.w #$0000 : STA.w ClockBuffer+2 + LDA.l ClockBuffer : EOR.w #$FFFF : !ADD.w #$0001 : STA.l ClockBuffer + LDA.l ClockBuffer+2 : EOR.w #$FFFF : ADC.w #$0000 : STA.l ClockBuffer+2 LDA.w #$0001 : STA.l ClockStatus ; Set Negative Mode BRA .prepDigits ++ CMP.w #$0002 : BNE ++ ; OHKO @@ -92,12 +92,12 @@ CalculateTimer: %Sub32(ClockBuffer,.second,ClockBuffer) : BRA - + - LDA.w ClockHours : !ADD.w #$2490 : STA.w ClockHours ; convert decimal values to tiles - LDA.w ClockHours+2 : !ADD.w #$2490 : STA.w ClockHours+2 - LDA.w ClockMinutes : !ADD.w #$2490 : STA.w ClockMinutes - LDA.w ClockMinutes+2 : !ADD.w #$2490 : STA.w ClockMinutes+2 - LDA.w ClockSeconds : !ADD.w #$2490 : STA.w ClockSeconds - LDA.w ClockSeconds+2 : !ADD.w #$2490 : STA.w ClockSeconds+2 + LDA.l ClockHours : !ADD.w #$2490 : STA.l ClockHours ; convert decimal values to tiles + LDA.l ClockHours+2 : !ADD.w #$2490 : STA.l ClockHours+2 + LDA.l ClockMinutes : !ADD.w #$2490 : STA.l ClockMinutes + LDA.l ClockMinutes+2 : !ADD.w #$2490 : STA.l ClockMinutes+2 + LDA.l ClockSeconds : !ADD.w #$2490 : STA.l ClockSeconds + LDA.l ClockSeconds+2 : !ADD.w #$2490 : STA.l ClockSeconds+2 RTS ;-------------------------------------------------------------------------------- .hour @@ -148,14 +148,14 @@ DrawChallengeTimer: BRA ++ + ; Show Timer LDA.l ClockStatus : AND.w #$0001 : !ADD.w #$2804 : STA.l HUDTileMapBuffer+$94 - LDA.w ClockHours+2 : STA.l HUDTileMapBuffer+$96 - LDA.w ClockHours : STA.l HUDTileMapBuffer+$98 + LDA.l ClockHours+2 : STA.l HUDTileMapBuffer+$96 + LDA.l ClockHours : STA.l HUDTileMapBuffer+$98 LDA.w #$2806 : STA.l HUDTileMapBuffer+$9A - LDA.w ClockMinutes+2 : STA.l HUDTileMapBuffer+$9C - LDA.w ClockMinutes : STA.l HUDTileMapBuffer+$9E + LDA.l ClockMinutes+2 : STA.l HUDTileMapBuffer+$9C + LDA.l ClockMinutes : STA.l HUDTileMapBuffer+$9E LDA.w #$2806 : STA.l HUDTileMapBuffer+$A0 - LDA.w ClockSeconds+2 : STA.l HUDTileMapBuffer+$A2 - LDA.w ClockSeconds : STA.l HUDTileMapBuffer+$A4 + LDA.l ClockSeconds+2 : STA.l HUDTileMapBuffer+$A2 + LDA.l ClockSeconds : STA.l HUDTileMapBuffer+$A4 ++ LDA.b FrameCounter : AND.w #$001F : BNE + : JSR CalculateTimer : + @@ -174,12 +174,11 @@ RTL CheckOHKO: SEP #$20 LDA.l OHKOFlag : CMP.l OHKOCached : BNE .change - REP #$20 - CLC + REP #$21 RTS .change STA.l OHKOCached - INC.w UpdateHUDFlag + LDA.b #$01 : STA.l UpdateHUDFlag REP #$20 SEC RTS diff --git a/toast.asm b/toast.asm index 3a43c8d..07c8104 100644 --- a/toast.asm +++ b/toast.asm @@ -4,8 +4,9 @@ ; in: X(w) - Length in Tiles ;-------------------------------------------------------------------------------- DoToast: - PHY : PHP - LDY.w ToastBuffer + PHY : PHP : PHA + LDA.l ToastBuffer : TAY + PLA JSL.l WriteVRAMBlock PLP : PLY RTL