add RingMenu_StoreRingToSlotStack
This commit is contained in:
@@ -669,6 +669,39 @@ Menu_RingIconCursorPositions:
|
|||||||
dw menu_offset(12,10)
|
dw menu_offset(12,10)
|
||||||
dw menu_offset(12,14)
|
dw menu_offset(12,14)
|
||||||
|
|
||||||
|
RingMenu_StoreRingToSlotStack:
|
||||||
|
{
|
||||||
|
; Check if the ring is already in a slot
|
||||||
|
STA.b $00
|
||||||
|
LDA.b $00 : CMP.l RingSlot1 : BEQ .return
|
||||||
|
LDA.b $00 : CMP.l RingSlot2 : BEQ .return
|
||||||
|
LDA.b $00 : CMP.l RingSlot3 : BEQ .return
|
||||||
|
PHA
|
||||||
|
|
||||||
|
; Check the SRAM for an available ring slot
|
||||||
|
; If none is available we shift the stack
|
||||||
|
; $7EF38C-7EF38E (Size 03)
|
||||||
|
|
||||||
|
LDA.l RingSlot1 : BEQ .slot1_available
|
||||||
|
LDA.l RingSlot2 : BEQ .slot2_available
|
||||||
|
LDA.l RingSlot3 : BEQ .slot3_available
|
||||||
|
|
||||||
|
; Shift the stack
|
||||||
|
LDA.l RingSlot2 : STA.l RingSlot1
|
||||||
|
LDA.l RingSlot3 : STA.l RingSlot2
|
||||||
|
.slot3_available
|
||||||
|
PLA : STA.l RingSlot3
|
||||||
|
.return
|
||||||
|
RTS
|
||||||
|
|
||||||
|
.slot1_available
|
||||||
|
PLA : STA.l RingSlot1
|
||||||
|
RTS
|
||||||
|
.slot2_available
|
||||||
|
PLA : STA.l RingSlot2
|
||||||
|
RTS
|
||||||
|
}
|
||||||
|
|
||||||
RingMenu_Controls:
|
RingMenu_Controls:
|
||||||
{
|
{
|
||||||
; Load the current ring selected (0-5) into A
|
; Load the current ring selected (0-5) into A
|
||||||
@@ -679,13 +712,12 @@ RingMenu_Controls:
|
|||||||
; Set the current ring to the cursor position
|
; Set the current ring to the cursor position
|
||||||
TAY ; Transfer A to Y for indexing
|
TAY ; Transfer A to Y for indexing
|
||||||
LDA.b $F6 : BIT.b #$80 : BEQ + ; Check if the confirm button is pressed
|
LDA.b $F6 : BIT.b #$80 : BEQ + ; Check if the confirm button is pressed
|
||||||
print pc
|
|
||||||
LDA .rings, Y ; Load the ring bitmask
|
LDA .rings, Y ; Load the ring bitmask
|
||||||
AND.l MAGICRINGS ; Check if the ring is owned
|
AND.l MAGICRINGS ; Check if the ring is owned
|
||||||
BEQ + ; If not, skip setting the ring
|
BEQ + ; If not, skip setting the ring
|
||||||
INY #2
|
INY #2
|
||||||
TYA ; Transfer Y to A
|
TYA ; Transfer Y to A
|
||||||
STA.l RingSlot1 ; Set RingSlot1 to the selected ring bitmask
|
JSR StoreRingToSlotStack
|
||||||
+
|
+
|
||||||
|
|
||||||
; Return to item menu if player presses X
|
; Return to item menu if player presses X
|
||||||
|
|||||||
Reference in New Issue
Block a user