added the right side hud copy
This commit is contained in:
133
Menu/menu.asm
133
Menu/menu.asm
@@ -20,7 +20,8 @@ org $1DB682 : dw hexto555($7b7b83), hexto555($bbbbbb)
|
|||||||
org $1DB68A : dw hexto555($a58100), hexto555($dfb93f)
|
org $1DB68A : dw hexto555($a58100), hexto555($dfb93f)
|
||||||
|
|
||||||
; Free ROM in Bank 00
|
; Free ROM in Bank 00
|
||||||
org $0098AB : db $D8>>1
|
org $0098AB : db $6C
|
||||||
|
org $0098AC : db $64
|
||||||
|
|
||||||
; Module RunInterface 0E.01: Item Menu
|
; Module RunInterface 0E.01: Item Menu
|
||||||
org $00F877 : db Menu_Entry>>0
|
org $00F877 : db Menu_Entry>>0
|
||||||
@@ -68,6 +69,7 @@ Menu_Entry:
|
|||||||
dw Menu_ScrollUp ; 08
|
dw Menu_ScrollUp ; 08
|
||||||
dw Menu_CheckBottle ; 09
|
dw Menu_CheckBottle ; 09
|
||||||
dw Menu_Exit ; 0A
|
dw Menu_Exit ; 0A
|
||||||
|
dw Menu_CopyToRight ; 0B
|
||||||
|
|
||||||
; =========================================================
|
; =========================================================
|
||||||
; 00 MENU INIT GRAPHICS
|
; 00 MENU INIT GRAPHICS
|
||||||
@@ -123,10 +125,10 @@ Menu_UploadLeft:
|
|||||||
; INSERT PALETTE -------
|
; INSERT PALETTE -------
|
||||||
|
|
||||||
LDX.w #$3E
|
LDX.w #$3E
|
||||||
.loop
|
.loop
|
||||||
LDA.w Menu_Palette, X
|
LDA.w Menu_Palette, X
|
||||||
STA.l $7EC502, X
|
STA.l $7EC502, X
|
||||||
DEX : DEX
|
DEX : DEX
|
||||||
BPL .loop
|
BPL .loop
|
||||||
|
|
||||||
SEP #$30
|
SEP #$30
|
||||||
@@ -177,40 +179,39 @@ Menu_ItemScreen:
|
|||||||
|
|
||||||
INC $0207
|
INC $0207
|
||||||
LDA.w $0202 : BEQ .no_inputs
|
LDA.w $0202 : BEQ .no_inputs
|
||||||
|
; 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
|
LSR : BCS .move_up
|
||||||
LSR : BCS .move_up
|
|
||||||
|
|
||||||
BRA .no_inputs
|
BRA .no_inputs
|
||||||
|
|
||||||
.move_right
|
.move_right
|
||||||
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
|
||||||
LDA.w $0202
|
LDA.w $0202
|
||||||
ASL : TAY
|
ASL : TAY
|
||||||
@@ -222,16 +223,15 @@ Menu_ItemScreen:
|
|||||||
REP #$20
|
REP #$20
|
||||||
|
|
||||||
BEQ .no_delete
|
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
|
.no_delete
|
||||||
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
|
|
||||||
LDA.w #$3060 : STA.w $1108, X ; corner
|
LDA.w #$3060 : STA.w $1108, X ; corner
|
||||||
LDA.w #$3070 : STA.w $1148, X
|
LDA.w #$3070 : STA.w $1148, X
|
||||||
|
|
||||||
@@ -244,7 +244,7 @@ Menu_ItemScreen:
|
|||||||
LDA.w #$7070 : STA.w $118E, X
|
LDA.w #$7070 : STA.w $118E, X
|
||||||
LDA.w #$F060 : STA.w $11CE, X ; corner
|
LDA.w #$F060 : STA.w $11CE, X ; corner
|
||||||
|
|
||||||
.done
|
.done
|
||||||
JSR Menu_DrawItemName
|
JSR Menu_DrawItemName
|
||||||
SEP #$20
|
SEP #$20
|
||||||
LDA.b #$22 : STA.w $0116
|
LDA.b #$22 : STA.w $0116
|
||||||
@@ -287,10 +287,9 @@ 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
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -307,11 +306,11 @@ Menu_ScrollUp:
|
|||||||
LDX.w MenuScrollLevelV
|
LDX.w MenuScrollLevelV
|
||||||
LDA.w Menu_Scroll, X
|
LDA.w Menu_Scroll, X
|
||||||
STA.b $EA : BNE .loop
|
STA.b $EA : BNE .loop
|
||||||
STZ.b $E4
|
STZ.b $E4
|
||||||
INC.w $0200
|
INC.w $0200
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
.loop
|
.loop
|
||||||
DEX : DEX : STX.w MenuScrollLevelV
|
DEX : DEX : STX.w MenuScrollLevelV
|
||||||
RTS
|
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"
|
menu_frame: incbin "tilemaps/menu_frame.tilemap"
|
||||||
quest_icons: incbin "tilemaps/quest_icons.tilemap"
|
quest_icons: incbin "tilemaps/quest_icons.tilemap"
|
||||||
|
|||||||
@@ -70,11 +70,10 @@ HUD_Update:
|
|||||||
|
|
||||||
; Branch if at full health
|
; Branch if at full health
|
||||||
LDA $7EF36C : CMP $7EF36D : BEQ .healthUpdated
|
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?
|
.healthUpdated
|
||||||
SEC : SBC #$04 : CMP $7EF36D : BCS .healthUpdated
|
|
||||||
|
|
||||||
.healthUpdated
|
|
||||||
|
|
||||||
; A = actual health + 0x03;
|
; A = actual health + 0x03;
|
||||||
LDA $7EF36D : CLC : ADC.b #$03
|
LDA $7EF36D : CLC : ADC.b #$03
|
||||||
@@ -88,18 +87,17 @@ HUD_Update:
|
|||||||
; filling in the full and partially filled hearts (actual health)
|
; filling in the full and partially filled hearts (actual health)
|
||||||
JSR HUD_UpdateHearts
|
JSR HUD_UpdateHearts
|
||||||
|
|
||||||
.ignore_health ; *$6FC09 ALTERNATE ENTRY POINT ; reentry hook
|
.ignore_health ; *$6FC09 ALTERNATE ENTRY POINT ; reentry hook
|
||||||
|
|
||||||
REP #$30
|
REP #$30
|
||||||
|
|
||||||
; Magic amount indicator (normal, 1/2, or 1/4)
|
; Magic amount indicator (normal, 1/2, or 1/4)
|
||||||
LDA $7EF37B : AND.w #$00FF : CMP.w #$0001 : BCC .normal_magic_meter
|
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
|
.normal_magic_meter
|
||||||
LDA.w #$2851 : STA $7EC730
|
|
||||||
LDA.w #$28FA : STA $7EC732
|
|
||||||
|
|
||||||
.normal_magic_meter
|
|
||||||
|
|
||||||
; check player magic (ranges from 0 to 0x7F)
|
; check player magic (ranges from 0 to 0x7F)
|
||||||
; X = ((MP & 0xFF)) + 7) & 0xFFF8)
|
; X = ((MP & 0xFF)) + 7) & 0xFFF8)
|
||||||
@@ -134,55 +132,56 @@ HUD_Update:
|
|||||||
; Check if the user has bombs equipped
|
; Check if the user has bombs equipped
|
||||||
LDX $0202 : LDA $7EF33F, X : AND.w #$00FF
|
LDX $0202 : LDA $7EF33F, X : AND.w #$00FF
|
||||||
CPX.w #$0004 : BNE .not_bombs
|
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.
|
; The tile index for the first bomb digit
|
||||||
LDA $7EF343 : AND.w #$00FF
|
LDA $04 : AND.w #$00FF : ORA.w #$2400 : STA $7EC7B0
|
||||||
JSR HexToDecimal
|
|
||||||
REP #$30
|
|
||||||
|
|
||||||
; The tile index for the first bomb digit
|
; The tile index for the second bomb digit
|
||||||
LDA $04 : AND.w #$00FF : ORA.w #$2400 : STA $7EC7B0
|
LDA $05 : AND.w #$00FF : ORA.w #$2400 : STA $7EC7B2
|
||||||
|
|
||||||
; The tile index for the second bomb digit
|
.not_bombs
|
||||||
LDA $05 : AND.w #$00FF : ORA.w #$2400 : STA $7EC7B2
|
|
||||||
|
|
||||||
.not_bombs
|
|
||||||
; Check if the user has arrows equipped
|
; Check if the user has arrows equipped
|
||||||
LDX $0202 : LDA $7EF33F, X : AND.w #$00FF
|
LDX $0202 : LDA $7EF33F, X : AND.w #$00FF
|
||||||
CPX.w #$0001 : BNE .not_arrows
|
CPX.w #$0001 : BNE .not_arrows
|
||||||
|
|
||||||
; Number of Arrows Link has.
|
; Number of Arrows Link has.
|
||||||
LDA $7EF377 : AND.w #$00FF
|
LDA $7EF377 : AND.w #$00FF
|
||||||
|
|
||||||
; converts hex to up to 3 decimal digits
|
; converts hex to up to 3 decimal digits
|
||||||
JSR HexToDecimal
|
JSR HexToDecimal
|
||||||
REP #$30
|
REP #$30
|
||||||
|
|
||||||
; The tile index for the first arrow digit
|
; The tile index for the first arrow digit
|
||||||
LDA $04 : AND.w #$00FF : ORA.w #$2400 : STA $7EC7B0
|
LDA $04 : AND.w #$00FF : ORA.w #$2400 : STA $7EC7B0
|
||||||
|
|
||||||
; The tile index for the second arrow digit
|
; The tile index for the second arrow digit
|
||||||
LDA $05 : AND.w #$00FF : ORA.w #$2400 : STA $7EC7B2
|
LDA $05 : AND.w #$00FF : ORA.w #$2400 : STA $7EC7B2
|
||||||
|
|
||||||
.not_arrows
|
.not_arrows
|
||||||
LDA.w #$007F : STA $05
|
LDA.w #$007F : STA $05
|
||||||
|
|
||||||
; Load number of Keys Link has
|
; Load number of Keys Link has
|
||||||
LDA $7EF36F : AND.w #$00FF : CMP.w #$00FF : BEQ .no_keys
|
LDA $7EF36F : AND.w #$00FF : CMP.w #$00FF : BEQ .no_keys
|
||||||
JSR HexToDecimal
|
JSR HexToDecimal
|
||||||
.no_keys
|
.no_keys
|
||||||
|
|
||||||
REP #$30
|
REP #$30
|
||||||
|
|
||||||
; The key digit, which is optionally drawn.
|
; The key digit, which is optionally drawn.
|
||||||
; Also check to see if the key spot is blank
|
; 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
|
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.
|
.dont_blank_key_icon
|
||||||
; If the key digit is blank, also blank out the key icon.
|
|
||||||
STA $7EC724
|
|
||||||
|
|
||||||
.dont_blank_key_icon
|
|
||||||
SEP #$30
|
SEP #$30
|
||||||
RTL
|
RTL
|
||||||
}
|
}
|
||||||
@@ -386,11 +385,6 @@ HexToDecimal:
|
|||||||
RTS
|
RTS
|
||||||
}
|
}
|
||||||
|
|
||||||
CopyHudToRight:
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
pushpc
|
pushpc
|
||||||
|
|
||||||
; =========================================================
|
; =========================================================
|
||||||
|
|||||||
@@ -4,32 +4,32 @@ Menu_CheckHScroll:
|
|||||||
{
|
{
|
||||||
LDA.b $F4
|
LDA.b $F4
|
||||||
BIT.b #$10 : BNE .leave_menu
|
BIT.b #$10 : BNE .leave_menu
|
||||||
LDA.b $F6
|
LDA.b $F6
|
||||||
BIT.b #$20 : BNE .left
|
BIT.b #$20 : BNE .left
|
||||||
BIT.b #$10 : BNE .right
|
BIT.b #$10 : BNE .right
|
||||||
|
RTS
|
||||||
|
|
||||||
RTS
|
.left
|
||||||
|
|
||||||
.left
|
REP #$20
|
||||||
REP #$20
|
LDA.w #$FFF8
|
||||||
LDA.w #$FFF8
|
BRA .merge
|
||||||
BRA .merge
|
|
||||||
|
|
||||||
.right
|
.right
|
||||||
REP #$20
|
REP #$20
|
||||||
LDA.w #$0008
|
LDA.w #$0008
|
||||||
|
|
||||||
.merge
|
.merge
|
||||||
STA.w MenuScrollHDirection
|
STA.w MenuScrollHDirection
|
||||||
|
|
||||||
SEP #$30
|
SEP #$30
|
||||||
INC.w $0200
|
INC.w $0200
|
||||||
LDA.b #$06 : STA.w $012F
|
LDA.b #$06 : STA.w $012F
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
.leave_menu
|
.leave_menu
|
||||||
LDA.b #$08
|
|
||||||
STA.w $0200
|
LDA.b #$0B : STA.w $0200
|
||||||
RTS
|
RTS
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user