From f71e1dc92a853d3276715d80d408778afed018ac Mon Sep 17 00:00:00 2001 From: Jared_Brian_ Date: Mon, 18 Mar 2024 22:52:09 -0600 Subject: [PATCH] added the right side hud copy --- Menu/menu.asm | 133 +++++++++++++++++++++++++++++++------------ Menu/menu_hud.asm | 76 ++++++++++++------------- Menu/menu_scroll.asm | 40 ++++++------- 3 files changed, 153 insertions(+), 96 deletions(-) diff --git a/Menu/menu.asm b/Menu/menu.asm index b2d6f66..481841e 100644 --- a/Menu/menu.asm +++ b/Menu/menu.asm @@ -20,7 +20,8 @@ org $1DB682 : dw hexto555($7b7b83), hexto555($bbbbbb) org $1DB68A : dw hexto555($a58100), hexto555($dfb93f) ; Free ROM in Bank 00 -org $0098AB : db $D8>>1 +org $0098AB : db $6C +org $0098AC : db $64 ; Module RunInterface 0E.01: Item Menu org $00F877 : db Menu_Entry>>0 @@ -68,6 +69,7 @@ Menu_Entry: dw Menu_ScrollUp ; 08 dw Menu_CheckBottle ; 09 dw Menu_Exit ; 0A + dw Menu_CopyToRight ; 0B ; ========================================================= ; 00 MENU INIT GRAPHICS @@ -123,10 +125,10 @@ Menu_UploadLeft: ; INSERT PALETTE ------- LDX.w #$3E -.loop - LDA.w Menu_Palette, X - STA.l $7EC502, X - DEX : DEX + .loop + LDA.w Menu_Palette, X + STA.l $7EC502, X + DEX : DEX BPL .loop SEP #$30 @@ -177,40 +179,39 @@ Menu_ItemScreen: INC $0207 LDA.w $0202 : BEQ .no_inputs - - ; Scroll through joypad 1 inputs - ASL : TAY : LDA.b $F4 - LSR : BCS .move_right - LSR : BCS .move_left - LSR : BCS .move_down - LSR : BCS .move_up + ; Scroll through joypad 1 inputs + ASL : TAY : LDA.b $F4 + LSR : BCS .move_right + LSR : BCS .move_left + LSR : BCS .move_down + LSR : BCS .move_up BRA .no_inputs -.move_right + .move_right JSR Menu_DeleteCursor JSR Menu_FindNextItem BRA .draw_cursor -.move_left + .move_left JSR Menu_DeleteCursor JSR Menu_FindPrevItem BRA .draw_cursor -.move_down + .move_down JSR Menu_DeleteCursor JSR Menu_FindNextDownItem BRA .draw_cursor -.move_up + .move_up JSR Menu_DeleteCursor JSR Menu_FindNextUpItem BRA .draw_cursor -.draw_cursor + .draw_cursor LDA.b #$20 : STA.w $012F ; cursor move sound effect -.no_inputs + .no_inputs SEP #$30 LDA.w $0202 ASL : TAY @@ -222,16 +223,15 @@ Menu_ItemScreen: REP #$20 BEQ .no_delete + ; Delete cursor + 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 + BRA .done - ; Delete cursor - 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 - BRA .done - -.no_delete + .no_delete LDA.w #$3060 : STA.w $1108, X ; corner LDA.w #$3070 : STA.w $1148, X @@ -244,7 +244,7 @@ Menu_ItemScreen: LDA.w #$7070 : STA.w $118E, X LDA.w #$F060 : STA.w $11CE, X ; corner -.done + .done JSR Menu_DrawItemName SEP #$20 LDA.b #$22 : STA.w $0116 @@ -287,10 +287,9 @@ Menu_ScrollFrom: { JSR Menu_ScrollHorizontal BCC .not_done + JMP Menu_InitItemScreen - JMP Menu_InitItemScreen - -.not_done + .not_done RTS } @@ -307,11 +306,11 @@ Menu_ScrollUp: LDX.w MenuScrollLevelV LDA.w Menu_Scroll, X STA.b $EA : BNE .loop - STZ.b $E4 - INC.w $0200 - RTS + STZ.b $E4 + INC.w $0200 + RTS -.loop + .loop DEX : DEX : STX.w MenuScrollLevelV RTS } @@ -376,6 +375,70 @@ Menu_Exit: } ; ========================================================= +; 0B MENU COPY TO RIGHT + +Menu_CopyToRight: +{ + REP #$20 + + ; Clear out the whole buffer. + LDX.b #$FE ; $1700-17FF + + .loop + LDA.w #$387F + STA.w $1000, X + STA.w $1100, X + STA.w $1200, X + STA.w $1300, X + STA.w $1400, X + STA.w $1500, X + STA.w $1600, X + STA.w $1700, X + + DEX : DEX + BNE .loop + + ; TODO: The BPL wasn't working so figure out why and fix it. + STA.w $1000 + STA.w $1100 + STA.w $1200 + STA.w $1300 + STA.w $1400 + STA.w $1500 + STA.w $1600 + STA.w $1700 + + SEP #$20 + + ; The whole HUD fits on 4 rows so I'm only going to copy 4 here. + + LDX.b #$3A + .loop1 + LDA $7EC702, X : STA $1082, X + DEX : BNE .loop1 + + LDX.b #$3A + .loop2 + LDA $7EC742, X : STA $10C2, X + DEX : BNE .loop2 + + LDX.b #$3A + .loop3 + LDA $7EC782, X : STA $1102, X + DEX : BNE .loop3 + + LDX.b #$3A + .loop4 + LDA $7EC7C2, X : STA $1142, X + DEX : BNE .loop4 + + LDA.b #$24 : STA.w $0116 + LDA.b #$01 : STA.b $17 + + LDA.b #$08 : STA.w $0200 + + RTS +} menu_frame: incbin "tilemaps/menu_frame.tilemap" quest_icons: incbin "tilemaps/quest_icons.tilemap" diff --git a/Menu/menu_hud.asm b/Menu/menu_hud.asm index 31f5495..e7de1f9 100644 --- a/Menu/menu_hud.asm +++ b/Menu/menu_hud.asm @@ -70,11 +70,10 @@ HUD_Update: ; Branch if at full health LDA $7EF36C : CMP $7EF36D : BEQ .healthUpdated + ; Seems absurd to have a branch of zero bytes, right? + SEC : SBC #$04 : CMP $7EF36D : BCS .healthUpdated - ; Seems absurd to have a branch of zero bytes, right? - SEC : SBC #$04 : CMP $7EF36D : BCS .healthUpdated - -.healthUpdated + .healthUpdated ; A = actual health + 0x03; LDA $7EF36D : CLC : ADC.b #$03 @@ -88,18 +87,17 @@ HUD_Update: ; filling in the full and partially filled hearts (actual health) JSR HUD_UpdateHearts -.ignore_health ; *$6FC09 ALTERNATE ENTRY POINT ; reentry hook + .ignore_health ; *$6FC09 ALTERNATE ENTRY POINT ; reentry hook REP #$30 ; Magic amount indicator (normal, 1/2, or 1/4) LDA $7EF37B : AND.w #$00FF : CMP.w #$0001 : BCC .normal_magic_meter + ; draw 1/2 magic meter + LDA.w #$2851 : STA $7EC730 + LDA.w #$28FA : STA $7EC732 - ; draw 1/2 magic meter - LDA.w #$2851 : STA $7EC730 - LDA.w #$28FA : STA $7EC732 - -.normal_magic_meter + .normal_magic_meter ; check player magic (ranges from 0 to 0x7F) ; X = ((MP & 0xFF)) + 7) & 0xFFF8) @@ -134,55 +132,56 @@ HUD_Update: ; Check if the user has bombs equipped LDX $0202 : LDA $7EF33F, X : AND.w #$00FF CPX.w #$0004 : BNE .not_bombs + ; Number of bombs Link has. + LDA $7EF343 : AND.w #$00FF + JSR HexToDecimal + REP #$30 - ; Number of bombs Link has. - LDA $7EF343 : AND.w #$00FF - JSR HexToDecimal - REP #$30 + ; The tile index for the first bomb digit + LDA $04 : AND.w #$00FF : ORA.w #$2400 : STA $7EC7B0 - ; The tile index for the first bomb digit - LDA $04 : AND.w #$00FF : ORA.w #$2400 : STA $7EC7B0 + ; The tile index for the second bomb digit + LDA $05 : AND.w #$00FF : ORA.w #$2400 : STA $7EC7B2 - ; The tile index for the second bomb digit - LDA $05 : AND.w #$00FF : ORA.w #$2400 : STA $7EC7B2 + .not_bombs -.not_bombs ; Check if the user has arrows equipped LDX $0202 : LDA $7EF33F, X : AND.w #$00FF CPX.w #$0001 : BNE .not_arrows - ; Number of Arrows Link has. - LDA $7EF377 : AND.w #$00FF + ; Number of Arrows Link has. + LDA $7EF377 : AND.w #$00FF - ; converts hex to up to 3 decimal digits - JSR HexToDecimal - REP #$30 + ; converts hex to up to 3 decimal digits + JSR HexToDecimal + REP #$30 - ; The tile index for the first arrow digit - LDA $04 : AND.w #$00FF : ORA.w #$2400 : STA $7EC7B0 + ; The tile index for the first arrow digit + LDA $04 : AND.w #$00FF : ORA.w #$2400 : STA $7EC7B0 - ; The tile index for the second arrow digit - LDA $05 : AND.w #$00FF : ORA.w #$2400 : STA $7EC7B2 + ; The tile index for the second arrow digit + LDA $05 : AND.w #$00FF : ORA.w #$2400 : STA $7EC7B2 -.not_arrows + .not_arrows LDA.w #$007F : STA $05 ; Load number of Keys Link has LDA $7EF36F : AND.w #$00FF : CMP.w #$00FF : BEQ .no_keys - JSR HexToDecimal -.no_keys + JSR HexToDecimal + .no_keys + REP #$30 ; The key digit, which is optionally drawn. ; Also check to see if the key spot is blank - LDA $05 : AND.w #$00FF : ORA.w #$2400 : STA $7EC7A4 + LDA $05 : AND.w #$00FF : ORA.w #$2400 : STA $7EC7A4 CMP.w #$247F : BNE .dont_blank_key_icon + ; TODO: Find the proper index of the key icon, this one is outdated. + ; If the key digit is blank, also blank out the key icon. + STA $7EC724 - ; TODO: Find the proper index of the key icon, this one is outdated. - ; If the key digit is blank, also blank out the key icon. - STA $7EC724 + .dont_blank_key_icon -.dont_blank_key_icon SEP #$30 RTL } @@ -386,11 +385,6 @@ HexToDecimal: RTS } -CopyHudToRight: -{ - -} - pushpc ; ========================================================= diff --git a/Menu/menu_scroll.asm b/Menu/menu_scroll.asm index c96b077..684e6d0 100644 --- a/Menu/menu_scroll.asm +++ b/Menu/menu_scroll.asm @@ -4,32 +4,32 @@ Menu_CheckHScroll: { LDA.b $F4 BIT.b #$10 : BNE .leave_menu - LDA.b $F6 - BIT.b #$20 : BNE .left - BIT.b #$10 : BNE .right + LDA.b $F6 + BIT.b #$20 : BNE .left + BIT.b #$10 : BNE .right + RTS - RTS + .left -.left - REP #$20 - LDA.w #$FFF8 - BRA .merge + REP #$20 + LDA.w #$FFF8 + BRA .merge -.right - REP #$20 - LDA.w #$0008 + .right + REP #$20 + LDA.w #$0008 -.merge - STA.w MenuScrollHDirection + .merge + STA.w MenuScrollHDirection - SEP #$30 - INC.w $0200 - LDA.b #$06 : STA.w $012F - RTS + SEP #$30 + INC.w $0200 + LDA.b #$06 : STA.w $012F + RTS -.leave_menu - LDA.b #$08 - STA.w $0200 + .leave_menu + + LDA.b #$0B : STA.w $0200 RTS }