script_menu through task_yes_no_maybe

This commit is contained in:
PikalaxALT
2019-10-24 20:49:10 -04:00
parent 7579fc65c1
commit 283084cce4
7 changed files with 277 additions and 740 deletions
-728
View File
@@ -5,734 +5,6 @@
.text
thumb_func_start sub_809C954
sub_809C954: @ 809C954
push {lr}
adds r1, r0, 0
movs r0, 0x1
movs r2, 0
bl GetStringWidth
adds r1, r0, 0
adds r0, r1, 0x7
cmp r0, 0
bge _0809C96A
adds r0, 0x7
_0809C96A:
lsls r0, 13
lsrs r0, 16
pop {r1}
bx r1
thumb_func_end sub_809C954
thumb_func_start sub_809C974
sub_809C974: @ 809C974
push {r4-r7,lr}
adds r7, r0, 0
lsls r4, r1, 24
lsrs r4, 24
ldr r0, [r7]
bl sub_809C954
lsls r0, 24
lsrs r6, r0, 24
movs r5, 0x1
cmp r5, r4
bcs _0809C9AA
_0809C98C:
lsls r0, r5, 3
adds r0, r7
ldr r0, [r0]
bl sub_809C954
lsls r0, 24
lsrs r0, 24
cmp r6, r0
bcs _0809C9A0
adds r6, r0, 0
_0809C9A0:
adds r0, r5, 0x1
lsls r0, 16
lsrs r5, r0, 16
cmp r5, r4
bcc _0809C98C
_0809C9AA:
adds r0, r6, 0
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_809C974
thumb_func_start ScriptMenu_Multichoice
ScriptMenu_Multichoice: @ 809C9B4
push {r4-r7,lr}
sub sp, 0x4
lsls r0, 24
lsrs r7, r0, 24
lsls r1, 24
lsrs r6, r1, 24
lsls r2, 24
lsrs r5, r2, 24
lsls r3, 24
lsrs r4, r3, 24
ldr r0, _0809C9F0 @ =sub_809CC98
bl FuncIsActiveTask
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _0809C9F8
ldr r0, _0809C9F4 @ =gSpecialVar_Result
movs r1, 0xFF
strh r1, [r0]
movs r0, 0
str r0, [sp]
adds r0, r7, 0
adds r1, r6, 0
adds r2, r5, 0
adds r3, r4, 0
bl sub_809CA64
movs r0, 0x1
b _0809C9FA
.align 2, 0
_0809C9F0: .4byte sub_809CC98
_0809C9F4: .4byte gSpecialVar_Result
_0809C9F8:
movs r0, 0
_0809C9FA:
add sp, 0x4
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end ScriptMenu_Multichoice
thumb_func_start ScriptMenu_MultichoiceWithDefault
ScriptMenu_MultichoiceWithDefault: @ 809CA04
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x4
ldr r4, [sp, 0x1C]
lsls r0, 24
lsrs r0, 24
mov r8, r0
lsls r1, 24
lsrs r7, r1, 24
lsls r2, 24
lsrs r6, r2, 24
lsls r3, 24
lsrs r5, r3, 24
lsls r4, 24
lsrs r4, 24
ldr r0, _0809CA4C @ =sub_809CC98
bl FuncIsActiveTask
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _0809CA54
ldr r1, _0809CA50 @ =gSpecialVar_Result
movs r0, 0xFF
strh r0, [r1]
str r4, [sp]
mov r0, r8
adds r1, r7, 0
adds r2, r6, 0
adds r3, r5, 0
bl sub_809CA64
movs r0, 0x1
b _0809CA56
.align 2, 0
_0809CA4C: .4byte sub_809CC98
_0809CA50: .4byte gSpecialVar_Result
_0809CA54:
movs r0, 0
_0809CA56:
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end ScriptMenu_MultichoiceWithDefault
thumb_func_start sub_809CA64
sub_809CA64: @ 809CA64
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x20
ldr r4, [sp, 0x40]
lsls r0, 24
lsrs r0, 24
mov r9, r0
lsls r1, 24
lsrs r1, 24
str r1, [sp, 0x14]
lsls r2, 24
lsrs r2, 24
mov r10, r2
lsls r3, 24
lsrs r3, 24
str r3, [sp, 0x18]
lsls r4, 24
lsrs r4, 24
str r4, [sp, 0x1C]
movs r0, 0x2
ands r0, r3
cmp r0, 0
bne _0809CAA6
ldr r0, _0809CB54 @ =sub_809D6D4
bl sub_81119D4
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _0809CBA2
_0809CAA6:
movs r0, 0x1
ldr r1, [sp, 0x18]
ands r1, r0
str r1, [sp, 0x18]
ldr r1, _0809CB58 @ =gUnknown_83E04B0
mov r2, r10
lsls r0, r2, 3
adds r0, r1
ldrb r7, [r0, 0x4]
ldr r0, [r0]
mov r8, r0
movs r6, 0
cmp r6, r7
bge _0809CADE
mov r5, r8
adds r4, r7, 0
_0809CAC6:
ldr r1, [r5]
movs r0, 0x2
movs r2, 0
bl GetStringWidth
cmp r0, r6
ble _0809CAD6
adds r6, r0, 0
_0809CAD6:
adds r5, 0x8
subs r4, 0x1
cmp r4, 0
bne _0809CAC6
_0809CADE:
adds r0, r6, 0
adds r0, 0x9
cmp r0, 0
bge _0809CAE8
adds r0, 0x7
_0809CAE8:
asrs r0, 3
adds r0, 0x1
lsls r0, 24
lsrs r5, r0, 24
mov r1, r9
adds r0, r1, r5
cmp r0, 0x1C
ble _0809CB02
movs r0, 0x1C
subs r0, r5
lsls r0, 24
lsrs r0, 24
mov r9, r0
_0809CB02:
adds r0, r7, 0
bl sub_809CBB4
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
mov r0, r9
ldr r1, [sp, 0x14]
adds r2, r5, 0
bl CreateWindowFromRect
lsls r0, 24
lsrs r5, r0, 24
adds r0, r5, 0
movs r1, 0
bl SetStdWindowBorderStyle
mov r2, r10
cmp r2, 0x1E
beq _0809CB32
cmp r2, 0xD
beq _0809CB32
cmp r2, 0x29
bne _0809CB5C
_0809CB32:
movs r0, 0xE
str r0, [sp]
str r7, [sp, 0x4]
mov r0, r8
str r0, [sp, 0x8]
movs r0, 0
str r0, [sp, 0xC]
movs r0, 0x2
str r0, [sp, 0x10]
adds r0, r5, 0
movs r1, 0x2
movs r2, 0x8
movs r3, 0x2
bl MultichoiceList_PrintItems
b _0809CB7A
.align 2, 0
_0809CB54: .4byte sub_809D6D4
_0809CB58: .4byte gUnknown_83E04B0
_0809CB5C:
movs r0, 0xE
str r0, [sp]
str r7, [sp, 0x4]
mov r1, r8
str r1, [sp, 0x8]
movs r0, 0
str r0, [sp, 0xC]
movs r0, 0x2
str r0, [sp, 0x10]
adds r0, r5, 0
movs r1, 0x2
movs r2, 0x8
movs r3, 0x2
bl MultichoiceList_PrintItems
_0809CB7A:
movs r0, 0xE
str r0, [sp]
str r7, [sp, 0x4]
ldr r2, [sp, 0x1C]
str r2, [sp, 0x8]
adds r0, r5, 0
movs r1, 0x2
movs r2, 0
movs r3, 0x2
bl Menu_InitCursor
ldr r0, [sp, 0x18]
adds r1, r7, 0
adds r2, r5, 0
mov r3, r10
bl sub_809CC18
movs r0, 0
bl ScheduleBgCopyTilemapToVram
_0809CBA2:
add sp, 0x20
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_809CA64
thumb_func_start sub_809CBB4
sub_809CBB4: @ 809CBB4
push {lr}
lsls r0, 24
lsrs r0, 24
cmp r0, 0x8
bhi _0809CC10
lsls r0, 2
ldr r1, _0809CBC8 @ =_0809CBCC
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0809CBC8: .4byte _0809CBCC
.align 2, 0
_0809CBCC:
.4byte _0809CC10
.4byte _0809CBF0
.4byte _0809CBF4
.4byte _0809CBF8
.4byte _0809CBFC
.4byte _0809CC00
.4byte _0809CC04
.4byte _0809CC08
.4byte _0809CC0C
_0809CBF0:
movs r0, 0x2
b _0809CC12
_0809CBF4:
movs r0, 0x4
b _0809CC12
_0809CBF8:
movs r0, 0x6
b _0809CC12
_0809CBFC:
movs r0, 0x7
b _0809CC12
_0809CC00:
movs r0, 0x9
b _0809CC12
_0809CC04:
movs r0, 0xB
b _0809CC12
_0809CC08:
movs r0, 0xD
b _0809CC12
_0809CC0C:
movs r0, 0xE
b _0809CC12
_0809CC10:
movs r0, 0x1
_0809CC12:
pop {r1}
bx r1
thumb_func_end sub_809CBB4
thumb_func_start sub_809CC18
sub_809CC18: @ 809CC18
push {r4-r7,lr}
lsls r0, 24
lsrs r6, r0, 24
lsls r1, 24
lsrs r5, r1, 24
lsls r2, 24
lsrs r7, r2, 24
lsls r3, 24
lsrs r4, r3, 24
cmp r4, 0x27
beq _0809CC36
cmp r4, 0x2F
beq _0809CC36
cmp r4, 0x32
bne _0809CC40
_0809CC36:
ldr r1, _0809CC3C @ =gUnknown_2039988
movs r0, 0xC
b _0809CC44
.align 2, 0
_0809CC3C: .4byte gUnknown_2039988
_0809CC40:
ldr r1, _0809CC68 @ =gUnknown_2039988
movs r0, 0
_0809CC44:
strb r0, [r1]
ldr r0, _0809CC6C @ =sub_809CC98
movs r1, 0x50
bl CreateTask
lsls r0, 24
lsrs r2, r0, 24
ldr r1, _0809CC70 @ =gTasks
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
adds r1, r0, r1
strh r6, [r1, 0x10]
cmp r5, 0x3
bls _0809CC74
movs r0, 0x1
b _0809CC76
.align 2, 0
_0809CC68: .4byte gUnknown_2039988
_0809CC6C: .4byte sub_809CC98
_0809CC70: .4byte gTasks
_0809CC74:
movs r0, 0
_0809CC76:
strh r0, [r1, 0x12]
ldr r1, _0809CC94 @ =gTasks
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
adds r0, r1
strh r7, [r0, 0x14]
strh r4, [r0, 0x16]
adds r0, r4, 0
bl sub_809CD48
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0809CC94: .4byte gTasks
thumb_func_end sub_809CC18
thumb_func_start sub_809CC98
sub_809CC98: @ 809CC98
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
lsls r0, r6, 2
adds r0, r6
lsls r0, 3
ldr r1, _0809CCC4 @ =gTasks+0x8
adds r5, r0, r1
ldr r0, _0809CCC8 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _0809CD3C
ldr r1, _0809CCCC @ =gUnknown_2039988
ldrb r0, [r1]
cmp r0, 0
beq _0809CCD0
subs r0, 0x1
strb r0, [r1]
b _0809CD3C
.align 2, 0
_0809CCC4: .4byte gTasks+0x8
_0809CCC8: .4byte gPaletteFade
_0809CCCC: .4byte gUnknown_2039988
_0809CCD0:
movs r1, 0xA
ldrsh r0, [r5, r1]
cmp r0, 0
bne _0809CCDE
bl Menu_ProcessInputNoWrapAround
b _0809CCE2
_0809CCDE:
bl Menu_ProcessInput
_0809CCE2:
lsls r0, 24
lsrs r4, r0, 24
ldr r0, _0809CD20 @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0xC0
ands r0, r1
cmp r0, 0
beq _0809CCF8
ldrb r0, [r5, 0xE]
bl sub_809CD48
_0809CCF8:
lsls r0, r4, 24
asrs r1, r0, 24
movs r0, 0x2
negs r0, r0
cmp r1, r0
beq _0809CD3C
adds r0, 0x1
cmp r1, r0
bne _0809CD28
movs r1, 0x8
ldrsh r0, [r5, r1]
cmp r0, 0
bne _0809CD3C
movs r0, 0x5
bl PlaySE
ldr r1, _0809CD24 @ =gSpecialVar_Result
movs r0, 0x7F
strh r0, [r1]
b _0809CD2C
.align 2, 0
_0809CD20: .4byte gMain
_0809CD24: .4byte gSpecialVar_Result
_0809CD28:
ldr r0, _0809CD44 @ =gSpecialVar_Result
strh r1, [r0]
_0809CD2C:
ldrb r0, [r5, 0xC]
bl sub_809D6B0
adds r0, r6, 0
bl DestroyTask
bl EnableBothScriptContexts
_0809CD3C:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0809CD44: .4byte gSpecialVar_Result
thumb_func_end sub_809CC98
thumb_func_start sub_809CD48
sub_809CD48: @ 809CD48
push {r4,lr}
sub sp, 0x10
lsls r0, 24
lsrs r0, 24
adds r1, r0, 0
cmp r0, 0x2F
beq _0809CD78
cmp r0, 0x2F
bgt _0809CD60
cmp r0, 0x27
beq _0809CD66
b _0809CDE0
_0809CD60:
cmp r1, 0x32
beq _0809CDB0
b _0809CDE0
_0809CD66:
movs r0, 0
movs r1, 0x11
bl FillWindowPixelBuffer
ldr r4, _0809CD74 @ =gUnknown_83E072C
b _0809CD82
.align 2, 0
_0809CD74: .4byte gUnknown_83E072C
_0809CD78:
movs r0, 0
movs r1, 0x11
bl FillWindowPixelBuffer
ldr r4, _0809CDAC @ =gUnknown_83E0738
_0809CD82:
bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 22
adds r0, r4
ldr r2, [r0]
movs r0, 0
str r0, [sp]
movs r0, 0x2
str r0, [sp, 0x4]
movs r0, 0x1
str r0, [sp, 0x8]
movs r0, 0x3
str r0, [sp, 0xC]
movs r0, 0
movs r1, 0x2
movs r3, 0
bl AddTextPrinterParameterized2
b _0809CDE0
.align 2, 0
_0809CDAC: .4byte gUnknown_83E0738
_0809CDB0:
movs r0, 0
movs r1, 0x11
bl FillWindowPixelBuffer
ldr r4, _0809CDE8 @ =gUnknown_83E0748
bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 22
adds r0, r4
ldr r2, [r0]
movs r0, 0
str r0, [sp]
movs r0, 0x2
str r0, [sp, 0x4]
movs r0, 0x1
str r0, [sp, 0x8]
movs r0, 0x3
str r0, [sp, 0xC]
movs r0, 0
movs r1, 0x2
movs r3, 0
bl AddTextPrinterParameterized2
_0809CDE0:
add sp, 0x10
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0809CDE8: .4byte gUnknown_83E0748
thumb_func_end sub_809CD48
thumb_func_start ScriptMenu_YesNo
ScriptMenu_YesNo: @ 809CDEC
push {r4,lr}
ldr r4, _0809CE04 @ =task_yes_no_maybe
adds r0, r4, 0
bl FuncIsActiveTask
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0809CE08
movs r0, 0
b _0809CE28
.align 2, 0
_0809CE04: .4byte task_yes_no_maybe
_0809CE08:
ldr r1, _0809CE30 @ =gSpecialVar_Result
movs r0, 0xFF
strh r0, [r1]
ldr r0, _0809CE34 @ =sub_809D6D4
bl sub_81119D4
lsls r0, 24
cmp r0, 0
bne _0809CE26
bl DisplayYesNoMenuDefaultYes
adds r0, r4, 0
movs r1, 0x50
bl CreateTask
_0809CE26:
movs r0, 0x1
_0809CE28:
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0809CE30: .4byte gSpecialVar_Result
_0809CE34: .4byte sub_809D6D4
thumb_func_end ScriptMenu_YesNo
thumb_func_start sub_809CE38
sub_809CE38: @ 809CE38
push {lr}
ldr r0, _0809CE48 @ =gSpecialVar_Result
ldrh r0, [r0]
cmp r0, 0xFF
beq _0809CE4C
movs r0, 0x1
b _0809CE4E
.align 2, 0
_0809CE48: .4byte gSpecialVar_Result
_0809CE4C:
movs r0, 0
_0809CE4E:
pop {r1}
bx r1
thumb_func_end sub_809CE38
thumb_func_start task_yes_no_maybe
task_yes_no_maybe: @ 809CE54
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r1, _0809CE74 @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r1, r0, r1
ldrh r2, [r1, 0xC]
movs r3, 0xC
ldrsh r0, [r1, r3]
cmp r0, 0x4
bgt _0809CE78
adds r0, r2, 0x1
strh r0, [r1, 0xC]
b _0809CEBC
.align 2, 0
_0809CE74: .4byte gTasks
_0809CE78:
bl Menu_ProcessInputNoWrapClearOnChoose
lsls r0, 24
asrs r1, r0, 24
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _0809CE9C
cmp r1, r0
bgt _0809CE94
subs r0, 0x1
cmp r1, r0
beq _0809CEBC
b _0809CEB2
_0809CE94:
cmp r1, 0
beq _0809CEAC
cmp r1, 0x1
bne _0809CEB2
_0809CE9C:
movs r0, 0x5
bl PlaySE
ldr r1, _0809CEA8 @ =gSpecialVar_Result
movs r0, 0
b _0809CEB0
.align 2, 0
_0809CEA8: .4byte gSpecialVar_Result
_0809CEAC:
ldr r1, _0809CEC4 @ =gSpecialVar_Result
movs r0, 0x1
_0809CEB0:
strh r0, [r1]
_0809CEB2:
adds r0, r4, 0
bl DestroyTask
bl EnableBothScriptContexts
_0809CEBC:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0809CEC4: .4byte gSpecialVar_Result
thumb_func_end task_yes_no_maybe
thumb_func_start ScriptMenu_MultichoiceGrid
ScriptMenu_MultichoiceGrid: @ 809CEC8
push {r4-r7,lr}
+1
View File
@@ -0,0 +1 @@
gUnknown_3005070
+1
View File
@@ -141,6 +141,7 @@ SECTIONS {
src/item.o(.text);
asm/shop.o(.text);
src/berry.o(.text);
src/script_menu.o(.text);
asm/script_menu.o(.text);
asm/naming_screen.o(.text);
src/money.o(.text);
+8 -8
View File
@@ -50,15 +50,15 @@ extern const u8 *const gStdScriptsEnd[];
static bool8 sub_806B93C(struct ScriptContext * ctx);
static u8 sub_806B96C(struct ScriptContext * ctx);
EWRAM_DATA ptrdiff_t gVScriptOffset = 0;
EWRAM_DATA u8 gUnknown_20370AC = 0;
EWRAM_DATA u16 sPauseCounter = 0;
EWRAM_DATA u16 sMovingNpcId = 0;
EWRAM_DATA u16 sMovingNpcMapBank = 0;
EWRAM_DATA u16 sMovingNpcMapId = 0;
EWRAM_DATA u16 sFieldEffectScriptId = 0;
static EWRAM_DATA ptrdiff_t gVScriptOffset = 0;
static EWRAM_DATA u8 gUnknown_20370AC = 0;
static EWRAM_DATA u16 sPauseCounter = 0;
static EWRAM_DATA u16 sMovingNpcId = 0;
static EWRAM_DATA u16 sMovingNpcMapBank = 0;
static EWRAM_DATA u16 sMovingNpcMapId = 0;
static EWRAM_DATA u16 sFieldEffectScriptId = 0;
IWRAM_DATA struct ScriptContext * gUnknown_3005070;
struct ScriptContext * gUnknown_3005070;
extern u8 gSelectedEventObject;
+263
View File
@@ -0,0 +1,263 @@
#include "global.h"
#include "palette.h"
#include "text.h"
#include "list_menu.h"
#include "menu.h"
#include "task.h"
#include "sound.h"
#include "script_menu.h"
#include "quest_log.h"
#include "window.h"
#include "new_menu_helpers.h"
#include "event_data.h"
#include "script.h"
#include "constants/songs.h"
struct MultichoiceListStruct
{
const struct MenuAction *list;
u8 count;
};
EWRAM_DATA u8 gUnknown_2039988 = 0;
void sub_809CA64(u8 left, u8 top, u8 mcId, u8 ignoreBpress, u8 initPos);
u8 sub_809CBB4(u8 count);
void sub_809CC18(u8 ignoreBpress, u8 count, u8 windowId, u8 mcId);
void sub_809CC98(u8 taskId);
void sub_809CD48(u8 mcId);
void task_yes_no_maybe(u8 taskId);
void sub_809D6B0(u8 windowId);
u8 CreateWindowFromRect(u8 left, u8 top, u8 width, u8 height);
extern const u8 *const gUnknown_83E072C[];
extern const u8 *const gUnknown_83E0738[];
extern const u8 *const gUnknown_83E0748[];
extern const struct MultichoiceListStruct gUnknown_83E04B0[];
u16 sub_809C954(const u8 *str)
{
return (GetStringWidth(1, str, 0) + 7) / 8;
}
u8 sub_809C974(const struct ListMenuItem * items, u8 count)
{
u16 i;
u8 width = sub_809C954(items[0].label);
u8 tmp;
for (i = 1; i < count; i++)
{
tmp = sub_809C954(items[i].label);
if (width < tmp)
width = tmp;
}
return width;
}
bool8 ScriptMenu_Multichoice(u8 left, u8 top, u8 mcId, u8 ignoreBpress)
{
if (FuncIsActiveTask(sub_809CC98) == TRUE)
return FALSE;
gSpecialVar_Result = 0xFF;
sub_809CA64(left, top, mcId, ignoreBpress, 0);
return TRUE;
}
bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 mcId, u8 ignoreBpress, u8 cursorPos)
{
if (FuncIsActiveTask(sub_809CC98) == TRUE)
return FALSE;
gSpecialVar_Result = 0xFF;
sub_809CA64(left, top, mcId, ignoreBpress, cursorPos);
return TRUE;
}
void sub_809CA64(u8 left, u8 top, u8 mcId, u8 ignoreBpress, u8 initPos)
{
s32 i;
s32 strWidth;
s32 tmp;
u8 width;
u8 height;
u8 count;
u8 windowId;
const struct MenuAction * list;
if ((ignoreBpress & 2) || sub_81119D4(sub_809D6D4) != TRUE)
{
ignoreBpress &= 1;
count = gUnknown_83E04B0[mcId].count;
list = gUnknown_83E04B0[mcId].list;
strWidth = 0;
for (i = 0; i < count; i++)
{
tmp = GetStringWidth(2, list[i].text, 0);
if (tmp > strWidth)
strWidth = tmp;
}
width = (strWidth + 9) / 8 + 1;
if (left + width > 28)
left = 28 - width;
height = sub_809CBB4(count);
windowId = CreateWindowFromRect(left, top, width, height);
SetStdWindowBorderStyle(windowId, FALSE);
if (mcId == 30 || mcId == 13 || mcId == 41)
MultichoiceList_PrintItems(windowId, 2, 8, 2, 14, count, list, 0, 2);
else
MultichoiceList_PrintItems(windowId, 2, 8, 2, 14, count, list, 0, 2);
Menu_InitCursor(windowId, 2, 0, 2, 14, count, initPos);
sub_809CC18(ignoreBpress, count, windowId, mcId);
ScheduleBgCopyTilemapToVram(0);
}
}
u8 sub_809CBB4(u8 count)
{
switch (count)
{
case 0:
return 1;
case 1:
return 2;
case 2:
return 4;
case 3:
return 6;
case 4:
return 7;
case 5:
return 9;
case 6:
return 11;
case 7:
return 13;
case 8:
return 14;
default:
return 1;
}
}
void sub_809CC18(u8 ignoreBpress, u8 count, u8 windowId, u8 mcId)
{
u8 taskId;
if (mcId == 39 || mcId == 47 || mcId == 50)
gUnknown_2039988 = 12;
else
gUnknown_2039988 = 0;
taskId = CreateTask(sub_809CC98, 80);
gTasks[taskId].data[4] = ignoreBpress;
if (count > 3)
gTasks[taskId].data[5] = TRUE;
else
gTasks[taskId].data[5] = FALSE;
gTasks[taskId].data[6] = windowId;
gTasks[taskId].data[7] = mcId;
sub_809CD48(mcId);
}
void sub_809CC98(u8 taskId)
{
s16 *data = gTasks[taskId].data;
s8 input;
if (!gPaletteFade.active)
{
if (gUnknown_2039988 != 0)
gUnknown_2039988--;
else
{
if (data[5] == FALSE)
input = Menu_ProcessInputNoWrapAround();
else
input = Menu_ProcessInput();
if (JOY_NEW(DPAD_UP | DPAD_DOWN))
sub_809CD48(data[7]);
switch (input)
{
case -2:
return;
case -1:
if (data[4])
return;
PlaySE(SE_SELECT);
gSpecialVar_Result = 127;
break;
default:
gSpecialVar_Result = input;
break;
}
sub_809D6B0(data[6]);
DestroyTask(taskId);
EnableBothScriptContexts();
}
}
}
void sub_809CD48(u8 mcId)
{
switch (mcId)
{
case 39:
FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 2, gUnknown_83E072C[Menu_GetCursorPos()], 0, NULL, 2, 1, 3);
break;
case 47:
FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 2, gUnknown_83E0738[Menu_GetCursorPos()], 0, NULL, 2, 1, 3);
break;
case 50:
FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized2(0, 2, gUnknown_83E0748[Menu_GetCursorPos()], 0, NULL, 2, 1, 3);
break;
}
}
bool8 ScriptMenu_YesNo(u8 unused, u8 stuff)
{
if (FuncIsActiveTask(task_yes_no_maybe) == TRUE)
return FALSE;
gSpecialVar_Result = 255;
if (!sub_81119D4(sub_809D6D4))
{
DisplayYesNoMenuDefaultYes();
CreateTask(task_yes_no_maybe, 80);
}
return TRUE;
}
bool8 sub_809CE38(void)
{
if (gSpecialVar_Result == 255)
return FALSE;
else
return TRUE;
}
void task_yes_no_maybe(u8 taskId)
{
s8 input;
if (gTasks[taskId].data[2] < 5)
{
gTasks[taskId].data[2]++;
}
else
{
input = Menu_ProcessInputNoWrapClearOnChoose();
switch (input)
{
case -2:
return;
case -1:
case 1:
PlaySE(SE_SELECT);
gSpecialVar_Result = FALSE;
break;
case 0:
gSpecialVar_Result = TRUE;
break;
}
DestroyTask(taskId);
EnableBothScriptContexts();
}
}
+1 -2
View File
@@ -74,8 +74,7 @@ gUnknown_3005068: @ 3005068
gUnknown_300506C: @ 300506C
.space 0x4
gUnknown_3005070: @ 3005070
.space 0x4
.include "scrcmd.o"
gSelectedEventObject: @ 3005074
.space 0x4
+3 -2
View File
@@ -781,9 +781,10 @@ gUnknown_203996C: @ 203996C
gUnknown_2039984: @ 2039984
.space 0x4
gUnknown_2039988: @ 2039988
.space 0x4
.align 2
.include "src/script_menu.o"
.align 2
gUnknown_203998C: @ 203998C
.space 0x4