From cafb0908a05fb3fc963e40e3d7be2c5b801f1364 Mon Sep 17 00:00:00 2001 From: cassidoxa Date: Sun, 23 Oct 2022 22:02:36 -0400 Subject: [PATCH 01/11] Introduce bound to QS loop to prevent infinite loop on last bomb loss Move !INFINITE_BOMB define to ram.asm, replace with labels --- darkworldspawn.asm | 5 ++--- events.asm | 2 +- newhud.asm | 3 +-- quickswap.asm | 14 ++++++++++++++ ram.asm | 2 ++ retro.asm | 45 ++++++++++++++++++--------------------------- 6 files changed, 38 insertions(+), 33 deletions(-) diff --git a/darkworldspawn.asm b/darkworldspawn.asm index 3ec0293..f83a094 100644 --- a/darkworldspawn.asm +++ b/darkworldspawn.asm @@ -131,19 +131,18 @@ RefreshRainAmmo: RTL ;-------------------------------------------------------------------------------- !INFINITE_ARROWS = "$7F50C8" -!INFINITE_BOMBS = "$7F50C9" !INFINITE_MAGIC = "$7F50CA" SetEscapeAssist: LDA ProgressIndicator : CMP.b #$01 : BNE .no_train ; check if we're in rain state .rain LDA.l EscapeAssist BIT.b #$04 : BEQ + : STA !INFINITE_MAGIC : + - BIT.b #$02 : BEQ + : STA !INFINITE_BOMBS : + + BIT.b #$02 : BEQ + : STA InfiniteBombs : + BIT.b #$01 : BEQ + : STA !INFINITE_ARROWS : + BRA ++ .no_train ; choo choo LDA.l EscapeAssist : BIT.b #$04 : BEQ + : LDA.b #$00 : STA !INFINITE_MAGIC : + - LDA.l EscapeAssist : BIT.b #$02 : BEQ + : LDA.b #$00 : STA !INFINITE_BOMBS : + + LDA.l EscapeAssist : BIT.b #$02 : BEQ + : LDA.b #$00 : STA InfiniteBombs : + LDA.l EscapeAssist : BIT.b #$01 : BEQ + : LDA.b #$00 : STA !INFINITE_ARROWS : + ++ RTL diff --git a/events.asm b/events.asm index e2988ff..7d9f6a6 100644 --- a/events.asm +++ b/events.asm @@ -60,7 +60,7 @@ OnUncleItemGet: LDA.l EscapeAssist BIT.b #$04 : BEQ + : STA !INFINITE_MAGIC : + - BIT.b #$02 : BEQ + : STA !INFINITE_BOMBS : + + BIT.b #$02 : BEQ + : STA InfiniteBombs : + BIT.b #$01 : BEQ + : STA !INFINITE_ARROWS : + PLA diff --git a/newhud.asm b/newhud.asm index 6b78fa8..db4d144 100644 --- a/newhud.asm +++ b/newhud.asm @@ -3,10 +3,9 @@ SEP #$30 ;================================================================================ ; Draw bomb count !BOMBCOUNT_DRAW_ADDRESS = "$7EC75A" -!INFINITE_BOMBS = "$7F50C9" ;================================================================================ - LDA !INFINITE_BOMBS : BNE .infinite_bombs + LDA.l InfiniteBombs : BNE .infinite_bombs .finite_bombs LDA.l BombsEquipment ; bombs JSR HudHexToDec2Digit ;requires 8 bit registers! diff --git a/quickswap.asm b/quickswap.asm index 1331614..a69f7ce 100644 --- a/quickswap.asm +++ b/quickswap.asm @@ -11,6 +11,7 @@ QuickSwap: LDA.l QuickSwapFlag : BEQ .done LDA.w $0202 : BEQ .done ; Skip everything if we don't have any items + LDY.b #$14 PHX XBA ; restore the stashed value CMP.b #$30 : BNE + @@ -58,8 +59,10 @@ RCode: - + CPX.b #$14 : BNE + : LDX.b #$00 ;will wrap around to 1 + INX + DEY : BEQ + .nextItem JSL.l IsItemAvailable : BEQ - + + RTS LCode: @@ -73,6 +76,17 @@ LCode: - + CPX.b #$01 : BNE + : LDX.b #$15 ; will wrap around to $14 + DEX + DEY : BEQ + .nextItem JSL.l IsItemAvailable : BEQ - + + RTS + +IsItemAvailable: + LDA.l InfiniteBombs : BEQ .finite + .infinite + CPX.b #$04 : BNE .finite + LDA.b #$01 : RTL + .finite + LDA.l EquipmentWRAM-1, X +RTL diff --git a/ram.asm b/ram.asm index 3510b8f..efaa68b 100644 --- a/ram.asm +++ b/ram.asm @@ -6,6 +6,7 @@ ;-------------------------------------------------------------------------------- ; Placeholder and for compass item max count allocations, still WIP ;-------------------------------------------------------------------------------- +InfiniteBombs = $7F50C9 CompassTotalsWRAM = $7F5410 ;================================================================================ @@ -15,4 +16,5 @@ macro assertRAM(label, address) assert