More menu stuff
This commit is contained in:
572
main.asm
572
main.asm
@@ -4456,7 +4456,7 @@ RemoveItemFromPocket: ; d2ff
|
||||
ld e, l
|
||||
ld a, [hli]
|
||||
ld c, a
|
||||
ld a, [ItemCountBuffer]
|
||||
ld a, [CurItemQuantity]
|
||||
cp c
|
||||
jr nc, .ok ; memory
|
||||
ld c, a
|
||||
@@ -7944,555 +7944,7 @@ GetObjectTimeMask: ; 245a7 (9:45a7)
|
||||
xor a
|
||||
ret
|
||||
|
||||
Function245af:: ; 245af
|
||||
xor a
|
||||
ld [wMenuJoypad], a
|
||||
ld [hBGMapMode], a
|
||||
inc a
|
||||
ld [hInMenu], a
|
||||
call ClearObjectStructsa
|
||||
call Function24764
|
||||
call Function247dd
|
||||
call Function245f1
|
||||
call ApplyTilemap
|
||||
xor a
|
||||
ld [hBGMapMode], a
|
||||
ret
|
||||
; 245cb
|
||||
|
||||
Function245cb:: ; 245cb
|
||||
.loop
|
||||
call MenuJoyAction
|
||||
jp c, .exit
|
||||
call z, .zero
|
||||
jr .loop
|
||||
; 245d6
|
||||
|
||||
.exit: ; 245d6
|
||||
call MenuClickSound
|
||||
ld [wMenuJoypad], a
|
||||
ld a, 0
|
||||
ld [hInMenu], a
|
||||
ret
|
||||
; 245e1
|
||||
|
||||
.zero: ; 245e1
|
||||
call Function245f1
|
||||
ld a, 1
|
||||
ld [hBGMapMode], a
|
||||
ld c, 3
|
||||
call DelayFrames
|
||||
xor a
|
||||
ld [hBGMapMode], a
|
||||
ret
|
||||
; 245f1
|
||||
|
||||
Function245f1: ; 245f1
|
||||
xor a
|
||||
ld [hBGMapMode], a
|
||||
ld hl, Options
|
||||
ld a, [hl]
|
||||
push af
|
||||
set NO_TEXT_SCROLL, [hl]
|
||||
call Function247f0
|
||||
call Function2488b
|
||||
call Function248b8
|
||||
pop af
|
||||
ld [Options], a
|
||||
ret
|
||||
; 24609
|
||||
|
||||
MenuJoyAction: ; 24609
|
||||
.loop
|
||||
call ScrollingMenuJoypad
|
||||
ld a, [hJoyLast]
|
||||
and D_PAD
|
||||
ld b, a
|
||||
ld a, [hJoyPressed]
|
||||
and BUTTONS
|
||||
or b
|
||||
bit 0, a ; A
|
||||
jp nz, .a_button
|
||||
bit 1, a ; B
|
||||
jp nz, .b_button
|
||||
bit 2, a ; Select
|
||||
jp nz, .select
|
||||
bit 3, a ; Start
|
||||
jp nz, .start
|
||||
bit 4, a ; Right
|
||||
jp nz, .d_right
|
||||
bit 5, a ; Left
|
||||
jp nz, .d_left
|
||||
bit 6, a ; Up
|
||||
jp nz, .d_up
|
||||
bit 7, a ; Down
|
||||
jp nz, .d_down
|
||||
jr .loop
|
||||
; 24640
|
||||
|
||||
.unreferenced: ; unreferenced
|
||||
ld a, -1
|
||||
and a
|
||||
ret
|
||||
; 24644
|
||||
|
||||
.a_button: ; 24644
|
||||
call Function1bee
|
||||
ld a, [wMenuCursorY]
|
||||
dec a
|
||||
call Function248d5
|
||||
ld a, [MenuSelection]
|
||||
ld [CurItem], a
|
||||
ld a, [wcf75]
|
||||
ld [wItemQuantityBuffer], a
|
||||
call Function246fc
|
||||
dec a
|
||||
ld [wScrollingMenuCursorPosition], a
|
||||
ld [wd107], a
|
||||
ld a, [MenuSelection]
|
||||
cp -1
|
||||
jr z, .b_button
|
||||
ld a, A_BUTTON
|
||||
scf
|
||||
ret
|
||||
; 2466f
|
||||
|
||||
.b_button: ; 2466f
|
||||
ld a, B_BUTTON
|
||||
scf
|
||||
ret
|
||||
; 24673
|
||||
|
||||
.select: ; 24673
|
||||
ld a, [wMenuData2Flags]
|
||||
bit 7, a
|
||||
jp z, xor_a_dec_a
|
||||
ld a, [wMenuCursorY]
|
||||
dec a
|
||||
call Function248d5
|
||||
ld a, [MenuSelection]
|
||||
cp -1
|
||||
jp z, xor_a_dec_a
|
||||
call Function246fc
|
||||
dec a
|
||||
ld [wScrollingMenuCursorPosition], a
|
||||
ld a, SELECT
|
||||
scf
|
||||
ret
|
||||
; 24695
|
||||
|
||||
.start: ; 24695
|
||||
ld a, [wMenuData2Flags]
|
||||
bit 6, a
|
||||
jp z, xor_a_dec_a
|
||||
ld a, START
|
||||
scf
|
||||
ret
|
||||
; 246a1
|
||||
|
||||
.d_left: ; 246a1
|
||||
ld hl, wcfa6
|
||||
bit 7, [hl]
|
||||
jp z, xor_a_dec_a
|
||||
ld a, [wMenuData2Flags]
|
||||
bit 3, a
|
||||
jp z, xor_a_dec_a
|
||||
ld a, D_LEFT
|
||||
scf
|
||||
ret
|
||||
; 246b5
|
||||
|
||||
.d_right: ; 246b5
|
||||
ld hl, wcfa6
|
||||
bit 7, [hl]
|
||||
jp z, xor_a_dec_a
|
||||
ld a, [wMenuData2Flags]
|
||||
bit 2, a
|
||||
jp z, xor_a_dec_a
|
||||
ld a, D_RIGHT
|
||||
scf
|
||||
ret
|
||||
; 246c9
|
||||
|
||||
.d_up: ; 246c9
|
||||
ld hl, wcfa6
|
||||
bit 7, [hl]
|
||||
jp z, xor_a
|
||||
ld hl, wMenuScrollPosition
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .xor_dec_up
|
||||
dec [hl]
|
||||
jp xor_a
|
||||
|
||||
.xor_dec_up
|
||||
jp xor_a_dec_a
|
||||
; 246df
|
||||
|
||||
.d_down: ; 246df
|
||||
ld hl, wcfa6
|
||||
bit 7, [hl]
|
||||
jp z, xor_a
|
||||
ld hl, wMenuScrollPosition
|
||||
ld a, [wMenuData2Items]
|
||||
add [hl]
|
||||
ld b, a
|
||||
ld a, [wd144]
|
||||
cp b
|
||||
jr c, .xor_dec_down
|
||||
inc [hl]
|
||||
jp xor_a
|
||||
|
||||
.xor_dec_down
|
||||
jp xor_a_dec_a
|
||||
; 246fc
|
||||
|
||||
Function246fc: ; 246fc
|
||||
ld a, [wMenuScrollPosition]
|
||||
ld c, a
|
||||
ld a, [wMenuCursorY]
|
||||
add c
|
||||
ld c, a
|
||||
ret
|
||||
; 24706
|
||||
|
||||
Function24706: ; 24706 (9:4706)
|
||||
call MenuBoxCoord2Tile
|
||||
ld de, SCREEN_WIDTH
|
||||
add hl, de
|
||||
ld de, 2 * SCREEN_WIDTH
|
||||
ld a, [wMenuData2Items]
|
||||
.asm_24713
|
||||
ld [hl], " "
|
||||
add hl, de
|
||||
dec a
|
||||
jr nz, .asm_24713
|
||||
ret
|
||||
|
||||
ClearObjectStructsa: ; 2471a
|
||||
; Get the value of (wMenuData2Bank):(wMenuData2Addr) and store it in wd144.
|
||||
ld hl, wMenuData2Addr
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
ld a, [wMenuData2Bank]
|
||||
call GetFarByte
|
||||
ld [wd144], a
|
||||
; if ([wd144] + 1) < [wMenuData2Items] + [wMenuScrollPosition]: [wMenuScrollPosition] = max(([wd144] + 1) - [wMenuData2Items], 0)
|
||||
ld a, [wMenuData2Items]
|
||||
ld c, a
|
||||
ld a, [wMenuScrollPosition]
|
||||
add c
|
||||
ld c, a
|
||||
ld a, [wd144]
|
||||
inc a
|
||||
cp c
|
||||
jr nc, .skip
|
||||
ld a, [wMenuData2Items]
|
||||
ld c, a
|
||||
ld a, [wd144]
|
||||
inc a
|
||||
sub c
|
||||
jr nc, .store
|
||||
xor a
|
||||
|
||||
.store
|
||||
ld [wMenuScrollPosition], a
|
||||
|
||||
.skip
|
||||
ld a, [wMenuScrollPosition]
|
||||
ld c, a
|
||||
ld a, [wMenuCursorBuffer]
|
||||
add c
|
||||
ld b, a
|
||||
ld a, [wd144]
|
||||
inc a
|
||||
cp b
|
||||
jr c, .asm_2475a
|
||||
jr nc, .asm_24763
|
||||
|
||||
.asm_2475a
|
||||
xor a
|
||||
ld [wMenuScrollPosition], a
|
||||
ld a, $1
|
||||
ld [wMenuCursorBuffer], a
|
||||
|
||||
.asm_24763
|
||||
ret
|
||||
; 24764
|
||||
|
||||
Function24764: ; 24764
|
||||
ld a, [wMenuData2Flags]
|
||||
ld c, a
|
||||
ld a, [wd144]
|
||||
ld b, a
|
||||
ld a, [wMenuBorderTopCoord]
|
||||
add $1
|
||||
ld [wcfa1], a
|
||||
ld a, [wMenuBorderLeftCoord]
|
||||
add $0
|
||||
ld [wcfa2], a
|
||||
ld a, [wMenuData2Items]
|
||||
cp b
|
||||
jr c, .asm_24786
|
||||
jr z, .asm_24786
|
||||
ld a, b
|
||||
inc a
|
||||
|
||||
.asm_24786
|
||||
ld [wcfa3], a
|
||||
ld a, $1
|
||||
ld [wcfa4], a
|
||||
ld a, $8c
|
||||
bit 2, c
|
||||
jr z, .asm_24796
|
||||
set 0, a
|
||||
|
||||
.asm_24796
|
||||
bit 3, c
|
||||
jr z, .asm_2479c
|
||||
set 1, a
|
||||
|
||||
.asm_2479c
|
||||
ld [wcfa5], a
|
||||
xor a
|
||||
ld [wcfa6], a
|
||||
ld a, $20
|
||||
ld [wcfa7], a
|
||||
ld a, $c3
|
||||
bit 7, c
|
||||
jr z, .asm_247b0
|
||||
add $4
|
||||
|
||||
.asm_247b0
|
||||
bit 6, c
|
||||
jr z, .asm_247b6
|
||||
add $8
|
||||
|
||||
.asm_247b6
|
||||
ld [wcfa8], a
|
||||
ld a, [wcfa3]
|
||||
ld b, a
|
||||
ld a, [wMenuCursorBuffer]
|
||||
and a
|
||||
jr z, .asm_247c8
|
||||
cp b
|
||||
jr z, .asm_247ca
|
||||
jr c, .asm_247ca
|
||||
|
||||
.asm_247c8
|
||||
ld a, $1
|
||||
|
||||
.asm_247ca
|
||||
ld [wMenuCursorY], a
|
||||
ld a, $1
|
||||
ld [wMenuCursorX], a
|
||||
xor a
|
||||
ld [wCursorCurrentTile], a
|
||||
ld [wCursorCurrentTile + 1], a
|
||||
ld [wCursorOffCharacter], a
|
||||
ret
|
||||
; 247dd
|
||||
|
||||
Function247dd: ; 247dd
|
||||
ld a, [wd144]
|
||||
ld c, a
|
||||
ld a, [wd0e3]
|
||||
and a
|
||||
jr z, .asm_247ef
|
||||
dec a
|
||||
cp c
|
||||
jr c, .asm_247ef
|
||||
xor a
|
||||
ld [wd0e3], a
|
||||
|
||||
.asm_247ef
|
||||
ret
|
||||
; 247f0
|
||||
|
||||
Function247f0: ; 247f0
|
||||
call ClearWholeMenuBox
|
||||
ld a, [wMenuData2Flags]
|
||||
bit 4, a
|
||||
jr z, .asm_2480d
|
||||
ld a, [wMenuScrollPosition]
|
||||
and a
|
||||
jr z, .asm_2480d
|
||||
ld a, [wMenuBorderTopCoord]
|
||||
ld b, a
|
||||
ld a, [wMenuBorderRightCoord]
|
||||
ld c, a
|
||||
call Coord2Tile
|
||||
ld [hl], $61
|
||||
|
||||
.asm_2480d
|
||||
call MenuBoxCoord2Tile
|
||||
ld bc, $15
|
||||
add hl, bc
|
||||
ld a, [wMenuData2Items]
|
||||
ld b, a
|
||||
ld c, $0
|
||||
.asm_2481a
|
||||
ld a, [wMenuScrollPosition]
|
||||
add c
|
||||
ld [wScrollingMenuCursorPosition], a
|
||||
ld a, c
|
||||
call Function248d5
|
||||
ld a, [MenuSelection]
|
||||
cp $ff
|
||||
jr z, .asm_24851
|
||||
push bc
|
||||
push hl
|
||||
call Function2486e
|
||||
pop hl
|
||||
ld bc, $28
|
||||
add hl, bc
|
||||
pop bc
|
||||
inc c
|
||||
ld a, c
|
||||
cp b
|
||||
jr nz, .asm_2481a
|
||||
ld a, [wMenuData2Flags]
|
||||
bit 4, a
|
||||
jr z, .asm_24850
|
||||
ld a, [wMenuBorderBottomCoord]
|
||||
ld b, a
|
||||
ld a, [wMenuBorderRightCoord]
|
||||
ld c, a
|
||||
call Coord2Tile
|
||||
ld [hl], $ee
|
||||
|
||||
.asm_24850
|
||||
ret
|
||||
|
||||
.asm_24851
|
||||
ld a, [wMenuData2Flags]
|
||||
bit 0, a
|
||||
jr nz, .asm_24866
|
||||
ld de, .string_2485f
|
||||
call PlaceString
|
||||
ret
|
||||
|
||||
.string_2485f
|
||||
db "CANCEL@"
|
||||
|
||||
.asm_24866
|
||||
ld d, h
|
||||
ld e, l
|
||||
ld hl, wcf98
|
||||
jp CallPointerAt
|
||||
; 2486e
|
||||
|
||||
Function2486e: ; 2486e
|
||||
push hl
|
||||
ld d, h
|
||||
ld e, l
|
||||
ld hl, wcf98
|
||||
call CallPointerAt
|
||||
pop hl
|
||||
ld a, [wcf93]
|
||||
and a
|
||||
jr z, .asm_2488a
|
||||
ld e, a
|
||||
ld d, $0
|
||||
add hl, de
|
||||
ld d, h
|
||||
ld e, l
|
||||
ld hl, wcf9b
|
||||
call CallPointerAt
|
||||
|
||||
.asm_2488a
|
||||
ret
|
||||
; 2488b
|
||||
|
||||
Function2488b: ; 2488b
|
||||
ld a, [wd0e3]
|
||||
and a
|
||||
jr z, .asm_248b7
|
||||
ld b, a
|
||||
ld a, [wMenuScrollPosition]
|
||||
cp b
|
||||
jr nc, .asm_248b7
|
||||
ld c, a
|
||||
ld a, [wMenuData2Items]
|
||||
add c
|
||||
cp b
|
||||
jr c, .asm_248b7
|
||||
ld a, b
|
||||
sub c
|
||||
dec a
|
||||
add a
|
||||
add $1
|
||||
ld c, a
|
||||
ld a, [wMenuBorderTopCoord]
|
||||
add c
|
||||
ld b, a
|
||||
ld a, [wMenuBorderLeftCoord]
|
||||
add $0
|
||||
ld c, a
|
||||
call Coord2Tile
|
||||
ld [hl], $ec
|
||||
|
||||
.asm_248b7
|
||||
ret
|
||||
; 248b8
|
||||
|
||||
Function248b8: ; 248b8
|
||||
ld a, [wMenuData2Flags]
|
||||
bit 5, a
|
||||
ret z
|
||||
bit 1, a
|
||||
jr z, .asm_248c7
|
||||
ld a, [wd0e3]
|
||||
and a
|
||||
ret nz
|
||||
|
||||
.asm_248c7
|
||||
ld a, [wMenuCursorY]
|
||||
dec a
|
||||
call Function248d5
|
||||
ld hl, wcf9e
|
||||
call CallPointerAt
|
||||
ret
|
||||
; 248d5
|
||||
|
||||
Function248d5: ; 248d5
|
||||
push de
|
||||
push hl
|
||||
ld e, a
|
||||
ld a, [wMenuScrollPosition]
|
||||
add e
|
||||
ld e, a
|
||||
ld d, $0
|
||||
ld hl, wMenuData2Addr
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
inc hl
|
||||
ld a, [wcf94]
|
||||
cp $1
|
||||
jr z, .asm_248f2
|
||||
cp $2
|
||||
jr z, .asm_248f1
|
||||
|
||||
.asm_248f1
|
||||
add hl, de
|
||||
|
||||
.asm_248f2
|
||||
add hl, de
|
||||
ld a, [wMenuData2Bank]
|
||||
call GetFarByte
|
||||
ld [MenuSelection], a
|
||||
ld [CurItem], a
|
||||
inc hl
|
||||
ld a, [wMenuData2Bank]
|
||||
call GetFarByte
|
||||
ld [wcf75], a
|
||||
pop hl
|
||||
pop de
|
||||
ret
|
||||
; 2490c
|
||||
|
||||
INCLUDE "engine/scrolling_menu.asm"
|
||||
INCLUDE "engine/switch_items.asm"
|
||||
|
||||
PlaceMenuItemName: ; 0x24ab4
|
||||
@@ -8518,7 +7970,7 @@ PlaceMenuItemQuantity: ; 0x24ac3
|
||||
add hl, de
|
||||
ld [hl], "×"
|
||||
inc hl
|
||||
ld de, wcf75
|
||||
ld de, MenuSelectionQuantity
|
||||
lb bc, 1, 2
|
||||
call PrintNum
|
||||
|
||||
@@ -8526,25 +7978,25 @@ PlaceMenuItemQuantity: ; 0x24ac3
|
||||
ret
|
||||
; 0x24ae8
|
||||
|
||||
PlaceMoneyTopRightOW: ; 24ae8
|
||||
PlaceMoneyTopRight: ; 24ae8
|
||||
ld hl, MenuDataHeader_0x24b15
|
||||
call CopyMenuDataHeader
|
||||
jr Function24b01
|
||||
jr PlaceMoneyDataHeader
|
||||
|
||||
PlaceMoneyBottomLeftOW: ; 24af0
|
||||
PlaceMoneyBottomLeft: ; 24af0
|
||||
ld hl, MenuDataHeader_0x24b1d
|
||||
call CopyMenuDataHeader
|
||||
jr Function24b01
|
||||
jr PlaceMoneyDataHeader
|
||||
|
||||
PlaceMoneyTopRightMenu: ; 24af8
|
||||
PlaceMoneyAtTopLeftOfTextbox: ; 24af8
|
||||
ld hl, MenuDataHeader_0x24b15
|
||||
ld de, $b
|
||||
call Function1e2e
|
||||
lb de, 0, 11
|
||||
call OffsetMenuDataHeader
|
||||
|
||||
Function24b01: ; 24b01
|
||||
PlaceMoneyDataHeader: ; 24b01
|
||||
call MenuBox
|
||||
call MenuBoxCoord2Tile
|
||||
ld de, $15
|
||||
ld de, SCREEN_WIDTH + 1
|
||||
add hl, de
|
||||
ld de, Money
|
||||
lb bc, PRINTNUM_MONEY | 3, 6
|
||||
|
Reference in New Issue
Block a user