summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
Diffstat (limited to 'engine')
-rwxr-xr-xengine/billspc.asm2
-rwxr-xr-xengine/decorations.asm20
-rwxr-xr-xengine/intro_menu.asm2
-rwxr-xr-xengine/link.asm10
-rwxr-xr-xengine/mail.asm2
-rwxr-xr-xengine/main_menu.asm6
-rwxr-xr-xengine/mart.asm8
-rw-r--r--engine/pack.asm24
-rw-r--r--engine/party_menu.asm2
-rwxr-xr-xengine/pokecenter_pc.asm4
-rw-r--r--engine/scripting.asm2
-rwxr-xr-xengine/scrolling_menu.asm544
-rw-r--r--engine/specials.asm2
-rwxr-xr-xengine/startmenu.asm4
-rwxr-xr-xengine/switch_items.asm4
-rwxr-xr-xengine/tmhm2.asm4
16 files changed, 592 insertions, 48 deletions
diff --git a/engine/billspc.asm b/engine/billspc.asm
index 4363cce1d..14f0509b2 100755
--- a/engine/billspc.asm
+++ b/engine/billspc.asm
@@ -2323,7 +2323,7 @@ _ChangeBox: ; e35aa (38:75aa)
hlcoord 0, 4
lb bc, 8, 9
call TextBox
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuJoypad]
cp B_BUTTON
jr z, .done
diff --git a/engine/decorations.asm b/engine/decorations.asm
index 794552a70..94c2a9413 100755
--- a/engine/decorations.asm
+++ b/engine/decorations.asm
@@ -11,16 +11,16 @@ _KrisDecorationMenu: ; 0x2675c
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 @@ _KrisDecorationMenu: ; 0x2675c
call ExitMenu
pop af
ld [wcf76], a
- ld a, [wd1ee]
+ ld a, [Buffer5]
ld c, a
ret
; 0x2679a
@@ -400,7 +400,7 @@ PopulateDecoCategoryMenu: ; 2695b
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 @@ DecoAction_TrySetItUp: ; 26d2d
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 @@ DecoAction_TryPutItAway: ; 26d86
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 @@ DecoAction_setupornament: ; 26db3
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 @@ DecoAction_PutItAway_Ornament: ; 26e46
ld hl, StringBuffer3
call GetDecorationName
ld a, $1
- ld [wd1ee], a
+ ld [Buffer5], a
xor a
ld [wd1ec], a
ld hl, DecoText_PutAwayTheDeco
diff --git a/engine/intro_menu.asm b/engine/intro_menu.asm
index ca80665b4..6c26f3a0c 100755
--- a/engine/intro_menu.asm
+++ b/engine/intro_menu.asm
@@ -545,7 +545,7 @@ Continue_LoadMenuHeader: ; 5ebf
ld hl, .MenuDataHeader_NoDex
.pokedex_header
- call Function1e35
+ call _OffsetMenuDataHeader
call MenuBox
call PlaceVerticalMenuItems
ret
diff --git a/engine/link.asm b/engine/link.asm
index 2083c9fb6..69554611b 100755
--- a/engine/link.asm
+++ b/engine/link.asm
@@ -1271,7 +1271,7 @@ Function28835: ; 28835
jp nz, Function2891c
xor a
ld [MonType], a
- call Function1bf7
+ call HideCursor
push hl
push bc
ld bc, NAME_LENGTH
@@ -1333,7 +1333,7 @@ Function288c5: ; 288c5
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 @@ Function288c5: ; 288c5
ld a, [PartyCount]
cp b
jr nz, Function2891c
- call Function1bf7
+ call HideCursor
push hl
push bc
ld bc, NAME_LENGTH
@@ -1463,7 +1463,7 @@ Function28926: ; 28926
jp Function2888b
.asm_289fe
- call Function1bee
+ call PlaceHollowCursor
pop af
ld [wMenuCursorY], a
dec a
@@ -1552,7 +1552,7 @@ Function28ac9: ; 28ac9
ld a, [wMenuCursorY]
cp $1
jp nz, Function2891c
- call Function1bf7
+ call HideCursor
push hl
push bc
ld bc, NAME_LENGTH
diff --git a/engine/mail.asm b/engine/mail.asm
index f8619c9f6..4c0af5f9b 100755
--- a/engine/mail.asm
+++ b/engine/mail.asm
@@ -399,7 +399,7 @@ MailboxPC: ; 0x44806
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]
diff --git a/engine/main_menu.asm b/engine/main_menu.asm
index 888f5a9a5..306551a88 100755
--- a/engine/main_menu.asm
+++ b/engine/main_menu.asm
@@ -530,7 +530,7 @@ endr
Function4a098: ; 4a098 (12:6098)
ld a, $2
call MenuClickSound
- call Function1bee
+ call PlaceHollowCursor
call WaitBGMap
call LoadStandardMenuDataHeader
callba Function89de0
@@ -749,7 +749,7 @@ Function4a28a: ; 4a28a (12:628a)
lb bc, 6, 1
ld a, " "
call Function4a6d8
- call Function1bee
+ call PlaceHollowCursor
call WaitBGMap
call LoadStandardMenuDataHeader
ld a, $5
@@ -786,7 +786,7 @@ Function4a28a: ; 4a28a (12:628a)
scf
ret
.asm_4a2f0
- call Function1bee
+ call PlaceHollowCursor
ld hl, UnknownText_0x4a358
call PrintText
hlcoord 14, 7
diff --git a/engine/mart.asm b/engine/mart.asm
index 7673df5af..8852e104b 100755
--- a/engine/mart.asm
+++ b/engine/mart.asm
@@ -470,7 +470,7 @@ endr
BuyMenuLoop: ; 15cef
- callba PlaceMoneyTopRightOW
+ callba PlaceMoneyTopRight
call UpdateSprites
ld hl, MenuDataHeader_Buy
call CopyMenuDataHeader
@@ -478,7 +478,7 @@ BuyMenuLoop: ; 15cef
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 @@ Function15ee0: ; 15ee0
.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 @@ Function15ee0: ; 15ee0
ld hl, Text_Mart_SoldForAmount
call PrintTextBoxText
call PlayTransactionSound
- callba PlaceMoneyBottomLeftOW
+ callba PlaceMoneyBottomLeft
call JoyWaitAorB
.declined
diff --git a/engine/pack.asm b/engine/pack.asm
index 33d44a745..3168b817a 100644
--- a/engine/pack.asm
+++ b/engine/pack.asm
@@ -69,7 +69,7 @@ Pack: ; 10000
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 @@ Pack: ; 10000
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 @@ Pack: ; 10000
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 @@ TossMenu: ; 10364
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 @@ RegisterItem: ; 103c2
rrca
and $c0
ld b, a
- ld a, [ItemCountBuffer]
+ ld a, [CurItemQuantity]
inc a
and $3f
or b
@@ -734,7 +734,7 @@ BattlePack: ; 10493
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 @@ BattlePack: ; 10493
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 @@ BattlePack: ; 10493
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 @@ DepositSellPack: ; 106be
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 @@ DepositSellPack: ; 106be
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 @@ DepositSellPack: ; 106be
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 @@ TutorialPack: ; 107bb
call InitPocket
pop hl
call CopyMenuDataHeader
- call HandleScrollingMenu
+ call ScrollingMenu
ret
Pack_JumptableNext: ; 10866 (4:4866)
diff --git a/engine/party_menu.asm b/engine/party_menu.asm
index 4aa71ecf7..4df2c4251 100644
--- a/engine/party_menu.asm
+++ b/engine/party_menu.asm
@@ -739,7 +739,7 @@ PartyMenuAttributes: ; 5044f
PartyMenuSelect: ; 0x50457
; sets carry if exitted menu.
call StaticMenuJoypad
- call Function1bee
+ call PlaceHollowCursor
ld a, [PartyCount]
inc a
ld b, a
diff --git a/engine/pokecenter_pc.asm b/engine/pokecenter_pc.asm
index 8f18e8814..acfd06783 100755
--- a/engine/pokecenter_pc.asm
+++ b/engine/pokecenter_pc.asm
@@ -591,7 +591,7 @@ Function15985: ; 0x15985
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 @@ Function15985: ; 0x15985
.asm_159fb
callba Function24706
- call Function1bee
+ call PlaceHollowCursor
and a
ret
diff --git a/engine/scripting.asm b/engine/scripting.asm
index 83d4e8a04..a6499dcdb 100644
--- a/engine/scripting.asm
+++ b/engine/scripting.asm
@@ -2385,7 +2385,7 @@ Script_takeitem: ; 977f0
call GetScriptByte
ld [wItemQuantityChangeBuffer], a
ld a, -1
- ld [ItemCountBuffer], a
+ ld [CurItemQuantity], a
ld hl, NumItems
call TossItem
ret nc
diff --git a/engine/scrolling_menu.asm b/engine/scrolling_menu.asm
new file mode 100755
index 000000000..c5a671ce6
--- /dev/null
+++ b/engine/scrolling_menu.asm
@@ -0,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
diff --git a/engine/specials.asm b/engine/specials.asm
index 08a5b6129..c79ebb7d2 100644
--- a/engine/specials.asm
+++ b/engine/specials.asm
@@ -101,7 +101,7 @@ SpecialsPointers:: ; c029
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
diff --git a/engine/startmenu.asm b/engine/startmenu.asm
index 546aff1d9..c744d185f 100755
--- a/engine/startmenu.asm
+++ b/engine/startmenu.asm
@@ -42,7 +42,7 @@ StartMenu:: ; 125cd
ld a, [wMenuCursorBuffer]
ld [wd0d2], a
call PlayClickSFX
- call Function1bee
+ call PlaceHollowCursor
call .OpenMenu
; Menu items have different return functions.
@@ -1671,7 +1671,7 @@ MoveScreenLoop: ; 12fd5
jr nz, .place_move
ld a, [wMenuCursorY]
ld [wMoveSwapBuffer], a
- call Function1bee
+ call PlaceHollowCursor
jp .moving_move
.place_move
diff --git a/engine/switch_items.asm b/engine/switch_items.asm
index 7de3440fa..46e000fd1 100755
--- a/engine/switch_items.asm
+++ b/engine/switch_items.asm
@@ -145,7 +145,7 @@ Function249d1: ; 249d1 (9:49d1)
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 @@ Function24a4d: ; 24a4d (9:4a4d)
Function24a5c: ; 24a5c (9:4a5c)
push af
call Function24a80
- ld hl, wMenuData2Addr
+ ld hl, wMenuData2_ItemsPointerAddr
ld a, [hli]
ld h, [hl]
ld l, a
diff --git a/engine/tmhm2.asm b/engine/tmhm2.asm
index 9834fba7f..5b034f9ec 100755
--- a/engine/tmhm2.asm
+++ b/engine/tmhm2.asm
@@ -5,11 +5,11 @@ TMHMPocket: ; 2c76f (b:476f)
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