diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-07-14 11:29:23 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-07-14 11:29:23 -0400 |
commit | 939bd127bba0ba3af5b94a288ab47a6e374adfe2 (patch) | |
tree | af573b5e11dc940c31bfbdc928dd9b56938ac4d6 | |
parent | 31c26e862a3d775c2a78fac646c614efe96033c0 (diff) | |
parent | 53b950019aca8896d70c4d5e4f9e2a1d5143e489 (diff) |
Merge branch 'master' into battle_records
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); @@ -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 |