LoadBombCount:
	LDA.l InfiniteBombs : BNE .infinite
	.finite
		LDA.l BombsEquipment
	.infinite
RTL
LoadBombCount16:
	LDA.l InfiniteBombs : AND.w #$00FF : BNE .infinite
	.finite
		LDA.l BombsEquipment
	.infinite
RTL
StoreBombCount:
	PHA
	LDA.b #$01 : STA.l UpdateHUDFlag
	LDA.l InfiniteBombs : BEQ .finite
	.infinite
		PLA : LDA.b #$01 : RTL
	.finite
		PLA : STA.l BombsEquipment
RTL
SearchForEquippedItem:
	LDA.l InfiniteBombs : BEQ +
		LDA.b #$01 : LDX.b #$00 : RTL
	+
	LDA.l BowEquipment ; thing we wrote over
RTL

DecrementArrows:
	LDA.l InfiniteArrows : BNE .infinite
	LDA.l ArrowMode : BNE .rupees : BRA .normal
	.infinite
		LDA.b #$01 : RTL
	.normal
		LDA.l CurrentArrows : BEQ .done
		DEC : STA.l CurrentArrows : INC
		BRA .done
	.rupees
		REP #$20
		LDA.b RoomIndex : CMP.w #$0111 : SEP #$20 : BNE .not_archery_game
			LDA.b IndoorsFlag : BEQ .not_archery_game ; in overworld
			LDA.w BowDryFire : BEQ .shoot_arrow ; arrow game active
			LDA.b #$00 : BRA .done
		
		.not_archery_game
		LDA.l CurrentArrows : BNE .shoot_arrow ; check if we have arrows
			BRA .done
		
		.shoot_arrow
		PHX
		REP #$20
		LDA.l CurrentRupees : BEQ +
			PHA : LDA.l BowEquipment : DEC : AND.w #$0002 : TAX : PLA
			!SUB.l ArrowModeWoodArrowCost, X ; CMP.w #$0000
			BMI .not_enough_money
				STA.l CurrentRupees : LDA.w #$0001 : BRA +
			.not_enough_money
				LDA.w #$0000
		+
		SEP #$20 ; set 8-bit accumulator
		PLX
	.done
	CMP.b #$00
RTL

ArrowGame:
	LDA.w $0B99 : BEQ +
		DEC $0B99 ; reduce minigame arrow count
		LDA.l ArrowMode : BNE .rupees
		.normal
			LDA.l CurrentArrows : INC #2 : STA.l CurrentArrows ; increment arrow count (by 2 for some reason)
			RTL
		.rupees
			PHX
			REP #$20 ; set 16-bit accumulator
				LDA.l BowEquipment : DEC : AND.w #$0002 : TAX
				LDA.l CurrentRupees : !ADD.l ArrowModeWoodArrowCost, X : STA.l CurrentRupees
			SEP #$20 ; set 8-bit accumulator
			PLX
	+
RTL
