finished menu (1 failed attempt)
This commit is contained in:
+4
-4
@@ -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
@@ -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]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
File diff suppressed because it is too large
Load Diff
+18
-18
@@ -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
@@ -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
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
@@ -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
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user