diff --git a/asm/code_08056418.s b/asm/code_08056418.s index 45b6209b..2b845adf 100644 --- a/asm/code_08056418.s +++ b/asm/code_08056418.s @@ -6,311 +6,6 @@ .text - - thumb_func_start sub_08056458 -sub_08056458: @ 0x08056458 - push {r4, r5, lr} - ldr r0, _08056484 @ =gTextBox - ldrb r0, [r0] - cmp r0, #1 - bne _08056470 - ldr r0, _08056488 @ =gUnk_02022780 - movs r1, #0xa8 - bl _DmaZero - movs r0, #1 - bl sub_080564C8 -_08056470: - ldr r2, _08056488 @ =gUnk_02022780 - adds r1, r2, #0 - adds r1, #0x8a - ldrb r0, [r1] - cmp r0, #0 - beq _0805648C - subs r0, #1 - strb r0, [r1] - b _080564A2 - .align 2, 0 -_08056484: .4byte gTextBox -_08056488: .4byte gUnk_02022780 -_0805648C: - ldr r5, _080564C0 @ =gUnk_08107BC8 - adds r4, r2, #0 - adds r4, #0x88 -_08056492: - ldrb r0, [r4] - lsls r0, r0, #2 - adds r0, r0, r5 - ldr r0, [r0] - bl _call_via_r0 - cmp r0, #0 - bne _08056492 -_080564A2: - ldr r0, _080564C4 @ =gUnk_02022780 - adds r1, r0, #0 - adds r1, #0x9d - ldrb r0, [r1] - cmp r0, #0 - beq _080564B6 - movs r0, #0 - strb r0, [r1] - bl sub_08056F70 -_080564B6: - bl sub_08056C68 - bl sub_08056D70 - pop {r4, r5, pc} - .align 2, 0 -_080564C0: .4byte gUnk_08107BC8 -_080564C4: .4byte gUnk_02022780 - - thumb_func_start sub_080564C8 -sub_080564C8: @ 0x080564C8 - ldr r1, _080564D8 @ =gUnk_02022780 - adds r2, r1, #0 - adds r2, #0x88 - movs r3, #0 - strb r0, [r2] - adds r1, #0x89 - strb r3, [r1] - bx lr - .align 2, 0 -_080564D8: .4byte gUnk_02022780 - - thumb_func_start sub_080564DC -sub_080564DC: @ 0x080564DC - ldr r0, _080564E8 @ =gUnk_02022780 - adds r0, #0x99 - movs r1, #0 - strb r1, [r0] - movs r0, #0 - bx lr - .align 2, 0 -_080564E8: .4byte gUnk_02022780 - - thumb_func_start sub_080564EC -sub_080564EC: @ 0x080564EC - push {r4, lr} - ldr r0, _08056598 @ =gUnk_02036A40 - movs r1, #8 - bl _DmaZero - ldr r0, _0805659C @ =gUnk_02024030 - movs r1, #0x18 - bl _DmaZero - ldr r4, _080565A0 @ =gUnk_02022780 - adds r0, r4, #0 - movs r1, #0xa8 - bl _DmaZero - ldr r0, _080565A4 @ =gTextBox - adds r1, r4, #0 - movs r2, #0x20 - bl _DmaCopy - ldrb r0, [r4, #2] - cmp r0, #0x63 - bne _08056520 - movs r0, #0x80 - lsls r0, r0, #0x12 - ldrb r0, [r0, #5] - strb r0, [r4, #2] -_08056520: - adds r1, r4, #0 - adds r1, #0x9c - movs r0, #0xff - strb r0, [r1] - adds r0, r4, #0 - adds r0, #0x20 - ldrh r1, [r4, #8] - bl sub_0805EEB4 - adds r3, r4, #0 - adds r3, #0x5c - movs r0, #2 - strb r0, [r3] - movs r0, #0xe - strb r0, [r3, #1] - adds r3, #2 - movs r2, #0 - ldr r0, _080565A8 @ =gUnk_02002A40 - adds r0, #0x80 - ldrb r1, [r0] - cmp r1, #0 - beq _08056560 - adds r4, r0, #0 -_0805654E: - strb r1, [r3] - adds r3, #1 - adds r2, #1 - cmp r2, #5 - bhi _08056560 - adds r0, r2, r4 - ldrb r1, [r0] - cmp r1, #0 - bne _0805654E -_08056560: - movs r0, #2 - strb r0, [r3] - movs r0, #0xf - strb r0, [r3, #1] - movs r0, #0 - strb r0, [r3, #2] - ldr r4, _080565A0 @ =gUnk_02022780 - adds r0, r4, #0 - bl sub_08056FBC - ldr r0, _080565AC @ =gUnk_08107BE0 - str r0, [r4, #0x2c] - ldr r0, _080565B0 @ =gUnk_02000D00 - str r0, [r4, #0x58] - adds r4, #0x54 - movs r0, #0xd0 - strh r0, [r4] - movs r0, #2 - bl sub_08056C54 - movs r0, #0 - bl sub_08056BDC - movs r0, #2 - bl sub_080564C8 - movs r0, #1 - pop {r4, pc} - .align 2, 0 -_08056598: .4byte gUnk_02036A40 -_0805659C: .4byte gUnk_02024030 -_080565A0: .4byte gUnk_02022780 -_080565A4: .4byte gTextBox -_080565A8: .4byte gUnk_02002A40 -_080565AC: .4byte gUnk_08107BE0 -_080565B0: .4byte gUnk_02000D00 - - thumb_func_start sub_080565B4 -sub_080565B4: @ 0x080565B4 - push {r4, lr} - ldr r4, _080565F4 @ =gUnk_02022780 - adds r1, r4, #0 - adds r1, #0x89 - ldrb r0, [r1] - cmp r0, #0 - bne _080565DA - movs r0, #1 - strb r0, [r1] - adds r1, #0x10 - strb r0, [r1] - ldrb r0, [r4, #3] - subs r1, #0x46 - ldrb r1, [r1] - bl sub_08056F88 - movs r0, #0x65 - bl PlaySFX -_080565DA: - movs r0, #1 - bl sub_08056CC0 - cmp r0, #0 - beq _080565F0 - adds r1, r4, #0 - adds r1, #0x99 - movs r0, #2 - strb r0, [r1] - bl sub_080564C8 -_080565F0: - movs r0, #0 - pop {r4, pc} - .align 2, 0 -_080565F4: .4byte gUnk_02022780 - - thumb_func_start sub_080565F8 -sub_080565F8: @ 0x080565F8 - push {r4, lr} - ldr r4, _0805663C @ =gUnk_02022780 - adds r1, r4, #0 - adds r1, #0x89 - ldrb r0, [r1] - cmp r0, #0 - bne _0805661C - movs r0, #1 - strb r0, [r1] - adds r1, #0x10 - movs r0, #3 - strb r0, [r1] - movs r0, #0 - bl sub_08056BDC - movs r0, #0x66 - bl PlaySFX -_0805661C: - movs r0, #1 - rsbs r0, r0, #0 - bl sub_08056CC0 - cmp r0, #0 - beq _08056636 - adds r1, r4, #0 - adds r1, #0x99 - movs r0, #0 - strb r0, [r1] - movs r0, #2 - bl sub_080564C8 -_08056636: - movs r0, #0 - pop {r4, pc} - .align 2, 0 -_0805663C: .4byte gUnk_02022780 - - thumb_func_start sub_08056640 -sub_08056640: @ 0x08056640 - push {lr} - movs r0, #0 - bl sub_08056C54 - movs r0, #0 - bl sub_080564C8 - movs r0, #0 - pop {pc} - .align 2, 0 - - thumb_func_start sub_08056654 -sub_08056654: @ 0x08056654 - push {lr} - movs r0, #4 - bl sub_08056C54 - ldr r2, _0805667C @ =gUnk_08107BF4 - ldr r0, _08056680 @ =gUnk_02022780 - adds r1, r0, #0 - adds r1, #0x89 - ldrb r1, [r1] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - movs r0, #0 - bl sub_08056CC0 - movs r0, #0 - pop {pc} - .align 2, 0 -_0805667C: .4byte gUnk_08107BF4 -_08056680: .4byte gUnk_02022780 - - thumb_func_start sub_08056684 -sub_08056684: @ 0x08056684 - push {r4, lr} - adds r2, r0, #0 - ldr r4, _080566AC @ =gUnk_02022780 - adds r0, r4, #0 - adds r0, #0x20 - ldrb r1, [r0] - movs r3, #1 - adds r0, r3, #0 - ands r0, r1 - cmp r0, #0 - bne _080566B0 - adds r0, r4, #0 - adds r0, #0x99 - ldrb r0, [r0] - cmp r0, #0 - bne _080566B6 - movs r0, #5 - bl sub_080564C8 - b _080566B6 - .align 2, 0 -_080566AC: .4byte gUnk_02022780 -_080566B0: - adds r0, r2, #0 - adds r0, #0x89 - strb r3, [r0] -_080566B6: - pop {r4, pc} - thumb_func_start sub_080566B8 sub_080566B8: @ 0x080566B8 push {r4, r5, r6, r7, lr} diff --git a/asm/non_matching/textbox/sub_080564EC.inc b/asm/non_matching/textbox/sub_080564EC.inc new file mode 100644 index 00000000..8d0dc2ce --- /dev/null +++ b/asm/non_matching/textbox/sub_080564EC.inc @@ -0,0 +1,90 @@ + .syntax unified + push {r4, lr} + ldr r0, _08056598 @ =gUnk_02036A40 + movs r1, #8 + bl _DmaZero + ldr r0, _0805659C @ =gUnk_02024030 + movs r1, #0x18 + bl _DmaZero + ldr r4, _080565A0 @ =gUnk_02022780 + adds r0, r4, #0 + movs r1, #0xa8 + bl _DmaZero + ldr r0, _080565A4 @ =gTextBox + adds r1, r4, #0 + movs r2, #0x20 + bl _DmaCopy + ldrb r0, [r4, #2] + cmp r0, #0x63 + bne _08056520 + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #5] + strb r0, [r4, #2] +_08056520: + adds r1, r4, #0 + adds r1, #0x9c + movs r0, #0xff + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x20 + ldrh r1, [r4, #8] + bl sub_0805EEB4 + adds r3, r4, #0 + adds r3, #0x5c + movs r0, #2 + strb r0, [r3] + movs r0, #0xe + strb r0, [r3, #1] + adds r3, #2 + movs r2, #0 + ldr r0, _080565A8 @ =gUnk_02002A40 + adds r0, #0x80 + ldrb r1, [r0] + cmp r1, #0 + beq _08056560 + adds r4, r0, #0 +_0805654E: + strb r1, [r3] + adds r3, #1 + adds r2, #1 + cmp r2, #5 + bhi _08056560 + adds r0, r2, r4 + ldrb r1, [r0] + cmp r1, #0 + bne _0805654E +_08056560: + movs r0, #2 + strb r0, [r3] + movs r0, #0xf + strb r0, [r3, #1] + movs r0, #0 + strb r0, [r3, #2] + ldr r4, _080565A0 @ =gUnk_02022780 + adds r0, r4, #0 + bl sub_08056FBC + ldr r0, _080565AC @ =gUnk_08107BE0 + str r0, [r4, #0x2c] + ldr r0, _080565B0 @ =gUnk_02000D00 + str r0, [r4, #0x58] + adds r4, #0x54 + movs r0, #0xd0 + strh r0, [r4] + movs r0, #2 + bl sub_08056C54 + movs r0, #0 + bl sub_08056BDC + movs r0, #2 + bl sub_080564C8 + movs r0, #1 + pop {r4, pc} + .align 2, 0 +_08056598: .4byte gUnk_02036A40 +_0805659C: .4byte gUnk_02024030 +_080565A0: .4byte gUnk_02022780 +_080565A4: .4byte gTextBox +_080565A8: .4byte gUnk_02002A40 +_080565AC: .4byte gUnk_08107BE0 +_080565B0: .4byte gUnk_02000D00 + .syntax divided \ No newline at end of file diff --git a/include/functions.h b/include/functions.h index 9e66730c..e4a00199 100644 --- a/include/functions.h +++ b/include/functions.h @@ -46,6 +46,32 @@ extern u32 LoadFixedGFX(Entity*, u32); extern void ExecuteScriptCommandSet(); extern void _DmaFill32(u32, void*, u32); extern Entity* CreateItemEntity(u32, u32, u32); +void _DmaCopy(const void* src, void* dst, u32 size); +extern u32 ProcessMovement(Entity*); +extern Entity* FindEntityInListBySubtype(u32, u32, u32); +extern Entity* FindEntityInListByForm(u32, u32, u32, u32, u32); +extern void _DmaZero(void*, u32); +extern void MenuFadeIn(u32, u32); +extern void LoadAssetAsync(const void*, u32, u32); +extern void LoadPaletteGroup(u32); +extern void TryLoadPrologueHyruleTown(void); +extern Manager* GetEmptyManager(void); +extern void AppendEntityToList(void*, u32); +extern void LoadGfxGroup(u32); +extern void EnqueueSFX(u32); +extern void ResetPlayer(void); +extern void CreateDust(Entity*); +extern u32 IsItemEquipped(u32); +extern void DeleteManager(Manager*); +extern bool32 CheckPlayerInRegion(u32 centerX, u32 centerY, u32 radiusX, u32 radiusY); +extern u32 CheckIsDungeon(); +extern void HandleIntroScreen(void); +extern void HandleChooseFileScreen(void); +extern void HandleGameplayScreen(void); +extern void HandleGameOverScreen(void); +extern void HandleCreditsScreen(void); +extern void HandleDebugTextScreen(void); +extern u32 GetTileTypeByEntity(Entity*); // Unidentified extern u32 sub_0806ED78(Entity*); @@ -53,7 +79,6 @@ extern void sub_0806920C(Entity*); extern u32 sub_0805ACC0(Entity*); extern u32 sub_0801E99C(Entity*); extern void sub_0806924C(Entity*); -extern u32 ProcessMovement(Entity*); extern Entity* sub_080873AC(Entity*, u32, u32); extern void sub_08078778(Entity*); extern void sub_080787A8(Entity*, u32); @@ -74,8 +99,6 @@ extern u32 sub_0806F5A4(u32); extern void sub_08078784(Entity*, u32); extern void sub_0807DD50(Entity*); extern void sub_0807DD94(Entity*, u32); -extern Entity* FindEntityInListBySubtype(u32, u32, u32); -extern Entity* FindEntityInListByForm(u32, u32, u32, u32, u32); extern s32 sub_0806ED9C(Entity*, u32, u32); extern void sub_0807000C(Entity*); extern void sub_0805E47C(Entity*); @@ -105,7 +128,6 @@ extern Entity* sub_0804A98C(Entity*, u8, u8); extern u32 sub_080544DC(u32); extern void sub_08077E54(Entity*); extern void sub_080042BA(Entity*, u32); -extern void _DmaZero(void*, u32); extern void sub_08077F24(ItemBehavior*, u32); extern void sub_08079184(); extern void sub_08077F50(ItemBehavior* beh, u32 arg1); @@ -118,7 +140,6 @@ extern void sub_080AD90C(void); extern void sub_080AD9B0(void); extern void sub_080AD918(void); extern void sub_0801E104(void); -extern void MenuFadeIn(u32, u32); extern void sub_080A57F4(void); extern void sub_0804B29C(void*); extern void sub_08030118(u32); @@ -139,8 +160,6 @@ extern void sub_0804C2F0(void); extern void sub_0801AFE4(void); extern u32 sub_08060354(void); extern void sub_08057E64(void); -extern void LoadAssetAsync(const void*, u32, u32); -extern void LoadPaletteGroup(u32); extern void sub_0809F814(u32); extern void sub_080300E8(void); extern void sub_0801DA90(u32); @@ -157,7 +176,6 @@ extern void sub_080534AC(); extern void sub_0807BA8C(u32, u32); extern void sub_0804D9B0(); extern void sub_0807BB98(u32, u32, u32, u32); -extern void TryLoadPrologueHyruleTown(void); extern void sub_0801D000(u32); extern void sub_08018C58(u32); extern void sub_0804E150(void); @@ -170,7 +188,6 @@ extern void sub_080AF2E4(void); extern void sub_0805ADD8(u32); extern void sub_0804F578(void); extern void sub_08059994(void); -extern void LoadGfxGroup(u32); extern s32 sub_0801CFA8(u32); extern void sub_080A3210(void); extern void sub_080ADA14(u32, u32); @@ -193,15 +210,10 @@ extern void sub_08001242(Entity*); extern u32 sub_08003FC4(Entity*, u32); extern u32 sub_080043E8(Entity*); extern void sub_08001290(Entity*, u32); -extern void EnqueueSFX(u32); extern void sub_08004596(Entity*, u32); extern u32 sub_080045B4(Entity*, u32, u32); extern u32 sub_0807953C(void); -extern void ResetPlayer(void); -extern void CreateDust(Entity*); extern void sub_080AE068(Entity*); -extern Manager* GetEmptyManager(void); -extern void AppendEntityToList(void*, u32); extern u32 sub_0800445C(Entity*); extern void sub_0807A108(void); extern void sub_0801766C(Entity*); @@ -233,7 +245,6 @@ extern u32 sub_0808288C(Entity*, u32, u32, u32); extern void sub_0806FDA0(Entity*); extern void sub_080AE008(Entity*, u32, u32); extern u32 sub_08016A30(Entity*); -extern u32 IsItemEquipped(u32); extern void sub_08077728(); extern void sub_0807AEE4(); extern u32 sub_08078EFC(); @@ -241,12 +252,6 @@ extern void sub_0807921C(); extern void sub_0807A1B8(); extern void sub_08079938(); extern void sub_0807ACCC(Entity*); -extern void HandleIntroScreen(void); -extern void HandleChooseFileScreen(void); -extern void HandleGameplayScreen(void); -extern void HandleGameOverScreen(void); -extern void HandleCreditsScreen(void); -extern void HandleDebugTextScreen(void); extern void sub_080A2BE4(Entity*, u32); extern u32 sub_08097ADC(Entity*); extern void sub_08097B24(Entity*); @@ -265,7 +270,6 @@ extern u32 sub_080040A8(Entity*); extern u32 sub_08017850(Entity*); extern void sub_080809D4(void); extern void sub_08080CB4(Entity*); -extern u32 GetTileTypeByEntity(Entity*); extern u32 sub_0800442E(Entity*); extern void sub_08081404(Entity*, u32); extern void sub_0807B7D8(u32, u32, u32); @@ -288,8 +292,6 @@ extern void sub_080A1D70(Entity*, u32); extern void sub_0806F62C(Entity*, u32, u32); extern u32 sub_08079F8C(void); extern void sub_080A1ED0(u32, u32, u32); -extern void DeleteManager(Manager*); -extern bool32 CheckPlayerInRegion(u32 centerX, u32 centerY, u32 radiusX, u32 radiusY); extern u32 sub_0806F5B0(u32); extern void sub_0801DFB4(Entity*, u32, u32, u32); extern void sub_0801E00C(); @@ -318,10 +320,19 @@ extern void sub_0807A108(); extern u32 sub_08079FC4(u32); extern void sub_0800455E(Entity*); extern void sub_08008790(Entity*, u32); -extern u32 CheckIsDungeon(); extern void sub_0804ACF8(); extern void sub_08073904(Entity*); extern u32 sub_08056134(void); extern u32 sub_0807CF30(void*); extern void sub_08004484(Entity*, Entity*); +extern void sub_080564C8(u32); +extern void sub_08056F70(void); +extern void sub_08056C68(void); +extern void sub_08056D70(void); +extern void sub_0805EEB4(u8*, u32, u32); +extern void sub_08056FBC(void*); +extern void sub_08056C54(u32); +extern void sub_08056BDC(u32); +extern void sub_08056F88(u32, u32); +extern u32 sub_08056CC0(u32); #endif diff --git a/src/chooseFile.c b/src/chooseFile.c index 682606af..e20247f1 100644 --- a/src/chooseFile.c +++ b/src/chooseFile.c @@ -47,7 +47,6 @@ static void sub_08050624(u32); static void sub_0805066C(void); static void sub_080507FC(void); -extern void _DmaCopy(const void* src, void* dest, u32 size); extern void sub_08056FEC(u32, struct_020227E8*); extern void sub_0805F46C(u32, struct_080FC844*); extern void sub_0801C4A0(u32, u32); diff --git a/src/main.c b/src/main.c index ed058b61..fdb72796 100644 --- a/src/main.c +++ b/src/main.c @@ -12,7 +12,6 @@ extern void sub_0804FF84(u32); extern u16 gPaletteBuffer[]; extern void VBlankInterruptWait(void); extern void DisableInterruptsAndDMA(void); -extern void _DmaCopy(void*, u8*, int); extern void sub_08016B34(void); static void sub_08055F70(void); diff --git a/src/textbox.c b/src/textbox.c index 6237ffe5..ad3bc4d8 100644 --- a/src/textbox.c +++ b/src/textbox.c @@ -1,16 +1,57 @@ #include "global.h" #include "room.h" #include "entity.h" +#include "functions.h" #include "textbox.h" #include "structures.h" -void _DmaZero(); void ShowTextbox(); void TextboxAtPosition(); -extern u32 gUnk_02022780; +typedef struct { + u8 _0; + u8 _1; + u8 _2; + u8 _3[5]; + u16 _8; + u8 _b[0x16]; + u8 _20; + u8 _21; + u8 _22[0xa]; + void* _2c; + u8 _30[0x23]; + u8 _53; + u16 _54; + u8 _56[0x2]; + void* _58; + u8 _5c; + u8 _5d; + u8 _5e[24]; + u8 _76; + u8 _77[0x11]; + u8 _88; + u8 _89; + u8 _8a; + u8 _8b[0xe]; + u8 _99; + u8 _9a; + u8 _9b; + u8 _9c; + u8 _9d; + u8 _9e[0xa]; +} struct_02022780; +extern struct_02022780 gUnk_02022780; +static_assert(sizeof(struct_02022780) == 0xa8); + +extern const s32 (*const gUnk_08107BC8[])(); +extern const void (*const gUnk_08107BF4[])(struct_02022780*); + extern u32 gUnk_02036A40; extern u32 gUnk_02036A38; +extern u8 gUnk_02024030; +extern u8 gUnk_020227A0; +extern u8 gUnk_02000D00; +extern u8 gUnk_08107BE0; s32 sub_08056338(void) { s32 result; @@ -60,7 +101,7 @@ void TextboxAtPosition(u32 index, u32 x, u32 y) { } void ShowTextbox(u32 index, u32 param_2, u32* dest) { - _DmaZero(&gTextBox, 32, dest); + _DmaZero(&gTextBox, 32); gTextBox.textIndex = index; gTextBox.textSpeed = 99; gTextBox.textWindowWidth = 26; @@ -77,3 +118,129 @@ void sub_08056418(void) { _DmaZero(&gUnk_02036A38, 8); _DmaZero(&gUnk_02000040, 4); } + +void sub_08056458(void) { + int iVar1; + + if (gTextBox.doTextBox == 1) { + _DmaZero((u32*)&gUnk_02022780, sizeof(gUnk_02022780)); + sub_080564C8(1); + } + + if (gUnk_02022780._8a != 0) { + gUnk_02022780._8a--; + } else { + do { + iVar1 = gUnk_08107BC8[gUnk_02022780._88](); + } while (iVar1 != 0); + } + if (gUnk_02022780._9d != 0) { + gUnk_02022780._9d = 0; + sub_08056F70(); + } + sub_08056C68(); + sub_08056D70(); +} + +void sub_080564C8(u32 a1) { + gUnk_02022780._88 = a1; + gUnk_02022780._89 = 0; +} + +u32 sub_080564DC(void) { + gUnk_02022780._99 = 0; + return 0; +} + +// regalloc in loop +NONMATCH("asm/non_matching/textbox/sub_080564EC.inc", u32 sub_080564EC(void)) { + u32 uVar1; + char* dest; + u32 i; + char c; + + _DmaZero((void *)&gUnk_02036A40, 8); + _DmaZero((void *)&gUnk_02024030, 0x18); + _DmaZero((void *)&gUnk_02022780, 0xa8); + _DmaCopy(&gTextBox, &gUnk_02022780, 32); + if (gUnk_02022780._2 == 0x63) { + gUnk_02022780._2 = gUnk_02000000->messageSpeed; + } + gUnk_02022780._9c = 0xff; + sub_0805EEB4(&gUnk_02022780._20, gUnk_02022780._8, 32); + gUnk_02022780._5c = 2; + gUnk_02022780._5d = 0xe; + dest = gUnk_02022780._5e; + + for (i = 0; i < 6; ++i) { + c = gUnk_02002A40.playerName[i]; + if (c == '\0') break; + dest[i] = c; + } + + dest[0] = 2; + dest[1] = 15; + dest[2] = 0; + sub_08056FBC(&gUnk_02022780); + gUnk_02022780._2c = &gUnk_08107BE0; + gUnk_02022780._58 = &gUnk_02000D00; + gUnk_02022780._54 = 0xd0; + sub_08056C54(2); + sub_08056BDC(0); + sub_080564C8(2); + return 1; +} +END_NONMATCH + +u32 sub_080565B4(void) { + if (gUnk_02022780._89 == 0) { + gUnk_02022780._89 = 1; + gUnk_02022780._99 = 1; + sub_08056F88(gUnk_02022780._3[0], gUnk_02022780._53); + PlaySFX(0x65); + } + + if (sub_08056CC0(1)) { + gUnk_02022780._99 = 2; + sub_080564C8(2); + } + return 0; +} + +u32 sub_080565F8(void) { + if (gUnk_02022780._89 == 0) { + gUnk_02022780._89 = 1; + gUnk_02022780._99 = 3; + sub_08056BDC(0); + PlaySFX(0x66); + } + + if (sub_08056CC0(-1)) { + gUnk_02022780._99 = 0; + sub_080564C8(2); + } + return 0; +} + +u32 sub_08056640() { + sub_08056C54(0); + sub_080564C8(0); + return 0; +} + +u32 sub_08056654(void) { + sub_08056C54(4); + gUnk_08107BF4[gUnk_02022780._89](&gUnk_02022780); + sub_08056CC0(0); + return 0; +} + +void sub_08056684(struct_02022780* this) { + if ((gUnk_02022780._20 & 1) == 0) { + if (gUnk_02022780._99 == '\0') { + sub_080564C8(5); + } + } else { + this->_89 = 1; + } +} diff --git a/src/tmc.code-workspace b/src/tmc.code-workspace index 6ed05aa3..788922bd 100644 --- a/src/tmc.code-workspace +++ b/src/tmc.code-workspace @@ -3,7 +3,9 @@ "files.associations" : { "algorithm": "cpp", "ios": "c", - "functions.h": "c" + "functions.h": "c", + "textbox.h": "c", + "structures.h": "c" } } }