ref: d644406f61983be78339a0e9f366e8d34c209c6c
parent: fe4ef4e5951e855174cbff3da308b342b0b5bd09
author: PikalaxALT <PikalaxALT@gmail.com>
date: Thu Dec 17 17:31:16 EST 2015
More menu stuff
--- a/battle/core.asm
+++ b/battle/core.asm
@@ -5342,7 +5342,7 @@
callba FreezeMonIcons
call .GetMenu
jr c, .PressedB
- call Function1bee
+ call PlaceHollowCursor
ld a, [wMenuCursorY]
cp $1 ; SWITCH
jp z, TryPlayerSwitch
--- a/data/odd_eggs.asm
+++ b/data/odd_eggs.asm
@@ -52,7 +52,7 @@
ld a, 1
ld [wItemQuantityChangeBuffer], a
ld a, -1
- ld [ItemCountBuffer], a
+ ld [CurItemQuantity], a
ld hl, NumItems
call TossItem
--- a/engine/billspc.asm
+++ b/engine/billspc.asm
@@ -2323,7 +2323,7 @@
hlcoord 0, 4
lb bc, 8, 9
call TextBox
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuJoypad]
cp B_BUTTON
jr z, .done
--- a/engine/decorations.asm
+++ b/engine/decorations.asm
@@ -11,16 +11,16 @@
ld hl, .MenuDataHeader
call LoadMenuDataHeader
xor a
- ld [wd1ee], a
+ ld [Buffer5], a
ld a, $1
- ld [wd1ef], a
+ ld [Buffer6], a
.top_loop
- ld a, [wd1ef]
+ ld a, [Buffer6]
ld [wMenuCursorBuffer], a
call .FindCategoriesWithOwnedDecos
call DoNthMenu
ld a, [wMenuCursorY]
- ld [wd1ef], a
+ ld [Buffer6], a
jr c, .exit_menu
ld a, [MenuSelection]
ld hl, .pointers
@@ -31,7 +31,7 @@
call ExitMenu
pop af
ld [wcf76], a
- ld a, [wd1ee]
+ ld a, [Buffer5]
ld c, a
ret
; 0x2679a
@@ -400,7 +400,7 @@
call InitScrollingMenu
xor a
ld [wMenuScrollPosition], a
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuJoypad]
cp 2
jr z, .no_action_2
@@ -803,7 +803,7 @@
call DecoAction_SetItUp
jr c, .failed
ld a, 1
- ld [wd1ee], a
+ ld [Buffer5], a
pop hl
ld a, [MenuSelection]
ld [hl], a
@@ -865,7 +865,7 @@
jr z, .nothingthere
; Put it away.
ld a, $1
- ld [wd1ee], a
+ ld [Buffer5], a
ld a, [Buffer1]
ld [MenuSelection], a
ld hl, StringBuffer3
@@ -889,7 +889,7 @@
call DecoAction_SetItUp_Ornament
jr c, .cancel
ld a, $1
- ld [wd1ee], a
+ ld [Buffer5], a
jr DecoAction_FinishUp_Ornament
.cancel
@@ -981,7 +981,7 @@
ld hl, StringBuffer3
call GetDecorationName
ld a, $1
- ld [wd1ee], a
+ ld [Buffer5], a
xor a
ld [wd1ec], a
ld hl, DecoText_PutAwayTheDeco
--- a/engine/intro_menu.asm
+++ b/engine/intro_menu.asm
@@ -545,7 +545,7 @@
ld hl, .MenuDataHeader_NoDex
.pokedex_header
- call Function1e35
+ call _OffsetMenuDataHeader
call MenuBox
call PlaceVerticalMenuItems
ret
--- a/engine/link.asm
+++ b/engine/link.asm
@@ -1271,7 +1271,7 @@
jp nz, Function2891c
xor a
ld [MonType], a
- call Function1bf7
+ call HideCursor
push hl
push bc
ld bc, NAME_LENGTH
@@ -1333,7 +1333,7 @@
jp nz, Function2891c
ld a, $1
ld [MonType], a
- call Function1bf7
+ call HideCursor
push hl
push bc
ld bc, NAME_LENGTH
@@ -1353,7 +1353,7 @@
ld a, [PartyCount]
cp b
jr nz, Function2891c
- call Function1bf7
+ call HideCursor
push hl
push bc
ld bc, NAME_LENGTH
@@ -1463,7 +1463,7 @@
jp Function2888b
.asm_289fe
- call Function1bee
+ call PlaceHollowCursor
pop af
ld [wMenuCursorY], a
dec a
@@ -1552,7 +1552,7 @@
ld a, [wMenuCursorY]
cp $1
jp nz, Function2891c
- call Function1bf7
+ call HideCursor
push hl
push bc
ld bc, NAME_LENGTH
--- a/engine/mail.asm
+++ b/engine/mail.asm
@@ -399,7 +399,7 @@
ld [wMenuCursorBuffer], a
ld a, [OBPals + 8 * 6]
ld [wMenuScrollPosition], a
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuScrollPosition]
ld [OBPals + 8 * 6], a
ld a, [wMenuCursorY]
--- a/engine/main_menu.asm
+++ b/engine/main_menu.asm
@@ -530,7 +530,7 @@
Function4a098: ; 4a098 (12:6098)
ld a, $2
call MenuClickSound
- call Function1bee
+ call PlaceHollowCursor
call WaitBGMap
call LoadStandardMenuDataHeader
callba Function89de0
@@ -749,7 +749,7 @@
lb bc, 6, 1
ld a, " "
call Function4a6d8
- call Function1bee
+ call PlaceHollowCursor
call WaitBGMap
call LoadStandardMenuDataHeader
ld a, $5
@@ -786,7 +786,7 @@
scf
ret
.asm_4a2f0
- call Function1bee
+ call PlaceHollowCursor
ld hl, UnknownText_0x4a358
call PrintText
hlcoord 14, 7
--- a/engine/mart.asm
+++ b/engine/mart.asm
@@ -470,7 +470,7 @@
BuyMenuLoop: ; 15cef
- callba PlaceMoneyTopRightOW
+ callba PlaceMoneyTopRight
call UpdateSprites
ld hl, MenuDataHeader_Buy
call CopyMenuDataHeader
@@ -478,7 +478,7 @@
ld [wMenuCursorBuffer], a
ld a, [wd045 + 1]
ld [wMenuScrollPosition], a
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuScrollPosition]
ld [wd045 + 1], a
ld a, [wMenuCursorY]
@@ -875,7 +875,7 @@
.okay_to_sell
ld hl, Text_Mart_SellHowMany
call PrintText
- callba PlaceMoneyTopRightMenu
+ callba PlaceMoneyAtTopLeftOfTextbox
callba SelectQuantityToSell
call ExitMenu
jr c, .declined
@@ -899,7 +899,7 @@
ld hl, Text_Mart_SoldForAmount
call PrintTextBoxText
call PlayTransactionSound
- callba PlaceMoneyBottomLeftOW
+ callba PlaceMoneyBottomLeft
call JoyWaitAorB
.declined
--- a/engine/pack.asm
+++ b/engine/pack.asm
@@ -69,7 +69,7 @@
ld [wMenuCursorBuffer], a
ld a, [wItemsPocketScrollPosition]
ld [wMenuScrollPosition], a
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuScrollPosition]
ld [wItemsPocketScrollPosition], a
ld a, [wMenuCursorY]
@@ -97,7 +97,7 @@
ld [wMenuCursorBuffer], a
ld a, [wKeyItemsPocketScrollPosition]
ld [wMenuScrollPosition], a
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuScrollPosition]
ld [wKeyItemsPocketScrollPosition], a
ld a, [wMenuCursorY]
@@ -230,7 +230,7 @@
ld [wMenuCursorBuffer], a
ld a, [wBallsPocketScrollPosition]
ld [wMenuScrollPosition], a
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuScrollPosition]
ld [wBallsPocketScrollPosition], a
ld a, [wMenuCursorY]
@@ -528,7 +528,7 @@
pop af
jr c, .finish
ld hl, NumItems
- ld a, [ItemCountBuffer]
+ ld a, [CurItemQuantity]
call TossItem
call Pack_GetItemName
ld hl, Text_ThrewAway
@@ -577,7 +577,7 @@
rrca
and $c0
ld b, a
- ld a, [ItemCountBuffer]
+ ld a, [CurItemQuantity]
inc a
and $3f
or b
@@ -734,7 +734,7 @@
ld [wMenuCursorBuffer], a
ld a, [wItemsPocketScrollPosition]
ld [wMenuScrollPosition], a
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuScrollPosition]
ld [wItemsPocketScrollPosition], a
ld a, [wMenuCursorY]
@@ -762,7 +762,7 @@
ld [wMenuCursorBuffer], a
ld a, [wKeyItemsPocketScrollPosition]
ld [wMenuScrollPosition], a
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuScrollPosition]
ld [wKeyItemsPocketScrollPosition], a
ld a, [wMenuCursorY]
@@ -813,7 +813,7 @@
ld [wMenuCursorBuffer], a
ld a, [wBallsPocketScrollPosition]
ld [wMenuScrollPosition], a
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuScrollPosition]
ld [wBallsPocketScrollPosition], a
ld a, [wMenuCursorY]
@@ -1018,7 +1018,7 @@
ld [wMenuCursorBuffer], a
ld a, [wItemsPocketScrollPosition]
ld [wMenuScrollPosition], a
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuScrollPosition]
ld [wItemsPocketScrollPosition], a
ld a, [wMenuCursorY]
@@ -1034,7 +1034,7 @@
ld [wMenuCursorBuffer], a
ld a, [wKeyItemsPocketScrollPosition]
ld [wMenuScrollPosition], a
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuScrollPosition]
ld [wKeyItemsPocketScrollPosition], a
ld a, [wMenuCursorY]
@@ -1059,7 +1059,7 @@
ld [wMenuCursorBuffer], a
ld a, [wBallsPocketScrollPosition]
ld [wMenuScrollPosition], a
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuScrollPosition]
ld [wBallsPocketScrollPosition], a
ld a, [wMenuCursorY]
@@ -1243,7 +1243,7 @@
call InitPocket
pop hl
call CopyMenuDataHeader
- call HandleScrollingMenu
+ call ScrollingMenu
ret
Pack_JumptableNext: ; 10866 (4:4866)
--- a/engine/party_menu.asm
+++ b/engine/party_menu.asm
@@ -739,7 +739,7 @@
PartyMenuSelect: ; 0x50457
; sets carry if exitted menu.
call StaticMenuJoypad
- call Function1bee
+ call PlaceHollowCursor
ld a, [PartyCount]
inc a
ld b, a
--- a/engine/pokecenter_pc.asm
+++ b/engine/pokecenter_pc.asm
@@ -591,7 +591,7 @@
ld [wMenuCursorBuffer], a
ld a, [wd0dd]
ld [wMenuScrollPosition], a
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuScrollPosition]
ld [wd0dd], a
ld a, [wMenuCursorY]
@@ -636,7 +636,7 @@
.asm_159fb
callba Function24706
- call Function1bee
+ call PlaceHollowCursor
and a
ret
--- a/engine/scripting.asm
+++ b/engine/scripting.asm
@@ -2385,7 +2385,7 @@
call GetScriptByte
ld [wItemQuantityChangeBuffer], a
ld a, -1
- ld [ItemCountBuffer], a
+ ld [CurItemQuantity], a
ld hl, NumItems
call TossItem
ret nc
--- /dev/null
+++ b/engine/scrolling_menu.asm
@@ -1,0 +1,544 @@
+_InitScrollingMenu:: ; 245af
+ xor a
+ ld [wMenuJoypad], a
+ ld [hBGMapMode], a
+ inc a
+ ld [hInMenu], a
+ call InitScrollingMenuCursor
+ call ScrollingMenu_InitFlags
+ call ScrollingMenu_ValidateSwitchItem
+ call ScrollingMenu_InitDisplay
+ call ApplyTilemap
+ xor a
+ ld [hBGMapMode], a
+ ret
+; 245cb
+
+_ScrollingMenu:: ; 245cb
+.loop
+ call ScrollingMenuJoyAction
+ 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 ScrollingMenu_InitDisplay
+ ld a, 1
+ ld [hBGMapMode], a
+ ld c, 3
+ call DelayFrames
+ xor a
+ ld [hBGMapMode], a
+ ret
+; 245f1
+
+ScrollingMenu_InitDisplay: ; 245f1
+ xor a
+ ld [hBGMapMode], a
+ ld hl, Options
+ ld a, [hl]
+ push af
+ set NO_TEXT_SCROLL, [hl]
+ call ScrollingMenu_UpdateDisplay
+ call ScrollingMenu_PlaceCursor
+ call ScrollingMenu_CheckCallFunction3
+ pop af
+ ld [Options], a
+ ret
+; 24609
+
+ScrollingMenuJoyAction: ; 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 PlaceHollowCursor
+ ld a, [wMenuCursorY]
+ dec a
+ call ScrollingMenu_GetListItemCoordAndFunctionArgs
+ ld a, [MenuSelection]
+ ld [CurItem], a
+ ld a, [MenuSelectionQuantity]
+ ld [wItemQuantityBuffer], a
+ call ScrollingMenu_GetCursorPosition
+ dec a
+ ld [wScrollingMenuCursorPosition], a
+ ld [CurItemQuantity], 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 ScrollingMenu_GetListItemCoordAndFunctionArgs
+ ld a, [MenuSelection]
+ cp -1
+ jp z, xor_a_dec_a
+ call ScrollingMenu_GetCursorPosition
+ 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, w2DMenuFlags2
+ 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, w2DMenuFlags2
+ 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, w2DMenuFlags2
+ 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, w2DMenuFlags2
+ bit 7, [hl]
+ jp z, xor_a
+ ld hl, wMenuScrollPosition
+ ld a, [wMenuData2_ScrollingMenuHeight]
+ add [hl]
+ ld b, a
+ ld a, [wScrollingMenuListSize]
+ cp b
+ jr c, .xor_dec_down
+ inc [hl]
+ jp xor_a
+
+.xor_dec_down
+ jp xor_a_dec_a
+; 246fc
+
+ScrollingMenu_GetCursorPosition: ; 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, [wMenuData2_ScrollingMenuHeight]
+.asm_24713
+ ld [hl], " "
+ add hl, de
+ dec a
+ jr nz, .asm_24713
+ ret
+
+InitScrollingMenuCursor: ; 2471a
+ ld hl, wMenuData2_ItemsPointerAddr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [wMenuData2_ItemsPointerBank]
+ call GetFarByte
+ ld [wScrollingMenuListSize], a
+ ld a, [wMenuData2_ScrollingMenuHeight]
+ ld c, a
+ ld a, [wMenuScrollPosition]
+ add c
+ ld c, a
+ ld a, [wScrollingMenuListSize]
+ inc a
+ cp c
+ jr nc, .skip
+ ld a, [wMenuData2_ScrollingMenuHeight]
+ ld c, a
+ ld a, [wScrollingMenuListSize]
+ 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, [wScrollingMenuListSize]
+ 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
+
+ScrollingMenu_InitFlags: ; 24764
+ ld a, [wMenuData2Flags]
+ ld c, a
+ ld a, [wScrollingMenuListSize]
+ ld b, a
+ ld a, [wMenuBorderTopCoord]
+ add $1
+ ld [w2DMenuCursorInitY], a
+ ld a, [wMenuBorderLeftCoord]
+ add $0
+ ld [w2DMenuCursorInitX], a
+ ld a, [wMenuData2_ScrollingMenuHeight]
+ cp b
+ jr c, .asm_24786
+ jr z, .asm_24786
+ ld a, b
+ inc a
+
+.asm_24786
+ ld [w2DMenuNumRows], a
+ ld a, $1
+ ld [w2DMenuNumCols], 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 [w2DMenuFlags1], a
+ xor a
+ ld [w2DMenuFlags2], a
+ ld a, $20
+ ld [w2DMenuFlags3], 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 [w2DMenuFlags4], a
+ ld a, [w2DMenuNumRows]
+ 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
+
+ScrollingMenu_ValidateSwitchItem: ; 247dd
+ ld a, [wScrollingMenuListSize]
+ ld c, a
+ ld a, [wSwitchItem]
+ and a
+ jr z, .done
+ dec a
+ cp c
+ jr c, .done
+ xor a
+ ld [wSwitchItem], a
+
+.done
+ ret
+; 247f0
+
+ScrollingMenu_UpdateDisplay: ; 247f0
+ call ClearWholeMenuBox
+ ld a, [wMenuData2Flags]
+ bit 4, a ; place arrows
+ jr z, .okay
+ ld a, [wMenuScrollPosition]
+ and a
+ jr z, .okay
+ ld a, [wMenuBorderTopCoord]
+ ld b, a
+ ld a, [wMenuBorderRightCoord]
+ ld c, a
+ call Coord2Tile
+ ld [hl], "▲"
+
+.okay
+ call MenuBoxCoord2Tile
+ ld bc, SCREEN_WIDTH + 1
+ add hl, bc
+ ld a, [wMenuData2_ScrollingMenuHeight]
+ ld b, a
+ ld c, $0
+.loop
+ ld a, [wMenuScrollPosition]
+ add c
+ ld [wScrollingMenuCursorPosition], a
+ ld a, c
+ call ScrollingMenu_GetListItemCoordAndFunctionArgs
+ ld a, [MenuSelection]
+ cp -1
+ jr z, .cancel
+ push bc
+ push hl
+ call ScrollingMenu_CallFunctions1and2
+ pop hl
+ ld bc, 2 * SCREEN_WIDTH
+ add hl, bc
+ pop bc
+ inc c
+ ld a, c
+ cp b
+ jr nz, .loop
+ ld a, [wMenuData2Flags]
+ bit 4, a ; place arrows
+ jr z, .done
+ ld a, [wMenuBorderBottomCoord]
+ ld b, a
+ ld a, [wMenuBorderRightCoord]
+ ld c, a
+ call Coord2Tile
+ ld [hl], "▼"
+
+.done
+ ret
+
+.cancel
+ ld a, [wMenuData2Flags]
+ bit 0, a ; call function on cancel
+ jr nz, .call_function
+ ld de, .string_2485f
+ call PlaceString
+ ret
+
+.string_2485f
+ db "CANCEL@"
+
+.call_function
+ ld d, h
+ ld e, l
+ ld hl, wMenuData2_ScrollingMenuFunction1
+ jp CallPointerAt
+; 2486e
+
+ScrollingMenu_CallFunctions1and2: ; 2486e
+ push hl
+ ld d, h
+ ld e, l
+ ld hl, wMenuData2_ScrollingMenuFunction1
+ call CallPointerAt
+ pop hl
+ ld a, [wMenuData2_ScrollingMenuWidth]
+ and a
+ jr z, .done
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld d, h
+ ld e, l
+ ld hl, wMenuData2_ScrollingMenuFunction2
+ call CallPointerAt
+
+.done
+ ret
+; 2488b
+
+ScrollingMenu_PlaceCursor: ; 2488b
+ ld a, [wSwitchItem]
+ and a
+ jr z, .done
+ ld b, a
+ ld a, [wMenuScrollPosition]
+ cp b
+ jr nc, .done
+ ld c, a
+ ld a, [wMenuData2_ScrollingMenuHeight]
+ add c
+ cp b
+ jr c, .done
+ 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], "▷"
+
+.done
+ ret
+; 248b8
+
+ScrollingMenu_CheckCallFunction3: ; 248b8
+ ld a, [wMenuData2Flags]
+ bit 5, a ; call function 3
+ ret z
+ bit 1, a ; call function 3 if not switching items
+ jr z, .call
+ ld a, [wSwitchItem]
+ and a
+ ret nz
+
+.call
+ ld a, [wMenuCursorY]
+ dec a
+ call ScrollingMenu_GetListItemCoordAndFunctionArgs
+ ld hl, wMenuData2_ScrollingMenuFunction3
+ call CallPointerAt
+ ret
+; 248d5
+
+ScrollingMenu_GetListItemCoordAndFunctionArgs: ; 248d5
+ push de
+ push hl
+ ld e, a
+ ld a, [wMenuScrollPosition]
+ add e
+ ld e, a
+ ld d, $0
+ ld hl, wMenuData2_ItemsPointerAddr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ inc hl ; items
+ ld a, [wMenuData2_ScrollingMenuSpacing]
+ cp 1
+ jr z, .got_spacing
+ cp 2
+ jr z, .pointless_jump
+.pointless_jump
+ add hl, de
+.got_spacing
+ add hl, de
+ ld a, [wMenuData2_ItemsPointerBank]
+ call GetFarByte
+ ld [MenuSelection], a
+ ld [CurItem], a
+ inc hl
+ ld a, [wMenuData2_ItemsPointerBank]
+ call GetFarByte
+ ld [MenuSelectionQuantity], a
+ pop hl
+ pop de
+ ret
+; 2490c
--- a/engine/specials.asm
+++ b/engine/specials.asm
@@ -101,7 +101,7 @@
add_special SpecialCheckPokerus
add_special Special_DisplayCoinCaseBalance
add_special Special_DisplayMoneyAndCoinBalance
- add_special PlaceMoneyTopRightOW
+ add_special PlaceMoneyTopRight
add_special Special_CheckForLuckyNumberWinners
add_special Special_CheckLuckyNumberShowFlag
add_special Special_ResetLuckyNumberShowFlag
--- a/engine/startmenu.asm
+++ b/engine/startmenu.asm
@@ -42,7 +42,7 @@
ld a, [wMenuCursorBuffer]
ld [wd0d2], a
call PlayClickSFX
- call Function1bee
+ call PlaceHollowCursor
call .OpenMenu
; Menu items have different return functions.
@@ -1671,7 +1671,7 @@
jr nz, .place_move
ld a, [wMenuCursorY]
ld [wMoveSwapBuffer], a
- call Function1bee
+ call PlaceHollowCursor
jp .moving_move
.place_move
--- a/engine/switch_items.asm
+++ b/engine/switch_items.asm
@@ -145,7 +145,7 @@
inc hl
pop af
ld [hl], a
- ld hl, wMenuData2Addr
+ ld hl, wMenuData2_ItemsPointerAddr
ld a, [hli]
ld h, [hl]
ld l, a
@@ -199,7 +199,7 @@
Function24a5c: ; 24a5c (9:4a5c)
push af
call Function24a80
- ld hl, wMenuData2Addr
+ ld hl, wMenuData2_ItemsPointerAddr
ld a, [hli]
ld h, [hl]
ld l, a
--- a/engine/tmhm2.asm
+++ b/engine/tmhm2.asm
@@ -5,11 +5,11 @@
ld a, $0
ld [hInMenu], a
ret nc
- call Function1bee
+ call PlaceHollowCursor
call WaitBGMap
ld a, [CurItem]
dec a
- ld [ItemCountBuffer], a
+ ld [CurItemQuantity], a
ld hl, TMsHMs
ld c, a
ld b, 0
--- a/event/basement_key.asm
+++ b/event/basement_key.asm
@@ -18,12 +18,12 @@
; Let's use the Basement Key
ld hl, .BasementKeyScript
call QueueScript
- ld a, 1
+ ld a, TRUE
ld [wItemEffectSucceeded], a
ret
.nope
- ld a, $0
+ ld a, FALSE
ld [wItemEffectSucceeded], a
ret
; 507e1
--- a/event/battle_tower.asm
+++ b/event/battle_tower.asm
@@ -1,29 +1,29 @@
-Function8b1e1: ; 8b1e1
- ld de, Unknown_8b1ed
- call Function8b25b
+CheckForMobileBattleRules: ; 8b1e1
+ ld de, .PointerTables
+ call BattleTower_ExecuteJumptable
ret z
- call Function8b231
+ call BattleTower_PleaseReturnWhenReady
scf
ret
; 8b1ed
-Unknown_8b1ed: ; 8b1ed
+.PointerTables: ; 8b1ed
db 2
- dw Unknown_8b1f2
- dw Unknown_8b1f6
+ dw .Functions
+ dw .TextPointers
-Unknown_8b1f2: ; 8b1f2
- dw Function8b2bb
- dw Function8b2c1
+.Functions: ; 8b1f2
+ dw BattleTower_CheckPartyLengthIs3
+ dw BattleTower_CheckPartyHasThreeMonsThatAreNotEggs
; 8b1f6
-Unknown_8b1f6: ; 8b1f6
- dw UnknownText_0x8b1fc
- dw UnknownText_0x8b23d
- dw UnknownText_0x8b242
+.TextPointers: ; 8b1f6
+ dw .ExcuseMeText
+ dw JumpText_NeedAtLeastThreeMon
+ dw JumpText_EggDoesNotQualify
; 8b1fc
-UnknownText_0x8b1fc: ; 0x8b1fc
+.ExcuseMeText: ; 0x8b1fc
; Excuse me!
text_jump UnknownText_0x1c5937
db "@"
@@ -34,20 +34,20 @@
ld [hl], "3"
inc hl
ld [hl], "@"
- ld de, CheckForBattleTowerRules_FunctionsText
- call Function8b25b
+ ld de, .PointerTables
+ call BattleTower_ExecuteJumptable
ret z
- call Function8b231
+ call BattleTower_PleaseReturnWhenReady
scf
ret
; 8b215
-CheckForBattleTowerRules_FunctionsText: ; 8b215
+.PointerTables: ; 8b215
db 4
- dw CheckForBattleTowerRules_Functions
- dw CheckForBattleTowerRules_Text
+ dw .Functions
+ dw .TextPointers
-CheckForBattleTowerRules_Functions: ; 8b21a
+.Functions: ; 8b21a
dw Function_PartyCountEq3
dw Function_PartySpeciesAreUnique
dw Function_PartyItemsAreUnique
@@ -54,7 +54,7 @@
dw Function_HasPartyAnEgg
; 8b222
-CheckForBattleTowerRules_Text: ; 8b222
+.TextPointers: ; 8b222
dw JumpText_ExcuseMeYoureNotReady
dw JumpText_OnlyThreePkmnMayBeEntered
dw JumpText_ThePkmnMustAllBeDifferentKinds
@@ -68,25 +68,25 @@
db "@"
; 0x8b231
-Function8b231: ; 8b231
- ld hl, UnknownText_0x8b238
+BattleTower_PleaseReturnWhenReady: ; 8b231
+ ld hl, .PleaseReturnWhenReady
call PrintText
ret
; 8b238
-UnknownText_0x8b238: ; 0x8b238
+.PleaseReturnWhenReady: ; 0x8b238
; Please return when you're ready.
text_jump UnknownText_0x1c5962
db "@"
; 0x8b23d
-UnknownText_0x8b23d: ; 0x8b23d
+JumpText_NeedAtLeastThreeMon: ; 0x8b23d
; You need at least three #MON.
text_jump UnknownText_0x1c5983
db "@"
; 0x8b242
-UnknownText_0x8b242: ; 0x8b242
+JumpText_EggDoesNotQualify: ; 0x8b242
; Sorry, an EGG doesn't qualify.
text_jump UnknownText_0x1c59a3
db "@"
@@ -116,22 +116,22 @@
db "@"
; 0x8b25b
-Function8b25b: ; 8b25b
+BattleTower_ExecuteJumptable: ; 8b25b
ld bc, 0
-.asm_8b25e
- call Function8b26c
- call c, Function8b28e
- call Function8b276
- jr nz, .asm_8b25e
+.loop
+ call .DoJumptableFunction
+ call c, .PrintFailureText
+ call .Next_CheckReachedEnd
+ jr nz, .loop
ld a, b
and a
ret
; 8b26c
-Function8b26c: ; 8b26c
+.DoJumptableFunction: ; 8b26c
push de
push bc
- call Function8b27a
+ call .GetFunctionPointer
ld a, c
rst JumpTable
pop bc
@@ -139,7 +139,7 @@
ret
; 8b276
-Function8b276: ; 8b276
+.Next_CheckReachedEnd: ; 8b276
inc c
ld a, [de]
cp c
@@ -146,7 +146,7 @@
ret
; 8b27a
-Function8b27a: ; 8b27a
+.GetFunctionPointer: ; 8b27a
inc de
ld a, [de]
ld l, a
@@ -156,7 +156,7 @@
ret
; 8b281
-Function8b281: ; 8b281
+.GetTextPointers: ; 8b281
rept 3
inc de
endr
@@ -168,7 +168,7 @@
ret
; 8b28a
-Function8b28a: ; 8b28a
+.LoadTextPointer: ; 8b28a
ld a, [hli]
ld h, [hl]
ld l, a
@@ -175,31 +175,31 @@
ret
; 8b28e
-Function8b28e: ; 8b28e
+.PrintFailureText: ; 8b28e
push de
push bc
ld a, b
and a
- call z, Function8b29d
+ call z, .PrintFirstText
pop bc
- call Function8b2a9
+ call .PrintNthText
ld b, $1
pop de
ret
; 8b29d
-Function8b29d: ; 8b29d
+.PrintFirstText: ; 8b29d
push de
- call Function8b281
- call Function8b28a
+ call .GetTextPointers
+ call .LoadTextPointer
call PrintText
pop de
ret
; 8b2a9
-Function8b2a9: ; 8b2a9
+.PrintNthText: ; 8b2a9
push bc
- call Function8b281
+ call .GetTextPointers
rept 2
inc hl
endr
@@ -207,32 +207,32 @@
rept 2
add hl, bc
endr
- call Function8b28a
+ call .LoadTextPointer
call PrintText
pop bc
ret
; 8b2bb
-Function8b2bb: ; 8b2bb
+BattleTower_CheckPartyLengthIs3: ; 8b2bb
ld a, [PartyCount]
cp 3
ret
; 8b2c1
-Function8b2c1: ; 8b2c1
+BattleTower_CheckPartyHasThreeMonsThatAreNotEggs: ; 8b2c1
ld hl, PartyCount
ld a, [hli]
ld b, $0
ld c, a
-.asm_8b2c8
+.loop
ld a, [hli]
cp EGG
- jr z, .asm_8b2ce
+ jr z, .egg
inc b
-.asm_8b2ce
+.egg
dec c
- jr nz, .asm_8b2c8
+ jr nz, .loop
ld a, [PartyCount]
cp b
ret z
--- a/event/buena.asm
+++ b/event/buena.asm
@@ -82,10 +82,10 @@
.okay
call DelayFrame
call UpdateSprites
- call Function8b097
+ call PrintBlueCardBalance
call Function8b0e2
jr z, .done
- ld [wcf75], a
+ ld [MenuSelectionQuantity], a
call Buena_getprize
ld a, [hl]
ld [wd265], a
@@ -95,7 +95,7 @@
call YesNoBox
jr c, .loop
- ld a, [wcf75]
+ ld a, [MenuSelectionQuantity]
call Buena_getprize
inc hl
ld a, [hld]
@@ -118,7 +118,7 @@
ld a, [wBlueCardBalance]
sub c
ld [wBlueCardBalance], a
- call Function8b097
+ call PrintBlueCardBalance
jr .Purchase
.InsufficientBalance
@@ -184,27 +184,27 @@
; 0x8b090
Function8b090: ; 8b090
- ld hl, MenuDataHeader_0x8b0d1
+ ld hl, BlueCardBalanceMenuDataHeader
call LoadMenuDataHeader
ret
; 8b097
-Function8b097: ; 8b097
+PrintBlueCardBalance: ; 8b097
ld de, wBlueCardBalance
- call Function8b09e
+ call .DrawBox
ret
; 8b09e
-Function8b09e: ; 8b09e
+.DrawBox: ; 8b09e
push de
xor a
ld [hBGMapMode], a
- ld hl, MenuDataHeader_0x8b0d1
+ ld hl, BlueCardBalanceMenuDataHeader
call CopyMenuDataHeader
call MenuBox
call UpdateSprites
call MenuBoxCoord2Tile
- ld bc, $0015
+ ld bc, SCREEN_WIDTH + 1
add hl, bc
ld de, .Points_string
call PlaceString
@@ -211,7 +211,7 @@
ld h, b
ld l, c
inc hl
- ld a, $7f
+ ld a, " "
ld [hli], a
ld [hld], a
pop de
@@ -224,7 +224,7 @@
db "Points@"
; 8b0d1
-MenuDataHeader_0x8b0d1: ; 0x8b0d1
+BlueCardBalanceMenuDataHeader: ; 0x8b0d1
db $40 ; flags
db 11, 00 ; start coords
db 13, 11 ; end coords
@@ -252,7 +252,7 @@
ld [hBGMapMode], a
call InitScrollingMenu
call UpdateSprites
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [MenuSelection]
ld c, a
ld a, [wMenuCursorY]
@@ -259,12 +259,12 @@
ld [MenuSelection], a
ld a, [wMenuJoypad]
cp $2
- jr z, .asm_8b111
+ jr z, .cancel
ld a, c
and a
ret nz
-.asm_8b111
+.cancel
xor a
ret
; 8b113
@@ -281,8 +281,8 @@
.MenuData2: ; 0x8b11c
db $10 ; flags
- db 4 ; items
- db $d, $1
+ db 4, 13 ; rows, columns
+ db 1 ; spacing
dba .indices
dba .prizeitem
dba .prizepoints
--- a/event/elevator.asm
+++ b/event/elevator.asm
@@ -130,7 +130,7 @@
call UpdateSprites
xor a
ld [wMenuScrollPosition], a
- call HandleScrollingMenu
+ call ScrollingMenu
call WriteBackup
ld a, [wMenuJoypad]
cp B_BUTTON
--- a/event/kurt.asm
+++ b/event/kurt.asm
@@ -67,7 +67,7 @@
ld [hBGMapMode], a
call InitScrollingMenu
call UpdateSprites
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuJoypad]
cp $2
jr z, .nope
@@ -116,7 +116,7 @@
call Kurt_GetQuantityOfApricorn
ret z
ld a, [wItemQuantityChangeBuffer]
- ld [wcf75], a
+ ld [MenuSelectionQuantity], a
callba PlaceMenuItemQuantity
ret
; 880c2
@@ -231,7 +231,7 @@
ld c, a
ld e, $0
xor a
- ld [ItemCountBuffer], a
+ ld [CurItemQuantity], a
ld a, -1
ld [wd002], a
@@ -238,9 +238,9 @@
; Search for [CurItem] in the bag.
.loop1
; Increase the total count.
- ld a, [ItemCountBuffer]
+ ld a, [CurItemQuantity]
inc a
- ld [ItemCountBuffer], a
+ ld [CurItemQuantity], a
; Get the index of the next item.
inc hl
ld a, [hli]
@@ -256,7 +256,7 @@
ld hl, wd002
add hl, de
inc e
- ld a, [ItemCountBuffer]
+ ld a, [CurItemQuantity]
dec a
ld [hli], a
ld a, -1
@@ -322,7 +322,7 @@
cp -1
jr z, .done
push hl
- ld [ItemCountBuffer], a
+ ld [CurItemQuantity], a
call Kurt_GetRidOfItem
pop hl
ld a, [wItemQuantityChangeBuffer]
@@ -375,7 +375,7 @@
Kurt_GetRidOfItem: ; 88211
push bc
ld hl, NumItems
- ld a, [ItemCountBuffer]
+ ld a, [CurItemQuantity]
ld c, a
ld b, $0
inc hl
--- a/home.asm
+++ b/home.asm
@@ -1146,17 +1146,17 @@
; 350c
-HandleScrollingMenu:: ; 350c
+ScrollingMenu:: ; 350c
call CopyMenuData2
ld a, [hROMBank]
push af
- ld a, BANK(Function245af)
+ ld a, BANK(_ScrollingMenu)
rst Bankswitch
- call Function245af
- call Function3524
- call Function245cb
+ call _InitScrollingMenu
+ call .UpdatePalettes
+ call _ScrollingMenu
pop af
rst Bankswitch
@@ -1165,7 +1165,7 @@
ret
; 3524
-Function3524:: ; 3524
+.UpdatePalettes ; 3524
ld hl, VramState
bit 0, [hl]
jp nz, UpdateTimePals
--- a/home/menu.asm
+++ b/home/menu.asm
@@ -34,12 +34,12 @@
; 1d58
LoadMenuTextBox:: ; 1d58
- ld hl, MenuDataHeader_0x1d5f
+ ld hl, .MenuDataHeader
call LoadMenuDataHeader
ret
; 1d5f
-MenuDataHeader_0x1d5f:: ; 1d5f
+.MenuDataHeader ; 1d5f
db $40 ; tile backup
db 12, 0 ; start coords
db 17, 19 ; end coords
@@ -54,12 +54,12 @@
; 1d6e
LoadStandardMenuDataHeader:: ; 1d6e
- ld hl, MenuDataHeader_0x1d75
+ ld hl, .MenuDataHeader
call LoadMenuDataHeader
ret
; 1d75
-MenuDataHeader_0x1d75:: ; 1d75
+.MenuDataHeader ; 1d75
db $40 ; tile backup
db 0, 0 ; start coords
db 17, 19 ; end coords
@@ -187,11 +187,11 @@
db $40 ; tile backup
db 5, 10 ; start coords
db 9, 15 ; end coords
- dw YesNoMenuData2
+ dw .MenuData2
db 1 ; default option
; 1e25
-YesNoMenuData2:: ; 1e25
+.MenuData2 ; 1e25
db $c0 ; flags
db 2
db "YES@"
@@ -198,13 +198,13 @@
db "NO@"
; 1e2e
-Function1e2e:: ; 1e2e
- call Function1e35
+OffsetMenuDataHeader:: ; 1e2e
+ call _OffsetMenuDataHeader
call BackUpTiles
ret
; 1e35
-Function1e35:: ; 1e35
+_OffsetMenuDataHeader:: ; 1e35
push de
call CopyMenuDataHeader
pop de
@@ -243,7 +243,7 @@
call MenuFunc_1e7f ; ???
call MenuWriteText
call Function1eff ; set up selection pointer
- ld hl, wcfa5
+ ld hl, w2DMenuFlags1
set 7, [hl]
ret
@@ -287,23 +287,23 @@
; 1ebd
Function1ebd:: ; 1ebd
- ld hl, wcf93
+ ld hl, wMenuData2IndicesPointer
ld a, [hli]
ld h, [hl]
ld l, a
ld a, [wcf76]
and a
- jr z, .asm_1ed3
+ jr z, .skip
ld b, a
- ld c, $ff
-.asm_1ecc
+ ld c, -1
+.loop
ld a, [hli]
cp c
- jr nz, .asm_1ecc
+ jr nz, .loop
dec b
- jr nz, .asm_1ecc
+ jr nz, .loop
-.asm_1ed3
+.skip
ld d, h
ld e, l
ld a, [hl]
@@ -313,12 +313,12 @@
Function1eda:: ; 1eda
call MenuBoxCoord2Tile
- ld bc, $002a
+ ld bc, 2 * SCREEN_WIDTH + 2
add hl, bc
-.asm_1ee1
+.loop
inc de
ld a, [de]
- cp $ff
+ cp -1
ret z
ld [MenuSelection], a
push de
@@ -325,16 +325,16 @@
push hl
ld d, h
ld e, l
- ld hl, wcf95
- call Function1efb
+ ld hl, wMenuData2DisplayFunctionPointer
+ call .__wMenuData2DisplayFunction__
pop hl
- ld de, $0028
+ ld de, 2 * SCREEN_WIDTH
add hl, de
pop de
- jr .asm_1ee1
+ jr .loop
; 1efb
-Function1efb:: ; 1efb
+.__wMenuData2DisplayFunction__ ; 1efb
ld a, [hli]
ld h, [hl]
ld l, a
@@ -343,20 +343,20 @@
Function1eff:: ; 1eff
call InitVerticalMenuCursor
- ld hl, wcfa8
+ ld hl, w2DMenuFlags4
ld a, [wMenuData2Flags]
bit 3, a
- jr z, .asm_1f0e
+ jr z, .skip3
set 3, [hl]
-.asm_1f0e
+.skip3
ld a, [wMenuData2Flags]
bit 2, a
- jr z, .asm_1f19
+ jr z, .skip4_5
set 5, [hl]
set 4, [hl]
-.asm_1f19
+.skip4_5
ret
; 1f1a
@@ -363,7 +363,7 @@
Function1f1a:: ; 1f1a
call ScrollingMenuJoypad
- ld hl, wcfa8
+ ld hl, w2DMenuFlags4
and [hl]
jr Function1f2a
; 1f23
--- a/home/movement.asm
+++ b/home/movement.asm
@@ -188,7 +188,7 @@
ret
; 1bee
-Function1bee:: ; 1bee
+PlaceHollowCursor:: ; 1bee
ld hl, wCursorCurrentTile
ld a, [hli]
ld h, [hl]
@@ -197,7 +197,7 @@
ret
; 1bf7
-Function1bf7:: ; 1bf7
+HideCursor:: ; 1bf7
ld hl, wCursorCurrentTile
ld a, [hli]
ld h, [hl]
--- a/main.asm
+++ b/main.asm
@@ -4456,7 +4456,7 @@
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 @@
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 @@
add hl, de
ld [hl], "×"
inc hl
- ld de, wcf75
+ ld de, MenuSelectionQuantity
lb bc, 1, 2
call PrintNum
@@ -8526,25 +7978,25 @@
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
--- a/maps/CeladonDeptStore6F.asm
+++ b/maps/CeladonDeptStore6F.asm
@@ -27,7 +27,7 @@
opentext
writetext CeladonVendingText
.Start
- special PlaceMoneyTopRightOW
+ special PlaceMoneyTopRight
loadmenudata .MenuData
verticalmenu
writebackup
--- a/maps/GoldenrodDeptStore6F.asm
+++ b/maps/GoldenrodDeptStore6F.asm
@@ -13,7 +13,7 @@
opentext
writetext GoldenrodVendingText
.Start
- special PlaceMoneyTopRightOW
+ special PlaceMoneyTopRight
loadmenudata .MenuData
verticalmenu
writebackup
--- a/maps/MahoganyTown.asm
+++ b/maps/MahoganyTown.asm
@@ -57,7 +57,7 @@
UnknownScript_0x190040:
opentext
writetext UnknownText_0x1900b0
- special PlaceMoneyTopRightOW
+ special PlaceMoneyTopRight
yesorno
iffalse UnknownScript_0x190072
checkmoney $0, 300
@@ -67,7 +67,7 @@
waitsfx
playsound SFX_TRANSACTION
takemoney $0, 300
- special PlaceMoneyTopRightOW
+ special PlaceMoneyTopRight
writetext UnknownText_0x19014a
waitbutton
closetext
--- a/maps/Route39Farmhouse.asm
+++ b/maps/Route39Farmhouse.asm
@@ -24,7 +24,7 @@
checkitem MOOMOO_MILK
iftrue UnknownScript_0x9cf08
writetext UnknownText_0x9cfe1
- special PlaceMoneyTopRightOW
+ special PlaceMoneyTopRight
yesorno
iffalse UnknownScript_0x9cf02
checkmoney $0, 500
@@ -32,7 +32,7 @@
giveitem MOOMOO_MILK
iffalse UnknownScript_0x9cefc
takemoney $0, 500
- special PlaceMoneyTopRightOW
+ special PlaceMoneyTopRight
waitsfx
playsound SFX_TRANSACTION
writetext UnknownText_0x9d05d
--- a/maps/WarehouseEntrance.asm
+++ b/maps/WarehouseEntrance.asm
@@ -197,7 +197,7 @@
.DoHaircut:
checkflag ENGINE_GOLDENROD_UNDERGROUND_GOT_HAIRCUT
iftrue .AlreadyGotHaircut
- special PlaceMoneyTopRightOW
+ special PlaceMoneyTopRight
writetext UnknownText_0x7c5f9
yesorno
iffalse .Refused
@@ -233,7 +233,7 @@
.then:
takemoney $0, 500
- special PlaceMoneyTopRightOW
+ special PlaceMoneyTopRight
writetext UnknownText_0x7c6b8
waitbutton
closetext
@@ -280,7 +280,7 @@
.DoHaircut:
checkflag ENGINE_GOLDENROD_UNDERGROUND_GOT_HAIRCUT
iftrue .AlreadyGotHaircut
- special PlaceMoneyTopRightOW
+ special PlaceMoneyTopRight
writetext UnknownText_0x7c75c
yesorno
iffalse .Refused
@@ -316,7 +316,7 @@
.then:
takemoney $0, 300
- special PlaceMoneyTopRightOW
+ special PlaceMoneyTopRight
writetext UnknownText_0x7c80e
waitbutton
closetext
--- a/misc/battle_tower_5c.asm
+++ b/misc/battle_tower_5c.asm
@@ -1401,7 +1401,7 @@
ld a, 1
ld [wItemQuantityChangeBuffer], a
ld a, -1
- ld [ItemCountBuffer], a
+ ld [CurItemQuantity], a
ld hl, NumItems
call TossItem
ld a, $1
--- a/misc/mobile_12.asm
+++ b/misc/mobile_12.asm
@@ -214,7 +214,7 @@
; 4820d
Function4820d: ; 4820d (12:420d)
- call Function1bee
+ call PlaceHollowCursor
ld hl, wMenuCursorY
ld a, [hl]
push af
@@ -361,7 +361,7 @@
ld [wMenuScrollPosition], a
callba Function104148
.asm_48348
- call HandleScrollingMenu
+ call ScrollingMenu
ld de, $629
call Function48383
jr c, .asm_48348
--- a/misc/mobile_12_2.asm
+++ b/misc/mobile_12_2.asm
@@ -499,7 +499,7 @@
jr c, .asm_4ab1a
push af
call Function4ab99
- call nc, Function1bee
+ call nc, PlaceHollowCursor
pop af
bit 1, a
jr nz, .asm_4ab6d
--- a/misc/mobile_22.asm
+++ b/misc/mobile_22.asm
@@ -2258,7 +2258,7 @@
ld a, [wMenuCursorY]
cp c
jr z, .asm_89dd9
- call Function1bee
+ call PlaceHollowCursor
scf
ret
.asm_89dd9
@@ -3076,7 +3076,7 @@
ret
.asm_8a370
call Function89448
- call Function1bee
+ call PlaceHollowCursor
call Function8a3a2
ld a, [MenuSelection]
cp $ff
--- a/misc/mobile_22_2.asm
+++ b/misc/mobile_22_2.asm
@@ -828,7 +828,7 @@
call Function8b75d
call UpdateSprites
call Function89209
- call HandleScrollingMenu
+ call ScrollingMenu
call Function8920f
ld a, [wMenuJoypad]
cp $2
--- a/misc/mobile_40.asm
+++ b/misc/mobile_40.asm
@@ -2024,7 +2024,7 @@
ld a, [wcfa8]
and c
jr z, .asm_100cc0
- call Function1bee
+ call PlaceHollowCursor
ld a, [PartyCount]
inc a
ld b, a
@@ -5569,7 +5569,7 @@
; 1024f6
Function1024f6: ; 1024f6
- call Function1bee
+ call PlaceHollowCursor
ld hl, wcd4b
set 1, [hl]
ld a, [wcd4c]
@@ -5746,7 +5746,7 @@
ld a, [OTPartyCount]
cp b
ret nz
- call Function1bf7
+ call HideCursor
ld a, [PartyCount]
ld [wMenuCursorY], a
ld a, $1d
@@ -5806,7 +5806,7 @@
ld a, [wMenuCursorY]
dec a
ret nz
- call Function1bf7
+ call HideCursor
ld a, $1f
ld [wcd49], a
ret
@@ -5847,7 +5847,7 @@
; 1026de
Function1026de: ; 1026de
- call Function1bf7
+ call HideCursor
hlcoord 9, 17
ld [hl], $ed
ld a, [wcd4a]
@@ -5901,7 +5901,7 @@
Function102738: ; 102738
ld hl, wcd4b
set 6, [hl]
- call Function1bee
+ call PlaceHollowCursor
call Function1027eb
ld hl, wcd4b
set 1, [hl]
@@ -7796,7 +7796,7 @@
call PrintText
call YesNoBox
jr c, .asm_103696
- callba Function8b1e1
+ callba CheckForMobileBattleRules
jr nc, .asm_103690
call JoyWaitAorB
jr .asm_103696
@@ -7841,7 +7841,7 @@
jr .asm_1036b5
.asm_1036d9
- callba Function8b1e1
+ callba CheckForMobileBattleRules
jr nc, .asm_1036e6
call JoyWaitAorB
jr .asm_1036f4
--- a/wram.asm
+++ b/wram.asm
@@ -1492,8 +1492,7 @@
wWindowStackPointer:: dw ; cf71
wMenuJoypad:: ds 1 ; cf73
MenuSelection:: ds 1 ; cf74
-
-wcf75:: ds 1
+MenuSelectionQuantity:: ds 1 ; cf75
wcf76:: ds 1
wScrollingMenuCursorPosition:: ds 1
wWindowStackSize:: ds 9
@@ -1523,24 +1522,30 @@
; bit 1: Enable Select button
; bit 0: Disable B button
+wMenuData2_ScrollingMenuHeight::
wMenuData2Items:: ds 1
wMenuData2IndicesPointer::
wMenuData2Spacing::
+wMenuData2_ScrollingMenuWidth::
wcf93:: ds 1
wMenuData2_2DMenuItemStringsBank::
+wMenuData2_ScrollingMenuSpacing::
wcf94:: ds 1
wMenuData2_2DMenuItemStringsAddr::
wMenuData2DisplayFunctionPointer::
-wMenuData2Bank::
+wMenuData2_ItemsPointerBank::
wcf95:: ds 1 ; bank
-wMenuData2Addr::
+wMenuData2_ItemsPointerAddr::
wcf96:: ds 1 ; addr lo
wMenuData2PointerTableAddr::
wMenuData2_2DMenuFunctionBank::
wcf97:: ds 1 ; addr hi
wMenuData2_2DMenuFunctionAddr::
+wMenuData2_ScrollingMenuFunction1::
wcf98:: ds 3
+wMenuData2_ScrollingMenuFunction2::
wcf9b:: ds 3
+wMenuData2_ScrollingMenuFunction3::
wcf9e:: ds 3
wMenuData2End::
wMenuData3::
@@ -1941,7 +1946,7 @@
CurItem:: ; d106
ds 1
-ItemCountBuffer:: ; d107
+CurItemQuantity:: ; d107
wMartItemID::
wd107:: ds 1
@@ -1981,7 +1986,7 @@
CurPartyLevel:: ; d143
ds 1
-wd144:: ds 2
+wScrollingMenuListSize:: ds 2
; used when following a map warp
; d146