summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-07-14 11:29:23 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-07-14 11:29:23 -0400
commit939bd127bba0ba3af5b94a288ab47a6e374adfe2 (patch)
treeaf573b5e11dc940c31bfbdc928dd9b56938ac4d6
parent31c26e862a3d775c2a78fac646c614efe96033c0 (diff)
parent53b950019aca8896d70c4d5e4f9e2a1d5143e489 (diff)
Merge branch 'master' into battle_records
-rw-r--r--asm/berry_crush_3.s8
-rw-r--r--asm/berry_pouch.s14
-rw-r--r--asm/clear_save_data_screen.s4
-rw-r--r--asm/field_specials.s6
-rw-r--r--asm/hall_of_fame.s12
-rw-r--r--asm/item_menu.s6
-rw-r--r--asm/link_rfu_3.s2
-rw-r--r--asm/mailbox_pc.s2
-rw-r--r--asm/menu.s3455
-rw-r--r--asm/party_menu.s36
-rw-r--r--asm/player_pc.s28
-rw-r--r--asm/pokemon_jump_2.s2
-rw-r--r--asm/pokemon_special_anim.s2
-rw-r--r--asm/pokemon_storage_system.s28
-rw-r--r--asm/script_menu.s26
-rw-r--r--asm/shop.s18
-rw-r--r--asm/slot_machine.s4
-rw-r--r--asm/start_menu.s14
-rw-r--r--asm/trade.s6
-rw-r--r--asm/union_room_chat.s18
-rw-r--r--data/data_83FECCC.s4
-rw-r--r--include/menu.h71
-rw-r--r--include/menu_helpers.h25
-rw-r--r--include/new_menu_helpers.h60
-rw-r--r--include/palette.h2
-rw-r--r--include/sound.h1
-rw-r--r--include/strings.h2
-rw-r--r--ld_script.txt3
-rw-r--r--src/bag.c11
-rw-r--r--src/berry_powder.c10
-rw-r--r--src/buy_menu_helpers.c4
-rw-r--r--src/coins.c13
-rw-r--r--src/diploma.c8
-rw-r--r--src/fldeff_softboiled.c3
-rw-r--r--src/fldeff_sweetscent.c10
-rw-r--r--src/item_pc.c20
-rw-r--r--src/menu.c878
-rw-r--r--src/menu2.c2
-rw-r--r--src/menu_helpers.c8
-rw-r--r--src/mevent_8145654.c1
-rw-r--r--src/money.c11
-rw-r--r--src/new_menu_helpers.c8
-rw-r--r--src/oak_speech.c56
-rw-r--r--src/quest_log.c1
-rw-r--r--src/sound.c2
-rw-r--r--src/tm_case.c36
-rw-r--r--src/trainer_tower.c2
-rw-r--r--sym_ewram.txt18
48 files changed, 1185 insertions, 3776 deletions
diff --git a/asm/berry_crush_3.s b/asm/berry_crush_3.s
index 581b84793..b10f29f8d 100644
--- a/asm/berry_crush_3.s
+++ b/asm/berry_crush_3.s
@@ -2102,7 +2102,7 @@ _0814E6E0:
movs r1, 0
adds r2, r4, 0
movs r3, 0xD
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
b _0814E7F8
.align 2, 0
_0814E700: .4byte 0x0000021d
@@ -2246,7 +2246,7 @@ sub_814E80C: @ 814E80C
adds r5, r4, r0
ldrb r0, [r5]
movs r1, 0x1
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r5]
bl RemoveWindow
adds r0, r4, 0
@@ -2314,7 +2314,7 @@ _0814E876:
movs r1, 0
adds r2, r4, 0
movs r3, 0xD
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
b _0814EA66
.align 2, 0
_0814E8A8: .4byte gUnknown_846E3F0
@@ -2499,7 +2499,7 @@ _0814EA3C: .4byte gMain
_0814EA40:
ldrb r0, [r7, 0x2]
movs r1, 0x1
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r7, 0x2]
bl ClearWindowTilemap
ldrb r0, [r7, 0x2]
diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s
index 8eb127d52..60d6873e6 100644
--- a/asm/berry_pouch.s
+++ b/asm/berry_pouch.s
@@ -1974,7 +1974,7 @@ _0813DC86:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0x6
bl sub_813EA08
adds r4, r0, 0
@@ -2051,7 +2051,7 @@ sub_813DDA0: @ 813DDA0
lsrs r0, 24
cmp r0, 0x1
beq _0813DDFE
- bl ProcessMenuInputNoWrapAround
+ bl Menu_ProcessInputNoWrapAround
lsls r0, 24
asrs r4, r0, 24
movs r0, 0x2
@@ -3509,7 +3509,7 @@ _0813EA38:
movs r1, 0
movs r2, 0xA
movs r3, 0xC
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
b _0813EA60
.align 2, 0
_0813EA4C: .4byte gUnknown_203F38C
@@ -3519,7 +3519,7 @@ _0813EA54:
movs r1, 0
movs r2, 0x1
movs r3, 0xE
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
_0813EA60:
movs r0, 0x2
bl ScheduleBgCopyTilemapToVram
@@ -3545,7 +3545,7 @@ sub_813EA78: @ 813EA78
movs r1, 0
movs r2, 0x1
movs r3, 0xE
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
pop {r0}
bx r0
.align 2, 0
@@ -3562,7 +3562,7 @@ sub_813EA98: @ 813EA98
adds r4, r0
ldrb r0, [r4]
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4]
bl ClearWindowTilemap
ldrb r0, [r4]
@@ -3589,7 +3589,7 @@ sub_813EACC: @ 813EACC
cmp r0, 0xFF
beq _0813EB04
movs r1, 0
- bl ClearMenuWindow_BorderThickness2
+ bl ClearDialogWindowAndFrameToTransparent
ldrb r0, [r4]
bl ClearWindowTilemap
ldrb r0, [r4]
diff --git a/asm/clear_save_data_screen.s b/asm/clear_save_data_screen.s
index ccae18c34..f6cd11410 100644
--- a/asm/clear_save_data_screen.s
+++ b/asm/clear_save_data_screen.s
@@ -120,7 +120,7 @@ _080F5660:
movs r1, 0x1
movs r2, 0x1
movs r3, 0xF
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
movs r0, 0x1
str r0, [sp]
str r0, [sp, 0x4]
@@ -304,7 +304,7 @@ _080F57D4:
lsrs r4, r0, 24
cmp r4, 0
bne _080F57FE
- bl sub_81100E8
+ bl DestroyYesNoMenu
adds r0, r6, 0
bl DestroyTask
bl FreeAllWindowBuffers
diff --git a/asm/field_specials.s b/asm/field_specials.s
index b2b716a8f..4c37e0638 100644
--- a/asm/field_specials.s
+++ b/asm/field_specials.s
@@ -2076,7 +2076,7 @@ sub_80CB580: @ 80CB580
movs r1, 0
adds r2, r5, 0
movs r3, 0xD
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
ldrb r0, [r4]
ldr r2, _080CB630 @ =gUnknown_8418075
movs r1, 0x2
@@ -2141,7 +2141,7 @@ sub_80CB63C: @ 80CB63C
ldr r4, _080CB654 @ =gUnknown_2039A0C
ldrb r0, [r4]
movs r1, 0x1
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4]
bl RemoveWindow
pop {r4}
@@ -2862,7 +2862,7 @@ sub_80CBBAC: @ 80CBBAC
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldrh r0, [r4, 0x22]
lsls r0, 24
lsrs r0, 24
diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s
index 4d861b902..19ff62664 100644
--- a/asm/hall_of_fame.s
+++ b/asm/hall_of_fame.s
@@ -1607,7 +1607,7 @@ sub_80F2AA4: @ 80F2AA4
movs r1, 0x1E
movs r2, 0
movs r3, 0xC
- bl CreateWindow_SnapRight_StdPal
+ bl CreateTopBarWindowLoadPalette
movs r0, 0x3
bl Save_LoadGameData
lsls r0, 24
@@ -1894,7 +1894,7 @@ _080F2CB4:
adds r0, r5, 0
movs r2, 0
movs r3, 0
- bl Menu_PrintHelpSystemUIHeader
+ bl TopBarWindowPrintTwoStrings
b _080F2D34
.align 2, 0
_080F2D08: .4byte 0xffff0000
@@ -1911,7 +1911,7 @@ _080F2D24:
adds r0, r5, 0
movs r2, 0
movs r3, 0
- bl Menu_PrintHelpSystemUIHeader
+ bl TopBarWindowPrintTwoStrings
_080F2D34:
ldr r0, _080F2D58 @ =gTasks
ldr r1, [sp, 0x14]
@@ -2298,7 +2298,7 @@ sub_80F3030: @ 80F3030
bl HideBg
movs r0, 0x3
bl HideBg
- bl sub_810F740
+ bl DestroyTopBarWindow
bl FreeAllWindowBuffers
movs r0, 0x1
bl UnsetBgTilemapBuffer
@@ -2342,7 +2342,7 @@ sub_80F30A4: @ 80F30A4
ldr r0, _080F30FC @ =gText_ABUTTONExit
movs r1, 0x8
movs r2, 0x1
- bl PrintTextOnRightSnappedWindow
+ bl TopBarWindowPrintString
movs r0, 0
movs r1, 0
bl DrawDialogueFrame
@@ -2750,7 +2750,7 @@ sub_80F33DC: @ 80F33DC
movs r0, 0x1
movs r1, 0
movs r3, 0xD
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
movs r7, 0
str r7, [sp]
str r7, [sp, 0x4]
diff --git a/asm/item_menu.s b/asm/item_menu.s
index 8d01691a5..e85f63872 100644
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -3715,7 +3715,7 @@ _08109AD4:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0x6
movs r1, 0
bl sub_810B9DC
@@ -3791,7 +3791,7 @@ sub_8109BE4: @ 8109BE4
lsrs r0, 24
cmp r0, 0x1
beq _08109C42
- bl ProcessMenuInputNoWrapAround
+ bl Menu_ProcessInputNoWrapAround
lsls r0, 24
asrs r4, r0, 24
movs r0, 0x2
@@ -6507,7 +6507,7 @@ _0810B290:
movs r0, 0x5
bl PlaySE
movs r0, 0x1
- bl MoveMenuCursorNoWrapAround
+ bl Menu_MoveCursorNoWrapAround
b _0810B36C
_0810B29E:
movs r0, 0x5
diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s
index 3124c8d56..17d761a3d 100644
--- a/asm/link_rfu_3.s
+++ b/asm/link_rfu_3.s
@@ -8586,7 +8586,7 @@ _0811A168:
_0811A174:
cmp r5, 0
beq _0811A186
- bl sub_81100E8
+ bl DestroyYesNoMenu
movs r0, 0
strb r0, [r4]
movs r0, 0x3
diff --git a/asm/mailbox_pc.s b/asm/mailbox_pc.s
index e41fb23c1..7e792681f 100644
--- a/asm/mailbox_pc.s
+++ b/asm/mailbox_pc.s
@@ -81,7 +81,7 @@ sub_810EBE0: @ 810EBE0
adds r4, r0
ldrb r0, [r4]
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4]
bl ClearWindowTilemap
ldrb r0, [r4]
diff --git a/asm/menu.s b/asm/menu.s
deleted file mode 100644
index c8e823fc1..000000000
--- a/asm/menu.s
+++ /dev/null
@@ -1,3455 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start DrawDialogFrameWithCustomTileAndPalette
-DrawDialogFrameWithCustomTileAndPalette: @ 810EDC4
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0810EE00 @ =gUnknown_203ADF0
- strh r2, [r0]
- ldr r0, _0810EE04 @ =gUnknown_203ADF2
- strb r3, [r0]
- ldr r1, _0810EE08 @ =sub_810EE5C
- adds r0, r5, 0
- bl CallWindowFunction
- adds r0, r5, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- adds r0, r5, 0
- bl PutWindowTilemap
- cmp r4, 0x1
- bne _0810EDFA
- adds r0, r5, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_0810EDFA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810EE00: .4byte gUnknown_203ADF0
-_0810EE04: .4byte gUnknown_203ADF2
-_0810EE08: .4byte sub_810EE5C
- thumb_func_end DrawDialogFrameWithCustomTileAndPalette
-
- thumb_func_start sub_810EE0C
-sub_810EE0C: @ 810EE0C
- push {r4-r6,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0810EE50 @ =gUnknown_203ADF0
- strh r2, [r0]
- ldr r5, _0810EE54 @ =gUnknown_203ADF2
- adds r0, r6, 0
- movs r1, 0x5
- bl GetWindowAttribute
- strb r0, [r5]
- ldr r1, _0810EE58 @ =sub_810EE5C
- adds r0, r6, 0
- bl CallWindowFunction
- adds r0, r6, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- adds r0, r6, 0
- bl PutWindowTilemap
- cmp r4, 0x1
- bne _0810EE4A
- adds r0, r6, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_0810EE4A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810EE50: .4byte gUnknown_203ADF0
-_0810EE54: .4byte gUnknown_203ADF2
-_0810EE58: .4byte sub_810EE5C
- thumb_func_end sub_810EE0C
-
- thumb_func_start sub_810EE5C
-sub_810EE5C: @ 810EE5C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- adds r6, r0, 0
- adds r5, r2, 0
- lsls r6, 24
- lsrs r6, 24
- lsls r0, r1, 24
- lsls r5, 24
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x10]
- ldr r1, _0810F228 @ =gUnknown_203ADF0
- mov r9, r1
- ldrh r1, [r1]
- lsrs r2, r0, 24
- str r2, [sp, 0xC]
- movs r3, 0xFE
- lsls r3, 24
- adds r2, r0, r3
- lsrs r2, 24
- str r2, [sp, 0x14]
- lsrs r0, r5, 24
- mov r10, r0
- movs r2, 0xFF
- lsls r2, 24
- adds r5, r2
- lsrs r5, 24
- movs r4, 0x1
- str r4, [sp]
- str r4, [sp, 0x4]
- ldr r3, _0810F22C @ =gUnknown_203ADF2
- mov r8, r3
- ldrb r0, [r3]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x14]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- mov r0, r9
- ldrh r1, [r0]
- adds r1, 0x1
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [sp, 0xC]
- subs r0, 0x1
- lsls r2, r0, 24
- lsrs r2, 24
- str r2, [sp, 0x18]
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x18]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0x2
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [sp, 0x10]
- str r0, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0xC]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0x3
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [sp, 0xC]
- ldr r2, [sp, 0x10]
- adds r7, r0, r2
- lsls r2, r7, 24
- lsrs r2, 24
- str r2, [sp, 0x1C]
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r3, r8
- ldrb r0, [r3]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- mov r0, r9
- ldrh r1, [r0]
- adds r1, 0x4
- lsls r1, 16
- lsrs r1, 16
- adds r0, r7, 0x1
- lsls r2, r0, 24
- lsrs r7, r2, 24
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- adds r2, r7, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0x5
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x14]
- mov r3, r10
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0x6
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x18]
- mov r3, r10
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0x8
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x1C]
- mov r3, r10
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0x9
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- adds r2, r7, 0
- mov r3, r10
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0xA
- lsls r1, 16
- lsrs r1, 16
- mov r5, r10
- adds r5, 0x1
- lsls r5, 24
- lsrs r5, 24
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x14]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0xB
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x18]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0xC
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x1C]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0xD
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- adds r2, r7, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, _0810F230 @ =0x0000080a
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- mov r5, r10
- adds r5, 0x2
- lsls r5, 24
- lsrs r5, 24
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x14]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, _0810F234 @ =0x0000080b
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x18]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, _0810F238 @ =0x0000080c
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x1C]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, _0810F23C @ =0x0000080d
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- adds r2, r7, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, _0810F240 @ =0x00000805
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- mov r5, r10
- adds r5, 0x3
- lsls r5, 24
- lsrs r5, 24
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x14]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, _0810F244 @ =0x00000806
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x18]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, _0810F248 @ =0x00000808
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x1C]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, _0810F24C @ =0x00000809
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- adds r2, r7, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- movs r3, 0x80
- lsls r3, 4
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r2, 0x4
- add r10, r2
- mov r3, r10
- lsls r3, 24
- lsrs r3, 24
- mov r10, r3
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x14]
- bl FillBgTilemapBufferRect
- ldr r3, _0810F250 @ =0x00000801
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x18]
- mov r3, r10
- bl FillBgTilemapBufferRect
- ldr r3, _0810F254 @ =0x00000802
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- ldr r2, [sp, 0x10]
- str r2, [sp]
- str r4, [sp, 0x4]
- mov r3, r8
- ldrb r0, [r3]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0xC]
- mov r3, r10
- bl FillBgTilemapBufferRect
- ldr r0, _0810F258 @ =0x00000803
- adds r1, r0, 0
- mov r2, r9
- ldrh r2, [r2]
- adds r1, r2
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r3, r8
- ldrb r0, [r3]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x1C]
- mov r3, r10
- bl FillBgTilemapBufferRect
- ldr r0, _0810F25C @ =0x00000804
- adds r1, r0, 0
- mov r2, r9
- ldrh r2, [r2]
- adds r1, r2
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r3, r8
- ldrb r0, [r3]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- adds r2, r7, 0
- mov r3, r10
- bl FillBgTilemapBufferRect
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F228: .4byte gUnknown_203ADF0
-_0810F22C: .4byte gUnknown_203ADF2
-_0810F230: .4byte 0x0000080a
-_0810F234: .4byte 0x0000080b
-_0810F238: .4byte 0x0000080c
-_0810F23C: .4byte 0x0000080d
-_0810F240: .4byte 0x00000805
-_0810F244: .4byte 0x00000806
-_0810F248: .4byte 0x00000808
-_0810F24C: .4byte 0x00000809
-_0810F250: .4byte 0x00000801
-_0810F254: .4byte 0x00000802
-_0810F258: .4byte 0x00000803
-_0810F25C: .4byte 0x00000804
- thumb_func_end sub_810EE5C
-
- thumb_func_start ClearMenuWindow_BorderThickness2
-ClearMenuWindow_BorderThickness2: @ 810F260
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _0810F294 @ =sub_810F298
- adds r0, r5, 0
- bl CallWindowFunction
- adds r0, r5, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- adds r0, r5, 0
- bl ClearWindowTilemap
- cmp r4, 0x1
- bne _0810F28E
- adds r0, r5, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_0810F28E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F294: .4byte sub_810F298
- thumb_func_end ClearMenuWindow_BorderThickness2
-
- thumb_func_start sub_810F298
-sub_810F298: @ 810F298
- push {r4,r5,lr}
- sub sp, 0xC
- adds r4, r1, 0
- adds r5, r2, 0
- ldr r1, [sp, 0x18]
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsls r5, 24
- lsls r3, 24
- lsls r1, 24
- movs r2, 0xFE
- lsls r2, 24
- adds r4, r2
- lsrs r4, 24
- movs r2, 0xFF
- lsls r2, 24
- adds r5, r2
- lsrs r5, 24
- movs r2, 0x80
- lsls r2, 19
- adds r3, r2
- lsrs r3, 24
- str r3, [sp]
- movs r2, 0x80
- lsls r2, 18
- adds r1, r2
- lsrs r1, 24
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- adds r2, r4, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_810F298
-
- thumb_func_start SetWindowBorderStyle
-SetWindowBorderStyle: @ 810F2E8
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0810F324 @ =gUnknown_203ADF0
- strh r2, [r0]
- ldr r0, _0810F328 @ =gUnknown_203ADF2
- strb r3, [r0]
- ldr r1, _0810F32C @ =DrawWindowBorder
- adds r0, r5, 0
- bl CallWindowFunction
- adds r0, r5, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- adds r0, r5, 0
- bl PutWindowTilemap
- cmp r4, 0x1
- bne _0810F31E
- adds r0, r5, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_0810F31E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F324: .4byte gUnknown_203ADF0
-_0810F328: .4byte gUnknown_203ADF2
-_0810F32C: .4byte DrawWindowBorder
- thumb_func_end SetWindowBorderStyle
-
- thumb_func_start sub_810F330
-sub_810F330: @ 810F330
- push {r4-r6,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0810F374 @ =gUnknown_203ADF0
- strh r2, [r0]
- ldr r5, _0810F378 @ =gUnknown_203ADF2
- adds r0, r6, 0
- movs r1, 0x5
- bl GetWindowAttribute
- strb r0, [r5]
- ldr r1, _0810F37C @ =DrawWindowBorder
- adds r0, r6, 0
- bl CallWindowFunction
- adds r0, r6, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- adds r0, r6, 0
- bl PutWindowTilemap
- cmp r4, 0x1
- bne _0810F36E
- adds r0, r6, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_0810F36E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F374: .4byte gUnknown_203ADF0
-_0810F378: .4byte gUnknown_203ADF2
-_0810F37C: .4byte DrawWindowBorder
- thumb_func_end sub_810F330
-
- thumb_func_start DrawWindowBorder
-DrawWindowBorder: @ 810F380
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- mov r9, r0
- adds r6, r1, 0
- adds r4, r2, 0
- ldr r0, [sp, 0x38]
- mov r1, r9
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r6, 24
- lsls r4, 24
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x10]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x14]
- ldr r2, _0810F4D0 @ =gUnknown_203ADF0
- ldrh r1, [r2]
- lsrs r0, r6, 24
- str r0, [sp, 0xC]
- movs r2, 0xFF
- lsls r2, 24
- adds r6, r2
- lsrs r6, 24
- lsrs r0, r4, 24
- mov r8, r0
- adds r4, r2
- lsrs r4, 24
- movs r5, 0x1
- str r5, [sp]
- str r5, [sp, 0x4]
- ldr r7, _0810F4D4 @ =gUnknown_203ADF2
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- ldr r2, _0810F4D0 @ =gUnknown_203ADF0
- ldrh r1, [r2]
- adds r1, 0x1
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [sp, 0x10]
- str r0, [sp]
- str r5, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- ldr r2, [sp, 0xC]
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- ldr r2, _0810F4D0 @ =gUnknown_203ADF0
- ldrh r1, [r2]
- adds r1, 0x2
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [sp, 0xC]
- ldr r2, [sp, 0x10]
- adds r0, r2
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- str r5, [sp]
- str r5, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- mov r2, r10
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- ldr r0, _0810F4D0 @ =gUnknown_203ADF0
- ldrh r1, [r0]
- adds r1, 0x3
- lsls r1, 16
- lsrs r1, 16
- str r5, [sp]
- ldr r2, [sp, 0x14]
- str r2, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- adds r2, r6, 0
- mov r3, r8
- bl FillBgTilemapBufferRect
- ldr r0, _0810F4D0 @ =gUnknown_203ADF0
- ldrh r1, [r0]
- adds r1, 0x5
- lsls r1, 16
- lsrs r1, 16
- str r5, [sp]
- ldr r2, [sp, 0x14]
- str r2, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- mov r2, r10
- mov r3, r8
- bl FillBgTilemapBufferRect
- ldr r0, _0810F4D0 @ =gUnknown_203ADF0
- ldrh r1, [r0]
- adds r1, 0x6
- lsls r1, 16
- lsrs r1, 16
- ldr r2, [sp, 0x14]
- add r8, r2
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- str r5, [sp]
- str r5, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- adds r2, r6, 0
- mov r3, r8
- bl FillBgTilemapBufferRect
- ldr r2, _0810F4D0 @ =gUnknown_203ADF0
- ldrh r1, [r2]
- adds r1, 0x7
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [sp, 0x10]
- str r0, [sp]
- str r5, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- ldr r2, [sp, 0xC]
- mov r3, r8
- bl FillBgTilemapBufferRect
- ldr r2, _0810F4D0 @ =gUnknown_203ADF0
- ldrh r1, [r2]
- adds r1, 0x8
- lsls r1, 16
- lsrs r1, 16
- str r5, [sp]
- str r5, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- mov r2, r10
- mov r3, r8
- bl FillBgTilemapBufferRect
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F4D0: .4byte gUnknown_203ADF0
-_0810F4D4: .4byte gUnknown_203ADF2
- thumb_func_end DrawWindowBorder
-
- thumb_func_start ClearMenuWindow
-ClearMenuWindow: @ 810F4D8
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _0810F50C @ =sub_810F510
- adds r0, r5, 0
- bl CallWindowFunction
- adds r0, r5, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- adds r0, r5, 0
- bl ClearWindowTilemap
- cmp r4, 0x1
- bne _0810F506
- adds r0, r5, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_0810F506:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F50C: .4byte sub_810F510
- thumb_func_end ClearMenuWindow
-
- thumb_func_start sub_810F510
-sub_810F510: @ 810F510
- push {r4,r5,lr}
- sub sp, 0xC
- adds r4, r1, 0
- adds r5, r2, 0
- ldr r1, [sp, 0x18]
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsls r5, 24
- lsls r3, 24
- lsls r1, 24
- movs r2, 0xFF
- lsls r2, 24
- adds r4, r2
- lsrs r4, 24
- adds r5, r2
- lsrs r5, 24
- movs r2, 0x80
- lsls r2, 18
- adds r3, r2
- lsrs r3, 24
- str r3, [sp]
- adds r1, r2
- lsrs r1, 24
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- adds r2, r4, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_810F510
-
- thumb_func_start CreateWindow_SnapRight_StdPal
-CreateWindow_SnapRight_StdPal: @ 810F558
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- ldr r4, [sp, 0x20]
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- lsls r3, 24
- lsrs r5, r3, 24
- lsls r4, 16
- lsrs r4, 16
- mov r0, sp
- movs r1, 0
- movs r2, 0x8
- bl memset
- cmp r6, 0x3
- bls _0810F58E
- movs r1, 0
- mov r0, sp
- strb r1, [r0]
- b _0810F592
-_0810F58E:
- mov r0, sp
- strb r6, [r0]
-_0810F592:
- mov r1, sp
- mov r0, r8
- strb r0, [r1, 0x2]
- movs r0, 0x2
- strb r0, [r1, 0x4]
- movs r0, 0x1E
- subs r0, r7
- strb r0, [r1, 0x1]
- strb r7, [r1, 0x3]
- strb r5, [r1, 0x5]
- strh r4, [r1, 0x6]
- ldr r4, _0810F5BC @ =gUnknown_203ADF4
- mov r0, sp
- bl AddWindow
- strb r0, [r4]
- cmp r5, 0xF
- bls _0810F5C0
- movs r5, 0xF0
- b _0810F5C4
- .align 2, 0
-_0810F5BC: .4byte gUnknown_203ADF4
-_0810F5C0:
- lsls r0, r5, 28
- lsrs r5, r0, 24
-_0810F5C4:
- movs r0, 0x2
- bl stdpal_get
- adds r1, r5, 0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _0810F5E4 @ =gUnknown_203ADF4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0810F5E4: .4byte gUnknown_203ADF4
- thumb_func_end CreateWindow_SnapRight_StdPal
-
- thumb_func_start PrintTextOnRightSnappedWindow
-PrintTextOnRightSnappedWindow: @ 810F5E8
- push {r4-r6,lr}
- sub sp, 0xC
- adds r5, r0, 0
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r4, _0810F648 @ =gUnknown_203ADF4
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _0810F63E
- bl PutWindowTilemap
- ldrb r0, [r4]
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- movs r0, 0
- adds r1, r5, 0
- movs r2, 0
- bl GetStringWidth
- ldrb r1, [r4]
- movs r3, 0x14
- negs r3, r3
- adds r2, r3, 0
- subs r2, r0
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _0810F64C @ =gUnknown_8456618
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r5, [sp, 0x8]
- adds r0, r1, 0
- movs r1, 0
- movs r3, 0x1
- bl AddTextPrinterParameterized3
- cmp r6, 0
- beq _0810F63E
- ldrb r0, [r4]
- movs r1, 0x3
- bl CopyWindowToVram
-_0810F63E:
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F648: .4byte gUnknown_203ADF4
-_0810F64C: .4byte gUnknown_8456618
- thumb_func_end PrintTextOnRightSnappedWindow
-
- thumb_func_start Menu_PrintHelpSystemUIHeader
-Menu_PrintHelpSystemUIHeader: @ 810F650
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x18
- mov r8, r0
- adds r5, r1, 0
- ldr r0, [sp, 0x30]
- lsls r2, 24
- lsrs r2, 24
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _0810F67C @ =gUnknown_203ADF4
- ldrb r1, [r0]
- adds r6, r0, 0
- cmp r1, 0xFF
- beq _0810F6F6
- cmp r2, 0
- beq _0810F680
- add r1, sp, 0x14
- movs r0, 0
- b _0810F684
- .align 2, 0
-_0810F67C: .4byte gUnknown_203ADF4
-_0810F680:
- add r1, sp, 0x14
- movs r0, 0xF
-_0810F684:
- strb r0, [r1]
- movs r0, 0x1
- strb r0, [r1, 0x1]
- movs r0, 0x2
- strb r0, [r1, 0x2]
- adds r4, r6, 0
- ldrb r0, [r4]
- bl PutWindowTilemap
- ldrb r0, [r4]
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- cmp r5, 0
- beq _0810F6CE
- movs r0, 0
- adds r1, r5, 0
- movs r2, 0
- bl GetStringWidth
- ldrb r1, [r4]
- movs r3, 0x14
- negs r3, r3
- adds r2, r3, 0
- subs r2, r0
- lsls r2, 24
- lsrs r2, 24
- add r0, sp, 0x14
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r5, [sp, 0x8]
- adds r0, r1, 0
- movs r1, 0
- movs r3, 0x1
- bl AddTextPrinterParameterized3
-_0810F6CE:
- ldrb r0, [r6]
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- add r2, sp, 0x14
- str r2, [sp, 0x8]
- str r1, [sp, 0xC]
- mov r3, r8
- str r3, [sp, 0x10]
- movs r1, 0x1
- movs r2, 0x4
- movs r3, 0x1
- bl AddTextPrinterParameterized4
- cmp r7, 0
- beq _0810F6F6
- ldrb r0, [r6]
- movs r1, 0x3
- bl CopyWindowToVram
-_0810F6F6:
- add sp, 0x18
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end Menu_PrintHelpSystemUIHeader
-
- thumb_func_start sub_810F704
-sub_810F704: @ 810F704
- push {lr}
- ldr r1, _0810F718 @ =gUnknown_203ADF4
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _0810F714
- movs r1, 0x3
- bl CopyWindowToVram
-_0810F714:
- pop {r0}
- bx r0
- .align 2, 0
-_0810F718: .4byte gUnknown_203ADF4
- thumb_func_end sub_810F704
-
- thumb_func_start sub_810F71C
-sub_810F71C: @ 810F71C
- push {r4,lr}
- ldr r4, _0810F73C @ =gUnknown_203ADF4
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _0810F734
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- ldrb r0, [r4]
- movs r1, 0x3
- bl CopyWindowToVram
-_0810F734:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F73C: .4byte gUnknown_203ADF4
- thumb_func_end sub_810F71C
-
- thumb_func_start sub_810F740
-sub_810F740: @ 810F740
- push {r4,lr}
- ldr r4, _0810F770 @ =gUnknown_203ADF4
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _0810F768
- movs r1, 0
- bl FillWindowPixelBuffer
- ldrb r0, [r4]
- bl ClearWindowTilemap
- ldrb r0, [r4]
- movs r1, 0x3
- bl CopyWindowToVram
- ldrb r0, [r4]
- bl RemoveWindow
- movs r0, 0xFF
- strb r0, [r4]
-_0810F768:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F770: .4byte gUnknown_203ADF4
- thumb_func_end sub_810F740
-
- thumb_func_start sub_810F774
-sub_810F774: @ 810F774
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r4, [sp, 0x18]
- mov r8, r4
- ldr r4, [sp, 0x1C]
- ldr r5, [sp, 0x20]
- ldr r6, [sp, 0x24]
- mov r12, r6
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r7, r5, 24
- ldr r5, _0810F7B8 @ =gUnknown_203ADE4
- movs r6, 0
- strb r2, [r5]
- strb r3, [r5, 0x1]
- strb r6, [r5, 0x3]
- subs r4, 0x1
- strb r4, [r5, 0x4]
- strb r0, [r5, 0x5]
- strb r1, [r5, 0x6]
- mov r0, r8
- strb r0, [r5, 0x8]
- mov r4, r12
- strb r4, [r5, 0xB]
- cmp r7, 0
- blt _0810F7B4
- movs r0, 0x4
- ldrsb r0, [r5, r0]
- cmp r7, r0
- ble _0810F7BC
-_0810F7B4:
- strb r6, [r5, 0x2]
- b _0810F7BE
- .align 2, 0
-_0810F7B8: .4byte gUnknown_203ADE4
-_0810F7BC:
- strb r7, [r5, 0x2]
-_0810F7BE:
- movs r0, 0
- bl MoveMenuCursor
- ldr r0, _0810F7D4 @ =gUnknown_203ADE4
- ldrb r0, [r0, 0x2]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0810F7D4: .4byte gUnknown_203ADE4
- thumb_func_end sub_810F774
-
- thumb_func_start ProgramAndPlaceMenuCursorOnWindow
-ProgramAndPlaceMenuCursorOnWindow: @ 810F7D8
- push {r4-r6,lr}
- sub sp, 0x10
- ldr r4, [sp, 0x20]
- ldr r5, [sp, 0x24]
- ldr r6, [sp, 0x28]
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- str r4, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r4, 0
- str r4, [sp, 0xC]
- bl sub_810F774
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x10
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end ProgramAndPlaceMenuCursorOnWindow
-
- thumb_func_start sub_810F818
-sub_810F818: @ 810F818
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x14
- mov r8, r0
- adds r6, r1, 0
- ldr r4, [sp, 0x28]
- ldr r5, [sp, 0x2C]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r6, 24
- lsrs r6, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- adds r0, r6, 0
- movs r1, 0x1
- str r2, [sp, 0xC]
- str r3, [sp, 0x10]
- bl GetMenuCursorDimensionByFont
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- mov r0, r8
- adds r1, r6, 0
- ldr r2, [sp, 0xC]
- ldr r3, [sp, 0x10]
- bl ProgramAndPlaceMenuCursorOnWindow
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_810F818
-
- thumb_func_start RedrawMenuCursor
-RedrawMenuCursor: @ 810F874
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0xC
- adds r6, r0, 0
- mov r8, r1
- lsls r6, 24
- lsrs r6, 24
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r5, _0810F8FC @ =gUnknown_203ADE4
- ldrb r0, [r5, 0x6]
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldrb r0, [r5, 0x6]
- movs r1, 0x1
- bl GetMenuCursorDimensionByFont
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r5, 0x5]
- mov r9, r1
- ldrb r2, [r5]
- ldrb r1, [r5, 0x8]
- adds r3, r1, 0
- muls r3, r6
- ldrb r6, [r5, 0x1]
- adds r3, r6
- lsls r3, 16
- lsrs r3, 16
- str r4, [sp]
- str r0, [sp, 0x4]
- mov r0, r9
- movs r1, 0x1
- bl FillWindowPixelRect
- ldrb r0, [r5, 0x5]
- ldrb r1, [r5, 0x6]
- ldr r2, _0810F900 @ =gFameCheckerText_ListMenuCursor
- ldrb r3, [r5]
- ldrb r4, [r5, 0x8]
- mov r6, r8
- muls r6, r4
- adds r4, r6, 0
- ldrb r5, [r5, 0x1]
- adds r4, r5
- lsls r4, 24
- lsrs r4, 24
- str r4, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- bl AddTextPrinterParameterized
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F8FC: .4byte gUnknown_203ADE4
-_0810F900: .4byte gFameCheckerText_ListMenuCursor
- thumb_func_end RedrawMenuCursor
-
- thumb_func_start MoveMenuCursor
-MoveMenuCursor: @ 810F904
- push {r4,r5,lr}
- ldr r1, _0810F924 @ =gUnknown_203ADE4
- ldrb r5, [r1, 0x2]
- movs r2, 0x2
- ldrsb r2, [r1, r2]
- lsls r0, 24
- asrs r3, r0, 24
- adds r2, r3
- movs r0, 0x3
- ldrsb r0, [r1, r0]
- adds r4, r1, 0
- cmp r2, r0
- bge _0810F928
- ldrb r0, [r4, 0x4]
- b _0810F936
- .align 2, 0
-_0810F924: .4byte gUnknown_203ADE4
-_0810F928:
- movs r0, 0x4
- ldrsb r0, [r4, r0]
- cmp r2, r0
- ble _0810F934
- ldrb r0, [r4, 0x3]
- b _0810F936
-_0810F934:
- adds r0, r3, r5
-_0810F936:
- strb r0, [r4, 0x2]
- ldrb r1, [r4, 0x2]
- adds r0, r5, 0
- bl RedrawMenuCursor
- ldrb r0, [r4, 0x2]
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end MoveMenuCursor
-
- thumb_func_start MoveMenuCursorNoWrapAround
-MoveMenuCursorNoWrapAround: @ 810F948
- push {r4,r5,lr}
- ldr r1, _0810F968 @ =gUnknown_203ADE4
- ldrb r5, [r1, 0x2]
- movs r2, 0x2
- ldrsb r2, [r1, r2]
- lsls r0, 24
- asrs r3, r0, 24
- adds r2, r3
- movs r0, 0x3
- ldrsb r0, [r1, r0]
- adds r4, r1, 0
- cmp r2, r0
- bge _0810F96C
- ldrb r0, [r4, 0x3]
- b _0810F97A
- .align 2, 0
-_0810F968: .4byte gUnknown_203ADE4
-_0810F96C:
- movs r0, 0x4
- ldrsb r0, [r4, r0]
- cmp r2, r0
- ble _0810F978
- ldrb r0, [r4, 0x4]
- b _0810F97A
-_0810F978:
- adds r0, r3, r5
-_0810F97A:
- strb r0, [r4, 0x2]
- ldrb r1, [r4, 0x2]
- adds r0, r5, 0
- bl RedrawMenuCursor
- ldrb r0, [r4, 0x2]
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end MoveMenuCursorNoWrapAround
-
- thumb_func_start GetMenuCursorPos
-GetMenuCursorPos: @ 810F98C
- ldr r0, _0810F994 @ =gUnknown_203ADE4
- ldrb r0, [r0, 0x2]
- bx lr
- .align 2, 0
-_0810F994: .4byte gUnknown_203ADE4
- thumb_func_end GetMenuCursorPos
-
- thumb_func_start ProcessMenuInput
-ProcessMenuInput: @ 810F998
- push {r4,lr}
- ldr r0, _0810F9BC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810F9C4
- ldr r4, _0810F9C0 @ =gUnknown_203ADE4
- ldrb r0, [r4, 0xB]
- cmp r0, 0
- bne _0810F9B4
- movs r0, 0x5
- bl PlaySE
-_0810F9B4:
- movs r0, 0x2
- ldrsb r0, [r4, r0]
- b _0810F9FE
- .align 2, 0
-_0810F9BC: .4byte gMain
-_0810F9C0: .4byte gUnknown_203ADE4
-_0810F9C4:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0810F9D2
- movs r0, 0x1
- negs r0, r0
- b _0810F9FE
-_0810F9D2:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0810F9E6
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- b _0810F9F6
-_0810F9E6:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0810F9FA
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
-_0810F9F6:
- bl MoveMenuCursor
-_0810F9FA:
- movs r0, 0x2
- negs r0, r0
-_0810F9FE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end ProcessMenuInput
-
- thumb_func_start ProcessMenuInputNoWrapAround
-ProcessMenuInputNoWrapAround: @ 810FA04
- push {r4-r6,lr}
- ldr r4, _0810FA2C @ =gUnknown_203ADE4
- ldrb r5, [r4, 0x2]
- adds r6, r5, 0
- ldr r0, _0810FA30 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810FA34
- ldrb r0, [r4, 0xB]
- cmp r0, 0
- bne _0810FA24
- movs r0, 0x5
- bl PlaySE
-_0810FA24:
- movs r0, 0x2
- ldrsb r0, [r4, r0]
- b _0810FA7C
- .align 2, 0
-_0810FA2C: .4byte gUnknown_203ADE4
-_0810FA30: .4byte gMain
-_0810FA34:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0810FA42
- movs r0, 0x1
- negs r0, r0
- b _0810FA7C
-_0810FA42:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0810FA5C
- movs r0, 0x1
- negs r0, r0
- bl MoveMenuCursorNoWrapAround
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- beq _0810FA78
- b _0810FA72
-_0810FA5C:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0810FA78
- movs r0, 0x1
- bl MoveMenuCursorNoWrapAround
- lsls r0, 24
- lsrs r0, 24
- cmp r6, r0
- beq _0810FA78
-_0810FA72:
- movs r0, 0x5
- bl PlaySE
-_0810FA78:
- movs r0, 0x2
- negs r0, r0
-_0810FA7C:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end ProcessMenuInputNoWrapAround
-
- thumb_func_start ProcessMenuInput_other
-ProcessMenuInput_other: @ 810FA84
- push {r4,lr}
- ldr r2, _0810FAA8 @ =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810FAB0
- ldr r4, _0810FAAC @ =gUnknown_203ADE4
- ldrb r0, [r4, 0xB]
- cmp r0, 0
- bne _0810FAA0
- movs r0, 0x5
- bl PlaySE
-_0810FAA0:
- movs r0, 0x2
- ldrsb r0, [r4, r0]
- b _0810FAE8
- .align 2, 0
-_0810FAA8: .4byte gMain
-_0810FAAC: .4byte gUnknown_203ADE4
-_0810FAB0:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0810FABE
- movs r0, 0x1
- negs r0, r0
- b _0810FAE8
-_0810FABE:
- ldrh r0, [r2, 0x30]
- movs r1, 0xF0
- ands r1, r0
- cmp r1, 0x40
- bne _0810FAD4
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- b _0810FAE0
-_0810FAD4:
- cmp r1, 0x80
- bne _0810FAE4
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
-_0810FAE0:
- bl MoveMenuCursor
-_0810FAE4:
- movs r0, 0x2
- negs r0, r0
-_0810FAE8:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end ProcessMenuInput_other
-
- thumb_func_start ProcessMenuInputNoWrapAround_other
-ProcessMenuInputNoWrapAround_other: @ 810FAF0
- push {r4-r6,lr}
- ldr r4, _0810FB18 @ =gUnknown_203ADE4
- ldrb r5, [r4, 0x2]
- adds r6, r5, 0
- ldr r2, _0810FB1C @ =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810FB20
- ldrb r0, [r4, 0xB]
- cmp r0, 0
- bne _0810FB10
- movs r0, 0x5
- bl PlaySE
-_0810FB10:
- movs r0, 0x2
- ldrsb r0, [r4, r0]
- b _0810FB66
- .align 2, 0
-_0810FB18: .4byte gUnknown_203ADE4
-_0810FB1C: .4byte gMain
-_0810FB20:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0810FB2E
- movs r0, 0x1
- negs r0, r0
- b _0810FB66
-_0810FB2E:
- ldrh r0, [r2, 0x30]
- movs r1, 0xF0
- ands r1, r0
- cmp r1, 0x40
- bne _0810FB4A
- movs r0, 0x1
- negs r0, r0
- bl MoveMenuCursorNoWrapAround
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- beq _0810FB62
- b _0810FB5C
-_0810FB4A:
- cmp r1, 0x80
- bne _0810FB62
- movs r0, 0x1
- bl MoveMenuCursorNoWrapAround
- lsls r0, 24
- lsrs r0, 24
- cmp r6, r0
- beq _0810FB62
-_0810FB5C:
- movs r0, 0x5
- bl PlaySE
-_0810FB62:
- movs r0, 0x2
- negs r0, r0
-_0810FB66:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end ProcessMenuInputNoWrapAround_other
-
- thumb_func_start PrintTextArray
-PrintTextArray: @ 810FB6C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- ldr r4, [sp, 0x2C]
- ldr r5, [sp, 0x30]
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- lsls r3, 24
- lsrs r3, 24
- mov r8, r3
- lsls r4, 24
- lsrs r7, r4, 24
- lsls r5, 24
- lsrs r5, 24
- movs r4, 0
- cmp r4, r5
- bcs _0810FBD0
-_0810FBA0:
- lsls r0, r4, 3
- ldr r1, [sp, 0x34]
- adds r0, r1
- ldr r2, [r0]
- adds r0, r7, 0
- muls r0, r4
- add r0, r8
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- adds r0, r6, 0
- mov r1, r10
- mov r3, r9
- bl AddTextPrinterParameterized
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _0810FBA0
-_0810FBD0:
- adds r0, r6, 0
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end PrintTextArray
-
- thumb_func_start sub_810FBE8
-sub_810FBE8: @ 810FBE8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- ldr r4, [sp, 0x40]
- ldr r5, [sp, 0x44]
- ldr r6, [sp, 0x4C]
- ldr r7, [sp, 0x50]
- mov r8, r7
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0x14]
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x18]
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x1C]
- lsls r4, 24
- lsrs r4, 24
- mov r10, r4
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- mov r9, r6
- mov r0, r8
- lsls r0, 24
- lsrs r6, r0, 24
- movs r4, 0
- cmp r4, r5
- bcs _0810FC68
-_0810FC30:
- lsls r0, r4, 3
- ldr r1, [sp, 0x48]
- adds r0, r1
- ldr r2, [r0]
- mov r0, r10
- muls r0, r4
- ldr r1, [sp, 0x1C]
- adds r0, r1, r0
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- mov r0, r9
- str r0, [sp, 0xC]
- str r6, [sp, 0x10]
- adds r0, r7, 0
- ldr r1, [sp, 0x14]
- ldr r3, [sp, 0x18]
- bl AddTextPrinterParameterized5
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _0810FC30
-_0810FC68:
- adds r0, r7, 0
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_810FBE8
-
- thumb_func_start sub_810FC80
-sub_810FC80: @ 810FC80
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- mov r8, r0
- adds r6, r1, 0
- adds r4, r2, 0
- adds r5, r3, 0
- ldr r7, [sp, 0x24]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r6, 24
- lsrs r6, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- adds r0, r6, 0
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- str r4, [sp]
- str r5, [sp, 0x4]
- str r7, [sp, 0x8]
- mov r0, r8
- adds r1, r6, 0
- movs r3, 0
- bl PrintTextArray
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_810FC80
-
- thumb_func_start AddItemMenuActionTextPrinters
-AddItemMenuActionTextPrinters: @ 810FCD0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- adds r6, r1, 0
- mov r8, r2
- ldr r1, [sp, 0x38]
- mov r9, r1
- ldr r1, [sp, 0x3C]
- ldr r2, [sp, 0x40]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x10]
- lsls r6, 24
- lsrs r6, 24
- mov r4, r8
- lsls r4, 24
- lsrs r4, 24
- mov r8, r4
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x14]
- mov r0, r9
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- lsls r2, 24
- lsrs r7, r2, 24
- mov r0, sp
- ldrb r1, [r0, 0x10]
- strb r1, [r0, 0x4]
- strb r6, [r0, 0x5]
- adds r0, r6, 0
- movs r1, 0x5
- bl GetFontAttribute
- mov r3, sp
- lsls r0, 4
- ldrb r2, [r3, 0xC]
- movs r5, 0xF
- adds r1, r5, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xC]
- adds r0, r6, 0
- movs r1, 0x6
- bl GetFontAttribute
- mov r3, sp
- adds r1, r5, 0
- ands r1, r0
- ldrb r2, [r3, 0xD]
- movs r4, 0x10
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0xD]
- adds r0, r6, 0
- movs r1, 0x7
- bl GetFontAttribute
- mov r3, sp
- lsls r0, 4
- ldrb r2, [r3, 0xD]
- adds r1, r5, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xD]
- adds r0, r6, 0
- movs r1, 0x4
- bl GetFontAttribute
- mov r1, sp
- ands r5, r0
- ldrb r0, [r1, 0xC]
- ands r4, r0
- orrs r4, r5
- strb r4, [r1, 0xC]
- mov r0, sp
- mov r2, r9
- strb r2, [r0, 0xA]
- adds r0, r6, 0
- movs r1, 0x3
- bl GetFontAttribute
- mov r1, sp
- strb r0, [r1, 0xB]
- mov r0, sp
- mov r4, r8
- strb r4, [r0, 0x6]
- strb r4, [r0, 0x8]
- movs r4, 0
- cmp r4, r7
- bcs _0810FDCA
- mov r5, sp
-_0810FD9A:
- ldr r1, [sp, 0x48]
- adds r0, r1, r4
- ldrb r0, [r0]
- lsls r0, 3
- ldr r2, [sp, 0x44]
- adds r0, r2
- ldr r0, [r0]
- str r0, [sp]
- mov r0, r10
- muls r0, r4
- ldr r1, [sp, 0x14]
- adds r0, r1, r0
- strb r0, [r5, 0x7]
- strb r0, [r5, 0x9]
- mov r0, sp
- movs r1, 0xFF
- movs r2, 0
- bl AddTextPrinter
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r7
- bcc _0810FD9A
-_0810FDCA:
- ldr r0, [sp, 0x10]
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end AddItemMenuActionTextPrinters
-
- thumb_func_start sub_810FDE4
-sub_810FDE4: @ 810FDE4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x14
- mov r9, r0
- adds r4, r1, 0
- adds r6, r2, 0
- mov r8, r3
- ldr r7, [sp, 0x30]
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r4, 24
- lsrs r4, 24
- lsls r6, 24
- lsrs r6, 24
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- adds r0, r4, 0
- movs r1, 0
- bl GetFontAttribute
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- adds r0, r4, 0
- movs r1, 0x2
- bl GetFontAttribute
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- str r6, [sp, 0x4]
- mov r0, r8
- str r0, [sp, 0x8]
- str r7, [sp, 0xC]
- ldr r0, [sp, 0x34]
- str r0, [sp, 0x10]
- mov r0, r9
- adds r1, r4, 0
- adds r2, r5, 0
- movs r3, 0
- bl AddItemMenuActionTextPrinters
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_810FDE4
-
- thumb_func_start SetWindowTemplateFields
-SetWindowTemplateFields: @ 810FE50
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- ldr r4, [sp, 0x28]
- mov r12, r4
- ldr r4, [sp, 0x2C]
- mov r9, r4
- ldr r4, [sp, 0x30]
- mov r10, r4
- ldr r7, [sp, 0x34]
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsls r3, 24
- mov r4, r9
- lsls r4, 24
- lsrs r4, 24
- mov r9, r4
- mov r4, r10
- lsls r4, 24
- mov r10, r4
- ldr r4, _0810FEF0 @ =0xffffff00
- mov r8, r4
- mov r5, r8
- ldr r4, [sp]
- ands r5, r4
- orrs r5, r1
- str r5, [sp]
- lsrs r2, 16
- ldr r6, _0810FEF4 @ =0xffff00ff
- adds r4, r6, 0
- ands r4, r5
- orrs r4, r2
- str r4, [sp]
- lsrs r3, 8
- ldr r1, _0810FEF8 @ =0xff00ffff
- ands r1, r4
- orrs r1, r3
- str r1, [sp]
- mov r2, r12
- lsls r2, 24
- mov r12, r2
- ldr r2, _0810FEFC @ =0x00ffffff
- ands r1, r2
- mov r4, r12
- orrs r4, r1
- str r4, [sp]
- ldr r1, [sp, 0x4]
- mov r2, r8
- ands r1, r2
- mov r4, r9
- orrs r1, r4
- mov r8, r1
- str r1, [sp, 0x4]
- mov r1, r10
- lsrs r1, 16
- mov r2, r8
- ands r6, r2
- orrs r6, r1
- str r6, [sp, 0x4]
- lsls r2, r7, 16
- ldr r1, _0810FF00 @ =0x0000ffff
- ands r6, r1
- orrs r6, r2
- str r6, [sp, 0x4]
- ldr r1, [sp]
- ldr r2, [sp, 0x4]
- str r1, [r0]
- str r2, [r0, 0x4]
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r2}
- bx r2
- .align 2, 0
-_0810FEF0: .4byte 0xffffff00
-_0810FEF4: .4byte 0xffff00ff
-_0810FEF8: .4byte 0xff00ffff
-_0810FEFC: .4byte 0x00ffffff
-_0810FF00: .4byte 0x0000ffff
- thumb_func_end SetWindowTemplateFields
-
- thumb_func_start sub_810FF04
-sub_810FF04: @ 810FF04
- push {r4-r6,lr}
- sub sp, 0x20
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- ldr r0, [sp, 0x30]
- ldr r1, [sp, 0x34]
- ldr r2, [sp, 0x38]
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 16
- lsrs r2, 16
- str r3, [sp]
- str r0, [sp, 0x4]
- str r1, [sp, 0x8]
- str r2, [sp, 0xC]
- add r0, sp, 0x10
- adds r1, r4, 0
- adds r2, r5, 0
- adds r3, r6, 0
- bl SetWindowTemplateFields
- ldr r0, [sp, 0x10]
- ldr r1, [sp, 0x14]
- str r0, [sp, 0x18]
- str r1, [sp, 0x1C]
- add r0, sp, 0x18
- bl AddWindow
- lsls r0, 16
- lsrs r0, 16
- add sp, 0x20
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_810FF04
-
- thumb_func_start CreateYesNoMenu
-CreateYesNoMenu: @ 810FF60
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- adds r6, r1, 0
- mov r8, r2
- mov r9, r3
- ldr r4, [sp, 0x3C]
- ldr r5, [sp, 0x40]
- ldr r1, [sp, 0x44]
- mov r10, r1
- lsls r6, 24
- lsrs r6, 24
- mov r1, r8
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- mov r1, r9
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 24
- lsrs r5, 24
- mov r1, r10
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- ldr r7, _0811009C @ =gUnknown_203ADF3
- bl AddWindow
- strb r0, [r7]
- ldrb r0, [r7]
- movs r1, 0x1
- adds r2, r4, 0
- adds r3, r5, 0
- bl SetWindowBorderStyle
- ldr r0, _081100A0 @ =gUnknown_841623D
- str r0, [sp, 0xC]
- add r1, sp, 0xC
- ldrb r0, [r7]
- strb r0, [r1, 0x4]
- adds r0, r1, 0
- strb r6, [r0, 0x5]
- adds r0, r6, 0
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- add r1, sp, 0xC
- add r0, r8
- strb r0, [r1, 0x6]
- adds r0, r1, 0
- mov r1, r9
- strb r1, [r0, 0x7]
- adds r1, r0, 0
- ldrb r0, [r0, 0x6]
- strb r0, [r1, 0x8]
- adds r0, r1, 0
- ldrb r0, [r0, 0x7]
- strb r0, [r1, 0x9]
- adds r0, r6, 0
- movs r1, 0x5
- bl GetFontAttribute
- add r3, sp, 0xC
- lsls r0, 4
- ldrb r2, [r3, 0xC]
- movs r5, 0xF
- adds r1, r5, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xC]
- adds r0, r6, 0
- movs r1, 0x6
- bl GetFontAttribute
- add r3, sp, 0xC
- adds r1, r5, 0
- ands r1, r0
- ldrb r2, [r3, 0xD]
- movs r4, 0x10
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0xD]
- adds r0, r6, 0
- movs r1, 0x7
- bl GetFontAttribute
- add r3, sp, 0xC
- lsls r0, 4
- ldrb r2, [r3, 0xD]
- adds r1, r5, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xD]
- adds r0, r6, 0
- movs r1, 0x4
- bl GetFontAttribute
- add r1, sp, 0xC
- ands r5, r0
- ldrb r0, [r1, 0xC]
- ands r4, r0
- orrs r4, r5
- strb r4, [r1, 0xC]
- adds r0, r6, 0
- movs r1, 0x2
- bl GetFontAttribute
- add r1, sp, 0xC
- strb r0, [r1, 0xA]
- adds r0, r6, 0
- movs r1, 0x3
- bl GetFontAttribute
- add r1, sp, 0xC
- strb r0, [r1, 0xB]
- adds r0, r1, 0
- movs r1, 0xFF
- movs r2, 0
- bl AddTextPrinter
- adds r0, r6, 0
- movs r1, 0x1
- bl GetFontAttribute
- add r1, sp, 0xC
- ldrb r1, [r1, 0xB]
- adds r0, r1
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r7]
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- mov r0, r10
- str r0, [sp, 0x8]
- adds r0, r1, 0
- adds r1, r6, 0
- mov r2, r8
- mov r3, r9
- bl ProgramAndPlaceMenuCursorOnWindow
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811009C: .4byte gUnknown_203ADF3
-_081100A0: .4byte gUnknown_841623D
- thumb_func_end CreateYesNoMenu
-
- thumb_func_start sub_81100A4
-sub_81100A4: @ 81100A4
- push {lr}
- sub sp, 0xC
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 16
- lsrs r2, 16
- lsls r3, 24
- lsrs r3, 24
- str r2, [sp]
- str r3, [sp, 0x4]
- movs r2, 0
- str r2, [sp, 0x8]
- movs r3, 0
- bl CreateYesNoMenu
- add sp, 0xC
- pop {r0}
- bx r0
- thumb_func_end sub_81100A4
-
- thumb_func_start Menu_ProcessInputNoWrapClearOnChoose
-Menu_ProcessInputNoWrapClearOnChoose: @ 81100C8
- push {r4,lr}
- bl ProcessMenuInputNoWrapAround
- lsls r0, 24
- asrs r4, r0, 24
- movs r0, 0x2
- negs r0, r0
- cmp r4, r0
- beq _081100DE
- bl sub_81100E8
-_081100DE:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end Menu_ProcessInputNoWrapClearOnChoose
-
- thumb_func_start sub_81100E8
-sub_81100E8: @ 81100E8
- push {r4,lr}
- ldr r4, _08110100 @ =gUnknown_203ADF3
- ldrb r0, [r4]
- movs r1, 0x1
- bl ClearMenuWindow
- ldrb r0, [r4]
- bl RemoveWindow
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08110100: .4byte gUnknown_203ADF3
- thumb_func_end sub_81100E8
-
- thumb_func_start sub_8110104
-sub_8110104: @ 8110104
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- ldr r4, [sp, 0x40]
- ldr r5, [sp, 0x44]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0xC]
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x10]
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x14]
- lsls r4, 24
- lsrs r6, r4, 24
- lsls r5, 24
- lsrs r5, 24
- str r5, [sp, 0x18]
- mov r0, r9
- movs r1, 0
- bl GetFontAttribute
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- mov r0, r9
- movs r1, 0x1
- bl GetFontAttribute
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x10
- subs r1, r0
- lsrs r0, r1, 31
- adds r1, r0
- asrs r1, 1
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0x1C]
- movs r5, 0
- b _081101B8
-_08110164:
- movs r4, 0
- adds r1, r5, 0x1
- mov r8, r1
- cmp r4, r6
- bcs _081101B2
- ldr r1, [sp, 0x14]
- adds r0, r1, 0
- muls r0, r5
- ldr r1, [sp, 0x1C]
- adds r0, r1, r0
- lsls r0, 24
- lsrs r7, r0, 24
-_0811017C:
- adds r0, r5, 0
- muls r0, r6
- adds r0, r4
- lsls r0, 3
- ldr r1, [sp, 0x48]
- adds r0, r1
- ldr r2, [r0]
- ldr r0, [sp, 0x10]
- adds r3, r0, 0
- muls r3, r4
- add r3, r10
- lsls r3, 24
- lsrs r3, 24
- str r7, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- ldr r0, [sp, 0xC]
- mov r1, r9
- bl AddTextPrinterParameterized
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r6
- bcc _0811017C
-_081101B2:
- mov r1, r8
- lsls r0, r1, 24
- lsrs r5, r0, 24
-_081101B8:
- ldr r0, [sp, 0x18]
- cmp r5, r0
- bcc _08110164
- ldr r0, [sp, 0xC]
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8110104
-
- thumb_func_start sub_81101D8
-sub_81101D8: @ 81101D8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- ldr r4, [sp, 0x3C]
- ldr r5, [sp, 0x40]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0xC]
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x10]
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x14]
- lsls r4, 24
- lsrs r6, r4, 24
- lsls r5, 24
- lsrs r5, 24
- str r5, [sp, 0x18]
- mov r0, r10
- movs r1, 0
- bl GetFontAttribute
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- movs r5, 0
- b _08110272
-_0811021C:
- movs r4, 0
- adds r1, r5, 0x1
- mov r8, r1
- cmp r4, r6
- bcs _0811026C
- ldr r1, [sp, 0x14]
- adds r0, r1, 0
- muls r0, r5
- lsls r0, 24
- lsrs r7, r0, 24
-_08110230:
- adds r0, r5, 0
- muls r0, r6
- adds r0, r4
- ldr r1, [sp, 0x48]
- adds r0, r1, r0
- ldrb r0, [r0]
- lsls r0, 3
- ldr r1, [sp, 0x44]
- adds r0, r1
- ldr r2, [r0]
- ldr r0, [sp, 0x10]
- adds r3, r0, 0
- muls r3, r4
- add r3, r9
- lsls r3, 24
- lsrs r3, 24
- str r7, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- ldr r0, [sp, 0xC]
- mov r1, r10
- bl AddTextPrinterParameterized
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r6
- bcc _08110230
-_0811026C:
- mov r1, r8
- lsls r0, r1, 24
- lsrs r5, r0, 24
-_08110272:
- ldr r0, [sp, 0x18]
- cmp r5, r0
- bcc _0811021C
- ldr r0, [sp, 0xC]
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81101D8
-
- thumb_func_start sub_8110290
-sub_8110290: @ 8110290
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r4, [sp, 0x20]
- mov r12, r4
- ldr r4, [sp, 0x24]
- mov r8, r4
- ldr r4, [sp, 0x28]
- mov r9, r4
- ldr r4, [sp, 0x2C]
- mov r10, r4
- ldr r4, [sp, 0x30]
- ldr r5, [sp, 0x34]
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r7, r5, 24
- ldr r5, _081102E8 @ =gUnknown_203ADE4
- movs r6, 0
- strb r2, [r5]
- strb r3, [r5, 0x1]
- strb r6, [r5, 0x3]
- subs r4, 0x1
- strb r4, [r5, 0x4]
- strb r0, [r5, 0x5]
- strb r1, [r5, 0x6]
- mov r0, r12
- strb r0, [r5, 0x7]
- mov r4, r8
- strb r4, [r5, 0x8]
- mov r0, r9
- strb r0, [r5, 0x9]
- mov r4, r10
- strb r4, [r5, 0xA]
- cmp r7, 0
- blt _081102E4
- movs r0, 0x4
- ldrsb r0, [r5, r0]
- cmp r7, r0
- ble _081102EC
-_081102E4:
- strb r6, [r5, 0x2]
- b _081102EE
- .align 2, 0
-_081102E8: .4byte gUnknown_203ADE4
-_081102EC:
- strb r7, [r5, 0x2]
-_081102EE:
- movs r0, 0
- movs r1, 0
- bl sub_8110450
- ldr r0, _08110308 @ =gUnknown_203ADE4
- ldrb r0, [r0, 0x2]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08110308: .4byte gUnknown_203ADE4
- thumb_func_end sub_8110290
-
- thumb_func_start sub_811030C
-sub_811030C: @ 811030C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- ldr r4, [sp, 0x38]
- ldr r5, [sp, 0x3C]
- ldr r6, [sp, 0x40]
- ldr r7, [sp, 0x44]
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r4, 24
- mov r8, r4
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r7, 24
- adds r4, r7, 0
- lsrs r4, 24
- mov r9, r4
- movs r7, 0x10
- mov r10, r7
- adds r4, r5, 0
- muls r4, r6
- lsls r4, 24
- lsrs r4, 24
- mov r7, r8
- str r7, [sp]
- mov r7, r10
- str r7, [sp, 0x4]
- str r5, [sp, 0x8]
- str r6, [sp, 0xC]
- str r4, [sp, 0x10]
- mov r4, r9
- str r4, [sp, 0x14]
- bl sub_8110290
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_811030C
-
- thumb_func_start sub_811037C
-sub_811037C: @ 811037C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- mov r8, r0
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r0, r1, 24
- lsrs r7, r0, 24
- ldr r5, _08110448 @ =gUnknown_203ADE4
- ldrb r0, [r5, 0x6]
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- mov r9, r0
- mov r1, r9
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- ldrb r0, [r5, 0x6]
- movs r1, 0x1
- bl GetMenuCursorDimensionByFont
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- ldrb r0, [r5, 0x9]
- mov r10, r0
- mov r0, r8
- mov r1, r10
- bl __umodsi3
- ldrb r1, [r5, 0x7]
- adds r4, r1, 0
- muls r4, r0
- ldrb r1, [r5]
- adds r4, r1
- lsls r4, 24
- lsrs r4, 24
- mov r0, r8
- mov r1, r10
- bl __udivsi3
- ldrb r1, [r5, 0x8]
- adds r3, r1, 0
- muls r3, r0
- ldrb r0, [r5, 0x1]
- adds r3, r0
- lsls r3, 24
- lsrs r3, 24
- ldrb r0, [r5, 0x5]
- mov r1, r9
- str r1, [sp]
- str r6, [sp, 0x4]
- movs r1, 0x11
- adds r2, r4, 0
- bl FillWindowPixelRect
- ldrb r6, [r5, 0x9]
- adds r0, r7, 0
- adds r1, r6, 0
- bl __umodsi3
- ldrb r1, [r5, 0x7]
- adds r4, r1, 0
- muls r4, r0
- ldrb r0, [r5]
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r7, 0
- adds r1, r6, 0
- bl __udivsi3
- ldrb r1, [r5, 0x8]
- adds r3, r1, 0
- muls r3, r0
- ldrb r1, [r5, 0x1]
- adds r3, r1
- lsls r3, 24
- lsrs r3, 24
- ldrb r0, [r5, 0x5]
- ldrb r1, [r5, 0x6]
- ldr r2, _0811044C @ =gFameCheckerText_ListMenuCursor
- str r3, [sp]
- movs r3, 0
- str r3, [sp, 0x4]
- str r3, [sp, 0x8]
- adds r3, r4, 0
- bl AddTextPrinterParameterized
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08110448: .4byte gUnknown_203ADE4
-_0811044C: .4byte gFameCheckerText_ListMenuCursor
- thumb_func_end sub_811037C
-
- thumb_func_start sub_8110450
-sub_8110450: @ 8110450
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- ldr r1, _0811048C @ =gUnknown_203ADE4
- ldrb r2, [r1, 0x2]
- mov r8, r2
- lsls r0, 24
- asrs r6, r0, 24
- adds r5, r1, 0
- cmp r6, 0
- beq _081104A6
- movs r7, 0x2
- ldrsb r7, [r5, r7]
- ldrb r4, [r5, 0x9]
- adds r0, r7, 0
- adds r1, r4, 0
- bl __modsi3
- adds r0, r6
- cmp r0, 0
- bge _08110490
- adds r0, r4, 0
- adds r0, 0xFF
- add r0, r8
- b _081104A4
- .align 2, 0
-_0811048C: .4byte gUnknown_203ADE4
-_08110490:
- cmp r0, r4
- blt _081104A0
- adds r0, r7, 0
- adds r1, r4, 0
- bl __divsi3
- muls r0, r4
- b _081104A4
-_081104A0:
- mov r1, r8
- adds r0, r6, r1
-_081104A4:
- strb r0, [r5, 0x2]
-_081104A6:
- mov r2, r9
- lsls r0, r2, 24
- asrs r6, r0, 24
- cmp r6, 0
- beq _081104EA
- movs r0, 0x2
- ldrsb r0, [r5, r0]
- ldrb r4, [r5, 0x9]
- adds r1, r4, 0
- bl __divsi3
- adds r1, r0, r6
- cmp r1, 0
- bge _081104CE
- ldrb r0, [r5, 0xA]
- subs r0, 0x1
- muls r0, r4
- ldrb r1, [r5, 0x2]
- adds r0, r1
- b _081104E8
-_081104CE:
- ldrb r0, [r5, 0xA]
- cmp r1, r0
- blt _081104E0
- subs r0, 0x1
- adds r1, r4, 0
- muls r1, r0
- ldrb r0, [r5, 0x2]
- subs r0, r1
- b _081104E8
-_081104E0:
- adds r0, r4, 0
- muls r0, r6
- ldrb r2, [r5, 0x2]
- adds r0, r2
-_081104E8:
- strb r0, [r5, 0x2]
-_081104EA:
- movs r1, 0x2
- ldrsb r1, [r5, r1]
- movs r0, 0x4
- ldrsb r0, [r5, r0]
- cmp r1, r0
- bgt _08110500
- ldrb r1, [r5, 0x2]
- mov r0, r8
- bl sub_811037C
- b _08110504
-_08110500:
- mov r0, r8
- strb r0, [r5, 0x2]
-_08110504:
- ldrb r0, [r5, 0x2]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8110450
-
- thumb_func_start sub_8110514
-sub_8110514: @ 8110514
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- ldr r1, _0811058C @ =gUnknown_203ADE4
- ldrb r7, [r1, 0x2]
- lsls r0, 24
- asrs r4, r0, 24
- adds r5, r1, 0
- cmp r4, 0
- beq _08110548
- movs r0, 0x2
- ldrsb r0, [r5, r0]
- ldrb r6, [r5, 0x9]
- adds r1, r6, 0
- bl __modsi3
- adds r0, r4
- cmp r0, 0
- blt _08110548
- cmp r0, r6
- bge _08110548
- adds r0, r4, r7
- strb r0, [r5, 0x2]
-_08110548:
- mov r1, r8
- lsls r0, r1, 24
- asrs r4, r0, 24
- cmp r4, 0
- beq _08110574
- movs r0, 0x2
- ldrsb r0, [r5, r0]
- ldrb r6, [r5, 0x9]
- adds r1, r6, 0
- bl __divsi3
- adds r0, r4
- cmp r0, 0
- blt _08110574
- ldrb r1, [r5, 0xA]
- cmp r0, r1
- bge _08110574
- adds r0, r6, 0
- muls r0, r4
- ldrb r1, [r5, 0x2]
- adds r0, r1
- strb r0, [r5, 0x2]
-_08110574:
- movs r1, 0x2
- ldrsb r1, [r5, r1]
- movs r0, 0x4
- ldrsb r0, [r5, r0]
- cmp r1, r0
- bgt _08110590
- ldrb r1, [r5, 0x2]
- adds r0, r7, 0
- bl sub_811037C
- b _08110592
- .align 2, 0
-_0811058C: .4byte gUnknown_203ADE4
-_08110590:
- strb r7, [r5, 0x2]
-_08110592:
- ldrb r0, [r5, 0x2]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8110514
-
- thumb_func_start sub_81105A0
-sub_81105A0: @ 81105A0
- push {r4,lr}
- ldr r4, _081105C0 @ =gMain
- ldrh r1, [r4, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081105C8
- movs r0, 0x5
- bl PlaySE
- ldr r0, _081105C4 @ =gUnknown_203ADE4
- ldrb r0, [r0, 0x2]
- lsls r0, 24
- asrs r0, 24
- b _08110648
- .align 2, 0
-_081105C0: .4byte gMain
-_081105C4: .4byte gUnknown_203ADE4
-_081105C8:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081105D6
- movs r0, 0x1
- negs r0, r0
- b _08110648
-_081105D6:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _081105EC
- movs r0, 0x5
- bl PlaySE
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- b _08110640
-_081105EC:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08110600
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- movs r1, 0x1
- b _08110640
-_08110600:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _08110614
- bl GetLRKeysState
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08110620
-_08110614:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- b _0811063E
-_08110620:
- ldrh r1, [r4, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _08110636
- bl GetLRKeysState
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08110644
-_08110636:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
-_0811063E:
- movs r1, 0
-_08110640:
- bl sub_8110450
-_08110644:
- movs r0, 0x2
- negs r0, r0
-_08110648:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81105A0
-
- thumb_func_start sub_8110650
-sub_8110650: @ 8110650
- push {r4-r6,lr}
- ldr r5, _08110670 @ =gUnknown_203ADE4
- ldrb r4, [r5, 0x2]
- ldr r6, _08110674 @ =gMain
- ldrh r1, [r6, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08110678
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x2
- ldrsb r0, [r5, r0]
- b _081106EE
- .align 2, 0
-_08110670: .4byte gUnknown_203ADE4
-_08110674: .4byte gMain
-_08110678:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08110686
- movs r0, 0x1
- negs r0, r0
- b _081106EE
-_08110686:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08110696
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- b _081106D8
-_08110696:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081106A4
- movs r0, 0
- movs r1, 0x1
- b _081106D8
-_081106A4:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _081106B8
- bl GetLRKeysState
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081106BE
-_081106B8:
- movs r0, 0x1
- negs r0, r0
- b _081106D6
-_081106BE:
- ldrh r1, [r6, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _081106D4
- bl GetLRKeysState
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _081106EA
-_081106D4:
- movs r0, 0x1
-_081106D6:
- movs r1, 0
-_081106D8:
- bl sub_8110514
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- beq _081106EA
- movs r0, 0x5
- bl PlaySE
-_081106EA:
- movs r0, 0x2
- negs r0, r0
-_081106EE:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8110650
-
- thumb_func_start sub_81106F4
-sub_81106F4: @ 81106F4
- push {r4,r5,lr}
- ldr r4, _08110714 @ =gMain
- ldrh r1, [r4, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0811071C
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08110718 @ =gUnknown_203ADE4
- ldrb r0, [r0, 0x2]
- lsls r0, 24
- asrs r0, 24
- b _08110798
- .align 2, 0
-_08110714: .4byte gMain
-_08110718: .4byte gUnknown_203ADE4
-_0811071C:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0811072A
- movs r0, 0x1
- negs r0, r0
- b _08110798
-_0811072A:
- ldrh r0, [r4, 0x30]
- movs r5, 0xF0
- adds r1, r5, 0
- ands r1, r0
- cmp r1, 0x40
- bne _08110744
- movs r0, 0x5
- bl PlaySE
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- b _08110790
-_08110744:
- cmp r1, 0x80
- bne _08110754
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- movs r1, 0x1
- b _08110790
-_08110754:
- cmp r1, 0x20
- beq _08110764
- bl sub_80BF66C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08110770
-_08110764:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- b _0811078E
-_08110770:
- ldrh r1, [r4, 0x30]
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0x10
- beq _08110786
- bl sub_80BF66C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08110794
-_08110786:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
-_0811078E:
- movs r1, 0
-_08110790:
- bl sub_8110450
-_08110794:
- movs r0, 0x2
- negs r0, r0
-_08110798:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81106F4
-
- thumb_func_start sub_81107A0
-sub_81107A0: @ 81107A0
- push {r4-r6,lr}
- ldr r6, _081107C0 @ =gUnknown_203ADE4
- ldrb r4, [r6, 0x2]
- ldr r5, _081107C4 @ =gMain
- ldrh r1, [r5, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081107C8
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x2
- ldrsb r0, [r6, r0]
- b _0811083A
- .align 2, 0
-_081107C0: .4byte gUnknown_203ADE4
-_081107C4: .4byte gMain
-_081107C8:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081107D6
- movs r0, 0x1
- negs r0, r0
- b _0811083A
-_081107D6:
- ldrh r0, [r5, 0x30]
- movs r6, 0xF0
- adds r1, r6, 0
- ands r1, r0
- cmp r1, 0x40
- bne _081107EA
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- b _08110824
-_081107EA:
- cmp r1, 0x80
- bne _081107F4
- movs r0, 0
- movs r1, 0x1
- b _08110824
-_081107F4:
- cmp r1, 0x20
- beq _08110804
- bl sub_80BF66C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0811080A
-_08110804:
- movs r0, 0x1
- negs r0, r0
- b _08110822
-_0811080A:
- ldrh r1, [r5, 0x30]
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0x10
- beq _08110820
- bl sub_80BF66C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08110836
-_08110820:
- movs r0, 0x1
-_08110822:
- movs r1, 0
-_08110824:
- bl sub_8110514
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- beq _08110836
- movs r0, 0x5
- bl PlaySE
-_08110836:
- movs r0, 0x2
- negs r0, r0
-_0811083A:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_81107A0
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/party_menu.s b/asm/party_menu.s
index 07db16817..215dfbe8e 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -3234,7 +3234,7 @@ sub_8120328: @ 8120328
bne _0812035E
movs r0, 0x6
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
movs r0, 0x6
bl ClearWindowTilemap
_0812035E:
@@ -3302,7 +3302,7 @@ sub_81203B8: @ 81203B8
beq _08120410
movs r0, 0x6
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
movs r0, 0x6
bl ClearWindowTilemap
bl MenuHelpers_LinkSomething
@@ -6507,7 +6507,7 @@ sub_8121CE4: @ 8121CE4
cmp r0, 0xFF
beq _08121D04
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4]
bl RemoveWindow
movs r0, 0xFF
@@ -6608,7 +6608,7 @@ _08121DB0:
movs r1, 0
movs r2, 0x58
movs r3, 0xF
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
ldr r4, _08121DF0 @ =gStringVar4
ldr r1, _08121DF4 @ =gUnknown_845A2E8
lsls r0, r6, 2
@@ -6770,7 +6770,7 @@ _08121ED2:
movs r1, 0
movs r2, 0x4F
movs r3, 0xD
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
cmp r4, 0x3
bne _08121F00
ldr r0, [r6]
@@ -6854,7 +6854,7 @@ _08121F7A:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl sub_810F774
+ bl Menu_InitCursorInternal
movs r0, 0x2
bl ScheduleBgCopyTilemapToVram
ldr r0, [r4]
@@ -6882,7 +6882,7 @@ sub_8121FC0: @ 8121FC0
movs r1, 0
movs r2, 0x4F
movs r3, 0xD
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
ldr r2, _08122008 @ =gTextFlags
ldrb r0, [r2]
movs r1, 0x1
@@ -6947,7 +6947,7 @@ sub_8122034: @ 8122034
movs r1, 0
movs r2, 0x4F
movs r3, 0xD
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
ldr r0, [r4]
ldrb r0, [r0, 0xC]
pop {r4}
@@ -7054,7 +7054,7 @@ sub_8122110: @ 8122110
bl ClearWindowTilemap
adds r0, r4, 0
movs r1, 0
- bl ClearMenuWindow_BorderThickness2
+ bl ClearDialogWindowAndFrameToTransparent
adds r0, r4, 0
bl RemoveWindow
movs r0, 0x2
@@ -8550,27 +8550,27 @@ sub_8122C5C: @ 8122C5C
ldrb r0, [r0, 0x17]
cmp r0, 0x3
bhi _08122CA0
- bl ProcessMenuInputNoWrapAround_other
+ bl Menu_ProcessInputNoWrapAround_other
b _08122CA4
.align 2, 0
_08122C94: .4byte gPaletteFade
_08122C98: .4byte gTasks+0x8
_08122C9C: .4byte gUnknown_203B09C
_08122CA0:
- bl ProcessMenuInput_other
+ bl Menu_ProcessInput_other
_08122CA4:
lsls r0, 24
lsrs r5, r0, 24
movs r0, 0
ldrsh r4, [r7, r0]
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 24
cmp r4, r0
beq _08122CCE
ldr r0, _08122D14 @ =gUnknown_203B09C
ldr r4, [r0]
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 24
adds r4, 0xF
@@ -8578,7 +8578,7 @@ _08122CA4:
ldrb r0, [r4]
bl sub_8122138
_08122CCE:
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 24
strh r0, [r7]
@@ -11600,7 +11600,7 @@ sub_81245A4: @ 81245A4
push {r4-r7,lr}
lsls r0, 24
lsrs r6, r0, 24
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
ldr r5, _08124610 @ =gUnknown_203B09C
ldr r1, [r5]
lsls r0, 24
@@ -13684,7 +13684,7 @@ _08125680:
mov r1, r8
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0x2
bl ScheduleBgCopyTilemapToVram
add sp, 0x10
@@ -13706,7 +13706,7 @@ sub_81256C0: @ 81256C0
lsls r0, 24
lsrs r4, r0, 24
adds r5, r4, 0
- bl ProcessMenuInput
+ bl Menu_ProcessInput
lsls r0, 24
asrs r1, r0, 24
movs r0, 0x2
@@ -13813,7 +13813,7 @@ sub_8125790: @ 8125790
ldr r0, [r0]
adds r0, 0xC
bl sub_8121CE4
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
ldr r1, _081257C4 @ =gUnknown_203B0A0
lsls r0, 24
lsrs r0, 24
diff --git a/asm/player_pc.s b/asm/player_pc.s
index dfcac85f4..32838be77 100644
--- a/asm/player_pc.s
+++ b/asm/player_pc.s
@@ -187,7 +187,7 @@ _080EB77E:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0
bl ScheduleBgCopyTilemapToVram
ldr r1, _080EB814 @ =gTasks
@@ -223,7 +223,7 @@ sub_80EB81C: @ 80EB81C
lsls r6, r1, 3
ldr r7, _080EB870 @ =gTasks+0x8
adds r4, r6, r7
- bl ProcessMenuInputNoWrapAround
+ bl Menu_ProcessInputNoWrapAround
lsls r0, 24
asrs r5, r0, 24
movs r0, 0x2
@@ -237,7 +237,7 @@ sub_80EB81C: @ 80EB81C
bl PlaySE
ldrb r0, [r4, 0x14]
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4, 0x14]
bl ClearWindowTilemap
ldrb r0, [r4, 0x14]
@@ -256,7 +256,7 @@ _080EB874: .4byte sub_80EB9B8
_080EB878:
ldrb r0, [r4, 0x14]
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4, 0x14]
bl ClearWindowTilemap
ldrb r0, [r4, 0x14]
@@ -488,7 +488,7 @@ _080EBA1E:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0
bl ScheduleBgCopyTilemapToVram
ldr r1, _080EBA88 @ =gUnknown_84021DC
@@ -541,7 +541,7 @@ sub_80EBAB8: @ 80EBAB8
ands r0, r1
cmp r0, 0
beq _080EBAE8
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
cmp r0, 0
beq _080EBB64
@@ -557,7 +557,7 @@ _080EBAE8:
ands r0, r1
cmp r0, 0
beq _080EBB20
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
@@ -566,9 +566,9 @@ _080EBAE8:
bl PlaySE
movs r0, 0x1
_080EBB04:
- bl MoveMenuCursor
+ bl Menu_MoveCursor
ldr r4, _080EBB1C @ =gUnknown_84021DC
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 22
adds r0, r4
@@ -586,7 +586,7 @@ _080EBB20:
movs r0, 0x5
bl PlaySE
ldr r4, _080EBB48 @ =gUnknown_8402208
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 21
adds r4, 0x4
@@ -752,7 +752,7 @@ _080EBC78: .4byte sub_80EBCAC
_080EBC7C:
ldrb r0, [r4, 0x14]
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4, 0x14]
bl ClearWindowTilemap
ldrb r0, [r4, 0x14]
@@ -861,7 +861,7 @@ sub_80EBD48: @ 80EBD48
adds r4, r0
ldrb r0, [r4, 0x14]
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4, 0x14]
bl ClearWindowTilemap
ldrb r0, [r4, 0x14]
@@ -1341,7 +1341,7 @@ sub_80EC0D8: @ 80EC0D8
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0
bl ScheduleBgCopyTilemapToVram
ldr r1, _080EC154 @ =gTasks
@@ -1369,7 +1369,7 @@ sub_80EC15C: @ 80EC15C
lsls r0, 24
lsrs r5, r0, 24
adds r6, r5, 0
- bl ProcessMenuInput_other
+ bl Menu_ProcessInput_other
lsls r0, 24
asrs r4, r0, 24
movs r0, 0x2
diff --git a/asm/pokemon_jump_2.s b/asm/pokemon_jump_2.s
index 7ef149fec..8fc385744 100644
--- a/asm/pokemon_jump_2.s
+++ b/asm/pokemon_jump_2.s
@@ -5304,7 +5304,7 @@ sub_814A218: @ 814A218
_0814A22C: .4byte gUnknown_203F3D8
_0814A230:
bl sub_814A6CC
- bl sub_81100E8
+ bl DestroyYesNoMenu
movs r0, 0
bl CopyBgTilemapBufferToVram
ldr r1, [r5]
diff --git a/asm/pokemon_special_anim.s b/asm/pokemon_special_anim.s
index 5c91419df..c8906230b 100644
--- a/asm/pokemon_special_anim.s
+++ b/asm/pokemon_special_anim.s
@@ -1703,7 +1703,7 @@ sub_811D2D0: @ 811D2D0
bl ClearWindowTilemap
movs r0, 0
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
movs r0, 0
movs r1, 0x1
bl CopyWindowToVram
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index a5e91a4a6..a7777c2ca 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -1466,7 +1466,7 @@ _0808C454:
strh r0, [r5, 0x8]
b _0808C69C
_0808C45C:
- bl ProcessMenuInput
+ bl Menu_ProcessInput
lsls r0, 24
asrs r0, 24
strh r0, [r5, 0xC]
@@ -1665,8 +1665,8 @@ _0808C5D8:
_0808C5F4:
movs r0, 0x1
negs r0, r0
- bl MoveMenuCursor
- bl GetMenuCursorPos
+ bl Menu_MoveCursor
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0xA]
@@ -1699,8 +1699,8 @@ _0808C624:
strh r6, [r5, 0xA]
_0808C63C:
movs r0, 0x1
- bl MoveMenuCursor
- bl GetMenuCursorPos
+ bl Menu_MoveCursor
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0xA]
@@ -1861,7 +1861,7 @@ sub_808C72C: @ 808C72C
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
mov r0, r10
strh r5, [r0]
add sp, 0xC
@@ -8349,7 +8349,7 @@ sub_808FCE8: @ 808FCE8
lsls r4, 24
asrs r4, 24
adds r0, r4, 0
- bl MoveMenuCursorNoWrapAround
+ bl Menu_MoveCursorNoWrapAround
add sp, 0xC
pop {r4}
pop {r0}
@@ -8363,7 +8363,7 @@ sub_808FD20: @ 808FD20
push {lr}
movs r0, 0x1
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
movs r0, 0
bl ScheduleBgCopyTilemapToVram
pop {r0}
@@ -18931,7 +18931,7 @@ sub_8094E88: @ 8094E88
movs r1, 0
movs r2, 0xB
movs r3, 0xE
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
ldr r2, [r5]
adds r0, r2, r4
ldrb r0, [r0]
@@ -18961,7 +18961,7 @@ sub_8094E88: @ 8094E88
movs r1, 0x1
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0
bl ScheduleBgCopyTilemapToVram
ldr r0, [r5]
@@ -19023,7 +19023,7 @@ _08094FB6:
bl PlaySE
movs r0, 0x1
negs r0, r0
- bl MoveMenuCursor
+ bl Menu_MoveCursor
b _08094FF2
.align 2, 0
_08094FD0: .4byte gMain
@@ -19035,10 +19035,10 @@ _08094FD4:
movs r0, 0x5
bl PlaySE
movs r0, 0x1
- bl MoveMenuCursor
+ bl Menu_MoveCursor
b _08094FF2
_08094FEA:
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r5, r0, 24
_08094FF2:
@@ -19077,7 +19077,7 @@ sub_8095024: @ 8095024
adds r0, r4
ldrb r0, [r0]
movs r1, 0x1
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldr r0, [r5]
adds r0, r4
ldrb r0, [r0]
diff --git a/asm/script_menu.s b/asm/script_menu.s
index 0d5cabbcf..59af843f1 100644
--- a/asm/script_menu.s
+++ b/asm/script_menu.s
@@ -271,7 +271,7 @@ _0809CB32:
movs r1, 0x2
movs r2, 0x8
movs r3, 0x2
- bl sub_810FBE8
+ bl MultichoiceList_PrintItems
b _0809CB7A
.align 2, 0
_0809CB54: .4byte sub_809D6D4
@@ -290,7 +290,7 @@ _0809CB5C:
movs r1, 0x2
movs r2, 0x8
movs r3, 0x2
- bl sub_810FBE8
+ bl MultichoiceList_PrintItems
_0809CB7A:
movs r0, 0xE
str r0, [sp]
@@ -301,7 +301,7 @@ _0809CB7A:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
ldr r0, [sp, 0x18]
adds r1, r7, 0
adds r2, r5, 0
@@ -475,10 +475,10 @@ _0809CCD0:
ldrsh r0, [r5, r1]
cmp r0, 0
bne _0809CCDE
- bl ProcessMenuInputNoWrapAround
+ bl Menu_ProcessInputNoWrapAround
b _0809CCE2
_0809CCDE:
- bl ProcessMenuInput
+ bl Menu_ProcessInput
_0809CCE2:
lsls r0, 24
lsrs r4, r0, 24
@@ -562,7 +562,7 @@ _0809CD78:
bl FillWindowPixelBuffer
ldr r4, _0809CDAC @ =gUnknown_83E0738
_0809CD82:
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 22
adds r0, r4
@@ -587,7 +587,7 @@ _0809CDB0:
movs r1, 0x11
bl FillWindowPixelBuffer
ldr r4, _0809CDE8 @ =gUnknown_83E0748
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 22
adds r0, r4
@@ -833,7 +833,7 @@ _0809CF08:
movs r1, 0x1
adds r2, r5, 0
movs r3, 0x10
- bl sub_8110104
+ bl MultichoiceGrid_PrintItems
ldrb r0, [r4, 0x14]
str r5, [sp]
str r7, [sp, 0x4]
@@ -843,7 +843,7 @@ _0809CF08:
movs r1, 0x1
movs r2, 0
movs r3, 0x1
- bl sub_811030C
+ bl MultichoiceGrid_InitCursor
movs r0, 0
bl ScheduleBgCopyTilemapToVram
_0809CFB8:
@@ -874,7 +874,7 @@ sub_809CFDC: @ 809CFDC
lsls r0, 3
ldr r1, _0809D018 @ =gTasks+0x8
adds r5, r0, r1
- bl sub_8110650
+ bl Menu_ProcessInputGridLayout
lsls r0, 24
asrs r1, r0, 24
movs r0, 0x2
@@ -1138,7 +1138,7 @@ _0809D1FA:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0
mov r1, r9
adds r2, r6, 0
@@ -1721,7 +1721,7 @@ sub_809D6B0: @ 809D6B0
bl ClearWindowTilemap
adds r0, r4, 0
movs r1, 0x1
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
adds r0, r4, 0
bl RemoveWindow
pop {r4}
@@ -1946,7 +1946,7 @@ _0809D844:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0
mov r1, r9
adds r2, r7, 0
diff --git a/asm/shop.s b/asm/shop.s
index 01bca8033..c0f4779b7 100644
--- a/asm/shop.s
+++ b/asm/shop.s
@@ -74,7 +74,7 @@ _0809AAF8:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
ldrb r0, [r4]
bl PutWindowTilemap
ldrb r0, [r4]
@@ -194,7 +194,7 @@ sub_809AC10: @ 809AC10
lsls r0, 24
lsrs r4, r0, 24
adds r5, r4, 0
- bl ProcessMenuInputNoWrapAround
+ bl Menu_ProcessInputNoWrapAround
lsls r0, 24
asrs r1, r0, 24
movs r0, 0x2
@@ -211,7 +211,7 @@ sub_809AC10: @ 809AC10
b _0809AC52
_0809AC3C:
ldr r4, _0809AC58 @ =gUnknown_83DF09C
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 21
adds r4, 0x4
@@ -332,7 +332,7 @@ sub_809AD24: @ 809AD24
ldr r4, _0809AD3C @ =gUnknown_2039950
ldrb r0, [r4]
movs r1, 0x2
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4]
bl RemoveWindow
pop {r4}
@@ -2396,10 +2396,10 @@ _0809BDD4:
bl sub_809B73C
movs r0, 0x3
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
movs r0, 0x1
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
movs r0, 0x3
bl ClearWindowTilemap
movs r0, 0x1
@@ -2442,10 +2442,10 @@ _0809BE54:
bl sub_809B73C
movs r0, 0x3
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
movs r0, 0x1
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
movs r0, 0x3
bl ClearWindowTilemap
movs r0, 0x1
@@ -2601,7 +2601,7 @@ sub_809BF98: @ 809BF98
adds r4, r5, r6
movs r0, 0x2
movs r1, 0
- bl ClearMenuWindow_BorderThickness2
+ bl ClearDialogWindowAndFrameToTransparent
ldrb r0, [r4, 0xE]
movs r1, 0x1
bl sub_809B57C
diff --git a/asm/slot_machine.s b/asm/slot_machine.s
index b355fed51..c5f6d2b72 100644
--- a/asm/slot_machine.s
+++ b/asm/slot_machine.s
@@ -4607,7 +4607,7 @@ sub_8141AD8: @ 8141AD8
lsls r4, 24
asrs r4, 24
adds r0, r4, 0
- bl MoveMenuCursorNoWrapAround
+ bl Menu_MoveCursorNoWrapAround
bl sub_814112C
movs r1, 0x1
str r1, [r0, 0x28]
@@ -4627,7 +4627,7 @@ sub_8141B18: @ 8141B18
ldr r0, [r4, 0x28]
cmp r0, 0
beq _08141B2E
- bl sub_81100E8
+ bl DestroyYesNoMenu
movs r0, 0
str r0, [r4, 0x28]
_08141B2E:
diff --git a/asm/start_menu.s b/asm/start_menu.s
index 4f898b88c..f7ea9a712 100644
--- a/asm/start_menu.s
+++ b/asm/start_menu.s
@@ -220,7 +220,7 @@ sub_806EF18: @ 806EF18
ldr r4, _0806EF40 @ =gUnknown_2037101
ldrb r0, [r4]
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4]
movs r1, 0x2
bl CopyWindowToVram
@@ -438,7 +438,7 @@ _0806F0C4:
movs r1, 0x2
movs r2, 0
movs r3, 0
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
strb r0, [r4]
bl MenuHelpers_LinkSomething
lsls r0, 24
@@ -663,7 +663,7 @@ sub_806F280: @ 806F280
bl PlaySE
movs r0, 0x1
negs r0, r0
- bl MoveMenuCursor
+ bl Menu_MoveCursor
ldr r4, _0806F360 @ =gUnknown_20370F4
strb r0, [r4]
bl MenuHelpers_LinkSomething
@@ -698,7 +698,7 @@ _0806F2D2:
movs r0, 0x5
bl PlaySE
movs r0, 0x1
- bl MoveMenuCursor
+ bl Menu_MoveCursor
ldr r4, _0806F360 @ =gUnknown_20370F4
strb r0, [r4]
bl MenuHelpers_LinkSomething
@@ -1080,7 +1080,7 @@ sub_806F5C8: @ 806F5C8
_0806F5E4:
movs r0, 0
movs r1, 0
- bl ClearMenuWindow_BorderThickness2
+ bl ClearDialogWindowAndFrameToTransparent
bl sub_806F14C
bl sub_812B248
ldr r1, _0806F5FC @ =gUnknown_20370F0
@@ -1093,7 +1093,7 @@ _0806F600: .4byte sub_806F280
_0806F604:
movs r0, 0
movs r1, 0x1
- bl ClearMenuWindow_BorderThickness2
+ bl ClearDialogWindowAndFrameToTransparent
bl sub_80696C0
bl ScriptContext2_Disable
bl sub_812B248
@@ -2019,7 +2019,7 @@ sub_806FCF4: @ 806FCF4
movs r1, 0
adds r2, r4, 0
movs r3, 0xD
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
ldr r4, _0806FE60 @ =gStringVar4
movs r0, 0x3
adds r1, r4, 0
diff --git a/asm/trade.s b/asm/trade.s
index 3e8dc9fc1..967144d63 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -3379,7 +3379,7 @@ _0804E208:
movs r1, 0x3
movs r2, 0x10
movs r3, 0x2
- bl sub_810FC80
+ bl UnionRoomAndTradeMenuPrintOptions
movs r0, 0x10
str r0, [sp]
movs r0, 0x2
@@ -3390,7 +3390,7 @@ _0804E208:
movs r1, 0x3
movs r2, 0
movs r3, 0
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0x1
bl PutWindowTilemap
movs r0, 0x1
@@ -3533,7 +3533,7 @@ _0804E384: .4byte 0x06010000
sub_804E388: @ 804E388
push {lr}
sub sp, 0x4
- bl ProcessMenuInputNoWrapAround
+ bl Menu_ProcessInputNoWrapAround
lsls r0, 24
asrs r0, 24
movs r1, 0x1
diff --git a/asm/union_room_chat.s b/asm/union_room_chat.s
index 609cf8366..9f8d7da11 100644
--- a/asm/union_room_chat.s
+++ b/asm/union_room_chat.s
@@ -499,7 +499,7 @@ _081287FE:
.align 2, 0
_0812880C: .4byte gUnknown_203B0E0
_08128810:
- bl ProcessMenuInput
+ bl Menu_ProcessInput
lsls r0, 24
asrs r0, 8
lsrs r6, r0, 16
@@ -534,7 +534,7 @@ _08128848:
movs r0, 0x5
bl PlaySE
movs r0, 0x1
- bl MoveMenuCursor
+ bl Menu_MoveCursor
b _081288CE
.align 2, 0
_08128864: .4byte gMain
@@ -4299,7 +4299,7 @@ sub_812A424: @ 812A424
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
_0812A4F0:
add sp, 0x14
pop {r3}
@@ -4329,7 +4329,7 @@ sub_812A51C: @ 812A51C
lsls r0, 24
lsrs r0, 24
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldr r0, [r4]
ldrb r0, [r0, 0x18]
bl ClearWindowTilemap
@@ -4366,7 +4366,7 @@ _0812A564: .4byte gUnknown_203B0E4
thumb_func_start sub_812A568
sub_812A568: @ 812A568
push {lr}
- bl ProcessMenuInput
+ bl Menu_ProcessInput
lsls r0, 24
asrs r0, 24
pop {r1}
@@ -4568,7 +4568,7 @@ sub_812A6F4: @ 812A6F4
lsls r0, 24
lsrs r0, 24
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldr r0, [r4]
ldrb r0, [r0, 0x1E]
bl ClearWindowTilemap
@@ -4987,7 +4987,7 @@ sub_812AA10: @ 812AA10
movs r1, 0x2
movs r2, 0xE
movs r3, 0x5
- bl sub_810FC80
+ bl UnionRoomAndTradeMenuPrintOptions
bl sub_81296F4
lsls r0, 24
lsrs r0, 24
@@ -5000,7 +5000,7 @@ sub_812AA10: @ 812AA10
movs r1, 0x2
movs r2, 0
movs r3, 0
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0x3
bl PutWindowTilemap
add sp, 0xC
@@ -5015,7 +5015,7 @@ sub_812AA64: @ 812AA64
push {lr}
movs r0, 0x3
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
movs r0, 0x3
bl ClearWindowTilemap
pop {r0}
diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s
index 9a65920f7..6aade55b6 100644
--- a/data/data_83FECCC.s
+++ b/data/data_83FECCC.s
@@ -805,9 +805,7 @@ gUnknown_8454000:: @ 8454000
gUnknown_8454003:: @ 8454003
.incbin "baserom.gba", 0x454003, 0x2615
-gUnknown_8456618:: @ 8456618
- .incbin "baserom.gba", 0x456618, 0x4
-
+ @ menu.o
@ quest_log.o
@ link_rfu_3.o
.section .rodata.8456C74
diff --git a/include/menu.h b/include/menu.h
index 19efc3ad9..6d8de3274 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -17,44 +17,51 @@ struct MenuAction
} func;
};
-void AddTextPrinterParameterized3(u8, u8, u8, u8, const void *, s8, const u8 *);
-void sub_8198070(u8 windowId, bool8 copyToVram);
-void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock);
-void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, u16 tileStart, u8 palette);
-void ScheduleBgCopyTilemapToVram(u8 bgNum);
-void PrintMenuTable(u8 idx, u8 nstrs, const struct MenuAction *strs);
-void InitMenuInUpperLeftCornerPlaySoundWhenAPressed(u8 idx, u8 nstrs,u8);
-u8 GetMenuCursorPos(void);
-s8 ProcessMenuInput(void);
-s8 ProcessMenuInputNoWrapAround(void);
-void ResetTempTileDataBuffers(void);
-void *DecompressAndCopyTileDataToVram(u8 bg_id, const void *src, u32 size, u16 offset, u8 mode);
-bool8 FreeTempTileDataBuffersIfPossible(void);
-u64 sub_8198A50(struct WindowTemplate*, u8, u8, u8, u8, u8, u8, u16); // returns something but it isn't used, fix when menu.s is decomp'd
-s8 Menu_ProcessInputNoWrapClearOnChoose(void);
-void DoScheduledBgTilemapCopiesToVram(void);
-void ClearScheduledBgCopiesToVram(void);
+// menu2
+void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 x, u8 y, const struct TextColor * color, s8 speed, const u8 * str);
void AddTextPrinterParameterized4(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const struct TextColor *color, s8 speed, const u8 *str);
-void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 a2, u16 a3);
-void ClearMenuWindow(u8 windowId, bool8 copyToVram);
-void *DecompressAndCopyTileDataToVram2(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
-void CreateWindow_SnapRight_StdPal(u8, u8, u8, u8, u16);
-void Menu_PrintHelpSystemUIHeader(const u8 *, const u8 *, u8, u32, u8);
-void PrintTextOnRightSnappedWindow(const u8 *, u32, u8);
-void sub_810F71C(void);
-void sub_810F740(void);
-u8 ProgramAndPlaceMenuCursorOnWindow(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPosition);
-void CreateYesNoMenu(const struct WindowTemplate *, u8, u8, u8, u16, u8, u8);
-void DrawDialogFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 a2, u8 a3);
+void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 letterSpacing, u8 lineSpacing);
+void sub_812E6DC(u8 windowId, const u8 * src, u16 x, u16 y);
void StartBlendTask(u8 eva_start, u8 evb_start, u8 eva_end, u8 evb_end, u8 ev_step, u8 priority);
bool8 IsBlendTaskActive(void);
-void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *a8);
-void ClearMenuWindow_BorderThickness2(u8 windowId, u8 a1);
-void PrintTextArray(u8, u8, u8, u8, u8, u8, const struct MenuAction *);
+u8 sub_812EA78(u16 species, u32 personality, u8 a2);
+s8 sub_812EAE4(u16 species, u32 personality, u8 a2);
+// list_menu
void sub_8107CD8(u8 palOffset, u16 speciesId);
void sub_8107CF8(u8 windowId, u16 speciesId, u32 personality, u16 x, u16 y);
-void sub_8107D38(u8, u8);
+void sub_8107D38(u8 palOffset, u8 palId);
void BlitMoveInfoIcon(u8 windowId, u8 iconId, u16 x, u16 y);
+// menu
+s8 Menu_ProcessInputGridLayout(void);
+u8 MultichoiceGrid_InitCursor(u8 windowId, u8 fontId, u8 left, u8 top, u8 optionWidth, u8 cols, u8 rows, u8 cursorPos);
+void MultichoiceGrid_PrintItems(u8 windowId, u8 fontId, u8 itemWidth, u8 itemHeight, u8 cols, u8 rows, const struct MenuAction *strs);
+void DestroyYesNoMenu(void);
+s8 Menu_ProcessInputNoWrapClearOnChoose(void);
+void CreateYesNoMenu(const struct WindowTemplate *window, u8 fontId, u8 left, u8 top, u16 baseTileNum, u8 paletteNum, u8 initialCursorPos);
+void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *orderArray);
+void UnionRoomAndTradeMenuPrintOptions(u8 windowId, u8 fontId, u8 lineHeight, u8 itemCount, const struct MenuAction *strs);
+void MultichoiceList_PrintItems(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, u8 letterSpacing, u8 lineSpacing);
+void PrintTextArray(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 itemCount, const struct MenuAction *strs);
+s8 Menu_ProcessInputNoWrapAround_other(void);
+s8 Menu_ProcessInput_other(void);
+s8 Menu_ProcessInputNoWrapAround(void);
+s8 Menu_ProcessInput(void);
+u8 Menu_GetCursorPos(void);
+u8 Menu_MoveCursorNoWrapAround(s8 cursorDelta);
+u8 Menu_MoveCursor(s8 cursorDelta);
+u8 Menu_InitCursor(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPos);
+u8 Menu_InitCursorInternal(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPos, bool8 APressMuted);
+void TopBarWindowPrintTwoStrings(const u8 *string, const u8 *string2, bool8 fgColorChooser, u8 notUsed, bool8 copyToVram);
+void TopBarWindowPrintString(const u8 *string, u8 unUsed, bool8 copyToVram);
+void ClearTopBarWindow(void);
+void DestroyTopBarWindow(void);
+u8 CreateTopBarWindowLoadPalette(u8 bg, u8 width, u8 yPos, u8 palette, u16 baseTile);
+void ClearStdWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram);
+void DrawStdFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 baseTileNum, u8 paletteNum);
+void ClearDialogWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram);
+void DrawDialogFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 tileNum, u8 paletteNum);
+struct WindowTemplate SetWindowTemplateFields(u8 bg, u8 left, u8 top, u8 width, u8 height, u8 paletteNum, u16 baseBlock);
+
#endif // GUARD_MENU_H
diff --git a/include/menu_helpers.h b/include/menu_helpers.h
index 93a4fe5d3..7fe8c19b2 100644
--- a/include/menu_helpers.h
+++ b/include/menu_helpers.h
@@ -4,29 +4,26 @@
#include "global.h"
#include "task.h"
-// Exported type declarations
-
-struct YesNoFuncTable {
+struct YesNoFuncTable
+{
TaskFunc yesFunc;
TaskFunc noFunc;
};
-// Exported RAM declarations
-
-// Exported ROM declarations
-
-void sub_812225C(u16 *, u16 *, u8, u8);
-void sub_8122298(u16 *, u16 *, u8, u8, u8);
-void sub_8121F68(u8 taskId, const struct YesNoFuncTable *data);
-bool8 sub_81221AC(void);
bool16 RunTextPrinters_CheckActive(u8 textPrinterId);
bool8 sub_80BF72C(void);
+bool8 sub_80BF748(void);
bool8 MenuHelpers_LinkSomething(void);
void SetVBlankHBlankCallbacksToNull(void);
void ResetAllBgsCoordinatesAndBgCntRegs(void);
u8 sub_80BF8E4(void);
-u8 AdjustQuantityAccordingToDPadInput(s16 * a0, u16 a1);
-void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 arg2, u8 arg3, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc);
-void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 arg2, u8 arg3, u8 arg4, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo);
+bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1);
+void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 tileNum, u8 paletteNum, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc);
+void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 fontId, u8 left, u8 top, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo);
+u8 GetLRKeysState(void);
+u8 sub_80BF66C(void);
+bool8 sub_80BF6A8(u16 itemId);
+bool8 itemid_80BF6D8_mail_related(u16 itemId);
+void ClearVramOamPltt(void);
#endif //GUARD_MENU_HELPERS_H
diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h
index caa7cfc3c..d68957e62 100644
--- a/include/new_menu_helpers.h
+++ b/include/new_menu_helpers.h
@@ -5,48 +5,48 @@
#include "text.h"
#include "task.h"
-void sub_81973A4(void);
-void sub_81973C4(u8, u8);
-void sub_819746C(u8 windowId, bool8 copyToVram);
-void sub_81973FC(u8, u8);
+void ClearScheduledBgCopiesToVram(void);
+void ScheduleBgCopyTilemapToVram(u8 bgId);
+void DoScheduledBgTilemapCopiesToVram(void);
+void ResetTempTileDataBuffers(void);
+bool8 FreeTempTileDataBuffersIfPossible(void);
+void *DecompressAndCopyTileDataToVram(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
+void *DecompressAndCopyTileDataToVram2(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
+void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
+void DecompressAndLoadBgGfxUsingHeap2(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
+void * MallocAndDecompress(const void * src, u32 * size);
+void SetBgRectPal(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette);
+void CopyRectIntoAltRect(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height);
+void ResetBgPositions(void);
+void InitStandardTextBoxWindows(void);
+void FreeAllOverworldWindowBuffers(void);
+void ResetBg0(void);
+u16 RunTextPrinters_CheckPrinter0Active(void);
u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 fgColor, u8 bgColor, u8 shadowColor);
-void DisplayItemMessageOnField(u8 taskId, u8 bgId, const u8 *src, TaskFunc callback);
-void sub_8197434(u8 a0, u8 a1);
-void SetStandardWindowBorderStyle(u8 a0, u8 a1);
-void sub_8197930(void);
-u8 GetPlayerTextSpeed(void);
-void ClearDialogWindowAndFrame(u8, u8);
-u8 GetTextSpeedSetting(void);
+void AddTextPrinterDiffStyle(bool8 allowSkippingDelayWithButtonPress);
+void AddTextPrinterForMessage(bool8 allowSkippingDelayWithButtonPress);
+void AddTextPrinterWithCustomSpeedForMessage(bool8 allowSkippingDelayWithButtonPress, u8 speed);
void sub_80F6E9C(void);
void DrawDialogueFrame(u8 windowId, bool8 transfer);
-void sub_80F7974(const u8 * text);
-void sub_80F7998(void);
-void sub_80F79A4(void);
void DrawStdWindowFrame(u8 windowId, bool8 copyNow);
-void InitStandardTextBoxWindows(void);
-void ResetBg0(void);
-void ResetBgPositions(void);
-void CopyRectIntoAltRect(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height);
-void SetBgRectPal(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette);
-void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
-void DecompressAndLoadBgGfxUsingHeap2(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
-void Menu_LoadStdPal(void);
-void Menu_LoadStdPalAt(u16);
-void * MallocAndDecompress(const void * src, u32 * size);
-u16 GetStdWindowBaseTileNum(void);
+void ClearDialogWindowAndFrame(u8 windowId, bool8 copyToVram);
void ClearStdWindowAndFrame(u8 taskId, bool8 copyNow);
-void sub_80F6E9C(void);
void sub_80F771C(bool8 copyToVram);
-void AddTextPrinterWithCustomSpeedForMessage(bool8 allowSkippingDelayWithButtonPress, u8 speed);
-void AddTextPrinterDiffStyle(bool8 allowSkippingDelayWithButtonPress);
-void AddTextPrinterForMessage(bool8 allowSkippingDelayWithButtonPress);
void SetStdWindowBorderStyle(u8 windowId, bool8 copyToVram);
void sub_80F7768(u8 windowId, bool8 copyToVram);
+void Menu_LoadStdPal(void);
+void Menu_LoadStdPalAt(u16 offset);
+void DisplayItemMessageOnField(u8 taskId, u8 bgId, const u8 *src, TaskFunc callback);
void DisplayYesNoMenuDefaultYes(void);
void DisplayYesNoMenuDefaultNo(void);
-u8 sub_80F78E0(u8 windowId);
+u8 GetTextSpeedSetting(void);
+u8 sub_80F78E0(u8 height);
u8 GetStartMenuWindowId(void);
void RemoveStartMenuWindow(void);
+u16 GetStdWindowBaseTileNum(void);
+void sub_80F7974(const u8 * text);
+void sub_80F7998(void);
+void sub_80F79A4(void);
void SetDefaultFontsPointer(void);
#endif // GUARD_NEW_MENU_HELPERS_H
diff --git a/include/palette.h b/include/palette.h
index 78f398873..06b9b1f6f 100644
--- a/include/palette.h
+++ b/include/palette.h
@@ -43,7 +43,7 @@ struct PaletteFadeControl
extern struct PaletteFadeControl gPaletteFade;
extern u32 gPlttBufferTransferPending;
-extern u8 *gPaletteDecompressionBuffer;
+extern u8 *gUnknown_203AAB0;
extern u16 gPlttBufferUnfaded[PLTT_BUFFER_SIZE];
extern u16 gPlttBufferFaded[PLTT_BUFFER_SIZE];
diff --git a/include/sound.h b/include/sound.h
index e720fc1a2..e5736fad8 100644
--- a/include/sound.h
+++ b/include/sound.h
@@ -12,7 +12,6 @@ void StopMapMusic(void);
void FadeOutMapMusic(u8 speed);
void FadeOutAndPlayNewMapMusic(u16 songNum, u8 speed);
void FadeOutAndFadeInNewMapMusic(u16 songNum, u8 fadeOutSpeed, u8 fadeInSpeed);
-void FadeInNewMapMusic(u16 songNum, u8 speed);
bool8 IsNotWaitingForBGMStop(void);
void PlayFanfareByFanfareNum(u8 fanfareNum);
bool8 WaitFanfare(bool8 stop);
diff --git a/include/strings.h b/include/strings.h
index 1bd53d4a5..2cb57e19d 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -175,7 +175,7 @@ extern const u8 gUnknown_841665C[];
extern const u8 gUnknown_8416690[];
extern const u8 gUnknown_84166A7[];
extern const u8 gUnknown_84169DC[];
-
+extern const u8 gUnknown_841623D[];
extern const u8 gUnknown_84162BD[];
// diploma
diff --git a/ld_script.txt b/ld_script.txt
index 55cb9d316..bf6ddadc4 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -234,7 +234,7 @@ SECTIONS {
src/vs_seeker.o(.text);
src/item_pc.o(.text);
asm/mailbox_pc.o(.text);
- asm/menu.o(.text);
+ src/menu.o(.text);
src/quest_log.o(.text);
asm/link_rfu_3.o(.text);
asm/pokemon_special_anim.o(.text);
@@ -435,6 +435,7 @@ SECTIONS {
src/vs_seeker.o(.rodata);
src/item_pc.o(.rodata);
data/data_83FECCC.o(.rodata.8453F6C);
+ src/menu.o(.rodata);
src/quest_log.o(.rodata);
data/data_83FECCC.o(.rodata.8456C74);
src/help_system_812B1E0.o(.rodata);
diff --git a/src/bag.c b/src/bag.c
index f4d29dfd4..a63f57702 100644
--- a/src/bag.c
+++ b/src/bag.c
@@ -6,6 +6,7 @@
#include "window.h"
#include "text_window.h"
#include "menu_helpers.h"
+#include "new_menu_helpers.h"
#include "menu.h"
#include "money.h"
#include "bag.h"
@@ -240,7 +241,7 @@ void sub_810B958(const u8 * str)
void sub_810B994(void)
{
u32 x;
- SetWindowBorderStyle(2, FALSE, 0x081, 0x0C);
+ DrawStdFrameWithCustomTileAndPalette(2, FALSE, 0x081, 0x0C);
x = 0x40 - GetStringWidth(0, gText_DepositItem, 0);
AddTextPrinterParameterized(2, 0, gText_DepositItem, x / 2, 1, 0, NULL);
}
@@ -252,11 +253,11 @@ u8 sub_810B9DC(u8 a0, u8 a1)
gUnknown_203AD34[a0] = AddWindow(&gUnknown_8453104[a0 + a1]);
if (a0 != 6)
{
- SetWindowBorderStyle(gUnknown_203AD34[a0], FALSE, 0x064, 0x0E);
+ DrawStdFrameWithCustomTileAndPalette(gUnknown_203AD34[a0], FALSE, 0x064, 0x0E);
}
else
{
- SetWindowBorderStyle(gUnknown_203AD34[a0], FALSE, 0x081, 0x0C);
+ DrawStdFrameWithCustomTileAndPalette(gUnknown_203AD34[a0], FALSE, 0x081, 0x0C);
}
ScheduleBgCopyTilemapToVram(0);
}
@@ -265,7 +266,7 @@ u8 sub_810B9DC(u8 a0, u8 a1)
void sub_810BA3C(u8 a0)
{
- ClearMenuWindow(gUnknown_203AD34[a0], FALSE);
+ ClearStdWindowAndFrameToTransparent(gUnknown_203AD34[a0], FALSE);
ClearWindowTilemap(gUnknown_203AD34[a0]);
RemoveWindow(gUnknown_203AD34[a0]);
ScheduleBgCopyTilemapToVram(0);
@@ -285,7 +286,7 @@ void sub_810BA9C(u8 a0)
{
if (gUnknown_203AD34[a0] != 0xFF)
{
- ClearMenuWindow_BorderThickness2(gUnknown_203AD34[a0], FALSE);
+ ClearDialogWindowAndFrameToTransparent(gUnknown_203AD34[a0], FALSE);
ClearWindowTilemap(gUnknown_203AD34[a0]);
RemoveWindow(gUnknown_203AD34[a0]);
PutWindowTilemap(1);
diff --git a/src/berry_powder.c b/src/berry_powder.c
index b3069d697..9b3bbc17f 100644
--- a/src/berry_powder.c
+++ b/src/berry_powder.c
@@ -97,7 +97,7 @@ void sub_815EFBC(u8 windowId, u32 powder, u8 x, u8 y, u8 speed)
void sub_815F014(u8 windowId, u16 baseBlock, u8 palette, u32 powder)
{
- SetWindowBorderStyle(windowId, FALSE, baseBlock, palette);
+ DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, baseBlock, palette);
AddTextPrinterParameterized(windowId, 0, gOtherText_Powder, 0, 0, -1, NULL);
sub_815EFBC(windowId, powder, 39, 12, 0);
}
@@ -110,13 +110,11 @@ void sub_815F070(void)
void sub_815F094(void)
{
struct WindowTemplate template;
- struct WindowTemplate template2;
if (sub_81119D4(sub_809D6D4) != TRUE)
{
- SetWindowTemplateFields(&template, 0, 1, 1, 8, 3, 15, 32);
- template2 = template;
- gUnknown_203F464 = AddWindow(&template2);
+ template = SetWindowTemplateFields(0, 1, 1, 8, 3, 15, 32);
+ gUnknown_203F464 = AddWindow(&template);
FillWindowPixelBuffer(gUnknown_203F464, 0);
PutWindowTilemap(gUnknown_203F464);
TextWindow_SetStdFrame0_WithPal(gUnknown_203F464, 0x21D, 0xD0);
@@ -127,6 +125,6 @@ void sub_815F094(void)
void sub_815F114(void)
{
ClearWindowTilemap(gUnknown_203F464);
- ClearMenuWindow(gUnknown_203F464, 1);
+ ClearStdWindowAndFrameToTransparent(gUnknown_203F464, 1);
RemoveWindow(gUnknown_203F464);
}
diff --git a/src/buy_menu_helpers.c b/src/buy_menu_helpers.c
index 4febb8209..4cdf90e4e 100644
--- a/src/buy_menu_helpers.c
+++ b/src/buy_menu_helpers.c
@@ -202,12 +202,12 @@ void BuyMenuDisplayMessage(u8 taskId, const u8 *text, TaskFunc callback)
void BuyMenuQuantityBoxNormalBorder(u8 windowId, bool8 copyToVram)
{
- SetWindowBorderStyle(windowId, copyToVram, 0x1, 0xD);
+ DrawStdFrameWithCustomTileAndPalette(windowId, copyToVram, 0x1, 0xD);
}
void BuyMenuQuantityBoxThinBorder(u8 windowId, bool8 copyToVram)
{
- SetWindowBorderStyle(windowId, copyToVram, 0xA, 0xF);
+ DrawStdFrameWithCustomTileAndPalette(windowId, copyToVram, 0xA, 0xF);
}
void BuyMenuConfirmPurchase(u8 taskId, const struct YesNoFuncTable *yesNo)
diff --git a/src/coins.c b/src/coins.c
index 3a51f6813..9de600e7f 100644
--- a/src/coins.c
+++ b/src/coins.c
@@ -61,7 +61,7 @@ void PrintCoinsString_Parameterized(u8 windowId, u32 coinAmount, u8 x, u8 y, u8
void sub_80D0674(u8 windowId, u16 tileStart, u8 palette, u32 coinAmount)
{
- SetWindowBorderStyle(windowId, FALSE, tileStart, palette);
+ DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, tileStart, palette);
AddTextPrinterParameterized(windowId, 2, gUnknown_8417C2D, 0, 0, 0xFF, 0);
PrintCoinsString_Parameterized(windowId, coinAmount, 0x10, 0xC, 0);
}
@@ -80,15 +80,14 @@ void PrintCoinsString(u32 coinAmount)
void ShowCoinsWindow(u32 coinAmount, u8 x, u8 y)
{
- struct WindowTemplate template, template2;
+ struct WindowTemplate template;
- SetWindowTemplateFields(&template, 0, x + 1, y + 1, 8, 3, 0xF, 0x20);
- template2 = template; // again, why...
- sCoinsWindowId = AddWindow(&template2);
+ template = SetWindowTemplateFields(0, x + 1, y + 1, 8, 3, 0xF, 0x20);
+ sCoinsWindowId = AddWindow(&template);
FillWindowPixelBuffer(sCoinsWindowId, 0);
PutWindowTilemap(sCoinsWindowId);
TextWindow_SetStdFrame0_WithPal(sCoinsWindowId, 0x21D, 0xD0);
- SetWindowBorderStyle(sCoinsWindowId, FALSE, 0x21D, 0xD);
+ DrawStdFrameWithCustomTileAndPalette(sCoinsWindowId, FALSE, 0x21D, 0xD);
AddTextPrinterParameterized(sCoinsWindowId, 2, gUnknown_8417C2D, 0, 0, 0xFF, 0);
PrintCoinsString(coinAmount);
}
@@ -96,6 +95,6 @@ void ShowCoinsWindow(u32 coinAmount, u8 x, u8 y)
void HideCoinsWindow(void)
{
ClearWindowTilemap(sCoinsWindowId);
- ClearMenuWindow(sCoinsWindowId, TRUE);
+ ClearStdWindowAndFrameToTransparent(sCoinsWindowId, TRUE);
RemoveWindow(sCoinsWindowId);
}
diff --git a/src/diploma.c b/src/diploma.c
index 3abef1474..517ee8aa0 100644
--- a/src/diploma.c
+++ b/src/diploma.c
@@ -52,7 +52,7 @@ static const u8 gUnknown_84159B3[] = _("{HIGHLIGHT TRANSPARENT}     ãƒ
static const u8 gUnknown_84159ED[] = _("{COLOR RED}{HIGHLIGHT TRANSPARENT}ゲームフリーク");
static const u8 gUnknown_84159FB[] = _("{COLOR RED}{HIGHLIGHT TRANSPARENT}");
-static const ALIGNED(4) u8 gUnknown_8415A04[] = {0, 2, 3};
+static const ALIGNED(4) struct TextColor gUnknown_8415A04 = {0, 2, 3};
static const struct BgTemplate gUnknown_8415A08[] = {
{
@@ -276,10 +276,10 @@ static void DiplomaPrintText(void)
FillWindowPixelBuffer(0, 0);
DynamicPlaceholderTextUtil_ExpandPlaceholders(arr, gUnknown_841B60E);
width = GetStringWidth(2, arr, -1);
- AddTextPrinterParameterized3(0, 2, 0x78 - (width / 2), 4, gUnknown_8415A04, -1, arr);
+ AddTextPrinterParameterized3(0, 2, 0x78 - (width / 2), 4, &gUnknown_8415A04, -1, arr);
DynamicPlaceholderTextUtil_ExpandPlaceholders(arr, gUnknown_841B619);
width = GetStringWidth(2, arr, -1);
- AddTextPrinterParameterized3(0, 0x2, 0x78 - (width / 2), 0x1E, gUnknown_8415A04, -1, arr);
- AddTextPrinterParameterized3(0, 0x2, 0x78, 0x69, gUnknown_8415A04, 0, gUnknown_841B684);
+ AddTextPrinterParameterized3(0, 0x2, 0x78 - (width / 2), 0x1E, &gUnknown_8415A04, -1, arr);
+ AddTextPrinterParameterized3(0, 0x2, 0x78, 0x69, &gUnknown_8415A04, 0, gUnknown_841B684);
PutWindowTilemap(0);
}
diff --git a/src/fldeff_softboiled.c b/src/fldeff_softboiled.c
index 2a3d68e70..400a1d382 100644
--- a/src/fldeff_softboiled.c
+++ b/src/fldeff_softboiled.c
@@ -3,6 +3,7 @@
#include "sound.h"
#include "string_util.h"
#include "menu.h"
+#include "new_menu_helpers.h"
#include "constants/songs.h"
#include "fldeff.h"
@@ -85,7 +86,7 @@ static void sub_80E58A0(u8 taskId)
sub_811F818(gUnknown_203B0A0.unk9, 0);
gUnknown_203B0A0.unk9 = gUnknown_203B0A0.unkA;
sub_811F818(gUnknown_203B0A0.unkA, 1);
- ClearMenuWindow(6, 0);
+ ClearStdWindowAndFrameToTransparent(6, 0);
ClearWindowTilemap(6);
sub_8121D0C(0);
gTasks[taskId].func = sub_811FB28;
diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c
index 9c6115044..aca56ef4c 100644
--- a/src/fldeff_sweetscent.c
+++ b/src/fldeff_sweetscent.c
@@ -52,8 +52,8 @@ static void StartSweetScentFieldEffect(void)
u8 taskId;
PlaySE(SE_W260);
- gPaletteDecompressionBuffer = (u8 *)Alloc(0x400);
- CpuFastSet(gPlttBufferUnfaded, gPaletteDecompressionBuffer, 0x100);
+ gUnknown_203AAB0 = (u8 *)Alloc(0x400);
+ CpuFastSet(gPlttBufferUnfaded, gUnknown_203AAB0, 0x100);
CpuFastSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x100);
BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 0, 8, RGB(31, 0, 0));
taskId = CreateTask(TrySweetScentEncounter, 0);
@@ -72,7 +72,7 @@ static void TrySweetScentEncounter(u8 taskId)
data[0] = 0;
if (SweetScentWildEncounter() == TRUE)
{
- Free(gPaletteDecompressionBuffer);
+ Free(gUnknown_203AAB0);
DestroyTask(taskId);
}
else
@@ -92,9 +92,9 @@ static void FailSweetScentEncounter(u8 taskId)
{
if (!gPaletteFade.active)
{
- CpuFastSet(gPaletteDecompressionBuffer, gPlttBufferUnfaded, 0x100);
+ CpuFastSet(gUnknown_203AAB0, gPlttBufferUnfaded, 0x100);
sub_807B070();
- Free(gPaletteDecompressionBuffer);
+ Free(gUnknown_203AAB0);
ScriptContext1_SetupScript(EventScript_FailSweetScent);
DestroyTask(taskId);
}
diff --git a/src/item_pc.c b/src/item_pc.c
index abafaa8d9..8f1fd1cbf 100644
--- a/src/item_pc.c
+++ b/src/item_pc.c
@@ -845,7 +845,7 @@ static void Task_ItemPcSubmenuInit(u8 taskId)
ItemPc_SetBorderStyleOnWindow(4);
windowId = ItemPc_GetOrCreateSubwindow(0);
PrintTextArray(4, 2, 8, 2, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, 3, sItemPcSubmenuOptions);
- ProgramAndPlaceMenuCursorOnWindow(4, 2, 0, 2, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, 3, 0);
+ Menu_InitCursor(4, 2, 0, 2, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, 3, 0);
CopyItemName(ItemPc_GetItemIdBySlotId(data[1]), gStringVar1);
StringExpandPlaceholders(gStringVar4, gOtherText_StrVar1);
ItemPc_AddTextPrinterParameterized(windowId, 2, gStringVar4, 0, 2, 1, 0, 0, 1);
@@ -855,7 +855,7 @@ static void Task_ItemPcSubmenuInit(u8 taskId)
static void Task_ItemPcSubmenuRun(u8 taskId)
{
- s8 input = ProcessMenuInputNoWrapAround();
+ s8 input = Menu_ProcessInputNoWrapAround();
switch (input)
{
case -1:
@@ -874,7 +874,7 @@ static void Task_ItemPcWithdraw(u8 taskId)
{
s16 * data = gTasks[taskId].data;
- ClearMenuWindow(4, FALSE);
+ ClearStdWindowAndFrameToTransparent(4, FALSE);
ItemPc_DestroySubwindow(0);
ClearWindowTilemap(4);
data[8] = 1;
@@ -998,7 +998,7 @@ static void Task_ItemPcHandleWithdrawMultiple(u8 taskId)
else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
- ClearMenuWindow(3, FALSE);
+ ClearStdWindowAndFrameToTransparent(3, FALSE);
ItemPc_DestroySubwindow(1);
ClearWindowTilemap(3);
PutWindowTilemap(0);
@@ -1014,7 +1014,7 @@ static void Task_ItemPcGive(u8 taskId)
{
if (CalculatePlayerPartyCount() == 0)
{
- ClearMenuWindow(4, FALSE);
+ ClearStdWindowAndFrameToTransparent(4, FALSE);
ItemPc_DestroySubwindow(0);
ClearWindowTilemap(4);
PutWindowTilemap(0);
@@ -1045,7 +1045,7 @@ static void gTask_ItemPcWaitButtonAndExitSubmenu(u8 taskId)
if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
- ClearMenuWindow_BorderThickness2(5, 0);
+ ClearDialogWindowAndFrameToTransparent(5, 0);
ClearWindowTilemap(5);
PutWindowTilemap(1);
ItemPc_PrintOrRemoveCursor(data[0], 1);
@@ -1058,7 +1058,7 @@ static void Task_ItemPcCancel(u8 taskId)
{
s16 * data = gTasks[taskId].data;
- ClearMenuWindow(4, FALSE);
+ ClearStdWindowAndFrameToTransparent(4, FALSE);
ItemPc_DestroySubwindow(0);
ClearWindowTilemap(4);
PutWindowTilemap(0);
@@ -1116,7 +1116,7 @@ static void ItemPc_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8
static void ItemPc_SetBorderStyleOnWindow(u8 windowId)
{
- SetWindowBorderStyle(windowId, FALSE, 0x3C0, 0x0E);
+ DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, 0x3C0, 0x0E);
}
static u8 ItemPc_GetOrCreateSubwindow(u8 idx)
@@ -1124,7 +1124,7 @@ static u8 ItemPc_GetOrCreateSubwindow(u8 idx)
if (sSubmenuWindowIds[idx] == 0xFF)
{
sSubmenuWindowIds[idx] = AddWindow(&gUnknown_8453FD0[idx]);
- SetWindowBorderStyle(sSubmenuWindowIds[idx], TRUE, 0x3A3, 0x0C);
+ DrawStdFrameWithCustomTileAndPalette(sSubmenuWindowIds[idx], TRUE, 0x3A3, 0x0C);
}
return sSubmenuWindowIds[idx];
@@ -1132,7 +1132,7 @@ static u8 ItemPc_GetOrCreateSubwindow(u8 idx)
static void ItemPc_DestroySubwindow(u8 idx)
{
- ClearMenuWindow(sSubmenuWindowIds[idx], FALSE);
+ ClearStdWindowAndFrameToTransparent(sSubmenuWindowIds[idx], FALSE);
ClearWindowTilemap(sSubmenuWindowIds[idx]); // redundant
RemoveWindow(sSubmenuWindowIds[idx]);
sSubmenuWindowIds[idx] = 0xFF;
diff --git a/src/menu.c b/src/menu.c
new file mode 100644
index 000000000..bef442d84
--- /dev/null
+++ b/src/menu.c
@@ -0,0 +1,878 @@
+#include "global.h"
+#include "bg.h"
+#include "malloc.h"
+#include "menu.h"
+#include "menu_helpers.h"
+#include "new_menu_helpers.h"
+#include "string_util.h"
+#include "strings.h"
+#include "task.h"
+#include "text_window.h"
+#include "window.h"
+#include "sound.h"
+#include "palette.h"
+#include "constants/songs.h"
+
+struct Menu
+{
+ u8 left;
+ u8 top;
+ s8 cursorPos;
+ s8 minCursorPos;
+ s8 maxCursorPos;
+ u8 windowId;
+ u8 fontId;
+ u8 optionWidth;
+ u8 optionHeight;
+ u8 columns;
+ u8 rows;
+ bool8 APressMuted;
+};
+
+static EWRAM_DATA struct Menu sMenu = {0};
+static EWRAM_DATA u16 sTileNum = 0;
+static EWRAM_DATA u8 sPaletteNum = 0;
+static EWRAM_DATA u8 sYesNoWindowId = 0;
+static EWRAM_DATA u8 sTopBarWindowId = 0;
+
+static void WindowFunc_DrawDialogFrameWithCustomTileAndPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum);
+static void WindowFunc_ClearDialogWindowAndFrameNullPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum);
+static void WindowFunc_DrawStdFrameWithCustomTileAndPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum);
+static void WindowFunc_ClearStdWindowAndFrameToTransparent(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum);
+static u8 MultichoiceGrid_MoveCursor(s8 deltaX, s8 deltaY);
+
+static const struct TextColor gUnknown_8456618 =
+{
+ .fgColor = 15,
+ .bgColor = 1,
+ .shadowColor = 2,
+};
+
+void DrawDialogFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 tileNum, u8 paletteNum)
+{
+ sTileNum = tileNum;
+ sPaletteNum = paletteNum;
+ CallWindowFunction(windowId, WindowFunc_DrawDialogFrameWithCustomTileAndPalette);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ PutWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+// not used
+static void DrawDialogFrameWithCustomTile(u8 windowId, bool8 copyToVram, u16 tileNum)
+{
+ sTileNum = tileNum;
+ sPaletteNum = GetWindowAttribute(windowId, WINDOW_PALETTE_NUM);
+ CallWindowFunction(windowId, WindowFunc_DrawDialogFrameWithCustomTileAndPalette);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ PutWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+static void WindowFunc_DrawDialogFrameWithCustomTileAndPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+{
+ FillBgTilemapBufferRect(bg, sTileNum, tilemapLeft - 2, tilemapTop - 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 1, tilemapLeft - 1, tilemapTop - 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 2, tilemapLeft, tilemapTop - 1, width, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 3, tilemapLeft + width, tilemapTop - 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 4, tilemapLeft + width + 1, tilemapTop - 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 5, tilemapLeft - 2, tilemapTop, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 6, tilemapLeft - 1, tilemapTop, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 8, tilemapLeft + width, tilemapTop, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 9, tilemapLeft + width + 1, tilemapTop, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 10, tilemapLeft - 2, tilemapTop + 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 11, tilemapLeft - 1, tilemapTop + 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 12, tilemapLeft + width, tilemapTop + 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 13, tilemapLeft + width + 1, tilemapTop + 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 10), tilemapLeft - 2, tilemapTop + 2, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 11), tilemapLeft - 1, tilemapTop + 2, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 12), tilemapLeft + width, tilemapTop + 2, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 13), tilemapLeft + width + 1, tilemapTop + 2, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 5), tilemapLeft - 2, tilemapTop + 3, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 6), tilemapLeft - 1, tilemapTop + 3, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 8), tilemapLeft + width, tilemapTop + 3, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 9), tilemapLeft + width + 1, tilemapTop + 3, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum), tilemapLeft - 2, tilemapTop + 4, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 1), tilemapLeft - 1, tilemapTop + 4, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 2), tilemapLeft, tilemapTop + 4, width, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 3), tilemapLeft + width, tilemapTop + 4, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 4), tilemapLeft + width + 1, tilemapTop + 4, 1, 1, sPaletteNum);
+}
+
+void ClearDialogWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram)
+{
+ // The palette slot doesn't matter, since the tiles are transparent.
+ CallWindowFunction(windowId, WindowFunc_ClearDialogWindowAndFrameNullPalette);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
+ ClearWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+static void WindowFunc_ClearDialogWindowAndFrameNullPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+{
+ FillBgTilemapBufferRect(bg, 0, tilemapLeft - 2, tilemapTop - 1, width + 4, height + 2, 0);
+}
+
+void DrawStdFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 baseTileNum, u8 paletteNum)
+{
+ sTileNum = baseTileNum;
+ sPaletteNum = paletteNum;
+ CallWindowFunction(windowId, WindowFunc_DrawStdFrameWithCustomTileAndPalette);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ PutWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+// not used
+static void DrawStdFrameWithCustomTile(u8 windowId, bool8 copyToVram, u16 baseTileNum)
+{
+ sTileNum = baseTileNum;
+ sPaletteNum = GetWindowAttribute(windowId, WINDOW_PALETTE_NUM);
+ CallWindowFunction(windowId, WindowFunc_DrawStdFrameWithCustomTileAndPalette);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ PutWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+static void WindowFunc_DrawStdFrameWithCustomTileAndPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+{
+ FillBgTilemapBufferRect(bg, sTileNum, tilemapLeft - 1, tilemapTop - 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 1, tilemapLeft, tilemapTop - 1, width, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 2, tilemapLeft + width, tilemapTop - 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 3, tilemapLeft - 1, tilemapTop, 1, height, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 5, tilemapLeft + width, tilemapTop, 1, height, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 6, tilemapLeft - 1, tilemapTop + height, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 7, tilemapLeft, tilemapTop + height, width, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 8, tilemapLeft + width, tilemapTop + height, 1, 1, sPaletteNum);
+}
+
+void ClearStdWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram)
+{
+ CallWindowFunction(windowId, WindowFunc_ClearStdWindowAndFrameToTransparent);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
+ ClearWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+static void WindowFunc_ClearStdWindowAndFrameToTransparent(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+{
+ FillBgTilemapBufferRect(bg, 0, tilemapLeft - 1, tilemapTop - 1, width + 2, height + 2, 0);
+}
+
+/*
+ The following functions are used for handling top bar window
+ in hall of fame screen and story mode screen before oak intro.
+ However, you can still designate a yPos value to place that bar
+ as well as the bar width.
+ The xPos is simply computed according to width (always right aligned).
+*/
+u8 CreateTopBarWindowLoadPalette(u8 bg, u8 width, u8 yPos, u8 palette, u16 baseTile)
+{
+ struct WindowTemplate window;
+
+ memset(&window, 0, sizeof(window));
+ if (bg > 3)
+ window.bg = 0;
+ else
+ window.bg = bg;
+ window.tilemapTop = yPos;
+ window.height = 2;
+ window.tilemapLeft = 0x1E - width;
+ window.width = width;
+ window.paletteNum = palette;
+ window.baseBlock = baseTile;
+ sTopBarWindowId = AddWindow(&window);
+ if (palette > 15)
+ palette = 15 * 16;
+ else
+ palette *= 16;
+ LoadPalette(stdpal_get(2), palette, 0x20);
+ return sTopBarWindowId;
+}
+
+void TopBarWindowPrintString(const u8 *string, u8 unused, bool8 copyToVram)
+{
+ s32 width;
+
+ if (sTopBarWindowId != 0xFF)
+ {
+ PutWindowTilemap(sTopBarWindowId);
+ FillWindowPixelBuffer(sTopBarWindowId, PIXEL_FILL(15));
+ width = GetStringWidth(0, string, 0);
+ AddTextPrinterParameterized3(sTopBarWindowId, 0, -20 - width, 1, &gUnknown_8456618, 0, string);
+ if (copyToVram)
+ CopyWindowToVram(sTopBarWindowId, 3);
+ }
+}
+
+void TopBarWindowPrintTwoStrings(const u8 *string, const u8 *string2, bool8 fgColorChooser, u8 unused, bool8 copyToVram)
+{
+ struct TextColor color;
+ s32 fgColor, width;
+
+ if ( sTopBarWindowId != 0xFF )
+ {
+ if (fgColorChooser)
+ {
+ color.fgColor = 0;
+ color.bgColor = 1;
+ color.shadowColor = 2;
+ }
+ else
+ {
+ color.fgColor = 15;
+ color.bgColor = 1;
+ color.shadowColor = 2;
+ }
+
+ PutWindowTilemap(sTopBarWindowId);
+ FillWindowPixelBuffer(sTopBarWindowId, PIXEL_FILL(15));
+ if (string2)
+ {
+ width = GetStringWidth(0, string2, 0);
+ AddTextPrinterParameterized3(sTopBarWindowId, 0, -20 - width, 1, &color, 0, string2);
+ }
+ AddTextPrinterParameterized4(sTopBarWindowId, 1, 4, 1, 0, 0, &color, 0, string);
+ if (copyToVram)
+ CopyWindowToVram(sTopBarWindowId, 3);
+ }
+}
+
+// not used
+static void CopyTopBarWindowToVram(void)
+{
+ if (sTopBarWindowId != 0xFF)
+ CopyWindowToVram(sTopBarWindowId, 3);
+}
+
+void ClearTopBarWindow(void)
+{
+ if (sTopBarWindowId != 0xFF)
+ {
+ FillWindowPixelBuffer(sTopBarWindowId, PIXEL_FILL(15));
+ CopyWindowToVram(sTopBarWindowId, 3);
+ }
+}
+
+void DestroyTopBarWindow(void)
+{
+ if (sTopBarWindowId != 0xFF)
+ {
+ FillWindowPixelBuffer(sTopBarWindowId, PIXEL_FILL(0));
+ ClearWindowTilemap(sTopBarWindowId);
+ CopyWindowToVram(sTopBarWindowId, 3);
+ RemoveWindow(sTopBarWindowId);
+ sTopBarWindowId = 0xFF;
+ }
+}
+
+u8 Menu_InitCursorInternal(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPos, bool8 APressMuted)
+{
+ s32 pos;
+
+ sMenu.left = left;
+ sMenu.top = top;
+ sMenu.minCursorPos = 0;
+ sMenu.maxCursorPos = numChoices - 1;
+ sMenu.windowId = windowId;
+ sMenu.fontId = fontId;
+ sMenu.optionHeight = cursorHeight;
+ sMenu.APressMuted = APressMuted;
+ pos = initialCursorPos;
+ if (pos < 0 || pos > sMenu.maxCursorPos)
+ sMenu.cursorPos = 0;
+ else
+ sMenu.cursorPos = pos;
+
+ Menu_MoveCursor(0);
+ return sMenu.cursorPos;
+}
+
+u8 Menu_InitCursor(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPos)
+{
+ return Menu_InitCursorInternal(windowId, fontId, left, top, cursorHeight, numChoices, initialCursorPos, 0);
+}
+
+// not used
+static u8 sub_810F818(u8 windowId, u8 fontId, u8 left, u8 top, u8 numChoices, u8 initialCursorPos)
+{
+ return Menu_InitCursor(windowId, fontId, left, top, GetMenuCursorDimensionByFont(fontId, 1), numChoices, initialCursorPos);
+}
+
+static void Menu_RedrawCursor(u8 oldPos, u8 newPos)
+{
+ u8 width, height;
+
+ width = GetMenuCursorDimensionByFont(sMenu.fontId, 0);
+ height = GetMenuCursorDimensionByFont(sMenu.fontId, 1);
+ FillWindowPixelRect(sMenu.windowId, 1, sMenu.left, sMenu.optionHeight * oldPos + sMenu.top, width, height);
+ AddTextPrinterParameterized(sMenu.windowId, sMenu.fontId, gFameCheckerText_ListMenuCursor, sMenu.left, sMenu.optionHeight * newPos + sMenu.top, 0, 0);
+}
+
+u8 Menu_MoveCursor(s8 cursorDelta)
+{
+ u8 oldPos = sMenu.cursorPos;
+ s32 newPos = sMenu.cursorPos + cursorDelta;
+
+ if (newPos < sMenu.minCursorPos)
+ sMenu.cursorPos = sMenu.maxCursorPos;
+ else if (newPos > sMenu.maxCursorPos)
+ sMenu.cursorPos = sMenu.minCursorPos;
+ else
+ sMenu.cursorPos += cursorDelta;
+ Menu_RedrawCursor(oldPos, sMenu.cursorPos);
+ return sMenu.cursorPos;
+}
+
+u8 Menu_MoveCursorNoWrapAround(s8 cursorDelta)
+{
+ u8 oldPos = sMenu.cursorPos;
+ s32 newPos = sMenu.cursorPos + cursorDelta;
+
+ if (newPos < sMenu.minCursorPos)
+ sMenu.cursorPos = sMenu.minCursorPos;
+ else if (newPos > sMenu.maxCursorPos)
+ sMenu.cursorPos = sMenu.maxCursorPos;
+ else
+ sMenu.cursorPos += cursorDelta;
+
+ Menu_RedrawCursor(oldPos, sMenu.cursorPos);
+ return sMenu.cursorPos;
+}
+
+u8 Menu_GetCursorPos(void)
+{
+ return sMenu.cursorPos;
+}
+
+s8 Menu_ProcessInput(void)
+{
+ if (JOY_NEW(A_BUTTON))
+ {
+ if (!sMenu.APressMuted)
+ PlaySE(SE_SELECT);
+ return sMenu.cursorPos;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (JOY_NEW(DPAD_UP))
+ {
+ PlaySE(SE_SELECT);
+ Menu_MoveCursor(-1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_NEW(DPAD_DOWN))
+ {
+ PlaySE(SE_SELECT);
+ Menu_MoveCursor(1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ return MENU_NOTHING_CHOSEN;
+}
+
+s8 Menu_ProcessInputNoWrapAround(void)
+{
+ u8 oldPos = sMenu.cursorPos;
+
+ if (JOY_NEW(A_BUTTON))
+ {
+ if (!sMenu.APressMuted)
+ PlaySE(SE_SELECT);
+ return sMenu.cursorPos;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (JOY_NEW(DPAD_UP))
+ {
+ if (oldPos != Menu_MoveCursorNoWrapAround(-1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_NEW(DPAD_DOWN))
+ {
+ if (oldPos != Menu_MoveCursorNoWrapAround(1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ return MENU_NOTHING_CHOSEN;
+}
+
+s8 Menu_ProcessInput_other(void)
+{
+ if (JOY_NEW(A_BUTTON))
+ {
+ if (!sMenu.APressMuted)
+ PlaySE(SE_SELECT);
+ return sMenu.cursorPos;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ Menu_MoveCursor(-1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ Menu_MoveCursor(1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ return MENU_NOTHING_CHOSEN;
+}
+
+s8 Menu_ProcessInputNoWrapAround_other(void)
+{
+ u8 oldPos = sMenu.cursorPos;
+
+ if (JOY_NEW(A_BUTTON))
+ {
+ if (!sMenu.APressMuted)
+ PlaySE(SE_SELECT);
+ return sMenu.cursorPos;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_UP)
+ {
+ if (oldPos != Menu_MoveCursorNoWrapAround(-1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_DOWN)
+ {
+ if (oldPos != Menu_MoveCursorNoWrapAround(1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ return MENU_NOTHING_CHOSEN;
+}
+
+void PrintTextArray(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 itemCount, const struct MenuAction *strs)
+{
+ u8 i;
+
+ for (i = 0; i < itemCount; i++)
+ AddTextPrinterParameterized(windowId, fontId, strs[i].text, left, (lineHeight * i) + top, 0xFF, NULL);
+ CopyWindowToVram(windowId, 2);
+}
+
+void MultichoiceList_PrintItems(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, u8 letterSpacing, u8 lineSpacing)
+{
+ u8 i;
+
+ for (i = 0; i < itemCount; i++)
+ AddTextPrinterParameterized5(windowId, fontId, strs[i].text, left, (lineHeight * i) + top, 0xFF, NULL, letterSpacing, lineSpacing);
+ CopyWindowToVram(windowId, 2);
+}
+
+void UnionRoomAndTradeMenuPrintOptions(u8 windowId, u8 fontId, u8 lineHeight, u8 itemCount, const struct MenuAction *strs)
+{
+ u8 left = GetMenuCursorDimensionByFont(fontId, 0);
+
+ PrintTextArray(windowId, fontId, left, 0, lineHeight, itemCount, strs);
+}
+
+void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *orderArray)
+{
+ u8 i;
+ struct TextPrinterTemplate printer;
+
+ printer.windowId = windowId;
+ printer.fontId = fontId;
+ printer.fgColor = GetFontAttribute(fontId, FONTATTR_COLOR_FOREGROUND);
+ printer.bgColor = GetFontAttribute(fontId, FONTATTR_COLOR_BACKGROUND);
+ printer.shadowColor = GetFontAttribute(fontId, FONTATTR_COLOR_SHADOW);
+ printer.unk = GetFontAttribute(fontId, FONTATTR_UNKNOWN);
+ printer.letterSpacing = letterSpacing;
+ printer.lineSpacing = GetFontAttribute(fontId, FONTATTR_LINE_SPACING);
+ printer.x = left;
+ printer.currentX = left;
+ for (i = 0; i < itemCount; i++)
+ {
+ printer.currentChar = strs[orderArray[i]].text;
+ printer.y = (lineHeight * i) + top;
+ printer.currentY = printer.y;
+ AddTextPrinter(&printer, 0xFF, NULL);
+ }
+ CopyWindowToVram(windowId, 2);
+}
+
+// not used
+static void sub_810FDE4(u8 windowId, u8 fontId, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *orderArray)
+{
+ AddItemMenuActionTextPrinters(windowId, fontId, GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH), 0, GetFontAttribute(fontId, FONTATTR_LETTER_SPACING), lineHeight, itemCount, strs, orderArray);
+}
+
+struct WindowTemplate SetWindowTemplateFields(u8 bg, u8 left, u8 top, u8 width, u8 height, u8 paletteNum, u16 baseBlock)
+{
+ struct WindowTemplate template;
+
+ template.bg = bg;
+ template.tilemapLeft = left;
+ template.tilemapTop = top;
+ template.width = width;
+ template.height = height;
+ template.paletteNum = paletteNum;
+ template.baseBlock = baseBlock;
+ return template;
+}
+
+// not used
+static u16 CreateWindowTemplate(u8 bg, u8 left, u8 top, u8 width, u8 height, u8 paletteNum, u16 baseBlock)
+{
+ struct WindowTemplate template = SetWindowTemplateFields(bg, left, top, width, height, paletteNum, baseBlock);
+ return AddWindow(&template);
+}
+
+void CreateYesNoMenu(const struct WindowTemplate *window, u8 fontId, u8 left, u8 top, u16 baseTileNum, u8 paletteNum, u8 initialCursorPos)
+{
+ struct TextPrinterTemplate textSubPrinter;
+
+ sYesNoWindowId = AddWindow(window);
+ DrawStdFrameWithCustomTileAndPalette(sYesNoWindowId, 1, baseTileNum, paletteNum);
+ textSubPrinter.currentChar = gUnknown_841623D;
+ textSubPrinter.windowId = sYesNoWindowId;
+ textSubPrinter.fontId = fontId;
+ textSubPrinter.x = GetMenuCursorDimensionByFont(fontId, 0) + left;
+ textSubPrinter.y = top;
+ textSubPrinter.currentX = textSubPrinter.x;
+ textSubPrinter.currentY = textSubPrinter.y;
+ textSubPrinter.fgColor = GetFontAttribute(fontId, FONTATTR_COLOR_FOREGROUND);
+ textSubPrinter.bgColor = GetFontAttribute(fontId, FONTATTR_COLOR_BACKGROUND);
+ textSubPrinter.shadowColor = GetFontAttribute(fontId, FONTATTR_COLOR_SHADOW);
+ textSubPrinter.unk = GetFontAttribute(fontId, FONTATTR_UNKNOWN);
+ textSubPrinter.letterSpacing = GetFontAttribute(fontId, FONTATTR_LETTER_SPACING);
+ textSubPrinter.lineSpacing = GetFontAttribute(fontId, FONTATTR_LINE_SPACING);
+ AddTextPrinter(&textSubPrinter, 0xFF, NULL);
+ Menu_InitCursor(sYesNoWindowId, fontId, left, top, GetFontAttribute(fontId, FONTATTR_MAX_LETTER_HEIGHT) + textSubPrinter.lineSpacing, 2, initialCursorPos);
+}
+
+// not used
+static void CreateYesNoMenu2(const struct WindowTemplate *window, u8 paletteNum, u16 baseTileNum, u8 initialCursorPos)
+{
+ CreateYesNoMenu(window, paletteNum, 0, 0, baseTileNum, initialCursorPos, 0);
+}
+
+s8 Menu_ProcessInputNoWrapClearOnChoose(void)
+{
+ s8 result = Menu_ProcessInputNoWrapAround();
+ if (result != MENU_NOTHING_CHOSEN)
+ DestroyYesNoMenu();
+ return result;
+}
+
+void DestroyYesNoMenu(void)
+{
+ ClearStdWindowAndFrameToTransparent(sYesNoWindowId, TRUE);
+ RemoveWindow(sYesNoWindowId);
+}
+
+void MultichoiceGrid_PrintItems(u8 windowId, u8 fontId, u8 itemWidth, u8 itemHeight, u8 cols, u8 rows, const struct MenuAction *strs)
+{
+ u8 width, i, j, yOffset;
+
+ fontId = fontId;
+ itemWidth = itemWidth;
+ itemHeight = itemHeight;
+ width = GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH);
+ yOffset = (16 - GetFontAttribute(fontId, FONTATTR_MAX_LETTER_HEIGHT)) / 2;
+ for (i = 0; i < rows; ++i)
+ for (j = 0; j < cols; ++j)
+ AddTextPrinterParameterized(windowId, fontId, strs[i * cols + j].text, itemWidth * j + width, yOffset + itemHeight * i, 0xFF, 0);
+ CopyWindowToVram(windowId, 2);
+}
+
+//not used
+static void MultichoiceGrid_PrintItemsCustomOrder(u8 windowId, u8 fontId, u8 itemWidth, u8 itemHeight, u8 cols, u8 rows, const struct MenuAction *strs, const u8 *orderArray)
+{
+ u8 width, i, j;
+
+ fontId = fontId;
+ itemWidth = itemWidth;
+ itemHeight = itemHeight;
+ width = GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH);
+ for (i = 0; i < rows; ++i)
+ for (j = 0; j < cols; ++j)
+ AddTextPrinterParameterized(windowId, fontId, strs[orderArray[i * cols + j]].text, itemWidth * j + width, itemHeight * i, 0xFF, 0);
+ CopyWindowToVram(windowId, 2);
+}
+
+static u8 MultichoiceGrid_InitCursorInternal(u8 windowId, u8 fontId, u8 left, u8 top, u8 optionWidth, u8 cursorHeight, u8 cols, u8 rows, u8 numChoices, u8 cursorPos)
+{
+ s32 pos;
+
+ sMenu.left = left;
+ sMenu.top = top;
+ sMenu.minCursorPos = 0;
+ sMenu.maxCursorPos = numChoices - 1;
+ sMenu.windowId = windowId;
+ sMenu.fontId = fontId;
+ sMenu.optionWidth = optionWidth;
+ sMenu.optionHeight = cursorHeight;
+ sMenu.columns = cols;
+ sMenu.rows = rows;
+ pos = cursorPos;
+ if (pos < 0 || pos > sMenu.maxCursorPos)
+ sMenu.cursorPos = 0;
+ else
+ sMenu.cursorPos = pos;
+ MultichoiceGrid_MoveCursor(0, 0);
+ return sMenu.cursorPos;
+}
+
+u8 MultichoiceGrid_InitCursor(u8 windowId, u8 fontId, u8 left, u8 top, u8 optionWidth, u8 cols, u8 rows, u8 cursorPos)
+{
+ s32 cursorHeight = 16;
+ u8 numChoices = cols * rows;
+
+ return MultichoiceGrid_InitCursorInternal(windowId, fontId, left, top, optionWidth, cursorHeight, cols, rows, numChoices, cursorPos);
+}
+
+static void MultichoiceGrid_RedrawCursor(u8 oldCursorPos, u8 newCursorPos)
+{
+ u8 cursorWidth = GetMenuCursorDimensionByFont(sMenu.fontId, 0);
+ u8 cursorHeight = GetMenuCursorDimensionByFont(sMenu.fontId, 1);
+ u8 xPos = (oldCursorPos % sMenu.columns) * sMenu.optionWidth + sMenu.left;
+ u8 yPos = (oldCursorPos / sMenu.columns) * sMenu.optionHeight + sMenu.top;
+
+ FillWindowPixelRect(sMenu.windowId, PIXEL_FILL(1), xPos, yPos, cursorWidth, cursorHeight);
+ xPos = (newCursorPos % sMenu.columns) * sMenu.optionWidth + sMenu.left;
+ yPos = (newCursorPos / sMenu.columns) * sMenu.optionHeight + sMenu.top;
+ AddTextPrinterParameterized(sMenu.windowId, sMenu.fontId, gFameCheckerText_ListMenuCursor, xPos, yPos, 0, 0);
+}
+
+static u8 MultichoiceGrid_MoveCursor(s8 deltaX, s8 deltaY)
+{
+ u8 oldPos = sMenu.cursorPos;
+
+ if (deltaX)
+ {
+ if ((sMenu.cursorPos % sMenu.columns) + deltaX < 0)
+ sMenu.cursorPos += sMenu.columns - 1;
+ else if ((sMenu.cursorPos % sMenu.columns) + deltaX >= sMenu.columns)
+ sMenu.cursorPos = (sMenu.cursorPos / sMenu.columns) * sMenu.columns;
+ else
+ sMenu.cursorPos += deltaX;
+ }
+ if (deltaY)
+ {
+ if ((sMenu.cursorPos / sMenu.columns) + deltaY < 0)
+ sMenu.cursorPos += sMenu.columns * (sMenu.rows - 1);
+ else if ((sMenu.cursorPos / sMenu.columns) + deltaY >= sMenu.rows)
+ sMenu.cursorPos -= sMenu.columns * (sMenu.rows - 1);
+ else
+ sMenu.cursorPos += (sMenu.columns * deltaY);
+ }
+ if (sMenu.cursorPos > sMenu.maxCursorPos)
+ {
+ sMenu.cursorPos = oldPos;
+ return sMenu.cursorPos;
+ }
+ else
+ {
+ MultichoiceGrid_RedrawCursor(oldPos, sMenu.cursorPos);
+ return sMenu.cursorPos;
+ }
+}
+
+static u8 MultichoiceGrid_MoveCursorIfValid(s8 deltaX, s8 deltaY)
+{
+ u8 oldPos = sMenu.cursorPos;
+
+ if (deltaX)
+ {
+ if (((sMenu.cursorPos % sMenu.columns) + deltaX >= 0) && ((sMenu.cursorPos % sMenu.columns) + deltaX < sMenu.columns))
+ sMenu.cursorPos += deltaX;
+ }
+ if (deltaY)
+ {
+ if (((sMenu.cursorPos / sMenu.columns) + deltaY >= 0) && ((sMenu.cursorPos / sMenu.columns) + deltaY < sMenu.rows))
+ sMenu.cursorPos += (sMenu.columns * deltaY);
+ }
+ if (sMenu.cursorPos > sMenu.maxCursorPos)
+ {
+ sMenu.cursorPos = oldPos;
+ return sMenu.cursorPos;
+ }
+ else
+ {
+ MultichoiceGrid_RedrawCursor(oldPos, sMenu.cursorPos);
+ return sMenu.cursorPos;
+ }
+}
+
+// not used
+static s8 sub_81105A0(void)
+{
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ return sMenu.cursorPos;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (JOY_NEW(DPAD_UP))
+ {
+ PlaySE(SE_SELECT);
+ MultichoiceGrid_MoveCursor(0, -1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_NEW(DPAD_DOWN))
+ {
+ PlaySE(SE_SELECT);
+ MultichoiceGrid_MoveCursor(0, 1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_NEW(DPAD_LEFT) || GetLRKeysState() == 1)
+ {
+ PlaySE(SE_SELECT);
+ MultichoiceGrid_MoveCursor(-1, 0);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_NEW(DPAD_RIGHT) || GetLRKeysState() == 2)
+ {
+ PlaySE(SE_SELECT);
+ MultichoiceGrid_MoveCursor(1, 0);
+ return MENU_NOTHING_CHOSEN;
+ }
+ return MENU_NOTHING_CHOSEN;
+}
+
+s8 Menu_ProcessInputGridLayout(void)
+{
+ u8 oldPos = sMenu.cursorPos;
+
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ return sMenu.cursorPos;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (JOY_NEW(DPAD_UP))
+ {
+ if (oldPos != MultichoiceGrid_MoveCursorIfValid(0, -1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_NEW(DPAD_DOWN))
+ {
+ if (oldPos != MultichoiceGrid_MoveCursorIfValid(0, 1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_NEW(DPAD_LEFT) || GetLRKeysState() == 1)
+ {
+ if (oldPos != MultichoiceGrid_MoveCursorIfValid(-1, 0))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_NEW(DPAD_RIGHT) || GetLRKeysState() == 2)
+ {
+ if (oldPos != MultichoiceGrid_MoveCursorIfValid(1, 0))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ return MENU_NOTHING_CHOSEN;
+}
+
+// not used
+static s8 sub_81106F4(void)
+{
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ return sMenu.cursorPos;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ MultichoiceGrid_MoveCursor(0, -1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ MultichoiceGrid_MoveCursor(0, 1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_LEFT || sub_80BF66C() == 1)
+ {
+ PlaySE(SE_SELECT);
+ MultichoiceGrid_MoveCursor(-1, 0);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_RIGHT || sub_80BF66C() == 2)
+ {
+ PlaySE(SE_SELECT);
+ MultichoiceGrid_MoveCursor(1, 0);
+ return MENU_NOTHING_CHOSEN;
+ }
+
+ return MENU_NOTHING_CHOSEN;
+}
+
+// not used
+static s8 sub_81107A0(void)
+{
+ u8 oldPos = sMenu.cursorPos;
+
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ return sMenu.cursorPos;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_UP)
+ {
+ if (oldPos != MultichoiceGrid_MoveCursorIfValid(0, -1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_DOWN)
+ {
+ if (oldPos != MultichoiceGrid_MoveCursorIfValid(0, 1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_LEFT || sub_80BF66C() == 1)
+ {
+ if (oldPos != MultichoiceGrid_MoveCursorIfValid(-1, 0))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_RIGHT || sub_80BF66C() == 2)
+ {
+ if (oldPos != MultichoiceGrid_MoveCursorIfValid(1, 0))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ return MENU_NOTHING_CHOSEN;
+}
diff --git a/src/menu2.c b/src/menu2.c
index ffe5865e4..6a3668cfa 100644
--- a/src/menu2.c
+++ b/src/menu2.c
@@ -504,7 +504,7 @@ void sub_812E6DC(u8 windowId, const u8 * src, u16 x, u16 y)
// Yeah, no, I'm not bothering with this
NAKED
-void sub_819A080(void * a0, void * a1, u16 a2, u16 a3, u16 a4, u16 a5, u16 a6, u16 a7)
+static void sub_812E768(void * a0, void * a1, u16 a2, u16 a3, u16 a4, u16 a5, u16 a6, u16 a7)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tmov r7, r10\n"
diff --git a/src/menu_helpers.c b/src/menu_helpers.c
index 12837c099..fdcb9a56e 100644
--- a/src/menu_helpers.c
+++ b/src/menu_helpers.c
@@ -22,10 +22,10 @@ static EWRAM_DATA u8 gUnknown_20399D0 = {0};
static void Task_ContinueTaskAfterMessagePrints(u8 taskId);
-void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 arg2, u8 arg3, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc)
+void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 tileNum, u8 paletteNum, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc)
{
gUnknown_20399D0 = windowId;
- DrawDialogFrameWithCustomTileAndPalette(windowId, TRUE, arg2, arg3);
+ DrawDialogFrameWithCustomTileAndPalette(windowId, TRUE, tileNum, paletteNum);
if (string != gStringVar4)
StringExpandPlaceholders(gStringVar4, string);
@@ -64,9 +64,9 @@ static void Task_CallYesOrNoCallback(u8 taskId)
}
}
-void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 arg2, u8 arg3, u8 arg4, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo)
+void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 fontId, u8 left, u8 top, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo)
{
- CreateYesNoMenu(template, arg2, arg3, arg4, tileStart, palette, 0);
+ CreateYesNoMenu(template, fontId, left, top, tileStart, palette, 0);
gUnknown_20399C8 = yesNo;
gTasks[taskId].func = Task_CallYesOrNoCallback;
}
diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c
index de6e1caa5..c67cd1358 100644
--- a/src/mevent_8145654.c
+++ b/src/mevent_8145654.c
@@ -6,6 +6,7 @@
#include "decompress.h"
#include "malloc.h"
#include "menu.h"
+#include "new_menu_helpers.h"
#include "pokemon_icon.h"
#include "mystery_gift_menu.h"
#include "menu_indicators.h"
diff --git a/src/money.c b/src/money.c
index ffaba2e29..39e5aaa32 100644
--- a/src/money.c
+++ b/src/money.c
@@ -109,7 +109,7 @@ void PrintMoneyAmount(u8 windowId, u8 x, u8 y, int amount, u8 speed)
void PrintMoneyAmountInMoneyBoxWithBorder(u8 windowId, u16 tileStart, u8 pallete, int amount)
{
- SetWindowBorderStyle(windowId, FALSE, tileStart, pallete);
+ DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, tileStart, pallete);
AddTextPrinterParameterized(windowId, 2, gUnknown_8419CE7, 0, 0, 0xFF, 0);
PrintMoneyAmountInMoneyBox(windowId, amount, 0);
}
@@ -121,11 +121,10 @@ void ChangeAmountInMoneyBox(int amount)
void DrawMoneyBox(int amount, u8 x, u8 y)
{
- struct WindowTemplate template, template2;
+ struct WindowTemplate template;
- SetWindowTemplateFields(&template, 0, x + 1, y + 1, 8, 3, 15, 8);
- template2 = template;
- sMoneyBoxWindowId = AddWindow(&template2);
+ template = SetWindowTemplateFields(0, x + 1, y + 1, 8, 3, 15, 8);
+ sMoneyBoxWindowId = AddWindow(&template);
FillWindowPixelBuffer(sMoneyBoxWindowId, 0);
PutWindowTilemap(sMoneyBoxWindowId);
TextWindow_SetStdFrame0_WithPal(sMoneyBoxWindowId, 0x21D, 0xD0);
@@ -134,7 +133,7 @@ void DrawMoneyBox(int amount, u8 x, u8 y)
void HideMoneyBox(void)
{
- ClearMenuWindow(sMoneyBoxWindowId, FALSE);
+ ClearStdWindowAndFrameToTransparent(sMoneyBoxWindowId, FALSE);
CopyWindowToVram(sMoneyBoxWindowId, 2);
RemoveWindow(sMoneyBoxWindowId);
}
diff --git a/src/new_menu_helpers.c b/src/new_menu_helpers.c
index 1939154da..9d2a5c883 100644
--- a/src/new_menu_helpers.c
+++ b/src/new_menu_helpers.c
@@ -603,7 +603,7 @@ void sub_80F771C(bool8 copyToVram)
void SetStdWindowBorderStyle(u8 windowId, bool8 copyToVram)
{
- SetWindowBorderStyle(windowId, copyToVram, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM);
+ DrawStdFrameWithCustomTileAndPalette(windowId, copyToVram, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM);
}
void sub_80F7768(u8 windowId, bool8 copyToVram)
@@ -671,10 +671,8 @@ u8 sub_80F78E0(u8 height)
{
if (sStartMenuWindowId == 0xFF)
{
- struct WindowTemplate wTemp1, wTemp2;
- SetWindowTemplateFields(&wTemp1, 0, 0x16, 1, 7, height * 2 - 1, DLG_WINDOW_PALETTE_NUM, 0x13D);
- wTemp2 = wTemp1;
- sStartMenuWindowId = AddWindow(&wTemp2);
+ struct WindowTemplate template = SetWindowTemplateFields(0, 0x16, 1, 7, height * 2 - 1, DLG_WINDOW_PALETTE_NUM, 0x13D);
+ sStartMenuWindowId = AddWindow(&template);
PutWindowTilemap(sStartMenuWindowId);
}
return sStartMenuWindowId;
diff --git a/src/oak_speech.c b/src/oak_speech.c
index 14e7c87d0..26736604e 100644
--- a/src/oak_speech.c
+++ b/src/oak_speech.c
@@ -37,7 +37,7 @@ struct OakSpeechResources
u16 unk_0010;
u16 unk_0012;
u16 unk_0014[4];
- u8 unk_001C[3];
+ struct TextColor textColor;
u8 textSpeed;
u8 filler_0020[0x1800];
u8 bg2TilemapBuffer[0x400];
@@ -546,7 +546,7 @@ static void Task_OaksSpeech1(u8 taskId)
CopyBgTilemapBufferToVram(1);
break;
case 7:
- CreateWindow_SnapRight_StdPal(0, 30, 0, 13, 0x1C4);
+ CreateTopBarWindowLoadPalette(0, 30, 0, 13, 0x1C4);
FillBgTilemapBufferRect_Palette0(1, 0xD00F, 0, 0, 30, 2);
FillBgTilemapBufferRect_Palette0(1, 0xD002, 0, 2, 30, 1);
FillBgTilemapBufferRect_Palette0(1, 0xD00E, 0, 19, 30, 1);
@@ -572,7 +572,7 @@ static void Task_OaksSpeech1(u8 taskId)
static void CreateHelpDocsPage1(void)
{
- Menu_PrintHelpSystemUIHeader(gText_Controls, gText_ABUTTONNext, 0, 0, 1);
+ TopBarWindowPrintTwoStrings(gText_Controls, gText_ABUTTONNext, 0, 0, 1);
sOakSpeechResources->unk_0014[0] = AddWindow(sHelpDocsWindowTemplatePtrs[sOakSpeechResources->unk_0012]);
PutWindowTilemap(sOakSpeechResources->unk_0014[0]);
FillWindowPixelBuffer(sOakSpeechResources->unk_0014[0], 0x00);
@@ -592,7 +592,7 @@ static void Task_OakSpeech4(u8 taskId)
}
else
{
- PrintTextOnRightSnappedWindow(gText_ABUTTONNext_BBUTTONBack, 0, 1);
+ TopBarWindowPrintString(gText_ABUTTONNext_BBUTTONBack, 0, 1);
for (i = 0; i < 3; i++)
{
sOakSpeechResources->unk_0014[i] = AddWindow(&sHelpDocsWindowTemplatePtrs[sOakSpeechResources->unk_0012][i]);
@@ -716,8 +716,8 @@ static void Task_OakSpeech6(u8 taskId)
else
{
PlayBGM(BGM_FRLG_GAME_EXPLANATION_MIDDLE);
- sub_810F71C();
- PrintTextOnRightSnappedWindow(gText_ABUTTONNext, 0, 1);
+ ClearTopBarWindow();
+ TopBarWindowPrintString(gText_ABUTTONNext, 0, 1);
sOakSpeechResources->unk_0008 = MallocAndDecompress(sNewGameAdventureIntroTilemap, &sp14);
CopyToBgTilemapBufferRect(1, sOakSpeechResources->unk_0008, 0, 2, 30, 19);
CopyBgTilemapBufferToVram(1);
@@ -793,13 +793,13 @@ static void Task_OakSpeech7(u8 taskId)
AddTextPrinterParameterized4(data[14], 2, 3, 5, 1, 0, &sTextColor_OakSpeech, 0, sNewGameAdventureIntroTextPointers[sOakSpeechResources->unk_0012]);
if (sOakSpeechResources->unk_0012 == 0)
{
- sub_810F71C();
- PrintTextOnRightSnappedWindow(gText_ABUTTONNext, 0, 1);
+ ClearTopBarWindow();
+ TopBarWindowPrintString(gText_ABUTTONNext, 0, 1);
}
else
{
- sub_810F71C();
- PrintTextOnRightSnappedWindow(gText_ABUTTONNext_BBUTTONBack, 0, 1);
+ ClearTopBarWindow();
+ TopBarWindowPrintString(gText_ABUTTONNext_BBUTTONBack, 0, 1);
}
gMain.state++;
}
@@ -846,7 +846,7 @@ static void Task_OakSpeech8(u8 taskId)
if (!gPaletteFade.active)
{
- sub_810F740();
+ DestroyTopBarWindow();
FillWindowPixelBuffer(data[14], 0x00);
ClearWindowTilemap(data[14]);
CopyWindowToVram(data[14], 3);
@@ -1054,17 +1054,17 @@ static void Task_OakSpeech19(u8 taskId)
{
gTasks[taskId].data[13] = AddWindow(&sNewGameAdventureIntroWindowTemplates[1]);
PutWindowTilemap(gTasks[taskId].data[13]);
- SetWindowBorderStyle(gTasks[taskId].data[13], 1, GetStdWindowBaseTileNum(), 14);
+ DrawStdFrameWithCustomTileAndPalette(gTasks[taskId].data[13], 1, GetStdWindowBaseTileNum(), 14);
FillWindowPixelBuffer(gTasks[taskId].data[13], 0x11);
- sOakSpeechResources->unk_001C[0] = 1;
- sOakSpeechResources->unk_001C[1] = 2;
- sOakSpeechResources->unk_001C[2] = 3;
- AddTextPrinterParameterized3(gTasks[taskId].data[13], 2, 8, 1, sOakSpeechResources->unk_001C, 0, gText_Boy);
- sOakSpeechResources->unk_001C[0] = 1;
- sOakSpeechResources->unk_001C[1] = 2;
- sOakSpeechResources->unk_001C[2] = 3;
- AddTextPrinterParameterized3(gTasks[taskId].data[13], 2, 8, 17, sOakSpeechResources->unk_001C, 0, gText_Girl);
- ProgramAndPlaceMenuCursorOnWindow(gTasks[taskId].data[13], 2, 0, 1, GetFontAttribute(2, 1) + 2, 2, 0);
+ sOakSpeechResources->textColor.fgColor = 1;
+ sOakSpeechResources->textColor.bgColor = 2;
+ sOakSpeechResources->textColor.shadowColor = 3;
+ AddTextPrinterParameterized3(gTasks[taskId].data[13], 2, 8, 1, &sOakSpeechResources->textColor, 0, gText_Boy);
+ sOakSpeechResources->textColor.fgColor = 1;
+ sOakSpeechResources->textColor.bgColor = 2;
+ sOakSpeechResources->textColor.shadowColor = 3;
+ AddTextPrinterParameterized3(gTasks[taskId].data[13], 2, 8, 17, &sOakSpeechResources->textColor, 0, gText_Girl);
+ Menu_InitCursor(gTasks[taskId].data[13], 2, 0, 1, GetFontAttribute(2, 1) + 2, 2, 0);
CopyWindowToVram(gTasks[taskId].data[13], 3);
gTasks[taskId].func = Task_OakSpeech20;
}
@@ -1072,7 +1072,7 @@ static void Task_OakSpeech19(u8 taskId)
static void Task_OakSpeech20(u8 taskId)
{
- s8 input = ProcessMenuInputNoWrapAround();
+ s8 input = Menu_ProcessInputNoWrapAround();
switch (input)
{
case 0:
@@ -1092,7 +1092,7 @@ static void Task_OakSpeech20(u8 taskId)
static void Task_OakSpeech21(u8 taskId)
{
s16 * data = gTasks[taskId].data;
- ClearMenuWindow(data[13], 1);
+ ClearStdWindowAndFrameToTransparent(data[13], 1);
RemoveWindow(data[13]);
data[13] = 0;
ClearDialogWindowAndFrame(0, 1);
@@ -1176,7 +1176,7 @@ static void Task_OakSpeech28(u8 taskId)
static void Task_OakSpeech29(u8 taskId)
{
s16 * data = gTasks[taskId].data;
- s8 input = ProcessMenuInput();
+ s8 input = Menu_ProcessInput();
switch (input)
{
case 1:
@@ -1184,7 +1184,7 @@ static void Task_OakSpeech29(u8 taskId)
case 3:
case 4:
PlaySE(SE_SELECT);
- ClearMenuWindow(data[13], TRUE);
+ ClearStdWindowAndFrameToTransparent(data[13], TRUE);
RemoveWindow(data[13]);
GetDefaultName(sOakSpeechResources->unk_0010, input - 1);
data[15] = 1;
@@ -1211,7 +1211,7 @@ static void Task_OakSpeech25(u8 taskId)
}
else
{
- ClearMenuWindow(gTasks[taskId].data[13], 1);
+ ClearStdWindowAndFrameToTransparent(gTasks[taskId].data[13], 1);
RemoveWindow(gTasks[taskId].data[13]);
DoNamingScreen(4, gSaveBlock1Ptr->rivalName, 0, 0, 0, CB2_ReturnFromNamingScreen);
}
@@ -1850,7 +1850,7 @@ static void PrintNameChoiceOptions(u8 taskId, u8 state)
data[13] = AddWindow(&sNewGameAdventureIntroWindowTemplates[3]);
PutWindowTilemap(data[13]);
- SetWindowBorderStyle(data[13], 1, GetStdWindowBaseTileNum(), 14);
+ DrawStdFrameWithCustomTileAndPalette(data[13], 1, GetStdWindowBaseTileNum(), 14);
FillWindowPixelBuffer(gTasks[taskId].data[13], 0x11);
AddTextPrinterParameterized(data[13], 2, gOtherText_NewName, 8, 1, 0, NULL);
if (state == 0)
@@ -1861,7 +1861,7 @@ static void PrintNameChoiceOptions(u8 taskId, u8 state)
{
AddTextPrinterParameterized(data[13], 2, textPtrs[i], 8, 16 * (i + 1) + 1, 0, NULL);
}
- ProgramAndPlaceMenuCursorOnWindow(data[13], 2, 0, 1, 16, 5, 0);
+ Menu_InitCursor(data[13], 2, 0, 1, 16, 5, 0);
CopyWindowToVram(data[13], 3);
}
diff --git a/src/quest_log.c b/src/quest_log.c
index d08724a56..0d1cb7984 100644
--- a/src/quest_log.c
+++ b/src/quest_log.c
@@ -37,6 +37,7 @@
#include "link.h"
#include "quest_log_8150454.h"
#include "quest_log.h"
+#include "new_menu_helpers.h"
u8 gUnknown_3005E88;
diff --git a/src/sound.c b/src/sound.c
index ba6511d1c..dc4b9f604 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -169,7 +169,7 @@ void FadeOutAndFadeInNewMapMusic(u16 songNum, u8 fadeOutSpeed, u8 fadeInSpeed)
sMapMusicFadeInSpeed = fadeInSpeed;
}
-void FadeInNewMapMusic(u16 songNum, u8 speed)
+static void FadeInNewMapMusic(u16 songNum, u8 speed)
{
FadeInNewBGM(songNum, speed);
sCurrentMapMusic = songNum;
diff --git a/src/tm_case.c b/src/tm_case.c
index 0266f9c90..79e10bcfc 100644
--- a/src/tm_case.c
+++ b/src/tm_case.c
@@ -795,7 +795,7 @@ static void Task_SelectTMAction_FromFieldBag(u8 taskId)
sTMCaseDynamicResources->numMenuActions = NELEMS(sMenuActionIndices_UnionRoom);
}
AddItemMenuActionTextPrinters(sTMCaseDynamicResources->contextMenuWindowId, 2, GetMenuCursorDimensionByFont(2, 0), 2, 0, GetFontAttribute(2, 1) + 2, sTMCaseDynamicResources->numMenuActions, sMenuActions_UseGiveExit, sTMCaseDynamicResources->menuActionIndices);
- ProgramAndPlaceMenuCursorOnWindow(sTMCaseDynamicResources->contextMenuWindowId, 2, 0, 2, GetFontAttribute(2, 1) + 2, sTMCaseDynamicResources->numMenuActions, 0);
+ Menu_InitCursor(sTMCaseDynamicResources->contextMenuWindowId, 2, 0, 2, GetFontAttribute(2, 1) + 2, sTMCaseDynamicResources->numMenuActions, 0);
strbuf = Alloc(256);
GetTMNumberAndMoveString(strbuf, gSpecialVar_ItemId);
StringAppend(strbuf, gText_IsSelected);
@@ -817,7 +817,7 @@ static void Task_TMContextMenu_HandleInput(u8 taskId)
if (sub_80BF72C() != TRUE)
{
- input = ProcessMenuInputNoWrapAround();
+ input = Menu_ProcessInputNoWrapAround();
switch (input)
{
case -1:
@@ -837,7 +837,7 @@ static void Task_TMContextMenu_HandleInput(u8 taskId)
static void TMHMContextMenuAction_Use(u8 taskId)
{
RemoveTMContextMenu(&sTMCaseDynamicResources->contextMenuWindowId);
- ClearMenuWindow(2, 0);
+ ClearStdWindowAndFrameToTransparent(2, 0);
ClearWindowTilemap(2);
PutWindowTilemap(0);
ScheduleBgCopyTilemapToVram(0);
@@ -859,7 +859,7 @@ static void TMHMContextMenuAction_Give(u8 taskId)
s16 * data = gTasks[taskId].data;
u16 itemId = BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1]);
RemoveTMContextMenu(&sTMCaseDynamicResources->contextMenuWindowId);
- ClearMenuWindow(2, 0);
+ ClearStdWindowAndFrameToTransparent(2, 0);
ClearWindowTilemap(2);
PutWindowTilemap(1);
PutWindowTilemap(4);
@@ -912,7 +912,7 @@ static void Subtask_CloseContextMenuAndReturnToMain(u8 taskId)
DestroyListMenuTask(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow);
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sTMCaseStaticResources.scrollOffset, sTMCaseStaticResources.selectedRow);
PrintListMenuCursorByID_WithColorIdx(data[0], 1);
- ClearMenuWindow_BorderThickness2(6, 0);
+ ClearDialogWindowAndFrameToTransparent(6, 0);
ClearWindowTilemap(6);
PutWindowTilemap(1);
PutWindowTilemap(4);
@@ -927,7 +927,7 @@ static void TMHMContextMenuAction_Exit(u8 taskId)
s16 * data = gTasks[taskId].data;
RemoveTMContextMenu(&sTMCaseDynamicResources->contextMenuWindowId);
- ClearMenuWindow(2, 0);
+ ClearStdWindowAndFrameToTransparent(2, 0);
ClearWindowTilemap(2);
PutWindowTilemap(0);
PrintListMenuCursorByID_WithColorIdx(data[0], 1);
@@ -1016,8 +1016,8 @@ static void Task_SaleOfTMsCancelled(u8 taskId)
{
s16 * data = gTasks[taskId].data;
- ClearMenuWindow(8, 0);
- ClearMenuWindow_BorderThickness2(6, 0);
+ ClearStdWindowAndFrameToTransparent(8, 0);
+ ClearDialogWindowAndFrameToTransparent(6, 0);
PutWindowTilemap(0);
PutWindowTilemap(1);
PutWindowTilemap(3);
@@ -1065,7 +1065,7 @@ static void Task_QuantitySelect_HandleInput(u8 taskId)
else if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
- ClearMenuWindow(7, 0);
+ ClearStdWindowAndFrameToTransparent(7, 0);
ScheduleBgCopyTilemapToVram(0);
ScheduleBgCopyTilemapToVram(1);
RemoveTMCaseScrollIndicatorArrowPair();
@@ -1074,9 +1074,9 @@ static void Task_QuantitySelect_HandleInput(u8 taskId)
else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
- ClearMenuWindow(7, 0);
- ClearMenuWindow(8, 0);
- ClearMenuWindow_BorderThickness2(6, 0);
+ ClearStdWindowAndFrameToTransparent(7, 0);
+ ClearStdWindowAndFrameToTransparent(8, 0);
+ ClearDialogWindowAndFrameToTransparent(6, 0);
PutWindowTilemap(3);
PutWindowTilemap(0);
PutWindowTilemap(1);
@@ -1123,8 +1123,8 @@ static void Task_AfterSale_ReturnToList(u8 taskId)
if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
- ClearMenuWindow(8, 0);
- ClearMenuWindow_BorderThickness2(6, 0);
+ ClearStdWindowAndFrameToTransparent(8, 0);
+ ClearDialogWindowAndFrameToTransparent(6, 0);
PutWindowTilemap(1);
PutWindowTilemap(3);
PutWindowTilemap(4);
@@ -1249,7 +1249,7 @@ static void Task_TMCaseDude_Playback(u8 taskId)
{
FillBG2RowWithPalette_2timesNplus1(0);
BeginNormalPaletteFade(0x00000400, 0, 6, 0, 0);
- ClearMenuWindow_BorderThickness2(6, 0);
+ ClearDialogWindowAndFrameToTransparent(6, 0);
ScheduleBgCopyTilemapToVram(1);
data[8]++;
}
@@ -1322,12 +1322,12 @@ static void AddTextPrinterParameterized_ColorByIndex(u8 windowId, u8 fontId, con
static void TMCase_SetWindowBorder1(u8 windowId)
{
- SetWindowBorderStyle(windowId, FALSE, 0x5B, 0x0E);
+ DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, 0x5B, 0x0E);
}
static void TMCase_SetWindowBorder2(u8 windowId)
{
- SetWindowBorderStyle(windowId, FALSE, 0x78, 0x0D);
+ DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, 0x78, 0x0D);
}
static void TMCase_PrintMessageWithFollowupTask(u8 taskId, u8 windowId, const u8 * str, TaskFunc func)
@@ -1420,7 +1420,7 @@ static u8 AddTMContextMenu(u8 * a0, u8 a1)
static void RemoveTMContextMenu(u8 * a0)
{
- ClearMenuWindow(*a0, FALSE);
+ ClearStdWindowAndFrameToTransparent(*a0, FALSE);
ClearWindowTilemap(*a0);
RemoveWindow(*a0);
ScheduleBgCopyTilemapToVram(0);
diff --git a/src/trainer_tower.c b/src/trainer_tower.c
index c260d2665..6ef7157af 100644
--- a/src/trainer_tower.c
+++ b/src/trainer_tower.c
@@ -1299,7 +1299,7 @@ void sub_815E720(void)
void sub_815E88C(void)
{
u8 windowId = VarGet(VAR_0x4001);
- ClearMenuWindow(windowId, TRUE);
+ ClearStdWindowAndFrameToTransparent(windowId, TRUE);
RemoveWindow(windowId);
}
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 3f520c4af..f757982ff 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -1075,7 +1075,7 @@ gUnknown_2039A34: @ 2039A34
.include "src/save.o"
.include "src/mystery_event_script.o"
-gPaletteDecompressionBuffer: @ 203AAB0
+gUnknown_203AAB0: @ 203AAB0
.space 0x4
gUnknown_203AAB4: @ 203AAB4
@@ -1217,21 +1217,7 @@ gUnknown_203ADDC: @ 203ADDC
gUnknown_203ADE0: @ 203ADE0
.space 0x4
-gUnknown_203ADE4: @ 203ADE4
- .space 0xC
-
-gUnknown_203ADF0: @ 203ADF0
- .space 0x2
-
-gUnknown_203ADF2: @ 203ADF2
- .space 0x1
-
-gUnknown_203ADF3: @ 203ADF3
- .space 0x1
-
-gUnknown_203ADF4: @ 203ADF4
- .space 0x4
-
+ .include "src/menu.o"
.include "src/quest_log.o"
gUnknown_203B04C: @ 203B04C