From 45e7e74240d3039a79aaa25278218cf8ae5ce576 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 19 Feb 2025 10:21:23 +0100 Subject: [PATCH] Get rid of UnkTextStruct2_sub --- include/code_801C8C4.h | 2 +- include/code_8023144.h | 2 +- include/kecleon_bros4.h | 2 +- include/makuhita_dojo2.h | 2 +- include/pokemon_news1.h | 2 +- include/pokemon_news3.h | 2 +- include/structs/str_text.h | 20 +++------------ include/wonder_mail_4.h | 2 +- include/wonder_mail_802C10C.h | 2 +- include/wonder_mail_802C4C8.h | 2 +- src/code_8010EF0.c | 4 +-- src/code_801C8C4.c | 4 +-- src/code_8023144.c | 4 +-- src/code_805D8C8_1.c | 22 ++++++++--------- src/code_8066D04.c | 8 +++--- src/code_8072F3C.c | 4 +-- src/friend_rescue.c | 2 +- src/kecleon_bros4.c | 4 +-- src/makuhita_dojo2.c | 4 +-- src/pokemon_news1.c | 4 +-- src/pokemon_news3.c | 4 +-- src/string_format.c | 10 ++++---- src/text.c | 46 +++++++++++++++++------------------ src/thank_you_wonder_mail.c | 2 +- src/trade_items_menu.c | 2 +- src/wonder_mail_4.c | 4 +-- src/wonder_mail_802C10C.c | 4 +-- src/wonder_mail_802C4C8.c | 4 +-- 28 files changed, 80 insertions(+), 94 deletions(-) diff --git a/include/code_801C8C4.h b/include/code_801C8C4.h index d9dabca81..94500c8be 100644 --- a/include/code_801C8C4.h +++ b/include/code_801C8C4.h @@ -15,7 +15,7 @@ struct unkStruct_203B244 /* 0x4B4 */ struct_Sub80095E4_2 unk4B4; }; -bool8 sub_801C8C4(s32, s32, UnkTextStruct2_sub *, u32); +bool8 sub_801C8C4(s32, s32, DungeonPos *, u32); u32 sub_801CA08(bool8); u8 sub_801CB24(void); void sub_801CB5C(bool8); diff --git a/include/code_8023144.h b/include/code_8023144.h index 6ede851d4..62b93bb71 100644 --- a/include/code_8023144.h +++ b/include/code_8023144.h @@ -19,7 +19,7 @@ typedef struct unkStruct_3001B5C /* 0x35C */ struct_Sub80095E4_2 s35C; } unkStruct_3001B5C; -bool8 sub_8023144(s32, s32 index, UnkTextStruct2_sub *sub, u32); +bool8 sub_8023144(s32, s32 index, DungeonPos *sub, u32); u32 sub_8023278(bool8); s16 sub_802331C(void); void sub_8023354(bool8 cursorSprite); diff --git a/include/kecleon_bros4.h b/include/kecleon_bros4.h index 3d0169f25..500cd3c03 100644 --- a/include/kecleon_bros4.h +++ b/include/kecleon_bros4.h @@ -13,7 +13,7 @@ typedef struct unkStruct_203B224 /* 0x54 */ struct_Sub80095E4_2 unk54; } unkStruct_203B224; -bool8 sub_801A5D8(u32, s32, UnkTextStruct2_sub *, u32); +bool8 sub_801A5D8(u32, s32, DungeonPos *, u32); u32 sub_801A6E8(bool8); s32 sub_801A8AC(void); void sub_801A8D0(bool8); diff --git a/include/makuhita_dojo2.h b/include/makuhita_dojo2.h index a7c1d32bb..12bef4ce5 100644 --- a/include/makuhita_dojo2.h +++ b/include/makuhita_dojo2.h @@ -15,7 +15,7 @@ typedef struct MakuhitaDojoWork2 bool8 MakuhitaDojo_ReturnFalse(void); -bool8 sub_80302E8(s32, UnkTextStruct2_sub *, u32); +bool8 sub_80302E8(s32, DungeonPos *, u32); u32 sub_80303AC(bool8); s16 sub_8030418(void); void sub_8030480(void); diff --git a/include/pokemon_news1.h b/include/pokemon_news1.h index 68458586b..893698879 100644 --- a/include/pokemon_news1.h +++ b/include/pokemon_news1.h @@ -16,7 +16,7 @@ struct unkStruct_203B2CC u8 GetPokemonNewsIndex(void); bool8 HasNoPKMNNews(void); -bool8 sub_802B640(u32, UnkTextStruct2_sub *, u32); +bool8 sub_802B640(u32, DungeonPos *, u32); u32 sub_802B720(bool8); void sub_802B7D0(bool8 cursorSprite); void sub_802B81C(void); diff --git a/include/pokemon_news3.h b/include/pokemon_news3.h index c808ff113..d14e07f10 100644 --- a/include/pokemon_news3.h +++ b/include/pokemon_news3.h @@ -14,7 +14,7 @@ struct unkStruct_203B2D8 void CreateMailMenu(void); bool8 HasNoMailinMailbox(void); -bool8 sub_802BD14(s32, UnkTextStruct2_sub *, u32); +bool8 sub_802BD14(s32, DungeonPos *, u32); u32 sub_802BDEC(bool8); u8 sub_802BE74(void); void sub_802BE94(bool8 cursorSprite); diff --git a/include/structs/str_text.h b/include/structs/str_text.h index 3b16a5863..61c0cd30f 100644 --- a/include/structs/str_text.h +++ b/include/structs/str_text.h @@ -28,22 +28,6 @@ typedef struct UnkTextStruct1 u8 unk46; } UnkTextStruct1; -// size: 0x4 -typedef struct UnkTextStruct2_sub -{ - // I haven't found a func that reads these separately yet, but simply making an arr[2] will cause assignments to break. - // Some funcs only match with this union for some reason even though they don't access the variables separately... - // The first func to break is currently sub_801A5D8 in kecleon_bros4.c - // The first func I matched that uses the array is sub_8006554 in text2.c (using the separated fields doesn't match or get even close) - union { - struct { - s16 unk0; - s16 unk2; - } separate; - s16 arr[2]; - } unk0; -} UnkTextStruct2_sub; - typedef struct UnkTextStruct2_sub2 { u8 f0; @@ -52,13 +36,15 @@ typedef struct UnkTextStruct2_sub2 u8 f3; } UnkTextStruct2_sub2; +#include "structs/str_position.h" + // size: 0x18 typedef struct UnkTextStruct2 { u8 unk0; u8 fill1[0x4 - 0x1]; s32 unk4; - UnkTextStruct2_sub unk8; + DungeonPos pos; s16 unkC; s16 unkE; s16 unk10; diff --git a/include/wonder_mail_4.h b/include/wonder_mail_4.h index e24e7f4b5..b04e337f6 100644 --- a/include/wonder_mail_4.h +++ b/include/wonder_mail_4.h @@ -3,7 +3,7 @@ #include "structs/str_text.h" -u32 sub_80306A8(u32 wonderMailType, u32 r1, UnkTextStruct2_sub *r2, u32 r3); +u32 sub_80306A8(u32 wonderMailType, u32 r1, DungeonPos *r2, u32 r3); u32 sub_8030768(u8 r0); u8 sub_80307EC(void); void sub_8030810(u8 r0); diff --git a/include/wonder_mail_802C10C.h b/include/wonder_mail_802C10C.h index fa6811345..f5fc66b23 100644 --- a/include/wonder_mail_802C10C.h +++ b/include/wonder_mail_802C10C.h @@ -15,7 +15,7 @@ struct unkStruct_203B2E0 void DrawPelipperBoardJobMenu(void); bool8 HasNoPelipperBoardJobs(void); -bool8 sub_802C10C(s32, UnkTextStruct2_sub *, s32); +bool8 sub_802C10C(s32, DungeonPos *, s32); u32 sub_802C1E4(bool8); u8 sub_802C26C(void); void sub_802C28C(bool8 cursorSprite); diff --git a/include/wonder_mail_802C4C8.h b/include/wonder_mail_802C4C8.h index 1fef8af13..2f313f2ca 100644 --- a/include/wonder_mail_802C4C8.h +++ b/include/wonder_mail_802C4C8.h @@ -7,7 +7,7 @@ void DrawJobListMenu(void); bool8 HasNoAcceptedJobs(void); u8 GetPelipperBoardSlotIndex(void); -bool8 sub_802C4C8(s32, UnkTextStruct2_sub *, u32); +bool8 sub_802C4C8(s32, DungeonPos *, u32); u32 sub_802C598(bool8); void sub_802C640(bool8 cursorSprite); void sub_802C688(void); diff --git a/src/code_8010EF0.c b/src/code_8010EF0.c index 0317597d8..92afa997e 100644 --- a/src/code_8010EF0.c +++ b/src/code_8010EF0.c @@ -7,14 +7,14 @@ EWRAM_INIT void *gUnknown_203B0E8 = NULL; // Pointer to some unknown struct EWRAM_INIT UnkTextStruct2 gUnknown_203B0EC[4] = { // Exact location of this variable is unknown. Find a better place for it once more code is decompiled. [0] = { .unk4 = 3, - .unk8 = {2, 10}, + .pos = {2, 10}, .unkC = 26, .unkE = 9, .unk10 = 9, }, [1] = { .unk4 = 3, - .unk8 = {23, 6}, + .pos = {23, 6}, .unkC = 5, .unkE = 3, .unk10 = 3, diff --git a/src/code_801C8C4.c b/src/code_801C8C4.c index d7070ab5c..833f7546b 100644 --- a/src/code_801C8C4.c +++ b/src/code_801C8C4.c @@ -18,7 +18,7 @@ static EWRAM_INIT u16 sUnknown_203B24E = {0}; static void sub_801CC38(void); static u32 sub_801CE58(void); -bool8 sub_801C8C4(s32 a0, s32 a1, UnkTextStruct2_sub *a2, u32 a3) +bool8 sub_801C8C4(s32 a0, s32 a1, DungeonPos *a2, u32 a3) { if (sub_801CF14(a0)) return FALSE; @@ -35,7 +35,7 @@ bool8 sub_801C8C4(s32 a0, s32 a1, UnkTextStruct2_sub *a2, u32 a3) sUnknown_203B244->unk4B4.s0.unk38->unk14 = &sUnknown_203B244->unk4B4.unk9C; if (a2 != NULL) - sUnknown_203B244->unk4B4.s0.unk3C.a0[sUnknown_203B244->unk4B4.s0.unk34].unk8 = *a2; + sUnknown_203B244->unk4B4.s0.unk3C.a0[sUnknown_203B244->unk4B4.s0.unk34].pos = *a2; sub_8012D08(sUnknown_203B244->unk4B4.s0.unk38, a3); ResetUnusedInputStruct(); diff --git a/src/code_8023144.c b/src/code_8023144.c index 860c49798..6be4b4f7d 100644 --- a/src/code_8023144.c +++ b/src/code_8023144.c @@ -33,7 +33,7 @@ static void sub_8023730(void); static void sub_8023758(void); static void sub_80237E0(void); -bool8 sub_8023144(s32 a0, s32 index, UnkTextStruct2_sub *sub, u32 a3) +bool8 sub_8023144(s32 a0, s32 index, DungeonPos *sub, u32 a3) { u8 param_1_u8 = a0; @@ -54,7 +54,7 @@ bool8 sub_8023144(s32 a0, s32 index, UnkTextStruct2_sub *sub, u32 a3) gUnknown_3001B5C->s35C.s0.unk38->unk14 = &gUnknown_3001B5C->s35C.unk9C; if (sub != NULL) - gUnknown_3001B5C->s35C.s0.unk3C.a0[gUnknown_3001B5C->s35C.s0.unk34].unk8 = *sub; + gUnknown_3001B5C->s35C.s0.unk3C.a0[gUnknown_3001B5C->s35C.s0.unk34].pos = *sub; sub_8012D08(gUnknown_3001B5C->s35C.s0.unk38, a3); ResetUnusedInputStruct(); diff --git a/src/code_805D8C8_1.c b/src/code_805D8C8_1.c index 6c35adaa6..1572cae31 100644 --- a/src/code_805D8C8_1.c +++ b/src/code_805D8C8_1.c @@ -1684,8 +1684,8 @@ static inline void sub_805FC30_SetUpTxtStruct(UnkTextStruct3 *src) memset(src, 0, sizeof(*src)); src->a0[0].unk4 = 3; src->a0[1].unk4 = 3; - src->a0[1].unk8.unk0.separate.unk0 = 0x16; - src->a0[1].unk8.unk0.separate.unk2 = 4; + src->a0[1].pos.x = 0x16; + src->a0[1].pos.y = 4; src->a0[1].unkC = 6; src->a0[1].unkE = 4; src->a0[1].unk10 = 4; @@ -1716,7 +1716,7 @@ void sub_805FC30(UnkTextStruct3 *a0, s32 a1) sub_801317C(&gUnknown_202EE10.unk28); - sp.a0[1].unk8.unk0.separate.unk0 = a1; + sp.a0[1].pos.x = a1; sp.a0[1].unkC = 28 - a1; sp.a0[1].unkE = sp.a0[1].unk10 = sub_80095E4(gUnknown_202EE10.unk1C, 0); sub_803ECB4(&sp, 0); @@ -1784,7 +1784,7 @@ bool8 sub_805FD74(Entity * a0, struct UnkMenuBitsStruct *a1) [0] = { .unk4 = 6, - .unk8 = {2, 2}, + .pos = {2, 2}, .unkC = 0x12, .unkE = 0x10, .unk10 = 0x10, @@ -2089,11 +2089,11 @@ static void CreateFieldItemMenu(s32 a0, Entity *a1, bool8 a2, bool8 a3, UnkTextS if (a2) { gUnknown_202EE10.unkC += 0x40; - a4->a0[0].unk8.unk0.separate.unk0 = 0xA; + a4->a0[0].pos.x = 0xA; a4->a0[1] = var_94; } else { - a4->a0[0].unk8.unk0.separate.unk0 = 2; + a4->a0[0].pos.x = 2; a4->a0[1] = a4->a0[3]; } @@ -2523,8 +2523,8 @@ bool8 sub_8060E38(Entity *a0) UnkTextStruct3 var_84 = {0}; var_84.a0[0].unk4 = 6; - var_84.a0[0].unk8.unk0.separate.unk0 = 2; - var_84.a0[0].unk8.unk0.separate.unk2 = 2; + var_84.a0[0].pos.x = 2; + var_84.a0[0].pos.y = 2; var_84.a0[0].unkC = 0xE; var_84.a0[0].unkE = 0x10; var_84.a0[0].unk10 = 0x10; @@ -2542,7 +2542,7 @@ bool8 sub_8060E38(Entity *a0) if (!gDungeon->unk644.unk17) { var_84.a0[0].unk4 = 3; - var_84.a0[0].unk8.unk0.arr[1]++; + var_84.a0[0].pos.y++; } while (1) { @@ -2876,8 +2876,8 @@ static inline void SetTxtStruct(UnkTextStruct3 *sp) { memset(sp, 0, sizeof(*sp)); sp->a0[0].unk4 = 6; - sp->a0[0].unk8.unk0.separate.unk0 = 2; - sp->a0[0].unk8.unk0.separate.unk2 = 2; + sp->a0[0].pos.x = 2; + sp->a0[0].pos.y = 2; sp->a0[0].unkC = 0x12; sp->a0[0].unkE = 0xE; sp->a0[0].unk10 = 0x12; diff --git a/src/code_8066D04.c b/src/code_8066D04.c index 211bbc2bf..90b04ae7d 100644 --- a/src/code_8066D04.c +++ b/src/code_8066D04.c @@ -931,7 +931,7 @@ static const UnkTextStruct3 gUnknown_8106DC8 = { { .unk0 = 0, .unk4 = 0x06, - .unk8 = {0x02, 0x02}, + .pos = {0x02, 0x02}, .unkC = 0x11, .unkE = 0x0E, .unk10 = 0x12, @@ -942,7 +942,7 @@ static const UnkTextStruct3 gUnknown_8106DC8 = { { .unk0 = 0, .unk4 = 0x03, - .unk8 = {0x15, 0x04}, + .pos = {0x15, 0x04}, .unkC = 0x07, .unkE = 0x04, .unk10 = 0x04, @@ -1261,8 +1261,8 @@ void sub_806806C(PokemonStruct1 *a0) s32 r7; spTxtStruct.a0[0].unk4 = 6; - spTxtStruct.a0[0].unk8.unk0.separate.unk0 = 2; - spTxtStruct.a0[0].unk8.unk0.separate.unk2 = 2; + spTxtStruct.a0[0].pos.x = 2; + spTxtStruct.a0[0].pos.y = 2; spTxtStruct.a0[0].unkC = 0x12; spTxtStruct.a0[0].unkE = 0xE; spTxtStruct.a0[0].unk10 = 0x12; diff --git a/src/code_8072F3C.c b/src/code_8072F3C.c index c4d281a63..2ba1a4abe 100644 --- a/src/code_8072F3C.c +++ b/src/code_8072F3C.c @@ -66,7 +66,7 @@ extern bool8 sub_802FCF0(void); s32 sub_802FBF4(void); extern u8 sub_8097384(s16); -u32 sub_802F73C(u32 r0, UnkTextStruct2_sub *r1, u32 r2, u8 r3) +u32 sub_802F73C(u32 r0, DungeonPos *r1, u32 r2, u8 r3) { if (sub_802FCF0()) return 0; @@ -87,7 +87,7 @@ u32 sub_802F73C(u32 r0, UnkTextStruct2_sub *r1, u32 r2, u8 r3) gUnknown_203B314->sBC.s0.unk38->unk14 = &gUnknown_203B314->sBC.unk9C; if (r1 != 0) - gUnknown_203B314->sBC.s0.unk3C.a0[gUnknown_203B314->sBC.s0.unk34].unk8 = *r1; + gUnknown_203B314->sBC.s0.unk3C.a0[gUnknown_203B314->sBC.s0.unk34].pos = *r1; sub_8012D08(gUnknown_203B314->sBC.s0.unk38, r2); ResetUnusedInputStruct(); diff --git a/src/friend_rescue.c b/src/friend_rescue.c index 519abcba1..6144736d8 100644 --- a/src/friend_rescue.c +++ b/src/friend_rescue.c @@ -1073,7 +1073,7 @@ void sub_8032828(void) ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); { - UnkTextStruct2_sub local_x = {3, 2}; + DungeonPos local_x = {3, 2}; sub_801C8C4(0, 1, &local_x, 9); } } diff --git a/src/kecleon_bros4.c b/src/kecleon_bros4.c index d7d50d3b9..8e6487969 100644 --- a/src/kecleon_bros4.c +++ b/src/kecleon_bros4.c @@ -23,7 +23,7 @@ static void SortInventoryItems(void); static void sub_801A998(void); static s32 sub_801AE24(u32); -bool8 sub_801A5D8(u32 param_1, s32 param_2, UnkTextStruct2_sub *param_3, u32 param_4) +bool8 sub_801A5D8(u32 param_1, s32 param_2, DungeonPos *param_3, u32 param_4) { if (GetNumberOfFilledInventorySlots() == 0) return FALSE; @@ -41,7 +41,7 @@ bool8 sub_801A5D8(u32 param_1, s32 param_2, UnkTextStruct2_sub *param_3, u32 par gUnknown_203B224->unk54.s0.unk38->unk14 = &gUnknown_203B224->unk54.unk9C; if (param_3 != NULL) - gUnknown_203B224->unk54.s0.unk3C.a0[gUnknown_203B224->unk54.s0.unk34].unk8 = *param_3; + gUnknown_203B224->unk54.s0.unk3C.a0[gUnknown_203B224->unk54.s0.unk34].pos = *param_3; sub_8012D08(gUnknown_203B224->unk54.s0.unk38, param_4); sub_8099690(1); diff --git a/src/makuhita_dojo2.c b/src/makuhita_dojo2.c index a9e7fea41..3aed6c381 100644 --- a/src/makuhita_dojo2.c +++ b/src/makuhita_dojo2.c @@ -22,7 +22,7 @@ static void MakuhitaDojo_DrawCourseList(void); static void sub_80304C8(void); static s32 sub_8030668(void); -bool8 sub_80302E8(s32 param_1, UnkTextStruct2_sub *param_2, u32 param_3) +bool8 sub_80302E8(s32 param_1, DungeonPos *param_2, u32 param_3) { if (MakuhitaDojo_ReturnFalse()) return FALSE; @@ -37,7 +37,7 @@ bool8 sub_80302E8(s32 param_1, UnkTextStruct2_sub *param_2, u32 param_3) sMakuhitaDojoWork2->s30.s0.unk38->unk14 = &sMakuhitaDojoWork2->s30.unk9C; if (param_2 != NULL) - sMakuhitaDojoWork2->s30.s0.unk3C.a0[sMakuhitaDojoWork2->s30.s0.unk34].unk8 = *param_2; + sMakuhitaDojoWork2->s30.s0.unk3C.a0[sMakuhitaDojoWork2->s30.s0.unk34].pos = *param_2; sub_8012D08(sMakuhitaDojoWork2->s30.s0.unk38, param_3); ResetUnusedInputStruct(); diff --git a/src/pokemon_news1.c b/src/pokemon_news1.c index cc92deb6c..d2bb8ef6d 100644 --- a/src/pokemon_news1.c +++ b/src/pokemon_news1.c @@ -23,7 +23,7 @@ static s32 GetNumPKMNNews(void); static void sub_802B880(void); -bool8 sub_802B640(u32 a0, UnkTextStruct2_sub *a1, u32 a2) +bool8 sub_802B640(u32 a0, DungeonPos *a1, u32 a2) { if (HasNoPKMNNews()) return FALSE; @@ -39,7 +39,7 @@ bool8 sub_802B640(u32 a0, UnkTextStruct2_sub *a1, u32 a2) sUnknown_203B2CC->s38.unk3C.a0[sUnknown_203B2CC->s38.unk34] = sUnknown_80DFBEC; if (a1 != NULL) - sUnknown_203B2CC->s38.unk3C.a0[sUnknown_203B2CC->s38.unk34].unk8 = *a1; + sUnknown_203B2CC->s38.unk3C.a0[sUnknown_203B2CC->s38.unk34].pos = *a1; sub_8012D08(sUnknown_203B2CC->s38.unk38, a2); ResetUnusedInputStruct(); diff --git a/src/pokemon_news3.c b/src/pokemon_news3.c index f2acbe8f3..a3cdc8148 100644 --- a/src/pokemon_news3.c +++ b/src/pokemon_news3.c @@ -26,7 +26,7 @@ static s32 CountEmptyMailSlots(void); static void sub_802BF30(void); -bool8 sub_802BD14(s32 a0, UnkTextStruct2_sub *a1, u32 a2) +bool8 sub_802BD14(s32 a0, DungeonPos *a1, u32 a2) { if (HasNoMailinMailbox()) return FALSE; @@ -41,7 +41,7 @@ bool8 sub_802BD14(s32 a0, UnkTextStruct2_sub *a1, u32 a2) sUnknown_203B2D8->unk4.s0.unk38->unk14 = &sUnknown_203B2D8->unk4.unk9C; if (a1 != NULL) - sUnknown_203B2D8->unk4.s0.unk3C.a0[sUnknown_203B2D8->unk4.s0.unk34].unk8 = *a1; + sUnknown_203B2D8->unk4.s0.unk3C.a0[sUnknown_203B2D8->unk4.s0.unk34].pos = *a1; sub_8012D34(sUnknown_203B2D8->unk4.s0.unk38, a2); ResetUnusedInputStruct(); diff --git a/src/string_format.c b/src/string_format.c index 8b2d78dbf..c76c256ce 100644 --- a/src/string_format.c +++ b/src/string_format.c @@ -160,7 +160,7 @@ static EWRAM_DATA MenuInputStructSub gUnknown_202EC28 = {0}; static EWRAM_INIT UnkTextStruct3 sUnknown_203B198 = { .a0 = { [0] = { - .unk8 = {2, 15}, + .pos = {2, 15}, .unkC = 26, .unkE = 5, .unk10 = 7, @@ -241,8 +241,8 @@ void CreateMenuDialogueBoxAndPortrait(const u8 *text, void *a1, u32 r9, const Me if (monPortraitPtr != NULL && monPortraitPtr->faceData != NULL && monPortraitPtr->faceData->sprites[monPortraitPtr->spriteId].gfx != 0) { s32 i; - sUnknown_203B198.a0[1].unk8.unk0.arr[0] = monPortraitPtr->pos.x; - sUnknown_203B198.a0[1].unk8.unk0.arr[1] = monPortraitPtr->pos.y; + sUnknown_203B198.a0[1].pos.x = monPortraitPtr->pos.x; + sUnknown_203B198.a0[1].pos.y = monPortraitPtr->pos.y; sUnknown_203B198.a0[1].unkC = 5; sUnknown_203B198.a0[1].unkE = 5; sUnknown_203B198.a0[1].unk10 = 5; @@ -627,8 +627,8 @@ static void sub_8014A88(void) sUnknown_203B198.a0[2].unkC = r1; sUnknown_203B198.a0[2].unk10 = r2; sUnknown_203B198.a0[2].unkE = r2; - sUnknown_203B198.a0[2].unk8.unk0.arr[0] = 28 - r1; - sUnknown_203B198.a0[2].unk8.unk0.arr[1] = 14 - r2; + sUnknown_203B198.a0[2].pos.x = 28 - r1; + sUnknown_203B198.a0[2].pos.y = 14 - r2; sUnknown_203B198.a0[0].unk0 = 0x80; sUnknown_203B198.a0[1].unk0 = 0xC0; if (sNeverWrittenToUnknownStructPtr != NULL) { diff --git a/src/text.c b/src/text.c index 2a1561e1e..c5d72ce51 100644 --- a/src/text.c +++ b/src/text.c @@ -64,8 +64,8 @@ EWRAM_INIT void (*gIwramTextFunc4)(s32 a0) = sub_8272A78; // This variable is only used in InitGraphics function, which may or may not belong to text.c EWRAM_INIT u8 gUnknown_203B090 = 0; -static void SaveUnkTextStructAndXXX_8006438(const UnkTextStruct3 *a0, bool8 a1, bool8 a2, UnkTextStruct2_sub *a3); -static void sub_8006554(UnkTextStruct1 *a0, u32 *a1, u32 *a2, u16 *a3, u32 a4, const UnkTextStruct2 *a5, bool8 a6, u32 a7, UnkTextStruct2_sub *a8, u8 a9); +static void SaveUnkTextStructAndXXX_8006438(const UnkTextStruct3 *a0, bool8 a1, bool8 a2, DungeonPos *a3); +static void sub_8006554(UnkTextStruct1 *a0, u32 *a1, u32 *a2, u16 *a3, u32 a4, const UnkTextStruct2 *a5, bool8 a6, u32 a7, DungeonPos *a8, u8 a9); static void sub_800677C(UnkTextStruct1 *a0, s32 a1, u16 *a2, u8 a3); static void sub_80069CC(UnkTextStruct1 *a0, s32 a1, s32 a2, s32 a3, u16 *a4); static void sub_8006AC4(UnkTextStruct1 *a0, s32 a1, s32 a2, s32 a3, u16 *a4); @@ -86,7 +86,7 @@ static void sub_80084A4(UnkTextStruct1 *a0, u16 a1[32][32], u32 a2, s32 a3, s32 static void sub_8008818(UnkTextStruct1 *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); static bool8 xxx_update_bg_vram(UnkTextStruct1 *a0); static void sub_800898C(void); -static void sub_80089AC(const UnkTextStruct2 *r4, UnkTextStruct2_sub *r5_Str); +static void sub_80089AC(const UnkTextStruct2 *r4, DungeonPos *r5_Str); static void PrepareTextbox_8008C6C(UnkTextStruct1 *strArr, u32 strId); static void xxx_draw_string(UnkTextStruct1 *strArr, s32 x, s32 y, const u8 *str, u32 windowId, u32 terminatingChr, s32 characterSpacing, s32 lineSpacing); static const u8 *HandleTextFormat(UnkTextStruct1 *strArr, const u8 *str, struct UnkDrawStringStruct *sp); @@ -277,12 +277,12 @@ void SetCharacterMask(int a0) void xxx_call_save_unk_text_struct_800641C(const UnkTextStruct3 *a0, bool8 a1, bool8 a2) { - UnkTextStruct2_sub r3 = {0, 0}; + DungeonPos r3 = {0, 0}; SaveUnkTextStructAndXXX_8006438(a0, a1, a2, &r3); } // https://decomp.me/scratch/xF5Y1 -static void SaveUnkTextStructAndXXX_8006438(const UnkTextStruct3 *a0, bool8 a1, bool8 a2, UnkTextStruct2_sub *a3) +static void SaveUnkTextStructAndXXX_8006438(const UnkTextStruct3 *a0, bool8 a1, bool8 a2, DungeonPos *a3) { s32 i; u32 r9; @@ -336,7 +336,7 @@ u32 sub_8006544(u32 index) } // a1 is a VRAM pointer -static void sub_8006554(UnkTextStruct1 *a0, u32 *a1, u32 *a2, u16 *a3, u32 a4, const UnkTextStruct2 *a5, bool8 a6, u32 a7, UnkTextStruct2_sub *a8, u8 a9) +static void sub_8006554(UnkTextStruct1 *a0, u32 *a1, u32 *a2, u16 *a3, u32 a4, const UnkTextStruct2 *a5, bool8 a6, u32 a7, DungeonPos *a8, u8 a9) { UnkTextStruct1 *t1; s32 iVar3; @@ -350,8 +350,8 @@ static void sub_8006554(UnkTextStruct1 *a0, u32 *a1, u32 *a2, u16 *a3, u32 a4, c s32 j; t1 = &a0[a4]; - iVar3 = a5->unk8.unk0.arr[0] + a8->unk0.arr[0]; - iVar5 = a5->unk8.unk0.arr[1] + a8->unk0.arr[1]; + iVar3 = a5->pos.x + a8->x; + iVar5 = a5->pos.y + a8->y; t1->unk0 = iVar3; t1->unk2 = iVar5; t1->unk4 = a5->unkC; @@ -2866,7 +2866,7 @@ static void sub_800898C(void) } } -static void sub_80089AC(const UnkTextStruct2 *r4, UnkTextStruct2_sub *r5_Str) +static void sub_80089AC(const UnkTextStruct2 *r4, DungeonPos *r5_Str) { u8 *r6; @@ -2875,10 +2875,10 @@ static void sub_80089AC(const UnkTextStruct2 *r4, UnkTextStruct2_sub *r5_Str) r6 = (void*) &gUnknown_3000E94; if (r4->unk4 == 1) { - s32 r12 = (r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0) * 8; - s32 r5 = (r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2) * 8; - s32 r7 = (r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0 + r4->unkC) * 8; - s32 r2 = (r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2 + r4->unkE) * 8; + s32 r12 = (r4->pos.x + r5_Str->x) * 8; + s32 r5 = (r4->pos.y + r5_Str->y) * 8; + s32 r7 = (r4->pos.x + r5_Str->x + r4->unkC) * 8; + s32 r2 = (r4->pos.y + r5_Str->y + r4->unkE) * 8; if (r4->unkE != 0) { if (r5 < 0) r5 = 0; @@ -2909,11 +2909,11 @@ static void sub_80089AC(const UnkTextStruct2 *r4, UnkTextStruct2_sub *r5_Str) } else if (r4->unk4 == 6) { s32 i; - s32 r9 = ((r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0) * 8) - 5; - s32 r5 = ((r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2) * 8) - 4; - s32 var_24 = ((r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0 + r4->unkC) * 8) + 5; - s32 r8 = ((r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2 + r4->unkE) * 8) + 5; - s32 r12 = ((r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0) * 8) + 3; + s32 r9 = ((r4->pos.x + r5_Str->x) * 8) - 5; + s32 r5 = ((r4->pos.y + r5_Str->y) * 8) - 4; + s32 var_24 = ((r4->pos.x + r5_Str->x + r4->unkC) * 8) + 5; + s32 r8 = ((r4->pos.y + r5_Str->y + r4->unkE) * 8) + 5; + s32 r12 = ((r4->pos.x + r5_Str->x) * 8) + 3; const UnkTextStruct2_sub2 *r2 = r4->unk14; s32 tmp = r2->f2 - 1; s32 r10 = (((tmp + r2->f0 + 2) * 8) + r12) - 4; @@ -2983,14 +2983,14 @@ static void sub_80089AC(const UnkTextStruct2 *r4, UnkTextStruct2_sub *r5_Str) } } else { - s32 r8 = ((r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0) * 8) - 5; - s32 r3 = ((r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2) * 8) - 5; - s32 r12 = ((r4->unk8.unk0.separate.unk0 + r5_Str->unk0.separate.unk0 + r4->unkC) * 8) + 5; - s32 r5 = ((r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2 + r4->unkE) * 8) + 5; + s32 r8 = ((r4->pos.x + r5_Str->x) * 8) - 5; + s32 r3 = ((r4->pos.y + r5_Str->y) * 8) - 5; + s32 r12 = ((r4->pos.x + r5_Str->x + r4->unkC) * 8) + 5; + s32 r5 = ((r4->pos.y + r5_Str->y + r4->unkE) * 8) + 5; if (r4->unkE != 0) { if (r4->unk4 == 0) { r3 += 8; - r5 = ((r4->unk8.unk0.separate.unk2 + r5_Str->unk0.separate.unk2 + r4->unkE) * 8) - 3; + r5 = ((r4->pos.y + r5_Str->y + r4->unkE) * 8) - 3; } if (r3 < 0) r3 = 0; diff --git a/src/thank_you_wonder_mail.c b/src/thank_you_wonder_mail.c index c944c2bf4..9870dc165 100644 --- a/src/thank_you_wonder_mail.c +++ b/src/thank_you_wonder_mail.c @@ -1284,7 +1284,7 @@ void UpdateThankYouMailText(void) ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); { - UnkTextStruct2_sub local_x = {3, 2}; + DungeonPos local_x = {3, 2}; sub_801C8C4(0, 1, &local_x, 9); } break; diff --git a/src/trade_items_menu.c b/src/trade_items_menu.c index c35b4f2ac..2026e640e 100644 --- a/src/trade_items_menu.c +++ b/src/trade_items_menu.c @@ -499,7 +499,7 @@ void sub_8036B28(void) ResetUnusedInputStruct(); xxx_call_save_unk_text_struct_800641C(NULL, TRUE, TRUE); { - UnkTextStruct2_sub local_10 = {3, 2}; + DungeonPos local_10 = {3, 2}; sub_801C8C4(0,1,&local_10,9); } } diff --git a/src/wonder_mail_4.c b/src/wonder_mail_4.c index 19f5d7c8e..0a999c111 100644 --- a/src/wonder_mail_4.c +++ b/src/wonder_mail_4.c @@ -77,7 +77,7 @@ ALIGNED(4) const u8 SOSList[] = "SOS List"; s32 sub_8030A74(void); void sub_80308A0(void); -u32 sub_80306A8(u32 wonderMailType, u32 r1, UnkTextStruct2_sub *r2, u32 r3) +u32 sub_80306A8(u32 wonderMailType, u32 r1, DungeonPos *r2, u32 r3) { if (HasNoWonderMailType(wonderMailType)) return 0; @@ -93,7 +93,7 @@ u32 sub_80306A8(u32 wonderMailType, u32 r1, UnkTextStruct2_sub *r2, u32 r3) gUnknown_203B320->s28.s0.unk38->unk14 = &gUnknown_203B320->s28.unk9C; if (r2 != 0) - gUnknown_203B320->s28.s0.unk3C.a0[gUnknown_203B320->s28.s0.unk34].unk8 = *r2; + gUnknown_203B320->s28.s0.unk3C.a0[gUnknown_203B320->s28.s0.unk34].pos = *r2; sub_8012D08(gUnknown_203B320->s28.s0.unk38, r3); ResetUnusedInputStruct(); diff --git a/src/wonder_mail_802C10C.c b/src/wonder_mail_802C10C.c index 82b8f4a45..aea42f5c1 100644 --- a/src/wonder_mail_802C10C.c +++ b/src/wonder_mail_802C10C.c @@ -20,7 +20,7 @@ static s32 CountPelipperBoardSlots(void); static void sub_802C328(void); -bool8 sub_802C10C(s32 a0, UnkTextStruct2_sub *a1, s32 a2) +bool8 sub_802C10C(s32 a0, DungeonPos *a1, s32 a2) { if (HasNoPelipperBoardJobs()) return FALSE; @@ -36,7 +36,7 @@ bool8 sub_802C10C(s32 a0, UnkTextStruct2_sub *a1, s32 a2) gUnknown_203B2E0->unk8.s0.unk38->unk14 = &gUnknown_203B2E0->unk8.unk9C; if (a1 != NULL) - gUnknown_203B2E0->unk8.s0.unk3C.a0[gUnknown_203B2E0->unk8.s0.unk34].unk8 = *a1; + gUnknown_203B2E0->unk8.s0.unk3C.a0[gUnknown_203B2E0->unk8.s0.unk34].pos = *a1; sub_8012D34(gUnknown_203B2E0->unk8.s0.unk38, a2); ResetUnusedInputStruct(); diff --git a/src/wonder_mail_802C4C8.c b/src/wonder_mail_802C4C8.c index d6478dfbe..ef9653e16 100644 --- a/src/wonder_mail_802C4C8.c +++ b/src/wonder_mail_802C4C8.c @@ -23,7 +23,7 @@ static s32 CountAcceptedJobs(void); static void sub_802C6DC(void); -bool8 sub_802C4C8(s32 a0, UnkTextStruct2_sub *a1, u32 a2) +bool8 sub_802C4C8(s32 a0, DungeonPos *a1, u32 a2) { if (HasNoAcceptedJobs()) return FALSE; @@ -37,7 +37,7 @@ bool8 sub_802C4C8(s32 a0, UnkTextStruct2_sub *a1, u32 a2) gUnknown_203B2E8->unk8.s0.unk38->unk14 = &gUnknown_203B2E8->unk8.unk9C; if (a1 != NULL) - gUnknown_203B2E8->unk8.s0.unk3C.a0[gUnknown_203B2E8->unk8.s0.unk34].unk8 = *a1; + gUnknown_203B2E8->unk8.s0.unk3C.a0[gUnknown_203B2E8->unk8.s0.unk34].pos = *a1; sub_8012D34(gUnknown_203B2E8->unk8.s0.unk38, a2); ResetUnusedInputStruct();