Introduce bound to QS loop to prevent infinite loop on last bomb loss
Move !INFINITE_BOMB define to ram.asm, replace with labels
This commit is contained in:
@@ -131,19 +131,18 @@ RefreshRainAmmo:
|
|||||||
RTL
|
RTL
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
!INFINITE_ARROWS = "$7F50C8"
|
!INFINITE_ARROWS = "$7F50C8"
|
||||||
!INFINITE_BOMBS = "$7F50C9"
|
|
||||||
!INFINITE_MAGIC = "$7F50CA"
|
!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 !INFINITE_MAGIC : +
|
||||||
BIT.b #$02 : BEQ + : STA !INFINITE_BOMBS : +
|
BIT.b #$02 : BEQ + : STA InfiniteBombs : +
|
||||||
BIT.b #$01 : BEQ + : STA !INFINITE_ARROWS : +
|
BIT.b #$01 : BEQ + : STA !INFINITE_ARROWS : +
|
||||||
BRA ++
|
BRA ++
|
||||||
.no_train ; choo choo
|
.no_train ; choo choo
|
||||||
LDA.l EscapeAssist : BIT.b #$04 : BEQ + : LDA.b #$00 : STA !INFINITE_MAGIC : +
|
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 : +
|
LDA.l EscapeAssist : BIT.b #$01 : BEQ + : LDA.b #$00 : STA !INFINITE_ARROWS : +
|
||||||
++
|
++
|
||||||
RTL
|
RTL
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ OnUncleItemGet:
|
|||||||
|
|
||||||
LDA.l EscapeAssist
|
LDA.l EscapeAssist
|
||||||
BIT.b #$04 : BEQ + : STA !INFINITE_MAGIC : +
|
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 : +
|
BIT.b #$01 : BEQ + : STA !INFINITE_ARROWS : +
|
||||||
|
|
||||||
PLA
|
PLA
|
||||||
|
|||||||
@@ -3,10 +3,9 @@ SEP #$30
|
|||||||
;================================================================================
|
;================================================================================
|
||||||
; Draw bomb count
|
; Draw bomb count
|
||||||
!BOMBCOUNT_DRAW_ADDRESS = "$7EC75A"
|
!BOMBCOUNT_DRAW_ADDRESS = "$7EC75A"
|
||||||
!INFINITE_BOMBS = "$7F50C9"
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
LDA !INFINITE_BOMBS : BNE .infinite_bombs
|
LDA.l InfiniteBombs : BNE .infinite_bombs
|
||||||
.finite_bombs
|
.finite_bombs
|
||||||
LDA.l BombsEquipment ; bombs
|
LDA.l BombsEquipment ; bombs
|
||||||
JSR HudHexToDec2Digit ;requires 8 bit registers!
|
JSR HudHexToDec2Digit ;requires 8 bit registers!
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ QuickSwap:
|
|||||||
LDA.l QuickSwapFlag : BEQ .done
|
LDA.l QuickSwapFlag : BEQ .done
|
||||||
LDA.w $0202 : BEQ .done ; Skip everything if we don't have any items
|
LDA.w $0202 : BEQ .done ; Skip everything if we don't have any items
|
||||||
|
|
||||||
|
LDY.b #$14
|
||||||
PHX
|
PHX
|
||||||
XBA ; restore the stashed value
|
XBA ; restore the stashed value
|
||||||
CMP.b #$30 : BNE +
|
CMP.b #$30 : BNE +
|
||||||
@@ -58,8 +59,10 @@ RCode:
|
|||||||
-
|
-
|
||||||
+ CPX.b #$14 : BNE + : LDX.b #$00 ;will wrap around to 1
|
+ CPX.b #$14 : BNE + : LDX.b #$00 ;will wrap around to 1
|
||||||
+ INX
|
+ INX
|
||||||
|
DEY : BEQ +
|
||||||
.nextItem
|
.nextItem
|
||||||
JSL.l IsItemAvailable : BEQ -
|
JSL.l IsItemAvailable : BEQ -
|
||||||
|
+
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
LCode:
|
LCode:
|
||||||
@@ -73,6 +76,17 @@ LCode:
|
|||||||
-
|
-
|
||||||
+ CPX.b #$01 : BNE + : LDX.b #$15 ; will wrap around to $14
|
+ CPX.b #$01 : BNE + : LDX.b #$15 ; will wrap around to $14
|
||||||
+ DEX
|
+ DEX
|
||||||
|
DEY : BEQ +
|
||||||
.nextItem
|
.nextItem
|
||||||
JSL.l IsItemAvailable : BEQ -
|
JSL.l IsItemAvailable : BEQ -
|
||||||
|
+
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
|
IsItemAvailable:
|
||||||
|
LDA.l InfiniteBombs : BEQ .finite
|
||||||
|
.infinite
|
||||||
|
CPX.b #$04 : BNE .finite
|
||||||
|
LDA.b #$01 : RTL
|
||||||
|
.finite
|
||||||
|
LDA.l EquipmentWRAM-1, X
|
||||||
|
RTL
|
||||||
|
|||||||
2
ram.asm
2
ram.asm
@@ -6,6 +6,7 @@
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; Placeholder and for compass item max count allocations, still WIP
|
; Placeholder and for compass item max count allocations, still WIP
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
InfiniteBombs = $7F50C9
|
||||||
CompassTotalsWRAM = $7F5410
|
CompassTotalsWRAM = $7F5410
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
@@ -15,4 +16,5 @@ macro assertRAM(label, address)
|
|||||||
assert <label> = <address>, "<label> labeled at incorrect address."
|
assert <label> = <address>, "<label> labeled at incorrect address."
|
||||||
endmacro
|
endmacro
|
||||||
|
|
||||||
|
%assertRAM(InfiniteBombs, $7F50C9)
|
||||||
%assertRAM(CompassTotalsWRAM, $7F5410)
|
%assertRAM(CompassTotalsWRAM, $7F5410)
|
||||||
|
|||||||
45
retro.asm
45
retro.asm
@@ -1,47 +1,38 @@
|
|||||||
!INFINITE_BOMBS = "$7F50C9"
|
|
||||||
IsItemAvailable:
|
|
||||||
LDA !INFINITE_BOMBS : BEQ .finite
|
|
||||||
.infinite
|
|
||||||
CPX.b #$04 : BNE .finite
|
|
||||||
LDA.b #$01 : RTL
|
|
||||||
.finite
|
|
||||||
LDA EquipmentWRAM-1, X
|
|
||||||
RTL
|
|
||||||
LoadBombCount:
|
LoadBombCount:
|
||||||
LDA !INFINITE_BOMBS : BNE .infinite
|
LDA.l InfiniteBombs : BNE .infinite
|
||||||
.finite
|
.finite
|
||||||
LDA BombsEquipment
|
LDA.l BombsEquipment
|
||||||
.infinite
|
.infinite
|
||||||
RTL
|
RTL
|
||||||
LoadBombCount16:
|
LoadBombCount16:
|
||||||
LDA !INFINITE_BOMBS : AND.w #$00FF : BNE .infinite
|
LDA.l InfiniteBombs : AND.w #$00FF : BNE .infinite
|
||||||
.finite
|
.finite
|
||||||
LDA BombsEquipment
|
LDA.l BombsEquipment
|
||||||
.infinite
|
.infinite
|
||||||
RTL
|
RTL
|
||||||
StoreBombCount:
|
StoreBombCount:
|
||||||
PHA : LDA !INFINITE_BOMBS : BEQ .finite
|
PHA : LDA.l InfiniteBombs : BEQ .finite
|
||||||
.infinite
|
.infinite
|
||||||
PLA : LDA.b #$01 : RTL
|
PLA : LDA.b #$01 : RTL
|
||||||
.finite
|
.finite
|
||||||
PLA : STA BombsEquipment
|
PLA : STA.l BombsEquipment
|
||||||
RTL
|
RTL
|
||||||
SearchForEquippedItem:
|
SearchForEquippedItem:
|
||||||
LDA !INFINITE_BOMBS : BEQ +
|
LDA.l InfiniteBombs : BEQ +
|
||||||
LDA.b #$01 : LDX.b #$00 : RTL
|
LDA.b #$01 : LDX.b #$00 : RTL
|
||||||
+
|
+
|
||||||
LDA BowEquipment ; thing we wrote over
|
LDA.l BowEquipment ; thing we wrote over
|
||||||
RTL
|
RTL
|
||||||
|
|
||||||
!INFINITE_ARROWS = "$7F50C8"
|
!INFINITE_ARROWS = "$7F50C8"
|
||||||
DecrementArrows:
|
DecrementArrows:
|
||||||
LDA !INFINITE_ARROWS : BNE .infinite
|
LDA.l !INFINITE_ARROWS : 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
|
||||||
.normal
|
.normal
|
||||||
LDA CurrentArrows : BEQ .done
|
LDA.l CurrentArrows : BEQ .done
|
||||||
DEC : STA CurrentArrows : INC
|
DEC : STA.l CurrentArrows : INC
|
||||||
BRA .done
|
BRA .done
|
||||||
.rupees
|
.rupees
|
||||||
REP #$20
|
REP #$20
|
||||||
@@ -57,11 +48,11 @@ DecrementArrows:
|
|||||||
.shoot_arrow
|
.shoot_arrow
|
||||||
PHX
|
PHX
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA CurrentRupees : BEQ +
|
LDA.l CurrentRupees : BEQ +
|
||||||
PHA : LDA BowEquipment : DEC : AND #$0002 : TAX : PLA
|
PHA : LDA.l BowEquipment : DEC : AND.w #$0002 : TAX : PLA
|
||||||
!SUB.l ArrowModeWoodArrowCost, X ; CMP.w #$0000
|
!SUB.l ArrowModeWoodArrowCost, X ; CMP.w #$0000
|
||||||
BMI .not_enough_money
|
BMI .not_enough_money
|
||||||
STA CurrentRupees : LDA.w #$0001 : BRA +
|
STA.l CurrentRupees : LDA.w #$0001 : BRA +
|
||||||
.not_enough_money
|
.not_enough_money
|
||||||
LDA.w #$0000
|
LDA.w #$0000
|
||||||
+
|
+
|
||||||
@@ -72,17 +63,17 @@ DecrementArrows:
|
|||||||
RTL
|
RTL
|
||||||
|
|
||||||
ArrowGame:
|
ArrowGame:
|
||||||
LDA $0B99 : BEQ +
|
LDA.w $0B99 : BEQ +
|
||||||
DEC $0B99 ; reduce minigame arrow count
|
DEC $0B99 ; reduce minigame arrow count
|
||||||
LDA.l ArrowMode : BNE .rupees
|
LDA.l ArrowMode : BNE .rupees
|
||||||
.normal
|
.normal
|
||||||
LDA CurrentArrows : INC #2 : STA CurrentArrows ; increment arrow count (by 2 for some reason)
|
LDA.l CurrentArrows : INC #2 : STA.l CurrentArrows ; increment arrow count (by 2 for some reason)
|
||||||
RTL
|
RTL
|
||||||
.rupees
|
.rupees
|
||||||
PHX
|
PHX
|
||||||
REP #$20 ; set 16-bit accumulator
|
REP #$20 ; set 16-bit accumulator
|
||||||
LDA BowEquipment : DEC : AND #$0002 : TAX
|
LDA.l BowEquipment : DEC : AND #$0002 : TAX
|
||||||
LDA CurrentRupees : !ADD.l ArrowModeWoodArrowCost, X : STA CurrentRupees
|
LDA.l CurrentRupees : !ADD.l ArrowModeWoodArrowCost, X : STA.l CurrentRupees
|
||||||
SEP #$20 ; set 8-bit accumulator
|
SEP #$20 ; set 8-bit accumulator
|
||||||
PLX
|
PLX
|
||||||
+
|
+
|
||||||
|
|||||||
Reference in New Issue
Block a user