Add menu input for seashells, honeycombs, deku sticks

This commit is contained in:
scawful
2024-09-30 08:11:44 -04:00
parent 42eff19cf1
commit e8fa9be019

View File

@@ -9,9 +9,8 @@
; - Custom HUD with new magic meter ; - Custom HUD with new magic meter
; ========================================================= ; =========================================================
pushpc pushpc
; update in game hud colors ; update in game hud colors
org $1BD662 : dw hexto555($814f16), hexto555($552903) org $1BD662 : dw hexto555($814f16), hexto555($552903)
org $1BD66A : dw hexto555($d51d00), hexto555($f9f9f9) org $1BD66A : dw hexto555($d51d00), hexto555($f9f9f9)
org $1DB672 : dw hexto555($d0a050), hexto555($f9f9f9) org $1DB672 : dw hexto555($d0a050), hexto555($f9f9f9)
@@ -37,7 +36,7 @@ org $8DDFB2 : LDA.l Menu_ItemIndex, X
pullpc pullpc
; ========================================================= ; =========================================================
; Menu Bank ; Menu Bank
org $2D8000 org $2D8000
incsrc "menu_gfx_table.asm" incsrc "menu_gfx_table.asm"
@@ -49,7 +48,7 @@ incsrc "menu_palette.asm"
Menu_Entry: Menu_Entry:
{ {
PHB : PHK : PLB PHB : PHK : PLB
LDA.w $0200 : ASL : TAX LDA.w $0200 : ASL : TAX
JSR (.vectors,X) JSR (.vectors,X)
@@ -64,7 +63,7 @@ Menu_Entry:
dw Menu_ScrollDown ; 03 dw Menu_ScrollDown ; 03
dw Menu_ItemScreen ; 04 dw Menu_ItemScreen ; 04
dw Menu_ScrollTo ; 05 dw Menu_ScrollTo ; 05
dw Menu_StatsScreen ; 06 dw Menu_StatsScreen ; 06
dw Menu_ScrollFrom ; 07 dw Menu_ScrollFrom ; 07
dw Menu_ScrollUp ; 08 dw Menu_ScrollUp ; 08
dw Menu_RingBox ; 09 dw Menu_RingBox ; 09
@@ -75,12 +74,12 @@ Menu_Entry:
} }
; ========================================================= ; =========================================================
; 00 MENU INIT GRAPHICS ; 00 MENU INIT GRAPHICS
Menu_InitGraphics: Menu_InitGraphics:
{ {
LDA.w $0780 : STA.w $00 LDA.w $0780 : STA.w $00
LDA.w $0202 LDA.w $0202
CMP.b #$10 : BNE .not_fishing CMP.b #$10 : BNE .not_fishing
JSL DismissRodFromMenu JSL DismissRodFromMenu
.not_fishing .not_fishing
@@ -94,7 +93,7 @@ Menu_InitGraphics:
LDA $3A : AND.b #$80 : STA $3A LDA $3A : AND.b #$80 : STA $3A
LDA $50 : AND.b #$FE : STA $50 LDA $50 : AND.b #$FE : STA $50
LDA.b #$80 : STA $44 : STA $45 LDA.b #$80 : STA $44 : STA $45
BRA + BRA +
.wolf_shovel .wolf_shovel
LDA.b $3A : AND.b #$80 : STA.b $3A LDA.b $3A : AND.b #$80 : STA.b $3A
LDA.b $50 : AND.b #$FE : STA.b $50 LDA.b $50 : AND.b #$FE : STA.b $50
@@ -107,7 +106,7 @@ Menu_InitGraphics:
} }
; ========================================================= ; =========================================================
; 01 MENU UPLOAD RIGHT ; 01 MENU UPLOAD RIGHT
incsrc "menu_draw.asm" incsrc "menu_draw.asm"
@@ -138,7 +137,7 @@ Menu_UploadRight:
} }
; ========================================================= ; =========================================================
; 02 MENU UPLOAD LEFT ; 02 MENU UPLOAD LEFT
Menu_UploadLeft: Menu_UploadLeft:
{ {
@@ -146,7 +145,6 @@ Menu_UploadLeft:
JSR DrawYItems JSR DrawYItems
JSR Menu_DrawSelect JSR Menu_DrawSelect
JSR Menu_DrawItemName JSR Menu_DrawItemName
; INSERT PALETTE ------- ; INSERT PALETTE -------
LDX.w #$3E LDX.w #$3E
@@ -155,19 +153,17 @@ Menu_UploadLeft:
STA.l $7EC502, X STA.l $7EC502, X
DEX : DEX DEX : DEX
BPL .loop BPL .loop
SEP #$30 SEP #$30
;----------------------- ;-----------------------
LDA.b #$22 : STA.w $0116 LDA.b #$22 : STA.w $0116
LDA.b #$01 : STA.b $17 : STA.b $15 ; added for palette LDA.b #$01 : STA.b $17 : STA.b $15 ; added for palette
INC.w $0200 INC.w $0200
RTS RTS
} }
; ========================================================= ; =========================================================
; 03 MENU SCROLL DOWN ; 03 MENU SCROLL DOWN
Menu_Scroll: Menu_Scroll:
dw 0, -3, -5, -7, -10, -12, -15, -20 dw 0, -3, -5, -7, -10, -12, -15, -20
@@ -183,7 +179,7 @@ Menu_ScrollDown:
LDX.w MenuScrollLevelV LDX.w MenuScrollLevelV
INX : INX INX : INX
LDA.w Menu_Scroll, X LDA.w Menu_Scroll, X
STA.b $EA STA.b $EA
CMP.w #$FF12 : BNE .notDoneScrolling CMP.w #$FF12 : BNE .notDoneScrolling
JMP Menu_InitItemScreen JMP Menu_InitItemScreen
@@ -194,7 +190,7 @@ Menu_ScrollDown:
} }
; ========================================================= ; =========================================================
; 04 MENU ITEM SCREEN ; 04 MENU ITEM SCREEN
incsrc "menu_select_item.asm" incsrc "menu_select_item.asm"
@@ -204,8 +200,8 @@ Menu_ItemScreen:
INC $0207 INC $0207
LDA.w $0202 : BEQ .do_no_input LDA.w $0202 : BEQ .do_no_input
; Scroll through joypad 1 inputs ; Scroll through joypad 1 inputs
ASL : TAY : LDA.b $F4 ASL : TAY : LDA.b $F4
LSR : BCS .move_right LSR : BCS .move_right
LSR : BCS .move_left LSR : BCS .move_left
LSR : BCS .move_down LSR : BCS .move_down
@@ -239,24 +235,24 @@ Menu_ItemScreen:
JSR Menu_DeleteCursor JSR Menu_DeleteCursor
JSR Menu_FindNextItem JSR Menu_FindNextItem
BRA .draw_cursor BRA .draw_cursor
.move_left .move_left
JSR Menu_DeleteCursor JSR Menu_DeleteCursor
JSR Menu_FindPrevItem JSR Menu_FindPrevItem
BRA .draw_cursor BRA .draw_cursor
.move_down .move_down
JSR Menu_DeleteCursor JSR Menu_DeleteCursor
JSR Menu_FindNextDownItem JSR Menu_FindNextDownItem
BRA .draw_cursor BRA .draw_cursor
.move_up .move_up
JSR Menu_DeleteCursor JSR Menu_DeleteCursor
JSR Menu_FindNextUpItem JSR Menu_FindNextUpItem
BRA .draw_cursor BRA .draw_cursor
.draw_cursor .draw_cursor
LDA.b #$20 : STA.w $012F ; cursor move sound effect LDA.b #$20 : STA.w $012F ; cursor move sound effect
.no_inputs .no_inputs
SEP #$30 SEP #$30
@@ -276,54 +272,51 @@ Menu_ItemScreen:
} }
; ========================================================= ; =========================================================
; 05 MENU SCROLL TO ; 05 MENU SCROLL TO
Menu_ScrollTo: Menu_ScrollTo:
{ {
SEP #$20 SEP #$20
JSR Menu_ScrollHorizontal JSR Menu_ScrollHorizontal
BCC .not_done BCC .not_done
INC.w $0200 INC.w $0200
.not_done .not_done
RTS RTS
} }
; ========================================================= ; =========================================================
; 06 MENU STATS SCREEN ; 06 MENU STATS SCREEN
incsrc "menu_scroll.asm" incsrc "menu_scroll.asm"
Menu_StatsScreen: Menu_StatsScreen:
{ {
JSR Menu_CheckHScroll JSR Menu_CheckHScroll
RTS RTS
} }
; ========================================================= ; =========================================================
; 07 MENU SCROLL FROM ; 07 MENU SCROLL FROM
Menu_ScrollFrom: Menu_ScrollFrom:
{ {
JSR Menu_ScrollHorizontal JSR Menu_ScrollHorizontal
BCC .not_done BCC .not_done
JMP Menu_InitItemScreen JMP Menu_InitItemScreen
.not_done .not_done
RTS RTS
} }
; ========================================================= ; =========================================================
; 08 MENU SCROLL UP ; 08 MENU SCROLL UP
Menu_ScrollUp: Menu_ScrollUp:
{ {
SEP #$10 SEP #$10
REP #$20 REP #$20
LDX.w MenuScrollLevelV LDX.w MenuScrollLevelV
LDA.w Menu_Scroll, X LDA.w Menu_Scroll, X
STA.b $EA : BNE .notDoneScrolling STA.b $EA : BNE .notDoneScrolling
STZ.b $E4 STZ.b $E4
LDA.w #$000A : STA.w $0200 LDA.w #$000A : STA.w $0200
@@ -335,11 +328,11 @@ Menu_ScrollUp:
} }
; ========================================================= ; =========================================================
; CHECK BOTTLE ; CHECK BOTTLE
Menu_CheckBottle: Menu_CheckBottle:
{ {
LDA.w $0202 : CMP.b #$06 : BNE .not_first LDA.w $0202 : CMP.b #$06 : BNE .not_first
LDA.b #$0001 : JMP .prepare_bottle LDA.b #$0001 : JMP .prepare_bottle
.not_first .not_first
@@ -355,12 +348,12 @@ Menu_CheckBottle:
LDA.b #$0004 LDA.b #$0004
.prepare_bottle .prepare_bottle
STA.l $7EF34F STA.l $7EF34F
.not_any .not_any
RTS RTS
} }
; ========================================================= ; =========================================================
; 0A MENU EXIT ; 0A MENU EXIT
Menu_Exit: Menu_Exit:
{ {
@@ -371,19 +364,19 @@ Menu_Exit:
; reset submodule ; reset submodule
STZ $0200 STZ $0200
; go back to the submodule we came from ; go back to the submodule we came from
LDA.w $010C : STA.b $10 LDA.w $010C : STA.b $10
; set $0303 by using $0202 to index table on exit ; set $0303 by using $0202 to index table on exit
; set $0304 to prevent item + 1 animation exploits ; set $0304 to prevent item + 1 animation exploits
LDX $0202 LDX $0202
LDA.w Menu_ItemIndex, X : STA $0303 : STA.w $0304 LDA.w Menu_ItemIndex, X : STA $0303 : STA.w $0304
LDX.b #$3E LDX.b #$3E
.loop .loop
LDA.l $7EC300, X LDA.l $7EC300, X
STA.l $7EC500, X STA.l $7EC500, X
DEX : DEX DEX : DEX
BPL .loop BPL .loop
INC.b $15 INC.b $15
@@ -400,7 +393,7 @@ Menu_InitiateScrollDown:
REP #$20 REP #$20
; Clear out the whole buffer. ; Clear out the whole buffer.
LDX.b #$FE ; $1700-17FF LDX.b #$FE ; $1700-17FF
.loop .loop
LDA.w #$387F LDA.w #$387F
@@ -416,7 +409,7 @@ Menu_InitiateScrollDown:
DEX : DEX DEX : DEX
BNE .loop BNE .loop
; TODO: The BPL wasn't working so figure out why and ; TODO: The BPL wasn't working so figure out why and
; fix it instead of doing this abomination. ; fix it instead of doing this abomination.
STA.w $1000 STA.w $1000
STA.w $1100 STA.w $1100
@@ -464,7 +457,7 @@ Menu_InitiateScrollDown:
LDA.b #$08 : STA.w $0200 LDA.b #$08 : STA.w $0200
LDA.b #$12 : STA.w $012F ; play menu exit sound effect LDA.b #$12 : STA.w $012F ; play menu exit sound effect
RTS RTS
} }
@@ -479,32 +472,28 @@ Menu_MagicBag:
SEP #$30 SEP #$30
INC $0207 INC $0207
LDA.b $F4 LDA.b $F4
LSR : BCS .move_right LSR : BCS .move_right
LSR : BCS .move_left LSR : BCS .move_left
LSR : BCS .move_down LSR : BCS .move_down
LSR : BCS .move_up LSR : BCS .move_up
BRA .continue BRA .continue
.move_up
.move_right .move_right
LDA.w $020B : CMP.b #$03 : BCS .zero LDA.w $020B : CMP.b #$03 : BCS .zero
INC.w $020B INC.w $020B
BRA .continue BRA .continue
.move_down
.move_left .move_left
LDA.w $020B : CMP.b #$00 : BEQ .continue LDA.w $020B : CMP.b #$00 : BEQ .continue
DEC.w $020B DEC.w $020B
BRA .continue BRA .continue
.move_down
.move_up
.zero .zero
STZ.w $020B STZ.w $020B
.continue .continue
LDA.w $020B LDA.w $020B
ASL : TAY ASL : TAY
REP #$10 REP #$10
@@ -522,6 +511,9 @@ Menu_MagicBagCursorPositions:
dw menu_offset(8,6) ; banana dw menu_offset(8,6) ; banana
dw menu_offset(8,10) ; pineapple dw menu_offset(8,10) ; pineapple
dw menu_offset(8,14) ; goron rock meat dw menu_offset(8,14) ; goron rock meat
dw menu_offset(12,6) ; seashells
dw menu_offset(12,10) ; honeycombs
dw menu_offset(12,14) ; deku sticks
; ========================================================= ; =========================================================
; 0D MENU SONG MENU ; 0D MENU SONG MENU
@@ -532,9 +524,9 @@ Menu_SongMenu:
JSR Menu_DrawMusicNotes JSR Menu_DrawMusicNotes
INC $0207 INC $0207
LDA.w $030F : BEQ .continue LDA.w CurrentSong : BEQ .continue
ASL : TAY ASL : TAY
LDA.b $F4 LDA.b $F4
LSR : BCS .move_right LSR : BCS .move_right
LSR : BCS .move_left LSR : BCS .move_left
LSR : BCS .move_down LSR : BCS .move_down
@@ -546,10 +538,9 @@ Menu_SongMenu:
REP #$30 REP #$30
LDX.w Menu_SongIconCursorPositions-2, Y LDX.w Menu_SongIconCursorPositions-2, Y
JSR Menu_DeleteCursor_AltEntry JSR Menu_DeleteCursor_AltEntry
LDA.w $030F : CMP.b #$04 : BEQ .reset LDA.w CurrentSong : CMP.b #$04 : BEQ .reset
INC.w CurrentSong
INC.w $030F LDA.w CurrentSong
LDA $030F ; load incremented Song RAM
CMP.b #$04 CMP.b #$04
BCS .wrap_to_min BCS .wrap_to_min
JMP .continue JMP .continue
@@ -557,17 +548,16 @@ Menu_SongMenu:
LDA $7EF34C : CMP.b #$01 : BEQ .wrap_to_min LDA $7EF34C : CMP.b #$01 : BEQ .wrap_to_min
CMP.b #$02 : BEQ .set_max_to_2 CMP.b #$02 : BEQ .set_max_to_2
CMP.b #$03 : BEQ .set_max_to_3 CMP.b #$03 : BEQ .set_max_to_3
LDA #$04 : STA $030F : JMP .continue LDA #$04 : STA.w CurrentSong : JMP .continue
.set_max_to_3 .set_max_to_3
LDA #$03 : STA $030F : JMP .continue LDA #$03 : STA.w CurrentSong : JMP .continue
.set_max_to_2 .set_max_to_2
LDA #$02 : STA $030F : JMP .continue LDA #$02 : STA.w CurrentSong : JMP .continue
.wrap_to_min .wrap_to_min
LDA #$01 : STA $030F LDA #$01 : STA.w CurrentSong
BRA .continue BRA .continue
.move_left .move_left
@@ -575,22 +565,19 @@ Menu_SongMenu:
REP #$30 REP #$30
LDX.w Menu_SongIconCursorPositions-2, Y LDX.w Menu_SongIconCursorPositions-2, Y
JSR Menu_DeleteCursor_AltEntry JSR Menu_DeleteCursor_AltEntry
LDA.w CurrentSong : CMP.b #$01 : BEQ .reset
LDA.w $030F : CMP.b #$01 : BEQ .reset DEC.w CurrentSong
DEC.w $030F LDA.w CurrentSong
LDA $030F
CMP #$00 : BEQ .wrap_to_max CMP #$00 : BEQ .wrap_to_max
BRA .continue BRA .continue
.reset
.reset LDA #$01 : STA.w CurrentSong
LDA #$01 : STA $030F
.continue .continue
JSR Menu_DrawItemName JSR Menu_DrawItemName
SEP #$30 SEP #$30
LDA.w $030F LDA.w CurrentSong
ASL : TAY ASL : TAY
REP #$10 REP #$10
LDX.w Menu_SongIconCursorPositions-2, Y LDX.w Menu_SongIconCursorPositions-2, Y
@@ -607,7 +594,7 @@ Menu_SongMenu:
Menu_SongIconCursorPositions: Menu_SongIconCursorPositions:
dw menu_offset(8,4) dw menu_offset(8,4)
dw menu_offset(8,8) dw menu_offset(8,8)
dw menu_offset(8,12) dw menu_offset(8,12)
dw menu_offset(8,16) dw menu_offset(8,16)
; ========================================================= ; =========================================================
@@ -619,7 +606,7 @@ Menu_RingBox:
JSR Menu_DrawMagicRingsInBox JSR Menu_DrawMagicRingsInBox
INC $0207 INC $0207
LDA.b $F4 LDA.b $F4
LSR : BCS .move_right LSR : BCS .move_right
LSR : BCS .move_left LSR : BCS .move_left
LSR : BCS .move_down LSR : BCS .move_down
@@ -671,7 +658,7 @@ Menu_RingIconCursorPositions:
RingMenu_StoreRingToSlotStack: RingMenu_StoreRingToSlotStack:
{ {
; TODO: Check how many ring slots we currently have ; TODO: Check how many ring slots we currently have
; Check if the ring is already in a slot ; Check if the ring is already in a slot
STA.b $00 STA.b $00
@@ -679,7 +666,6 @@ RingMenu_StoreRingToSlotStack:
LDA.b $00 : CMP.l RingSlot2 : BEQ .return LDA.b $00 : CMP.l RingSlot2 : BEQ .return
LDA.b $00 : CMP.l RingSlot3 : BEQ .return LDA.b $00 : CMP.l RingSlot3 : BEQ .return
PHA PHA
; Check the SRAM for an available ring slot ; Check the SRAM for an available ring slot
; If none is available we shift the stack ; If none is available we shift the stack
; $7EF38C-7EF38E (Size 03) ; $7EF38C-7EF38E (Size 03)
@@ -695,7 +681,7 @@ RingMenu_StoreRingToSlotStack:
PLA : STA.l RingSlot3 PLA : STA.l RingSlot3
.return .return
RTS RTS
.slot1_available .slot1_available
PLA : STA.l RingSlot1 PLA : STA.l RingSlot1
RTS RTS
@@ -723,7 +709,7 @@ RingMenu_Controls:
+ +
; Return to item menu if player presses X ; Return to item menu if player presses X
LDA.b $F6 : BIT.b #$40 : BEQ + LDA.b $F6 : BIT.b #$40 : BEQ +
LDA.b #$01 : STA.w $0200 LDA.b #$01 : STA.w $0200
+ +
@@ -758,4 +744,4 @@ print "End of Menu/menu.asm ", pc
incsrc "menu_hud.asm" incsrc "menu_hud.asm"
print "End of Menu/menu_hud.asm ", pc print "End of Menu/menu_hud.asm ", pc
; ========================================================= ; =========================================================