shithub: pokecrystal

Download patch

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