finished menu (1 failed attempt)

This commit is contained in:
jiangzhengwenjz
2019-07-09 14:07:19 +08:00
parent 09b94d8b34
commit e0e81c5fbe
38 changed files with 1215 additions and 3676 deletions
+4 -4
View File
@@ -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]
+7 -7
View File
@@ -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]
+2 -2
View File
@@ -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
+3 -3
View File
@@ -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
+6 -6
View File
@@ -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]
+3 -3
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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]
-3455
View File
File diff suppressed because it is too large Load Diff
+18 -18
View File
@@ -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
+14 -14
View File
@@ -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
+1 -1
View File
@@ -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]
+1 -1
View File
@@ -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
+14 -14
View File
@@ -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]
+13 -13
View File
@@ -271,7 +271,7 @@ _0809CB32:
movs r1, 0x2
movs r2, 0x8
movs r3, 0x2
bl sub_810FBE8
bl PrintMultichoiceListItems
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 PrintMultichoiceListItems
_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 MultichoiceGridPrintItems
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 MultichoiceGridInitCursor
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
+9 -9
View File
@@ -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
+2 -2
View File
@@ -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:
+7 -7
View File
@@ -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
+3 -3
View File
@@ -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
+9 -9
View File
@@ -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}
+1 -3
View File
@@ -823,9 +823,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
+41 -20
View File
@@ -17,44 +17,65 @@ struct MenuAction
} func;
};
struct WindowTemplateWithAttr
{
struct WindowTemplate *ptr;
u32 attr;
};
void AddTextPrinterParameterized3(u8, u8, u8, u8, const void *, s8, const u8 *);
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_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);
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 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 *);
// 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 MultichoiceGridInitCursor(u8 windowId, u8 fontId, u8 left, u8 top, u8 optionWidth, u8 cols, u8 rows, u8 cursorPos);
void MultichoiceGridPrintItems(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 PrintMultichoiceListItems(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_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);
// currently incorrect, WIP
void SetWindowTemplateFields(struct WindowTemplate *template, u8 bg, u8 left, u8 top, u8 width, u8 height, u8 paletteNum, u16 baseBlock);
#endif // GUARD_MENU_H
+2
View File
@@ -28,5 +28,7 @@ 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);
u8 GetLRKeysState(void);
u8 sub_80BF66C(void);
#endif //GUARD_MENU_HELPERS_H
+2
View File
@@ -178,4 +178,6 @@ extern const u8 gUnknown_84169DC[];
extern const u8 gUnknown_84162BD[];
extern const u8 gUnknown_841623D[];
#endif //GUARD_STRINGS_H
+2 -1
View File
@@ -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);
@@ -432,6 +432,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);
+5 -5
View File
@@ -240,7 +240,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 +252,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 +265,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 +285,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);
+2 -2
View File
@@ -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);
}
@@ -127,6 +127,6 @@ void sub_815F094(void)
void sub_815F114(void)
{
ClearWindowTilemap(gUnknown_203F464);
ClearMenuWindow(gUnknown_203F464, 1);
ClearStdWindowAndFrameToTransparent(gUnknown_203F464, 1);
RemoveWindow(gUnknown_203F464);
}
+2 -2
View File
@@ -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)
+3 -3
View File
@@ -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);
}
@@ -88,7 +88,7 @@ void ShowCoinsWindow(u32 coinAmount, u8 x, u8 y)
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 +96,6 @@ void ShowCoinsWindow(u32 coinAmount, u8 x, u8 y)
void HideCoinsWindow(void)
{
ClearWindowTilemap(sCoinsWindowId);
ClearMenuWindow(sCoinsWindowId, TRUE);
ClearStdWindowAndFrameToTransparent(sCoinsWindowId, TRUE);
RemoveWindow(sCoinsWindowId);
}
+1 -1
View File
@@ -85,7 +85,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;
+10 -10
View File
@@ -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;
+984
View File
@@ -0,0 +1,984 @@
#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 const struct TextColor gUnknown_8456618 =
{
.fgColor = 15,
.bgColor = 1,
.shadowColor = 2,
};
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 MultichoiceGridComputeNewCursorPos(s8 deltaX, s8 deltaY);
u8 Menu_MoveCursor(s8 cursorDelta);
void DestroyYesNoMenu(void);
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 notUsed, 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 Unused_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);
}
void RedrawMenuCursor(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;
RedrawMenuCursor(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;
RedrawMenuCursor(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 PrintMultichoiceListItems(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 WindowTemplateWithAttr SetWindowTemplateFields(struct WindowTemplate *template, u8 bg, u8 left, u8 top, u8 width, u8 height, u8 paletteNum, u16 baseBlock)
{
struct WindowTemplate temp;
struct WindowTemplateWithAttr ret;
temp.bg = bg;
temp.tilemapLeft = left;
temp.tilemapTop = top;
temp.width = width;
temp.height = height;
temp.paletteNum = paletteNum;
temp.baseBlock = baseBlock;
*template = temp;
ret.ptr = template;
ret.attr = *((u32*)&temp);
return ret;
}
*/
NAKED
void SetWindowTemplateFields(struct WindowTemplate *template, u8 bg, u8 left, u8 top, u8 width, u8 height, u8 paletteNum, u16 baseBlock)
{
asm_unified("\n\
push {r4-r7,lr}\n\
mov r7, r10\n\
mov r6, r9\n\
mov r5, r8\n\
push {r5-r7}\n\
sub sp, 0x8\n\
ldr r4, [sp, 0x28]\n\
mov r12, r4\n\
ldr r4, [sp, 0x2C]\n\
mov r9, r4\n\
ldr r4, [sp, 0x30]\n\
mov r10, r4\n\
ldr r7, [sp, 0x34]\n\
lsls r1, 24\n\
lsrs r1, 24\n\
lsls r2, 24\n\
lsls r3, 24\n\
mov r4, r9\n\
lsls r4, 24\n\
lsrs r4, 24\n\
mov r9, r4\n\
mov r4, r10\n\
lsls r4, 24\n\
mov r10, r4\n\
ldr r4, _0810FEF0 @ =0xffffff00\n\
mov r8, r4\n\
mov r5, r8\n\
ldr r4, [sp]\n\
ands r5, r4\n\
orrs r5, r1\n\
str r5, [sp]\n\
lsrs r2, 16\n\
ldr r6, _0810FEF4 @ =0xffff00ff\n\
adds r4, r6, 0\n\
ands r4, r5\n\
orrs r4, r2\n\
str r4, [sp]\n\
lsrs r3, 8\n\
ldr r1, _0810FEF8 @ =0xff00ffff\n\
ands r1, r4\n\
orrs r1, r3\n\
str r1, [sp]\n\
mov r2, r12\n\
lsls r2, 24\n\
mov r12, r2\n\
ldr r2, _0810FEFC @ =0x00ffffff\n\
ands r1, r2\n\
mov r4, r12\n\
orrs r4, r1\n\
str r4, [sp]\n\
ldr r1, [sp, 0x4]\n\
mov r2, r8\n\
ands r1, r2\n\
mov r4, r9\n\
orrs r1, r4\n\
mov r8, r1\n\
str r1, [sp, 0x4]\n\
mov r1, r10\n\
lsrs r1, 16\n\
mov r2, r8\n\
ands r6, r2\n\
orrs r6, r1\n\
str r6, [sp, 0x4]\n\
lsls r2, r7, 16\n\
ldr r1, _0810FF00 @ =0x0000ffff\n\
ands r6, r1\n\
orrs r6, r2\n\
str r6, [sp, 0x4]\n\
ldr r1, [sp]\n\
ldr r2, [sp, 0x4]\n\
str r1, [r0]\n\
str r2, [r0, 0x4]\n\
add sp, 0x8\n\
pop {r3-r5}\n\
mov r8, r3\n\
mov r9, r4\n\
mov r10, r5\n\
pop {r4-r7}\n\
pop {r2}\n\
bx r2\n\
.align 2, 0\n\
_0810FEF0: .4byte 0xffffff00\n\
_0810FEF4: .4byte 0xffff00ff\n\
_0810FEF8: .4byte 0xff00ffff\n\
_0810FEFC: .4byte 0x00ffffff\n\
_0810FF00: .4byte 0x0000ffff\n\
");
}
// not used
static u16 CreateWindowTemplate(u8 bg, u8 left, u8 top, u8 width, u8 height, u8 paletteNum, u16 baseBlock)
{
struct WindowTemplate template, temp;
SetWindowTemplateFields(&template, bg, left, top, width, height, paletteNum, baseBlock);
temp = template;
return (u16)AddWindow(&temp);
}
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 Unused_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 MultichoiceGridPrintItems(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 Unused_MultichoiceGridPrintItemsCustomOrder(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 MultichoiceGridInitCursorInternal(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;
MultichoiceGridComputeNewCursorPos(0, 0);
return sMenu.cursorPos;
}
u8 MultichoiceGridInitCursor(u8 windowId, u8 fontId, u8 left, u8 top, u8 optionWidth, u8 cols, u8 rows, u8 cursorPos)
{
s32 cursorHeight = 16;
u8 numChoices = cols * rows;
return MultichoiceGridInitCursorInternal(windowId, fontId, left, top, optionWidth, cursorHeight, cols, rows, numChoices, cursorPos);
}
static void MultichoiceGridUpdateCursorPos(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 MultichoiceGridComputeNewCursorPos(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
{
MultichoiceGridUpdateCursorPos(oldPos, sMenu.cursorPos);
return sMenu.cursorPos;
}
}
static u8 MultichoiceGridComputeNewCursorPosIfValid(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
{
MultichoiceGridUpdateCursorPos(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);
MultichoiceGridComputeNewCursorPos(0, -1);
return MENU_NOTHING_CHOSEN;
}
else if (JOY_NEW(DPAD_DOWN))
{
PlaySE(SE_SELECT);
MultichoiceGridComputeNewCursorPos(0, 1);
return MENU_NOTHING_CHOSEN;
}
else if (JOY_NEW(DPAD_LEFT) || GetLRKeysState() == 1)
{
PlaySE(SE_SELECT);
MultichoiceGridComputeNewCursorPos(-1, 0);
return MENU_NOTHING_CHOSEN;
}
else if (JOY_NEW(DPAD_RIGHT) || GetLRKeysState() == 2)
{
PlaySE(SE_SELECT);
MultichoiceGridComputeNewCursorPos(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 != MultichoiceGridComputeNewCursorPosIfValid(0, -1))
PlaySE(SE_SELECT);
return MENU_NOTHING_CHOSEN;
}
else if (JOY_NEW(DPAD_DOWN))
{
if (oldPos != MultichoiceGridComputeNewCursorPosIfValid(0, 1))
PlaySE(SE_SELECT);
return MENU_NOTHING_CHOSEN;
}
else if (JOY_NEW(DPAD_LEFT) || GetLRKeysState() == 1)
{
if (oldPos != MultichoiceGridComputeNewCursorPosIfValid(-1, 0))
PlaySE(SE_SELECT);
return MENU_NOTHING_CHOSEN;
}
else if (JOY_NEW(DPAD_RIGHT) || GetLRKeysState() == 2)
{
if (oldPos != MultichoiceGridComputeNewCursorPosIfValid(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);
MultichoiceGridComputeNewCursorPos(0, -1);
return MENU_NOTHING_CHOSEN;
}
else if (JOY_REPT(DPAD_ANY) == DPAD_DOWN)
{
PlaySE(SE_SELECT);
MultichoiceGridComputeNewCursorPos(0, 1);
return MENU_NOTHING_CHOSEN;
}
else if (JOY_REPT(DPAD_ANY) == DPAD_LEFT || sub_80BF66C() == 1)
{
PlaySE(SE_SELECT);
MultichoiceGridComputeNewCursorPos(-1, 0);
return MENU_NOTHING_CHOSEN;
}
else if (JOY_REPT(DPAD_ANY) == DPAD_RIGHT || sub_80BF66C() == 2)
{
PlaySE(SE_SELECT);
MultichoiceGridComputeNewCursorPos(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 != MultichoiceGridComputeNewCursorPosIfValid(0, -1))
PlaySE(SE_SELECT);
return MENU_NOTHING_CHOSEN;
}
else if (JOY_REPT(DPAD_ANY) == DPAD_DOWN)
{
if (oldPos != MultichoiceGridComputeNewCursorPosIfValid(0, 1))
PlaySE(SE_SELECT);
return MENU_NOTHING_CHOSEN;
}
else if (JOY_REPT(DPAD_ANY) == DPAD_LEFT || sub_80BF66C() == 1)
{
if (oldPos != MultichoiceGridComputeNewCursorPosIfValid(-1, 0))
PlaySE(SE_SELECT);
return MENU_NOTHING_CHOSEN;
}
else if (JOY_REPT(DPAD_ANY) == DPAD_RIGHT || sub_80BF66C() == 2)
{
if (oldPos != MultichoiceGridComputeNewCursorPosIfValid(1, 0))
PlaySE(SE_SELECT);
return MENU_NOTHING_CHOSEN;
}
return MENU_NOTHING_CHOSEN;
}
+2 -2
View File
@@ -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);
}
@@ -134,7 +134,7 @@ void DrawMoneyBox(int amount, u8 x, u8 y)
void HideMoneyBox(void)
{
ClearMenuWindow(sMoneyBoxWindowId, FALSE);
ClearStdWindowAndFrameToTransparent(sMoneyBoxWindowId, FALSE);
CopyWindowToVram(sMoneyBoxWindowId, 2);
RemoveWindow(sMoneyBoxWindowId);
}
+1 -1
View File
@@ -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)
+19 -19
View File
@@ -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,7 +1054,7 @@ 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;
@@ -1064,7 +1064,7 @@ static void Task_OakSpeech19(u8 taskId)
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);
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);
}
+18 -18
View File
@@ -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);
+1 -1
View File
@@ -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);
}
+1 -15
View File
@@ -1227,21 +1227,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