diff --git a/Menu/menu.asm b/Menu/menu.asm index c80894e..94faecd 100644 --- a/Menu/menu.asm +++ b/Menu/menu.asm @@ -1,16 +1,16 @@ -;=========================================================== -; The Legend of Zelda: Oracle of Secrets -; ------------NEW Custom Menu ------------ +; ============================================================================= +; The Legend of Zelda: Oracle of Secrets +; ------------NEW Custom Menu ------------ ; -; Details: Complete overhaul of original LTTP menu -; Two Pane Oot/MM inspired design -; Original item layout and designs -; Detailed Quest Status screen -; Player name, location name, and death count +; Details: Complete overhaul of original LTTP menu +; Two Pane Oot/MM inspired design +; Original item layout and designs +; Detailed Quest Status screen +; Player name, location name, and death count ; -; Significant thanks to Kan for helping me craft this menu! +; Significant thanks to Kan for helping me craft this menu! ; -;=========================================================== +; ============================================================================= pushpc org $1BD662 ; update in game hud colors @@ -25,7 +25,7 @@ org $1DB682 dw hexto555($7b7b83), hexto555($bbbbbb) org $1DB68A dw hexto555($a58100), hexto555($dfb93f) -org $0098AB ; menu override +org $0098AB ; hook vanilla menu routine db $D8>>1 org $00F877 db Menu_Entry>>0 @@ -39,6 +39,7 @@ org $8DDFB2 LDA.l Menu_ItemIndex, X pullpc +; upload tilemaps containing frame of menu and icons org $248000 Menu_Tilemap: incbin "tilemaps/menu_frame.tilemap" @@ -50,6 +51,7 @@ incsrc "menu_draw_items.asm" incsrc "menu_text.asm" incsrc "menu_palette.asm" +; Traverse jump table containing routines for Oracle of Secrets menu Menu_Entry: PHB : PHK : PLB LDA.w $0200 @@ -61,7 +63,7 @@ Menu_Entry: RTL incsrc "menu_vectors.asm" -; =================================================================================== +; ============================================================================= ; 00 MENU INIT GRAPHICS Menu_InitGraphics: @@ -70,7 +72,7 @@ Menu_InitGraphics: INC $0200 } -; =================================================================================== +; ============================================================================= ; 01 MENU UPLOAD RIGHT Menu_UploadRight: @@ -104,7 +106,7 @@ Menu_UploadRight: RTS } -; =================================================================================== +; ============================================================================= ; 02 MENU UPLOAD LEFT Menu_UploadLeft: @@ -130,7 +132,7 @@ Menu_UploadLeft: RTS } -; =================================================================================== +; ============================================================================= ; 03 MENU SCROLL DOWN Menu_Scroll: @@ -155,148 +157,10 @@ Menu_ScrollDown: RTS } -; =================================================================================== +; ============================================================================= ; 04 MENU ITEM SCREEN +incsrc "menu_select_item.asm" -Menu_ItemIndex: - db $03 ; slingshot - db $02 ; boomerang - db $0E ; hookshot - db $01 ; bombs - db $11 ; deku mask - db $0B ; bottle1 - db $05 ; firerod (nimbus) - db $06 ; icerod - db $09 ; lamp - db $04 ; hammer - db $0F ; bombos / goron - db $4B ; bottle2 - db $12 ; somaria - db $0D ; byrna - db $0C ; book - db $07 ; feather - db $10 ; bunny hood - db $8B ; bottle3 - db $08 ; ocarina - db $14 ; mirror - db $0B ; shovel - db $0A ; powder - db $13 ; stone mask - db $CB ; bottle4 - -Menu_AddressIndex: - db $7EF340 ; bow - db $7EF341 ; boom - db $7EF342 ; hookshot - db $7EF343 ; bombs - db $7EF348 ; deku mask - db $7EF35C ; bottle1 - db $7EF345 ; firerod (nimbus) - db $7EF346 ; icerod - db $7EF34A ; lamp - db $7EF34B ; hammer - db $7EF347 ; bombos / goron - db $7EF35D ; bottle2 - db $7EF350 ; somaria - db $7EF351 ; byrna - db $7EF34E ; book - db $7EF34D ; feather - db $7EF349 ; bunny hood - db $7EF35E ; bottle3 - db $7EF34C ; ocarina - db $7EF353 ; mirror - db $7EF34F ; shovel - db $7EF344 ; powder - db $7EF352 ; stone mask - db $7EF35F ; bottle4 - -Menu_ItemCursorPositions: - dw menu_offset(6,1) ; bow - dw menu_offset(6,4) ; boom - dw menu_offset(6,7) ; hookshot - dw menu_offset(6,10) ; bombs - dw menu_offset(6,13) ; deku mask - dw menu_offset(6,16) ; bottle1 - dw menu_offset(9,1) ; firerod - dw menu_offset(9,4) ; icerod - dw menu_offset(9,7) ; lamp - dw menu_offset(9,10) ; hammer - dw menu_offset(9,13) ; goron - dw menu_offset(9,16) ; bottle2 - dw menu_offset(12,1) ; somaria - dw menu_offset(12,4) ; byrna - dw menu_offset(12,7) ; book - dw menu_offset(12,10) ; feather - dw menu_offset(12,13) ; bunny hood - dw menu_offset(12,16) ; bottle3 - dw menu_offset(15,1) ; flute - dw menu_offset(15,4) ; mirror - dw menu_offset(15,7) ; shovel - dw menu_offset(15,10) ; powder - dw menu_offset(15,13) ; stone mask - dw menu_offset(15,16) ; bottle - -; ---------------------- -Menu_FindNextItem: - LDY.w $0202 : INY - CPY.b #$19 : BCC .no_reset - LDY.b #$01 -.no_reset - STY.w $0202 - LDX.w Menu_AddressIndex-1, Y - LDA.l $7EF300, X - BEQ Menu_FindNextItem - RTS -; ---------------------- -Menu_FindPrevItem: - LDY.w $0202 : DEY : BNE .no_reset - LDY.b #$18 -.no_reset - STY.w $0202 - LDX.w Menu_AddressIndex-1, Y - LDA.l $7EF300, X - BEQ Menu_FindPrevItem - RTS -; ---------------------- -Menu_FindNextDownItem: - LDA.w $0202 : CLC : ADC.b #$06 - CMP.b #$19 : BCC .no_reset - SBC.b #$18 -.no_reset - TAY : STY.w $0202 - LDX.w Menu_AddressIndex-1, Y - LDA.l $7EF300, X - BEQ Menu_FindNextUpItem - RTS -; ---------------------- -Menu_FindNextUpItem: - LDA.w $0202 : SEC : SBC.b #$06 - BPL .no_reset : BNE .no_reset - CLC : ADC.b #$18 -.no_reset - TAY : STY.w $0202 - LDX.w Menu_AddressIndex-1, Y - LDA.l $7EF300, X - BEQ Menu_FindNextDownItem - RTS -; ---------------------- -Menu_DeleteCursor: - REP #$30 - LDX.w Menu_ItemCursorPositions-2, Y - - LDA.w #$20F5 - STA.w $1108, X - STA.w $1148, X - STA.w $114E, X - STA.w $110E, X - STA.w $11C8, X - STA.w $1188, X - STA.w $118E, X - STA.w $11CE, X - SEP #$30 - STZ $0207 - RTS -; ---------------------- Menu_InitItemScreen: { SEP #$30 @@ -407,7 +271,7 @@ Menu_ItemScreen: RTS } -; =================================================================================== +; ============================================================================= ; 05 MENU SCROLL TO Menu_ScrollTo: @@ -422,7 +286,7 @@ Menu_ScrollTo: RTS } -; =================================================================================== +; ============================================================================= ; 06 MENU STATS SCREEN Menu_StatsScreen: @@ -487,7 +351,7 @@ Menu_ScrollHorizontal: RTS } -; =================================================================================== +; ============================================================================= ; 07 MENU SCROLL FROM Menu_ScrollFrom: @@ -501,7 +365,7 @@ Menu_ScrollFrom: RTS } -; =================================================================================== +; ============================================================================= ; 08 MENU SCROLL UP Menu_ScrollUp: @@ -526,7 +390,7 @@ Menu_ScrollUp: RTS } -; =================================================================================== +; ============================================================================= ; incomplete :( Menu_CheckBottle: { @@ -545,7 +409,7 @@ Menu_CheckBottle: RTS } -; =================================================================================== +; ============================================================================= ; 09 MENU EXIT Menu_Exit: @@ -576,7 +440,7 @@ Menu_Exit: RTS } -; =================================================================================== +; ============================================================================= ; XX MENU HIJACK HUD HudItems: @@ -648,7 +512,7 @@ Menu_UpdateHudItem: RTL } -; =================================================================================== +; ============================================================================= Menu_DrawBackground: { @@ -679,6 +543,6 @@ Menu_DrawBackground: RTS } -;=============================================================================== +; ============================================================================= incsrc "lw_map_names.asm" \ No newline at end of file diff --git a/Menu/menu_select_item.asm b/Menu/menu_select_item.asm new file mode 100644 index 0000000..c0a7ba4 --- /dev/null +++ b/Menu/menu_select_item.asm @@ -0,0 +1,156 @@ +; ============================================================================= +; Item Selection Code +; ============================================================================= + +Menu_ItemIndex: + db $03 ; slingshot + db $02 ; boomerang + db $0E ; hookshot + db $01 ; bombs + db $11 ; deku mask + db $0B ; bottle1 + db $05 ; firerod (nimbus) + db $06 ; icerod + db $09 ; lamp + db $04 ; hammer + db $0F ; bombos / goron + db $4B ; bottle2 + db $12 ; somaria + db $0D ; byrna + db $0C ; book + db $07 ; feather + db $10 ; bunny hood + db $8B ; bottle3 + db $08 ; ocarina + db $14 ; mirror + db $0B ; shovel + db $0A ; powder + db $13 ; stone mask + db $CB ; bottle4 + +; ----------------------------------------------------------------------------- + +Menu_AddressIndex: + db $7EF340 ; bow + db $7EF341 ; boom + db $7EF342 ; hookshot + db $7EF343 ; bombs + db $7EF348 ; deku mask + db $7EF35C ; bottle1 + db $7EF345 ; firerod (nimbus) + db $7EF346 ; icerod + db $7EF34A ; lamp + db $7EF34B ; hammer + db $7EF347 ; bombos / goron + db $7EF35D ; bottle2 + db $7EF350 ; somaria + db $7EF351 ; byrna + db $7EF34E ; book + db $7EF34D ; feather + db $7EF349 ; bunny hood + db $7EF35E ; bottle3 + db $7EF34C ; ocarina + db $7EF353 ; mirror + db $7EF34F ; shovel + db $7EF344 ; powder + db $7EF352 ; stone mask + db $7EF35F ; bottle4 + +; ----------------------------------------------------------------------------- + +Menu_ItemCursorPositions: + dw menu_offset(6,1) ; bow + dw menu_offset(6,4) ; boom + dw menu_offset(6,7) ; hookshot + dw menu_offset(6,10) ; bombs + dw menu_offset(6,13) ; deku mask + dw menu_offset(6,16) ; bottle1 + dw menu_offset(9,1) ; firerod + dw menu_offset(9,4) ; icerod + dw menu_offset(9,7) ; lamp + dw menu_offset(9,10) ; hammer + dw menu_offset(9,13) ; goron + dw menu_offset(9,16) ; bottle2 + dw menu_offset(12,1) ; somaria + dw menu_offset(12,4) ; byrna + dw menu_offset(12,7) ; book + dw menu_offset(12,10) ; feather + dw menu_offset(12,13) ; bunny hood + dw menu_offset(12,16) ; bottle3 + dw menu_offset(15,1) ; flute + dw menu_offset(15,4) ; mirror + dw menu_offset(15,7) ; shovel + dw menu_offset(15,10) ; powder + dw menu_offset(15,13) ; stone mask + dw menu_offset(15,16) ; bottle + +; ----------------------------------------------------------------------------- + +Menu_FindNextItem: + LDY.w $0202 : INY + CPY.b #$19 : BCC .no_reset + LDY.b #$01 +.no_reset + STY.w $0202 + LDX.w Menu_AddressIndex-1, Y + LDA.l $7EF300, X + BEQ Menu_FindNextItem + RTS + +; ----------------------------------------------------------------------------- + +Menu_FindPrevItem: + LDY.w $0202 : DEY : BNE .no_reset + LDY.b #$18 +.no_reset + STY.w $0202 + LDX.w Menu_AddressIndex-1, Y + LDA.l $7EF300, X + BEQ Menu_FindPrevItem + RTS +; ----------------------------------------------------------------------------- + +Menu_FindNextDownItem: + LDA.w $0202 : CLC : ADC.b #$06 + CMP.b #$19 : BCC .no_reset + SBC.b #$18 +.no_reset + TAY : STY.w $0202 + LDX.w Menu_AddressIndex-1, Y + LDA.l $7EF300, X + BEQ Menu_FindNextUpItem + RTS + +; ----------------------------------------------------------------------------- + +Menu_FindNextUpItem: + LDA.w $0202 : SEC : SBC.b #$06 + BPL .no_reset : BNE .no_reset + CLC : ADC.b #$18 +.no_reset + TAY : STY.w $0202 + LDX.w Menu_AddressIndex-1, Y + LDA.l $7EF300, X + BEQ Menu_FindNextDownItem + RTS + +; ----------------------------------------------------------------------------- + +Menu_DeleteCursor: + REP #$30 + LDX.w Menu_ItemCursorPositions-2, Y + + LDA.w #$20F5 + STA.w $1108, X + STA.w $1148, X + STA.w $114E, X + STA.w $110E, X + STA.w $11C8, X + STA.w $1188, X + STA.w $118E, X + STA.w $11CE, X + SEP #$30 + STZ $0207 + RTS + +; ----------------------------------------------------------------------------- \ No newline at end of file