summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
Diffstat (limited to 'engine')
-rwxr-xr-xengine/billspc.asm48
-rwxr-xr-xengine/decorations.asm6
-rwxr-xr-xengine/dummy_game.asm2
-rwxr-xr-xengine/init_gender.asm4
-rwxr-xr-xengine/intro_menu.asm8
-rwxr-xr-xengine/learn.asm8
-rwxr-xr-xengine/link.asm50
-rwxr-xr-xengine/mail.asm8
-rwxr-xr-xengine/main_menu.asm76
-rwxr-xr-xengine/mart.asm8
-rwxr-xr-xengine/menu.asm755
-rwxr-xr-xengine/mon_icons.asm2
-rwxr-xr-xengine/mon_menu.asm12
-rw-r--r--engine/pack.asm30
-rw-r--r--engine/party_menu.asm10
-rwxr-xr-xengine/pokecenter_pc.asm6
-rwxr-xr-xengine/printer.asm116
-rwxr-xr-xengine/rtc.asm210
-rw-r--r--engine/save.asm2
-rw-r--r--engine/scripting.asm14
-rwxr-xr-xengine/slot_machine.asm6
-rwxr-xr-xengine/sprite_anims.asm4
-rwxr-xr-xengine/startmenu.asm22
-rwxr-xr-xengine/stats_screen.asm4
-rw-r--r--engine/std_scripts.asm2
-rwxr-xr-xengine/tile_events.asm110
-rwxr-xr-xengine/tmhm2.asm12
27 files changed, 1057 insertions, 478 deletions
diff --git a/engine/billspc.asm b/engine/billspc.asm
index 33792477a..4346746f5 100755
--- a/engine/billspc.asm
+++ b/engine/billspc.asm
@@ -123,18 +123,18 @@ Functione245d: ; e245d (38:645d)
ld de, PCString_WhatsUp
call Functione2a6e
ld a, $1
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
call Functione298d
ret
Functione247d: ; e247d (38:647d)
ld hl, BillsPCDepositMenuDataHeader
call CopyMenuDataHeader
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
call Function1d4b
- call InterpretMenu2
+ call VerticalMenu
jp c, BillsPCDepositFuncCancel
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
and $3
ld e, a
@@ -187,14 +187,14 @@ BillsPCDepositFuncRelease: ; e24e0 (38:64e0)
jr c, BillsPCDepositFuncCancel
call Functione2f5f
jr c, BillsPCDepositFuncCancel
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
push af
ld de, PCString_ReleasePKMN
call Functione2a6e
call LoadStandardMenuDataHeader
lb bc, 14, 11
call PlaceYesNoBox
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
call ExitMenu
and a
@@ -218,7 +218,7 @@ BillsPCDepositFuncRelease: ; e24e0 (38:64e0)
ld de, PCString_WhatsUp
call Functione2a6e
pop af
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
ret
BillsPCDepositFuncCancel: ; e2537 (38:6537)
@@ -388,18 +388,18 @@ Functione2655: ; e2655 (38:6655)
ld de, PCString_WhatsUp
call Functione2a6e
ld a, $1
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
call Functione298d
ret
BillsPC_Withdraw: ; e2675 (38:6675)
ld hl, .MenuDataHeader
call CopyMenuDataHeader
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
call Function1d4b
- call InterpretMenu2
+ call VerticalMenu
jp c, .cancel
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
and 3
ld e, a
@@ -448,7 +448,7 @@ endr
ret
.release: ; e26d8 (38:66d8)
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
push af
call Functione2f5f
jr c, .FailedRelease
@@ -457,7 +457,7 @@ endr
call LoadStandardMenuDataHeader
lb bc, 14, 11
call PlaceYesNoBox
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
call ExitMenu
and a
@@ -481,7 +481,7 @@ endr
ld de, PCString_WhatsUp
call Functione2a6e
pop af
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
ret
.cancel: ; e272b (38:672b)
@@ -649,7 +649,7 @@ Functione283d: ; e283d
ld de, PCString_WhatsUp
call Functione2a6e
ld a, $1
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
call Functione298d
ret
; e285d
@@ -657,11 +657,11 @@ Functione283d: ; e283d
Functione285d: ; e285d
ld hl, MenuDataHeader_0xe28c3
call CopyMenuDataHeader
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
call Function1d4b
- call InterpretMenu2
+ call VerticalMenu
jp c, Functione28bd
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
and 3
ld e, a
@@ -1764,11 +1764,11 @@ Functione2f95: ; e2f95 (38:6f95)
ld hl, hJoyPressed ; $ffa7
ld a, [hl]
and A_BUTTON | B_BUTTON | D_RIGHT | D_LEFT
- ld [wcf73], a
+ ld [wMenuJoypad], a
jr nz, .pressed_a_b_right_left
ld a, [hl]
and D_DOWN | D_UP
- ld [wcf73], a
+ ld [wMenuJoypad], a
jr nz, .pressed_down_up
jr .pressed_a_b_right_left
@@ -1791,7 +1791,7 @@ Functione2f95: ; e2f95 (38:6f95)
.asm_e2fd1
xor a
- ld [wcf73], a
+ ld [wMenuJoypad], a
ret
Functione2fd6: ; e2fd6 (38:6fd6)
@@ -2367,7 +2367,7 @@ _ChangeBox: ; e35aa (38:75aa)
lb bc, 8, 9
call TextBox
call HandleScrollingMenu
- ld a, [wcf73]
+ ld a, [wMenuJoypad]
cp $2
jr z, .done
call Functione37af
@@ -2549,10 +2549,10 @@ String_e36f1: ; e36f1
Functione36f9: ; e36f9 (38:76f9)
ld hl, .MenuDataHeader
call LoadMenuDataHeader
- call InterpretMenu2
+ call VerticalMenu
call ExitMenu
ret c
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
cp $1
jr z, .Switch
cp $2
diff --git a/engine/decorations.asm b/engine/decorations.asm
index ef8ee76dd..794552a70 100755
--- a/engine/decorations.asm
+++ b/engine/decorations.asm
@@ -19,7 +19,7 @@ _KrisDecorationMenu: ; 0x2675c
ld [wMenuCursorBuffer], a
call .FindCategoriesWithOwnedDecos
call DoNthMenu
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld [wd1ef], a
jr c, .exit_menu
ld a, [MenuSelection]
@@ -401,7 +401,7 @@ PopulateDecoCategoryMenu: ; 2695b
xor a
ld [wMenuScrollPosition], a
call HandleScrollingMenu
- ld a, [wcf73]
+ ld a, [wMenuJoypad]
cp 2
jr z, .no_action_2
call DoDecorationAction2
@@ -1009,7 +1009,7 @@ DecoAction_AskWhichSide: ; 26e70
call ExitMenu
call CopyMenuData2
jr c, .nope
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
cp 3
jr z, .nope
ld [Buffer2], a
diff --git a/engine/dummy_game.asm b/engine/dummy_game.asm
index cc188598f..e10633c88 100755
--- a/engine/dummy_game.asm
+++ b/engine/dummy_game.asm
@@ -416,7 +416,7 @@ Functione20e5: ; e20e5
; e2101
Functione2101: ; e2101
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
ld l, a
ld h, 0
diff --git a/engine/init_gender.asm b/engine/init_gender.asm
index 9fda68a3c..9fc575520 100755
--- a/engine/init_gender.asm
+++ b/engine/init_gender.asm
@@ -33,9 +33,9 @@ InitGender: ; 48dcb (12:4dcb)
ld hl, .MenuDataHeader
call LoadMenuDataHeader
call WaitBGMap2
- call InterpretMenu2
+ call VerticalMenu
call WriteBackup
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
ld [PlayerGender], a
ld c, 10
diff --git a/engine/intro_menu.asm b/engine/intro_menu.asm
index 1ec4d86d5..7c80f1005 100755
--- a/engine/intro_menu.asm
+++ b/engine/intro_menu.asm
@@ -547,7 +547,7 @@ Continue_LoadMenuHeader: ; 5ebf
.pokedex_header
call Function1e35
call MenuBox
- call Function1c89
+ call PlaceVerticalMenuItems
ret
; 5ed9
@@ -783,7 +783,7 @@ OakText7: ; 0x606f
NamePlayer: ; 0x6074
callba MovePlayerPicRight
callba ShowPlayerNamingChoices
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
jr z, .NewName
call StorePlayerName
@@ -828,8 +828,8 @@ NamePlayer: ; 0x6074
Function60e9: ; Unreferenced
call LoadMenuDataHeader
- call InterpretMenu2
- ld a, [MenuSelection2]
+ call VerticalMenu
+ ld a, [wMenuCursorY]
dec a
call CopyNameFromMenu
call WriteBackup
diff --git a/engine/learn.asm b/engine/learn.asm
index f6df570e7..634c29512 100755
--- a/engine/learn.asm
+++ b/engine/learn.asm
@@ -155,8 +155,8 @@ ForgetMove: ; 65d3
ld [wcfa3], a
ld a, $1
ld [wcfa4], a
- ld [MenuSelection2], a
- ld [wcfaa], a
+ ld [wMenuCursorY], a
+ ld [wMenuCursorX], a
ld a, $3
ld [wcfa8], a
ld a, $20
@@ -165,7 +165,7 @@ ForgetMove: ; 65d3
ld [wcfa6], a
ld a, $20
ld [wcfa7], a
- call Function1bc9
+ call StaticMenuJoypad
push af
call Call_LoadTempTileMapToTileMap
pop af
@@ -173,7 +173,7 @@ ForgetMove: ; 65d3
bit 1, a
jr nz, .cancel
push hl
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
ld c, a
ld b, 0
diff --git a/engine/link.asm b/engine/link.asm
index 2255133cb..677c503fa 100755
--- a/engine/link.asm
+++ b/engine/link.asm
@@ -1219,7 +1219,7 @@ rept 3
endr
ld [hl], a
ld a, $1
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
inc a
ld [wPlayerLinkAction], a
jp Function2888b
@@ -1239,7 +1239,7 @@ Function28803: ; 28803
ld a, $6
ld [wcfa2], a
ld a, $1
- ld [wcfaa], a
+ ld [wMenuCursorX], a
ld a, $10
ld [wcfa7], a
ld a, $20
@@ -1264,7 +1264,7 @@ Function28835: ; 28835
.asm_2885b
bit 6, a
jr z, .asm_28883
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld b, a
ld a, [OTPartyCount]
cp b
@@ -1280,7 +1280,7 @@ Function28835: ; 28835
pop bc
pop hl
ld a, [PartyCount]
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
jr Function2888b
.asm_28883
@@ -1304,7 +1304,7 @@ Function2888b: ; 2888b
ld a, $6
ld [wcfa2], a
ld a, $1
- ld [wcfaa], a
+ ld [wMenuCursorX], a
ld a, $10
ld [wcfa7], a
ld a, $20
@@ -1328,7 +1328,7 @@ Function288c5: ; 288c5
.asm_288d9
bit 7, a
jr z, .asm_288fe
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
jp nz, Function2891c
ld a, $1
@@ -1342,13 +1342,13 @@ Function288c5: ; 288c5
pop bc
pop hl
ld a, $1
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
jp Function28803
.asm_288fe
bit 6, a
jr z, Function2891c
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld b, a
ld a, [PartyCount]
cp b
@@ -1373,7 +1373,7 @@ Function2891c: ; 2891c
Function28926: ; 28926
call LoadTileMapToTempTileMap
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
push af
hlcoord 0, 15
ld b, $1
@@ -1398,21 +1398,21 @@ Function28926: ; 28926
ld a, $1
ld [wcfa2], a
ld a, $1
- ld [MenuSelection2], a
- ld [wcfaa], a
+ ld [wMenuCursorY], a
+ ld [wMenuCursorX], a
ld a, $20
ld [wcfa7], a
xor a
ld [wcfa5], a
ld [wcfa6], a
- call Function1bd3
+ call ScrollingMenuJoypad
bit 4, a
jr nz, .asm_2898d
bit 1, a
jr z, .asm_289cd
.asm_28983
pop af
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
call Call_LoadTempTileMapToTileMap
jp Function2888b
@@ -1430,14 +1430,14 @@ Function28926: ; 28926
ld a, $b
ld [wcfa2], a
ld a, $1
- ld [MenuSelection2], a
- ld [wcfaa], a
+ ld [wMenuCursorY], a
+ ld [wMenuCursorX], a
ld a, $20
ld [wcfa7], a
xor a
ld [wcfa5], a
ld [wcfa6], a
- call Function1bd3
+ call ScrollingMenuJoypad
bit 5, a
jp nz, .asm_28946
bit 1, a
@@ -1446,7 +1446,7 @@ Function28926: ; 28926
.asm_289cd
pop af
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
ld a, $4
ld [wd263], a
callab Function50db9
@@ -1465,7 +1465,7 @@ Function28926: ; 28926
.asm_289fe
call Function1bee
pop af
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
dec a
ld [wd002], a
ld [wPlayerLinkAction], a
@@ -1549,7 +1549,7 @@ UnknownText_0x28ac4: ; 0x28ac4
Function28ac9: ; 28ac9
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
cp $1
jp nz, Function2891c
call Function1bf7
@@ -1579,12 +1579,12 @@ Function28ade: ; 28ade
bit 6, a
jr z, .asm_28b03
ld a, [OTPartyCount]
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
jp Function28803
.asm_28b03
ld a, $1
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
jp Function2888b
.asm_28b0b
@@ -1715,17 +1715,17 @@ Function28b87: ; 28b87
ld a, $3
ld [wcfa8], a
ld a, $1
- ld [MenuSelection2], a
- ld [wcfaa], a
+ ld [wMenuCursorY], a
+ ld [wMenuCursorX], a
callba Function4d354
- call Function1bd3
+ call ScrollingMenuJoypad
push af
call Call_ExitMenu
call WaitBGMap2
pop af
bit 1, a
jr nz, .asm_28c33
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
jr z, .asm_28c54
diff --git a/engine/mail.asm b/engine/mail.asm
index 6eef16a8c..f8619c9f6 100755
--- a/engine/mail.asm
+++ b/engine/mail.asm
@@ -402,10 +402,10 @@ MailboxPC: ; 0x44806
call HandleScrollingMenu
ld a, [wMenuScrollPosition]
ld [OBPals + 8 * 6], a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld [wCurMessageIndex], a
- ld a, [wcf73]
+ ld a, [wMenuJoypad]
cp $2
jr z, .exit
call Function4484a
@@ -419,10 +419,10 @@ MailboxPC: ; 0x44806
Function4484a: ; 0x4484a
ld hl, MenuData44964
call LoadMenuDataHeader
- call InterpretMenu2
+ call VerticalMenu
call ExitMenu
jr c, .exit
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
ld hl, .JumpTable
rst JumpTable
diff --git a/engine/main_menu.asm b/engine/main_menu.asm
index 01432dc04..9225945ef 100755
--- a/engine/main_menu.asm
+++ b/engine/main_menu.asm
@@ -202,7 +202,7 @@ Function49de4: ; 49de4
set 5, a
ld [wcfa5], a
call Function1f1a
- ld a, [wcf73]
+ ld a, [wMenuJoypad]
cp $2
jr z, .asm_49e07
cp $1
@@ -390,15 +390,15 @@ Function49f16: ; 49f16
call PlaceString
call WaitBGMap2
call SetPalettes
- call Function1bc9
- ld hl, MenuSelection2
+ call StaticMenuJoypad
+ ld hl, wMenuCursorY
ld b, [hl]
push bc
jr .asm_49f5d
.asm_49f55
- call Function1bd3
- ld hl, MenuSelection2
+ call ScrollingMenuJoypad
+ ld hl, wMenuCursorY
ld b, [hl]
push bc
@@ -410,7 +410,7 @@ Function49f16: ; 49f16
jr .asm_49f97
.asm_49f67
- ld hl, MenuSelection2
+ ld hl, wMenuCursorY
ld a, [hl]
cp $1
jp z, Function4a098
@@ -421,7 +421,7 @@ Function49f16: ; 49f16
cp $4
jp z, Function4a100
ld a, $1
- call Function1ff8
+ call MenuClickSound
.asm_49f84
pop bc
@@ -434,7 +434,7 @@ Function49f16: ; 49f16
ret
.asm_49f97
- ld hl, MenuSelection2
+ ld hl, wMenuCursorY
ld a, [hl]
dec a
ld hl, MobileStrings2
@@ -452,7 +452,7 @@ Function49f16: ; 49f16
.asm_49fb7
call Function4a071
pop bc
- ld hl, MenuSelection2
+ ld hl, wMenuCursorY
ld [hl], b
ld b, $a
ld c, $1
@@ -529,7 +529,7 @@ endr
Function4a098: ; 4a098 (12:6098)
ld a, $2
- call Function1ff8
+ call MenuClickSound
call Function1bee
call WaitBGMap
call LoadStandardMenuDataHeader
@@ -542,13 +542,13 @@ Function4a098: ; 4a098 (12:6098)
Function4a0b9: ; 4a0b9 (12:60b9)
ld a, $2
- call Function1ff8
+ call MenuClickSound
pop bc
jp Function4a4c4
Function4a0c2: ; 4a0c2 (12:60c2)
ld a, $2
- call Function1ff8
+ call MenuClickSound
ld a, BANK(sPlayerData)
call GetSRAMBank
ld hl, sPlayerData + PlayerName - wPlayerData
@@ -574,7 +574,7 @@ Function4a0c2: ; 4a0c2 (12:60c2)
Function4a100: ; 4a100 (12:6100)
ld a, $2
- call Function1ff8
+ call MenuClickSound
call ClearBGPalettes
call Function4a13b
call ClearBGPalettes
@@ -630,7 +630,7 @@ Function4a149: ; 4a149 (12:6149)
ld b, $4
ld c, $12
call TextBox
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
ld hl, Strings_4a23d
call GetNthString
@@ -644,15 +644,15 @@ Function4a149: ; 4a149 (12:6149)
call PlaceString
callba Function104148
call SetPalettes
- call Function1bc9
- ld hl, MenuSelection2
+ call StaticMenuJoypad
+ ld hl, wMenuCursorY
ld b, [hl]
push bc
jr asm_4a19d
Function4a195: ; 4a195 (12:6195)
- call Function1bd3
- ld hl, MenuSelection2
+ call ScrollingMenuJoypad
+ ld hl, wMenuCursorY
ld b, [hl]
push bc
@@ -663,19 +663,19 @@ asm_4a19d: ; 4a19d (12:619d)
jr nz, .asm_4a1ba
jr .asm_4a1bc
.asm_4a1a7
- ld hl, MenuSelection2
+ ld hl, wMenuCursorY
ld a, [hl]
cp $1
jp z, Function4a20e
cp $2
jp z, Function4a221
ld a, $1
- call Function1ff8
+ call MenuClickSound
.asm_4a1ba
pop bc
ret
.asm_4a1bc
- ld hl, MenuSelection2
+ ld hl, wMenuCursorY
ld a, [hl]
dec a
ld hl, Strings_4a23d
@@ -692,7 +692,7 @@ asm_4a19d: ; 4a19d (12:619d)
.asm_4a1db
call Function4a373
pop bc
- ld hl, MenuSelection2
+ ld hl, wMenuCursorY
ld [hl], b
lb bc, 6, 1
hlcoord 2, 3
@@ -708,7 +708,7 @@ String_4a1ef: ; 4a1ef
Function4a20e: ; 4a20e (12:620e)
ld a, $1
- call Function1ff8
+ call MenuClickSound
callba Function1719c8
call ClearBGPalettes
call DelayFrame
@@ -716,12 +716,12 @@ Function4a20e: ; 4a20e (12:620e)
Function4a221: ; 4a221 (12:6221)
ld a, $1
- call Function1ff8
+ call MenuClickSound
call Function4a28a
jr c, Function4a239
call Function4a373
ld a, $2
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
jr .asm_4a235
.asm_4a235
pop bc
@@ -767,13 +767,13 @@ Function4a28a: ; 4a28a (12:628a)
call PlaceString
callba Function104148
call Function4a118
- call Function1bd3
+ call ScrollingMenuJoypad
push af
call PlayClickSFX
pop af
bit 1, a
jr nz, .asm_4a33b
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
cp $2
jr z, .asm_4a2f0
cp $3
@@ -796,10 +796,10 @@ Function4a28a: ; 4a28a (12:628a)
callba Function104148
ld hl, MenuDataHeader_0x4a362
call LoadMenuDataHeader
- call InterpretMenu2
+ call VerticalMenu
bit 1, a
jr nz, .asm_4a338
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
cp $2
jr z, .asm_4a338
ld a, $5
@@ -1073,15 +1073,15 @@ Function4a4c4: ; 4a4c4 (12:64c4)
call PlaceString
call WaitBGMap2
call SetPalettes
- call Function1bc9
- ld hl, MenuSelection2
+ call StaticMenuJoypad
+ ld hl, wMenuCursorY
ld b, [hl]
push bc
jr asm_4a54d
Function4a545: ; 4a545 (12:6545)
- call Function1bd3
- ld hl, MenuSelection2
+ call ScrollingMenuJoypad
+ ld hl, wMenuCursorY
ld b, [hl]
push bc
@@ -1092,7 +1092,7 @@ asm_4a54d: ; 4a54d (12:654d)
jr nz, .asm_4a574
jr .asm_4a57e
.asm_4a557
- ld hl, MenuSelection2
+ ld hl, wMenuCursorY
ld a, [hl]
cp $1
jp z, Function4a6ab
@@ -1103,14 +1103,14 @@ asm_4a54d: ; 4a54d (12:654d)
cp $4
jp z, Function4a6ab
ld a, $1
- call Function1ff8
+ call MenuClickSound
.asm_4a574
pop bc
call ClearBGPalettes
call ClearTileMap
jp Function49f0a
.asm_4a57e
- ld hl, MenuSelection2
+ ld hl, wMenuCursorY
ld a, [hl]
dec a
add a
@@ -1138,7 +1138,7 @@ asm_4a54d: ; 4a54d (12:654d)
Function4a5b0: ; 4a5b0 (12:65b0)
call Function4a680
pop bc
- ld hl, MenuSelection2
+ ld hl, wMenuCursorY
ld [hl], b
ld b, $a
ld c, $1
@@ -1206,7 +1206,7 @@ endr
Function4a6ab: ; 4a6ab (12:66ab)
ld a, $2
- call Function1ff8
+ call MenuClickSound
call ClearBGPalettes
ld b, SCGB_08
call GetSGBLayout
diff --git a/engine/mart.asm b/engine/mart.asm
index 3437ef984..7d92e468b 100755
--- a/engine/mart.asm
+++ b/engine/mart.asm
@@ -185,9 +185,9 @@ StandardMart: ; 15b47
.TopMenu: ; 15b6e
ld hl, MenuDataHeader_BuySell
call CopyMenuDataHeader
- call InterpretMenu2
+ call VerticalMenu
jr c, .quit
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
cp $1
jr z, .buy
cp $2
@@ -481,10 +481,10 @@ BuyMenuLoop: ; 15cef
call HandleScrollingMenu
ld a, [wMenuScrollPosition]
ld [wd045 + 1], a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld [wd045], a
call SpeechTextBox
- ld a, [wcf73]
+ ld a, [wMenuJoypad]
cp B_BUTTON
jr z, .set_carry
cp A_BUTTON
diff --git a/engine/menu.asm b/engine/menu.asm
index 22ca2b214..152be1992 100755
--- a/engine/menu.asm
+++ b/engine/menu.asm
@@ -1,54 +1,57 @@
-Function2400e:: ; 2400e
+_2DMenu_:: ; 2400e
ld hl, CopyMenuData2
- ld a, [wcf94]
+ ld a, [wMenuData2_2DMenuItemStringsBank]
rst FarCall
- call Function24085
+
+ call Draw2DMenu
call UpdateSprites
call ApplyTilemap
- call Function2408f
+ call Get2DMenuSelection
ret
; 24022
-Function24022:: ; 24022
+_InterpretBattleMenu:: ; 24022
ld hl, CopyMenuData2
- ld a, [wcf94]
+ ld a, [wMenuData2_2DMenuItemStringsBank]
rst FarCall
- call Function24085
+
+ call Draw2DMenu
callba MobileTextBorder
call UpdateSprites
call ApplyTilemap
- call Function2408f
+ call Get2DMenuSelection
ret
; 2403c
-Function2403c:: ; 2403c
+_InterpretMobileMenu:: ; 2403c
ld hl, CopyMenuData2
- ld a, [wcf94]
+ ld a, [wMenuData2_2DMenuItemStringsBank]
rst FarCall
- call Function24085
+
+ call Draw2DMenu
callba MobileTextBorder
call UpdateSprites
call ApplyTilemap
- call Function2411a
- ld hl, wcfa5
+ call Init2DMenuCursorPosition
+ ld hl, w2DMenuFlags1
set 7, [hl]
-.asm_2405a
+.loop
call DelayFrame
callba Function10032e
ld a, [wcd2b]
and a
- jr nz, .asm_24076
- call Function241ba
- ld a, [wcfa8]
+ jr nz, .quit
+ call MobileMenuJoypad
+ ld a, [w2DMenuFlags4]
and c
- jr z, .asm_2405a
- call Function24098
+ jr z, .loop
+ call Mobile_GetMenuSelection
ret
-.asm_24076
- ld a, [wcfa4]
+.quit
+ ld a, [w2DMenuNumCols]
ld c, a
- ld a, [wcfa3]
+ ld a, [w2DMenuNumRows]
call SimpleMultiply
ld [wMenuCursorBuffer], a
and a
@@ -57,174 +60,173 @@ Function2403c:: ; 2403c
-Function24085: ; 24085
+Draw2DMenu: ; 24085
xor a
ld [hBGMapMode], a
call MenuBox
- call Function240db
+ call Place2DMenuItemStrings
ret
; 2408f
-Function2408f: ; 2408f
- call Function2411a
- call Function1bc9
- call Function1ff8
-
-Function24098: ; 24098
+Get2DMenuSelection: ; 2408f
+ call Init2DMenuCursorPosition
+ call StaticMenuJoypad
+ call MenuClickSound
+Mobile_GetMenuSelection: ; 24098
ld a, [wMenuData2Flags]
bit 1, a
- jr z, .asm_240a6
- call Function1bdd
- bit 2, a
- jr nz, .asm_240c9
+ jr z, .skip
+ call GetMenuJoypad
+ bit SELECT_F, a
+ jr nz, .quit1
-.asm_240a6
+.skip
ld a, [wMenuData2Flags]
bit 0, a
- jr nz, .asm_240b4
- call Function1bdd
- bit 1, a
- jr nz, .asm_240cb
+ jr nz, .skip2
+ call GetMenuJoypad
+ bit B_BUTTON_F, a
+ jr nz, .quit2
-.asm_240b4
- ld a, [wcfa4]
+.skip2
+ ld a, [w2DMenuNumCols]
ld c, a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
call SimpleMultiply
ld c, a
- ld a, [wcfaa]
+ ld a, [wMenuCursorX]
add c
ld [wMenuCursorBuffer], a
and a
ret
-.asm_240c9
+.quit1
scf
ret
-.asm_240cb
+.quit2
scf
ret
; 240cd
-Function240cd: ; 240cd
+GetMenuNumberOfColumns: ; 240cd
ld a, [wMenuData2Items]
and $f
ret
; 240d3
-Function240d3: ; 240d3
+GetMenuNumberOfRows: ; 240d3
ld a, [wMenuData2Items]
swap a
and $f
ret
; 240db
-Function240db: ; 240db
- ld hl, wcf95
+Place2DMenuItemStrings: ; 240db
+ ld hl, wMenuData2_2DMenuItemStringsAddr
ld e, [hl]
inc hl
ld d, [hl]
call GetMenuTextStartCoord
call Coord2Tile
- call Function240d3
+ call GetMenuNumberOfRows
ld b, a
-.asm_240eb
+.row
push bc
push hl
- call Function240cd
+ call GetMenuNumberOfColumns
ld c, a
-.asm_240f1
+.col
push bc
- ld a, [wcf94]
- call Function201c
+ ld a, [wMenuData2_2DMenuItemStringsBank]
+ call Place2DMenuItemName
inc de
- ld a, [wcf93]
+ ld a, [wMenuData2Spacing]
ld c, a
- ld b, $0
+ ld b, 0
add hl, bc
pop bc
dec c
- jr nz, .asm_240f1
+ jr nz, .col
pop hl
- ld bc, $28
+ ld bc, 2 * SCREEN_WIDTH
add hl, bc
pop bc
dec b
- jr nz, .asm_240eb
- ld hl, wcf98
+ jr nz, .row
+ ld hl, wMenuData2_2DMenuFunctionAddr
ld a, [hli]
ld h, [hl]
ld l, a
or h
ret z
- ld a, [wcf97]
+ ld a, [wMenuData2_2DMenuFunctionBank]
rst FarCall
ret
; 2411a
-Function2411a: ; 2411a (9:411a)
+Init2DMenuCursorPosition: ; 2411a (9:411a)
call GetMenuTextStartCoord
ld a, b
- ld [wcfa1], a
+ ld [w2DMenuCursorInitY], a
dec c
ld a, c
- ld [wcfa2], a
- call Function240d3
- ld [wcfa3], a
- call Function240cd
- ld [wcfa4], a
- call Function24179
- call Function2418a
- call Function24193
- ld a, [wcfa4]
+ ld [w2DMenuCursorInitX], a
+ call GetMenuNumberOfRows
+ ld [w2DMenuNumRows], a
+ call GetMenuNumberOfColumns
+ ld [w2DMenuNumCols], a
+ call .InitFlags_a
+ call .InitFlags_b
+ call .InitFlags_c
+ ld a, [w2DMenuNumCols]
ld e, a
ld a, [wMenuCursorBuffer]
ld b, a
xor a
- ld d, $0
-.asm_24146
+ ld d, 0
+.loop
inc d
add e
cp b
- jr c, .asm_24146
+ jr c, .loop
sub e
ld c, a
ld a, b
sub c
and a
- jr z, .asm_24157
+ jr z, .reset1
cp e
- jr z, .asm_24159
- jr c, .asm_24159
-.asm_24157
- ld a, $1
-.asm_24159
- ld [wcfaa], a
- ld a, [wcfa3]
+ jr z, .okay1
+ jr c, .okay1
+.reset1
+ ld a, 1
+.okay1
+ ld [wMenuCursorX], a
+ ld a, [w2DMenuNumRows]
ld e, a
ld a, d
and a
- jr z, .asm_24169
+ jr z, .reset2
cp e
- jr z, .asm_2416b
- jr c, .asm_2416b
-.asm_24169
- ld a, $1
-.asm_2416b
- ld [MenuSelection2], a
+ jr z, .okay2
+ jr c, .okay2
+.reset2
+ ld a, 1
+.okay2
+ ld [wMenuCursorY], a
xor a
- ld [wcfab], a
- ld [wcfac], a
- ld [wcfad], a
+ ld [wCursorOffCharacter], a
+ ld [wCursorCurrentTile], a
+ ld [wCursorCurrentTile + 1], a
ret
; 24179
-Function24179: ; 24179
+.InitFlags_a: ; 24179
xor a
- ld hl, wcfa5
+ ld hl, w2DMenuFlags1
ld [hli], a
ld [hld], a
ld a, [wMenuData2Flags]
@@ -235,89 +237,85 @@ Function24179: ; 24179
ret
; 2418a
-Function2418a: ; 2418a
- ld a, [wcf93]
- or $20
- ld [wcfa7], a
+.InitFlags_b: ; 2418a
+ ld a, [wMenuData2Spacing]
+ or %00100000
+ ld [w2DMenuFlags3], a
ret
; 24193
-Function24193: ; 24193
+.InitFlags_c: ; 24193
ld hl, wMenuData2Flags
- ld a, $1
+ ld a, %001
bit 0, [hl]
- jr nz, .asm_2419e
- or $2
-
-.asm_2419e
+ jr nz, .skip
+ or %010
+.skip
bit 1, [hl]
- jr z, .asm_241a4
- or $4
-
-.asm_241a4
- ld [wcfa8], a
+ jr z, .skip2
+ or %100
+.skip2
+ ld [w2DMenuFlags4], a
ret
; 241a8
-Function241a8:: ; 241a8
- call Function24329
-Function241ab:: ; 241ab
- ld hl, wcfa6
+_StaticMenuJoypad:: ; 241a8
+ call Place2DMenuCursor
+_ScrollingMenuJoypad:: ; 241ab
+ ld hl, w2DMenuFlags2
res 7, [hl]
ld a, [hBGMapMode]
push af
- call Function24216
+ call MenuJoypadLoop
pop af
ld [hBGMapMode], a
ret
; 241ba
-Function241ba: ; 241ba
- ld hl, wcfa6
+MobileMenuJoypad: ; 241ba
+ ld hl, w2DMenuFlags2
res 7, [hl]
ld a, [hBGMapMode]
push af
- call Function2431a
- call Function24249
- jr nc, .asm_241cd
- call Function24270
-
-.asm_241cd
+ call Move2DMenuCursor
+ call Do2DMenuRTCJoypad
+ jr nc, .skip_joypad
+ call _2DMenuInterpretJoypad
+.skip_joypad
pop af
ld [hBGMapMode], a
- call Function1bdd
+ call GetMenuJoypad
ld c, a
ret
; 241d5
Function241d5: ; 241d5
- call Function24329
+; Unreferenced
+ call Place2DMenuCursor
.loop
- call Function2431a
+ call Move2DMenuCursor
call Function10402d ; BUG: This function is in another bank.
; Pointer in current bank (9) is bogus.
- call Function241fa
+ call .loop2
jr nc, .done
- call Function24270
+ call _2DMenuInterpretJoypad
jr c, .done
- ld a, [wcfa5]
+ ld a, [w2DMenuFlags1]
bit 7, a
jr nz, .done
- call Function1bdd
+ call GetMenuJoypad
ld c, a
- ld a, [wcfa8]
+ ld a, [w2DMenuFlags4]
and c
jr z, .loop
.done
ret
-; 241fa
-Function241fa: ; 241fa
-.loop
- call Function24259
+.loop2
+ call Menu_WasButtonPressed
ret c
ld c, 1
ld b, 3
@@ -326,36 +324,36 @@ Function241fa: ; 241fa
ret c
callba Function100337
ret c
- ld a, [wcfa5]
+ ld a, [w2DMenuFlags1]
bit 7, a
- jr z, .loop
+ jr z, .loop2
and a
ret
; 24216
-Function24216: ; 24216
-.asm_24216
- call Function2431a
- call Function24238
- call Function24249
- jr nc, .asm_24237
- call Function24270
- jr c, .asm_24237
- ld a, [wcfa5]
+MenuJoypadLoop: ; 24216
+.loop
+ call Move2DMenuCursor
+ call .BGMap_OAM
+ call Do2DMenuRTCJoypad
+ jr nc, .done
+ call _2DMenuInterpretJoypad
+ jr c, .done
+ ld a, [w2DMenuFlags1]
bit 7, a
- jr nz, .asm_24237
- call Function1bdd
+ jr nz, .done
+ call GetMenuJoypad
ld b, a
- ld a, [wcfa8]
+ ld a, [w2DMenuFlags4]
and b
- jr z, .asm_24216
+ jr z, .loop
-.asm_24237
+.done
ret
; 24238
-Function24238: ; 24238
+.BGMap_OAM: ; 24238
ld a, [hOAMUpdate]
push af
ld a, $1
@@ -368,220 +366,479 @@ Function24238: ; 24238
ret
; 24249
-Function24249: ; 24249
-.asm_24249
+Do2DMenuRTCJoypad: ; 24249
+.loopRTC
call RTC
- call Function24259
+ call Menu_WasButtonPressed
ret c
- ld a, [wcfa5]
+ ld a, [w2DMenuFlags1]
bit 7, a
- jr z, .asm_24249
+ jr z, .loopRTC
and a
ret
; 24259
-Function24259: ; 24259
- ld a, [wcfa5]
+Menu_WasButtonPressed: ; 24259
+ ld a, [w2DMenuFlags1]
bit 6, a
- jr z, .asm_24266
+ jr z, .skip_to_joypad
callab PlaySpriteAnimationsAndDelayFrame
-.asm_24266
+.skip_to_joypad
call JoyTextDelay
- call Function1bdd
+ call GetMenuJoypad
and a
ret z
scf
ret
; 24270
-Function24270: ; 24270
- call Function1bdd
- bit 0, a
- jp nz, Function24318
- bit 1, a
- jp nz, Function24318
- bit 2, a
- jp nz, Function24318
- bit 3, a
- jp nz, Function24318
- bit 4, a
- jr nz, .asm_242fa
- bit 5, a
- jr nz, .asm_242dc
- bit 6, a
- jr nz, .asm_242be
- bit 7, a
- jr nz, .asm_242a0
+_2DMenuInterpretJoypad: ; 24270
+ call GetMenuJoypad
+ bit A_BUTTON_F, a
+ jp nz, .a_b_start_select
+ bit B_BUTTON_F, a
+ jp nz, .a_b_start_select
+ bit SELECT_F, a
+ jp nz, .a_b_start_select
+ bit START_F, a
+ jp nz, .a_b_start_select
+ bit D_RIGHT_F, a
+ jr nz, .d_right
+ bit D_LEFT_F, a
+ jr nz, .d_left
+ bit D_UP_F, a
+ jr nz, .d_up
+ bit D_DOWN_F, a
+ jr nz, .d_down
and a
ret
-.asm_24299: ; 24299
- ld hl, wcfa6
+.set_bit_7: ; 24299
+ ld hl, w2DMenuFlags2
set 7, [hl]
scf
ret
-.asm_242a0
- ld hl, MenuSelection2
- ld a, [wcfa3]
+.d_down
+ ld hl, wMenuCursorY
+ ld a, [w2DMenuNumRows]
cp [hl]
- jr z, .asm_242ac
+ jr z, .check_wrap_around_down
inc [hl]
xor a
ret
-.asm_242ac
- ld a, [wcfa5]
+.check_wrap_around_down
+ ld a, [w2DMenuFlags1]
bit 5, a
- jr nz, .asm_242ba
+ jr nz, .wrap_around_down
bit 3, a
- jp nz, .asm_24299
+ jp nz, .set_bit_7
xor a
ret
-.asm_242ba
+.wrap_around_down
ld [hl], $1
xor a
ret
-.asm_242be
- ld hl, MenuSelection2
+.d_up
+ ld hl, wMenuCursorY
ld a, [hl]
dec a
- jr z, .asm_242c8
+ jr z, .check_wrap_around_up
ld [hl], a
xor a
ret
-.asm_242c8
- ld a, [wcfa5]
+.check_wrap_around_up
+ ld a, [w2DMenuFlags1]
bit 5, a
- jr nz, .asm_242d6
+ jr nz, .wrap_around_up
bit 2, a
- jp nz, .asm_24299
+ jp nz, .set_bit_7
xor a
ret
-.asm_242d6
- ld a, [wcfa3]
+.wrap_around_up
+ ld a, [w2DMenuNumRows]
ld [hl], a
xor a
ret
-.asm_242dc
- ld hl, wcfaa
+.d_left
+ ld hl, wMenuCursorX
ld a, [hl]
dec a
- jr z, .asm_242e6
+ jr z, .check_wrap_around_left
ld [hl], a
xor a
ret
-.asm_242e6
- ld a, [wcfa5]
+.check_wrap_around_left
+ ld a, [w2DMenuFlags1]
bit 4, a
- jr nz, .asm_242f4
+ jr nz, .wrap_around_left
bit 1, a
- jp nz, .asm_24299
+ jp nz, .set_bit_7
xor a
ret
-.asm_242f4
- ld a, [wcfa4]
+.wrap_around_left
+ ld a, [w2DMenuNumCols]
ld [hl], a
xor a
ret
-.asm_242fa
- ld hl, wcfaa
- ld a, [wcfa4]
+.d_right
+ ld hl, wMenuCursorX
+ ld a, [w2DMenuNumCols]
cp [hl]
- jr z, .asm_24306
+ jr z, .check_wrap_around_right
inc [hl]
xor a
ret
-.asm_24306
- ld a, [wcfa5]
+.check_wrap_around_right
+ ld a, [w2DMenuFlags1]
bit 4, a
- jr nz, .asm_24314
+ jr nz, .wrap_around_right
bit 0, a
- jp nz, .asm_24299
+ jp nz, .set_bit_7
xor a
ret
-.asm_24314
+.wrap_around_right
ld [hl], $1
xor a
ret
; 24318
-Function24318: ; 24318
+.a_b_start_select: ; 24318
xor a
ret
; 2431a
-Function2431a: ; 2431a
- ld hl, wcfac
+Move2DMenuCursor: ; 2431a
+ ld hl, wCursorCurrentTile
ld a, [hli]
ld h, [hl]
ld l, a
ld a, [hl]
- cp $ed
- jr nz, Function24329
- ld a, [wcfab]
+ cp "▶"
+ jr nz, Place2DMenuCursor
+ ld a, [wCursorOffCharacter]
ld [hl], a
-
-Function24329: ; 24329
- ld a, [wcfa1]
+Place2DMenuCursor: ; 24329
+ ld a, [w2DMenuCursorInitY]
ld b, a
- ld a, [wcfa2]
+ ld a, [w2DMenuCursorInitX]
ld c, a
call Coord2Tile
- ld a, [wcfa7]
+ ld a, [w2DMenuFlags3]
swap a
and $f
ld c, a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld b, a
xor a
dec b
- jr z, .asm_24348
-.asm_24344
+ jr z, .got_row
+.row_loop
add c
dec b
- jr nz, .asm_24344
+ jr nz, .row_loop
-.asm_24348
- ld c, $14
+.got_row
+ ld c, SCREEN_WIDTH
call AddNTimes
- ld a, [wcfa7]
+ ld a, [w2DMenuFlags3]
and $f
ld c, a
- ld a, [wcfaa]
+ ld a, [wMenuCursorX]
ld b, a
xor a
dec b
- jr z, .asm_2435f
-.asm_2435b
+ jr z, .got_col
+.col_loop
add c
dec b
- jr nz, .asm_2435b
+ jr nz, .col_loop
-.asm_2435f
+.got_col
ld c, a
add hl, bc
ld a, [hl]
- cp $ed
- jr z, .asm_2436b
- ld [wcfab], a
- ld [hl], $ed
+ cp "▶"
+ jr z, .cursor_on
+ ld [wCursorOffCharacter], a
+ ld [hl], "▶"
-.asm_2436b
+.cursor_on
ld a, l
- ld [wcfac], a
+ ld [wCursorCurrentTile], a
ld a, h
- ld [wcfad], a
+ ld [wCursorCurrentTile + 1], a
ret
; 24374
+
+_BackUpTiles:: ; 24374
+; Push the window
+ ld a, [rSVBK]
+ push af
+ ld a, $7
+ ld [rSVBK], a
+
+ ld hl, wWindowStackPointer
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ push de
+
+ ld b, $10
+ ld hl, wMenuFlags
+.loop
+ ld a, [hli]
+ ld [de], a
+ dec de
+ dec b
+ jr nz, .loop
+
+; If bit 6 or 7 of the menu flags is set, set bit 0 of the address
+; at 7:[wWindowStackPointer], and draw the menu using the coordinates from the header.
+; Otherwise, reset bit 0 of 7:[wWindowStackPointer].
+ ld a, [wMenuFlags]
+ bit 6, a
+ jr nz, .bit_6
+ bit 7, a
+ jr z, .not_bit_7
+
+.bit_6
+ ld hl, wWindowStackPointer
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ set 0, [hl]
+ call MenuBoxCoord2Tile
+ call .copy
+ call MenuBoxCoord2Attr
+ call .copy
+ jr .done
+
+.not_bit_7
+ pop hl ; last-pushed register was de
+ push hl
+ ld a, [hld]
+ ld l, [hl]
+ ld h, a
+ res 0, [hl]
+
+.done
+ pop hl
+ call .ret ; empty function
+ ld a, h
+ ld [de], a
+ dec de
+ ld a, l
+ ld [de], a
+ dec de
+ ld hl, wWindowStackPointer
+ ld [hl], e
+ inc hl
+ ld [hl], d
+
+ pop af
+ ld [rSVBK], a
+ ld hl, wWindowStackSize
+ inc [hl]
+ ret
+; 243cd
+
+.copy: ; 243cd
+ call GetMenuBoxDims
+ inc b
+ inc c
+ call .ret ; empty function
+
+.row
+ push bc
+ push hl
+
+.col
+ ld a, [hli]
+ ld [de], a
+ dec de
+ dec c
+ jr nz, .col
+
+ pop hl
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, .row
+
+ ret
+; 243e7
+
+.ret: ; 243e7
+ ret
+; 243e8
+
+_ExitMenu:: ; 243e8
+ xor a
+ ld [hBGMapMode], a
+
+ ld a, [rSVBK]
+ push af
+ ld a, $7
+ ld [rSVBK], a
+
+ call GetWindowStackTop
+ ld a, l
+ or h
+ jp z, Error_Cant_ExitMenu
+ ld a, l
+ ld [wWindowStackPointer], a
+ ld a, h
+ ld [wWindowStackPointer + 1], a
+ call PopWindow
+ ld a, [wMenuFlags]
+ bit 0, a
+ jr z, .next
+ ld d, h
+ ld e, l
+ call RestoreTileBackup
+
+.next
+ call GetWindowStackTop
+ ld a, h
+ or l
+ jr z, .done
+ call PopWindow
+
+.done
+ pop af
+ ld [rSVBK], a
+ ld hl, wWindowStackSize
+ dec [hl]
+ ret
+; 24423
+
+Function24423: ; 24423
+ ld a, [VramState]
+ bit 0, a
+ ret z
+ xor a
+ call GetSRAMBank
+ hlcoord 0, 0
+ ld de, sScratch
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ call CopyBytes
+ call CloseSRAM
+ call OverworldTextModeSwitch
+ xor a
+ call GetSRAMBank
+ ld hl, sScratch
+ decoord 0, 0
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+.asm_2444c
+ ld a, [hl]
+ cp $61
+ jr c, .asm_24452
+ ld [de], a
+
+.asm_24452
+ inc hl
+ inc de
+ dec bc
+ ld a, c
+ or b
+ jr nz, .asm_2444c
+ call CloseSRAM
+ ret
+; 2445d
+
+Error_Cant_ExitMenu: ; 2445d
+ ld hl, .Text_NoWindowsAvailableForPopping
+ call PrintText
+ call WaitBGMap
+.InfiniteLoop
+ jr .InfiniteLoop
+; 24468
+
+.Text_NoWindowsAvailableForPopping: ; 24468
+ text_jump UnknownText_0x1c46b7
+ db "@"
+; 2446d
+
+_InitVerticalMenuCursor:: ; 2446d
+ ld a, [wMenuData2Flags]
+ ld b, a
+ ld hl, w2DMenuCursorInitY
+ ld a, [wMenuBorderTopCoord]
+ inc a
+ bit 6, b
+ jr nz, .skip_offset
+ inc a
+.skip_offset
+ ld [hli], a
+; w2DMenuCursorInitX
+ ld a, [wMenuBorderLeftCoord]
+ inc a
+ ld [hli], a
+; w2DMenuNumRows
+ ld a, [wMenuData2Items]
+ ld [hli], a
+; w2DMenuNumCols
+ ld a, 1
+ ld [hli], a
+; w2DMenuFlags1
+ ld [hl], $0
+ bit 5, b
+ jr z, .skip_bit_5
+ set 5, [hl]
+.skip_bit_5
+ ld a, [wMenuFlags]
+ bit 4, a
+ jr z, .skip_bit_6
+ set 6, [hl]
+.skip_bit_6
+ inc hl
+; w2DMenuFlags2
+ xor a
+ ld [hli], a
+; w2DMenuFlags3
+ ld a, %00100000
+ ld [hli], a
+; w2DMenuFlags4
+ ld a, %001
+ bit 0, b
+ jr nz, .skip_bit_1
+ add %010
+.skip_bit_1
+ ld [hli], a
+; wMenuCursorY
+ ld a, [wMenuCursorBuffer]
+ and a
+ jr z, .load_at_the_top
+ ld c, a
+ ld a, [wMenuData2Items]
+ cp c
+ jr nc, .load_position
+.load_at_the_top
+ ld c, 1
+.load_position
+ ld [hl], c
+ inc hl
+; wMenuCursorX
+ ld a, 1
+ ld [hli], a
+; wCursorOffCharacter, wCursorCurrentTile
+ xor a
+rept 3
+ ld [hli], a
+endr
+ ret
+; 244c3
diff --git a/engine/mon_icons.asm b/engine/mon_icons.asm
index ebab47750..883dbdc96 100755
--- a/engine/mon_icons.asm
+++ b/engine/mon_icons.asm
@@ -363,7 +363,7 @@ GetGFXUnlessMobile: ; 8ea3f
FreezeMonIcons: ; 8ea4a
ld hl, wSpriteAnimationStructs
ld e, PARTY_LENGTH
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld d, a
.loop
ld a, [hl]
diff --git a/engine/mon_menu.asm b/engine/mon_menu.asm
index 4c9fb2b89..b58b2e2bc 100755
--- a/engine/mon_menu.asm
+++ b/engine/mon_menu.asm
@@ -85,10 +85,10 @@ MonMenuLoop: ; 24d59
ld [wMenuData2Flags], a
ld a, [Buffer1] ; items
ld [wMenuData2Items], a
- call Function1c10
+ call InitVerticalMenuCursor
ld hl, wcfa5
set 6, [hl]
- call Function1bc9
+ call StaticMenuJoypad
ld de, SFX_READ_TEXT_2
call PlaySFX
ld a, [hJoyPressed]
@@ -103,7 +103,7 @@ MonMenuLoop: ; 24d59
ret
.select
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
ld c, a
ld b, 0
@@ -301,16 +301,16 @@ BattleMonMenu: ; 24e99
ld [hBGMapMode], a
call MenuBox
call UpdateSprites
- call Function1c89
+ call PlaceVerticalMenuItems
call WaitBGMap
call CopyMenuData2
ld a, [wMenuData2Flags]
bit 7, a
jr z, .set_carry
- call Function1c10
+ call InitVerticalMenuCursor
ld hl, wcfa5
set 6, [hl]
- call Function1bc9
+ call StaticMenuJoypad
ld de, SFX_READ_TEXT_2
call PlaySFX
ld a, [hJoyPressed]
diff --git a/engine/pack.asm b/engine/pack.asm
index efcead9de..33d44a745 100644
--- a/engine/pack.asm
+++ b/engine/pack.asm
@@ -72,7 +72,7 @@ Pack: ; 10000
call HandleScrollingMenu
ld a, [wMenuScrollPosition]
ld [wItemsPocketScrollPosition], a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld [wItemsPocketCursor], a
ld b, $7
ld c, $3
@@ -100,7 +100,7 @@ Pack: ; 10000
call HandleScrollingMenu
ld a, [wMenuScrollPosition]
ld [wKeyItemsPocketScrollPosition], a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld [wKeyItemsPocketCursor], a
ld b, $3
ld c, $7
@@ -140,11 +140,11 @@ Pack: ; 10000
.load_jump
push de
call LoadMenuDataHeader
- call InterpretMenu2
+ call VerticalMenu
call ExitMenu
pop hl
ret c
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
call Pack_GetJumptablePointer
jp [hl]
@@ -233,7 +233,7 @@ Pack: ; 10000
call HandleScrollingMenu
ld a, [wMenuScrollPosition]
ld [wBallsPocketScrollPosition], a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld [wBallsPocketCursor], a
ld b, $1
ld c, $5
@@ -302,11 +302,11 @@ Pack: ; 10000
.build_menu
push de
call LoadMenuDataHeader
- call InterpretMenu2
+ call VerticalMenu
call ExitMenu
pop hl
ret c
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
call Pack_GetJumptablePointer
jp [hl]
@@ -737,7 +737,7 @@ BattlePack: ; 10493
call HandleScrollingMenu
ld a, [wMenuScrollPosition]
ld [wItemsPocketScrollPosition], a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld [wItemsPocketCursor], a
ld b, $7
ld c, $3
@@ -765,7 +765,7 @@ BattlePack: ; 10493
call HandleScrollingMenu
ld a, [wMenuScrollPosition]
ld [wKeyItemsPocketScrollPosition], a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld [wKeyItemsPocketCursor], a
ld b, $3
ld c, $7
@@ -816,7 +816,7 @@ BattlePack: ; 10493
call HandleScrollingMenu
ld a, [wMenuScrollPosition]
ld [wBallsPocketScrollPosition], a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld [wBallsPocketCursor], a
ld b, $1
ld c, $5
@@ -841,11 +841,11 @@ TMHMSubmenu: ; 105dc (4:45dc)
.proceed
push de
call LoadMenuDataHeader
- call InterpretMenu2
+ call VerticalMenu
call ExitMenu
pop hl
ret c
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
call Pack_GetJumptablePointer
jp [hl]
@@ -1021,7 +1021,7 @@ DepositSellPack: ; 106be
call HandleScrollingMenu
ld a, [wMenuScrollPosition]
ld [wItemsPocketScrollPosition], a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld [wItemsPocketCursor], a
ret
@@ -1037,7 +1037,7 @@ DepositSellPack: ; 106be
call HandleScrollingMenu
ld a, [wMenuScrollPosition]
ld [wKeyItemsPocketScrollPosition], a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld [wKeyItemsPocketCursor], a
ret
@@ -1062,7 +1062,7 @@ DepositSellPack: ; 106be
call HandleScrollingMenu
ld a, [wMenuScrollPosition]
ld [wBallsPocketScrollPosition], a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld [wBallsPocketCursor], a
ret
diff --git a/engine/party_menu.asm b/engine/party_menu.asm
index 5d28eb949..4aa71ecf7 100644
--- a/engine/party_menu.asm
+++ b/engine/party_menu.asm
@@ -696,7 +696,7 @@ InitPartyMenuWithCancel: ; 50405
ld a, $1
.done
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
ld a, A_BUTTON | B_BUTTON
ld [wcfa8], a
ret
@@ -718,7 +718,7 @@ InitPartyMenuNoCancel: ; 0x5042d
.skip
ld a, $1
.done
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
ld a, A_BUTTON | B_BUTTON
ld [wcfa8], a
ret
@@ -738,12 +738,12 @@ PartyMenuAttributes: ; 5044f
PartyMenuSelect: ; 0x50457
; sets carry if exitted menu.
- call Function1bc9
+ call StaticMenuJoypad
call Function1bee
ld a, [PartyCount]
inc a
ld b, a
- ld a, [MenuSelection2] ; menu selection?
+ ld a, [wMenuCursorY] ; menu selection?
cp b
jr z, .exitmenu ; CANCEL
ld [wPartyMenuCursor], a
@@ -751,7 +751,7 @@ PartyMenuSelect: ; 0x50457
ld b, a
bit 1, b
jr nz, .exitmenu ; B button?
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
ld [CurPartyMon], a
ld c, a
diff --git a/engine/pokecenter_pc.asm b/engine/pokecenter_pc.asm
index 75f1daeec..8f18e8814 100755
--- a/engine/pokecenter_pc.asm
+++ b/engine/pokecenter_pc.asm
@@ -594,14 +594,14 @@ Function15985: ; 0x15985
call HandleScrollingMenu
ld a, [wMenuScrollPosition]
ld [wd0dd], a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld [wd0d7], a
pop af
ld [wSpriteUpdatesEnabled], a
ld a, [wd0e3]
and a
jr nz, .asm_159d8
- ld a, [wcf73]
+ ld a, [wMenuJoypad]
cp $2
jr z, .asm_15a06
cp $1
@@ -611,7 +611,7 @@ Function15985: ; 0x15985
jr .asm_159f8
.asm_159d8
- ld a, [wcf73]
+ ld a, [wMenuJoypad]
cp $2
jr z, .asm_159e9
cp $1
diff --git a/engine/printer.asm b/engine/printer.asm
index 5db2f9ff2..53eefc1aa 100755
--- a/engine/printer.asm
+++ b/engine/printer.asm
@@ -20,7 +20,7 @@ Function84022: ; 84022
ld a, [wJumptableIndex]
ld e, a
ld d, 0
- ld hl, Jumptable_84031
+ ld hl, .Jumptable
rept 2
add hl, de
endr
@@ -31,27 +31,28 @@ endr
; 84031
-Jumptable_84031: ; 84031 (21:4031)
- dw Function84077
- dw Function84143
- dw Function84120
- dw Function84099
- dw Function84180
- dw Function8412e
- dw Function840c5
- dw Function84180
- dw Function84120
- dw Function840de
- dw Function84180
- dw Function84120
- dw Function841a1
- dw Function84063
- dw Function8406d
- dw Function84120
- dw Function84103
- dw Function84071
- dw Function841b0
- dw Function841b3
+.Jumptable: ; 84031 (21:4031)
+ jumptable_start
+ jumptable Function84077
+ jumptable Function84143
+ jumptable Function84120
+ jumptable Function84099
+ jumptable Function84180
+ jumptable Function8412e
+ jumptable Function840c5
+ jumptable Function84180
+ jumptable Function84120
+ jumptable Function840de
+ jumptable Function84180
+ jumptable Function84120
+ jumptable Function841a1
+ jumptable Function84063
+ jumptable Function8406d
+ jumptable Function84120
+ jumptable Function84103
+ jumptable Function84071
+ jumptable Function841b0
+ jumptable Function841b3
Function84059: ; 84059 (21:4059)
@@ -427,12 +428,12 @@ Unknown_842d5: db 15, 0, $00, 0, 15, 0 ; unused
; 842db
-Function842db:: ; 842db
+_PrinterReceive:: ; 842db
ld a, [wc2d5]
add a
ld e, a
ld d, 0
- ld hl, Jumptable_842ea
+ ld hl, .Jumptable
add hl, de
ld a, [hli]
ld h, [hl]
@@ -441,39 +442,40 @@ Function842db:: ; 842db
; 842ea
-Jumptable_842ea: ; 842ea (21:42ea)
- dw Function8432f
- dw Function84330
- dw Function84339
- dw Function84343
- dw Function8434d
- dw Function84357
- dw Function84361
- dw Function8438b
- dw Function84395
- dw Function8439f
- dw Function843a8
- dw Function843b6
- dw Function84330
- dw Function843c0
- dw Function843c9
- dw Function843c9
- dw Function843c9
- dw Function843c0
- dw Function843c9
- dw Function8439f
- dw Function843a8
- dw Function843e6
- dw Function84330
- dw Function843d2
- dw Function843c9
- dw Function843c9
- dw Function843c9
- dw Function843d2
- dw Function843c9
- dw Function8439f
- dw Function843a8
- dw Function843b6
+.Jumptable: ; 842ea (21:42ea)
+ jumptable_start
+ jumptable Function8432f
+ jumptable Function84330
+ jumptable Function84339
+ jumptable Function84343
+ jumptable Function8434d
+ jumptable Function84357
+ jumptable Function84361
+ jumptable Function8438b
+ jumptable Function84395
+ jumptable Function8439f
+ jumptable Function843a8
+ jumptable Function843b6
+ jumptable Function84330
+ jumptable Function843c0
+ jumptable Function843c9
+ jumptable Function843c9
+ jumptable Function843c9
+ jumptable Function843c0
+ jumptable Function843c9
+ jumptable Function8439f
+ jumptable Function843a8
+ jumptable Function843e6
+ jumptable Function84330
+ jumptable Function843d2
+ jumptable Function843c9
+ jumptable Function843c9
+ jumptable Function843c9
+ jumptable Function843d2
+ jumptable Function843c9
+ jumptable Function8439f
+ jumptable Function843a8
+ jumptable Function843b6
Function8432a: ; 8432a (21:432a)
diff --git a/engine/rtc.asm b/engine/rtc.asm
new file mode 100755
index 000000000..0007e8225
--- /dev/null
+++ b/engine/rtc.asm
@@ -0,0 +1,210 @@
+StopRTC: ; Unreferenced???
+ ld a, SRAM_ENABLE
+ ld [MBC3SRamEnable], a
+ call LatchClock
+ ld a, RTC_DH
+ ld [MBC3SRamBank], a
+ ld a, [MBC3RTC]
+ set 6, a ; halt
+ ld [MBC3RTC], a
+ call CloseSRAM
+ ret
+; 14019
+
+StartRTC: ; 14019
+ ld a, SRAM_ENABLE
+ ld [MBC3SRamEnable], a
+ call LatchClock
+ ld a, RTC_DH
+ ld [MBC3SRamBank], a
+ ld a, [MBC3RTC]
+ res 6, a ; halt
+ ld [MBC3RTC], a
+ call CloseSRAM
+ ret
+; 14032
+
+GetTimeOfDay:: ; 14032
+; get time of day based on the current hour
+ ld a, [hHours] ; hour
+ ld hl, TimesOfDay
+
+.check
+; if we're within the given time period,
+; get the corresponding time of day
+ cp [hl]
+ jr c, .match
+; else, get the next entry
+rept 2
+ inc hl
+endr
+; try again
+ jr .check
+
+.match
+; get time of day
+ inc hl
+ ld a, [hl]
+ ld [TimeOfDay], a
+ ret
+; 14044
+
+TimesOfDay: ; 14044
+; hours for the time of day
+; 04-09 morn | 10-17 day | 18-03 nite
+ db 04, NITE
+ db 10, MORN
+ db 18, DAY
+ db 24, NITE
+ db -1, MORN
+; 1404e
+
+Unknown_1404e: ; Unreferenced
+ db 20, 2
+ db 40, 0
+ db 60, 1
+ db -1, 0
+; 14056
+
+StageRTCTimeForSave: ; 14056
+ call UpdateTime
+ ld hl, wRTC
+ ld a, [CurDay]
+ ld [hli], a
+ ld a, [hHours]
+ ld [hli], a
+ ld a, [hMinutes]
+ ld [hli], a
+ ld a, [hSeconds]
+ ld [hli], a
+ ret
+; 1406a
+
+SaveRTC: ; 1406a
+ ld a, $a
+ ld [MBC3SRamEnable], a
+ call LatchClock
+ ld hl, MBC3RTC
+ ld a, $c
+ ld [MBC3SRamBank], a
+ res 7, [hl]
+ ld a, BANK(sRTCStatusFlags)
+ ld [MBC3SRamBank], a
+ xor a
+ ld [sRTCStatusFlags], a
+ call CloseSRAM
+ ret
+; 14089
+
+StartClock:: ; 14089
+ call GetClock
+ call Function1409b
+ call FixDays
+ jr nc, .skip_set
+ ; bit 5: Day count exceeds 139
+ ; bit 6: Day count exceeds 255
+ call RecordRTCStatus ; set flag on sRTCStatusFlags
+
+.skip_set
+ call StartRTC
+ ret
+; 1409b
+
+Function1409b: ; 1409b
+ ld hl, hRTCDayHi
+ bit 7, [hl]
+ jr nz, .set_bit_7
+ bit 6, [hl]
+ jr nz, .set_bit_7
+ xor a
+ ret
+
+.set_bit_7
+ ; Day count exceeds 16383
+ ld a, %10000000
+ call RecordRTCStatus ; set bit 7 on sRTCStatusFlags
+ ret
+; 140ae
+
+Function140ae: ; 140ae
+ call CheckRTCStatus
+ ld c, a
+ and %11000000 ; Day count exceeded 255 or 16383
+ jr nz, .time_overflow
+
+ ld a, c
+ and %00100000 ; Day count exceeded 139
+ jr z, .dont_update
+
+ call UpdateTime
+ ld a, [wRTC + 0]
+ ld b, a
+ ld a, [CurDay]
+ cp b
+ jr c, .dont_update
+
+.time_overflow
+ callba ClearDailyTimers
+ callba Function170923
+; mobile
+ ld a, $5
+ call GetSRAMBank
+ ld a, [$aa8c]
+ inc a
+ ld [$aa8c], a
+ ld a, [$b2fa]
+ inc a
+ ld [$b2fa], a
+ call CloseSRAM
+ ret
+
+.dont_update
+ xor a
+ ret
+; 140ed
+
+Function140ed:: ; 140ed
+ call GetClock
+ call FixDays
+ ld hl, hRTCSeconds
+ ld de, StartSecond
+
+ ld a, [StringBuffer2 + 3]
+ sub [hl]
+ dec hl
+ jr nc, .okay_secs
+ add 60
+.okay_secs
+ ld [de], a
+ dec de
+
+ ld a, [StringBuffer2 + 2]
+ sbc [hl]
+ dec hl
+ jr nc, .okay_mins
+ add 60
+.okay_mins
+ ld [de], a
+ dec de
+
+ ld a, [StringBuffer2 + 1]
+ sbc [hl]
+ dec hl
+ jr nc, .okay_hrs
+ add 24
+.okay_hrs
+ ld [de], a
+ dec de
+
+ ld a, [StringBuffer2]
+ sbc [hl]
+ dec hl
+ jr nc, .okay_days
+ add 140
+ ld c, 7
+ call SimpleDivide
+
+.okay_days
+ ld [de], a
+ ret
+; 1412a
diff --git a/engine/save.asm b/engine/save.asm
index 9fcba708a..65faabb7a 100644
--- a/engine/save.asm
+++ b/engine/save.asm
@@ -213,7 +213,7 @@ SaveTheGame_yesorno: ; 14baf
call LoadMenuTextBox
lb bc, 0, 7
call PlaceYesNoBox
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
call WriteBackup
push af
diff --git a/engine/scripting.asm b/engine/scripting.asm
index d85cabe05..83d4e8a04 100644
--- a/engine/scripting.asm
+++ b/engine/scripting.asm
@@ -160,8 +160,8 @@ ENDC
dw Script_buttonsound ; 55
dw Script_pokepic ; 56
dw Script_closepokepic ; 57
- dw Script_interpretmenu ; 58
- dw Script_interpretmenu2 ; 59
+ dw Script__2dmenu ; 58
+ dw Script_verticalmenu ; 59
dw Script_loadpikachudata ; 5a
dw Script_randomwildmon ; 5b
dw Script_loadmemtrainer ; 5c
@@ -510,13 +510,13 @@ Script_closepokepic: ; 96f29
ret
; 96f30
-Script_interpretmenu2: ; 96f30
+Script_verticalmenu: ; 96f30
; script command 0x59
ld a, [ScriptBank]
- ld hl, InterpretMenu2
+ ld hl, VerticalMenu
rst FarCall
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
jr nc, .ok
xor a
.ok
@@ -524,11 +524,11 @@ Script_interpretmenu2: ; 96f30
ret
; 96f41
-Script_interpretmenu: ; 96f41
+Script__2dmenu: ; 96f41
; script command 0x58
ld a, [ScriptBank]
- ld hl, InterpretMenu
+ ld hl, _2DMenu
rst FarCall
ld a, [wMenuCursorBuffer]
jr nc, .ok
diff --git a/engine/slot_machine.asm b/engine/slot_machine.asm
index b5fceb0b6..91d8b3035 100755
--- a/engine/slot_machine.asm
+++ b/engine/slot_machine.asm
@@ -1714,10 +1714,10 @@ Slots_AskBet: ; 9307c (24:707c)
call PrintText
ld hl, .MenuDataHeader
call LoadMenuDataHeader
- call InterpretMenu2
+ call VerticalMenu
call WriteBackup
ret c
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld b, a
ld a, 4
sub b
@@ -1803,7 +1803,7 @@ Slots_AskPlayAgain: ; 930e9 (24:70e9)
call LoadMenuTextBox
lb bc, 14, 12
call PlaceYesNoBox
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
call WriteBackup
and a
diff --git a/engine/sprite_anims.asm b/engine/sprite_anims.asm
index 54af5db37..79faa7606 100755
--- a/engine/sprite_anims.asm
+++ b/engine/sprite_anims.asm
@@ -57,7 +57,7 @@ endr
ret
.one: ; 8d2a2 (23:52a2)
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld hl, SPRITEANIMSTRUCT_INDEX
add hl, bc
@@ -116,7 +116,7 @@ endr
ret
.three: ; 8d2ea (23:52ea)
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld hl, SPRITEANIMSTRUCT_INDEX
add hl, bc
diff --git a/engine/startmenu.asm b/engine/startmenu.asm
index b9f5462d7..546aff1d9 100755
--- a/engine/startmenu.asm
+++ b/engine/startmenu.asm
@@ -93,7 +93,7 @@ endr
.loop
call .PrintMenuAccount
call Function1f1a
- ld a, [wcf73]
+ ld a, [wMenuJoypad]
cp B_BUTTON
jr z, .b
cp A_BUTTON
@@ -799,7 +799,7 @@ GiveTakePartyMonItem: ; 12b60
ld hl, GiveTakeItemMenuData
call LoadMenuDataHeader
- call InterpretMenu2
+ call VerticalMenu
call ExitMenu
jr c, .cancel
@@ -808,7 +808,7 @@ GiveTakePartyMonItem: ; 12b60
ld de, wd050_MonNick
ld bc, PKMN_NAME_LENGTH
call CopyBytes
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
cp 1
jr nz, .take
@@ -1109,12 +1109,12 @@ MonMailAction: ; 12d45
; Show the READ/TAKE/QUIT menu.
ld hl, .MenuDataHeader
call LoadMenuDataHeader
- call InterpretMenu2
+ call VerticalMenu
call ExitMenu
; Interpret the menu.
jp c, .done
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
cp $1
jr z, .read
cp $2
@@ -1483,7 +1483,7 @@ ChooseMoveToDelete: ; 12f5b
jr .asm_12f93
.asm_12f86: ; 12f86
- call Function1bd3
+ call ScrollingMenuJoypad
bit 1, a
jp nz, .asm_12f9f
bit 0, a
@@ -1551,7 +1551,7 @@ MoveScreenLoop: ; 12fd5
jr .skip_joy
.joy_loop
- call Function1bd3
+ call ScrollingMenuJoypad
bit 1, a
jp nz, .b_button
bit 0, a
@@ -1589,7 +1589,7 @@ MoveScreenLoop: ; 12fd5
jp z, .exit
ld a, [wMoveSwapBuffer]
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
xor a
ld [wMoveSwapBuffer], a
hlcoord 1, 2
@@ -1669,7 +1669,7 @@ MoveScreenLoop: ; 12fd5
ld a, [wMoveSwapBuffer]
and a
jr nz, .place_move
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld [wMoveSwapBuffer], a
call Function1bee
jp .moving_move
@@ -1716,7 +1716,7 @@ MoveScreenLoop: ; 12fd5
.copy_move: ; 1313a
push hl
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
ld c, a
ld b, $0
@@ -1834,7 +1834,7 @@ PrepareToPlaceMoveData: ; 13235
ld bc, PARTYMON_STRUCT_LENGTH
ld a, [CurPartyMon]
call AddNTimes
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
ld c, a
ld b, $0
diff --git a/engine/stats_screen.asm b/engine/stats_screen.asm
index 84e1cf9ea..fe5b4664b 100755
--- a/engine/stats_screen.asm
+++ b/engine/stats_screen.asm
@@ -253,10 +253,10 @@ Function4de2c: ; 4de2c (13:5e2c)
pop bc
pop de
pop hl
- ld a, [wcf73]
+ ld a, [wMenuJoypad]
and $c0
jr nz, .set_carry
- ld a, [wcf73]
+ ld a, [wMenuJoypad]
jr .clear_flags
.notbreedmon
diff --git a/engine/std_scripts.asm b/engine/std_scripts.asm
index f0fae969b..c7e368c7c 100644
--- a/engine/std_scripts.asm
+++ b/engine/std_scripts.asm
@@ -1811,7 +1811,7 @@ CoinVendor_IntroScript: ; 0xbcde0
CoinVendor_SellCoinsMenuScript: ; 0xbcde4
special Special_DisplayMoneyAndCoinBalance
loadmenudata CoinVendor_MenuDataHeader
- interpretmenu2
+ verticalmenu
writebackup
if_equal $1, CoinVendor_Buy50CoinsScript
if_equal $2, CoinVendor_Buy500CoinsScript
diff --git a/engine/tile_events.asm b/engine/tile_events.asm
new file mode 100755
index 000000000..8a6f2bc66
--- /dev/null
+++ b/engine/tile_events.asm
@@ -0,0 +1,110 @@
+CheckWarpCollision:: ; 1499a
+; Is this tile a warp?
+ ld a, [PlayerNextTile]
+ cp $60
+ jr z, .warp
+ cp $68
+ jr z, .warp
+ and $f0
+ cp $70
+ jr z, .warp
+ and a
+ ret
+
+.warp
+ scf
+ ret
+; 149af
+
+CheckDirectionalWarp:: ; 149af
+; If this is a directional warp, clear carry (press the designated button to warp).
+; Else, set carry (immediate warp).
+ ld a, [PlayerNextTile]
+ cp $70 ; Warp on down
+ jr z, .not_warp
+ cp $76 ; Warp on left
+ jr z, .not_warp
+ cp $78 ; Warp on up
+ jr z, .not_warp
+ cp $7e ; Warp on right
+ jr z, .not_warp
+ scf
+ ret
+
+.not_warp
+ xor a
+ ret
+; 149c6
+
+CheckWarpFacingDown: ; 149c6
+ ld de, 1
+ ld hl, .blocks
+ ld a, [PlayerNextTile]
+ call IsInArray
+ ret
+; 149d3
+
+.blocks: ; 149d3
+ db $71 ; door
+ db $79
+ db $7a ; stairs
+ db $73
+ db $7b ; cave entrance
+ db $74
+ db $7c ; warp pad
+ db $75
+ db $7d
+ db -1
+; 149dd
+
+CheckGrassCollision:: ; 149dd
+ ld a, [PlayerNextTile]
+ ld hl, .blocks
+ ld de, 1
+ call IsInArray
+ ret
+; 149ea
+
+.blocks: ; 149ea
+ db $08
+ db $18 ; tall grass
+ db $14 ; tall grass
+ db $28
+ db $29
+ db $48
+ db $49
+ db $4a
+ db $4b
+ db $4c
+ db -1
+; 149f5
+
+CheckCutCollision: ; 149f5
+ ld a, c
+ ld hl, .blocks
+ ld de, 1
+ call IsInArray
+ ret
+; 14a00
+
+.blocks: ; 14a00
+ db $12 ; cut tree
+ db $1a ; cut tree
+ db $10 ; tall grass
+ db $18 ; tall grass
+ db $14 ; tall grass
+ db $1c ; tall grass
+ db -1
+; 14a07
+
+Function14a07:: ; 14a07
+ ld a, [PlayerNextTile]
+ ld de, $1f
+ cp $71 ; door
+ ret z
+ ld de, $13
+ cp $7c ; warp pad
+ ret z
+ ld de, $23
+ ret
+; 14a1a
diff --git a/engine/tmhm2.asm b/engine/tmhm2.asm
index d9e05fb8c..9834fba7f 100755
--- a/engine/tmhm2.asm
+++ b/engine/tmhm2.asm
@@ -220,16 +220,16 @@ TMHM_PocketLoop: ; 2c8d3 (b:48d3)
ld [wcfa8], a
ld a, [wTMHMPocketCursor]
inc a
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
ld a, $1
- ld [wcfaa], a
+ ld [wMenuCursorX], a
jr TMHM_ShowTMMoveDescription
TMHM_JoypadLoop: ; 2c915 (b:4915)
call TMHM_DisplayPocketItems
- call Function1bc9
+ call StaticMenuJoypad
ld b, a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
ld [wTMHMPocketCursor], a
xor a
@@ -268,7 +268,7 @@ TMHM_ShowTMMoveDescription: ; 2c946 (b:4946)
TMHM_ChooseTMorHM: ; 2c974 (b:4974)
call TMHM_PlaySFX_ReadText2
call CountTMsHMs ; This stores the count to wd265.
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
ld b, a
ld a, [wTMHMPocketScrollPosition]
@@ -279,7 +279,7 @@ TMHM_ChooseTMorHM: ; 2c974 (b:4974)
jr z, _TMHM_ExitPack ; our cursor was hovering over CANCEL
TMHM_CheckHoveringOverCancel: ; 2c98a (b:498a)
call TMHM_GetCurrentPocketPosition
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld b, a
.loop
inc c