From d1381d8b77ee691cc5dc1fe1fdcb158e7524283a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 9 Oct 2018 21:17:43 -0400 Subject: Start decompiling quest_log.o --- src/quest_log.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/quest_log.c (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c new file mode 100644 index 000000000..00b79516d --- /dev/null +++ b/src/quest_log.c @@ -0,0 +1,43 @@ +#include "global.h" +#include "quest_log.h" + +EWRAM_DATA u8 gUnknown_203ADF8 = 0; +EWRAM_DATA u8 gUnknown_203ADFA = 0; +EWRAM_DATA void * gUnknown_203AE04 = NULL; +EWRAM_DATA void * gUnknown_203AE08 = NULL; +EWRAM_DATA void * gUnknown_203AE0C[32] = {NULL}; +EWRAM_DATA u32 gUnknown_203AE8C = 0; + +void sub_8113BD8(void); +void sub_81138F8(void); + +void sub_8110840(void * a0) +{ + size_t r1 = (void *)gSaveBlock1Ptr - a0; + if (gUnknown_203AE04) + gUnknown_203AE04 += r1; + if (gUnknown_203ADFA != 0) + { + if (gUnknown_203AE08) + gUnknown_203AE08 += r1; + if (gUnknown_203ADFA == 2) + { + int r3; + for (r3 = 0; r3 < 0x20; r3++) + if (gUnknown_203AE0C[r3]) + gUnknown_203AE0C[r3] += r1; + } + } +} + +void sub_811089C(void) +{ + gSaveBlock1Ptr->questLog = (struct QuestLog){}; + gUnknown_203ADF8 = 0; + gUnknown_203ADFA = 0; + gUnknown_203AE8C = 0; + gUnknown_203AE08 = 0; + gUnknown_203AE04 = 0; + sub_8113BD8(); + sub_81138F8(); +} -- cgit v1.2.3 From f5964c58bd51718381c5492c063662354a86309e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 9 Oct 2018 21:28:20 -0400 Subject: through sub_811092C --- src/quest_log.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 00b79516d..c59de93db 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -6,7 +6,7 @@ EWRAM_DATA u8 gUnknown_203ADFA = 0; EWRAM_DATA void * gUnknown_203AE04 = NULL; EWRAM_DATA void * gUnknown_203AE08 = NULL; EWRAM_DATA void * gUnknown_203AE0C[32] = {NULL}; -EWRAM_DATA u32 gUnknown_203AE8C = 0; +EWRAM_DATA void (* gUnknown_203AE8C)(void) = 0; void sub_8113BD8(void); void sub_81138F8(void); @@ -32,7 +32,7 @@ void sub_8110840(void * a0) void sub_811089C(void) { - gSaveBlock1Ptr->questLog = (struct QuestLog){}; + memset(gSaveBlock1Ptr->questLog, 0, sizeof(gSaveBlock1Ptr->questLog)); gUnknown_203ADF8 = 0; gUnknown_203ADFA = 0; gUnknown_203AE8C = 0; @@ -41,3 +41,20 @@ void sub_811089C(void) sub_8113BD8(); sub_81138F8(); } + +void sub_81108F0(u8 a0) +{ + memset(gSaveBlock1Ptr->questLog + a0, 0, sizeof(struct QuestLog)); + gUnknown_203AE04 = NULL; +} + +void sub_8110920(void) +{ + gUnknown_203AE04 = NULL; +} + +void sub_811092C(void) +{ + if (gUnknown_203AE8C) + gUnknown_203AE8C(); +} -- cgit v1.2.3 From b78aef06258d5bc6f44cdcc43987a5dd11f1d975 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 10 Oct 2018 07:59:47 -0400 Subject: sub_8110944 --- src/quest_log.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index c59de93db..4dc0a5719 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -58,3 +58,13 @@ void sub_811092C(void) if (gUnknown_203AE8C) gUnknown_203AE8C(); } + +bool8 sub_8110944(u8 * a0, s32 a1) +{ + u8 * r2 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].filler_568; + u8 * r0 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].end; + r0 -= a1; + if (a0 < r2 || a0 > r0) + return FALSE; + return TRUE; +} -- cgit v1.2.3 From dc37cd7de0d60727e4b45fd4c83301a59a194bdf Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 10 Oct 2018 10:45:50 -0400 Subject: through sub_8110A3C --- src/quest_log.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 4dc0a5719..0454dd7ad 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -1,13 +1,32 @@ #include "global.h" +#include "script.h" #include "quest_log.h" +u8 gUnknown_3005E88; + +struct UnkStruct_203AE94 +{ + u8 unk_0_0:4; + u8 unk_0_4:2; + u8 unk_0_6:2; + u8 unk_1; +}; + EWRAM_DATA u8 gUnknown_203ADF8 = 0; EWRAM_DATA u8 gUnknown_203ADFA = 0; EWRAM_DATA void * gUnknown_203AE04 = NULL; EWRAM_DATA void * gUnknown_203AE08 = NULL; EWRAM_DATA void * gUnknown_203AE0C[32] = {NULL}; EWRAM_DATA void (* gUnknown_203AE8C)(void) = 0; +EWRAM_DATA struct UnkStruct_203AE94 gUnknown_203AE94 = {0}; +EWRAM_DATA u8 gUnknown_203AE98[0x100] = {0}; +void sub_8110A00(void); +u8 sub_8110E68(void *); +void sub_8110A3C(void); +void sub_8110E3C(void); +void sub_8111AD8(void); +void sub_81118F4(s8); void sub_8113BD8(void); void sub_81138F8(void); @@ -59,7 +78,17 @@ void sub_811092C(void) gUnknown_203AE8C(); } -bool8 sub_8110944(u8 * a0, s32 a1) +bool8 sub_8110944(u8 * a0, size_t a1) +{ + u8 * r2 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].filler_568; + u8 * r0 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].end; + r0 -= a1; + if (a0 < r2 || a0 > r0) + return FALSE; + return TRUE; +} + +bool8 sub_8110988(u8 * a0, size_t a1) { u8 * r2 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].filler_568; u8 * r0 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].end; @@ -68,3 +97,41 @@ bool8 sub_8110944(u8 * a0, s32 a1) return FALSE; return TRUE; } + +void sub_81109CC(u8 a0) +{ + gUnknown_203ADFA = a0; + if (a0 == 1) + gUnknown_203AE8C = sub_8110A00; + else + gUnknown_203AE8C = sub_8110A3C; +} + +void sub_8110A00(void) +{ + if (sub_8110E68(gUnknown_203AE98) != 1) + { + gUnknown_3005E88 = 0; + sub_8110E3C(); + gUnknown_203ADFA = 0; + gUnknown_203AE8C = NULL; + } +} + +void sub_8110A3C(void) +{ + if (gUnknown_203AE94.unk_0_0 == 2) + gUnknown_203AE94.unk_0_0 = 0; + + if (gUnknown_203AE94.unk_0_6 == 0) + { + if (gUnknown_3005E88 || gUnknown_203AE94.unk_0_0 == 1 || (gUnknown_203AE94.unk_1 < 32 && gUnknown_203AE0C[gUnknown_203AE94.unk_1])) + sub_8111AD8(); + else + { + gUnknown_203AE94.unk_0_6 = 2; + ScriptContext2_Enable(); + sub_81118F4(0); + } + } +} -- cgit v1.2.3 From a7a6457014c93b3314c6fc8bfe9be1b3c6e946d5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 10 Oct 2018 11:08:56 -0400 Subject: through sub_8110AEC --- src/quest_log.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 47 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 0454dd7ad..3a5ca7b30 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -1,5 +1,6 @@ #include "global.h" #include "script.h" +#include "event_data.h" #include "quest_log.h" u8 gUnknown_3005E88; @@ -14,6 +15,7 @@ struct UnkStruct_203AE94 EWRAM_DATA u8 gUnknown_203ADF8 = 0; EWRAM_DATA u8 gUnknown_203ADFA = 0; +EWRAM_DATA u16 gUnknown_203ADFC = 0; EWRAM_DATA void * gUnknown_203AE04 = NULL; EWRAM_DATA void * gUnknown_203AE08 = NULL; EWRAM_DATA void * gUnknown_203AE0C[32] = {NULL}; @@ -22,13 +24,22 @@ EWRAM_DATA struct UnkStruct_203AE94 gUnknown_203AE94 = {0}; EWRAM_DATA u8 gUnknown_203AE98[0x100] = {0}; void sub_8110A00(void); -u8 sub_8110E68(void *); void sub_8110A3C(void); void sub_8110E3C(void); -void sub_8111AD8(void); +u8 sub_8110E68(void *); void sub_81118F4(s8); +void sub_8111AD8(void); +void sub_8113B88(void); void sub_8113BD8(void); void sub_81138F8(void); +void sub_81115E8(void); +void sub_8110BB0(u8); +void sub_8110BE8(u8); +void sub_8110D94(void); +void sub_8110E20(void); +void sub_8110D48(u8); +void sub_8112940(u8, u8 *, u16); + void sub_8110840(void * a0) { @@ -135,3 +146,37 @@ void sub_8110A3C(void) } } } + +void sub_8110AB4(void) +{ + gUnknown_20370D0 = gUnknown_203ADFA; +} + +u8 sub_8110AC8(void) +{ + return gSaveBlock1Ptr->questLog[gUnknown_203ADF8].filler_000[0]; +} + +void sub_8110AEC(u16 a0) +{ + if (gUnknown_203ADF8 > 3) + gUnknown_203ADF8 = 0; + + sub_81108F0(gUnknown_203ADF8); + sub_8113B88(); + gUnknown_203AE08 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].filler_568; + if ((a0 >= 12 && a0 < 20) || a0 == 35) + gSaveBlock1Ptr->questLog[gUnknown_203ADF8].filler_000[0] = 2; + else + gSaveBlock1Ptr->questLog[gUnknown_203ADF8].filler_000[0] = 1; + sub_81115E8(); + sub_8110BB0(gUnknown_203ADF8); + sub_8110BE8(gUnknown_203ADF8); + sub_8110D94(); + sub_8110E20(); + sub_8110D48(gUnknown_203ADF8); + gUnknown_203ADFC = 0; + sub_8112940(2, gUnknown_203AE98, 0x100); + sub_8110E68(gUnknown_203AE98); + sub_81109CC(1); +} -- cgit v1.2.3 From 572929c3523aeb2f563821f07724f5356df61d76 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 10 Oct 2018 11:25:05 -0400 Subject: sub_8110BB0 --- src/quest_log.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 3a5ca7b30..900194040 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -154,7 +154,7 @@ void sub_8110AB4(void) u8 sub_8110AC8(void) { - return gSaveBlock1Ptr->questLog[gUnknown_203ADF8].filler_000[0]; + return gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_000; } void sub_8110AEC(u16 a0) @@ -166,9 +166,9 @@ void sub_8110AEC(u16 a0) sub_8113B88(); gUnknown_203AE08 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].filler_568; if ((a0 >= 12 && a0 < 20) || a0 == 35) - gSaveBlock1Ptr->questLog[gUnknown_203ADF8].filler_000[0] = 2; + gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_000 = 2; else - gSaveBlock1Ptr->questLog[gUnknown_203ADF8].filler_000[0] = 1; + gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_000 = 1; sub_81115E8(); sub_8110BB0(gUnknown_203ADF8); sub_8110BE8(gUnknown_203ADF8); @@ -180,3 +180,13 @@ void sub_8110AEC(u16 a0) sub_8110E68(gUnknown_203AE98); sub_81109CC(1); } + +void sub_8110BB0(u8 a0) +{ + struct QuestLog * questLog = &gSaveBlock1Ptr->questLog[a0]; + questLog->unk_001 = gSaveBlock1Ptr->location.mapGroup; + questLog->unk_002 = gSaveBlock1Ptr->location.mapNum; + questLog->unk_003 = gSaveBlock1Ptr->location.warpId; + questLog->unk_004 = gSaveBlock1Ptr->pos.x; + questLog->unk_006 = gSaveBlock1Ptr->pos.y; +} -- cgit v1.2.3 From 7e35bd4266a9573a6fbc6d73efb5175a44ba5b93 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 10 Oct 2018 19:43:12 -0400 Subject: nonmatching sub_8110BE8 --- src/quest_log.c | 206 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 204 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 900194040..782e0efe4 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -25,6 +25,9 @@ EWRAM_DATA u8 gUnknown_203AE98[0x100] = {0}; void sub_8110A00(void); void sub_8110A3C(void); +void sub_8110BB0(u8); +void sub_8110BE8(u8); +void sub_815A008(struct QuestLog *); void sub_8110E3C(void); u8 sub_8110E68(void *); void sub_81118F4(s8); @@ -33,8 +36,6 @@ void sub_8113B88(void); void sub_8113BD8(void); void sub_81138F8(void); void sub_81115E8(void); -void sub_8110BB0(u8); -void sub_8110BE8(u8); void sub_8110D94(void); void sub_8110E20(void); void sub_8110D48(u8); @@ -190,3 +191,204 @@ void sub_8110BB0(u8 a0) questLog->unk_004 = gSaveBlock1Ptr->pos.x; questLog->unk_006 = gSaveBlock1Ptr->pos.y; } + +#ifdef NONMATCHING +void sub_8110BE8(u8 a0) +{ + struct QuestLog * questLog = &gSaveBlock1Ptr->questLog[a0]; + u16 i; // r6 + + sub_815A008(questLog); + + for (i = 0; i < ARRAY_COUNT(gSaveBlock1Ptr->mapObjectTemplates); i++) + { + if (gSaveBlock1Ptr->mapObjectTemplates[i].x < 0) + { + questLog->npcData[i].x = (u8)-gSaveBlock1Ptr->mapObjectTemplates[i].x; + questLog->npcData[i].negx = TRUE; + } + else + { + questLog->npcData[i].x = (u8)gSaveBlock1Ptr->mapObjectTemplates[i].x; + questLog->npcData[i].negx = FALSE; + } + if (gSaveBlock1Ptr->mapObjectTemplates[i].y < 0) + { + questLog->npcData[i].y = (u8)-gSaveBlock1Ptr->mapObjectTemplates[i].y; + questLog->npcData[i].negy = TRUE; + } + else + { + questLog->npcData[i].y = (u8)gSaveBlock1Ptr->mapObjectTemplates[i].y; + questLog->npcData[i].negy = FALSE; + } + questLog->npcData[i].elevation = gSaveBlock1Ptr->mapObjectTemplates[i].elevation; + questLog->npcData[i].movementType = gSaveBlock1Ptr->mapObjectTemplates[i].movementType; + } +} +#else +NAKED +void sub_8110BE8(u8 a0) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tldr r4, =gSaveBlock1Ptr\n" + "\tmovs r1, 0xCD\n" + "\tlsls r1, 3\n" + "\tmuls r0, r1\n" + "\tmovs r1, 0x98\n" + "\tlsls r1, 5\n" + "\tadds r0, r1\n" + "\tldr r1, [r4]\n" + "\tadds r7, r1, r0\n" + "\tadds r0, r7, 0\n" + "\tbl sub_815A008\n" + "\tmovs r6, 0\n" + "\tmov r9, r4\n" + "\tmovs r2, 0x8D\n" + "\tlsls r2, 3\n" + "\tmov r8, r2\n" + "\tldr r3, =0x0000046a\n" + "\tmov r10, r3\n" + "_08110C1C:\n" + "\tmov r4, r9\n" + "\tldr r1, [r4]\n" + "\tlsls r2, r6, 1\n" + "\tadds r0, r2, r6\n" + "\tlsls r0, 3\n" + "\tadds r1, r0\n" + "\tldr r0, =0x000008e4\n" + "\tadds r1, r0\n" + "\tldrh r4, [r1]\n" + "\tmovs r3, 0\n" + "\tldrsh r0, [r1, r3]\n" + "\tmov r12, r2\n" + "\tcmp r0, 0\n" + "\tbge _08110C64\n" + "\tlsls r3, r6, 2\n" + "\tadds r2, r7, r3\n" + "\tnegs r0, r0\n" + "\tmov r4, r8\n" + "\tadds r1, r2, r4\n" + "\tstrb r0, [r1]\n" + "\tldr r0, =0x00000469\n" + "\tadds r2, r0\n" + "\tldrb r0, [r2]\n" + "\tmovs r1, 0x1\n" + "\torrs r0, r1\n" + "\tstrb r0, [r2]\n" + "\tb _08110C7C\n" + "\t.pool\n" + "_08110C64:\n" + "\tlsls r3, r6, 2\n" + "\tadds r1, r7, r3\n" + "\tmov r2, r8\n" + "\tadds r0, r1, r2\n" + "\tstrb r4, [r0]\n" + "\tldr r4, =0x00000469\n" + "\tadds r1, r4\n" + "\tldrb r2, [r1]\n" + "\tmovs r0, 0x2\n" + "\tnegs r0, r0\n" + "\tands r0, r2\n" + "\tstrb r0, [r1]\n" + "_08110C7C:\n" + "\tadds r5, r3, 0\n" + "\tmov r1, r9\n" + "\tldr r0, [r1]\n" + "\tmov r2, r12\n" + "\tadds r1, r2, r6\n" + "\tlsls r1, 3\n" + "\tadds r0, r1\n" + "\tldr r3, =0x000008e6\n" + "\tadds r1, r0, r3\n" + "\tldrh r2, [r1]\n" + "\tmovs r4, 0\n" + "\tldrsh r0, [r1, r4]\n" + "\tcmp r0, 0\n" + "\tbge _08110CC8\n" + "\tadds r3, r7, r5\n" + "\tadds r1, r0, 0\n" + "\tnegs r1, r1\n" + "\tlsls r1, 24\n" + "\tmov r2, r8\n" + "\tadds r4, r3, r2\n" + "\tlsrs r1, 15\n" + "\tldr r0, [r4]\n" + "\tldr r2, =0xfffe01ff\n" + "\tands r0, r2\n" + "\torrs r0, r1\n" + "\tstr r0, [r4]\n" + "\tadd r3, r10\n" + "\tldrb r0, [r3]\n" + "\tmovs r1, 0x2\n" + "\torrs r0, r1\n" + "\tb _08110CE6\n" + "\t.pool\n" + "_08110CC8:\n" + "\tadds r3, r7, r5\n" + "\tlsls r2, 24\n" + "\tmov r0, r8\n" + "\tadds r4, r3, r0\n" + "\tlsrs r2, 15\n" + "\tldr r0, [r4]\n" + "\tldr r1, =0xfffe01ff\n" + "\tands r0, r1\n" + "\torrs r0, r2\n" + "\tstr r0, [r4]\n" + "\tadd r3, r10\n" + "\tldrb r1, [r3]\n" + "\tmovs r0, 0x3\n" + "\tnegs r0, r0\n" + "\tands r0, r1\n" + "_08110CE6:\n" + "\tstrb r0, [r3]\n" + "\tadds r5, r7, r5\n" + "\tmov r1, r9\n" + "\tldr r0, [r1]\n" + "\tmov r2, r12\n" + "\tadds r3, r2, r6\n" + "\tlsls r3, 3\n" + "\tadds r0, r3\n" + "\tldr r4, =0x000008e8\n" + "\tadds r0, r4\n" + "\tldrb r1, [r0]\n" + "\tmov r0, r10\n" + "\tadds r4, r5, r0\n" + "\tlsls r1, 2\n" + "\tldrb r2, [r4]\n" + "\tmovs r0, 0x3\n" + "\tands r0, r2\n" + "\torrs r0, r1\n" + "\tstrb r0, [r4]\n" + "\tmov r1, r9\n" + "\tldr r0, [r1]\n" + "\tadds r0, r3\n" + "\tldr r2, =0x000008e9\n" + "\tadds r0, r2\n" + "\tldrb r0, [r0]\n" + "\tldr r3, =0x0000046b\n" + "\tadds r5, r3\n" + "\tstrb r0, [r5]\n" + "\tadds r0, r6, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r6, r0, 16\n" + "\tcmp r6, 0x3F\n" + "\tbhi _08110D2A\n" + "\tb _08110C1C\n" + "_08110D2A:\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.pool"); +} +#endif // NONMATCHING -- cgit v1.2.3 From 230f58b77dae53c2934cafbff6ef96807232a9d0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 11 Oct 2018 10:13:08 -0400 Subject: through sub_8110E20 --- src/quest_log.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 782e0efe4..08b504057 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -392,3 +392,35 @@ void sub_8110BE8(u8 a0) "\t.pool"); } #endif // NONMATCHING + +void sub_8110D48(u8 a0) +{ + struct QuestLog * questLog = &gSaveBlock1Ptr->questLog[a0]; + + CpuCopy16(gSaveBlock1Ptr->flags, questLog->unk_148, 0x120); + CpuCopy16(gSaveBlock1Ptr->vars, questLog->unk_268, 0x200); +} + +void sub_8110D94(void) +{ + u16 i, j; + u16 sp0[4]; + + for (i = 0; i < 4; i++) + { + sp0[i] = 0; + for (j = 0; j < 16; j++) + { + if (gSaveBlock1Ptr->trainerRematches[16 * i + j]) + { + sp0[i] += (1 << j); + } + } + VarSet(VAR_0x40AA + i, sp0[i]); + } +} + +void sub_8110E20(void) +{ + VarSet(VAR_0x40AE, gSaveBlock1Ptr->mapDataId); +} -- cgit v1.2.3 From c340377fe527fffd0df58cbe7c1d6b79d9f19827 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 11 Oct 2018 10:26:12 -0400 Subject: sub_8110E3C --- src/quest_log.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 08b504057..97313674e 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -27,19 +27,20 @@ void sub_8110A00(void); void sub_8110A3C(void); void sub_8110BB0(u8); void sub_8110BE8(u8); -void sub_815A008(struct QuestLog *); void sub_8110E3C(void); +void sub_8110D94(void); +void sub_8110E20(void); +void sub_8110D48(u8); +void sub_81115E8(void); u8 sub_8110E68(void *); void sub_81118F4(s8); void sub_8111AD8(void); void sub_8113B88(void); void sub_8113BD8(void); -void sub_81138F8(void); -void sub_81115E8(void); -void sub_8110D94(void); -void sub_8110E20(void); -void sub_8110D48(u8); +void sub_8113BF4(void *); void sub_8112940(u8, u8 *, u16); +void sub_81138F8(void); +void sub_815A008(struct QuestLog *); void sub_8110840(void * a0) @@ -424,3 +425,10 @@ void sub_8110E20(void) { VarSet(VAR_0x40AE, gSaveBlock1Ptr->mapDataId); } + +void sub_8110E3C(void) +{ + sub_8113BF4(gUnknown_203AE08); + if (++gUnknown_203ADF8 > 3) + gUnknown_203ADF8 = 0; +} -- cgit v1.2.3 From 0046efe86762b893b8bc688ff8172a071a952fac Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 11 Oct 2018 11:06:25 -0400 Subject: sub_8110E68 --- src/quest_log.c | 52 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 47 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 97313674e..c16f41236 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -13,6 +13,12 @@ struct UnkStruct_203AE94 u8 unk_1; }; +struct UnkStruct_203AE98 +{ + u8 filler_0[6]; + u8 unk_6; +}; + EWRAM_DATA u8 gUnknown_203ADF8 = 0; EWRAM_DATA u8 gUnknown_203ADFA = 0; EWRAM_DATA u16 gUnknown_203ADFC = 0; @@ -21,7 +27,8 @@ EWRAM_DATA void * gUnknown_203AE08 = NULL; EWRAM_DATA void * gUnknown_203AE0C[32] = {NULL}; EWRAM_DATA void (* gUnknown_203AE8C)(void) = 0; EWRAM_DATA struct UnkStruct_203AE94 gUnknown_203AE94 = {0}; -EWRAM_DATA u8 gUnknown_203AE98[0x100] = {0}; +EWRAM_DATA struct UnkStruct_203AE98 gUnknown_203AE98[32] = {0}; +EWRAM_DATA u16 gUnknown_203AF98 = 0; void sub_8110A00(void); void sub_8110A3C(void); @@ -31,16 +38,17 @@ void sub_8110E3C(void); void sub_8110D94(void); void sub_8110E20(void); void sub_8110D48(u8); +u8 sub_8110E68(struct UnkStruct_203AE98 *); void sub_81115E8(void); -u8 sub_8110E68(void *); void sub_81118F4(s8); void sub_8111AD8(void); +void sub_8112940(u8, struct UnkStruct_203AE98 *, u16); void sub_8113B88(void); void sub_8113BD8(void); -void sub_8113BF4(void *); -void sub_8112940(u8, u8 *, u16); +void * sub_8113BF4(void *); void sub_81138F8(void); -void sub_815A008(struct QuestLog *); +void * sub_8113D48(void *, struct UnkStruct_203AE98 *); +void * sub_8113CC8(void *, struct UnkStruct_203AE98 *); void sub_8110840(void * a0) @@ -432,3 +440,37 @@ void sub_8110E3C(void) if (++gUnknown_203ADF8 > 3) gUnknown_203ADF8 = 0; } + +bool8 sub_8110E68(struct UnkStruct_203AE98 * a0) +{ + u16 i; + + for (i = gUnknown_203ADFC; i < gUnknown_203AF98; i++) + { + if (gUnknown_203AE08 == NULL) + return FALSE; + switch (a0[i].unk_6) + { + case 0: + case 1: + gUnknown_203AE08 = sub_8113D48(gUnknown_203AE08, &a0[i]); + break; + default: + gUnknown_203AE08 = sub_8113CC8(gUnknown_203AE08, &a0[i]); + break; + } + if (gUnknown_203AE08 == NULL) + { + gUnknown_3005E88 = 0; + return FALSE; + } + } + + if (gUnknown_3005E88 == 0) + { + gUnknown_203AE08 = sub_8113BF4(gUnknown_203AE08); + return FALSE; + } + gUnknown_203ADFC = gUnknown_203AF98; + return TRUE; +} -- cgit v1.2.3 From 1e655837127f458d5fcaf6e57d89032f74950540 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 11 Oct 2018 12:04:54 -0400 Subject: through sub_8110FCC --- src/quest_log.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index c16f41236..0e8d5dd48 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -1,6 +1,11 @@ #include "global.h" -#include "script.h" +#include "main.h" +#include "task.h" #include "event_data.h" +#include "script.h" +#include "overworld.h" +#include "wild_encounter.h" +#include "help_system.h" #include "quest_log.h" u8 gUnknown_3005E88; @@ -20,6 +25,7 @@ struct UnkStruct_203AE98 }; EWRAM_DATA u8 gUnknown_203ADF8 = 0; +EWRAM_DATA u8 gUnknown_203ADF9 = 0; EWRAM_DATA u8 gUnknown_203ADFA = 0; EWRAM_DATA u16 gUnknown_203ADFC = 0; EWRAM_DATA void * gUnknown_203AE04 = NULL; @@ -39,14 +45,19 @@ void sub_8110D94(void); void sub_8110E20(void); void sub_8110D48(u8); u8 sub_8110E68(struct UnkStruct_203AE98 *); +void sub_8110F90(u8); +void sub_8111150(u8); +void sub_8111368(void); void sub_81115E8(void); +void sub_811175C(u8, struct UnkStruct_203AE98 *); void sub_81118F4(s8); +void sub_81138F8(void); void sub_8111AD8(void); void sub_8112940(u8, struct UnkStruct_203AE98 *, u16); +void sub_811381C(void); void sub_8113B88(void); void sub_8113BD8(void); void * sub_8113BF4(void *); -void sub_81138F8(void); void * sub_8113D48(void *, struct UnkStruct_203AE98 *); void * sub_8113CC8(void *, struct UnkStruct_203AE98 *); @@ -474,3 +485,47 @@ bool8 sub_8110E68(struct UnkStruct_203AE98 * a0) gUnknown_203ADFC = gUnknown_203AF98; return TRUE; } + +void sub_8110F14(u8 taskId) +{ + u8 i; + + sub_811381C(); + gUnknown_203ADF9 = 0; + for (i = 0; i < 4; i++) + { + if (gSaveBlock1Ptr->questLog[i].unk_000) + gUnknown_203ADF9++; + } + + if (gUnknown_203ADF9 != 0) + { + gUnknown_3005ECC = FALSE; + sub_8110F90(taskId); + DestroyTask(taskId); + } + else + { + SetMainCallback2(sub_8056938); + DestroyTask(taskId); + } +} + +void sub_8110F90(u8 unused) +{ + gSaveBlock1Ptr->location.mapGroup = 3; + gSaveBlock1Ptr->location.mapNum = 19; + gSaveBlock1Ptr->location.warpId = -1; + gUnknown_203ADF8 = 0; + gUnknown_2031DD8 = 1; + sub_8082740(1); + sub_8111368(); +} + +void sub_8110FCC(void) +{ + sub_811175C(gUnknown_203ADF8, gUnknown_203AE98); + sub_8113B88(); + sub_8112940(1, gUnknown_203AE98, 0x100); + sub_8111150(gUnknown_203ADF8); +} -- cgit v1.2.3 From b8054bbe5bae6eb87b60840c49606f96e034e6e0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 11 Oct 2018 12:36:39 -0400 Subject: through sub_8111070 --- src/quest_log.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 0e8d5dd48..61c4de211 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -1,9 +1,15 @@ #include "global.h" #include "main.h" #include "task.h" +#include "palette.h" +#include "menu.h" +#include "window.h" +#include "text_window.h" #include "event_data.h" +#include "string_util.h" #include "script.h" #include "overworld.h" +#include "field_fadetransition.h" #include "wild_encounter.h" #include "help_system.h" #include "quest_log.h" @@ -28,6 +34,7 @@ EWRAM_DATA u8 gUnknown_203ADF8 = 0; EWRAM_DATA u8 gUnknown_203ADF9 = 0; EWRAM_DATA u8 gUnknown_203ADFA = 0; EWRAM_DATA u16 gUnknown_203ADFC = 0; +EWRAM_DATA u8 gUnknown_203ADFE[3]; EWRAM_DATA void * gUnknown_203AE04 = NULL; EWRAM_DATA void * gUnknown_203AE08 = NULL; EWRAM_DATA void * gUnknown_203AE0C[32] = {NULL}; @@ -61,6 +68,15 @@ void * sub_8113BF4(void *); void * sub_8113D48(void *, struct UnkStruct_203AE98 *); void * sub_8113CC8(void *, struct UnkStruct_203AE98 *); +extern const u8 gUnknown_841A155[]; + +const struct WindowTemplate gUnknown_845661C[3] = { + { 0, 0, 0, 30, 2, 15, 0x0e9 }, + { 0, 0, 18, 30, 2, 15, 0x0ad }, + { 0, 0, 14, 30, 6, 15, 0x14c } +}; + +const struct TextColor gUnknown_8456634 = {15, 1, 12}; void sub_8110840(void * a0) { @@ -529,3 +545,49 @@ void sub_8110FCC(void) sub_8112940(1, gUnknown_203AE98, 0x100); sub_8111150(gUnknown_203ADF8); } + +bool8 sub_8111000(void) +{ + LoadPalette(stdpal_get(4), 0xF0, 0x20); + sub_81109CC(2); + sub_807DF64(); + gUnknown_203AE94 = (struct UnkStruct_203AE94){}; + gUnknown_203AE94.unk_0_0 = 2; + return 1; +} + +bool8 sub_8111038(void) +{ + LoadPalette(stdpal_get(4), 0xF0, 0x20); + sub_81109CC(2); + sub_807DF7C(); + gUnknown_203AE94 = (struct UnkStruct_203AE94){}; + gUnknown_203AE94.unk_0_0 = 2; + return 1; +} + +void sub_8111070(u8 a0) +{ + u8 i; + + for (i = 0; i < 3; i++) + { + gUnknown_203ADFE[i] = AddWindow(&gUnknown_845661C[i]); + FillWindowPixelRect(gUnknown_203ADFE[i], 15, 0, 0, gUnknown_845661C[i].width * 8, gUnknown_845661C[i].height * 8); + } + + StringExpandPlaceholders(gStringVar4, gUnknown_841A155); + + if (a0) + { + ConvertIntToDecimalStringN(gStringVar1, a0, STR_CONV_MODE_LEFT_ALIGN, 1); + StringAppend(gStringVar4, gStringVar1); + } + + AddTextPrinterParametrized2(gUnknown_203ADFE[0], 2, 2, 2, 1, 2, &gUnknown_8456634, 0, gStringVar4); + PutWindowTilemap(gUnknown_203ADFE[0]); + PutWindowTilemap(gUnknown_203ADFE[1]); + CopyWindowToVram(gUnknown_203ADFE[0], 2); + CopyWindowToVram(gUnknown_203ADFE[2], 2); + CopyWindowToVram(gUnknown_203ADFE[1], 3); +} -- cgit v1.2.3 From 21224433ab5ce61f3c0b5c14bf2d76cbdb3ed740 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 11 Oct 2018 13:56:18 -0400 Subject: through sub_8111150 --- src/quest_log.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 61c4de211..3e41d7d31 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -12,6 +12,7 @@ #include "field_fadetransition.h" #include "wild_encounter.h" #include "help_system.h" +#include "unk_8159F40.h" #include "quest_log.h" u8 gUnknown_3005E88; @@ -576,6 +577,7 @@ void sub_8111070(u8 a0) FillWindowPixelRect(gUnknown_203ADFE[i], 15, 0, 0, gUnknown_845661C[i].width * 8, gUnknown_845661C[i].height * 8); } + // _("Previously on your quest…$") StringExpandPlaceholders(gStringVar4, gUnknown_841A155); if (a0) @@ -591,3 +593,31 @@ void sub_8111070(u8 a0) CopyWindowToVram(gUnknown_203ADFE[2], 2); CopyWindowToVram(gUnknown_203ADFE[1], 3); } + +void sub_8111134(void) +{ + PutWindowTilemap(gUnknown_203ADFE[1]); + CopyWindowToVram(gUnknown_203ADFE[1], 1); +} + +void sub_8111150(u8 a0) +{ + struct QuestLog *questLog = &gSaveBlock1Ptr->questLog[a0]; + u16 i; + + for (i = 0; i < 64; i++) + { + if (questLog->npcData[i].negx) + gSaveBlock1Ptr->mapObjectTemplates[i].x = -questLog->npcData[i].x; + else + gSaveBlock1Ptr->mapObjectTemplates[i].x = questLog->npcData[i].x; + if (questLog->npcData[i].negy) + gSaveBlock1Ptr->mapObjectTemplates[i].y = -(u8)questLog->npcData[i].y; + else + gSaveBlock1Ptr->mapObjectTemplates[i].y = questLog->npcData[i].y; + gSaveBlock1Ptr->mapObjectTemplates[i].elevation = questLog->npcData[i].elevation; + gSaveBlock1Ptr->mapObjectTemplates[i].movementType = questLog->npcData[i].movementType; + } + + sub_815A1F8(questLog, gSaveBlock1Ptr->mapObjectTemplates); +} -- cgit v1.2.3 From 1fd187fb57a8b588f68455366d81f4b839939cb5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 11 Oct 2018 15:06:35 -0400 Subject: through sub_81113E4 --- src/quest_log.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 3e41d7d31..d03319434 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -10,6 +10,7 @@ #include "script.h" #include "overworld.h" #include "field_fadetransition.h" +#include "item.h" #include "wild_encounter.h" #include "help_system.h" #include "unk_8159F40.h" @@ -57,6 +58,7 @@ void sub_8110F90(u8); void sub_8111150(u8); void sub_8111368(void); void sub_81115E8(void); +void sub_8111688(void); void sub_811175C(u8, struct UnkStruct_203AE98 *); void sub_81118F4(s8); void sub_81138F8(void); @@ -434,8 +436,8 @@ void sub_8110D48(u8 a0) { struct QuestLog * questLog = &gSaveBlock1Ptr->questLog[a0]; - CpuCopy16(gSaveBlock1Ptr->flags, questLog->unk_148, 0x120); - CpuCopy16(gSaveBlock1Ptr->vars, questLog->unk_268, 0x200); + CpuCopy16(gSaveBlock1Ptr->flags, questLog->unk_148, FLAGS_COUNT * sizeof(u8)); + CpuCopy16(gSaveBlock1Ptr->vars, questLog->unk_268, VARS_COUNT * sizeof(u16)); } void sub_8110D94(void) @@ -621,3 +623,56 @@ void sub_8111150(u8 a0) sub_815A1F8(questLog, gSaveBlock1Ptr->mapObjectTemplates); } + +void sub_8111274(u8 a0, u8 a1) +{ + struct WarpData sp0; + + if (!a1) + { + gSaveBlock1Ptr->location.mapGroup = gSaveBlock1Ptr->questLog[a0].unk_001; + gSaveBlock1Ptr->location.mapNum = gSaveBlock1Ptr->questLog[a0].unk_002; + gSaveBlock1Ptr->location.warpId = gSaveBlock1Ptr->questLog[a0].unk_003; + gSaveBlock1Ptr->pos.x = gSaveBlock1Ptr->questLog[a0].unk_004; + gSaveBlock1Ptr->pos.y = gSaveBlock1Ptr->questLog[a0].unk_006; + } + else + { + sp0.mapGroup = gSaveBlock1Ptr->questLog[a0].unk_001; + sp0.mapNum = gSaveBlock1Ptr->questLog[a0].unk_002; + sp0.warpId = gSaveBlock1Ptr->questLog[a0].unk_003; + sp0.x = gSaveBlock1Ptr->questLog[a0].unk_004; + sp0.y = gSaveBlock1Ptr->questLog[a0].unk_006; + sub_8055D5C(&sp0); + } +} + +void sub_8111368(void) +{ + gUnknown_203ADFA = 2; + sub_806E6FC(); + sub_809A2DC(); + sub_809A2A4(); + if (sub_8110AC8() == 1) + { + sub_8111274(gUnknown_203ADF8, 0); + gUnknown_3005024 = sub_8111038; + SetMainCallback2(sub_80572A8); + } + else + { + sub_8111274(gUnknown_203ADF8, 1); + warp_in(); + gUnknown_3005024 = sub_8111000; + SetMainCallback2(sub_805726C); + } +} + +void sub_81113E4(void) +{ + struct QuestLog * questLog = &gSaveBlock1Ptr->questLog[gUnknown_203ADF8]; + + CpuCopy16(questLog->unk_148, gSaveBlock1Ptr->flags, FLAGS_COUNT * sizeof(u8)); + CpuCopy16(questLog->unk_268, gSaveBlock1Ptr->vars, VARS_COUNT * sizeof(u16)); + sub_8111688(); +} -- cgit v1.2.3 From 3310b1445ac759a042776d8931cfe8d7dec46bd5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 11 Oct 2018 16:13:46 -0400 Subject: sub_8111438 --- src/quest_log.c | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index d03319434..b1f1dc870 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -1,4 +1,6 @@ #include "global.h" +#include "constants/species.h" +#include "malloc.h" #include "main.h" #include "task.h" #include "palette.h" @@ -14,6 +16,7 @@ #include "wild_encounter.h" #include "help_system.h" #include "unk_8159F40.h" +#include "pokemon_storage_system.h" #include "quest_log.h" u8 gUnknown_3005E88; @@ -58,6 +61,8 @@ void sub_8110F90(u8); void sub_8111150(u8); void sub_8111368(void); void sub_81115E8(void); +u16 sub_8111618(void); +u16 sub_811164C(void); void sub_8111688(void); void sub_811175C(u8, struct UnkStruct_203AE98 *); void sub_81118F4(s8); @@ -676,3 +681,82 @@ void sub_81113E4(void) CpuCopy16(questLog->unk_268, gSaveBlock1Ptr->vars, VARS_COUNT * sizeof(u16)); sub_8111688(); } + +struct PokemonAndSomethingElse +{ + struct Pokemon mon; + u16 unk_64; + u16 unk_66; +}; + +void sub_8111438(void) +{ + struct PokemonAndSomethingElse *r9 = AllocZeroed(sizeof(struct PokemonAndSomethingElse)); + u16 r0, r3, r5, r6; + + CreateMon(&r9->mon, SPECIES_RATTATA, 1, 0x20, FALSE, 0, 0, 0); + r0 = VarGet(VAR_0x4027); + r9->unk_64 = r0 >> 12; + r9->unk_66 = r0 % 0x1000; + + r5 = sub_8111618(); + if (r5 > r9->unk_64) + { + for (r3 = 0; r3 < r5 - r9->unk_64; r3++) + { + ZeroMonData(&gPlayerParty[5 - r3]); + } + } + else if (r5 < r9->unk_64) + { + for (r3 = 0; r3 < 5; r3++) + { + sub_808BCB4(0, r3); + } + for (r3 = r5; r3 < r9->unk_64; r3++) + { + CopyMon(&gPlayerParty[r3], &r9->mon, sizeof(struct Pokemon)); + } + } + + r5 = sub_811164C(); + if (r5 > r9->unk_66) + { + for (r3 = 0; r3 < 14; r3++) + { + for (r6 = 0; r6 < 30; r6++) + { + if (GetBoxMonDataFromAnyBox(r3, r6, MON_DATA_SANITY_BIT2)) + { + sub_808BCB4(r3, r6); + r5--; + if (r5 == r9->unk_66) + break; + } + } + if (r5 == r9->unk_66) + break; + } + } + else if (r5 < r9->unk_66) + { + for (r3 = 0; r3 < 14; r3++) + { + for (r6 = 0; r6 < 30; r6++) + { + struct BoxPokemon * boxMon = GetBoxedMonPtr(r3, r6); + if (!GetBoxMonData(boxMon, MON_DATA_SANITY_BIT2)) + { + CopyMon(boxMon, &r9->mon.box, sizeof(struct BoxPokemon)); + r5++; + if (r5 == r9->unk_66) + break; + } + } + if (r5 == r9->unk_66) + break; + } + } + + Free(r9); +} -- cgit v1.2.3 From feadfc8911db9bde3bc8678ea0a5d9bab0aeef15 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 11 Oct 2018 16:21:47 -0400 Subject: through sub_811164C --- src/quest_log.c | 42 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index b1f1dc870..7ed5e0560 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -740,9 +740,9 @@ void sub_8111438(void) } else if (r5 < r9->unk_66) { - for (r3 = 0; r3 < 14; r3++) + for (r3 = 0; r3 < TOTAL_BOXES_COUNT; r3++) { - for (r6 = 0; r6 < 30; r6++) + for (r6 = 0; r6 < IN_BOX_COUNT; r6++) { struct BoxPokemon * boxMon = GetBoxedMonPtr(r3, r6); if (!GetBoxMonData(boxMon, MON_DATA_SANITY_BIT2)) @@ -760,3 +760,41 @@ void sub_8111438(void) Free(r9); } + +void sub_81115E8(void) +{ + u16 r4 = sub_8111618(); + u16 r1 = sub_811164C(); + VarSet(VAR_0x4027, (r4 << 12) + r1); +} + +u16 sub_8111618(void) +{ + u16 count = 0; + u16 i; + + for (i = 0; i < PARTY_SIZE; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SANITY_BIT2)) + count++; + } + + return count; +} + +u16 sub_811164C(void) +{ + u16 count = 0; + u16 i, j; + + for (i = 0; i < TOTAL_BOXES_COUNT; i++) + { + for (j = 0; j < IN_BOX_COUNT; j++) + { + if (GetBoxMonDataFromAnyBox(i, j, MON_DATA_SANITY_BIT2)) + count++; + } + } + + return count; +} -- cgit v1.2.3 From 913f2a9a1d88ca8fb86557cc265cd6ca7fac80e4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 11 Oct 2018 17:21:45 -0400 Subject: through sub_811175C --- src/quest_log.c | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 96 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 7ed5e0560..da918be79 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -41,7 +41,7 @@ EWRAM_DATA u8 gUnknown_203ADFA = 0; EWRAM_DATA u16 gUnknown_203ADFC = 0; EWRAM_DATA u8 gUnknown_203ADFE[3]; EWRAM_DATA void * gUnknown_203AE04 = NULL; -EWRAM_DATA void * gUnknown_203AE08 = NULL; +EWRAM_DATA u16 * gUnknown_203AE08 = NULL; EWRAM_DATA void * gUnknown_203AE0C[32] = {NULL}; EWRAM_DATA void (* gUnknown_203AE8C)(void) = 0; EWRAM_DATA struct UnkStruct_203AE94 gUnknown_203AE94 = {0}; @@ -65,7 +65,12 @@ u16 sub_8111618(void); u16 sub_811164C(void); void sub_8111688(void); void sub_811175C(u8, struct UnkStruct_203AE98 *); -void sub_81118F4(s8); +void * sub_8113D08(void *, struct UnkStruct_203AE98 *); +void * sub_8113D94(void *, struct UnkStruct_203AE98 *); +void * sub_8113C20(void *, struct UnkStruct_203AE98 *); +void * sub_8113C8C(void *, struct UnkStruct_203AE98 *); +void * sub_8113A78(void *, void **); +void sub_8113ABC(void *); void sub_81138F8(void); void sub_8111AD8(void); void sub_8112940(u8, struct UnkStruct_203AE98 *, u16); @@ -75,6 +80,7 @@ void sub_8113BD8(void); void * sub_8113BF4(void *); void * sub_8113D48(void *, struct UnkStruct_203AE98 *); void * sub_8113CC8(void *, struct UnkStruct_203AE98 *); +void sub_81118F4(s8); extern const u8 gUnknown_841A155[]; @@ -94,7 +100,7 @@ void sub_8110840(void * a0) if (gUnknown_203ADFA != 0) { if (gUnknown_203AE08) - gUnknown_203AE08 += r1; + gUnknown_203AE08 = (void *)gUnknown_203AE08 + r1; if (gUnknown_203ADFA == 2) { int r3; @@ -111,7 +117,7 @@ void sub_811089C(void) gUnknown_203ADF8 = 0; gUnknown_203ADFA = 0; gUnknown_203AE8C = 0; - gUnknown_203AE08 = 0; + gUnknown_203AE08 = NULL; gUnknown_203AE04 = 0; sub_8113BD8(); sub_81138F8(); @@ -134,20 +140,20 @@ void sub_811092C(void) gUnknown_203AE8C(); } -bool8 sub_8110944(u8 * a0, size_t a1) +bool8 sub_8110944(void * a0, size_t a1) { - u8 * r2 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].filler_568; - u8 * r0 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].end; + void * r2 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_568; + void * r0 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].end; r0 -= a1; if (a0 < r2 || a0 > r0) return FALSE; return TRUE; } -bool8 sub_8110988(u8 * a0, size_t a1) +bool8 sub_8110988(void * a0, size_t a1) { - u8 * r2 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].filler_568; - u8 * r0 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].end; + void * r2 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_568; + void * r0 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].end; r0 -= a1; if (a0 < r2 || a0 > r0) return FALSE; @@ -209,7 +215,7 @@ void sub_8110AEC(u16 a0) sub_81108F0(gUnknown_203ADF8); sub_8113B88(); - gUnknown_203AE08 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].filler_568; + gUnknown_203AE08 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_568; if ((a0 >= 12 && a0 < 20) || a0 == 35) gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_000 = 2; else @@ -798,3 +804,82 @@ u16 sub_811164C(void) return count; } + +void sub_8111688(void) +{ + u16 i, j; + u16 sp0[4]; + + for (i = 0; i < 4; i++) + { + sp0[i] = VarGet(VAR_0x40AA + i); + + for (j = 0; j < 16; j++) + { + if (sp0[i] & 1) + gSaveBlock1Ptr->trainerRematches[16 * i + j] = 30; + else + gSaveBlock1Ptr->trainerRematches[16 * i + j] = 0; + sp0[i] >>= 1; + } + } +} + +void sub_8111708(void) +{ + struct MapHeader sp0; + + gSaveBlock1Ptr->mapDataId = VarGet(VAR_0x40AE); + if (gSaveBlock1Ptr->mapDataId == 0) + { + sp0 = *get_mapheader_by_bank_and_number(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum); + gSaveBlock1Ptr->mapDataId = sp0.mapDataId; + } +} + +void sub_811175C(u8 a0, struct UnkStruct_203AE98 * a1) +{ + u16 i; + u16 *r4; + u16 r6 = 0; + u16 r9 = 0; + + memset(a1, 0, 32 * sizeof(struct UnkStruct_203AE98)); + for (i = 0; i < 32; i++) + { + gUnknown_203AE0C[i] = NULL; + } + + r4 = gSaveBlock1Ptr->questLog[a0].unk_568; + for (i = 0; i < 32; i++) + { + switch (*r4 & 0xFFF) + { + case 0: + r4 = sub_8113D08(r4, &a1[r6]); + r6++; + break; + case 1: + case 2: + r4 = sub_8113D94(r4, &a1[r6]); + r6++; + break; + case 39: + r4 = sub_8113C20(r4, &a1[r6]); + r6++; + break; + case 41: + r4 = sub_8113C8C(r4, &a1[r6]); + r6++; + break; + default: + r4 = sub_8113A78(r4, &gUnknown_203AE0C[r9]); + if (r9 == 0) + sub_8113ABC(gUnknown_203AE0C[0]); + r9++; + break; + } + if (r4 == NULL) + break; + } +} -- cgit v1.2.3 From d0c63f0f5971e94dc3607feb9e8e7d995ebcacb4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 11 Oct 2018 18:47:20 -0400 Subject: through sub_8111984 --- src/quest_log.c | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index da918be79..b7e38ef40 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -12,11 +12,13 @@ #include "script.h" #include "overworld.h" #include "field_fadetransition.h" +#include "field_weather.h" #include "item.h" #include "wild_encounter.h" #include "help_system.h" #include "unk_8159F40.h" #include "pokemon_storage_system.h" +#include "save.h" #include "quest_log.h" u8 gUnknown_3005E88; @@ -65,6 +67,10 @@ u16 sub_8111618(void); u16 sub_811164C(void); void sub_8111688(void); void sub_811175C(u8, struct UnkStruct_203AE98 *); +void sub_81118F4(s8); +void sub_8111914(void); +void sub_8111984(void); +bool8 sub_8111F60(void); void * sub_8113D08(void *, struct UnkStruct_203AE98 *); void * sub_8113D94(void *, struct UnkStruct_203AE98 *); void * sub_8113C20(void *, struct UnkStruct_203AE98 *); @@ -80,7 +86,6 @@ void sub_8113BD8(void); void * sub_8113BF4(void *); void * sub_8113D48(void *, struct UnkStruct_203AE98 *); void * sub_8113CC8(void *, struct UnkStruct_203AE98 *); -void sub_81118F4(s8); extern const u8 gUnknown_841A155[]; @@ -883,3 +888,39 @@ void sub_811175C(u8 a0, struct UnkStruct_203AE98 * a1) break; } } + +void sub_81118F4(s8 a0) +{ + fade_screen(1, a0); + gUnknown_203AE8C = sub_8111914; +} + +void sub_8111914(void) +{ + if (!gUnknown_2037AB8.active) + { + ScriptContext2_Enable(); + if (++gUnknown_203ADF8 < 4 && gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_000) + { + gUnknown_203ADF9--; + sub_8111368(); + } + else + { + gUnknown_3005E88 = 0; + sub_8111984(); + } + } +} + +void sub_8111984(void) +{ + sub_806E6FC(); + ResetSaveCounters(); + sub_80DA4FC(0); + SetMainCallback2(sub_8057430); + gUnknown_3005024 = sub_8111F60; + FreeAllWindowBuffers(); + gUnknown_203ADFA = 3; + gUnknown_203AE8C = NULL; +} -- cgit v1.2.3 From 1125d6627eaf23d66c09bc6cc2a548bbad10c789 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Oct 2018 07:59:08 -0400 Subject: through sub_8111A34 --- src/quest_log.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index b7e38ef40..c50771491 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -70,6 +70,8 @@ void sub_811175C(u8, struct UnkStruct_203AE98 *); void sub_81118F4(s8); void sub_8111914(void); void sub_8111984(void); +void sub_8112364(void); +void sub_8111A34(u8); bool8 sub_8111F60(void); void * sub_8113D08(void *, struct UnkStruct_203AE98 *); void * sub_8113D94(void *, struct UnkStruct_203AE98 *); @@ -924,3 +926,57 @@ void sub_8111984(void) gUnknown_203ADFA = 3; gUnknown_203AE8C = NULL; } + +void sub_81119C8(void) +{ + sub_8111914(); +} + +bool8 sub_81119D4(void (*a0)(void)) +{ + u8 taskId; + + switch (gUnknown_203ADFA) + { + case 1: + sub_8112364(); + break; + case 2: + gUnknown_3005E88 = 3; + taskId = CreateTask(sub_8111A34, 80); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + SetWordTaskArg(taskId, 14, (u32)a0); + return TRUE; + } + return FALSE; +} + +void sub_8111A34(u8 taskId) +{ + void (*routine)(void); + s16 * data = gTasks[taskId].data; + + switch (data[1]) + { + case 0: + if (++data[0] == 0x7F) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gUnknown_203AE94.unk_0_6 = 2; + data[1]++; + } + break; + case 1: + if (!gUnknown_2037AB8.active) + { + gUnknown_3005E88 = 0; + routine = (void (*)(void)) GetWordTaskArg(taskId, 14); + if (routine != NULL) + routine(); + DestroyTask(taskId); + gUnknown_203AE8C = sub_8111914; + } + break; + } +} -- cgit v1.2.3 From 6b0f3451b89dddbb05279281d598ccda65824c9b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Oct 2018 08:47:12 -0400 Subject: sub_8111AD8 --- src/quest_log.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 46 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index c50771491..d1d0d341e 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -29,6 +29,8 @@ struct UnkStruct_203AE94 u8 unk_0_4:2; u8 unk_0_6:2; u8 unk_1; + u8 unk_2; + u8 unk_3; }; struct UnkStruct_203AE98 @@ -70,24 +72,29 @@ void sub_811175C(u8, struct UnkStruct_203AE98 *); void sub_81118F4(s8); void sub_8111914(void); void sub_8111984(void); -void sub_8112364(void); void sub_8111A34(u8); -bool8 sub_8111F60(void); -void * sub_8113D08(void *, struct UnkStruct_203AE98 *); -void * sub_8113D94(void *, struct UnkStruct_203AE98 *); -void * sub_8113C20(void *, struct UnkStruct_203AE98 *); -void * sub_8113C8C(void *, struct UnkStruct_203AE98 *); -void * sub_8113A78(void *, void **); -void sub_8113ABC(void *); -void sub_81138F8(void); void sub_8111AD8(void); +void sub_8111B80(void); +void sub_8111E20(void); +bool8 sub_8111F60(void); +void sub_8112364(void); +void sub_8112888(u8); void sub_8112940(u8, struct UnkStruct_203AE98 *, u16); void sub_811381C(void); +void sub_81138F8(void); +void * sub_8113A78(void *, void **); +void sub_8113ABC(void *); +bool8 sub_8113AE8(void *); +bool8 sub_8113B44(void *); void sub_8113B88(void); void sub_8113BD8(void); void * sub_8113BF4(void *); -void * sub_8113D48(void *, struct UnkStruct_203AE98 *); +void * sub_8113C20(void *, struct UnkStruct_203AE98 *); +void * sub_8113C8C(void *, struct UnkStruct_203AE98 *); void * sub_8113CC8(void *, struct UnkStruct_203AE98 *); +void * sub_8113D08(void *, struct UnkStruct_203AE98 *); +void * sub_8113D48(void *, struct UnkStruct_203AE98 *); +void * sub_8113D94(void *, struct UnkStruct_203AE98 *); extern const u8 gUnknown_841A155[]; @@ -980,3 +987,32 @@ void sub_8111A34(u8 taskId) break; } } + +void sub_8111AD8(void) +{ + if (gUnknown_203AE94.unk_0_0 == 1) + { + if (--gUnknown_203AE94.unk_2 != 0) + return; + gUnknown_203AE94.unk_0_0 = 0; + gUnknown_203AE94.unk_0_4 = 1; + sub_8112888(2); + } + + if (gUnknown_203AE94.unk_0_4 == 1) + { + if (++gUnknown_203AE94.unk_3 > 15) + { + sub_8111E20(); + gUnknown_203AE94.unk_0_4 = 0; + gUnknown_203AE94.unk_3 = 0; + } + } + if (gUnknown_203AE94.unk_1 < 32) + { + if (sub_8113B44(gUnknown_203AE0C[gUnknown_203AE94.unk_1]) == 1) + sub_8111B80(); + else if (sub_8113AE8(gUnknown_203AE0C[gUnknown_203AE94.unk_1]) == 1) + sub_8111B80(); + } +} -- cgit v1.2.3 From cd3594802cd6ca1d460d89d3e2a007192c1d7bfa Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Oct 2018 09:48:04 -0400 Subject: through sub_8111CF0 --- src/quest_log.c | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index d1d0d341e..8131d0573 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -52,6 +52,8 @@ EWRAM_DATA struct UnkStruct_203AE94 gUnknown_203AE94 = {0}; EWRAM_DATA struct UnkStruct_203AE98 gUnknown_203AE98[32] = {0}; EWRAM_DATA u16 gUnknown_203AF98 = 0; +EWRAM_DATA u16 gUnknown_203B044[2] = {0}; + void sub_8110A00(void); void sub_8110A3C(void); void sub_8110BB0(u8); @@ -75,7 +77,10 @@ void sub_8111984(void); void sub_8111A34(u8); void sub_8111AD8(void); void sub_8111B80(void); +u8 sub_8111BD4(void); +void sub_8111D10(void); void sub_8111E20(void); +void sub_8111E64(s8); bool8 sub_8111F60(void); void sub_8112364(void); void sub_8112888(u8); @@ -1016,3 +1021,81 @@ void sub_8111AD8(void) sub_8111B80(); } } + +void sub_8111B80(void) +{ + if (gUnknown_203AE94.unk_0_0 == 0) + { + gUnknown_203AE94.unk_0_0 = 1; + gUnknown_203AE94.unk_0_4 = 0; + gUnknown_203AE94.unk_3 = 0; + gUnknown_203AE94.unk_2 = sub_8111BD4(); + if (gUnknown_203B044[1] == 0) + gUnknown_203AE94.unk_1++; + if (gUnknown_203AE94.unk_1 > 32) + return; + sub_8111D10(); + } + sub_8112888(1); +} + +u8 sub_8111BD4(void) +{ + u16 i; + u16 count = 0; + + for (i = 0; i < 0x400 && gStringVar4[i] != EOS; i++) + { + if (gStringVar4[i] != CHAR_NEWLINE) + count++; + } + + if (count < 20) + return 0x5F; + if (count < 36) + return 0x7F; + if (count < 46) + return 0xBF; + return 0xFF; +} + +bool8 sub_8111C2C(void) +{ + if (gUnknown_203ADFA != 2) + return FALSE; + if (gUnknown_3005E88 == 0 || gUnknown_203AE94.unk_0_0 == 1 || gUnknown_203AE94.unk_0_0 == 2) + return TRUE; + return FALSE; +} + +void sub_8111C68(void) +{ + if (gUnknown_203AE94.unk_0_6 == 0) + { + if (gMain.newKeys & A_BUTTON) + { + gUnknown_203AE94.unk_0_6 = 2; + gUnknown_3005E88 = 0; + sub_81118F4(-3); + } + else if (gMain.newKeys & B_BUTTON) + { + gUnknown_203AE94.unk_0_6 = 1; + gUnknown_3005E88 = 0; + sub_8111E64(-3); + } + } +} + +bool8 sub_8111CD0(void) +{ + if (gUnknown_203AE94.unk_0_6 != 0) + return TRUE; + return FALSE; +} + +void sub_8111CF0(void) +{ + if (gUnknown_203ADFA == 2) + sub_8111070(gUnknown_203ADF9); +} -- cgit v1.2.3 From 714d387cbd8e3a9a9e5b522eed42c8132d41e0b0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Oct 2018 10:09:38 -0400 Subject: through sub_8111D90 --- src/quest_log.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 8131d0573..4cf7e6c95 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -79,6 +79,7 @@ void sub_8111AD8(void); void sub_8111B80(void); u8 sub_8111BD4(void); void sub_8111D10(void); +void sub_8111D90(u8); void sub_8111E20(void); void sub_8111E64(s8); bool8 sub_8111F60(void); @@ -111,6 +112,10 @@ const struct WindowTemplate gUnknown_845661C[3] = { const struct TextColor gUnknown_8456634 = {15, 1, 12}; +const u16 gUnknown_8456638[] = INCBIN_U16("data/graphics/unknown_8456638.bin"); + +const u8 gUnknown_8456698[] = {17, 10, 3}; + void sub_8110840(void * a0) { size_t r1 = (void *)gSaveBlock1Ptr - a0; @@ -1099,3 +1104,57 @@ void sub_8111CF0(void) if (gUnknown_203ADFA == 2) sub_8111070(gUnknown_203ADF9); } + +void sub_8111D10(void) +{ + u16 i; + u8 count = 0; + + for (i = 0; i < 0x100 && gStringVar4[i] != EOS; i++) + { + if (gStringVar4[i] == CHAR_NEWLINE) + count++; + } + + PutWindowTilemap(gUnknown_203ADFE[2]); + sub_8111D90(gUnknown_203ADFE[2]); + AddTextPrinterParametrized2(gUnknown_203ADFE[2], 2, 2, gUnknown_8456698[count], 1, 0, &gUnknown_8456634, 0, gStringVar4); + schedule_bg_copy_tilemap_to_vram(0); +} + +void sub_8111D90(u8 a0) +{ + const u16 * src = gUnknown_8456638; + u16 * buffer = Alloc(0x1680); + u8 i, j, y; + + if (buffer) + { + for (i = 0; i < 6; i++) + { + switch (i) + { + default: + y = 1; + break; + case 0: + y = 0; + break; + case 5: + y = 2; + break; + } + + // r6 = y * 32 + // r5 = 2 * (i % 16) + // r4 = j + for (j = 0; j < 30; j++) + { + CpuCopy32(src + 16 * y, buffer + 16 * (2 * (15 * i) + j), 32); + } + } + + CopyToWindowPixelBuffer(a0, (const u8 *)buffer, 0x1680, 0); + Free(buffer); + } +} -- cgit v1.2.3 From 9377dc23e2dcb8a293d8c0d1193c4d708045e08d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Oct 2018 12:18:17 -0400 Subject: through sub_8111F8C --- src/bg.c | 13 ++++++---- src/quest_log.c | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 83 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/bg.c b/src/bg.c index d7f84bf4e..df91e9d4a 100644 --- a/src/bg.c +++ b/src/bg.c @@ -1067,7 +1067,6 @@ void CopyBgTilemapBufferToVram(u8 bg) void CopyToBgTilemapBufferRect(u8 bg, void* src, u8 destX, u8 destY, u8 width, u8 height) { - void* srcCopy; u16 destX16; u16 destY16; u16 mode; @@ -1077,26 +1076,30 @@ void CopyToBgTilemapBufferRect(u8 bg, void* src, u8 destX, u8 destY, u8 width, u switch (GetBgType(bg)) { case 0: - srcCopy = src; + { + u16 * srcCopy = src; for (destY16 = destY; destY16 < (destY + height); destY16++) { for (destX16 = destX; destX16 < (destX + width); destX16++) { - ((u16*)sGpuBgConfigs2[bg].tilemap)[((destY16 * 0x20) + destX16)] = *((u16*)srcCopy)++; + ((u16*)sGpuBgConfigs2[bg].tilemap)[((destY16 * 0x20) + destX16)] = *(srcCopy)++; } } break; + } case 1: - srcCopy = src; + { + u8 * srcCopy = src; mode = GetBgMetricAffineMode(bg, 0x1); for (destY16 = destY; destY16 < (destY + height); destY16++) { for (destX16 = destX; destX16 < (destX + width); destX16++) { - ((u8*)sGpuBgConfigs2[bg].tilemap)[((destY16 * mode) + destX16)] = *((u8*)srcCopy)++; + ((u8*)sGpuBgConfigs2[bg].tilemap)[((destY16 * mode) + destX16)] = *(srcCopy)++; } } break; + } } } } diff --git a/src/quest_log.c b/src/quest_log.c index 4cf7e6c95..2c98ca377 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -13,6 +13,8 @@ #include "overworld.h" #include "field_fadetransition.h" #include "field_weather.h" +#include "map_obj_80688E4.h" +#include "field_player_avatar.h" #include "item.h" #include "wild_encounter.h" #include "help_system.h" @@ -39,6 +41,8 @@ struct UnkStruct_203AE98 u8 unk_6; }; +extern u16 gUnknown_20371F8[]; + EWRAM_DATA u8 gUnknown_203ADF8 = 0; EWRAM_DATA u8 gUnknown_203ADF9 = 0; EWRAM_DATA u8 gUnknown_203ADFA = 0; @@ -48,6 +52,7 @@ EWRAM_DATA void * gUnknown_203AE04 = NULL; EWRAM_DATA u16 * gUnknown_203AE08 = NULL; EWRAM_DATA void * gUnknown_203AE0C[32] = {NULL}; EWRAM_DATA void (* gUnknown_203AE8C)(void) = 0; +EWRAM_DATA u16 *gUnknown_203AE90 = NULL; EWRAM_DATA struct UnkStruct_203AE94 gUnknown_203AE94 = {0}; EWRAM_DATA struct UnkStruct_203AE98 gUnknown_203AE98[32] = {0}; EWRAM_DATA u16 gUnknown_203AF98 = 0; @@ -82,7 +87,10 @@ void sub_8111D10(void); void sub_8111D90(u8); void sub_8111E20(void); void sub_8111E64(s8); +void sub_8111E84(void); bool8 sub_8111F60(void); +void sub_8111F8C(u8); +void sub_8111FCC(u8); void sub_8112364(void); void sub_8112888(u8); void sub_8112940(u8, struct UnkStruct_203AE98 *, u16); @@ -916,7 +924,7 @@ void sub_81118F4(s8 a0) void sub_8111914(void) { - if (!gUnknown_2037AB8.active) + if (!gPaletteFade.active) { ScriptContext2_Enable(); if (++gUnknown_203ADF8 < 4 && gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_000) @@ -985,7 +993,7 @@ void sub_8111A34(u8 taskId) } break; case 1: - if (!gUnknown_2037AB8.active) + if (!gPaletteFade.active) { gUnknown_3005E88 = 0; routine = (void (*)(void)) GetWordTaskArg(taskId, 14); @@ -1158,3 +1166,68 @@ void sub_8111D90(u8 a0) Free(buffer); } } + +void sub_8111E20(void) +{ + ClearWindowTilemap(gUnknown_203ADFE[2]); + FillWindowPixelRect(gUnknown_203ADFE[2], 15, 0, 0, 0xf0, 0x30); + CopyWindowToVram(gUnknown_203ADFE[2], 2); + PutWindowTilemap(gUnknown_203ADFE[1]); + CopyWindowToVram(gUnknown_203ADFE[1], 1); +} + +void sub_8111E64(s8 a0) +{ + fade_screen(1, a0); + gUnknown_203AE8C = sub_8111E84; +} + +void sub_8111E84(void) +{ + if (!gPaletteFade.active) + { + ScriptContext2_Enable(); + for (gUnknown_203ADF8 = gUnknown_203ADF8; gUnknown_203ADF8 < 4; gUnknown_203ADF8++) + { + if (gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_000 == 0) + break; + sub_811175C(gUnknown_203ADF8, gUnknown_203AE98); + } + gUnknown_3005E88 = 0; + sub_8111984(); + } +} + +void sub_8111F14(void) +{ + if (gUnknown_203ADFA == 3) + gUnknown_203AE90 = AllocZeroed(0x200 * sizeof(u16)); +} + +void sub_8111F38(u16 a0, u16 a1) +{ + CpuSet(gUnknown_20371F8 + a0, gUnknown_203AE90 + a0, a1); +} + +bool8 sub_8111F60(void) +{ + LoadPalette(stdpal_get(4), 0xF0, 0x20); + sub_8111070(0); + sub_807DF7C(); + CreateTask(sub_8111F8C, 0xFF); + return TRUE; +} + +void sub_8111F8C(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + if (ScriptContext2_IsEnabled() != TRUE) + { + player_bitmagic(); + sub_805C270(); + sub_805C780(); + ScriptContext2_Enable(); + task->func = sub_8111FCC; + } +} -- cgit v1.2.3 From 58f91389a345f8dab7c0da2637f9063a823f495f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Oct 2018 13:51:56 -0400 Subject: through sub_8112044 --- src/quest_log.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 2c98ca377..fbf8b018e 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -16,6 +16,7 @@ #include "map_obj_80688E4.h" #include "field_player_avatar.h" #include "item.h" +#include "region_map.h" #include "wild_encounter.h" #include "help_system.h" #include "unk_8159F40.h" @@ -91,6 +92,8 @@ void sub_8111E84(void); bool8 sub_8111F60(void); void sub_8111F8C(u8); void sub_8111FCC(u8); +void sub_8112044(u8); +void sub_81120AC(u8); void sub_8112364(void); void sub_8112888(u8); void sub_8112940(u8, struct UnkStruct_203AE98 *, u16); @@ -111,6 +114,7 @@ void * sub_8113D48(void *, struct UnkStruct_203AE98 *); void * sub_8113D94(void *, struct UnkStruct_203AE98 *); extern const u8 gUnknown_841A155[]; +extern const u8 gUnknown_841B073[]; const struct WindowTemplate gUnknown_845661C[3] = { { 0, 0, 0, 30, 2, 15, 0x0e9 }, @@ -1231,3 +1235,38 @@ void sub_8111F8C(u8 taskId) task->func = sub_8111FCC; } } + +void sub_8111FCC(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + if (!gPaletteFade.active) + { + if (gUnknown_203AE94.unk_0_6 != 1) + { + sub_80C4DF8(gStringVar1, gMapHeader.regionMapSectionId); + StringExpandPlaceholders(gStringVar4, gUnknown_841B073); + sub_8111D10(); + } + task->data[0] = 0; + task->data[1] = 0; + task->func = sub_8112044; + player_bitmagic(); + ScriptContext2_Enable(); + } +} + +void sub_8112044(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + if (gMain.newKeys & (A_BUTTON | B_BUTTON) || task->data[0] >= 0x7f || gUnknown_203AE94.unk_0_6 == 1) + { + sub_8111E20(); + task->data[0] = 0; + task->func = sub_81120AC; + gUnknown_203ADFA = 0; + } + else + task->data[0]++; +} -- cgit v1.2.3 From 67cbc482982245c8cdd0466f59d73ab89d09b633 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Oct 2018 15:05:47 -0400 Subject: sub_81120AC --- src/quest_log.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index fbf8b018e..e7a5a2d5b 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -14,9 +14,11 @@ #include "field_fadetransition.h" #include "field_weather.h" #include "map_obj_80688E4.h" +#include "map_obj_lock.h" #include "field_player_avatar.h" #include "item.h" #include "region_map.h" +#include "map_name_popup.h" #include "wild_encounter.h" #include "help_system.h" #include "unk_8159F40.h" @@ -94,6 +96,8 @@ void sub_8111F8C(u8); void sub_8111FCC(u8); void sub_8112044(u8); void sub_81120AC(u8); +bool8 sub_81121D8(u8); +void sub_811229C(void); void sub_8112364(void); void sub_8112888(u8); void sub_8112940(u8, struct UnkStruct_203AE98 *, u16); @@ -1270,3 +1274,53 @@ void sub_8112044(u8 taskId) else task->data[0]++; } + +void sub_81120AC(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + u8 i; + + switch (data[0]) + { + case 0: + gUnknown_2031DD8 = 0; + sub_8055DC4(); + sub_811229C(); + FillWindowPixelRect(gUnknown_203ADFE[0], 0xF, 0, 0, gUnknown_845661C[0].width * 8, gUnknown_845661C[0].height * 8); + data[0]++; + break; + case 1: + if (sub_81121D8(taskId)) + { + for (i = 0; i < 3; i++) + { + ClearWindowTilemap(gUnknown_203ADFE[i]); + CopyWindowToVram(gUnknown_203ADFE[i], 1); + RemoveWindow(gUnknown_203ADFE[i]); + } + data[1] = 0; + data[0]++; + } + break; + case 2: + if (data[1] < 32) + data[1]++; + else + data[0]++; + break; + default: + if (gUnknown_203AE94.unk_0_6 == 1) + sub_8098110(1); + CpuCopy16(gUnknown_203AE90, gUnknown_20371F8, 0x400); + Free(gUnknown_203AE90); + gUnknown_203AE94 = (struct UnkStruct_203AE94){}; + sub_80696C0(); + ScriptContext2_Disable(); + gTextFlags.flag_2 = FALSE; + gUnknown_2036E28 = 0; + sub_8082740(0); + gUnknown_3005ECC = 1; + DestroyTask(taskId); + break; + } +} -- cgit v1.2.3 From a4000de4bc94c21ee91295727c605b90ce2f7397 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Oct 2018 15:29:43 -0400 Subject: sub_81121D8 --- src/quest_log.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index e7a5a2d5b..028bd574e 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -44,8 +44,6 @@ struct UnkStruct_203AE98 u8 unk_6; }; -extern u16 gUnknown_20371F8[]; - EWRAM_DATA u8 gUnknown_203ADF8 = 0; EWRAM_DATA u8 gUnknown_203ADF9 = 0; EWRAM_DATA u8 gUnknown_203ADFA = 0; @@ -1214,7 +1212,7 @@ void sub_8111F14(void) void sub_8111F38(u16 a0, u16 a1) { - CpuSet(gUnknown_20371F8 + a0, gUnknown_203AE90 + a0, a1); + CpuSet(gPlttBufferUnfaded + a0, gUnknown_203AE90 + a0, a1); } bool8 sub_8111F60(void) @@ -1311,7 +1309,7 @@ void sub_81120AC(u8 taskId) default: if (gUnknown_203AE94.unk_0_6 == 1) sub_8098110(1); - CpuCopy16(gUnknown_203AE90, gUnknown_20371F8, 0x400); + CpuCopy16(gUnknown_203AE90, gPlttBufferUnfaded, 0x400); Free(gUnknown_203AE90); gUnknown_203AE94 = (struct UnkStruct_203AE94){}; sub_80696C0(); @@ -1324,3 +1322,20 @@ void sub_81120AC(u8 taskId) break; } } + +bool8 sub_81121D8(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (data[1] > 15) + return TRUE; + + sub_80716F8(gPlttBufferUnfaded + 0x01, gPlttBufferFaded + 0x01, 0xDF, 0x0F - data[1]); + sub_80716F8(gPlttBufferUnfaded + 0x100, gPlttBufferFaded + 0x100, 0x100, 0x0F - data[1]); + FillWindowPixelRect(gUnknown_203ADFE[0], 0x00, 0, gUnknown_845661C[0].height * 8 - 1 - data[1], gUnknown_845661C[0].width * 8, 1); + FillWindowPixelRect(gUnknown_203ADFE[1], 0x00, 0, data[1], gUnknown_845661C[1].width * 8, 1); + CopyWindowToVram(gUnknown_203ADFE[0], 2); + CopyWindowToVram(gUnknown_203ADFE[1], 2); + data[1]++; + return FALSE; +} -- cgit v1.2.3 From e143072f961cfffc5e8e2cc5b2a6059c27124808 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Oct 2018 18:00:42 -0400 Subject: through sub_8112364 --- src/quest_log.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 028bd574e..391a760ba 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -99,6 +99,7 @@ void sub_811229C(void); void sub_8112364(void); void sub_8112888(u8); void sub_8112940(u8, struct UnkStruct_203AE98 *, u16); +void sub_8113A1C(u8); void sub_811381C(void); void sub_81138F8(void); void * sub_8113A78(void *, void **); @@ -1339,3 +1340,45 @@ bool8 sub_81121D8(u8 taskId) data[1]++; return FALSE; } + +void sub_811229C(void) +{ + u16 * buffer = Alloc(0x400); + CpuCopy16(gUnknown_203AE90, buffer, 0x400); + sub_807B0C4(gUnknown_203AE90, gUnknown_203AE90, 0xd0); + sub_807B0C4(gUnknown_203AE90 + 0x110, gUnknown_203AE90 + 0x110, 0x10); + sub_807B0C4(gUnknown_203AE90 + 0x160, gUnknown_203AE90 + 0x160, 0x40); + sub_807B0C4(gUnknown_203AE90 + 0x1b0, gUnknown_203AE90 + 0x1b0, 0x50); + CpuCopy16(gUnknown_203AE90, gPlttBufferUnfaded, 0x400); + CpuCopy16(buffer, gUnknown_203AE90, 0x400); + Free(buffer); +} + +void sub_811231C(void) +{ + if (gUnknown_203ADFA == 1) + { + sub_8110E68(gUnknown_203AE98); + sub_8110E3C(); + gUnknown_203ADFA = 0; + gUnknown_203AE8C = NULL; + gUnknown_203AE04 = NULL; + gUnknown_203AE08 = NULL; + gUnknown_3005E88 = 0; + } +} + +void sub_8112364(void) +{ + if (gUnknown_3005E88 && gUnknown_203ADFA == 1) + { + sub_8110E68(gUnknown_203AE98); + sub_8113A1C(1); + sub_8110E3C(); + gUnknown_3005E88 = 0; + gUnknown_203ADFA = 0; + gUnknown_203AE8C = NULL; + } + gUnknown_203AE04 = NULL; + gUnknown_203AE08 = NULL; +} -- cgit v1.2.3 From ef81b5a2372911c1ab65f87c8a8633862d59d682 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Oct 2018 21:31:25 -0400 Subject: sub_8112450 --- src/quest_log.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 391a760ba..0fdedde97 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -5,6 +5,7 @@ #include "task.h" #include "palette.h" #include "menu.h" +#include "menu_helpers.h" #include "window.h" #include "text_window.h" #include "event_data.h" @@ -1382,3 +1383,34 @@ void sub_8112364(void) gUnknown_203AE04 = NULL; gUnknown_203AE08 = NULL; } + +void sub_81123BC(void) +{ + struct QuestLog * buffer = AllocZeroed(4 * sizeof(struct QuestLog)); + u8 i; + u8 r4 = gUnknown_203ADF8; + u8 count = 0; + for (i = 0; i < 4; i++) + { + if (r4 > 3) + r4 = 0; + if (gSaveBlock1Ptr->questLog[r4].unk_000) + { + buffer[count] = gSaveBlock1Ptr->questLog[r4]; + count++; + } + r4++; + } + gUnknown_203ADF8 = count % 4; + CpuCopy16(buffer, gSaveBlock1Ptr->questLog, 4 * sizeof(struct QuestLog)); + Free(buffer); +} + +void sub_8112450(void) +{ + if (sub_80BF708() != 1) + { + sub_8112364(); + sub_81123BC(); + } +} -- cgit v1.2.3 From 65bce70419a44d62c5f8a6442db6d0ddfb7ced8c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Oct 2018 21:56:35 -0400 Subject: sub_811246C --- src/quest_log.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 0fdedde97..2282520b3 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -14,6 +14,7 @@ #include "overworld.h" #include "field_fadetransition.h" #include "field_weather.h" +#include "field_map_obj.h" #include "map_obj_80688E4.h" #include "map_obj_lock.h" #include "field_player_avatar.h" @@ -25,6 +26,7 @@ #include "unk_8159F40.h" #include "pokemon_storage_system.h" #include "save.h" +#include "quest_log_8150454.h" #include "quest_log.h" u8 gUnknown_3005E88; @@ -58,6 +60,7 @@ EWRAM_DATA u16 *gUnknown_203AE90 = NULL; EWRAM_DATA struct UnkStruct_203AE94 gUnknown_203AE94 = {0}; EWRAM_DATA struct UnkStruct_203AE98 gUnknown_203AE98[32] = {0}; EWRAM_DATA u16 gUnknown_203AF98 = 0; +EWRAM_DATA u8 gUnknown_203AF9A[128]; EWRAM_DATA u16 gUnknown_203B044[2] = {0}; @@ -1414,3 +1417,31 @@ void sub_8112450(void) sub_81123BC(); } } + +void sub_811246C(struct Sprite *sprite) +{ + struct MapObject *mapObject = &gMapObjects[sprite->data[0]]; + if (mapObject->localId == 0xFF) + { + if (gUnknown_203AF9A[0] != 0xFF) + { + sub_8063CA4(mapObject, gUnknown_203AF9A[0]); + gUnknown_203AF9A[0] = 0xFF; + } + if (gUnknown_203AF9A[1] != 0xFF) + { + sub_8150454(); + gUnknown_203AF9A[1] = 0xFF; + } + sub_8063E28(mapObject, sprite); + } + else + { + if (gUnknown_203AF9A[2 * mapObject->localId] != 0xFF) + { + sub_8063CA4(mapObject, gUnknown_203AF9A[2 * mapObject->localId]); + gUnknown_203AF9A[2 * mapObject->localId] = 0xFF; + } + sub_8063E28(mapObject, sprite); + } +} -- cgit v1.2.3 From f0e2b86a7b75d10d4015df92fe8cb3c079bbb2f1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 13 Oct 2018 08:50:20 -0400 Subject: through sub_81126AC --- src/quest_log.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 72 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 2282520b3..3cc392165 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -43,10 +43,16 @@ struct UnkStruct_203AE94 struct UnkStruct_203AE98 { - u8 filler_0[6]; + u8 unk_0; + u8 unk_1; + u8 unk_2; + u8 unk_3; + u16 unk_4; u8 unk_6; }; +IWRAM_DATA struct UnkStruct_203AE98 * gUnknown_3005E94; + EWRAM_DATA u8 gUnknown_203ADF8 = 0; EWRAM_DATA u8 gUnknown_203ADF9 = 0; EWRAM_DATA u8 gUnknown_203ADFA = 0; @@ -61,6 +67,8 @@ EWRAM_DATA struct UnkStruct_203AE94 gUnknown_203AE94 = {0}; EWRAM_DATA struct UnkStruct_203AE98 gUnknown_203AE98[32] = {0}; EWRAM_DATA u16 gUnknown_203AF98 = 0; EWRAM_DATA u8 gUnknown_203AF9A[128]; +EWRAM_DATA u16 gUnknown_203B01A; +EWRAM_DATA u16 gUnknown_203B01C; EWRAM_DATA u16 gUnknown_203B044[2] = {0}; @@ -103,6 +111,8 @@ void sub_811229C(void); void sub_8112364(void); void sub_8112888(u8); void sub_8112940(u8, struct UnkStruct_203AE98 *, u16); +bool8 sub_8112CEC(void); +bool8 sub_8112D1C(void); void sub_8113A1C(u8); void sub_811381C(void); void sub_81138F8(void); @@ -1445,3 +1455,64 @@ void sub_811246C(struct Sprite *sprite) sub_8063E28(mapObject, sprite); } } + +void sub_81124EC(u8 a0, u8 a1, u8 a2, u8 a3) +{ + if (!sub_8112CEC()) + { + gUnknown_3005E94[gUnknown_203AF98].unk_4 = gUnknown_203B01A; + gUnknown_3005E94[gUnknown_203AF98].unk_6 = 0; + gUnknown_3005E94[gUnknown_203AF98].unk_0 = a0; + gUnknown_3005E94[gUnknown_203AF98].unk_1 = a1; + gUnknown_3005E94[gUnknown_203AF98].unk_2 = a2; + gUnknown_3005E94[gUnknown_203AF98].unk_3 = a3; + gUnknown_203AF98++; + gUnknown_203B01A = 0; + } +} + +void sub_8112588(u8 a0, u8 a1, u8 a2, u8 a3, u8 a4) +{ + if (!sub_8112D1C()) + { + gUnknown_3005E94[gUnknown_203AF98].unk_4 = gUnknown_203B01A; + gUnknown_3005E94[gUnknown_203AF98].unk_6 = 0; + gUnknown_3005E94[gUnknown_203AF98].unk_0 = a0; + gUnknown_3005E94[gUnknown_203AF98].unk_1 = a1; + gUnknown_3005E94[gUnknown_203AF98].unk_2 = a2; + gUnknown_3005E94[gUnknown_203AF98].unk_3 = a3; + gUnknown_203AF98++; + gUnknown_203B01A = a4; + } +} + +void sub_8112628(u8 a0) +{ + if (!sub_8112CEC()) + { + if (a0 != gUnknown_3005E94[gUnknown_203B01C].unk_3 || a0 > 3) + { + gUnknown_3005E94[gUnknown_203AF98].unk_4 = gUnknown_203B01A; + gUnknown_3005E94[gUnknown_203AF98].unk_6 = 0; + gUnknown_3005E94[gUnknown_203AF98].unk_0 = 0; + gUnknown_3005E94[gUnknown_203AF98].unk_3 = a0; + gUnknown_203B01C = gUnknown_203AF98; + gUnknown_203AF98++; + gUnknown_203B01A = 0; + } + } +} + +void sub_81126AC(u8 a0, u8 a1) +{ + if (!sub_8112D1C()) + { + gUnknown_3005E94[gUnknown_203AF98].unk_4 = gUnknown_203B01A; + gUnknown_3005E94[gUnknown_203AF98].unk_6 = 0; + gUnknown_3005E94[gUnknown_203AF98].unk_0 = 0; + gUnknown_3005E94[gUnknown_203AF98].unk_3 = a0; + gUnknown_203B01C = gUnknown_203AF98; + gUnknown_203AF98++; + gUnknown_203B01A = a1; + } +} -- cgit v1.2.3 From 4190928a1109d425a5d87bbde8ec2321de52dd58 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 13 Oct 2018 09:28:50 -0400 Subject: through sub_81127F8 --- src/quest_log.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 3cc392165..14809b8e4 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -18,6 +18,7 @@ #include "map_obj_80688E4.h" #include "map_obj_lock.h" #include "field_player_avatar.h" +#include "field_control_avatar.h" #include "item.h" #include "region_map.h" #include "map_name_popup.h" @@ -51,7 +52,9 @@ struct UnkStruct_203AE98 u8 unk_6; }; -IWRAM_DATA struct UnkStruct_203AE98 * gUnknown_3005E94; +u8 gUnknown_3005E88; +u16 gUnknown_3005E8C; +struct UnkStruct_203AE98 * gUnknown_3005E94; EWRAM_DATA u8 gUnknown_203ADF8 = 0; EWRAM_DATA u8 gUnknown_203ADF9 = 0; @@ -1516,3 +1519,48 @@ void sub_81126AC(u8 a0, u8 a1) gUnknown_203B01A = a1; } } + +void sub_8112720(u8 a0) +{ + if (!sub_8112D1C()) + { + gUnknown_3005E94[gUnknown_203AF98].unk_4 = gUnknown_203B01A; + gUnknown_3005E94[gUnknown_203AF98].unk_6 = 1; + gUnknown_3005E94[gUnknown_203AF98].unk_0 = 0; + gUnknown_3005E94[gUnknown_203AF98].unk_3 = a0; + gUnknown_203AF98++; + gUnknown_203B01A = 0; + } +} + +void sub_811278C(u8 a0, u8 a1) +{ + if (!sub_8112D1C()) + { + gUnknown_3005E94[gUnknown_203AF98].unk_4 = gUnknown_203B01A; + gUnknown_3005E94[gUnknown_203AF98].unk_6 = 1; + gUnknown_3005E94[gUnknown_203AF98].unk_0 = 0; + gUnknown_3005E94[gUnknown_203AF98].unk_3 = a0; + gUnknown_203AF98++; + gUnknown_203B01A = a1; + } +} + +void sub_81127F8(u32 * a0) +{ + if (gUnknown_203AF98 < gUnknown_3005E8C) + { + u32 r2 = *a0 & 0x00FF00F3; + gUnknown_3005E94[gUnknown_203AF98].unk_4 = gUnknown_203B01A; + gUnknown_3005E94[gUnknown_203AF98].unk_6 = 2; + gUnknown_3005E94[gUnknown_203AF98].unk_0 = r2; + gUnknown_3005E94[gUnknown_203AF98].unk_1 = r2 >> 8; + gUnknown_3005E94[gUnknown_203AF98].unk_2 = r2 >> 16; + gUnknown_3005E94[gUnknown_203AF98].unk_3 = r2 >> 24; + gUnknown_203AF98++; + if (ScriptContext2_IsEnabled()) + gUnknown_203B01A = TRUE; + else + gUnknown_203B01A = FALSE; + } +} -- cgit v1.2.3 From 9dd0dffc664fed37831d51206a44f8d864207e35 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 13 Oct 2018 09:51:35 -0400 Subject: through sub_81128BC --- src/quest_log.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 14809b8e4..834585ac9 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -114,6 +114,7 @@ void sub_811229C(void); void sub_8112364(void); void sub_8112888(u8); void sub_8112940(u8, struct UnkStruct_203AE98 *, u16); +u8 sub_8112CAC(void); bool8 sub_8112CEC(void); bool8 sub_8112D1C(void); void sub_8113A1C(u8); @@ -1564,3 +1565,45 @@ void sub_81127F8(u32 * a0) gUnknown_203B01A = FALSE; } } + +void sub_8112888(u8 a0) +{ + switch (a0) + { + case 1: + if (gUnknown_3005E88 == 1) + gUnknown_3005E88 = 3; + break; + case 2: + if (gUnknown_3005E88 == 3) + gUnknown_3005E88 = 1; + break; + } +} + +void sub_81128BC(u8 a0) +{ + u8 r1 = sub_8112CAC(); + + switch (a0) + { + case 1: + if (r1 == 1) + gUnknown_3005E88 = 3; + else if (r1 == 2) + { + gUnknown_3005E94[gUnknown_203AF98].unk_4 = gUnknown_203B01A; + gUnknown_3005E94[gUnknown_203AF98].unk_6 = 3; + gUnknown_203AF98++; + gUnknown_203B01A = 0; + gUnknown_3005E88 = 4; + } + break; + case 2: + if (r1 == 1) + gUnknown_3005E88 = 1; + else if (r1 == 2) + gUnknown_3005E88 = 2; + break; + } +} -- cgit v1.2.3 From ddb2440809e0f222175c43045fc0d450cf7c0938 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 13 Oct 2018 16:04:33 -0400 Subject: sub_8112940 --- src/quest_log.c | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 79 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 834585ac9..49e0db836 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -54,6 +54,7 @@ struct UnkStruct_203AE98 u8 gUnknown_3005E88; u16 gUnknown_3005E8C; +struct UnkStruct_3005E90 gUnknown_3005E90; struct UnkStruct_203AE98 * gUnknown_3005E94; EWRAM_DATA u8 gUnknown_203ADF8 = 0; @@ -69,7 +70,7 @@ EWRAM_DATA u16 *gUnknown_203AE90 = NULL; EWRAM_DATA struct UnkStruct_203AE94 gUnknown_203AE94 = {0}; EWRAM_DATA struct UnkStruct_203AE98 gUnknown_203AE98[32] = {0}; EWRAM_DATA u16 gUnknown_203AF98 = 0; -EWRAM_DATA u8 gUnknown_203AF9A[128]; +EWRAM_DATA u8 gUnknown_203AF9A[64][2]; EWRAM_DATA u16 gUnknown_203B01A; EWRAM_DATA u16 gUnknown_203B01C; @@ -149,6 +150,8 @@ const u16 gUnknown_8456638[] = INCBIN_U16("data/graphics/unknown_8456638.bin"); const u8 gUnknown_8456698[] = {17, 10, 3}; +extern const struct UnkStruct_203AE98 gUnknown_845669C; + void sub_8110840(void * a0) { size_t r1 = (void *)gSaveBlock1Ptr - a0; @@ -1437,24 +1440,24 @@ void sub_811246C(struct Sprite *sprite) struct MapObject *mapObject = &gMapObjects[sprite->data[0]]; if (mapObject->localId == 0xFF) { - if (gUnknown_203AF9A[0] != 0xFF) + if (gUnknown_203AF9A[0][0] != 0xFF) { - sub_8063CA4(mapObject, gUnknown_203AF9A[0]); - gUnknown_203AF9A[0] = 0xFF; + sub_8063CA4(mapObject, gUnknown_203AF9A[0][0]); + gUnknown_203AF9A[0][0] = 0xFF; } - if (gUnknown_203AF9A[1] != 0xFF) + if (gUnknown_203AF9A[0][1] != 0xFF) { sub_8150454(); - gUnknown_203AF9A[1] = 0xFF; + gUnknown_203AF9A[0][1] = 0xFF; } sub_8063E28(mapObject, sprite); } else { - if (gUnknown_203AF9A[2 * mapObject->localId] != 0xFF) + if (gUnknown_203AF9A[mapObject->localId][0] != 0xFF) { - sub_8063CA4(mapObject, gUnknown_203AF9A[2 * mapObject->localId]); - gUnknown_203AF9A[2 * mapObject->localId] = 0xFF; + sub_8063CA4(mapObject, gUnknown_203AF9A[mapObject->localId][0]); + gUnknown_203AF9A[mapObject->localId][0] = 0xFF; } sub_8063E28(mapObject, sprite); } @@ -1607,3 +1610,70 @@ void sub_81128BC(u8 a0) break; } } + +void sub_8112940(u8 a0, struct UnkStruct_203AE98 *a1, u16 a2) +{ + s32 i; + + switch (a0) + { + default: + gUnknown_3005E88 = 0; + break; + case 1: + gUnknown_3005E94 = a1; + gUnknown_3005E8C = a2 / 8; + for (i = 0; i < 0x40; i++) + { + gUnknown_203AF9A[i][0] |= 0xFF; + gUnknown_203AF9A[i][1] |= 0xFF; + } + gUnknown_203AF98 = 0; + gUnknown_203B01C = 0; + gUnknown_3005E90 = (struct UnkStruct_3005E90){}; + gUnknown_203B01A = gUnknown_3005E94[gUnknown_203AF98].unk_4; + gUnknown_203AF9A[0][0] = gUnknown_3005E94[gUnknown_203AF98].unk_3; + gUnknown_203AF9A[0][1] = 0xFF; + gUnknown_3005E88 = 1; + break; + case 2: + gUnknown_3005E94 = a1; + gUnknown_3005E8C = a2 / 8; + for (i = 0; i < gUnknown_3005E8C; i++) + { + gUnknown_3005E94[i] = (struct UnkStruct_203AE98){ 0, 0, 0, 0, 0xFFFF, 0xFF }; + } + gUnknown_203AF98 = 0; + gUnknown_203B01A = 0; + gUnknown_3005E94[gUnknown_203AF98].unk_4 = 0; + gUnknown_3005E94[gUnknown_203AF98].unk_6 = 0; + gUnknown_3005E94[gUnknown_203AF98].unk_0 = 0; + switch (player_get_direction_lower_nybble()) + { + case 0: + case 1: + gUnknown_3005E94[gUnknown_203AF98].unk_3 = 0; + break; + case 4: + gUnknown_3005E94[gUnknown_203AF98].unk_3 = 3; + break; + case 2: + gUnknown_3005E94[gUnknown_203AF98].unk_3 = 1; + break; + case 3: + gUnknown_3005E94[gUnknown_203AF98].unk_3 = 2; + break; + } + gUnknown_203B01C = 0; + gUnknown_203AF98++; + gUnknown_3005E94[gUnknown_203AF98].unk_4 = 0; + gUnknown_3005E94[gUnknown_203AF98].unk_6 = 2; + gUnknown_3005E94[gUnknown_203AF98].unk_0 = 0; + gUnknown_3005E94[gUnknown_203AF98].unk_1 = 0; + gUnknown_3005E94[gUnknown_203AF98].unk_2 = 0; + gUnknown_3005E94[gUnknown_203AF98].unk_3 = 0; + gUnknown_203AF98++; + gUnknown_3005E88 = 2; + break; + } +} -- cgit v1.2.3 From f12a82b068bb5871bc8ee9fd4146baa89799e645 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 Oct 2018 05:41:11 -0400 Subject: nonmatching sub_8112B3C --- src/quest_log.c | 259 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 257 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 49e0db836..61b1e66d6 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -1550,11 +1550,11 @@ void sub_811278C(u8 a0, u8 a1) } } -void sub_81127F8(u32 * a0) +void sub_81127F8(struct UnkStruct_3005E90 * a0) { if (gUnknown_203AF98 < gUnknown_3005E8C) { - u32 r2 = *a0 & 0x00FF00F3; + u32 r2 = *(u32 *)a0 & 0x00FF00F3; gUnknown_3005E94[gUnknown_203AF98].unk_4 = gUnknown_203B01A; gUnknown_3005E94[gUnknown_203AF98].unk_6 = 2; gUnknown_3005E94[gUnknown_203AF98].unk_0 = r2; @@ -1677,3 +1677,258 @@ void sub_8112940(u8 a0, struct UnkStruct_203AE98 *a1, u16 a2) break; } } + +#ifdef NONMATCHING +void sub_8112B3C(void) +{ + switch (gUnknown_3005E88) + { + case 0: + break; + case 1: + if (sub_8112CEC()) + { + if (gUnknown_203B01A != 0) + gUnknown_203B01A--; + else + { + while (1) + { + switch (gUnknown_3005E94[gUnknown_203AF98].unk_6) + { + case 0: + gUnknown_203AF9A[gUnknown_3005E94[gUnknown_203AF98].unk_0][0] = gUnknown_3005E94[gUnknown_203AF98].unk_3; + break; + case 1: + gUnknown_203AF9A[gUnknown_3005E94[gUnknown_203AF98].unk_0][1] = gUnknown_3005E94[gUnknown_203AF98].unk_3; + break; + case 2: + *(u32 *)&gUnknown_3005E90 = ((gUnknown_3005E94[gUnknown_203AF98].unk_3 << 24) | (gUnknown_3005E94[gUnknown_203AF98].unk_2 << 16) | (gUnknown_3005E94[gUnknown_203AF98].unk_1 << 8) | (gUnknown_3005E94[gUnknown_203AF98].unk_0 << 0)); + break; + case 3: + gUnknown_3005E88 = 3; + break; + case 0xFE: + break; + case 0xFF: + gUnknown_3005E88 = 0; + break; + } + if (gUnknown_3005E88 == 0) + break; + if (++gUnknown_203AF98 >= gUnknown_3005E8C) + { + gUnknown_3005E88 = 0; + break; + } + gUnknown_203B01A = gUnknown_3005E94[gUnknown_203AF98].unk_4; + if (gUnknown_3005E88 == 3) + break; + if (gUnknown_203B01A == 0) + continue; + if (gUnknown_203B01A == 0xFFFF) + break; + } + } + } + else if (gUnknown_203AF98 >= gUnknown_3005E8C) + gUnknown_3005E88 = 0; + break; + case 2: + if (ScriptContext2_IsEnabled() != 1) + gUnknown_203B01A++; + if (gUnknown_203AF98 >= gUnknown_3005E8C) + gUnknown_3005E88 = 0; + break; + case 3: + break; + case 4: + break; + } +} +#else +NAKED +void sub_8112B3C(void) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tldr r0, _08112B54 @ =gUnknown_3005E88\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0x4\n" + "\tbls _08112B48\n" + "\tb _08112C84\n" + "_08112B48:\n" + "\tlsls r0, 2\n" + "\tldr r1, _08112B58 @ =_08112B5C\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tmov pc, r0\n" + "\t.align 2, 0\n" + "_08112B54: .4byte gUnknown_3005E88\n" + "_08112B58: .4byte _08112B5C\n" + "\t.align 2, 0\n" + "_08112B5C:\n" + "\t.4byte _08112C84\n" + "\t.4byte _08112B70\n" + "\t.4byte _08112C5E\n" + "\t.4byte _08112C84\n" + "\t.4byte _08112C84\n" + "_08112B70:\n" + "\tbl sub_8112CEC\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _08112B7C\n" + "\tb _08112C72\n" + "_08112B7C:\n" + "\tldr r0, _08112B8C @ =gUnknown_203B01A\n" + "\tldrh r1, [r0]\n" + "\tadds r7, r0, 0\n" + "\tcmp r1, 0\n" + "\tbeq _08112B90\n" + "\tsubs r0, r1, 0x1\n" + "\tstrh r0, [r7]\n" + "\tb _08112C84\n" + "\t.align 2, 0\n" + "_08112B8C: .4byte gUnknown_203B01A\n" + "_08112B90:\n" + "\tldr r5, _08112B98 @ =gUnknown_3005E88\n" + "\tldr r4, _08112B9C @ =gUnknown_203AF98\n" + "\tldr r6, _08112BA0 @ =gUnknown_3005E94\n" + "\tb _08112BD4\n" + "\t.align 2, 0\n" + "_08112B98: .4byte gUnknown_3005E88\n" + "_08112B9C: .4byte gUnknown_203AF98\n" + "_08112BA0: .4byte gUnknown_3005E94\n" + "_08112BA4:\n" + "\tldrh r0, [r4]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r4]\n" + "\tldr r1, _08112BF0 @ =gUnknown_3005E8C\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tldrh r1, [r1]\n" + "\tcmp r0, r1\n" + "\tbcs _08112C58\n" + "\tldrh r0, [r4]\n" + "\tldr r1, [r6]\n" + "\tlsls r0, 3\n" + "\tadds r0, r1\n" + "\tldrh r0, [r0, 0x4]\n" + "\tstrh r0, [r7]\n" + "\tcmp r2, 0x3\n" + "\tbeq _08112C84\n" + "\tlsls r0, 16\n" + "\tlsrs r1, r0, 16\n" + "\tcmp r1, 0\n" + "\tbeq _08112BD4\n" + "\tldr r0, _08112BF4 @ =0x0000ffff\n" + "\tcmp r1, r0\n" + "\tbne _08112C84\n" + "_08112BD4:\n" + "\tldrh r0, [r4]\n" + "\tldr r1, [r6]\n" + "\tlsls r0, 3\n" + "\tadds r3, r0, r1\n" + "\tldrb r0, [r3, 0x6]\n" + "\tcmp r0, 0x2\n" + "\tbeq _08112C2C\n" + "\tcmp r0, 0x2\n" + "\tbgt _08112BF8\n" + "\tcmp r0, 0\n" + "\tbeq _08112C0C\n" + "\tcmp r0, 0x1\n" + "\tbeq _08112C18\n" + "\tb _08112C50\n" + "\t.align 2, 0\n" + "_08112BF0: .4byte gUnknown_3005E8C\n" + "_08112BF4: .4byte 0x0000ffff\n" + "_08112BF8:\n" + "\tcmp r0, 0xFE\n" + "\tbeq _08112C50\n" + "\tcmp r0, 0xFE\n" + "\tbgt _08112C06\n" + "\tcmp r0, 0x3\n" + "\tbeq _08112C4E\n" + "\tb _08112C50\n" + "_08112C06:\n" + "\tcmp r0, 0xFF\n" + "\tbeq _08112C4C\n" + "\tb _08112C50\n" + "_08112C0C:\n" + "\tldr r0, _08112C14 @ =gUnknown_203AF9A\n" + "\tldrb r1, [r3]\n" + "\tlsls r1, 1\n" + "\tb _08112C20\n" + "\t.align 2, 0\n" + "_08112C14: .4byte gUnknown_203AF9A\n" + "_08112C18:\n" + "\tldr r0, _08112C28 @ =gUnknown_203AF9A\n" + "\tldrb r1, [r3]\n" + "\tlsls r1, 1\n" + "\tadds r0, 0x1\n" + "_08112C20:\n" + "\tadds r1, r0\n" + "\tldrb r0, [r3, 0x3]\n" + "\tstrb r0, [r1]\n" + "\tb _08112C50\n" + "\t.align 2, 0\n" + "_08112C28: .4byte gUnknown_203AF9A\n" + "_08112C2C:\n" + "\tldr r2, _08112C48 @ =gUnknown_3005E90\n" + "\tldrb r1, [r3, 0x3]\n" + "\tlsls r1, 24\n" + "\tldrb r0, [r3, 0x2]\n" + "\tlsls r0, 16\n" + "\torrs r1, r0\n" + "\tldrb r0, [r3, 0x1]\n" + "\tlsls r0, 8\n" + "\torrs r1, r0\n" + "\tldrb r0, [r3]\n" + "\torrs r1, r0\n" + "\tstr r1, [r2]\n" + "\tb _08112C50\n" + "\t.align 2, 0\n" + "_08112C48: .4byte gUnknown_3005E90\n" + "_08112C4C:\n" + "\tmovs r0, 0\n" + "_08112C4E:\n" + "\tstrb r0, [r5]\n" + "_08112C50:\n" + "\tldrb r2, [r5]\n" + "\tcmp r2, 0\n" + "\tbne _08112BA4\n" + "\tb _08112C84\n" + "_08112C58:\n" + "\tmovs r0, 0\n" + "\tstrb r0, [r5]\n" + "\tb _08112C84\n" + "_08112C5E:\n" + "\tbl ScriptContext2_IsEnabled\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x1\n" + "\tbeq _08112C84\n" + "\tldr r1, _08112C8C @ =gUnknown_203B01A\n" + "\tldrh r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r1]\n" + "_08112C72:\n" + "\tldr r0, _08112C90 @ =gUnknown_203AF98\n" + "\tldr r1, _08112C94 @ =gUnknown_3005E8C\n" + "\tldrh r0, [r0]\n" + "\tldrh r1, [r1]\n" + "\tcmp r0, r1\n" + "\tbcc _08112C84\n" + "\tldr r1, _08112C98 @ =gUnknown_3005E88\n" + "\tmovs r0, 0\n" + "\tstrb r0, [r1]\n" + "_08112C84:\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_08112C8C: .4byte gUnknown_203B01A\n" + "_08112C90: .4byte gUnknown_203AF98\n" + "_08112C94: .4byte gUnknown_3005E8C\n" + "_08112C98: .4byte gUnknown_3005E88"); +} +#endif -- cgit v1.2.3 From 1c90805498f7a03d415d74bfe3b380396b81e14f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 Oct 2018 10:07:39 -0500 Subject: through sub_8112D40 --- src/quest_log.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index a1008aa06..1419ca8a0 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -52,11 +52,21 @@ struct UnkStruct_203AE98 u8 unk_6; }; +struct UnkStruct_300201C +{ + u16 unk_0_0:15; + u16 unk_0_f:1; + u16 unk_2; +}; + u8 gUnknown_3005E88; u16 gUnknown_3005E8C; struct UnkStruct_3005E90 gUnknown_3005E90; struct UnkStruct_203AE98 * gUnknown_3005E94; +IWRAM_DATA struct UnkStruct_300201C * gUnknown_300201C; +IWRAM_DATA u16 gUnknown_3002020; + EWRAM_DATA u8 gUnknown_203ADF8 = 0; EWRAM_DATA u8 gUnknown_203ADF9 = 0; EWRAM_DATA u8 gUnknown_203ADFA = 0; @@ -73,6 +83,7 @@ EWRAM_DATA u16 gUnknown_203AF98 = 0; EWRAM_DATA u8 gUnknown_203AF9A[64][2]; EWRAM_DATA u16 gUnknown_203B01A; EWRAM_DATA u16 gUnknown_203B01C; +EWRAM_DATA u16 gUnknown_203B01E; EWRAM_DATA u16 gUnknown_203B044[2] = {0}; @@ -1932,3 +1943,57 @@ void sub_8112B3C(void) "_08112C98: .4byte gUnknown_3005E88"); } #endif + +void sub_8112C9C(void) +{ + gUnknown_203B01A++; +} + +u8 sub_8112CAC(void) +{ + switch (gUnknown_3005E88) + { + case 0: + default: + return 0; + case 1: + case 3: + return 1; + case 2: + case 4: + return 2; + } +} + +bool8 sub_8112CEC(void) +{ + if (gUnknown_203AF98 >= gUnknown_3005E8C || ScriptContext2_IsEnabled() == TRUE) + return TRUE; + return FALSE; +} + +bool8 sub_8112D1C(void) +{ + if (gUnknown_203AF98 >= gUnknown_3005E8C) + return TRUE; + return FALSE; +} + +u16 * sub_8112D40(u8 a0, u16 a1) +{ + u16 * response; + if (gUnknown_203AF98 == 0) + return NULL; + if (gUnknown_203AF98 >= gUnknown_3005E8C) + return NULL; + if (gUnknown_203B01E >= gUnknown_3002020) + return NULL; + if (gUnknown_300201C[gUnknown_203B01E].unk_0_0 == a1 && gUnknown_300201C[gUnknown_203B01E].unk_0_f == a0) + { + response = &gUnknown_300201C[gUnknown_203B01E].unk_2; + gUnknown_203B01E++; + } + else + response = NULL; + return response; +} -- cgit v1.2.3 From 3f43d60bc240bfcdc3da254bf9ff50af3cbaee1a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 Oct 2018 11:30:50 -0500 Subject: through sub_8112EB4 --- src/quest_log.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 1419ca8a0..590892acf 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -84,6 +84,7 @@ EWRAM_DATA u8 gUnknown_203AF9A[64][2]; EWRAM_DATA u16 gUnknown_203B01A; EWRAM_DATA u16 gUnknown_203B01C; EWRAM_DATA u16 gUnknown_203B01E; +EWRAM_DATA u8 gUnknown_203B020; EWRAM_DATA u16 gUnknown_203B044[2] = {0}; @@ -1979,6 +1980,12 @@ bool8 sub_8112D1C(void) return FALSE; } +const struct UnkStruct_300201C gUnknown_84566A4 = { + 0, + FALSE, + 0x7FFF +}; + u16 * sub_8112D40(u8 a0, u16 a1) { u16 * response; @@ -1997,3 +2004,59 @@ u16 * sub_8112D40(u8 a0, u16 a1) response = NULL; return response; } + +void sub_8112DB0(u8 a0, u16 a1, u16 a2) +{ + if (gUnknown_203AF98 == 0) + return; + if (gUnknown_203AF98 >= gUnknown_3005E8C) + return; + if (gUnknown_203B01E >= gUnknown_3002020) + return; + gUnknown_300201C[gUnknown_203B01E].unk_0_0 = a1; + gUnknown_300201C[gUnknown_203B01E].unk_0_f = a0; + gUnknown_300201C[gUnknown_203B01E].unk_2 = a2; + gUnknown_203B01E++; +} + +void sub_8112E3C(u8 a0, struct UnkStruct_300201C * a1, u16 a2) +{ + s32 i; + + if (a0 == 0 || a0 > 2) + gUnknown_3005E88 = 0; + else + { + gUnknown_300201C = a1; + gUnknown_3002020 = a2 >> 2; + gUnknown_203B01E = 0; + if (a0 == 2) + { + for (i = 0; i < gUnknown_3005E8C; i++) + { + gUnknown_300201C[i] = gUnknown_84566A4; + } + } + } +} + +const u16 gUnknown_84566A8[] = INCBIN_U16("data/graphics/unknown_84566a8.bin"); + +const struct WindowTemplate gUnknown_8456928 = { + 0x00, 0, 15, 30, 5, 15, 0x008F +}; + +void sub_8112EA8(void) +{ + gUnknown_203B020 = 0xFF; +} + +u8 sub_8112EB4(void) +{ + if (gUnknown_203B020 == 0xFF) + { + gUnknown_203B020 = AddWindow(&gUnknown_8456928); + PutWindowTilemap(gUnknown_203B020); + } + return gUnknown_203B020; +} -- cgit v1.2.3 From f214ba976da083876d6ed6c87e38c48823d44e93 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 Oct 2018 18:48:37 -0500 Subject: nonmatching sub_8112F18 --- src/quest_log.c | 147 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 146 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 590892acf..cf24cf462 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -2040,7 +2040,7 @@ void sub_8112E3C(u8 a0, struct UnkStruct_300201C * a1, u16 a2) } } -const u16 gUnknown_84566A8[] = INCBIN_U16("data/graphics/unknown_84566a8.bin"); +const u16 gUnknown_84566A8[][16] = INCBIN_U16("data/graphics/unknown_84566a8.bin"); const struct WindowTemplate gUnknown_8456928 = { 0x00, 0, 15, 30, 5, 15, 0x008F @@ -2060,3 +2060,148 @@ u8 sub_8112EB4(void) } return gUnknown_203B020; } + +void sub_8112EDC(u8 a0) +{ + if (gUnknown_203B020 != 0xFF) + { + FillWindowPixelBuffer(gUnknown_203B020, 0x00); + ClearWindowTilemap(gUnknown_203B020); + + if (a0) + CopyWindowToVram(gUnknown_203B020, a0); + + RemoveWindow(gUnknown_203B020); + gUnknown_203B020 = 0xFF; + } +} + +#ifdef NONMATCHING +void sub_8112F18(u8 a0) +{ + u8 width = GetWindowAttribute(a0, WINDOW_WIDTH); + u8 height = GetWindowAttribute(a0, WINDOW_HEIGHT); + u8 * buffer = Alloc(32 * width * height); + u8 i, j; + u8 k; + + if (buffer) + { + for (i = 0; i < height; i++) + { + for (j = 0; j < width; j++) + { + if (i == 0) + k = 0; + else if (i == height - 1) + k = 14; + else + k = 5; + CpuCopy32( + gUnknown_84566A8[k], // operand swap on "add" instruction + buffer + 32 * (i * width + j), + 32 + ); + } + } + CopyToWindowPixelBuffer(a0, buffer, width * height * 32, 0); + Free(buffer); + } +} +#else +NAKED +void sub_8112F18(u8 a0) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x8\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tmov r10, r0\n" + "\tmovs r1, 0x3\n" + "\tbl GetWindowAttribute\n" + "\tlsls r0, 24\n" + "\tlsrs r6, r0, 24\n" + "\tmov r0, r10\n" + "\tmovs r1, 0x4\n" + "\tbl GetWindowAttribute\n" + "\tlsls r0, 24\n" + "\tlsrs r7, r0, 24\n" + "\tlsls r0, r7, 5\n" + "\tmuls r0, r6\n" + "\tbl Alloc\n" + "\tmov r8, r0\n" + "\tcmp r0, 0\n" + "\tbeq _08112FB8\n" + "\tmovs r5, 0\n" + "\tadds r0, r6, 0\n" + "\tmuls r0, r7\n" + "\tstr r0, [sp]\n" + "\tcmp r5, r7\n" + "\tbcs _08112FA2\n" + "_08112F5A:\n" + "\tmovs r4, 0\n" + "\tadds r1, r5, 0x1\n" + "\tmov r9, r1\n" + "\tcmp r4, r6\n" + "\tbcs _08112F98\n" + "\tsubs r3, r7, 0x1\n" + "_08112F66:\n" + "\tmovs r0, 0\n" + "\tcmp r5, 0\n" + "\tbeq _08112F74\n" + "\tmovs r0, 0x5\n" + "\tcmp r5, r3\n" + "\tbne _08112F74\n" + "\tmovs r0, 0xE\n" + "_08112F74:\n" + "\tlsls r0, 5\n" + "\tldr r1, _08112FC8 @ =gUnknown_84566A8\n" + "\tadds r0, r1, r0\n" + "\tadds r1, r5, 0\n" + "\tmuls r1, r6\n" + "\tadds r1, r4\n" + "\tlsls r1, 5\n" + "\tadd r1, r8\n" + "\tldr r2, _08112FCC @ =0x04000008\n" + "\tstr r3, [sp, 0x4]\n" + "\tbl CpuSet\n" + "\tadds r0, r4, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r4, r0, 24\n" + "\tldr r3, [sp, 0x4]\n" + "\tcmp r4, r6\n" + "\tbcc _08112F66\n" + "_08112F98:\n" + "\tmov r1, r9\n" + "\tlsls r0, r1, 24\n" + "\tlsrs r5, r0, 24\n" + "\tcmp r5, r7\n" + "\tbcc _08112F5A\n" + "_08112FA2:\n" + "\tldr r0, [sp]\n" + "\tlsls r2, r0, 21\n" + "\tlsrs r2, 16\n" + "\tmov r0, r10\n" + "\tmov r1, r8\n" + "\tmovs r3, 0\n" + "\tbl CopyToWindowPixelBuffer\n" + "\tmov r0, r8\n" + "\tbl Free\n" + "_08112FB8:\n" + "\tadd sp, 0x8\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_08112FC8: .4byte gUnknown_84566A8\n" + "_08112FCC: .4byte 0x04000008"); +} +#endif -- cgit v1.2.3 From 6d31e24cba449b856f63c8279339bf1406013b83 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 Oct 2018 20:08:52 -0500 Subject: through sub_8113114 --- src/menews_jisan.c | 2 +- src/quest_log.c | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 105 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/menews_jisan.c b/src/menews_jisan.c index 7dfcee939..31540c411 100644 --- a/src/menews_jisan.c +++ b/src/menews_jisan.c @@ -94,7 +94,7 @@ void sub_8146C88(void) void sub_8146CA4(void) { - u16 *r4 = sub_806E454(0x4028); + u16 *r4 = GetVarPointer(0x4028); struct MysteryEventStruct *r2 = sub_8143D94(); struct MysteryEventStruct r0 = *r2; diff --git a/src/quest_log.c b/src/quest_log.c index cf24cf462..36de09ca7 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -32,6 +32,12 @@ u8 gUnknown_3005E88; +struct Var4038Struct +{ + u8 unk_0_0:7; + u8 unk_0_7:1; +}; + struct UnkStruct_203AE94 { u8 unk_0_0:4; @@ -130,6 +136,14 @@ void sub_8112940(u8, struct UnkStruct_203AE98 *, u16); u8 sub_8112CAC(void); bool8 sub_8112CEC(void); bool8 sub_8112D1C(void); +void sub_8113078(struct Var4038Struct *); +void sub_81130BC(struct Var4038Struct *); +u16 sub_81132A0(struct Var4038Struct *); +void sub_8113194(struct Var4038Struct *); +void sub_81132E0(struct Var4038Struct *); +bool8 sub_8113508(void); +void sub_8113524(struct Var4038Struct *); +void sub_8113390(struct Var4038Struct *); void sub_8113A1C(u8); void sub_811381C(void); void sub_81138F8(void); @@ -164,21 +178,21 @@ const u8 gUnknown_8456698[] = {17, 10, 3}; extern const struct UnkStruct_203AE98 gUnknown_845669C; -void sub_8110840(void * a0) +void sub_8110840(void * oldPointer) { - size_t r1 = (void *)gSaveBlock1Ptr - a0; + ptrdiff_t offset = (void *)gSaveBlock1Ptr - oldPointer; if (gUnknown_203AE04) - gUnknown_203AE04 += r1; + gUnknown_203AE04 += offset; if (gUnknown_203ADFA != 0) { if (gUnknown_203AE08) - gUnknown_203AE08 = (void *)gUnknown_203AE08 + r1; + gUnknown_203AE08 = (void *)gUnknown_203AE08 + offset; if (gUnknown_203ADFA == 2) { int r3; for (r3 = 0; r3 < 0x20; r3++) if (gUnknown_203AE0C[r3]) - gUnknown_203AE0C[r3] += r1; + gUnknown_203AE0C[r3] += offset; } } } @@ -2205,3 +2219,88 @@ void sub_8112F18(u8 a0) "_08112FCC: .4byte 0x04000008"); } #endif + +void sub_8112FD0(void) +{ + sub_8112F18(gUnknown_203B020); +} + +const struct TextColor gUnknown_8456930 = { + 0, 10, 2 +}; + +void sub_8112FE4(const u8 * a0) +{ + AddTextPrinterParametrized2(gUnknown_203B020, 0x02, 2, 5, 1, 1, &gUnknown_8456930, -1, a0); +} + +void sub_8113018(const u8 * a0, u8 a1) +{ + sub_8112FD0(); + sub_8112FE4(a0); + if (a1) + CopyWindowToVram(gUnknown_203B020, a1); +} + +void sub_8113044(void) +{ + VarSet(VAR_0x4038, 0); + VarSet(VAR_0x4039, 0); +} + +void sub_8113064(void) +{ + sub_8113078((struct Var4038Struct *)GetVarPointer(VAR_0x4038)); +} + +void sub_8113078(struct Var4038Struct * varPtr) +{ + if (sub_8113508()) + { + sub_81132E0(varPtr); + VarSet(VAR_0x4039, gSaveBlock2Ptr->playTimeHours); + } +} + +void sub_81130A8(void) +{ + sub_81130BC((struct Var4038Struct *)GetVarPointer(VAR_0x4038)); +} + +void sub_81130BC(struct Var4038Struct * varPtr) +{ + if (!varPtr->unk_0_7) + { + sub_8113524(varPtr); + sub_8113390(varPtr); + VarSet(VAR_0x4039, gSaveBlock2Ptr->playTimeHours); + FlagClear(FLAG_0x06C); + FlagClear(FLAG_0x06D); + FlagClear(FLAG_0x06E); + FlagClear(FLAG_0x06F); + VarSet(VAR_0x4073, 1); + } +} + +ALIGNED(4) const u8 gUnknown_8456934[] = {2, 1, 2, 1}; + +u8 sub_8113114(struct Var4038Struct * a0, u8 a1) +{ + if (VarGet(VAR_0x4073) == 2) + { + if (a0->unk_0_0 + gUnknown_8456934[a1] >= 20) + { + if (sub_81132A0(a0) < 3) + { + sub_8113194(a0); + a0->unk_0_0 = 0; + } + else + a0->unk_0_0 = 20; + } + else + a0->unk_0_0 += gUnknown_8456934[a1]; + } + + return a0->unk_0_0; +} -- cgit v1.2.3 From 11066dc88f55c32ec1877c2f7e995412c4a07318 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 16 Oct 2018 12:56:37 -0700 Subject: sub_8113194 --- src/quest_log.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 36de09ca7..30f529615 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -5,6 +5,7 @@ #include "task.h" #include "palette.h" #include "menu.h" +#include "random.h" #include "menu_helpers.h" #include "window.h" #include "text_window.h" @@ -36,6 +37,7 @@ struct Var4038Struct { u8 unk_0_0:7; u8 unk_0_7:1; + u8 unk_1; }; struct UnkStruct_203AE94 @@ -139,7 +141,7 @@ bool8 sub_8112D1C(void); void sub_8113078(struct Var4038Struct *); void sub_81130BC(struct Var4038Struct *); u16 sub_81132A0(struct Var4038Struct *); -void sub_8113194(struct Var4038Struct *); +u8 sub_8113194(struct Var4038Struct *); void sub_81132E0(struct Var4038Struct *); bool8 sub_8113508(void); void sub_8113524(struct Var4038Struct *); @@ -2304,3 +2306,28 @@ u8 sub_8113114(struct Var4038Struct * a0, u8 a1) return a0->unk_0_0; } + +const u8 gUnknown_8456938[] = { + 1, 3, 5, 0, 7, 6, 4, 2 +}; + +u8 sub_8113194(struct Var4038Struct * a0) +{ + u8 i; + u8 retval = 0; + + for (i = 0; i < 8; i++) + { + if (!((a0->unk_1 >> gUnknown_8456938[i]) & 1)) + { + retval = i; + if (Random() % 2) + { + a0->unk_1 |= 1 << gUnknown_8456938[i]; + return gUnknown_8456938[i]; + } + } + } + a0->unk_1 |= 1 << gUnknown_8456938[retval]; + return gUnknown_8456938[retval]; +} -- cgit v1.2.3 From 9dd047d9db67586529cbde6a32176413af659c1d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 16 Oct 2018 13:07:02 -0700 Subject: sub_81131FC --- src/quest_log.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 30f529615..51ffaac11 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -2331,3 +2331,32 @@ u8 sub_8113194(struct Var4038Struct * a0) a0->unk_1 |= 1 << gUnknown_8456938[retval]; return gUnknown_8456938[retval]; } + +const u8 gUnknown_8456940[] = { + 5, 6, 3, 7, 4, 1, 0, 2 +}; + +u8 sub_81131FC(struct Var4038Struct * a0) +{ + u8 i; + u8 retval = 0; + + if (sub_81132A0(a0) == 1) + return 0; + + for (i = 0; i < 8; i++) + { + if ((a0->unk_1 >> gUnknown_8456940[i]) & 1) + { + retval = i; + if (Random() % 2) + { + a0->unk_1 ^= 1 << gUnknown_8456940[i]; + return gUnknown_8456940[i]; + } + } + } + if ((a0->unk_1 >> gUnknown_8456940[retval]) & 1) + a0->unk_1 ^= 1 << gUnknown_8456940[retval]; + return gUnknown_8456940[retval]; +} -- cgit v1.2.3 From d50948133d3ad740ee4c719bc84a7991abd53a34 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 16 Oct 2018 17:32:29 -0700 Subject: through sub_81132E0 --- src/quest_log.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 51ffaac11..7d2b2511d 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -140,8 +140,8 @@ bool8 sub_8112CEC(void); bool8 sub_8112D1C(void); void sub_8113078(struct Var4038Struct *); void sub_81130BC(struct Var4038Struct *); -u16 sub_81132A0(struct Var4038Struct *); u8 sub_8113194(struct Var4038Struct *); +u16 sub_81132A0(struct Var4038Struct *); void sub_81132E0(struct Var4038Struct *); bool8 sub_8113508(void); void sub_8113524(struct Var4038Struct *); @@ -2360,3 +2360,54 @@ u8 sub_81131FC(struct Var4038Struct * a0) a0->unk_1 ^= 1 << gUnknown_8456940[retval]; return gUnknown_8456940[retval]; } + +u16 sub_8113288(void) +{ + return sub_81132A0((struct Var4038Struct *)GetVarPointer(VAR_0x4038)); +} + +u16 sub_81132A0(struct Var4038Struct * a0) +{ + u8 count = 0; + u8 i; + + for (i = 0; i < 8; i++) + { + if ((a0->unk_1 >> i) & 1) + count++; + } + + return count; +} + +void sub_81132CC(void) +{ + sub_81132E0((struct Var4038Struct *)GetVarPointer(VAR_0x4038)); +} + +void sub_81132E0(struct Var4038Struct * a0) +{ + u8 i = 0; + u16 var_4039; + + if (gSaveBlock2Ptr->playTimeHours < 999) + { + while (1) + { + if (sub_81132A0(a0) < 5) + { + VarSet(VAR_0x4039, gSaveBlock2Ptr->playTimeHours); + break; + } + if (i == 8) + break; + var_4039 = VarGet(VAR_0x4039); + if (gSaveBlock2Ptr->playTimeHours - var_4039 < 12) + break; + sub_81131FC(a0); + var_4039 = VarGet(VAR_0x4039); + VarSet(VAR_0x4039, var_4039 + 12); + i++; + } + } +} -- cgit v1.2.3 From 7670f0527fcbd49269ed52a52b8fa3e30353ef64 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 16 Oct 2018 18:05:39 -0700 Subject: through sub_8113414 --- src/quest_log.c | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 99 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 7d2b2511d..f0b79bb58 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -10,6 +10,7 @@ #include "window.h" #include "text_window.h" #include "event_data.h" +#include "event_scripts.h" #include "string_util.h" #include "script.h" #include "overworld.h" @@ -40,6 +41,8 @@ struct Var4038Struct u8 unk_1; }; +#define VAR_0x4038_STRUCT ((struct Var4038Struct *)GetVarPointer(VAR_0x4038)) + struct UnkStruct_203AE94 { u8 unk_0_0:4; @@ -143,9 +146,11 @@ void sub_81130BC(struct Var4038Struct *); u8 sub_8113194(struct Var4038Struct *); u16 sub_81132A0(struct Var4038Struct *); void sub_81132E0(struct Var4038Struct *); +bool16 sub_811337C(struct Var4038Struct *); +void sub_8113390(struct Var4038Struct *); +void sub_8113414(u8 (*)[16], u8, u8); bool8 sub_8113508(void); void sub_8113524(struct Var4038Struct *); -void sub_8113390(struct Var4038Struct *); void sub_8113A1C(u8); void sub_811381C(void); void sub_81138F8(void); @@ -2252,7 +2257,7 @@ void sub_8113044(void) void sub_8113064(void) { - sub_8113078((struct Var4038Struct *)GetVarPointer(VAR_0x4038)); + sub_8113078(VAR_0x4038_STRUCT); } void sub_8113078(struct Var4038Struct * varPtr) @@ -2266,7 +2271,7 @@ void sub_8113078(struct Var4038Struct * varPtr) void sub_81130A8(void) { - sub_81130BC((struct Var4038Struct *)GetVarPointer(VAR_0x4038)); + sub_81130BC(VAR_0x4038_STRUCT); } void sub_81130BC(struct Var4038Struct * varPtr) @@ -2363,7 +2368,7 @@ u8 sub_81131FC(struct Var4038Struct * a0) u16 sub_8113288(void) { - return sub_81132A0((struct Var4038Struct *)GetVarPointer(VAR_0x4038)); + return sub_81132A0(VAR_0x4038_STRUCT); } u16 sub_81132A0(struct Var4038Struct * a0) @@ -2382,7 +2387,7 @@ u16 sub_81132A0(struct Var4038Struct * a0) void sub_81132CC(void) { - sub_81132E0((struct Var4038Struct *)GetVarPointer(VAR_0x4038)); + sub_81132E0(VAR_0x4038_STRUCT); } void sub_81132E0(struct Var4038Struct * a0) @@ -2411,3 +2416,92 @@ void sub_81132E0(struct Var4038Struct * a0) } } } + +bool16 sub_8113364(void) +{ + return sub_811337C(VAR_0x4038_STRUCT); +} + +bool16 sub_811337C(struct Var4038Struct * a0) +{ + return (a0->unk_1 >> gUnknown_20370C0) & 1; +} + +void sub_8113390(struct Var4038Struct * a0) +{ + a0->unk_1 |= 1; + a0->unk_1 |= 2; + a0->unk_1 |= 4; +} + +void sub_81133A4(void) +{ + u8 r3 = 0; + u8 r2 = 0; + + switch (gUnknown_20370C0) + { + case 0: + r2 = 0; + r3 = 0; + break; + case 1: + case 2: + case 3: + case 7: + break; + case 4: + r2 = 1; + r3 = 0; + break; + case 5: + r2 = 0; + r3 = 1; + break; + case 6: + r2 = 2; + r3 = 1; + break; + } + sub_8113414(gSaveBlock2Ptr->unk_A98, r3, r2); +} + +void sub_8113414(u8 (* a0)[16], u8 a1, u8 a2) +{ + u8 * str; + const u8 * src = a0[a1]; + if (src[0] == EOS) + { + switch (a2) + { + case 0: + StringCopy(gStringVar1, gSaveBlock1Ptr->rivalName); + break; + case 1: + StringCopy(gStringVar1, gUnknown_84178D0); + break; + case 2: + StringCopy(gStringVar1, gUnknown_84178DA); + break; + default: + StringCopy(gStringVar1, gSaveBlock1Ptr->rivalName); + break; + } + } + else + { + str = gStringVar1; + StringCopyN(str, src, 7); + str[7] = EOS; + if ( str[0] == EXT_CTRL_CODE_BEGIN + && str[1] == EXT_CTRL_CODE_JPN) + { + str += 2; + while (*str != EOS) + str++; + *str++ = EXT_CTRL_CODE_BEGIN; + *str++ = EXT_CTRL_CODE_ENG; + *str++ = EOS; + } + } +} -- cgit v1.2.3 From 0ba52688584d8a35ec9c617b035c9dea71e2689f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 16 Oct 2018 21:46:09 -0700 Subject: through sub_8113530 --- src/quest_log.c | 43 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index f0b79bb58..e16de5e5d 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -21,6 +21,7 @@ #include "map_obj_lock.h" #include "field_player_avatar.h" #include "field_control_avatar.h" +#include "battle.h" #include "item.h" #include "region_map.h" #include "map_name_popup.h" @@ -149,7 +150,8 @@ void sub_81132E0(struct Var4038Struct *); bool16 sub_811337C(struct Var4038Struct *); void sub_8113390(struct Var4038Struct *); void sub_8113414(u8 (*)[16], u8, u8); -bool8 sub_8113508(void); +void sub_81134CC(struct Var4038Struct *); +bool8 sub_8113508(struct Var4038Struct * ); void sub_8113524(struct Var4038Struct *); void sub_8113A1C(u8); void sub_811381C(void); @@ -2262,7 +2264,7 @@ void sub_8113064(void) void sub_8113078(struct Var4038Struct * varPtr) { - if (sub_8113508()) + if (sub_8113508(varPtr)) { sub_81132E0(varPtr); VarSet(VAR_0x4039, gSaveBlock2Ptr->playTimeHours); @@ -2505,3 +2507,40 @@ void sub_8113414(u8 (* a0)[16], u8 a1, u8 a2) } } } + +void sub_81134B8(void) +{ + sub_81134CC(VAR_0x4038_STRUCT); +} + +void sub_81134CC(struct Var4038Struct * a0) +{ + if (VarGet(VAR_0x4073) == 2) + { + sub_8113078(a0); + if (gUnknown_2023E8A == 1) + sub_8113194(a0); + else + sub_81131FC(a0); + } +} + +bool8 sub_8113508(struct Var4038Struct * a0) +{ + return a0->unk_0_7; +} + +void sub_8113510(void) +{ + sub_8113524(VAR_0x4038_STRUCT); +} + +void sub_8113524(struct Var4038Struct * a0) +{ + a0->unk_0_7 = TRUE; +} + +u8 sub_8113530(void) +{ + return sub_8113114(VAR_0x4038_STRUCT, gUnknown_20370C0); +} -- cgit v1.2.3 From 812f735c03d90b92c10e8c2ee460654317fc1822 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 3 Nov 2018 11:25:27 -0400 Subject: Nonmatching sub_8113550 --- src/quest_log.c | 369 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 367 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index e16de5e5d..cfa353caa 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -30,6 +30,7 @@ #include "unk_8159F40.h" #include "pokemon_storage_system.h" #include "save.h" +#include "link.h" #include "quest_log_8150454.h" #include "quest_log.h" @@ -99,6 +100,7 @@ EWRAM_DATA u16 gUnknown_203B01E; EWRAM_DATA u8 gUnknown_203B020; EWRAM_DATA u16 gUnknown_203B044[2] = {0}; +EWRAM_DATA u8 gUnknown_203B048 = 0; void sub_8110A00(void); void sub_8110A3C(void); @@ -153,6 +155,53 @@ void sub_8113414(u8 (*)[16], u8, u8); void sub_81134CC(struct Var4038Struct *); bool8 sub_8113508(struct Var4038Struct * ); void sub_8113524(struct Var4038Struct *); +bool8 sub_81136D4(void); +bool8 sub_8113778(u16, void*); +void* sub_8113828(u16, void*); +bool8 sub_81138A0(u16, void*); +bool8 sub_8113954(u16, void*); +bool8 sub_8113A44(u16, void*); +void sub_8113B94(u16); +void *sub_8113F14(void *, void *); +void *sub_8113F80(void *, void *); +void *sub_8114174(void *, void *); +void *sub_81141D0(void *, void *); +void *sub_811422C(void *, void *); +void *sub_8114288(void *, void *); +void *sub_8114310(void *, void *); +void *sub_8114380(void *, void *); +void *sub_81143F0(void *, void *); +void *sub_811445C(void *, void *); +void *sub_81144EC(void *, void *); +void *sub_8114578(void *, void *); +void *sub_8114604(void *, void *); +void *sub_8114710(void *, void *); +void *sub_8114744(void *, void *); +void *sub_8114778(void *, void *); +void *sub_8114808(void *, void *); +void *sub_811488C(void *, void *); +void *sub_8114918(void *, void *); +void *sub_8114990(void *, void *); +void *sub_8114A1C(void *, void *); +void *sub_8114AA0(void *, void *); +void *sub_8114B0C(void *, void *); +void *sub_8114B78(void *, void *); +void *sub_8114BE4(void *, void *); +void *sub_8114C68(void *, void *); +void *sub_8114CC0(void *, void *); +void *sub_8114D4C(void *, void *); +void *sub_8114DE8(void *, void *); +void *sub_8114FF0(void *, void *); +void *sub_8115078(void *, void *); +void *sub_81151C0(void *, void *); +void *sub_8115280(void *, void *); +void *sub_8115410(void *, void *); +void *sub_81154DC(void *, void *); +void *sub_81155A4(void *, void *); +void *sub_81156D8(void *, void *); +void *sub_81157DC(void *, void *); +bool8 sub_81153A8(u16, void*); +bool8 sub_81153E4(u16, void*); void sub_8113A1C(u8); void sub_811381C(void); void sub_81138F8(void); @@ -185,8 +234,6 @@ const u16 gUnknown_8456638[] = INCBIN_U16("data/graphics/unknown_8456638.bin"); const u8 gUnknown_8456698[] = {17, 10, 3}; -extern const struct UnkStruct_203AE98 gUnknown_845669C; - void sub_8110840(void * oldPointer) { ptrdiff_t offset = (void *)gSaveBlock1Ptr - oldPointer; @@ -2544,3 +2591,321 @@ u8 sub_8113530(void) { return sub_8113114(VAR_0x4038_STRUCT, gUnknown_20370C0); } + +void * (*const gUnknown_8456948[])(void *, void *) = { + NULL, + NULL, + NULL, + sub_8113F14, + sub_8113F80, + sub_8114174, + sub_81141D0, + sub_811422C, + sub_8114288, + sub_8114310, + sub_8114380, + sub_81143F0, + sub_811445C, + sub_81144EC, + sub_8114578, + sub_8114604, + sub_8114710, + sub_8114744, + sub_8114778, + sub_8114808, + sub_811488C, + sub_8114918, + sub_8114990, + sub_8114A1C, + sub_8114AA0, + sub_8114B0C, + sub_8114B78, + sub_8114BE4, + sub_8114C68, + sub_8114CC0, + sub_8114D4C, + sub_8114DE8, + sub_8114FF0, + sub_8115078, + sub_81151C0, + sub_8115280, + sub_8115410, + sub_81154DC, + sub_81155A4, + NULL, + sub_81156D8, + NULL, + sub_81157DC +}; + +#ifdef NONMATCHING +void sub_8113550(u16 a0, void * a1) +{ + void * r1; + + if (a0 == 35 && gUnknown_203B048 == 2) + { + sub_811381C(); + return; + } + sub_811381C(); + if (gUnknown_203ADFA == 2) + return; + + if (a0 < 3 || a0 > 26) + return; + + if (sub_81136D4() == TRUE) + return; + + if (sub_81138A0(a0, a1) == TRUE) + return; + + if (sub_80BF708() == TRUE) + return; + + // NONMATCHING: branch logic here + if (InUnionRoom() == TRUE) + return; + + if (sub_8113954(a0, a1) == TRUE) + return; + + if (sub_8113A44(a0, a1) == TRUE) + return; + + if (sub_81153E4(a0, a1) == FALSE) + return; + + if (gUnknown_3005E88 == 0) + { + if (sub_8113778(a0, a1) == TRUE) + return; + + if (a0 != 31 || gUnknown_203AE04 == NULL) + { + if (sub_81153A8(a0, a1) == FALSE) + return; + sub_8110AEC(a0); + } + } + else if (a0 == 40) + return; + + sub_8113B94(a0); + if (a0 == 31) + { + if (gUnknown_203AE04 == NULL) + { + gUnknown_203AE04 = gUnknown_203AE08; + r1 = gUnknown_8456948[a0](gUnknown_203AE04, a1); + } + else + { + gUnknown_8456948[a0](gUnknown_203AE04, a1); + return; + } + } + else + { + gUnknown_203AE04 = NULL; + r1 = gUnknown_8456948[a0](gUnknown_203AE08, a1); + } + + if (r1 == NULL) + { + r1 = sub_8113828(a0, a1); + if (r1 == NULL) + return; + } + + gUnknown_203AE08 = r1; + if (gUnknown_203B048 == 0) + return; + sub_811231C(); +} +#else +NAKED +void sub_8113550(u16 a0, void * a1) +{ + asm_unified("\tpush {r4,r5,lr}\n" + "\tadds r5, r1, 0\n" + "\tlsls r0, 16\n" + "\tlsrs r4, r0, 16\n" + "\tcmp r4, 0x23\n" + "\tbne _08113570\n" + "\tldr r0, _0811356C @ =gUnknown_203B048\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0x2\n" + "\tbne _08113570\n" + "\tbl sub_811381C\n" + "\tb ._return\n" + "\t.align 2, 0\n" + "_0811356C: .4byte gUnknown_203B048\n" + "_08113570:\n" + "\tbl sub_811381C\n" + "\tldr r0, _0811362C @ =gUnknown_203ADFA\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0x2\n" + "\tbne _0811357E\n" + "\tb ._return\n" + "_0811357E:\n" + "\tsubs r0, r4, 0x3\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tcmp r0, 0x27\n" + "\tbls _0811358A\n" + "\tb ._return\n" + "_0811358A:\n" + "\tbl sub_81136D4\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x1\n" + "\tbne _08113598\n" + "\tb ._return\n" + "_08113598:\n" + "\tadds r0, r4, 0\n" + "\tadds r1, r5, 0\n" + "\tbl sub_81138A0\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x1\n" + "\tbne _081135AA\n" + "\tb ._return\n" + "_081135AA:\n" + "\tbl sub_80BF708\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x1\n" + "\tbne _081135B8\n" + "\tb ._return\n" + "_081135B8:\n" + "\tbl InUnionRoom\n" + "\tcmp r0, 0x1\n" + "\tbne _081135C2\n" + "\tb ._return\n" + "_081135C2:\n" + "\tadds r0, r4, 0\n" + "\tadds r1, r5, 0\n" + "\tbl sub_8113954\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x1\n" + "\tbeq ._return\n" + "\tadds r0, r4, 0\n" + "\tadds r1, r5, 0\n" + "\tbl sub_8113A44\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x1\n" + "\tbeq ._return\n" + "\tadds r0, r4, 0\n" + "\tadds r1, r5, 0\n" + "\tbl sub_81153E4\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq ._return\n" + "\tldr r0, _08113630 @ =gUnknown_3005E88\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbne _08113638\n" + "\tadds r0, r4, 0\n" + "\tadds r1, r5, 0\n" + "\tbl sub_8113778\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x1\n" + "\tbeq ._return\n" + "\tcmp r4, 0x1F\n" + "\tbne _08113614\n" + "\tldr r0, _08113634 @ =gUnknown_203AE04\n" + "\tldr r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbne _0811363C\n" + "_08113614:\n" + "\tadds r0, r4, 0\n" + "\tadds r1, r5, 0\n" + "\tbl sub_81153A8\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq ._return\n" + "\tadds r0, r4, 0\n" + "\tbl sub_8110AEC\n" + "\tb _0811363C\n" + "\t.align 2, 0\n" + "_0811362C: .4byte gUnknown_203ADFA\n" + "_08113630: .4byte gUnknown_3005E88\n" + "_08113634: .4byte gUnknown_203AE04\n" + "_08113638:\n" + "\tcmp r4, 0x28\n" + "\tbeq ._return\n" + "_0811363C:\n" + "\tadds r0, r4, 0\n" + "\tbl sub_8113B94\n" + "\tcmp r4, 0x1F\n" + "\tbne _0811367C\n" + "\tldr r2, _0811365C @ =gUnknown_203AE04\n" + "\tldr r1, [r2]\n" + "\tcmp r1, 0\n" + "\tbne _08113668\n" + "\tldr r0, _08113660 @ =gUnknown_203AE08\n" + "\tldr r0, [r0]\n" + "\tstr r0, [r2]\n" + "\tldr r1, _08113664 @ =gUnknown_8456948\n" + "\tldr r2, [r1, 0x7C]\n" + "\tb _0811368E\n" + "\t.align 2, 0\n" + "_0811365C: .4byte gUnknown_203AE04\n" + "_08113660: .4byte gUnknown_203AE08\n" + "_08113664: .4byte gUnknown_8456948\n" + "_08113668:\n" + "\tldr r0, _08113678 @ =gUnknown_8456948\n" + "\tldr r2, [r0, 0x7C]\n" + "\tadds r0, r1, 0\n" + "\tadds r1, r5, 0\n" + "\tbl _call_via_r2\n" + "\tb ._return\n" + "\t.align 2, 0\n" + "_08113678: .4byte gUnknown_8456948\n" + "_0811367C:\n" + "\tldr r1, _081136C4 @ =gUnknown_203AE04\n" + "\tmovs r0, 0\n" + "\tstr r0, [r1]\n" + "\tldr r0, _081136C8 @ =gUnknown_8456948\n" + "\tlsls r1, r4, 2\n" + "\tadds r1, r0\n" + "\tldr r0, _081136CC @ =gUnknown_203AE08\n" + "\tldr r0, [r0]\n" + "\tldr r2, [r1]\n" + "_0811368E:\n" + "\tadds r1, r5, 0\n" + "\tbl _call_via_r2\n" + "\tadds r1, r0, 0\n" + "\tcmp r1, 0\n" + "\tbne _081136AC\n" + "\tbl sub_811231C\n" + "\tadds r0, r4, 0\n" + "\tadds r1, r5, 0\n" + "\tbl sub_8113828\n" + "\tadds r1, r0, 0\n" + "\tcmp r1, 0\n" + "\tbeq ._return\n" + "_081136AC:\n" + "\tldr r0, _081136CC @ =gUnknown_203AE08\n" + "\tstr r1, [r0]\n" + "\tldr r0, _081136D0 @ =gUnknown_203B048\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbeq ._return\n" + "\tbl sub_811231C\n" + "._return:\n" + "\tpop {r4,r5}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_081136C4: .4byte gUnknown_203AE04\n" + "_081136C8: .4byte gUnknown_8456948\n" + "_081136CC: .4byte gUnknown_203AE08\n" + "_081136D0: .4byte gUnknown_203B048"); +} +#endif // NONMATCHING -- cgit v1.2.3 From 8dcea40e585c6aa37a42aa570de9b37d78538756 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 3 Nov 2018 13:36:42 -0400 Subject: sub_81136D4 --- src/quest_log.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index cfa353caa..50998b0eb 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -2909,3 +2909,20 @@ void sub_8113550(u16 a0, void * a1) "_081136D0: .4byte gUnknown_203B048"); } #endif // NONMATCHING + +bool8 sub_81136D4(void) +{ + if (gSaveBlock1Ptr->location.mapGroup == 2 && (gSaveBlock1Ptr->location.mapNum == 1 || gSaveBlock1Ptr->location.mapNum == 2 || gSaveBlock1Ptr->location.mapNum == 3 || gSaveBlock1Ptr->location.mapNum == 4 || gSaveBlock1Ptr->location.mapNum == 5 || gSaveBlock1Ptr->location.mapNum == 6 || gSaveBlock1Ptr->location.mapNum == 7 || gSaveBlock1Ptr->location.mapNum == 8 || gSaveBlock1Ptr->location.mapNum == 9 || gSaveBlock1Ptr->location.mapNum == 10 || gSaveBlock1Ptr->location.mapNum == 11)) + return TRUE; + + if (gSaveBlock1Ptr->location.mapGroup == 14 && gSaveBlock1Ptr->location.mapNum == 9) + return TRUE; + + if (gSaveBlock1Ptr->location.mapGroup == 31 && (gSaveBlock1Ptr->location.mapNum == 0 || gSaveBlock1Ptr->location.mapNum == 1)) + return TRUE; + + if ((gSaveBlock1Ptr->location.mapGroup == 1 && gSaveBlock1Ptr->location.mapNum == 46) || (gSaveBlock1Ptr->location.mapGroup == 1 && gSaveBlock1Ptr->location.mapNum == 58) || (gSaveBlock1Ptr->location.mapGroup == 2 && gSaveBlock1Ptr->location.mapNum == 11) || (gSaveBlock1Ptr->location.mapGroup == 10 && gSaveBlock1Ptr->location.mapNum == 6)) + return TRUE; + + return FALSE; +} -- cgit v1.2.3 From be7cda00a1f047fdf38ff88da9477e2c5dfc8cf4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 3 Nov 2018 16:21:34 -0400 Subject: through sub_81138F8 --- src/quest_log.c | 123 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 111 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 50998b0eb..9cdd17816 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -93,11 +93,13 @@ EWRAM_DATA u16 *gUnknown_203AE90 = NULL; EWRAM_DATA struct UnkStruct_203AE94 gUnknown_203AE94 = {0}; EWRAM_DATA struct UnkStruct_203AE98 gUnknown_203AE98[32] = {0}; EWRAM_DATA u16 gUnknown_203AF98 = 0; -EWRAM_DATA u8 gUnknown_203AF9A[64][2]; -EWRAM_DATA u16 gUnknown_203B01A; -EWRAM_DATA u16 gUnknown_203B01C; -EWRAM_DATA u16 gUnknown_203B01E; -EWRAM_DATA u8 gUnknown_203B020; +EWRAM_DATA u8 gUnknown_203AF9A[64][2] = {{0}}; +EWRAM_DATA u16 gUnknown_203B01A = 0; +EWRAM_DATA u16 gUnknown_203B01C = 0; +EWRAM_DATA u16 gUnknown_203B01E = 0; +EWRAM_DATA u8 gUnknown_203B020 = 0; + +EWRAM_DATA ALIGNED(2) u16 gUnknown_203B024[16] = {0}; EWRAM_DATA u16 gUnknown_203B044[2] = {0}; EWRAM_DATA u8 gUnknown_203B048 = 0; @@ -156,11 +158,12 @@ void sub_81134CC(struct Var4038Struct *); bool8 sub_8113508(struct Var4038Struct * ); void sub_8113524(struct Var4038Struct *); bool8 sub_81136D4(void); -bool8 sub_8113778(u16, void*); -void* sub_8113828(u16, void*); -bool8 sub_81138A0(u16, void*); -bool8 sub_8113954(u16, void*); -bool8 sub_8113A44(u16, void*); +bool8 sub_8113778(u16, u16 *); +bool8 sub_81137E4(u16, u16 *); +void * sub_8113828(u16, u16 *); +bool8 sub_81138A0(u16, u16 *); +bool8 sub_8113954(u16, u16 *); +bool8 sub_8113A44(u16, u16 *); void sub_8113B94(u16); void *sub_8113F14(void *, void *); void *sub_8113F80(void *, void *); @@ -2639,7 +2642,7 @@ void * (*const gUnknown_8456948[])(void *, void *) = { }; #ifdef NONMATCHING -void sub_8113550(u16 a0, void * a1) +void sub_8113550(u16 a0, u16 * a1) { void * r1; @@ -2726,7 +2729,7 @@ void sub_8113550(u16 a0, void * a1) } #else NAKED -void sub_8113550(u16 a0, void * a1) +void sub_8113550(u16 a0, u16 * a1) { asm_unified("\tpush {r4,r5,lr}\n" "\tadds r5, r1, 0\n" @@ -2926,3 +2929,99 @@ bool8 sub_81136D4(void) return FALSE; } + +bool8 sub_8113748(void) +{ + if (sub_81136D4() != TRUE) + return FALSE; + + if (gUnknown_203ADFA == 2) + return TRUE; + + if (gUnknown_203ADFA == 1) + sub_8112364(); + + return FALSE; +} + +bool8 sub_8113778(u16 a0, u16 * a1) +{ + if (a0 == 36 || a0 == 11) + return TRUE; + + if (!FlagGet(0x82C)) + { + if (a0 == 3 || a0 == 31 || sub_81137E4(a0, a1) == TRUE) + return TRUE; + } + + if (!FlagGet(0x844)) + { + if (a0 == 4 || a0 == 5 || a0 == 6 || a0 == 7 || a0 == 8 || a0 == 9 || a0 == 10 || a0 == 22 || a0 == 25 || a0 == 26) + return TRUE; + } + + return FALSE; +} + +bool8 sub_81137E4(u16 a0, u16 * a1) +{ + if (a0 == 34) + { + u8 trainerClass = gTrainers[*a1].trainerClass; + if ( trainerClass == 0x51 + || trainerClass == 0x59 + || trainerClass == 0x5A + || trainerClass == 0x53) + return FALSE; + return TRUE; + } + return FALSE; +} + +void sub_811381C(void) +{ + gUnknown_203B048 = 0; +} + +void * sub_8113828(u16 a0, u16 * a1) +{ + if (sub_8113778(a0, a1) == TRUE) + return NULL; + + if (sub_81153A8(a0, a1) == FALSE) + return NULL; + + sub_8110AEC(a0); + sub_8113B94(a0); + + if (a0 == 31) + gUnknown_203AE04 = gUnknown_203AE08; + else + gUnknown_203AE04 = NULL; + + return gUnknown_8456948[a0](gUnknown_203AE08, a1); +} + +bool8 sub_81138A0(u16 a0, u16 * a1) +{ + if (a0 < 12 || a0 > 19) + return FALSE; + + sub_81138F8(); + gUnknown_203B024[0] = a0; + + if (a0 < 16 || a0 > 17) + { + if (a0 == 12 || a0 == 18) + memcpy(gUnknown_203B024 + 2, a1, 12); + else + memcpy(gUnknown_203B024 + 2, a1, 24); + } + return TRUE; +} + +void sub_81138F8(void) +{ + memset(gUnknown_203B024, 0, sizeof(gUnknown_203B024)); +} -- cgit v1.2.3 From a68ed3ec1758533b73078da934e109d12c502691 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 3 Nov 2018 18:24:00 -0400 Subject: through sub_81139BC --- src/quest_log.c | 70 +++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 61 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 9cdd17816..98bb0b3b1 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -72,6 +72,12 @@ struct UnkStruct_300201C u16 unk_2; }; +struct UnkStruct_203B024 +{ + u16 unk_00; + u32 unk_04[7]; +}; + u8 gUnknown_3005E88; u16 gUnknown_3005E8C; struct UnkStruct_3005E90 gUnknown_3005E90; @@ -84,11 +90,11 @@ EWRAM_DATA u8 gUnknown_203ADF8 = 0; EWRAM_DATA u8 gUnknown_203ADF9 = 0; EWRAM_DATA u8 gUnknown_203ADFA = 0; EWRAM_DATA u16 gUnknown_203ADFC = 0; -EWRAM_DATA u8 gUnknown_203ADFE[3]; +EWRAM_DATA u8 gUnknown_203ADFE[3] = {0}; EWRAM_DATA void * gUnknown_203AE04 = NULL; EWRAM_DATA u16 * gUnknown_203AE08 = NULL; EWRAM_DATA void * gUnknown_203AE0C[32] = {NULL}; -EWRAM_DATA void (* gUnknown_203AE8C)(void) = 0; +EWRAM_DATA void (* gUnknown_203AE8C)(void) = NULL; EWRAM_DATA u16 *gUnknown_203AE90 = NULL; EWRAM_DATA struct UnkStruct_203AE94 gUnknown_203AE94 = {0}; EWRAM_DATA struct UnkStruct_203AE98 gUnknown_203AE98[32] = {0}; @@ -98,11 +104,12 @@ EWRAM_DATA u16 gUnknown_203B01A = 0; EWRAM_DATA u16 gUnknown_203B01C = 0; EWRAM_DATA u16 gUnknown_203B01E = 0; EWRAM_DATA u8 gUnknown_203B020 = 0; - -EWRAM_DATA ALIGNED(2) u16 gUnknown_203B024[16] = {0}; - +EWRAM_DATA struct UnkStruct_203B024 gUnknown_203B024 = {0}; EWRAM_DATA u16 gUnknown_203B044[2] = {0}; EWRAM_DATA u8 gUnknown_203B048 = 0; +EWRAM_DATA u8 gUnknown_203B049 = 0; +EWRAM_DATA u8 gUnknown_203B04A = 0; +EWRAM_DATA u8 gUnknown_203B04B = 0; void sub_8110A00(void); void sub_8110A3C(void); @@ -3009,19 +3016,64 @@ bool8 sub_81138A0(u16 a0, u16 * a1) return FALSE; sub_81138F8(); - gUnknown_203B024[0] = a0; + gUnknown_203B024.unk_00 = a0; if (a0 < 16 || a0 > 17) { if (a0 == 12 || a0 == 18) - memcpy(gUnknown_203B024 + 2, a1, 12); + memcpy(gUnknown_203B024.unk_04, a1, 12); else - memcpy(gUnknown_203B024 + 2, a1, 24); + memcpy(gUnknown_203B024.unk_04, a1, 24); } return TRUE; } void sub_81138F8(void) { - memset(gUnknown_203B024, 0, sizeof(gUnknown_203B024)); + gUnknown_203B024 = (struct UnkStruct_203B024){}; +} + +void sub_811390C(void) +{ + if (gUnknown_203B024.unk_00 != 0) + { + void * resp; + gUnknown_203B04A = 0; + sub_8110AEC(gUnknown_203B024.unk_00); + resp = gUnknown_8456948[gUnknown_203B024.unk_00](gUnknown_203AE08, gUnknown_203B024.unk_04); + gUnknown_203AE08 = resp; + sub_81138F8(); + } +} + +bool8 sub_8113954(u16 a0, u16 * a1) +{ + if (a0 != 34 && a0 != 30 && a0 != 32 && a0 != 33) + return FALSE; + sub_81138F8(); + if (gUnknown_3005E88 || FlagGet(0x82C) || sub_81137E4(a0, a1) != TRUE) + { + gUnknown_203B024.unk_00 = a0; + memcpy(gUnknown_203B024.unk_04, a1, 8); + } + return TRUE; +} + +void sub_81139BC(void) +{ + if (gUnknown_203B024.unk_00 != 0) + { + void * resp; + if (gUnknown_3005E88 == 0) + { + gUnknown_203B04A = 0; + sub_8110AEC(gUnknown_203B024.unk_00); + } + sub_8113B94(gUnknown_203B024.unk_00); + resp = gUnknown_8456948[gUnknown_203B024.unk_00](gUnknown_203AE08, gUnknown_203B024.unk_04); + gUnknown_203AE08 = resp; + sub_8113A1C(1); + sub_81138F8(); + sub_811231C(); + } } -- cgit v1.2.3 From f3231493dbb90dbcb5d5653d0a873b38b1a6f2d4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 3 Nov 2018 19:28:55 -0400 Subject: through sub_8113A78 --- src/quest_log.c | 196 +++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 180 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 98bb0b3b1..58006d9ca 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -170,64 +170,104 @@ bool8 sub_81137E4(u16, u16 *); void * sub_8113828(u16, u16 *); bool8 sub_81138A0(u16, u16 *); bool8 sub_8113954(u16, u16 *); +void sub_8113A1C(u16); +void sub_811381C(void); +void sub_81138F8(void); bool8 sub_8113A44(u16, u16 *); +void * sub_8113A78(u16 *, void **); +void sub_8113ABC(void *); +bool8 sub_8113AE8(void *); +bool8 sub_8113B44(void *); +void sub_8113B88(void); void sub_8113B94(u16); +void sub_8113BD8(void); +void * sub_8113BF4(void *); +void * sub_8113C20(void *, struct UnkStruct_203AE98 *); +void *sub_8113C5C(void *, u16); +void * sub_8113C8C(void *, struct UnkStruct_203AE98 *); +void * sub_8113CC8(void *, struct UnkStruct_203AE98 *); +void * sub_8113D08(void *, struct UnkStruct_203AE98 *); +void * sub_8113D48(void *, struct UnkStruct_203AE98 *); +void * sub_8113D94(void *, struct UnkStruct_203AE98 *); void *sub_8113F14(void *, void *); +u16 *sub_8113F3C(u16 *); void *sub_8113F80(void *, void *); +u16 *sub_8113FBC(u16 *); void *sub_8114174(void *, void *); +u16 *sub_8114188(u16 *); void *sub_81141D0(void *, void *); +u16 *sub_81141E4(u16 *); void *sub_811422C(void *, void *); +u16 *sub_8114240(u16 *); void *sub_8114288(void *, void *); +u16 *sub_811429C(u16 *); void *sub_8114310(void *, void *); +u16 *sub_8114324(u16 *); void *sub_8114380(void *, void *); +u16 *sub_8114394(u16 *); void *sub_81143F0(void *, void *); +u16 *sub_811443C(u16 *); void *sub_811445C(void *, void *); +u16 *sub_811448C(u16 *); void *sub_81144EC(void *, void *); +u16 *sub_8114518(u16 *); void *sub_8114578(void *, void *); +u16 *sub_81145A4(u16 *); void *sub_8114604(void *, void *); +u16 *sub_811464C(u16 *); void *sub_8114710(void *, void *); +u16 *sub_8114724(u16 *); void *sub_8114744(void *, void *); +u16 *sub_8114758(u16 *); void *sub_8114778(void *, void *); +u16 *sub_81147A8(u16 *); void *sub_8114808(void *, void *); +u16 *sub_8114834(u16 *); void *sub_811488C(void *, void *); +u16 *sub_81148BC(u16 *); void *sub_8114918(void *, void *); +u16 *sub_8114944(u16 *); void *sub_8114990(void *, void *); +u16 *sub_81149D0(u16 *); void *sub_8114A1C(void *, void *); +u16 *sub_8114A4C(u16 *); void *sub_8114AA0(void *, void *); +u16 *sub_8114AC8(u16 *); void *sub_8114B0C(void *, void *); +u16 *sub_8114B34(u16 *); void *sub_8114B78(void *, void *); +u16 *sub_8114BA0(u16 *); void *sub_8114BE4(void *, void *); +u16 *sub_8114C0C(u16 *); void *sub_8114C68(void *, void *); +u16 *sub_8114C8C(u16 *); void *sub_8114CC0(void *, void *); +u16 *sub_8114CE4(u16 *); void *sub_8114D4C(void *, void *); +u16 *sub_8114D68(u16 *); void *sub_8114DE8(void *, void *); +u16 *sub_8114E68(u16 *); +bool8 sub_8114FBC(u16); void *sub_8114FF0(void *, void *); +u16 *sub_811500C(u16 *); void *sub_8115078(void *, void *); +u16 *sub_81150CC(u16 *); void *sub_81151C0(void *, void *); +u16 *sub_81151DC(u16 *); void *sub_8115280(void *, void *); +u16 *sub_81152BC(u16 *); void *sub_8115410(void *, void *); +u16 *sub_8115460(u16 *); void *sub_81154DC(void *, void *); +u16 *sub_8115518(u16 *); void *sub_81155A4(void *, void *); +u16 *sub_81155E0(u16 *); void *sub_81156D8(void *, void *); +u16 *sub_8115700(u16 *); void *sub_81157DC(void *, void *); +u16 *sub_8115800(u16 *); bool8 sub_81153A8(u16, void*); bool8 sub_81153E4(u16, void*); -void sub_8113A1C(u8); -void sub_811381C(void); -void sub_81138F8(void); -void * sub_8113A78(void *, void **); -void sub_8113ABC(void *); -bool8 sub_8113AE8(void *); -bool8 sub_8113B44(void *); -void sub_8113B88(void); -void sub_8113BD8(void); -void * sub_8113BF4(void *); -void * sub_8113C20(void *, struct UnkStruct_203AE98 *); -void * sub_8113C8C(void *, struct UnkStruct_203AE98 *); -void * sub_8113CC8(void *, struct UnkStruct_203AE98 *); -void * sub_8113D08(void *, struct UnkStruct_203AE98 *); -void * sub_8113D48(void *, struct UnkStruct_203AE98 *); -void * sub_8113D94(void *, struct UnkStruct_203AE98 *); extern const u8 gUnknown_841A155[]; extern const u8 gUnknown_841B073[]; @@ -3077,3 +3117,127 @@ void sub_81139BC(void) sub_811231C(); } } + +void sub_8113A1C(u16 a0) +{ + gUnknown_203AE08 = sub_8113C5C(gUnknown_203AE08, a0); + gUnknown_203AF98++; +} + +bool8 sub_8113A44(u16 a0, u16 *a1) +{ + if (a0 != 31) + return FALSE; + + if (sub_8114FBC(a1[0]) == TRUE) + return TRUE; + + if (sub_8114FBC(a1[1]) == TRUE) + return TRUE; + + return FALSE; +} + +u16 * (*const gUnknown_84569F4[])(u16 *) = { + NULL, + NULL, + NULL, + sub_8113F3C, + sub_8113FBC, + sub_8114188, + sub_81141E4, + sub_8114240, + sub_811429C, + sub_8114324, + sub_8114394, + sub_811443C, + sub_811448C, + sub_8114518, + sub_81145A4, + sub_811464C, + sub_8114724, + sub_8114758, + sub_81147A8, + sub_8114834, + sub_81148BC, + sub_8114944, + sub_81149D0, + sub_8114A4C, + sub_8114AC8, + sub_8114B34, + sub_8114BA0, + sub_8114C0C, + sub_8114C8C, + sub_8114CE4, + sub_8114D68, + sub_8114E68, + sub_811500C, + sub_81150CC, + sub_81151DC, + sub_81152BC, + sub_8115460, + sub_8115518, + sub_81155E0, + NULL, + sub_8115700, + NULL, + sub_8115800 +}; + +const u8 gUnknown_8456AA0[] = { + 0x08, + 0x08, + 0x08, + 0x08, + 0x0a, + 0x08, + 0x08, + 0x08, + 0x08, + 0x0a, + 0x0a, + 0x04, + 0x10, + 0x0c, + 0x0c, + 0x1a, + 0x04, + 0x04, + 0x10, + 0x0c, + 0x0a, + 0x0a, + 0x0a, + 0x08, + 0x08, + 0x08, + 0x08, + 0x06, + 0x06, + 0x06, + 0x0c, + 0x0c, + 0x0c, + 0x0a, + 0x0c, + 0x06, + 0x08, + 0x0e, + 0x0e, + 0x02, + 0x08, + 0x04, + 0x06 +}; + +void * sub_8113A78(u16 *a0, void **a1) +{ + u16 r2 = *a0 & 0xfff; + u16 r4 = *a0 >> 12; + if (r2 == 33) + r4 = 0; + if (r2 < 3 || r2 > 42) + return NULL; + *a1 = a0; + return gUnknown_8456AA0[r2] + (gUnknown_8456AA0[r2] - 4) * r4 + (void *)a0; +} -- cgit v1.2.3 From 5819c8a97e7a24e8c86afda2f0bcf659d6fc4893 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 5 Nov 2018 17:45:21 -0500 Subject: sub_8113ABC --- src/quest_log.c | 57 ++++++++++++++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 27 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 58006d9ca..393eed73f 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -72,12 +72,6 @@ struct UnkStruct_300201C u16 unk_2; }; -struct UnkStruct_203B024 -{ - u16 unk_00; - u32 unk_04[7]; -}; - u8 gUnknown_3005E88; u16 gUnknown_3005E8C; struct UnkStruct_3005E90 gUnknown_3005E90; @@ -92,8 +86,8 @@ EWRAM_DATA u8 gUnknown_203ADFA = 0; EWRAM_DATA u16 gUnknown_203ADFC = 0; EWRAM_DATA u8 gUnknown_203ADFE[3] = {0}; EWRAM_DATA void * gUnknown_203AE04 = NULL; -EWRAM_DATA u16 * gUnknown_203AE08 = NULL; -EWRAM_DATA void * gUnknown_203AE0C[32] = {NULL}; +EWRAM_DATA struct UnkStruct_203B024 * gUnknown_203AE08 = NULL; +EWRAM_DATA struct UnkStruct_203B024 * gUnknown_203AE0C[32] = {NULL}; EWRAM_DATA void (* gUnknown_203AE8C)(void) = NULL; EWRAM_DATA u16 *gUnknown_203AE90 = NULL; EWRAM_DATA struct UnkStruct_203AE94 gUnknown_203AE94 = {0}; @@ -174,21 +168,21 @@ void sub_8113A1C(u16); void sub_811381C(void); void sub_81138F8(void); bool8 sub_8113A44(u16, u16 *); -void * sub_8113A78(u16 *, void **); -void sub_8113ABC(void *); +void * sub_8113A78(struct UnkStruct_203B024 *, struct UnkStruct_203B024 **); +void sub_8113ABC(struct UnkStruct_203B024 *); bool8 sub_8113AE8(void *); bool8 sub_8113B44(void *); void sub_8113B88(void); void sub_8113B94(u16); void sub_8113BD8(void); -void * sub_8113BF4(void *); +struct UnkStruct_203B024 * sub_8113BF4(struct UnkStruct_203B024 *); void * sub_8113C20(void *, struct UnkStruct_203AE98 *); void *sub_8113C5C(void *, u16); -void * sub_8113C8C(void *, struct UnkStruct_203AE98 *); -void * sub_8113CC8(void *, struct UnkStruct_203AE98 *); -void * sub_8113D08(void *, struct UnkStruct_203AE98 *); -void * sub_8113D48(void *, struct UnkStruct_203AE98 *); -void * sub_8113D94(void *, struct UnkStruct_203AE98 *); +struct UnkStruct_203B024 * sub_8113C8C(void *, struct UnkStruct_203AE98 *); +struct UnkStruct_203B024 * sub_8113CC8(void *, struct UnkStruct_203AE98 *); +struct UnkStruct_203B024 * sub_8113D08(void *, struct UnkStruct_203AE98 *); +struct UnkStruct_203B024 * sub_8113D48(void *, struct UnkStruct_203AE98 *); +struct UnkStruct_203B024 * sub_8113D94(void *, struct UnkStruct_203AE98 *); void *sub_8113F14(void *, void *); u16 *sub_8113F3C(u16 *); void *sub_8113F80(void *, void *); @@ -298,7 +292,7 @@ void sub_8110840(void * oldPointer) int r3; for (r3 = 0; r3 < 0x20; r3++) if (gUnknown_203AE0C[r3]) - gUnknown_203AE0C[r3] += offset; + gUnknown_203AE0C[r3] = (void *)gUnknown_203AE0C[r3] + offset; } } } @@ -1032,7 +1026,7 @@ void sub_8111708(void) void sub_811175C(u8 a0, struct UnkStruct_203AE98 * a1) { u16 i; - u16 *r4; + struct UnkStruct_203B024 *r4; u16 r6 = 0; u16 r9 = 0; @@ -1045,7 +1039,7 @@ void sub_811175C(u8 a0, struct UnkStruct_203AE98 * a1) r4 = gSaveBlock1Ptr->questLog[a0].unk_568; for (i = 0; i < 32; i++) { - switch (*r4 & 0xFFF) + switch (r4->unk_00 & 0xFFF) { case 0: r4 = sub_8113D08(r4, &a1[r6]); @@ -3061,9 +3055,9 @@ bool8 sub_81138A0(u16 a0, u16 * a1) if (a0 < 16 || a0 > 17) { if (a0 == 12 || a0 == 18) - memcpy(gUnknown_203B024.unk_04, a1, 12); + memcpy(&gUnknown_203B024.unk_04, a1, 12); else - memcpy(gUnknown_203B024.unk_04, a1, 24); + memcpy(&gUnknown_203B024.unk_04, a1, 24); } return TRUE; } @@ -3080,7 +3074,7 @@ void sub_811390C(void) void * resp; gUnknown_203B04A = 0; sub_8110AEC(gUnknown_203B024.unk_00); - resp = gUnknown_8456948[gUnknown_203B024.unk_00](gUnknown_203AE08, gUnknown_203B024.unk_04); + resp = gUnknown_8456948[gUnknown_203B024.unk_00](gUnknown_203AE08, &gUnknown_203B024.unk_04); gUnknown_203AE08 = resp; sub_81138F8(); } @@ -3094,7 +3088,7 @@ bool8 sub_8113954(u16 a0, u16 * a1) if (gUnknown_3005E88 || FlagGet(0x82C) || sub_81137E4(a0, a1) != TRUE) { gUnknown_203B024.unk_00 = a0; - memcpy(gUnknown_203B024.unk_04, a1, 8); + memcpy(&gUnknown_203B024.unk_04, a1, 8); } return TRUE; } @@ -3110,7 +3104,7 @@ void sub_81139BC(void) sub_8110AEC(gUnknown_203B024.unk_00); } sub_8113B94(gUnknown_203B024.unk_00); - resp = gUnknown_8456948[gUnknown_203B024.unk_00](gUnknown_203AE08, gUnknown_203B024.unk_04); + resp = gUnknown_8456948[gUnknown_203B024.unk_00](gUnknown_203AE08, &gUnknown_203B024.unk_04); gUnknown_203AE08 = resp; sub_8113A1C(1); sub_81138F8(); @@ -3230,10 +3224,10 @@ const u8 gUnknown_8456AA0[] = { 0x06 }; -void * sub_8113A78(u16 *a0, void **a1) +void * sub_8113A78(struct UnkStruct_203B024 *a0, struct UnkStruct_203B024 **a1) { - u16 r2 = *a0 & 0xfff; - u16 r4 = *a0 >> 12; + u16 r2 = a0->unk_00 & 0xfff; + u16 r4 = a0->unk_00 >> 12; if (r2 == 33) r4 = 0; if (r2 < 3 || r2 > 42) @@ -3241,3 +3235,12 @@ void * sub_8113A78(u16 *a0, void **a1) *a1 = a0; return gUnknown_8456AA0[r2] + (gUnknown_8456AA0[r2] - 4) * r4 + (void *)a0; } + +void sub_8113ABC(struct UnkStruct_203B024 * a0) +{ + struct UnkStruct_203B024_Sub1 * r2 = &a0->unk_04.type1; + if ((a0->unk_00 & 0xFFF) != 35) + gUnknown_203B04A = 0; + else + gUnknown_203B04A = r2->unk_01 + 1; +} -- cgit v1.2.3 From ed3cc83264cf25acb4889508ffc6b878b1e1d095 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 5 Nov 2018 22:19:53 -0500 Subject: nonmatching sub_8113AE8 --- src/quest_log.c | 157 +++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 115 insertions(+), 42 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 393eed73f..e69f012d7 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -72,6 +72,13 @@ struct UnkStruct_300201C u16 unk_2; }; +struct UnkStruct_203B044 +{ + u8 unk_0; + u8 unk_1; + u16 unk_2; +}; + u8 gUnknown_3005E88; u16 gUnknown_3005E8C; struct UnkStruct_3005E90 gUnknown_3005E90; @@ -99,7 +106,7 @@ EWRAM_DATA u16 gUnknown_203B01C = 0; EWRAM_DATA u16 gUnknown_203B01E = 0; EWRAM_DATA u8 gUnknown_203B020 = 0; EWRAM_DATA struct UnkStruct_203B024 gUnknown_203B024 = {0}; -EWRAM_DATA u16 gUnknown_203B044[2] = {0}; +EWRAM_DATA struct UnkStruct_203B044 gUnknown_203B044 = {0}; EWRAM_DATA u8 gUnknown_203B048 = 0; EWRAM_DATA u8 gUnknown_203B049 = 0; EWRAM_DATA u8 gUnknown_203B04A = 0; @@ -170,7 +177,7 @@ void sub_81138F8(void); bool8 sub_8113A44(u16, u16 *); void * sub_8113A78(struct UnkStruct_203B024 *, struct UnkStruct_203B024 **); void sub_8113ABC(struct UnkStruct_203B024 *); -bool8 sub_8113AE8(void *); +bool8 sub_8113AE8(struct UnkStruct_203B024 *); bool8 sub_8113B44(void *); void sub_8113B88(void); void sub_8113B94(u16); @@ -184,82 +191,82 @@ struct UnkStruct_203B024 * sub_8113D08(void *, struct UnkStruct_203AE98 *); struct UnkStruct_203B024 * sub_8113D48(void *, struct UnkStruct_203AE98 *); struct UnkStruct_203B024 * sub_8113D94(void *, struct UnkStruct_203AE98 *); void *sub_8113F14(void *, void *); -u16 *sub_8113F3C(u16 *); +struct UnkStruct_203B024 *sub_8113F3C(struct UnkStruct_203B024 *); void *sub_8113F80(void *, void *); -u16 *sub_8113FBC(u16 *); +struct UnkStruct_203B024 *sub_8113FBC(struct UnkStruct_203B024 *); void *sub_8114174(void *, void *); -u16 *sub_8114188(u16 *); +struct UnkStruct_203B024 *sub_8114188(struct UnkStruct_203B024 *); void *sub_81141D0(void *, void *); -u16 *sub_81141E4(u16 *); +struct UnkStruct_203B024 *sub_81141E4(struct UnkStruct_203B024 *); void *sub_811422C(void *, void *); -u16 *sub_8114240(u16 *); +struct UnkStruct_203B024 *sub_8114240(struct UnkStruct_203B024 *); void *sub_8114288(void *, void *); -u16 *sub_811429C(u16 *); +struct UnkStruct_203B024 *sub_811429C(struct UnkStruct_203B024 *); void *sub_8114310(void *, void *); -u16 *sub_8114324(u16 *); +struct UnkStruct_203B024 *sub_8114324(struct UnkStruct_203B024 *); void *sub_8114380(void *, void *); -u16 *sub_8114394(u16 *); +struct UnkStruct_203B024 *sub_8114394(struct UnkStruct_203B024 *); void *sub_81143F0(void *, void *); -u16 *sub_811443C(u16 *); +struct UnkStruct_203B024 *sub_811443C(struct UnkStruct_203B024 *); void *sub_811445C(void *, void *); -u16 *sub_811448C(u16 *); +struct UnkStruct_203B024 *sub_811448C(struct UnkStruct_203B024 *); void *sub_81144EC(void *, void *); -u16 *sub_8114518(u16 *); +struct UnkStruct_203B024 *sub_8114518(struct UnkStruct_203B024 *); void *sub_8114578(void *, void *); -u16 *sub_81145A4(u16 *); +struct UnkStruct_203B024 *sub_81145A4(struct UnkStruct_203B024 *); void *sub_8114604(void *, void *); -u16 *sub_811464C(u16 *); +struct UnkStruct_203B024 *sub_811464C(struct UnkStruct_203B024 *); void *sub_8114710(void *, void *); -u16 *sub_8114724(u16 *); +struct UnkStruct_203B024 *sub_8114724(struct UnkStruct_203B024 *); void *sub_8114744(void *, void *); -u16 *sub_8114758(u16 *); +struct UnkStruct_203B024 *sub_8114758(struct UnkStruct_203B024 *); void *sub_8114778(void *, void *); -u16 *sub_81147A8(u16 *); +struct UnkStruct_203B024 *sub_81147A8(struct UnkStruct_203B024 *); void *sub_8114808(void *, void *); -u16 *sub_8114834(u16 *); +struct UnkStruct_203B024 *sub_8114834(struct UnkStruct_203B024 *); void *sub_811488C(void *, void *); -u16 *sub_81148BC(u16 *); +struct UnkStruct_203B024 *sub_81148BC(struct UnkStruct_203B024 *); void *sub_8114918(void *, void *); -u16 *sub_8114944(u16 *); +struct UnkStruct_203B024 *sub_8114944(struct UnkStruct_203B024 *); void *sub_8114990(void *, void *); -u16 *sub_81149D0(u16 *); +struct UnkStruct_203B024 *sub_81149D0(struct UnkStruct_203B024 *); void *sub_8114A1C(void *, void *); -u16 *sub_8114A4C(u16 *); +struct UnkStruct_203B024 *sub_8114A4C(struct UnkStruct_203B024 *); void *sub_8114AA0(void *, void *); -u16 *sub_8114AC8(u16 *); +struct UnkStruct_203B024 *sub_8114AC8(struct UnkStruct_203B024 *); void *sub_8114B0C(void *, void *); -u16 *sub_8114B34(u16 *); +struct UnkStruct_203B024 *sub_8114B34(struct UnkStruct_203B024 *); void *sub_8114B78(void *, void *); -u16 *sub_8114BA0(u16 *); +struct UnkStruct_203B024 *sub_8114BA0(struct UnkStruct_203B024 *); void *sub_8114BE4(void *, void *); -u16 *sub_8114C0C(u16 *); +struct UnkStruct_203B024 *sub_8114C0C(struct UnkStruct_203B024 *); void *sub_8114C68(void *, void *); -u16 *sub_8114C8C(u16 *); +struct UnkStruct_203B024 *sub_8114C8C(struct UnkStruct_203B024 *); void *sub_8114CC0(void *, void *); -u16 *sub_8114CE4(u16 *); +struct UnkStruct_203B024 *sub_8114CE4(struct UnkStruct_203B024 *); void *sub_8114D4C(void *, void *); -u16 *sub_8114D68(u16 *); +struct UnkStruct_203B024 *sub_8114D68(struct UnkStruct_203B024 *); void *sub_8114DE8(void *, void *); -u16 *sub_8114E68(u16 *); +struct UnkStruct_203B024 *sub_8114E68(struct UnkStruct_203B024 *); bool8 sub_8114FBC(u16); void *sub_8114FF0(void *, void *); -u16 *sub_811500C(u16 *); +struct UnkStruct_203B024 *sub_811500C(struct UnkStruct_203B024 *); void *sub_8115078(void *, void *); -u16 *sub_81150CC(u16 *); +struct UnkStruct_203B024 *sub_81150CC(struct UnkStruct_203B024 *); void *sub_81151C0(void *, void *); -u16 *sub_81151DC(u16 *); +struct UnkStruct_203B024 *sub_81151DC(struct UnkStruct_203B024 *); void *sub_8115280(void *, void *); -u16 *sub_81152BC(u16 *); +struct UnkStruct_203B024 *sub_81152BC(struct UnkStruct_203B024 *); void *sub_8115410(void *, void *); -u16 *sub_8115460(u16 *); +struct UnkStruct_203B024 *sub_8115460(struct UnkStruct_203B024 *); void *sub_81154DC(void *, void *); -u16 *sub_8115518(u16 *); +struct UnkStruct_203B024 *sub_8115518(struct UnkStruct_203B024 *); void *sub_81155A4(void *, void *); -u16 *sub_81155E0(u16 *); +struct UnkStruct_203B024 *sub_81155E0(struct UnkStruct_203B024 *); void *sub_81156D8(void *, void *); -u16 *sub_8115700(u16 *); +struct UnkStruct_203B024 *sub_8115700(struct UnkStruct_203B024 *); void *sub_81157DC(void *, void *); -u16 *sub_8115800(u16 *); +struct UnkStruct_203B024 *sub_8115800(struct UnkStruct_203B024 *); bool8 sub_81153A8(u16, void*); bool8 sub_81153E4(u16, void*); @@ -1197,7 +1204,7 @@ void sub_8111B80(void) gUnknown_203AE94.unk_0_4 = 0; gUnknown_203AE94.unk_3 = 0; gUnknown_203AE94.unk_2 = sub_8111BD4(); - if (gUnknown_203B044[1] == 0) + if (gUnknown_203B044.unk_2 == 0) gUnknown_203AE94.unk_1++; if (gUnknown_203AE94.unk_1 > 32) return; @@ -3132,7 +3139,7 @@ bool8 sub_8113A44(u16 a0, u16 *a1) return FALSE; } -u16 * (*const gUnknown_84569F4[])(u16 *) = { +struct UnkStruct_203B024 * (*const gUnknown_84569F4[])(struct UnkStruct_203B024 *) = { NULL, NULL, NULL, @@ -3244,3 +3251,69 @@ void sub_8113ABC(struct UnkStruct_203B024 * a0) else gUnknown_203B04A = r2->unk_01 + 1; } + +#ifdef NONMATCHING +bool8 sub_8113AE8(struct UnkStruct_203B024 * a0) +{ + if (a0 == NULL || a0->unk_02 > gUnknown_203AF98) + return FALSE; + + gUnknown_84569F4[a0->unk_00 & 0xFFF](a0); + gUnknown_203B044.unk_0 = a0->unk_00; + gUnknown_203B044.unk_1 = (a0->unk_00 & 0xF000) >> 12; + if (gUnknown_203B044.unk_1 != 0) + gUnknown_203B044.unk_2 = 1; + return TRUE; +} +#else +NAKED +bool8 sub_8113AE8(struct UnkStruct_203B024 * a0) +{ + asm_unified("\tpush {r4,lr}\n" + "\tadds r4, r0, 0\n" + "\tcmp r0, 0\n" + "\tbeq _08113AFA\n" + "\tldr r1, _08113B00 @ =gUnknown_203AF98\n" + "\tldrh r0, [r0, 0x2]\n" + "\tldrh r1, [r1]\n" + "\tcmp r0, r1\n" + "\tbls _08113B04\n" + "_08113AFA:\n" + "\tmovs r0, 0\n" + "\tb _08113B32\n" + "\t.align 2, 0\n" + "_08113B00: .4byte gUnknown_203AF98\n" + "_08113B04:\n" + "\tldr r2, _08113B38 @ =gUnknown_84569F4\n" + "\tldrh r1, [r4]\n" + "\tldr r0, _08113B3C @ =0x00000fff\n" + "\tands r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r2\n" + "\tldr r1, [r0]\n" + "\tadds r0, r4, 0\n" + "\tbl _call_via_r1\n" + "\tldr r2, _08113B40 @ =gUnknown_203B044\n" + "\tldrh r1, [r4]\n" + "\tstrb r1, [r2]\n" + "\tmovs r0, 0xF0\n" + "\tlsls r0, 8\n" + "\tands r0, r1\n" + "\tlsrs r0, 12\n" + "\tstrb r0, [r2, 0x1]\n" + "\tcmp r0, 0\n" + "\tbeq _08113B30\n" + "\tmovs r0, 0x1\n" + "\tstrh r0, [r2, 0x2]\n" + "_08113B30:\n" + "\tmovs r0, 0x1\n" + "_08113B32:\n" + "\tpop {r4}\n" + "\tpop {r1}\n" + "\tbx r1\n" + "\t.align 2, 0\n" + "_08113B38: .4byte gUnknown_84569F4\n" + "_08113B3C: .4byte 0x00000fff\n" + "_08113B40: .4byte gUnknown_203B044"); +} +#endif -- cgit v1.2.3 From 1e63aeb48ddb282a64d9acc73e0dcec54ddfd745 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 6 Nov 2018 08:40:46 -0500 Subject: through sub_8113B94 --- src/quest_log.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index e69f012d7..d2ffb2461 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -178,7 +178,7 @@ bool8 sub_8113A44(u16, u16 *); void * sub_8113A78(struct UnkStruct_203B024 *, struct UnkStruct_203B024 **); void sub_8113ABC(struct UnkStruct_203B024 *); bool8 sub_8113AE8(struct UnkStruct_203B024 *); -bool8 sub_8113B44(void *); +bool8 sub_8113B44(struct UnkStruct_203B024 *); void sub_8113B88(void); void sub_8113B94(u16); void sub_8113BD8(void); @@ -3317,3 +3317,32 @@ bool8 sub_8113AE8(struct UnkStruct_203B024 * a0) "_08113B40: .4byte gUnknown_203B044"); } #endif + +bool8 sub_8113B44(struct UnkStruct_203B024 * a0) +{ + if (gUnknown_203B044.unk_2 == 0) + return FALSE; + + gUnknown_84569F4[gUnknown_203B044.unk_0](a0); + gUnknown_203B044.unk_2++; + if (gUnknown_203B044.unk_2 > gUnknown_203B044.unk_1) + sub_8113B88(); + return TRUE; +} + +void sub_8113B88(void) +{ + gUnknown_203B044 = (struct UnkStruct_203B044){}; +} + +void sub_8113B94(u16 a0) +{ + if (gUnknown_203B044.unk_0 != (u8)a0 || gUnknown_203B044.unk_2 != gUnknown_203AF98) + { + gUnknown_203B044.unk_0 = a0; + gUnknown_203B044.unk_1 = 0; + gUnknown_203B044.unk_2 = gUnknown_203AF98; + } + else if (gUnknown_203B044.unk_1 < 5) + gUnknown_203B044.unk_1++; +} -- cgit v1.2.3 From 2c627ae37367500aff4063ec07bfd3fc2c37cf57 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 6 Nov 2018 11:19:39 -0500 Subject: through sub_8113C20 --- src/quest_log.c | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index d2ffb2461..9ccad6042 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -183,7 +183,7 @@ void sub_8113B88(void); void sub_8113B94(u16); void sub_8113BD8(void); struct UnkStruct_203B024 * sub_8113BF4(struct UnkStruct_203B024 *); -void * sub_8113C20(void *, struct UnkStruct_203AE98 *); +struct UnkStruct_203B024 * sub_8113C20(struct UnkStruct_203B024 * a0, struct UnkStruct_203AE98 * a1); void *sub_8113C5C(void *, u16); struct UnkStruct_203B024 * sub_8113C8C(void *, struct UnkStruct_203AE98 *); struct UnkStruct_203B024 * sub_8113CC8(void *, struct UnkStruct_203AE98 *); @@ -338,17 +338,17 @@ bool8 sub_8110944(void * a0, size_t a1) void * r2 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_568; void * r0 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].end; r0 -= a1; - if (a0 < r2 || a0 > r0) + if ((void *)a0 < r2 || (void *)a0 > r0) return FALSE; return TRUE; } -bool8 sub_8110988(void * a0, size_t a1) +bool8 sub_8110988(struct UnkStruct_203B024 * a0, size_t a1) { void * r2 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_568; void * r0 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].end; r0 -= a1; - if (a0 < r2 || a0 > r0) + if ((void *)a0 < r2 || (void *)a0 > r0) return FALSE; return TRUE; } @@ -3346,3 +3346,31 @@ void sub_8113B94(u16 a0) else if (gUnknown_203B044.unk_1 < 5) gUnknown_203B044.unk_1++; } + +void sub_8113BD8(void) +{ + gUnknown_203B049 = 0; + gUnknown_203B04A = 0; + gUnknown_203B04B = 0; +} + +struct UnkStruct_203B024 * sub_8113BF4(struct UnkStruct_203B024 * a0) +{ + if (!sub_8110988(a0, gUnknown_8456AA0[39])) + return NULL; + a0->unk_00 = 39; + return (void *)a0 + 2; +} + +struct UnkStruct_203B024 * sub_8113C20(struct UnkStruct_203B024 * a0, struct UnkStruct_203AE98 * a1) +{ + if (!sub_8110988(a0, gUnknown_8456AA0[39])) + return NULL; + a1->unk_6 = 0xFF; + a1->unk_4 = 0; + a1->unk_0 = 0; + a1->unk_1 = 0; + a1->unk_2 = 0; + a1->unk_3 = 0; + return (void *)a0 + 2; +} -- cgit v1.2.3 From 226bd50a5c49f422f8038c23b4f9c194e93164b3 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 6 Nov 2018 11:36:09 -0500 Subject: sub_8113C5C; rethink what this data actually is --- src/quest_log.c | 167 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 88 insertions(+), 79 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 9ccad6042..fe1ca9e18 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -92,9 +92,9 @@ EWRAM_DATA u8 gUnknown_203ADF9 = 0; EWRAM_DATA u8 gUnknown_203ADFA = 0; EWRAM_DATA u16 gUnknown_203ADFC = 0; EWRAM_DATA u8 gUnknown_203ADFE[3] = {0}; -EWRAM_DATA void * gUnknown_203AE04 = NULL; -EWRAM_DATA struct UnkStruct_203B024 * gUnknown_203AE08 = NULL; -EWRAM_DATA struct UnkStruct_203B024 * gUnknown_203AE0C[32] = {NULL}; +EWRAM_DATA u16 * gUnknown_203AE04 = NULL; +EWRAM_DATA u16 * gUnknown_203AE08 = NULL; +EWRAM_DATA u16 * gUnknown_203AE0C[32] = {NULL}; EWRAM_DATA void (* gUnknown_203AE8C)(void) = NULL; EWRAM_DATA u16 *gUnknown_203AE90 = NULL; EWRAM_DATA struct UnkStruct_203AE94 gUnknown_203AE94 = {0}; @@ -175,98 +175,98 @@ void sub_8113A1C(u16); void sub_811381C(void); void sub_81138F8(void); bool8 sub_8113A44(u16, u16 *); -void * sub_8113A78(struct UnkStruct_203B024 *, struct UnkStruct_203B024 **); -void sub_8113ABC(struct UnkStruct_203B024 *); -bool8 sub_8113AE8(struct UnkStruct_203B024 *); -bool8 sub_8113B44(struct UnkStruct_203B024 *); +u16 * sub_8113A78(u16 *, u16 **); +void sub_8113ABC(u16 *); +bool8 sub_8113AE8(u16 *); +bool8 sub_8113B44(u16 *); void sub_8113B88(void); void sub_8113B94(u16); void sub_8113BD8(void); -struct UnkStruct_203B024 * sub_8113BF4(struct UnkStruct_203B024 *); -struct UnkStruct_203B024 * sub_8113C20(struct UnkStruct_203B024 * a0, struct UnkStruct_203AE98 * a1); -void *sub_8113C5C(void *, u16); -struct UnkStruct_203B024 * sub_8113C8C(void *, struct UnkStruct_203AE98 *); -struct UnkStruct_203B024 * sub_8113CC8(void *, struct UnkStruct_203AE98 *); -struct UnkStruct_203B024 * sub_8113D08(void *, struct UnkStruct_203AE98 *); -struct UnkStruct_203B024 * sub_8113D48(void *, struct UnkStruct_203AE98 *); -struct UnkStruct_203B024 * sub_8113D94(void *, struct UnkStruct_203AE98 *); +u16 * sub_8113BF4(u16 *); +u16 * sub_8113C20(u16 *, struct UnkStruct_203AE98 *); +u16 * sub_8113C5C(u16 *, u16); +u16 * sub_8113C8C(u16 *, struct UnkStruct_203AE98 *); +u16 * sub_8113CC8(u16 *, struct UnkStruct_203AE98 *); +u16 * sub_8113D08(u16 *, struct UnkStruct_203AE98 *); +u16 * sub_8113D48(u16 *, struct UnkStruct_203AE98 *); +u16 * sub_8113D94(u16 *, struct UnkStruct_203AE98 *); void *sub_8113F14(void *, void *); -struct UnkStruct_203B024 *sub_8113F3C(struct UnkStruct_203B024 *); +u16 *sub_8113F3C(u16 *); void *sub_8113F80(void *, void *); -struct UnkStruct_203B024 *sub_8113FBC(struct UnkStruct_203B024 *); +u16 *sub_8113FBC(u16 *); void *sub_8114174(void *, void *); -struct UnkStruct_203B024 *sub_8114188(struct UnkStruct_203B024 *); +u16 *sub_8114188(u16 *); void *sub_81141D0(void *, void *); -struct UnkStruct_203B024 *sub_81141E4(struct UnkStruct_203B024 *); +u16 *sub_81141E4(u16 *); void *sub_811422C(void *, void *); -struct UnkStruct_203B024 *sub_8114240(struct UnkStruct_203B024 *); +u16 *sub_8114240(u16 *); void *sub_8114288(void *, void *); -struct UnkStruct_203B024 *sub_811429C(struct UnkStruct_203B024 *); +u16 *sub_811429C(u16 *); void *sub_8114310(void *, void *); -struct UnkStruct_203B024 *sub_8114324(struct UnkStruct_203B024 *); +u16 *sub_8114324(u16 *); void *sub_8114380(void *, void *); -struct UnkStruct_203B024 *sub_8114394(struct UnkStruct_203B024 *); +u16 *sub_8114394(u16 *); void *sub_81143F0(void *, void *); -struct UnkStruct_203B024 *sub_811443C(struct UnkStruct_203B024 *); +u16 *sub_811443C(u16 *); void *sub_811445C(void *, void *); -struct UnkStruct_203B024 *sub_811448C(struct UnkStruct_203B024 *); +u16 *sub_811448C(u16 *); void *sub_81144EC(void *, void *); -struct UnkStruct_203B024 *sub_8114518(struct UnkStruct_203B024 *); +u16 *sub_8114518(u16 *); void *sub_8114578(void *, void *); -struct UnkStruct_203B024 *sub_81145A4(struct UnkStruct_203B024 *); +u16 *sub_81145A4(u16 *); void *sub_8114604(void *, void *); -struct UnkStruct_203B024 *sub_811464C(struct UnkStruct_203B024 *); +u16 *sub_811464C(u16 *); void *sub_8114710(void *, void *); -struct UnkStruct_203B024 *sub_8114724(struct UnkStruct_203B024 *); +u16 *sub_8114724(u16 *); void *sub_8114744(void *, void *); -struct UnkStruct_203B024 *sub_8114758(struct UnkStruct_203B024 *); +u16 *sub_8114758(u16 *); void *sub_8114778(void *, void *); -struct UnkStruct_203B024 *sub_81147A8(struct UnkStruct_203B024 *); +u16 *sub_81147A8(u16 *); void *sub_8114808(void *, void *); -struct UnkStruct_203B024 *sub_8114834(struct UnkStruct_203B024 *); +u16 *sub_8114834(u16 *); void *sub_811488C(void *, void *); -struct UnkStruct_203B024 *sub_81148BC(struct UnkStruct_203B024 *); +u16 *sub_81148BC(u16 *); void *sub_8114918(void *, void *); -struct UnkStruct_203B024 *sub_8114944(struct UnkStruct_203B024 *); +u16 *sub_8114944(u16 *); void *sub_8114990(void *, void *); -struct UnkStruct_203B024 *sub_81149D0(struct UnkStruct_203B024 *); +u16 *sub_81149D0(u16 *); void *sub_8114A1C(void *, void *); -struct UnkStruct_203B024 *sub_8114A4C(struct UnkStruct_203B024 *); +u16 *sub_8114A4C(u16 *); void *sub_8114AA0(void *, void *); -struct UnkStruct_203B024 *sub_8114AC8(struct UnkStruct_203B024 *); +u16 *sub_8114AC8(u16 *); void *sub_8114B0C(void *, void *); -struct UnkStruct_203B024 *sub_8114B34(struct UnkStruct_203B024 *); +u16 *sub_8114B34(u16 *); void *sub_8114B78(void *, void *); -struct UnkStruct_203B024 *sub_8114BA0(struct UnkStruct_203B024 *); +u16 *sub_8114BA0(u16 *); void *sub_8114BE4(void *, void *); -struct UnkStruct_203B024 *sub_8114C0C(struct UnkStruct_203B024 *); +u16 *sub_8114C0C(u16 *); void *sub_8114C68(void *, void *); -struct UnkStruct_203B024 *sub_8114C8C(struct UnkStruct_203B024 *); +u16 *sub_8114C8C(u16 *); void *sub_8114CC0(void *, void *); -struct UnkStruct_203B024 *sub_8114CE4(struct UnkStruct_203B024 *); +u16 *sub_8114CE4(u16 *); void *sub_8114D4C(void *, void *); -struct UnkStruct_203B024 *sub_8114D68(struct UnkStruct_203B024 *); +u16 *sub_8114D68(u16 *); void *sub_8114DE8(void *, void *); -struct UnkStruct_203B024 *sub_8114E68(struct UnkStruct_203B024 *); +u16 *sub_8114E68(u16 *); bool8 sub_8114FBC(u16); void *sub_8114FF0(void *, void *); -struct UnkStruct_203B024 *sub_811500C(struct UnkStruct_203B024 *); +u16 *sub_811500C(u16 *); void *sub_8115078(void *, void *); -struct UnkStruct_203B024 *sub_81150CC(struct UnkStruct_203B024 *); +u16 *sub_81150CC(u16 *); void *sub_81151C0(void *, void *); -struct UnkStruct_203B024 *sub_81151DC(struct UnkStruct_203B024 *); +u16 *sub_81151DC(u16 *); void *sub_8115280(void *, void *); -struct UnkStruct_203B024 *sub_81152BC(struct UnkStruct_203B024 *); +u16 *sub_81152BC(u16 *); void *sub_8115410(void *, void *); -struct UnkStruct_203B024 *sub_8115460(struct UnkStruct_203B024 *); +u16 *sub_8115460(u16 *); void *sub_81154DC(void *, void *); -struct UnkStruct_203B024 *sub_8115518(struct UnkStruct_203B024 *); +u16 *sub_8115518(u16 *); void *sub_81155A4(void *, void *); -struct UnkStruct_203B024 *sub_81155E0(struct UnkStruct_203B024 *); +u16 *sub_81155E0(u16 *); void *sub_81156D8(void *, void *); -struct UnkStruct_203B024 *sub_8115700(struct UnkStruct_203B024 *); +u16 *sub_8115700(u16 *); void *sub_81157DC(void *, void *); -struct UnkStruct_203B024 *sub_8115800(struct UnkStruct_203B024 *); +u16 *sub_8115800(u16 *); bool8 sub_81153A8(u16, void*); bool8 sub_81153E4(u16, void*); @@ -289,7 +289,7 @@ void sub_8110840(void * oldPointer) { ptrdiff_t offset = (void *)gSaveBlock1Ptr - oldPointer; if (gUnknown_203AE04) - gUnknown_203AE04 += offset; + gUnknown_203AE04 = (void *)gUnknown_203AE04 + offset; if (gUnknown_203ADFA != 0) { if (gUnknown_203AE08) @@ -343,7 +343,7 @@ bool8 sub_8110944(void * a0, size_t a1) return TRUE; } -bool8 sub_8110988(struct UnkStruct_203B024 * a0, size_t a1) +bool8 sub_8110988(u16 * a0, size_t a1) { void * r2 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_568; void * r0 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].end; @@ -408,7 +408,7 @@ void sub_8110AEC(u16 a0) sub_81108F0(gUnknown_203ADF8); sub_8113B88(); - gUnknown_203AE08 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_568; + gUnknown_203AE08 = (u16 *)gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_568; if ((a0 >= 12 && a0 < 20) || a0 == 35) gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_000 = 2; else @@ -1033,7 +1033,7 @@ void sub_8111708(void) void sub_811175C(u8 a0, struct UnkStruct_203AE98 * a1) { u16 i; - struct UnkStruct_203B024 *r4; + u16 *r4; u16 r6 = 0; u16 r9 = 0; @@ -1043,10 +1043,10 @@ void sub_811175C(u8 a0, struct UnkStruct_203AE98 * a1) gUnknown_203AE0C[i] = NULL; } - r4 = gSaveBlock1Ptr->questLog[a0].unk_568; + r4 = (u16 *)gSaveBlock1Ptr->questLog[a0].unk_568; for (i = 0; i < 32; i++) { - switch (r4->unk_00 & 0xFFF) + switch (r4[0] & 0xFFF) { case 0: r4 = sub_8113D08(r4, &a1[r6]); @@ -3139,7 +3139,7 @@ bool8 sub_8113A44(u16 a0, u16 *a1) return FALSE; } -struct UnkStruct_203B024 * (*const gUnknown_84569F4[])(struct UnkStruct_203B024 *) = { +u16 * (*const gUnknown_84569F4[])(u16 *) = { NULL, NULL, NULL, @@ -3231,10 +3231,10 @@ const u8 gUnknown_8456AA0[] = { 0x06 }; -void * sub_8113A78(struct UnkStruct_203B024 *a0, struct UnkStruct_203B024 **a1) +u16 * sub_8113A78(u16 * a0, u16 **a1) { - u16 r2 = a0->unk_00 & 0xfff; - u16 r4 = a0->unk_00 >> 12; + u16 r2 = a0[0] & 0xfff; + u16 r4 = a0[0] >> 12; if (r2 == 33) r4 = 0; if (r2 < 3 || r2 > 42) @@ -3243,31 +3243,31 @@ void * sub_8113A78(struct UnkStruct_203B024 *a0, struct UnkStruct_203B024 **a1) return gUnknown_8456AA0[r2] + (gUnknown_8456AA0[r2] - 4) * r4 + (void *)a0; } -void sub_8113ABC(struct UnkStruct_203B024 * a0) +void sub_8113ABC(u16 * a0) { - struct UnkStruct_203B024_Sub1 * r2 = &a0->unk_04.type1; - if ((a0->unk_00 & 0xFFF) != 35) + u8 * r2 = (u8 *)(a0 + 2); + if ((a0[0] & 0xFFF) != 35) gUnknown_203B04A = 0; else - gUnknown_203B04A = r2->unk_01 + 1; + gUnknown_203B04A = r2[1] + 1; } #ifdef NONMATCHING -bool8 sub_8113AE8(struct UnkStruct_203B024 * a0) +bool8 sub_8113AE8(u16 * a0) { - if (a0 == NULL || a0->unk_02 > gUnknown_203AF98) + if (a0 == NULL || a0[1] > gUnknown_203AF98) return FALSE; - gUnknown_84569F4[a0->unk_00 & 0xFFF](a0); - gUnknown_203B044.unk_0 = a0->unk_00; - gUnknown_203B044.unk_1 = (a0->unk_00 & 0xF000) >> 12; + gUnknown_84569F4[a0[0] & 0xFFF](a0); + gUnknown_203B044.unk_0 = a0[0]; + gUnknown_203B044.unk_1 = (a0[0] & 0xF000) >> 12; if (gUnknown_203B044.unk_1 != 0) gUnknown_203B044.unk_2 = 1; return TRUE; } #else NAKED -bool8 sub_8113AE8(struct UnkStruct_203B024 * a0) +bool8 sub_8113AE8(u16 * a0) { asm_unified("\tpush {r4,lr}\n" "\tadds r4, r0, 0\n" @@ -3318,7 +3318,7 @@ bool8 sub_8113AE8(struct UnkStruct_203B024 * a0) } #endif -bool8 sub_8113B44(struct UnkStruct_203B024 * a0) +bool8 sub_8113B44(u16 * a0) { if (gUnknown_203B044.unk_2 == 0) return FALSE; @@ -3354,15 +3354,15 @@ void sub_8113BD8(void) gUnknown_203B04B = 0; } -struct UnkStruct_203B024 * sub_8113BF4(struct UnkStruct_203B024 * a0) +u16 * sub_8113BF4(u16 * a0) { if (!sub_8110988(a0, gUnknown_8456AA0[39])) return NULL; - a0->unk_00 = 39; - return (void *)a0 + 2; + a0[0] = 39; + return a0 + 1; } -struct UnkStruct_203B024 * sub_8113C20(struct UnkStruct_203B024 * a0, struct UnkStruct_203AE98 * a1) +u16 * sub_8113C20(u16 * a0, struct UnkStruct_203AE98 * a1) { if (!sub_8110988(a0, gUnknown_8456AA0[39])) return NULL; @@ -3372,5 +3372,14 @@ struct UnkStruct_203B024 * sub_8113C20(struct UnkStruct_203B024 * a0, struct Unk a1->unk_1 = 0; a1->unk_2 = 0; a1->unk_3 = 0; - return (void *)a0 + 2; + return a0 + 1; +} + +u16 * sub_8113C5C(u16 * a0, u16 a1) +{ + if (!sub_8110988(a0, gUnknown_8456AA0[41])) + return NULL; + a0[0] = 41; + a0[1] = a1; + return a0 + 2; } -- cgit v1.2.3 From 5a85a2273d25222d6504d7b7b4c9c16e9a262f32 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 6 Nov 2018 14:29:43 -0500 Subject: through sub_8113D94 --- src/quest_log.c | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index fe1ca9e18..1d6951485 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -3383,3 +3383,84 @@ u16 * sub_8113C5C(u16 * a0, u16 a1) a0[1] = a1; return a0 + 2; } + +u16 * sub_8113C8C(u16 * a0, struct UnkStruct_203AE98 * a1) +{ + if (!sub_8110988(a0, gUnknown_8456AA0[41])) + return NULL; + a1->unk_6 = 0xFE; + a1->unk_4 = a0[1]; + a1->unk_0 = 0; + a1->unk_1 = 0; + a1->unk_2 = 0; + a1->unk_3 = 0; + return a0 + 2; +} + +u16 * sub_8113CC8(u16 * a0, struct UnkStruct_203AE98 * a1) +{ + u8 * r6 = (u8 *)a0 + 4; + + if (!sub_8110988(a0, gUnknown_8456AA0[0])) + return NULL; + a0[0] = 0; + a0[1] = a1->unk_4; + r6[0] = a1->unk_0; + r6[1] = a1->unk_1; + r6[2] = a1->unk_2; + r6[3] = a1->unk_3; + return (u16 *)(r6 + 4); +} + +u16 * sub_8113D08(u16 * a0, struct UnkStruct_203AE98 * a1) +{ + u8 * r6 = (u8 *)a0 + 4; + + if (!sub_8110988(a0, gUnknown_8456AA0[0])) + return NULL; + a1->unk_6 = 2; + a1->unk_4 = a0[1]; + a1->unk_0 = r6[0]; + a1->unk_1 = r6[1]; + a1->unk_2 = r6[2]; + a1->unk_3 = r6[3]; + return (u16 *)(r6 + 4); +} + +u16 * sub_8113D48(u16 * a0, struct UnkStruct_203AE98 * a1) +{ + u16 * r4 = a0; + u8 * r6 = (u8 *)a0 + 4; + + if (!sub_8110988(r4, gUnknown_8456AA0[2])) + return NULL; + if (a1->unk_6 == 0) + r4[0] = 2; + else + r4[0] = 1; + r4[1] = a1->unk_4; + r6[0] = a1->unk_0; + r6[1] = a1->unk_1; + r6[2] = a1->unk_2; + r6[3] = a1->unk_3; + return (u16 *)(r6 + 4); +} + +u16 * sub_8113D94(u16 * a0, struct UnkStruct_203AE98 * a1) +{ + u16 * r5 = a0; + u8 * r6 = (u8 *)a0 + 4; + + if (!sub_8110988(r5, gUnknown_8456AA0[2])) + return NULL; + if (r5[0] == 2) + a1->unk_6 = 0; + else + a1->unk_6 = 1; + a1->unk_4 = r5[1]; + a1->unk_0 = r6[0]; + a1->unk_1 = r6[1]; + a1->unk_2 = r6[2]; + a1->unk_3 = r6[3]; + return (u16 *)(r6 + 4); +} -- cgit v1.2.3 From 4628859055b05feeebdde69b6852c3b6c88e6afe Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 6 Nov 2018 17:27:11 -0500 Subject: sub_8113DE0 --- src/quest_log.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 1d6951485..6e2767a1e 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -3464,3 +3464,43 @@ u16 * sub_8113D94(u16 * a0, struct UnkStruct_203AE98 * a1) a1->unk_3 = r6[3]; return (u16 *)(r6 + 4); } + +u16 * sub_8113DE0(u16 a0, u16 * a1) +{ + u8 r6; + u16 * r5; + u8 r4; + u8 r1; + + if (gUnknown_203B044.unk_1 == 0) + r6 = gUnknown_8456AA0[a0]; + else + r6 = gUnknown_8456AA0[a0] - 4; + if (!sub_8110944(a1, r6)) + return NULL; + + r5 = (void *)a1; + + if (gUnknown_203B044.unk_1 != 0) + r5 = (void *)r5 - (gUnknown_203B044.unk_1 * r6 + 4); + + if (gUnknown_203B044.unk_1 == 5) + { + for (r4 = 0; r4 < 4; r4++) + { + memcpy( + (void *)r5 + (r4 * r6 + 4), + (void *)r5 + ((r4 + 1) * r6 + 4), + r6 + ); + } + r1 = 4; + } + else + r1 = gUnknown_203B044.unk_1; + + r5[0] = a0 + (r1 << 12); + r5[1] = gUnknown_203AF98; + r5 = (void *)r5 + (r1 * r6 + 4); + return r5; +} -- cgit v1.2.3 From 65b57e5a269c9dd4bdaf82e9cac2b2f5bb82772c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 7 Nov 2018 08:45:08 -0500 Subject: through sub_8113EAC --- src/quest_log.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 6e2767a1e..82b93898e 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -1,5 +1,6 @@ #include "global.h" #include "constants/species.h" +#include "data2.h" #include "malloc.h" #include "main.h" #include "task.h" @@ -9,6 +10,7 @@ #include "menu_helpers.h" #include "window.h" #include "text_window.h" +#include "unk_text_util.h" #include "event_data.h" #include "event_scripts.h" #include "string_util.h" @@ -3504,3 +3506,30 @@ u16 * sub_8113DE0(u16 a0, u16 * a1) r5 = (void *)r5 + (r1 * r6 + 4); return r5; } + +u16 * sub_8113E88(u16 a0, u16 * a1) +{ + a1 = (void *)a1 + (gUnknown_203B044.unk_2 * (gUnknown_8456AA0[a0] - 4) + 4); + return a1; +} + +// TODO: delete this declaration once data_83FECCC.s is decompiled +extern const u8 gText_EggNickname[]; + +void sub_8113EAC(u16 a0, u8 * a1, u8 a2) +{ + if (a1 != NULL) + { + if (a0 != SPECIES_EGG) + GetSpeciesName(a1, a0); + else + StringCopy(a1, gText_EggNickname); + } + else + { + if (a0 != SPECIES_EGG) + UnkTextUtil_SetPtrI(a2, gSpeciesNames[a0]); + else + UnkTextUtil_SetPtrI(a2, gText_EggNickname); + } +} -- cgit v1.2.3 From 325cc10aa762d9a80b95fc4101383a23a7e12f14 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 7 Nov 2018 15:37:00 -0500 Subject: sub_8113F14; make C code compatible with modern cc1 --- src/load_save.c | 8 ++--- src/quest_log.c | 103 +++++++++++++++++++++++++++++++------------------------- src/save.c | 7 +++- 3 files changed, 67 insertions(+), 51 deletions(-) (limited to 'src') diff --git a/src/load_save.c b/src/load_save.c index eba01642c..da55869aa 100644 --- a/src/load_save.c +++ b/src/load_save.c @@ -40,10 +40,10 @@ EWRAM_DATA struct LoadedSaveData gLoadedSaveData = {0}; EWRAM_DATA u32 gLastEncryptionKey = 0; // IWRAM common -IWRAM_DATA bool32 gFlashMemoryPresent; -IWRAM_DATA struct SaveBlock1 *gSaveBlock1Ptr; -IWRAM_DATA struct SaveBlock2 *gSaveBlock2Ptr; -IWRAM_DATA struct PokemonStorage *gPokemonStoragePtr; +bool32 gFlashMemoryPresent; +struct SaveBlock1 *gSaveBlock1Ptr; +struct SaveBlock2 *gSaveBlock2Ptr; +struct PokemonStorage *gPokemonStoragePtr; void CheckForFlashMemory(void) { diff --git a/src/quest_log.c b/src/quest_log.c index 82b93898e..a82d4f0ab 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -170,7 +170,7 @@ void sub_8113524(struct Var4038Struct *); bool8 sub_81136D4(void); bool8 sub_8113778(u16, u16 *); bool8 sub_81137E4(u16, u16 *); -void * sub_8113828(u16, u16 *); +u16 * sub_8113828(u16, u16 *); bool8 sub_81138A0(u16, u16 *); bool8 sub_8113954(u16, u16 *); void sub_8113A1C(u16); @@ -192,82 +192,82 @@ u16 * sub_8113CC8(u16 *, struct UnkStruct_203AE98 *); u16 * sub_8113D08(u16 *, struct UnkStruct_203AE98 *); u16 * sub_8113D48(u16 *, struct UnkStruct_203AE98 *); u16 * sub_8113D94(u16 *, struct UnkStruct_203AE98 *); -void *sub_8113F14(void *, void *); +u16 *sub_8113F14(u16 *, u16 *); u16 *sub_8113F3C(u16 *); -void *sub_8113F80(void *, void *); +u16 *sub_8113F80(u16 *, u16 *); u16 *sub_8113FBC(u16 *); -void *sub_8114174(void *, void *); +u16 *sub_8114174(u16 *, u16 *); u16 *sub_8114188(u16 *); -void *sub_81141D0(void *, void *); +u16 *sub_81141D0(u16 *, u16 *); u16 *sub_81141E4(u16 *); -void *sub_811422C(void *, void *); +u16 *sub_811422C(u16 *, u16 *); u16 *sub_8114240(u16 *); -void *sub_8114288(void *, void *); +u16 *sub_8114288(u16 *, u16 *); u16 *sub_811429C(u16 *); -void *sub_8114310(void *, void *); +u16 *sub_8114310(u16 *, u16 *); u16 *sub_8114324(u16 *); -void *sub_8114380(void *, void *); +u16 *sub_8114380(u16 *, u16 *); u16 *sub_8114394(u16 *); -void *sub_81143F0(void *, void *); +u16 *sub_81143F0(u16 *, u16 *); u16 *sub_811443C(u16 *); -void *sub_811445C(void *, void *); +u16 *sub_811445C(u16 *, u16 *); u16 *sub_811448C(u16 *); -void *sub_81144EC(void *, void *); +u16 *sub_81144EC(u16 *, u16 *); u16 *sub_8114518(u16 *); -void *sub_8114578(void *, void *); +u16 *sub_8114578(u16 *, u16 *); u16 *sub_81145A4(u16 *); -void *sub_8114604(void *, void *); +u16 *sub_8114604(u16 *, u16 *); u16 *sub_811464C(u16 *); -void *sub_8114710(void *, void *); +u16 *sub_8114710(u16 *, u16 *); u16 *sub_8114724(u16 *); -void *sub_8114744(void *, void *); +u16 *sub_8114744(u16 *, u16 *); u16 *sub_8114758(u16 *); -void *sub_8114778(void *, void *); +u16 *sub_8114778(u16 *, u16 *); u16 *sub_81147A8(u16 *); -void *sub_8114808(void *, void *); +u16 *sub_8114808(u16 *, u16 *); u16 *sub_8114834(u16 *); -void *sub_811488C(void *, void *); +u16 *sub_811488C(u16 *, u16 *); u16 *sub_81148BC(u16 *); -void *sub_8114918(void *, void *); +u16 *sub_8114918(u16 *, u16 *); u16 *sub_8114944(u16 *); -void *sub_8114990(void *, void *); +u16 *sub_8114990(u16 *, u16 *); u16 *sub_81149D0(u16 *); -void *sub_8114A1C(void *, void *); +u16 *sub_8114A1C(u16 *, u16 *); u16 *sub_8114A4C(u16 *); -void *sub_8114AA0(void *, void *); +u16 *sub_8114AA0(u16 *, u16 *); u16 *sub_8114AC8(u16 *); -void *sub_8114B0C(void *, void *); +u16 *sub_8114B0C(u16 *, u16 *); u16 *sub_8114B34(u16 *); -void *sub_8114B78(void *, void *); +u16 *sub_8114B78(u16 *, u16 *); u16 *sub_8114BA0(u16 *); -void *sub_8114BE4(void *, void *); +u16 *sub_8114BE4(u16 *, u16 *); u16 *sub_8114C0C(u16 *); -void *sub_8114C68(void *, void *); +u16 *sub_8114C68(u16 *, u16 *); u16 *sub_8114C8C(u16 *); -void *sub_8114CC0(void *, void *); +u16 *sub_8114CC0(u16 *, u16 *); u16 *sub_8114CE4(u16 *); -void *sub_8114D4C(void *, void *); +u16 *sub_8114D4C(u16 *, u16 *); u16 *sub_8114D68(u16 *); -void *sub_8114DE8(void *, void *); +u16 *sub_8114DE8(u16 *, u16 *); u16 *sub_8114E68(u16 *); bool8 sub_8114FBC(u16); -void *sub_8114FF0(void *, void *); +u16 *sub_8114FF0(u16 *, u16 *); u16 *sub_811500C(u16 *); -void *sub_8115078(void *, void *); +u16 *sub_8115078(u16 *, u16 *); u16 *sub_81150CC(u16 *); -void *sub_81151C0(void *, void *); +u16 *sub_81151C0(u16 *, u16 *); u16 *sub_81151DC(u16 *); -void *sub_8115280(void *, void *); +u16 *sub_8115280(u16 *, u16 *); u16 *sub_81152BC(u16 *); -void *sub_8115410(void *, void *); +u16 *sub_8115410(u16 *, u16 *); u16 *sub_8115460(u16 *); -void *sub_81154DC(void *, void *); +u16 *sub_81154DC(u16 *, u16 *); u16 *sub_8115518(u16 *); -void *sub_81155A4(void *, void *); +u16 *sub_81155A4(u16 *, u16 *); u16 *sub_81155E0(u16 *); -void *sub_81156D8(void *, void *); +u16 *sub_81156D8(u16 *, u16 *); u16 *sub_8115700(u16 *); -void *sub_81157DC(void *, void *); +u16 *sub_81157DC(u16 *, u16 *); u16 *sub_8115800(u16 *); bool8 sub_81153A8(u16, void*); bool8 sub_81153E4(u16, void*); @@ -2645,7 +2645,7 @@ u8 sub_8113530(void) return sub_8113114(VAR_0x4038_STRUCT, gUnknown_20370C0); } -void * (*const gUnknown_8456948[])(void *, void *) = { +u16 * (*const gUnknown_8456948[])(u16 *, u16 *) = { NULL, NULL, NULL, @@ -2694,7 +2694,7 @@ void * (*const gUnknown_8456948[])(void *, void *) = { #ifdef NONMATCHING void sub_8113550(u16 a0, u16 * a1) { - void * r1; + u16 * r1; if (a0 == 35 && gUnknown_203B048 == 2) { @@ -3034,7 +3034,7 @@ void sub_811381C(void) gUnknown_203B048 = 0; } -void * sub_8113828(u16 a0, u16 * a1) +u16 * sub_8113828(u16 a0, u16 * a1) { if (sub_8113778(a0, a1) == TRUE) return NULL; @@ -3080,10 +3080,10 @@ void sub_811390C(void) { if (gUnknown_203B024.unk_00 != 0) { - void * resp; + u16 * resp; gUnknown_203B04A = 0; sub_8110AEC(gUnknown_203B024.unk_00); - resp = gUnknown_8456948[gUnknown_203B024.unk_00](gUnknown_203AE08, &gUnknown_203B024.unk_04); + resp = gUnknown_8456948[gUnknown_203B024.unk_00](gUnknown_203AE08, (u16 *)&gUnknown_203B024.unk_04); gUnknown_203AE08 = resp; sub_81138F8(); } @@ -3106,14 +3106,14 @@ void sub_81139BC(void) { if (gUnknown_203B024.unk_00 != 0) { - void * resp; + u16 * resp; if (gUnknown_3005E88 == 0) { gUnknown_203B04A = 0; sub_8110AEC(gUnknown_203B024.unk_00); } sub_8113B94(gUnknown_203B024.unk_00); - resp = gUnknown_8456948[gUnknown_203B024.unk_00](gUnknown_203AE08, &gUnknown_203B024.unk_04); + resp = gUnknown_8456948[gUnknown_203B024.unk_00](gUnknown_203AE08, (u16 *)&gUnknown_203B024.unk_04); gUnknown_203AE08 = resp; sub_8113A1C(1); sub_81138F8(); @@ -3533,3 +3533,14 @@ void sub_8113EAC(u16 a0, u8 * a1, u8 a2) UnkTextUtil_SetPtrI(a2, gText_EggNickname); } } + +u16 * sub_8113F14(u16 * a0, u16 * a1) +{ + u16 * r2 = sub_8113DE0(3, a0); + if (r2 == NULL) + return NULL; + + r2[0] = a1[0]; + r2[1] = a1[1]; + return r2 + 2; +} diff --git a/src/save.c b/src/save.c index 28f6a2896..ef38d8b17 100644 --- a/src/save.c +++ b/src/save.c @@ -614,7 +614,12 @@ u16 CalculateChecksum(void *data, u16 size) u32 checksum = 0; for (i = 0; i < (size / 4); i++) - checksum += *((u32 *)data)++; + { + // checksum += *(u32 *)data++; + // For compatibility with modern gcc, these statements were separated. + checksum += *(u32 *)data; + data += 4; + } return ((checksum >> 16) + checksum); } -- cgit v1.2.3 From 2cc1329cd0433e65614bfd498ac979512aa6866c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 8 Nov 2018 09:44:56 -0500 Subject: sub_8113F3C; disassemble some strings --- src/quest_log.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index a82d4f0ab..b95bc8bd6 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -273,6 +273,7 @@ bool8 sub_81153A8(u16, void*); bool8 sub_81153E4(u16, void*); extern const u8 gUnknown_841A155[]; +extern const u8 gUnknown_841A16F[]; extern const u8 gUnknown_841B073[]; const struct WindowTemplate gUnknown_845661C[3] = { @@ -3544,3 +3545,13 @@ u16 * sub_8113F14(u16 * a0, u16 * a1) r2[1] = a1[1]; return r2 + 2; } + +u16 * sub_8113F3C(u16 * a0) +{ + u16 * r4 = sub_8113E88(3, a0); + sub_8113EAC(r4[0], gStringVar1, 0); + sub_8113EAC(r4[1], gStringVar2, 0); + StringExpandPlaceholders(gStringVar4, gUnknown_841A16F); + r4 += 2; + return r4; +} -- cgit v1.2.3 From 50709682c7b1db4a1fcdfcf8080910bde2f969a1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 8 Nov 2018 11:43:54 -0500 Subject: through sub_8113FBC --- src/quest_log.c | 120 ++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 99 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index b95bc8bd6..8131e1937 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -1,5 +1,6 @@ #include "global.h" #include "constants/species.h" +#include "constants/items.h" #include "data2.h" #include "malloc.h" #include "main.h" @@ -29,6 +30,7 @@ #include "map_name_popup.h" #include "wild_encounter.h" #include "help_system.h" +#include "party_menu.h" #include "unk_8159F40.h" #include "pokemon_storage_system.h" #include "save.h" @@ -275,6 +277,14 @@ bool8 sub_81153E4(u16, void*); extern const u8 gUnknown_841A155[]; extern const u8 gUnknown_841A16F[]; extern const u8 gUnknown_841B073[]; +extern const u8 gUnknown_841AFA6[]; +extern const u8 gUnknown_841A1E7[]; +extern const u8 gUnknown_841A210[]; +extern const u8 gUnknown_841A220[]; +extern const u8 gUnknown_841A965[]; +extern const u8 gUnknown_841A277[]; +extern const u8 gUnknown_841A938[]; +extern const u8 gUnknown_841A255[]; const struct WindowTemplate gUnknown_845661C[3] = { { 0, 0, 0, 30, 2, 15, 0x0e9 }, @@ -2646,7 +2656,7 @@ u8 sub_8113530(void) return sub_8113114(VAR_0x4038_STRUCT, gUnknown_20370C0); } -u16 * (*const gUnknown_8456948[])(u16 *, u16 *) = { +static u16 * (*const sQuestLogStorageCBs[])(u16 *, u16 *) = { NULL, NULL, NULL, @@ -2752,18 +2762,18 @@ void sub_8113550(u16 a0, u16 * a1) if (gUnknown_203AE04 == NULL) { gUnknown_203AE04 = gUnknown_203AE08; - r1 = gUnknown_8456948[a0](gUnknown_203AE04, a1); + r1 = sQuestLogStorageCBs[a0](gUnknown_203AE04, a1); } else { - gUnknown_8456948[a0](gUnknown_203AE04, a1); + sQuestLogStorageCBs[a0](gUnknown_203AE04, a1); return; } } else { gUnknown_203AE04 = NULL; - r1 = gUnknown_8456948[a0](gUnknown_203AE08, a1); + r1 = sQuestLogStorageCBs[a0](gUnknown_203AE08, a1); } if (r1 == NULL) @@ -2905,27 +2915,27 @@ void sub_8113550(u16 a0, u16 * a1) "\tldr r0, _08113660 @ =gUnknown_203AE08\n" "\tldr r0, [r0]\n" "\tstr r0, [r2]\n" - "\tldr r1, _08113664 @ =gUnknown_8456948\n" + "\tldr r1, _08113664 @ =sQuestLogStorageCBs\n" "\tldr r2, [r1, 0x7C]\n" "\tb _0811368E\n" "\t.align 2, 0\n" "_0811365C: .4byte gUnknown_203AE04\n" "_08113660: .4byte gUnknown_203AE08\n" - "_08113664: .4byte gUnknown_8456948\n" + "_08113664: .4byte sQuestLogStorageCBs\n" "_08113668:\n" - "\tldr r0, _08113678 @ =gUnknown_8456948\n" + "\tldr r0, _08113678 @ =sQuestLogStorageCBs\n" "\tldr r2, [r0, 0x7C]\n" "\tadds r0, r1, 0\n" "\tadds r1, r5, 0\n" "\tbl _call_via_r2\n" "\tb ._return\n" "\t.align 2, 0\n" - "_08113678: .4byte gUnknown_8456948\n" + "_08113678: .4byte sQuestLogStorageCBs\n" "_0811367C:\n" "\tldr r1, _081136C4 @ =gUnknown_203AE04\n" "\tmovs r0, 0\n" "\tstr r0, [r1]\n" - "\tldr r0, _081136C8 @ =gUnknown_8456948\n" + "\tldr r0, _081136C8 @ =sQuestLogStorageCBs\n" "\tlsls r1, r4, 2\n" "\tadds r1, r0\n" "\tldr r0, _081136CC @ =gUnknown_203AE08\n" @@ -2958,7 +2968,7 @@ void sub_8113550(u16 a0, u16 * a1) "\tbx r0\n" "\t.align 2, 0\n" "_081136C4: .4byte gUnknown_203AE04\n" - "_081136C8: .4byte gUnknown_8456948\n" + "_081136C8: .4byte sQuestLogStorageCBs\n" "_081136CC: .4byte gUnknown_203AE08\n" "_081136D0: .4byte gUnknown_203B048"); } @@ -3051,7 +3061,7 @@ u16 * sub_8113828(u16 a0, u16 * a1) else gUnknown_203AE04 = NULL; - return gUnknown_8456948[a0](gUnknown_203AE08, a1); + return sQuestLogStorageCBs[a0](gUnknown_203AE08, a1); } bool8 sub_81138A0(u16 a0, u16 * a1) @@ -3084,7 +3094,7 @@ void sub_811390C(void) u16 * resp; gUnknown_203B04A = 0; sub_8110AEC(gUnknown_203B024.unk_00); - resp = gUnknown_8456948[gUnknown_203B024.unk_00](gUnknown_203AE08, (u16 *)&gUnknown_203B024.unk_04); + resp = sQuestLogStorageCBs[gUnknown_203B024.unk_00](gUnknown_203AE08, (u16 *)&gUnknown_203B024.unk_04); gUnknown_203AE08 = resp; sub_81138F8(); } @@ -3114,7 +3124,7 @@ void sub_81139BC(void) sub_8110AEC(gUnknown_203B024.unk_00); } sub_8113B94(gUnknown_203B024.unk_00); - resp = gUnknown_8456948[gUnknown_203B024.unk_00](gUnknown_203AE08, (u16 *)&gUnknown_203B024.unk_04); + resp = sQuestLogStorageCBs[gUnknown_203B024.unk_00](gUnknown_203AE08, (u16 *)&gUnknown_203B024.unk_04); gUnknown_203AE08 = resp; sub_8113A1C(1); sub_81138F8(); @@ -3142,7 +3152,7 @@ bool8 sub_8113A44(u16 a0, u16 *a1) return FALSE; } -u16 * (*const gUnknown_84569F4[])(u16 *) = { +static u16 * (*const sQuestLogScriptParsingCBs[])(u16 *) = { NULL, NULL, NULL, @@ -3261,7 +3271,7 @@ bool8 sub_8113AE8(u16 * a0) if (a0 == NULL || a0[1] > gUnknown_203AF98) return FALSE; - gUnknown_84569F4[a0[0] & 0xFFF](a0); + sQuestLogScriptParsingCBs[a0[0] & 0xFFF](a0); gUnknown_203B044.unk_0 = a0[0]; gUnknown_203B044.unk_1 = (a0[0] & 0xF000) >> 12; if (gUnknown_203B044.unk_1 != 0) @@ -3287,7 +3297,7 @@ bool8 sub_8113AE8(u16 * a0) "\t.align 2, 0\n" "_08113B00: .4byte gUnknown_203AF98\n" "_08113B04:\n" - "\tldr r2, _08113B38 @ =gUnknown_84569F4\n" + "\tldr r2, _08113B38 @ =sQuestLogScriptParsingCBs\n" "\tldrh r1, [r4]\n" "\tldr r0, _08113B3C @ =0x00000fff\n" "\tands r0, r1\n" @@ -3315,7 +3325,7 @@ bool8 sub_8113AE8(u16 * a0) "\tpop {r1}\n" "\tbx r1\n" "\t.align 2, 0\n" - "_08113B38: .4byte gUnknown_84569F4\n" + "_08113B38: .4byte sQuestLogScriptParsingCBs\n" "_08113B3C: .4byte 0x00000fff\n" "_08113B40: .4byte gUnknown_203B044"); } @@ -3326,7 +3336,7 @@ bool8 sub_8113B44(u16 * a0) if (gUnknown_203B044.unk_2 == 0) return FALSE; - gUnknown_84569F4[gUnknown_203B044.unk_0](a0); + sQuestLogScriptParsingCBs[gUnknown_203B044.unk_0](a0); gUnknown_203B044.unk_2++; if (gUnknown_203B044.unk_2 > gUnknown_203B044.unk_1) sub_8113B88(); @@ -3517,7 +3527,7 @@ u16 * sub_8113E88(u16 a0, u16 * a1) // TODO: delete this declaration once data_83FECCC.s is decompiled extern const u8 gText_EggNickname[]; -void sub_8113EAC(u16 a0, u8 * a1, u8 a2) +void QuestLog_AutoGetSpeciesname(u16 a0, u8 * a1, u8 a2) { if (a1 != NULL) { @@ -3549,9 +3559,77 @@ u16 * sub_8113F14(u16 * a0, u16 * a1) u16 * sub_8113F3C(u16 * a0) { u16 * r4 = sub_8113E88(3, a0); - sub_8113EAC(r4[0], gStringVar1, 0); - sub_8113EAC(r4[1], gStringVar2, 0); + QuestLog_AutoGetSpeciesname(r4[0], gStringVar1, 0); + QuestLog_AutoGetSpeciesname(r4[1], gStringVar2, 0); StringExpandPlaceholders(gStringVar4, gUnknown_841A16F); r4 += 2; return r4; } + +u16 * sub_8113F80(u16 * a0, u16 * a1) +{ + u16 * r2 = sub_8113DE0(4, a0); + if (r2 == NULL) + return NULL; + + r2[0] = a1[0]; + r2[1] = a1[2]; + r2[2] = a1[3]; + + if (a1[0] == ITEM_ESCAPE_ROPE) + gUnknown_203B048 = 2; + + return r2 + 3; +} + +u16 * sub_8113FBC(u16 * a0) +{ + u16 * r5 = sub_8113E88(4, a0); + + switch (ItemId_GetPocket(r5[0])) + { + case POCKET_ITEMS: + case POCKET_POKE_BALLS: + case POCKET_BERRY_POUCH: + StringCopy(gStringVar1, ItemId_GetItem(r5[0])->name); + if (r5[0] == ITEM_ESCAPE_ROPE) + { + sub_80C4DF8(gStringVar2, r5[2]); + StringExpandPlaceholders(gStringVar4, gUnknown_841AFA6); + } + else if (r5[1] != 0xFFFF) + { + QuestLog_AutoGetSpeciesname(r5[1], gStringVar2, 0); + StringExpandPlaceholders(gStringVar4, gUnknown_841A1E7); + } + else + { + StringExpandPlaceholders(gStringVar4, gUnknown_841A210); + } + break; + case POCKET_KEY_ITEMS: + StringCopy(gStringVar1, ItemId_GetItem(r5[0])->name); + StringExpandPlaceholders(gStringVar4, gUnknown_841A220); + break; + case POCKET_TM_CASE: + QuestLog_AutoGetSpeciesname(r5[1], gStringVar1, 0); + StringCopy(gStringVar2, gMoveNames[ItemIdToBattleMoveId(r5[0])]); + if (r5[2] != 0xFFFF) + { + StringCopy(gStringVar3, gMoveNames[r5[2]]); + if (r5[0] > ITEM_TM50) + StringExpandPlaceholders(gStringVar4, gUnknown_841A965); + else + StringExpandPlaceholders(gStringVar4, gUnknown_841A277); + } + else + { + if (r5[0] > ITEM_TM50) + StringExpandPlaceholders(gStringVar4, gUnknown_841A938); + else + StringExpandPlaceholders(gStringVar4, gUnknown_841A255); + } + break; + } + return r5 + 3; +} -- cgit v1.2.3 From 3e418d7a7be44631f33d4e05bc54c495aa181ecb Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 8 Nov 2018 14:20:36 -0500 Subject: Finish disming quest_log strings --- src/quest_log.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 8131e1937..1b37e074c 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -3527,7 +3527,7 @@ u16 * sub_8113E88(u16 a0, u16 * a1) // TODO: delete this declaration once data_83FECCC.s is decompiled extern const u8 gText_EggNickname[]; -void QuestLog_AutoGetSpeciesname(u16 a0, u8 * a1, u8 a2) +void QuestLog_AutoGetSpeciesName(u16 a0, u8 * a1, u8 a2) { if (a1 != NULL) { @@ -3559,8 +3559,8 @@ u16 * sub_8113F14(u16 * a0, u16 * a1) u16 * sub_8113F3C(u16 * a0) { u16 * r4 = sub_8113E88(3, a0); - QuestLog_AutoGetSpeciesname(r4[0], gStringVar1, 0); - QuestLog_AutoGetSpeciesname(r4[1], gStringVar2, 0); + QuestLog_AutoGetSpeciesName(r4[0], gStringVar1, 0); + QuestLog_AutoGetSpeciesName(r4[1], gStringVar2, 0); StringExpandPlaceholders(gStringVar4, gUnknown_841A16F); r4 += 2; return r4; @@ -3599,7 +3599,7 @@ u16 * sub_8113FBC(u16 * a0) } else if (r5[1] != 0xFFFF) { - QuestLog_AutoGetSpeciesname(r5[1], gStringVar2, 0); + QuestLog_AutoGetSpeciesName(r5[1], gStringVar2, 0); StringExpandPlaceholders(gStringVar4, gUnknown_841A1E7); } else @@ -3612,7 +3612,7 @@ u16 * sub_8113FBC(u16 * a0) StringExpandPlaceholders(gStringVar4, gUnknown_841A220); break; case POCKET_TM_CASE: - QuestLog_AutoGetSpeciesname(r5[1], gStringVar1, 0); + QuestLog_AutoGetSpeciesName(r5[1], gStringVar1, 0); StringCopy(gStringVar2, gMoveNames[ItemIdToBattleMoveId(r5[0])]); if (r5[2] != 0xFFFF) { -- cgit v1.2.3 From 10900139e3731cf76ec94c96fa90f8355f3162b3 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 8 Nov 2018 15:23:15 -0500 Subject: through sub_8114324 --- src/quest_log.c | 225 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 221 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 1b37e074c..68678c6e5 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -276,15 +276,130 @@ bool8 sub_81153E4(u16, void*); extern const u8 gUnknown_841A155[]; extern const u8 gUnknown_841A16F[]; -extern const u8 gUnknown_841B073[]; -extern const u8 gUnknown_841AFA6[]; +extern const u8 gUnknown_841A193[]; +extern const u8 gUnknown_841A1CD[]; extern const u8 gUnknown_841A1E7[]; extern const u8 gUnknown_841A210[]; extern const u8 gUnknown_841A220[]; -extern const u8 gUnknown_841A965[]; +extern const u8 gUnknown_841A255[]; extern const u8 gUnknown_841A277[]; +extern const u8 gUnknown_841A2B0[]; +extern const u8 gUnknown_841A2E1[]; +extern const u8 gUnknown_841A312[]; +extern const u8 gUnknown_841A349[]; +extern const u8 gUnknown_841A391[]; +extern const u8 gUnknown_841A3DA[]; +extern const u8 gUnknown_841A3FF[]; +extern const u8 gUnknown_841A422[]; +extern const u8 gUnknown_841A477[]; +extern const u8 gUnknown_841A4C6[]; +extern const u8 gUnknown_841A502[]; +extern const u8 gUnknown_841A506[]; +extern const u8 gUnknown_841A50B[]; +extern const u8 gUnknown_841A53A[]; +extern const u8 gUnknown_841A566[]; +extern const u8 gUnknown_841A59C[]; +extern const u8 gUnknown_841A5D9[]; +extern const u8 gUnknown_841A5FA[]; +extern const u8 gUnknown_841A60A[]; +extern const u8 gUnknown_841A632[]; +extern const u8 gUnknown_841A64F[]; +extern const u8 gUnknown_841A66E[]; +extern const u8 gUnknown_841A694[]; +extern const u8 gUnknown_841A6A5[]; +extern const u8 gUnknown_841A6E1[]; +extern const u8 gUnknown_841A732[]; +extern const u8 gUnknown_841A74E[]; +extern const u8 gUnknown_841A756[]; +extern const u8 gUnknown_841A762[]; +extern const u8 gUnknown_841A76A[]; +extern const u8 gUnknown_841A7B0[]; +extern const u8 gUnknown_841A7DD[]; +extern const u8 gUnknown_841A810[]; +extern const u8 gUnknown_841A858[]; +extern const u8 gUnknown_841A896[]; +extern const u8 gUnknown_841A8D4[]; +extern const u8 gUnknown_841A8DD[]; +extern const u8 gUnknown_841A8E0[]; +extern const u8 gUnknown_841A90C[]; extern const u8 gUnknown_841A938[]; -extern const u8 gUnknown_841A255[]; +extern const u8 gUnknown_841A965[]; +extern const u8 gUnknown_841A9A9[]; +extern const u8 gUnknown_841A9D4[]; +extern const u8 gUnknown_841AA01[]; +extern const u8 gUnknown_841AA2B[]; +extern const u8 gUnknown_841AA76[]; +extern const u8 gUnknown_841AAAA[]; +extern const u8 gUnknown_841AAEC[]; +extern const u8 gUnknown_841AB29[]; +extern const u8 gUnknown_841AB74[]; +extern const u8 gUnknown_841AB8E[]; +extern const u8 gUnknown_841ABAB[]; +extern const u8 gUnknown_841ABCD[]; +extern const u8 gUnknown_841ABF9[]; +extern const u8 gUnknown_841AC2A[]; +extern const u8 gUnknown_841AC51[]; +extern const u8 gUnknown_841AC93[]; +extern const u8 gUnknown_841ACBC[]; +extern const u8 gUnknown_841ACF9[]; +extern const u8 gUnknown_841AD1D[]; +extern const u8 gUnknown_841AD3C[]; +extern const u8 gUnknown_841AD69[]; +extern const u8 gUnknown_841AD9E[]; +extern const u8 gUnknown_841ADC8[]; +extern const u8 gUnknown_841ADFF[]; +extern const u8 gUnknown_841AE1E[]; +extern const u8 gUnknown_841AE48[]; +extern const u8 gUnknown_841AE8F[]; +extern const u8 gUnknown_841AEA7[]; +extern const u8 gUnknown_841AEDC[]; +extern const u8 gUnknown_841AF0C[]; +extern const u8 gUnknown_841AF3E[]; +extern const u8 gUnknown_841AF6D[]; +extern const u8 gUnknown_841AF98[]; +extern const u8 gUnknown_841AF9F[]; +extern const u8 gUnknown_841AFA6[]; +extern const u8 gUnknown_841AFD1[]; +extern const u8 gUnknown_841AFD6[]; +extern const u8 gUnknown_841B005[]; +extern const u8 gUnknown_841B03F[]; +extern const u8 gUnknown_841B064[]; +extern const u8 gUnknown_841B073[]; +extern const u8 gUnknown_841B09F[]; +extern const u8 gUnknown_841B0A4[]; +extern const u8 gUnknown_841B0B5[]; +extern const u8 gUnknown_841B0B9[]; +extern const u8 gUnknown_841B0CD[]; +extern const u8 gUnknown_841B0DD[]; +extern const u8 gUnknown_841B0F6[]; +extern const u8 gUnknown_841B0FF[]; +extern const u8 gUnknown_841B109[]; +extern const u8 gUnknown_841B116[]; +extern const u8 gUnknown_841B11F[]; +extern const u8 gUnknown_841B130[]; +extern const u8 gUnknown_841B141[]; +extern const u8 gUnknown_841B14B[]; +extern const u8 gUnknown_841B15A[]; +extern const u8 gUnknown_841B166[]; +extern const u8 gUnknown_841B172[]; +extern const u8 gUnknown_841B180[]; +extern const u8 gUnknown_841B190[]; +extern const u8 gUnknown_841B1A3[]; +extern const u8 gUnknown_841B1B7[]; +extern const u8 gUnknown_841B1C7[]; +extern const u8 gUnknown_841B1DA[]; +extern const u8 gUnknown_841B1E5[]; +extern const u8 gUnknown_841B1F4[]; +extern const u8 gUnknown_841B200[]; +extern const u8 gUnknown_841B20E[]; +extern const u8 gUnknown_841B21C[]; +extern const u8 gUnknown_841B226[]; +extern const u8 gUnknown_841B236[]; +extern const u8 gUnknown_841B246[]; +extern const u8 gUnknown_841B25B[]; +extern const u8 gUnknown_841B268[]; +extern const u8 gUnknown_841B277[]; + const struct WindowTemplate gUnknown_845661C[3] = { { 0, 0, 0, 30, 2, 15, 0x0e9 }, @@ -3633,3 +3748,105 @@ u16 * sub_8113FBC(u16 * a0) } return r5 + 3; } + +u16 * sub_811414C(u16 a0, u16 * a1, u16 * a2) +{ + u16 * r1 = sub_8113DE0(a0, a1); + if (r1 == NULL) + return NULL; + + r1[0] = a2[0]; + r1[1] = a2[2]; + return r1 + 2; +} + +u16 * sub_8114174(u16 * a0, u16 * a1) +{ + return sub_811414C(5, a0, a1); +} + +u16 * sub_8114188(u16 * a0) +{ + u16 * r4 = sub_8113E88(5, a0); + QuestLog_AutoGetSpeciesName(r4[1], gStringVar1, 0); + StringCopy(gStringVar2, ItemId_GetItem(r4[0])->name); + StringExpandPlaceholders(gStringVar4, gUnknown_841AB74); + r4 += 2; + return r4; +} + +u16 * sub_81141D0(u16 * a0, u16 * a1) +{ + return sub_811414C(6, a0, a1); +} + +u16 * sub_81141E4(u16 * a0) +{ + u16 * r4 = sub_8113E88(6, a0); + + QuestLog_AutoGetSpeciesName(r4[1], gStringVar1, 0); + StringCopy(gStringVar2, ItemId_GetItem(r4[0])->name); + StringExpandPlaceholders(gStringVar4, gUnknown_841AB8E); + r4 += 2; + return r4; +} + +u16 * sub_811422C(u16 * a0, u16 * a1) +{ + return sub_811414C(7, a0, a1); +} + +u16 * sub_8114240(u16 * a0) +{ + u16 * r4 = sub_8113E88(7, a0); + + QuestLog_AutoGetSpeciesName(r4[1], gStringVar2, 0); + StringCopy(gStringVar1, ItemId_GetItem(r4[0])->name); + StringExpandPlaceholders(gStringVar4, gUnknown_841A6A5); + r4 += 2; + return r4; +} + +u16 * sub_8114288(u16 * a0, u16 * a1) +{ + return sub_811414C(8, a0, a1); +} + +u16 * sub_811429C(u16 * a0) +{ + u16 * r4 = sub_8113E88(8, a0); + + QuestLog_AutoGetSpeciesName(r4[1], gStringVar1, 0); + StringCopy(gStringVar2, ItemId_GetItem(r4[0])->name); + StringExpandPlaceholders(gStringVar4, gUnknown_841A1CD); + r4 += 2; + return r4; +} + +u16 * sub_81142E4(u16 a0, u16 * a1, u16 * a2) +{ + u16 * r1 = sub_8113DE0(a0, a1); + if (r1 == NULL) + return NULL; + + r1[0] = a2[0]; + r1[1] = a2[1]; + r1[2] = a2[2]; + return r1 + 3; +} + +u16 * sub_8114310(u16 * a0, u16 * a1) +{ + return sub_81142E4(9, a0, a1); +} + +u16 * sub_8114324(u16 * a0) +{ + u16 * r4 = sub_8113E88(9, a0); + QuestLog_AutoGetSpeciesName(r4[2], gStringVar1, 0); + StringCopy(gStringVar2, ItemId_GetItem(r4[0])->name); + StringCopy(gStringVar3, ItemId_GetItem(r4[1])->name); + StringExpandPlaceholders(gStringVar4, gUnknown_841A193); + r4 += 3; + return r4; +} -- cgit v1.2.3 From 3e638ddb4bd45f991ffed10e3103dee6560cccdf Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 8 Nov 2018 16:38:49 -0500 Subject: through sub_8114518 --- src/quest_log.c | 317 +++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 213 insertions(+), 104 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 68678c6e5..57e5ac0b9 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -194,83 +194,84 @@ u16 * sub_8113CC8(u16 *, struct UnkStruct_203AE98 *); u16 * sub_8113D08(u16 *, struct UnkStruct_203AE98 *); u16 * sub_8113D48(u16 *, struct UnkStruct_203AE98 *); u16 * sub_8113D94(u16 *, struct UnkStruct_203AE98 *); -u16 *sub_8113F14(u16 *, u16 *); -u16 *sub_8113F3C(u16 *); -u16 *sub_8113F80(u16 *, u16 *); -u16 *sub_8113FBC(u16 *); -u16 *sub_8114174(u16 *, u16 *); -u16 *sub_8114188(u16 *); -u16 *sub_81141D0(u16 *, u16 *); -u16 *sub_81141E4(u16 *); -u16 *sub_811422C(u16 *, u16 *); -u16 *sub_8114240(u16 *); -u16 *sub_8114288(u16 *, u16 *); -u16 *sub_811429C(u16 *); -u16 *sub_8114310(u16 *, u16 *); -u16 *sub_8114324(u16 *); -u16 *sub_8114380(u16 *, u16 *); -u16 *sub_8114394(u16 *); -u16 *sub_81143F0(u16 *, u16 *); -u16 *sub_811443C(u16 *); -u16 *sub_811445C(u16 *, u16 *); -u16 *sub_811448C(u16 *); -u16 *sub_81144EC(u16 *, u16 *); -u16 *sub_8114518(u16 *); -u16 *sub_8114578(u16 *, u16 *); -u16 *sub_81145A4(u16 *); -u16 *sub_8114604(u16 *, u16 *); -u16 *sub_811464C(u16 *); -u16 *sub_8114710(u16 *, u16 *); -u16 *sub_8114724(u16 *); -u16 *sub_8114744(u16 *, u16 *); -u16 *sub_8114758(u16 *); -u16 *sub_8114778(u16 *, u16 *); -u16 *sub_81147A8(u16 *); -u16 *sub_8114808(u16 *, u16 *); -u16 *sub_8114834(u16 *); -u16 *sub_811488C(u16 *, u16 *); -u16 *sub_81148BC(u16 *); -u16 *sub_8114918(u16 *, u16 *); -u16 *sub_8114944(u16 *); -u16 *sub_8114990(u16 *, u16 *); -u16 *sub_81149D0(u16 *); -u16 *sub_8114A1C(u16 *, u16 *); -u16 *sub_8114A4C(u16 *); -u16 *sub_8114AA0(u16 *, u16 *); -u16 *sub_8114AC8(u16 *); -u16 *sub_8114B0C(u16 *, u16 *); -u16 *sub_8114B34(u16 *); -u16 *sub_8114B78(u16 *, u16 *); -u16 *sub_8114BA0(u16 *); -u16 *sub_8114BE4(u16 *, u16 *); -u16 *sub_8114C0C(u16 *); -u16 *sub_8114C68(u16 *, u16 *); -u16 *sub_8114C8C(u16 *); -u16 *sub_8114CC0(u16 *, u16 *); -u16 *sub_8114CE4(u16 *); -u16 *sub_8114D4C(u16 *, u16 *); -u16 *sub_8114D68(u16 *); -u16 *sub_8114DE8(u16 *, u16 *); -u16 *sub_8114E68(u16 *); +u16 * sub_8113F14(u16 *, const u16 *); +const u16 * sub_8113F3C(const u16 *); +u16 * sub_8113F80(u16 *, const u16 *); +const u16 * sub_8113FBC(const u16 *); +u16 * sub_8114174(u16 *, const u16 *); +const u16 * sub_8114188(const u16 *); +u16 * sub_81141D0(u16 *, const u16 *); +const u16 * sub_81141E4(const u16 *); +u16 * sub_811422C(u16 *, const u16 *); +const u16 * sub_8114240(const u16 *); +u16 * sub_8114288(u16 *, const u16 *); +const u16 * sub_811429C(const u16 *); +u16 * sub_8114310(u16 *, const u16 *); +const u16 * sub_8114324(const u16 *); +u16 * sub_8114380(u16 *, const u16 *); +const u16 * sub_8114394(const u16 *); +u16 * sub_81143F0(u16 *, const u16 *); +const u16 * sub_811443C(const u16 *); +u16 * sub_811445C(u16 *, const u16 *); +const u16 * sub_811448C(const u16 *); +u16 * sub_81144EC(u16 *, const u16 *); +const u16 * sub_8114518(const u16 *); +u16 * sub_8114578(u16 *, const u16 *); +const u16 * sub_81145A4(const u16 *); +u16 * sub_8114604(u16 *, const u16 *); +const u16 * sub_811464C(const u16 *); +u16 * sub_8114710(u16 *, const u16 *); +const u16 * sub_8114724(const u16 *); +u16 * sub_8114744(u16 *, const u16 *); +const u16 * sub_8114758(const u16 *); +u16 * sub_8114778(u16 *, const u16 *); +const u16 * sub_81147A8(const u16 *); +u16 * sub_8114808(u16 *, const u16 *); +const u16 * sub_8114834(const u16 *); +u16 * sub_811488C(u16 *, const u16 *); +const u16 * sub_81148BC(const u16 *); +u16 * sub_8114918(u16 *, const u16 *); +const u16 * sub_8114944(const u16 *); +u16 * sub_8114990(u16 *, const u16 *); +const u16 * sub_81149D0(const u16 *); +u16 * sub_8114A1C(u16 *, const u16 *); +const u16 * sub_8114A4C(const u16 *); +u16 * sub_8114AA0(u16 *, const u16 *); +const u16 * sub_8114AC8(const u16 *); +u16 * sub_8114B0C(u16 *, const u16 *); +const u16 * sub_8114B34(const u16 *); +u16 * sub_8114B78(u16 *, const u16 *); +const u16 * sub_8114BA0(const u16 *); +u16 * sub_8114BE4(u16 *, const u16 *); +const u16 * sub_8114C0C(const u16 *); +u16 * sub_8114C68(u16 *, const u16 *); +const u16 * sub_8114C8C(const u16 *); +u16 * sub_8114CC0(u16 *, const u16 *); +const u16 * sub_8114CE4(const u16 *); +u16 * sub_8114D4C(u16 *, const u16 *); +const u16 * sub_8114D68(const u16 *); +u16 * sub_8114DE8(u16 *, const u16 *); +const u16 * sub_8114E68(const u16 *); bool8 sub_8114FBC(u16); -u16 *sub_8114FF0(u16 *, u16 *); -u16 *sub_811500C(u16 *); -u16 *sub_8115078(u16 *, u16 *); -u16 *sub_81150CC(u16 *); -u16 *sub_81151C0(u16 *, u16 *); -u16 *sub_81151DC(u16 *); -u16 *sub_8115280(u16 *, u16 *); -u16 *sub_81152BC(u16 *); -u16 *sub_8115410(u16 *, u16 *); -u16 *sub_8115460(u16 *); -u16 *sub_81154DC(u16 *, u16 *); -u16 *sub_8115518(u16 *); -u16 *sub_81155A4(u16 *, u16 *); -u16 *sub_81155E0(u16 *); -u16 *sub_81156D8(u16 *, u16 *); -u16 *sub_8115700(u16 *); -u16 *sub_81157DC(u16 *, u16 *); -u16 *sub_8115800(u16 *); +u16 * sub_8114FF0(u16 *, const u16 *); +const u16 * sub_811500C(const u16 *); +u16 * sub_8115078(u16 *, const u16 *); +const u16 * sub_81150CC(const u16 *); +u16 * sub_81151C0(u16 *, const u16 *); +const u16 * sub_81151DC(const u16 *); +u16 * sub_8115280(u16 *, const u16 *); +const u16 * sub_81152BC(const u16 *); +u16 * sub_8115410(u16 *, const u16 *); +const u16 * sub_8115460(const u16 *); +u16 * sub_81154DC(u16 *, const u16 *); +const u16 * sub_8115518(const u16 *); +u16 * sub_81155A4(u16 *, const u16 *); +const u16 * sub_81155E0(const u16 *); +u16 * sub_81156D8(u16 *, const u16 *); +const u16 * sub_8115700(const u16 *); +u16 * sub_81157DC(u16 *, const u16 *); +const u16 * sub_8115800(const u16 *); +void sub_8115834(u8 *); bool8 sub_81153A8(u16, void*); bool8 sub_81153E4(u16, void*); @@ -2771,7 +2772,7 @@ u8 sub_8113530(void) return sub_8113114(VAR_0x4038_STRUCT, gUnknown_20370C0); } -static u16 * (*const sQuestLogStorageCBs[])(u16 *, u16 *) = { +static u16 * (*const sQuestLogStorageCBs[])(u16 *, const u16 *) = { NULL, NULL, NULL, @@ -2905,7 +2906,7 @@ void sub_8113550(u16 a0, u16 * a1) } #else NAKED -void sub_8113550(u16 a0, u16 * a1) +void sub_8113550(u16 a0, const u16 * a1) { asm_unified("\tpush {r4,r5,lr}\n" "\tadds r5, r1, 0\n" @@ -3267,7 +3268,7 @@ bool8 sub_8113A44(u16 a0, u16 *a1) return FALSE; } -static u16 * (*const sQuestLogScriptParsingCBs[])(u16 *) = { +static const u16 * (*const sQuestLogScriptParsingCBs[])(const u16 *) = { NULL, NULL, NULL, @@ -3633,9 +3634,9 @@ u16 * sub_8113DE0(u16 a0, u16 * a1) return r5; } -u16 * sub_8113E88(u16 a0, u16 * a1) +const u16 * sub_8113E88(u16 a0, const u16 * a1) { - a1 = (void *)a1 + (gUnknown_203B044.unk_2 * (gUnknown_8456AA0[a0] - 4) + 4); + a1 = (const void *)a1 + (gUnknown_203B044.unk_2 * (gUnknown_8456AA0[a0] - 4) + 4); return a1; } @@ -3660,7 +3661,7 @@ void QuestLog_AutoGetSpeciesName(u16 a0, u8 * a1, u8 a2) } } -u16 * sub_8113F14(u16 * a0, u16 * a1) +u16 * sub_8113F14(u16 * a0, const u16 * a1) { u16 * r2 = sub_8113DE0(3, a0); if (r2 == NULL) @@ -3671,9 +3672,9 @@ u16 * sub_8113F14(u16 * a0, u16 * a1) return r2 + 2; } -u16 * sub_8113F3C(u16 * a0) +const u16 * sub_8113F3C(const u16 * a0) { - u16 * r4 = sub_8113E88(3, a0); + const u16 * r4 = sub_8113E88(3, a0); QuestLog_AutoGetSpeciesName(r4[0], gStringVar1, 0); QuestLog_AutoGetSpeciesName(r4[1], gStringVar2, 0); StringExpandPlaceholders(gStringVar4, gUnknown_841A16F); @@ -3681,7 +3682,7 @@ u16 * sub_8113F3C(u16 * a0) return r4; } -u16 * sub_8113F80(u16 * a0, u16 * a1) +u16 * sub_8113F80(u16 * a0, const u16 * a1) { u16 * r2 = sub_8113DE0(4, a0); if (r2 == NULL) @@ -3697,9 +3698,9 @@ u16 * sub_8113F80(u16 * a0, u16 * a1) return r2 + 3; } -u16 * sub_8113FBC(u16 * a0) +const u16 * sub_8113FBC(const u16 * a0) { - u16 * r5 = sub_8113E88(4, a0); + const u16 * r5 = sub_8113E88(4, a0); switch (ItemId_GetPocket(r5[0])) { @@ -3749,7 +3750,7 @@ u16 * sub_8113FBC(u16 * a0) return r5 + 3; } -u16 * sub_811414C(u16 a0, u16 * a1, u16 * a2) +u16 * sub_811414C(u16 a0, u16 * a1, const u16 * a2) { u16 * r1 = sub_8113DE0(a0, a1); if (r1 == NULL) @@ -3760,14 +3761,14 @@ u16 * sub_811414C(u16 a0, u16 * a1, u16 * a2) return r1 + 2; } -u16 * sub_8114174(u16 * a0, u16 * a1) +u16 * sub_8114174(u16 * a0, const u16 * a1) { return sub_811414C(5, a0, a1); } -u16 * sub_8114188(u16 * a0) +const u16 * sub_8114188(const u16 * a0) { - u16 * r4 = sub_8113E88(5, a0); + const u16 * r4 = sub_8113E88(5, a0); QuestLog_AutoGetSpeciesName(r4[1], gStringVar1, 0); StringCopy(gStringVar2, ItemId_GetItem(r4[0])->name); StringExpandPlaceholders(gStringVar4, gUnknown_841AB74); @@ -3775,14 +3776,14 @@ u16 * sub_8114188(u16 * a0) return r4; } -u16 * sub_81141D0(u16 * a0, u16 * a1) +u16 * sub_81141D0(u16 * a0, const u16 * a1) { return sub_811414C(6, a0, a1); } -u16 * sub_81141E4(u16 * a0) +const u16 * sub_81141E4(const u16 * a0) { - u16 * r4 = sub_8113E88(6, a0); + const u16 * r4 = sub_8113E88(6, a0); QuestLog_AutoGetSpeciesName(r4[1], gStringVar1, 0); StringCopy(gStringVar2, ItemId_GetItem(r4[0])->name); @@ -3791,14 +3792,14 @@ u16 * sub_81141E4(u16 * a0) return r4; } -u16 * sub_811422C(u16 * a0, u16 * a1) +u16 * sub_811422C(u16 * a0, const u16 * a1) { return sub_811414C(7, a0, a1); } -u16 * sub_8114240(u16 * a0) +const u16 * sub_8114240(const u16 * a0) { - u16 * r4 = sub_8113E88(7, a0); + const u16 * r4 = sub_8113E88(7, a0); QuestLog_AutoGetSpeciesName(r4[1], gStringVar2, 0); StringCopy(gStringVar1, ItemId_GetItem(r4[0])->name); @@ -3807,14 +3808,14 @@ u16 * sub_8114240(u16 * a0) return r4; } -u16 * sub_8114288(u16 * a0, u16 * a1) +u16 * sub_8114288(u16 * a0, const u16 * a1) { return sub_811414C(8, a0, a1); } -u16 * sub_811429C(u16 * a0) +const u16 * sub_811429C(const u16 * a0) { - u16 * r4 = sub_8113E88(8, a0); + const u16 * r4 = sub_8113E88(8, a0); QuestLog_AutoGetSpeciesName(r4[1], gStringVar1, 0); StringCopy(gStringVar2, ItemId_GetItem(r4[0])->name); @@ -3823,7 +3824,7 @@ u16 * sub_811429C(u16 * a0) return r4; } -u16 * sub_81142E4(u16 a0, u16 * a1, u16 * a2) +u16 * sub_81142E4(u16 a0, u16 * a1, const u16 * a2) { u16 * r1 = sub_8113DE0(a0, a1); if (r1 == NULL) @@ -3835,14 +3836,14 @@ u16 * sub_81142E4(u16 a0, u16 * a1, u16 * a2) return r1 + 3; } -u16 * sub_8114310(u16 * a0, u16 * a1) +u16 * sub_8114310(u16 * a0, const u16 * a1) { return sub_81142E4(9, a0, a1); } -u16 * sub_8114324(u16 * a0) +const u16 * sub_8114324(const u16 * a0) { - u16 * r4 = sub_8113E88(9, a0); + const u16 * r4 = sub_8113E88(9, a0); QuestLog_AutoGetSpeciesName(r4[2], gStringVar1, 0); StringCopy(gStringVar2, ItemId_GetItem(r4[0])->name); StringCopy(gStringVar3, ItemId_GetItem(r4[1])->name); @@ -3850,3 +3851,111 @@ u16 * sub_8114324(u16 * a0) r4 += 3; return r4; } + +u16 * sub_8114380(u16 * a0, const u16 * a1) +{ + return sub_81142E4(10, a0, a1); +} + +const u16 * sub_8114394(const u16 * a0) +{ + const u16 * r4 = sub_8113E88(10, a0); + QuestLog_AutoGetSpeciesName(r4[2], gStringVar2, 0); + StringCopy(gStringVar3, ItemId_GetItem(r4[0])->name); + StringCopy(gStringVar1, ItemId_GetItem(r4[1])->name); + StringExpandPlaceholders(gStringVar4, gUnknown_841A6E1); + r4 += 3; + return r4; +} + +u16 * sub_81143F0(u16 * a0, const u16 * a1) +{ + u16 * r4 = a0; + if (gUnknown_203B044.unk_0 == 11 && gUnknown_203B044.unk_1 != 0) + return r4; + + if (!sub_8110944(a0, gUnknown_8456AA0[11])) + return NULL; + + r4[0] = 11; + r4[1] = gUnknown_203AF98; + return r4 + 2; +} + +const u16 * sub_811443C(const u16 * a0) +{ + StringExpandPlaceholders(gStringVar4, gUnknown_841A2B0); + a0 += 2; + return a0; +} + +u16 * sub_811445C(u16 * a0, const u16 * a1) +{ + u16 * r4 = a0 + 4; + + a0[0] = 12; + a0[1] = gUnknown_203AF98; + a0[2] = a1[0]; + a0[3] = a1[1]; + a1 += 2; + memcpy(r4, a1, 7); + r4 += 4; + return r4; +} + +const u16 * sub_811448C(const u16 * a0) +{ + const u16 * r6 = a0 + 4; + + memset(gStringVar1, EOS, 8); + memcpy(gStringVar1, r6, 7); + + sub_8115834(gStringVar1); + QuestLog_AutoGetSpeciesName(a0[3], gStringVar2, 0); + QuestLog_AutoGetSpeciesName(a0[2], gStringVar3, 0); + StringExpandPlaceholders(gStringVar4, gUnknown_841A3FF); + r6 += 4; + return r6; +} + +u16 * sub_81144EC(u16 * a0, const u16 * a1) +{ + a0[0] = 13; + a0[1] = gUnknown_203AF98; + *((u8 *)a0 + 4) = *((const u8 *)a1 + 0); + memcpy((u8 *)a0 + 5, (const u8 *)a1 + 1, 7); + a0 += 6; + return a0; +} + +const u8 *const gUnknown_8456ACC[] = { + gUnknown_841A74E, + gUnknown_841A756, + gUnknown_841A762 +}; + +const u8 *const gUnknown_8456AD8[] = { + gUnknown_841AF98, + gUnknown_841A762, + gUnknown_841AF9F +}; + +const u8 *const gUnknown_8456AE4[] = { + gUnknown_841A502, + gUnknown_841A506, + gUnknown_841AFD1 +}; + +const u16 * sub_8114518(const u16 * a0) +{ + UnkTextUtil_Reset(); + + memset(gStringVar1, EOS, 8); + memcpy(gStringVar1, (const u8 *)a0 + 5, 7); + sub_8115834(gStringVar1); + UnkTextUtil_SetPtrI(0, gStringVar1); + UnkTextUtil_SetPtrI(1, gUnknown_8456AE4[((const u8 *)a0)[4]]); + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A422); + a0 += 6; + return a0; +} -- cgit v1.2.3 From e3a2a2fa85b23a73fc595bd81733989ae2d1ba4d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 8 Nov 2018 17:01:10 -0500 Subject: through sub_8114758 --- src/quest_log.c | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 97 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 57e5ac0b9..d664f3e25 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -3918,16 +3918,6 @@ const u16 * sub_811448C(const u16 * a0) return r6; } -u16 * sub_81144EC(u16 * a0, const u16 * a1) -{ - a0[0] = 13; - a0[1] = gUnknown_203AF98; - *((u8 *)a0 + 4) = *((const u8 *)a1 + 0); - memcpy((u8 *)a0 + 5, (const u8 *)a1 + 1, 7); - a0 += 6; - return a0; -} - const u8 *const gUnknown_8456ACC[] = { gUnknown_841A74E, gUnknown_841A756, @@ -3946,6 +3936,16 @@ const u8 *const gUnknown_8456AE4[] = { gUnknown_841AFD1 }; +u16 * sub_81144EC(u16 * a0, const u16 * a1) +{ + a0[0] = 13; + a0[1] = gUnknown_203AF98; + *((u8 *)a0 + 4) = *((const u8 *)a1 + 0); + memcpy((u8 *)a0 + 5, (const u8 *)a1 + 1, 7); + a0 += 6; + return a0; +} + const u16 * sub_8114518(const u16 * a0) { UnkTextUtil_Reset(); @@ -3959,3 +3959,90 @@ const u16 * sub_8114518(const u16 * a0) a0 += 6; return a0; } + +u16 * sub_8114578(u16 * a0, const u16 * a1) +{ + a0[0] = 14; + a0[1] = gUnknown_203AF98; + *((u8 *)a0 + 4) = *((const u8 *)a1 + 0); + memcpy((u8 *)a0 + 5, (const u8 *)a1 + 1, 7); + a0 += 6; + return a0; +} + +const u16 * sub_81145A4(const u16 * a0) +{ + UnkTextUtil_Reset(); + + memset(gStringVar1, EOS, 8); + memcpy(gStringVar1, (const u8 *)a0 + 5, 7); + sub_8115834(gStringVar1); + UnkTextUtil_SetPtrI(0, gStringVar1); + UnkTextUtil_SetPtrI(1, gUnknown_8456AE4[((const u8 *)a0)[4]]); + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A477); + a0 += 6; + return a0; +} + +u16 * sub_8114604(u16 * a0, const u16 * a1) +{ + a0[0] = 15; + a0[1] = gUnknown_203AF98; + *((u8 *)a0 + 4) = *((const u8 *)a1 + 0); + memcpy((u8 *)a0 + 5, (const u8 *)a1 + 1, 7); + memcpy((u8 *)a0 + 12, (const u8 *)a1 + 8, 7); + memcpy((u8 *)a0 + 19, (const u8 *)a1 + 15, 7); + a0 += 13; + return a0; +} + +const u16 * sub_811464C(const u16 * a0) +{ + UnkTextUtil_Reset(); + + memset(gStringVar1, EOS, 8); + memset(gStringVar2, EOS, 8); + memset(gStringVar3, EOS, 8); + StringCopy7(gStringVar1, (const u8 *)a0 + 5); + StringCopy7(gStringVar2, (const u8 *)a0 + 12); + StringCopy7(gStringVar3, (const u8 *)a0 + 19); + sub_8115834(gStringVar1); + sub_8115834(gStringVar2); + sub_8115834(gStringVar3); + UnkTextUtil_SetPtrI(0, gSaveBlock2Ptr->playerName); + UnkTextUtil_SetPtrI(1, gStringVar1); + UnkTextUtil_SetPtrI(2, gStringVar2); + UnkTextUtil_SetPtrI(3, gStringVar3); + UnkTextUtil_SetPtrI(4, gUnknown_8456AE4[((const u8 *)a0)[4]]); + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A4C6); + a0 += 13; + return a0; +} + +u16 * sub_8114710(u16 * a0, const u16 * a1) +{ + a0[0] = 16; + a0[1] = gUnknown_203AF98; + return a0 + 2; +} + +const u16 * sub_8114724(const u16 * a0) +{ + StringExpandPlaceholders(gStringVar4, gUnknown_841A50B); + a0 += 2; + return a0; +} + +u16 * sub_8114744(u16 * a0, const u16 * a1) +{ + a0[0] = 17; + a0[1] = gUnknown_203AF98; + return a0 + 2; +} + +const u16 * sub_8114758(const u16 * a0) +{ + StringExpandPlaceholders(gStringVar4, gUnknown_841A732); + a0 += 2; + return a0; +} -- cgit v1.2.3 From 4ee3c03a697b9520d365fa17ed43602e68852468 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 8 Nov 2018 17:52:02 -0500 Subject: through sub_8114834 --- src/quest_log.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index d664f3e25..e146c92e7 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -4046,3 +4046,49 @@ const u16 * sub_8114758(const u16 * a0) a0 += 2; return a0; } + +u16 * sub_8114778(u16 * a0, const u16 * a1) +{ + u8 * r4 = (u8 *)(a0 + 4); + a0[0] = 18; + a0[1] = gUnknown_203AF98; + a0[2] = a1[0]; + a0[3] = a1[1]; + memcpy(r4, a1 + 2, 7); + r4 += 8; + return (u16 *)r4; +} + +const u16 * sub_81147A8(const u16 * a0) +{ + const u8 * r6 = (const u8 *)(a0 + 4); + memset(gStringVar1, EOS, 8); + memcpy(gStringVar1, r6, 7); + sub_8115834(gStringVar1); + QuestLog_AutoGetSpeciesName(a0[3], gStringVar2, 0); + QuestLog_AutoGetSpeciesName(a0[2], gStringVar3, 0); + StringExpandPlaceholders(gStringVar4, gUnknown_841A76A); + r6 += 8; + return (const u16 *)r6; +} + +u16 * sub_8114808(u16 * a0, const u16 * a1) +{ + a0[0] = 19; + a0[1] = gUnknown_203AF98; + *(u8 *)&a0[2] = *(const u8 *)&a1[0]; + memcpy((u8 *)a0 + 5, (const u8 *)a1 + 1, 7); + a0 += 6; + return a0; +} + +const u16 * sub_8114834(const u16 * a0) +{ + memset(gStringVar1, EOS, 8); + memcpy(gStringVar1, (const u8 *)a0 + 5, 7); + sub_8115834(gStringVar1); + StringCopy(gStringVar2, gUnknown_8456AE4[*(const u8 *)&a0[2]]); + StringExpandPlaceholders(gStringVar4, gUnknown_841A7B0); + a0 += 6; + return a0; +} -- cgit v1.2.3 From 6317f0180e191fb7c426eaf38b2dd631d9694146 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 9 Nov 2018 08:28:39 -0500 Subject: Start to refactor some of the data components --- src/quest_log.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index e146c92e7..06780ff21 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -537,7 +537,7 @@ void sub_8110AEC(u16 a0) sub_81108F0(gUnknown_203ADF8); sub_8113B88(); - gUnknown_203AE08 = (u16 *)gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_568; + gUnknown_203AE08 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_568; if ((a0 >= 12 && a0 < 20) || a0 == 35) gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_000 = 2; else @@ -1172,7 +1172,7 @@ void sub_811175C(u8 a0, struct UnkStruct_203AE98 * a1) gUnknown_203AE0C[i] = NULL; } - r4 = (u16 *)gSaveBlock1Ptr->questLog[a0].unk_568; + r4 = gSaveBlock1Ptr->questLog[a0].unk_568; for (i = 0; i < 32; i++) { switch (r4[0] & 0xFFF) @@ -3191,9 +3191,9 @@ bool8 sub_81138A0(u16 a0, u16 * a1) if (a0 < 16 || a0 > 17) { if (a0 == 12 || a0 == 18) - memcpy(&gUnknown_203B024.unk_04, a1, 12); + memcpy(gUnknown_203B024.unk_04, a1, 12); else - memcpy(&gUnknown_203B024.unk_04, a1, 24); + memcpy(gUnknown_203B024.unk_04, a1, 24); } return TRUE; } @@ -3210,7 +3210,7 @@ void sub_811390C(void) u16 * resp; gUnknown_203B04A = 0; sub_8110AEC(gUnknown_203B024.unk_00); - resp = sQuestLogStorageCBs[gUnknown_203B024.unk_00](gUnknown_203AE08, (u16 *)&gUnknown_203B024.unk_04); + resp = sQuestLogStorageCBs[gUnknown_203B024.unk_00](gUnknown_203AE08, gUnknown_203B024.unk_04); gUnknown_203AE08 = resp; sub_81138F8(); } @@ -3224,7 +3224,7 @@ bool8 sub_8113954(u16 a0, u16 * a1) if (gUnknown_3005E88 || FlagGet(0x82C) || sub_81137E4(a0, a1) != TRUE) { gUnknown_203B024.unk_00 = a0; - memcpy(&gUnknown_203B024.unk_04, a1, 8); + memcpy(gUnknown_203B024.unk_04, a1, 8); } return TRUE; } @@ -3240,7 +3240,7 @@ void sub_81139BC(void) sub_8110AEC(gUnknown_203B024.unk_00); } sub_8113B94(gUnknown_203B024.unk_00); - resp = sQuestLogStorageCBs[gUnknown_203B024.unk_00](gUnknown_203AE08, (u16 *)&gUnknown_203B024.unk_04); + resp = sQuestLogStorageCBs[gUnknown_203B024.unk_00](gUnknown_203AE08, gUnknown_203B024.unk_04); gUnknown_203AE08 = resp; sub_8113A1C(1); sub_81138F8(); -- cgit v1.2.3 From d6233c5b3b7539469e028838b1e548b6c39ce784 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 9 Nov 2018 12:33:20 -0500 Subject: Fix C/C++ errors generated by CLion IDE --- src/pokemon.c | 2 ++ src/quest_log.c | 8 ++++---- src/text.c | 6 +++--- 3 files changed, 9 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/pokemon.c b/src/pokemon.c index ff7c907ca..5cd2cd2d7 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -1,3 +1,5 @@ +#define IS_POKEMON_C + #include "global.h" #include "pokemon.h" #include "random.h" diff --git a/src/quest_log.c b/src/quest_log.c index 06780ff21..5cc458e26 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -769,8 +769,8 @@ void sub_8110D48(u8 a0) { struct QuestLog * questLog = &gSaveBlock1Ptr->questLog[a0]; - CpuCopy16(gSaveBlock1Ptr->flags, questLog->unk_148, FLAGS_COUNT * sizeof(u8)); - CpuCopy16(gSaveBlock1Ptr->vars, questLog->unk_268, VARS_COUNT * sizeof(u16)); + CpuCopy16(gSaveBlock1Ptr->flags, questLog->flags, FLAGS_COUNT * sizeof(u8)); + CpuCopy16(gSaveBlock1Ptr->vars, questLog->vars, VARS_COUNT * sizeof(u16)); } void sub_8110D94(void) @@ -1005,8 +1005,8 @@ void sub_81113E4(void) { struct QuestLog * questLog = &gSaveBlock1Ptr->questLog[gUnknown_203ADF8]; - CpuCopy16(questLog->unk_148, gSaveBlock1Ptr->flags, FLAGS_COUNT * sizeof(u8)); - CpuCopy16(questLog->unk_268, gSaveBlock1Ptr->vars, VARS_COUNT * sizeof(u16)); + CpuCopy16(questLog->flags, gSaveBlock1Ptr->flags, FLAGS_COUNT * sizeof(u8)); + CpuCopy16(questLog->vars, gSaveBlock1Ptr->vars, VARS_COUNT * sizeof(u16)); sub_8111688(); } diff --git a/src/text.c b/src/text.c index 7fb0ab034..d4d25b5aa 100644 --- a/src/text.c +++ b/src/text.c @@ -1479,17 +1479,17 @@ u32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing) return (u8)(GetFontAttribute(fontId, 0) + letterSpacing) * width; } -u32 (*GetFontWidthFunc(u8 glyphId))(u16, bool32) +u32 (*GetFontWidthFunc(u8 glyphId))(u16 _glyphId, bool32 _isJapanese) { u32 i; for (i = 0; i < 7; ++i) { if (glyphId == gGlyphWidthFuncs[i].font_id) - return gGlyphWidthFuncs[i].func; + return *gGlyphWidthFuncs[i].func; } - return 0; + return NULL; } u32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing) -- cgit v1.2.3 From a6b5d09ddfa6bd047848e023d50124e4aff86e5e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 10 Nov 2018 18:28:24 -0500 Subject: More changes for modern gcc compat --- src/dma3_manager.c | 2 +- src/quest_log.c | 4 ++-- src/script.c | 22 +++++++++++----------- src/sound.c | 10 +++++----- 4 files changed, 19 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/dma3_manager.c b/src/dma3_manager.c index bb015c5cf..10049a566 100644 --- a/src/dma3_manager.c +++ b/src/dma3_manager.c @@ -1,7 +1,7 @@ #include "global.h" #include "dma3.h" -IWRAM_DATA struct { +static /*IWRAM_DATA*/ struct { /* 0x00 */ const u8 *src; /* 0x04 */ u8 *dest; /* 0x08 */ u16 size; diff --git a/src/quest_log.c b/src/quest_log.c index 5cc458e26..3388d9012 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -88,8 +88,8 @@ u16 gUnknown_3005E8C; struct UnkStruct_3005E90 gUnknown_3005E90; struct UnkStruct_203AE98 * gUnknown_3005E94; -IWRAM_DATA struct UnkStruct_300201C * gUnknown_300201C; -IWRAM_DATA u16 gUnknown_3002020; +static struct UnkStruct_300201C * gUnknown_300201C; +static u16 gUnknown_3002020; EWRAM_DATA u8 gUnknown_203ADF8 = 0; EWRAM_DATA u8 gUnknown_203ADF9 = 0; diff --git a/src/script.c b/src/script.c index 0c74debb2..59ef4e579 100644 --- a/src/script.c +++ b/src/script.c @@ -22,17 +22,17 @@ EWRAM_DATA u8 gUnknown_20370A0 = 0; EWRAM_DATA u8 *gUnknown_20370A4 = NULL; // ewram bss -IWRAM_DATA static u8 sScriptContext1Status; -IWRAM_DATA static u32 sUnusedVariable1; -IWRAM_DATA static struct ScriptContext sScriptContext1; -IWRAM_DATA static u32 sUnusedVariable2; -IWRAM_DATA static struct ScriptContext sScriptContext2; -IWRAM_DATA static bool8 sScriptContext2Enabled; -IWRAM_DATA static u8 gUnknown_3000F9D; -IWRAM_DATA static u8 gUnknown_3000F9E; -IWRAM_DATA static u8 gUnknown_3000F9F; -IWRAM_DATA static u8 gUnknown_3000FA0; -IWRAM_DATA static u8 gUnknown_3000FA1; +/*IWRAM_DATA*/ static u8 sScriptContext1Status; +/*IWRAM_DATA*/ static u32 sUnusedVariable1; +/*IWRAM_DATA*/ static struct ScriptContext sScriptContext1; +/*IWRAM_DATA*/ static u32 sUnusedVariable2; +/*IWRAM_DATA*/ static struct ScriptContext sScriptContext2; +/*IWRAM_DATA*/ static bool8 sScriptContext2Enabled; +/*IWRAM_DATA*/ static u8 gUnknown_3000F9D; +/*IWRAM_DATA*/ static u8 gUnknown_3000F9E; +/*IWRAM_DATA*/ static u8 gUnknown_3000F9F; +/*IWRAM_DATA*/ static u8 gUnknown_3000FA0; +/*IWRAM_DATA*/ static u8 gUnknown_3000FA1; extern ScrCmdFunc gScriptCmdTable[]; extern ScrCmdFunc gScriptCmdTableEnd[]; diff --git a/src/sound.c b/src/sound.c index b8814de81..f94e44506 100644 --- a/src/sound.c +++ b/src/sound.c @@ -24,11 +24,11 @@ EWRAM_DATA struct MusicPlayerInfo* gMPlay_PokemonCry = NULL; EWRAM_DATA u8 gPokemonCryBGMDuckingCounter = 0; // iwram bss -IWRAM_DATA static u16 sCurrentMapMusic; -IWRAM_DATA static u16 sNextMapMusic; -IWRAM_DATA static u8 sMapMusicState; -IWRAM_DATA static u8 sMapMusicFadeInSpeed; -IWRAM_DATA static u16 sFanfareCounter; +/*IWRAM_DATA*/ static u16 sCurrentMapMusic; +/*IWRAM_DATA*/ static u16 sNextMapMusic; +/*IWRAM_DATA*/ static u8 sMapMusicState; +/*IWRAM_DATA*/ static u8 sMapMusicFadeInSpeed; +/*IWRAM_DATA*/ static u16 sFanfareCounter; // iwram common bool8 gDisableMusic; -- cgit v1.2.3 From 948cc688493fd052b6cb6cdd9f697b6f4ed1b3c8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 19 Nov 2018 17:54:14 -0500 Subject: through sub_8114A4C --- src/quest_log.c | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 3388d9012..4dccdb890 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -4092,3 +4092,116 @@ const u16 * sub_8114834(const u16 * a0) a0 += 6; return a0; } + +u16 * sub_811488C(u16 * a0, const u16 * a1) +{ + a0 = sub_8113DE0(20, a0); + if (a0 == NULL) + return NULL; + a0[0] = a1[0]; + a0[1] = a1[1]; + *((u8 *)a0 + 4) = *((const u8 *)a1 + 4); + *((u8 *)a0 + 5) = *((const u8 *)a1 + 5); + return a0 + 3; +} + +const u16 * sub_81148BC(const u16 * a0) +{ + const u8 * boxIdxs; + a0 = sub_8113E88(20, a0); + boxIdxs = (const u8 *)a0 + 4; + UnkTextUtil_Reset(); + UnkTextUtil_SetPtrI(0, GetBoxNamePtr(boxIdxs[0])); + QuestLog_AutoGetSpeciesName(a0[0], NULL, 1); + UnkTextUtil_SetPtrI(2, GetBoxNamePtr(boxIdxs[1])); + QuestLog_AutoGetSpeciesName(a0[1], NULL, 3); + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A566); + return a0 + 3; +} + +u16 * sub_8114918(u16 * a0, const u16 * a1) +{ + a0 = sub_8113DE0(21, a0); + if (a0 == NULL) + return NULL; + a0[0] = a1[0]; + a0[1] = a1[1]; + *((u8 *)a0 + 4) = *((const u8 *)a1 + 4); + return a0 + 3; +} + +const u16 * sub_8114944(const u16 * a0) +{ + const u8 * boxIdxs; + a0 = sub_8113E88(21, a0); + boxIdxs = (const u8 *)a0 + 4; + UnkTextUtil_Reset(); + UnkTextUtil_SetPtrI(0, GetBoxNamePtr(boxIdxs[0])); + QuestLog_AutoGetSpeciesName(a0[0], NULL, 1); + QuestLog_AutoGetSpeciesName(a0[1], NULL, 2); + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A5D9); + return a0 + 3; +} + +u16 * sub_8114990(u16 * a0, const u16 * a1) +{ + u16 * r2; + u16 * ret; + r2 = sub_8113DE0(22, a0); + if (r2 == NULL) + return NULL; + ret = r2 + 2; + if (*((const u8 *)a1 + 4) == TOTAL_BOXES_COUNT) + { + r2[0] = a1[1]; + r2[1] = a1[0]; + *((u8 *)r2 + 4) = *((const u8 *)a1 + 5); + } + else + { + r2[0] = a1[0]; + r2[1] = a1[1]; + *((u8 *)r2 + 4) = *((const u8 *)a1 + 4); + } + return ret + 1; +} + +const u16 * sub_81149D0(const u16 * a0) +{ + const u8 * boxIdxs; + a0 = sub_8113E88(22, a0); + boxIdxs = (const u8 *)a0 + 4; + UnkTextUtil_Reset(); + UnkTextUtil_SetPtrI(0, GetBoxNamePtr(boxIdxs[0])); + QuestLog_AutoGetSpeciesName(a0[0], NULL, 1); + QuestLog_AutoGetSpeciesName(a0[1], NULL, 2); + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A60A); + return a0 + 3; +} + +u16 * sub_8114A1C(u16 * a0, const u16 * a1) +{ + u16 * r2; + u16 * ret; + r2 = sub_8113DE0(23, a0); + if (r2 == NULL) + return NULL; + r2[0] = a1[0]; + ret = r2 + 1; + *((u8 *)ret + 0) = *((const u8 *)a1 + 4); + *((u8 *)ret + 1) = *((const u8 *)a1 + 5); + return ret + 1; +} + +const u16 * sub_8114A4C(const u16 * a0) +{ + const u8 * boxIdxs; + a0 = sub_8113E88(23, a0); + boxIdxs = (const u8 *)a0 + 2; + UnkTextUtil_Reset(); + UnkTextUtil_SetPtrI(0, GetBoxNamePtr(boxIdxs[0])); + QuestLog_AutoGetSpeciesName(a0[0], NULL, 1); + UnkTextUtil_SetPtrI(2, GetBoxNamePtr(boxIdxs[1])); + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A59C); + return (const u16 *)boxIdxs + 1; +} -- cgit v1.2.3 From 251d031ec98c599dab50b28f0fe57c035e273dd1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 19 Nov 2018 18:14:31 -0500 Subject: through sub_8114CE4 --- src/quest_log.c | 127 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 4dccdb890..f4b964d96 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -4205,3 +4205,130 @@ const u16 * sub_8114A4C(const u16 * a0) UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A59C); return (const u16 *)boxIdxs + 1; } + +u16 * sub_8114AA0(u16 * a0, const u16 * a1) +{ + u16 * r2; + r2 = sub_8113DE0(24, a0); + if (r2 == NULL) + return NULL; + r2[0] = a1[0]; + *((u8 *)r2 + 2) = *((const u8 *)a1 + 4); + return r2 + 2; +} + +const u16 * sub_8114AC8(const u16 * a0) +{ + const u8 * boxIdxs; + a0 = sub_8113E88(24, a0); + boxIdxs = (const u8 *)a0 + 2; + UnkTextUtil_Reset(); + UnkTextUtil_SetPtrI(0, GetBoxNamePtr(boxIdxs[0])); + QuestLog_AutoGetSpeciesName(a0[0], NULL, 1); + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A5FA); + return (const u16 *)boxIdxs + 1; +} + +u16 * sub_8114B0C(u16 * a0, const u16 * a1) +{ + u16 * r2; + r2 = sub_8113DE0(25, a0); + if (r2 == NULL) + return NULL; + r2[0] = a1[0]; + *((u8 *)r2 + 2) = *((const u8 *)a1 + 4); + return r2 + 2; +} + +const u16 * sub_8114B34(const u16 * a0) +{ + const u8 * boxIdxs; + a0 = sub_8113E88(25, a0); + boxIdxs = (const u8 *)a0 + 2; + UnkTextUtil_Reset(); + UnkTextUtil_SetPtrI(0, GetBoxNamePtr(boxIdxs[0])); + QuestLog_AutoGetSpeciesName(a0[0], NULL, 1); + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A632); + return (const u16 *)boxIdxs + 1; +} + +u16 * sub_8114B78(u16 * a0, const u16 * a1) +{ + u16 * r2; + r2 = sub_8113DE0(26, a0); + if (r2 == NULL) + return NULL; + r2[0] = a1[0]; + *((u8 *)r2 + 2) = *((const u8 *)a1 + 4); + return r2 + 2; +} + +const u16 * sub_8114BA0(const u16 * a0) +{ + const u8 * boxIdxs; + a0 = sub_8113E88(26, a0); + boxIdxs = (const u8 *)a0 + 2; + UnkTextUtil_Reset(); + QuestLog_AutoGetSpeciesName(a0[0], NULL, 0); + UnkTextUtil_SetPtrI(1, GetBoxNamePtr(boxIdxs[0])); + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A64F); + return (const u16 *)boxIdxs + 1; +} + +u16 * sub_8114BE4(u16 * a0, const u16 * a1) +{ + u16 * r2; + r2 = sub_8113DE0(27, a0); + if (r2 == NULL) + return NULL; + *((u8 *)r2 + 0) = *((const u8 *)a1 + 4); + *((u8 *)r2 + 1) = *((const u8 *)a1 + 5); + return r2 + 1; +} + +const u16 * sub_8114C0C(const u16 * a0) +{ + const u16 *r4 = sub_8113E88(27, a0); + UnkTextUtil_Reset(); + UnkTextUtil_SetPtrI(0, GetBoxNamePtr(*((const u8 *)r4 + 0))); + if (*((const u8 *)r4 + 0) == *((const u8 *)r4 + 1)) + UnkTextUtil_SetPtrI(1, gUnknown_841A694); + else + UnkTextUtil_SetPtrI(1, GetBoxNamePtr(*((const u8 *)r4 + 1))); + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A66E); + return r4 + 1; +} + +u16 * sub_8114C68(u16 * a0, const u16 * a1) +{ + a0 = sub_8113DE0(28, a0); + if (a0 == NULL) + return NULL; + a0[0] = a1[0]; + return a0 + 1; +} + +const u16 * sub_8114C8C(const u16 * a0) +{ + const u16 *r4 = sub_8113E88(28, a0); + sub_8099E90(r4[0], gStringVar1); + StringExpandPlaceholders(gStringVar4, gUnknown_841A391); + return r4 + 1; +} + +u16 * sub_8114CC0(u16 * a0, const u16 * a1) +{ + a0 = sub_8113DE0(29, a0); + if (a0 == NULL) + return NULL; + a0[0] = a1[0]; + return a0 + 1; +} + +const u16 * sub_8114CE4(const u16 * a0) +{ + const u16 *r4 = sub_8113E88(29, a0); + sub_8099E90(r4[0], gStringVar1); + StringExpandPlaceholders(gStringVar4, gUnknown_841A3DA); + return r4 + 1; +} -- cgit v1.2.3 From a38bbb8604f9927c5eeb45dfa57a133a69b952ae Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 19 Nov 2018 18:28:02 -0500 Subject: through sub_8114D68 --- src/quest_log.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index f4b964d96..d43027e57 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -4332,3 +4332,38 @@ const u16 * sub_8114CE4(const u16 * a0) StringExpandPlaceholders(gStringVar4, gUnknown_841A3DA); return r4 + 1; } + +u16 * sub_8114D18(u16 a0, u16 * a1, const u16 * a2) +{ + a1 = sub_8113DE0(a0, a1); + if (a1 == NULL) + return NULL; + a1[0] = a2[1]; + a1[1] = a2[2]; + a1[2] = a2[0]; + *((u8 *)a1 + 6) = *((const u8 *)a2 + 7); + *((u8 *)a1 + 7) = *((const u8 *)a2 + 6); + return a1 + 4; +} + +u16 * sub_8114D4C(u16 * a0, const u16 * a1) +{ + gUnknown_203B048 = TRUE; + return sub_8114D18(30, a0, a1); +} + +const u16 * sub_8114D68(const u16 * a0) +{ + const u8 * r6; + a0 = sub_8113E88(30, a0); + r6 = (const u8 *)a0 + 6; + UnkTextUtil_Reset(); + sub_80C4DF8(gStringVar1, r6[0]); + UnkTextUtil_SetPtrI(0, gStringVar1); + UnkTextUtil_SetPtrI(1, gTrainers[a0[2]].trainerName); + QuestLog_AutoGetSpeciesName(a0[0], 0, 2); + QuestLog_AutoGetSpeciesName(a0[1], 0, 3); + UnkTextUtil_SetPtrI(4, gUnknown_8456ACC[r6[1]]); + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AF0C); + return a0 + 4; +} -- cgit v1.2.3 From c7439253be8a79bfb628640276135c174c8fad11 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 19 Nov 2018 18:36:05 -0500 Subject: sub_8114DE8 --- src/quest_log.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index d43027e57..593585aac 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -4367,3 +4367,26 @@ const u16 * sub_8114D68(const u16 * a0) UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AF0C); return a0 + 4; } + +u16 * sub_8114DE8(u16 * a0, const u16 * a1) +{ + u16 * r4 = a0; + u8 * r5 = (u8 *)a0 + 8; + if (!sub_8110944(r4, gUnknown_8456AA0[31])) + return NULL; + if (r5[0] == 0 && r5[1] == 0) + { + r4[0] = 31; + r4[1] = gUnknown_203AF98; + } + if (a1[0]) + r4[2] = a1[0]; + if (a1[1]) + r4[3] = a1[1]; + if (a1[0] && r5[0] != 0xFF) + r5[0]++; + if (a1[1] && r5[1] != 0xFF) + r5[1]++; + r5[2] = *((const u8 *)a1 + 4); + return (u16 *)(r5 + 4); +} -- cgit v1.2.3 From ccc245601756237b4cd452b421506922be944d21 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 19 Nov 2018 21:32:13 -0500 Subject: through sub_81150CC --- src/quest_log.c | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 127 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 593585aac..9bd7d6227 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -462,12 +462,12 @@ void sub_811092C(void) gUnknown_203AE8C(); } -bool8 sub_8110944(void * a0, size_t a1) +bool8 sub_8110944(const void * a0, size_t a1) { void * r2 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].unk_568; void * r0 = gSaveBlock1Ptr->questLog[gUnknown_203ADF8].end; r0 -= a1; - if ((void *)a0 < r2 || (void *)a0 > r0) + if ((const void *)a0 < r2 || (const void *)a0 > r0) return FALSE; return TRUE; } @@ -4390,3 +4390,128 @@ u16 * sub_8114DE8(u16 * a0, const u16 * a1) r5[2] = *((const u8 *)a1 + 4); return (u16 *)(r5 + 4); } + +const u16 * sub_8114E68(const u16 * a0) +{ + const u8 * r6; + if (!sub_8110944(a0, gUnknown_8456AA0[31])) + return NULL; + + r6 = (const u8 *)a0 + 8; + UnkTextUtil_Reset(); + sub_80C4DF8(gStringVar1, r6[2]); + UnkTextUtil_SetPtrI(0, gStringVar1); + QuestLog_AutoGetSpeciesName(a0[2], NULL, 1); + ConvertIntToDecimalStringN(gStringVar2, r6[0], STR_CONV_MODE_LEFT_ALIGN, 3); + UnkTextUtil_SetPtrI(2, gStringVar2); + QuestLog_AutoGetSpeciesName(a0[3], NULL, 3); + ConvertIntToDecimalStringN(gStringVar3, r6[1], STR_CONV_MODE_LEFT_ALIGN, 3); + UnkTextUtil_SetPtrI(4, gStringVar3); + UnkTextUtil_SetPtrI(5, gSaveBlock2Ptr->playerName); + if (r6[0] == 0) + { + if (r6[1] == 1) + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AA01); + else + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AA2B); + } + else if (r6[1] == 0) + { + if (r6[0] == 1) + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A9A9); + else + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A9D4); + } + else if (r6[0] == 1) + { + if (r6[1] == 1) + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AA76); + else + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AAAA); + } + else + { + if (r6[1] == 1) + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AAEC); + else + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AB29); + } + return (const u16 *)(r6 + 4); +} + +bool8 sub_8114FBC(u16 a0) +{ + switch (a0) + { + case 0x96: + case 0x8F ... 0x92: + case 0xF9 ... 0xFA: + case 0x19A: + return TRUE; + } + return FALSE; +} + +u16 * sub_8114FF0(u16 * a0, const u16 * a1) +{ + gUnknown_203B048 = TRUE; + return sub_8114D18(32, a0, a1); +} + +const u16 * sub_811500C(const u16 * a0) +{ + const u8 * r5; + a0 = sub_8113E88(32, a0); + r5 = (const u8 *)a0 + 6; + UnkTextUtil_Reset(); + UnkTextUtil_SetPtrI(0, gTrainers[a0[2]].trainerName); + QuestLog_AutoGetSpeciesName(a0[0], NULL, 1); + QuestLog_AutoGetSpeciesName(a0[1], NULL, 2); + UnkTextUtil_SetPtrI(3, gUnknown_8456ACC[r5[1]]); + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AF3E); + return a0 + 4; +} + +u16 * sub_8115078(u16 * a0, const u16 * a1) +{ + if (!sub_8110944(a0, gUnknown_8456AA0[33])) + return NULL; + a0[0] = 0x2021; + a0[1] = gUnknown_203AF98; + a0[2] = a1[1]; + a0[3] = a1[2]; + *((u8 *)a0 + 8) = *((const u8 *)a1 + 6); + gUnknown_203B048 = TRUE; + return a0 + 5; +} + +const u16 * sub_81150CC(const u16 * a0) +{ + const u8 * r5; + if (!sub_8110944(a0, gUnknown_8456AA0[33])) + return NULL; + + r5 = (const u8 *)a0 + 8; + UnkTextUtil_Reset(); + + switch (gUnknown_203B044.unk_2) + { + case 0: + UnkTextUtil_SetPtrI(0, gSaveBlock2Ptr->playerName); + UnkTextUtil_SetPtrI(1, gSaveBlock1Ptr->rivalName); + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A2E1); + break; + case 1: + UnkTextUtil_SetPtrI(0, gSaveBlock1Ptr->rivalName); + QuestLog_AutoGetSpeciesName(a0[2], NULL, 1); + UnkTextUtil_SetPtrI(2, gSaveBlock2Ptr->playerName); + QuestLog_AutoGetSpeciesName(a0[3], NULL, 3); + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A312); + break; + case 2: + UnkTextUtil_SetPtrI(0, gUnknown_8456AD8[r5[0]]); + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A349); + break; + } + return (const u16 *)(r5 + 2); +} -- cgit v1.2.3 From 8e5da871440bf340fcea5edf9db8ffe4cb794509 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 19 Nov 2018 21:45:40 -0500 Subject: through sub_81151DC --- src/quest_log.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 9bd7d6227..08fb1fb37 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -4515,3 +4515,31 @@ const u16 * sub_81150CC(const u16 * a0) } return (const u16 *)(r5 + 2); } + +u16 * sub_81151C0(u16 * a0, const u16 * a1) +{ + gUnknown_203B048 = TRUE; + return sub_8114D18(34, a0, a1); +} + +const u16 * sub_81151DC(const u16 * a0) +{ + const u16 * r5 = sub_8113E88(34, a0); + const u8 * r6 = (const u8 *)r5 + 6; + UnkTextUtil_Reset(); + sub_80C4DF8(gStringVar1, r6[0]); + UnkTextUtil_SetPtrI(0, gStringVar1); + if ( + gTrainers[r5[2]].trainerClass == 0x51 + || gTrainers[r5[2]].trainerClass == 0x59 + || gTrainers[r5[2]].trainerClass == 0x5A + ) + UnkTextUtil_SetPtrI(1, GetExpandedPlaceholder(6)); + else + UnkTextUtil_SetPtrI(1, gTrainers[r5[2]].trainerName); + QuestLog_AutoGetSpeciesName(r5[0], NULL, 2); + QuestLog_AutoGetSpeciesName(r5[1], NULL, 3); + UnkTextUtil_SetPtrI(4, gUnknown_8456ACC[r6[1]]); + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AF6D); + return (const u16 *)(r6 + 2); +} -- cgit v1.2.3 From fb3d416283a44390efd57bf9fa0b637927806602 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 20 Nov 2018 08:52:28 -0500 Subject: through wip sub_81152BC --- src/quest_log.c | 190 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 190 insertions(+) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 08fb1fb37..048fe289a 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -4543,3 +4543,193 @@ const u16 * sub_81151DC(const u16 * a0) UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841AF6D); return (const u16 *)(r6 + 2); } + +const u8 *const gUnknown_8456AF0[] = { + gUnknown_841B09F, + gUnknown_841B0A4, + gUnknown_841B0B5, + gUnknown_841B0B9, + gUnknown_841B0B9, + gUnknown_841B0CD, + gUnknown_841B0CD, + gUnknown_841B0DD, + gUnknown_841B0B5, + gUnknown_841B0F6, + gUnknown_841B0F6, + gUnknown_841B0B5, + gUnknown_841B0FF, + gUnknown_841B109, + gUnknown_841B116, + gUnknown_841B11F, + gUnknown_841B11F, + gUnknown_841B130, + gUnknown_841B0B5, + gUnknown_841B141, + gUnknown_841B14B, + gUnknown_841B14B, + gUnknown_841B15A, + gUnknown_841B15A, + gUnknown_841B166, + gUnknown_841B172, + gUnknown_841B180, + gUnknown_841B190, + gUnknown_841B11F, + gUnknown_841B11F, + gUnknown_841B1A3, + gUnknown_841B1B7, + gUnknown_841B1C7, + gUnknown_841B0B5, + gUnknown_841B1DA, + gUnknown_841B1E5, + gUnknown_841B1F4, + gUnknown_841B0B5, + gUnknown_841B200, + gUnknown_841B20E, + gUnknown_841B0B5, + gUnknown_841B21C, + gUnknown_841B226, + gUnknown_841B226, + gUnknown_841B236, + gUnknown_841B0B5, + gUnknown_841B246, + gUnknown_841B25B, + gUnknown_841B25B, + gUnknown_841B268, + gUnknown_841B277 +}; + +const u8 *const gUnknown_8456BBC[] = { + gUnknown_841A53A, + gUnknown_841AD9E, + gUnknown_841ADC8, + gUnknown_841ADFF, + gUnknown_841AE1E, + gUnknown_841AE48, + gUnknown_841AEA7, + gUnknown_841AEDC, + gUnknown_841AFD6, + gUnknown_841B005 +}; + +const u8 gUnknown_8456BE4[] = { + 0x03, + 0x04, + 0x05, + 0x08, + 0x08, + 0x07, + 0x07, + 0x01, + 0x05, + 0x07, + 0x07, + 0x05, + 0x00, + 0x00, + 0x00, + 0x08, + 0x08, + 0x00, + 0x05, + 0x08, + 0x07, + 0x07, + 0x07, + 0x07, + 0x08, + 0x08, + 0x00, + 0x00, + 0x08, + 0x08, + 0x00, + 0x00, + 0x02, + 0x05, + 0x00, + 0x08, + 0x06, + 0x05, + 0x00, + 0x00, + 0x05, + 0x09, + 0x07, + 0x07, + 0x09, + 0x05, + 0x00, + 0x07, + 0x07, + 0x08, + 0x07 +}; + +const u8 gUnknown_8456C17[] = { + 0x5a, + 0x5b, + 0x5d, + 0x5e, + 0x5f, + 0x62, + 0x60, + 0x59, + 0x00 +}; + +const u8 *const gUnknown_8456C20[] = { + gUnknown_841AC51, + gUnknown_841ABAB, + gUnknown_841ABCD, + gUnknown_841AC2A, + gUnknown_841ABF9, + gUnknown_841AC93, + gUnknown_841ACBC, + gUnknown_841AD69, + gUnknown_841AD1D, + gUnknown_841A90C, + gUnknown_841A8E0, + gUnknown_841AD3C +}; + +u16 * sub_8115280(u16 * a0, const u16 * a1) +{ + u16 * r2 = sub_8113DE0(35, a0); + if (r2 == NULL) + return NULL; + *((u8 *)r2 + 0) = *((const u8 *)a1 + 0); + if ((*((u8 *)r2 + 1) = *((const u8 *)a1 + 1)) == 0x24) + gUnknown_203B048 = TRUE; + return r2 + 1; +} + +/* +const u16 * sub_81152BC(const u16 * a0) +{ + u8 r4; + const u16 * r5 = sub_8113E88(35, a0); + const u8 * r5_2 = (const u8 *)r5 + 0; + sub_80C4DF8(gStringVar1, r5_2[1]); + StringCopy(gStringVar2, gUnknown_8456AF0[r5_2[1]]); + if (gUnknown_8456BE4[r5_2[1]] == 5) + { + for (r4 = 0; r4 < 8; r4++) + { + if (r5_2[0] == gUnknown_8456C17[r4]) + { + if (FlagGet(0x820) != TRUE) + StringExpandPlaceholders(gStringVar4, gUnknown_841AE48); + else + StringExpandPlaceholders(gStringVar4, gUnknown_841AE8F); + break; + } + } + if (r4 == 8) + StringExpandPlaceholders(gStringVar4, gUnknown_8456BBC[gUnknown_8456BE4[r5_2[1]]]); + } + else + StringExpandPlaceholders(gStringVar4, gUnknown_8456BBC[gUnknown_8456BE4[r5_2[1]]]); + + return r5 + 1; +} + */ -- cgit v1.2.3 From 374352c3cf1c307ecd7d4cedcd1b7815a3e9e4bf Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 20 Nov 2018 21:41:35 -0500 Subject: Match sub_81152BC --- src/quest_log.c | 37 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index 048fe289a..d88bc04a4 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -4673,8 +4673,7 @@ const u8 gUnknown_8456C17[] = { 0x5f, 0x62, 0x60, - 0x59, - 0x00 + 0x59 }; const u8 *const gUnknown_8456C20[] = { @@ -4703,33 +4702,31 @@ u16 * sub_8115280(u16 * a0, const u16 * a1) return r2 + 1; } -/* const u16 * sub_81152BC(const u16 * a0) { - u8 r4; + u8 r4, r6; const u16 * r5 = sub_8113E88(35, a0); const u8 * r5_2 = (const u8 *)r5 + 0; - sub_80C4DF8(gStringVar1, r5_2[1]); - StringCopy(gStringVar2, gUnknown_8456AF0[r5_2[1]]); - if (gUnknown_8456BE4[r5_2[1]] == 5) + r6 = r5_2[1]; + sub_80C4DF8(gStringVar1, r5_2[0]); + StringCopy(gStringVar2, gUnknown_8456AF0[r6]); + if (gUnknown_8456BE4[r6] == 5) { - for (r4 = 0; r4 < 8; r4++) + for (r4 = 0; r4 < ARRAY_COUNT(gUnknown_8456C17); r4++) { - if (r5_2[0] == gUnknown_8456C17[r4]) - { - if (FlagGet(0x820) != TRUE) - StringExpandPlaceholders(gStringVar4, gUnknown_841AE48); - else - StringExpandPlaceholders(gStringVar4, gUnknown_841AE8F); - break; - } + if (r5_2[0] != gUnknown_8456C17[r4]) + continue; + if (FlagGet(0x820 + r4) == TRUE) + StringExpandPlaceholders(gStringVar4, gUnknown_841AE8F); + else + StringExpandPlaceholders(gStringVar4, gUnknown_841AE48); + break; } if (r4 == 8) - StringExpandPlaceholders(gStringVar4, gUnknown_8456BBC[gUnknown_8456BE4[r5_2[1]]]); + StringExpandPlaceholders(gStringVar4, gUnknown_8456BBC[gUnknown_8456BE4[r6]]); } else - StringExpandPlaceholders(gStringVar4, gUnknown_8456BBC[gUnknown_8456BE4[r5_2[1]]]); + StringExpandPlaceholders(gStringVar4, gUnknown_8456BBC[gUnknown_8456BE4[r6]]); - return r5 + 1; + return (const u16 *)(r5_2 + 2); } - */ -- cgit v1.2.3 From eb98d02443e7433dd594e35e92edda3b8fa5d499 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 21 Nov 2018 07:55:42 -0500 Subject: through sub_8115518; finish quest_log rodata --- src/quest_log.c | 122 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 120 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index d88bc04a4..eac9486d2 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -272,8 +272,8 @@ const u16 * sub_8115700(const u16 *); u16 * sub_81157DC(u16 *, const u16 *); const u16 * sub_8115800(const u16 *); void sub_8115834(u8 *); -bool8 sub_81153A8(u16, void*); -bool8 sub_81153E4(u16, void*); +bool8 sub_81153A8(u16, u16 *); +bool8 sub_81153E4(u16, u16 *); extern const u8 gUnknown_841A155[]; extern const u8 gUnknown_841A16F[]; @@ -400,6 +400,7 @@ extern const u8 gUnknown_841B246[]; extern const u8 gUnknown_841B25B[]; extern const u8 gUnknown_841B268[]; extern const u8 gUnknown_841B277[]; +extern const u8 gUnknown_8418C1B[]; const struct WindowTemplate gUnknown_845661C[3] = { @@ -4730,3 +4731,120 @@ const u16 * sub_81152BC(const u16 * a0) return (const u16 *)(r5_2 + 2); } + +void sub_811539C(void) +{ + gUnknown_203B04B = TRUE; +} + +bool8 sub_81153A8(u16 a0, u16 * a1) +{ + if (a0 != 35) + { + gUnknown_203B04A = 0; + return TRUE; + } + if (gUnknown_203B04A == *((u8 *)a1 + 1) + 1) + return FALSE; + gUnknown_203B04A = *((u8 *)a1 + 1) + 1; + return TRUE; +} + +bool8 sub_81153E4(u16 a0, u16 * a1) +{ + if (a0 != 35) + return TRUE; + if (*((u8 *)a1 + 1) == 32 && gUnknown_203B04B == 0) + return FALSE; + gUnknown_203B04B = 0; + return TRUE; +} + +u16 * sub_8115410(u16 * a0, const u16 * a1) +{ + u8 * r3; + a0 = sub_8113DE0(36, a0); + if (a0 == NULL) + return NULL; + a0[0] = a1[0]; + r3 = (u8 *)a0 + 2; + r3[0] = *((const u8 *)a1 + 2); + r3[1] = *((const u8 *)a1 + 3); + if (r3[0] == 7 || r3[0] == 8) + gUnknown_203B048 = 2; + else + gUnknown_203B048 = 1; + return (u16 *)(r3 + 2); +} + +const u16 * sub_8115460(const u16 * a0) +{ + const u16 * r4 = sub_8113E88(36, a0); + const u8 * r5 = (const u8 *)r4 + 2; + QuestLog_AutoGetSpeciesName(r4[0], gStringVar1, 0); + if (r5[1] != 0xFF) + sub_80C4DF8(gStringVar2, r5[1]); + if (r5[0] == 7) + { + if (r5[1] == 0x58) + StringCopy(gStringVar3, gUnknown_841B09F); + else + StringCopy(gStringVar3, gUnknown_8418C1B); + } + StringExpandPlaceholders(gStringVar4, gUnknown_8456C20[r5[0]]); + return (const u16 *)(r5 + 2); +} + +u16 * sub_81154DC(u16 * a0, const u16 * a1) +{ + a0 = sub_8113DE0(37, a0); + if (a0 == NULL) + return NULL; + a0[0] = a1[2]; + a0[1] = a1[3]; + a0[2] = *((const u32 *)a1) >> 16; + a0[3] = *((const u32 *)a1); + *((u8 *)a0 + 8) = *((const u8 *)a1 + 8); + *((u8 *)a0 + 9) = 1; + return a0 + 5; +} + +const u16 * sub_8115518(const u16 * a0) +{ + const u16 * r4 = sub_8113E88(37, a0); + const u8 * r7 = (const u8 *)r4 + 8; + u32 r6 = (r4[2] << 16) + r4[3]; + UnkTextUtil_Reset(); + sub_80C4DF8(gStringVar1, r7[0]); + UnkTextUtil_SetPtrI(0, gStringVar1); + UnkTextUtil_SetPtrI(1, ItemId_GetItem(r4[0])->name); + if (r4[1] < 2) + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A7DD); + else + { + ConvertIntToDecimalStringN(gStringVar2, r6, STR_CONV_MODE_LEFT_ALIGN, 6); + UnkTextUtil_SetPtrI(2, gStringVar2); + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A810); + } + return (const u16 *)(r7 + 2); +} + +const u16 gUnknown_8456C50[] = { + 0x0891, + 0x0892, + 0x0893, + 0x0894, + 0x0895, + 0x0896, + 0x0897, + 0x0898, + 0x0899, + 0x089a, + 0x089b, + 0x089c, + 0x089d, + 0x089e, + 0x089f, + 0x08a0, + 0x08a1 +}; -- cgit v1.2.3 From 6bcabeab1ec976284da95c34b57615fc9fa44970 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 21 Nov 2018 08:52:01 -0500 Subject: Complete decomp of quest_log --- src/quest_log.c | 181 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 179 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index eac9486d2..ed7214bdd 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -261,6 +261,8 @@ u16 * sub_81151C0(u16 *, const u16 *); const u16 * sub_81151DC(const u16 *); u16 * sub_8115280(u16 *, const u16 *); const u16 * sub_81152BC(const u16 *); +bool8 sub_81153A8(u16, u16 *); +bool8 sub_81153E4(u16, u16 *); u16 * sub_8115410(u16 *, const u16 *); const u16 * sub_8115460(const u16 *); u16 * sub_81154DC(u16 *, const u16 *); @@ -272,8 +274,6 @@ const u16 * sub_8115700(const u16 *); u16 * sub_81157DC(u16 *, const u16 *); const u16 * sub_8115800(const u16 *); void sub_8115834(u8 *); -bool8 sub_81153A8(u16, u16 *); -bool8 sub_81153E4(u16, u16 *); extern const u8 gUnknown_841A155[]; extern const u8 gUnknown_841A16F[]; @@ -4829,6 +4829,72 @@ const u16 * sub_8115518(const u16 * a0) return (const u16 *)(r7 + 2); } +u16 * sub_81155A4(u16 * a0, const u16 * a1) +{ + a0 = sub_8113DE0(38, a0); + if (a0 == NULL) + return NULL; + a0[0] = a1[2]; + a0[1] = a1[3]; + a0[2] = *((const u32 *)a1) >> 16; + a0[3] = *((const u32 *)a1); + *((u8 *)a0 + 8) = *((const u8 *)a1 + 8); + *((u8 *)a0 + 9) = *((const u8 *)a1 + 9); + return a0 + 5; +} + +const u16 * sub_81155E0(const u16 * a0) { + const u16 *r5 = sub_8113E88(38, a0); + const u8 *r7 = (const u8 *) r5 + 8; + u32 r6 = (r5[2] << 16) + r5[3]; + UnkTextUtil_Reset(); + sub_80C4DF8(gStringVar1, r7[0]); + if (r7[1] == 0) { + UnkTextUtil_SetPtrI(0, gSaveBlock2Ptr->playerName); + UnkTextUtil_SetPtrI(1, gStringVar1); + UnkTextUtil_SetPtrI(2, ItemId_GetItem(r5[0])->name); + if (r5[1] == 1) + UnkTextUtil_SetPtrI(3, gUnknown_841A8D4); + else + { + ConvertIntToDecimalStringN(gStringVar2, r5[1], STR_CONV_MODE_LEFT_ALIGN, 3); + UnkTextUtil_SetPtrI(4, gStringVar2); + UnkTextUtil_StringExpandPlaceholders(gStringVar3, gUnknown_841A8DD); + UnkTextUtil_SetPtrI(3, gStringVar3); + } + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A858); + } + else + { + UnkTextUtil_SetPtrI(0, gStringVar1); + UnkTextUtil_SetPtrI(1, ItemId_GetItem(r5[0])->name); + ConvertIntToDecimalStringN(gStringVar2, r6, STR_CONV_MODE_LEFT_ALIGN, 6); + UnkTextUtil_SetPtrI(2, gStringVar2); + UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_841A896); + } + return (const u16 *)(r7 + 2); +} + +u16 * sub_81156D8(u16 * a0, const u16 * a1) +{ + a0 = sub_8113DE0(40, a0); + if (a0 == NULL) + return NULL; + a0[0] = a1[0]; + *((u8 *)a0 + 2) = *((const u8 *)a1 + 2); + return a0 + 2; +} + +const u16 * sub_8115700(const u16 * a0) +{ + const u16 * r4 = sub_8113E88(40, a0); + const u8 * r5 = (const u8 *)r4 + 2; + sub_80C4DF8(gStringVar1, r5[0]); + StringCopy(gStringVar2, ItemId_GetItem(r4[0])->name); + StringExpandPlaceholders(gStringVar4, gUnknown_841B03F); + return (const u16 *)(r5 + 2); +} + const u16 gUnknown_8456C50[] = { 0x0891, 0x0892, @@ -4848,3 +4914,114 @@ const u16 gUnknown_8456C50[] = { 0x08a0, 0x08a1 }; + +#ifdef NONMATCHING +void sub_8115748(u16 a0) +{ + s32 i; + if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3) + return; + for (i = 0; i < 17; i++) + { + if (a0 != gUnknown_8456C50[i]) + continue; + if (!FlagGet(a0)) + gUnknown_203B049 = TRUE; + else + gUnknown_203B049 = FALSE; + break; + } +} +#else +NAKED +void sub_8115748(u16 a0) +{ + asm_unified("\tpush {r4,lr}\n" + "\tlsls r0, 16\n" + "\tlsrs r2, r0, 16\n" + "\tldr r0, =gUnknown_203ADFA\n" + "\tldrb r0, [r0]\n" + "\tsubs r0, 0x2\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x1\n" + "\tbls _08115792\n" + "\tmovs r1, 0\n" + "\tldr r4, =gUnknown_203B049\n" + "\tldr r0, =gUnknown_8456C50\n" + "\tb _08115778\n" + "\t.pool\n" + "_08115770:\n" + "\tmovs r0, 0\n" + "\tb _08115790\n" + "_08115774:\n" + "\tadds r0, 0x2\n" + "\tadds r1, 0x1\n" + "_08115778:\n" + "\tcmp r1, 0x10\n" + "\tbgt _08115792\n" + "\tldrh r3, [r0]\n" + "\tcmp r2, r3\n" + "\tbne _08115774\n" + "\tadds r0, r2, 0\n" + "\tbl FlagGet\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbne _08115770\n" + "\tmovs r0, 0x1\n" + "_08115790:\n" + "\tstrb r0, [r4]\n" + "_08115792:\n" + "\tpop {r4}\n" + "\tpop {r0}\n" + "\tbx r0"); +} +#endif // NONMATCHING + +void sub_8115798(void) +{ + u16 sp0; + if (gUnknown_203ADFA != 2 && gUnknown_203ADFA != 3) + { + if (gUnknown_203B049) + { + sp0 = gMapHeader.regionMapSectionId; + sub_8113550(42, &sp0); + gUnknown_203B049 = FALSE; + } + } +} + +u16 * sub_81157DC(u16 * a0, const u16 * a1) +{ + a0 = sub_8113DE0(42, a0); + if (a0 == NULL) + return NULL; + a0[0] = a1[0]; + return a0 + 1; +} + +const u16 * sub_8115800(const u16 * a0) +{ + const u16 * r4 = sub_8113E88(42, a0); + sub_80C4DF8(gStringVar1, r4[0]); + StringExpandPlaceholders(gStringVar4, gUnknown_841B064); + return r4 + 1; +} + +void sub_8115834(u8 * a0) +{ + s32 i; + if (*a0++ == EXT_CTRL_CODE_BEGIN && *a0++ == EXT_CTRL_CODE_JPN) + { + for (i = 0; i < 5; i++) + { + if (*a0 == EXT_CTRL_CODE_BEGIN) + break; + a0++; + } + *a0++ = EXT_CTRL_CODE_BEGIN; + *a0++ = EXT_CTRL_CODE_ENG; + *a0++ = EOS; + } +} -- cgit v1.2.3 From d347a95390a5cb61416f0148e9a9661b1ffddde7 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 23 Nov 2018 15:17:38 -0500 Subject: quest_log_8150454 --- src/quest_log_8150454.c | 197 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 197 insertions(+) create mode 100644 src/quest_log_8150454.c (limited to 'src') diff --git a/src/quest_log_8150454.c b/src/quest_log_8150454.c new file mode 100644 index 000000000..8af516e3a --- /dev/null +++ b/src/quest_log_8150454.c @@ -0,0 +1,197 @@ +#include "global.h" +#include "bike.h" +#include "script.h" +#include "task.h" +#include "field_player_avatar.h" +#include "field_map_obj.h" +#include "field_map_obj_helpers.h" +#include "field_effect.h" +#include "field_effect_helpers.h" +#include "quest_log.h" + +void sub_81504A8(void); +void sub_81504E8(void); +void sub_8150530(void); +void sub_81505C4(u8 taskId); +void sub_8150708(void); +void sub_815077C(void); +void sub_8150794(u8 taskId); +void sub_81507CC(void); +void sub_81507D8(void); +void sub_81507E4(void); +void sub_81507F0(void); +void sub_81507BC(struct MapObject *a0, u8 a1); + +void (*const gUnknown_8471EDC[])(void) = { + sub_81504A8, + sub_81504E8, + sub_8150530, + sub_8150708, + sub_81507CC, + sub_81507D8, + sub_81507E4, + sub_81507F0, + sub_815077C +}; + +void sub_8150454(u8 a0) +{ + if (a0 < ARRAY_COUNT(gUnknown_8471EDC)) + gUnknown_8471EDC[a0](); +} + +bool8 sub_8150474(u8 a0) +{ + if (gUnknown_3005E88 == 2) + { + sub_8112720(a0); + return TRUE; + } + return FALSE; +} + +void sub_8150498(u8 a0) +{ + return sub_8150454(a0); +} + +void sub_81504A8(void) +{ + struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId]; + sub_81507BC(mapObject, sub_805C808(0)); + FieldObjectTurn(mapObject, mapObject->placeholder18); + SetPlayerAvatarStateMask(0x01); +} + +void sub_81504E8(void) +{ + struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId]; + sub_81507BC(mapObject, sub_805C808(1)); + FieldObjectTurn(mapObject, mapObject->placeholder18); + SetPlayerAvatarStateMask(0x02); + sub_80BD620(0, 0); +} + +void sub_8150530(void) +{ + struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId]; + struct Sprite *sprite = &gSprites[mapObject->spriteId]; + + if (gUnknown_3005E88 == 1 || gUnknown_3005E88 == 3) + { + u8 taskId; + ScriptContext2_Enable(); + gPlayerAvatar.unk6 = 1; + taskId = CreateTask(sub_81505C4, 0xFF); + gTasks[taskId].data[0] = 0; + } + else + { + sub_81507BC(mapObject, sub_805C808(4)); + StartSpriteAnim(sprite, sub_80634F0(mapObject->mapobj_unk_18)); + } +} + +void sub_81505C4(u8 taskId) +{ + struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId]; + struct Sprite *sprite = &gSprites[mapObject->spriteId]; + + switch (gTasks[taskId].data[0]) + { + case 0: + FieldObjectClearAnimIfSpecialAnimActive(mapObject); + mapObject->mapobj_bit_11 = TRUE; + sub_81507BC(mapObject, sub_805C808(4)); + StartSpriteAnim(sprite, sub_80634F0(mapObject->mapobj_unk_18)); + gTasks[taskId].data[0]++; + gTasks[taskId].data[1] = 0; + break; + case 1: + sub_805D9C4(sprite); + if (gTasks[taskId].data[1] < 60) + gTasks[taskId].data[1]++; + else + gTasks[taskId].data[0]++; + break; + case 2: + StartSpriteAnim(sprite, sub_8063500(player_get_direction_lower_nybble())); + gTasks[taskId].data[0]++; + break; + case 3: + sub_805D9C4(sprite); + if (sprite->animEnded) + { + if (!(gPlayerAvatar.flags & 8)) + sub_81507BC(mapObject, sub_805C808(0)); + else + sub_81507BC(mapObject, sub_805C808(2)); + FieldObjectTurn(mapObject, mapObject->placeholder18); + sprite->pos2.x = 0; + sprite->pos2.y = 0; + ScriptContext2_Disable(); + DestroyTask(taskId); + } + break; + } +} + +void sub_8150708(void) +{ + struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId]; + u8 fieldEffectId; + + if (!(gPlayerAvatar.flags & 0x08)) + { + sub_81507BC(mapObject, sub_805C808(2)); + FieldObjectTurn(mapObject, mapObject->placeholder18); + SetPlayerAvatarStateMask(0x08); + gFieldEffectArguments[0] = mapObject->coords2.x; + gFieldEffectArguments[1] = mapObject->coords2.y; + gFieldEffectArguments[2] = gPlayerAvatar.mapObjectId; + fieldEffectId = FieldEffectStart(0x08); + mapObject->mapobj_unk_1A = fieldEffectId; + sub_80DC44C(fieldEffectId, 1); + } +} + +void sub_815077C(void) +{ + FieldEffectStart(0x41); + CreateTask(sub_8150794, 0x00); +} + +void sub_8150794(u8 taskId) +{ + if (!FieldEffectActiveListContains(0x41)) + { + UnfreezeMapObjects(); + ScriptContext2_Disable(); + DestroyTask(taskId); + } +} + +void sub_81507BC(struct MapObject * a0, u8 a1) +{ + sub_805F060(a0, a1); +} + +void sub_81507CC(void) +{ + sub_805D154(1); +} + +void sub_81507D8(void) +{ + sub_805D154(2); +} + +void sub_81507E4(void) +{ + sub_805D154(3); +} + +void sub_81507F0(void) +{ + sub_805D154(4); +} -- cgit v1.2.3 From 91bfbfb9fb2bbdecfc33e76fca7aa6ff5a2c8a34 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 23 Nov 2018 21:22:31 -0500 Subject: quest_log_battle, 1 --- src/quest_log.c | 2 +- src/quest_log_battle.c | 97 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 src/quest_log_battle.c (limited to 'src') diff --git a/src/quest_log.c b/src/quest_log.c index ed7214bdd..546ff6e05 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -2820,7 +2820,7 @@ static u16 * (*const sQuestLogStorageCBs[])(u16 *, const u16 *) = { }; #ifdef NONMATCHING -void sub_8113550(u16 a0, u16 * a1) +void sub_8113550(u16 a0, const u16 * a1) { u16 * r1; diff --git a/src/quest_log_battle.c b/src/quest_log_battle.c new file mode 100644 index 000000000..c5d8ec2af --- /dev/null +++ b/src/quest_log_battle.c @@ -0,0 +1,97 @@ +#include "global.h" +#include "constants/species.h" +#include "malloc.h" +#include "battle.h" +#include "overworld.h" +#include "quest_log.h" + +struct QuestLogStruct_01 +{ + u16 v0; + u16 v2; + u16 v4; + u8 v6; + u8 v7; +}; + +struct QuestLogStruct_02 +{ + u16 v0; + u16 v2; + u8 v4; +}; + +void sub_812BFDC(void) +{ + if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_DOME)) && (gUnknown_2023E8A == 1 || gUnknown_2023E8A == 7)) + { + struct QuestLogStruct_01 * questLogTrainerBattleRecord = Alloc(sizeof(struct QuestLogStruct_01)); + struct QuestLogStruct_02 * questLogWildBattleRecord = Alloc(sizeof(struct QuestLogStruct_02)); + u16 questLogMessageType; + u16 playerEndingHP; + u16 playerMaxHP; + + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + switch (gTrainers[gTrainerBattleOpponent_A].trainerClass) + { + case 0x54: + questLogMessageType = 30; + break; + case 0x5a: + questLogMessageType = 33; + break; + case 0x57: + questLogMessageType = 32; + break; + default: + questLogMessageType = 34; + break; + } + questLogTrainerBattleRecord->v0 = gTrainerBattleOpponent_A; + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + questLogTrainerBattleRecord->v2 = gBattleResults.lastOpponentSpecies; + if (GetBattlerSide(gBattleStruct->field_182) == B_SIDE_PLAYER) + questLogTrainerBattleRecord->v4 = gBattleMons[gBattleStruct->field_182].species; + else if (gBattleMons[GetBattlerAtPosition(0)].hp != 0) + questLogTrainerBattleRecord->v4 = gBattleMons[GetBattlerAtPosition(0)].species; + else + questLogTrainerBattleRecord->v4 = gBattleMons[GetBattlerAtPosition(2)].species; + playerEndingHP = gBattleMons[GetBattlerAtPosition(0)].hp + gBattleMons[GetBattlerAtPosition(2)].hp; + playerMaxHP = gBattleMons[GetBattlerAtPosition(0)].maxHP + gBattleMons[GetBattlerAtPosition(2)].maxHP; + } + else + { + questLogTrainerBattleRecord->v2 = gBattleResults.lastOpponentSpecies; + questLogTrainerBattleRecord->v4 = gBattleMons[GetBattlerAtPosition(0)].species; + playerEndingHP = gBattleMons[GetBattlerAtPosition(0)].hp; + playerMaxHP = gBattleMons[GetBattlerAtPosition(0)].maxHP; + } + questLogTrainerBattleRecord->v7 = sav1_map_get_name(); + questLogTrainerBattleRecord->v6 = 0; + if (playerEndingHP < playerMaxHP / 3 * 2) + questLogTrainerBattleRecord->v6 = 1; + if (playerEndingHP < playerMaxHP / 3) + questLogTrainerBattleRecord->v6++; + sub_8113550(questLogMessageType, (const u16 *)questLogTrainerBattleRecord); + } + else + { + if (gUnknown_2023E8A == 1) + { + questLogWildBattleRecord->v0 = GetMonData(gEnemyParty + 0, MON_DATA_SPECIES); + questLogWildBattleRecord->v2 = SPECIES_NONE; + } + else + { + questLogWildBattleRecord->v0 = SPECIES_NONE; + questLogWildBattleRecord->v2 = GetMonData(gEnemyParty + 0, MON_DATA_SPECIES); + } + questLogWildBattleRecord->v4 = sav1_map_get_name(); + sub_8113550(31, (const u16 *)questLogWildBattleRecord); + } + Free(questLogTrainerBattleRecord); + Free(questLogWildBattleRecord); + } +} -- cgit v1.2.3 From d5d220bc5c952aae723a0c0849bfbbdb17dff70a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 23 Nov 2018 21:55:21 -0500 Subject: quest_log_battle, 2 --- src/quest_log_battle.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 57 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/quest_log_battle.c b/src/quest_log_battle.c index c5d8ec2af..b6d6c88f3 100644 --- a/src/quest_log_battle.c +++ b/src/quest_log_battle.c @@ -2,10 +2,11 @@ #include "constants/species.h" #include "malloc.h" #include "battle.h" +#include "link.h" #include "overworld.h" #include "quest_log.h" -struct QuestLogStruct_01 +struct QuestLogStruct_TrainerBattleRecord { u16 v0; u16 v2; @@ -14,19 +15,21 @@ struct QuestLogStruct_01 u8 v7; }; -struct QuestLogStruct_02 +struct QuestLogStruct_WildBattleRecord { u16 v0; u16 v2; u8 v4; }; +void sub_812C334(u32 *, u32 *); + void sub_812BFDC(void) { if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_DOME)) && (gUnknown_2023E8A == 1 || gUnknown_2023E8A == 7)) { - struct QuestLogStruct_01 * questLogTrainerBattleRecord = Alloc(sizeof(struct QuestLogStruct_01)); - struct QuestLogStruct_02 * questLogWildBattleRecord = Alloc(sizeof(struct QuestLogStruct_02)); + struct QuestLogStruct_TrainerBattleRecord * questLogTrainerBattleRecord = Alloc(sizeof(struct QuestLogStruct_TrainerBattleRecord)); + struct QuestLogStruct_WildBattleRecord * questLogWildBattleRecord = Alloc(sizeof(struct QuestLogStruct_WildBattleRecord)); u16 questLogMessageType; u16 playerEndingHP; u16 playerMaxHP; @@ -95,3 +98,53 @@ void sub_812BFDC(void) Free(questLogWildBattleRecord); } } + +struct QuestLogStruct_LinkBattleRecord +{ + u8 v0; + u8 v1[3][7]; +}; + +void sub_812C224(void) +{ + u32 sp0; + u32 sp4[2]; + u16 r8; + s32 r3; + u32 r0; + + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + struct QuestLogStruct_LinkBattleRecord * r5 = Alloc(sizeof(struct QuestLogStruct_LinkBattleRecord)); + r5->v0 = gUnknown_2023E8A - 1; + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + r8 = 15; + sub_812C334(&sp0, sp4); + for (r3 = 0; r3 < 7; r3++) + { + r5->v1[0][r3] = gLinkPlayers[sp0].name[r3]; + r5->v1[1][r3] = gLinkPlayers[sp4[0]].name[r3]; + r5->v1[2][r3] = gLinkPlayers[sp4[1]].name[r3]; + } + } + else + { + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + r8 = 14; + else + { + r0 = InUnionRoom(); + r8 = 13; + if (r0 == TRUE) + r8 = 19; + } + for (r3 = 0; r3 < 7; r3++) + { + r5->v1[0][r3] = gLinkPlayers[gBattleStruct->field_B5 ^ 1].name[r3]; + } + } + sub_8113550(r8, (const u16 *)r5); + Free(r5); + } +} -- cgit v1.2.3 From b3f1b2c2541b6ec3a8b5af2d4a3ca151f69839e4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 23 Nov 2018 22:17:31 -0500 Subject: quest_log_battle, 3 (nonmatching) --- src/quest_log_battle.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 62 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/quest_log_battle.c b/src/quest_log_battle.c index b6d6c88f3..f4d66f4b7 100644 --- a/src/quest_log_battle.c +++ b/src/quest_log_battle.c @@ -22,7 +22,7 @@ struct QuestLogStruct_WildBattleRecord u8 v4; }; -void sub_812C334(u32 *, u32 *); +void sub_812C334(s32 *, s32 *); void sub_812BFDC(void) { @@ -107,8 +107,8 @@ struct QuestLogStruct_LinkBattleRecord void sub_812C224(void) { - u32 sp0; - u32 sp4[2]; + s32 sp0; + s32 sp4[2]; u16 r8; s32 r3; u32 r0; @@ -148,3 +148,62 @@ void sub_812C224(void) Free(r5); } } + +#ifdef NONMATCHING +void sub_812C334(s32 * a0, s32 * a1) +{ + s32 r5; + u8 r2 = gLinkPlayers[gBattleStruct->field_B5].id; + for (r5 = 0; r5 < 4; r5++) + { + if ((r2 ^ 2) == gLinkPlayers[r5].id) + *a0 = r5; + else if (r5 != gBattleStruct->field_B5) + *a1++ = r5; + } +} +#else +NAKED +void sub_812C334(s32 * a0, s32 * a1) +{ + asm_unified("\tpush {r4-r6,lr}\n" + "\tadds r6, r0, 0\n" + "\tldr r3, _0812C35C @ =gLinkPlayers\n" + "\tldr r4, _0812C360 @ =gBattleStruct\n" + "\tldr r0, [r4]\n" + "\tadds r0, 0xB5\n" + "\tldrb r2, [r0]\n" + "\tlsls r0, r2, 3\n" + "\tsubs r0, r2\n" + "\tlsls r0, 2\n" + "\tadds r0, r3\n" + "\tldrb r2, [r0, 0x18]\n" + "\tmovs r0, 0x2\n" + "\tmovs r5, 0\n" + "\teors r2, r0\n" + "_0812C352:\n" + "\tldrh r0, [r3, 0x18]\n" + "\tcmp r2, r0\n" + "\tbne _0812C364\n" + "\tstr r5, [r6]\n" + "\tb _0812C370\n" + "\t.align 2, 0\n" + "_0812C35C: .4byte gLinkPlayers\n" + "_0812C360: .4byte gBattleStruct\n" + "_0812C364:\n" + "\tldr r0, [r4]\n" + "\tadds r0, 0xB5\n" + "\tldrb r0, [r0]\n" + "\tcmp r5, r0\n" + "\tbeq _0812C370\n" + "\tstm r1!, {r5}\n" + "_0812C370:\n" + "\tadds r3, 0x1C\n" + "\tadds r5, 0x1\n" + "\tcmp r5, 0x3\n" + "\tble _0812C352\n" + "\tpop {r4-r6}\n" + "\tpop {r0}\n" + "\tbx r0"); +} +#endif // NONMATCHING -- cgit v1.2.3 From 9b79707eeef69e7521c8e1e5057fe2ebd020656a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 24 Nov 2018 11:20:51 -0500 Subject: match sub_812C334 --- src/quest_log_battle.c | 60 +++++++++----------------------------------------- 1 file changed, 10 insertions(+), 50 deletions(-) (limited to 'src') diff --git a/src/quest_log_battle.c b/src/quest_log_battle.c index f4d66f4b7..17b989951 100644 --- a/src/quest_log_battle.c +++ b/src/quest_log_battle.c @@ -149,61 +149,21 @@ void sub_812C224(void) } } -#ifdef NONMATCHING void sub_812C334(s32 * a0, s32 * a1) { s32 r5; - u8 r2 = gLinkPlayers[gBattleStruct->field_B5].id; + s32 _optimized_out = 0; + u8 r2 = gLinkPlayers[gBattleStruct->field_B5].id ^ 2; for (r5 = 0; r5 < 4; r5++) { - if ((r2 ^ 2) == gLinkPlayers[r5].id) - *a0 = r5; + if (r2 == gLinkPlayers[r5].id) + { + a0[0] = r5; + } else if (r5 != gBattleStruct->field_B5) - *a1++ = r5; + { + a1[_optimized_out] = r5; + _optimized_out++; + } } } -#else -NAKED -void sub_812C334(s32 * a0, s32 * a1) -{ - asm_unified("\tpush {r4-r6,lr}\n" - "\tadds r6, r0, 0\n" - "\tldr r3, _0812C35C @ =gLinkPlayers\n" - "\tldr r4, _0812C360 @ =gBattleStruct\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0xB5\n" - "\tldrb r2, [r0]\n" - "\tlsls r0, r2, 3\n" - "\tsubs r0, r2\n" - "\tlsls r0, 2\n" - "\tadds r0, r3\n" - "\tldrb r2, [r0, 0x18]\n" - "\tmovs r0, 0x2\n" - "\tmovs r5, 0\n" - "\teors r2, r0\n" - "_0812C352:\n" - "\tldrh r0, [r3, 0x18]\n" - "\tcmp r2, r0\n" - "\tbne _0812C364\n" - "\tstr r5, [r6]\n" - "\tb _0812C370\n" - "\t.align 2, 0\n" - "_0812C35C: .4byte gLinkPlayers\n" - "_0812C360: .4byte gBattleStruct\n" - "_0812C364:\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0xB5\n" - "\tldrb r0, [r0]\n" - "\tcmp r5, r0\n" - "\tbeq _0812C370\n" - "\tstm r1!, {r5}\n" - "_0812C370:\n" - "\tadds r3, 0x1C\n" - "\tadds r5, 0x1\n" - "\tcmp r5, 0x3\n" - "\tble _0812C352\n" - "\tpop {r4-r6}\n" - "\tpop {r0}\n" - "\tbx r0"); -} -#endif // NONMATCHING -- cgit v1.2.3 From bc6416ddd96182d5f786add8d1c1945a2f82f2b9 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 24 Nov 2018 11:25:24 -0500 Subject: A bit of cleanup --- src/quest_log_battle.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'src') diff --git a/src/quest_log_battle.c b/src/quest_log_battle.c index 17b989951..c702b6a5c 100644 --- a/src/quest_log_battle.c +++ b/src/quest_log_battle.c @@ -157,13 +157,8 @@ void sub_812C334(s32 * a0, s32 * a1) for (r5 = 0; r5 < 4; r5++) { if (r2 == gLinkPlayers[r5].id) - { a0[0] = r5; - } else if (r5 != gBattleStruct->field_B5) - { - a1[_optimized_out] = r5; - _optimized_out++; - } + a1[_optimized_out++] = r5; } } -- cgit v1.2.3 From 351ee943db92ac091197512921a0e58b286b7bb4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 24 Nov 2018 12:22:36 -0500 Subject: Fame Checker START --- src/fame_checker.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/fame_checker.c (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c new file mode 100644 index 000000000..889b96214 --- /dev/null +++ b/src/fame_checker.c @@ -0,0 +1,51 @@ +#include "global.h" +#include "constants/songs.h" +#include "palette.h" +#include "task.h" +#include "malloc.h" +#include "main.h" +#include "sound.h" + +struct FameCheckerData +{ + u32 unk_00; + u8 filler_04[5]; + u8 unk_09; + u8 unk_0A; + u8 unk_0B; + u8 filler_0C[23]; + u8 unk_23_0:1; + u8 unk_23_1:7; +}; + +EWRAM_DATA struct FameCheckerData * gUnknown_203B0FC = NULL; + +void sub_812C3F8(void); + +void sub_812C380(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void sub_812C394(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_812C3AC(u32 a0) +{ + SetVBlankCallback(NULL); + gUnknown_203B0FC = AllocZeroed(sizeof(struct FameCheckerData)); + gUnknown_203B0FC->unk_00 = a0; + gUnknown_203B0FC->unk_09 = 0; + gUnknown_203B0FC->unk_0A = 0; + gUnknown_203B0FC->unk_0B = 0; + gUnknown_203B0FC->unk_23_0 = FALSE; + PlaySE(SE_W202); + SetMainCallback2(sub_812C3F8); +} -- cgit v1.2.3 From 5a262eec73614998a87f3466a0c0924c7317be36 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 24 Nov 2018 13:08:18 -0500 Subject: sub_812C3F8 --- src/bg.c | 18 ++++---- src/fame_checker.c | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 126 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/bg.c b/src/bg.c index df91e9d4a..5cbd7658e 100644 --- a/src/bg.c +++ b/src/bg.c @@ -391,7 +391,7 @@ void InitBgsFromTemplates(u8 bgMode, const struct BgTemplate *templates, u8 numT } } #else -__attribute__((naked)) +NAKED void InitBgsFromTemplates(u8 bgMode, const struct BgTemplate *templates, u8 numTemplates) { asm(".syntax unified\n\ @@ -634,7 +634,7 @@ bool8 IsDma3ManagerBusyWithBgCopy(void) return FALSE; } #else -__attribute__((naked)) +NAKED bool8 IsDma3ManagerBusyWithBgCopy(void) { asm("push {r4-r7,lr}\n\ @@ -1065,7 +1065,7 @@ void CopyBgTilemapBufferToVram(u8 bg) } } -void CopyToBgTilemapBufferRect(u8 bg, void* src, u8 destX, u8 destY, u8 width, u8 height) +void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 width, u8 height) { u16 destX16; u16 destY16; @@ -1077,7 +1077,7 @@ void CopyToBgTilemapBufferRect(u8 bg, void* src, u8 destX, u8 destY, u8 width, u { case 0: { - u16 * srcCopy = src; + const u16 * srcCopy = src; for (destY16 = destY; destY16 < (destY + height); destY16++) { for (destX16 = destX; destX16 < (destX + width); destX16++) @@ -1089,7 +1089,7 @@ void CopyToBgTilemapBufferRect(u8 bg, void* src, u8 destX, u8 destY, u8 width, u } case 1: { - u8 * srcCopy = src; + const u8 * srcCopy = src; mode = GetBgMetricAffineMode(bg, 0x1); for (destY16 = destY; destY16 < (destY + height); destY16++) { @@ -1104,7 +1104,7 @@ void CopyToBgTilemapBufferRect(u8 bg, void* src, u8 destX, u8 destY, u8 width, u } } -void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette) +void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, const void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette) { CopyRectToBgTilemapBufferRect(bg, src, 0, 0, rectWidth, rectHeight, destX, destY, rectWidth, rectHeight, palette, 0, 0); } @@ -1151,8 +1151,8 @@ void CopyRectToBgTilemapBufferRect(u8 bg, void* src, u8 srcX, u8 srcY, u8 srcWid } } }*/ -__attribute__((naked)) -void CopyRectToBgTilemapBufferRect(u8 bg, void* src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, u16 tileOffset, u16 palette2) +NAKED +void CopyRectToBgTilemapBufferRect(u8 bg, const void* src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, u16 tileOffset, u16 palette2) { asm("push {r4-r7,lr}\n\ mov r7, r10\n\ @@ -1598,7 +1598,7 @@ void CopyTileMapEntry(u16 *src, u16 *dest, s32 palette1, u32 tileOffset, u32 pal *dest = test; } #else -__attribute__((naked)) +NAKED void CopyTileMapEntry(u16 *src, u16 *dest, s32 palette1, u32 tileOffset, u32 palette2) { asm("push {r4-r6,lr}\n\ diff --git a/src/fame_checker.c b/src/fame_checker.c index 889b96214..d311ecb94 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -1,15 +1,21 @@ #include "global.h" #include "constants/songs.h" +#include "bg.h" +#include "gpu_regs.h" #include "palette.h" #include "task.h" #include "malloc.h" #include "main.h" #include "sound.h" +#include "text.h" +#include "window.h" +#include "text_window.h" struct FameCheckerData { u32 unk_00; - u8 filler_04[5]; + u16 unk_04; + u8 filler_06[3]; u8 unk_09; u8 unk_0A; u8 unk_0B; @@ -18,9 +24,40 @@ struct FameCheckerData u8 unk_23_1:7; }; +struct FameCheckerData2 +{ + u8 filler_00[0x88]; +}; + +EWRAM_DATA u16 * gUnknown_203B0F0 = NULL; +EWRAM_DATA u16 * gUnknown_203B0F4 = NULL; +EWRAM_DATA u16 * gUnknown_203B0F8 = NULL; EWRAM_DATA struct FameCheckerData * gUnknown_203B0FC = NULL; +EWRAM_DATA struct FameCheckerData2 * gUnknown_203B100 = NULL; +EWRAM_DATA u32 gUnknown_203B104 = 0; void sub_812C3F8(void); +void sub_812C648(void); +void sub_812C664(u8 taskId); +void sub_812CE9C(void); +void sub_812CEC0(void); +void sub_812D1A8(u8 a0); +void sub_812D420(void); +void sub_812D558(void); +void sub_812D584(void); +void sub_812D594(void); +void sub_812DB28(void); +void sub_812E000(void); +void sub_812E178(u8 a0, s16 a1); + +extern const struct BgTemplate gUnknown_845FBF4[4]; +extern const struct WindowTemplate gUnknown_845FC04[]; +extern const u16 gUnknown_845C600[0x40]; + +extern const u16 gUnknown_8E9F220[0x30]; +extern const u16 gUnknown_8E9F260[0xa50]; +extern const u16 gUnknown_8EA0700[0x400]; +extern const u16 gUnknown_8EA0F00[0x400]; void sub_812C380(void) { @@ -49,3 +86,82 @@ void sub_812C3AC(u32 a0) PlaySE(SE_W202); SetMainCallback2(sub_812C3F8); } + +void sub_812C3F8(void) +{ + switch (gMain.state) + { + case 0: + SetVBlankCallback(NULL); + sub_812D420(); + gMain.state++; + break; + case 1: + sub_812D558(); + gMain.state++; + break; + case 2: + gUnknown_203B0F0 = AllocZeroed(0x800); + gUnknown_203B0F4 = AllocZeroed(0x1000); + gUnknown_203B0F8 = AllocZeroed(0x800); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_845FBF4, ARRAY_COUNT(gUnknown_845FBF4)); + SetBgTilemapBuffer(3, gUnknown_203B0F0); + SetBgTilemapBuffer(2, gUnknown_203B0F8); + SetBgTilemapBuffer(1, gUnknown_203B0F4); + sub_812D594(); + gMain.state++; + break; + case 3: + LoadBgTiles(3, gUnknown_8E9F260, sizeof(gUnknown_8E9F260), 0); + CopyToBgTilemapBufferRect(3, gUnknown_8EA0700, 0, 0, 32, 32); + LoadPalette(gUnknown_8E9F220 + 0x00, 0x00, 0x40); + LoadPalette(gUnknown_8E9F220 + 0x10, 0x10, 0x20); + CopyToBgTilemapBufferRect(2, gUnknown_8EA0F00, 0, 0, 32, 32); + CopyToBgTilemapBufferRect_ChangePalette(1, gUnknown_845C600, 30, 0, 32, 32, 0x11); + LoadPalette(stdpal_get(2), 0xF0, 0x20); + gMain.state++; + break; + case 4: + if (IsDma3ManagerBusyWithBgCopy() != TRUE) + { + ShowBg(0); + ShowBg(1); + ShowBg(2); + ShowBg(3); + CopyBgTilemapBufferToVram(3); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(1); + gMain.state++; + } + break; + case 5: + InitWindows(gUnknown_845FC04); + DeactivateAllTextPrinters(); + sub_812CEC0(); + gUnknown_203B100 = AllocZeroed(sizeof(struct FameCheckerData2)); + sub_812DB28(); + gMain.state++; + break; + case 6: + sub_812C648(); + sub_812D1A8(0); + sub_812CE9C(); + BeginNormalPaletteFade(0xFFFFFFFF,0, 16, 0, 0); + gMain.state++; + break; + case 7: + sub_812D584(); + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD); + SetGpuReg(REG_OFFSET_BLDALPHA, 0x07); + SetGpuReg(REG_OFFSET_BLDY, 0x08); + SetVBlankCallback(sub_812C380); + gUnknown_203B0FC->unk_04 = 0; + sub_812E000(); + sub_812E178(1, 4); + CreateTask(sub_812C664, 0x08); + SetMainCallback2(sub_812C394); + gMain.state = 0; + break; + } +} -- cgit v1.2.3 From 2571ba516cb0f21c19405e943c53eebf5d19ab7a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 24 Nov 2018 15:51:55 -0500 Subject: through sub_812C694 --- src/fame_checker.c | 136 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 126 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index d311ecb94..0f047f612 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -1,6 +1,9 @@ #include "global.h" #include "constants/songs.h" #include "bg.h" +#include "graphics.h" +#include "item_menu.h" +#include "list_menu.h" #include "gpu_regs.h" #include "palette.h" #include "task.h" @@ -13,13 +16,18 @@ struct FameCheckerData { - u32 unk_00; + void (*unk_00)(void); u16 unk_04; - u8 filler_06[3]; + u8 filler_06[1]; + u8 unk_07_0:1; + u8 unk_07_1:1; + u8 unk_07_2:6; + u8 filler_08[1]; u8 unk_09; u8 unk_0A; u8 unk_0B; - u8 filler_0C[23]; + u8 unk_0C[17]; + u8 unk_1D[6]; u8 unk_23_0:1; u8 unk_23_1:7; }; @@ -36,28 +44,48 @@ EWRAM_DATA struct FameCheckerData * gUnknown_203B0FC = NULL; EWRAM_DATA struct FameCheckerData2 * gUnknown_203B100 = NULL; EWRAM_DATA u32 gUnknown_203B104 = 0; +struct ListMenuTemplate gUnknown_3005EB0; +u8 gUnknown_3005EC8; + void sub_812C3F8(void); void sub_812C648(void); void sub_812C664(u8 taskId); +void sub_812C694(u8 taskId); +bool8 sub_812C8F8(u8 taskId); +void sub_812C9BC(u8 taskId); +void sub_812CAD8(u8 taskId); +void sub_812CD3C(void); +void sub_812CE04(u8 taskId); void sub_812CE9C(void); void sub_812CEC0(void); +void sub_812CEE0(u8 windowId); +void sub_812CEFC(u8 taskId, u8 a1); +void sub_812CF3C(u8 taskId); +void sub_812D0F4(u8 a0); void sub_812D1A8(u8 a0); void sub_812D420(void); void sub_812D558(void); void sub_812D584(void); void sub_812D594(void); +bool8 sub_812D6B4(void); +u8 sub_812D724(s16 a0); +u8 sub_812D7E4(void); +u8 sub_812D888(u8 a0); +void sub_812DA14(u8 a0); void sub_812DB28(void); void sub_812E000(void); +void sub_812E048(void); +u16 sub_812E064(void); +void sub_812E110(u8 taskId); void sub_812E178(u8 a0, s16 a1); +void sub_812E4A4(u8 a0); + +extern const u16 gUnknown_845C600[]; extern const struct BgTemplate gUnknown_845FBF4[4]; +extern const struct SpriteSheet gUnknown_845FB9C[]; +extern const struct SpritePalette gUnknown_845FBDC[]; extern const struct WindowTemplate gUnknown_845FC04[]; -extern const u16 gUnknown_845C600[0x40]; - -extern const u16 gUnknown_8E9F220[0x30]; -extern const u16 gUnknown_8E9F260[0xa50]; -extern const u16 gUnknown_8EA0700[0x400]; -extern const u16 gUnknown_8EA0F00[0x400]; void sub_812C380(void) { @@ -74,7 +102,7 @@ void sub_812C394(void) UpdatePaletteFade(); } -void sub_812C3AC(u32 a0) +void sub_812C3AC(void (*a0)(void)) { SetVBlankCallback(NULL); gUnknown_203B0FC = AllocZeroed(sizeof(struct FameCheckerData)); @@ -165,3 +193,91 @@ void sub_812C3F8(void) break; } } + +void sub_812C648(void) +{ + LoadSpriteSheets(gUnknown_845FB9C); + LoadSpritePalettes(gUnknown_845FBDC); +} + +void sub_812C664(u8 taskId) +{ + if (!gPaletteFade.active) + gTasks[taskId].func = sub_812C694; +} + +void sub_812C694(u8 taskId) +{ + u16 r4; + u8 r4_2; + struct Task *task = &gTasks[taskId]; + s16 * data = gTasks[taskId].data; + if (FindTaskIdByFunc(sub_812E110) == 0xFF) + { + RunTextPrinters(); + if ((gMain.newKeys & SELECT_BUTTON) && !gUnknown_203B0FC->unk_07_1 && gUnknown_203B0FC->unk_00 != sub_8107EB8) + task->func = sub_812CF3C; + else if (gMain.newKeys & START_BUTTON) + { + r4 = sub_812E064(); + if (sub_812C8F8(taskId) == TRUE) + { + PlaySE(SE_W100); + } + else if (r4 != gUnknown_203B0FC->unk_07_2 - 1) + { + PlaySE(SE_W100); + FillWindowPixelRect(3, 0x00, 0, 0, 88, 32); + sub_812CEE0(3); + sub_812E178(2, 4); + sub_812E178(1, 5); + sub_812D0F4(1); + task->data[2] = sub_812D888(gUnknown_203B0FC->unk_0C[r4]); + gSprites[task->data[2]].pos2.x = 0xF0; + gSprites[task->data[2]].data[0] = 1; + task->data[3] = sub_812D7E4(); + gSprites[task->data[3]].pos2.x = 0xF0; + gSprites[task->data[3]].data[0] = 1; + task->func = sub_812C9BC; + } + } + else if (gMain.newKeys & A_BUTTON) + { + r4 = ListMenuHandleInput(0); + if (r4 == gUnknown_203B0FC->unk_07_2 - 1) + task->func = sub_812CF3C; + else if (gUnknown_203B0FC->unk_07_1) + { + if (!IsTextPrinterActive(2) && sub_812D6B4() == TRUE) + sub_812CD3C(); + } + else if (gUnknown_203B0FC->unk_07_0) + { + PlaySE(SE_SELECT); + task->data[0] = sub_812D724(task->data[1]); + for (r4_2 = 0; r4_2 < 6; r4_2++) + { + if (r4_2 != task->data[1]) + sub_812CEFC(gUnknown_203B0FC->unk_1D[r4_2], 1); + } + gUnknown_3005EC8 = 0xFF; + sub_812E4A4(0); + sub_812D0F4(2); + if (gSprites[gUnknown_203B0FC->unk_1D[task->data[1]]].data[1] != 0xFF) + { + sub_812CE04(taskId); + sub_812DA14(data[1]); + } + sub_812E048(); + task->func = sub_812CAD8; + } + } + else if (gMain.newKeys & B_BUTTON) + { + if (sub_812C8F8(taskId) != TRUE) + task->func = sub_812CF3C; + } + else + ListMenuHandleInput(0); + } +} -- cgit v1.2.3 From 8ef1594d204e0b933fcfc048e17471191dfae720 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 24 Nov 2018 16:28:05 -0500 Subject: through sub_812CA1C --- src/fame_checker.c | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index 0f047f612..81aeb7aee 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -2,6 +2,7 @@ #include "constants/songs.h" #include "bg.h" #include "graphics.h" +#include "new_menu_helpers.h" #include "item_menu.h" #include "list_menu.h" #include "gpu_regs.h" @@ -29,7 +30,8 @@ struct FameCheckerData u8 unk_0C[17]; u8 unk_1D[6]; u8 unk_23_0:1; - u8 unk_23_1:7; + u8 unk_23_1:1; + u8 unk_23_2:1; }; struct FameCheckerData2 @@ -52,7 +54,9 @@ void sub_812C648(void); void sub_812C664(u8 taskId); void sub_812C694(u8 taskId); bool8 sub_812C8F8(u8 taskId); +void sub_812C990(void); void sub_812C9BC(u8 taskId); +void sub_812CA1C(u8 taskId); void sub_812CAD8(u8 taskId); void sub_812CD3C(void); void sub_812CE04(u8 taskId); @@ -70,7 +74,9 @@ void sub_812D594(void); bool8 sub_812D6B4(void); u8 sub_812D724(s16 a0); u8 sub_812D7E4(void); +void sub_812D800(struct Sprite *sprite); u8 sub_812D888(u8 a0); +void sub_812D9A8(u8 a0, u16 a1); void sub_812DA14(u8 a0); void sub_812DB28(void); void sub_812E000(void); @@ -80,6 +86,7 @@ void sub_812E110(u8 taskId); void sub_812E178(u8 a0, s16 a1); void sub_812E4A4(u8 a0); +extern const u8 gUnknown_84181E4[]; extern const u16 gUnknown_845C600[]; extern const struct BgTemplate gUnknown_845FBF4[4]; @@ -281,3 +288,59 @@ void sub_812C694(u8 taskId) ListMenuHandleInput(0); } } + +bool8 sub_812C8F8(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + if (gUnknown_203B0FC->unk_07_1) + { + gSprites[task->data[2]].data[0] = 2; + gSprites[task->data[2]].pos2.x += 10; + gSprites[task->data[3]].data[0] = 2; + gSprites[task->data[3]].pos2.x += 10; + sub_812CE9C(); + task->func = sub_812CA1C; + sub_812C990(); + gUnknown_203B0FC->unk_23_2 = FALSE; + return TRUE; + } + return FALSE; +} + +void sub_812C990(void) +{ + AddTextPrinterParametrized(2, 2, gUnknown_84181E4, 0, NULL, 2, 1, 3); +} + +void sub_812C9BC(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + if (gSprites[task->data[2]].data[0] == 0) + { + sub_812CD3C(); + gUnknown_203B0FC->unk_07_1 = TRUE; + task->func = sub_812C694; + } + else + ChangeBgX(1, 0xA00, 1); +} + +void sub_812CA1C(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + if (GetBgX(1) != 0) + ChangeBgX(1, 0xA00, 2); + else + ChangeBgX(1, 0x000, 0); + if (gSprites[task->data[2]].data[0] == 0) + { + if (gUnknown_203B0FC->unk_07_0) + sub_812D0F4(0); + sub_812E178(1, 4); + sub_812E178(2, 2); + gUnknown_203B0FC->unk_07_1 = FALSE; + sub_812D9A8(taskId, sub_812E064()); + task->func = sub_812C694; + gSprites[task->data[3]].callback = sub_812D800; + } +} -- cgit v1.2.3 From 93f67f9557109d85e191283b171f7f5e8028b7bf Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 24 Nov 2018 20:04:50 -0500 Subject: sub_812CAD8 New macro `PRESSED(x)` tests `gMain.newKeys & (x)`. The macro itself is inoptimal. However, its use is required to match this function. We suspect this macro may have been implemented globally, hence we put it in `global.h`. Propagating its use through the remainder of this project, as well as [Ruby](/pret/pokeruby) and [Emerald](/pret/pokeemerald), has been left as a to-do item. --- src/fame_checker.c | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 77 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index 81aeb7aee..e83eaa301 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -1,5 +1,6 @@ #include "global.h" #include "constants/songs.h" +#include "sprite.h" #include "bg.h" #include "graphics.h" #include "new_menu_helpers.h" @@ -58,6 +59,7 @@ void sub_812C990(void); void sub_812C9BC(u8 taskId); void sub_812CA1C(u8 taskId); void sub_812CAD8(u8 taskId); +void sub_812CC68(u8 taskId, s8 dx, s8 dy); void sub_812CD3C(void); void sub_812CE04(u8 taskId); void sub_812CE9C(void); @@ -73,11 +75,13 @@ void sub_812D584(void); void sub_812D594(void); bool8 sub_812D6B4(void); u8 sub_812D724(s16 a0); +void sub_812D764(struct Sprite *sprite); u8 sub_812D7E4(void); void sub_812D800(struct Sprite *sprite); u8 sub_812D888(u8 a0); void sub_812D9A8(u8 a0, u16 a1); void sub_812DA14(u8 a0); +void sub_812DB10(void); void sub_812DB28(void); void sub_812E000(void); void sub_812E048(void); @@ -222,9 +226,9 @@ void sub_812C694(u8 taskId) if (FindTaskIdByFunc(sub_812E110) == 0xFF) { RunTextPrinters(); - if ((gMain.newKeys & SELECT_BUTTON) && !gUnknown_203B0FC->unk_07_1 && gUnknown_203B0FC->unk_00 != sub_8107EB8) + if ((PRESSED(SELECT_BUTTON)) && !gUnknown_203B0FC->unk_07_1 && gUnknown_203B0FC->unk_00 != sub_8107EB8) task->func = sub_812CF3C; - else if (gMain.newKeys & START_BUTTON) + else if (PRESSED(START_BUTTON)) { r4 = sub_812E064(); if (sub_812C8F8(taskId) == TRUE) @@ -248,7 +252,7 @@ void sub_812C694(u8 taskId) task->func = sub_812C9BC; } } - else if (gMain.newKeys & A_BUTTON) + else if (PRESSED(A_BUTTON)) { r4 = ListMenuHandleInput(0); if (r4 == gUnknown_203B0FC->unk_07_2 - 1) @@ -279,7 +283,7 @@ void sub_812C694(u8 taskId) task->func = sub_812CAD8; } } - else if (gMain.newKeys & B_BUTTON) + else if (PRESSED(B_BUTTON)) { if (sub_812C8F8(taskId) != TRUE) task->func = sub_812CF3C; @@ -344,3 +348,72 @@ void sub_812CA1C(u8 taskId) gSprites[task->data[3]].callback = sub_812D800; } } + +void sub_812CAD8(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + s16 *data = gTasks[taskId].data; + + RunTextPrinters(); + if (PRESSED(A_BUTTON) && !IsTextPrinterActive(2)) + { + u8 spriteId = gUnknown_203B0FC->unk_1D[data[1]]; + if (gSprites[spriteId].data[1] != 0xFF) + sub_812CE04(taskId); + } + if (PRESSED(B_BUTTON)) + { + u8 r4; + PlaySE(SE_SELECT); + for (r4 = 0; r4 < 6; r4++) + sub_812CEFC(gUnknown_203B0FC->unk_1D[r4], 0); + sub_812CE9C(); + gSprites[task->data[0]].callback = sub_812D764; + if (gUnknown_3005EC8 != 0xFF) + sub_812DB10(); + sub_812E4A4(1); + sub_812D0F4(0); + sub_812E000(); + sub_812C990(); + task->func = sub_812C694; + } + else if (PRESSED(DPAD_UP) || PRESSED(DPAD_DOWN)) + { + if (task->data[1] >= 3) + { + task->data[1] -= 3; + sub_812CC68(taskId, 0, -0x1b); + } + else + { + task->data[1] += 3; + sub_812CC68(taskId, 0, +0x1b); + } + } + else if (PRESSED(DPAD_LEFT)) + { + if (task->data[1] == 0 || task->data[1] % 3 == 0) + { + task->data[1] += 2; + sub_812CC68(taskId, +0x5e, 0); + } + else + { + task->data[1]--; + sub_812CC68(taskId, -0x2f, 0); + } + } + else if (PRESSED(DPAD_RIGHT)) + { + if ((task->data[1] + 1) % 3 == 0) + { + task->data[1] -= 2; + sub_812CC68(taskId, -0x5e, 0); + } + else + { + task->data[1]++; + sub_812CC68(taskId, +0x2f, 0); + } + } +} -- cgit v1.2.3 From c60b28011871abaf987a46a6da6823ce451fa66d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 24 Nov 2018 21:41:18 -0500 Subject: through sub_812CD3C --- src/fame_checker.c | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index e83eaa301..70fad0094 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -14,6 +14,7 @@ #include "sound.h" #include "text.h" #include "window.h" +#include "string_util.h" #include "text_window.h" struct FameCheckerData @@ -65,7 +66,7 @@ void sub_812CE04(u8 taskId); void sub_812CE9C(void); void sub_812CEC0(void); void sub_812CEE0(u8 windowId); -void sub_812CEFC(u8 taskId, u8 a1); +bool8 sub_812CEFC(u8 taskId, u8 a1); void sub_812CF3C(u8 taskId); void sub_812D0F4(u8 a0); void sub_812D1A8(u8 a0); @@ -93,6 +94,7 @@ void sub_812E4A4(u8 a0); extern const u8 gUnknown_84181E4[]; extern const u16 gUnknown_845C600[]; +extern const u8 *const gUnknown_845F63C[]; extern const struct BgTemplate gUnknown_845FBF4[4]; extern const struct SpriteSheet gUnknown_845FB9C[]; extern const struct SpritePalette gUnknown_845FBDC[]; @@ -417,3 +419,43 @@ void sub_812CAD8(u8 taskId) } } } + +void sub_812CC68(u8 taskId, s8 dx, s8 dy) +{ + u8 i; + s16 *data = gTasks[taskId].data; + PlaySE(SE_W155); + gSprites[data[0]].pos1.x += dx; + gSprites[data[0]].pos1.y += dy; + for (i = 0; i < 6; i++) + sub_812CEFC(gUnknown_203B0FC->unk_1D[i], 1); + FillWindowPixelRect(2, 0x11, 0, 0, 0xd0, 0x20); + sub_812C990(); + if (sub_812CEFC(gUnknown_203B0FC->unk_1D[data[1]], 0) == TRUE) + { + sub_812CE04(taskId); + sub_812DA14(data[1]); + } + else if (gUnknown_3005EC8 != 0xFF) + sub_812DB10(); +} + +void sub_812CD3C(void) +{ + u8 r8 = 0; + u16 r6 = sub_812E064(); + if (gSaveBlock1Ptr->fameChecker[gUnknown_203B0FC->unk_0C[r6]].unk_0_0 != 2) + { + sub_812CE9C(); + sub_812C990(); + } + else + { + FillWindowPixelRect(2, 0x11, 0, 0, 0xd0, 0x20); + if (sub_812D6B4() == TRUE) + r8 = 16; + StringExpandPlaceholders(gStringVar4, gUnknown_845F63C[gUnknown_203B0FC->unk_0C[r6] + r8]); + AddTextPrinterParametrized(2, 2, gStringVar4, sub_80F78A8(), 0, 2, 1, 3); + sub_812CEE0(2); + } +} -- cgit v1.2.3 From 3bbaaa4a737193294499176cce4638100c0941f5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 24 Nov 2018 22:13:10 -0500 Subject: sub_812CE04 --- src/fame_checker.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index 70fad0094..a7feb0cf8 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -95,6 +95,7 @@ extern const u8 gUnknown_84181E4[]; extern const u16 gUnknown_845C600[]; extern const u8 *const gUnknown_845F63C[]; +extern const u8 *const gUnknown_845F6BC[]; extern const struct BgTemplate gUnknown_845FBF4[4]; extern const struct SpriteSheet gUnknown_845FB9C[]; extern const struct SpritePalette gUnknown_845FBDC[]; @@ -455,7 +456,17 @@ void sub_812CD3C(void) if (sub_812D6B4() == TRUE) r8 = 16; StringExpandPlaceholders(gStringVar4, gUnknown_845F63C[gUnknown_203B0FC->unk_0C[r6] + r8]); - AddTextPrinterParametrized(2, 2, gStringVar4, sub_80F78A8(), 0, 2, 1, 3); + AddTextPrinterParametrized(2, 2, gStringVar4, sub_80F78A8(), NULL, 2, 1, 3); sub_812CEE0(2); } } + +void sub_812CE04(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + u16 r5 = sub_812E064(); + FillWindowPixelRect(2, 0x11, 0, 0, 0xd0, 0x20); + StringExpandPlaceholders(gStringVar4, gUnknown_845F6BC[gUnknown_203B0FC->unk_0C[r5] * 6 + data[1]]); + AddTextPrinterParametrized(2, 2, gStringVar4, sub_80F78A8(), NULL, 2, 1, 3); + sub_812CEE0(2); +} -- cgit v1.2.3 From 8f9ec933264a3ecfe204b653c508feacde3c976d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 24 Nov 2018 23:02:38 -0500 Subject: through sub_812D094 --- src/fame_checker.c | 102 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 95 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index a7feb0cf8..bb2fe29b5 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -19,13 +19,13 @@ struct FameCheckerData { - void (*unk_00)(void); + MainCallback unk_00; u16 unk_04; u8 filler_06[1]; u8 unk_07_0:1; u8 unk_07_1:1; u8 unk_07_2:6; - u8 filler_08[1]; + u8 unk_08; u8 unk_09; u8 unk_0A; u8 unk_0B; @@ -66,8 +66,10 @@ void sub_812CE04(u8 taskId); void sub_812CE9C(void); void sub_812CEC0(void); void sub_812CEE0(u8 windowId); -bool8 sub_812CEFC(u8 taskId, u8 a1); +bool8 sub_812CEFC(u8 taskId, u8 objMode); void sub_812CF3C(u8 taskId); +void sub_812CF7C(u8 taskId); +void sub_812D094(u8 windowId); void sub_812D0F4(u8 a0); void sub_812D1A8(u8 a0); void sub_812D420(void); @@ -75,10 +77,14 @@ void sub_812D558(void); void sub_812D584(void); void sub_812D594(void); bool8 sub_812D6B4(void); +void sub_812D70C(void); u8 sub_812D724(s16 a0); void sub_812D764(struct Sprite *sprite); +void sub_812D770(void); +void sub_812D7C8(void); u8 sub_812D7E4(void); void sub_812D800(struct Sprite *sprite); +void sub_812D814(void); u8 sub_812D888(u8 a0); void sub_812D9A8(u8 a0, u16 a1); void sub_812DA14(u8 a0); @@ -272,7 +278,7 @@ void sub_812C694(u8 taskId) for (r4_2 = 0; r4_2 < 6; r4_2++) { if (r4_2 != task->data[1]) - sub_812CEFC(gUnknown_203B0FC->unk_1D[r4_2], 1); + sub_812CEFC(gUnknown_203B0FC->unk_1D[r4_2], ST_OAM_OBJ_BLEND); } gUnknown_3005EC8 = 0xFF; sub_812E4A4(0); @@ -369,7 +375,7 @@ void sub_812CAD8(u8 taskId) u8 r4; PlaySE(SE_SELECT); for (r4 = 0; r4 < 6; r4++) - sub_812CEFC(gUnknown_203B0FC->unk_1D[r4], 0); + sub_812CEFC(gUnknown_203B0FC->unk_1D[r4], ST_OAM_OBJ_NORMAL); sub_812CE9C(); gSprites[task->data[0]].callback = sub_812D764; if (gUnknown_3005EC8 != 0xFF) @@ -429,10 +435,10 @@ void sub_812CC68(u8 taskId, s8 dx, s8 dy) gSprites[data[0]].pos1.x += dx; gSprites[data[0]].pos1.y += dy; for (i = 0; i < 6; i++) - sub_812CEFC(gUnknown_203B0FC->unk_1D[i], 1); + sub_812CEFC(gUnknown_203B0FC->unk_1D[i], ST_OAM_OBJ_BLEND); FillWindowPixelRect(2, 0x11, 0, 0, 0xd0, 0x20); sub_812C990(); - if (sub_812CEFC(gUnknown_203B0FC->unk_1D[data[1]], 0) == TRUE) + if (sub_812CEFC(gUnknown_203B0FC->unk_1D[data[1]], ST_OAM_OBJ_NORMAL) == TRUE) { sub_812CE04(taskId); sub_812DA14(data[1]); @@ -470,3 +476,85 @@ void sub_812CE04(u8 taskId) AddTextPrinterParametrized(2, 2, gStringVar4, sub_80F78A8(), NULL, 2, 1, 3); sub_812CEE0(2); } + +void sub_812CE9C(void) +{ + FillWindowPixelRect(2, 0x11, 0, 0, 0xd0, 0x20); + sub_812CEE0(2); +} + +void sub_812CEC0(void) +{ + sub_80F6E9C(); + sub_80F6EE4(2, 1); + sub_812CEE0(2); + sub_812CEE0(0); +} + +void sub_812CEE0(u8 windowId) +{ + PutWindowTilemap(windowId); + CopyWindowToVram(windowId, 3); +} + +bool8 sub_812CEFC(u8 spriteId, u8 objMode) +{ + if (gSprites[spriteId].data[1] != 0xFF) + { + gSprites[spriteId].oam.objMode = objMode; + return TRUE; + } + return FALSE; +} + +void sub_812CF3C(u8 taskId) +{ + PlaySE(SE_W202); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[taskId].func = sub_812CF7C; +} + +void sub_812CF7C(u8 taskId) +{ + u8 r4; + + if (!gPaletteFade.active) + { + if (gUnknown_203B0FC->unk_07_1) + { + sub_812D9A8(taskId, sub_812E064()); + FreeSpriteOamMatrix(&gSprites[gTasks[taskId].data[3]]); + DestroySprite(&gSprites[gTasks[taskId].data[3]]); + } + for (r4 = 0; r4 < 6; r4++) + { + DestroySprite(&gSprites[gUnknown_203B0FC->unk_1D[r4]]); + } + sub_812D814(); + sub_812D7C8(); + sub_812D70C(); + sub_812D770(); + sub_812E048(); + SetMainCallback2(gUnknown_203B0FC->unk_00); + sub_810713C(gUnknown_203B0FC->unk_08, 0, 0); + Free(gUnknown_203B0F0); + Free(gUnknown_203B0F4); + Free(gUnknown_203B0F8); + Free(gUnknown_203B0FC); + Free(gUnknown_203B100); + sub_812D094(0); + sub_812D094(1); + sub_812D094(2); + sub_812D094(3); + FreeAllWindowBuffers(); + DestroyTask(taskId); + } +} + +void sub_812D094(u8 windowId) +{ + FillWindowPixelBuffer(windowId, 0); + ClearWindowTilemap(windowId); + CopyWindowToVram(windowId, 2); + RemoveWindow(windowId); +} -- cgit v1.2.3 From b09bbc65bed4716bc944306f64b89301dcaaffe6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 24 Nov 2018 23:41:08 -0500 Subject: through sub_812D174 --- src/fame_checker.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index bb2fe29b5..ed7544d98 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -3,6 +3,8 @@ #include "sprite.h" #include "bg.h" #include "graphics.h" +#include "battle_setup.h" +#include "menu.h" #include "new_menu_helpers.h" #include "item_menu.h" #include "list_menu.h" @@ -98,9 +100,13 @@ void sub_812E178(u8 a0, s16 a1); void sub_812E4A4(u8 a0); extern const u8 gUnknown_84181E4[]; +extern const u8 gUnknown_841E5A4[]; +extern const u8 gUnknown_841E5B9[]; +extern const u8 gUnknown_841E5D2[]; extern const u16 gUnknown_845C600[]; extern const u8 *const gUnknown_845F63C[]; +extern const struct TextColor gUnknown_845F5E0; extern const u8 *const gUnknown_845F6BC[]; extern const struct BgTemplate gUnknown_845FBF4[4]; extern const struct SpriteSheet gUnknown_845FB9C[]; @@ -558,3 +564,40 @@ void sub_812D094(u8 windowId) CopyWindowToVram(windowId, 2); RemoveWindow(windowId); } + +u8 sub_812D0C0(u8 a0) +{ + if (HasTrainerAlreadyBeenFought(0x15e) == TRUE) + { + if (a0 == 9) + return 15; + if (a0 > 9) + return a0 - 1; + } + return a0; +} + +void sub_812D0F4(u8 a0) +{ + const u8 * r5 = gUnknown_841E5A4; + s32 width; + if (a0 != 0) + { + r5 = gUnknown_841E5D2; + if (a0 == 1) + r5 = gUnknown_841E5B9; + } + width = GetStringWidth(0, r5, 0); + FillWindowPixelRect(1, 0x00, 0, 0, 0xc0, 0x10); + AddTextPrinterParametrized2(1, 0, 188 - width, 0, 0, 2, &gUnknown_845F5E0, -1, r5); + sub_812CEE0(1); +} + +void sub_812D174(void) +{ + u8 r4; + for (r4 = 0; r4 < 6; r4++) + { + DestroySprite(&gSprites[gUnknown_203B0FC->unk_1D[r4]]); + } +} -- cgit v1.2.3 From 5b30b664bebb2ba890b86cd09f40c7c53da05659 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 25 Nov 2018 08:21:08 -0500 Subject: sub_812D1A8 --- src/fame_checker.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index ed7544d98..e13fc1913 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -17,6 +17,7 @@ #include "text.h" #include "window.h" #include "string_util.h" +#include "field_map_obj.h" #include "text_window.h" struct FameCheckerData @@ -73,7 +74,7 @@ void sub_812CF3C(u8 taskId); void sub_812CF7C(u8 taskId); void sub_812D094(u8 windowId); void sub_812D0F4(u8 a0); -void sub_812D1A8(u8 a0); +bool8 sub_812D1A8(u8 a0); void sub_812D420(void); void sub_812D558(void); void sub_812D584(void); @@ -83,6 +84,7 @@ void sub_812D70C(void); u8 sub_812D724(s16 a0); void sub_812D764(struct Sprite *sprite); void sub_812D770(void); +u8 sub_812D780(u8, u8); void sub_812D7C8(void); u8 sub_812D7E4(void); void sub_812D800(struct Sprite *sprite); @@ -108,6 +110,7 @@ extern const u16 gUnknown_845C600[]; extern const u8 *const gUnknown_845F63C[]; extern const struct TextColor gUnknown_845F5E0; extern const u8 *const gUnknown_845F6BC[]; +extern const u8 gUnknown_845F83C[]; extern const struct BgTemplate gUnknown_845FBF4[4]; extern const struct SpriteSheet gUnknown_845FB9C[]; extern const struct SpritePalette gUnknown_845FBDC[]; @@ -601,3 +604,45 @@ void sub_812D174(void) DestroySprite(&gSprites[gUnknown_203B0FC->unk_1D[r4]]); } } + +bool8 sub_812D1A8(u8 a0) +{ + // r8 <- a0 + bool8 r5 = FALSE; + u8 r6; + for (r6 = 0; r6 < 6; r6++) + { + if ((gSaveBlock1Ptr->fameChecker[gUnknown_203B0FC->unk_0C[a0]].unk_0_2 >> r6) & 1) + { + gUnknown_203B0FC->unk_1D[r6] = sub_805EB44( + gUnknown_845F83C[gUnknown_203B0FC->unk_0C[a0] * 6 + r6], + r6, + 47 * (r6 % 3) + 0x72, + 27 * (r6 / 3) + 0x2F + ); + r5 = TRUE; + } + else + { + gUnknown_203B0FC->unk_1D[r6] = sub_812D780( + 47 * (r6 % 3) + 0x72, + 27 * (r6 / 3) + 0x1F + ); + gSprites[gUnknown_203B0FC->unk_1D[r6]].data[1] = 0xFF; + } + } + if (r5 == TRUE) + { + gUnknown_203B0FC->unk_07_0 = TRUE; + if (gUnknown_203B0FC->unk_07_1) + sub_812D0F4(TRUE); + else + sub_812D0F4(FALSE); + } + else + { + gUnknown_203B0FC->unk_07_0 = FALSE; + sub_812D0F4(TRUE); + } + return r5; +} -- cgit v1.2.3 From 83dc744b85346386dea95ba70323917ca1e2a3ed Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 25 Nov 2018 18:32:21 -0500 Subject: through sub_812D388 --- src/fame_checker.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index e13fc1913..436e60b3a 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -646,3 +646,28 @@ bool8 sub_812D1A8(u8 a0) } return r5; } + +void sub_812D304(void) +{ + u8 r4; + for (r4 = 0; r4 < 16; r4++) + { + gSaveBlock1Ptr->fameChecker[r4].unk_0_0 = 0; + gSaveBlock1Ptr->fameChecker[r4].unk_0_2 = 0; + gSaveBlock1Ptr->fameChecker[r4].unk_0_E = 0; + } + gSaveBlock1Ptr->fameChecker[0].unk_0_0 = 2; +} + +void sub_812D388(void) +{ + u8 r5, r4; + for (r5 = 0; r5 < 16; r5++) + { + gSaveBlock1Ptr->fameChecker[r5].unk_0_0 = 2; + for (r4 = 0; r4 < 6; r4++) + { + gSaveBlock1Ptr->fameChecker[r5].unk_0_2 |= (1 << r4); + } + } +} -- cgit v1.2.3 From 5090c3fab25806fd972fd47360fef30ab095317d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 25 Nov 2018 18:46:32 -0500 Subject: sub_812D420 --- src/fame_checker.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index 436e60b3a..543fd8b87 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -671,3 +671,31 @@ void sub_812D388(void) } } } + +void sub_812D420(void) +{ + void * vram = (void *)VRAM; + DmaClearLarge16(3, vram, VRAM_SIZE, 0x1000); + DmaClear32(3, OAM, OAM_SIZE); + DmaClear16(3, PLTT, PLTT_SIZE); + SetGpuReg(REG_OFFSET_DISPCNT, 0); + SetGpuReg(REG_OFFSET_BG0CNT, 0); + SetGpuReg(REG_OFFSET_BG0HOFS, 0); + SetGpuReg(REG_OFFSET_BG0VOFS, 0); + SetGpuReg(REG_OFFSET_BG1CNT, 0); + SetGpuReg(REG_OFFSET_BG1HOFS, 0); + SetGpuReg(REG_OFFSET_BG1VOFS, 0); + SetGpuReg(REG_OFFSET_BG2CNT, 0); + SetGpuReg(REG_OFFSET_BG2HOFS, 0); + SetGpuReg(REG_OFFSET_BG2VOFS, 0); + SetGpuReg(REG_OFFSET_BG3CNT, 0); + SetGpuReg(REG_OFFSET_BG3HOFS, 0); + SetGpuReg(REG_OFFSET_BG3VOFS, 0); + SetGpuReg(REG_OFFSET_WIN0H, 0); + SetGpuReg(REG_OFFSET_WIN0V, 0); + SetGpuReg(REG_OFFSET_WININ, 0); + SetGpuReg(REG_OFFSET_WINOUT, 0); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); +} -- cgit v1.2.3 From f05f41b89a0de0e0c32a06d6477de0d5e2fad243 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 25 Nov 2018 19:21:05 -0500 Subject: through sub_812D5EC --- src/fame_checker.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index 543fd8b87..d309e59a3 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -2,9 +2,12 @@ #include "constants/songs.h" #include "sprite.h" #include "bg.h" +#include "event_data.h" #include "graphics.h" #include "battle_setup.h" #include "menu.h" +#include "battle_dome_cards.h" +#include "scanline_effect.h" #include "new_menu_helpers.h" #include "item_menu.h" #include "list_menu.h" @@ -79,6 +82,7 @@ void sub_812D420(void); void sub_812D558(void); void sub_812D584(void); void sub_812D594(void); +void sub_812D650(void); bool8 sub_812D6B4(void); void sub_812D70C(void); u8 sub_812D724(s16 a0); @@ -699,3 +703,42 @@ void sub_812D420(void) SetGpuReg(REG_OFFSET_BLDALPHA, 0); SetGpuReg(REG_OFFSET_BLDY, 0); } + +void sub_812D558(void) +{ + remove_some_task(); + ResetTasks(); + ResetSpriteData(); + dp13_810BB8C(); + ResetPaletteFade(); + npc_paltag_set_load(0); + gReservedSpritePaletteCount = 7; + +} + +void sub_812D584(void) +{ + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON); +} + +void sub_812D594(void) +{ + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgX(2, 0, 0); + ChangeBgY(2, 0, 0); + ChangeBgX(3, 0, 0); + ChangeBgY(3, 0, 0); +} + +void sub_812D5EC(void) +{ + if (gUnknown_20370C0 < 16 && gSpecialVar_0x8005 < 6) + { + gSaveBlock1Ptr->fameChecker[gUnknown_20370C0].unk_0_2 |= (1 << gSpecialVar_0x8005); + gSpecialVar_0x8005 = 1; + sub_812D650(); + } +} -- cgit v1.2.3 From 1f9c58abedd92168b75e2d44abd6521fd82c78b2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 25 Nov 2018 20:14:34 -0500 Subject: through sub_812D814 --- src/fame_checker.c | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index d309e59a3..c5039fa5f 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -23,6 +23,14 @@ #include "field_map_obj.h" #include "text_window.h" +#define SPRITETAG_1000 1000 +#define SPRITETAG_1001 1001 +#define SPRITETAG_1002 1002 +#define SPRITETAG_1006 1006 +#define SPRITETAG_1007 1007 +#define SPRITETAG_1008 1008 +#define SPRITETAG_1009 1009 + struct FameCheckerData { MainCallback unk_00; @@ -119,6 +127,9 @@ extern const struct BgTemplate gUnknown_845FBF4[4]; extern const struct SpriteSheet gUnknown_845FB9C[]; extern const struct SpritePalette gUnknown_845FBDC[]; extern const struct WindowTemplate gUnknown_845FC04[]; +extern const struct SpriteTemplate gUnknown_845FC44; +extern const struct SpriteTemplate gUnknown_845FC78; +extern const struct SpriteTemplate gUnknown_845FCB8; void sub_812C380(void) { @@ -742,3 +753,83 @@ void sub_812D5EC(void) sub_812D650(); } } + +void sub_812D650(void) +{ + if (gUnknown_20370C0 < 16 && gSpecialVar_0x8005 < 3) + { + if (gSpecialVar_0x8005 == 0) + return; + if (gSpecialVar_0x8005 == 1 && gSaveBlock1Ptr->fameChecker[gUnknown_20370C0].unk_0_0 == 2) + return; + gSaveBlock1Ptr->fameChecker[gUnknown_20370C0].unk_0_0 = gSpecialVar_0x8005; + } +} + +bool8 sub_812D6B4(void) +{ + u8 r2; + u8 r1 = gUnknown_203B0FC->unk_0C[sub_812E064()]; + for (r2 = 0; r2 < 6; r2++) + { + if (!((gSaveBlock1Ptr->fameChecker[r1].unk_0_2 >> r2) & 1)) + return FALSE; + } + return TRUE; +} + +void sub_812D70C(void) +{ + FreeSpriteTilesByTag(SPRITETAG_1000); + FreeSpritePaletteByTag(SPRITETAG_1000); +} + +u8 sub_812D724(s16 a0) +{ + s16 r4 = a0 >= 3 ? 61 : 34; + s16 r1 = 47 * (a0 % 3) + 0x72; + return CreateSprite(&gUnknown_845FC44, r1, r4, 0); +} + +void sub_812D764(struct Sprite * sprite) +{ + DestroySprite(sprite); +} + +void sub_812D770(void) +{ + FreeSpriteTilesByTag(SPRITETAG_1001); +} + +u8 sub_812D780(u8 x, u8 y) +{ + u8 spriteId = CreateSprite(&gUnknown_845FC78, x, y, 8); + gSprites[spriteId].oam.priority = 2; + gSprites[spriteId].oam.paletteNum = 2; + return spriteId; +} + +void sub_812D7C8(void) +{ + FreeSpriteTilesByTag(SPRITETAG_1002); + FreeSpritePaletteByTag(SPRITETAG_1002); +} + +u8 sub_812D7E4(void) +{ + return CreateSprite(&gUnknown_845FCB8, 0xe2, 0x42, 0); +} + +void sub_812D800(struct Sprite * sprite) +{ + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); +} + +void sub_812D814(void) +{ + FreeSpriteTilesByTag(SPRITETAG_1006); + FreeSpriteTilesByTag(SPRITETAG_1007); + FreeSpriteTilesByTag(SPRITETAG_1008); + FreeSpriteTilesByTag(SPRITETAG_1009); +} -- cgit v1.2.3 From 5c013a089798efa1819986528de4af8470a9c329 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 25 Nov 2018 21:12:07 -0500 Subject: through sub_812DA14 --- src/fame_checker.c | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++++- src/text.c | 22 +++++------ 2 files changed, 118 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index c5039fa5f..0c7072fb4 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -109,6 +109,7 @@ void sub_812DB28(void); void sub_812E000(void); void sub_812E048(void); u16 sub_812E064(void); +void sub_812E094(u8); void sub_812E110(u8 taskId); void sub_812E178(u8 a0, s16 a1); void sub_812E4A4(u8 a0); @@ -119,9 +120,18 @@ extern const u8 gUnknown_841E5B9[]; extern const u8 gUnknown_841E5D2[]; extern const u16 gUnknown_845C600[]; -extern const u8 *const gUnknown_845F63C[]; +extern const u16 gUnknown_845DD20[]; +extern const u16 gUnknown_845E540[]; +extern const u16 gUnknown_845ED60[]; +extern const u16 gUnknown_845F580[]; +extern const u16 gUnknown_845F5C0[]; extern const struct TextColor gUnknown_845F5E0; +extern const struct TextColor gUnknown_845F5E3; +extern const u8 gUnknown_845F61C[]; +extern const u8 *const gUnknown_845F63C[]; extern const u8 *const gUnknown_845F6BC[]; +extern const u8 *const gUnknown_845F89C[]; +extern const u8 *const gUnknown_845FA1C[]; extern const u8 gUnknown_845F83C[]; extern const struct BgTemplate gUnknown_845FBF4[4]; extern const struct SpriteSheet gUnknown_845FB9C[]; @@ -130,6 +140,10 @@ extern const struct WindowTemplate gUnknown_845FC04[]; extern const struct SpriteTemplate gUnknown_845FC44; extern const struct SpriteTemplate gUnknown_845FC78; extern const struct SpriteTemplate gUnknown_845FCB8; +extern const struct SpriteTemplate gUnknown_845FCE4; +extern const struct SpriteTemplate gUnknown_845FCFC; +extern const struct SpriteTemplate gUnknown_845FD14; +extern const struct SpriteTemplate gUnknown_845FD2C; void sub_812C380(void) { @@ -833,3 +847,95 @@ void sub_812D814(void) FreeSpriteTilesByTag(SPRITETAG_1008); FreeSpriteTilesByTag(SPRITETAG_1009); } + +void sub_812D840(struct Sprite * sprite) +{ + if (sprite->data[0] == 1) + { + if (sprite->pos2.x - 10 < 0) + { + sprite->pos2.x = 0; + sprite->data[0] = 0; + } + else + sprite->pos2.x -= 10; + } + else if (sprite->data[0] == 2) + { + if (sprite->pos2.x > 240) + { + sprite->pos2.x = 240; + sprite->data[0] = 0; + } + else + sprite->pos2.x += 10; + } +} + +u8 sub_812D888(u8 a0) +{ + u8 r4; + if (a0 == 1) + { + r4 = CreateSprite(&gUnknown_845FCE4, 0x94, 0x42, 0); + LoadPalette(gUnknown_845ED60, 0x160, 0x20); + gSprites[r4].oam.paletteNum = 6; + } + else if (a0 == 14) + { + r4 = CreateSprite(&gUnknown_845FCFC, 0x94, 0x42, 0); + LoadPalette(gUnknown_845DD20, 0x160, 0x20); + gSprites[r4].oam.paletteNum = 6; + } + else if (a0 == 0) + { + r4 = CreateSprite(&gUnknown_845FD14, 0x94, 0x42, 0); + LoadPalette(gUnknown_845F580, 0x160, 0x20); + gSprites[r4].oam.paletteNum = 6; + } + else if (a0 == 13) + { + r4 = CreateSprite(&gUnknown_845FD2C, 0x94, 0x42, 0); + LoadPalette(gUnknown_845E540, 0x160, 0x20); + gSprites[r4].oam.paletteNum = 6; + } + else + { + r4 = sub_810C2A4(gUnknown_845F61C[a0], 1, 0x94, 0x42, 6, 0xFFFF); + } + gSprites[r4].callback = sub_812D840; + if (gSaveBlock1Ptr->fameChecker[a0].unk_0_0 == 1) + LoadPalette(gUnknown_845F5C0, 0x160, 0x20); + return r4; +} + +void sub_812D9A8(u8 taskId, u16 a1) +{ + s16 * data = gTasks[taskId].data; + u16 r1 = a1; + if (a1 == gUnknown_203B0FC->unk_07_2 - 1) + r1 = a1 - 1; + if ( gUnknown_203B0FC->unk_0C[r1] == 1 + || gUnknown_203B0FC->unk_0C[r1] == 14 + || gUnknown_203B0FC->unk_0C[r1] == 0 + || gUnknown_203B0FC->unk_0C[r1] == 13 + ) + DestroySprite(&gSprites[data[2]]); + else + sub_810C2E8(data[2]); +} + +void sub_812DA14(u8 a0) +{ + s32 width; + u32 r5 = 6 * gUnknown_203B0FC->unk_0C[sub_812E064()] + a0; + sub_812E094(1); + gUnknown_3005EC8 = 1; + FillWindowPixelRect(3, 0x00, 0, 0, 0x58, 0x20); + width = (0x54 - GetStringWidth(0, gUnknown_845F89C[r5], 0)) / 2; + AddTextPrinterParametrized2(3, 0, width, 0, 0, 2, &gUnknown_845F5E3, -1, gUnknown_845F89C[r5]); + StringExpandPlaceholders(gStringVar1, gUnknown_845FA1C[r5]); + width = (0x54 - GetStringWidth(0, gStringVar1, 0)) / 2; + AddTextPrinterParametrized2(3, 0, width, 10, 0, 2, &gUnknown_845F5E3, -1, gStringVar1); + sub_812CEE0(3); +} diff --git a/src/text.c b/src/text.c index d4d25b5aa..874e12fd5 100644 --- a/src/text.c +++ b/src/text.c @@ -17,7 +17,7 @@ extern void BlitBitmapRectToWindow(u8 windowId, const u8 *pixels, u16 srcX, u16 extern u8 GetKeypadIconWidth(u8 keypadIconId); extern void CopyWindowToVram(u8 windowId, u8 mode); extern u16 Font6Func(struct TextPrinter *textPrinter); -extern u32 GetGlyphWidthFont6(u16 glyphId, bool32 isJapanese); +extern s32 GetGlyphWidthFont6(u16 glyphId, bool32 isJapanese); extern void PlaySE(u16 songNum); extern u8* UnkTextUtil_GetPtrI(u8 a1); @@ -1388,7 +1388,7 @@ _08005D6A:\n\ .syntax divided"); } -u32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing) +s32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing) { int i; u8 width; @@ -1479,7 +1479,7 @@ u32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing) return (u8)(GetFontAttribute(fontId, 0) + letterSpacing) * width; } -u32 (*GetFontWidthFunc(u8 glyphId))(u16 _glyphId, bool32 _isJapanese) +s32 (*GetFontWidthFunc(u8 glyphId))(u16 _glyphId, bool32 _isJapanese) { u32 i; @@ -1492,11 +1492,11 @@ u32 (*GetFontWidthFunc(u8 glyphId))(u16 _glyphId, bool32 _isJapanese) return NULL; } -u32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing) +s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing) { bool8 isJapanese; int minGlyphWidth; - u32 (*func)(u16 glyphId, bool32 isJapanese); + s32 (*func)(u16 glyphId, bool32 isJapanese); int localLetterSpacing; register u32 lineWidth asm("r5"); u8 *bufferPointer; @@ -1863,7 +1863,7 @@ void DecompressGlyphFont0(u16 glyphId, bool32 isJapanese) } } -u32 GetGlyphWidthFont0(u16 glyphId, bool32 isJapanese) +s32 GetGlyphWidthFont0(u16 glyphId, bool32 isJapanese) { if (isJapanese == TRUE) return 8; @@ -1896,7 +1896,7 @@ void DecompressGlyphFont1(u16 glyphId, bool32 isJapanese) } } -u32 GetGlyphWidthFont1(u16 glyphId, bool32 isJapanese) +s32 GetGlyphWidthFont1(u16 glyphId, bool32 isJapanese) { if (isJapanese == TRUE) return 8; @@ -1962,7 +1962,7 @@ void DecompressGlyphFont2(u16 glyphId, bool32 isJapanese) } } -u32 GetGlyphWidthFont2(u16 glyphId, bool32 isJapanese) +s32 GetGlyphWidthFont2(u16 glyphId, bool32 isJapanese) { if (isJapanese == TRUE) { @@ -2012,7 +2012,7 @@ void DecompressGlyphFont3(u16 glyphId, bool32 isJapanese) DecompressGlyphFont2(glyphId, isJapanese); } -u32 GetGlyphWidthFont3(u16 glyphId, bool32 isJapanese) +s32 GetGlyphWidthFont3(u16 glyphId, bool32 isJapanese) { if(isJapanese == TRUE) return 10; @@ -2078,7 +2078,7 @@ void DecompressGlyphFont4(u16 glyphId, bool32 isJapanese) } } -u32 GetGlyphWidthFont4(u16 glyphId, bool32 isJapanese) +s32 GetGlyphWidthFont4(u16 glyphId, bool32 isJapanese) { if(isJapanese == TRUE) { @@ -2149,7 +2149,7 @@ void DecompressGlyphFont5(u16 glyphId, bool32 isJapanese) } } -u32 GetGlyphWidthFont5(u16 glyphId, bool32 isJapanese) +s32 GetGlyphWidthFont5(u16 glyphId, bool32 isJapanese) { if(isJapanese == TRUE) { -- cgit v1.2.3 From 82c7bd49aa07293c840254bccc144836057f2c65 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 25 Nov 2018 21:58:52 -0500 Subject: through sub_812DB64 --- src/fame_checker.c | 49 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 42 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index 0c7072fb4..203d1ca6c 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -50,16 +50,11 @@ struct FameCheckerData u8 unk_23_2:1; }; -struct FameCheckerData2 -{ - u8 filler_00[0x88]; -}; - EWRAM_DATA u16 * gUnknown_203B0F0 = NULL; EWRAM_DATA u16 * gUnknown_203B0F4 = NULL; EWRAM_DATA u16 * gUnknown_203B0F8 = NULL; EWRAM_DATA struct FameCheckerData * gUnknown_203B0FC = NULL; -EWRAM_DATA struct FameCheckerData2 * gUnknown_203B100 = NULL; +EWRAM_DATA struct ListMenuItem * gUnknown_203B100 = NULL; EWRAM_DATA u32 gUnknown_203B104 = 0; struct ListMenuTemplate gUnknown_3005EB0; @@ -106,6 +101,10 @@ void sub_812D9A8(u8 a0, u16 a1); void sub_812DA14(u8 a0); void sub_812DB10(void); void sub_812DB28(void); +void sub_812DB64(void); +void sub_812DBC0(s32, bool8, struct ListMenu *); +u8 sub_812DEF0(void); +void sub_812DFE4(u8); void sub_812E000(void); void sub_812E048(void); u16 sub_812E064(void); @@ -225,7 +224,7 @@ void sub_812C3F8(void) InitWindows(gUnknown_845FC04); DeactivateAllTextPrinters(); sub_812CEC0(); - gUnknown_203B100 = AllocZeroed(sizeof(struct FameCheckerData2)); + gUnknown_203B100 = AllocZeroed(17 * sizeof(struct ListMenuItem)); sub_812DB28(); gMain.state++; break; @@ -939,3 +938,39 @@ void sub_812DA14(u8 a0) AddTextPrinterParametrized2(3, 0, width, 10, 0, 2, &gUnknown_845F5E3, -1, gStringVar1); sub_812CEE0(3); } + +void sub_812DB10(void) +{ + sub_812E094(0); + gUnknown_3005EC8 = 0xFF; +} + +void sub_812DB28(void) +{ + sub_812DB64(); + gUnknown_203B0FC->unk_07_2 = sub_812DEF0(); + gUnknown_203B0FC->unk_08 = ListMenuInit(&gUnknown_3005EB0, 0, 0); + sub_812DFE4(0); +} + +void sub_812DB64(void) +{ + gUnknown_3005EB0.items = gUnknown_203B100; + gUnknown_3005EB0.moveCursorFunc = sub_812DBC0; + gUnknown_3005EB0.itemPrintFunc = NULL; + gUnknown_3005EB0.totalItems = 1; + gUnknown_3005EB0.maxShowed = 1; + gUnknown_3005EB0.windowId = 0; + gUnknown_3005EB0.header_X = 0; + gUnknown_3005EB0.item_X = 8; + gUnknown_3005EB0.cursor_X = 0; + gUnknown_3005EB0.upText_Y = 4; + gUnknown_3005EB0.cursorPal = 2; + gUnknown_3005EB0.fillValue = 0; + gUnknown_3005EB0.cursorShadowPal = 3; + gUnknown_3005EB0.lettersSpacing = 0; + gUnknown_3005EB0.itemVerticalPadding = 0; + gUnknown_3005EB0.scrollMultiple = 0; + gUnknown_3005EB0.fontId = 2; + gUnknown_3005EB0.cursorKind = 0; +} -- cgit v1.2.3 From 03af56b30e397e432f8815ba66de173a5be6501b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Nov 2018 08:48:14 -0500 Subject: nonmatching sub_812DBC0 --- src/fame_checker.c | 270 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 269 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index 203d1ca6c..02afdc937 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -55,7 +55,7 @@ EWRAM_DATA u16 * gUnknown_203B0F4 = NULL; EWRAM_DATA u16 * gUnknown_203B0F8 = NULL; EWRAM_DATA struct FameCheckerData * gUnknown_203B0FC = NULL; EWRAM_DATA struct ListMenuItem * gUnknown_203B100 = NULL; -EWRAM_DATA u32 gUnknown_203B104 = 0; +EWRAM_DATA s32 gUnknown_203B104 = 0; struct ListMenuTemplate gUnknown_3005EB0; u8 gUnknown_3005EC8; @@ -103,6 +103,9 @@ void sub_812DB10(void); void sub_812DB28(void); void sub_812DB64(void); void sub_812DBC0(s32, bool8, struct ListMenu *); +void sub_812DD50(u8 taskId); +void sub_812DDAC(void); +void sub_812DDF0(s32 itemIndex, bool8 onInit); u8 sub_812DEF0(void); void sub_812DFE4(u8); void sub_812E000(void); @@ -974,3 +977,268 @@ void sub_812DB64(void) gUnknown_3005EB0.fontId = 2; gUnknown_3005EB0.cursorKind = 0; } + +#ifdef NONMATCHING +void sub_812DBC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) +{ + u16 sp8[2]; + u8 taskId; + s32 r9; + gUnknown_203B104 = 0; + r9 = gUnknown_203B0FC->unk_0A + gUnknown_203B0FC->unk_0B; + sub_812DDF0(itemIndex, onInit); + taskId = FindTaskIdByFunc(sub_812C694); + if (taskId != 0xFF) + { + struct Task *task = &gTasks[taskId]; + PlaySE(SE_SELECT); + task->data[1] = 0; + get_coro_args_x18_x1A(gUnknown_203B0FC->unk_08, sp8, NULL); + gUnknown_203B0FC->unk_04 = sp8[0]; + if (itemIndex != gUnknown_203B0FC->unk_07_2 - 1) + { + sub_812D174(); + sub_812D1A8(itemIndex); + if (gUnknown_203B0FC->unk_07_1) + { + if (!gUnknown_203B0FC->unk_23_2) + { + /* + * The following two instructions compile in the wrong order: + * adds r0, r4, 0 + * mov r1, r9 + */ + sub_812D9A8(taskId, r9); + gUnknown_203B104 = itemIndex; + task->func = sub_812DD50; + } + else + { + gSprites[task->data[2]].invisible = FALSE; + gUnknown_203B0FC->unk_23_2 = FALSE; + gSprites[task->data[2]].data[0] = 0; + sub_812CD3C(); + } + } + else + { + FillWindowPixelRect(2, 0x11, 0, 0, 0xd0, 0x20); + sub_812CEE0(2); + } + } + else + { + sub_812DDAC(); + if (gUnknown_203B0FC->unk_07_1) + { + gSprites[task->data[2]].invisible = TRUE; + gUnknown_203B0FC->unk_23_2 = TRUE; + } + else + { + u8 r2; + for (r2 = 0; r2 < 6; r2++) + { + gSprites[gUnknown_203B0FC->unk_1D[r2]].invisible = TRUE; + } + } + } + } +} +#else +NAKED +void sub_812DBC0(s32 itemIndex, bool8 onInit, struct ListMenu * list) +{ + asm_unified( "push {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0xC\n" + "\tadds r7, r0, 0\n" + "\tlsls r1, 24\n" + "\tlsrs r1, 24\n" + "\tldr r0, _0812DC68 @ =gUnknown_203B104\n" + "\tmov r10, r0\n" + "\tmovs r2, 0\n" + "\tmov r8, r2\n" + "\tstr r2, [r0]\n" + "\tldr r6, _0812DC6C @ =gUnknown_203B0FC\n" + "\tldr r0, [r6]\n" + "\tldrb r2, [r0, 0xA]\n" + "\tldrb r0, [r0, 0xB]\n" + "\tadds r2, r0\n" + "\tmov r9, r2\n" + "\tadds r0, r7, 0\n" + "\tbl sub_812DDF0\n" + "\tldr r0, _0812DC70 @ =sub_812C694\n" + "\tbl FindTaskIdByFunc\n" + "\tlsls r0, 24\n" + "\tlsrs r4, r0, 24\n" + "\tcmp r4, 0xFF\n" + "\tbne _0812DBFE\n" + "\tb _0812DD3A\n" + "_0812DBFE:\n" + "\tlsls r0, r4, 2\n" + "\tadds r0, r4\n" + "\tlsls r0, 3\n" + "\tldr r1, _0812DC74 @ =gTasks\n" + "\tadds r5, r0, r1\n" + "\tmovs r0, 0x5\n" + "\tbl PlaySE\n" + "\tmov r0, r8\n" + "\tstrh r0, [r5, 0xA]\n" + "\tldr r0, [r6]\n" + "\tldrb r0, [r0, 0x8]\n" + "\tadd r1, sp, 0x8\n" + "\tmovs r2, 0\n" + "\tbl get_coro_args_x18_x1A\n" + "\tldr r1, [r6]\n" + "\tadd r0, sp, 0x8\n" + "\tldrh r0, [r0]\n" + "\tstrh r0, [r1, 0x4]\n" + "\tldrb r0, [r1, 0x7]\n" + "\tlsrs r0, 2\n" + "\tsubs r0, 0x1\n" + "\tcmp r7, r0\n" + "\tbeq _0812DCD8\n" + "\tbl sub_812D174\n" + "\tlsls r0, r7, 24\n" + "\tlsrs r0, 24\n" + "\tbl sub_812D1A8\n" + "\tldr r2, [r6]\n" + "\tldrb r1, [r2, 0x7]\n" + "\tmovs r0, 0x2\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _0812DCBC\n" + "\tadds r0, r2, 0\n" + "\tadds r0, 0x23\n" + "\tldrb r1, [r0]\n" + "\tmovs r0, 0x4\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbne _0812DC7C\n" + "\tadds r0, r4, 0\n" + "\tmov r1, r9\n" + "\tbl sub_812D9A8\n" + "\tmov r1, r10\n" + "\tstr r7, [r1]\n" + "\tldr r0, _0812DC78 @ =sub_812DD50\n" + "\tstr r0, [r5]\n" + "\tb _0812DD3A\n" + "\t.align 2, 0\n" + "_0812DC68: .4byte gUnknown_203B104\n" + "_0812DC6C: .4byte gUnknown_203B0FC\n" + "_0812DC70: .4byte sub_812C694\n" + "_0812DC74: .4byte gTasks\n" + "_0812DC78: .4byte sub_812DD50\n" + "_0812DC7C:\n" + "\tldr r4, _0812DCB8 @ =gSprites\n" + "\tmovs r2, 0xC\n" + "\tldrsh r0, [r5, r2]\n" + "\tlsls r1, r0, 4\n" + "\tadds r1, r0\n" + "\tlsls r1, 2\n" + "\tadds r1, r4\n" + "\tadds r1, 0x3E\n" + "\tldrb r3, [r1]\n" + "\tmovs r2, 0x5\n" + "\tnegs r2, r2\n" + "\tadds r0, r2, 0\n" + "\tands r0, r3\n" + "\tstrb r0, [r1]\n" + "\tldr r0, [r6]\n" + "\tadds r0, 0x23\n" + "\tldrb r1, [r0]\n" + "\tands r2, r1\n" + "\tstrb r2, [r0]\n" + "\tmovs r0, 0xC\n" + "\tldrsh r1, [r5, r0]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r4\n" + "\tmov r1, r8\n" + "\tstrh r1, [r0, 0x2E]\n" + "\tbl sub_812CD3C\n" + "\tb _0812DD3A\n" + "\t.align 2, 0\n" + "_0812DCB8: .4byte gSprites\n" + "_0812DCBC:\n" + "\tmovs r0, 0xD0\n" + "\tstr r0, [sp]\n" + "\tmovs r0, 0x20\n" + "\tstr r0, [sp, 0x4]\n" + "\tmovs r0, 0x2\n" + "\tmovs r1, 0x11\n" + "\tmovs r2, 0\n" + "\tmovs r3, 0\n" + "\tbl FillWindowPixelRect\n" + "\tmovs r0, 0x2\n" + "\tbl sub_812CEE0\n" + "\tb _0812DD3A\n" + "_0812DCD8:\n" + "\tbl sub_812DDAC\n" + "\tldr r0, [r6]\n" + "\tldrb r1, [r0, 0x7]\n" + "\tmovs r0, 0x2\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _0812DD10\n" + "\tldr r2, _0812DD0C @ =gSprites\n" + "\tmovs r0, 0xC\n" + "\tldrsh r1, [r5, r0]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r2\n" + "\tadds r0, 0x3E\n" + "\tldrb r1, [r0]\n" + "\tmovs r2, 0x4\n" + "\torrs r1, r2\n" + "\tstrb r1, [r0]\n" + "\tldr r1, [r6]\n" + "\tadds r1, 0x23\n" + "\tldrb r0, [r1]\n" + "\torrs r0, r2\n" + "\tstrb r0, [r1]\n" + "\tb _0812DD3A\n" + "\t.align 2, 0\n" + "_0812DD0C: .4byte gSprites\n" + "_0812DD10:\n" + "\tmovs r2, 0\n" + "\tldr r5, _0812DD4C @ =gSprites\n" + "\tadds r4, r6, 0\n" + "\tmovs r3, 0x4\n" + "_0812DD18:\n" + "\tldr r0, [r4]\n" + "\tadds r0, 0x1D\n" + "\tadds r0, r2\n" + "\tldrb r1, [r0]\n" + "\tlsls r0, r1, 4\n" + "\tadds r0, r1\n" + "\tlsls r0, 2\n" + "\tadds r0, r5\n" + "\tadds r0, 0x3E\n" + "\tldrb r1, [r0]\n" + "\torrs r1, r3\n" + "\tstrb r1, [r0]\n" + "\tadds r0, r2, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r2, r0, 24\n" + "\tcmp r2, 0x5\n" + "\tbls _0812DD18\n" + "_0812DD3A:\n" + "\tadd sp, 0xC\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0812DD4C: .4byte gSprites"); +} +#endif // NONMATCHING -- cgit v1.2.3 From 840f8037e77885b664470910b072ee8dc4cd140d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Nov 2018 09:28:23 -0500 Subject: through sub_812DDAC; match sub_812DBC0 --- src/fame_checker.c | 218 ++++------------------------------------------------- 1 file changed, 16 insertions(+), 202 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index 02afdc937..8637f6e86 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -116,6 +116,7 @@ void sub_812E110(u8 taskId); void sub_812E178(u8 a0, s16 a1); void sub_812E4A4(u8 a0); +extern const u8 gUnknown_84181C3[]; extern const u8 gUnknown_84181E4[]; extern const u8 gUnknown_841E5A4[]; extern const u8 gUnknown_841E5B9[]; @@ -978,12 +979,11 @@ void sub_812DB64(void) gUnknown_3005EB0.cursorKind = 0; } -#ifdef NONMATCHING void sub_812DBC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) { u16 sp8[2]; u8 taskId; - s32 r9; + u16 r9; gUnknown_203B104 = 0; r9 = gUnknown_203B0FC->unk_0A + gUnknown_203B0FC->unk_0B; sub_812DDF0(itemIndex, onInit); @@ -1003,11 +1003,6 @@ void sub_812DBC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) { if (!gUnknown_203B0FC->unk_23_2) { - /* - * The following two instructions compile in the wrong order: - * adds r0, r4, 0 - * mov r1, r9 - */ sub_812D9A8(taskId, r9); gUnknown_203B104 = itemIndex; task->func = sub_812DD50; @@ -1045,200 +1040,19 @@ void sub_812DBC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) } } } -#else -NAKED -void sub_812DBC0(s32 itemIndex, bool8 onInit, struct ListMenu * list) + +void sub_812DD50(u8 taskId) +{ + struct Task * task = &gTasks[taskId]; + task->data[2] = sub_812D888(gUnknown_203B0FC->unk_0C[gUnknown_203B104]); + gSprites[task->data[2]].data[0] = 0; + sub_812CD3C(); + task->func = sub_812C694; +} + +void sub_812DDAC(void) { - asm_unified( "push {r4-r7,lr}\n" - "\tmov r7, r10\n" - "\tmov r6, r9\n" - "\tmov r5, r8\n" - "\tpush {r5-r7}\n" - "\tsub sp, 0xC\n" - "\tadds r7, r0, 0\n" - "\tlsls r1, 24\n" - "\tlsrs r1, 24\n" - "\tldr r0, _0812DC68 @ =gUnknown_203B104\n" - "\tmov r10, r0\n" - "\tmovs r2, 0\n" - "\tmov r8, r2\n" - "\tstr r2, [r0]\n" - "\tldr r6, _0812DC6C @ =gUnknown_203B0FC\n" - "\tldr r0, [r6]\n" - "\tldrb r2, [r0, 0xA]\n" - "\tldrb r0, [r0, 0xB]\n" - "\tadds r2, r0\n" - "\tmov r9, r2\n" - "\tadds r0, r7, 0\n" - "\tbl sub_812DDF0\n" - "\tldr r0, _0812DC70 @ =sub_812C694\n" - "\tbl FindTaskIdByFunc\n" - "\tlsls r0, 24\n" - "\tlsrs r4, r0, 24\n" - "\tcmp r4, 0xFF\n" - "\tbne _0812DBFE\n" - "\tb _0812DD3A\n" - "_0812DBFE:\n" - "\tlsls r0, r4, 2\n" - "\tadds r0, r4\n" - "\tlsls r0, 3\n" - "\tldr r1, _0812DC74 @ =gTasks\n" - "\tadds r5, r0, r1\n" - "\tmovs r0, 0x5\n" - "\tbl PlaySE\n" - "\tmov r0, r8\n" - "\tstrh r0, [r5, 0xA]\n" - "\tldr r0, [r6]\n" - "\tldrb r0, [r0, 0x8]\n" - "\tadd r1, sp, 0x8\n" - "\tmovs r2, 0\n" - "\tbl get_coro_args_x18_x1A\n" - "\tldr r1, [r6]\n" - "\tadd r0, sp, 0x8\n" - "\tldrh r0, [r0]\n" - "\tstrh r0, [r1, 0x4]\n" - "\tldrb r0, [r1, 0x7]\n" - "\tlsrs r0, 2\n" - "\tsubs r0, 0x1\n" - "\tcmp r7, r0\n" - "\tbeq _0812DCD8\n" - "\tbl sub_812D174\n" - "\tlsls r0, r7, 24\n" - "\tlsrs r0, 24\n" - "\tbl sub_812D1A8\n" - "\tldr r2, [r6]\n" - "\tldrb r1, [r2, 0x7]\n" - "\tmovs r0, 0x2\n" - "\tands r0, r1\n" - "\tcmp r0, 0\n" - "\tbeq _0812DCBC\n" - "\tadds r0, r2, 0\n" - "\tadds r0, 0x23\n" - "\tldrb r1, [r0]\n" - "\tmovs r0, 0x4\n" - "\tands r0, r1\n" - "\tcmp r0, 0\n" - "\tbne _0812DC7C\n" - "\tadds r0, r4, 0\n" - "\tmov r1, r9\n" - "\tbl sub_812D9A8\n" - "\tmov r1, r10\n" - "\tstr r7, [r1]\n" - "\tldr r0, _0812DC78 @ =sub_812DD50\n" - "\tstr r0, [r5]\n" - "\tb _0812DD3A\n" - "\t.align 2, 0\n" - "_0812DC68: .4byte gUnknown_203B104\n" - "_0812DC6C: .4byte gUnknown_203B0FC\n" - "_0812DC70: .4byte sub_812C694\n" - "_0812DC74: .4byte gTasks\n" - "_0812DC78: .4byte sub_812DD50\n" - "_0812DC7C:\n" - "\tldr r4, _0812DCB8 @ =gSprites\n" - "\tmovs r2, 0xC\n" - "\tldrsh r0, [r5, r2]\n" - "\tlsls r1, r0, 4\n" - "\tadds r1, r0\n" - "\tlsls r1, 2\n" - "\tadds r1, r4\n" - "\tadds r1, 0x3E\n" - "\tldrb r3, [r1]\n" - "\tmovs r2, 0x5\n" - "\tnegs r2, r2\n" - "\tadds r0, r2, 0\n" - "\tands r0, r3\n" - "\tstrb r0, [r1]\n" - "\tldr r0, [r6]\n" - "\tadds r0, 0x23\n" - "\tldrb r1, [r0]\n" - "\tands r2, r1\n" - "\tstrb r2, [r0]\n" - "\tmovs r0, 0xC\n" - "\tldrsh r1, [r5, r0]\n" - "\tlsls r0, r1, 4\n" - "\tadds r0, r1\n" - "\tlsls r0, 2\n" - "\tadds r0, r4\n" - "\tmov r1, r8\n" - "\tstrh r1, [r0, 0x2E]\n" - "\tbl sub_812CD3C\n" - "\tb _0812DD3A\n" - "\t.align 2, 0\n" - "_0812DCB8: .4byte gSprites\n" - "_0812DCBC:\n" - "\tmovs r0, 0xD0\n" - "\tstr r0, [sp]\n" - "\tmovs r0, 0x20\n" - "\tstr r0, [sp, 0x4]\n" - "\tmovs r0, 0x2\n" - "\tmovs r1, 0x11\n" - "\tmovs r2, 0\n" - "\tmovs r3, 0\n" - "\tbl FillWindowPixelRect\n" - "\tmovs r0, 0x2\n" - "\tbl sub_812CEE0\n" - "\tb _0812DD3A\n" - "_0812DCD8:\n" - "\tbl sub_812DDAC\n" - "\tldr r0, [r6]\n" - "\tldrb r1, [r0, 0x7]\n" - "\tmovs r0, 0x2\n" - "\tands r0, r1\n" - "\tcmp r0, 0\n" - "\tbeq _0812DD10\n" - "\tldr r2, _0812DD0C @ =gSprites\n" - "\tmovs r0, 0xC\n" - "\tldrsh r1, [r5, r0]\n" - "\tlsls r0, r1, 4\n" - "\tadds r0, r1\n" - "\tlsls r0, 2\n" - "\tadds r0, r2\n" - "\tadds r0, 0x3E\n" - "\tldrb r1, [r0]\n" - "\tmovs r2, 0x4\n" - "\torrs r1, r2\n" - "\tstrb r1, [r0]\n" - "\tldr r1, [r6]\n" - "\tadds r1, 0x23\n" - "\tldrb r0, [r1]\n" - "\torrs r0, r2\n" - "\tstrb r0, [r1]\n" - "\tb _0812DD3A\n" - "\t.align 2, 0\n" - "_0812DD0C: .4byte gSprites\n" - "_0812DD10:\n" - "\tmovs r2, 0\n" - "\tldr r5, _0812DD4C @ =gSprites\n" - "\tadds r4, r6, 0\n" - "\tmovs r3, 0x4\n" - "_0812DD18:\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x1D\n" - "\tadds r0, r2\n" - "\tldrb r1, [r0]\n" - "\tlsls r0, r1, 4\n" - "\tadds r0, r1\n" - "\tlsls r0, 2\n" - "\tadds r0, r5\n" - "\tadds r0, 0x3E\n" - "\tldrb r1, [r0]\n" - "\torrs r1, r3\n" - "\tstrb r1, [r0]\n" - "\tadds r0, r2, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r2, r0, 24\n" - "\tcmp r2, 0x5\n" - "\tbls _0812DD18\n" - "_0812DD3A:\n" - "\tadd sp, 0xC\n" - "\tpop {r3-r5}\n" - "\tmov r8, r3\n" - "\tmov r9, r4\n" - "\tmov r10, r5\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" - "_0812DD4C: .4byte gSprites"); + FillWindowPixelRect(2, 0x11, 0, 0, 0xd0, 0x20); + AddTextPrinterParametrized(2, 2, gUnknown_84181C3, 0, NULL, 2, 1, 3); + sub_812CEE0(2); } -#endif // NONMATCHING -- cgit v1.2.3 From eb8dface178fed90656ea7a7726b6835ee5a1229 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Nov 2018 10:26:12 -0500 Subject: through sub_812E064 --- src/fame_checker.c | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 99 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index 8637f6e86..9535b6556 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -4,6 +4,7 @@ #include "bg.h" #include "event_data.h" #include "graphics.h" +#include "battle.h" #include "battle_setup.h" #include "menu.h" #include "battle_dome_cards.h" @@ -21,6 +22,7 @@ #include "window.h" #include "string_util.h" #include "field_map_obj.h" +#include "menu_indicators.h" #include "text_window.h" #define SPRITETAG_1000 1000 @@ -35,7 +37,7 @@ struct FameCheckerData { MainCallback unk_00; u16 unk_04; - u8 filler_06[1]; + u8 unk_06; u8 unk_07_0:1; u8 unk_07_1:1; u8 unk_07_2:6; @@ -121,6 +123,7 @@ extern const u8 gUnknown_84181E4[]; extern const u8 gUnknown_841E5A4[]; extern const u8 gUnknown_841E5B9[]; extern const u8 gUnknown_841E5D2[]; +extern const u8 gUnknown_84161C1[]; extern const u16 gUnknown_845C600[]; extern const u16 gUnknown_845DD20[]; @@ -130,7 +133,10 @@ extern const u16 gUnknown_845F580[]; extern const u16 gUnknown_845F5C0[]; extern const struct TextColor gUnknown_845F5E0; extern const struct TextColor gUnknown_845F5E3; +extern const struct TextColor gUnknown_845F5E6; +extern const u16 gUnknown_845F5EA[]; extern const u8 gUnknown_845F61C[]; +extern const u8 *const gUnknown_845F60C[]; extern const u8 *const gUnknown_845F63C[]; extern const u8 *const gUnknown_845F6BC[]; extern const u8 *const gUnknown_845F89C[]; @@ -147,6 +153,7 @@ extern const struct SpriteTemplate gUnknown_845FCE4; extern const struct SpriteTemplate gUnknown_845FCFC; extern const struct SpriteTemplate gUnknown_845FD14; extern const struct SpriteTemplate gUnknown_845FD2C; +extern const struct ScrollIndicatorArrowPairTemplate gUnknown_845FD44; void sub_812C380(void) { @@ -981,7 +988,7 @@ void sub_812DB64(void) void sub_812DBC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) { - u16 sp8[2]; + u16 sp8; u8 taskId; u16 r9; gUnknown_203B104 = 0; @@ -993,8 +1000,8 @@ void sub_812DBC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) struct Task *task = &gTasks[taskId]; PlaySE(SE_SELECT); task->data[1] = 0; - get_coro_args_x18_x1A(gUnknown_203B0FC->unk_08, sp8, NULL); - gUnknown_203B0FC->unk_04 = sp8[0]; + get_coro_args_x18_x1A(gUnknown_203B0FC->unk_08, &sp8, NULL); + gUnknown_203B0FC->unk_04 = sp8; if (itemIndex != gUnknown_203B0FC->unk_07_2 - 1) { sub_812D174(); @@ -1056,3 +1063,91 @@ void sub_812DDAC(void) AddTextPrinterParametrized(2, 2, gUnknown_84181C3, 0, NULL, 2, 1, 3); sub_812CEE0(2); } + +void sub_812DDF0(s32 itemIndex, bool8 onInit) +{ + u16 sp14; + u16 sp16; + u16 r6; + get_coro_args_x18_x1A(gUnknown_203B0FC->unk_08, &sp14, &sp16); + r6 = sp14 + sp16; + AddTextPrinterParametrized2(0, 2, 8, 14 * sp16 + 4, 0, 0, &gUnknown_845F5E6, 0, gUnknown_203B100[itemIndex].unk_00); + if (!onInit) + { + if (sp14 < gUnknown_203B0FC->unk_0A) + gUnknown_203B0FC->unk_0B++; + else if (sp14 > gUnknown_203B0FC->unk_0A && r6 != gUnknown_203B0FC->unk_07_2 - 1) + gUnknown_203B0FC->unk_0B--; + AddTextPrinterParametrized2(0, 2, 8, 14 * gUnknown_203B0FC->unk_0B + 4, 0, 0, &gUnknown_845F5E3, 0, gUnknown_203B100[gUnknown_203B0FC->unk_09].unk_00); + + } + gUnknown_203B0FC->unk_09 = itemIndex; + gUnknown_203B0FC->unk_0B = sp16; + gUnknown_203B0FC->unk_0A = sp14; +} + +u8 sub_812DEF0(void) +{ + u8 r4 = 0; + u8 r6; + + for (r6 = 0; r6 < 16; r6++) + { + u8 r5 = sub_812D0C0(r6); + if (gSaveBlock1Ptr->fameChecker[r5].unk_0_0 != 0) + { + if (gUnknown_845F5EA[r5] < 0xFE00) + { + gUnknown_203B100[r4].unk_00 = gTrainers[gUnknown_845F5EA[r5]].trainerName; + gUnknown_203B100[r4].unk_04 = r4; + } + else + { + gUnknown_203B100[r4].unk_00 = gUnknown_845F60C[gUnknown_845F5EA[r5] - 0xFE00]; + gUnknown_203B100[r4].unk_04 = r4; + } + gUnknown_203B0FC->unk_0C[r4] = r5; + r4++; + } + } + gUnknown_203B100[r4].unk_00 = gUnknown_84161C1; + gUnknown_203B100[r4].unk_04 = r4; + gUnknown_203B0FC->unk_0C[r4] = 0xFF; + r4++; + gUnknown_3005EB0.totalItems = r4; + if (r4 < 5) + gUnknown_3005EB0.maxShowed = r4; + else + gUnknown_3005EB0.maxShowed = 5; + return r4; +} + +void sub_812DFE4(u8 windowId) +{ + PutWindowTilemap(windowId); + CopyWindowToVram(windowId, 3); +} + +void sub_812E000(void) +{ + struct ScrollIndicatorArrowPairTemplate sp0 = gUnknown_845FD44; + if (gUnknown_203B0FC->unk_07_2 > 5) + { + sp0.unk_06 = 0; + sp0.unk_08 = gUnknown_203B0FC->unk_07_2 - 5; + gUnknown_203B0FC->unk_06 = AddScrollIndicatorArrowPair(&sp0, &gUnknown_203B0FC->unk_04); + } +} + +void sub_812E048(void) +{ + if (gUnknown_203B0FC->unk_07_2 > 5) + RemoveScrollIndicatorArrowPair(gUnknown_203B0FC->unk_06); +} + +u16 sub_812E064(void) +{ + u16 sp0, sp2; + get_coro_args_x18_x1A(gUnknown_203B0FC->unk_08, &sp0, &sp2); + return sp0 + sp2; +} -- cgit v1.2.3 From f75453388c6f9e1123915707f6d69c3373f761f6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Nov 2018 10:54:41 -0500 Subject: Finish decomp of fame_checker(.text) --- src/fame_checker.c | 119 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 118 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index 9535b6556..2f455c462 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -118,12 +118,13 @@ void sub_812E110(u8 taskId); void sub_812E178(u8 a0, s16 a1); void sub_812E4A4(u8 a0); +extern const u8 gUnknown_84161C1[]; +extern const u8 gUnknown_841623B[]; extern const u8 gUnknown_84181C3[]; extern const u8 gUnknown_84181E4[]; extern const u8 gUnknown_841E5A4[]; extern const u8 gUnknown_841E5B9[]; extern const u8 gUnknown_841E5D2[]; -extern const u8 gUnknown_84161C1[]; extern const u16 gUnknown_845C600[]; extern const u16 gUnknown_845DD20[]; @@ -1151,3 +1152,119 @@ u16 sub_812E064(void) get_coro_args_x18_x1A(gUnknown_203B0FC->unk_08, &sp0, &sp2); return sp0 + sp2; } + +void sub_812E094(u8 a0) +{ + if (gUnknown_203B0FC->unk_23_0 != a0) + { + u8 taskId = FindTaskIdByFunc(sub_812E110); + if (taskId == 0xFF) + taskId = CreateTask(sub_812E110, 8); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 4; + if (a0 == TRUE) + { + gTasks[taskId].data[2] = 1; + gUnknown_203B0FC->unk_23_0 = TRUE; + } + else + { + gTasks[taskId].data[2] = 4; + gUnknown_203B0FC->unk_23_0 = FALSE; + } + } +} + +void sub_812E110(u8 taskId) +{ + struct Task * task = &gTasks[taskId]; + switch (task->data[0]) + { + case 0: + if (--task->data[1] == 0) + { + sub_812E178(1, 0); + task->data[1] = 4; + task->data[0]++; + } + break; + case 1: + if (--task->data[1] == 0) + { + sub_812E178(1, task->data[2]); + DestroyTask(taskId); + } + break; + } +} + +void sub_812E178(u8 bg, s16 a1) +{ + if (a1 == 0 || a1 == 3) + { + FillBgTilemapBufferRect(bg, 0x8C, 14, 10, 1, 1, 1); + FillBgTilemapBufferRect(bg, 0xA1, 15, 10, 10, 1, 1); + FillBgTilemapBufferRect(bg, 0x8D, 25, 10, 1, 1, 1); + FillBgTilemapBufferRect(bg, 0x8E, 26, 10, 1, 1, 1); + FillBgTilemapBufferRect(bg, 0x8F, 14, 11, 1, 1, 1); + FillBgTilemapBufferRect(bg, 0x00, 15, 11, 11, 1, 1); + FillBgTilemapBufferRect(bg, 0x90, 26, 11, 1, 1, 1); + FillBgTilemapBufferRect(bg, 0x91, 14, 12, 1, 1, 1); + FillBgTilemapBufferRect(bg, 0xA3, 15, 12, 10, 1, 1); + FillBgTilemapBufferRect(bg, 0x92, 25, 12, 1, 1, 1); + FillBgTilemapBufferRect(bg, 0x93, 26, 12, 1, 1, 1); + } + else if (a1 == 1) + { + FillBgTilemapBufferRect(bg, 0x9B, 14, 10, 1, 1, 1); + FillBgTilemapBufferRect(bg, 0x9C, 15, 10, 11, 1, 1); + FillBgTilemapBufferRect(bg, 0x96, 26, 10, 1, 1, 1); + FillBgTilemapBufferRect(bg, 0x9D, 14, 11, 1, 1, 1); + FillBgTilemapBufferRect(bg, 0x00, 15, 11, 11, 1, 1); + FillBgTilemapBufferRect(bg, 0x90, 26, 11, 1, 1, 1); + FillBgTilemapBufferRect(bg, 0x9E, 14, 12, 1, 1, 1); + FillBgTilemapBufferRect(bg, 0x9F, 15, 12, 11, 1, 1); + FillBgTilemapBufferRect(bg, 0x99, 26, 12, 1, 1, 1); + } + else if (a1 == 2) + { + FillBgTilemapBufferRect(bg, 0x94, 14, 10, 1, 1, 1); + FillBgTilemapBufferRect(bg, 0x95, 15, 10, 11, 1, 1); + FillBgTilemapBufferRect(bg, 0x96, 26, 10, 1, 1, 1); + FillBgTilemapBufferRect(bg, 0x8F, 14, 11, 1, 1, 1); + FillBgTilemapBufferRect(bg, 0x9A, 15, 11, 11, 1, 1); + FillBgTilemapBufferRect(bg, 0x90, 26, 11, 1, 1, 1); + FillBgTilemapBufferRect(bg, 0x97, 14, 12, 1, 1, 1); + FillBgTilemapBufferRect(bg, 0x98, 15, 12, 11, 1, 1); + FillBgTilemapBufferRect(bg, 0x99, 26, 12, 1, 1, 1); + } + else if (a1 == 4) + { + FillBgTilemapBufferRect(bg, 0x83, 14, 10, 1, 1, 1); + FillBgTilemapBufferRect(bg, 0xA0, 15, 10, 10, 1, 1); + FillBgTilemapBufferRect(bg, 0x84, 25, 10, 1, 1, 1); + FillBgTilemapBufferRect(bg, 0x85, 26, 10, 1, 1, 1); + FillBgTilemapBufferRect(bg, 0x86, 14, 11, 1, 1, 1); + FillBgTilemapBufferRect(bg, 0xA2, 15, 11, 10, 1, 1); + FillBgTilemapBufferRect(bg, 0x87, 25, 11, 1, 1, 1); + FillBgTilemapBufferRect(bg, 0x88, 26, 11, 1, 1, 1); + FillBgTilemapBufferRect(bg, 0x83, 14, 12, 1, 1, 1); + FillBgTilemapBufferRect(bg, 0xA0, 15, 12, 10, 1, 1); + FillBgTilemapBufferRect(bg, 0x84, 25, 12, 1, 1, 1); + FillBgTilemapBufferRect(bg, 0x85, 26, 12, 1, 1, 1); + } + else if (a1 == 5) + { + FillBgTilemapBufferRect(bg, 0x00, 14, 10, 13, 3, 1); + } + CopyBgTilemapBufferToVram(bg); +} + +void sub_812E4A4(u8 a0) +{ + u16 cursorY = ListMenuGetYCoordForPrintingArrowCursor(gUnknown_203B0FC->unk_08); + if (a0 == 1) + AddTextPrinterParametrized2(0, 2, 0, cursorY, 0, 0, &gUnknown_845F5E3, 0, gUnknown_841623B); + else + AddTextPrinterParametrized2(0, 2, 0, cursorY, 0, 0, &gUnknown_845F5E0, 0, gUnknown_841623B); +} -- cgit v1.2.3 From ae8b4043c1690d6b3cb62f89372c7f7e6d45348b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Nov 2018 12:34:22 -0500 Subject: More data decomp --- src/fame_checker.c | 229 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 215 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index 2f455c462..11bb637b7 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -3,6 +3,7 @@ #include "sprite.h" #include "bg.h" #include "event_data.h" +#include "event_scripts.h" #include "graphics.h" #include "battle.h" #include "battle_setup.h" @@ -125,21 +126,221 @@ extern const u8 gUnknown_84181E4[]; extern const u8 gUnknown_841E5A4[]; extern const u8 gUnknown_841E5B9[]; extern const u8 gUnknown_841E5D2[]; +extern const u8 gUnknown_841E5E9[]; +extern const u8 gUnknown_841E5ED[]; +extern const u8 gUnknown_841E5F3[]; +extern const u8 gUnknown_841E5F8[]; + +const u16 gUnknown_845C600[] = INCBIN_U16("data/fame_checker/tilemap_845c600.bin"); +const u16 gUnknown_845DD20[] = INCBIN_U16("data/fame_checker/pal_845dd20.gbapal"); +const u16 gUnknown_845DD40[] = INCBIN_U16("data/fame_checker/img_845dd40.4bpp"); +const u16 gUnknown_845E540[] = INCBIN_U16("data/fame_checker/pal_845e540.gbapal"); +const u16 gUnknown_845E560[] = INCBIN_U16("data/fame_checker/img_845e560.4bpp"); +const u16 gUnknown_845ED60[] = INCBIN_U16("data/fame_checker/pal_845ed60.gbapal"); +const u16 gUnknown_845ED80[] = INCBIN_U16("data/fame_checker/img_845ed80.4bpp"); +const u16 gUnknown_845F580[] = INCBIN_U16("data/fame_checker/pal_845f580.gbapal"); +const u16 gUnknown_845F5A0[] = INCBIN_U16("data/fame_checker/pal_845f5a0.gbapal"); +const u16 gUnknown_845F5C0[] = INCBIN_U16("data/fame_checker/pal_845f5c0.gbapal"); + +const struct TextColor gUnknown_845F5E0 = {0x00, 0x01, 0x02}; +const struct TextColor gUnknown_845F5E3 = {0x00, 0x02, 0x03}; +const struct TextColor gUnknown_845F5E6 = {0x00, 0x06, 0x07}; + +const u16 gUnknown_845F5EA[] = { + 0xfe00, + 0xfe01, + 0x019e, + 0x019f, + 0x01a0, + 0x01a1, + 0x01a2, + 0x01a4, + 0x01a3, + 0x019a, + 0x019b, + 0x019c, + 0x019d, + 0xfe02, + 0xfe03, + 0x015c +}; + +const u8 *const gUnknown_845F60C[] = { + gUnknown_841E5E9, + gUnknown_841E5ED, + gUnknown_841E5F3, + gUnknown_841E5F8 +}; + +const u8 gUnknown_845F61C[] = { + 0x56, + 0x54, + 0x74, + 0x75, + 0x76, + 0x77, + 0x78, + 0x7a, + 0x79, + 0x70, + 0x71, + 0x72, + 0x73, + 0x64, + 0x7b, + 0x6c, + 0x00, + 0x01, + 0x00, + 0x01, + 0x00, + 0x01, + 0x00, + 0x01, + 0x00, + 0x01, + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x00 +}; + +const u8 *const gUnknown_845F63C[] = { + gUnknown_81B0188, + gUnknown_81B0251, + gUnknown_81B030F, + gUnknown_81B03B3, + gUnknown_81B0446, + gUnknown_81B0504, + gUnknown_81B05C2, + gUnknown_81B0667, + gUnknown_81B06FB, + gUnknown_81B079F, + gUnknown_81B0845, + gUnknown_81B08EE, + gUnknown_81B097F, + gUnknown_81B0A45, + gUnknown_81B0AFF, + gUnknown_81B0BA6, + gUnknown_81B0198, + gUnknown_81B025D, + gUnknown_81B031B, + gUnknown_81B03BF, + gUnknown_81B0456, + gUnknown_81B0510, + gUnknown_81B05CD, + gUnknown_81B0675, + gUnknown_81B0708, + gUnknown_81B07AD, + gUnknown_81B0851, + gUnknown_81B08FB, + gUnknown_81B098B, + gUnknown_81B0A50, + gUnknown_81B0B0E, + gUnknown_81B0BB5 +}; + +const u8 *const gUnknown_845F6BC[] = { + gUnknown_81AD106, + gUnknown_81AD145, + gUnknown_81AD1BB, + gUnknown_81AD258, + gUnknown_81AD2B9, + gUnknown_81AD377, + gUnknown_81AD40C, + gUnknown_81AD4AE, + gUnknown_81AD516, + gUnknown_81AD5A7, + gUnknown_81AD608, + gUnknown_81AD69F, + gUnknown_81AD705, + gUnknown_81AD771, + gUnknown_81AD840, + gUnknown_81AD908, + gUnknown_81AD99A, + gUnknown_81ADA27, + gUnknown_81ADA91, + gUnknown_81ADAF6, + gUnknown_81ADB5A, + gUnknown_81ADBD9, + gUnknown_81ADC72, + gUnknown_81ADCEB, + gUnknown_81ADD3C, + gUnknown_81ADDA7, + gUnknown_81ADE0B, + gUnknown_81ADE82, + gUnknown_81ADEEC, + gUnknown_81ADF6A, + gUnknown_81AE009, + gUnknown_81AE072, + gUnknown_81AE0F3, + gUnknown_81AE15B, + gUnknown_81AE1E5, + gUnknown_81AE247, + gUnknown_81AE2B6, + gUnknown_81AE31D, + gUnknown_81AE37D, + gUnknown_81AE407, + gUnknown_81AE48D, + gUnknown_81AE51B, + gUnknown_81AE5E8, + gUnknown_81AE656, + gUnknown_81AE6D7, + gUnknown_81AE762, + gUnknown_81AE7CB, + gUnknown_81AE841, + gUnknown_81AE89E, + gUnknown_81AE90A, + gUnknown_81AE990, + gUnknown_81AEA59, + gUnknown_81AEAEE, + gUnknown_81AEB69, + gUnknown_81AEBDF, + gUnknown_81AEC28, + gUnknown_81AEC82, + gUnknown_81AED27, + gUnknown_81AEDAA, + gUnknown_81AEE51, + gUnknown_81AEF25, + gUnknown_81AEF6C, + gUnknown_81AEFC6, + gUnknown_81AF04C, + gUnknown_81AF0F0, + gUnknown_81AF19A, + gUnknown_81AF200, + gUnknown_81AF248, + gUnknown_81AF2B7, + gUnknown_81AF34E, + gUnknown_81AF3BE, + gUnknown_81AF47C, + gUnknown_81AF4FD, + gUnknown_81AF567, + gUnknown_81AF641, + gUnknown_81AF6BA, + gUnknown_81AF758, + gUnknown_81AF7CB, + gUnknown_81AF83E, + gUnknown_81AF8CA, + gUnknown_81AF929, + gUnknown_81AF998, + gUnknown_81AFA20, + gUnknown_81AFAB9, + gUnknown_81AFB0C, + gUnknown_81AFB76, + gUnknown_81AFC38, + gUnknown_81AFCE9, + gUnknown_81AFD49, + gUnknown_81AFDC4, + gUnknown_81AFE68, + gUnknown_81AFF23, + gUnknown_81AFFA8, + gUnknown_81B0022, + gUnknown_81B00A6, + gUnknown_81B0106 +}; -extern const u16 gUnknown_845C600[]; -extern const u16 gUnknown_845DD20[]; -extern const u16 gUnknown_845E540[]; -extern const u16 gUnknown_845ED60[]; -extern const u16 gUnknown_845F580[]; -extern const u16 gUnknown_845F5C0[]; -extern const struct TextColor gUnknown_845F5E0; -extern const struct TextColor gUnknown_845F5E3; -extern const struct TextColor gUnknown_845F5E6; -extern const u16 gUnknown_845F5EA[]; -extern const u8 gUnknown_845F61C[]; -extern const u8 *const gUnknown_845F60C[]; -extern const u8 *const gUnknown_845F63C[]; -extern const u8 *const gUnknown_845F6BC[]; extern const u8 *const gUnknown_845F89C[]; extern const u8 *const gUnknown_845FA1C[]; extern const u8 gUnknown_845F83C[]; -- cgit v1.2.3 From 6fb78b0885d4dacf83df09eb48bb97d3c75b6680 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Nov 2018 12:51:56 -0500 Subject: more text dism --- src/fame_checker.c | 152 +++++++++++++++++++---------------------------------- 1 file changed, 54 insertions(+), 98 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index 11bb637b7..985492d6b 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -243,107 +243,63 @@ const u8 *const gUnknown_845F63C[] = { }; const u8 *const gUnknown_845F6BC[] = { - gUnknown_81AD106, - gUnknown_81AD145, - gUnknown_81AD1BB, - gUnknown_81AD258, - gUnknown_81AD2B9, - gUnknown_81AD377, - gUnknown_81AD40C, - gUnknown_81AD4AE, - gUnknown_81AD516, - gUnknown_81AD5A7, - gUnknown_81AD608, - gUnknown_81AD69F, - gUnknown_81AD705, - gUnknown_81AD771, - gUnknown_81AD840, - gUnknown_81AD908, - gUnknown_81AD99A, - gUnknown_81ADA27, - gUnknown_81ADA91, - gUnknown_81ADAF6, - gUnknown_81ADB5A, - gUnknown_81ADBD9, - gUnknown_81ADC72, - gUnknown_81ADCEB, - gUnknown_81ADD3C, - gUnknown_81ADDA7, - gUnknown_81ADE0B, - gUnknown_81ADE82, - gUnknown_81ADEEC, - gUnknown_81ADF6A, - gUnknown_81AE009, - gUnknown_81AE072, - gUnknown_81AE0F3, - gUnknown_81AE15B, - gUnknown_81AE1E5, - gUnknown_81AE247, - gUnknown_81AE2B6, - gUnknown_81AE31D, - gUnknown_81AE37D, - gUnknown_81AE407, - gUnknown_81AE48D, - gUnknown_81AE51B, - gUnknown_81AE5E8, - gUnknown_81AE656, - gUnknown_81AE6D7, - gUnknown_81AE762, - gUnknown_81AE7CB, - gUnknown_81AE841, - gUnknown_81AE89E, - gUnknown_81AE90A, - gUnknown_81AE990, - gUnknown_81AEA59, - gUnknown_81AEAEE, - gUnknown_81AEB69, - gUnknown_81AEBDF, - gUnknown_81AEC28, - gUnknown_81AEC82, - gUnknown_81AED27, - gUnknown_81AEDAA, - gUnknown_81AEE51, - gUnknown_81AEF25, - gUnknown_81AEF6C, - gUnknown_81AEFC6, - gUnknown_81AF04C, - gUnknown_81AF0F0, - gUnknown_81AF19A, - gUnknown_81AF200, - gUnknown_81AF248, - gUnknown_81AF2B7, - gUnknown_81AF34E, - gUnknown_81AF3BE, - gUnknown_81AF47C, - gUnknown_81AF4FD, - gUnknown_81AF567, - gUnknown_81AF641, - gUnknown_81AF6BA, - gUnknown_81AF758, - gUnknown_81AF7CB, - gUnknown_81AF83E, - gUnknown_81AF8CA, - gUnknown_81AF929, - gUnknown_81AF998, - gUnknown_81AFA20, - gUnknown_81AFAB9, - gUnknown_81AFB0C, - gUnknown_81AFB76, - gUnknown_81AFC38, - gUnknown_81AFCE9, - gUnknown_81AFD49, - gUnknown_81AFDC4, - gUnknown_81AFE68, - gUnknown_81AFF23, - gUnknown_81AFFA8, - gUnknown_81B0022, - gUnknown_81B00A6, - gUnknown_81B0106 + gUnknown_81AD106, gUnknown_81AD145, gUnknown_81AD1BB, gUnknown_81AD258, gUnknown_81AD2B9, gUnknown_81AD377, + gUnknown_81AD40C, gUnknown_81AD4AE, gUnknown_81AD516, gUnknown_81AD5A7, gUnknown_81AD608, gUnknown_81AD69F, + gUnknown_81AD705, gUnknown_81AD771, gUnknown_81AD840, gUnknown_81AD908, gUnknown_81AD99A, gUnknown_81ADA27, + gUnknown_81ADA91, gUnknown_81ADAF6, gUnknown_81ADB5A, gUnknown_81ADBD9, gUnknown_81ADC72, gUnknown_81ADCEB, + gUnknown_81ADD3C, gUnknown_81ADDA7, gUnknown_81ADE0B, gUnknown_81ADE82, gUnknown_81ADEEC, gUnknown_81ADF6A, + gUnknown_81AE009, gUnknown_81AE072, gUnknown_81AE0F3, gUnknown_81AE15B, gUnknown_81AE1E5, gUnknown_81AE247, + gUnknown_81AE2B6, gUnknown_81AE31D, gUnknown_81AE37D, gUnknown_81AE407, gUnknown_81AE48D, gUnknown_81AE51B, + gUnknown_81AE5E8, gUnknown_81AE656, gUnknown_81AE6D7, gUnknown_81AE762, gUnknown_81AE7CB, gUnknown_81AE841, + gUnknown_81AE89E, gUnknown_81AE90A, gUnknown_81AE990, gUnknown_81AEA59, gUnknown_81AEAEE, gUnknown_81AEB69, + gUnknown_81AEBDF, gUnknown_81AEC28, gUnknown_81AEC82, gUnknown_81AED27, gUnknown_81AEDAA, gUnknown_81AEE51, + gUnknown_81AEF25, gUnknown_81AEF6C, gUnknown_81AEFC6, gUnknown_81AF04C, gUnknown_81AF0F0, gUnknown_81AF19A, + gUnknown_81AF200, gUnknown_81AF248, gUnknown_81AF2B7, gUnknown_81AF34E, gUnknown_81AF3BE, gUnknown_81AF47C, + gUnknown_81AF4FD, gUnknown_81AF567, gUnknown_81AF641, gUnknown_81AF6BA, gUnknown_81AF758, gUnknown_81AF7CB, + gUnknown_81AF83E, gUnknown_81AF8CA, gUnknown_81AF929, gUnknown_81AF998, gUnknown_81AFA20, gUnknown_81AFAB9, + gUnknown_81AFB0C, gUnknown_81AFB76, gUnknown_81AFC38, gUnknown_81AFCE9, gUnknown_81AFD49, gUnknown_81AFDC4, + gUnknown_81AFE68, gUnknown_81AFF23, gUnknown_81AFFA8, gUnknown_81B0022, gUnknown_81B00A6, gUnknown_81B0106 +}; + +const u8 gUnknown_845F83C[] = { + 0x67, 0x47, 0x30, 0x69, 0x4b, 0x37, + 0x37, 0x30, 0x3d, 0x69, 0x23, 0x69, + 0x66, 0x50, 0x1b, 0x13, 0x1e, 0x69, + 0x66, 0x51, 0x2b, 0x27, 0x1d, 0x69, + 0x66, 0x52, 0x3d, 0x3d, 0x3e, 0x69, + 0x66, 0x53, 0x16, 0x1d, 0x53, 0x69, + 0x66, 0x54, 0x1a, 0x16, 0x69, 0x1e, + 0x66, 0x19, 0x55, 0x55, 0x69, 0x29, + 0x66, 0x56, 0x37, 0x1c, 0x69, 0x69, + 0x4d, 0x4d, 0x20, 0x69, 0x11, 0x23, + 0x4f, 0x4f, 0x69, 0x36, 0x1d, 0x36, + 0x4b, 0x36, 0x36, 0x69, 0x4b, 0x23, + 0x4a, 0x4a, 0x18, 0x17, 0x69, 0x29, + 0x48, 0x12, 0x20, 0x59, 0x59, 0x59, + 0x11, 0x31, 0x69, 0x1e, 0x69, 0x69, + 0x57, 0x37, 0x37, 0x57, 0x5b, 0x37 +}; + +const u8 *const gUnknown_845F89C[] = { + gUnknown_81B0C45, gUnknown_81B0C51, gUnknown_81B0C5E, gUnknown_81B0C6B, gUnknown_81B0C79, gUnknown_81B0C88, + gUnknown_81B0C95, gUnknown_81B0CA2, gUnknown_81B0CB1, gUnknown_81B0CC1, gUnknown_81B0CCF, gUnknown_81B0CDF, + gUnknown_81B0CEB, gUnknown_81B0CF7, gUnknown_81B0D02, gUnknown_81B0D0E, gUnknown_81B0D16, gUnknown_81B0D1F, + gUnknown_81B0D2D, gUnknown_81B0D3B, gUnknown_81B0D48, gUnknown_81B0D55, gUnknown_81B0D65, gUnknown_81B0D73, + gUnknown_81B0D81, gUnknown_81B0D90, gUnknown_81B0D9E, gUnknown_81B0DAC, gUnknown_81B0DBA, gUnknown_81B0DC8, + gUnknown_81B0DD7, gUnknown_81B0DE4, gUnknown_81B0DF0, gUnknown_81B0DFC, gUnknown_81B0E08, gUnknown_81B0E14, + gUnknown_81B0E24, gUnknown_81B0E31, gUnknown_81B0E3D, gUnknown_81B0E49, gUnknown_81B0E56, gUnknown_81B0E63, + gUnknown_81B0E6F, gUnknown_81B0E7C, gUnknown_81B0E89, gUnknown_81B0E95, gUnknown_81B0EA1, gUnknown_81B0EAE, + gUnknown_81B0EBA, gUnknown_81B0ECA, gUnknown_81B0ED7, gUnknown_81B0EE4, gUnknown_81B0EF4, gUnknown_81B0F01, + gUnknown_81B0F11, gUnknown_81B0F20, gUnknown_81B0F2F, gUnknown_81B0F3B, gUnknown_81B0F47, gUnknown_81B0F53, + gUnknown_81B0F5F, gUnknown_81B0F6E, gUnknown_81B0F7D, gUnknown_81B0F8A, gUnknown_81B0F94, gUnknown_81B0F9F, + gUnknown_81B0FAE, gUnknown_81B0FBD, gUnknown_81B0FCC, gUnknown_81B0FDB, gUnknown_81B0FE8, gUnknown_81B0FF7, + gUnknown_81B1002, gUnknown_81B1011, gUnknown_81B1020, gUnknown_81B102D, gUnknown_81B103B, gUnknown_81B104A, + gUnknown_81B1059, gUnknown_81B1067, gUnknown_81B1075, gUnknown_81B1082, gUnknown_81B108D, gUnknown_81B1098, + gUnknown_81B10A3, gUnknown_81B10B1, gUnknown_81B10BF, gUnknown_81B10CD, gUnknown_81B10DB, gUnknown_81B10E8, + gUnknown_81B10F8, gUnknown_81B1107, gUnknown_81B1111, gUnknown_81B111B, gUnknown_81B1128, gUnknown_81B1135 }; -extern const u8 *const gUnknown_845F89C[]; extern const u8 *const gUnknown_845FA1C[]; -extern const u8 gUnknown_845F83C[]; extern const struct BgTemplate gUnknown_845FBF4[4]; extern const struct SpriteSheet gUnknown_845FB9C[]; extern const struct SpritePalette gUnknown_845FBDC[]; -- cgit v1.2.3 From e85ce728372d4c03deef73e41d883b04062a415a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Nov 2018 12:57:24 -0500 Subject: Another text pointer table decomped --- src/fame_checker.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index 985492d6b..40c406c18 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -299,7 +299,25 @@ const u8 *const gUnknown_845F89C[] = { gUnknown_81B10F8, gUnknown_81B1107, gUnknown_81B1111, gUnknown_81B111B, gUnknown_81B1128, gUnknown_81B1135 }; -extern const u8 *const gUnknown_845FA1C[]; +const u8 *const gUnknown_845FA1C[] = { + gUnknown_81B1146, gUnknown_81B114B, gUnknown_81B1155, gUnknown_81B115A, gUnknown_81B116A, gUnknown_81B1171, + gUnknown_81B1176, gUnknown_81B117B, gUnknown_81B1181, gUnknown_81B1185, gUnknown_81B1195, gUnknown_81B119E, + gUnknown_81B11AE, gUnknown_81B11B3, gUnknown_81B11B9, gUnknown_81B11C3, gUnknown_81B11C7, gUnknown_81B11CB, + gUnknown_81B11DB, gUnknown_81B11E0, gUnknown_81B11E6, gUnknown_81B11EB, gUnknown_81B11F5, gUnknown_81B11FA, + gUnknown_81B120A, gUnknown_81B120F, gUnknown_81B1219, gUnknown_81B1220, gUnknown_81B1227, gUnknown_81B122E, + gUnknown_81B123E, gUnknown_81B1243, gUnknown_81B1249, gUnknown_81B124E, gUnknown_81B1254, gUnknown_81B125A, + gUnknown_81B126A, gUnknown_81B126F, gUnknown_81B1274, gUnknown_81B1279, gUnknown_81B1281, gUnknown_81B1291, + gUnknown_81B1295, gUnknown_81B129A, gUnknown_81B12A4, gUnknown_81B12AC, gUnknown_81B12B4, gUnknown_81B12C4, + gUnknown_81B12CA, gUnknown_81B12CF, gUnknown_81B12D6, gUnknown_81B12DC, gUnknown_81B12E2, gUnknown_81B12E8, + gUnknown_81B12F8, gUnknown_81B1300, gUnknown_81B1308, gUnknown_81B1310, gUnknown_81B1320, gUnknown_81B132C, + gUnknown_81B1335, gUnknown_81B133B, gUnknown_81B1341, gUnknown_81B1351, gUnknown_81B1359, gUnknown_81B135F, + gUnknown_81B1367, gUnknown_81B136E, gUnknown_81B1376, gUnknown_81B137E, gUnknown_81B138E, gUnknown_81B1395, + gUnknown_81B139E, gUnknown_81B13A4, gUnknown_81B13AA, gUnknown_81B13B0, gUnknown_81B13BC, gUnknown_81B13CC, + gUnknown_81B13D6, gUnknown_81B13D9, gUnknown_81B13E4, gUnknown_81B13EC, gUnknown_81B13F2, gUnknown_81B13F8, + gUnknown_81B13FE, gUnknown_81B140A, gUnknown_81B1416, gUnknown_81B141F, gUnknown_81B1423, gUnknown_81B1429, + gUnknown_81B1439, gUnknown_81B1442, gUnknown_81B144C, gUnknown_81B1456, gUnknown_81B145F, gUnknown_81B1463 +}; + extern const struct BgTemplate gUnknown_845FBF4[4]; extern const struct SpriteSheet gUnknown_845FB9C[]; extern const struct SpritePalette gUnknown_845FBDC[]; -- cgit v1.2.3 From 031baf97af3da3a23719a9089dfaa088aa6b66a1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Nov 2018 14:39:26 -0500 Subject: Decomp sprite sheets and additional graphics --- src/fame_checker.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index 40c406c18..82cb25812 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -132,12 +132,18 @@ extern const u8 gUnknown_841E5F3[]; extern const u8 gUnknown_841E5F8[]; const u16 gUnknown_845C600[] = INCBIN_U16("data/fame_checker/tilemap_845c600.bin"); +const u8 gUnknown_845CE00[] = INCBIN_U8("data/fame_checker/img_845ce00.4bpp"); +const u8 gUnknown_845CF00[] = INCBIN_U8("data/fame_checker/img_845cf00.4bpp"); +const u16 gUnknown_845D0E0[] = INCBIN_U16("data/fame_checker/pal_845d0e0.gbapal"); +const u8 gUnknown_845D100[] = INCBIN_U8("data/fame_checker/img_845d100.4bpp"); +const u16 gUnknown_845D500[] = INCBIN_U16("data/fame_checker/pal_845d500.gbapal"); +const u8 gUnknown_845D520[] = INCBIN_U8("data/fame_checker/img_845d520.4bpp"); const u16 gUnknown_845DD20[] = INCBIN_U16("data/fame_checker/pal_845dd20.gbapal"); -const u16 gUnknown_845DD40[] = INCBIN_U16("data/fame_checker/img_845dd40.4bpp"); +const u8 gUnknown_845DD40[] = INCBIN_U8("data/fame_checker/img_845dd40.4bpp"); const u16 gUnknown_845E540[] = INCBIN_U16("data/fame_checker/pal_845e540.gbapal"); -const u16 gUnknown_845E560[] = INCBIN_U16("data/fame_checker/img_845e560.4bpp"); +const u8 gUnknown_845E560[] = INCBIN_U8("data/fame_checker/img_845e560.4bpp"); const u16 gUnknown_845ED60[] = INCBIN_U16("data/fame_checker/pal_845ed60.gbapal"); -const u16 gUnknown_845ED80[] = INCBIN_U16("data/fame_checker/img_845ed80.4bpp"); +const u8 gUnknown_845ED80[] = INCBIN_U8("data/fame_checker/img_845ed80.4bpp"); const u16 gUnknown_845F580[] = INCBIN_U16("data/fame_checker/pal_845f580.gbapal"); const u16 gUnknown_845F5A0[] = INCBIN_U16("data/fame_checker/pal_845f5a0.gbapal"); const u16 gUnknown_845F5C0[] = INCBIN_U16("data/fame_checker/pal_845f5c0.gbapal"); @@ -318,9 +324,19 @@ const u8 *const gUnknown_845FA1C[] = { gUnknown_81B1439, gUnknown_81B1442, gUnknown_81B144C, gUnknown_81B1456, gUnknown_81B145F, gUnknown_81B1463 }; -extern const struct BgTemplate gUnknown_845FBF4[4]; -extern const struct SpriteSheet gUnknown_845FB9C[]; +const struct SpriteSheet gUnknown_845FB9C[] = { + {gUnknown_845D100, 0x400, SPRITETAG_1000}, + {gUnknown_845CE00, 0x100, SPRITETAG_1001}, + {gUnknown_845CF00, 0x1e0, SPRITETAG_1002}, + {gUnknown_845E560, 0x800, SPRITETAG_1006}, + {gUnknown_845D520, 0x800, SPRITETAG_1007}, + {gUnknown_845ED80, 0x800, SPRITETAG_1008}, + {gUnknown_845DD40, 0x800, SPRITETAG_1009}, + {} +}; + extern const struct SpritePalette gUnknown_845FBDC[]; +extern const struct BgTemplate gUnknown_845FBF4[4]; extern const struct WindowTemplate gUnknown_845FC04[]; extern const struct SpriteTemplate gUnknown_845FC44; extern const struct SpriteTemplate gUnknown_845FC78; -- cgit v1.2.3 From 2e1ce30d8b72348d818287215ee1a55d89524a16 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Nov 2018 15:22:21 -0500 Subject: First pass disassembly of fame_checker sprite templates --- src/fame_checker.c | 52 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 49 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index 82cb25812..ac01f172f 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -335,9 +335,55 @@ const struct SpriteSheet gUnknown_845FB9C[] = { {} }; -extern const struct SpritePalette gUnknown_845FBDC[]; -extern const struct BgTemplate gUnknown_845FBF4[4]; -extern const struct WindowTemplate gUnknown_845FC04[]; +const struct SpritePalette gUnknown_845FBDC[] = { + {gUnknown_845D500, SPRITETAG_1000}, + {gUnknown_845D0E0, SPRITETAG_1002}, + {} +}; + +const struct BgTemplate gUnknown_845FBF4[4] = { + { + .bg = 3, + .charBaseIndex = 0x03, + .mapBaseIndex = 0x1e, + .screenSize = 0, + .paletteMode = FALSE, + .priority = 3, + .baseTile = 0x000}, + { + .bg = 2, + .charBaseIndex = 0x03, + .mapBaseIndex = 0x1b, + .screenSize = 0, + .paletteMode = FALSE, + .priority = 2, + .baseTile = 0x000}, + { + .bg = 1, + .charBaseIndex = 0x03, + .mapBaseIndex = 0x1c, + .screenSize = 1, + .paletteMode = FALSE, + .priority = 0, + .baseTile = 0x000}, + { + .bg = 0, + .charBaseIndex = 0x00, + .mapBaseIndex = 0x1f, + .screenSize = 0, + .paletteMode = FALSE, + .priority = 2, + .baseTile = 0x000}, +}; + +const struct WindowTemplate gUnknown_845FC04[] = { + {0x00, 0x01, 0x03, 0x08, 0x0a, 0x0f, 0x0014}, + {0x00, 0x06, 0x00, 0x18, 0x02, 0x0f, 0x0064}, + {0x00, 0x02, 0x0f, 0x1a, 0x04, 0x0f, 0x0094}, + {0x00, 0x0f, 0x0a, 0x0b, 0x04, 0x0f, 0x00fc}, + DUMMY_WIN_TEMPLATE +}; + extern const struct SpriteTemplate gUnknown_845FC44; extern const struct SpriteTemplate gUnknown_845FC78; extern const struct SpriteTemplate gUnknown_845FCB8; -- cgit v1.2.3 From e88def5ab1f84d5aad5485d47975ea0d01e878c5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Nov 2018 15:39:30 -0500 Subject: Decompile remaining sprite templates --- src/fame_checker.c | 104 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 97 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index ac01f172f..0efd60057 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -104,6 +104,7 @@ void sub_812D9A8(u8 a0, u16 a1); void sub_812DA14(u8 a0); void sub_812DB10(void); void sub_812DB28(void); +void sub_812D840(struct Sprite * sprite); void sub_812DB64(void); void sub_812DBC0(s32, bool8, struct ListMenu *); void sub_812DD50(u8 taskId); @@ -384,13 +385,102 @@ const struct WindowTemplate gUnknown_845FC04[] = { DUMMY_WIN_TEMPLATE }; -extern const struct SpriteTemplate gUnknown_845FC44; -extern const struct SpriteTemplate gUnknown_845FC78; -extern const struct SpriteTemplate gUnknown_845FCB8; -extern const struct SpriteTemplate gUnknown_845FCE4; -extern const struct SpriteTemplate gUnknown_845FCFC; -extern const struct SpriteTemplate gUnknown_845FD14; -extern const struct SpriteTemplate gUnknown_845FD2C; +const union AnimCmd gUnknown_845FC2C[] = { + ANIMCMD_FRAME( 0, 15), + ANIMCMD_FRAME(16, 15), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd *const gUnknown_845FC38[] = { + gUnknown_845FC2C +}; + +const struct OamData gOamData_845FC3C = { + .size = 2, + .priority = 2 +}; + +const struct SpriteTemplate gUnknown_845FC44 = { + SPRITETAG_1000, SPRITETAG_1000, &gOamData_845FC3C, gUnknown_845FC38, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const u8 filler_845FC5C[8] = {}; + +const struct OamData gOamData_845FC64 = { + .shape = ST_OAM_V_RECTANGLE, + .size = 2, + .priority = 2 +}; + +const union AnimCmd gUnknown_845FC6C[] = { + ANIMCMD_FRAME( 0, 10), + ANIMCMD_END +}; + +const union AnimCmd *const gUnknown_845FC74[] = { + gUnknown_845FC6C +}; + +const struct SpriteTemplate gUnknown_845FC78 = { + SPRITETAG_1001, 0xffff, &gOamData_845FC64, gUnknown_845FC74, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const union AnimCmd gUnknown_845FC90[] = { + ANIMCMD_FRAME( 0, 10), + ANIMCMD_END +}; + +const union AnimCmd *const gUnknown_845FC98[] = { + gUnknown_845FC90 +}; + +const struct OamData gOamData_845FC9C = { + .affineMode = ST_OAM_AFFINE_NORMAL, + .size = 2 +}; + +const union AffineAnimCmd gUnknown_845FCA4[] = { + AFFINEANIMCMD_FRAME(0, 0, 4, 20), + AFFINEANIMCMD_JUMP(0) +}; + +const union AffineAnimCmd *const gUnknown_845FCB4[] = { + gUnknown_845FCA4 +}; + +const struct SpriteTemplate gUnknown_845FCB8 = { + SPRITETAG_1002, SPRITETAG_1002, &gOamData_845FC9C, gUnknown_845FC98, NULL, gUnknown_845FCB4, sub_812D840 +}; + +const union AnimCmd gUnknown_845FCD0[] = { + ANIMCMD_FRAME( 0, 15), + ANIMCMD_END +}; + +const union AnimCmd *const gUnknown_845FCD8[] = { + gUnknown_845FCD0 +}; + +const struct OamData gOamData_845FCDC = { + .size = 3 +}; + +const struct SpriteTemplate gUnknown_845FCE4 = { + SPRITETAG_1006, 0xffff, &gOamData_845FCDC, gUnknown_845FCD8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const struct SpriteTemplate gUnknown_845FCFC = { + SPRITETAG_1007, 0xffff, &gOamData_845FCDC, gUnknown_845FCD8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const struct SpriteTemplate gUnknown_845FD14 = { + SPRITETAG_1008, 0xffff, &gOamData_845FCDC, gUnknown_845FCD8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + +const struct SpriteTemplate gUnknown_845FD2C = { + SPRITETAG_1009, 0xffff, &gOamData_845FCDC, gUnknown_845FCD8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; + extern const struct ScrollIndicatorArrowPairTemplate gUnknown_845FD44; void sub_812C380(void) -- cgit v1.2.3 From a2b7b3ebf2f5460c4f5ab076e5dcb06935f61d25 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Nov 2018 15:47:50 -0500 Subject: Finish data decomp --- src/fame_checker.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index 0efd60057..dfece6720 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -481,8 +481,6 @@ const struct SpriteTemplate gUnknown_845FD2C = { SPRITETAG_1009, 0xffff, &gOamData_845FCDC, gUnknown_845FCD8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -extern const struct ScrollIndicatorArrowPairTemplate gUnknown_845FD44; - void sub_812C380(void) { LoadOam(); @@ -1458,7 +1456,21 @@ void sub_812DFE4(u8 windowId) void sub_812E000(void) { - struct ScrollIndicatorArrowPairTemplate sp0 = gUnknown_845FD44; + struct ScrollIndicatorArrowPairTemplate sp0 = { + 2, + 40, + 26, + 3, + 40, + 100, + 0, + 0, + 1004, + 0xFFFF, + 1, + 0 + }; + if (gUnknown_203B0FC->unk_07_2 > 5) { sp0.unk_06 = 0; -- cgit v1.2.3 From 69106536eb68653a47f31c7bd9f8755087ce7b43 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Nov 2018 18:12:17 -0500 Subject: Start documenting stuff; make objects static where possible --- src/fame_checker.c | 430 ++++++++++++++++++++++++++--------------------------- 1 file changed, 215 insertions(+), 215 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index dfece6720..b2fe20c9b 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -36,18 +36,18 @@ struct FameCheckerData { - MainCallback unk_00; + MainCallback savedCallback; u16 unk_04; u8 unk_06; u8 unk_07_0:1; u8 unk_07_1:1; u8 unk_07_2:6; - u8 unk_08; + u8 scrollIndicatorArrowObjectTaskId; u8 unk_09; u8 unk_0A; u8 unk_0B; - u8 unk_0C[17]; - u8 unk_1D[6]; + u8 unlockedPersons[17]; + u8 spriteIds[6]; u8 unk_23_0:1; u8 unk_23_1:1; u8 unk_23_2:1; @@ -63,62 +63,62 @@ EWRAM_DATA s32 gUnknown_203B104 = 0; struct ListMenuTemplate gUnknown_3005EB0; u8 gUnknown_3005EC8; -void sub_812C3F8(void); -void sub_812C648(void); -void sub_812C664(u8 taskId); -void sub_812C694(u8 taskId); -bool8 sub_812C8F8(u8 taskId); -void sub_812C990(void); -void sub_812C9BC(u8 taskId); -void sub_812CA1C(u8 taskId); -void sub_812CAD8(u8 taskId); -void sub_812CC68(u8 taskId, s8 dx, s8 dy); -void sub_812CD3C(void); -void sub_812CE04(u8 taskId); -void sub_812CE9C(void); -void sub_812CEC0(void); -void sub_812CEE0(u8 windowId); -bool8 sub_812CEFC(u8 taskId, u8 objMode); -void sub_812CF3C(u8 taskId); -void sub_812CF7C(u8 taskId); -void sub_812D094(u8 windowId); -void sub_812D0F4(u8 a0); -bool8 sub_812D1A8(u8 a0); -void sub_812D420(void); -void sub_812D558(void); -void sub_812D584(void); -void sub_812D594(void); -void sub_812D650(void); -bool8 sub_812D6B4(void); -void sub_812D70C(void); -u8 sub_812D724(s16 a0); -void sub_812D764(struct Sprite *sprite); -void sub_812D770(void); -u8 sub_812D780(u8, u8); -void sub_812D7C8(void); -u8 sub_812D7E4(void); -void sub_812D800(struct Sprite *sprite); -void sub_812D814(void); -u8 sub_812D888(u8 a0); -void sub_812D9A8(u8 a0, u16 a1); -void sub_812DA14(u8 a0); -void sub_812DB10(void); -void sub_812DB28(void); -void sub_812D840(struct Sprite * sprite); -void sub_812DB64(void); -void sub_812DBC0(s32, bool8, struct ListMenu *); -void sub_812DD50(u8 taskId); -void sub_812DDAC(void); -void sub_812DDF0(s32 itemIndex, bool8 onInit); -u8 sub_812DEF0(void); -void sub_812DFE4(u8); -void sub_812E000(void); -void sub_812E048(void); -u16 sub_812E064(void); -void sub_812E094(u8); -void sub_812E110(u8 taskId); -void sub_812E178(u8 a0, s16 a1); -void sub_812E4A4(u8 a0); +static void sub_812C3F8(void); +static void sub_812C648(void); +static void sub_812C664(u8 taskId); +static void sub_812C694(u8 taskId); +static bool8 sub_812C8F8(u8 taskId); +static void sub_812C990(void); +static void sub_812C9BC(u8 taskId); +static void sub_812CA1C(u8 taskId); +static void sub_812CAD8(u8 taskId); +static void sub_812CC68(u8 taskId, s8 dx, s8 dy); +static void sub_812CD3C(void); +static void sub_812CE04(u8 taskId); +static void sub_812CE9C(void); +static void sub_812CEC0(void); +static void sub_812CEE0(u8 windowId); +static bool8 sub_812CEFC(u8 taskId, u8 objMode); +static void sub_812CF3C(u8 taskId); +static void sub_812CF7C(u8 taskId); +static void sub_812D094(u8 windowId); +static void sub_812D0F4(u8 a0); +static bool8 sub_812D1A8(u8 a0); +static void sub_812D420(void); +static void sub_812D558(void); +static void sub_812D584(void); +static void sub_812D594(void); +static void sub_812D650(void); +static bool8 sub_812D6B4(void); +static void sub_812D70C(void); +static u8 sub_812D724(s16 a0); +static void sub_812D764(struct Sprite *sprite); +static void sub_812D770(void); +static u8 sub_812D780(u8, u8); +static void sub_812D7C8(void); +static u8 sub_812D7E4(void); +static void sub_812D800(struct Sprite *sprite); +static void sub_812D814(void); +static u8 sub_812D888(u8 a0); +static void sub_812D9A8(u8 a0, u16 a1); +static void sub_812DA14(u8 a0); +static void sub_812DB10(void); +static void sub_812DB28(void); +static void sub_812D840(struct Sprite * sprite); +static void sub_812DB64(void); +static void sub_812DBC0(s32, bool8, struct ListMenu *); +static void sub_812DD50(u8 taskId); +static void sub_812DDAC(void); +static void sub_812DDF0(s32 itemIndex, bool8 onInit); +static u8 sub_812DEF0(void); +static void sub_812DFE4(u8); +static void sub_812E000(void); +static void sub_812E048(void); +static u16 sub_812E064(void); +static void sub_812E094(u8); +static void sub_812E110(u8 taskId); +static void sub_812E178(u8 a0, s16 a1); +static void sub_812E4A4(u8 a0); extern const u8 gUnknown_84161C1[]; extern const u8 gUnknown_841623B[]; @@ -132,28 +132,28 @@ extern const u8 gUnknown_841E5ED[]; extern const u8 gUnknown_841E5F3[]; extern const u8 gUnknown_841E5F8[]; -const u16 gUnknown_845C600[] = INCBIN_U16("data/fame_checker/tilemap_845c600.bin"); -const u8 gUnknown_845CE00[] = INCBIN_U8("data/fame_checker/img_845ce00.4bpp"); -const u8 gUnknown_845CF00[] = INCBIN_U8("data/fame_checker/img_845cf00.4bpp"); -const u16 gUnknown_845D0E0[] = INCBIN_U16("data/fame_checker/pal_845d0e0.gbapal"); -const u8 gUnknown_845D100[] = INCBIN_U8("data/fame_checker/img_845d100.4bpp"); -const u16 gUnknown_845D500[] = INCBIN_U16("data/fame_checker/pal_845d500.gbapal"); -const u8 gUnknown_845D520[] = INCBIN_U8("data/fame_checker/img_845d520.4bpp"); -const u16 gUnknown_845DD20[] = INCBIN_U16("data/fame_checker/pal_845dd20.gbapal"); -const u8 gUnknown_845DD40[] = INCBIN_U8("data/fame_checker/img_845dd40.4bpp"); -const u16 gUnknown_845E540[] = INCBIN_U16("data/fame_checker/pal_845e540.gbapal"); -const u8 gUnknown_845E560[] = INCBIN_U8("data/fame_checker/img_845e560.4bpp"); -const u16 gUnknown_845ED60[] = INCBIN_U16("data/fame_checker/pal_845ed60.gbapal"); -const u8 gUnknown_845ED80[] = INCBIN_U8("data/fame_checker/img_845ed80.4bpp"); -const u16 gUnknown_845F580[] = INCBIN_U16("data/fame_checker/pal_845f580.gbapal"); -const u16 gUnknown_845F5A0[] = INCBIN_U16("data/fame_checker/pal_845f5a0.gbapal"); -const u16 gUnknown_845F5C0[] = INCBIN_U16("data/fame_checker/pal_845f5c0.gbapal"); - -const struct TextColor gUnknown_845F5E0 = {0x00, 0x01, 0x02}; -const struct TextColor gUnknown_845F5E3 = {0x00, 0x02, 0x03}; -const struct TextColor gUnknown_845F5E6 = {0x00, 0x06, 0x07}; - -const u16 gUnknown_845F5EA[] = { +static const u16 gUnknown_845C600[] = INCBIN_U16("data/fame_checker/tilemap_845c600.bin"); +static const u8 gUnknown_845CE00[] = INCBIN_U8("data/fame_checker/img_845ce00.4bpp"); +static const u8 gUnknown_845CF00[] = INCBIN_U8("data/fame_checker/img_845cf00.4bpp"); +static const u16 gUnknown_845D0E0[] = INCBIN_U16("data/fame_checker/pal_845d0e0.gbapal"); +static const u8 gUnknown_845D100[] = INCBIN_U8("data/fame_checker/img_845d100.4bpp"); +static const u16 gUnknown_845D500[] = INCBIN_U16("data/fame_checker/pal_845d500.gbapal"); +static const u8 gUnknown_845D520[] = INCBIN_U8("data/fame_checker/img_845d520.4bpp"); +static const u16 gUnknown_845DD20[] = INCBIN_U16("data/fame_checker/pal_845dd20.gbapal"); +static const u8 gUnknown_845DD40[] = INCBIN_U8("data/fame_checker/img_845dd40.4bpp"); +static const u16 gUnknown_845E540[] = INCBIN_U16("data/fame_checker/pal_845e540.gbapal"); +static const u8 gUnknown_845E560[] = INCBIN_U8("data/fame_checker/img_845e560.4bpp"); +static const u16 gUnknown_845ED60[] = INCBIN_U16("data/fame_checker/pal_845ed60.gbapal"); +static const u8 gUnknown_845ED80[] = INCBIN_U8("data/fame_checker/img_845ed80.4bpp"); +static const u16 gUnknown_845F580[] = INCBIN_U16("data/fame_checker/pal_845f580.gbapal"); +static const u16 gUnknown_845F5A0[] = INCBIN_U16("data/fame_checker/pal_845f5a0.gbapal"); +static const u16 gUnknown_845F5C0[] = INCBIN_U16("data/fame_checker/pal_845f5c0.gbapal"); + +static const struct TextColor gUnknown_845F5E0 = {0x00, 0x01, 0x02}; +static const struct TextColor gUnknown_845F5E3 = {0x00, 0x02, 0x03}; +static const struct TextColor gUnknown_845F5E6 = {0x00, 0x06, 0x07}; + +static const u16 gUnknown_845F5EA[] = { 0xfe00, 0xfe01, 0x019e, @@ -172,14 +172,14 @@ const u16 gUnknown_845F5EA[] = { 0x015c }; -const u8 *const gUnknown_845F60C[] = { +static const u8 *const gUnknown_845F60C[] = { gUnknown_841E5E9, gUnknown_841E5ED, gUnknown_841E5F3, gUnknown_841E5F8 }; -const u8 gUnknown_845F61C[] = { +static const u8 gUnknown_845F61C[] = { 0x56, 0x54, 0x74, @@ -214,7 +214,7 @@ const u8 gUnknown_845F61C[] = { 0x00 }; -const u8 *const gUnknown_845F63C[] = { +static const u8 *const gUnknown_845F63C[] = { gUnknown_81B0188, gUnknown_81B0251, gUnknown_81B030F, @@ -249,7 +249,7 @@ const u8 *const gUnknown_845F63C[] = { gUnknown_81B0BB5 }; -const u8 *const gUnknown_845F6BC[] = { +static const u8 *const gUnknown_845F6BC[] = { gUnknown_81AD106, gUnknown_81AD145, gUnknown_81AD1BB, gUnknown_81AD258, gUnknown_81AD2B9, gUnknown_81AD377, gUnknown_81AD40C, gUnknown_81AD4AE, gUnknown_81AD516, gUnknown_81AD5A7, gUnknown_81AD608, gUnknown_81AD69F, gUnknown_81AD705, gUnknown_81AD771, gUnknown_81AD840, gUnknown_81AD908, gUnknown_81AD99A, gUnknown_81ADA27, @@ -268,7 +268,7 @@ const u8 *const gUnknown_845F6BC[] = { gUnknown_81AFE68, gUnknown_81AFF23, gUnknown_81AFFA8, gUnknown_81B0022, gUnknown_81B00A6, gUnknown_81B0106 }; -const u8 gUnknown_845F83C[] = { +static const u8 gUnknown_845F83C[] = { 0x67, 0x47, 0x30, 0x69, 0x4b, 0x37, 0x37, 0x30, 0x3d, 0x69, 0x23, 0x69, 0x66, 0x50, 0x1b, 0x13, 0x1e, 0x69, @@ -287,7 +287,7 @@ const u8 gUnknown_845F83C[] = { 0x57, 0x37, 0x37, 0x57, 0x5b, 0x37 }; -const u8 *const gUnknown_845F89C[] = { +static const u8 *const gUnknown_845F89C[] = { gUnknown_81B0C45, gUnknown_81B0C51, gUnknown_81B0C5E, gUnknown_81B0C6B, gUnknown_81B0C79, gUnknown_81B0C88, gUnknown_81B0C95, gUnknown_81B0CA2, gUnknown_81B0CB1, gUnknown_81B0CC1, gUnknown_81B0CCF, gUnknown_81B0CDF, gUnknown_81B0CEB, gUnknown_81B0CF7, gUnknown_81B0D02, gUnknown_81B0D0E, gUnknown_81B0D16, gUnknown_81B0D1F, @@ -306,7 +306,7 @@ const u8 *const gUnknown_845F89C[] = { gUnknown_81B10F8, gUnknown_81B1107, gUnknown_81B1111, gUnknown_81B111B, gUnknown_81B1128, gUnknown_81B1135 }; -const u8 *const gUnknown_845FA1C[] = { +static const u8 *const gUnknown_845FA1C[] = { gUnknown_81B1146, gUnknown_81B114B, gUnknown_81B1155, gUnknown_81B115A, gUnknown_81B116A, gUnknown_81B1171, gUnknown_81B1176, gUnknown_81B117B, gUnknown_81B1181, gUnknown_81B1185, gUnknown_81B1195, gUnknown_81B119E, gUnknown_81B11AE, gUnknown_81B11B3, gUnknown_81B11B9, gUnknown_81B11C3, gUnknown_81B11C7, gUnknown_81B11CB, @@ -325,7 +325,7 @@ const u8 *const gUnknown_845FA1C[] = { gUnknown_81B1439, gUnknown_81B1442, gUnknown_81B144C, gUnknown_81B1456, gUnknown_81B145F, gUnknown_81B1463 }; -const struct SpriteSheet gUnknown_845FB9C[] = { +static const struct SpriteSheet gUnknown_845FB9C[] = { {gUnknown_845D100, 0x400, SPRITETAG_1000}, {gUnknown_845CE00, 0x100, SPRITETAG_1001}, {gUnknown_845CF00, 0x1e0, SPRITETAG_1002}, @@ -336,13 +336,13 @@ const struct SpriteSheet gUnknown_845FB9C[] = { {} }; -const struct SpritePalette gUnknown_845FBDC[] = { +static const struct SpritePalette gUnknown_845FBDC[] = { {gUnknown_845D500, SPRITETAG_1000}, {gUnknown_845D0E0, SPRITETAG_1002}, {} }; -const struct BgTemplate gUnknown_845FBF4[4] = { +static const struct BgTemplate gUnknown_845FBF4[4] = { { .bg = 3, .charBaseIndex = 0x03, @@ -377,7 +377,7 @@ const struct BgTemplate gUnknown_845FBF4[4] = { .baseTile = 0x000}, }; -const struct WindowTemplate gUnknown_845FC04[] = { +static const struct WindowTemplate gUnknown_845FC04[] = { {0x00, 0x01, 0x03, 0x08, 0x0a, 0x0f, 0x0014}, {0x00, 0x06, 0x00, 0x18, 0x02, 0x0f, 0x0064}, {0x00, 0x02, 0x0f, 0x1a, 0x04, 0x0f, 0x0094}, @@ -385,110 +385,110 @@ const struct WindowTemplate gUnknown_845FC04[] = { DUMMY_WIN_TEMPLATE }; -const union AnimCmd gUnknown_845FC2C[] = { +static const union AnimCmd gUnknown_845FC2C[] = { ANIMCMD_FRAME( 0, 15), ANIMCMD_FRAME(16, 15), ANIMCMD_JUMP(0) }; -const union AnimCmd *const gUnknown_845FC38[] = { +static const union AnimCmd *const gUnknown_845FC38[] = { gUnknown_845FC2C }; -const struct OamData gOamData_845FC3C = { +static const struct OamData gOamData_845FC3C = { .size = 2, .priority = 2 }; -const struct SpriteTemplate gUnknown_845FC44 = { +static const struct SpriteTemplate gUnknown_845FC44 = { SPRITETAG_1000, SPRITETAG_1000, &gOamData_845FC3C, gUnknown_845FC38, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const u8 filler_845FC5C[8] = {}; +static const u8 filler_845FC5C[8] = {}; -const struct OamData gOamData_845FC64 = { +static const struct OamData gOamData_845FC64 = { .shape = ST_OAM_V_RECTANGLE, .size = 2, .priority = 2 }; -const union AnimCmd gUnknown_845FC6C[] = { +static const union AnimCmd gUnknown_845FC6C[] = { ANIMCMD_FRAME( 0, 10), ANIMCMD_END }; -const union AnimCmd *const gUnknown_845FC74[] = { +static const union AnimCmd *const gUnknown_845FC74[] = { gUnknown_845FC6C }; -const struct SpriteTemplate gUnknown_845FC78 = { +static const struct SpriteTemplate gUnknown_845FC78 = { SPRITETAG_1001, 0xffff, &gOamData_845FC64, gUnknown_845FC74, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const union AnimCmd gUnknown_845FC90[] = { +static const union AnimCmd gUnknown_845FC90[] = { ANIMCMD_FRAME( 0, 10), ANIMCMD_END }; -const union AnimCmd *const gUnknown_845FC98[] = { +static const union AnimCmd *const gUnknown_845FC98[] = { gUnknown_845FC90 }; -const struct OamData gOamData_845FC9C = { +static const struct OamData gOamData_845FC9C = { .affineMode = ST_OAM_AFFINE_NORMAL, .size = 2 }; -const union AffineAnimCmd gUnknown_845FCA4[] = { +static const union AffineAnimCmd gUnknown_845FCA4[] = { AFFINEANIMCMD_FRAME(0, 0, 4, 20), AFFINEANIMCMD_JUMP(0) }; -const union AffineAnimCmd *const gUnknown_845FCB4[] = { +static const union AffineAnimCmd *const gUnknown_845FCB4[] = { gUnknown_845FCA4 }; -const struct SpriteTemplate gUnknown_845FCB8 = { +static const struct SpriteTemplate gUnknown_845FCB8 = { SPRITETAG_1002, SPRITETAG_1002, &gOamData_845FC9C, gUnknown_845FC98, NULL, gUnknown_845FCB4, sub_812D840 }; -const union AnimCmd gUnknown_845FCD0[] = { +static const union AnimCmd gUnknown_845FCD0[] = { ANIMCMD_FRAME( 0, 15), ANIMCMD_END }; -const union AnimCmd *const gUnknown_845FCD8[] = { +static const union AnimCmd *const gUnknown_845FCD8[] = { gUnknown_845FCD0 }; -const struct OamData gOamData_845FCDC = { +static const struct OamData gOamData_845FCDC = { .size = 3 }; -const struct SpriteTemplate gUnknown_845FCE4 = { +static const struct SpriteTemplate gUnknown_845FCE4 = { SPRITETAG_1006, 0xffff, &gOamData_845FCDC, gUnknown_845FCD8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const struct SpriteTemplate gUnknown_845FCFC = { +static const struct SpriteTemplate gUnknown_845FCFC = { SPRITETAG_1007, 0xffff, &gOamData_845FCDC, gUnknown_845FCD8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const struct SpriteTemplate gUnknown_845FD14 = { +static const struct SpriteTemplate gUnknown_845FD14 = { SPRITETAG_1008, 0xffff, &gOamData_845FCDC, gUnknown_845FCD8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -const struct SpriteTemplate gUnknown_845FD2C = { +static const struct SpriteTemplate gUnknown_845FD2C = { SPRITETAG_1009, 0xffff, &gOamData_845FCDC, gUnknown_845FCD8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -void sub_812C380(void) +static void sub_812C380(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -void sub_812C394(void) +static void sub_812C394(void) { RunTasks(); AnimateSprites(); @@ -496,11 +496,11 @@ void sub_812C394(void) UpdatePaletteFade(); } -void sub_812C3AC(void (*a0)(void)) +void UseFameChecker(MainCallback savedCallback) { SetVBlankCallback(NULL); gUnknown_203B0FC = AllocZeroed(sizeof(struct FameCheckerData)); - gUnknown_203B0FC->unk_00 = a0; + gUnknown_203B0FC->savedCallback = savedCallback; gUnknown_203B0FC->unk_09 = 0; gUnknown_203B0FC->unk_0A = 0; gUnknown_203B0FC->unk_0B = 0; @@ -509,7 +509,7 @@ void sub_812C3AC(void (*a0)(void)) SetMainCallback2(sub_812C3F8); } -void sub_812C3F8(void) +static void sub_812C3F8(void) { switch (gMain.state) { @@ -588,19 +588,19 @@ void sub_812C3F8(void) } } -void sub_812C648(void) +static void sub_812C648(void) { LoadSpriteSheets(gUnknown_845FB9C); LoadSpritePalettes(gUnknown_845FBDC); } -void sub_812C664(u8 taskId) +static void sub_812C664(u8 taskId) { if (!gPaletteFade.active) gTasks[taskId].func = sub_812C694; } -void sub_812C694(u8 taskId) +static void sub_812C694(u8 taskId) { u16 r4; u8 r4_2; @@ -609,7 +609,7 @@ void sub_812C694(u8 taskId) if (FindTaskIdByFunc(sub_812E110) == 0xFF) { RunTextPrinters(); - if ((PRESSED(SELECT_BUTTON)) && !gUnknown_203B0FC->unk_07_1 && gUnknown_203B0FC->unk_00 != sub_8107EB8) + if ((PRESSED(SELECT_BUTTON)) && !gUnknown_203B0FC->unk_07_1 && gUnknown_203B0FC->savedCallback != sub_8107EB8) task->func = sub_812CF3C; else if (PRESSED(START_BUTTON)) { @@ -626,7 +626,7 @@ void sub_812C694(u8 taskId) sub_812E178(2, 4); sub_812E178(1, 5); sub_812D0F4(1); - task->data[2] = sub_812D888(gUnknown_203B0FC->unk_0C[r4]); + task->data[2] = sub_812D888(gUnknown_203B0FC->unlockedPersons[r4]); gSprites[task->data[2]].pos2.x = 0xF0; gSprites[task->data[2]].data[0] = 1; task->data[3] = sub_812D7E4(); @@ -652,12 +652,12 @@ void sub_812C694(u8 taskId) for (r4_2 = 0; r4_2 < 6; r4_2++) { if (r4_2 != task->data[1]) - sub_812CEFC(gUnknown_203B0FC->unk_1D[r4_2], ST_OAM_OBJ_BLEND); + sub_812CEFC(gUnknown_203B0FC->spriteIds[r4_2], ST_OAM_OBJ_BLEND); } gUnknown_3005EC8 = 0xFF; sub_812E4A4(0); sub_812D0F4(2); - if (gSprites[gUnknown_203B0FC->unk_1D[task->data[1]]].data[1] != 0xFF) + if (gSprites[gUnknown_203B0FC->spriteIds[task->data[1]]].data[1] != 0xFF) { sub_812CE04(taskId); sub_812DA14(data[1]); @@ -676,7 +676,7 @@ void sub_812C694(u8 taskId) } } -bool8 sub_812C8F8(u8 taskId) +static bool8 sub_812C8F8(u8 taskId) { struct Task *task = &gTasks[taskId]; if (gUnknown_203B0FC->unk_07_1) @@ -694,12 +694,12 @@ bool8 sub_812C8F8(u8 taskId) return FALSE; } -void sub_812C990(void) +static void sub_812C990(void) { AddTextPrinterParametrized(2, 2, gUnknown_84181E4, 0, NULL, 2, 1, 3); } -void sub_812C9BC(u8 taskId) +static void sub_812C9BC(u8 taskId) { struct Task *task = &gTasks[taskId]; if (gSprites[task->data[2]].data[0] == 0) @@ -712,7 +712,7 @@ void sub_812C9BC(u8 taskId) ChangeBgX(1, 0xA00, 1); } -void sub_812CA1C(u8 taskId) +static void sub_812CA1C(u8 taskId) { struct Task *task = &gTasks[taskId]; if (GetBgX(1) != 0) @@ -732,7 +732,7 @@ void sub_812CA1C(u8 taskId) } } -void sub_812CAD8(u8 taskId) +static void sub_812CAD8(u8 taskId) { struct Task *task = &gTasks[taskId]; s16 *data = gTasks[taskId].data; @@ -740,7 +740,7 @@ void sub_812CAD8(u8 taskId) RunTextPrinters(); if (PRESSED(A_BUTTON) && !IsTextPrinterActive(2)) { - u8 spriteId = gUnknown_203B0FC->unk_1D[data[1]]; + u8 spriteId = gUnknown_203B0FC->spriteIds[data[1]]; if (gSprites[spriteId].data[1] != 0xFF) sub_812CE04(taskId); } @@ -749,7 +749,7 @@ void sub_812CAD8(u8 taskId) u8 r4; PlaySE(SE_SELECT); for (r4 = 0; r4 < 6; r4++) - sub_812CEFC(gUnknown_203B0FC->unk_1D[r4], ST_OAM_OBJ_NORMAL); + sub_812CEFC(gUnknown_203B0FC->spriteIds[r4], ST_OAM_OBJ_NORMAL); sub_812CE9C(); gSprites[task->data[0]].callback = sub_812D764; if (gUnknown_3005EC8 != 0xFF) @@ -801,7 +801,7 @@ void sub_812CAD8(u8 taskId) } } -void sub_812CC68(u8 taskId, s8 dx, s8 dy) +static void sub_812CC68(u8 taskId, s8 dx, s8 dy) { u8 i; s16 *data = gTasks[taskId].data; @@ -809,10 +809,10 @@ void sub_812CC68(u8 taskId, s8 dx, s8 dy) gSprites[data[0]].pos1.x += dx; gSprites[data[0]].pos1.y += dy; for (i = 0; i < 6; i++) - sub_812CEFC(gUnknown_203B0FC->unk_1D[i], ST_OAM_OBJ_BLEND); + sub_812CEFC(gUnknown_203B0FC->spriteIds[i], ST_OAM_OBJ_BLEND); FillWindowPixelRect(2, 0x11, 0, 0, 0xd0, 0x20); sub_812C990(); - if (sub_812CEFC(gUnknown_203B0FC->unk_1D[data[1]], ST_OAM_OBJ_NORMAL) == TRUE) + if (sub_812CEFC(gUnknown_203B0FC->spriteIds[data[1]], ST_OAM_OBJ_NORMAL) == TRUE) { sub_812CE04(taskId); sub_812DA14(data[1]); @@ -821,11 +821,11 @@ void sub_812CC68(u8 taskId, s8 dx, s8 dy) sub_812DB10(); } -void sub_812CD3C(void) +static void sub_812CD3C(void) { u8 r8 = 0; u16 r6 = sub_812E064(); - if (gSaveBlock1Ptr->fameChecker[gUnknown_203B0FC->unk_0C[r6]].unk_0_0 != 2) + if (gSaveBlock1Ptr->fameChecker[gUnknown_203B0FC->unlockedPersons[r6]].unk_0_0 != 2) { sub_812CE9C(); sub_812C990(); @@ -835,29 +835,29 @@ void sub_812CD3C(void) FillWindowPixelRect(2, 0x11, 0, 0, 0xd0, 0x20); if (sub_812D6B4() == TRUE) r8 = 16; - StringExpandPlaceholders(gStringVar4, gUnknown_845F63C[gUnknown_203B0FC->unk_0C[r6] + r8]); + StringExpandPlaceholders(gStringVar4, gUnknown_845F63C[gUnknown_203B0FC->unlockedPersons[r6] + r8]); AddTextPrinterParametrized(2, 2, gStringVar4, sub_80F78A8(), NULL, 2, 1, 3); sub_812CEE0(2); } } -void sub_812CE04(u8 taskId) +static void sub_812CE04(u8 taskId) { s16 *data = gTasks[taskId].data; u16 r5 = sub_812E064(); FillWindowPixelRect(2, 0x11, 0, 0, 0xd0, 0x20); - StringExpandPlaceholders(gStringVar4, gUnknown_845F6BC[gUnknown_203B0FC->unk_0C[r5] * 6 + data[1]]); + StringExpandPlaceholders(gStringVar4, gUnknown_845F6BC[gUnknown_203B0FC->unlockedPersons[r5] * 6 + data[1]]); AddTextPrinterParametrized(2, 2, gStringVar4, sub_80F78A8(), NULL, 2, 1, 3); sub_812CEE0(2); } -void sub_812CE9C(void) +static void sub_812CE9C(void) { FillWindowPixelRect(2, 0x11, 0, 0, 0xd0, 0x20); sub_812CEE0(2); } -void sub_812CEC0(void) +static void sub_812CEC0(void) { sub_80F6E9C(); sub_80F6EE4(2, 1); @@ -865,13 +865,13 @@ void sub_812CEC0(void) sub_812CEE0(0); } -void sub_812CEE0(u8 windowId) +static void sub_812CEE0(u8 windowId) { PutWindowTilemap(windowId); CopyWindowToVram(windowId, 3); } -bool8 sub_812CEFC(u8 spriteId, u8 objMode) +static bool8 sub_812CEFC(u8 spriteId, u8 objMode) { if (gSprites[spriteId].data[1] != 0xFF) { @@ -881,14 +881,14 @@ bool8 sub_812CEFC(u8 spriteId, u8 objMode) return FALSE; } -void sub_812CF3C(u8 taskId) +static void sub_812CF3C(u8 taskId) { PlaySE(SE_W202); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); gTasks[taskId].func = sub_812CF7C; } -void sub_812CF7C(u8 taskId) +static void sub_812CF7C(u8 taskId) { u8 r4; @@ -902,15 +902,15 @@ void sub_812CF7C(u8 taskId) } for (r4 = 0; r4 < 6; r4++) { - DestroySprite(&gSprites[gUnknown_203B0FC->unk_1D[r4]]); + DestroySprite(&gSprites[gUnknown_203B0FC->spriteIds[r4]]); } sub_812D814(); sub_812D7C8(); sub_812D70C(); sub_812D770(); sub_812E048(); - SetMainCallback2(gUnknown_203B0FC->unk_00); - sub_810713C(gUnknown_203B0FC->unk_08, 0, 0); + SetMainCallback2(gUnknown_203B0FC->savedCallback); + sub_810713C(gUnknown_203B0FC->scrollIndicatorArrowObjectTaskId, 0, 0); Free(gUnknown_203B0F0); Free(gUnknown_203B0F4); Free(gUnknown_203B0F8); @@ -925,7 +925,7 @@ void sub_812CF7C(u8 taskId) } } -void sub_812D094(u8 windowId) +static void sub_812D094(u8 windowId) { FillWindowPixelBuffer(windowId, 0); ClearWindowTilemap(windowId); @@ -933,7 +933,7 @@ void sub_812D094(u8 windowId) RemoveWindow(windowId); } -u8 sub_812D0C0(u8 a0) +static u8 sub_812D0C0(u8 a0) { if (HasTrainerAlreadyBeenFought(0x15e) == TRUE) { @@ -945,7 +945,7 @@ u8 sub_812D0C0(u8 a0) return a0; } -void sub_812D0F4(u8 a0) +static void sub_812D0F4(u8 a0) { const u8 * r5 = gUnknown_841E5A4; s32 width; @@ -961,26 +961,26 @@ void sub_812D0F4(u8 a0) sub_812CEE0(1); } -void sub_812D174(void) +static void sub_812D174(void) { u8 r4; for (r4 = 0; r4 < 6; r4++) { - DestroySprite(&gSprites[gUnknown_203B0FC->unk_1D[r4]]); + DestroySprite(&gSprites[gUnknown_203B0FC->spriteIds[r4]]); } } -bool8 sub_812D1A8(u8 a0) +static bool8 sub_812D1A8(u8 a0) { // r8 <- a0 bool8 r5 = FALSE; u8 r6; for (r6 = 0; r6 < 6; r6++) { - if ((gSaveBlock1Ptr->fameChecker[gUnknown_203B0FC->unk_0C[a0]].unk_0_2 >> r6) & 1) + if ((gSaveBlock1Ptr->fameChecker[gUnknown_203B0FC->unlockedPersons[a0]].unk_0_2 >> r6) & 1) { - gUnknown_203B0FC->unk_1D[r6] = sub_805EB44( - gUnknown_845F83C[gUnknown_203B0FC->unk_0C[a0] * 6 + r6], + gUnknown_203B0FC->spriteIds[r6] = sub_805EB44( + gUnknown_845F83C[gUnknown_203B0FC->unlockedPersons[a0] * 6 + r6], r6, 47 * (r6 % 3) + 0x72, 27 * (r6 / 3) + 0x2F @@ -989,11 +989,11 @@ bool8 sub_812D1A8(u8 a0) } else { - gUnknown_203B0FC->unk_1D[r6] = sub_812D780( + gUnknown_203B0FC->spriteIds[r6] = sub_812D780( 47 * (r6 % 3) + 0x72, 27 * (r6 / 3) + 0x1F ); - gSprites[gUnknown_203B0FC->unk_1D[r6]].data[1] = 0xFF; + gSprites[gUnknown_203B0FC->spriteIds[r6]].data[1] = 0xFF; } } if (r5 == TRUE) @@ -1012,7 +1012,7 @@ bool8 sub_812D1A8(u8 a0) return r5; } -void sub_812D304(void) +void ResetFameChecker(void) { u8 r4; for (r4 = 0; r4 < 16; r4++) @@ -1024,7 +1024,7 @@ void sub_812D304(void) gSaveBlock1Ptr->fameChecker[0].unk_0_0 = 2; } -void sub_812D388(void) +static void sub_812D388(void) { u8 r5, r4; for (r5 = 0; r5 < 16; r5++) @@ -1037,7 +1037,7 @@ void sub_812D388(void) } } -void sub_812D420(void) +static void sub_812D420(void) { void * vram = (void *)VRAM; DmaClearLarge16(3, vram, VRAM_SIZE, 0x1000); @@ -1065,7 +1065,7 @@ void sub_812D420(void) SetGpuReg(REG_OFFSET_BLDY, 0); } -void sub_812D558(void) +static void sub_812D558(void) { remove_some_task(); ResetTasks(); @@ -1077,12 +1077,12 @@ void sub_812D558(void) } -void sub_812D584(void) +static void sub_812D584(void) { SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON); } -void sub_812D594(void) +static void sub_812D594(void) { ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); @@ -1094,7 +1094,7 @@ void sub_812D594(void) ChangeBgY(3, 0, 0); } -void sub_812D5EC(void) +static void sub_812D5EC(void) { if (gUnknown_20370C0 < 16 && gSpecialVar_0x8005 < 6) { @@ -1104,7 +1104,7 @@ void sub_812D5EC(void) } } -void sub_812D650(void) +static void sub_812D650(void) { if (gUnknown_20370C0 < 16 && gSpecialVar_0x8005 < 3) { @@ -1116,10 +1116,10 @@ void sub_812D650(void) } } -bool8 sub_812D6B4(void) +static bool8 sub_812D6B4(void) { u8 r2; - u8 r1 = gUnknown_203B0FC->unk_0C[sub_812E064()]; + u8 r1 = gUnknown_203B0FC->unlockedPersons[sub_812E064()]; for (r2 = 0; r2 < 6; r2++) { if (!((gSaveBlock1Ptr->fameChecker[r1].unk_0_2 >> r2) & 1)) @@ -1128,30 +1128,30 @@ bool8 sub_812D6B4(void) return TRUE; } -void sub_812D70C(void) +static void sub_812D70C(void) { FreeSpriteTilesByTag(SPRITETAG_1000); FreeSpritePaletteByTag(SPRITETAG_1000); } -u8 sub_812D724(s16 a0) +static u8 sub_812D724(s16 a0) { s16 r4 = a0 >= 3 ? 61 : 34; s16 r1 = 47 * (a0 % 3) + 0x72; return CreateSprite(&gUnknown_845FC44, r1, r4, 0); } -void sub_812D764(struct Sprite * sprite) +static void sub_812D764(struct Sprite * sprite) { DestroySprite(sprite); } -void sub_812D770(void) +static void sub_812D770(void) { FreeSpriteTilesByTag(SPRITETAG_1001); } -u8 sub_812D780(u8 x, u8 y) +static u8 sub_812D780(u8 x, u8 y) { u8 spriteId = CreateSprite(&gUnknown_845FC78, x, y, 8); gSprites[spriteId].oam.priority = 2; @@ -1159,24 +1159,24 @@ u8 sub_812D780(u8 x, u8 y) return spriteId; } -void sub_812D7C8(void) +static void sub_812D7C8(void) { FreeSpriteTilesByTag(SPRITETAG_1002); FreeSpritePaletteByTag(SPRITETAG_1002); } -u8 sub_812D7E4(void) +static u8 sub_812D7E4(void) { return CreateSprite(&gUnknown_845FCB8, 0xe2, 0x42, 0); } -void sub_812D800(struct Sprite * sprite) +static void sub_812D800(struct Sprite * sprite) { FreeSpriteOamMatrix(sprite); DestroySprite(sprite); } -void sub_812D814(void) +static void sub_812D814(void) { FreeSpriteTilesByTag(SPRITETAG_1006); FreeSpriteTilesByTag(SPRITETAG_1007); @@ -1184,7 +1184,7 @@ void sub_812D814(void) FreeSpriteTilesByTag(SPRITETAG_1009); } -void sub_812D840(struct Sprite * sprite) +static void sub_812D840(struct Sprite * sprite) { if (sprite->data[0] == 1) { @@ -1208,7 +1208,7 @@ void sub_812D840(struct Sprite * sprite) } } -u8 sub_812D888(u8 a0) +static u8 sub_812D888(u8 a0) { u8 r4; if (a0 == 1) @@ -1245,26 +1245,26 @@ u8 sub_812D888(u8 a0) return r4; } -void sub_812D9A8(u8 taskId, u16 a1) +static void sub_812D9A8(u8 taskId, u16 a1) { s16 * data = gTasks[taskId].data; u16 r1 = a1; if (a1 == gUnknown_203B0FC->unk_07_2 - 1) r1 = a1 - 1; - if ( gUnknown_203B0FC->unk_0C[r1] == 1 - || gUnknown_203B0FC->unk_0C[r1] == 14 - || gUnknown_203B0FC->unk_0C[r1] == 0 - || gUnknown_203B0FC->unk_0C[r1] == 13 + if ( gUnknown_203B0FC->unlockedPersons[r1] == 1 + || gUnknown_203B0FC->unlockedPersons[r1] == 14 + || gUnknown_203B0FC->unlockedPersons[r1] == 0 + || gUnknown_203B0FC->unlockedPersons[r1] == 13 ) DestroySprite(&gSprites[data[2]]); else sub_810C2E8(data[2]); } -void sub_812DA14(u8 a0) +static void sub_812DA14(u8 a0) { s32 width; - u32 r5 = 6 * gUnknown_203B0FC->unk_0C[sub_812E064()] + a0; + u32 r5 = 6 * gUnknown_203B0FC->unlockedPersons[sub_812E064()] + a0; sub_812E094(1); gUnknown_3005EC8 = 1; FillWindowPixelRect(3, 0x00, 0, 0, 0x58, 0x20); @@ -1276,21 +1276,21 @@ void sub_812DA14(u8 a0) sub_812CEE0(3); } -void sub_812DB10(void) +static void sub_812DB10(void) { sub_812E094(0); gUnknown_3005EC8 = 0xFF; } -void sub_812DB28(void) +static void sub_812DB28(void) { sub_812DB64(); gUnknown_203B0FC->unk_07_2 = sub_812DEF0(); - gUnknown_203B0FC->unk_08 = ListMenuInit(&gUnknown_3005EB0, 0, 0); + gUnknown_203B0FC->scrollIndicatorArrowObjectTaskId = ListMenuInit(&gUnknown_3005EB0, 0, 0); sub_812DFE4(0); } -void sub_812DB64(void) +static void sub_812DB64(void) { gUnknown_3005EB0.items = gUnknown_203B100; gUnknown_3005EB0.moveCursorFunc = sub_812DBC0; @@ -1312,7 +1312,7 @@ void sub_812DB64(void) gUnknown_3005EB0.cursorKind = 0; } -void sub_812DBC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) +static void sub_812DBC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) { u16 sp8; u8 taskId; @@ -1326,7 +1326,7 @@ void sub_812DBC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) struct Task *task = &gTasks[taskId]; PlaySE(SE_SELECT); task->data[1] = 0; - get_coro_args_x18_x1A(gUnknown_203B0FC->unk_08, &sp8, NULL); + get_coro_args_x18_x1A(gUnknown_203B0FC->scrollIndicatorArrowObjectTaskId, &sp8, NULL); gUnknown_203B0FC->unk_04 = sp8; if (itemIndex != gUnknown_203B0FC->unk_07_2 - 1) { @@ -1367,35 +1367,35 @@ void sub_812DBC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) u8 r2; for (r2 = 0; r2 < 6; r2++) { - gSprites[gUnknown_203B0FC->unk_1D[r2]].invisible = TRUE; + gSprites[gUnknown_203B0FC->spriteIds[r2]].invisible = TRUE; } } } } } -void sub_812DD50(u8 taskId) +static void sub_812DD50(u8 taskId) { struct Task * task = &gTasks[taskId]; - task->data[2] = sub_812D888(gUnknown_203B0FC->unk_0C[gUnknown_203B104]); + task->data[2] = sub_812D888(gUnknown_203B0FC->unlockedPersons[gUnknown_203B104]); gSprites[task->data[2]].data[0] = 0; sub_812CD3C(); task->func = sub_812C694; } -void sub_812DDAC(void) +static void sub_812DDAC(void) { FillWindowPixelRect(2, 0x11, 0, 0, 0xd0, 0x20); AddTextPrinterParametrized(2, 2, gUnknown_84181C3, 0, NULL, 2, 1, 3); sub_812CEE0(2); } -void sub_812DDF0(s32 itemIndex, bool8 onInit) +static void sub_812DDF0(s32 itemIndex, bool8 onInit) { u16 sp14; u16 sp16; u16 r6; - get_coro_args_x18_x1A(gUnknown_203B0FC->unk_08, &sp14, &sp16); + get_coro_args_x18_x1A(gUnknown_203B0FC->scrollIndicatorArrowObjectTaskId, &sp14, &sp16); r6 = sp14 + sp16; AddTextPrinterParametrized2(0, 2, 8, 14 * sp16 + 4, 0, 0, &gUnknown_845F5E6, 0, gUnknown_203B100[itemIndex].unk_00); if (!onInit) @@ -1412,7 +1412,7 @@ void sub_812DDF0(s32 itemIndex, bool8 onInit) gUnknown_203B0FC->unk_0A = sp14; } -u8 sub_812DEF0(void) +static u8 sub_812DEF0(void) { u8 r4 = 0; u8 r6; @@ -1432,13 +1432,13 @@ u8 sub_812DEF0(void) gUnknown_203B100[r4].unk_00 = gUnknown_845F60C[gUnknown_845F5EA[r5] - 0xFE00]; gUnknown_203B100[r4].unk_04 = r4; } - gUnknown_203B0FC->unk_0C[r4] = r5; + gUnknown_203B0FC->unlockedPersons[r4] = r5; r4++; } } gUnknown_203B100[r4].unk_00 = gUnknown_84161C1; gUnknown_203B100[r4].unk_04 = r4; - gUnknown_203B0FC->unk_0C[r4] = 0xFF; + gUnknown_203B0FC->unlockedPersons[r4] = 0xFF; r4++; gUnknown_3005EB0.totalItems = r4; if (r4 < 5) @@ -1448,13 +1448,13 @@ u8 sub_812DEF0(void) return r4; } -void sub_812DFE4(u8 windowId) +static void sub_812DFE4(u8 windowId) { PutWindowTilemap(windowId); CopyWindowToVram(windowId, 3); } -void sub_812E000(void) +static void sub_812E000(void) { struct ScrollIndicatorArrowPairTemplate sp0 = { 2, @@ -1479,20 +1479,20 @@ void sub_812E000(void) } } -void sub_812E048(void) +static void sub_812E048(void) { if (gUnknown_203B0FC->unk_07_2 > 5) RemoveScrollIndicatorArrowPair(gUnknown_203B0FC->unk_06); } -u16 sub_812E064(void) +static u16 sub_812E064(void) { u16 sp0, sp2; - get_coro_args_x18_x1A(gUnknown_203B0FC->unk_08, &sp0, &sp2); + get_coro_args_x18_x1A(gUnknown_203B0FC->scrollIndicatorArrowObjectTaskId, &sp0, &sp2); return sp0 + sp2; } -void sub_812E094(u8 a0) +static void sub_812E094(u8 a0) { if (gUnknown_203B0FC->unk_23_0 != a0) { @@ -1514,7 +1514,7 @@ void sub_812E094(u8 a0) } } -void sub_812E110(u8 taskId) +static void sub_812E110(u8 taskId) { struct Task * task = &gTasks[taskId]; switch (task->data[0]) @@ -1537,7 +1537,7 @@ void sub_812E110(u8 taskId) } } -void sub_812E178(u8 bg, s16 a1) +static void sub_812E178(u8 bg, s16 a1) { if (a1 == 0 || a1 == 3) { @@ -1599,9 +1599,9 @@ void sub_812E178(u8 bg, s16 a1) CopyBgTilemapBufferToVram(bg); } -void sub_812E4A4(u8 a0) +static void sub_812E4A4(u8 a0) { - u16 cursorY = ListMenuGetYCoordForPrintingArrowCursor(gUnknown_203B0FC->unk_08); + u16 cursorY = ListMenuGetYCoordForPrintingArrowCursor(gUnknown_203B0FC->scrollIndicatorArrowObjectTaskId); if (a0 == 1) AddTextPrinterParametrized2(0, 2, 0, cursorY, 0, 0, &gUnknown_845F5E3, 0, gUnknown_841623B); else -- cgit v1.2.3 From 3c409e3cd2a9da797a8b5ecb06e40cb003ce21e3 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Nov 2018 18:20:29 -0500 Subject: Make ewram symbols static too --- src/fame_checker.c | 262 ++++++++++++++++++++++++++--------------------------- 1 file changed, 131 insertions(+), 131 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index b2fe20c9b..e15768e4b 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -53,14 +53,14 @@ struct FameCheckerData u8 unk_23_2:1; }; -EWRAM_DATA u16 * gUnknown_203B0F0 = NULL; -EWRAM_DATA u16 * gUnknown_203B0F4 = NULL; -EWRAM_DATA u16 * gUnknown_203B0F8 = NULL; -EWRAM_DATA struct FameCheckerData * gUnknown_203B0FC = NULL; -EWRAM_DATA struct ListMenuItem * gUnknown_203B100 = NULL; -EWRAM_DATA s32 gUnknown_203B104 = 0; - -struct ListMenuTemplate gUnknown_3005EB0; +static EWRAM_DATA u16 * sBg3TilemapBuffer = NULL; +static EWRAM_DATA u16 * sBg1TilemapBuffer = NULL; +static EWRAM_DATA u16 * sBg2TilemapBuffer = NULL; +static EWRAM_DATA struct FameCheckerData * sFameCheckerData = NULL; +static EWRAM_DATA struct ListMenuItem * sListMenuItems = NULL; +static EWRAM_DATA s32 sLastMenuIdx = 0; + +struct ListMenuTemplate gFameChecker_ListMenuTemplate; u8 gUnknown_3005EC8; static void sub_812C3F8(void); @@ -499,12 +499,12 @@ static void sub_812C394(void) void UseFameChecker(MainCallback savedCallback) { SetVBlankCallback(NULL); - gUnknown_203B0FC = AllocZeroed(sizeof(struct FameCheckerData)); - gUnknown_203B0FC->savedCallback = savedCallback; - gUnknown_203B0FC->unk_09 = 0; - gUnknown_203B0FC->unk_0A = 0; - gUnknown_203B0FC->unk_0B = 0; - gUnknown_203B0FC->unk_23_0 = FALSE; + sFameCheckerData = AllocZeroed(sizeof(struct FameCheckerData)); + sFameCheckerData->savedCallback = savedCallback; + sFameCheckerData->unk_09 = 0; + sFameCheckerData->unk_0A = 0; + sFameCheckerData->unk_0B = 0; + sFameCheckerData->unk_23_0 = FALSE; PlaySE(SE_W202); SetMainCallback2(sub_812C3F8); } @@ -523,14 +523,14 @@ static void sub_812C3F8(void) gMain.state++; break; case 2: - gUnknown_203B0F0 = AllocZeroed(0x800); - gUnknown_203B0F4 = AllocZeroed(0x1000); - gUnknown_203B0F8 = AllocZeroed(0x800); + sBg3TilemapBuffer = AllocZeroed(0x800); + sBg1TilemapBuffer = AllocZeroed(0x1000); + sBg2TilemapBuffer = AllocZeroed(0x800); ResetBgsAndClearDma3BusyFlags(0); InitBgsFromTemplates(0, gUnknown_845FBF4, ARRAY_COUNT(gUnknown_845FBF4)); - SetBgTilemapBuffer(3, gUnknown_203B0F0); - SetBgTilemapBuffer(2, gUnknown_203B0F8); - SetBgTilemapBuffer(1, gUnknown_203B0F4); + SetBgTilemapBuffer(3, sBg3TilemapBuffer); + SetBgTilemapBuffer(2, sBg2TilemapBuffer); + SetBgTilemapBuffer(1, sBg1TilemapBuffer); sub_812D594(); gMain.state++; break; @@ -561,7 +561,7 @@ static void sub_812C3F8(void) InitWindows(gUnknown_845FC04); DeactivateAllTextPrinters(); sub_812CEC0(); - gUnknown_203B100 = AllocZeroed(17 * sizeof(struct ListMenuItem)); + sListMenuItems = AllocZeroed(17 * sizeof(struct ListMenuItem)); sub_812DB28(); gMain.state++; break; @@ -578,7 +578,7 @@ static void sub_812C3F8(void) SetGpuReg(REG_OFFSET_BLDALPHA, 0x07); SetGpuReg(REG_OFFSET_BLDY, 0x08); SetVBlankCallback(sub_812C380); - gUnknown_203B0FC->unk_04 = 0; + sFameCheckerData->unk_04 = 0; sub_812E000(); sub_812E178(1, 4); CreateTask(sub_812C664, 0x08); @@ -609,7 +609,7 @@ static void sub_812C694(u8 taskId) if (FindTaskIdByFunc(sub_812E110) == 0xFF) { RunTextPrinters(); - if ((PRESSED(SELECT_BUTTON)) && !gUnknown_203B0FC->unk_07_1 && gUnknown_203B0FC->savedCallback != sub_8107EB8) + if ((PRESSED(SELECT_BUTTON)) && !sFameCheckerData->unk_07_1 && sFameCheckerData->savedCallback != sub_8107EB8) task->func = sub_812CF3C; else if (PRESSED(START_BUTTON)) { @@ -618,7 +618,7 @@ static void sub_812C694(u8 taskId) { PlaySE(SE_W100); } - else if (r4 != gUnknown_203B0FC->unk_07_2 - 1) + else if (r4 != sFameCheckerData->unk_07_2 - 1) { PlaySE(SE_W100); FillWindowPixelRect(3, 0x00, 0, 0, 88, 32); @@ -626,7 +626,7 @@ static void sub_812C694(u8 taskId) sub_812E178(2, 4); sub_812E178(1, 5); sub_812D0F4(1); - task->data[2] = sub_812D888(gUnknown_203B0FC->unlockedPersons[r4]); + task->data[2] = sub_812D888(sFameCheckerData->unlockedPersons[r4]); gSprites[task->data[2]].pos2.x = 0xF0; gSprites[task->data[2]].data[0] = 1; task->data[3] = sub_812D7E4(); @@ -638,26 +638,26 @@ static void sub_812C694(u8 taskId) else if (PRESSED(A_BUTTON)) { r4 = ListMenuHandleInput(0); - if (r4 == gUnknown_203B0FC->unk_07_2 - 1) + if (r4 == sFameCheckerData->unk_07_2 - 1) task->func = sub_812CF3C; - else if (gUnknown_203B0FC->unk_07_1) + else if (sFameCheckerData->unk_07_1) { if (!IsTextPrinterActive(2) && sub_812D6B4() == TRUE) sub_812CD3C(); } - else if (gUnknown_203B0FC->unk_07_0) + else if (sFameCheckerData->unk_07_0) { PlaySE(SE_SELECT); task->data[0] = sub_812D724(task->data[1]); for (r4_2 = 0; r4_2 < 6; r4_2++) { if (r4_2 != task->data[1]) - sub_812CEFC(gUnknown_203B0FC->spriteIds[r4_2], ST_OAM_OBJ_BLEND); + sub_812CEFC(sFameCheckerData->spriteIds[r4_2], ST_OAM_OBJ_BLEND); } gUnknown_3005EC8 = 0xFF; sub_812E4A4(0); sub_812D0F4(2); - if (gSprites[gUnknown_203B0FC->spriteIds[task->data[1]]].data[1] != 0xFF) + if (gSprites[sFameCheckerData->spriteIds[task->data[1]]].data[1] != 0xFF) { sub_812CE04(taskId); sub_812DA14(data[1]); @@ -679,7 +679,7 @@ static void sub_812C694(u8 taskId) static bool8 sub_812C8F8(u8 taskId) { struct Task *task = &gTasks[taskId]; - if (gUnknown_203B0FC->unk_07_1) + if (sFameCheckerData->unk_07_1) { gSprites[task->data[2]].data[0] = 2; gSprites[task->data[2]].pos2.x += 10; @@ -688,7 +688,7 @@ static bool8 sub_812C8F8(u8 taskId) sub_812CE9C(); task->func = sub_812CA1C; sub_812C990(); - gUnknown_203B0FC->unk_23_2 = FALSE; + sFameCheckerData->unk_23_2 = FALSE; return TRUE; } return FALSE; @@ -705,7 +705,7 @@ static void sub_812C9BC(u8 taskId) if (gSprites[task->data[2]].data[0] == 0) { sub_812CD3C(); - gUnknown_203B0FC->unk_07_1 = TRUE; + sFameCheckerData->unk_07_1 = TRUE; task->func = sub_812C694; } else @@ -721,11 +721,11 @@ static void sub_812CA1C(u8 taskId) ChangeBgX(1, 0x000, 0); if (gSprites[task->data[2]].data[0] == 0) { - if (gUnknown_203B0FC->unk_07_0) + if (sFameCheckerData->unk_07_0) sub_812D0F4(0); sub_812E178(1, 4); sub_812E178(2, 2); - gUnknown_203B0FC->unk_07_1 = FALSE; + sFameCheckerData->unk_07_1 = FALSE; sub_812D9A8(taskId, sub_812E064()); task->func = sub_812C694; gSprites[task->data[3]].callback = sub_812D800; @@ -740,7 +740,7 @@ static void sub_812CAD8(u8 taskId) RunTextPrinters(); if (PRESSED(A_BUTTON) && !IsTextPrinterActive(2)) { - u8 spriteId = gUnknown_203B0FC->spriteIds[data[1]]; + u8 spriteId = sFameCheckerData->spriteIds[data[1]]; if (gSprites[spriteId].data[1] != 0xFF) sub_812CE04(taskId); } @@ -749,7 +749,7 @@ static void sub_812CAD8(u8 taskId) u8 r4; PlaySE(SE_SELECT); for (r4 = 0; r4 < 6; r4++) - sub_812CEFC(gUnknown_203B0FC->spriteIds[r4], ST_OAM_OBJ_NORMAL); + sub_812CEFC(sFameCheckerData->spriteIds[r4], ST_OAM_OBJ_NORMAL); sub_812CE9C(); gSprites[task->data[0]].callback = sub_812D764; if (gUnknown_3005EC8 != 0xFF) @@ -809,10 +809,10 @@ static void sub_812CC68(u8 taskId, s8 dx, s8 dy) gSprites[data[0]].pos1.x += dx; gSprites[data[0]].pos1.y += dy; for (i = 0; i < 6; i++) - sub_812CEFC(gUnknown_203B0FC->spriteIds[i], ST_OAM_OBJ_BLEND); + sub_812CEFC(sFameCheckerData->spriteIds[i], ST_OAM_OBJ_BLEND); FillWindowPixelRect(2, 0x11, 0, 0, 0xd0, 0x20); sub_812C990(); - if (sub_812CEFC(gUnknown_203B0FC->spriteIds[data[1]], ST_OAM_OBJ_NORMAL) == TRUE) + if (sub_812CEFC(sFameCheckerData->spriteIds[data[1]], ST_OAM_OBJ_NORMAL) == TRUE) { sub_812CE04(taskId); sub_812DA14(data[1]); @@ -825,7 +825,7 @@ static void sub_812CD3C(void) { u8 r8 = 0; u16 r6 = sub_812E064(); - if (gSaveBlock1Ptr->fameChecker[gUnknown_203B0FC->unlockedPersons[r6]].unk_0_0 != 2) + if (gSaveBlock1Ptr->fameChecker[sFameCheckerData->unlockedPersons[r6]].unk_0_0 != 2) { sub_812CE9C(); sub_812C990(); @@ -835,7 +835,7 @@ static void sub_812CD3C(void) FillWindowPixelRect(2, 0x11, 0, 0, 0xd0, 0x20); if (sub_812D6B4() == TRUE) r8 = 16; - StringExpandPlaceholders(gStringVar4, gUnknown_845F63C[gUnknown_203B0FC->unlockedPersons[r6] + r8]); + StringExpandPlaceholders(gStringVar4, gUnknown_845F63C[sFameCheckerData->unlockedPersons[r6] + r8]); AddTextPrinterParametrized(2, 2, gStringVar4, sub_80F78A8(), NULL, 2, 1, 3); sub_812CEE0(2); } @@ -846,7 +846,7 @@ static void sub_812CE04(u8 taskId) s16 *data = gTasks[taskId].data; u16 r5 = sub_812E064(); FillWindowPixelRect(2, 0x11, 0, 0, 0xd0, 0x20); - StringExpandPlaceholders(gStringVar4, gUnknown_845F6BC[gUnknown_203B0FC->unlockedPersons[r5] * 6 + data[1]]); + StringExpandPlaceholders(gStringVar4, gUnknown_845F6BC[sFameCheckerData->unlockedPersons[r5] * 6 + data[1]]); AddTextPrinterParametrized(2, 2, gStringVar4, sub_80F78A8(), NULL, 2, 1, 3); sub_812CEE0(2); } @@ -894,7 +894,7 @@ static void sub_812CF7C(u8 taskId) if (!gPaletteFade.active) { - if (gUnknown_203B0FC->unk_07_1) + if (sFameCheckerData->unk_07_1) { sub_812D9A8(taskId, sub_812E064()); FreeSpriteOamMatrix(&gSprites[gTasks[taskId].data[3]]); @@ -902,20 +902,20 @@ static void sub_812CF7C(u8 taskId) } for (r4 = 0; r4 < 6; r4++) { - DestroySprite(&gSprites[gUnknown_203B0FC->spriteIds[r4]]); + DestroySprite(&gSprites[sFameCheckerData->spriteIds[r4]]); } sub_812D814(); sub_812D7C8(); sub_812D70C(); sub_812D770(); sub_812E048(); - SetMainCallback2(gUnknown_203B0FC->savedCallback); - sub_810713C(gUnknown_203B0FC->scrollIndicatorArrowObjectTaskId, 0, 0); - Free(gUnknown_203B0F0); - Free(gUnknown_203B0F4); - Free(gUnknown_203B0F8); - Free(gUnknown_203B0FC); - Free(gUnknown_203B100); + SetMainCallback2(sFameCheckerData->savedCallback); + sub_810713C(sFameCheckerData->scrollIndicatorArrowObjectTaskId, 0, 0); + Free(sBg3TilemapBuffer); + Free(sBg1TilemapBuffer); + Free(sBg2TilemapBuffer); + Free(sFameCheckerData); + Free(sListMenuItems); sub_812D094(0); sub_812D094(1); sub_812D094(2); @@ -966,7 +966,7 @@ static void sub_812D174(void) u8 r4; for (r4 = 0; r4 < 6; r4++) { - DestroySprite(&gSprites[gUnknown_203B0FC->spriteIds[r4]]); + DestroySprite(&gSprites[sFameCheckerData->spriteIds[r4]]); } } @@ -977,10 +977,10 @@ static bool8 sub_812D1A8(u8 a0) u8 r6; for (r6 = 0; r6 < 6; r6++) { - if ((gSaveBlock1Ptr->fameChecker[gUnknown_203B0FC->unlockedPersons[a0]].unk_0_2 >> r6) & 1) + if ((gSaveBlock1Ptr->fameChecker[sFameCheckerData->unlockedPersons[a0]].unk_0_2 >> r6) & 1) { - gUnknown_203B0FC->spriteIds[r6] = sub_805EB44( - gUnknown_845F83C[gUnknown_203B0FC->unlockedPersons[a0] * 6 + r6], + sFameCheckerData->spriteIds[r6] = sub_805EB44( + gUnknown_845F83C[sFameCheckerData->unlockedPersons[a0] * 6 + r6], r6, 47 * (r6 % 3) + 0x72, 27 * (r6 / 3) + 0x2F @@ -989,24 +989,24 @@ static bool8 sub_812D1A8(u8 a0) } else { - gUnknown_203B0FC->spriteIds[r6] = sub_812D780( + sFameCheckerData->spriteIds[r6] = sub_812D780( 47 * (r6 % 3) + 0x72, 27 * (r6 / 3) + 0x1F ); - gSprites[gUnknown_203B0FC->spriteIds[r6]].data[1] = 0xFF; + gSprites[sFameCheckerData->spriteIds[r6]].data[1] = 0xFF; } } if (r5 == TRUE) { - gUnknown_203B0FC->unk_07_0 = TRUE; - if (gUnknown_203B0FC->unk_07_1) + sFameCheckerData->unk_07_0 = TRUE; + if (sFameCheckerData->unk_07_1) sub_812D0F4(TRUE); else sub_812D0F4(FALSE); } else { - gUnknown_203B0FC->unk_07_0 = FALSE; + sFameCheckerData->unk_07_0 = FALSE; sub_812D0F4(TRUE); } return r5; @@ -1119,7 +1119,7 @@ static void sub_812D650(void) static bool8 sub_812D6B4(void) { u8 r2; - u8 r1 = gUnknown_203B0FC->unlockedPersons[sub_812E064()]; + u8 r1 = sFameCheckerData->unlockedPersons[sub_812E064()]; for (r2 = 0; r2 < 6; r2++) { if (!((gSaveBlock1Ptr->fameChecker[r1].unk_0_2 >> r2) & 1)) @@ -1249,12 +1249,12 @@ static void sub_812D9A8(u8 taskId, u16 a1) { s16 * data = gTasks[taskId].data; u16 r1 = a1; - if (a1 == gUnknown_203B0FC->unk_07_2 - 1) + if (a1 == sFameCheckerData->unk_07_2 - 1) r1 = a1 - 1; - if ( gUnknown_203B0FC->unlockedPersons[r1] == 1 - || gUnknown_203B0FC->unlockedPersons[r1] == 14 - || gUnknown_203B0FC->unlockedPersons[r1] == 0 - || gUnknown_203B0FC->unlockedPersons[r1] == 13 + if ( sFameCheckerData->unlockedPersons[r1] == 1 + || sFameCheckerData->unlockedPersons[r1] == 14 + || sFameCheckerData->unlockedPersons[r1] == 0 + || sFameCheckerData->unlockedPersons[r1] == 13 ) DestroySprite(&gSprites[data[2]]); else @@ -1264,7 +1264,7 @@ static void sub_812D9A8(u8 taskId, u16 a1) static void sub_812DA14(u8 a0) { s32 width; - u32 r5 = 6 * gUnknown_203B0FC->unlockedPersons[sub_812E064()] + a0; + u32 r5 = 6 * sFameCheckerData->unlockedPersons[sub_812E064()] + a0; sub_812E094(1); gUnknown_3005EC8 = 1; FillWindowPixelRect(3, 0x00, 0, 0, 0x58, 0x20); @@ -1285,31 +1285,31 @@ static void sub_812DB10(void) static void sub_812DB28(void) { sub_812DB64(); - gUnknown_203B0FC->unk_07_2 = sub_812DEF0(); - gUnknown_203B0FC->scrollIndicatorArrowObjectTaskId = ListMenuInit(&gUnknown_3005EB0, 0, 0); + sFameCheckerData->unk_07_2 = sub_812DEF0(); + sFameCheckerData->scrollIndicatorArrowObjectTaskId = ListMenuInit(&gFameChecker_ListMenuTemplate, 0, 0); sub_812DFE4(0); } static void sub_812DB64(void) { - gUnknown_3005EB0.items = gUnknown_203B100; - gUnknown_3005EB0.moveCursorFunc = sub_812DBC0; - gUnknown_3005EB0.itemPrintFunc = NULL; - gUnknown_3005EB0.totalItems = 1; - gUnknown_3005EB0.maxShowed = 1; - gUnknown_3005EB0.windowId = 0; - gUnknown_3005EB0.header_X = 0; - gUnknown_3005EB0.item_X = 8; - gUnknown_3005EB0.cursor_X = 0; - gUnknown_3005EB0.upText_Y = 4; - gUnknown_3005EB0.cursorPal = 2; - gUnknown_3005EB0.fillValue = 0; - gUnknown_3005EB0.cursorShadowPal = 3; - gUnknown_3005EB0.lettersSpacing = 0; - gUnknown_3005EB0.itemVerticalPadding = 0; - gUnknown_3005EB0.scrollMultiple = 0; - gUnknown_3005EB0.fontId = 2; - gUnknown_3005EB0.cursorKind = 0; + gFameChecker_ListMenuTemplate.items = sListMenuItems; + gFameChecker_ListMenuTemplate.moveCursorFunc = sub_812DBC0; + gFameChecker_ListMenuTemplate.itemPrintFunc = NULL; + gFameChecker_ListMenuTemplate.totalItems = 1; + gFameChecker_ListMenuTemplate.maxShowed = 1; + gFameChecker_ListMenuTemplate.windowId = 0; + gFameChecker_ListMenuTemplate.header_X = 0; + gFameChecker_ListMenuTemplate.item_X = 8; + gFameChecker_ListMenuTemplate.cursor_X = 0; + gFameChecker_ListMenuTemplate.upText_Y = 4; + gFameChecker_ListMenuTemplate.cursorPal = 2; + gFameChecker_ListMenuTemplate.fillValue = 0; + gFameChecker_ListMenuTemplate.cursorShadowPal = 3; + gFameChecker_ListMenuTemplate.lettersSpacing = 0; + gFameChecker_ListMenuTemplate.itemVerticalPadding = 0; + gFameChecker_ListMenuTemplate.scrollMultiple = 0; + gFameChecker_ListMenuTemplate.fontId = 2; + gFameChecker_ListMenuTemplate.cursorKind = 0; } static void sub_812DBC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) @@ -1317,8 +1317,8 @@ static void sub_812DBC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) u16 sp8; u8 taskId; u16 r9; - gUnknown_203B104 = 0; - r9 = gUnknown_203B0FC->unk_0A + gUnknown_203B0FC->unk_0B; + sLastMenuIdx = 0; + r9 = sFameCheckerData->unk_0A + sFameCheckerData->unk_0B; sub_812DDF0(itemIndex, onInit); taskId = FindTaskIdByFunc(sub_812C694); if (taskId != 0xFF) @@ -1326,24 +1326,24 @@ static void sub_812DBC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) struct Task *task = &gTasks[taskId]; PlaySE(SE_SELECT); task->data[1] = 0; - get_coro_args_x18_x1A(gUnknown_203B0FC->scrollIndicatorArrowObjectTaskId, &sp8, NULL); - gUnknown_203B0FC->unk_04 = sp8; - if (itemIndex != gUnknown_203B0FC->unk_07_2 - 1) + get_coro_args_x18_x1A(sFameCheckerData->scrollIndicatorArrowObjectTaskId, &sp8, NULL); + sFameCheckerData->unk_04 = sp8; + if (itemIndex != sFameCheckerData->unk_07_2 - 1) { sub_812D174(); sub_812D1A8(itemIndex); - if (gUnknown_203B0FC->unk_07_1) + if (sFameCheckerData->unk_07_1) { - if (!gUnknown_203B0FC->unk_23_2) + if (!sFameCheckerData->unk_23_2) { sub_812D9A8(taskId, r9); - gUnknown_203B104 = itemIndex; + sLastMenuIdx = itemIndex; task->func = sub_812DD50; } else { gSprites[task->data[2]].invisible = FALSE; - gUnknown_203B0FC->unk_23_2 = FALSE; + sFameCheckerData->unk_23_2 = FALSE; gSprites[task->data[2]].data[0] = 0; sub_812CD3C(); } @@ -1357,17 +1357,17 @@ static void sub_812DBC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) else { sub_812DDAC(); - if (gUnknown_203B0FC->unk_07_1) + if (sFameCheckerData->unk_07_1) { gSprites[task->data[2]].invisible = TRUE; - gUnknown_203B0FC->unk_23_2 = TRUE; + sFameCheckerData->unk_23_2 = TRUE; } else { u8 r2; for (r2 = 0; r2 < 6; r2++) { - gSprites[gUnknown_203B0FC->spriteIds[r2]].invisible = TRUE; + gSprites[sFameCheckerData->spriteIds[r2]].invisible = TRUE; } } } @@ -1377,7 +1377,7 @@ static void sub_812DBC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) static void sub_812DD50(u8 taskId) { struct Task * task = &gTasks[taskId]; - task->data[2] = sub_812D888(gUnknown_203B0FC->unlockedPersons[gUnknown_203B104]); + task->data[2] = sub_812D888(sFameCheckerData->unlockedPersons[sLastMenuIdx]); gSprites[task->data[2]].data[0] = 0; sub_812CD3C(); task->func = sub_812C694; @@ -1395,21 +1395,21 @@ static void sub_812DDF0(s32 itemIndex, bool8 onInit) u16 sp14; u16 sp16; u16 r6; - get_coro_args_x18_x1A(gUnknown_203B0FC->scrollIndicatorArrowObjectTaskId, &sp14, &sp16); + get_coro_args_x18_x1A(sFameCheckerData->scrollIndicatorArrowObjectTaskId, &sp14, &sp16); r6 = sp14 + sp16; - AddTextPrinterParametrized2(0, 2, 8, 14 * sp16 + 4, 0, 0, &gUnknown_845F5E6, 0, gUnknown_203B100[itemIndex].unk_00); + AddTextPrinterParametrized2(0, 2, 8, 14 * sp16 + 4, 0, 0, &gUnknown_845F5E6, 0, sListMenuItems[itemIndex].unk_00); if (!onInit) { - if (sp14 < gUnknown_203B0FC->unk_0A) - gUnknown_203B0FC->unk_0B++; - else if (sp14 > gUnknown_203B0FC->unk_0A && r6 != gUnknown_203B0FC->unk_07_2 - 1) - gUnknown_203B0FC->unk_0B--; - AddTextPrinterParametrized2(0, 2, 8, 14 * gUnknown_203B0FC->unk_0B + 4, 0, 0, &gUnknown_845F5E3, 0, gUnknown_203B100[gUnknown_203B0FC->unk_09].unk_00); + if (sp14 < sFameCheckerData->unk_0A) + sFameCheckerData->unk_0B++; + else if (sp14 > sFameCheckerData->unk_0A && r6 != sFameCheckerData->unk_07_2 - 1) + sFameCheckerData->unk_0B--; + AddTextPrinterParametrized2(0, 2, 8, 14 * sFameCheckerData->unk_0B + 4, 0, 0, &gUnknown_845F5E3, 0, sListMenuItems[sFameCheckerData->unk_09].unk_00); } - gUnknown_203B0FC->unk_09 = itemIndex; - gUnknown_203B0FC->unk_0B = sp16; - gUnknown_203B0FC->unk_0A = sp14; + sFameCheckerData->unk_09 = itemIndex; + sFameCheckerData->unk_0B = sp16; + sFameCheckerData->unk_0A = sp14; } static u8 sub_812DEF0(void) @@ -1424,27 +1424,27 @@ static u8 sub_812DEF0(void) { if (gUnknown_845F5EA[r5] < 0xFE00) { - gUnknown_203B100[r4].unk_00 = gTrainers[gUnknown_845F5EA[r5]].trainerName; - gUnknown_203B100[r4].unk_04 = r4; + sListMenuItems[r4].unk_00 = gTrainers[gUnknown_845F5EA[r5]].trainerName; + sListMenuItems[r4].unk_04 = r4; } else { - gUnknown_203B100[r4].unk_00 = gUnknown_845F60C[gUnknown_845F5EA[r5] - 0xFE00]; - gUnknown_203B100[r4].unk_04 = r4; + sListMenuItems[r4].unk_00 = gUnknown_845F60C[gUnknown_845F5EA[r5] - 0xFE00]; + sListMenuItems[r4].unk_04 = r4; } - gUnknown_203B0FC->unlockedPersons[r4] = r5; + sFameCheckerData->unlockedPersons[r4] = r5; r4++; } } - gUnknown_203B100[r4].unk_00 = gUnknown_84161C1; - gUnknown_203B100[r4].unk_04 = r4; - gUnknown_203B0FC->unlockedPersons[r4] = 0xFF; + sListMenuItems[r4].unk_00 = gUnknown_84161C1; + sListMenuItems[r4].unk_04 = r4; + sFameCheckerData->unlockedPersons[r4] = 0xFF; r4++; - gUnknown_3005EB0.totalItems = r4; + gFameChecker_ListMenuTemplate.totalItems = r4; if (r4 < 5) - gUnknown_3005EB0.maxShowed = r4; + gFameChecker_ListMenuTemplate.maxShowed = r4; else - gUnknown_3005EB0.maxShowed = 5; + gFameChecker_ListMenuTemplate.maxShowed = 5; return r4; } @@ -1471,30 +1471,30 @@ static void sub_812E000(void) 0 }; - if (gUnknown_203B0FC->unk_07_2 > 5) + if (sFameCheckerData->unk_07_2 > 5) { sp0.unk_06 = 0; - sp0.unk_08 = gUnknown_203B0FC->unk_07_2 - 5; - gUnknown_203B0FC->unk_06 = AddScrollIndicatorArrowPair(&sp0, &gUnknown_203B0FC->unk_04); + sp0.unk_08 = sFameCheckerData->unk_07_2 - 5; + sFameCheckerData->unk_06 = AddScrollIndicatorArrowPair(&sp0, &sFameCheckerData->unk_04); } } static void sub_812E048(void) { - if (gUnknown_203B0FC->unk_07_2 > 5) - RemoveScrollIndicatorArrowPair(gUnknown_203B0FC->unk_06); + if (sFameCheckerData->unk_07_2 > 5) + RemoveScrollIndicatorArrowPair(sFameCheckerData->unk_06); } static u16 sub_812E064(void) { u16 sp0, sp2; - get_coro_args_x18_x1A(gUnknown_203B0FC->scrollIndicatorArrowObjectTaskId, &sp0, &sp2); + get_coro_args_x18_x1A(sFameCheckerData->scrollIndicatorArrowObjectTaskId, &sp0, &sp2); return sp0 + sp2; } static void sub_812E094(u8 a0) { - if (gUnknown_203B0FC->unk_23_0 != a0) + if (sFameCheckerData->unk_23_0 != a0) { u8 taskId = FindTaskIdByFunc(sub_812E110); if (taskId == 0xFF) @@ -1504,12 +1504,12 @@ static void sub_812E094(u8 a0) if (a0 == TRUE) { gTasks[taskId].data[2] = 1; - gUnknown_203B0FC->unk_23_0 = TRUE; + sFameCheckerData->unk_23_0 = TRUE; } else { gTasks[taskId].data[2] = 4; - gUnknown_203B0FC->unk_23_0 = FALSE; + sFameCheckerData->unk_23_0 = FALSE; } } } @@ -1601,7 +1601,7 @@ static void sub_812E178(u8 bg, s16 a1) static void sub_812E4A4(u8 a0) { - u16 cursorY = ListMenuGetYCoordForPrintingArrowCursor(gUnknown_203B0FC->scrollIndicatorArrowObjectTaskId); + u16 cursorY = ListMenuGetYCoordForPrintingArrowCursor(sFameCheckerData->scrollIndicatorArrowObjectTaskId); if (a0 == 1) AddTextPrinterParametrized2(0, 2, 0, cursorY, 0, 0, &gUnknown_845F5E3, 0, gUnknown_841623B); else -- cgit v1.2.3 From de72615a5428c5996b5c92d368cfb350816ed51e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Nov 2018 18:22:57 -0500 Subject: This is a sprite tag right here --- src/fame_checker.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index e15768e4b..3b5576923 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -29,6 +29,7 @@ #define SPRITETAG_1000 1000 #define SPRITETAG_1001 1001 #define SPRITETAG_1002 1002 +#define SPRITETAG_1004 1004 #define SPRITETAG_1006 1006 #define SPRITETAG_1007 1007 #define SPRITETAG_1008 1008 @@ -1457,18 +1458,18 @@ static void sub_812DFE4(u8 windowId) static void sub_812E000(void) { struct ScrollIndicatorArrowPairTemplate sp0 = { - 2, - 40, - 26, - 3, - 40, - 100, - 0, - 0, - 1004, - 0xFFFF, - 1, - 0 + 2, + 40, + 26, + 3, + 40, + 100, + 0, + 0, + SPRITETAG_1004, + 0xFFFF, + 1, + 0 }; if (sFameCheckerData->unk_07_2 > 5) -- cgit v1.2.3 From b21c50675b8b143608b39b26b53788e4807bbc9e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Nov 2018 18:24:17 -0500 Subject: PRESSED-->JOY_NEW, PUSHED-->JOY_HELD --- src/fame_checker.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index 3b5576923..8150c58ef 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -610,9 +610,9 @@ static void sub_812C694(u8 taskId) if (FindTaskIdByFunc(sub_812E110) == 0xFF) { RunTextPrinters(); - if ((PRESSED(SELECT_BUTTON)) && !sFameCheckerData->unk_07_1 && sFameCheckerData->savedCallback != sub_8107EB8) + if ((JOY_NEW(SELECT_BUTTON)) && !sFameCheckerData->unk_07_1 && sFameCheckerData->savedCallback != sub_8107EB8) task->func = sub_812CF3C; - else if (PRESSED(START_BUTTON)) + else if (JOY_NEW(START_BUTTON)) { r4 = sub_812E064(); if (sub_812C8F8(taskId) == TRUE) @@ -636,7 +636,7 @@ static void sub_812C694(u8 taskId) task->func = sub_812C9BC; } } - else if (PRESSED(A_BUTTON)) + else if (JOY_NEW(A_BUTTON)) { r4 = ListMenuHandleInput(0); if (r4 == sFameCheckerData->unk_07_2 - 1) @@ -667,7 +667,7 @@ static void sub_812C694(u8 taskId) task->func = sub_812CAD8; } } - else if (PRESSED(B_BUTTON)) + else if (JOY_NEW(B_BUTTON)) { if (sub_812C8F8(taskId) != TRUE) task->func = sub_812CF3C; @@ -739,13 +739,13 @@ static void sub_812CAD8(u8 taskId) s16 *data = gTasks[taskId].data; RunTextPrinters(); - if (PRESSED(A_BUTTON) && !IsTextPrinterActive(2)) + if (JOY_NEW(A_BUTTON) && !IsTextPrinterActive(2)) { u8 spriteId = sFameCheckerData->spriteIds[data[1]]; if (gSprites[spriteId].data[1] != 0xFF) sub_812CE04(taskId); } - if (PRESSED(B_BUTTON)) + if (JOY_NEW(B_BUTTON)) { u8 r4; PlaySE(SE_SELECT); @@ -761,7 +761,7 @@ static void sub_812CAD8(u8 taskId) sub_812C990(); task->func = sub_812C694; } - else if (PRESSED(DPAD_UP) || PRESSED(DPAD_DOWN)) + else if (JOY_NEW(DPAD_UP) || JOY_NEW(DPAD_DOWN)) { if (task->data[1] >= 3) { @@ -774,7 +774,7 @@ static void sub_812CAD8(u8 taskId) sub_812CC68(taskId, 0, +0x1b); } } - else if (PRESSED(DPAD_LEFT)) + else if (JOY_NEW(DPAD_LEFT)) { if (task->data[1] == 0 || task->data[1] % 3 == 0) { @@ -787,7 +787,7 @@ static void sub_812CAD8(u8 taskId) sub_812CC68(taskId, -0x2f, 0); } } - else if (PRESSED(DPAD_RIGHT)) + else if (JOY_NEW(DPAD_RIGHT)) { if ((task->data[1] + 1) % 3 == 0) { -- cgit v1.2.3 From 7e684b32f108bc484f3f8ba66b209d3f633e8acd Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Nov 2018 22:27:19 -0500 Subject: More documentation of fame checker --- src/fame_checker.c | 211 +++++++++++++++++++++++------------------------------ 1 file changed, 91 insertions(+), 120 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index 8150c58ef..2bff79146 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -25,6 +25,7 @@ #include "field_map_obj.h" #include "menu_indicators.h" #include "text_window.h" +#include "fame_checker.h" #define SPRITETAG_1000 1000 #define SPRITETAG_1001 1001 @@ -41,8 +42,8 @@ struct FameCheckerData u16 unk_04; u8 unk_06; u8 unk_07_0:1; - u8 unk_07_1:1; - u8 unk_07_2:6; + u8 inPickMode:1; + u8 numUnlockedPersons:6; u8 scrollIndicatorArrowObjectTaskId; u8 unk_09; u8 unk_0A; @@ -95,7 +96,7 @@ static void sub_812D70C(void); static u8 sub_812D724(s16 a0); static void sub_812D764(struct Sprite *sprite); static void sub_812D770(void); -static u8 sub_812D780(u8, u8); +static u8 PlaceQuestionMarkTile(u8, u8); static void sub_812D7C8(void); static u8 sub_812D7E4(void); static void sub_812D800(struct Sprite *sprite); @@ -115,7 +116,7 @@ static u8 sub_812DEF0(void); static void sub_812DFE4(u8); static void sub_812E000(void); static void sub_812E048(void); -static u16 sub_812E064(void); +static u16 FameCheckerGetCursorY(void); static void sub_812E094(u8); static void sub_812E110(u8 taskId); static void sub_812E178(u8 a0, s16 a1); @@ -125,28 +126,28 @@ extern const u8 gUnknown_84161C1[]; extern const u8 gUnknown_841623B[]; extern const u8 gUnknown_84181C3[]; extern const u8 gUnknown_84181E4[]; -extern const u8 gUnknown_841E5A4[]; -extern const u8 gUnknown_841E5B9[]; -extern const u8 gUnknown_841E5D2[]; -extern const u8 gUnknown_841E5E9[]; -extern const u8 gUnknown_841E5ED[]; -extern const u8 gUnknown_841E5F3[]; -extern const u8 gUnknown_841E5F8[]; - -static const u16 gUnknown_845C600[] = INCBIN_U16("data/fame_checker/tilemap_845c600.bin"); -static const u8 gUnknown_845CE00[] = INCBIN_U8("data/fame_checker/img_845ce00.4bpp"); -static const u8 gUnknown_845CF00[] = INCBIN_U8("data/fame_checker/img_845cf00.4bpp"); -static const u16 gUnknown_845D0E0[] = INCBIN_U16("data/fame_checker/pal_845d0e0.gbapal"); -static const u8 gUnknown_845D100[] = INCBIN_U8("data/fame_checker/img_845d100.4bpp"); -static const u16 gUnknown_845D500[] = INCBIN_U16("data/fame_checker/pal_845d500.gbapal"); -static const u8 gUnknown_845D520[] = INCBIN_U8("data/fame_checker/img_845d520.4bpp"); -static const u16 gUnknown_845DD20[] = INCBIN_U16("data/fame_checker/pal_845dd20.gbapal"); -static const u8 gUnknown_845DD40[] = INCBIN_U8("data/fame_checker/img_845dd40.4bpp"); -static const u16 gUnknown_845E540[] = INCBIN_U16("data/fame_checker/pal_845e540.gbapal"); -static const u8 gUnknown_845E560[] = INCBIN_U8("data/fame_checker/img_845e560.4bpp"); -static const u16 gUnknown_845ED60[] = INCBIN_U16("data/fame_checker/pal_845ed60.gbapal"); -static const u8 gUnknown_845ED80[] = INCBIN_U8("data/fame_checker/img_845ed80.4bpp"); -static const u16 gUnknown_845F580[] = INCBIN_U16("data/fame_checker/pal_845f580.gbapal"); +extern const u8 gUnknown_841E5A4[]; // "{KEYGFX_START_BUTTON}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_A_BUTTON}OK$" +extern const u8 gUnknown_841E5B9[]; // "{KEYGFX_START_BUTTON}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_B_BUTTON}CANCEL$" +extern const u8 gUnknown_841E5D2[]; // "{KEYGFX_DPAD_ANY}PICK {KEYGFX_A_BUTTON}READ {UNKNOWN_F8 0x01}CANCEL$" +extern const u8 gUnknown_841E5E9[]; // "OAK$" +extern const u8 gUnknown_841E5ED[]; // "DAISY$" +extern const u8 gUnknown_841E5F3[]; // "BILL$" +extern const u8 gUnknown_841E5F8[]; // "FUJI$" + +static const u16 sFameCheckerTilemap[] = INCBIN_U16("data/fame_checker/tilemap_845c600.bin"); +static const u8 sQuestionMarkSpriteGfx[] = INCBIN_U8("data/fame_checker/img_845ce00.4bpp"); +static const u8 sSpinningPokeballSpriteGfx[] = INCBIN_U8("data/fame_checker/img_845cf00.4bpp"); +static const u16 sSpinningPokeballSpritePalette[] = INCBIN_U16("data/fame_checker/pal_845d0e0.gbapal"); +static const u8 sSelectorCursorSpriteGfx[] = INCBIN_U8("data/fame_checker/img_845d100.4bpp"); +static const u16 sSelectorCursorSpritePalette[] = INCBIN_U16("data/fame_checker/pal_845d500.gbapal"); +static const u8 sFujiSpriteGfx[] = INCBIN_U8("data/fame_checker/img_845d520.4bpp"); +static const u16 sFujiSpritePalette[] = INCBIN_U16("data/fame_checker/pal_845dd20.gbapal"); +static const u8 sBillSpriteGfx[] = INCBIN_U8("data/fame_checker/img_845dd40.4bpp"); +static const u16 sBillSpritePalette[] = INCBIN_U16("data/fame_checker/pal_845e540.gbapal"); +static const u8 sDaisySpriteGfx[] = INCBIN_U8("data/fame_checker/img_845e560.4bpp"); +static const u16 sDaisySpritePalette[] = INCBIN_U16("data/fame_checker/pal_845ed60.gbapal"); +static const u8 sOakSpriteGfx[] = INCBIN_U8("data/fame_checker/img_845ed80.4bpp"); +static const u16 sOakSpritePalette[] = INCBIN_U16("data/fame_checker/pal_845f580.gbapal"); static const u16 gUnknown_845F5A0[] = INCBIN_U16("data/fame_checker/pal_845f5a0.gbapal"); static const u16 gUnknown_845F5C0[] = INCBIN_U16("data/fame_checker/pal_845f5c0.gbapal"); @@ -181,38 +182,8 @@ static const u8 *const gUnknown_845F60C[] = { }; static const u8 gUnknown_845F61C[] = { - 0x56, - 0x54, - 0x74, - 0x75, - 0x76, - 0x77, - 0x78, - 0x7a, - 0x79, - 0x70, - 0x71, - 0x72, - 0x73, - 0x64, - 0x7b, - 0x6c, - 0x00, - 0x01, - 0x00, - 0x01, - 0x00, - 0x01, - 0x00, - 0x01, - 0x00, - 0x01, - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x00 + 0x56, 0x54, 0x74, 0x75, 0x76, 0x77, 0x78, 0x7a, 0x79, 0x70, 0x71, 0x72, 0x73, 0x64, 0x7b, 0x6c, + 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 }; static const u8 *const gUnknown_845F63C[] = { @@ -269,7 +240,7 @@ static const u8 *const gUnknown_845F6BC[] = { gUnknown_81AFE68, gUnknown_81AFF23, gUnknown_81AFFA8, gUnknown_81B0022, gUnknown_81B00A6, gUnknown_81B0106 }; -static const u8 gUnknown_845F83C[] = { +static const u8 sFameCheckerArrayNpcGraphicsIds[] = { 0x67, 0x47, 0x30, 0x69, 0x4b, 0x37, 0x37, 0x30, 0x3d, 0x69, 0x23, 0x69, 0x66, 0x50, 0x1b, 0x13, 0x1e, 0x69, @@ -327,19 +298,19 @@ static const u8 *const gUnknown_845FA1C[] = { }; static const struct SpriteSheet gUnknown_845FB9C[] = { - {gUnknown_845D100, 0x400, SPRITETAG_1000}, - {gUnknown_845CE00, 0x100, SPRITETAG_1001}, - {gUnknown_845CF00, 0x1e0, SPRITETAG_1002}, - {gUnknown_845E560, 0x800, SPRITETAG_1006}, - {gUnknown_845D520, 0x800, SPRITETAG_1007}, - {gUnknown_845ED80, 0x800, SPRITETAG_1008}, - {gUnknown_845DD40, 0x800, SPRITETAG_1009}, + {sSelectorCursorSpriteGfx, 0x400, SPRITETAG_1000}, + {sQuestionMarkSpriteGfx, 0x100, SPRITETAG_1001}, + {sSpinningPokeballSpriteGfx, 0x1e0, SPRITETAG_1002}, + {sDaisySpriteGfx, 0x800, SPRITETAG_1006}, + {sFujiSpriteGfx, 0x800, SPRITETAG_1007}, + {sOakSpriteGfx, 0x800, SPRITETAG_1008}, + {sBillSpriteGfx, 0x800, SPRITETAG_1009}, {} }; static const struct SpritePalette gUnknown_845FBDC[] = { - {gUnknown_845D500, SPRITETAG_1000}, - {gUnknown_845D0E0, SPRITETAG_1002}, + {sSelectorCursorSpritePalette, SPRITETAG_1000}, + {sSpinningPokeballSpritePalette, SPRITETAG_1002}, {} }; @@ -449,7 +420,7 @@ static const union AffineAnimCmd *const gUnknown_845FCB4[] = { gUnknown_845FCA4 }; -static const struct SpriteTemplate gUnknown_845FCB8 = { +static const struct SpriteTemplate sSpinningPokeballSpriteTemplate = { SPRITETAG_1002, SPRITETAG_1002, &gOamData_845FC9C, gUnknown_845FC98, NULL, gUnknown_845FCB4, sub_812D840 }; @@ -466,19 +437,19 @@ static const struct OamData gOamData_845FCDC = { .size = 3 }; -static const struct SpriteTemplate gUnknown_845FCE4 = { +static const struct SpriteTemplate sDaisySpriteTemplate = { SPRITETAG_1006, 0xffff, &gOamData_845FCDC, gUnknown_845FCD8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -static const struct SpriteTemplate gUnknown_845FCFC = { +static const struct SpriteTemplate sFujiSpriteTemplate = { SPRITETAG_1007, 0xffff, &gOamData_845FCDC, gUnknown_845FCD8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -static const struct SpriteTemplate gUnknown_845FD14 = { +static const struct SpriteTemplate sOakSpriteTemplate = { SPRITETAG_1008, 0xffff, &gOamData_845FCDC, gUnknown_845FCD8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -static const struct SpriteTemplate gUnknown_845FD2C = { +static const struct SpriteTemplate sBillSpriteTemplate = { SPRITETAG_1009, 0xffff, &gOamData_845FCDC, gUnknown_845FCD8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; @@ -541,7 +512,7 @@ static void sub_812C3F8(void) LoadPalette(gUnknown_8E9F220 + 0x00, 0x00, 0x40); LoadPalette(gUnknown_8E9F220 + 0x10, 0x10, 0x20); CopyToBgTilemapBufferRect(2, gUnknown_8EA0F00, 0, 0, 32, 32); - CopyToBgTilemapBufferRect_ChangePalette(1, gUnknown_845C600, 30, 0, 32, 32, 0x11); + CopyToBgTilemapBufferRect_ChangePalette(1, sFameCheckerTilemap, 30, 0, 32, 32, 0x11); LoadPalette(stdpal_get(2), 0xF0, 0x20); gMain.state++; break; @@ -610,16 +581,16 @@ static void sub_812C694(u8 taskId) if (FindTaskIdByFunc(sub_812E110) == 0xFF) { RunTextPrinters(); - if ((JOY_NEW(SELECT_BUTTON)) && !sFameCheckerData->unk_07_1 && sFameCheckerData->savedCallback != sub_8107EB8) + if ((JOY_NEW(SELECT_BUTTON)) && !sFameCheckerData->inPickMode && sFameCheckerData->savedCallback != UseFameCheckerFromMenu) task->func = sub_812CF3C; else if (JOY_NEW(START_BUTTON)) { - r4 = sub_812E064(); + r4 = FameCheckerGetCursorY(); if (sub_812C8F8(taskId) == TRUE) { PlaySE(SE_W100); } - else if (r4 != sFameCheckerData->unk_07_2 - 1) + else if (r4 != sFameCheckerData->numUnlockedPersons - 1) { PlaySE(SE_W100); FillWindowPixelRect(3, 0x00, 0, 0, 88, 32); @@ -639,9 +610,9 @@ static void sub_812C694(u8 taskId) else if (JOY_NEW(A_BUTTON)) { r4 = ListMenuHandleInput(0); - if (r4 == sFameCheckerData->unk_07_2 - 1) + if (r4 == sFameCheckerData->numUnlockedPersons - 1) task->func = sub_812CF3C; - else if (sFameCheckerData->unk_07_1) + else if (sFameCheckerData->inPickMode) { if (!IsTextPrinterActive(2) && sub_812D6B4() == TRUE) sub_812CD3C(); @@ -680,7 +651,7 @@ static void sub_812C694(u8 taskId) static bool8 sub_812C8F8(u8 taskId) { struct Task *task = &gTasks[taskId]; - if (sFameCheckerData->unk_07_1) + if (sFameCheckerData->inPickMode) { gSprites[task->data[2]].data[0] = 2; gSprites[task->data[2]].pos2.x += 10; @@ -706,7 +677,7 @@ static void sub_812C9BC(u8 taskId) if (gSprites[task->data[2]].data[0] == 0) { sub_812CD3C(); - sFameCheckerData->unk_07_1 = TRUE; + sFameCheckerData->inPickMode = TRUE; task->func = sub_812C694; } else @@ -726,8 +697,8 @@ static void sub_812CA1C(u8 taskId) sub_812D0F4(0); sub_812E178(1, 4); sub_812E178(2, 2); - sFameCheckerData->unk_07_1 = FALSE; - sub_812D9A8(taskId, sub_812E064()); + sFameCheckerData->inPickMode = FALSE; + sub_812D9A8(taskId, FameCheckerGetCursorY()); task->func = sub_812C694; gSprites[task->data[3]].callback = sub_812D800; } @@ -825,7 +796,7 @@ static void sub_812CC68(u8 taskId, s8 dx, s8 dy) static void sub_812CD3C(void) { u8 r8 = 0; - u16 r6 = sub_812E064(); + u16 r6 = FameCheckerGetCursorY(); if (gSaveBlock1Ptr->fameChecker[sFameCheckerData->unlockedPersons[r6]].unk_0_0 != 2) { sub_812CE9C(); @@ -845,7 +816,7 @@ static void sub_812CD3C(void) static void sub_812CE04(u8 taskId) { s16 *data = gTasks[taskId].data; - u16 r5 = sub_812E064(); + u16 r5 = FameCheckerGetCursorY(); FillWindowPixelRect(2, 0x11, 0, 0, 0xd0, 0x20); StringExpandPlaceholders(gStringVar4, gUnknown_845F6BC[sFameCheckerData->unlockedPersons[r5] * 6 + data[1]]); AddTextPrinterParametrized(2, 2, gStringVar4, sub_80F78A8(), NULL, 2, 1, 3); @@ -895,9 +866,9 @@ static void sub_812CF7C(u8 taskId) if (!gPaletteFade.active) { - if (sFameCheckerData->unk_07_1) + if (sFameCheckerData->inPickMode) { - sub_812D9A8(taskId, sub_812E064()); + sub_812D9A8(taskId, FameCheckerGetCursorY()); FreeSpriteOamMatrix(&gSprites[gTasks[taskId].data[3]]); DestroySprite(&gSprites[gTasks[taskId].data[3]]); } @@ -981,7 +952,7 @@ static bool8 sub_812D1A8(u8 a0) if ((gSaveBlock1Ptr->fameChecker[sFameCheckerData->unlockedPersons[a0]].unk_0_2 >> r6) & 1) { sFameCheckerData->spriteIds[r6] = sub_805EB44( - gUnknown_845F83C[sFameCheckerData->unlockedPersons[a0] * 6 + r6], + sFameCheckerArrayNpcGraphicsIds[sFameCheckerData->unlockedPersons[a0] * 6 + r6], r6, 47 * (r6 % 3) + 0x72, 27 * (r6 / 3) + 0x2F @@ -990,7 +961,7 @@ static bool8 sub_812D1A8(u8 a0) } else { - sFameCheckerData->spriteIds[r6] = sub_812D780( + sFameCheckerData->spriteIds[r6] = PlaceQuestionMarkTile( 47 * (r6 % 3) + 0x72, 27 * (r6 / 3) + 0x1F ); @@ -1000,7 +971,7 @@ static bool8 sub_812D1A8(u8 a0) if (r5 == TRUE) { sFameCheckerData->unk_07_0 = TRUE; - if (sFameCheckerData->unk_07_1) + if (sFameCheckerData->inPickMode) sub_812D0F4(TRUE); else sub_812D0F4(FALSE); @@ -1120,7 +1091,7 @@ static void sub_812D650(void) static bool8 sub_812D6B4(void) { u8 r2; - u8 r1 = sFameCheckerData->unlockedPersons[sub_812E064()]; + u8 r1 = sFameCheckerData->unlockedPersons[FameCheckerGetCursorY()]; for (r2 = 0; r2 < 6; r2++) { if (!((gSaveBlock1Ptr->fameChecker[r1].unk_0_2 >> r2) & 1)) @@ -1152,7 +1123,7 @@ static void sub_812D770(void) FreeSpriteTilesByTag(SPRITETAG_1001); } -static u8 sub_812D780(u8 x, u8 y) +static u8 PlaceQuestionMarkTile(u8 x, u8 y) { u8 spriteId = CreateSprite(&gUnknown_845FC78, x, y, 8); gSprites[spriteId].oam.priority = 2; @@ -1168,7 +1139,7 @@ static void sub_812D7C8(void) static u8 sub_812D7E4(void) { - return CreateSprite(&gUnknown_845FCB8, 0xe2, 0x42, 0); + return CreateSprite(&sSpinningPokeballSpriteTemplate, 0xe2, 0x42, 0); } static void sub_812D800(struct Sprite * sprite) @@ -1212,28 +1183,28 @@ static void sub_812D840(struct Sprite * sprite) static u8 sub_812D888(u8 a0) { u8 r4; - if (a0 == 1) + if (a0 == FAMECHECKER_DAISY) { - r4 = CreateSprite(&gUnknown_845FCE4, 0x94, 0x42, 0); - LoadPalette(gUnknown_845ED60, 0x160, 0x20); + r4 = CreateSprite(&sDaisySpriteTemplate, 0x94, 0x42, 0); + LoadPalette(sDaisySpritePalette, 0x160, 0x20); gSprites[r4].oam.paletteNum = 6; } - else if (a0 == 14) + else if (a0 == FAMECHECKER_MRFUJI) { - r4 = CreateSprite(&gUnknown_845FCFC, 0x94, 0x42, 0); - LoadPalette(gUnknown_845DD20, 0x160, 0x20); + r4 = CreateSprite(&sFujiSpriteTemplate, 0x94, 0x42, 0); + LoadPalette(sFujiSpritePalette, 0x160, 0x20); gSprites[r4].oam.paletteNum = 6; } - else if (a0 == 0) + else if (a0 == FAMECHECKER_OAK) { - r4 = CreateSprite(&gUnknown_845FD14, 0x94, 0x42, 0); - LoadPalette(gUnknown_845F580, 0x160, 0x20); + r4 = CreateSprite(&sOakSpriteTemplate, 0x94, 0x42, 0); + LoadPalette(sOakSpritePalette, 0x160, 0x20); gSprites[r4].oam.paletteNum = 6; } - else if (a0 == 13) + else if (a0 == FAMECHECKER_BILL) { - r4 = CreateSprite(&gUnknown_845FD2C, 0x94, 0x42, 0); - LoadPalette(gUnknown_845E540, 0x160, 0x20); + r4 = CreateSprite(&sBillSpriteTemplate, 0x94, 0x42, 0); + LoadPalette(sBillSpritePalette, 0x160, 0x20); gSprites[r4].oam.paletteNum = 6; } else @@ -1250,12 +1221,12 @@ static void sub_812D9A8(u8 taskId, u16 a1) { s16 * data = gTasks[taskId].data; u16 r1 = a1; - if (a1 == sFameCheckerData->unk_07_2 - 1) + if (a1 == sFameCheckerData->numUnlockedPersons - 1) r1 = a1 - 1; - if ( sFameCheckerData->unlockedPersons[r1] == 1 - || sFameCheckerData->unlockedPersons[r1] == 14 - || sFameCheckerData->unlockedPersons[r1] == 0 - || sFameCheckerData->unlockedPersons[r1] == 13 + if ( sFameCheckerData->unlockedPersons[r1] == FAMECHECKER_DAISY + || sFameCheckerData->unlockedPersons[r1] == FAMECHECKER_MRFUJI + || sFameCheckerData->unlockedPersons[r1] == FAMECHECKER_OAK + || sFameCheckerData->unlockedPersons[r1] == FAMECHECKER_BILL ) DestroySprite(&gSprites[data[2]]); else @@ -1265,7 +1236,7 @@ static void sub_812D9A8(u8 taskId, u16 a1) static void sub_812DA14(u8 a0) { s32 width; - u32 r5 = 6 * sFameCheckerData->unlockedPersons[sub_812E064()] + a0; + u32 r5 = 6 * sFameCheckerData->unlockedPersons[FameCheckerGetCursorY()] + a0; sub_812E094(1); gUnknown_3005EC8 = 1; FillWindowPixelRect(3, 0x00, 0, 0, 0x58, 0x20); @@ -1286,7 +1257,7 @@ static void sub_812DB10(void) static void sub_812DB28(void) { sub_812DB64(); - sFameCheckerData->unk_07_2 = sub_812DEF0(); + sFameCheckerData->numUnlockedPersons = sub_812DEF0(); sFameCheckerData->scrollIndicatorArrowObjectTaskId = ListMenuInit(&gFameChecker_ListMenuTemplate, 0, 0); sub_812DFE4(0); } @@ -1329,11 +1300,11 @@ static void sub_812DBC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) task->data[1] = 0; get_coro_args_x18_x1A(sFameCheckerData->scrollIndicatorArrowObjectTaskId, &sp8, NULL); sFameCheckerData->unk_04 = sp8; - if (itemIndex != sFameCheckerData->unk_07_2 - 1) + if (itemIndex != sFameCheckerData->numUnlockedPersons - 1) { sub_812D174(); sub_812D1A8(itemIndex); - if (sFameCheckerData->unk_07_1) + if (sFameCheckerData->inPickMode) { if (!sFameCheckerData->unk_23_2) { @@ -1358,7 +1329,7 @@ static void sub_812DBC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) else { sub_812DDAC(); - if (sFameCheckerData->unk_07_1) + if (sFameCheckerData->inPickMode) { gSprites[task->data[2]].invisible = TRUE; sFameCheckerData->unk_23_2 = TRUE; @@ -1403,7 +1374,7 @@ static void sub_812DDF0(s32 itemIndex, bool8 onInit) { if (sp14 < sFameCheckerData->unk_0A) sFameCheckerData->unk_0B++; - else if (sp14 > sFameCheckerData->unk_0A && r6 != sFameCheckerData->unk_07_2 - 1) + else if (sp14 > sFameCheckerData->unk_0A && r6 != sFameCheckerData->numUnlockedPersons - 1) sFameCheckerData->unk_0B--; AddTextPrinterParametrized2(0, 2, 8, 14 * sFameCheckerData->unk_0B + 4, 0, 0, &gUnknown_845F5E3, 0, sListMenuItems[sFameCheckerData->unk_09].unk_00); @@ -1472,21 +1443,21 @@ static void sub_812E000(void) 0 }; - if (sFameCheckerData->unk_07_2 > 5) + if (sFameCheckerData->numUnlockedPersons > 5) { sp0.unk_06 = 0; - sp0.unk_08 = sFameCheckerData->unk_07_2 - 5; + sp0.unk_08 = sFameCheckerData->numUnlockedPersons - 5; sFameCheckerData->unk_06 = AddScrollIndicatorArrowPair(&sp0, &sFameCheckerData->unk_04); } } static void sub_812E048(void) { - if (sFameCheckerData->unk_07_2 > 5) + if (sFameCheckerData->numUnlockedPersons > 5) RemoveScrollIndicatorArrowPair(sFameCheckerData->unk_06); } -static u16 sub_812E064(void) +static u16 FameCheckerGetCursorY(void) { u16 sp0, sp2; get_coro_args_x18_x1A(sFameCheckerData->scrollIndicatorArrowObjectTaskId, &sp0, &sp2); -- cgit v1.2.3 From a738e3dca5563355df0b31323a95e017ce9205d6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 27 Nov 2018 08:44:24 -0500 Subject: More documentation and enums --- src/fame_checker.c | 74 +++++++++++++++++++++++++++--------------------------- 1 file changed, 37 insertions(+), 37 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index 2bff79146..723fffefe 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -39,15 +39,15 @@ struct FameCheckerData { MainCallback savedCallback; - u16 unk_04; + u16 listMenuTopIdx; u8 unk_06; - u8 unk_07_0:1; + u8 personHasUnlockedPanels:1; u8 inPickMode:1; u8 numUnlockedPersons:6; u8 scrollIndicatorArrowObjectTaskId; - u8 unk_09; - u8 unk_0A; - u8 unk_0B; + u8 listMenuCurIdx; + u8 listMenuTopIdx2; + u8 listMenuDrawnSelIdx; u8 unlockedPersons[17]; u8 spriteIds[6]; u8 unk_23_0:1; @@ -473,9 +473,9 @@ void UseFameChecker(MainCallback savedCallback) SetVBlankCallback(NULL); sFameCheckerData = AllocZeroed(sizeof(struct FameCheckerData)); sFameCheckerData->savedCallback = savedCallback; - sFameCheckerData->unk_09 = 0; - sFameCheckerData->unk_0A = 0; - sFameCheckerData->unk_0B = 0; + sFameCheckerData->listMenuCurIdx = 0; + sFameCheckerData->listMenuTopIdx2 = 0; + sFameCheckerData->listMenuDrawnSelIdx = 0; sFameCheckerData->unk_23_0 = FALSE; PlaySE(SE_W202); SetMainCallback2(sub_812C3F8); @@ -550,7 +550,7 @@ static void sub_812C3F8(void) SetGpuReg(REG_OFFSET_BLDALPHA, 0x07); SetGpuReg(REG_OFFSET_BLDY, 0x08); SetVBlankCallback(sub_812C380); - sFameCheckerData->unk_04 = 0; + sFameCheckerData->listMenuTopIdx = 0; sub_812E000(); sub_812E178(1, 4); CreateTask(sub_812C664, 0x08); @@ -617,7 +617,7 @@ static void sub_812C694(u8 taskId) if (!IsTextPrinterActive(2) && sub_812D6B4() == TRUE) sub_812CD3C(); } - else if (sFameCheckerData->unk_07_0) + else if (sFameCheckerData->personHasUnlockedPanels) { PlaySE(SE_SELECT); task->data[0] = sub_812D724(task->data[1]); @@ -693,7 +693,7 @@ static void sub_812CA1C(u8 taskId) ChangeBgX(1, 0x000, 0); if (gSprites[task->data[2]].data[0] == 0) { - if (sFameCheckerData->unk_07_0) + if (sFameCheckerData->personHasUnlockedPanels) sub_812D0F4(0); sub_812E178(1, 4); sub_812E178(2, 2); @@ -797,7 +797,7 @@ static void sub_812CD3C(void) { u8 r8 = 0; u16 r6 = FameCheckerGetCursorY(); - if (gSaveBlock1Ptr->fameChecker[sFameCheckerData->unlockedPersons[r6]].unk_0_0 != 2) + if (gSaveBlock1Ptr->fameChecker[sFameCheckerData->unlockedPersons[r6]].pickState != FCPICKSTATE_COLORED) { sub_812CE9C(); sub_812C990(); @@ -949,7 +949,7 @@ static bool8 sub_812D1A8(u8 a0) u8 r6; for (r6 = 0; r6 < 6; r6++) { - if ((gSaveBlock1Ptr->fameChecker[sFameCheckerData->unlockedPersons[a0]].unk_0_2 >> r6) & 1) + if ((gSaveBlock1Ptr->fameChecker[sFameCheckerData->unlockedPersons[a0]].flavorTextFlags >> r6) & 1) { sFameCheckerData->spriteIds[r6] = sub_805EB44( sFameCheckerArrayNpcGraphicsIds[sFameCheckerData->unlockedPersons[a0] * 6 + r6], @@ -970,7 +970,7 @@ static bool8 sub_812D1A8(u8 a0) } if (r5 == TRUE) { - sFameCheckerData->unk_07_0 = TRUE; + sFameCheckerData->personHasUnlockedPanels = TRUE; if (sFameCheckerData->inPickMode) sub_812D0F4(TRUE); else @@ -978,7 +978,7 @@ static bool8 sub_812D1A8(u8 a0) } else { - sFameCheckerData->unk_07_0 = FALSE; + sFameCheckerData->personHasUnlockedPanels = FALSE; sub_812D0F4(TRUE); } return r5; @@ -989,11 +989,11 @@ void ResetFameChecker(void) u8 r4; for (r4 = 0; r4 < 16; r4++) { - gSaveBlock1Ptr->fameChecker[r4].unk_0_0 = 0; - gSaveBlock1Ptr->fameChecker[r4].unk_0_2 = 0; + gSaveBlock1Ptr->fameChecker[r4].pickState = FCPICKSTATE_NO_DRAW; + gSaveBlock1Ptr->fameChecker[r4].flavorTextFlags = 0; gSaveBlock1Ptr->fameChecker[r4].unk_0_E = 0; } - gSaveBlock1Ptr->fameChecker[0].unk_0_0 = 2; + gSaveBlock1Ptr->fameChecker[0].pickState = FCPICKSTATE_COLORED; } static void sub_812D388(void) @@ -1001,10 +1001,10 @@ static void sub_812D388(void) u8 r5, r4; for (r5 = 0; r5 < 16; r5++) { - gSaveBlock1Ptr->fameChecker[r5].unk_0_0 = 2; + gSaveBlock1Ptr->fameChecker[r5].pickState = FCPICKSTATE_COLORED; for (r4 = 0; r4 < 6; r4++) { - gSaveBlock1Ptr->fameChecker[r5].unk_0_2 |= (1 << r4); + gSaveBlock1Ptr->fameChecker[r5].flavorTextFlags |= (1 << r4); } } } @@ -1070,7 +1070,7 @@ static void sub_812D5EC(void) { if (gUnknown_20370C0 < 16 && gSpecialVar_0x8005 < 6) { - gSaveBlock1Ptr->fameChecker[gUnknown_20370C0].unk_0_2 |= (1 << gSpecialVar_0x8005); + gSaveBlock1Ptr->fameChecker[gUnknown_20370C0].flavorTextFlags |= (1 << gSpecialVar_0x8005); gSpecialVar_0x8005 = 1; sub_812D650(); } @@ -1082,9 +1082,9 @@ static void sub_812D650(void) { if (gSpecialVar_0x8005 == 0) return; - if (gSpecialVar_0x8005 == 1 && gSaveBlock1Ptr->fameChecker[gUnknown_20370C0].unk_0_0 == 2) + if (gSpecialVar_0x8005 == 1 && gSaveBlock1Ptr->fameChecker[gUnknown_20370C0].pickState == FCPICKSTATE_COLORED) return; - gSaveBlock1Ptr->fameChecker[gUnknown_20370C0].unk_0_0 = gSpecialVar_0x8005; + gSaveBlock1Ptr->fameChecker[gUnknown_20370C0].pickState = gSpecialVar_0x8005; } } @@ -1094,7 +1094,7 @@ static bool8 sub_812D6B4(void) u8 r1 = sFameCheckerData->unlockedPersons[FameCheckerGetCursorY()]; for (r2 = 0; r2 < 6; r2++) { - if (!((gSaveBlock1Ptr->fameChecker[r1].unk_0_2 >> r2) & 1)) + if (!((gSaveBlock1Ptr->fameChecker[r1].flavorTextFlags >> r2) & 1)) return FALSE; } return TRUE; @@ -1212,7 +1212,7 @@ static u8 sub_812D888(u8 a0) r4 = sub_810C2A4(gUnknown_845F61C[a0], 1, 0x94, 0x42, 6, 0xFFFF); } gSprites[r4].callback = sub_812D840; - if (gSaveBlock1Ptr->fameChecker[a0].unk_0_0 == 1) + if (gSaveBlock1Ptr->fameChecker[a0].pickState == FCPICKSTATE_SILHOUETTE) LoadPalette(gUnknown_845F5C0, 0x160, 0x20); return r4; } @@ -1290,7 +1290,7 @@ static void sub_812DBC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) u8 taskId; u16 r9; sLastMenuIdx = 0; - r9 = sFameCheckerData->unk_0A + sFameCheckerData->unk_0B; + r9 = sFameCheckerData->listMenuTopIdx2 + sFameCheckerData->listMenuDrawnSelIdx; sub_812DDF0(itemIndex, onInit); taskId = FindTaskIdByFunc(sub_812C694); if (taskId != 0xFF) @@ -1299,7 +1299,7 @@ static void sub_812DBC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) PlaySE(SE_SELECT); task->data[1] = 0; get_coro_args_x18_x1A(sFameCheckerData->scrollIndicatorArrowObjectTaskId, &sp8, NULL); - sFameCheckerData->unk_04 = sp8; + sFameCheckerData->listMenuTopIdx = sp8; if (itemIndex != sFameCheckerData->numUnlockedPersons - 1) { sub_812D174(); @@ -1372,16 +1372,16 @@ static void sub_812DDF0(s32 itemIndex, bool8 onInit) AddTextPrinterParametrized2(0, 2, 8, 14 * sp16 + 4, 0, 0, &gUnknown_845F5E6, 0, sListMenuItems[itemIndex].unk_00); if (!onInit) { - if (sp14 < sFameCheckerData->unk_0A) - sFameCheckerData->unk_0B++; - else if (sp14 > sFameCheckerData->unk_0A && r6 != sFameCheckerData->numUnlockedPersons - 1) - sFameCheckerData->unk_0B--; - AddTextPrinterParametrized2(0, 2, 8, 14 * sFameCheckerData->unk_0B + 4, 0, 0, &gUnknown_845F5E3, 0, sListMenuItems[sFameCheckerData->unk_09].unk_00); + if (sp14 < sFameCheckerData->listMenuTopIdx2) + sFameCheckerData->listMenuDrawnSelIdx++; + else if (sp14 > sFameCheckerData->listMenuTopIdx2 && r6 != sFameCheckerData->numUnlockedPersons - 1) + sFameCheckerData->listMenuDrawnSelIdx--; + AddTextPrinterParametrized2(0, 2, 8, 14 * sFameCheckerData->listMenuDrawnSelIdx + 4, 0, 0, &gUnknown_845F5E3, 0, sListMenuItems[sFameCheckerData->listMenuCurIdx].unk_00); } - sFameCheckerData->unk_09 = itemIndex; - sFameCheckerData->unk_0B = sp16; - sFameCheckerData->unk_0A = sp14; + sFameCheckerData->listMenuCurIdx = itemIndex; + sFameCheckerData->listMenuDrawnSelIdx = sp16; + sFameCheckerData->listMenuTopIdx2 = sp14; } static u8 sub_812DEF0(void) @@ -1392,7 +1392,7 @@ static u8 sub_812DEF0(void) for (r6 = 0; r6 < 16; r6++) { u8 r5 = sub_812D0C0(r6); - if (gSaveBlock1Ptr->fameChecker[r5].unk_0_0 != 0) + if (gSaveBlock1Ptr->fameChecker[r5].pickState != FCPICKSTATE_NO_DRAW) { if (gUnknown_845F5EA[r5] < 0xFE00) { @@ -1447,7 +1447,7 @@ static void sub_812E000(void) { sp0.unk_06 = 0; sp0.unk_08 = sFameCheckerData->numUnlockedPersons - 5; - sFameCheckerData->unk_06 = AddScrollIndicatorArrowPair(&sp0, &sFameCheckerData->unk_04); + sFameCheckerData->unk_06 = AddScrollIndicatorArrowPair(&sp0, &sFameCheckerData->listMenuTopIdx); } } -- cgit v1.2.3 From d2bd51c49f0654a7cb37a6aeb0f50b8b2d2470b1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 27 Nov 2018 16:50:10 -0500 Subject: Rename most assets and functions in fame_checker --- src/fame_checker.c | 1095 +++++++++++++++++++++++++--------------------------- 1 file changed, 534 insertions(+), 561 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index 723fffefe..46c13c387 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -27,14 +27,16 @@ #include "text_window.h" #include "fame_checker.h" -#define SPRITETAG_1000 1000 -#define SPRITETAG_1001 1001 -#define SPRITETAG_1002 1002 -#define SPRITETAG_1004 1004 -#define SPRITETAG_1006 1006 -#define SPRITETAG_1007 1007 -#define SPRITETAG_1008 1008 -#define SPRITETAG_1009 1009 +#define SPRITETAG_SELECTOR_CURSOR 1000 +#define SPRITETAG_QUESTION_MARK 1001 +#define SPRITETAG_SPINNING_POKEBALL 1002 +#define SPRITETAG_SCROLL_INDICATORS 1004 +#define SPRITETAG_DAISY 1006 +#define SPRITETAG_FUJI 1007 +#define SPRITETAG_OAK 1008 +#define SPRITETAG_BILL 1009 + +#define FC_NONTRAINER_START 0xFE00 struct FameCheckerData { @@ -44,11 +46,11 @@ struct FameCheckerData u8 personHasUnlockedPanels:1; u8 inPickMode:1; u8 numUnlockedPersons:6; - u8 scrollIndicatorArrowObjectTaskId; + u8 listMenuTaskId; u8 listMenuCurIdx; u8 listMenuTopIdx2; u8 listMenuDrawnSelIdx; - u8 unlockedPersons[17]; + u8 unlockedPersons[NUM_FAMECHECKER_PERSONS + 1]; u8 spriteIds[6]; u8 unk_23_0:1; u8 unk_23_1:1; @@ -65,74 +67,73 @@ static EWRAM_DATA s32 sLastMenuIdx = 0; struct ListMenuTemplate gFameChecker_ListMenuTemplate; u8 gUnknown_3005EC8; -static void sub_812C3F8(void); -static void sub_812C648(void); -static void sub_812C664(u8 taskId); -static void sub_812C694(u8 taskId); -static bool8 sub_812C8F8(u8 taskId); -static void sub_812C990(void); -static void sub_812C9BC(u8 taskId); -static void sub_812CA1C(u8 taskId); -static void sub_812CAD8(u8 taskId); -static void sub_812CC68(u8 taskId, s8 dx, s8 dy); -static void sub_812CD3C(void); -static void sub_812CE04(u8 taskId); -static void sub_812CE9C(void); -static void sub_812CEC0(void); -static void sub_812CEE0(u8 windowId); -static bool8 sub_812CEFC(u8 taskId, u8 objMode); -static void sub_812CF3C(u8 taskId); -static void sub_812CF7C(u8 taskId); -static void sub_812D094(u8 windowId); -static void sub_812D0F4(u8 a0); -static bool8 sub_812D1A8(u8 a0); -static void sub_812D420(void); -static void sub_812D558(void); -static void sub_812D584(void); -static void sub_812D594(void); -static void sub_812D650(void); -static bool8 sub_812D6B4(void); -static void sub_812D70C(void); -static u8 sub_812D724(s16 a0); -static void sub_812D764(struct Sprite *sprite); -static void sub_812D770(void); +static void MainCB2_LoadFameChecker(void); +static void LoadUISpriteSheetsAndPalettes(void); +static void Task_WaitFadeOnInit(u8 taskId); +static void Task_TopMenuHandleInput(u8 taskId); +static bool8 TryExitPickMode(u8 taskId); +static void MessageBoxPrintEmptyText(void); +static void Task_EnterPickMode(u8 taskId); +static void Task_ExitPickMode(u8 taskId); +static void Task_FlavorTextDisplayHandleInput(u8 taskId); +static void FC_MoveSelectorCursor(u8 taskId, s8 dx, s8 dy); +static void GetPickModeText(void); +static void PrintSelectedNameInBrightGreen(u8 taskId); +static void WipeMsgBoxAndTransfer(void); +static void Setup_DrawMsgAndListBoxes(void); +static void FC_PutWindowTilemapAndCopyWindowToVramMode3(u8 windowId); +static bool8 SetMessageSelectorIconObjMode(u8 taskId, u8 objMode); +static void Task_StartToCloseFameChecker(u8 taskId); +static void Task_DestroyAssetsAndCloseFameChecker(u8 taskId); +static void FC_DestroyWindow(u8 windowId); +static void PrintUIHelp(u8 a0); +static bool8 CreateAllFlavorTextIcons(u8 a0); +static void FCSetup_ClearVideoRegisters(void); +static void FCSetup_ResetTasksAndSpriteResources(void); +static void FCSetup_TurnOnDisplay(void); +static void FCSetup_ResetBGCoords(void); +static bool8 HasUnlockedAllFlavorTextsForCurrentPerson(void); +static void FreeSelectionCursorSpriteResources(void); +static u8 CreateFlavorTextIconSelectorCursorSprite(s16 a0); +static void SpriteCB_DestroyFlavorTextIconSelectorCursor(struct Sprite *sprite); +static void FreeQuestionMarkSpriteResources(void); static u8 PlaceQuestionMarkTile(u8, u8); -static void sub_812D7C8(void); -static u8 sub_812D7E4(void); -static void sub_812D800(struct Sprite *sprite); -static void sub_812D814(void); -static u8 sub_812D888(u8 a0); -static void sub_812D9A8(u8 a0, u16 a1); -static void sub_812DA14(u8 a0); +static void FreeSpinningPokeballSpriteResources(void); +static u8 CreateSpinningPokeballSprite(void); +static void SpriteCB_DestroySpinningPokeball(struct Sprite *sprite); +static void FreeNonTrainerPicTiles(void); +static u8 CreatePersonPicSprite(u8 a0); +static void DestroyPersonPicSprite(u8 a0, u16 a1); +static void UpdateIconDescriptionBox(u8 a0); static void sub_812DB10(void); -static void sub_812DB28(void); -static void sub_812D840(struct Sprite * sprite); -static void sub_812DB64(void); -static void sub_812DBC0(s32, bool8, struct ListMenu *); +static void FC_CreateListMenu(void); +static void SpriteCB_FCSpinningPokeball(struct Sprite * sprite); +static void InitListMenuTemplate(void); +static void FC_MoveCursorFunc(s32, bool8, struct ListMenu *); static void sub_812DD50(u8 taskId); -static void sub_812DDAC(void); -static void sub_812DDF0(s32 itemIndex, bool8 onInit); -static u8 sub_812DEF0(void); -static void sub_812DFE4(u8); -static void sub_812E000(void); -static void sub_812E048(void); +static void PrintCancelDescription(void); +static void FC_DoMoveCursor(s32 itemIndex, bool8 onInit); +static u8 FC_PopulateListMenu(void); +static void FC_PutWindowTilemapAndCopyWindowToVramMode3_2(u8 windowId); +static void FC_CreateScrollIndicatorArrowPair(void); +static void FreeListMenuSelectorArrowPairResources(void); static u16 FameCheckerGetCursorY(void); -static void sub_812E094(u8); +static void FlipBitUnk23_0(bool8); static void sub_812E110(u8 taskId); static void sub_812E178(u8 a0, s16 a1); -static void sub_812E4A4(u8 a0); - -extern const u8 gUnknown_84161C1[]; -extern const u8 gUnknown_841623B[]; -extern const u8 gUnknown_84181C3[]; -extern const u8 gUnknown_84181E4[]; -extern const u8 gUnknown_841E5A4[]; // "{KEYGFX_START_BUTTON}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_A_BUTTON}OK$" -extern const u8 gUnknown_841E5B9[]; // "{KEYGFX_START_BUTTON}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_B_BUTTON}CANCEL$" -extern const u8 gUnknown_841E5D2[]; // "{KEYGFX_DPAD_ANY}PICK {KEYGFX_A_BUTTON}READ {UNKNOWN_F8 0x01}CANCEL$" -extern const u8 gUnknown_841E5E9[]; // "OAK$" -extern const u8 gUnknown_841E5ED[]; // "DAISY$" -extern const u8 gUnknown_841E5F3[]; // "BILL$" -extern const u8 gUnknown_841E5F8[]; // "FUJI$" +static void PlaceListMenuCursor(bool8 a0); + +extern const u8 gFameCheckerText_Cancel[]; +extern const u8 gFameCheckerText_ListMenuCursor[]; +extern const u8 gFameCheckerText_FameCheckerWillBeClosed[]; +extern const u8 gFameCheckerText_ClearTextbox[]; +extern const u8 gFameCheckerText_MainScreenUI[]; // "{KEYGFX_START_BUTTON}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_A_BUTTON}OK$" +extern const u8 gFameCheckerText_PickScreenUI[]; // "{KEYGFX_START_BUTTON}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_B_BUTTON}CANCEL$" +extern const u8 gFameCheckerText_FlavorTextUI[]; // "{KEYGFX_DPAD_ANY}PICK {KEYGFX_A_BUTTON}READ {UNKNOWN_F8 0x01}CANCEL$" +extern const u8 gFameCheckerOakName[]; // "OAK$" +extern const u8 gFameCheckerDaisyName[]; // "DAISY$" +extern const u8 gFameCheckerBillName[]; // "BILL$" +extern const u8 gFameCheckerMrFujiName[]; // "FUJI$" static const u16 sFameCheckerTilemap[] = INCBIN_U16("data/fame_checker/tilemap_845c600.bin"); static const u8 sQuestionMarkSpriteGfx[] = INCBIN_U8("data/fame_checker/img_845ce00.4bpp"); @@ -149,95 +150,65 @@ static const u16 sDaisySpritePalette[] = INCBIN_U16("data/fame_checker/pal_845ed static const u8 sOakSpriteGfx[] = INCBIN_U8("data/fame_checker/img_845ed80.4bpp"); static const u16 sOakSpritePalette[] = INCBIN_U16("data/fame_checker/pal_845f580.gbapal"); static const u16 gUnknown_845F5A0[] = INCBIN_U16("data/fame_checker/pal_845f5a0.gbapal"); -static const u16 gUnknown_845F5C0[] = INCBIN_U16("data/fame_checker/pal_845f5c0.gbapal"); - -static const struct TextColor gUnknown_845F5E0 = {0x00, 0x01, 0x02}; -static const struct TextColor gUnknown_845F5E3 = {0x00, 0x02, 0x03}; -static const struct TextColor gUnknown_845F5E6 = {0x00, 0x06, 0x07}; - -static const u16 gUnknown_845F5EA[] = { - 0xfe00, - 0xfe01, - 0x019e, - 0x019f, - 0x01a0, - 0x01a1, - 0x01a2, - 0x01a4, - 0x01a3, - 0x019a, - 0x019b, - 0x019c, - 0x019d, - 0xfe02, - 0xfe03, - 0x015c +static const u16 sSilhouettePalette[] = INCBIN_U16("data/fame_checker/pal_845f5c0.gbapal"); + +static const struct TextColor gUnknown_845F5E0 = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}; +static const struct TextColor gUnknown_845F5E3 = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, 0x03}; +static const struct TextColor gUnknown_845F5E6 = {TEXT_COLOR_TRANSPARENT, 0x06, 0x07}; + +static const u16 sTrainerIdxs[] = { + FC_NONTRAINER_START + 0, // OAK + FC_NONTRAINER_START + 1, // DAISY + 0x019e, // BROCK + 0x019f, // MISTY + 0x01a0, // LTSURGE + 0x01a1, // ERIKA + 0x01a2, // KOGA + 0x01a4, // SABRINA + 0x01a3, // BLAINE + 0x019a, // LORELEI + 0x019b, // BRUNO + 0x019c, // AGATHA + 0x019d, // LANCE + FC_NONTRAINER_START + 2, // BILL + FC_NONTRAINER_START + 3, // MRFUJI + 0x015c // GIOVANNI }; -static const u8 *const gUnknown_845F60C[] = { - gUnknown_841E5E9, - gUnknown_841E5ED, - gUnknown_841E5F3, - gUnknown_841E5F8 +static const u8 *const sNonTrainerNamePointers[] = { + gFameCheckerOakName, + gFameCheckerDaisyName, + gFameCheckerBillName, + gFameCheckerMrFujiName }; -static const u8 gUnknown_845F61C[] = { +static const u8 sFameCheckerTrainerPicIdxs[] = { 0x56, 0x54, 0x74, 0x75, 0x76, 0x77, 0x78, 0x7a, 0x79, 0x70, 0x71, 0x72, 0x73, 0x64, 0x7b, 0x6c, - 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 + 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 // these values are unused }; -static const u8 *const gUnknown_845F63C[] = { - gUnknown_81B0188, - gUnknown_81B0251, - gUnknown_81B030F, - gUnknown_81B03B3, - gUnknown_81B0446, - gUnknown_81B0504, - gUnknown_81B05C2, - gUnknown_81B0667, - gUnknown_81B06FB, - gUnknown_81B079F, - gUnknown_81B0845, - gUnknown_81B08EE, - gUnknown_81B097F, - gUnknown_81B0A45, - gUnknown_81B0AFF, - gUnknown_81B0BA6, - gUnknown_81B0198, - gUnknown_81B025D, - gUnknown_81B031B, - gUnknown_81B03BF, - gUnknown_81B0456, - gUnknown_81B0510, - gUnknown_81B05CD, - gUnknown_81B0675, - gUnknown_81B0708, - gUnknown_81B07AD, - gUnknown_81B0851, - gUnknown_81B08FB, - gUnknown_81B098B, - gUnknown_81B0A50, - gUnknown_81B0B0E, - gUnknown_81B0BB5 +static const u8 *const sFameCheckerNameAndQuotesPointers[] = { + gFameCheckerPersonName_ProfOak, gFameCheckerPersonName_Daisy, gFameCheckerPersonName_Brock, gFameCheckerPersonName_Misty, gFameCheckerPersonName_LtSurge, gFameCheckerPersonName_Erika, gFameCheckerPersonName_Koga, gFameCheckerPersonName_Sabrina, gFameCheckerPersonName_Blaine, gFameCheckerPersonName_Lorelei, gFameCheckerPersonName_Bruno, gFameCheckerPersonName_Agatha, gFameCheckerPersonName_Lance, gFameCheckerPersonName_Bill, gFameCheckerPersonName_MrFuji, gFameCheckerPersonName_Giovanni, + gFameCheckerPersonQuote_ProfOak, gFameCheckerPersonQuote_Daisy, gFameCheckerPersonQuote_Brock, gFameCheckerPersonQuote_Misty, gFameCheckerPersonQuote_LtSurge, gFameCheckerPersonQuote_Erika, gFameCheckerPersonQuote_Koga, gFameCheckerPersonQuote_Sabrina, gFameCheckerPersonQuote_Blaine, gFameCheckerPersonQuote_Lorelei, gFameCheckerPersonQuote_Bruno, gFameCheckerPersonQuote_Agatha, gFameCheckerPersonQuote_Lance, gFameCheckerPersonQuote_Bill, gFameCheckerPersonQuote_MrFuji, gFameCheckerPersonQuote_Giovanni }; -static const u8 *const gUnknown_845F6BC[] = { - gUnknown_81AD106, gUnknown_81AD145, gUnknown_81AD1BB, gUnknown_81AD258, gUnknown_81AD2B9, gUnknown_81AD377, - gUnknown_81AD40C, gUnknown_81AD4AE, gUnknown_81AD516, gUnknown_81AD5A7, gUnknown_81AD608, gUnknown_81AD69F, - gUnknown_81AD705, gUnknown_81AD771, gUnknown_81AD840, gUnknown_81AD908, gUnknown_81AD99A, gUnknown_81ADA27, - gUnknown_81ADA91, gUnknown_81ADAF6, gUnknown_81ADB5A, gUnknown_81ADBD9, gUnknown_81ADC72, gUnknown_81ADCEB, - gUnknown_81ADD3C, gUnknown_81ADDA7, gUnknown_81ADE0B, gUnknown_81ADE82, gUnknown_81ADEEC, gUnknown_81ADF6A, - gUnknown_81AE009, gUnknown_81AE072, gUnknown_81AE0F3, gUnknown_81AE15B, gUnknown_81AE1E5, gUnknown_81AE247, - gUnknown_81AE2B6, gUnknown_81AE31D, gUnknown_81AE37D, gUnknown_81AE407, gUnknown_81AE48D, gUnknown_81AE51B, - gUnknown_81AE5E8, gUnknown_81AE656, gUnknown_81AE6D7, gUnknown_81AE762, gUnknown_81AE7CB, gUnknown_81AE841, - gUnknown_81AE89E, gUnknown_81AE90A, gUnknown_81AE990, gUnknown_81AEA59, gUnknown_81AEAEE, gUnknown_81AEB69, - gUnknown_81AEBDF, gUnknown_81AEC28, gUnknown_81AEC82, gUnknown_81AED27, gUnknown_81AEDAA, gUnknown_81AEE51, - gUnknown_81AEF25, gUnknown_81AEF6C, gUnknown_81AEFC6, gUnknown_81AF04C, gUnknown_81AF0F0, gUnknown_81AF19A, - gUnknown_81AF200, gUnknown_81AF248, gUnknown_81AF2B7, gUnknown_81AF34E, gUnknown_81AF3BE, gUnknown_81AF47C, - gUnknown_81AF4FD, gUnknown_81AF567, gUnknown_81AF641, gUnknown_81AF6BA, gUnknown_81AF758, gUnknown_81AF7CB, - gUnknown_81AF83E, gUnknown_81AF8CA, gUnknown_81AF929, gUnknown_81AF998, gUnknown_81AFA20, gUnknown_81AFAB9, - gUnknown_81AFB0C, gUnknown_81AFB76, gUnknown_81AFC38, gUnknown_81AFCE9, gUnknown_81AFD49, gUnknown_81AFDC4, - gUnknown_81AFE68, gUnknown_81AFF23, gUnknown_81AFFA8, gUnknown_81B0022, gUnknown_81B00A6, gUnknown_81B0106 +static const u8 *const sFameCheckerFlavorTextPointers[] = { + gFameCheckerFlavorText_ProfOak0, gFameCheckerFlavorText_ProfOak1, gFameCheckerFlavorText_ProfOak2, gFameCheckerFlavorText_ProfOak3, gFameCheckerFlavorText_ProfOak4, gFameCheckerFlavorText_ProfOak5, + gFameCheckerFlavorText_Daisy0, gFameCheckerFlavorText_Daisy1, gFameCheckerFlavorText_Daisy2, gFameCheckerFlavorText_Daisy3, gFameCheckerFlavorText_Daisy4, gFameCheckerFlavorText_Daisy5, + gFameCheckerFlavorText_Brock0, gFameCheckerFlavorText_Brock1, gFameCheckerFlavorText_Brock2, gFameCheckerFlavorText_Brock3, gFameCheckerFlavorText_Brock4, gFameCheckerFlavorText_Brock5, + gFameCheckerFlavorText_Misty0, gFameCheckerFlavorText_Misty1, gFameCheckerFlavorText_Misty2, gFameCheckerFlavorText_Misty3, gFameCheckerFlavorText_Misty4, gFameCheckerFlavorText_Misty5, + gFameCheckerFlavorText_LtSurge0, gFameCheckerFlavorText_LtSurge1, gFameCheckerFlavorText_LtSurge2, gFameCheckerFlavorText_LtSurge3, gFameCheckerFlavorText_LtSurge4, gFameCheckerFlavorText_LtSurge5, + gFameCheckerFlavorText_Erika0, gFameCheckerFlavorText_Erika1, gFameCheckerFlavorText_Erika2, gFameCheckerFlavorText_Erika3, gFameCheckerFlavorText_Erika4, gFameCheckerFlavorText_Erika5, + gFameCheckerFlavorText_Koga0, gFameCheckerFlavorText_Koga1, gFameCheckerFlavorText_Koga2, gFameCheckerFlavorText_Koga3, gFameCheckerFlavorText_Koga4, gFameCheckerFlavorText_Koga5, + gFameCheckerFlavorText_Sabrina0, gFameCheckerFlavorText_Sabrina1, gFameCheckerFlavorText_Sabrina2, gFameCheckerFlavorText_Sabrina3, gFameCheckerFlavorText_Sabrina4, gFameCheckerFlavorText_Sabrina5, + gFameCheckerFlavorText_Blaine0, gFameCheckerFlavorText_Blaine1, gFameCheckerFlavorText_Blaine2, gFameCheckerFlavorText_Blaine3, gFameCheckerFlavorText_Blaine4, gFameCheckerFlavorText_Blaine5, + gFameCheckerFlavorText_Lorelei0, gFameCheckerFlavorText_Lorelei1, gFameCheckerFlavorText_Lorelei2, gFameCheckerFlavorText_Lorelei3, gFameCheckerFlavorText_Lorelei4, gFameCheckerFlavorText_Lorelei5, + gFameCheckerFlavorText_Bruno0, gFameCheckerFlavorText_Bruno1, gFameCheckerFlavorText_Bruno2, gFameCheckerFlavorText_Bruno3, gFameCheckerFlavorText_Bruno4, gFameCheckerFlavorText_Bruno5, + gFameCheckerFlavorText_Agatha0, gFameCheckerFlavorText_Agatha1, gFameCheckerFlavorText_Agatha2, gFameCheckerFlavorText_Agatha3, gFameCheckerFlavorText_Agatha4, gFameCheckerFlavorText_Agatha5, + gFameCheckerFlavorText_Lance0, gFameCheckerFlavorText_Lance1, gFameCheckerFlavorText_Lance2, gFameCheckerFlavorText_Lance3, gFameCheckerFlavorText_Lance4, gFameCheckerFlavorText_Lance5, + gFameCheckerFlavorText_Bill0, gFameCheckerFlavorText_Bill1, gFameCheckerFlavorText_Bill2, gFameCheckerFlavorText_Bill3, gFameCheckerFlavorText_Bill4, gFameCheckerFlavorText_Bill5, + gFameCheckerFlavorText_MrFuji0, gFameCheckerFlavorText_MrFuji1, gFameCheckerFlavorText_MrFuji2, gFameCheckerFlavorText_MrFuji3, gFameCheckerFlavorText_MrFuji4, gFameCheckerFlavorText_MrFuji5, + gFameCheckerFlavorText_Giovanni0, gFameCheckerFlavorText_Giovanni1, gFameCheckerFlavorText_Giovanni2, gFameCheckerFlavorText_Giovanni3, gFameCheckerFlavorText_Giovanni4, gFameCheckerFlavorText_Giovanni5 }; static const u8 sFameCheckerArrayNpcGraphicsIds[] = { @@ -259,62 +230,62 @@ static const u8 sFameCheckerArrayNpcGraphicsIds[] = { 0x57, 0x37, 0x37, 0x57, 0x5b, 0x37 }; -static const u8 *const gUnknown_845F89C[] = { - gUnknown_81B0C45, gUnknown_81B0C51, gUnknown_81B0C5E, gUnknown_81B0C6B, gUnknown_81B0C79, gUnknown_81B0C88, - gUnknown_81B0C95, gUnknown_81B0CA2, gUnknown_81B0CB1, gUnknown_81B0CC1, gUnknown_81B0CCF, gUnknown_81B0CDF, - gUnknown_81B0CEB, gUnknown_81B0CF7, gUnknown_81B0D02, gUnknown_81B0D0E, gUnknown_81B0D16, gUnknown_81B0D1F, - gUnknown_81B0D2D, gUnknown_81B0D3B, gUnknown_81B0D48, gUnknown_81B0D55, gUnknown_81B0D65, gUnknown_81B0D73, - gUnknown_81B0D81, gUnknown_81B0D90, gUnknown_81B0D9E, gUnknown_81B0DAC, gUnknown_81B0DBA, gUnknown_81B0DC8, - gUnknown_81B0DD7, gUnknown_81B0DE4, gUnknown_81B0DF0, gUnknown_81B0DFC, gUnknown_81B0E08, gUnknown_81B0E14, - gUnknown_81B0E24, gUnknown_81B0E31, gUnknown_81B0E3D, gUnknown_81B0E49, gUnknown_81B0E56, gUnknown_81B0E63, - gUnknown_81B0E6F, gUnknown_81B0E7C, gUnknown_81B0E89, gUnknown_81B0E95, gUnknown_81B0EA1, gUnknown_81B0EAE, - gUnknown_81B0EBA, gUnknown_81B0ECA, gUnknown_81B0ED7, gUnknown_81B0EE4, gUnknown_81B0EF4, gUnknown_81B0F01, - gUnknown_81B0F11, gUnknown_81B0F20, gUnknown_81B0F2F, gUnknown_81B0F3B, gUnknown_81B0F47, gUnknown_81B0F53, - gUnknown_81B0F5F, gUnknown_81B0F6E, gUnknown_81B0F7D, gUnknown_81B0F8A, gUnknown_81B0F94, gUnknown_81B0F9F, - gUnknown_81B0FAE, gUnknown_81B0FBD, gUnknown_81B0FCC, gUnknown_81B0FDB, gUnknown_81B0FE8, gUnknown_81B0FF7, - gUnknown_81B1002, gUnknown_81B1011, gUnknown_81B1020, gUnknown_81B102D, gUnknown_81B103B, gUnknown_81B104A, - gUnknown_81B1059, gUnknown_81B1067, gUnknown_81B1075, gUnknown_81B1082, gUnknown_81B108D, gUnknown_81B1098, - gUnknown_81B10A3, gUnknown_81B10B1, gUnknown_81B10BF, gUnknown_81B10CD, gUnknown_81B10DB, gUnknown_81B10E8, - gUnknown_81B10F8, gUnknown_81B1107, gUnknown_81B1111, gUnknown_81B111B, gUnknown_81B1128, gUnknown_81B1135 +static const u8 *const sFlavorTextOriginLocationTexts[] = { + gFameCheckerFlavorTextOriginLocation_ProfOak0, gFameCheckerFlavorTextOriginLocation_ProfOak1, gFameCheckerFlavorTextOriginLocation_ProfOak2, gFameCheckerFlavorTextOriginLocation_ProfOak3, gFameCheckerFlavorTextOriginLocation_ProfOak4, gFameCheckerFlavorTextOriginLocation_ProfOak5, + gFameCheckerFlavorTextOriginLocation_Daisy0, gFameCheckerFlavorTextOriginLocation_Daisy1, gFameCheckerFlavorTextOriginLocation_Daisy2, gFameCheckerFlavorTextOriginLocation_Daisy3, gFameCheckerFlavorTextOriginLocation_Daisy4, gFameCheckerFlavorTextOriginLocation_Daisy5, + gFameCheckerFlavorTextOriginLocation_Brock0, gFameCheckerFlavorTextOriginLocation_Brock1, gFameCheckerFlavorTextOriginLocation_Brock2, gFameCheckerFlavorTextOriginLocation_Brock3, gFameCheckerFlavorTextOriginLocation_Brock4, gFameCheckerFlavorTextOriginLocation_Brock5, + gFameCheckerFlavorTextOriginLocation_Misty0, gFameCheckerFlavorTextOriginLocation_Misty1, gFameCheckerFlavorTextOriginLocation_Misty2, gFameCheckerFlavorTextOriginLocation_Misty3, gFameCheckerFlavorTextOriginLocation_Misty4, gFameCheckerFlavorTextOriginLocation_Misty5, + gFameCheckerFlavorTextOriginLocation_LtSurge0, gFameCheckerFlavorTextOriginLocation_LtSurge1, gFameCheckerFlavorTextOriginLocation_LtSurge2, gFameCheckerFlavorTextOriginLocation_LtSurge3, gFameCheckerFlavorTextOriginLocation_LtSurge4, gFameCheckerFlavorTextOriginLocation_LtSurge5, + gFameCheckerFlavorTextOriginLocation_Erika0, gFameCheckerFlavorTextOriginLocation_Erika1, gFameCheckerFlavorTextOriginLocation_Erika2, gFameCheckerFlavorTextOriginLocation_Erika3, gFameCheckerFlavorTextOriginLocation_Erika4, gFameCheckerFlavorTextOriginLocation_Erika5, + gFameCheckerFlavorTextOriginLocation_Koga0, gFameCheckerFlavorTextOriginLocation_Koga1, gFameCheckerFlavorTextOriginLocation_Koga2, gFameCheckerFlavorTextOriginLocation_Koga3, gFameCheckerFlavorTextOriginLocation_Koga4, gFameCheckerFlavorTextOriginLocation_Koga5, + gFameCheckerFlavorTextOriginLocation_Sabrina0, gFameCheckerFlavorTextOriginLocation_Sabrina1, gFameCheckerFlavorTextOriginLocation_Sabrina2, gFameCheckerFlavorTextOriginLocation_Sabrina3, gFameCheckerFlavorTextOriginLocation_Sabrina4, gFameCheckerFlavorTextOriginLocation_Sabrina5, + gFameCheckerFlavorTextOriginLocation_Blaine0, gFameCheckerFlavorTextOriginLocation_Blaine1, gFameCheckerFlavorTextOriginLocation_Blaine2, gFameCheckerFlavorTextOriginLocation_Blaine3, gFameCheckerFlavorTextOriginLocation_Blaine4, gFameCheckerFlavorTextOriginLocation_Blaine5, + gFameCheckerFlavorTextOriginLocation_Lorelei0, gFameCheckerFlavorTextOriginLocation_Lorelei1, gFameCheckerFlavorTextOriginLocation_Lorelei2, gFameCheckerFlavorTextOriginLocation_Lorelei3, gFameCheckerFlavorTextOriginLocation_Lorelei4, gFameCheckerFlavorTextOriginLocation_Lorelei5, + gFameCheckerFlavorTextOriginLocation_Bruno0, gFameCheckerFlavorTextOriginLocation_Bruno1, gFameCheckerFlavorTextOriginLocation_Bruno2, gFameCheckerFlavorTextOriginLocation_Bruno3, gFameCheckerFlavorTextOriginLocation_Bruno4, gFameCheckerFlavorTextOriginLocation_Bruno5, + gFameCheckerFlavorTextOriginLocation_Agatha0, gFameCheckerFlavorTextOriginLocation_Agatha1, gFameCheckerFlavorTextOriginLocation_Agatha2, gFameCheckerFlavorTextOriginLocation_Agatha3, gFameCheckerFlavorTextOriginLocation_Agatha4, gFameCheckerFlavorTextOriginLocation_Agatha5, + gFameCheckerFlavorTextOriginLocation_Lance0, gFameCheckerFlavorTextOriginLocation_Lance1, gFameCheckerFlavorTextOriginLocation_Lance2, gFameCheckerFlavorTextOriginLocation_Lance3, gFameCheckerFlavorTextOriginLocation_Lance4, gFameCheckerFlavorTextOriginLocation_Lance5, + gFameCheckerFlavorTextOriginLocation_Bill0, gFameCheckerFlavorTextOriginLocation_Bill1, gFameCheckerFlavorTextOriginLocation_Bill2, gFameCheckerFlavorTextOriginLocation_Bill3, gFameCheckerFlavorTextOriginLocation_Bill4, gFameCheckerFlavorTextOriginLocation_Bill5, + gFameCheckerFlavorTextOriginLocation_MrFuji0, gFameCheckerFlavorTextOriginLocation_MrFuji1, gFameCheckerFlavorTextOriginLocation_MrFuji2, gFameCheckerFlavorTextOriginLocation_MrFuji3, gFameCheckerFlavorTextOriginLocation_MrFuji4, gFameCheckerFlavorTextOriginLocation_MrFuji5, + gFameCheckerFlavorTextOriginLocation_Giovanni0, gFameCheckerFlavorTextOriginLocation_Giovanni1, gFameCheckerFlavorTextOriginLocation_Giovanni2, gFameCheckerFlavorTextOriginLocation_Giovanni3, gFameCheckerFlavorTextOriginLocation_Giovanni4, gFameCheckerFlavorTextOriginLocation_Giovanni5 }; -static const u8 *const gUnknown_845FA1C[] = { - gUnknown_81B1146, gUnknown_81B114B, gUnknown_81B1155, gUnknown_81B115A, gUnknown_81B116A, gUnknown_81B1171, - gUnknown_81B1176, gUnknown_81B117B, gUnknown_81B1181, gUnknown_81B1185, gUnknown_81B1195, gUnknown_81B119E, - gUnknown_81B11AE, gUnknown_81B11B3, gUnknown_81B11B9, gUnknown_81B11C3, gUnknown_81B11C7, gUnknown_81B11CB, - gUnknown_81B11DB, gUnknown_81B11E0, gUnknown_81B11E6, gUnknown_81B11EB, gUnknown_81B11F5, gUnknown_81B11FA, - gUnknown_81B120A, gUnknown_81B120F, gUnknown_81B1219, gUnknown_81B1220, gUnknown_81B1227, gUnknown_81B122E, - gUnknown_81B123E, gUnknown_81B1243, gUnknown_81B1249, gUnknown_81B124E, gUnknown_81B1254, gUnknown_81B125A, - gUnknown_81B126A, gUnknown_81B126F, gUnknown_81B1274, gUnknown_81B1279, gUnknown_81B1281, gUnknown_81B1291, - gUnknown_81B1295, gUnknown_81B129A, gUnknown_81B12A4, gUnknown_81B12AC, gUnknown_81B12B4, gUnknown_81B12C4, - gUnknown_81B12CA, gUnknown_81B12CF, gUnknown_81B12D6, gUnknown_81B12DC, gUnknown_81B12E2, gUnknown_81B12E8, - gUnknown_81B12F8, gUnknown_81B1300, gUnknown_81B1308, gUnknown_81B1310, gUnknown_81B1320, gUnknown_81B132C, - gUnknown_81B1335, gUnknown_81B133B, gUnknown_81B1341, gUnknown_81B1351, gUnknown_81B1359, gUnknown_81B135F, - gUnknown_81B1367, gUnknown_81B136E, gUnknown_81B1376, gUnknown_81B137E, gUnknown_81B138E, gUnknown_81B1395, - gUnknown_81B139E, gUnknown_81B13A4, gUnknown_81B13AA, gUnknown_81B13B0, gUnknown_81B13BC, gUnknown_81B13CC, - gUnknown_81B13D6, gUnknown_81B13D9, gUnknown_81B13E4, gUnknown_81B13EC, gUnknown_81B13F2, gUnknown_81B13F8, - gUnknown_81B13FE, gUnknown_81B140A, gUnknown_81B1416, gUnknown_81B141F, gUnknown_81B1423, gUnknown_81B1429, - gUnknown_81B1439, gUnknown_81B1442, gUnknown_81B144C, gUnknown_81B1456, gUnknown_81B145F, gUnknown_81B1463 +static const u8 *const sFlavorTextOriginObjectNameTexts[] = { + gFameCheckerFlavorTextOriginObjectName_ProfOak0, gFameCheckerFlavorTextOriginObjectName_ProfOak1, gFameCheckerFlavorTextOriginObjectName_ProfOak2, gFameCheckerFlavorTextOriginObjectName_ProfOak3, gFameCheckerFlavorTextOriginObjectName_ProfOak4, gFameCheckerFlavorTextOriginObjectName_ProfOak5, + gFameCheckerFlavorTextOriginObjectName_Daisy0, gFameCheckerFlavorTextOriginObjectName_Daisy1, gFameCheckerFlavorTextOriginObjectName_Daisy2, gFameCheckerFlavorTextOriginObjectName_Daisy3, gFameCheckerFlavorTextOriginObjectName_Daisy4, gFameCheckerFlavorTextOriginObjectName_Daisy5, + gFameCheckerFlavorTextOriginObjectName_Brock0, gFameCheckerFlavorTextOriginObjectName_Brock1, gFameCheckerFlavorTextOriginObjectName_Brock2, gFameCheckerFlavorTextOriginObjectName_Brock3, gFameCheckerFlavorTextOriginObjectName_Brock4, gFameCheckerFlavorTextOriginObjectName_Brock5, + gFameCheckerFlavorTextOriginObjectName_Misty0, gFameCheckerFlavorTextOriginObjectName_Misty1, gFameCheckerFlavorTextOriginObjectName_Misty2, gFameCheckerFlavorTextOriginObjectName_Misty3, gFameCheckerFlavorTextOriginObjectName_Misty4, gFameCheckerFlavorTextOriginObjectName_Misty5, + gFameCheckerFlavorTextOriginObjectName_LtSurge0, gFameCheckerFlavorTextOriginObjectName_LtSurge1, gFameCheckerFlavorTextOriginObjectName_LtSurge2, gFameCheckerFlavorTextOriginObjectName_LtSurge3, gFameCheckerFlavorTextOriginObjectName_LtSurge4, gFameCheckerFlavorTextOriginObjectName_LtSurge5, + gFameCheckerFlavorTextOriginObjectName_Erika0, gFameCheckerFlavorTextOriginObjectName_Erika1, gFameCheckerFlavorTextOriginObjectName_Erika2, gFameCheckerFlavorTextOriginObjectName_Erika3, gFameCheckerFlavorTextOriginObjectName_Erika4, gFameCheckerFlavorTextOriginObjectName_Erika5, + gFameCheckerFlavorTextOriginObjectName_Koga0, gFameCheckerFlavorTextOriginObjectName_Koga1, gFameCheckerFlavorTextOriginObjectName_Koga2, gFameCheckerFlavorTextOriginObjectName_Koga3, gFameCheckerFlavorTextOriginObjectName_Koga4, gFameCheckerFlavorTextOriginObjectName_Koga5, + gFameCheckerFlavorTextOriginObjectName_Sabrina0, gFameCheckerFlavorTextOriginObjectName_Sabrina1, gFameCheckerFlavorTextOriginObjectName_Sabrina2, gFameCheckerFlavorTextOriginObjectName_Sabrina3, gFameCheckerFlavorTextOriginObjectName_Sabrina4, gFameCheckerFlavorTextOriginObjectName_Sabrina5, + gFameCheckerFlavorTextOriginObjectName_Blaine0, gFameCheckerFlavorTextOriginObjectName_Blaine1, gFameCheckerFlavorTextOriginObjectName_Blaine2, gFameCheckerFlavorTextOriginObjectName_Blaine3, gFameCheckerFlavorTextOriginObjectName_Blaine4, gFameCheckerFlavorTextOriginObjectName_Blaine5, + gFameCheckerFlavorTextOriginObjectName_Lorelei0, gFameCheckerFlavorTextOriginObjectName_Lorelei1, gFameCheckerFlavorTextOriginObjectName_Lorelei2, gFameCheckerFlavorTextOriginObjectName_Lorelei3, gFameCheckerFlavorTextOriginObjectName_Lorelei4, gFameCheckerFlavorTextOriginObjectName_Lorelei5, + gFameCheckerFlavorTextOriginObjectName_Bruno0, gFameCheckerFlavorTextOriginObjectName_Bruno1, gFameCheckerFlavorTextOriginObjectName_Bruno2, gFameCheckerFlavorTextOriginObjectName_Bruno3, gFameCheckerFlavorTextOriginObjectName_Bruno4, gFameCheckerFlavorTextOriginObjectName_Bruno5, + gFameCheckerFlavorTextOriginObjectName_Agatha0, gFameCheckerFlavorTextOriginObjectName_Agatha1, gFameCheckerFlavorTextOriginObjectName_Agatha2, gFameCheckerFlavorTextOriginObjectName_Agatha3, gFameCheckerFlavorTextOriginObjectName_Agatha4, gFameCheckerFlavorTextOriginObjectName_Agatha5, + gFameCheckerFlavorTextOriginObjectName_Lance0, gFameCheckerFlavorTextOriginObjectName_Lance1, gFameCheckerFlavorTextOriginObjectName_Lance2, gFameCheckerFlavorTextOriginObjectName_Lance3, gFameCheckerFlavorTextOriginObjectName_Lance4, gFameCheckerFlavorTextOriginObjectName_Lance5, + gFameCheckerFlavorTextOriginObjectName_Bill0, gFameCheckerFlavorTextOriginObjectName_Bill1, gFameCheckerFlavorTextOriginObjectName_Bill2, gFameCheckerFlavorTextOriginObjectName_Bill3, gFameCheckerFlavorTextOriginObjectName_Bill4, gFameCheckerFlavorTextOriginObjectName_Bill5, + gFameCheckerFlavorTextOriginObjectName_MrFuji0, gFameCheckerFlavorTextOriginObjectName_MrFuji1, gFameCheckerFlavorTextOriginObjectName_MrFuji2, gFameCheckerFlavorTextOriginObjectName_MrFuji3, gFameCheckerFlavorTextOriginObjectName_MrFuji4, gFameCheckerFlavorTextOriginObjectName_MrFuji5, + gFameCheckerFlavorTextOriginObjectName_Giovanni0, gFameCheckerFlavorTextOriginObjectName_Giovanni1, gFameCheckerFlavorTextOriginObjectName_Giovanni2, gFameCheckerFlavorTextOriginObjectName_Giovanni3, gFameCheckerFlavorTextOriginObjectName_Giovanni4, gFameCheckerFlavorTextOriginObjectName_Giovanni5 }; -static const struct SpriteSheet gUnknown_845FB9C[] = { - {sSelectorCursorSpriteGfx, 0x400, SPRITETAG_1000}, - {sQuestionMarkSpriteGfx, 0x100, SPRITETAG_1001}, - {sSpinningPokeballSpriteGfx, 0x1e0, SPRITETAG_1002}, - {sDaisySpriteGfx, 0x800, SPRITETAG_1006}, - {sFujiSpriteGfx, 0x800, SPRITETAG_1007}, - {sOakSpriteGfx, 0x800, SPRITETAG_1008}, - {sBillSpriteGfx, 0x800, SPRITETAG_1009}, +static const struct SpriteSheet sUISpriteSheets[] = { + {sSelectorCursorSpriteGfx, 0x400, SPRITETAG_SELECTOR_CURSOR}, + {sQuestionMarkSpriteGfx, 0x100, SPRITETAG_QUESTION_MARK}, + {sSpinningPokeballSpriteGfx, 0x1e0, SPRITETAG_SPINNING_POKEBALL}, + {sDaisySpriteGfx, 0x800, SPRITETAG_DAISY}, + {sFujiSpriteGfx, 0x800, SPRITETAG_FUJI}, + {sOakSpriteGfx, 0x800, SPRITETAG_OAK}, + {sBillSpriteGfx, 0x800, SPRITETAG_BILL}, {} }; -static const struct SpritePalette gUnknown_845FBDC[] = { - {sSelectorCursorSpritePalette, SPRITETAG_1000}, - {sSpinningPokeballSpritePalette, SPRITETAG_1002}, +static const struct SpritePalette sUISpritePalettes[] = { + {sSelectorCursorSpritePalette, SPRITETAG_SELECTOR_CURSOR}, + {sSpinningPokeballSpritePalette, SPRITETAG_SPINNING_POKEBALL}, {} }; -static const struct BgTemplate gUnknown_845FBF4[4] = { +static const struct BgTemplate sUIBgTemplates[4] = { { .bg = 3, .charBaseIndex = 0x03, @@ -349,118 +320,118 @@ static const struct BgTemplate gUnknown_845FBF4[4] = { .baseTile = 0x000}, }; -static const struct WindowTemplate gUnknown_845FC04[] = { - {0x00, 0x01, 0x03, 0x08, 0x0a, 0x0f, 0x0014}, - {0x00, 0x06, 0x00, 0x18, 0x02, 0x0f, 0x0064}, - {0x00, 0x02, 0x0f, 0x1a, 0x04, 0x0f, 0x0094}, - {0x00, 0x0f, 0x0a, 0x0b, 0x04, 0x0f, 0x00fc}, +static const struct WindowTemplate sUIWindowTemplates[] = { + {0, 1, 3, 8, 10, 15, 0x014}, // List Menu + {0, 6, 0, 24, 2, 15, 0x064}, // UI across the top + {0, 2, 15, 26, 4, 15, 0x094}, // Textbox on the bottom + {0, 15, 10, 11, 4, 15, 0x0FC}, // Icon description DUMMY_WIN_TEMPLATE }; -static const union AnimCmd gUnknown_845FC2C[] = { +static const union AnimCmd sSelectorCursorAnim0[] = { ANIMCMD_FRAME( 0, 15), ANIMCMD_FRAME(16, 15), ANIMCMD_JUMP(0) }; -static const union AnimCmd *const gUnknown_845FC38[] = { - gUnknown_845FC2C +static const union AnimCmd *const sSelectorCursorAnims[] = { + sSelectorCursorAnim0 }; -static const struct OamData gOamData_845FC3C = { +static const struct OamData sSelectorCursorOamData = { .size = 2, .priority = 2 }; -static const struct SpriteTemplate gUnknown_845FC44 = { - SPRITETAG_1000, SPRITETAG_1000, &gOamData_845FC3C, gUnknown_845FC38, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy +static const struct SpriteTemplate sSpriteTemplate_SelectorCursor = { + SPRITETAG_SELECTOR_CURSOR, SPRITETAG_SELECTOR_CURSOR, &sSelectorCursorOamData, sSelectorCursorAnims, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -static const u8 filler_845FC5C[8] = {}; +static const u8 filler_845FC5C[8] = {}; // ??? -static const struct OamData gOamData_845FC64 = { +static const struct OamData sQuestionMarkTileOamData = { .shape = ST_OAM_V_RECTANGLE, .size = 2, .priority = 2 }; -static const union AnimCmd gUnknown_845FC6C[] = { +static const union AnimCmd sQuestionMarkTileAnim0[] = { ANIMCMD_FRAME( 0, 10), ANIMCMD_END }; -static const union AnimCmd *const gUnknown_845FC74[] = { - gUnknown_845FC6C +static const union AnimCmd *const sQuestionMarkTileAnims[] = { + sQuestionMarkTileAnim0 }; -static const struct SpriteTemplate gUnknown_845FC78 = { - SPRITETAG_1001, 0xffff, &gOamData_845FC64, gUnknown_845FC74, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy +static const struct SpriteTemplate sQuestionMarkTileSpriteTemplate = { + SPRITETAG_QUESTION_MARK, 0xffff, &sQuestionMarkTileOamData, sQuestionMarkTileAnims, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -static const union AnimCmd gUnknown_845FC90[] = { +static const union AnimCmd sSpinningPokeballAnim0[] = { ANIMCMD_FRAME( 0, 10), ANIMCMD_END }; -static const union AnimCmd *const gUnknown_845FC98[] = { - gUnknown_845FC90 +static const union AnimCmd *const sSpinningPokeballAnims[] = { + sSpinningPokeballAnim0 }; -static const struct OamData gOamData_845FC9C = { +static const struct OamData sSpinningPokeballOamData = { .affineMode = ST_OAM_AFFINE_NORMAL, .size = 2 }; -static const union AffineAnimCmd gUnknown_845FCA4[] = { +static const union AffineAnimCmd sSpinningPokeballAffineAnim0[] = { AFFINEANIMCMD_FRAME(0, 0, 4, 20), AFFINEANIMCMD_JUMP(0) }; -static const union AffineAnimCmd *const gUnknown_845FCB4[] = { - gUnknown_845FCA4 +static const union AffineAnimCmd *const sSpinningPokeballAffineAnims[] = { + sSpinningPokeballAffineAnim0 }; static const struct SpriteTemplate sSpinningPokeballSpriteTemplate = { - SPRITETAG_1002, SPRITETAG_1002, &gOamData_845FC9C, gUnknown_845FC98, NULL, gUnknown_845FCB4, sub_812D840 + SPRITETAG_SPINNING_POKEBALL, SPRITETAG_SPINNING_POKEBALL, &sSpinningPokeballOamData, sSpinningPokeballAnims, NULL, sSpinningPokeballAffineAnims, SpriteCB_FCSpinningPokeball }; -static const union AnimCmd gUnknown_845FCD0[] = { +static const union AnimCmd sDaisyFujiOakBillAnim0[] = { ANIMCMD_FRAME( 0, 15), ANIMCMD_END }; -static const union AnimCmd *const gUnknown_845FCD8[] = { - gUnknown_845FCD0 +static const union AnimCmd *const sDaisyFujiOakBillAnims[] = { + sDaisyFujiOakBillAnim0 }; -static const struct OamData gOamData_845FCDC = { +static const struct OamData sDaisyFujiOakBillOamData = { .size = 3 }; static const struct SpriteTemplate sDaisySpriteTemplate = { - SPRITETAG_1006, 0xffff, &gOamData_845FCDC, gUnknown_845FCD8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + SPRITETAG_DAISY, 0xffff, &sDaisyFujiOakBillOamData, sDaisyFujiOakBillAnims, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; static const struct SpriteTemplate sFujiSpriteTemplate = { - SPRITETAG_1007, 0xffff, &gOamData_845FCDC, gUnknown_845FCD8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + SPRITETAG_FUJI, 0xffff, &sDaisyFujiOakBillOamData, sDaisyFujiOakBillAnims, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; static const struct SpriteTemplate sOakSpriteTemplate = { - SPRITETAG_1008, 0xffff, &gOamData_845FCDC, gUnknown_845FCD8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + SPRITETAG_OAK, 0xffff, &sDaisyFujiOakBillOamData, sDaisyFujiOakBillAnims, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; static const struct SpriteTemplate sBillSpriteTemplate = { - SPRITETAG_1009, 0xffff, &gOamData_845FCDC, gUnknown_845FCD8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + SPRITETAG_BILL, 0xffff, &sDaisyFujiOakBillOamData, sDaisyFujiOakBillAnims, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -static void sub_812C380(void) +static void FC_VBlankCallback(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -static void sub_812C394(void) +static void MainCB2_FameCheckerMain(void) { RunTasks(); AnimateSprites(); @@ -478,20 +449,20 @@ void UseFameChecker(MainCallback savedCallback) sFameCheckerData->listMenuDrawnSelIdx = 0; sFameCheckerData->unk_23_0 = FALSE; PlaySE(SE_W202); - SetMainCallback2(sub_812C3F8); + SetMainCallback2(MainCB2_LoadFameChecker); } -static void sub_812C3F8(void) +static void MainCB2_LoadFameChecker(void) { switch (gMain.state) { case 0: SetVBlankCallback(NULL); - sub_812D420(); + FCSetup_ClearVideoRegisters(); gMain.state++; break; case 1: - sub_812D558(); + FCSetup_ResetTasksAndSpriteResources(); gMain.state++; break; case 2: @@ -499,11 +470,11 @@ static void sub_812C3F8(void) sBg1TilemapBuffer = AllocZeroed(0x1000); sBg2TilemapBuffer = AllocZeroed(0x800); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(0, gUnknown_845FBF4, ARRAY_COUNT(gUnknown_845FBF4)); + InitBgsFromTemplates(0, sUIBgTemplates, ARRAY_COUNT(sUIBgTemplates)); SetBgTilemapBuffer(3, sBg3TilemapBuffer); SetBgTilemapBuffer(2, sBg2TilemapBuffer); SetBgTilemapBuffer(1, sBg1TilemapBuffer); - sub_812D594(); + FCSetup_ResetBGCoords(); gMain.state++; break; case 3: @@ -530,125 +501,125 @@ static void sub_812C3F8(void) } break; case 5: - InitWindows(gUnknown_845FC04); + InitWindows(sUIWindowTemplates); DeactivateAllTextPrinters(); - sub_812CEC0(); + Setup_DrawMsgAndListBoxes(); sListMenuItems = AllocZeroed(17 * sizeof(struct ListMenuItem)); - sub_812DB28(); + FC_CreateListMenu(); gMain.state++; break; case 6: - sub_812C648(); - sub_812D1A8(0); - sub_812CE9C(); + LoadUISpriteSheetsAndPalettes(); + CreateAllFlavorTextIcons(0); + WipeMsgBoxAndTransfer(); BeginNormalPaletteFade(0xFFFFFFFF,0, 16, 0, 0); gMain.state++; break; case 7: - sub_812D584(); + FCSetup_TurnOnDisplay(); SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD); SetGpuReg(REG_OFFSET_BLDALPHA, 0x07); SetGpuReg(REG_OFFSET_BLDY, 0x08); - SetVBlankCallback(sub_812C380); + SetVBlankCallback(FC_VBlankCallback); sFameCheckerData->listMenuTopIdx = 0; - sub_812E000(); + FC_CreateScrollIndicatorArrowPair(); sub_812E178(1, 4); - CreateTask(sub_812C664, 0x08); - SetMainCallback2(sub_812C394); + CreateTask(Task_WaitFadeOnInit, 0x08); + SetMainCallback2(MainCB2_FameCheckerMain); gMain.state = 0; break; } } -static void sub_812C648(void) +static void LoadUISpriteSheetsAndPalettes(void) { - LoadSpriteSheets(gUnknown_845FB9C); - LoadSpritePalettes(gUnknown_845FBDC); + LoadSpriteSheets(sUISpriteSheets); + LoadSpritePalettes(sUISpritePalettes); } -static void sub_812C664(u8 taskId) +static void Task_WaitFadeOnInit(u8 taskId) { if (!gPaletteFade.active) - gTasks[taskId].func = sub_812C694; + gTasks[taskId].func = Task_TopMenuHandleInput; } -static void sub_812C694(u8 taskId) +static void Task_TopMenuHandleInput(u8 taskId) { - u16 r4; - u8 r4_2; + u16 cursorPos; + u8 i; struct Task *task = &gTasks[taskId]; s16 * data = gTasks[taskId].data; if (FindTaskIdByFunc(sub_812E110) == 0xFF) { RunTextPrinters(); if ((JOY_NEW(SELECT_BUTTON)) && !sFameCheckerData->inPickMode && sFameCheckerData->savedCallback != UseFameCheckerFromMenu) - task->func = sub_812CF3C; + task->func = Task_StartToCloseFameChecker; else if (JOY_NEW(START_BUTTON)) { - r4 = FameCheckerGetCursorY(); - if (sub_812C8F8(taskId) == TRUE) + cursorPos = FameCheckerGetCursorY(); + if (TryExitPickMode(taskId) == TRUE) { PlaySE(SE_W100); } - else if (r4 != sFameCheckerData->numUnlockedPersons - 1) + else if (cursorPos != sFameCheckerData->numUnlockedPersons - 1) // anything but CANCEL { PlaySE(SE_W100); - FillWindowPixelRect(3, 0x00, 0, 0, 88, 32); - sub_812CEE0(3); + FillWindowPixelRect(FCWINDOWID_ICONDESC, 0x00, 0, 0, 88, 32); + FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_ICONDESC); sub_812E178(2, 4); sub_812E178(1, 5); - sub_812D0F4(1); - task->data[2] = sub_812D888(sFameCheckerData->unlockedPersons[r4]); + PrintUIHelp(1); + task->data[2] = CreatePersonPicSprite(sFameCheckerData->unlockedPersons[cursorPos]); gSprites[task->data[2]].pos2.x = 0xF0; gSprites[task->data[2]].data[0] = 1; - task->data[3] = sub_812D7E4(); + task->data[3] = CreateSpinningPokeballSprite(); gSprites[task->data[3]].pos2.x = 0xF0; gSprites[task->data[3]].data[0] = 1; - task->func = sub_812C9BC; + task->func = Task_EnterPickMode; } } else if (JOY_NEW(A_BUTTON)) { - r4 = ListMenuHandleInput(0); - if (r4 == sFameCheckerData->numUnlockedPersons - 1) - task->func = sub_812CF3C; + cursorPos = ListMenuHandleInput(0); + if (cursorPos == sFameCheckerData->numUnlockedPersons - 1) // CANCEL + task->func = Task_StartToCloseFameChecker; else if (sFameCheckerData->inPickMode) { - if (!IsTextPrinterActive(2) && sub_812D6B4() == TRUE) - sub_812CD3C(); + if (!IsTextPrinterActive(2) && HasUnlockedAllFlavorTextsForCurrentPerson() == TRUE) + GetPickModeText(); } else if (sFameCheckerData->personHasUnlockedPanels) { PlaySE(SE_SELECT); - task->data[0] = sub_812D724(task->data[1]); - for (r4_2 = 0; r4_2 < 6; r4_2++) + task->data[0] = CreateFlavorTextIconSelectorCursorSprite(task->data[1]); + for (i = 0; i < 6; i++) { - if (r4_2 != task->data[1]) - sub_812CEFC(sFameCheckerData->spriteIds[r4_2], ST_OAM_OBJ_BLEND); + if (i != task->data[1]) + SetMessageSelectorIconObjMode(sFameCheckerData->spriteIds[i], ST_OAM_OBJ_BLEND); } gUnknown_3005EC8 = 0xFF; - sub_812E4A4(0); - sub_812D0F4(2); - if (gSprites[sFameCheckerData->spriteIds[task->data[1]]].data[1] != 0xFF) + PlaceListMenuCursor(FALSE); + PrintUIHelp(2); + if (gSprites[sFameCheckerData->spriteIds[task->data[1]]].data[1] != 0xFF) // not a ? tile { - sub_812CE04(taskId); - sub_812DA14(data[1]); + PrintSelectedNameInBrightGreen(taskId); + UpdateIconDescriptionBox(data[1]); } - sub_812E048(); - task->func = sub_812CAD8; + FreeListMenuSelectorArrowPairResources(); + task->func = Task_FlavorTextDisplayHandleInput; } } else if (JOY_NEW(B_BUTTON)) { - if (sub_812C8F8(taskId) != TRUE) - task->func = sub_812CF3C; + if (TryExitPickMode(taskId) != TRUE) + task->func = Task_StartToCloseFameChecker; } else ListMenuHandleInput(0); } } -static bool8 sub_812C8F8(u8 taskId) +static bool8 TryExitPickMode(u8 taskId) { struct Task *task = &gTasks[taskId]; if (sFameCheckerData->inPickMode) @@ -657,34 +628,34 @@ static bool8 sub_812C8F8(u8 taskId) gSprites[task->data[2]].pos2.x += 10; gSprites[task->data[3]].data[0] = 2; gSprites[task->data[3]].pos2.x += 10; - sub_812CE9C(); - task->func = sub_812CA1C; - sub_812C990(); + WipeMsgBoxAndTransfer(); + task->func = Task_ExitPickMode; + MessageBoxPrintEmptyText(); sFameCheckerData->unk_23_2 = FALSE; return TRUE; } return FALSE; } -static void sub_812C990(void) +static void MessageBoxPrintEmptyText(void) { - AddTextPrinterParametrized(2, 2, gUnknown_84181E4, 0, NULL, 2, 1, 3); + AddTextPrinterParametrized(2, 2, gFameCheckerText_ClearTextbox, 0, NULL, 2, 1, 3); } -static void sub_812C9BC(u8 taskId) +static void Task_EnterPickMode(u8 taskId) { struct Task *task = &gTasks[taskId]; if (gSprites[task->data[2]].data[0] == 0) { - sub_812CD3C(); + GetPickModeText(); sFameCheckerData->inPickMode = TRUE; - task->func = sub_812C694; + task->func = Task_TopMenuHandleInput; } else ChangeBgX(1, 0xA00, 1); } -static void sub_812CA1C(u8 taskId) +static void Task_ExitPickMode(u8 taskId) { struct Task *task = &gTasks[taskId]; if (GetBgX(1) != 0) @@ -694,17 +665,17 @@ static void sub_812CA1C(u8 taskId) if (gSprites[task->data[2]].data[0] == 0) { if (sFameCheckerData->personHasUnlockedPanels) - sub_812D0F4(0); + PrintUIHelp(0); sub_812E178(1, 4); sub_812E178(2, 2); sFameCheckerData->inPickMode = FALSE; - sub_812D9A8(taskId, FameCheckerGetCursorY()); - task->func = sub_812C694; - gSprites[task->data[3]].callback = sub_812D800; + DestroyPersonPicSprite(taskId, FameCheckerGetCursorY()); + task->func = Task_TopMenuHandleInput; + gSprites[task->data[3]].callback = SpriteCB_DestroySpinningPokeball; } } -static void sub_812CAD8(u8 taskId) +static void Task_FlavorTextDisplayHandleInput(u8 taskId) { struct Task *task = &gTasks[taskId]; s16 *data = gTasks[taskId].data; @@ -714,35 +685,35 @@ static void sub_812CAD8(u8 taskId) { u8 spriteId = sFameCheckerData->spriteIds[data[1]]; if (gSprites[spriteId].data[1] != 0xFF) - sub_812CE04(taskId); + PrintSelectedNameInBrightGreen(taskId); } if (JOY_NEW(B_BUTTON)) { - u8 r4; + u8 i; PlaySE(SE_SELECT); - for (r4 = 0; r4 < 6; r4++) - sub_812CEFC(sFameCheckerData->spriteIds[r4], ST_OAM_OBJ_NORMAL); - sub_812CE9C(); - gSprites[task->data[0]].callback = sub_812D764; + for (i = 0; i < 6; i++) + SetMessageSelectorIconObjMode(sFameCheckerData->spriteIds[i], ST_OAM_OBJ_NORMAL); + WipeMsgBoxAndTransfer(); + gSprites[task->data[0]].callback = SpriteCB_DestroyFlavorTextIconSelectorCursor; if (gUnknown_3005EC8 != 0xFF) sub_812DB10(); - sub_812E4A4(1); - sub_812D0F4(0); - sub_812E000(); - sub_812C990(); - task->func = sub_812C694; + PlaceListMenuCursor(TRUE); + PrintUIHelp(0); + FC_CreateScrollIndicatorArrowPair(); + MessageBoxPrintEmptyText(); + task->func = Task_TopMenuHandleInput; } else if (JOY_NEW(DPAD_UP) || JOY_NEW(DPAD_DOWN)) { if (task->data[1] >= 3) { task->data[1] -= 3; - sub_812CC68(taskId, 0, -0x1b); + FC_MoveSelectorCursor(taskId, 0, -0x1b); } else { task->data[1] += 3; - sub_812CC68(taskId, 0, +0x1b); + FC_MoveSelectorCursor(taskId, 0, +0x1b); } } else if (JOY_NEW(DPAD_LEFT)) @@ -750,12 +721,12 @@ static void sub_812CAD8(u8 taskId) if (task->data[1] == 0 || task->data[1] % 3 == 0) { task->data[1] += 2; - sub_812CC68(taskId, +0x5e, 0); + FC_MoveSelectorCursor(taskId, +0x5e, 0); } else { task->data[1]--; - sub_812CC68(taskId, -0x2f, 0); + FC_MoveSelectorCursor(taskId, -0x2f, 0); } } else if (JOY_NEW(DPAD_RIGHT)) @@ -763,17 +734,17 @@ static void sub_812CAD8(u8 taskId) if ((task->data[1] + 1) % 3 == 0) { task->data[1] -= 2; - sub_812CC68(taskId, -0x5e, 0); + FC_MoveSelectorCursor(taskId, -0x5e, 0); } else { task->data[1]++; - sub_812CC68(taskId, +0x2f, 0); + FC_MoveSelectorCursor(taskId, +0x2f, 0); } } } -static void sub_812CC68(u8 taskId, s8 dx, s8 dy) +static void FC_MoveSelectorCursor(u8 taskId, s8 dx, s8 dy) { u8 i; s16 *data = gTasks[taskId].data; @@ -781,69 +752,69 @@ static void sub_812CC68(u8 taskId, s8 dx, s8 dy) gSprites[data[0]].pos1.x += dx; gSprites[data[0]].pos1.y += dy; for (i = 0; i < 6; i++) - sub_812CEFC(sFameCheckerData->spriteIds[i], ST_OAM_OBJ_BLEND); - FillWindowPixelRect(2, 0x11, 0, 0, 0xd0, 0x20); - sub_812C990(); - if (sub_812CEFC(sFameCheckerData->spriteIds[data[1]], ST_OAM_OBJ_NORMAL) == TRUE) + SetMessageSelectorIconObjMode(sFameCheckerData->spriteIds[i], ST_OAM_OBJ_BLEND); + FillWindowPixelRect(FCWINDOWID_MSGBOX, 0x11, 0, 0, 0xd0, 0x20); + MessageBoxPrintEmptyText(); + if (SetMessageSelectorIconObjMode(sFameCheckerData->spriteIds[data[1]], ST_OAM_OBJ_NORMAL) == TRUE) { - sub_812CE04(taskId); - sub_812DA14(data[1]); + PrintSelectedNameInBrightGreen(taskId); + UpdateIconDescriptionBox(data[1]); } else if (gUnknown_3005EC8 != 0xFF) sub_812DB10(); } -static void sub_812CD3C(void) +static void GetPickModeText(void) { u8 r8 = 0; u16 r6 = FameCheckerGetCursorY(); if (gSaveBlock1Ptr->fameChecker[sFameCheckerData->unlockedPersons[r6]].pickState != FCPICKSTATE_COLORED) { - sub_812CE9C(); - sub_812C990(); + WipeMsgBoxAndTransfer(); + MessageBoxPrintEmptyText(); } else { - FillWindowPixelRect(2, 0x11, 0, 0, 0xd0, 0x20); - if (sub_812D6B4() == TRUE) - r8 = 16; - StringExpandPlaceholders(gStringVar4, gUnknown_845F63C[sFameCheckerData->unlockedPersons[r6] + r8]); - AddTextPrinterParametrized(2, 2, gStringVar4, sub_80F78A8(), NULL, 2, 1, 3); - sub_812CEE0(2); + FillWindowPixelRect(FCWINDOWID_MSGBOX, 0x11, 0, 0, 0xd0, 0x20); + if (HasUnlockedAllFlavorTextsForCurrentPerson() == TRUE) + r8 = NUM_FAMECHECKER_PERSONS; + StringExpandPlaceholders(gStringVar4, sFameCheckerNameAndQuotesPointers[sFameCheckerData->unlockedPersons[r6] + r8]); + AddTextPrinterParametrized(FCWINDOWID_MSGBOX, 2, gStringVar4, sub_80F78A8(), NULL, 2, 1, 3); + FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX); } } -static void sub_812CE04(u8 taskId) +static void PrintSelectedNameInBrightGreen(u8 taskId) { s16 *data = gTasks[taskId].data; - u16 r5 = FameCheckerGetCursorY(); - FillWindowPixelRect(2, 0x11, 0, 0, 0xd0, 0x20); - StringExpandPlaceholders(gStringVar4, gUnknown_845F6BC[sFameCheckerData->unlockedPersons[r5] * 6 + data[1]]); - AddTextPrinterParametrized(2, 2, gStringVar4, sub_80F78A8(), NULL, 2, 1, 3); - sub_812CEE0(2); + u16 cursorPos = FameCheckerGetCursorY(); + FillWindowPixelRect(FCWINDOWID_MSGBOX, 0x11, 0, 0, 0xd0, 0x20); + StringExpandPlaceholders(gStringVar4, sFameCheckerFlavorTextPointers[sFameCheckerData->unlockedPersons[cursorPos] * 6 + data[1]]); + AddTextPrinterParametrized(FCWINDOWID_MSGBOX, 2, gStringVar4, sub_80F78A8(), NULL, 2, 1, 3); + FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX); } -static void sub_812CE9C(void) +static void WipeMsgBoxAndTransfer(void) { - FillWindowPixelRect(2, 0x11, 0, 0, 0xd0, 0x20); - sub_812CEE0(2); + FillWindowPixelRect(FCWINDOWID_MSGBOX, 0x11, 0, 0, 0xd0, 0x20); + FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX); } -static void sub_812CEC0(void) +static void Setup_DrawMsgAndListBoxes(void) { sub_80F6E9C(); - sub_80F6EE4(2, 1); - sub_812CEE0(2); - sub_812CEE0(0); + sub_80F6EE4(FCWINDOWID_MSGBOX, TRUE); + FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX); + FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_LIST); } -static void sub_812CEE0(u8 windowId) +static void FC_PutWindowTilemapAndCopyWindowToVramMode3(u8 windowId) { PutWindowTilemap(windowId); CopyWindowToVram(windowId, 3); } -static bool8 sub_812CEFC(u8 spriteId, u8 objMode) +static bool8 SetMessageSelectorIconObjMode(u8 spriteId, u8 objMode) { if (gSprites[spriteId].data[1] != 0xFF) { @@ -853,14 +824,14 @@ static bool8 sub_812CEFC(u8 spriteId, u8 objMode) return FALSE; } -static void sub_812CF3C(u8 taskId) +static void Task_StartToCloseFameChecker(u8 taskId) { PlaySE(SE_W202); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - gTasks[taskId].func = sub_812CF7C; + gTasks[taskId].func = Task_DestroyAssetsAndCloseFameChecker; } -static void sub_812CF7C(u8 taskId) +static void Task_DestroyAssetsAndCloseFameChecker(u8 taskId) { u8 r4; @@ -868,7 +839,7 @@ static void sub_812CF7C(u8 taskId) { if (sFameCheckerData->inPickMode) { - sub_812D9A8(taskId, FameCheckerGetCursorY()); + DestroyPersonPicSprite(taskId, FameCheckerGetCursorY()); FreeSpriteOamMatrix(&gSprites[gTasks[taskId].data[3]]); DestroySprite(&gSprites[gTasks[taskId].data[3]]); } @@ -876,28 +847,28 @@ static void sub_812CF7C(u8 taskId) { DestroySprite(&gSprites[sFameCheckerData->spriteIds[r4]]); } - sub_812D814(); - sub_812D7C8(); - sub_812D70C(); - sub_812D770(); - sub_812E048(); + FreeNonTrainerPicTiles(); + FreeSpinningPokeballSpriteResources(); + FreeSelectionCursorSpriteResources(); + FreeQuestionMarkSpriteResources(); + FreeListMenuSelectorArrowPairResources(); SetMainCallback2(sFameCheckerData->savedCallback); - sub_810713C(sFameCheckerData->scrollIndicatorArrowObjectTaskId, 0, 0); + sub_810713C(sFameCheckerData->listMenuTaskId, 0, 0); Free(sBg3TilemapBuffer); Free(sBg1TilemapBuffer); Free(sBg2TilemapBuffer); Free(sFameCheckerData); Free(sListMenuItems); - sub_812D094(0); - sub_812D094(1); - sub_812D094(2); - sub_812D094(3); + FC_DestroyWindow(0); + FC_DestroyWindow(1); + FC_DestroyWindow(2); + FC_DestroyWindow(3); FreeAllWindowBuffers(); DestroyTask(taskId); } } -static void sub_812D094(u8 windowId) +static void FC_DestroyWindow(u8 windowId) { FillWindowPixelBuffer(windowId, 0); ClearWindowTilemap(windowId); @@ -905,111 +876,111 @@ static void sub_812D094(u8 windowId) RemoveWindow(windowId); } -static u8 sub_812D0C0(u8 a0) +static u8 AdjustGiovanniIndexIfBeatenInGym(u8 a0) { if (HasTrainerAlreadyBeenFought(0x15e) == TRUE) { if (a0 == 9) - return 15; + return FAMECHECKER_GIOVANNI; if (a0 > 9) return a0 - 1; } return a0; } -static void sub_812D0F4(u8 a0) +static void PrintUIHelp(u8 state) { - const u8 * r5 = gUnknown_841E5A4; s32 width; - if (a0 != 0) + const u8 * src = gFameCheckerText_MainScreenUI; + if (state != 0) { - r5 = gUnknown_841E5D2; - if (a0 == 1) - r5 = gUnknown_841E5B9; + src = gFameCheckerText_FlavorTextUI; + if (state == 1) + src = gFameCheckerText_PickScreenUI; } - width = GetStringWidth(0, r5, 0); - FillWindowPixelRect(1, 0x00, 0, 0, 0xc0, 0x10); - AddTextPrinterParametrized2(1, 0, 188 - width, 0, 0, 2, &gUnknown_845F5E0, -1, r5); - sub_812CEE0(1); + width = GetStringWidth(0, src, 0); + FillWindowPixelRect(FCWINDOWID_UIHELP, 0x00, 0, 0, 0xc0, 0x10); + AddTextPrinterParametrized2(FCWINDOWID_UIHELP, 0, 188 - width, 0, 0, 2, &gUnknown_845F5E0, -1, src); + FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_UIHELP); } -static void sub_812D174(void) +static void DestroyAllFlavorTextIcons(void) { - u8 r4; - for (r4 = 0; r4 < 6; r4++) + u8 i; + for (i = 0; i < 6; i++) { - DestroySprite(&gSprites[sFameCheckerData->spriteIds[r4]]); + DestroySprite(&gSprites[sFameCheckerData->spriteIds[i]]); } } -static bool8 sub_812D1A8(u8 a0) +static bool8 CreateAllFlavorTextIcons(u8 a0) { // r8 <- a0 - bool8 r5 = FALSE; - u8 r6; - for (r6 = 0; r6 < 6; r6++) + bool8 result = FALSE; + u8 i; + for (i = 0; i < 6; i++) { - if ((gSaveBlock1Ptr->fameChecker[sFameCheckerData->unlockedPersons[a0]].flavorTextFlags >> r6) & 1) + if ((gSaveBlock1Ptr->fameChecker[sFameCheckerData->unlockedPersons[a0]].flavorTextFlags >> i) & 1) { - sFameCheckerData->spriteIds[r6] = sub_805EB44( - sFameCheckerArrayNpcGraphicsIds[sFameCheckerData->unlockedPersons[a0] * 6 + r6], - r6, - 47 * (r6 % 3) + 0x72, - 27 * (r6 / 3) + 0x2F + sFameCheckerData->spriteIds[i] = sub_805EB44( + sFameCheckerArrayNpcGraphicsIds[sFameCheckerData->unlockedPersons[a0] * 6 + i], + i, + 47 * (i % 3) + 0x72, + 27 * (i / 3) + 0x2F ); - r5 = TRUE; + result = TRUE; } else { - sFameCheckerData->spriteIds[r6] = PlaceQuestionMarkTile( - 47 * (r6 % 3) + 0x72, - 27 * (r6 / 3) + 0x1F + sFameCheckerData->spriteIds[i] = PlaceQuestionMarkTile( + 47 * (i % 3) + 0x72, + 27 * (i / 3) + 0x1F ); - gSprites[sFameCheckerData->spriteIds[r6]].data[1] = 0xFF; + gSprites[sFameCheckerData->spriteIds[i]].data[1] = 0xFF; } } - if (r5 == TRUE) + if (result == TRUE) { sFameCheckerData->personHasUnlockedPanels = TRUE; if (sFameCheckerData->inPickMode) - sub_812D0F4(TRUE); + PrintUIHelp(1); else - sub_812D0F4(FALSE); + PrintUIHelp(0); } else { sFameCheckerData->personHasUnlockedPanels = FALSE; - sub_812D0F4(TRUE); + PrintUIHelp(1); } - return r5; + return result; } void ResetFameChecker(void) { - u8 r4; - for (r4 = 0; r4 < 16; r4++) + u8 i; + for (i = 0; i < NUM_FAMECHECKER_PERSONS; i++) { - gSaveBlock1Ptr->fameChecker[r4].pickState = FCPICKSTATE_NO_DRAW; - gSaveBlock1Ptr->fameChecker[r4].flavorTextFlags = 0; - gSaveBlock1Ptr->fameChecker[r4].unk_0_E = 0; + gSaveBlock1Ptr->fameChecker[i].pickState = FCPICKSTATE_NO_DRAW; + gSaveBlock1Ptr->fameChecker[i].flavorTextFlags = 0; + gSaveBlock1Ptr->fameChecker[i].unk_0_E = 0; } - gSaveBlock1Ptr->fameChecker[0].pickState = FCPICKSTATE_COLORED; + gSaveBlock1Ptr->fameChecker[FAMECHECKER_OAK].pickState = FCPICKSTATE_COLORED; } -static void sub_812D388(void) +void FullyUnlockFameChecker(void) { - u8 r5, r4; - for (r5 = 0; r5 < 16; r5++) + u8 i, j; + for (i = 0; i < NUM_FAMECHECKER_PERSONS; i++) { - gSaveBlock1Ptr->fameChecker[r5].pickState = FCPICKSTATE_COLORED; - for (r4 = 0; r4 < 6; r4++) + gSaveBlock1Ptr->fameChecker[i].pickState = FCPICKSTATE_COLORED; + for (j = 0; j < 6; j++) { - gSaveBlock1Ptr->fameChecker[r5].flavorTextFlags |= (1 << r4); + gSaveBlock1Ptr->fameChecker[i].flavorTextFlags |= (1 << j); } } } -static void sub_812D420(void) +static void FCSetup_ClearVideoRegisters(void) { void * vram = (void *)VRAM; DmaClearLarge16(3, vram, VRAM_SIZE, 0x1000); @@ -1037,7 +1008,7 @@ static void sub_812D420(void) SetGpuReg(REG_OFFSET_BLDY, 0); } -static void sub_812D558(void) +static void FCSetup_ResetTasksAndSpriteResources(void) { remove_some_task(); ResetTasks(); @@ -1049,12 +1020,12 @@ static void sub_812D558(void) } -static void sub_812D584(void) +static void FCSetup_TurnOnDisplay(void) { SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON); } -static void sub_812D594(void) +static void FCSetup_ResetBGCoords(void) { ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); @@ -1066,97 +1037,99 @@ static void sub_812D594(void) ChangeBgY(3, 0, 0); } -static void sub_812D5EC(void) +void SetFlavorTextFlagFromSpecialVars(void) { - if (gUnknown_20370C0 < 16 && gSpecialVar_0x8005 < 6) + if (gUnknown_20370C0 < NUM_FAMECHECKER_PERSONS && gSpecialVar_0x8005 < 6) { gSaveBlock1Ptr->fameChecker[gUnknown_20370C0].flavorTextFlags |= (1 << gSpecialVar_0x8005); - gSpecialVar_0x8005 = 1; - sub_812D650(); + gSpecialVar_0x8005 = FCPICKSTATE_SILHOUETTE; + UpdatePickStateFromSpecialVar8005(); } } -static void sub_812D650(void) +void UpdatePickStateFromSpecialVar8005(void) { - if (gUnknown_20370C0 < 16 && gSpecialVar_0x8005 < 3) + if (gUnknown_20370C0 < NUM_FAMECHECKER_PERSONS && gSpecialVar_0x8005 < 3) { - if (gSpecialVar_0x8005 == 0) + if (gSpecialVar_0x8005 == FCPICKSTATE_NO_DRAW) return; - if (gSpecialVar_0x8005 == 1 && gSaveBlock1Ptr->fameChecker[gUnknown_20370C0].pickState == FCPICKSTATE_COLORED) + if ( gSpecialVar_0x8005 == FCPICKSTATE_SILHOUETTE + && gSaveBlock1Ptr->fameChecker[gUnknown_20370C0].pickState == FCPICKSTATE_COLORED + ) return; gSaveBlock1Ptr->fameChecker[gUnknown_20370C0].pickState = gSpecialVar_0x8005; } } -static bool8 sub_812D6B4(void) +static bool8 HasUnlockedAllFlavorTextsForCurrentPerson(void) { - u8 r2; - u8 r1 = sFameCheckerData->unlockedPersons[FameCheckerGetCursorY()]; - for (r2 = 0; r2 < 6; r2++) + u8 i; + u8 who = sFameCheckerData->unlockedPersons[FameCheckerGetCursorY()]; + for (i = 0; i < 6; i++) { - if (!((gSaveBlock1Ptr->fameChecker[r1].flavorTextFlags >> r2) & 1)) + if (!((gSaveBlock1Ptr->fameChecker[who].flavorTextFlags >> i) & 1)) return FALSE; } return TRUE; } -static void sub_812D70C(void) +static void FreeSelectionCursorSpriteResources(void) { - FreeSpriteTilesByTag(SPRITETAG_1000); - FreeSpritePaletteByTag(SPRITETAG_1000); + FreeSpriteTilesByTag(SPRITETAG_SELECTOR_CURSOR); + FreeSpritePaletteByTag(SPRITETAG_SELECTOR_CURSOR); } -static u8 sub_812D724(s16 a0) +static u8 CreateFlavorTextIconSelectorCursorSprite(s16 where) { - s16 r4 = a0 >= 3 ? 61 : 34; - s16 r1 = 47 * (a0 % 3) + 0x72; - return CreateSprite(&gUnknown_845FC44, r1, r4, 0); + s16 y = 34 + 27 * (where >= 3); + s16 x = 114 + 47 * (where % 3); + return CreateSprite(&sSpriteTemplate_SelectorCursor, x, y, 0); } -static void sub_812D764(struct Sprite * sprite) +static void SpriteCB_DestroyFlavorTextIconSelectorCursor(struct Sprite * sprite) { DestroySprite(sprite); } -static void sub_812D770(void) +static void FreeQuestionMarkSpriteResources(void) { - FreeSpriteTilesByTag(SPRITETAG_1001); + FreeSpriteTilesByTag(SPRITETAG_QUESTION_MARK); } static u8 PlaceQuestionMarkTile(u8 x, u8 y) { - u8 spriteId = CreateSprite(&gUnknown_845FC78, x, y, 8); + u8 spriteId = CreateSprite(&sQuestionMarkTileSpriteTemplate, x, y, 8); gSprites[spriteId].oam.priority = 2; gSprites[spriteId].oam.paletteNum = 2; return spriteId; } -static void sub_812D7C8(void) +static void FreeSpinningPokeballSpriteResources(void) { - FreeSpriteTilesByTag(SPRITETAG_1002); - FreeSpritePaletteByTag(SPRITETAG_1002); + FreeSpriteTilesByTag(SPRITETAG_SPINNING_POKEBALL); + FreeSpritePaletteByTag(SPRITETAG_SPINNING_POKEBALL); } -static u8 sub_812D7E4(void) +static u8 CreateSpinningPokeballSprite(void) { return CreateSprite(&sSpinningPokeballSpriteTemplate, 0xe2, 0x42, 0); } -static void sub_812D800(struct Sprite * sprite) +static void SpriteCB_DestroySpinningPokeball(struct Sprite * sprite) { FreeSpriteOamMatrix(sprite); DestroySprite(sprite); } -static void sub_812D814(void) +static void FreeNonTrainerPicTiles(void) { - FreeSpriteTilesByTag(SPRITETAG_1006); - FreeSpriteTilesByTag(SPRITETAG_1007); - FreeSpriteTilesByTag(SPRITETAG_1008); - FreeSpriteTilesByTag(SPRITETAG_1009); + FreeSpriteTilesByTag(SPRITETAG_DAISY); + FreeSpriteTilesByTag(SPRITETAG_FUJI); + FreeSpriteTilesByTag(SPRITETAG_OAK); + FreeSpriteTilesByTag(SPRITETAG_BILL); } -static void sub_812D840(struct Sprite * sprite) +static void SpriteCB_FCSpinningPokeball(struct Sprite * sprite) { if (sprite->data[0] == 1) { @@ -1180,92 +1153,92 @@ static void sub_812D840(struct Sprite * sprite) } } -static u8 sub_812D888(u8 a0) +static u8 CreatePersonPicSprite(u8 fcPersonIdx) { - u8 r4; - if (a0 == FAMECHECKER_DAISY) + u8 spriteId; + if (fcPersonIdx == FAMECHECKER_DAISY) { - r4 = CreateSprite(&sDaisySpriteTemplate, 0x94, 0x42, 0); + spriteId = CreateSprite(&sDaisySpriteTemplate, 0x94, 0x42, 0); LoadPalette(sDaisySpritePalette, 0x160, 0x20); - gSprites[r4].oam.paletteNum = 6; + gSprites[spriteId].oam.paletteNum = 6; } - else if (a0 == FAMECHECKER_MRFUJI) + else if (fcPersonIdx == FAMECHECKER_MRFUJI) { - r4 = CreateSprite(&sFujiSpriteTemplate, 0x94, 0x42, 0); + spriteId = CreateSprite(&sFujiSpriteTemplate, 0x94, 0x42, 0); LoadPalette(sFujiSpritePalette, 0x160, 0x20); - gSprites[r4].oam.paletteNum = 6; + gSprites[spriteId].oam.paletteNum = 6; } - else if (a0 == FAMECHECKER_OAK) + else if (fcPersonIdx == FAMECHECKER_OAK) { - r4 = CreateSprite(&sOakSpriteTemplate, 0x94, 0x42, 0); + spriteId = CreateSprite(&sOakSpriteTemplate, 0x94, 0x42, 0); LoadPalette(sOakSpritePalette, 0x160, 0x20); - gSprites[r4].oam.paletteNum = 6; + gSprites[spriteId].oam.paletteNum = 6; } - else if (a0 == FAMECHECKER_BILL) + else if (fcPersonIdx == FAMECHECKER_BILL) { - r4 = CreateSprite(&sBillSpriteTemplate, 0x94, 0x42, 0); + spriteId = CreateSprite(&sBillSpriteTemplate, 0x94, 0x42, 0); LoadPalette(sBillSpritePalette, 0x160, 0x20); - gSprites[r4].oam.paletteNum = 6; + gSprites[spriteId].oam.paletteNum = 6; } else { - r4 = sub_810C2A4(gUnknown_845F61C[a0], 1, 0x94, 0x42, 6, 0xFFFF); + spriteId = sub_810C2A4(sFameCheckerTrainerPicIdxs[fcPersonIdx], 1, 0x94, 0x42, 6, 0xFFFF); } - gSprites[r4].callback = sub_812D840; - if (gSaveBlock1Ptr->fameChecker[a0].pickState == FCPICKSTATE_SILHOUETTE) - LoadPalette(gUnknown_845F5C0, 0x160, 0x20); - return r4; + gSprites[spriteId].callback = SpriteCB_FCSpinningPokeball; + if (gSaveBlock1Ptr->fameChecker[fcPersonIdx].pickState == FCPICKSTATE_SILHOUETTE) + LoadPalette(sSilhouettePalette, 0x160, 0x20); + return spriteId; } -static void sub_812D9A8(u8 taskId, u16 a1) +static void DestroyPersonPicSprite(u8 taskId, u16 who) { s16 * data = gTasks[taskId].data; - u16 r1 = a1; - if (a1 == sFameCheckerData->numUnlockedPersons - 1) - r1 = a1 - 1; - if ( sFameCheckerData->unlockedPersons[r1] == FAMECHECKER_DAISY - || sFameCheckerData->unlockedPersons[r1] == FAMECHECKER_MRFUJI - || sFameCheckerData->unlockedPersons[r1] == FAMECHECKER_OAK - || sFameCheckerData->unlockedPersons[r1] == FAMECHECKER_BILL + u16 who_copy = who; + if (who == sFameCheckerData->numUnlockedPersons - 1) + who_copy = who - 1; + if ( sFameCheckerData->unlockedPersons[who_copy] == FAMECHECKER_DAISY + || sFameCheckerData->unlockedPersons[who_copy] == FAMECHECKER_MRFUJI + || sFameCheckerData->unlockedPersons[who_copy] == FAMECHECKER_OAK + || sFameCheckerData->unlockedPersons[who_copy] == FAMECHECKER_BILL ) DestroySprite(&gSprites[data[2]]); else sub_810C2E8(data[2]); } -static void sub_812DA14(u8 a0) +static void UpdateIconDescriptionBox(u8 a0) { s32 width; - u32 r5 = 6 * sFameCheckerData->unlockedPersons[FameCheckerGetCursorY()] + a0; - sub_812E094(1); + u32 idx = 6 * sFameCheckerData->unlockedPersons[FameCheckerGetCursorY()] + a0; + FlipBitUnk23_0(TRUE); gUnknown_3005EC8 = 1; - FillWindowPixelRect(3, 0x00, 0, 0, 0x58, 0x20); - width = (0x54 - GetStringWidth(0, gUnknown_845F89C[r5], 0)) / 2; - AddTextPrinterParametrized2(3, 0, width, 0, 0, 2, &gUnknown_845F5E3, -1, gUnknown_845F89C[r5]); - StringExpandPlaceholders(gStringVar1, gUnknown_845FA1C[r5]); + FillWindowPixelRect(FCWINDOWID_ICONDESC, 0x00, 0, 0, 0x58, 0x20); + width = (0x54 - GetStringWidth(0, sFlavorTextOriginLocationTexts[idx], 0)) / 2; + AddTextPrinterParametrized2(FCWINDOWID_ICONDESC, 0, width, 0, 0, 2, &gUnknown_845F5E3, -1, sFlavorTextOriginLocationTexts[idx]); + StringExpandPlaceholders(gStringVar1, sFlavorTextOriginObjectNameTexts[idx]); width = (0x54 - GetStringWidth(0, gStringVar1, 0)) / 2; - AddTextPrinterParametrized2(3, 0, width, 10, 0, 2, &gUnknown_845F5E3, -1, gStringVar1); - sub_812CEE0(3); + AddTextPrinterParametrized2(FCWINDOWID_ICONDESC, 0, width, 10, 0, 2, &gUnknown_845F5E3, -1, gStringVar1); + FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_ICONDESC); } static void sub_812DB10(void) { - sub_812E094(0); + FlipBitUnk23_0(FALSE); gUnknown_3005EC8 = 0xFF; } -static void sub_812DB28(void) +static void FC_CreateListMenu(void) { - sub_812DB64(); - sFameCheckerData->numUnlockedPersons = sub_812DEF0(); - sFameCheckerData->scrollIndicatorArrowObjectTaskId = ListMenuInit(&gFameChecker_ListMenuTemplate, 0, 0); - sub_812DFE4(0); + InitListMenuTemplate(); + sFameCheckerData->numUnlockedPersons = FC_PopulateListMenu(); + sFameCheckerData->listMenuTaskId = ListMenuInit(&gFameChecker_ListMenuTemplate, 0, 0); + FC_PutWindowTilemapAndCopyWindowToVramMode3_2(FCWINDOWID_LIST); } -static void sub_812DB64(void) +static void InitListMenuTemplate(void) { gFameChecker_ListMenuTemplate.items = sListMenuItems; - gFameChecker_ListMenuTemplate.moveCursorFunc = sub_812DBC0; + gFameChecker_ListMenuTemplate.moveCursorFunc = FC_MoveCursorFunc; gFameChecker_ListMenuTemplate.itemPrintFunc = NULL; gFameChecker_ListMenuTemplate.totalItems = 1; gFameChecker_ListMenuTemplate.maxShowed = 1; @@ -1284,31 +1257,31 @@ static void sub_812DB64(void) gFameChecker_ListMenuTemplate.cursorKind = 0; } -static void sub_812DBC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) +static void FC_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list) { u16 sp8; u8 taskId; u16 r9; sLastMenuIdx = 0; r9 = sFameCheckerData->listMenuTopIdx2 + sFameCheckerData->listMenuDrawnSelIdx; - sub_812DDF0(itemIndex, onInit); - taskId = FindTaskIdByFunc(sub_812C694); + FC_DoMoveCursor(itemIndex, onInit); + taskId = FindTaskIdByFunc(Task_TopMenuHandleInput); if (taskId != 0xFF) { struct Task *task = &gTasks[taskId]; PlaySE(SE_SELECT); task->data[1] = 0; - get_coro_args_x18_x1A(sFameCheckerData->scrollIndicatorArrowObjectTaskId, &sp8, NULL); + get_coro_args_x18_x1A(sFameCheckerData->listMenuTaskId, &sp8, NULL); sFameCheckerData->listMenuTopIdx = sp8; if (itemIndex != sFameCheckerData->numUnlockedPersons - 1) { - sub_812D174(); - sub_812D1A8(itemIndex); + DestroyAllFlavorTextIcons(); + CreateAllFlavorTextIcons(itemIndex); if (sFameCheckerData->inPickMode) { if (!sFameCheckerData->unk_23_2) { - sub_812D9A8(taskId, r9); + DestroyPersonPicSprite(taskId, r9); sLastMenuIdx = itemIndex; task->func = sub_812DD50; } @@ -1317,18 +1290,18 @@ static void sub_812DBC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) gSprites[task->data[2]].invisible = FALSE; sFameCheckerData->unk_23_2 = FALSE; gSprites[task->data[2]].data[0] = 0; - sub_812CD3C(); + GetPickModeText(); } } else { - FillWindowPixelRect(2, 0x11, 0, 0, 0xd0, 0x20); - sub_812CEE0(2); + FillWindowPixelRect(FCWINDOWID_MSGBOX, 0x11, 0, 0, 0xd0, 0x20); + FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX); } } else { - sub_812DDAC(); + PrintCancelDescription(); if (sFameCheckerData->inPickMode) { gSprites[task->data[2]].invisible = TRUE; @@ -1349,34 +1322,34 @@ static void sub_812DBC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) static void sub_812DD50(u8 taskId) { struct Task * task = &gTasks[taskId]; - task->data[2] = sub_812D888(sFameCheckerData->unlockedPersons[sLastMenuIdx]); + task->data[2] = CreatePersonPicSprite(sFameCheckerData->unlockedPersons[sLastMenuIdx]); gSprites[task->data[2]].data[0] = 0; - sub_812CD3C(); - task->func = sub_812C694; + GetPickModeText(); + task->func = Task_TopMenuHandleInput; } -static void sub_812DDAC(void) +static void PrintCancelDescription(void) { - FillWindowPixelRect(2, 0x11, 0, 0, 0xd0, 0x20); - AddTextPrinterParametrized(2, 2, gUnknown_84181C3, 0, NULL, 2, 1, 3); - sub_812CEE0(2); + FillWindowPixelRect(FCWINDOWID_MSGBOX, 0x11, 0, 0, 0xd0, 0x20); + AddTextPrinterParametrized(FCWINDOWID_MSGBOX, 2, gFameCheckerText_FameCheckerWillBeClosed, 0, NULL, 2, 1, 3); + FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX); } -static void sub_812DDF0(s32 itemIndex, bool8 onInit) +static void FC_DoMoveCursor(s32 itemIndex, bool8 onInit) { u16 sp14; u16 sp16; u16 r6; - get_coro_args_x18_x1A(sFameCheckerData->scrollIndicatorArrowObjectTaskId, &sp14, &sp16); + get_coro_args_x18_x1A(sFameCheckerData->listMenuTaskId, &sp14, &sp16); r6 = sp14 + sp16; - AddTextPrinterParametrized2(0, 2, 8, 14 * sp16 + 4, 0, 0, &gUnknown_845F5E6, 0, sListMenuItems[itemIndex].unk_00); + AddTextPrinterParametrized2(FCWINDOWID_LIST, 2, 8, 14 * sp16 + 4, 0, 0, &gUnknown_845F5E6, 0, sListMenuItems[itemIndex].unk_00); if (!onInit) { if (sp14 < sFameCheckerData->listMenuTopIdx2) sFameCheckerData->listMenuDrawnSelIdx++; else if (sp14 > sFameCheckerData->listMenuTopIdx2 && r6 != sFameCheckerData->numUnlockedPersons - 1) sFameCheckerData->listMenuDrawnSelIdx--; - AddTextPrinterParametrized2(0, 2, 8, 14 * sFameCheckerData->listMenuDrawnSelIdx + 4, 0, 0, &gUnknown_845F5E3, 0, sListMenuItems[sFameCheckerData->listMenuCurIdx].unk_00); + AddTextPrinterParametrized2(FCWINDOWID_LIST, 2, 8, 14 * sFameCheckerData->listMenuDrawnSelIdx + 4, 0, 0, &gUnknown_845F5E3, 0, sListMenuItems[sFameCheckerData->listMenuCurIdx].unk_00); } sFameCheckerData->listMenuCurIdx = itemIndex; @@ -1384,63 +1357,63 @@ static void sub_812DDF0(s32 itemIndex, bool8 onInit) sFameCheckerData->listMenuTopIdx2 = sp14; } -static u8 sub_812DEF0(void) +static u8 FC_PopulateListMenu(void) { - u8 r4 = 0; - u8 r6; + u8 nitems = 0; + u8 i; - for (r6 = 0; r6 < 16; r6++) + for (i = 0; i < NUM_FAMECHECKER_PERSONS; i++) { - u8 r5 = sub_812D0C0(r6); - if (gSaveBlock1Ptr->fameChecker[r5].pickState != FCPICKSTATE_NO_DRAW) + u8 fameCheckerIdx = AdjustGiovanniIndexIfBeatenInGym(i); + if (gSaveBlock1Ptr->fameChecker[fameCheckerIdx].pickState != FCPICKSTATE_NO_DRAW) { - if (gUnknown_845F5EA[r5] < 0xFE00) + if (sTrainerIdxs[fameCheckerIdx] < FC_NONTRAINER_START) { - sListMenuItems[r4].unk_00 = gTrainers[gUnknown_845F5EA[r5]].trainerName; - sListMenuItems[r4].unk_04 = r4; + sListMenuItems[nitems].unk_00 = gTrainers[sTrainerIdxs[fameCheckerIdx]].trainerName; + sListMenuItems[nitems].unk_04 = nitems; } else { - sListMenuItems[r4].unk_00 = gUnknown_845F60C[gUnknown_845F5EA[r5] - 0xFE00]; - sListMenuItems[r4].unk_04 = r4; + sListMenuItems[nitems].unk_00 = sNonTrainerNamePointers[sTrainerIdxs[fameCheckerIdx] - FC_NONTRAINER_START]; + sListMenuItems[nitems].unk_04 = nitems; } - sFameCheckerData->unlockedPersons[r4] = r5; - r4++; + sFameCheckerData->unlockedPersons[nitems] = fameCheckerIdx; + nitems++; } } - sListMenuItems[r4].unk_00 = gUnknown_84161C1; - sListMenuItems[r4].unk_04 = r4; - sFameCheckerData->unlockedPersons[r4] = 0xFF; - r4++; - gFameChecker_ListMenuTemplate.totalItems = r4; - if (r4 < 5) - gFameChecker_ListMenuTemplate.maxShowed = r4; + sListMenuItems[nitems].unk_00 = gFameCheckerText_Cancel; + sListMenuItems[nitems].unk_04 = nitems; + sFameCheckerData->unlockedPersons[nitems] = 0xFF; + nitems++; + gFameChecker_ListMenuTemplate.totalItems = nitems; + if (nitems < 5) + gFameChecker_ListMenuTemplate.maxShowed = nitems; else gFameChecker_ListMenuTemplate.maxShowed = 5; - return r4; + return nitems; } -static void sub_812DFE4(u8 windowId) +static void FC_PutWindowTilemapAndCopyWindowToVramMode3_2(u8 windowId) { PutWindowTilemap(windowId); CopyWindowToVram(windowId, 3); } -static void sub_812E000(void) +static void FC_CreateScrollIndicatorArrowPair(void) { struct ScrollIndicatorArrowPairTemplate sp0 = { - 2, - 40, - 26, - 3, - 40, - 100, - 0, - 0, - SPRITETAG_1004, - 0xFFFF, - 1, - 0 + 2, + 40, + 26, + 3, + 40, + 100, + 0, + 0, + SPRITETAG_SCROLL_INDICATORS, + 0xFFFF, + 1, + 0 }; if (sFameCheckerData->numUnlockedPersons > 5) @@ -1451,7 +1424,7 @@ static void sub_812E000(void) } } -static void sub_812E048(void) +static void FreeListMenuSelectorArrowPairResources(void) { if (sFameCheckerData->numUnlockedPersons > 5) RemoveScrollIndicatorArrowPair(sFameCheckerData->unk_06); @@ -1460,11 +1433,11 @@ static void sub_812E048(void) static u16 FameCheckerGetCursorY(void) { u16 sp0, sp2; - get_coro_args_x18_x1A(sFameCheckerData->scrollIndicatorArrowObjectTaskId, &sp0, &sp2); + get_coro_args_x18_x1A(sFameCheckerData->listMenuTaskId, &sp0, &sp2); return sp0 + sp2; } -static void sub_812E094(u8 a0) +static void FlipBitUnk23_0(bool8 a0) { if (sFameCheckerData->unk_23_0 != a0) { @@ -1571,11 +1544,11 @@ static void sub_812E178(u8 bg, s16 a1) CopyBgTilemapBufferToVram(bg); } -static void sub_812E4A4(u8 a0) +static void PlaceListMenuCursor(bool8 isActive) { - u16 cursorY = ListMenuGetYCoordForPrintingArrowCursor(sFameCheckerData->scrollIndicatorArrowObjectTaskId); - if (a0 == 1) - AddTextPrinterParametrized2(0, 2, 0, cursorY, 0, 0, &gUnknown_845F5E3, 0, gUnknown_841623B); + u16 cursorY = ListMenuGetYCoordForPrintingArrowCursor(sFameCheckerData->listMenuTaskId); + if (isActive == TRUE) + AddTextPrinterParametrized2(FCWINDOWID_LIST, 2, 0, cursorY, 0, 0, &gUnknown_845F5E3, 0, gFameCheckerText_ListMenuCursor); else - AddTextPrinterParametrized2(0, 2, 0, cursorY, 0, 0, &gUnknown_845F5E0, 0, gUnknown_841623B); + AddTextPrinterParametrized2(FCWINDOWID_LIST, 2, 0, cursorY, 0, 0, &gUnknown_845F5E0, 0, gFameCheckerText_ListMenuCursor); } -- cgit v1.2.3 From 5f9edfe8e63127d2557f9f419ecdd9174d0a7ae8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 27 Nov 2018 18:29:18 -0500 Subject: One more field renaming in fame_checker --- src/fame_checker.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index 46c13c387..ec78b5f0e 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -42,7 +42,7 @@ struct FameCheckerData { MainCallback savedCallback; u16 listMenuTopIdx; - u8 unk_06; + u8 scrollIndicatorPairTaskId; u8 personHasUnlockedPanels:1; u8 inPickMode:1; u8 numUnlockedPersons:6; @@ -53,7 +53,7 @@ struct FameCheckerData u8 unlockedPersons[NUM_FAMECHECKER_PERSONS + 1]; u8 spriteIds[6]; u8 unk_23_0:1; - u8 unk_23_1:1; + u8 unk_23_1:1; // unused u8 unk_23_2:1; }; @@ -1420,14 +1420,14 @@ static void FC_CreateScrollIndicatorArrowPair(void) { sp0.unk_06 = 0; sp0.unk_08 = sFameCheckerData->numUnlockedPersons - 5; - sFameCheckerData->unk_06 = AddScrollIndicatorArrowPair(&sp0, &sFameCheckerData->listMenuTopIdx); + sFameCheckerData->scrollIndicatorPairTaskId = AddScrollIndicatorArrowPair(&sp0, &sFameCheckerData->listMenuTopIdx); } } static void FreeListMenuSelectorArrowPairResources(void) { if (sFameCheckerData->numUnlockedPersons > 5) - RemoveScrollIndicatorArrowPair(sFameCheckerData->unk_06); + RemoveScrollIndicatorArrowPair(sFameCheckerData->scrollIndicatorPairTaskId); } static u16 FameCheckerGetCursorY(void) -- cgit v1.2.3 From 66c7fc0d701ef5211114fdbdaa9588007beed3f2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 28 Nov 2018 08:42:21 -0500 Subject: All functions and assets in fame_checker are named --- src/fame_checker.c | 135 ++++++++++++++++++++++++++--------------------------- 1 file changed, 67 insertions(+), 68 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index ec78b5f0e..85cea3015 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -52,9 +52,9 @@ struct FameCheckerData u8 listMenuDrawnSelIdx; u8 unlockedPersons[NUM_FAMECHECKER_PERSONS + 1]; u8 spriteIds[6]; - u8 unk_23_0:1; + u8 viewingFlavorText:1; u8 unk_23_1:1; // unused - u8 unk_23_2:1; + u8 pickModeOverCancel:1; }; static EWRAM_DATA u16 * sBg3TilemapBuffer = NULL; @@ -65,7 +65,7 @@ static EWRAM_DATA struct ListMenuItem * sListMenuItems = NULL; static EWRAM_DATA s32 sLastMenuIdx = 0; struct ListMenuTemplate gFameChecker_ListMenuTemplate; -u8 gUnknown_3005EC8; +u8 gIconDescriptionBoxIsOpen; static void MainCB2_LoadFameChecker(void); static void LoadUISpriteSheetsAndPalettes(void); @@ -86,31 +86,31 @@ static bool8 SetMessageSelectorIconObjMode(u8 taskId, u8 objMode); static void Task_StartToCloseFameChecker(u8 taskId); static void Task_DestroyAssetsAndCloseFameChecker(u8 taskId); static void FC_DestroyWindow(u8 windowId); -static void PrintUIHelp(u8 a0); -static bool8 CreateAllFlavorTextIcons(u8 a0); +static void PrintUIHelp(u8 state); +static bool8 CreateAllFlavorTextIcons(u8 who); static void FCSetup_ClearVideoRegisters(void); static void FCSetup_ResetTasksAndSpriteResources(void); static void FCSetup_TurnOnDisplay(void); static void FCSetup_ResetBGCoords(void); static bool8 HasUnlockedAllFlavorTextsForCurrentPerson(void); static void FreeSelectionCursorSpriteResources(void); -static u8 CreateFlavorTextIconSelectorCursorSprite(s16 a0); +static u8 CreateFlavorTextIconSelectorCursorSprite(s16 where); static void SpriteCB_DestroyFlavorTextIconSelectorCursor(struct Sprite *sprite); static void FreeQuestionMarkSpriteResources(void); -static u8 PlaceQuestionMarkTile(u8, u8); +static u8 PlaceQuestionMarkTile(u8 x, u8 y); static void FreeSpinningPokeballSpriteResources(void); static u8 CreateSpinningPokeballSprite(void); static void SpriteCB_DestroySpinningPokeball(struct Sprite *sprite); static void FreeNonTrainerPicTiles(void); -static u8 CreatePersonPicSprite(u8 a0); -static void DestroyPersonPicSprite(u8 a0, u16 a1); -static void UpdateIconDescriptionBox(u8 a0); -static void sub_812DB10(void); +static u8 CreatePersonPicSprite(u8 fcPersonIdx); +static void DestroyPersonPicSprite(u8 taskId, u16 who); +static void UpdateIconDescriptionBox(u8 whichText); +static void UpdateIconDescriptionBoxOff(void); static void FC_CreateListMenu(void); static void SpriteCB_FCSpinningPokeball(struct Sprite * sprite); static void InitListMenuTemplate(void); -static void FC_MoveCursorFunc(s32, bool8, struct ListMenu *); -static void sub_812DD50(u8 taskId); +static void FC_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu * list); +static void Task_SwitchToPickMode(u8 taskId); static void PrintCancelDescription(void); static void FC_DoMoveCursor(s32 itemIndex, bool8 onInit); static u8 FC_PopulateListMenu(void); @@ -118,10 +118,10 @@ static void FC_PutWindowTilemapAndCopyWindowToVramMode3_2(u8 windowId); static void FC_CreateScrollIndicatorArrowPair(void); static void FreeListMenuSelectorArrowPairResources(void); static u16 FameCheckerGetCursorY(void); -static void FlipBitUnk23_0(bool8); -static void sub_812E110(u8 taskId); -static void sub_812E178(u8 a0, s16 a1); -static void PlaceListMenuCursor(bool8 a0); +static void HandleFlavorTextModeSwitch(bool8 state); +static void Task_FCOpenOrCloseInfoBox(u8 taskId); +static void UpdateInfoBoxTilemap(u8 bg, s16 state); +static void PlaceListMenuCursor(bool8 isActive); extern const u8 gFameCheckerText_Cancel[]; extern const u8 gFameCheckerText_ListMenuCursor[]; @@ -447,7 +447,7 @@ void UseFameChecker(MainCallback savedCallback) sFameCheckerData->listMenuCurIdx = 0; sFameCheckerData->listMenuTopIdx2 = 0; sFameCheckerData->listMenuDrawnSelIdx = 0; - sFameCheckerData->unk_23_0 = FALSE; + sFameCheckerData->viewingFlavorText = FALSE; PlaySE(SE_W202); SetMainCallback2(MainCB2_LoadFameChecker); } @@ -510,7 +510,7 @@ static void MainCB2_LoadFameChecker(void) break; case 6: LoadUISpriteSheetsAndPalettes(); - CreateAllFlavorTextIcons(0); + CreateAllFlavorTextIcons(FAMECHECKER_OAK); WipeMsgBoxAndTransfer(); BeginNormalPaletteFade(0xFFFFFFFF,0, 16, 0, 0); gMain.state++; @@ -523,7 +523,7 @@ static void MainCB2_LoadFameChecker(void) SetVBlankCallback(FC_VBlankCallback); sFameCheckerData->listMenuTopIdx = 0; FC_CreateScrollIndicatorArrowPair(); - sub_812E178(1, 4); + UpdateInfoBoxTilemap(1, 4); CreateTask(Task_WaitFadeOnInit, 0x08); SetMainCallback2(MainCB2_FameCheckerMain); gMain.state = 0; @@ -549,7 +549,7 @@ static void Task_TopMenuHandleInput(u8 taskId) u8 i; struct Task *task = &gTasks[taskId]; s16 * data = gTasks[taskId].data; - if (FindTaskIdByFunc(sub_812E110) == 0xFF) + if (FindTaskIdByFunc(Task_FCOpenOrCloseInfoBox) == 0xFF) { RunTextPrinters(); if ((JOY_NEW(SELECT_BUTTON)) && !sFameCheckerData->inPickMode && sFameCheckerData->savedCallback != UseFameCheckerFromMenu) @@ -566,8 +566,8 @@ static void Task_TopMenuHandleInput(u8 taskId) PlaySE(SE_W100); FillWindowPixelRect(FCWINDOWID_ICONDESC, 0x00, 0, 0, 88, 32); FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_ICONDESC); - sub_812E178(2, 4); - sub_812E178(1, 5); + UpdateInfoBoxTilemap(2, 4); + UpdateInfoBoxTilemap(1, 5); PrintUIHelp(1); task->data[2] = CreatePersonPicSprite(sFameCheckerData->unlockedPersons[cursorPos]); gSprites[task->data[2]].pos2.x = 0xF0; @@ -597,7 +597,7 @@ static void Task_TopMenuHandleInput(u8 taskId) if (i != task->data[1]) SetMessageSelectorIconObjMode(sFameCheckerData->spriteIds[i], ST_OAM_OBJ_BLEND); } - gUnknown_3005EC8 = 0xFF; + gIconDescriptionBoxIsOpen = 0xFF; PlaceListMenuCursor(FALSE); PrintUIHelp(2); if (gSprites[sFameCheckerData->spriteIds[task->data[1]]].data[1] != 0xFF) // not a ? tile @@ -631,7 +631,7 @@ static bool8 TryExitPickMode(u8 taskId) WipeMsgBoxAndTransfer(); task->func = Task_ExitPickMode; MessageBoxPrintEmptyText(); - sFameCheckerData->unk_23_2 = FALSE; + sFameCheckerData->pickModeOverCancel = FALSE; return TRUE; } return FALSE; @@ -666,8 +666,8 @@ static void Task_ExitPickMode(u8 taskId) { if (sFameCheckerData->personHasUnlockedPanels) PrintUIHelp(0); - sub_812E178(1, 4); - sub_812E178(2, 2); + UpdateInfoBoxTilemap(1, 4); + UpdateInfoBoxTilemap(2, 2); sFameCheckerData->inPickMode = FALSE; DestroyPersonPicSprite(taskId, FameCheckerGetCursorY()); task->func = Task_TopMenuHandleInput; @@ -695,8 +695,8 @@ static void Task_FlavorTextDisplayHandleInput(u8 taskId) SetMessageSelectorIconObjMode(sFameCheckerData->spriteIds[i], ST_OAM_OBJ_NORMAL); WipeMsgBoxAndTransfer(); gSprites[task->data[0]].callback = SpriteCB_DestroyFlavorTextIconSelectorCursor; - if (gUnknown_3005EC8 != 0xFF) - sub_812DB10(); + if (gIconDescriptionBoxIsOpen != 0xFF) + UpdateIconDescriptionBoxOff(); PlaceListMenuCursor(TRUE); PrintUIHelp(0); FC_CreateScrollIndicatorArrowPair(); @@ -760,8 +760,8 @@ static void FC_MoveSelectorCursor(u8 taskId, s8 dx, s8 dy) PrintSelectedNameInBrightGreen(taskId); UpdateIconDescriptionBox(data[1]); } - else if (gUnknown_3005EC8 != 0xFF) - sub_812DB10(); + else if (gIconDescriptionBoxIsOpen != 0xFF) + UpdateIconDescriptionBoxOff(); } static void GetPickModeText(void) @@ -913,14 +913,13 @@ static void DestroyAllFlavorTextIcons(void) } } -static bool8 CreateAllFlavorTextIcons(u8 a0) +static bool8 CreateAllFlavorTextIcons(u8 who) { - // r8 <- a0 bool8 result = FALSE; u8 i; for (i = 0; i < 6; i++) { - if ((gSaveBlock1Ptr->fameChecker[sFameCheckerData->unlockedPersons[a0]].flavorTextFlags >> i) & 1) + if ((gSaveBlock1Ptr->fameChecker[sFameCheckerData->unlockedPersons[who]].flavorTextFlags >> i) & 1) { sFameCheckerData->spriteIds[i] = sub_805EB44( sFameCheckerArrayNpcGraphicsIds[sFameCheckerData->unlockedPersons[a0] * 6 + i], @@ -1206,12 +1205,12 @@ static void DestroyPersonPicSprite(u8 taskId, u16 who) sub_810C2E8(data[2]); } -static void UpdateIconDescriptionBox(u8 a0) +static void UpdateIconDescriptionBox(u8 whichText) { s32 width; - u32 idx = 6 * sFameCheckerData->unlockedPersons[FameCheckerGetCursorY()] + a0; - FlipBitUnk23_0(TRUE); - gUnknown_3005EC8 = 1; + u32 idx = 6 * sFameCheckerData->unlockedPersons[FameCheckerGetCursorY()] + whichText; + HandleFlavorTextModeSwitch(TRUE); + gIconDescriptionBoxIsOpen = 1; FillWindowPixelRect(FCWINDOWID_ICONDESC, 0x00, 0, 0, 0x58, 0x20); width = (0x54 - GetStringWidth(0, sFlavorTextOriginLocationTexts[idx], 0)) / 2; AddTextPrinterParametrized2(FCWINDOWID_ICONDESC, 0, width, 0, 0, 2, &gUnknown_845F5E3, -1, sFlavorTextOriginLocationTexts[idx]); @@ -1221,10 +1220,10 @@ static void UpdateIconDescriptionBox(u8 a0) FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_ICONDESC); } -static void sub_812DB10(void) +static void UpdateIconDescriptionBoxOff(void) { - FlipBitUnk23_0(FALSE); - gUnknown_3005EC8 = 0xFF; + HandleFlavorTextModeSwitch(FALSE); + gIconDescriptionBoxIsOpen = 0xFF; } static void FC_CreateListMenu(void) @@ -1259,11 +1258,11 @@ static void InitListMenuTemplate(void) static void FC_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list) { - u16 sp8; + u16 listMenuTopIdx; u8 taskId; - u16 r9; + u16 personIdx; sLastMenuIdx = 0; - r9 = sFameCheckerData->listMenuTopIdx2 + sFameCheckerData->listMenuDrawnSelIdx; + personIdx = sFameCheckerData->listMenuTopIdx2 + sFameCheckerData->listMenuDrawnSelIdx; FC_DoMoveCursor(itemIndex, onInit); taskId = FindTaskIdByFunc(Task_TopMenuHandleInput); if (taskId != 0xFF) @@ -1271,24 +1270,24 @@ static void FC_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list struct Task *task = &gTasks[taskId]; PlaySE(SE_SELECT); task->data[1] = 0; - get_coro_args_x18_x1A(sFameCheckerData->listMenuTaskId, &sp8, NULL); - sFameCheckerData->listMenuTopIdx = sp8; + get_coro_args_x18_x1A(sFameCheckerData->listMenuTaskId, &listMenuTopIdx, NULL); + sFameCheckerData->listMenuTopIdx = listMenuTopIdx; if (itemIndex != sFameCheckerData->numUnlockedPersons - 1) { DestroyAllFlavorTextIcons(); CreateAllFlavorTextIcons(itemIndex); if (sFameCheckerData->inPickMode) { - if (!sFameCheckerData->unk_23_2) + if (!sFameCheckerData->pickModeOverCancel) { - DestroyPersonPicSprite(taskId, r9); + DestroyPersonPicSprite(taskId, personIdx); sLastMenuIdx = itemIndex; - task->func = sub_812DD50; + task->func = Task_SwitchToPickMode; } else { gSprites[task->data[2]].invisible = FALSE; - sFameCheckerData->unk_23_2 = FALSE; + sFameCheckerData->pickModeOverCancel = FALSE; gSprites[task->data[2]].data[0] = 0; GetPickModeText(); } @@ -1305,7 +1304,7 @@ static void FC_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list if (sFameCheckerData->inPickMode) { gSprites[task->data[2]].invisible = TRUE; - sFameCheckerData->unk_23_2 = TRUE; + sFameCheckerData->pickModeOverCancel = TRUE; } else { @@ -1319,7 +1318,7 @@ static void FC_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list } } -static void sub_812DD50(u8 taskId) +static void Task_SwitchToPickMode(u8 taskId) { struct Task * task = &gTasks[taskId]; task->data[2] = CreatePersonPicSprite(sFameCheckerData->unlockedPersons[sLastMenuIdx]); @@ -1437,29 +1436,29 @@ static u16 FameCheckerGetCursorY(void) return sp0 + sp2; } -static void FlipBitUnk23_0(bool8 a0) +static void HandleFlavorTextModeSwitch(bool8 state) { - if (sFameCheckerData->unk_23_0 != a0) + if (sFameCheckerData->viewingFlavorText != state) { - u8 taskId = FindTaskIdByFunc(sub_812E110); + u8 taskId = FindTaskIdByFunc(Task_FCOpenOrCloseInfoBox); if (taskId == 0xFF) - taskId = CreateTask(sub_812E110, 8); + taskId = CreateTask(Task_FCOpenOrCloseInfoBox, 8); gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = 4; - if (a0 == TRUE) + if (state == TRUE) { gTasks[taskId].data[2] = 1; - sFameCheckerData->unk_23_0 = TRUE; + sFameCheckerData->viewingFlavorText = TRUE; } else { gTasks[taskId].data[2] = 4; - sFameCheckerData->unk_23_0 = FALSE; + sFameCheckerData->viewingFlavorText = FALSE; } } } -static void sub_812E110(u8 taskId) +static void Task_FCOpenOrCloseInfoBox(u8 taskId) { struct Task * task = &gTasks[taskId]; switch (task->data[0]) @@ -1467,7 +1466,7 @@ static void sub_812E110(u8 taskId) case 0: if (--task->data[1] == 0) { - sub_812E178(1, 0); + UpdateInfoBoxTilemap(1, 0); task->data[1] = 4; task->data[0]++; } @@ -1475,16 +1474,16 @@ static void sub_812E110(u8 taskId) case 1: if (--task->data[1] == 0) { - sub_812E178(1, task->data[2]); + UpdateInfoBoxTilemap(1, task->data[2]); DestroyTask(taskId); } break; } } -static void sub_812E178(u8 bg, s16 a1) +static void UpdateInfoBoxTilemap(u8 bg, s16 state) { - if (a1 == 0 || a1 == 3) + if (state == 0 || state == 3) { FillBgTilemapBufferRect(bg, 0x8C, 14, 10, 1, 1, 1); FillBgTilemapBufferRect(bg, 0xA1, 15, 10, 10, 1, 1); @@ -1498,7 +1497,7 @@ static void sub_812E178(u8 bg, s16 a1) FillBgTilemapBufferRect(bg, 0x92, 25, 12, 1, 1, 1); FillBgTilemapBufferRect(bg, 0x93, 26, 12, 1, 1, 1); } - else if (a1 == 1) + else if (state == 1) { FillBgTilemapBufferRect(bg, 0x9B, 14, 10, 1, 1, 1); FillBgTilemapBufferRect(bg, 0x9C, 15, 10, 11, 1, 1); @@ -1510,7 +1509,7 @@ static void sub_812E178(u8 bg, s16 a1) FillBgTilemapBufferRect(bg, 0x9F, 15, 12, 11, 1, 1); FillBgTilemapBufferRect(bg, 0x99, 26, 12, 1, 1, 1); } - else if (a1 == 2) + else if (state == 2) { FillBgTilemapBufferRect(bg, 0x94, 14, 10, 1, 1, 1); FillBgTilemapBufferRect(bg, 0x95, 15, 10, 11, 1, 1); @@ -1522,7 +1521,7 @@ static void sub_812E178(u8 bg, s16 a1) FillBgTilemapBufferRect(bg, 0x98, 15, 12, 11, 1, 1); FillBgTilemapBufferRect(bg, 0x99, 26, 12, 1, 1, 1); } - else if (a1 == 4) + else if (state == 4) { FillBgTilemapBufferRect(bg, 0x83, 14, 10, 1, 1, 1); FillBgTilemapBufferRect(bg, 0xA0, 15, 10, 10, 1, 1); @@ -1537,7 +1536,7 @@ static void sub_812E178(u8 bg, s16 a1) FillBgTilemapBufferRect(bg, 0x84, 25, 12, 1, 1, 1); FillBgTilemapBufferRect(bg, 0x85, 26, 12, 1, 1, 1); } - else if (a1 == 5) + else if (state == 5) { FillBgTilemapBufferRect(bg, 0x00, 14, 10, 13, 3, 1); } -- cgit v1.2.3 From d7237d2cb74ea02b71742b09a1db2cf2721fb999 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 28 Nov 2018 08:47:47 -0500 Subject: Also name the text color assets --- src/fame_checker.c | 62 +++++++++++++++++++++++++++--------------------------- 1 file changed, 31 insertions(+), 31 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index 85cea3015..67344edbc 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -149,12 +149,12 @@ static const u8 sDaisySpriteGfx[] = INCBIN_U8("data/fame_checker/img_845e560.4bp static const u16 sDaisySpritePalette[] = INCBIN_U16("data/fame_checker/pal_845ed60.gbapal"); static const u8 sOakSpriteGfx[] = INCBIN_U8("data/fame_checker/img_845ed80.4bpp"); static const u16 sOakSpritePalette[] = INCBIN_U16("data/fame_checker/pal_845f580.gbapal"); -static const u16 gUnknown_845F5A0[] = INCBIN_U16("data/fame_checker/pal_845f5a0.gbapal"); +static const u16 gUnknown_845F5A0[] = INCBIN_U16("data/fame_checker/pal_845f5a0.gbapal"); // unused? static const u16 sSilhouettePalette[] = INCBIN_U16("data/fame_checker/pal_845f5c0.gbapal"); -static const struct TextColor gUnknown_845F5E0 = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}; -static const struct TextColor gUnknown_845F5E3 = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, 0x03}; -static const struct TextColor gUnknown_845F5E6 = {TEXT_COLOR_TRANSPARENT, 0x06, 0x07}; +static const struct TextColor sTextColor_White = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY}; +static const struct TextColor sTextColor_DkGrey = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, 0x03}; +static const struct TextColor sTextColor_Green = {TEXT_COLOR_TRANSPARENT, 0x06, 0x07}; static const u16 sTrainerIdxs[] = { FC_NONTRAINER_START + 0, // OAK @@ -766,9 +766,9 @@ static void FC_MoveSelectorCursor(u8 taskId, s8 dx, s8 dy) static void GetPickModeText(void) { - u8 r8 = 0; - u16 r6 = FameCheckerGetCursorY(); - if (gSaveBlock1Ptr->fameChecker[sFameCheckerData->unlockedPersons[r6]].pickState != FCPICKSTATE_COLORED) + u8 offset = 0; + u16 who = FameCheckerGetCursorY(); + if (gSaveBlock1Ptr->fameChecker[sFameCheckerData->unlockedPersons[who]].pickState != FCPICKSTATE_COLORED) { WipeMsgBoxAndTransfer(); MessageBoxPrintEmptyText(); @@ -777,8 +777,8 @@ static void GetPickModeText(void) { FillWindowPixelRect(FCWINDOWID_MSGBOX, 0x11, 0, 0, 0xd0, 0x20); if (HasUnlockedAllFlavorTextsForCurrentPerson() == TRUE) - r8 = NUM_FAMECHECKER_PERSONS; - StringExpandPlaceholders(gStringVar4, sFameCheckerNameAndQuotesPointers[sFameCheckerData->unlockedPersons[r6] + r8]); + offset = NUM_FAMECHECKER_PERSONS; + StringExpandPlaceholders(gStringVar4, sFameCheckerNameAndQuotesPointers[sFameCheckerData->unlockedPersons[who] + offset]); AddTextPrinterParametrized(FCWINDOWID_MSGBOX, 2, gStringVar4, sub_80F78A8(), NULL, 2, 1, 3); FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX); } @@ -833,7 +833,7 @@ static void Task_StartToCloseFameChecker(u8 taskId) static void Task_DestroyAssetsAndCloseFameChecker(u8 taskId) { - u8 r4; + u8 i; if (!gPaletteFade.active) { @@ -843,9 +843,9 @@ static void Task_DestroyAssetsAndCloseFameChecker(u8 taskId) FreeSpriteOamMatrix(&gSprites[gTasks[taskId].data[3]]); DestroySprite(&gSprites[gTasks[taskId].data[3]]); } - for (r4 = 0; r4 < 6; r4++) + for (i = 0; i < 6; i++) { - DestroySprite(&gSprites[sFameCheckerData->spriteIds[r4]]); + DestroySprite(&gSprites[sFameCheckerData->spriteIds[i]]); } FreeNonTrainerPicTiles(); FreeSpinningPokeballSpriteResources(); @@ -900,7 +900,7 @@ static void PrintUIHelp(u8 state) } width = GetStringWidth(0, src, 0); FillWindowPixelRect(FCWINDOWID_UIHELP, 0x00, 0, 0, 0xc0, 0x10); - AddTextPrinterParametrized2(FCWINDOWID_UIHELP, 0, 188 - width, 0, 0, 2, &gUnknown_845F5E0, -1, src); + AddTextPrinterParametrized2(FCWINDOWID_UIHELP, 0, 188 - width, 0, 0, 2, &sTextColor_White, -1, src); FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_UIHELP); } @@ -1213,10 +1213,10 @@ static void UpdateIconDescriptionBox(u8 whichText) gIconDescriptionBoxIsOpen = 1; FillWindowPixelRect(FCWINDOWID_ICONDESC, 0x00, 0, 0, 0x58, 0x20); width = (0x54 - GetStringWidth(0, sFlavorTextOriginLocationTexts[idx], 0)) / 2; - AddTextPrinterParametrized2(FCWINDOWID_ICONDESC, 0, width, 0, 0, 2, &gUnknown_845F5E3, -1, sFlavorTextOriginLocationTexts[idx]); + AddTextPrinterParametrized2(FCWINDOWID_ICONDESC, 0, width, 0, 0, 2, &sTextColor_DkGrey, -1, sFlavorTextOriginLocationTexts[idx]); StringExpandPlaceholders(gStringVar1, sFlavorTextOriginObjectNameTexts[idx]); width = (0x54 - GetStringWidth(0, gStringVar1, 0)) / 2; - AddTextPrinterParametrized2(FCWINDOWID_ICONDESC, 0, width, 10, 0, 2, &gUnknown_845F5E3, -1, gStringVar1); + AddTextPrinterParametrized2(FCWINDOWID_ICONDESC, 0, width, 10, 0, 2, &sTextColor_DkGrey, -1, gStringVar1); FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_ICONDESC); } @@ -1308,10 +1308,10 @@ static void FC_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list } else { - u8 r2; - for (r2 = 0; r2 < 6; r2++) + u8 iwho; + for (iwho = 0; iwho < 6; iwho++) { - gSprites[sFameCheckerData->spriteIds[r2]].invisible = TRUE; + gSprites[sFameCheckerData->spriteIds[i]].invisible = TRUE; } } } @@ -1336,24 +1336,24 @@ static void PrintCancelDescription(void) static void FC_DoMoveCursor(s32 itemIndex, bool8 onInit) { - u16 sp14; - u16 sp16; - u16 r6; - get_coro_args_x18_x1A(sFameCheckerData->listMenuTaskId, &sp14, &sp16); - r6 = sp14 + sp16; - AddTextPrinterParametrized2(FCWINDOWID_LIST, 2, 8, 14 * sp16 + 4, 0, 0, &gUnknown_845F5E6, 0, sListMenuItems[itemIndex].unk_00); + u16 topIdx; + u16 drawnSelIdx; + u16 who; + get_coro_args_x18_x1A(sFameCheckerData->listMenuTaskId, &topIdx, &drawnSelIdx); + who = topIdx + drawnSelIdx; + AddTextPrinterParametrized2(FCWINDOWID_LIST, 2, 8, 14 * drawnSelIdx + 4, 0, 0, &sTextColor_Green, 0, sListMenuItems[itemIndex].unk_00); if (!onInit) { - if (sp14 < sFameCheckerData->listMenuTopIdx2) + if (topIdx < sFameCheckerData->listMenuTopIdx2) sFameCheckerData->listMenuDrawnSelIdx++; - else if (sp14 > sFameCheckerData->listMenuTopIdx2 && r6 != sFameCheckerData->numUnlockedPersons - 1) + else if (topIdx > sFameCheckerData->listMenuTopIdx2 && who != sFameCheckerData->numUnlockedPersons - 1) sFameCheckerData->listMenuDrawnSelIdx--; - AddTextPrinterParametrized2(FCWINDOWID_LIST, 2, 8, 14 * sFameCheckerData->listMenuDrawnSelIdx + 4, 0, 0, &gUnknown_845F5E3, 0, sListMenuItems[sFameCheckerData->listMenuCurIdx].unk_00); + AddTextPrinterParametrized2(FCWINDOWID_LIST, 2, 8, 14 * sFameCheckerData->listMenuDrawnSelIdx + 4, 0, 0, &sTextColor_DkGrey, 0, sListMenuItems[sFameCheckerData->listMenuCurIdx].unk_00); } sFameCheckerData->listMenuCurIdx = itemIndex; - sFameCheckerData->listMenuDrawnSelIdx = sp16; - sFameCheckerData->listMenuTopIdx2 = sp14; + sFameCheckerData->listMenuDrawnSelIdx = drawnSelIdx; + sFameCheckerData->listMenuTopIdx2 = topIdx; } static u8 FC_PopulateListMenu(void) @@ -1547,7 +1547,7 @@ static void PlaceListMenuCursor(bool8 isActive) { u16 cursorY = ListMenuGetYCoordForPrintingArrowCursor(sFameCheckerData->listMenuTaskId); if (isActive == TRUE) - AddTextPrinterParametrized2(FCWINDOWID_LIST, 2, 0, cursorY, 0, 0, &gUnknown_845F5E3, 0, gFameCheckerText_ListMenuCursor); + AddTextPrinterParametrized2(FCWINDOWID_LIST, 2, 0, cursorY, 0, 0, &sTextColor_DkGrey, 0, gFameCheckerText_ListMenuCursor); else - AddTextPrinterParametrized2(FCWINDOWID_LIST, 2, 0, cursorY, 0, 0, &gUnknown_845F5E0, 0, gFameCheckerText_ListMenuCursor); + AddTextPrinterParametrized2(FCWINDOWID_LIST, 2, 0, cursorY, 0, 0, &sTextColor_White, 0, gFameCheckerText_ListMenuCursor); } -- cgit v1.2.3 From cb9f24a9a9f71d711150c6c61e2b6e2b8f99a3d4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 28 Nov 2018 10:15:08 -0500 Subject: Fix errors introduced in precious commit --- src/fame_checker.c | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index 67344edbc..64a73c7a4 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -922,7 +922,7 @@ static bool8 CreateAllFlavorTextIcons(u8 who) if ((gSaveBlock1Ptr->fameChecker[sFameCheckerData->unlockedPersons[who]].flavorTextFlags >> i) & 1) { sFameCheckerData->spriteIds[i] = sub_805EB44( - sFameCheckerArrayNpcGraphicsIds[sFameCheckerData->unlockedPersons[a0] * 6 + i], + sFameCheckerArrayNpcGraphicsIds[sFameCheckerData->unlockedPersons[who] * 6 + i], i, 47 * (i % 3) + 0x72, 27 * (i / 3) + 0x2F @@ -1308,8 +1308,8 @@ static void FC_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list } else { - u8 iwho; - for (iwho = 0; iwho < 6; iwho++) + u8 i; + for (i = 0; i < 6; i++) { gSprites[sFameCheckerData->spriteIds[i]].invisible = TRUE; } @@ -1336,24 +1336,24 @@ static void PrintCancelDescription(void) static void FC_DoMoveCursor(s32 itemIndex, bool8 onInit) { - u16 topIdx; - u16 drawnSelIdx; + u16 listY; + u16 cursorY; u16 who; - get_coro_args_x18_x1A(sFameCheckerData->listMenuTaskId, &topIdx, &drawnSelIdx); - who = topIdx + drawnSelIdx; - AddTextPrinterParametrized2(FCWINDOWID_LIST, 2, 8, 14 * drawnSelIdx + 4, 0, 0, &sTextColor_Green, 0, sListMenuItems[itemIndex].unk_00); + get_coro_args_x18_x1A(sFameCheckerData->listMenuTaskId, &listY, &cursorY); + who = listY + cursorY; + AddTextPrinterParametrized2(FCWINDOWID_LIST, 2, 8, 14 * cursorY + 4, 0, 0, &sTextColor_Green, 0, sListMenuItems[itemIndex].unk_00); if (!onInit) { - if (topIdx < sFameCheckerData->listMenuTopIdx2) + if (listY < sFameCheckerData->listMenuTopIdx2) sFameCheckerData->listMenuDrawnSelIdx++; - else if (topIdx > sFameCheckerData->listMenuTopIdx2 && who != sFameCheckerData->numUnlockedPersons - 1) + else if (listY > sFameCheckerData->listMenuTopIdx2 && who != sFameCheckerData->numUnlockedPersons - 1) sFameCheckerData->listMenuDrawnSelIdx--; AddTextPrinterParametrized2(FCWINDOWID_LIST, 2, 8, 14 * sFameCheckerData->listMenuDrawnSelIdx + 4, 0, 0, &sTextColor_DkGrey, 0, sListMenuItems[sFameCheckerData->listMenuCurIdx].unk_00); } sFameCheckerData->listMenuCurIdx = itemIndex; - sFameCheckerData->listMenuDrawnSelIdx = drawnSelIdx; - sFameCheckerData->listMenuTopIdx2 = topIdx; + sFameCheckerData->listMenuDrawnSelIdx = cursorY; + sFameCheckerData->listMenuTopIdx2 = listY; } static u8 FC_PopulateListMenu(void) @@ -1400,7 +1400,7 @@ static void FC_PutWindowTilemapAndCopyWindowToVramMode3_2(u8 windowId) static void FC_CreateScrollIndicatorArrowPair(void) { - struct ScrollIndicatorArrowPairTemplate sp0 = { + struct ScrollIndicatorArrowPairTemplate template = { 2, 40, 26, @@ -1417,9 +1417,9 @@ static void FC_CreateScrollIndicatorArrowPair(void) if (sFameCheckerData->numUnlockedPersons > 5) { - sp0.unk_06 = 0; - sp0.unk_08 = sFameCheckerData->numUnlockedPersons - 5; - sFameCheckerData->scrollIndicatorPairTaskId = AddScrollIndicatorArrowPair(&sp0, &sFameCheckerData->listMenuTopIdx); + template.unk_06 = 0; + template.unk_08 = sFameCheckerData->numUnlockedPersons - 5; + sFameCheckerData->scrollIndicatorPairTaskId = AddScrollIndicatorArrowPair(&template, &sFameCheckerData->listMenuTopIdx); } } @@ -1431,9 +1431,9 @@ static void FreeListMenuSelectorArrowPairResources(void) static u16 FameCheckerGetCursorY(void) { - u16 sp0, sp2; - get_coro_args_x18_x1A(sFameCheckerData->listMenuTaskId, &sp0, &sp2); - return sp0 + sp2; + u16 listY, cursorY; + get_coro_args_x18_x1A(sFameCheckerData->listMenuTaskId, &listY, &cursorY); + return listY + cursorY; } static void HandleFlavorTextModeSwitch(bool8 state) -- cgit v1.2.3 From 144027e4fad045d41afea0dfc8bd2bed27a64e6d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 28 Nov 2018 10:50:41 -0500 Subject: Dump another fame checker tilemap --- src/fame_checker.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index 64a73c7a4..617ba1522 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -478,11 +478,11 @@ static void MainCB2_LoadFameChecker(void) gMain.state++; break; case 3: - LoadBgTiles(3, gUnknown_8E9F260, sizeof(gUnknown_8E9F260), 0); - CopyToBgTilemapBufferRect(3, gUnknown_8EA0700, 0, 0, 32, 32); - LoadPalette(gUnknown_8E9F220 + 0x00, 0x00, 0x40); - LoadPalette(gUnknown_8E9F220 + 0x10, 0x10, 0x20); - CopyToBgTilemapBufferRect(2, gUnknown_8EA0F00, 0, 0, 32, 32); + LoadBgTiles(3, gFameCheckerBgTiles, sizeof(gFameCheckerBgTiles), 0); + CopyToBgTilemapBufferRect(3, gFameCheckerBg3Tilemap, 0, 0, 32, 32); + LoadPalette(gFameCheckerBgPals + 0x00, 0x00, 0x40); + LoadPalette(gFameCheckerBgPals + 0x10, 0x10, 0x20); + CopyToBgTilemapBufferRect(2, gFameCheckerBg2Tilemap, 0, 0, 32, 32); CopyToBgTilemapBufferRect_ChangePalette(1, sFameCheckerTilemap, 30, 0, 32, 32, 0x11); LoadPalette(stdpal_get(2), 0xF0, 0x20); gMain.state++; -- cgit v1.2.3 From 013fcf86fbeccf8d527e43a4f5aaf44402daba48 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 28 Nov 2018 13:49:46 -0500 Subject: Fix spacing in globah.h --- src/fame_checker.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index 617ba1522..ed38406cb 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -129,7 +129,7 @@ extern const u8 gFameCheckerText_FameCheckerWillBeClosed[]; extern const u8 gFameCheckerText_ClearTextbox[]; extern const u8 gFameCheckerText_MainScreenUI[]; // "{KEYGFX_START_BUTTON}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_A_BUTTON}OK$" extern const u8 gFameCheckerText_PickScreenUI[]; // "{KEYGFX_START_BUTTON}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_B_BUTTON}CANCEL$" -extern const u8 gFameCheckerText_FlavorTextUI[]; // "{KEYGFX_DPAD_ANY}PICK {KEYGFX_A_BUTTON}READ {UNKNOWN_F8 0x01}CANCEL$" +extern const u8 gFameCheckerText_FlavorTextUI[]; // "{KEYGFX_DPAD_ANY}PICK {KEYGFX_A_BUTTON}READ {KEYGFX_B_BUTTON}CANCEL$" extern const u8 gFameCheckerOakName[]; // "OAK$" extern const u8 gFameCheckerDaisyName[]; // "DAISY$" extern const u8 gFameCheckerBillName[]; // "BILL$" -- cgit v1.2.3 From 21a301b77d01851a9d019b594ff11c547cc6514f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 28 Nov 2018 22:15:11 -0500 Subject: through sub_81436EC --- src/mevent.c | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 src/mevent.c (limited to 'src') diff --git a/src/mevent.c b/src/mevent.c new file mode 100644 index 000000000..8b710e3f3 --- /dev/null +++ b/src/mevent.c @@ -0,0 +1,75 @@ +#include "global.h" +#include "main.h" +#include "decompress.h" +#include "link.h" +#include "unk_815c27c.h" + +struct MEvent_Str_1 +{ + u16 unk_000; + u32 unk_004; + u32 unk_008; +}; + +void sub_81435DC(struct MEvent_Str_1 *a0, u32 a1, u32 a2) +{ + vu16 imeBak = REG_IME; + REG_IME = 0; + gIntrTable[1] = sub_815C6D4; + gIntrTable[2] = sub_815C6C4; + sub_815C8C8(); + sub_815C960(); + REG_IE |= INTR_FLAG_VCOUNT; + REG_IME = imeBak; + a0->unk_000 = 0; + a0->unk_004 = a1; + a0->unk_008 = a2; +} + +void sub_8143644(void) +{ + vu16 imeBak = REG_IME; + REG_IME = 0; + sub_815C960(); + sub_815C91C(); + RestoreSerialTimer3IntrHandlers(); + REG_IME = imeBak; +} + +u8 sub_8143674(struct MEvent_Str_1 *a0) +{ + u8 resp = 0; + a0->unk_000 = sub_815C498(1, a0->unk_004, a0->unk_008, 0); + if ((a0->unk_000 & 0x13) == 0x10) + resp = 1; + if (a0->unk_000 & 8) + resp = 2; + if (a0->unk_000 & 4) + resp = 3; + gUnknown_3003F84 = 0; + return resp; +} + +void sub_81436BC(void) +{ + memset(gDecompressionBuffer, 0, 0x2000); + gUnknown_202271A = 0x5502; + sub_8009804(); + SetSuppressLinkErrorMessage(TRUE); +} + +bool8 sub_81436EC(void) +{ + vu16 imeBak = REG_IME; + u16 data[4]; + REG_IME = 0; + *(u64 *)data = gUnknown_3003FB4; + REG_IME = imeBak; + if ( data[0] == 0xB9A0 + && data[1] == 0xCCD0 + && data[2] == 0xFFFF + && data[3] == 0xFFFF + ) + return TRUE; + return FALSE; +} -- cgit v1.2.3 From 2943997dcbab30619e0410b294dc109fd3e08e83 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 29 Nov 2018 09:54:26 -0500 Subject: through sub_81438F0 --- src/mevent.c | 146 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) (limited to 'src') diff --git a/src/mevent.c b/src/mevent.c index 8b710e3f3..27abf65c3 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -1,5 +1,9 @@ #include "global.h" +#include "constants/songs.h" +#include "malloc.h" +#include "sound.h" #include "main.h" +#include "task.h" #include "decompress.h" #include "link.h" #include "unk_815c27c.h" @@ -11,6 +15,29 @@ struct MEvent_Str_1 u32 unk_008; }; +struct MEvent_Str_2 +{ + u8 fill_00[0x40]; +}; + +struct MEventTaskData1 +{ + u16 t00; + u16 t02; + u16 t04; + u16 t06; + u8 t08; + u8 t09; + u8 t0A; + u8 t0B; + u8 t0C; + u8 t0D; + u8 t0E; + struct MEvent_Str_2 *t10; +}; + +void sub_8143910(u8 taskId); + void sub_81435DC(struct MEvent_Str_1 *a0, u32 a1, u32 a2) { vu16 imeBak = REG_IME; @@ -73,3 +100,122 @@ bool8 sub_81436EC(void) return TRUE; return FALSE; } + +bool8 sub_814374C(void) +{ + if (sub_800AA48() && GetLinkPlayerCount_2() == 2) + return TRUE; + return FALSE; +} + +u8 sub_8143770(u8 * r4, u16 * r5) +{ + if ((*r4 == 3 || *r4 == 4 || *r4 == 5) && HasLinkErrorOccurred()) + { + *r4 = 0; + return 3; + } + switch (*r4) + { + case 0: + if (sub_800AA48() && GetLinkPlayerCount_2() > 1) + { + *r4 = 1; + ; + } + else if (gMain.newKeys & B_BUTTON) + { + *r4 = 0; + return 1; + } + break; + case 1: + if (++(*r5) > 5) + { + *r5 = 0; + *r4 = 2; + } + break; + case 2: + if (GetLinkPlayerCount_2() == 2) + { + PlaySE(SE_TOY_G); + sub_800A5BC(); + *r5 = 0; + *r4 = 3; + } + else if (gMain.newKeys & B_BUTTON) + { + *r4 = 0; + return 1; + } + break; + case 3: + if (++(*r5) > 30) + { + *r4 = 0; + return 5; + } + else if (IsLinkConnectionEstablished()) + { + if (gUnknown_3003F64) + { + if (IsLinkPlayerDataExchangeComplete()) + { + *r4 = 0; + return 2; + } + else + *r4 = 4; + } + else + *r4 = 3; + } + break; + case 4: + sub_800AA80(0); + *r4 = 5; + break; + case 5: + if (!gUnknown_3003F64) + { + *r4 = 0; + return 4; + } + break; + } + return 0; +} + +void sub_81438A0(void) +{ + u8 taskId = CreateTask(sub_8143910, 0); + struct MEventTaskData1 *data = (struct MEventTaskData1 *)gTasks[taskId].data; + data->t08 = 0; + data->t09 = 0; + data->t0A = 0; + data->t0B = 0; + data->t0C = 0; + data->t0D = 0; + data->t00 = 0; + data->t02 = 0; + data->t04 = 0; + data->t06 = 0; + data->t0E = 0; + data->t10 = AllocZeroed(sizeof(struct MEvent_Str_2)); +} + +void sub_81438E8(u16 *a0) +{ + *a0 = 0; +} + +bool8 sub_81438F0(u16 * a0, u16 a1) +{ + if (++(*a0) > a1) + { + *a0 = 0; + return TRUE; + } + return FALSE; +} -- cgit v1.2.3 From 746006911096730ea6d5f14bfff5957ef9b5bc2c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 29 Nov 2018 11:35:31 -0500 Subject: sub_8143910 --- src/mevent.c | 254 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 244 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/mevent.c b/src/mevent.c index 27abf65c3..b2d8ba3f4 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -6,13 +6,14 @@ #include "task.h" #include "decompress.h" #include "link.h" +#include "link_rfu_4.h" #include "unk_815c27c.h" struct MEvent_Str_1 { u16 unk_000; - u32 unk_004; - u32 unk_008; + size_t unk_004; + const void * unk_008; }; struct MEvent_Str_2 @@ -37,8 +38,31 @@ struct MEventTaskData1 }; void sub_8143910(u8 taskId); +void sub_8142504(const u8 *str); +u8 sub_815D6B4(u8 *); +bool32 sub_815D794(u8 *); +void sub_812B484(void); +void sub_81422FC(void); -void sub_81435DC(struct MEvent_Str_1 *a0, u32 a1, u32 a2) +extern const u8 gUnknown_841DE52[]; +extern const u8 gUnknown_841DE53[]; +extern const u8 gUnknown_841DE54[]; +extern const u8 gUnknown_841DE7C[]; +extern const u8 gUnknown_841DE7D[]; +extern const u8 gUnknown_841DE95[]; +extern const u8 gUnknown_841DE96[]; +extern const u8 gUnknown_841DE97[]; +extern const u8 gUnknown_841DE98[]; +extern const u8 gUnknown_841DE99[]; +extern const u8 gUnknown_841DE9A[]; +extern const u8 gUnknown_841DE9B[]; +extern const u8 gUnknown_841DE9C[]; +extern const u8 gUnknownSerialData_Start[]; +extern const u8 gUnknownSerialData_End[]; + +struct MEvent_Str_1 gUnknown_3005ED0; + +void sub_81435DC(struct MEvent_Str_1 *a0, size_t a1, const void * a2) { vu16 imeBak = REG_IME; REG_IME = 0; @@ -53,7 +77,7 @@ void sub_81435DC(struct MEvent_Str_1 *a0, u32 a1, u32 a2) a0->unk_008 = a2; } -void sub_8143644(void) +void sub_8143644(struct MEvent_Str_1 *unused) { vu16 imeBak = REG_IME; REG_IME = 0; @@ -85,7 +109,7 @@ void sub_81436BC(void) SetSuppressLinkErrorMessage(TRUE); } -bool8 sub_81436EC(void) +bool32 sub_81436EC(void) { vu16 imeBak = REG_IME; u16 data[4]; @@ -101,14 +125,14 @@ bool8 sub_81436EC(void) return FALSE; } -bool8 sub_814374C(void) +bool32 sub_814374C(void) { if (sub_800AA48() && GetLinkPlayerCount_2() == 2) return TRUE; return FALSE; } -u8 sub_8143770(u8 * r4, u16 * r5) +u32 sub_8143770(u8 * r4, u16 * r5) { if ((*r4 == 3 || *r4 == 4 || *r4 == 5) && HasLinkErrorOccurred()) { @@ -123,7 +147,7 @@ u8 sub_8143770(u8 * r4, u16 * r5) *r4 = 1; ; } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { *r4 = 0; return 1; @@ -144,7 +168,7 @@ u8 sub_8143770(u8 * r4, u16 * r5) *r5 = 0; *r4 = 3; } - else if (gMain.newKeys & B_BUTTON) + else if (JOY_NEW(B_BUTTON)) { *r4 = 0; return 1; @@ -210,7 +234,7 @@ void sub_81438E8(u16 *a0) *a0 = 0; } -bool8 sub_81438F0(u16 * a0, u16 a1) +bool32 sub_81438F0(u16 * a0, u16 a1) { if (++(*a0) > a1) { @@ -219,3 +243,213 @@ bool8 sub_81438F0(u16 * a0, u16 a1) } return FALSE; } + +void sub_8143910(u8 taskId) +{ + struct MEventTaskData1 *data = (struct MEventTaskData1 *)gTasks[taskId].data; + switch (data->t08) + { + case 0: + if (mevent_0814257C(&data->t09, gUnknown_841DE52)) + data->t08 = 1; + break; + case 1: + sub_81436BC(); + sub_81438E8(&data->t00); + data->t08 = 2; + break; + case 2: + if (sub_81438F0(&data->t00, 10)) + data->t08 = 3; + break; + case 3: + if (!sub_814374C()) + { + sub_80098B8(); + data->t08 = 4; + } + else + data->t08 = 13; + break; + case 4: + if (mevent_0814257C(&data->t09, gUnknown_841DE53)) + { + sub_8142504(gUnknown_841DE54); + sub_81438E8(&data->t00); + data->t08 = 5; + } + break; + case 5: + if (sub_81438F0(&data->t00, 90)) + { + sub_81436BC(); + data->t08 = 6; + } + else if (JOY_NEW(B_BUTTON)) + { + sub_81438E8(&data->t00); + PlaySE(SE_SELECT); + data->t08 = 23; + } + break; + case 6: + if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + sub_80098B8(); + sub_81438E8(&data->t00); + data->t08 = 23; + } + else if (GetLinkPlayerCount_2() > 1) + { + sub_81438E8(&data->t00); + sub_80098B8(); + data->t08 = 7; + } + else if (sub_81436EC()) + { + PlaySE(SE_SELECT); + sub_80098B8(); + sub_81438E8(&data->t00); + data->t08 = 8; + } + else if (sub_81438F0(&data->t00, 10)) + { + sub_80098B8(); + sub_81436BC(); + sub_81438E8(&data->t00); + } + break; + case 7: + if (mevent_0814257C(&data->t09, gUnknown_841DE7C)) + data->t08 = 4; + break; + case 8: + sub_8142504(gUnknown_841DE95); + sub_81435DC(&gUnknown_3005ED0, gUnknownSerialData_End - gUnknownSerialData_Start, gUnknownSerialData_Start); + data->t08 = 9; + break; + case 9: + data->t0E = sub_8143674(&gUnknown_3005ED0); + if (data->t0E != 0) + data->t08 = 10; + break; + case 10: + sub_8143644(&gUnknown_3005ED0); + if (data->t0E == 3) + data->t08 = 20; + else if (data->t0E == 1) + { + sub_81438E8(&data->t00); + sub_8142504(gUnknown_841DE9B); + data->t08 = 11; + } + else + data->t08 = 0; + break; + case 11: + if (sub_81438F0(&data->t00, 840)) + data->t08 = 12; + break; + case 12: + sub_81436BC(); + sub_8142504(gUnknown_841DE98); + data->t08 = 13; + break; + case 13: + switch (sub_8143770(&data->t09, &data->t00)) + { + case 0: + break; + case 2: + sub_8142504(gUnknown_841DE95); + data->t08 = 14; + break; + case 1: + PlaySE(SE_SELECT); + sub_80098B8(); + data->t08 = 23; + break; + case 5: + sub_80098B8(); + data->t08 = 21; + break; + case 3: + case 4: + sub_80098B8(); + data->t08 = 20; + break; + } + break; + case 14: + if (HasLinkErrorOccurred()) + { + sub_80098B8(); + data->t08 = 20; + } + else if (GetBlockReceivedStatus()) + { + ResetBlockReceivedFlags(); + data->t08 = 15; + } + break; + case 15: + data->t0E = sub_815D6B4(gDecompressionBuffer); + sub_800AA80(data->t0E); + data->t08 = 16; + break; + case 16: + if (!gUnknown_3003F64) + { + if (data->t0E == 1) + data->t08 = 17; + else + data->t08 = 20; + } + break; + case 17: + if (sub_815D794(gDecompressionBuffer)) + { + sub_8142504(gUnknown_841DE99); + sub_81438E8(&data->t00); + data->t08 = 18; + } + else + data->t08 = 22; + break; + case 18: + if (sub_81438F0(&data->t00, 120)) + { + sub_8142504(gUnknown_841DE9A); + PlayFanfare(258); + data->t08 = 19; + } + break; + case 19: + if (IsFanfareTaskInactive() &&JOY_NEW(A_BUTTON | B_BUTTON)) + data->t08 = 26; + break; + case 23: + if (mevent_0814257C(&data->t09, gUnknown_841DE7D)) + data->t08 = 26; + break; + case 20: + if (mevent_0814257C(&data->t09, gUnknown_841DE96)) + data->t08 = 0; + break; + case 21: + if (mevent_0814257C(&data->t09, gUnknown_841DE97)) + data->t08 = 0; + break; + case 22: + if (mevent_0814257C(&data->t09, gUnknown_841DE9C)) + data->t08 = 0; + break; + case 26: + sub_812B484(); + Free(data->t10); + DestroyTask(taskId); + SetMainCallback2(sub_81422FC); + break; + } +} -- cgit v1.2.3 From cec95ebfb41f8381feeb87ff889ebc1d89827ec6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 29 Nov 2018 14:02:49 -0500 Subject: through sub_8143DBC --- src/mevent.c | 43 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/mevent.c b/src/mevent.c index b2d8ba3f4..c2a05f3c6 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -2,6 +2,7 @@ #include "constants/songs.h" #include "malloc.h" #include "sound.h" +#include "easy_chat.h" #include "main.h" #include "task.h" #include "decompress.h" @@ -38,11 +39,12 @@ struct MEventTaskData1 }; void sub_8143910(u8 taskId); -void sub_8142504(const u8 *str); u8 sub_815D6B4(u8 *); bool32 sub_815D794(u8 *); -void sub_812B484(void); void sub_81422FC(void); +void sub_812B484(void); +void sub_8143E9C(void); +void sub_8143ED0(void); extern const u8 gUnknown_841DE52[]; extern const u8 gUnknown_841DE53[]; @@ -453,3 +455,40 @@ void sub_8143910(u8 taskId) break; } } + +void sub_8143D24(void) +{ + CpuFill32(0, &gSaveBlock1Ptr->unk_3120, sizeof(gSaveBlock1Ptr->unk_3120)); + sub_8143ED0(); + sub_80BDE28(); +} + +u16 * sub_8143D58(void) +{ + return gSaveBlock1Ptr->unk_3120.buffer_000.data; +} + +u16 * sav1_get_mevent_buffer_1(void) +{ + return gSaveBlock1Ptr->unk_3120.buffer_1c0.data; +} + +u16 * sav1_get_mevent_buffer_2(void) +{ + return gSaveBlock1Ptr->unk_3120.buffer_310.data; +} + +struct MysteryEventStruct * sub_8143D94(void) +{ + return &gSaveBlock1Ptr->unk_3120.unk_340; +} + +u16 * sub_8143DA8(void) +{ + return gSaveBlock1Ptr->unk_3120.unk_338; +} + +void sub_8143DBC(void) +{ + sub_8143E9C(); +} -- cgit v1.2.3 From dfb6bcb6acdebfb3b7fe024148889361e9309dc4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 29 Nov 2018 14:35:39 -0500 Subject: through sub_8143EF4 --- src/mevent.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) (limited to 'src') diff --git a/src/mevent.c b/src/mevent.c index c2a05f3c6..dd2891de0 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -9,6 +9,8 @@ #include "link.h" #include "link_rfu_4.h" #include "unk_815c27c.h" +#include "util.h" +#include "menews_jisan.h" struct MEvent_Str_1 { @@ -39,6 +41,7 @@ struct MEventTaskData1 }; void sub_8143910(u8 taskId); +bool32 sub_8143E64(const u16 * src); u8 sub_815D6B4(u8 *); bool32 sub_815D794(u8 *); void sub_81422FC(void); @@ -492,3 +495,63 @@ void sub_8143DBC(void) { sub_8143E9C(); } + +bool32 sub_8143DC8(const u16 * src) +{ + if (!sub_8143E64(src)) + return FALSE; + sub_8143E9C(); + memcpy(gSaveBlock1Ptr->unk_3120.buffer_000.data, src, sizeof(gSaveBlock1Ptr->unk_3120.buffer_000.data)); + gSaveBlock1Ptr->unk_3120.buffer_000.crc = CalcCRC16WithTable((void *)gSaveBlock1Ptr->unk_3120.buffer_000.data, sizeof(gSaveBlock1Ptr->unk_3120.buffer_000.data)); + return TRUE; +} + +bool32 sub_8143E1C(void) +{ + if (CalcCRC16WithTable((void *)gSaveBlock1Ptr->unk_3120.buffer_000.data, sizeof(gSaveBlock1Ptr->unk_3120.buffer_000.data)) != gSaveBlock1Ptr->unk_3120.buffer_000.crc) + return FALSE; + if (!sub_8143E64(gSaveBlock1Ptr->unk_3120.buffer_000.data)) + return FALSE; + return TRUE; +} + +bool32 sub_8143E64(const u16 * data) +{ + if (data[0] == 0) + return FALSE; + return TRUE; +} + +bool32 sub_8143E78(void) +{ + u16 * data = gSaveBlock1Ptr->unk_3120.buffer_000.data; + if (*(u8 *)&data[1] == 0) + return FALSE; + return TRUE; +} + +void sub_8143E9C(void) +{ + CpuFill32(0, sub_8143D58(), sizeof(gSaveBlock1Ptr->unk_3120.buffer_000.data)); + gSaveBlock1Ptr->unk_3120.buffer_000.crc = 0; +} + +void sub_8143ED0(void) +{ + CpuFill32(0, sub_8143D94(), sizeof(struct MysteryEventStruct)); + sub_8146C88(); +} + +bool32 sub_8143EF4(const u8 * src) +{ + const u8 * r5 = (const u8 *)gSaveBlock1Ptr->unk_3120.buffer_000.data; + u32 i; + if (!sub_8143E1C()) + return FALSE; + for (i = 0; i < sizeof(gSaveBlock1Ptr->unk_3120.buffer_000.data); i++) + { + if (r5[i] != src[i]) + return FALSE; + } + return TRUE; +} -- cgit v1.2.3 From 159f242e32532f14496abaa8d2f96e9c3d30d720 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 29 Nov 2018 15:33:58 -0500 Subject: through sub_8144018 --- src/mevent.c | 101 ++++++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 80 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/mevent.c b/src/mevent.c index dd2891de0..74a3d1b5f 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -10,6 +10,9 @@ #include "link_rfu_4.h" #include "unk_815c27c.h" #include "util.h" +#include "script.h" +#include "event_data.h" +#include "battle_tower.h" #include "menews_jisan.h" struct MEvent_Str_1 @@ -41,13 +44,17 @@ struct MEventTaskData1 }; void sub_8143910(u8 taskId); -bool32 sub_8143E64(const u16 * src); -u8 sub_815D6B4(u8 *); +bool32 sub_8143E64(const struct MEventBuffer_3120_Sub * src); +void sub_8143E9C(void); +void sub_8143ED0(void); +bool32 sub_8144018(const struct MEventBuffer_32E0_Sub * src); bool32 sub_815D794(u8 *); void sub_81422FC(void); void sub_812B484(void); -void sub_8143E9C(void); -void sub_8143ED0(void); +void sub_814407C(void); +void sub_81440B4(void); +void sub_8144790(void); +u8 sub_815D6B4(u8 *); extern const u8 gUnknown_841DE52[]; extern const u8 gUnknown_841DE53[]; @@ -466,19 +473,19 @@ void sub_8143D24(void) sub_80BDE28(); } -u16 * sub_8143D58(void) +struct MEventBuffer_3120_Sub * sub_8143D58(void) { - return gSaveBlock1Ptr->unk_3120.buffer_000.data; + return &gSaveBlock1Ptr->unk_3120.buffer_000.data; } -u16 * sav1_get_mevent_buffer_1(void) +struct MEventBuffer_32E0_Sub * sav1_get_mevent_buffer_1(void) { - return gSaveBlock1Ptr->unk_3120.buffer_1c0.data; + return &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; } -u16 * sav1_get_mevent_buffer_2(void) +struct MEventBuffer_3430_Sub * sav1_get_mevent_buffer_2(void) { - return gSaveBlock1Ptr->unk_3120.buffer_310.data; + return &gSaveBlock1Ptr->unk_3120.buffer_310.data; } struct MysteryEventStruct * sub_8143D94(void) @@ -496,36 +503,36 @@ void sub_8143DBC(void) sub_8143E9C(); } -bool32 sub_8143DC8(const u16 * src) +bool32 sub_8143DC8(const struct MEventBuffer_3120_Sub * src) { if (!sub_8143E64(src)) return FALSE; sub_8143E9C(); - memcpy(gSaveBlock1Ptr->unk_3120.buffer_000.data, src, sizeof(gSaveBlock1Ptr->unk_3120.buffer_000.data)); - gSaveBlock1Ptr->unk_3120.buffer_000.crc = CalcCRC16WithTable((void *)gSaveBlock1Ptr->unk_3120.buffer_000.data, sizeof(gSaveBlock1Ptr->unk_3120.buffer_000.data)); + gSaveBlock1Ptr->unk_3120.buffer_000.data = *src; + gSaveBlock1Ptr->unk_3120.buffer_000.crc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_3120.buffer_000.data, sizeof(struct MEventBuffer_3120_Sub)); return TRUE; } bool32 sub_8143E1C(void) { - if (CalcCRC16WithTable((void *)gSaveBlock1Ptr->unk_3120.buffer_000.data, sizeof(gSaveBlock1Ptr->unk_3120.buffer_000.data)) != gSaveBlock1Ptr->unk_3120.buffer_000.crc) + if (CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_3120.buffer_000.data, sizeof(struct MEventBuffer_3120_Sub)) != gSaveBlock1Ptr->unk_3120.buffer_000.crc) return FALSE; - if (!sub_8143E64(gSaveBlock1Ptr->unk_3120.buffer_000.data)) + if (!sub_8143E64(&gSaveBlock1Ptr->unk_3120.buffer_000.data)) return FALSE; return TRUE; } -bool32 sub_8143E64(const u16 * data) +bool32 sub_8143E64(const struct MEventBuffer_3120_Sub * data) { - if (data[0] == 0) + if (data->unk_00 == 0) return FALSE; return TRUE; } bool32 sub_8143E78(void) { - u16 * data = gSaveBlock1Ptr->unk_3120.buffer_000.data; - if (*(u8 *)&data[1] == 0) + const struct MEventBuffer_3120_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_000.data; + if (data->unk_02 == 0) return FALSE; return TRUE; } @@ -544,14 +551,66 @@ void sub_8143ED0(void) bool32 sub_8143EF4(const u8 * src) { - const u8 * r5 = (const u8 *)gSaveBlock1Ptr->unk_3120.buffer_000.data; + const u8 * r5 = (const u8 *)&gSaveBlock1Ptr->unk_3120.buffer_000.data; u32 i; if (!sub_8143E1C()) return FALSE; - for (i = 0; i < sizeof(gSaveBlock1Ptr->unk_3120.buffer_000.data); i++) + for (i = 0; i < sizeof(struct MEventBuffer_3120_Sub); i++) { if (r5[i] != src[i]) return FALSE; } return TRUE; } + +void sub_8143F38(void) +{ + sub_814407C(); + sub_81440B4(); + sub_8144790(); + ClearRamScript(); + sub_806E2D0(); + sub_806E370(); + sub_80E7524(gSaveBlock2Ptr->unk_4A0); +} + +bool32 sub_8143F68(const struct MEventBuffer_32E0_Sub * data) +{ + struct MEventBuffer_3430_Sub * r2; + struct MEventBuffer_32E0_Sub * r1; + if (!sub_8144018(data)) + return FALSE; + sub_8143F38(); + memcpy(&gSaveBlock1Ptr->unk_3120.buffer_1c0.data, data, sizeof(struct MEventBuffer_32E0_Sub)); + gSaveBlock1Ptr->unk_3120.buffer_1c0.crc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_3120.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub)); + r2 = &gSaveBlock1Ptr->unk_3120.buffer_310.data; + r1 = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; + r2->unk_06 = r1->unk_02; + return TRUE; +} + +bool32 sub_8143FC8(void) +{ + if (gSaveBlock1Ptr->unk_3120.buffer_1c0.crc != CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_3120.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub))) + return FALSE; + if (!sub_8144018(&gSaveBlock1Ptr->unk_3120.buffer_1c0.data)) + return FALSE; + if (!sub_8069DFC()) + return FALSE; + return TRUE; +} + +bool32 sub_8144018(const struct MEventBuffer_32E0_Sub * data) +{ + if (data->unk_00 == 0) + return FALSE; + if (data->unk_08_0 > 2) + return FALSE; + if (!(data->unk_08_6 == 0 || data->unk_08_6 == 1 || data->unk_08_6 == 2)) + return FALSE; + if (data->unk_08_2 > 7) + return FALSE; + if (data->unk_09 > 7) + return FALSE; + return TRUE; +} -- cgit v1.2.3 From 9460cbfe6cfbbd679ea6febf112ba6e46679ac02 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 29 Nov 2018 15:37:39 -0500 Subject: through sub_814407C --- src/mevent.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src') diff --git a/src/mevent.c b/src/mevent.c index 74a3d1b5f..f61f7b7a2 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -614,3 +614,17 @@ bool32 sub_8144018(const struct MEventBuffer_32E0_Sub * data) return FALSE; return TRUE; } + +bool32 sub_8144054(void) +{ + const struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; + if (data->unk_08_6 == 0) + return FALSE; + return TRUE; +} + +void sub_814407C(void) +{ + CpuFill32(0, &gSaveBlock1Ptr->unk_3120.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub)); + gSaveBlock1Ptr->unk_3120.buffer_1c0.crc = 0; +} -- cgit v1.2.3 From 51622adaec9fd47a8f1be2b61b1f4521cc9d47da Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 29 Nov 2018 18:15:22 -0500 Subject: through sub_8144218 --- src/mevent.c | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) (limited to 'src') diff --git a/src/mevent.c b/src/mevent.c index f61f7b7a2..5d45a0243 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -1,5 +1,6 @@ #include "global.h" #include "constants/songs.h" +#include "constants/species.h" #include "malloc.h" #include "sound.h" #include "easy_chat.h" @@ -72,6 +73,8 @@ extern const u8 gUnknown_841DE9C[]; extern const u8 gUnknownSerialData_Start[]; extern const u8 gUnknownSerialData_End[]; +extern const u16 gUnknown_8466F00[]; + struct MEvent_Str_1 gUnknown_3005ED0; void sub_81435DC(struct MEvent_Str_1 *a0, size_t a1, const void * a2) @@ -628,3 +631,86 @@ void sub_814407C(void) CpuFill32(0, &gSaveBlock1Ptr->unk_3120.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub)); gSaveBlock1Ptr->unk_3120.buffer_1c0.crc = 0; } + +void sub_81440B4(void) +{ + CpuFill32(0, sav1_get_mevent_buffer_2(), 18 * sizeof(u16)); + gSaveBlock1Ptr->unk_3120.buffer_310.crc = 0; +} + +u16 sub_81440E8(void) +{ + if (sub_8143FC8()) + return gSaveBlock1Ptr->unk_3120.buffer_1c0.data.unk_00; + return 0; +} + +void sub_814410C(struct MEventBuffer_32E0_Sub * buffer) +{ + if (buffer->unk_08_6 == 1) + buffer->unk_08_6 = 0; +} + +bool32 sub_8144124(u16 a0) +{ + if (a0 >= 1000 && a0 < 1020) + return TRUE; + return FALSE; +} + +bool32 sub_8144144(void) +{ + u16 value = sub_81440E8(); + if (!sub_8144124(value)) + return FALSE; + if (FlagGet(gUnknown_8466F00[value - 1000]) == TRUE) + return FALSE; + return TRUE; +} + +s32 sub_8144184(const struct MEventBuffer_3430_Sub * data, s32 size) +{ + s32 r3 = 0; + s32 i; + for (i = 0; i < size; i++) + { + if (data->unk_08[1][i] && data->unk_08[0][i]) + r3++; + } + return r3; +} + +bool32 sub_81441AC(const struct MEventBuffer_3430_Sub * data1, const u16 * data2, s32 size) +{ + s32 i; + for (i = 0; i < size; i++) + { + if (data1->unk_08[1][i] == data2[1]) + return TRUE; + if (data1->unk_08[0][i] == data2[0]) + return TRUE; + } + return FALSE; +} + +bool32 sub_81441F0(const u16 * data) +{ + if (data[1] == 0) + return FALSE; + if (data[0] == 0) + return FALSE; + if (data[0] >= NUM_SPECIES) + return FALSE; + return TRUE; +} + +bool32 sub_8144218(void) +{ + struct MEventBuffer_32E0_Sub * data; + if (!sub_8143FC8()) + return FALSE; + data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; + if (data->unk_08_0 != 1) + return FALSE; + return sub_8144184(&gSaveBlock1Ptr->unk_3120.buffer_310.data, data->unk_09); +} -- cgit v1.2.3 From d68f434a527d185e2968d8da418fa74110090c79 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 29 Nov 2018 18:48:06 -0500 Subject: through sub_814449C --- src/mevent.c | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 106 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/mevent.c b/src/mevent.c index 5d45a0243..d24219f49 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -14,7 +14,10 @@ #include "script.h" #include "event_data.h" #include "battle_tower.h" +#include "new_game.h" +#include "string_util.h" #include "menews_jisan.h" +#include "mevent.h" struct MEvent_Str_1 { @@ -704,13 +707,113 @@ bool32 sub_81441F0(const u16 * data) return TRUE; } -bool32 sub_8144218(void) +s32 sub_8144218(void) { struct MEventBuffer_32E0_Sub * data; if (!sub_8143FC8()) - return FALSE; + return 0; data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; if (data->unk_08_0 != 1) - return FALSE; + return 0; return sub_8144184(&gSaveBlock1Ptr->unk_3120.buffer_310.data, data->unk_09); } + +bool32 sub_8144254(const u16 * data) +{ + struct MEventBuffer_32E0_Sub * buffer = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; + s32 size = buffer->unk_09; + s32 i; + if (!sub_81441F0(data)) + return FALSE; + if (sub_81441AC(&gSaveBlock1Ptr->unk_3120.buffer_310.data, data, size)) + return FALSE; + for (i = 0; i < size; i++) + { + if (gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_08[1][i] == 0 && gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_08[0][i] == 0) + { + gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_08[1][i] = data[1]; + gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_08[0][i] = data[0]; + return TRUE; + } + } + return FALSE; +} + +void sub_81442CC(struct MEventStruct_Unk1442CC * data) +{ + s32 i; + CpuFill32(0, data, sizeof(struct MEventStruct_Unk1442CC)); + data->unk_00 = 0x101; + data->unk_04 = 1; + data->unk_08 = 1; + data->unk_0C = 1; + data->unk_10 = 1; + if (sub_8143FC8()) + { + data->unk_14 = sav1_get_mevent_buffer_1()->unk_00; + data->unk_20 = *sav1_get_mevent_buffer_2(); + data->unk_44 = sav1_get_mevent_buffer_1()->unk_09; + } + else + data->unk_14 = 0; + for (i = 0; i < 4; i++) + data->unk_16[i] = gSaveBlock1Ptr->unk_3120.unk_338[i]; + CopyUnalignedWord(data->unk_4C, gSaveBlock2Ptr->playerTrainerId); + StringCopy(data->unk_45, gSaveBlock2Ptr->playerName); + for (i = 0; i < 6; i++) + data->unk_50[i] = gSaveBlock1Ptr->unk2CA0[i]; + memcpy(data->unk_5C, RomHeaderGameCode, 4); + data->unk_60 = RomHeaderSoftwareVersion; +} + +bool32 sub_81443D4(const struct MEventStruct_Unk1442CC * data) +{ + if (data->unk_00 != 0x101) + return FALSE; + if (!(data->unk_04 & 1)) + return FALSE; + if (!(data->unk_08 & 1)) + return FALSE; + if (!(data->unk_0C & 1)) + return FALSE; + if (!(data->unk_10 & 0x0F)) + return FALSE; + return TRUE; +} + +u32 sub_8144418(const u16 * a0, const struct MEventStruct_Unk1442CC * a1) +{ + if (a1->unk_14 == 0) + return 0; + if (*a0 == a1->unk_14) + return 1; + return 2; +} + +u32 sub_8144434(const u16 * a0, const struct MEventStruct_Unk1442CC * a1) +{ + s32 r4 = a1->unk_44 - sub_8144184(&a1->unk_20, a1->unk_44); + if (r4 == 0) + return 1; + if (sub_81441AC(&a1->unk_20, a0, a1->unk_44)) + return 3; + if (r4 == 1) + return 4; + return 2; +} + +bool32 sub_8144474(const struct MEventStruct_Unk1442CC * a0, const u16 * a1) +{ + s32 i; + for (i = 0; i < 4; i++) + { + if (a0->unk_16[i] != a1[i]) + return FALSE; + } + return TRUE; +} + +s32 sub_814449C(const struct MEventStruct_Unk1442CC * a0) +{ + return sub_8144184(&a0->unk_20, a0->unk_44); +} -- cgit v1.2.3 From 939ae833c3364d7ea7543c4db56df5c90b4e9d8d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 29 Nov 2018 19:17:38 -0500 Subject: through sub_81445C0 --- src/mevent.c | 135 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 134 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/mevent.c b/src/mevent.c index d24219f49..bf2d2c1a5 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -76,7 +76,28 @@ extern const u8 gUnknown_841DE9C[]; extern const u8 gUnknownSerialData_Start[]; extern const u8 gUnknownSerialData_End[]; -extern const u16 gUnknown_8466F00[]; +const u16 gUnknown_8466F00[] = { + 0x02a7, + 0x02a8, + 0x02a9, + 0x02aa, + 0x02ab, + 0x02ac, + 0x02ad, + 0x02ae, + 0x02af, + 0x02b0, + 0x02b1, + 0x02b2, + 0x02b3, + 0x02b4, + 0x02b5, + 0x02b6, + 0x02b7, + 0x02b8, + 0x02b9, + 0x02ba +}; struct MEvent_Str_1 gUnknown_3005ED0; @@ -817,3 +838,115 @@ s32 sub_814449C(const struct MEventStruct_Unk1442CC * a0) { return sub_8144184(&a0->unk_20, a0->unk_44); } + +//TODO: Remove these later +const char ALIGNED(4) gUnknown_8466F28[] = "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c"; +const char ALIGNED(4) gUnknown_8466F5C[] = "0"; + +u16 sub_81444B0(const struct MEventStruct_Unk1442CC * a0, u32 command) +{ + switch (command) + { + case 0: + return a0->unk_20.unk_00; + case 1: + return a0->unk_20.unk_02; + case 2: + return a0->unk_20.unk_04; + case 3: + return sub_814449C(a0); + case 4: + return a0->unk_44; + default: + AGBAssert(gUnknown_8466F28, 825, gUnknown_8466F5C, 1); + // AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c", 825); + return 0; + } +} + +void sub_814451C(u32 command) +{ + struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; + if (data->unk_08_0 == 2) + { + u16 * dest = NULL; + switch (command) + { + case 0: + dest = &gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_00; + break; + case 1: + dest = &gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_02; + break; + case 2: + dest = &gSaveBlock1Ptr->unk_3120.buffer_310.data.unk_04; + break; + case 3: + break; + case 4: + break; + } + if (dest == NULL) + { + AGBAssert(gUnknown_8466F28, 868, gUnknown_8466F5C, 1); + // AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c", 868); + } + else if (++(*dest) > 999) + { + *dest = 999; + } + } +} + +u16 sub_81445C0(u32 command) +{ + switch (command) + { + case 0: + { + struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; + if (data->unk_08_0 == 2) + { + struct MEventBuffer_3430_Sub * buffer = &gSaveBlock1Ptr->unk_3120.buffer_310.data; + return buffer->unk_00; + } + break; + } + case 1: + { + struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; + if (data->unk_08_0 == 2) + { + struct MEventBuffer_3430_Sub * buffer = &gSaveBlock1Ptr->unk_3120.buffer_310.data; + return buffer->unk_02; + } + break; + } + case 2: + { + struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; + if (data->unk_08_0 == 2) + { + struct MEventBuffer_3430_Sub * buffer = &gSaveBlock1Ptr->unk_3120.buffer_310.data; + return buffer->unk_04; + } + break; + } + case 3: + { + struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; + if (data->unk_08_0 == 1) + return sub_8144218(); + break; + } + case 4: + { + struct MEventBuffer_32E0_Sub * data = &gSaveBlock1Ptr->unk_3120.buffer_1c0.data; + if (data->unk_08_0 == 1) + return data->unk_09; + break; + } + } + AGBAssert(gUnknown_8466F28, 913, gUnknown_8466F5C, 1); + return 0; +} -- cgit v1.2.3 From 9200df7516151a84d0fcdda84259179eafafcabb Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 29 Nov 2018 20:56:53 -0500 Subject: Finish decomp of mevent.s --- src/mevent.c | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 86 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/mevent.c b/src/mevent.c index bf2d2c1a5..a65433999 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -57,6 +57,7 @@ void sub_81422FC(void); void sub_812B484(void); void sub_814407C(void); void sub_81440B4(void); +void sub_8144824(u32, u32, u32 *, s32); void sub_8144790(void); u8 sub_815D6B4(u8 *); @@ -101,6 +102,8 @@ const u16 gUnknown_8466F00[] = { struct MEvent_Str_1 gUnknown_3005ED0; +bool32 gUnknown_203F3BC = FALSE; + void sub_81435DC(struct MEvent_Str_1 *a0, size_t a1, const void * a2) { vu16 imeBak = REG_IME; @@ -839,10 +842,6 @@ s32 sub_814449C(const struct MEventStruct_Unk1442CC * a0) return sub_8144184(&a0->unk_20, a0->unk_44); } -//TODO: Remove these later -const char ALIGNED(4) gUnknown_8466F28[] = "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c"; -const char ALIGNED(4) gUnknown_8466F5C[] = "0"; - u16 sub_81444B0(const struct MEventStruct_Unk1442CC * a0, u32 command) { switch (command) @@ -858,8 +857,7 @@ u16 sub_81444B0(const struct MEventStruct_Unk1442CC * a0, u32 command) case 4: return a0->unk_44; default: - AGBAssert(gUnknown_8466F28, 825, gUnknown_8466F5C, 1); - // AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c", 825); + AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c", 825); return 0; } } @@ -888,8 +886,7 @@ void sub_814451C(u32 command) } if (dest == NULL) { - AGBAssert(gUnknown_8466F28, 868, gUnknown_8466F5C, 1); - // AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c", 868); + AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c", 868); } else if (++(*dest) > 999) { @@ -947,6 +944,86 @@ u16 sub_81445C0(u32 command) break; } } - AGBAssert(gUnknown_8466F28, 913, gUnknown_8466F5C, 1); + AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c", 913); return 0; } + +void sub_81446C4(void) +{ + gUnknown_203F3BC = FALSE; +} + +bool32 sub_81446D0(u16 a0) +{ + gUnknown_203F3BC = FALSE; + if (a0 == 0) + return FALSE; + if (!sub_8143FC8()) + return FALSE; + if (gSaveBlock1Ptr->unk_3120.buffer_1c0.data.unk_00 != a0) + return FALSE; + gUnknown_203F3BC = TRUE; + return TRUE; +} + +void sub_8144714(u32 a0, u32 a1) +{ + if (gUnknown_203F3BC) + { + switch (a0) + { + case 2: + sub_8144824(2, a1, gSaveBlock1Ptr->unk_3120.unk_344[1], 5); + break; + case 0: + sub_8144824(0, a1, gSaveBlock1Ptr->unk_3120.unk_344[0], 5); + break; + case 1: + sub_8144824(1, a1, gSaveBlock1Ptr->unk_3120.unk_344[0], 5); + break; + default: + AGB_ASSERT_EX(0, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c", 988); + } + } +} + +void sub_8144790(void) +{ + CpuFill32(0, gSaveBlock1Ptr->unk_3120.unk_344, sizeof(gSaveBlock1Ptr->unk_3120.unk_344)); +} + +bool32 sub_81447BC(u32 a0, u32 * a1, s32 size) +{ + s32 i; + s32 j; + + for (i = 0; i < size; i++) + { + if (a1[i] == a0) + break; + } + if (i == size) + { + for (j = size - 1; j > 0; j--) + { + a1[j] = a1[j - 1]; + } + a1[0] = a0; + return TRUE; + } + else + { + for (j = i; j > 0; j--) + { + a1[j] = a1[j - 1]; + } + a1[0] = a0; + return FALSE; + } +} + +void sub_8144824(u32 a0, u32 a1, u32 * a2, s32 a3) +{ + if (sub_81447BC(a1, a2, a3)) + sub_814451C(a0); +} -- cgit v1.2.3 From 294b150d70385a117e1324fd1e13bab25bfaabc9 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 30 Nov 2018 08:47:58 -0500 Subject: Set up to decomp mevent_server --- src/mevent.c | 12 ------------ src/mevent_server.c | 2 ++ 2 files changed, 2 insertions(+), 12 deletions(-) create mode 100644 src/mevent_server.c (limited to 'src') diff --git a/src/mevent.c b/src/mevent.c index a65433999..c81712de6 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -19,18 +19,6 @@ #include "menews_jisan.h" #include "mevent.h" -struct MEvent_Str_1 -{ - u16 unk_000; - size_t unk_004; - const void * unk_008; -}; - -struct MEvent_Str_2 -{ - u8 fill_00[0x40]; -}; - struct MEventTaskData1 { u16 t00; diff --git a/src/mevent_server.c b/src/mevent_server.c new file mode 100644 index 000000000..529b4ba77 --- /dev/null +++ b/src/mevent_server.c @@ -0,0 +1,2 @@ +#include "global.h" +#include "mevent.h" -- cgit v1.2.3 From 80dbdacaced2e4522f29e6974474103926461161 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 30 Nov 2018 10:27:25 -0500 Subject: through sub_814490C --- src/mevent.c | 4 +- src/mevent_server.c | 178 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 180 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/mevent.c b/src/mevent.c index c81712de6..b04ac5462 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -8,7 +8,7 @@ #include "task.h" #include "decompress.h" #include "link.h" -#include "link_rfu_4.h" +#include "link_rfu.h" #include "unk_815c27c.h" #include "util.h" #include "script.h" @@ -134,7 +134,7 @@ u8 sub_8143674(struct MEvent_Str_1 *a0) void sub_81436BC(void) { memset(gDecompressionBuffer, 0, 0x2000); - gUnknown_202271A = 0x5502; + gLinkType = 0x5502; sub_8009804(); SetSuppressLinkErrorMessage(TRUE); } diff --git a/src/mevent_server.c b/src/mevent_server.c index 529b4ba77..0c94980ff 100644 --- a/src/mevent_server.c +++ b/src/mevent_server.c @@ -1,2 +1,180 @@ #include "global.h" +#include "malloc.h" +#include "util.h" +#include "link.h" +#include "link_rfu.h" #include "mevent.h" + +extern u16 gBlockRecvBuffer[][128]; + +struct mevent_srv_sub +{ + s32 unk_00; + u8 unk_04; + u8 unk_05; + u16 unk_06; + u16 unk_08; + u16 unk_0A; + u16 unk_0C; + u16 unk_0E; + u16 unk_10; + u16 unk_12; + u16 unk_14; + void * unk_18; + u32 unk_1C; + u32 (*unk_20)(struct mevent_srv_sub *); + u32 (*unk_24)(struct mevent_srv_sub *); +}; + +struct mevent_srv_ish +{ + u32 unk_00; + u32 unk_04; + u32 unk_08; + u32 unk_0C; + u32 unk_10; + void * unk_14; + void * unk_18; + void * unk_1C; + void * unk_20; + struct mevent_srv_sub unk_24; +}; + +EWRAM_DATA struct mevent_srv_ish * gUnknown_203F3C0 = NULL; + +u32 sub_814490C(struct mevent_srv_sub *); +u32 sub_81449E0(struct mevent_srv_sub *); + +u32 sub_8144844(struct mevent_srv_sub * srv) +{ + return srv->unk_20(srv); +} + +u32 sub_8144850(struct mevent_srv_sub * srv) +{ + return srv->unk_24(srv); +} + +void sub_814485C(struct mevent_srv_sub * srv, u8 a1, u8 a2) +{ + srv->unk_04 = a1; + srv->unk_05 = a2; + srv->unk_00 = 0; + srv->unk_12 = 0; + srv->unk_14 = 0; + srv->unk_10 = 0; + srv->unk_0A = 0; + srv->unk_0C = 0; + srv->unk_08 = 0; + srv->unk_1C = 0; + srv->unk_18 = NULL; + srv->unk_24 = sub_81449E0; + srv->unk_20 = sub_814490C; +} + +void sub_8144888(struct mevent_srv_sub * srv, u16 a1, u32 a2, u32 a3) +{ + srv->unk_00 = 0; + srv->unk_0E = a1; + srv->unk_10 = 0; + srv->unk_12 = 0; + if (a3 != 0) + srv->unk_14 = a3; + else + srv->unk_14 = 0x400; + srv->unk_1C = a2; +} + +void sub_81448AC(struct mevent_srv_sub * srv, u16 a1, void * a2) +{ + srv->unk_00 = 0; + srv->unk_06 = a1; + srv->unk_08 = 0; + srv->unk_0A = 0; + srv->unk_0C = 0; + srv->unk_18 = a2; +} + +void sub_81448BC(u32 recv_idx, u16 * dest, size_t size) +{ + memcpy(dest, gBlockRecvBuffer[recv_idx], size); +} + +bool32 sub_81448D8(u32 recv_idx) +{ + if ((GetBlockReceivedStatus() >> recv_idx) & 1) + return TRUE; + else + return FALSE; +} + +void sub_81448FC(u32 recv_idx) +{ + ResetBlockReceivedFlag(recv_idx); +} + +bool32 sub_814490C(struct mevent_srv_sub * srv) +{ + u16 buff[4]; + switch (srv->unk_00) + { + case 0: + if (sub_81448D8(srv->unk_05)) + { + u16 * r4; + sub_81448BC(srv->unk_05, (r4 = buff), sizeof(buff)); + srv->unk_0C = r4[2]; + srv->unk_0A = r4[1]; + if (srv->unk_0C > 0x400) + { + sub_80FA190(); + return FALSE; + } + else if (srv->unk_06 != buff[0]) + { + sub_80FA190(); + return FALSE; + } + else + { + srv->unk_08 = 0; + sub_81448FC(srv->unk_05); + ++srv->unk_00; + } + } + break; + case 1: + if (sub_81448D8(srv->unk_05)) + { + size_t r3 = srv->unk_08 * 252; + if (srv->unk_0C - r3 <= 252) + { + sub_81448BC(srv->unk_05, srv->unk_18 + r3, srv->unk_0C - r3); + ++srv->unk_08; + ++srv->unk_00; + } + else + { + sub_81448BC(srv->unk_05, srv->unk_18 + r3, 252); + ++srv->unk_08; + } + sub_81448FC(srv->unk_05); + } + break; + case 2: + if (CalcCRC16WithTable(srv->unk_18, srv->unk_0C) != srv->unk_0A) + { + sub_80FA190(); + return FALSE; + } + else + { + srv->unk_00 = 0; + return TRUE; + } + break; + + } + + return FALSE; +} -- cgit v1.2.3 From 5a80a339cd04864f36bae99eb4b35de2f8bbab16 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 30 Nov 2018 10:52:54 -0500 Subject: sub_81449E0 --- src/mevent_server.c | 89 +++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 79 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/mevent_server.c b/src/mevent_server.c index 0c94980ff..8c68a9350 100644 --- a/src/mevent_server.c +++ b/src/mevent_server.c @@ -21,7 +21,7 @@ struct mevent_srv_sub u16 unk_12; u16 unk_14; void * unk_18; - u32 unk_1C; + void * unk_1C; u32 (*unk_20)(struct mevent_srv_sub *); u32 (*unk_24)(struct mevent_srv_sub *); }; @@ -40,6 +40,13 @@ struct mevent_srv_ish struct mevent_srv_sub unk_24; }; +struct send_recv_buff +{ + u16 unk0; + u16 unk2; + u16 unk4; +}; + EWRAM_DATA struct mevent_srv_ish * gUnknown_203F3C0 = NULL; u32 sub_814490C(struct mevent_srv_sub *); @@ -66,13 +73,13 @@ void sub_814485C(struct mevent_srv_sub * srv, u8 a1, u8 a2) srv->unk_0A = 0; srv->unk_0C = 0; srv->unk_08 = 0; - srv->unk_1C = 0; + srv->unk_1C = NULL; srv->unk_18 = NULL; srv->unk_24 = sub_81449E0; srv->unk_20 = sub_814490C; } -void sub_8144888(struct mevent_srv_sub * srv, u16 a1, u32 a2, u32 a3) +void sub_8144888(struct mevent_srv_sub * srv, u16 a1, void * a2, u32 a3) { srv->unk_00 = 0; srv->unk_0E = a1; @@ -95,7 +102,7 @@ void sub_81448AC(struct mevent_srv_sub * srv, u16 a1, void * a2) srv->unk_18 = a2; } -void sub_81448BC(u32 recv_idx, u16 * dest, size_t size) +void sub_81448BC(u32 recv_idx, void * dest, size_t size) { memcpy(dest, gBlockRecvBuffer[recv_idx], size); } @@ -115,22 +122,22 @@ void sub_81448FC(u32 recv_idx) bool32 sub_814490C(struct mevent_srv_sub * srv) { - u16 buff[4]; + struct send_recv_buff buff; + switch (srv->unk_00) { case 0: if (sub_81448D8(srv->unk_05)) { - u16 * r4; - sub_81448BC(srv->unk_05, (r4 = buff), sizeof(buff)); - srv->unk_0C = r4[2]; - srv->unk_0A = r4[1]; + sub_81448BC(srv->unk_05, &buff, sizeof(buff)); + srv->unk_0C = buff.unk4; + srv->unk_0A = buff.unk2; if (srv->unk_0C > 0x400) { sub_80FA190(); return FALSE; } - else if (srv->unk_06 != buff[0]) + else if (srv->unk_06 != buff.unk0) { sub_80FA190(); return FALSE; @@ -178,3 +185,65 @@ bool32 sub_814490C(struct mevent_srv_sub * srv) return FALSE; } + +bool32 sub_81449E0(struct mevent_srv_sub * srv) +{ + struct send_recv_buff buff; + + switch (srv->unk_00) + { + case 0: + if (sub_800A4BC()) + { + buff.unk0 = srv->unk_0E; + buff.unk4 = srv->unk_14; + buff.unk2 = CalcCRC16WithTable(srv->unk_1C, srv->unk_14); + srv->unk_12 = buff.unk2; + srv->unk_10 = 0; + SendBlock(0, &buff, sizeof(buff)); + ++srv->unk_00; + } + break; + case 1: + if (sub_800A4BC()) + { + if (sub_81448D8(srv->unk_04)) + { + size_t r3; + sub_81448FC(srv->unk_04); + r3 = 252 * srv->unk_10; + if (srv->unk_14 - r3 <= 252) + { + SendBlock(0, srv->unk_1C + r3, srv->unk_14 - r3); + ++srv->unk_10; + ++srv->unk_00; + } + else + { + SendBlock(0, srv->unk_1C + r3, 252); + ++srv->unk_10; + } + } + } + break; + case 2: + if (sub_800A4BC()) + { + if (CalcCRC16WithTable(srv->unk_1C, srv->unk_14) != srv->unk_12) + sub_80FA190(); + else + ++srv->unk_00; + } + break; + case 3: + if (sub_81448D8(srv->unk_04)) + { + sub_81448FC(srv->unk_04); + srv->unk_00 = 0; + return TRUE; + } + break; + } + + return FALSE; +} -- cgit v1.2.3 From de6cf9f0de562bfc3085ffc2e07825b4487b4b9e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 30 Nov 2018 11:48:13 -0500 Subject: through sub_8144C80 --- src/mevent_server.c | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 113 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/mevent_server.c b/src/mevent_server.c index 8c68a9350..a94d8a0a1 100644 --- a/src/mevent_server.c +++ b/src/mevent_server.c @@ -51,6 +51,11 @@ EWRAM_DATA struct mevent_srv_ish * gUnknown_203F3C0 = NULL; u32 sub_814490C(struct mevent_srv_sub *); u32 sub_81449E0(struct mevent_srv_sub *); +void mevent_srv_ish_init(struct mevent_srv_ish *, u32, u32); +u32 mevent_srv_ish_exec(struct mevent_srv_ish *); +void sub_8144BC0(struct mevent_srv_ish *); + +extern u8 gUnknown_84687E0[0x400]; u32 sub_8144844(struct mevent_srv_sub * srv) { @@ -62,7 +67,7 @@ u32 sub_8144850(struct mevent_srv_sub * srv) return srv->unk_24(srv); } -void sub_814485C(struct mevent_srv_sub * srv, u8 a1, u8 a2) +void sub_814485C(struct mevent_srv_sub * srv, u32 a1, u32 a2) { srv->unk_04 = a1; srv->unk_05 = a2; @@ -79,7 +84,7 @@ void sub_814485C(struct mevent_srv_sub * srv, u8 a1, u8 a2) srv->unk_20 = sub_814490C; } -void sub_8144888(struct mevent_srv_sub * srv, u16 a1, void * a2, u32 a3) +void sub_8144888(struct mevent_srv_sub * srv, u32 a1, void * a2, u32 a3) { srv->unk_00 = 0; srv->unk_0E = a1; @@ -247,3 +252,109 @@ bool32 sub_81449E0(struct mevent_srv_sub * srv) return FALSE; } + +void sub_8144AEC(void) +{ + gUnknown_203F3C0 = AllocZeroed(sizeof(struct mevent_srv_ish)); + mevent_srv_ish_init(gUnknown_203F3C0, 1, 0); +} + +u32 sub_8144B0C(u16 * a0) +{ + u32 result; + if (gUnknown_203F3C0 == NULL) + return 6; + result = mevent_srv_ish_exec(gUnknown_203F3C0); + if (result == 6) + { + *a0 = gUnknown_203F3C0->unk_04; + sub_8144BC0(gUnknown_203F3C0); + Free(gUnknown_203F3C0); + gUnknown_203F3C0 = NULL; + } + return result; +} + +void sub_8144B48(void) +{ + gUnknown_203F3C0->unk_0C++; +} + +void * sub_8144B58(void) +{ + return gUnknown_203F3C0->unk_20; +} + +void sub_8144B64(u32 a0) +{ + gUnknown_203F3C0->unk_04 = a0; +} + +void mevent_srv_ish_init(struct mevent_srv_ish * srv, u32 a1, u32 a2) +{ + srv->unk_00 = 0; + srv->unk_08 = 0; + srv->unk_0C = 0; + srv->unk_14 = AllocZeroed(0x400); + srv->unk_18 = AllocZeroed(0x400); + srv->unk_1C = AllocZeroed(0x400); + srv->unk_20 = AllocZeroed(0x40); + sub_814485C(&srv->unk_24, a1, a2); +} + +void sub_8144BC0(struct mevent_srv_ish * srv) +{ + Free(srv->unk_14); + Free(srv->unk_18); + Free(srv->unk_1C); + Free(srv->unk_20); +} + +void sub_8144BE4(struct mevent_srv_ish * srv) +{ + memcpy(srv->unk_1C, srv->unk_18, 0x400); + srv->unk_10 = 0; +} + +void sub_8144C00(struct mevent_srv_ish * srv, u32 a1, u32 a2) +{ + CpuFill32(0, srv->unk_14, 0x400); + *(u32 *)srv->unk_14 = a2; + sub_8144888(&srv->unk_24, a1, srv->unk_14, 4); +} + +// funcs in array gUnknown_8466F60 + +u32 sub_8144C34(struct mevent_srv_ish * srv) +{ + memcpy(srv->unk_1C, gUnknown_84687E0, sizeof(gUnknown_84687E0)); + srv->unk_10 = 0; + srv->unk_08 = 4; + srv->unk_0C = 0; + return 0; +} + +u32 sub_8144C5C(struct mevent_srv_ish * srv) +{ + return 6; +} + +u32 sub_8144C60(struct mevent_srv_ish * srv) +{ + if (sub_8144844(&srv->unk_24)) + { + srv->unk_08 = 4; + srv->unk_0C = 0; + } + return 1; +} + +u32 sub_8144C80(struct mevent_srv_ish * srv) +{ + if (sub_8144850(&srv->unk_24)) + { + srv->unk_08 = 4; + srv->unk_0C = 0; + } + return 1; +} -- cgit v1.2.3 From 7c2517611b83ac9d490a99ec32cf1a4412c05ce0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 30 Nov 2018 12:16:42 -0500 Subject: sub_8144CA0 --- src/mevent_server.c | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 110 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/mevent_server.c b/src/mevent_server.c index a94d8a0a1..3297e2658 100644 --- a/src/mevent_server.c +++ b/src/mevent_server.c @@ -1,8 +1,12 @@ #include "global.h" #include "malloc.h" +#include "decompress.h" #include "util.h" #include "link.h" #include "link_rfu.h" +#include "overworld.h" +#include "script.h" +#include "battle_tower.h" #include "mevent.h" extern u16 gBlockRecvBuffer[][128]; @@ -97,7 +101,7 @@ void sub_8144888(struct mevent_srv_sub * srv, u32 a1, void * a2, u32 a3) srv->unk_1C = a2; } -void sub_81448AC(struct mevent_srv_sub * srv, u16 a1, void * a2) +void sub_81448AC(struct mevent_srv_sub * srv, u32 a1, void * a2) { srv->unk_00 = 0; srv->unk_06 = a1; @@ -358,3 +362,108 @@ u32 sub_8144C80(struct mevent_srv_ish * srv) } return 1; } + +u32 sub_8144CA0(struct mevent_srv_ish * srv) +{ + u32 * r2 = (u32 *)srv->unk_1C + 2 * srv->unk_10; + ++srv->unk_10; + switch (r2[0]) + { + case 0: + break; + case 1: + srv->unk_04 = r2[1]; + srv->unk_08 = 1; + srv->unk_0C = 0; + break; + case 2: + sub_81448AC(&srv->unk_24, r2[1], srv->unk_18); + srv->unk_08 = 2; + srv->unk_0C = 0; + break; + case 3: + srv->unk_08 = 3; + srv->unk_0C = 0; + break; + case 20: + sub_8144888(&srv->unk_24, 0x14, srv->unk_14, 0); + srv->unk_08 = 3; + srv->unk_0C = 0; + break; + case 19: + sub_8144C00(srv, 0x12, GetGameStat(r2[1])); + srv->unk_08 = 3; + srv->unk_0C = 0; + break; + case 6: + if (srv->unk_04 == 0) + sub_8144BE4(srv); + break; + case 7: + if (srv->unk_04 == 1) + sub_8144BE4(srv); + break; + case 4: + sub_8144BE4(srv); + break; + case 5: + memcpy(srv->unk_20, srv->unk_18, 0x40); + srv->unk_08 = 5; + srv->unk_0C = 0; + return 2; + case 11: + memcpy(srv->unk_20, srv->unk_18, 0x40); + srv->unk_08 = 5; + srv->unk_0C = 0; + return 3; + case 12: + memcpy(srv->unk_20, srv->unk_18, 0x40); + srv->unk_08 = 5; + srv->unk_0C = 0; + return 5; + case 13: + srv->unk_08 = 5; + srv->unk_0C = 0; + return 4; + case 8: + sub_81442CC(srv->unk_14); + sub_8144888(&srv->unk_24, 0x11, srv->unk_14, 0x64); + break; + case 14: + sub_8144C00(srv, 0x13, srv->unk_04); + break; + case 10: + sub_8143F68(srv->unk_18); + break; + case 9: + if (!sub_8143EF4(srv->unk_18)) + { + sub_8143DC8(srv->unk_18); + sub_8144C00(srv, 0x13, 0); + } + else + sub_8144C00(srv, 0x13, 1); + break; + case 15: + srv->unk_08 = 6; + srv->unk_0C = 0; + break; + case 16: + sub_8144254(srv->unk_18); + break; + case 17: + sub_8069EA4(srv->unk_18, 1000); + break; + case 18: + memcpy(gSaveBlock2Ptr->unk_4A0, srv->unk_18, 0xbc); + sub_80E7490(); + break; + case 21: + memcpy(gDecompressionBuffer, srv->unk_18, 0x400); + srv->unk_08 = 7; + srv->unk_0C = 0; + break; + } + + return 1; +} -- cgit v1.2.3 From f178d06946a4debf6a0551094d3ef2f70b7b364c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 30 Nov 2018 12:26:24 -0500 Subject: through mevent_srv_ish_exec --- src/mevent_server.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) (limited to 'src') diff --git a/src/mevent_server.c b/src/mevent_server.c index 3297e2658..251764441 100644 --- a/src/mevent_server.c +++ b/src/mevent_server.c @@ -7,6 +7,7 @@ #include "overworld.h" #include "script.h" #include "battle_tower.h" +#include "mystery_event_script.h" #include "mevent.h" extern u16 gBlockRecvBuffer[][128]; @@ -467,3 +468,58 @@ u32 sub_8144CA0(struct mevent_srv_ish * srv) return 1; } + +u32 sub_8144E6C(struct mevent_srv_ish * srv) +{ + if (srv->unk_0C) + { + srv->unk_08 = 4; + srv->unk_0C = 0; + } + return 1; +} + +u32 sub_8144E84(struct mevent_srv_ish * srv) +{ + switch (srv->unk_0C) + { + case 0: + sub_80DA89C(srv->unk_18); + ++srv->unk_0C; + break; + case 1: + if (!sub_80DA8B0(&srv->unk_04)) + { + srv->unk_08 = 4; + srv->unk_0C = 0; + } + break; + } + return 1; +} + +u32 sub_8144EBC(struct mevent_srv_ish * srv) +{ + u32 (*func)(u32 *, struct SaveBlock2 *, struct SaveBlock1 *) = (void *)gDecompressionBuffer; + if (func(&srv->unk_04, gSaveBlock2Ptr, gSaveBlock1Ptr) == 1) + { + srv->unk_08 = 4; + srv->unk_0C = 0; + } + return 1; +} + +u32 mevent_srv_ish_exec(struct mevent_srv_ish * srv) +{ + u32 (*funcs[])(struct mevent_srv_ish *) = { + sub_8144C34, + sub_8144C5C, + sub_8144C60, + sub_8144C80, + sub_8144CA0, + sub_8144E6C, + sub_8144E84, + sub_8144EBC + }; + return funcs[srv->unk_08](srv); +} -- cgit v1.2.3 From 8a8e86fa4fe0a7932f475c7aa8424ea840327e4b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 30 Nov 2018 15:26:16 -0500 Subject: split mevent_server --- src/mevent.c | 9 +- src/mevent_server.c | 527 +++++------------------------------------------- src/mevent_server_ish.c | 308 ++++++++++++++++++++++++++++ src/mevent_server_sub.c | 211 +++++++++++++++++++ 4 files changed, 574 insertions(+), 481 deletions(-) create mode 100644 src/mevent_server_ish.c create mode 100644 src/mevent_server_sub.c (limited to 'src') diff --git a/src/mevent.c b/src/mevent.c index b04ac5462..9638e0327 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -17,6 +17,9 @@ #include "new_game.h" #include "string_util.h" #include "menews_jisan.h" +#include "cereader_tool.h" +#include "mystery_gift_menu.h" +#include "help_system.h" #include "mevent.h" struct MEventTaskData1 @@ -40,14 +43,10 @@ bool32 sub_8143E64(const struct MEventBuffer_3120_Sub * src); void sub_8143E9C(void); void sub_8143ED0(void); bool32 sub_8144018(const struct MEventBuffer_32E0_Sub * src); -bool32 sub_815D794(u8 *); -void sub_81422FC(void); -void sub_812B484(void); void sub_814407C(void); void sub_81440B4(void); void sub_8144824(u32, u32, u32 *, s32); void sub_8144790(void); -u8 sub_815D6B4(u8 *); extern const u8 gUnknown_841DE52[]; extern const u8 gUnknown_841DE53[]; @@ -90,7 +89,7 @@ const u16 gUnknown_8466F00[] = { struct MEvent_Str_1 gUnknown_3005ED0; -bool32 gUnknown_203F3BC = FALSE; +static EWRAM_DATA bool32 gUnknown_203F3BC = FALSE; void sub_81435DC(struct MEvent_Str_1 *a0, size_t a1, const void * a2) { diff --git a/src/mevent_server.c b/src/mevent_server.c index 251764441..027a7e994 100644 --- a/src/mevent_server.c +++ b/src/mevent_server.c @@ -9,517 +9,92 @@ #include "battle_tower.h" #include "mystery_event_script.h" #include "mevent.h" +#include "mevent_server.h" extern u16 gBlockRecvBuffer[][128]; -struct mevent_srv_sub -{ - s32 unk_00; - u8 unk_04; - u8 unk_05; - u16 unk_06; - u16 unk_08; - u16 unk_0A; - u16 unk_0C; - u16 unk_0E; - u16 unk_10; - u16 unk_12; - u16 unk_14; - void * unk_18; - void * unk_1C; - u32 (*unk_20)(struct mevent_srv_sub *); - u32 (*unk_24)(struct mevent_srv_sub *); -}; - -struct mevent_srv_ish +struct mevent_srv_common { u32 unk_00; u32 unk_04; - u32 unk_08; + u32 mainseqno; u32 unk_0C; - u32 unk_10; + const void * unk_10; void * unk_14; void * unk_18; void * unk_1C; void * unk_20; - struct mevent_srv_sub unk_24; -}; - -struct send_recv_buff -{ - u16 unk0; - u16 unk2; - u16 unk4; + u8 filler_24[0x14]; + struct mevent_srv_sub unk_38; }; -EWRAM_DATA struct mevent_srv_ish * gUnknown_203F3C0 = NULL; - -u32 sub_814490C(struct mevent_srv_sub *); -u32 sub_81449E0(struct mevent_srv_sub *); -void mevent_srv_ish_init(struct mevent_srv_ish *, u32, u32); -u32 mevent_srv_ish_exec(struct mevent_srv_ish *); -void sub_8144BC0(struct mevent_srv_ish *); - -extern u8 gUnknown_84687E0[0x400]; - -u32 sub_8144844(struct mevent_srv_sub * srv) -{ - return srv->unk_20(srv); -} - -u32 sub_8144850(struct mevent_srv_sub * srv) -{ - return srv->unk_24(srv); -} - -void sub_814485C(struct mevent_srv_sub * srv, u32 a1, u32 a2) -{ - srv->unk_04 = a1; - srv->unk_05 = a2; - srv->unk_00 = 0; - srv->unk_12 = 0; - srv->unk_14 = 0; - srv->unk_10 = 0; - srv->unk_0A = 0; - srv->unk_0C = 0; - srv->unk_08 = 0; - srv->unk_1C = NULL; - srv->unk_18 = NULL; - srv->unk_24 = sub_81449E0; - srv->unk_20 = sub_814490C; -} - -void sub_8144888(struct mevent_srv_sub * srv, u32 a1, void * a2, u32 a3) -{ - srv->unk_00 = 0; - srv->unk_0E = a1; - srv->unk_10 = 0; - srv->unk_12 = 0; - if (a3 != 0) - srv->unk_14 = a3; - else - srv->unk_14 = 0x400; - srv->unk_1C = a2; -} - -void sub_81448AC(struct mevent_srv_sub * srv, u32 a1, void * a2) -{ - srv->unk_00 = 0; - srv->unk_06 = a1; - srv->unk_08 = 0; - srv->unk_0A = 0; - srv->unk_0C = 0; - srv->unk_18 = a2; -} - -void sub_81448BC(u32 recv_idx, void * dest, size_t size) -{ - memcpy(dest, gBlockRecvBuffer[recv_idx], size); -} - -bool32 sub_81448D8(u32 recv_idx) -{ - if ((GetBlockReceivedStatus() >> recv_idx) & 1) - return TRUE; - else - return FALSE; -} - -void sub_81448FC(u32 recv_idx) -{ - ResetBlockReceivedFlag(recv_idx); -} - -bool32 sub_814490C(struct mevent_srv_sub * srv) -{ - struct send_recv_buff buff; - - switch (srv->unk_00) - { - case 0: - if (sub_81448D8(srv->unk_05)) - { - sub_81448BC(srv->unk_05, &buff, sizeof(buff)); - srv->unk_0C = buff.unk4; - srv->unk_0A = buff.unk2; - if (srv->unk_0C > 0x400) - { - sub_80FA190(); - return FALSE; - } - else if (srv->unk_06 != buff.unk0) - { - sub_80FA190(); - return FALSE; - } - else - { - srv->unk_08 = 0; - sub_81448FC(srv->unk_05); - ++srv->unk_00; - } - } - break; - case 1: - if (sub_81448D8(srv->unk_05)) - { - size_t r3 = srv->unk_08 * 252; - if (srv->unk_0C - r3 <= 252) - { - sub_81448BC(srv->unk_05, srv->unk_18 + r3, srv->unk_0C - r3); - ++srv->unk_08; - ++srv->unk_00; - } - else - { - sub_81448BC(srv->unk_05, srv->unk_18 + r3, 252); - ++srv->unk_08; - } - sub_81448FC(srv->unk_05); - } - break; - case 2: - if (CalcCRC16WithTable(srv->unk_18, srv->unk_0C) != srv->unk_0A) - { - sub_80FA190(); - return FALSE; - } - else - { - srv->unk_00 = 0; - return TRUE; - } - break; +EWRAM_DATA struct mevent_srv_common * gUnknown_203F3C4 = NULL; - } +void mevent_srv_init_common(struct mevent_srv_common *, const void *, u32, u32); +void mevent_srv_free_resources(struct mevent_srv_common *); +u32 sub_8145600(struct mevent_srv_common *); - return FALSE; -} +extern const u8 gUnknown_8468B6C[]; +extern const u8 gUnknown_8468BCC[]; -bool32 sub_81449E0(struct mevent_srv_sub * srv) +void sub_8144F1C(void) { - struct send_recv_buff buff; - - switch (srv->unk_00) - { - case 0: - if (sub_800A4BC()) - { - buff.unk0 = srv->unk_0E; - buff.unk4 = srv->unk_14; - buff.unk2 = CalcCRC16WithTable(srv->unk_1C, srv->unk_14); - srv->unk_12 = buff.unk2; - srv->unk_10 = 0; - SendBlock(0, &buff, sizeof(buff)); - ++srv->unk_00; - } - break; - case 1: - if (sub_800A4BC()) - { - if (sub_81448D8(srv->unk_04)) - { - size_t r3; - sub_81448FC(srv->unk_04); - r3 = 252 * srv->unk_10; - if (srv->unk_14 - r3 <= 252) - { - SendBlock(0, srv->unk_1C + r3, srv->unk_14 - r3); - ++srv->unk_10; - ++srv->unk_00; - } - else - { - SendBlock(0, srv->unk_1C + r3, 252); - ++srv->unk_10; - } - } - } - break; - case 2: - if (sub_800A4BC()) - { - if (CalcCRC16WithTable(srv->unk_1C, srv->unk_14) != srv->unk_12) - sub_80FA190(); - else - ++srv->unk_00; - } - break; - case 3: - if (sub_81448D8(srv->unk_04)) - { - sub_81448FC(srv->unk_04); - srv->unk_00 = 0; - return TRUE; - } - break; - } - - return FALSE; + gUnknown_203F3C4 = AllocZeroed(sizeof(struct mevent_srv_common)); + mevent_srv_init_common(gUnknown_203F3C4, gUnknown_8468B6C, 0, 1); } -void sub_8144AEC(void) +void sub_8144F40(void) { - gUnknown_203F3C0 = AllocZeroed(sizeof(struct mevent_srv_ish)); - mevent_srv_ish_init(gUnknown_203F3C0, 1, 0); + gUnknown_203F3C4 = AllocZeroed(sizeof(struct mevent_srv_common)); + mevent_srv_init_common(gUnknown_203F3C4, gUnknown_8468BCC, 0, 1); } -u32 sub_8144B0C(u16 * a0) +u32 sub_8144F64(u16 * a0) { u32 result; - if (gUnknown_203F3C0 == NULL) - return 6; - result = mevent_srv_ish_exec(gUnknown_203F3C0); - if (result == 6) + if (gUnknown_203F3C4 == NULL) + return 3; + result = sub_8145600(gUnknown_203F3C4); + if (result == 3) { - *a0 = gUnknown_203F3C0->unk_04; - sub_8144BC0(gUnknown_203F3C0); - Free(gUnknown_203F3C0); - gUnknown_203F3C0 = NULL; + *a0 = gUnknown_203F3C4->unk_04; + mevent_srv_free_resources(gUnknown_203F3C4); + Free(gUnknown_203F3C4); + gUnknown_203F3C4 = NULL; } return result; } -void sub_8144B48(void) -{ - gUnknown_203F3C0->unk_0C++; -} - -void * sub_8144B58(void) -{ - return gUnknown_203F3C0->unk_20; -} - -void sub_8144B64(u32 a0) -{ - gUnknown_203F3C0->unk_04 = a0; -} - -void mevent_srv_ish_init(struct mevent_srv_ish * srv, u32 a1, u32 a2) -{ - srv->unk_00 = 0; - srv->unk_08 = 0; - srv->unk_0C = 0; - srv->unk_14 = AllocZeroed(0x400); - srv->unk_18 = AllocZeroed(0x400); - srv->unk_1C = AllocZeroed(0x400); - srv->unk_20 = AllocZeroed(0x40); - sub_814485C(&srv->unk_24, a1, a2); -} - -void sub_8144BC0(struct mevent_srv_ish * srv) -{ - Free(srv->unk_14); - Free(srv->unk_18); - Free(srv->unk_1C); - Free(srv->unk_20); -} - -void sub_8144BE4(struct mevent_srv_ish * srv) -{ - memcpy(srv->unk_1C, srv->unk_18, 0x400); - srv->unk_10 = 0; -} - -void sub_8144C00(struct mevent_srv_ish * srv, u32 a1, u32 a2) -{ - CpuFill32(0, srv->unk_14, 0x400); - *(u32 *)srv->unk_14 = a2; - sub_8144888(&srv->unk_24, a1, srv->unk_14, 4); -} - -// funcs in array gUnknown_8466F60 - -u32 sub_8144C34(struct mevent_srv_ish * srv) -{ - memcpy(srv->unk_1C, gUnknown_84687E0, sizeof(gUnknown_84687E0)); - srv->unk_10 = 0; - srv->unk_08 = 4; - srv->unk_0C = 0; - return 0; -} - -u32 sub_8144C5C(struct mevent_srv_ish * srv) -{ - return 6; -} - -u32 sub_8144C60(struct mevent_srv_ish * srv) +void mevent_srv_init_common(struct mevent_srv_common * svr, const void * a1, u32 a2, u32 a3) { - if (sub_8144844(&srv->unk_24)) - { - srv->unk_08 = 4; - srv->unk_0C = 0; - } - return 1; -} - -u32 sub_8144C80(struct mevent_srv_ish * srv) -{ - if (sub_8144850(&srv->unk_24)) - { - srv->unk_08 = 4; - srv->unk_0C = 0; - } - return 1; -} - -u32 sub_8144CA0(struct mevent_srv_ish * srv) -{ - u32 * r2 = (u32 *)srv->unk_1C + 2 * srv->unk_10; - ++srv->unk_10; - switch (r2[0]) - { - case 0: - break; - case 1: - srv->unk_04 = r2[1]; - srv->unk_08 = 1; - srv->unk_0C = 0; - break; - case 2: - sub_81448AC(&srv->unk_24, r2[1], srv->unk_18); - srv->unk_08 = 2; - srv->unk_0C = 0; - break; - case 3: - srv->unk_08 = 3; - srv->unk_0C = 0; - break; - case 20: - sub_8144888(&srv->unk_24, 0x14, srv->unk_14, 0); - srv->unk_08 = 3; - srv->unk_0C = 0; - break; - case 19: - sub_8144C00(srv, 0x12, GetGameStat(r2[1])); - srv->unk_08 = 3; - srv->unk_0C = 0; - break; - case 6: - if (srv->unk_04 == 0) - sub_8144BE4(srv); - break; - case 7: - if (srv->unk_04 == 1) - sub_8144BE4(srv); - break; - case 4: - sub_8144BE4(srv); - break; - case 5: - memcpy(srv->unk_20, srv->unk_18, 0x40); - srv->unk_08 = 5; - srv->unk_0C = 0; - return 2; - case 11: - memcpy(srv->unk_20, srv->unk_18, 0x40); - srv->unk_08 = 5; - srv->unk_0C = 0; - return 3; - case 12: - memcpy(srv->unk_20, srv->unk_18, 0x40); - srv->unk_08 = 5; - srv->unk_0C = 0; - return 5; - case 13: - srv->unk_08 = 5; - srv->unk_0C = 0; - return 4; - case 8: - sub_81442CC(srv->unk_14); - sub_8144888(&srv->unk_24, 0x11, srv->unk_14, 0x64); - break; - case 14: - sub_8144C00(srv, 0x13, srv->unk_04); - break; - case 10: - sub_8143F68(srv->unk_18); - break; - case 9: - if (!sub_8143EF4(srv->unk_18)) - { - sub_8143DC8(srv->unk_18); - sub_8144C00(srv, 0x13, 0); - } - else - sub_8144C00(srv, 0x13, 1); - break; - case 15: - srv->unk_08 = 6; - srv->unk_0C = 0; - break; - case 16: - sub_8144254(srv->unk_18); - break; - case 17: - sub_8069EA4(srv->unk_18, 1000); - break; - case 18: - memcpy(gSaveBlock2Ptr->unk_4A0, srv->unk_18, 0xbc); - sub_80E7490(); - break; - case 21: - memcpy(gDecompressionBuffer, srv->unk_18, 0x400); - srv->unk_08 = 7; - srv->unk_0C = 0; - break; - } - - return 1; -} - -u32 sub_8144E6C(struct mevent_srv_ish * srv) -{ - if (srv->unk_0C) - { - srv->unk_08 = 4; - srv->unk_0C = 0; - } - return 1; + svr->unk_00 = 0; + svr->mainseqno = 0; + svr->unk_18 = AllocZeroed(332); + svr->unk_1C = AllocZeroed(444); + svr->unk_14 = AllocZeroed(ME_SEND_BUF_SIZE); + svr->unk_20 = AllocZeroed(100); + svr->unk_10 = a1; + svr->unk_0C = 0; + sub_814485C(&svr->unk_38, a2, a3); } -u32 sub_8144E84(struct mevent_srv_ish * srv) +void mevent_srv_free_resources(struct mevent_srv_common * svr) { - switch (srv->unk_0C) - { - case 0: - sub_80DA89C(srv->unk_18); - ++srv->unk_0C; - break; - case 1: - if (!sub_80DA8B0(&srv->unk_04)) - { - srv->unk_08 = 4; - srv->unk_0C = 0; - } - break; - } - return 1; + Free(svr->unk_18); + Free(svr->unk_1C); + Free(svr->unk_14); + Free(svr->unk_20); } -u32 sub_8144EBC(struct mevent_srv_ish * srv) -{ - u32 (*func)(u32 *, struct SaveBlock2 *, struct SaveBlock1 *) = (void *)gDecompressionBuffer; - if (func(&srv->unk_04, gSaveBlock2Ptr, gSaveBlock1Ptr) == 1) - { - srv->unk_08 = 4; - srv->unk_0C = 0; - } - return 1; -} +const char gUnknown_8466F80[] = "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"; +const char gUnknown_8466FB8[] = "size <= ME_SEND_BUF_SIZE"; +const char gUnknown_8466FD4[] = "cmd->parameter == NULL"; +const char gUnknown_8466FEC[] = "cmd->flag == FALSE"; +const char gUnknown_8467000[] = "cmd->flag == FALSE && cmd->parameter == NULL"; -u32 mevent_srv_ish_exec(struct mevent_srv_ish * srv) +void sub_814501C(struct mevent_srv_common * svr, u32 a1, void * a2, u32 size) { - u32 (*funcs[])(struct mevent_srv_ish *) = { - sub_8144C34, - sub_8144C5C, - sub_8144C60, - sub_8144C80, - sub_8144CA0, - sub_8144E6C, - sub_8144E84, - sub_8144EBC - }; - return funcs[srv->unk_08](srv); + // AGB_ASSERT_EX(size <= ME_SEND_BUF_SIZE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 257); + size <= ME_SEND_BUF_SIZE ? NULL : AGBAssert(gUnknown_8466F80, 257, gUnknown_8466FB8, 1); + sub_8144888(&svr->unk_38, a1, a2, size); } diff --git a/src/mevent_server_ish.c b/src/mevent_server_ish.c new file mode 100644 index 000000000..7e9639303 --- /dev/null +++ b/src/mevent_server_ish.c @@ -0,0 +1,308 @@ +#include "global.h" +#include "malloc.h" +#include "decompress.h" +#include "util.h" +#include "link.h" +#include "link_rfu.h" +#include "overworld.h" +#include "script.h" +#include "battle_tower.h" +#include "mystery_event_script.h" +#include "mevent.h" +#include "mevent_server.h" + +extern u16 gBlockRecvBuffer[][128]; + +struct mevent_srv_ish +{ + u32 unk_00; + u32 unk_04; + u32 mainseqno; + u32 unk_0C; + u32 unk_10; + void * unk_14; + void * unk_18; + void * unk_1C; + void * unk_20; + struct mevent_srv_sub unk_24; +}; + +struct mevent_cmd +{ + u32 instr; + bool32 flag; + u32 parameter; +}; + +EWRAM_DATA struct mevent_srv_ish * gUnknown_203F3C0 = NULL; + +void mevent_srv_ish_init(struct mevent_srv_ish *, u32, u32); +u32 mevent_srv_ish_exec(struct mevent_srv_ish *); +void sub_8144BC0(struct mevent_srv_ish *); +extern const u8 gUnknown_84687E0[]; + +void sub_8144AEC(void) +{ + gUnknown_203F3C0 = AllocZeroed(sizeof(struct mevent_srv_ish)); + mevent_srv_ish_init(gUnknown_203F3C0, 1, 0); +} + +u32 sub_8144B0C(u16 * a0) +{ + u32 result; + if (gUnknown_203F3C0 == NULL) + return 6; + result = mevent_srv_ish_exec(gUnknown_203F3C0); + if (result == 6) + { + *a0 = gUnknown_203F3C0->unk_04; + sub_8144BC0(gUnknown_203F3C0); + Free(gUnknown_203F3C0); + gUnknown_203F3C0 = NULL; + } + return result; +} + +void sub_8144B48(void) +{ + gUnknown_203F3C0->unk_0C++; +} + +void * sub_8144B58(void) +{ + return gUnknown_203F3C0->unk_20; +} + +void sub_8144B64(u32 a0) +{ + gUnknown_203F3C0->unk_04 = a0; +} + +void mevent_srv_ish_init(struct mevent_srv_ish * svr, u32 a1, u32 a2) +{ + svr->unk_00 = 0; + svr->mainseqno = 0; + svr->unk_0C = 0; + svr->unk_14 = AllocZeroed(ME_SEND_BUF_SIZE); + svr->unk_18 = AllocZeroed(ME_SEND_BUF_SIZE); + svr->unk_1C = AllocZeroed(ME_SEND_BUF_SIZE); + svr->unk_20 = AllocZeroed(0x40); + sub_814485C(&svr->unk_24, a1, a2); +} + +void sub_8144BC0(struct mevent_srv_ish * svr) +{ + Free(svr->unk_14); + Free(svr->unk_18); + Free(svr->unk_1C); + Free(svr->unk_20); +} + +void sub_8144BE4(struct mevent_srv_ish * svr) +{ + memcpy(svr->unk_1C, svr->unk_18, ME_SEND_BUF_SIZE); + svr->unk_10 = 0; +} + +void sub_8144C00(struct mevent_srv_ish * svr, u32 a1, u32 a2) +{ + CpuFill32(0, svr->unk_14, ME_SEND_BUF_SIZE); + *(u32 *)svr->unk_14 = a2; + sub_8144888(&svr->unk_24, a1, svr->unk_14, 4); +} + +// funcs in array gUnknown_8466F60 + +u32 sub_8144C34(struct mevent_srv_ish * svr) +{ + memcpy(svr->unk_1C, gUnknown_84687E0, ME_SEND_BUF_SIZE); + svr->unk_10 = 0; + svr->mainseqno = 4; + svr->unk_0C = 0; + return 0; +} + +u32 sub_8144C5C(struct mevent_srv_ish * svr) +{ + return 6; +} + +u32 sub_8144C60(struct mevent_srv_ish * svr) +{ + if (sub_8144844(&svr->unk_24)) + { + svr->mainseqno = 4; + svr->unk_0C = 0; + } + return 1; +} + +u32 sub_8144C80(struct mevent_srv_ish * svr) +{ + if (sub_8144850(&svr->unk_24)) + { + svr->mainseqno = 4; + svr->unk_0C = 0; + } + return 1; +} + +u32 sub_8144CA0(struct mevent_srv_ish * svr) +{ + u32 * r2 = (u32 *)svr->unk_1C + 2 * svr->unk_10; + ++svr->unk_10; + switch (r2[0]) + { + case 0: + break; + case 1: + svr->unk_04 = r2[1]; + svr->mainseqno = 1; + svr->unk_0C = 0; + break; + case 2: + sub_81448AC(&svr->unk_24, r2[1], svr->unk_18); + svr->mainseqno = 2; + svr->unk_0C = 0; + break; + case 3: + svr->mainseqno = 3; + svr->unk_0C = 0; + break; + case 20: + sub_8144888(&svr->unk_24, 0x14, svr->unk_14, 0); + svr->mainseqno = 3; + svr->unk_0C = 0; + break; + case 19: + sub_8144C00(svr, 0x12, GetGameStat(r2[1])); + svr->mainseqno = 3; + svr->unk_0C = 0; + break; + case 6: + if (svr->unk_04 == 0) + sub_8144BE4(svr); + break; + case 7: + if (svr->unk_04 == 1) + sub_8144BE4(svr); + break; + case 4: + sub_8144BE4(svr); + break; + case 5: + memcpy(svr->unk_20, svr->unk_18, 0x40); + svr->mainseqno = 5; + svr->unk_0C = 0; + return 2; + case 11: + memcpy(svr->unk_20, svr->unk_18, 0x40); + svr->mainseqno = 5; + svr->unk_0C = 0; + return 3; + case 12: + memcpy(svr->unk_20, svr->unk_18, 0x40); + svr->mainseqno = 5; + svr->unk_0C = 0; + return 5; + case 13: + svr->mainseqno = 5; + svr->unk_0C = 0; + return 4; + case 8: + sub_81442CC(svr->unk_14); + sub_8144888(&svr->unk_24, 0x11, svr->unk_14, 0x64); + break; + case 14: + sub_8144C00(svr, 0x13, svr->unk_04); + break; + case 10: + sub_8143F68(svr->unk_18); + break; + case 9: + if (!sub_8143EF4(svr->unk_18)) + { + sub_8143DC8(svr->unk_18); + sub_8144C00(svr, 0x13, 0); + } + else + sub_8144C00(svr, 0x13, 1); + break; + case 15: + svr->mainseqno = 6; + svr->unk_0C = 0; + break; + case 16: + sub_8144254(svr->unk_18); + break; + case 17: + sub_8069EA4(svr->unk_18, 1000); + break; + case 18: + memcpy(gSaveBlock2Ptr->unk_4A0, svr->unk_18, 0xbc); + sub_80E7490(); + break; + case 21: + memcpy(gDecompressionBuffer, svr->unk_18, ME_SEND_BUF_SIZE); + svr->mainseqno = 7; + svr->unk_0C = 0; + break; + } + + return 1; +} + +u32 sub_8144E6C(struct mevent_srv_ish * svr) +{ + if (svr->unk_0C) + { + svr->mainseqno = 4; + svr->unk_0C = 0; + } + return 1; +} + +u32 sub_8144E84(struct mevent_srv_ish * svr) +{ + switch (svr->unk_0C) + { + case 0: + sub_80DA89C(svr->unk_18); + ++svr->unk_0C; + break; + case 1: + if (!sub_80DA8B0(&svr->unk_04)) + { + svr->mainseqno = 4; + svr->unk_0C = 0; + } + break; + } + return 1; +} + +u32 sub_8144EBC(struct mevent_srv_ish * svr) +{ + u32 (*func)(u32 *, struct SaveBlock2 *, struct SaveBlock1 *) = (void *)gDecompressionBuffer; + if (func(&svr->unk_04, gSaveBlock2Ptr, gSaveBlock1Ptr) == 1) + { + svr->mainseqno = 4; + svr->unk_0C = 0; + } + return 1; +} + +u32 mevent_srv_ish_exec(struct mevent_srv_ish * svr) +{ + u32 (*funcs[])(struct mevent_srv_ish *) = { + sub_8144C34, + sub_8144C5C, + sub_8144C60, + sub_8144C80, + sub_8144CA0, + sub_8144E6C, + sub_8144E84, + sub_8144EBC + }; + return funcs[svr->mainseqno](svr); +} diff --git a/src/mevent_server_sub.c b/src/mevent_server_sub.c new file mode 100644 index 000000000..83b8f62ca --- /dev/null +++ b/src/mevent_server_sub.c @@ -0,0 +1,211 @@ +#include "global.h" +#include "malloc.h" +#include "decompress.h" +#include "util.h" +#include "link.h" +#include "link_rfu.h" +#include "overworld.h" +#include "script.h" +#include "battle_tower.h" +#include "mystery_event_script.h" +#include "mevent.h" +#include "mevent_server.h" + +u32 sub_814490C(struct mevent_srv_sub *); +u32 sub_81449E0(struct mevent_srv_sub *); + +u32 sub_8144844(struct mevent_srv_sub * svr) +{ + return svr->unk_20(svr); +} + +u32 sub_8144850(struct mevent_srv_sub * svr) +{ + return svr->unk_24(svr); +} + +void sub_814485C(struct mevent_srv_sub * svr, u32 a1, u32 a2) +{ + svr->unk_04 = a1; + svr->unk_05 = a2; + svr->unk_00 = 0; + svr->unk_12 = 0; + svr->unk_14 = 0; + svr->unk_10 = 0; + svr->unk_0A = 0; + svr->unk_0C = 0; + svr->unk_08 = 0; + svr->unk_1C = NULL; + svr->unk_18 = NULL; + svr->unk_24 = sub_81449E0; + svr->unk_20 = sub_814490C; +} + +void sub_8144888(struct mevent_srv_sub * svr, u32 a1, void * a2, u32 a3) +{ + svr->unk_00 = 0; + svr->unk_0E = a1; + svr->unk_10 = 0; + svr->unk_12 = 0; + if (a3 != 0) + svr->unk_14 = a3; + else + svr->unk_14 = ME_SEND_BUF_SIZE; + svr->unk_1C = a2; +} + +void sub_81448AC(struct mevent_srv_sub * svr, u32 a1, void * a2) +{ + svr->unk_00 = 0; + svr->unk_06 = a1; + svr->unk_08 = 0; + svr->unk_0A = 0; + svr->unk_0C = 0; + svr->unk_18 = a2; +} + +void sub_81448BC(u32 recv_idx, void * dest, size_t size) +{ + memcpy(dest, gBlockRecvBuffer[recv_idx], size); +} + +bool32 sub_81448D8(u32 recv_idx) +{ + if ((GetBlockReceivedStatus() >> recv_idx) & 1) + return TRUE; + else + return FALSE; +} + +void sub_81448FC(u32 recv_idx) +{ + ResetBlockReceivedFlag(recv_idx); +} + +bool32 sub_814490C(struct mevent_srv_sub * svr) +{ + struct send_recv_buff buff; + + switch (svr->unk_00) + { + case 0: + if (sub_81448D8(svr->unk_05)) + { + sub_81448BC(svr->unk_05, &buff, sizeof(buff)); + svr->unk_0C = buff.unk4; + svr->unk_0A = buff.unk2; + if (svr->unk_0C > ME_SEND_BUF_SIZE) + { + sub_80FA190(); + return FALSE; + } + else if (svr->unk_06 != buff.unk0) + { + sub_80FA190(); + return FALSE; + } + else + { + svr->unk_08 = 0; + sub_81448FC(svr->unk_05); + ++svr->unk_00; + } + } + break; + case 1: + if (sub_81448D8(svr->unk_05)) + { + size_t r3 = svr->unk_08 * 252; + if (svr->unk_0C - r3 <= 252) + { + sub_81448BC(svr->unk_05, svr->unk_18 + r3, svr->unk_0C - r3); + ++svr->unk_08; + ++svr->unk_00; + } + else + { + sub_81448BC(svr->unk_05, svr->unk_18 + r3, 252); + ++svr->unk_08; + } + sub_81448FC(svr->unk_05); + } + break; + case 2: + if (CalcCRC16WithTable(svr->unk_18, svr->unk_0C) != svr->unk_0A) + { + sub_80FA190(); + return FALSE; + } + else + { + svr->unk_00 = 0; + return TRUE; + } + break; + + } + + return FALSE; +} + +bool32 sub_81449E0(struct mevent_srv_sub * svr) +{ + struct send_recv_buff buff; + + switch (svr->unk_00) + { + case 0: + if (sub_800A4BC()) + { + buff.unk0 = svr->unk_0E; + buff.unk4 = svr->unk_14; + buff.unk2 = CalcCRC16WithTable(svr->unk_1C, svr->unk_14); + svr->unk_12 = buff.unk2; + svr->unk_10 = 0; + SendBlock(0, &buff, sizeof(buff)); + ++svr->unk_00; + } + break; + case 1: + if (sub_800A4BC()) + { + if (sub_81448D8(svr->unk_04)) + { + size_t r3; + sub_81448FC(svr->unk_04); + r3 = 252 * svr->unk_10; + if (svr->unk_14 - r3 <= 252) + { + SendBlock(0, svr->unk_1C + r3, svr->unk_14 - r3); + ++svr->unk_10; + ++svr->unk_00; + } + else + { + SendBlock(0, svr->unk_1C + r3, 252); + ++svr->unk_10; + } + } + } + break; + case 2: + if (sub_800A4BC()) + { + if (CalcCRC16WithTable(svr->unk_1C, svr->unk_14) != svr->unk_12) + sub_80FA190(); + else + ++svr->unk_00; + } + break; + case 3: + if (sub_81448D8(svr->unk_04)) + { + sub_81448FC(svr->unk_04); + svr->unk_00 = 0; + return TRUE; + } + break; + } + + return FALSE; +} -- cgit v1.2.3 From b9a6cba30a3ee44ccb14548d198accd7f6bbfa8d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 30 Nov 2018 16:51:22 -0500 Subject: Finish decomp of mevent_server --- src/mevent.c | 4 +- src/mevent_server.c | 241 ++++++++++++++++++++++++++++++++++++++++++++---- src/mevent_server_ish.c | 43 ++++----- 3 files changed, 247 insertions(+), 41 deletions(-) (limited to 'src') diff --git a/src/mevent.c b/src/mevent.c index 9638e0327..7a7fcc399 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -792,7 +792,7 @@ bool32 sub_81443D4(const struct MEventStruct_Unk1442CC * data) return TRUE; } -u32 sub_8144418(const u16 * a0, const struct MEventStruct_Unk1442CC * a1) +u32 sub_8144418(const u16 * a0, const struct MEventStruct_Unk1442CC * a1, void * unused) { if (a1->unk_14 == 0) return 0; @@ -801,7 +801,7 @@ u32 sub_8144418(const u16 * a0, const struct MEventStruct_Unk1442CC * a1) return 2; } -u32 sub_8144434(const u16 * a0, const struct MEventStruct_Unk1442CC * a1) +u32 sub_8144434(const u16 * a0, const struct MEventStruct_Unk1442CC * a1, void * unused) { s32 r4 = a1->unk_44 - sub_8144184(&a1->unk_20, a1->unk_44); if (r4 == 0) diff --git a/src/mevent_server.c b/src/mevent_server.c index 027a7e994..2242dabce 100644 --- a/src/mevent_server.c +++ b/src/mevent_server.c @@ -13,18 +13,29 @@ extern u16 gBlockRecvBuffer[][128]; +struct mevent_cmd +{ + u32 instr; + bool32 flag; + void * parameter; +}; + struct mevent_srv_common { u32 unk_00; u32 unk_04; u32 mainseqno; - u32 unk_0C; - const void * unk_10; + u32 cmdidx; + const struct mevent_cmd * cmdBuffer; void * unk_14; - void * unk_18; - void * unk_1C; - void * unk_20; - u8 filler_24[0x14]; + struct MEventBuffer_32E0_Sub * unk_18; + struct MEventBuffer_3120_Sub * unk_1C; + struct MEventStruct_Unk1442CC * unk_20; + void * unk_24; + u32 unk_28; + void * unk_2C; + u32 unk_30; + void * unk_34; struct mevent_srv_sub unk_38; }; @@ -73,8 +84,8 @@ void mevent_srv_init_common(struct mevent_srv_common * svr, const void * a1, u32 svr->unk_1C = AllocZeroed(444); svr->unk_14 = AllocZeroed(ME_SEND_BUF_SIZE); svr->unk_20 = AllocZeroed(100); - svr->unk_10 = a1; - svr->unk_0C = 0; + svr->cmdBuffer = a1; + svr->cmdidx = 0; sub_814485C(&svr->unk_38, a2, a3); } @@ -86,15 +97,213 @@ void mevent_srv_free_resources(struct mevent_srv_common * svr) Free(svr->unk_20); } -const char gUnknown_8466F80[] = "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"; -const char gUnknown_8466FB8[] = "size <= ME_SEND_BUF_SIZE"; -const char gUnknown_8466FD4[] = "cmd->parameter == NULL"; -const char gUnknown_8466FEC[] = "cmd->flag == FALSE"; -const char gUnknown_8467000[] = "cmd->flag == FALSE && cmd->parameter == NULL"; - void sub_814501C(struct mevent_srv_common * svr, u32 a1, void * a2, u32 size) { - // AGB_ASSERT_EX(size <= ME_SEND_BUF_SIZE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 257); - size <= ME_SEND_BUF_SIZE ? NULL : AGBAssert(gUnknown_8466F80, 257, gUnknown_8466FB8, 1); + AGB_ASSERT_EX(size <= ME_SEND_BUF_SIZE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 257); sub_8144888(&svr->unk_38, a1, a2, size); } + +void * sub_814505C(void * a0, void * a1) +{ + if (a0 != NULL) + return a0; + else + return a1; +} + +u32 sub_8145068(void * a0, void * a1) +{ + if (a1 < a0) + return 0; + else if (a1 == a0) + return 1; + else + return 2; +} + +u32 sub_8145080(struct mevent_srv_common * svr) +{ + svr->mainseqno = 4; + return 0; +} + +u32 sub_8145088(struct mevent_srv_common * svr) +{ + return 3; +} + +u32 sub_814508C(struct mevent_srv_common * svr) +{ + if (sub_8144844(&svr->unk_38)) + svr->mainseqno = 4; + return 1; +} + +u32 sub_81450A8(struct mevent_srv_common * svr) +{ + if (sub_8144850(&svr->unk_38)) + svr->mainseqno = 4; + return 1; +} + +u32 sub_81450C4(struct mevent_srv_common * svr) +{ + const struct mevent_cmd * cmd = &svr->cmdBuffer[svr->cmdidx]; + void * ptr; + svr->cmdidx++; + + switch (cmd->instr) + { + case 0: + AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 354); + svr->mainseqno = 1; + svr->unk_04 = cmd->flag; + break; + case 1: + svr->mainseqno = 3; + break; + case 2: + AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 364); + sub_81448AC(&svr->unk_38, cmd->flag, svr->unk_14); + svr->mainseqno = 2; + break; + case 3: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 370); + svr->cmdidx = 0; + svr->cmdBuffer = cmd->parameter; + break; + case 5: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 376); + AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 377); + memcpy(svr->unk_20, svr->unk_14, 100); + break; + case 6: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 382); + AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 383); + svr->unk_04 = sub_81443D4(svr->unk_20); + break; + case 4: + if (svr->unk_04 == cmd->flag) + { + svr->cmdidx = 0; + svr->cmdBuffer = cmd->parameter; + } + break; + case 7: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 396); + ptr = sub_814505C(cmd->parameter, svr->unk_18); + svr->unk_04 = sub_8144418(ptr, svr->unk_20, ptr); + break; + case 8: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 402); + AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 403); + svr->unk_04 = *(u32 *)svr->unk_14; + break; + case 9: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 408); + ptr = sub_814505C(cmd->parameter, &svr->unk_34); + svr->unk_04 = sub_8144434(ptr, svr->unk_20, ptr); + break; + case 10: + AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 415); + svr->unk_04 = sub_81444B0(svr->unk_20, cmd->flag); + break; + case 11: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 420); + svr->unk_04 = sub_8144474(svr->unk_20, cmd->parameter); + break; + case 12: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 426); + svr->unk_04 = sub_8145068(cmd->parameter, *(void **)svr->unk_14); + break; + case 14: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 432); + sub_814501C(svr, 0x17, sub_814505C(cmd->parameter, svr->unk_1C), 444); + break; + case 13: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 438); + sub_814501C(svr, 0x16, sub_814505C(cmd->parameter, svr->unk_18), 332); + break; + case 16: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 444); + sub_814501C(svr, 0x18, sub_814505C(cmd->parameter, &svr->unk_34), 4); + break; + case 15: + if (cmd->parameter == NULL) + sub_814501C(svr, 0x19, svr->unk_24, svr->unk_28); + else + sub_814501C(svr, 0x19, cmd->parameter, cmd->flag); + break; + case 18: + if (cmd->parameter == NULL) + sub_814501C(svr, 0x10, svr->unk_2C, svr->unk_30); + else + sub_814501C(svr, 0x10, cmd->parameter, cmd->flag); + break; + case 19: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 466); + sub_814501C(svr, 0x1a, cmd->parameter, 188); + break; + case 20: + sub_814501C(svr, 0x15, cmd->parameter, cmd->flag); + break; + case 17: + sub_814501C(svr, 0x1c, cmd->parameter, cmd->flag); + break; + case 22: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 481); + memcpy(svr->unk_18, cmd->parameter, 332); + break; + case 23: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 486); + memcpy(svr->unk_1C, cmd->parameter, 444); + break; + case 21: + AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 491); + svr->unk_34 = *(void **)cmd->parameter; + break; + case 24: + svr->unk_24 = cmd->parameter; + svr->unk_28 = cmd->flag; + break; + case 25: + svr->unk_2C = cmd->parameter; + svr->unk_30 = cmd->flag; + break; + case 26: + AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 506); + memcpy(svr->unk_18, sav1_get_mevent_buffer_1(), 332); + sub_814410C(svr->unk_18); + break; + case 27: + AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 512); + memcpy(svr->unk_1C, sub_8143D58(), 444); + break; + case 28: + AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 517); + svr->unk_24 = sub_8069E48(); + break; + case 29: + sub_814501C(svr, 0x1b, cmd->parameter, cmd->flag); + break; + } + + return 1; +} + +static u32 (*const func_tbl[])(struct mevent_srv_common *) = { + sub_8145080, + sub_8145088, + sub_814508C, + sub_81450A8, + sub_81450C4 +}; + +u32 sub_8145600(struct mevent_srv_common * svr) +{ + u32 response; + AGB_ASSERT_EX(svr->mainseqno < NELEMS(func_tbl), "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 546); + response = func_tbl[svr->mainseqno](svr); + AGB_ASSERT_EX(svr->mainseqno < NELEMS(func_tbl), "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 548); + return response; +} diff --git a/src/mevent_server_ish.c b/src/mevent_server_ish.c index 7e9639303..e544c0f42 100644 --- a/src/mevent_server_ish.c +++ b/src/mevent_server_ish.c @@ -13,27 +13,26 @@ extern u16 gBlockRecvBuffer[][128]; +struct mevent_cmd +{ + u32 instr; + u32 parameter; +}; + struct mevent_srv_ish { u32 unk_00; u32 unk_04; u32 mainseqno; u32 unk_0C; - u32 unk_10; + u32 cmdidx; void * unk_14; void * unk_18; - void * unk_1C; + struct mevent_cmd * cmdBuffer; void * unk_20; struct mevent_srv_sub unk_24; }; -struct mevent_cmd -{ - u32 instr; - bool32 flag; - u32 parameter; -}; - EWRAM_DATA struct mevent_srv_ish * gUnknown_203F3C0 = NULL; void mevent_srv_ish_init(struct mevent_srv_ish *, u32, u32); @@ -85,7 +84,7 @@ void mevent_srv_ish_init(struct mevent_srv_ish * svr, u32 a1, u32 a2) svr->unk_0C = 0; svr->unk_14 = AllocZeroed(ME_SEND_BUF_SIZE); svr->unk_18 = AllocZeroed(ME_SEND_BUF_SIZE); - svr->unk_1C = AllocZeroed(ME_SEND_BUF_SIZE); + svr->cmdBuffer = AllocZeroed(ME_SEND_BUF_SIZE); svr->unk_20 = AllocZeroed(0x40); sub_814485C(&svr->unk_24, a1, a2); } @@ -94,14 +93,14 @@ void sub_8144BC0(struct mevent_srv_ish * svr) { Free(svr->unk_14); Free(svr->unk_18); - Free(svr->unk_1C); + Free(svr->cmdBuffer); Free(svr->unk_20); } void sub_8144BE4(struct mevent_srv_ish * svr) { - memcpy(svr->unk_1C, svr->unk_18, ME_SEND_BUF_SIZE); - svr->unk_10 = 0; + memcpy(svr->cmdBuffer, svr->unk_18, ME_SEND_BUF_SIZE); + svr->cmdidx = 0; } void sub_8144C00(struct mevent_srv_ish * svr, u32 a1, u32 a2) @@ -111,12 +110,10 @@ void sub_8144C00(struct mevent_srv_ish * svr, u32 a1, u32 a2) sub_8144888(&svr->unk_24, a1, svr->unk_14, 4); } -// funcs in array gUnknown_8466F60 - u32 sub_8144C34(struct mevent_srv_ish * svr) { - memcpy(svr->unk_1C, gUnknown_84687E0, ME_SEND_BUF_SIZE); - svr->unk_10 = 0; + memcpy(svr->cmdBuffer, gUnknown_84687E0, ME_SEND_BUF_SIZE); + svr->cmdidx = 0; svr->mainseqno = 4; svr->unk_0C = 0; return 0; @@ -149,19 +146,19 @@ u32 sub_8144C80(struct mevent_srv_ish * svr) u32 sub_8144CA0(struct mevent_srv_ish * svr) { - u32 * r2 = (u32 *)svr->unk_1C + 2 * svr->unk_10; - ++svr->unk_10; - switch (r2[0]) + struct mevent_cmd * cmd = &svr->cmdBuffer[svr->cmdidx]; + ++svr->cmdidx; + switch (cmd->instr) { case 0: break; case 1: - svr->unk_04 = r2[1]; + svr->unk_04 = cmd->parameter; svr->mainseqno = 1; svr->unk_0C = 0; break; case 2: - sub_81448AC(&svr->unk_24, r2[1], svr->unk_18); + sub_81448AC(&svr->unk_24, cmd->parameter, svr->unk_18); svr->mainseqno = 2; svr->unk_0C = 0; break; @@ -175,7 +172,7 @@ u32 sub_8144CA0(struct mevent_srv_ish * svr) svr->unk_0C = 0; break; case 19: - sub_8144C00(svr, 0x12, GetGameStat(r2[1])); + sub_8144C00(svr, 0x12, GetGameStat(cmd->parameter)); svr->mainseqno = 3; svr->unk_0C = 0; break; -- cgit v1.2.3 From 01aada9e93b5e132635feb214baa5d302c4f2154 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 1 Dec 2018 11:24:05 -0500 Subject: merge mevent server and document mevent_server_helpers --- src/mevent_server.c | 332 ++++++++++++++++++++++++++++++++++++++------ src/mevent_server_helpers.c | 211 ++++++++++++++++++++++++++++ src/mevent_server_ish.c | 305 ---------------------------------------- src/mevent_server_sub.c | 211 ---------------------------- 4 files changed, 497 insertions(+), 562 deletions(-) create mode 100644 src/mevent_server_helpers.c delete mode 100644 src/mevent_server_ish.c delete mode 100644 src/mevent_server_sub.c (limited to 'src') diff --git a/src/mevent_server.c b/src/mevent_server.c index 2242dabce..2c0dcafad 100644 --- a/src/mevent_server.c +++ b/src/mevent_server.c @@ -11,42 +11,282 @@ #include "mevent.h" #include "mevent_server.h" -extern u16 gBlockRecvBuffer[][128]; +EWRAM_DATA struct mevent_srv_ish * gUnknown_203F3C0 = NULL; +EWRAM_DATA struct mevent_srv_common * gUnknown_203F3C4 = NULL; + +static void mevent_srv_ish_init(struct mevent_srv_ish *, u32, u32); +static u32 mevent_srv_ish_exec(struct mevent_srv_ish *); +static void sub_8144BC0(struct mevent_srv_ish *); +static void mevent_srv_init_common(struct mevent_srv_common *, const void *, u32, u32); +static void mevent_srv_free_resources(struct mevent_srv_common *); +static u32 sub_8145600(struct mevent_srv_common *); -struct mevent_cmd +void sub_8144AEC(void) { - u32 instr; - bool32 flag; - void * parameter; -}; + gUnknown_203F3C0 = AllocZeroed(sizeof(struct mevent_srv_ish)); + mevent_srv_ish_init(gUnknown_203F3C0, 1, 0); +} -struct mevent_srv_common -{ - u32 unk_00; - u32 unk_04; - u32 mainseqno; - u32 cmdidx; - const struct mevent_cmd * cmdBuffer; - void * unk_14; - struct MEventBuffer_32E0_Sub * unk_18; - struct MEventBuffer_3120_Sub * unk_1C; - struct MEventStruct_Unk1442CC * unk_20; - void * unk_24; - u32 unk_28; - void * unk_2C; - u32 unk_30; - void * unk_34; - struct mevent_srv_sub unk_38; -}; +u32 sub_8144B0C(u16 * a0) +{ + u32 result; + if (gUnknown_203F3C0 == NULL) + return 6; + result = mevent_srv_ish_exec(gUnknown_203F3C0); + if (result == 6) + { + *a0 = gUnknown_203F3C0->unk_04; + sub_8144BC0(gUnknown_203F3C0); + Free(gUnknown_203F3C0); + gUnknown_203F3C0 = NULL; + } + return result; +} -EWRAM_DATA struct mevent_srv_common * gUnknown_203F3C4 = NULL; +void sub_8144B48(void) +{ + gUnknown_203F3C0->unk_0C++; +} + +void * sub_8144B58(void) +{ + return gUnknown_203F3C0->unk_20; +} + +void sub_8144B64(u32 a0) +{ + gUnknown_203F3C0->unk_04 = a0; +} + +static void mevent_srv_ish_init(struct mevent_srv_ish * svr, u32 a1, u32 a2) +{ + svr->unk_00 = 0; + svr->mainseqno = 0; + svr->unk_0C = 0; + svr->unk_14 = AllocZeroed(ME_SEND_BUF_SIZE); + svr->unk_18 = AllocZeroed(ME_SEND_BUF_SIZE); + svr->cmdBuffer = AllocZeroed(ME_SEND_BUF_SIZE); + svr->unk_20 = AllocZeroed(0x40); + mevent_srv_sub_init(&svr->unk_24, a1, a2); +} + +static void sub_8144BC0(struct mevent_srv_ish * svr) +{ + Free(svr->unk_14); + Free(svr->unk_18); + Free(svr->cmdBuffer); + Free(svr->unk_20); +} + +static void sub_8144BE4(struct mevent_srv_ish * svr) +{ + memcpy(svr->cmdBuffer, svr->unk_18, ME_SEND_BUF_SIZE); + svr->cmdidx = 0; +} + +static void sub_8144C00(struct mevent_srv_ish * svr, u32 a1, u32 a2) +{ + CpuFill32(0, svr->unk_14, ME_SEND_BUF_SIZE); + *(u32 *)svr->unk_14 = a2; + mevent_srv_sub_init_send(&svr->unk_24, a1, svr->unk_14, 4); +} + +static u32 ish_mainseq_0(struct mevent_srv_ish * svr) +{ + // init + memcpy(svr->cmdBuffer, gUnknown_84687E0, ME_SEND_BUF_SIZE); + svr->cmdidx = 0; + svr->mainseqno = 4; + svr->unk_0C = 0; + return 0; +} + +static u32 ish_mainseq_1(struct mevent_srv_ish * svr) +{ + // done + return 6; +} + +static u32 ish_mainseq_2(struct mevent_srv_ish * svr) +{ + + if (mevent_srv_sub_recv(&svr->unk_24)) + { + svr->mainseqno = 4; + svr->unk_0C = 0; + } + return 1; +} + +static u32 ish_mainseq_3(struct mevent_srv_ish * svr) +{ + if (mevent_srv_sub_send(&svr->unk_24)) + { + svr->mainseqno = 4; + svr->unk_0C = 0; + } + return 1; +} + +static u32 ish_mainseq_4(struct mevent_srv_ish * svr) +{ + struct mevent_cmd_ish * cmd = &svr->cmdBuffer[svr->cmdidx]; + ++svr->cmdidx; + switch (cmd->instr) + { + case 0: + break; + case 1: + svr->unk_04 = cmd->parameter; + svr->mainseqno = 1; + svr->unk_0C = 0; + break; + case 2: + mevent_srv_sub_init_recv(&svr->unk_24, cmd->parameter, svr->unk_18); + svr->mainseqno = 2; + svr->unk_0C = 0; + break; + case 3: + svr->mainseqno = 3; + svr->unk_0C = 0; + break; + case 20: + mevent_srv_sub_init_send(&svr->unk_24, 0x14, svr->unk_14, 0); + svr->mainseqno = 3; + svr->unk_0C = 0; + break; + case 19: + sub_8144C00(svr, 0x12, GetGameStat(cmd->parameter)); + svr->mainseqno = 3; + svr->unk_0C = 0; + break; + case 6: + if (svr->unk_04 == 0) + sub_8144BE4(svr); + break; + case 7: + if (svr->unk_04 == 1) + sub_8144BE4(svr); + break; + case 4: + sub_8144BE4(svr); + break; + case 5: + memcpy(svr->unk_20, svr->unk_18, 0x40); + svr->mainseqno = 5; + svr->unk_0C = 0; + return 2; + case 11: + memcpy(svr->unk_20, svr->unk_18, 0x40); + svr->mainseqno = 5; + svr->unk_0C = 0; + return 3; + case 12: + memcpy(svr->unk_20, svr->unk_18, 0x40); + svr->mainseqno = 5; + svr->unk_0C = 0; + return 5; + case 13: + svr->mainseqno = 5; + svr->unk_0C = 0; + return 4; + case 8: + sub_81442CC(svr->unk_14); + mevent_srv_sub_init_send(&svr->unk_24, 0x11, svr->unk_14, 0x64); + break; + case 14: + sub_8144C00(svr, 0x13, svr->unk_04); + break; + case 10: + sub_8143F68(svr->unk_18); + break; + case 9: + if (!sub_8143EF4(svr->unk_18)) + { + sub_8143DC8(svr->unk_18); + sub_8144C00(svr, 0x13, 0); + } + else + sub_8144C00(svr, 0x13, 1); + break; + case 15: + svr->mainseqno = 6; + svr->unk_0C = 0; + break; + case 16: + sub_8144254(svr->unk_18); + break; + case 17: + sub_8069EA4(svr->unk_18, 1000); + break; + case 18: + memcpy(gSaveBlock2Ptr->unk_4A0, svr->unk_18, 0xbc); + sub_80E7490(); + break; + case 21: + memcpy(gDecompressionBuffer, svr->unk_18, ME_SEND_BUF_SIZE); + svr->mainseqno = 7; + svr->unk_0C = 0; + break; + } + + return 1; +} + +static u32 ish_mainseq_5(struct mevent_srv_ish * svr) +{ + if (svr->unk_0C) + { + svr->mainseqno = 4; + svr->unk_0C = 0; + } + return 1; +} + +static u32 ish_mainseq_6(struct mevent_srv_ish * svr) +{ + switch (svr->unk_0C) + { + case 0: + sub_80DA89C(svr->unk_18); + ++svr->unk_0C; + break; + case 1: + if (!sub_80DA8B0(&svr->unk_04)) + { + svr->mainseqno = 4; + svr->unk_0C = 0; + } + break; + } + return 1; +} -void mevent_srv_init_common(struct mevent_srv_common *, const void *, u32, u32); -void mevent_srv_free_resources(struct mevent_srv_common *); -u32 sub_8145600(struct mevent_srv_common *); +static u32 ish_mainseq_7(struct mevent_srv_ish * svr) +{ + u32 (*func)(u32 *, struct SaveBlock2 *, struct SaveBlock1 *) = (void *)gDecompressionBuffer; + if (func(&svr->unk_04, gSaveBlock2Ptr, gSaveBlock1Ptr) == 1) + { + svr->mainseqno = 4; + svr->unk_0C = 0; + } + return 1; +} -extern const u8 gUnknown_8468B6C[]; -extern const u8 gUnknown_8468BCC[]; +static u32 mevent_srv_ish_exec(struct mevent_srv_ish * svr) +{ + u32 (*funcs[])(struct mevent_srv_ish *) = { + ish_mainseq_0, + ish_mainseq_1, + ish_mainseq_2, + ish_mainseq_3, + ish_mainseq_4, + ish_mainseq_5, + ish_mainseq_6, + ish_mainseq_7 + }; + return funcs[svr->mainseqno](svr); +} void sub_8144F1C(void) { @@ -76,7 +316,7 @@ u32 sub_8144F64(u16 * a0) return result; } -void mevent_srv_init_common(struct mevent_srv_common * svr, const void * a1, u32 a2, u32 a3) +static void mevent_srv_init_common(struct mevent_srv_common * svr, const void * a1, u32 a2, u32 a3) { svr->unk_00 = 0; svr->mainseqno = 0; @@ -86,10 +326,10 @@ void mevent_srv_init_common(struct mevent_srv_common * svr, const void * a1, u32 svr->unk_20 = AllocZeroed(100); svr->cmdBuffer = a1; svr->cmdidx = 0; - sub_814485C(&svr->unk_38, a2, a3); + mevent_srv_sub_init(&svr->unk_38, a2, a3); } -void mevent_srv_free_resources(struct mevent_srv_common * svr) +static void mevent_srv_free_resources(struct mevent_srv_common * svr) { Free(svr->unk_18); Free(svr->unk_1C); @@ -97,13 +337,13 @@ void mevent_srv_free_resources(struct mevent_srv_common * svr) Free(svr->unk_20); } -void sub_814501C(struct mevent_srv_common * svr, u32 a1, void * a2, u32 size) +static void sub_814501C(struct mevent_srv_common * svr, u32 a1, void * a2, u32 size) { AGB_ASSERT_EX(size <= ME_SEND_BUF_SIZE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 257); - sub_8144888(&svr->unk_38, a1, a2, size); + mevent_srv_sub_init_send(&svr->unk_38, a1, a2, size); } -void * sub_814505C(void * a0, void * a1) +static void * sub_814505C(void * a0, void * a1) { if (a0 != NULL) return a0; @@ -111,7 +351,7 @@ void * sub_814505C(void * a0, void * a1) return a1; } -u32 sub_8145068(void * a0, void * a1) +static u32 sub_8145068(void * a0, void * a1) { if (a1 < a0) return 0; @@ -121,32 +361,32 @@ u32 sub_8145068(void * a0, void * a1) return 2; } -u32 sub_8145080(struct mevent_srv_common * svr) +static u32 sub_8145080(struct mevent_srv_common * svr) { svr->mainseqno = 4; return 0; } -u32 sub_8145088(struct mevent_srv_common * svr) +static u32 sub_8145088(struct mevent_srv_common * svr) { return 3; } -u32 sub_814508C(struct mevent_srv_common * svr) +static u32 sub_814508C(struct mevent_srv_common * svr) { - if (sub_8144844(&svr->unk_38)) + if (mevent_srv_sub_recv(&svr->unk_38)) svr->mainseqno = 4; return 1; } -u32 sub_81450A8(struct mevent_srv_common * svr) +static u32 sub_81450A8(struct mevent_srv_common * svr) { - if (sub_8144850(&svr->unk_38)) + if (mevent_srv_sub_send(&svr->unk_38)) svr->mainseqno = 4; return 1; } -u32 sub_81450C4(struct mevent_srv_common * svr) +static u32 sub_81450C4(struct mevent_srv_common * svr) { const struct mevent_cmd * cmd = &svr->cmdBuffer[svr->cmdidx]; void * ptr; @@ -164,7 +404,7 @@ u32 sub_81450C4(struct mevent_srv_common * svr) break; case 2: AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 364); - sub_81448AC(&svr->unk_38, cmd->flag, svr->unk_14); + mevent_srv_sub_init_recv(&svr->unk_38, cmd->flag, svr->unk_14); svr->mainseqno = 2; break; case 3: @@ -299,7 +539,7 @@ static u32 (*const func_tbl[])(struct mevent_srv_common *) = { sub_81450C4 }; -u32 sub_8145600(struct mevent_srv_common * svr) +static u32 sub_8145600(struct mevent_srv_common * svr) { u32 response; AGB_ASSERT_EX(svr->mainseqno < NELEMS(func_tbl), "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 546); diff --git a/src/mevent_server_helpers.c b/src/mevent_server_helpers.c new file mode 100644 index 000000000..a5ce595b0 --- /dev/null +++ b/src/mevent_server_helpers.c @@ -0,0 +1,211 @@ +#include "global.h" +#include "malloc.h" +#include "decompress.h" +#include "util.h" +#include "link.h" +#include "link_rfu.h" +#include "overworld.h" +#include "script.h" +#include "battle_tower.h" +#include "mystery_event_script.h" +#include "mevent.h" +#include "mevent_server.h" + +static u32 mevent_receive_func(struct mevent_srv_sub *); +static u32 mevent_send_func(struct mevent_srv_sub *); + +u32 mevent_srv_sub_recv(struct mevent_srv_sub * svr) +{ + return svr->recvFunc(svr); +} + +u32 mevent_srv_sub_send(struct mevent_srv_sub * svr) +{ + return svr->sendFunc(svr); +} + +void mevent_srv_sub_init(struct mevent_srv_sub * svr, u32 sendPlayerNo, u32 recvPlayerNo) +{ + svr->sendPlayerNo = sendPlayerNo; + svr->recvPlayerNo = recvPlayerNo; + svr->seqno = 0; + svr->sendCRC = 0; + svr->sendSize = 0; + svr->sendCounter = 0; + svr->recvCRC = 0; + svr->recvSize = 0; + svr->recvCounter = 0; + svr->sendBfr = NULL; + svr->recvBfr = NULL; + svr->sendFunc = mevent_send_func; + svr->recvFunc = mevent_receive_func; +} + +void mevent_srv_sub_init_send(struct mevent_srv_sub * svr, u32 a1, const void * src, u32 size) +{ + svr->seqno = 0; + svr->sendIdent = a1; + svr->sendCounter = 0; + svr->sendCRC = 0; + if (size != 0) + svr->sendSize = size; + else + svr->sendSize = ME_SEND_BUF_SIZE; + svr->sendBfr = src; +} + +void mevent_srv_sub_init_recv(struct mevent_srv_sub * svr, u32 ident, void * dest) +{ + svr->seqno = 0; + svr->recvIdent = ident; + svr->recvCounter = 0; + svr->recvCRC = 0; + svr->recvSize = 0; + svr->recvBfr = dest; +} + +static void mevent_recv_block(u32 recv_idx, void * dest, size_t size) +{ + memcpy(dest, gBlockRecvBuffer[recv_idx], size); +} + +static bool32 mevent_has_received(u32 recv_idx) +{ + if ((GetBlockReceivedStatus() >> recv_idx) & 1) + return TRUE; + else + return FALSE; +} + +static void mevent_reset_recv(u32 recv_idx) +{ + ResetBlockReceivedFlag(recv_idx); +} + +static bool32 mevent_receive_func(struct mevent_srv_sub * svr) +{ + struct send_recv_header header; + + switch (svr->seqno) + { + case 0: + if (mevent_has_received(svr->recvPlayerNo)) + { + mevent_recv_block(svr->recvPlayerNo, &header, sizeof(header)); + svr->recvSize = header.size; + svr->recvCRC = header.crc; + if (svr->recvSize > ME_SEND_BUF_SIZE) + { + sub_80FA190(); + return FALSE; + } + else if (svr->recvIdent != header.ident) + { + sub_80FA190(); + return FALSE; + } + else + { + svr->recvCounter = 0; + mevent_reset_recv(svr->recvPlayerNo); + ++svr->seqno; + } + } + break; + case 1: + if (mevent_has_received(svr->recvPlayerNo)) + { + size_t r3 = svr->recvCounter * 252; + if (svr->recvSize - r3 <= 252) + { + mevent_recv_block(svr->recvPlayerNo, svr->recvBfr + r3, svr->recvSize - r3); + ++svr->recvCounter; + ++svr->seqno; + } + else + { + mevent_recv_block(svr->recvPlayerNo, svr->recvBfr + r3, 252); + ++svr->recvCounter; + } + mevent_reset_recv(svr->recvPlayerNo); + } + break; + case 2: + if (CalcCRC16WithTable(svr->recvBfr, svr->recvSize) != svr->recvCRC) + { + sub_80FA190(); + return FALSE; + } + else + { + svr->seqno = 0; + return TRUE; + } + break; + + } + + return FALSE; +} + +static bool32 mevent_send_func(struct mevent_srv_sub * svr) +{ + struct send_recv_header header; + + switch (svr->seqno) + { + case 0: + if (sub_800A4BC()) + { + header.ident = svr->sendIdent; + header.size = svr->sendSize; + header.crc = CalcCRC16WithTable(svr->sendBfr, svr->sendSize); + svr->sendCRC = header.crc; + svr->sendCounter = 0; + SendBlock(0, &header, sizeof(header)); + ++svr->seqno; + } + break; + case 1: + if (sub_800A4BC()) + { + if (mevent_has_received(svr->sendPlayerNo)) + { + size_t r3; + mevent_reset_recv(svr->sendPlayerNo); + r3 = 252 * svr->sendCounter; + if (svr->sendSize - r3 <= 252) + { + SendBlock(0, svr->sendBfr + r3, svr->sendSize - r3); + ++svr->sendCounter; + ++svr->seqno; + } + else + { + SendBlock(0, svr->sendBfr + r3, 252); + ++svr->sendCounter; + } + } + } + break; + case 2: + if (sub_800A4BC()) + { + if (CalcCRC16WithTable(svr->sendBfr, svr->sendSize) != svr->sendCRC) + sub_80FA190(); + else + ++svr->seqno; + } + break; + case 3: + if (mevent_has_received(svr->sendPlayerNo)) + { + mevent_reset_recv(svr->sendPlayerNo); + svr->seqno = 0; + return TRUE; + } + break; + } + + return FALSE; +} diff --git a/src/mevent_server_ish.c b/src/mevent_server_ish.c deleted file mode 100644 index e544c0f42..000000000 --- a/src/mevent_server_ish.c +++ /dev/null @@ -1,305 +0,0 @@ -#include "global.h" -#include "malloc.h" -#include "decompress.h" -#include "util.h" -#include "link.h" -#include "link_rfu.h" -#include "overworld.h" -#include "script.h" -#include "battle_tower.h" -#include "mystery_event_script.h" -#include "mevent.h" -#include "mevent_server.h" - -extern u16 gBlockRecvBuffer[][128]; - -struct mevent_cmd -{ - u32 instr; - u32 parameter; -}; - -struct mevent_srv_ish -{ - u32 unk_00; - u32 unk_04; - u32 mainseqno; - u32 unk_0C; - u32 cmdidx; - void * unk_14; - void * unk_18; - struct mevent_cmd * cmdBuffer; - void * unk_20; - struct mevent_srv_sub unk_24; -}; - -EWRAM_DATA struct mevent_srv_ish * gUnknown_203F3C0 = NULL; - -void mevent_srv_ish_init(struct mevent_srv_ish *, u32, u32); -u32 mevent_srv_ish_exec(struct mevent_srv_ish *); -void sub_8144BC0(struct mevent_srv_ish *); -extern const u8 gUnknown_84687E0[]; - -void sub_8144AEC(void) -{ - gUnknown_203F3C0 = AllocZeroed(sizeof(struct mevent_srv_ish)); - mevent_srv_ish_init(gUnknown_203F3C0, 1, 0); -} - -u32 sub_8144B0C(u16 * a0) -{ - u32 result; - if (gUnknown_203F3C0 == NULL) - return 6; - result = mevent_srv_ish_exec(gUnknown_203F3C0); - if (result == 6) - { - *a0 = gUnknown_203F3C0->unk_04; - sub_8144BC0(gUnknown_203F3C0); - Free(gUnknown_203F3C0); - gUnknown_203F3C0 = NULL; - } - return result; -} - -void sub_8144B48(void) -{ - gUnknown_203F3C0->unk_0C++; -} - -void * sub_8144B58(void) -{ - return gUnknown_203F3C0->unk_20; -} - -void sub_8144B64(u32 a0) -{ - gUnknown_203F3C0->unk_04 = a0; -} - -void mevent_srv_ish_init(struct mevent_srv_ish * svr, u32 a1, u32 a2) -{ - svr->unk_00 = 0; - svr->mainseqno = 0; - svr->unk_0C = 0; - svr->unk_14 = AllocZeroed(ME_SEND_BUF_SIZE); - svr->unk_18 = AllocZeroed(ME_SEND_BUF_SIZE); - svr->cmdBuffer = AllocZeroed(ME_SEND_BUF_SIZE); - svr->unk_20 = AllocZeroed(0x40); - sub_814485C(&svr->unk_24, a1, a2); -} - -void sub_8144BC0(struct mevent_srv_ish * svr) -{ - Free(svr->unk_14); - Free(svr->unk_18); - Free(svr->cmdBuffer); - Free(svr->unk_20); -} - -void sub_8144BE4(struct mevent_srv_ish * svr) -{ - memcpy(svr->cmdBuffer, svr->unk_18, ME_SEND_BUF_SIZE); - svr->cmdidx = 0; -} - -void sub_8144C00(struct mevent_srv_ish * svr, u32 a1, u32 a2) -{ - CpuFill32(0, svr->unk_14, ME_SEND_BUF_SIZE); - *(u32 *)svr->unk_14 = a2; - sub_8144888(&svr->unk_24, a1, svr->unk_14, 4); -} - -u32 sub_8144C34(struct mevent_srv_ish * svr) -{ - memcpy(svr->cmdBuffer, gUnknown_84687E0, ME_SEND_BUF_SIZE); - svr->cmdidx = 0; - svr->mainseqno = 4; - svr->unk_0C = 0; - return 0; -} - -u32 sub_8144C5C(struct mevent_srv_ish * svr) -{ - return 6; -} - -u32 sub_8144C60(struct mevent_srv_ish * svr) -{ - if (sub_8144844(&svr->unk_24)) - { - svr->mainseqno = 4; - svr->unk_0C = 0; - } - return 1; -} - -u32 sub_8144C80(struct mevent_srv_ish * svr) -{ - if (sub_8144850(&svr->unk_24)) - { - svr->mainseqno = 4; - svr->unk_0C = 0; - } - return 1; -} - -u32 sub_8144CA0(struct mevent_srv_ish * svr) -{ - struct mevent_cmd * cmd = &svr->cmdBuffer[svr->cmdidx]; - ++svr->cmdidx; - switch (cmd->instr) - { - case 0: - break; - case 1: - svr->unk_04 = cmd->parameter; - svr->mainseqno = 1; - svr->unk_0C = 0; - break; - case 2: - sub_81448AC(&svr->unk_24, cmd->parameter, svr->unk_18); - svr->mainseqno = 2; - svr->unk_0C = 0; - break; - case 3: - svr->mainseqno = 3; - svr->unk_0C = 0; - break; - case 20: - sub_8144888(&svr->unk_24, 0x14, svr->unk_14, 0); - svr->mainseqno = 3; - svr->unk_0C = 0; - break; - case 19: - sub_8144C00(svr, 0x12, GetGameStat(cmd->parameter)); - svr->mainseqno = 3; - svr->unk_0C = 0; - break; - case 6: - if (svr->unk_04 == 0) - sub_8144BE4(svr); - break; - case 7: - if (svr->unk_04 == 1) - sub_8144BE4(svr); - break; - case 4: - sub_8144BE4(svr); - break; - case 5: - memcpy(svr->unk_20, svr->unk_18, 0x40); - svr->mainseqno = 5; - svr->unk_0C = 0; - return 2; - case 11: - memcpy(svr->unk_20, svr->unk_18, 0x40); - svr->mainseqno = 5; - svr->unk_0C = 0; - return 3; - case 12: - memcpy(svr->unk_20, svr->unk_18, 0x40); - svr->mainseqno = 5; - svr->unk_0C = 0; - return 5; - case 13: - svr->mainseqno = 5; - svr->unk_0C = 0; - return 4; - case 8: - sub_81442CC(svr->unk_14); - sub_8144888(&svr->unk_24, 0x11, svr->unk_14, 0x64); - break; - case 14: - sub_8144C00(svr, 0x13, svr->unk_04); - break; - case 10: - sub_8143F68(svr->unk_18); - break; - case 9: - if (!sub_8143EF4(svr->unk_18)) - { - sub_8143DC8(svr->unk_18); - sub_8144C00(svr, 0x13, 0); - } - else - sub_8144C00(svr, 0x13, 1); - break; - case 15: - svr->mainseqno = 6; - svr->unk_0C = 0; - break; - case 16: - sub_8144254(svr->unk_18); - break; - case 17: - sub_8069EA4(svr->unk_18, 1000); - break; - case 18: - memcpy(gSaveBlock2Ptr->unk_4A0, svr->unk_18, 0xbc); - sub_80E7490(); - break; - case 21: - memcpy(gDecompressionBuffer, svr->unk_18, ME_SEND_BUF_SIZE); - svr->mainseqno = 7; - svr->unk_0C = 0; - break; - } - - return 1; -} - -u32 sub_8144E6C(struct mevent_srv_ish * svr) -{ - if (svr->unk_0C) - { - svr->mainseqno = 4; - svr->unk_0C = 0; - } - return 1; -} - -u32 sub_8144E84(struct mevent_srv_ish * svr) -{ - switch (svr->unk_0C) - { - case 0: - sub_80DA89C(svr->unk_18); - ++svr->unk_0C; - break; - case 1: - if (!sub_80DA8B0(&svr->unk_04)) - { - svr->mainseqno = 4; - svr->unk_0C = 0; - } - break; - } - return 1; -} - -u32 sub_8144EBC(struct mevent_srv_ish * svr) -{ - u32 (*func)(u32 *, struct SaveBlock2 *, struct SaveBlock1 *) = (void *)gDecompressionBuffer; - if (func(&svr->unk_04, gSaveBlock2Ptr, gSaveBlock1Ptr) == 1) - { - svr->mainseqno = 4; - svr->unk_0C = 0; - } - return 1; -} - -u32 mevent_srv_ish_exec(struct mevent_srv_ish * svr) -{ - u32 (*funcs[])(struct mevent_srv_ish *) = { - sub_8144C34, - sub_8144C5C, - sub_8144C60, - sub_8144C80, - sub_8144CA0, - sub_8144E6C, - sub_8144E84, - sub_8144EBC - }; - return funcs[svr->mainseqno](svr); -} diff --git a/src/mevent_server_sub.c b/src/mevent_server_sub.c deleted file mode 100644 index 83b8f62ca..000000000 --- a/src/mevent_server_sub.c +++ /dev/null @@ -1,211 +0,0 @@ -#include "global.h" -#include "malloc.h" -#include "decompress.h" -#include "util.h" -#include "link.h" -#include "link_rfu.h" -#include "overworld.h" -#include "script.h" -#include "battle_tower.h" -#include "mystery_event_script.h" -#include "mevent.h" -#include "mevent_server.h" - -u32 sub_814490C(struct mevent_srv_sub *); -u32 sub_81449E0(struct mevent_srv_sub *); - -u32 sub_8144844(struct mevent_srv_sub * svr) -{ - return svr->unk_20(svr); -} - -u32 sub_8144850(struct mevent_srv_sub * svr) -{ - return svr->unk_24(svr); -} - -void sub_814485C(struct mevent_srv_sub * svr, u32 a1, u32 a2) -{ - svr->unk_04 = a1; - svr->unk_05 = a2; - svr->unk_00 = 0; - svr->unk_12 = 0; - svr->unk_14 = 0; - svr->unk_10 = 0; - svr->unk_0A = 0; - svr->unk_0C = 0; - svr->unk_08 = 0; - svr->unk_1C = NULL; - svr->unk_18 = NULL; - svr->unk_24 = sub_81449E0; - svr->unk_20 = sub_814490C; -} - -void sub_8144888(struct mevent_srv_sub * svr, u32 a1, void * a2, u32 a3) -{ - svr->unk_00 = 0; - svr->unk_0E = a1; - svr->unk_10 = 0; - svr->unk_12 = 0; - if (a3 != 0) - svr->unk_14 = a3; - else - svr->unk_14 = ME_SEND_BUF_SIZE; - svr->unk_1C = a2; -} - -void sub_81448AC(struct mevent_srv_sub * svr, u32 a1, void * a2) -{ - svr->unk_00 = 0; - svr->unk_06 = a1; - svr->unk_08 = 0; - svr->unk_0A = 0; - svr->unk_0C = 0; - svr->unk_18 = a2; -} - -void sub_81448BC(u32 recv_idx, void * dest, size_t size) -{ - memcpy(dest, gBlockRecvBuffer[recv_idx], size); -} - -bool32 sub_81448D8(u32 recv_idx) -{ - if ((GetBlockReceivedStatus() >> recv_idx) & 1) - return TRUE; - else - return FALSE; -} - -void sub_81448FC(u32 recv_idx) -{ - ResetBlockReceivedFlag(recv_idx); -} - -bool32 sub_814490C(struct mevent_srv_sub * svr) -{ - struct send_recv_buff buff; - - switch (svr->unk_00) - { - case 0: - if (sub_81448D8(svr->unk_05)) - { - sub_81448BC(svr->unk_05, &buff, sizeof(buff)); - svr->unk_0C = buff.unk4; - svr->unk_0A = buff.unk2; - if (svr->unk_0C > ME_SEND_BUF_SIZE) - { - sub_80FA190(); - return FALSE; - } - else if (svr->unk_06 != buff.unk0) - { - sub_80FA190(); - return FALSE; - } - else - { - svr->unk_08 = 0; - sub_81448FC(svr->unk_05); - ++svr->unk_00; - } - } - break; - case 1: - if (sub_81448D8(svr->unk_05)) - { - size_t r3 = svr->unk_08 * 252; - if (svr->unk_0C - r3 <= 252) - { - sub_81448BC(svr->unk_05, svr->unk_18 + r3, svr->unk_0C - r3); - ++svr->unk_08; - ++svr->unk_00; - } - else - { - sub_81448BC(svr->unk_05, svr->unk_18 + r3, 252); - ++svr->unk_08; - } - sub_81448FC(svr->unk_05); - } - break; - case 2: - if (CalcCRC16WithTable(svr->unk_18, svr->unk_0C) != svr->unk_0A) - { - sub_80FA190(); - return FALSE; - } - else - { - svr->unk_00 = 0; - return TRUE; - } - break; - - } - - return FALSE; -} - -bool32 sub_81449E0(struct mevent_srv_sub * svr) -{ - struct send_recv_buff buff; - - switch (svr->unk_00) - { - case 0: - if (sub_800A4BC()) - { - buff.unk0 = svr->unk_0E; - buff.unk4 = svr->unk_14; - buff.unk2 = CalcCRC16WithTable(svr->unk_1C, svr->unk_14); - svr->unk_12 = buff.unk2; - svr->unk_10 = 0; - SendBlock(0, &buff, sizeof(buff)); - ++svr->unk_00; - } - break; - case 1: - if (sub_800A4BC()) - { - if (sub_81448D8(svr->unk_04)) - { - size_t r3; - sub_81448FC(svr->unk_04); - r3 = 252 * svr->unk_10; - if (svr->unk_14 - r3 <= 252) - { - SendBlock(0, svr->unk_1C + r3, svr->unk_14 - r3); - ++svr->unk_10; - ++svr->unk_00; - } - else - { - SendBlock(0, svr->unk_1C + r3, 252); - ++svr->unk_10; - } - } - } - break; - case 2: - if (sub_800A4BC()) - { - if (CalcCRC16WithTable(svr->unk_1C, svr->unk_14) != svr->unk_12) - sub_80FA190(); - else - ++svr->unk_00; - } - break; - case 3: - if (sub_81448D8(svr->unk_04)) - { - sub_81448FC(svr->unk_04); - svr->unk_00 = 0; - return TRUE; - } - break; - } - - return FALSE; -} -- cgit v1.2.3 From d4d209428107f0530b4018b6373c6f0bf697793e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 1 Dec 2018 11:24:48 -0500 Subject: also rename r3 in the mevent helper send and recv functions --- src/mevent_server_helpers.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/mevent_server_helpers.c b/src/mevent_server_helpers.c index a5ce595b0..7e2119088 100644 --- a/src/mevent_server_helpers.c +++ b/src/mevent_server_helpers.c @@ -115,16 +115,16 @@ static bool32 mevent_receive_func(struct mevent_srv_sub * svr) case 1: if (mevent_has_received(svr->recvPlayerNo)) { - size_t r3 = svr->recvCounter * 252; - if (svr->recvSize - r3 <= 252) + size_t blocksiz = svr->recvCounter * 252; + if (svr->recvSize - blocksiz <= 252) { - mevent_recv_block(svr->recvPlayerNo, svr->recvBfr + r3, svr->recvSize - r3); + mevent_recv_block(svr->recvPlayerNo, svr->recvBfr + blocksiz, svr->recvSize - blocksiz); ++svr->recvCounter; ++svr->seqno; } else { - mevent_recv_block(svr->recvPlayerNo, svr->recvBfr + r3, 252); + mevent_recv_block(svr->recvPlayerNo, svr->recvBfr + blocksiz, 252); ++svr->recvCounter; } mevent_reset_recv(svr->recvPlayerNo); @@ -171,18 +171,18 @@ static bool32 mevent_send_func(struct mevent_srv_sub * svr) { if (mevent_has_received(svr->sendPlayerNo)) { - size_t r3; + size_t blocksiz; mevent_reset_recv(svr->sendPlayerNo); - r3 = 252 * svr->sendCounter; - if (svr->sendSize - r3 <= 252) + blocksiz = 252 * svr->sendCounter; + if (svr->sendSize - blocksiz <= 252) { - SendBlock(0, svr->sendBfr + r3, svr->sendSize - r3); + SendBlock(0, svr->sendBfr + blocksiz, svr->sendSize - blocksiz); ++svr->sendCounter; ++svr->seqno; } else { - SendBlock(0, svr->sendBfr + r3, 252); + SendBlock(0, svr->sendBfr + blocksiz, 252); ++svr->sendCounter; } } -- cgit v1.2.3 From 8473bf1bcd8ef38bcb7db0125b4840ee23b6e8c6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 1 Dec 2018 11:31:54 -0500 Subject: More symbol names in mevent server --- src/mevent_server.c | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/mevent_server.c b/src/mevent_server.c index 2c0dcafad..fff22acdb 100644 --- a/src/mevent_server.c +++ b/src/mevent_server.c @@ -109,7 +109,7 @@ static u32 ish_mainseq_1(struct mevent_srv_ish * svr) static u32 ish_mainseq_2(struct mevent_srv_ish * svr) { - + // do recv if (mevent_srv_sub_recv(&svr->unk_24)) { svr->mainseqno = 4; @@ -120,6 +120,7 @@ static u32 ish_mainseq_2(struct mevent_srv_ish * svr) static u32 ish_mainseq_3(struct mevent_srv_ish * svr) { + // do send if (mevent_srv_sub_send(&svr->unk_24)) { svr->mainseqno = 4; @@ -130,6 +131,7 @@ static u32 ish_mainseq_3(struct mevent_srv_ish * svr) static u32 ish_mainseq_4(struct mevent_srv_ish * svr) { + // process command struct mevent_cmd_ish * cmd = &svr->cmdBuffer[svr->cmdidx]; ++svr->cmdidx; switch (cmd->instr) @@ -235,6 +237,7 @@ static u32 ish_mainseq_4(struct mevent_srv_ish * svr) static u32 ish_mainseq_5(struct mevent_srv_ish * svr) { + // wait unk_0C if (svr->unk_0C) { svr->mainseqno = 4; @@ -245,6 +248,7 @@ static u32 ish_mainseq_5(struct mevent_srv_ish * svr) static u32 ish_mainseq_6(struct mevent_srv_ish * svr) { + // ??? switch (svr->unk_0C) { case 0: @@ -264,6 +268,7 @@ static u32 ish_mainseq_6(struct mevent_srv_ish * svr) static u32 ish_mainseq_7(struct mevent_srv_ish * svr) { + // exec arbitrary code u32 (*func)(u32 *, struct SaveBlock2 *, struct SaveBlock1 *) = (void *)gDecompressionBuffer; if (func(&svr->unk_04, gSaveBlock2Ptr, gSaveBlock1Ptr) == 1) { @@ -361,33 +366,38 @@ static u32 sub_8145068(void * a0, void * a1) return 2; } -static u32 sub_8145080(struct mevent_srv_common * svr) +static u32 common_mainseq_0(struct mevent_srv_common * svr) { + // start svr->mainseqno = 4; return 0; } -static u32 sub_8145088(struct mevent_srv_common * svr) +static u32 common_mainseq_1(struct mevent_srv_common * svr) { + // done return 3; } -static u32 sub_814508C(struct mevent_srv_common * svr) +static u32 common_mainseq_2(struct mevent_srv_common * svr) { + // do recv if (mevent_srv_sub_recv(&svr->unk_38)) svr->mainseqno = 4; return 1; } -static u32 sub_81450A8(struct mevent_srv_common * svr) +static u32 common_mainseq_3(struct mevent_srv_common * svr) { + // do send if (mevent_srv_sub_send(&svr->unk_38)) svr->mainseqno = 4; return 1; } -static u32 sub_81450C4(struct mevent_srv_common * svr) +static u32 common_mainseq_4(struct mevent_srv_common * svr) { + // process command const struct mevent_cmd * cmd = &svr->cmdBuffer[svr->cmdidx]; void * ptr; svr->cmdidx++; @@ -532,11 +542,11 @@ static u32 sub_81450C4(struct mevent_srv_common * svr) } static u32 (*const func_tbl[])(struct mevent_srv_common *) = { - sub_8145080, - sub_8145088, - sub_814508C, - sub_81450A8, - sub_81450C4 + common_mainseq_0, + common_mainseq_1, + common_mainseq_2, + common_mainseq_3, + common_mainseq_4 }; static u32 sub_8145600(struct mevent_srv_common * svr) -- cgit v1.2.3 From 2fbe528d5e2db723db338cb2d1635f0fa76ac905 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 1 Dec 2018 20:27:35 -0500 Subject: Attempt to give meaningful names to mevent srv fields --- src/mevent_server.c | 308 ++++++++++++++++++++++---------------------- src/mevent_server_helpers.c | 4 +- 2 files changed, 158 insertions(+), 154 deletions(-) (limited to 'src') diff --git a/src/mevent_server.c b/src/mevent_server.c index fff22acdb..d5a9a0c0e 100644 --- a/src/mevent_server.c +++ b/src/mevent_server.c @@ -11,84 +11,88 @@ #include "mevent.h" #include "mevent_server.h" -EWRAM_DATA struct mevent_srv_ish * gUnknown_203F3C0 = NULL; -EWRAM_DATA struct mevent_srv_common * gUnknown_203F3C4 = NULL; +EWRAM_DATA struct mevent_srv_ish * s_mevent_srv_ish_ptr = NULL; +EWRAM_DATA struct mevent_srv_common * s_mevent_srv_common_ptr = NULL; static void mevent_srv_ish_init(struct mevent_srv_ish *, u32, u32); static u32 mevent_srv_ish_exec(struct mevent_srv_ish *); -static void sub_8144BC0(struct mevent_srv_ish *); +static void mevent_srv_ish_free_resources(struct mevent_srv_ish *); static void mevent_srv_init_common(struct mevent_srv_common *, const void *, u32, u32); static void mevent_srv_free_resources(struct mevent_srv_common *); -static u32 sub_8145600(struct mevent_srv_common *); +static u32 mevent_srv_exec_common(struct mevent_srv_common *); -void sub_8144AEC(void) +extern const u8 gUnknown_84687E0[]; +extern const struct mevent_cmd gUnknown_8468B6C[]; +extern const struct mevent_cmd gUnknown_8468BCC[]; + +void mevent_srv_ish_do_init(void) { - gUnknown_203F3C0 = AllocZeroed(sizeof(struct mevent_srv_ish)); - mevent_srv_ish_init(gUnknown_203F3C0, 1, 0); + s_mevent_srv_ish_ptr = AllocZeroed(sizeof(struct mevent_srv_ish)); + mevent_srv_ish_init(s_mevent_srv_ish_ptr, 1, 0); } -u32 sub_8144B0C(u16 * a0) +u32 mevent_srv_ish_do_exec(u16 * a0) { u32 result; - if (gUnknown_203F3C0 == NULL) + if (s_mevent_srv_ish_ptr == NULL) return 6; - result = mevent_srv_ish_exec(gUnknown_203F3C0); + result = mevent_srv_ish_exec(s_mevent_srv_ish_ptr); if (result == 6) { - *a0 = gUnknown_203F3C0->unk_04; - sub_8144BC0(gUnknown_203F3C0); - Free(gUnknown_203F3C0); - gUnknown_203F3C0 = NULL; + *a0 = s_mevent_srv_ish_ptr->param; + mevent_srv_ish_free_resources(s_mevent_srv_ish_ptr); + Free(s_mevent_srv_ish_ptr); + s_mevent_srv_ish_ptr = NULL; } return result; } -void sub_8144B48(void) +void mevent_srv_ish_inc_flag(void) { - gUnknown_203F3C0->unk_0C++; + s_mevent_srv_ish_ptr->flag++; } -void * sub_8144B58(void) +void * mevent_srv_ish_get_buffer(void) { - return gUnknown_203F3C0->unk_20; + return s_mevent_srv_ish_ptr->buffer; } -void sub_8144B64(u32 a0) +void mevent_srv_ish_set_param(u32 a0) { - gUnknown_203F3C0->unk_04 = a0; + s_mevent_srv_ish_ptr->param = a0; } -static void mevent_srv_ish_init(struct mevent_srv_ish * svr, u32 a1, u32 a2) +static void mevent_srv_ish_init(struct mevent_srv_ish * svr, u32 sendPlayerNo, u32 recvPlayerNo) { svr->unk_00 = 0; svr->mainseqno = 0; - svr->unk_0C = 0; - svr->unk_14 = AllocZeroed(ME_SEND_BUF_SIZE); - svr->unk_18 = AllocZeroed(ME_SEND_BUF_SIZE); + svr->flag = 0; + svr->sendBuffer = AllocZeroed(ME_SEND_BUF_SIZE); + svr->recvBuffer = AllocZeroed(ME_SEND_BUF_SIZE); svr->cmdBuffer = AllocZeroed(ME_SEND_BUF_SIZE); - svr->unk_20 = AllocZeroed(0x40); - mevent_srv_sub_init(&svr->unk_24, a1, a2); + svr->buffer = AllocZeroed(0x40); + mevent_srv_sub_init(&svr->manager, sendPlayerNo, recvPlayerNo); } -static void sub_8144BC0(struct mevent_srv_ish * svr) +static void mevent_srv_ish_free_resources(struct mevent_srv_ish * svr) { - Free(svr->unk_14); - Free(svr->unk_18); + Free(svr->sendBuffer); + Free(svr->recvBuffer); Free(svr->cmdBuffer); - Free(svr->unk_20); + Free(svr->buffer); } -static void sub_8144BE4(struct mevent_srv_ish * svr) +static void mevent_srv_ish_jmp_buffer(struct mevent_srv_ish * svr) { - memcpy(svr->cmdBuffer, svr->unk_18, ME_SEND_BUF_SIZE); + memcpy(svr->cmdBuffer, svr->recvBuffer, ME_SEND_BUF_SIZE); svr->cmdidx = 0; } -static void sub_8144C00(struct mevent_srv_ish * svr, u32 a1, u32 a2) +static void mevent_srv_ish_send_word(struct mevent_srv_ish * svr, u32 ident, u32 word) { - CpuFill32(0, svr->unk_14, ME_SEND_BUF_SIZE); - *(u32 *)svr->unk_14 = a2; - mevent_srv_sub_init_send(&svr->unk_24, a1, svr->unk_14, 4); + CpuFill32(0, svr->sendBuffer, ME_SEND_BUF_SIZE); + *(u32 *)svr->sendBuffer = word; + mevent_srv_sub_init_send(&svr->manager, ident, svr->sendBuffer, sizeof(u32)); } static u32 ish_mainseq_0(struct mevent_srv_ish * svr) @@ -97,7 +101,7 @@ static u32 ish_mainseq_0(struct mevent_srv_ish * svr) memcpy(svr->cmdBuffer, gUnknown_84687E0, ME_SEND_BUF_SIZE); svr->cmdidx = 0; svr->mainseqno = 4; - svr->unk_0C = 0; + svr->flag = 0; return 0; } @@ -110,10 +114,10 @@ static u32 ish_mainseq_1(struct mevent_srv_ish * svr) static u32 ish_mainseq_2(struct mevent_srv_ish * svr) { // do recv - if (mevent_srv_sub_recv(&svr->unk_24)) + if (mevent_srv_sub_recv(&svr->manager)) { svr->mainseqno = 4; - svr->unk_0C = 0; + svr->flag = 0; } return 1; } @@ -121,10 +125,10 @@ static u32 ish_mainseq_2(struct mevent_srv_ish * svr) static u32 ish_mainseq_3(struct mevent_srv_ish * svr) { // do send - if (mevent_srv_sub_send(&svr->unk_24)) + if (mevent_srv_sub_send(&svr->manager)) { svr->mainseqno = 4; - svr->unk_0C = 0; + svr->flag = 0; } return 1; } @@ -139,96 +143,96 @@ static u32 ish_mainseq_4(struct mevent_srv_ish * svr) case 0: break; case 1: - svr->unk_04 = cmd->parameter; + svr->param = cmd->parameter; svr->mainseqno = 1; - svr->unk_0C = 0; + svr->flag = 0; break; case 2: - mevent_srv_sub_init_recv(&svr->unk_24, cmd->parameter, svr->unk_18); + mevent_srv_sub_init_recv(&svr->manager, cmd->parameter, svr->recvBuffer); svr->mainseqno = 2; - svr->unk_0C = 0; + svr->flag = 0; break; case 3: svr->mainseqno = 3; - svr->unk_0C = 0; + svr->flag = 0; break; case 20: - mevent_srv_sub_init_send(&svr->unk_24, 0x14, svr->unk_14, 0); + mevent_srv_sub_init_send(&svr->manager, 0x14, svr->sendBuffer, 0); svr->mainseqno = 3; - svr->unk_0C = 0; + svr->flag = 0; break; case 19: - sub_8144C00(svr, 0x12, GetGameStat(cmd->parameter)); + mevent_srv_ish_send_word(svr, 0x12, GetGameStat(cmd->parameter)); svr->mainseqno = 3; - svr->unk_0C = 0; + svr->flag = 0; break; case 6: - if (svr->unk_04 == 0) - sub_8144BE4(svr); + if (svr->param == 0) + mevent_srv_ish_jmp_buffer(svr); break; case 7: - if (svr->unk_04 == 1) - sub_8144BE4(svr); + if (svr->param == 1) + mevent_srv_ish_jmp_buffer(svr); break; case 4: - sub_8144BE4(svr); + mevent_srv_ish_jmp_buffer(svr); break; case 5: - memcpy(svr->unk_20, svr->unk_18, 0x40); + memcpy(svr->buffer, svr->recvBuffer, 0x40); svr->mainseqno = 5; - svr->unk_0C = 0; + svr->flag = 0; return 2; case 11: - memcpy(svr->unk_20, svr->unk_18, 0x40); + memcpy(svr->buffer, svr->recvBuffer, 0x40); svr->mainseqno = 5; - svr->unk_0C = 0; + svr->flag = 0; return 3; case 12: - memcpy(svr->unk_20, svr->unk_18, 0x40); + memcpy(svr->buffer, svr->recvBuffer, 0x40); svr->mainseqno = 5; - svr->unk_0C = 0; + svr->flag = 0; return 5; case 13: svr->mainseqno = 5; - svr->unk_0C = 0; + svr->flag = 0; return 4; case 8: - sub_81442CC(svr->unk_14); - mevent_srv_sub_init_send(&svr->unk_24, 0x11, svr->unk_14, 0x64); + sub_81442CC(svr->sendBuffer); + mevent_srv_sub_init_send(&svr->manager, 0x11, svr->sendBuffer, sizeof(struct MEventStruct_Unk1442CC)); break; case 14: - sub_8144C00(svr, 0x13, svr->unk_04); + mevent_srv_ish_send_word(svr, 0x13, svr->param); break; case 10: - sub_8143F68(svr->unk_18); + sub_8143F68(svr->recvBuffer); break; case 9: - if (!sub_8143EF4(svr->unk_18)) + if (!sub_8143EF4(svr->recvBuffer)) { - sub_8143DC8(svr->unk_18); - sub_8144C00(svr, 0x13, 0); + sub_8143DC8(svr->recvBuffer); + mevent_srv_ish_send_word(svr, 0x13, 0); } else - sub_8144C00(svr, 0x13, 1); + mevent_srv_ish_send_word(svr, 0x13, 1); break; case 15: svr->mainseqno = 6; - svr->unk_0C = 0; + svr->flag = 0; break; case 16: - sub_8144254(svr->unk_18); + sub_8144254(svr->recvBuffer); break; case 17: - sub_8069EA4(svr->unk_18, 1000); + sub_8069EA4(svr->recvBuffer, 1000); break; case 18: - memcpy(gSaveBlock2Ptr->unk_4A0, svr->unk_18, 0xbc); + memcpy(gSaveBlock2Ptr->unk_4A0, svr->recvBuffer, 0xbc); sub_80E7490(); break; case 21: - memcpy(gDecompressionBuffer, svr->unk_18, ME_SEND_BUF_SIZE); + memcpy(gDecompressionBuffer, svr->recvBuffer, ME_SEND_BUF_SIZE); svr->mainseqno = 7; - svr->unk_0C = 0; + svr->flag = 0; break; } @@ -237,11 +241,11 @@ static u32 ish_mainseq_4(struct mevent_srv_ish * svr) static u32 ish_mainseq_5(struct mevent_srv_ish * svr) { - // wait unk_0C - if (svr->unk_0C) + // wait flag + if (svr->flag) { svr->mainseqno = 4; - svr->unk_0C = 0; + svr->flag = 0; } return 1; } @@ -249,17 +253,17 @@ static u32 ish_mainseq_5(struct mevent_srv_ish * svr) static u32 ish_mainseq_6(struct mevent_srv_ish * svr) { // ??? - switch (svr->unk_0C) + switch (svr->flag) { case 0: - sub_80DA89C(svr->unk_18); - ++svr->unk_0C; + sub_80DA89C(svr->recvBuffer); + ++svr->flag; break; case 1: - if (!sub_80DA8B0(&svr->unk_04)) + if (!sub_80DA8B0(&svr->param)) { svr->mainseqno = 4; - svr->unk_0C = 0; + svr->flag = 0; } break; } @@ -270,10 +274,10 @@ static u32 ish_mainseq_7(struct mevent_srv_ish * svr) { // exec arbitrary code u32 (*func)(u32 *, struct SaveBlock2 *, struct SaveBlock1 *) = (void *)gDecompressionBuffer; - if (func(&svr->unk_04, gSaveBlock2Ptr, gSaveBlock1Ptr) == 1) + if (func(&svr->param, gSaveBlock2Ptr, gSaveBlock1Ptr) == 1) { svr->mainseqno = 4; - svr->unk_0C = 0; + svr->flag = 0; } return 1; } @@ -293,62 +297,62 @@ static u32 mevent_srv_ish_exec(struct mevent_srv_ish * svr) return funcs[svr->mainseqno](svr); } -void sub_8144F1C(void) +void mevent_srv_common_do_init_1(void) { - gUnknown_203F3C4 = AllocZeroed(sizeof(struct mevent_srv_common)); - mevent_srv_init_common(gUnknown_203F3C4, gUnknown_8468B6C, 0, 1); + s_mevent_srv_common_ptr = AllocZeroed(sizeof(struct mevent_srv_common)); + mevent_srv_init_common(s_mevent_srv_common_ptr, gUnknown_8468B6C, 0, 1); } -void sub_8144F40(void) +void mevent_srv_common_do_init_2(void) { - gUnknown_203F3C4 = AllocZeroed(sizeof(struct mevent_srv_common)); - mevent_srv_init_common(gUnknown_203F3C4, gUnknown_8468BCC, 0, 1); + s_mevent_srv_common_ptr = AllocZeroed(sizeof(struct mevent_srv_common)); + mevent_srv_init_common(s_mevent_srv_common_ptr, gUnknown_8468BCC, 0, 1); } -u32 sub_8144F64(u16 * a0) +u32 mevent_srv_init_do_exec(u16 * a0) { u32 result; - if (gUnknown_203F3C4 == NULL) + if (s_mevent_srv_common_ptr == NULL) return 3; - result = sub_8145600(gUnknown_203F3C4); + result = mevent_srv_exec_common(s_mevent_srv_common_ptr); if (result == 3) { - *a0 = gUnknown_203F3C4->unk_04; - mevent_srv_free_resources(gUnknown_203F3C4); - Free(gUnknown_203F3C4); - gUnknown_203F3C4 = NULL; + *a0 = s_mevent_srv_common_ptr->param; + mevent_srv_free_resources(s_mevent_srv_common_ptr); + Free(s_mevent_srv_common_ptr); + s_mevent_srv_common_ptr = NULL; } return result; } -static void mevent_srv_init_common(struct mevent_srv_common * svr, const void * a1, u32 a2, u32 a3) +static void mevent_srv_init_common(struct mevent_srv_common * svr, const void * cmdBuffer, u32 sendPlayerNo, u32 recvPlayerNo) { svr->unk_00 = 0; svr->mainseqno = 0; - svr->unk_18 = AllocZeroed(332); - svr->unk_1C = AllocZeroed(444); - svr->unk_14 = AllocZeroed(ME_SEND_BUF_SIZE); - svr->unk_20 = AllocZeroed(100); - svr->cmdBuffer = a1; + svr->mevent_32e0 = AllocZeroed(sizeof(struct MEventBuffer_32E0_Sub)); + svr->mevent_3120 = AllocZeroed(sizeof(struct MEventBuffer_3120_Sub)); + svr->recvBuffer = AllocZeroed(ME_SEND_BUF_SIZE); + svr->mevent_unk1442cc = AllocZeroed(sizeof(struct MEventStruct_Unk1442CC)); + svr->cmdBuffer = cmdBuffer; svr->cmdidx = 0; - mevent_srv_sub_init(&svr->unk_38, a2, a3); + mevent_srv_sub_init(&svr->manager, sendPlayerNo, recvPlayerNo); } static void mevent_srv_free_resources(struct mevent_srv_common * svr) { - Free(svr->unk_18); - Free(svr->unk_1C); - Free(svr->unk_14); - Free(svr->unk_20); + Free(svr->mevent_32e0); + Free(svr->mevent_3120); + Free(svr->recvBuffer); + Free(svr->mevent_unk1442cc); } -static void sub_814501C(struct mevent_srv_common * svr, u32 a1, void * a2, u32 size) +static void mevent_srv_common_init_send(struct mevent_srv_common * svr, u32 ident, const void * src, u32 size) { AGB_ASSERT_EX(size <= ME_SEND_BUF_SIZE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 257); - mevent_srv_sub_init_send(&svr->unk_38, a1, a2, size); + mevent_srv_sub_init_send(&svr->manager, ident, src, size); } -static void * sub_814505C(void * a0, void * a1) +static void * mevent_first_if_not_null_else_second(void * a0, void * a1) { if (a0 != NULL) return a0; @@ -356,7 +360,7 @@ static void * sub_814505C(void * a0, void * a1) return a1; } -static u32 sub_8145068(void * a0, void * a1) +static u32 mevent_compare_pointers(void * a0, void * a1) { if (a1 < a0) return 0; @@ -382,7 +386,7 @@ static u32 common_mainseq_1(struct mevent_srv_common * svr) static u32 common_mainseq_2(struct mevent_srv_common * svr) { // do recv - if (mevent_srv_sub_recv(&svr->unk_38)) + if (mevent_srv_sub_recv(&svr->manager)) svr->mainseqno = 4; return 1; } @@ -390,7 +394,7 @@ static u32 common_mainseq_2(struct mevent_srv_common * svr) static u32 common_mainseq_3(struct mevent_srv_common * svr) { // do send - if (mevent_srv_sub_send(&svr->unk_38)) + if (mevent_srv_sub_send(&svr->manager)) svr->mainseqno = 4; return 1; } @@ -407,14 +411,14 @@ static u32 common_mainseq_4(struct mevent_srv_common * svr) case 0: AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 354); svr->mainseqno = 1; - svr->unk_04 = cmd->flag; + svr->param = cmd->flag; break; case 1: svr->mainseqno = 3; break; case 2: AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 364); - mevent_srv_sub_init_recv(&svr->unk_38, cmd->flag, svr->unk_14); + mevent_srv_sub_init_recv(&svr->manager, cmd->flag, svr->recvBuffer); svr->mainseqno = 2; break; case 3: @@ -425,15 +429,15 @@ static u32 common_mainseq_4(struct mevent_srv_common * svr) case 5: AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 376); AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 377); - memcpy(svr->unk_20, svr->unk_14, 100); + memcpy(svr->mevent_unk1442cc, svr->recvBuffer, sizeof(struct MEventStruct_Unk1442CC)); break; case 6: AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 382); AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 383); - svr->unk_04 = sub_81443D4(svr->unk_20); + svr->param = sub_81443D4(svr->mevent_unk1442cc); break; case 4: - if (svr->unk_04 == cmd->flag) + if (svr->param == cmd->flag) { svr->cmdidx = 0; svr->cmdBuffer = cmd->parameter; @@ -441,100 +445,100 @@ static u32 common_mainseq_4(struct mevent_srv_common * svr) break; case 7: AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 396); - ptr = sub_814505C(cmd->parameter, svr->unk_18); - svr->unk_04 = sub_8144418(ptr, svr->unk_20, ptr); + ptr = mevent_first_if_not_null_else_second(cmd->parameter, svr->mevent_32e0); + svr->param = sub_8144418(ptr, svr->mevent_unk1442cc, ptr); break; case 8: AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 402); AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 403); - svr->unk_04 = *(u32 *)svr->unk_14; + svr->param = *(u32 *)svr->recvBuffer; break; case 9: AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 408); - ptr = sub_814505C(cmd->parameter, &svr->unk_34); - svr->unk_04 = sub_8144434(ptr, svr->unk_20, ptr); + ptr = mevent_first_if_not_null_else_second(cmd->parameter, &svr->sendWord); + svr->param = sub_8144434(ptr, svr->mevent_unk1442cc, ptr); break; case 10: AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 415); - svr->unk_04 = sub_81444B0(svr->unk_20, cmd->flag); + svr->param = sub_81444B0(svr->mevent_unk1442cc, cmd->flag); break; case 11: AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 420); - svr->unk_04 = sub_8144474(svr->unk_20, cmd->parameter); + svr->param = sub_8144474(svr->mevent_unk1442cc, cmd->parameter); break; case 12: AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 426); - svr->unk_04 = sub_8145068(cmd->parameter, *(void **)svr->unk_14); + svr->param = mevent_compare_pointers(cmd->parameter, *(void **)svr->recvBuffer); break; case 14: AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 432); - sub_814501C(svr, 0x17, sub_814505C(cmd->parameter, svr->unk_1C), 444); + mevent_srv_common_init_send(svr, 0x17, mevent_first_if_not_null_else_second(cmd->parameter, svr->mevent_3120), sizeof(struct MEventBuffer_3120_Sub)); break; case 13: AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 438); - sub_814501C(svr, 0x16, sub_814505C(cmd->parameter, svr->unk_18), 332); + mevent_srv_common_init_send(svr, 0x16, mevent_first_if_not_null_else_second(cmd->parameter, svr->mevent_32e0), sizeof(struct MEventBuffer_32E0_Sub)); break; case 16: AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 444); - sub_814501C(svr, 0x18, sub_814505C(cmd->parameter, &svr->unk_34), 4); + mevent_srv_common_init_send(svr, 0x18, mevent_first_if_not_null_else_second(cmd->parameter, &svr->sendWord), 4); break; case 15: if (cmd->parameter == NULL) - sub_814501C(svr, 0x19, svr->unk_24, svr->unk_28); + mevent_srv_common_init_send(svr, 0x19, svr->sendBuffer1, svr->sendBuffer1Size); else - sub_814501C(svr, 0x19, cmd->parameter, cmd->flag); + mevent_srv_common_init_send(svr, 0x19, cmd->parameter, cmd->flag); break; case 18: if (cmd->parameter == NULL) - sub_814501C(svr, 0x10, svr->unk_2C, svr->unk_30); + mevent_srv_common_init_send(svr, 0x10, svr->sendBuffer2, svr->sendBuffer2Size); else - sub_814501C(svr, 0x10, cmd->parameter, cmd->flag); + mevent_srv_common_init_send(svr, 0x10, cmd->parameter, cmd->flag); break; case 19: AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 466); - sub_814501C(svr, 0x1a, cmd->parameter, 188); + mevent_srv_common_init_send(svr, 0x1a, cmd->parameter, 188); break; case 20: - sub_814501C(svr, 0x15, cmd->parameter, cmd->flag); + mevent_srv_common_init_send(svr, 0x15, cmd->parameter, cmd->flag); break; case 17: - sub_814501C(svr, 0x1c, cmd->parameter, cmd->flag); + mevent_srv_common_init_send(svr, 0x1c, cmd->parameter, cmd->flag); break; case 22: AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 481); - memcpy(svr->unk_18, cmd->parameter, 332); + memcpy(svr->mevent_32e0, cmd->parameter, 332); break; case 23: AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 486); - memcpy(svr->unk_1C, cmd->parameter, 444); + memcpy(svr->mevent_3120, cmd->parameter, 444); break; case 21: AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 491); - svr->unk_34 = *(void **)cmd->parameter; + svr->sendWord = *(u32 *)cmd->parameter; break; case 24: - svr->unk_24 = cmd->parameter; - svr->unk_28 = cmd->flag; + svr->sendBuffer1 = cmd->parameter; + svr->sendBuffer1Size = cmd->flag; break; case 25: - svr->unk_2C = cmd->parameter; - svr->unk_30 = cmd->flag; + svr->sendBuffer2 = cmd->parameter; + svr->sendBuffer2Size = cmd->flag; break; case 26: AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 506); - memcpy(svr->unk_18, sav1_get_mevent_buffer_1(), 332); - sub_814410C(svr->unk_18); + memcpy(svr->mevent_32e0, sav1_get_mevent_buffer_1(), 332); + sub_814410C(svr->mevent_32e0); break; case 27: AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 512); - memcpy(svr->unk_1C, sub_8143D58(), 444); + memcpy(svr->mevent_3120, sub_8143D58(), 444); break; case 28: AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 517); - svr->unk_24 = sub_8069E48(); + svr->sendBuffer1 = sub_8069E48(); break; case 29: - sub_814501C(svr, 0x1b, cmd->parameter, cmd->flag); + mevent_srv_common_init_send(svr, 0x1b, cmd->parameter, cmd->flag); break; } @@ -549,7 +553,7 @@ static u32 (*const func_tbl[])(struct mevent_srv_common *) = { common_mainseq_4 }; -static u32 sub_8145600(struct mevent_srv_common * svr) +static u32 mevent_srv_exec_common(struct mevent_srv_common * svr) { u32 response; AGB_ASSERT_EX(svr->mainseqno < NELEMS(func_tbl), "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 546); diff --git a/src/mevent_server_helpers.c b/src/mevent_server_helpers.c index 7e2119088..35efa68c8 100644 --- a/src/mevent_server_helpers.c +++ b/src/mevent_server_helpers.c @@ -41,10 +41,10 @@ void mevent_srv_sub_init(struct mevent_srv_sub * svr, u32 sendPlayerNo, u32 recv svr->recvFunc = mevent_receive_func; } -void mevent_srv_sub_init_send(struct mevent_srv_sub * svr, u32 a1, const void * src, u32 size) +void mevent_srv_sub_init_send(struct mevent_srv_sub * svr, u32 ident, const void * src, u32 size) { svr->seqno = 0; - svr->sendIdent = a1; + svr->sendIdent = ident; svr->sendCounter = 0; svr->sendCRC = 0; if (size != 0) -- cgit v1.2.3 From 884f1934e8bf34813701f745140f1d8429e8beaf Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 2 Dec 2018 10:02:39 -0500 Subject: start decompiling mevent_8145654 --- src/mevent_8145654.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/mevent_8145654.c (limited to 'src') diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c new file mode 100644 index 000000000..9c26a21a1 --- /dev/null +++ b/src/mevent_8145654.c @@ -0,0 +1,52 @@ +#include "global.h" +#include "malloc.h" +#include "mevent.h" + +struct UnkStruct_8467FB8 +{ + u16 ident; + const void * unk_04; + const void * unk_08; + const void * unk_0C; +}; + +struct UnkStruct_203F3C8 +{ + /*0000*/ struct MEventBuffer_32E0_Sub unk_0000; + /*014c*/ struct MEventBuffer_3430_Sub unk_014c; + /*0170*/ const struct UnkStruct_8467FB8 * unk_0170; + /*0174*/ u8 filler_0174[0x12E8]; +}; + +EWRAM_DATA struct UnkStruct_203F3C8 * gUnknown_203F3C8 = NULL; + +extern const struct UnkStruct_8467FB8 gUnknown_8467FB8[8]; + +bool32 sub_8145654(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_Sub * r6) +{ + if (r5 == NULL || r6 == NULL) + return FALSE; + gUnknown_203F3C8 = AllocZeroed(sizeof(struct UnkStruct_203F3C8)); + if (gUnknown_203F3C8 == NULL) + return FALSE; + gUnknown_203F3C8->unk_0000 = *r5; + gUnknown_203F3C8->unk_014c = *r6; + if (gUnknown_203F3C8->unk_0000.unk_08_2 > 7) + gUnknown_203F3C8->unk_0000.unk_08_2 = 0; + if (gUnknown_203F3C8->unk_0000.unk_08_0 > 2) + gUnknown_203F3C8->unk_0000.unk_08_0 = 0; + if (gUnknown_203F3C8->unk_0000.unk_09 > 7) + gUnknown_203F3C8->unk_0000.unk_09 = 0; + gUnknown_203F3C8->unk_0170 = &gUnknown_8467FB8[gUnknown_203F3C8->unk_0000.unk_08_2]; + return TRUE; +} + +void sub_81456F0(void) +{ + if (gUnknown_203F3C8 != NULL) + { + *gUnknown_203F3C8 = (struct UnkStruct_203F3C8){}; + Free(gUnknown_203F3C8); + gUnknown_203F3C8 = NULL; + } +} -- cgit v1.2.3 From 8f0f725039e9b0ae9de440df28e1eb4bd7d00dc3 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 2 Dec 2018 11:42:45 -0500 Subject: sub_814571C and associated graphics dump --- src/mevent_8145654.c | 88 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 84 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c index 9c26a21a1..3477543a8 100644 --- a/src/mevent_8145654.c +++ b/src/mevent_8145654.c @@ -1,13 +1,18 @@ #include "global.h" +#include "bg.h" +#include "palette.h" +#include "decompress.h" #include "malloc.h" +#include "menu.h" +#include "pokemon_icon.h" #include "mevent.h" struct UnkStruct_8467FB8 { u16 ident; - const void * unk_04; - const void * unk_08; - const void * unk_0C; + const u8 * tiles; + const u8 * map; + const u16 * pal; }; struct UnkStruct_203F3C8 @@ -15,11 +20,22 @@ struct UnkStruct_203F3C8 /*0000*/ struct MEventBuffer_32E0_Sub unk_0000; /*014c*/ struct MEventBuffer_3430_Sub unk_014c; /*0170*/ const struct UnkStruct_8467FB8 * unk_0170; - /*0174*/ u8 filler_0174[0x12E8]; + /*0174*/ u8 unk_0174; + /*0176*/ u16 unk_0176; + /*0178*/ u16 unk_0178; + /*017A*/ u16 unk_017A; + /*017C*/ u8 filler_0178[0x2E0]; + /*045C*/ u8 buffer_045C[0x1000]; }; EWRAM_DATA struct UnkStruct_203F3C8 * gUnknown_203F3C8 = NULL; +void sub_8145A98(void); +void sub_8145D18(u8 bgId); +void sub_8146060(void); + +extern const struct WindowTemplate gUnknown_8467074[3]; + extern const struct UnkStruct_8467FB8 gUnknown_8467FB8[8]; bool32 sub_8145654(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_Sub * r6) @@ -50,3 +66,67 @@ void sub_81456F0(void) gUnknown_203F3C8 = NULL; } } + +s32 sub_814571C(void) +{ + if (gUnknown_203F3C8 == NULL) + return -1; + switch(gUnknown_203F3C8->unk_0174) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + break; + case 1: + if (UpdatePaletteFade()) + return 0; + break; + case 2: + FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 0, 30, 20); + FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20); + FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 20); + CopyBgTilemapBufferToVram(0); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(2); + decompress_and_copy_tile_data_to_vram(2, gUnknown_203F3C8->unk_0170->tiles, 0, 0x008, 0); + gUnknown_203F3C8->unk_0176 = AddWindow(&gUnknown_8467074[0]); + gUnknown_203F3C8->unk_0178 = AddWindow(&gUnknown_8467074[1]); + gUnknown_203F3C8->unk_017A = AddWindow(&gUnknown_8467074[2]); + break; + case 3: + if (free_temp_tile_data_buffers_if_possible()) + return 0; + gPaletteFade.bufferTransferDisabled = TRUE; + LoadPalette(gUnknown_203F3C8->unk_0170->pal, 0x10, 0x20); + LZ77UnCompWram(gUnknown_203F3C8->unk_0170->map, gUnknown_203F3C8->buffer_045C); + CopyRectToBgTilemapBufferRect(2, gUnknown_203F3C8->buffer_045C, 0, 0, 30, 20, 0, 0, 30, 20, 1, 0x008, 0); + CopyBgTilemapBufferToVram(2); + break; + case 4: + sub_8145A98(); + break; + case 5: + sub_8145D18(0); + sub_8145D18(1); + sub_8145D18(2); + CopyBgTilemapBufferToVram(1); + break; + case 6: + sub_809707C(); + break; + case 7: + ShowBg(1); + ShowBg(2); + gPaletteFade.bufferTransferDisabled = FALSE; + sub_8146060(); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + UpdatePaletteFade(); + break; + default: + if (UpdatePaletteFade()) + return 0; + gUnknown_203F3C8->unk_0174 = 0; + return 1; + } + ++gUnknown_203F3C8->unk_0174; + return 0; +} -- cgit v1.2.3 From 2fb1404613d12e5384c7650ef9d46d2678865544 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 2 Dec 2018 12:09:16 -0500 Subject: sub_814593C and associated ewram --- src/mevent_8145654.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) (limited to 'src') diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c index 3477543a8..6c51f9091 100644 --- a/src/mevent_8145654.c +++ b/src/mevent_8145654.c @@ -5,6 +5,7 @@ #include "malloc.h" #include "menu.h" #include "pokemon_icon.h" +#include "mystery_gift_menu.h" #include "mevent.h" struct UnkStruct_8467FB8 @@ -28,11 +29,18 @@ struct UnkStruct_203F3C8 /*045C*/ u8 buffer_045C[0x1000]; }; +struct UnkStruct_203F3CC +{ + /*0000*/ u8 filler_0000[0x13a4]; +}; + EWRAM_DATA struct UnkStruct_203F3C8 * gUnknown_203F3C8 = NULL; +EWRAM_DATA struct UnkStruct_203F3CC * gUnknown_203F3CC = NULL; void sub_8145A98(void); void sub_8145D18(u8 bgId); void sub_8146060(void); +void sub_81461D8(void); extern const struct WindowTemplate gUnknown_8467074[3]; @@ -130,3 +138,52 @@ s32 sub_814571C(void) ++gUnknown_203F3C8->unk_0174; return 0; } + +s32 sub_814593C(bool32 flag) +{ + if (gUnknown_203F3C8 == NULL) + return -1; + switch (gUnknown_203F3C8->unk_0174) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + break; + case 1: + if (UpdatePaletteFade()) + return 0; + break; + case 2: + FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 0, 30, 20); + FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20); + FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 20); + CopyBgTilemapBufferToVram(0); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(2); + break; + case 3: + HideBg(1); + HideBg(2); + RemoveWindow(gUnknown_203F3C8->unk_017A); + RemoveWindow(gUnknown_203F3C8->unk_0178); + RemoveWindow(gUnknown_203F3C8->unk_0176); + break; + case 4: + sub_81461D8(); + FreeMonIconPalettes(); + break; + case 5: + sub_8142344(gUnknown_203F3B8, flag); + break; + case 6: + CopyBgTilemapBufferToVram(0); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + break; + default: + if (UpdatePaletteFade()) + return 0; + gUnknown_203F3C8->unk_0174 = 0; + return 1; + } + ++gUnknown_203F3C8->unk_0174; + return 0; +} -- cgit v1.2.3 From cd42b22d6b450b1fc1d79b046fe7cd1a0fdcf543 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 2 Dec 2018 13:33:03 -0500 Subject: sub_8145A98 --- src/mevent_8145654.c | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 85 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c index 6c51f9091..d3ec2e0ce 100644 --- a/src/mevent_8145654.c +++ b/src/mevent_8145654.c @@ -6,6 +6,7 @@ #include "menu.h" #include "pokemon_icon.h" #include "mystery_gift_menu.h" +#include "string_util.h" #include "mevent.h" struct UnkStruct_8467FB8 @@ -16,16 +17,31 @@ struct UnkStruct_8467FB8 const u16 * pal; }; +struct UnkStruct_203F3C8_02DC +{ + u8 unk_00; + u8 unk_01[41]; + u8 unk_42[4]; +}; + struct UnkStruct_203F3C8 { /*0000*/ struct MEventBuffer_32E0_Sub unk_0000; /*014c*/ struct MEventBuffer_3430_Sub unk_014c; /*0170*/ const struct UnkStruct_8467FB8 * unk_0170; /*0174*/ u8 unk_0174; + /*0175*/ u8 unk_0175; /*0176*/ u16 unk_0176; /*0178*/ u16 unk_0178; /*017A*/ u16 unk_017A; - /*017C*/ u8 filler_0178[0x2E0]; + /*017C*/ u8 filler_017C[15]; + /*018B*/ u8 unk_018B[41]; + /*01B4*/ u8 unk_01B4[41]; + /*01DD*/ u8 unk_01DD[7]; + /*01E4*/ u8 unk_01E4[4][41]; + /*0288*/ u8 unk_0288[41]; + /*02B1*/ u8 unk_02B1[41]; + /*02DC*/ struct UnkStruct_203F3C8_02DC unk_02DC[8]; /*045C*/ u8 buffer_045C[0x1000]; }; @@ -187,3 +203,71 @@ s32 sub_814593C(bool32 flag) ++gUnknown_203F3C8->unk_0174; return 0; } + +void sub_8145A98(void) +{ + u16 i = 0; + u16 r6; + u16 sp0[3] = {0, 0, 0}; + + memcpy(gUnknown_203F3C8->unk_018B, gUnknown_203F3C8->unk_0000.unk_0A, 40); + gUnknown_203F3C8->unk_018B[40] = EOS; + memcpy(gUnknown_203F3C8->unk_01B4, gUnknown_203F3C8->unk_0000.unk_32, 40); + gUnknown_203F3C8->unk_01B4[40] = EOS; + if (gUnknown_203F3C8->unk_0000.unk_04 > 999999) + gUnknown_203F3C8->unk_0000.unk_04 = 999999; + ConvertIntToDecimalStringN(gUnknown_203F3C8->unk_01DD, gUnknown_203F3C8->unk_0000.unk_04, STR_CONV_MODE_LEFT_ALIGN, 6); + for (i = 0; i < 4; i++) + { + memcpy(gUnknown_203F3C8->unk_01E4[i], gUnknown_203F3C8->unk_0000.unk_5A[i], 40); + gUnknown_203F3C8->unk_01E4[i][40] = EOS; + } + memcpy(gUnknown_203F3C8->unk_0288, gUnknown_203F3C8->unk_0000.unk_FA, 40); + gUnknown_203F3C8->unk_0288[40] = EOS; + switch (gUnknown_203F3C8->unk_0000.unk_08_0) + { + case 0: + memcpy(gUnknown_203F3C8->unk_02B1, gUnknown_203F3C8->unk_0000.unk_122, 40); + gUnknown_203F3C8->unk_02B1[40] = EOS; + break; + case 1: + gUnknown_203F3C8->unk_02B1[00] = EOS; + break; + case 2: + gUnknown_203F3C8->unk_02B1[00] = EOS; + sp0[0] = gUnknown_203F3C8->unk_014c.unk_00 < 999 ? gUnknown_203F3C8->unk_014c.unk_00 : 999; + sp0[1] = gUnknown_203F3C8->unk_014c.unk_02 < 999 ? gUnknown_203F3C8->unk_014c.unk_02 : 999; + sp0[2] = gUnknown_203F3C8->unk_014c.unk_04 < 999 ? gUnknown_203F3C8->unk_014c.unk_04 : 999; + for (i = 0; i < 8; i++) + { + memset(gUnknown_203F3C8->unk_02DC[i].unk_42, EOS, 4); + memset(gUnknown_203F3C8->unk_02DC[i].unk_01, EOS, 41); + } + for (i = 0, r6 = 0; i < 40; i++) + { + if (gUnknown_203F3C8->unk_0000.unk_122[i] != 0xF7) + { + gUnknown_203F3C8->unk_02DC[gUnknown_203F3C8->unk_0175].unk_01[r6] = gUnknown_203F3C8->unk_0000.unk_122[i]; + r6++; + } + else + { + u8 r3 = gUnknown_203F3C8->unk_0000.unk_122[i + 1]; + if (r3 > 2) + { + i += 2; + } + else + { + ConvertIntToDecimalStringN(gUnknown_203F3C8->unk_02DC[gUnknown_203F3C8->unk_0175].unk_42, sp0[r3], STR_CONV_MODE_LEADING_ZEROS, 3); + gUnknown_203F3C8->unk_02DC[gUnknown_203F3C8->unk_0175].unk_00 = gUnknown_203F3C8->unk_0000.unk_122[i + 2]; + gUnknown_203F3C8->unk_0175++; + if (gUnknown_203F3C8->unk_0175 > 7) + break; + r6 = 0; + i += 2; + } + } + } + } +} -- cgit v1.2.3 From 30d4803a44a8f11ee88c4d4e37cef9f2373b3542 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 2 Dec 2018 16:06:01 -0500 Subject: sub_8145D18 --- src/mevent_8145654.c | 111 +++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 94 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c index d3ec2e0ce..ec1664643 100644 --- a/src/mevent_8145654.c +++ b/src/mevent_8145654.c @@ -1,4 +1,5 @@ #include "global.h" +#include "constants/species.h" #include "bg.h" #include "palette.h" #include "decompress.h" @@ -11,7 +12,10 @@ struct UnkStruct_8467FB8 { - u16 ident; + u8 textPal1:4; + u8 textPal2:4; + u8 textPal3:4; + u8 textPal4:4; const u8 * tiles; const u8 * map; const u16 * pal; @@ -27,14 +31,13 @@ struct UnkStruct_203F3C8_02DC struct UnkStruct_203F3C8 { /*0000*/ struct MEventBuffer_32E0_Sub unk_0000; - /*014c*/ struct MEventBuffer_3430_Sub unk_014c; + /*014c*/ struct MEventBuffer_3430_Sub unk_014C; /*0170*/ const struct UnkStruct_8467FB8 * unk_0170; /*0174*/ u8 unk_0174; /*0175*/ u8 unk_0175; - /*0176*/ u16 unk_0176; - /*0178*/ u16 unk_0178; - /*017A*/ u16 unk_017A; - /*017C*/ u8 filler_017C[15]; + /*0176*/ u16 unk_0176[3]; + /*017C*/ u8 unk_017C; + /*017D*/ u8 filler_017D[14]; /*018B*/ u8 unk_018B[41]; /*01B4*/ u8 unk_01B4[41]; /*01DD*/ u8 unk_01DD[7]; @@ -54,12 +57,15 @@ EWRAM_DATA struct UnkStruct_203F3C8 * gUnknown_203F3C8 = NULL; EWRAM_DATA struct UnkStruct_203F3CC * gUnknown_203F3CC = NULL; void sub_8145A98(void); -void sub_8145D18(u8 bgId); +void sub_8145D18(u8 whichWindow); void sub_8146060(void); void sub_81461D8(void); +extern const struct TextColor gUnknown_8467068[2]; +extern const u8 gUnknown_8467070[3]; extern const struct WindowTemplate gUnknown_8467074[3]; +extern const struct CompressedSpriteSheet gUnknown_8467F58; extern const struct UnkStruct_8467FB8 gUnknown_8467FB8[8]; bool32 sub_8145654(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_Sub * r6) @@ -70,7 +76,7 @@ bool32 sub_8145654(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_S if (gUnknown_203F3C8 == NULL) return FALSE; gUnknown_203F3C8->unk_0000 = *r5; - gUnknown_203F3C8->unk_014c = *r6; + gUnknown_203F3C8->unk_014C = *r6; if (gUnknown_203F3C8->unk_0000.unk_08_2 > 7) gUnknown_203F3C8->unk_0000.unk_08_2 = 0; if (gUnknown_203F3C8->unk_0000.unk_08_0 > 2) @@ -112,9 +118,9 @@ s32 sub_814571C(void) CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(2); decompress_and_copy_tile_data_to_vram(2, gUnknown_203F3C8->unk_0170->tiles, 0, 0x008, 0); - gUnknown_203F3C8->unk_0176 = AddWindow(&gUnknown_8467074[0]); - gUnknown_203F3C8->unk_0178 = AddWindow(&gUnknown_8467074[1]); - gUnknown_203F3C8->unk_017A = AddWindow(&gUnknown_8467074[2]); + gUnknown_203F3C8->unk_0176[0] = AddWindow(&gUnknown_8467074[0]); + gUnknown_203F3C8->unk_0176[1] = AddWindow(&gUnknown_8467074[1]); + gUnknown_203F3C8->unk_0176[2] = AddWindow(&gUnknown_8467074[2]); break; case 3: if (free_temp_tile_data_buffers_if_possible()) @@ -179,9 +185,9 @@ s32 sub_814593C(bool32 flag) case 3: HideBg(1); HideBg(2); - RemoveWindow(gUnknown_203F3C8->unk_017A); - RemoveWindow(gUnknown_203F3C8->unk_0178); - RemoveWindow(gUnknown_203F3C8->unk_0176); + RemoveWindow(gUnknown_203F3C8->unk_0176[2]); + RemoveWindow(gUnknown_203F3C8->unk_0176[1]); + RemoveWindow(gUnknown_203F3C8->unk_0176[0]); break; case 4: sub_81461D8(); @@ -235,9 +241,9 @@ void sub_8145A98(void) break; case 2: gUnknown_203F3C8->unk_02B1[00] = EOS; - sp0[0] = gUnknown_203F3C8->unk_014c.unk_00 < 999 ? gUnknown_203F3C8->unk_014c.unk_00 : 999; - sp0[1] = gUnknown_203F3C8->unk_014c.unk_02 < 999 ? gUnknown_203F3C8->unk_014c.unk_02 : 999; - sp0[2] = gUnknown_203F3C8->unk_014c.unk_04 < 999 ? gUnknown_203F3C8->unk_014c.unk_04 : 999; + sp0[0] = gUnknown_203F3C8->unk_014C.unk_00 < 999 ? gUnknown_203F3C8->unk_014C.unk_00 : 999; + sp0[1] = gUnknown_203F3C8->unk_014C.unk_02 < 999 ? gUnknown_203F3C8->unk_014C.unk_02 : 999; + sp0[2] = gUnknown_203F3C8->unk_014C.unk_04 < 999 ? gUnknown_203F3C8->unk_014C.unk_04 : 999; for (i = 0; i < 8; i++) { memset(gUnknown_203F3C8->unk_02DC[i].unk_42, EOS, 4); @@ -271,3 +277,74 @@ void sub_8145A98(void) } } } + +void sub_8145D18(u8 whichWindow) +{ + s8 sp0C = 0; + s32 windowId = gUnknown_203F3C8->unk_0176[whichWindow]; + PutWindowTilemap(windowId); + FillWindowPixelBuffer(windowId, 0); + switch (whichWindow) + { + case 0: + { + s32 x; + box_print(windowId, 3, 0, 1, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal1], 0, gUnknown_203F3C8->unk_018B); + x = 160 - GetStringWidth(3, gUnknown_203F3C8->unk_01B4, GetFontAttribute(3, 2)); + if (x < 0) + x = 0; + box_print(windowId, 3, x, 17, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal1], 0, gUnknown_203F3C8->unk_01B4); + if (gUnknown_203F3C8->unk_0000.unk_04 != 0) + { + box_print(windowId, 2, 166, 17, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal1], 0, gUnknown_203F3C8->unk_01DD); + } + break; + } + case 1: + for (; sp0C < 4; sp0C++) + { + box_print(windowId, 3, 0, 16 * sp0C + 2, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal2], 0, gUnknown_203F3C8->unk_01E4[sp0C]); + } + break; + case 2: + box_print(windowId, 3, 0, gUnknown_8467070[gUnknown_203F3C8->unk_0000.unk_08_0], &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_0288); + if (gUnknown_203F3C8->unk_0000.unk_08_0 != 2) + { + box_print(windowId, 3, 0, 16 + gUnknown_8467070[gUnknown_203F3C8->unk_0000.unk_08_0], &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_02B1); + } + else + { + s32 x = 0; + s32 y = gUnknown_8467070[gUnknown_203F3C8->unk_0000.unk_08_0] + 16; + s32 spacing = GetFontAttribute(3, 2); + for (; sp0C < gUnknown_203F3C8->unk_0175; sp0C++) + { + box_print(windowId, 3, x, y, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_02DC[sp0C].unk_01); + if (gUnknown_203F3C8->unk_02DC[sp0C].unk_42[0] != EOS) + { + x += GetStringWidth(3, gUnknown_203F3C8->unk_02DC[sp0C].unk_01, spacing); + box_print(windowId, 2, x, y, &gUnknown_8467068[gUnknown_203F3C8->unk_0170->textPal3], 0, gUnknown_203F3C8->unk_02DC[sp0C].unk_42); + x += GetStringWidth(3, gUnknown_203F3C8->unk_02DC[sp0C].unk_42, spacing) + gUnknown_203F3C8->unk_02DC[sp0C].unk_00; + } + } + } + break; + } + CopyWindowToVram(windowId, 3); +} + +/* +void sub_8146060(void) +{ + gUnknown_203F3C8->unk_017C = 0xFF; + if (gUnknown_203F3C8->unk_014C.unk_06 != SPECIES_NONE) + { + gUnknown_203F3C8->unk_017C = sub_8096ECC(sub_8096FD4(gUnknown_203F3C8->unk_014C.unk_06), SpriteCallbackDummy, 0xDC, 0x14, 0, FALSE); + gSprites[gUnknown_203F3C8->unk_017C].oam.priority = 2; + } + if (gUnknown_203F3C8->unk_0000.unk_09 != 0 && gUnknown_203F3C8->unk_0000.unk_08_0 == 1) + { + sub_800F034(gUnknown_8467F58); + } +} + */ -- cgit v1.2.3 From 9e34e6b53d8c21c79e67c7b46ac658506abb4ed3 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 2 Dec 2018 16:38:07 -0500 Subject: sub_8146060 --- src/mevent_8145654.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c index ec1664643..db714ce80 100644 --- a/src/mevent_8145654.c +++ b/src/mevent_8145654.c @@ -37,7 +37,7 @@ struct UnkStruct_203F3C8 /*0175*/ u8 unk_0175; /*0176*/ u16 unk_0176[3]; /*017C*/ u8 unk_017C; - /*017D*/ u8 filler_017D[14]; + /*017D*/ u8 unk_017D[7][2]; /*018B*/ u8 unk_018B[41]; /*01B4*/ u8 unk_01B4[41]; /*01DD*/ u8 unk_01DD[7]; @@ -66,7 +66,9 @@ extern const u8 gUnknown_8467070[3]; extern const struct WindowTemplate gUnknown_8467074[3]; extern const struct CompressedSpriteSheet gUnknown_8467F58; +extern const struct SpritePalette gUnknown_8467F60[]; extern const struct UnkStruct_8467FB8 gUnknown_8467FB8[8]; +extern const struct SpriteTemplate gUnknown_8467FA0; bool32 sub_8145654(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_Sub * r6) { @@ -333,9 +335,9 @@ void sub_8145D18(u8 whichWindow) CopyWindowToVram(windowId, 3); } -/* void sub_8146060(void) { + u8 r7 = 0; gUnknown_203F3C8->unk_017C = 0xFF; if (gUnknown_203F3C8->unk_014C.unk_06 != SPECIES_NONE) { @@ -344,7 +346,18 @@ void sub_8146060(void) } if (gUnknown_203F3C8->unk_0000.unk_09 != 0 && gUnknown_203F3C8->unk_0000.unk_08_0 == 1) { - sub_800F034(gUnknown_8467F58); + sub_800F034(&gUnknown_8467F58); + LoadSpritePalette(&gUnknown_8467F60[gUnknown_203F3C8->unk_0170->textPal4]); + for (; r7 < gUnknown_203F3C8->unk_0000.unk_09; r7++) + { + gUnknown_203F3C8->unk_017D[r7][0] = 0xFF; + gUnknown_203F3C8->unk_017D[r7][1] = 0xFF; + gUnknown_203F3C8->unk_017D[r7][0] = CreateSprite(&gUnknown_8467FA0, 0xd8 - 32 * r7, 0x90, 8); + if (gUnknown_203F3C8->unk_014C.unk_08[0][r7] != 0) + { + gUnknown_203F3C8->unk_017D[r7][1] = sub_8096ECC(sub_8096FD4(gUnknown_203F3C8->unk_014C.unk_08[0][r7]), SpriteCallbackDummy, 0xd8 - 32 * r7, 0x88, 0, 0); + gSprites[gUnknown_203F3C8->unk_017D[r7][1]].oam.priority = 2; + } + } } } - */ -- cgit v1.2.3 From 60b8858b19f50751d1222abd0c662d1ee938b3ce Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 2 Dec 2018 16:48:04 -0500 Subject: sub_81461D8 --- src/mevent_8145654.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src') diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c index db714ce80..116db2e0e 100644 --- a/src/mevent_8145654.c +++ b/src/mevent_8145654.c @@ -361,3 +361,28 @@ void sub_8146060(void) } } } + +void sub_81461D8(void) +{ + u8 r6 = 0; + if (gUnknown_203F3C8->unk_017C != 0xFF) + sub_8097070(&gSprites[gUnknown_203F3C8->unk_017C]); + if (gUnknown_203F3C8->unk_0000.unk_09 != 0 && gUnknown_203F3C8->unk_0000.unk_08_0 == 1) + { + for (; r6 < gUnknown_203F3C8->unk_0000.unk_09; r6++) + { + if (gUnknown_203F3C8->unk_017D[r6][0] != 0xFF) + { + DestroySprite(&gSprites[gUnknown_203F3C8->unk_017D[r6][0]]); + // This might be a typo. Uncomment the next line, and comment the one that follows, to get the presumed intended behavior. + // if (gUnknown_203F3C8->unk_017D[r6][1] != 0xFF) + if (gUnknown_203F3C8->unk_017D[r6][0] != 0xFF) + { + sub_8097070(&gSprites[gUnknown_203F3C8->unk_017D[r6][1]]); + } + } + } + FreeSpriteTilesByTag(0x8000); + FreeSpritePaletteByTag(0x8000); + } +} -- cgit v1.2.3 From 39a9e186e05fd87d7b4787822b7207e8ab9fd9fd Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 2 Dec 2018 17:01:48 -0500 Subject: Decompile mevent_8145654 data so far --- src/mevent_8145654.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 66 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c index 116db2e0e..578b90b54 100644 --- a/src/mevent_8145654.c +++ b/src/mevent_8145654.c @@ -61,14 +61,73 @@ void sub_8145D18(u8 whichWindow); void sub_8146060(void); void sub_81461D8(void); -extern const struct TextColor gUnknown_8467068[2]; -extern const u8 gUnknown_8467070[3]; -extern const struct WindowTemplate gUnknown_8467074[3]; +extern const struct OamData gUnknown_83AC9F8; -extern const struct CompressedSpriteSheet gUnknown_8467F58; -extern const struct SpritePalette gUnknown_8467F60[]; -extern const struct UnkStruct_8467FB8 gUnknown_8467FB8[8]; -extern const struct SpriteTemplate gUnknown_8467FA0; +const struct TextColor gUnknown_8467068[] = { + {0, 2, 3}, + {0, 1, 2} +}; +const u8 ALIGNED(4) gUnknown_8467070[3] = {7, 4, 7}; +const struct WindowTemplate gUnknown_8467074[] = { + {0x01, 0x01, 0x01, 0x19, 0x04, 0x0f, 0x029c}, + {0x01, 0x01, 0x06, 0x1c, 0x08, 0x0f, 0x01bc}, + {0x01, 0x01, 0x0e, 0x1c, 0x05, 0x0f, 0x0130} +}; + +const u16 gUnknown_846708C[] = INCBIN_U16("data/graphics/mevent/pal_46708C.gbapal"); +const u16 gUnknown_84670AC[] = INCBIN_U16("data/graphics/mevent/pal_4670AC.gbapal"); +const u16 gUnknown_84670CC[] = INCBIN_U16("data/graphics/mevent/pal_4670CC.gbapal"); +const u16 gUnknown_84670EC[] = INCBIN_U16("data/graphics/mevent/pal_4670EC.gbapal"); +const u16 gUnknown_846710C[] = INCBIN_U16("data/graphics/mevent/pal_46710C.gbapal"); +const u16 gUnknown_846712C[] = INCBIN_U16("data/graphics/mevent/pal_46712C.gbapal"); +const u16 gUnknown_846714C[] = INCBIN_U16("data/graphics/mevent/pal_46714C.gbapal"); +const u16 gUnknown_846716C[] = INCBIN_U16("data/graphics/mevent/pal_46716C.gbapal"); +const u8 gUnknown_846718C[] = INCBIN_U8("data/graphics/mevent/gfx_46718C.4bpp.lz"); +const u8 gUnknown_8467288[] = INCBIN_U8("data/graphics/mevent/tilemap_467288.bin.lz"); +const u8 gUnknown_846737C[] = INCBIN_U8("data/graphics/mevent/gfx_46737C.4bpp.lz"); +const u8 gUnknown_8467470[] = INCBIN_U8("data/graphics/mevent/tilemap_467470.bin.lz"); +const u8 gUnknown_8467558[] = INCBIN_U8("data/graphics/mevent/gfx_467558.4bpp.lz"); +const u8 gUnknown_846762C[] = INCBIN_U8("data/graphics/mevent/tilemap_46762C.bin.lz"); +const u8 gUnknown_8467700[] = INCBIN_U8("data/graphics/mevent/gfx_467700.4bpp.lz"); +const u8 gUnknown_8467934[] = INCBIN_U8("data/graphics/mevent/tilemap_467934.bin.lz"); +const u8 gUnknown_8467A7C[] = INCBIN_U8("data/graphics/mevent/gfx_467A7C.4bpp.lz"); +const u8 gUnknown_8467CAC[] = INCBIN_U8("data/graphics/mevent/tilemap_467CAC.bin.lz"); +const u16 gUnknown_8467DF4[] = INCBIN_U16("data/graphics/mevent/pal_467DF4.gbapal"); +const u16 gUnknown_8467E14[] = INCBIN_U16("data/graphics/mevent/pal_467E14.gbapal"); +const u16 gUnknown_8467E34[] = INCBIN_U16("data/graphics/mevent/pal_467E34.gbapal"); +const u16 gUnknown_8467E54[] = INCBIN_U16("data/graphics/mevent/pal_467E54.gbapal"); +const u16 gUnknown_8467E74[] = INCBIN_U16("data/graphics/mevent/pal_467E74.gbapal"); +const u16 gUnknown_8467E94[] = INCBIN_U16("data/graphics/mevent/pal_467E94.gbapal"); +const u16 gUnknown_8467EB4[] = INCBIN_U16("data/graphics/mevent/pal_467EB4.gbapal"); +const u16 gUnknown_8467ED4[] = INCBIN_U16("data/graphics/mevent/pal_467ED4.gbapal"); +const u8 gUnknown_8467EF4[] = INCBIN_U8("data/graphics/mevent/gfx_467F58.4bpp.lz"); + +const struct CompressedSpriteSheet gUnknown_8467F58 = { + gUnknown_8467EF4, 0x100, 0x8000 +}; +const struct SpritePalette gUnknown_8467F60[] = { + {gUnknown_8467DF4, 0x8000}, + {gUnknown_8467E14, 0x8000}, + {gUnknown_8467E34, 0x8000}, + {gUnknown_8467E54, 0x8000}, + {gUnknown_8467E74, 0x8000}, + {gUnknown_8467E94, 0x8000}, + {gUnknown_8467EB4, 0x8000}, + {gUnknown_8467ED4, 0x8000} +}; +const struct SpriteTemplate gUnknown_8467FA0 = { + 0x8000, 0x8000, &gUnknown_83AC9F8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy +}; +const struct UnkStruct_8467FB8 gUnknown_8467FB8[8] = { + {1, 0, 0, 0, gUnknown_846718C, gUnknown_8467288, gUnknown_846708C}, + {1, 0, 0, 1, gUnknown_846737C, gUnknown_8467470, gUnknown_84670AC}, + {1, 0, 0, 2, gUnknown_8467558, gUnknown_846762C, gUnknown_84670CC}, + {1, 0, 0, 3, gUnknown_8467558, gUnknown_846762C, gUnknown_84670EC}, + {1, 0, 0, 4, gUnknown_8467558, gUnknown_846762C, gUnknown_846710C}, + {1, 0, 0, 5, gUnknown_8467558, gUnknown_846762C, gUnknown_846712C}, + {1, 0, 0, 6, gUnknown_8467700, gUnknown_8467934, gUnknown_846714C}, + {1, 0, 0, 7, gUnknown_8467A7C, gUnknown_8467CAC, gUnknown_846716C} +}; bool32 sub_8145654(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_Sub * r6) { -- cgit v1.2.3 From 5151db6054d0704584fdf53e55840e262cde32a4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 2 Dec 2018 17:25:59 -0500 Subject: sub_8146288 --- src/mevent_8145654.c | 50 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c index 578b90b54..4c81cb620 100644 --- a/src/mevent_8145654.c +++ b/src/mevent_8145654.c @@ -48,13 +48,7 @@ struct UnkStruct_203F3C8 /*045C*/ u8 buffer_045C[0x1000]; }; -struct UnkStruct_203F3CC -{ - /*0000*/ u8 filler_0000[0x13a4]; -}; - EWRAM_DATA struct UnkStruct_203F3C8 * gUnknown_203F3C8 = NULL; -EWRAM_DATA struct UnkStruct_203F3CC * gUnknown_203F3CC = NULL; void sub_8145A98(void); void sub_8145D18(u8 whichWindow); @@ -138,11 +132,11 @@ bool32 sub_8145654(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_S return FALSE; gUnknown_203F3C8->unk_0000 = *r5; gUnknown_203F3C8->unk_014C = *r6; - if (gUnknown_203F3C8->unk_0000.unk_08_2 > 7) + if (gUnknown_203F3C8->unk_0000.unk_08_2 >= NELEMS(gUnknown_8467FB8)) gUnknown_203F3C8->unk_0000.unk_08_2 = 0; - if (gUnknown_203F3C8->unk_0000.unk_08_0 > 2) + if (gUnknown_203F3C8->unk_0000.unk_08_0 >= NELEMS(gUnknown_8467070)) gUnknown_203F3C8->unk_0000.unk_08_0 = 0; - if (gUnknown_203F3C8->unk_0000.unk_09 > 7) + if (gUnknown_203F3C8->unk_0000.unk_09 > NELEMS(gUnknown_203F3C8->unk_017D)) gUnknown_203F3C8->unk_0000.unk_09 = 0; gUnknown_203F3C8->unk_0170 = &gUnknown_8467FB8[gUnknown_203F3C8->unk_0000.unk_08_2]; return TRUE; @@ -445,3 +439,41 @@ void sub_81461D8(void) FreeSpritePaletteByTag(0x8000); } } + +struct UnkStruct_8468720 +{ + u8 unk0; + const void * unk4; + const void * unk8; + const void * unkC; +}; + +struct UnkStruct_203F3CC +{ + /*0000*/ struct MEventBuffer_3120_Sub unk_0000; + /*01bc*/ const struct UnkStruct_8468720 * unk_01BC; + /*01c0*/ u8 unk_01C0; + /*01c1*/ u8 unk_01C1; + /*01c2*/ u8 filler_01C2[0x11e2]; +}; + +EWRAM_DATA struct UnkStruct_203F3CC * gUnknown_203F3CC = NULL; + +extern const struct TextColor gUnknown_8468038[2]; +extern const struct UnkStruct_8468720 gUnknown_8468720[8]; +extern const struct ScrollIndicatorArrowPairTemplate gUnknown_8468050; + +bool32 sub_8146288(const struct MEventBuffer_3120_Sub * a0) +{ + if (a0 == NULL) + return FALSE; + gUnknown_203F3CC = AllocZeroed(sizeof(struct UnkStruct_203F3CC)); + if (gUnknown_203F3CC == NULL) + return FALSE; + gUnknown_203F3CC->unk_0000 = *a0; + if (gUnknown_203F3CC->unk_0000.unk_03 >= NELEMS(gUnknown_8468720)) + gUnknown_203F3CC->unk_0000.unk_03 = 0; + gUnknown_203F3CC->unk_01BC = &gUnknown_8468720[gUnknown_203F3CC->unk_0000.unk_03]; + gUnknown_203F3CC->unk_01C1 = 0xFF; + return TRUE; +} -- cgit v1.2.3 From c7f9c8f1a52ca6284892442a76b462d67d23145e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 2 Dec 2018 17:31:54 -0500 Subject: sub_81462EC --- src/mevent_8145654.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src') diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c index 4c81cb620..300a1bf3e 100644 --- a/src/mevent_8145654.c +++ b/src/mevent_8145654.c @@ -477,3 +477,13 @@ bool32 sub_8146288(const struct MEventBuffer_3120_Sub * a0) gUnknown_203F3CC->unk_01C1 = 0xFF; return TRUE; } + +void sub_81462EC(void) +{ + if (gUnknown_203F3CC != NULL) + { + *gUnknown_203F3CC = (struct UnkStruct_203F3CC){}; + Free(gUnknown_203F3CC); + gUnknown_203F3CC = NULL; + } +} -- cgit v1.2.3 From ecc4af703a163336219a87d7b4755da1406c5f2e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 2 Dec 2018 19:01:51 -0500 Subject: Add missing graphics files --- src/mevent_8145654.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c index 300a1bf3e..dc0969630 100644 --- a/src/mevent_8145654.c +++ b/src/mevent_8145654.c @@ -94,7 +94,7 @@ const u16 gUnknown_8467E74[] = INCBIN_U16("data/graphics/mevent/pal_467E74.gbapa const u16 gUnknown_8467E94[] = INCBIN_U16("data/graphics/mevent/pal_467E94.gbapal"); const u16 gUnknown_8467EB4[] = INCBIN_U16("data/graphics/mevent/pal_467EB4.gbapal"); const u16 gUnknown_8467ED4[] = INCBIN_U16("data/graphics/mevent/pal_467ED4.gbapal"); -const u8 gUnknown_8467EF4[] = INCBIN_U8("data/graphics/mevent/gfx_467F58.4bpp.lz"); +const u8 gUnknown_8467EF4[] = INCBIN_U8("data/graphics/mevent/gfx_467EF4.4bpp.lz"); const struct CompressedSpriteSheet gUnknown_8467F58 = { gUnknown_8467EF4, 0x100, 0x8000 -- cgit v1.2.3 From 9ff5f62747589e403bc8bf215f8ebe3f5ba82353 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 3 Dec 2018 08:28:05 -0500 Subject: sub_8146318 --- src/mevent_8145654.c | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 89 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c index dc0969630..3d7f6d3ca 100644 --- a/src/mevent_8145654.c +++ b/src/mevent_8145654.c @@ -1,12 +1,14 @@ #include "global.h" #include "constants/species.h" #include "bg.h" +#include "gpu_regs.h" #include "palette.h" #include "decompress.h" #include "malloc.h" #include "menu.h" #include "pokemon_icon.h" #include "mystery_gift_menu.h" +#include "menu_indicators.h" #include "string_util.h" #include "mevent.h" @@ -452,14 +454,24 @@ struct UnkStruct_203F3CC { /*0000*/ struct MEventBuffer_3120_Sub unk_0000; /*01bc*/ const struct UnkStruct_8468720 * unk_01BC; - /*01c0*/ u8 unk_01C0; + /*01c0*/ u8 unk_01C0_0:1; + /*01c0*/ u8 unk_01C0_1:7; /*01c1*/ u8 unk_01C1; - /*01c2*/ u8 filler_01C2[0x11e2]; + /*01c2*/ u8 filler_01C2[4]; + /*01c6*/ u16 unk_01C6; + /*01c8*/ u16 unk_01C8[2]; + /*01cc*/ u8 filler_01CC[0x1C8]; + /*0394*/ struct ScrollIndicatorArrowPairTemplate unk_0394; + /*03a4*/ u8 buffer_03A4[0x1000]; }; EWRAM_DATA struct UnkStruct_203F3CC * gUnknown_203F3CC = NULL; +void sub_8146980(void); +void sub_8146A30(void); + extern const struct TextColor gUnknown_8468038[2]; +extern const struct WindowTemplate gUnknown_8468040[2]; extern const struct UnkStruct_8468720 gUnknown_8468720[8]; extern const struct ScrollIndicatorArrowPairTemplate gUnknown_8468050; @@ -487,3 +499,78 @@ void sub_81462EC(void) gUnknown_203F3CC = NULL; } } + +s32 sub_8146318(void) +{ + if (gUnknown_203F3CC == NULL) + return -1; + + switch (gUnknown_203F3CC->unk_01C0_1) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + break; + case 1: + if (UpdatePaletteFade()) + return 0; + ChangeBgY(0, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgY(2, 0, 0); + ChangeBgY(3, 0, 0); + SetGpuReg(REG_OFFSET_WIN0H, 0xF0); + SetGpuReg(REG_OFFSET_WIN0V, 0x1A98); + SetGpuReg(REG_OFFSET_WININ, 0x1F); + SetGpuReg(REG_OFFSET_WINOUT, 0x1B); + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON); + break; + case 2: + FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 0, 30, 20); + FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20); + FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 20); + FillBgTilemapBufferRect_Palette0(3, 0x000, 0, 0, 30, 20); + CopyBgTilemapBufferToVram(0); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(3); + decompress_and_copy_tile_data_to_vram(3, gUnknown_203F3CC->unk_01BC->unk4, 0, 8, 0); + gUnknown_203F3CC->unk_01C8[0] = AddWindow(&gUnknown_8468040[0]); + gUnknown_203F3CC->unk_01C8[1] = AddWindow(&gUnknown_8468040[1]); + break; + case 3: + if (free_temp_tile_data_buffers_if_possible()) + return 0; + gPaletteFade.bufferTransferDisabled = TRUE; + LoadPalette(gUnknown_203F3CC->unk_01BC->unkC, 0x10, 0x20); + LZ77UnCompWram(gUnknown_203F3CC->unk_01BC->unk8, gUnknown_203F3CC->buffer_03A4); + CopyRectToBgTilemapBufferRect(1, gUnknown_203F3CC->buffer_03A4, 0, 0, 30, 3, 0, 0, 30, 3, 1, 8, 0); + CopyRectToBgTilemapBufferRect(3, gUnknown_203F3CC->buffer_03A4, 0, 3, 30, 23, 0, 3, 30, 23, 1, 8, 0); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(3); + break; + case 4: + sub_8146980(); + break; + case 5: + sub_8146A30(); + CopyBgTilemapBufferToVram(0); + CopyBgTilemapBufferToVram(2); + break; + case 6: + ShowBg(1); + ShowBg(2); + ShowBg(3); + gPaletteFade.bufferTransferDisabled = FALSE; + gUnknown_203F3CC->unk_01C1 = AddScrollIndicatorArrowPair(&gUnknown_203F3CC->unk_0394, &gUnknown_203F3CC->unk_01C6); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + UpdatePaletteFade(); + break; + default: + if (UpdatePaletteFade()) + return 0; + gUnknown_203F3CC->unk_01C0_1 = 0; + return 1; + } + + ++gUnknown_203F3CC->unk_01C0_1; + return 0; +} -- cgit v1.2.3 From 208c6054475030ce48482c34647bd5728172b074 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 3 Dec 2018 08:41:06 -0500 Subject: sub_8146604 --- src/mevent_8145654.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) (limited to 'src') diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c index 3d7f6d3ca..5161d5380 100644 --- a/src/mevent_8145654.c +++ b/src/mevent_8145654.c @@ -10,6 +10,7 @@ #include "mystery_gift_menu.h" #include "menu_indicators.h" #include "string_util.h" +#include "link_rfu.h" #include "mevent.h" struct UnkStruct_8467FB8 @@ -574,3 +575,66 @@ s32 sub_8146318(void) ++gUnknown_203F3CC->unk_01C0_1; return 0; } + +s32 sub_8146604(bool32 flag) +{ + if (gUnknown_203F3CC == NULL) + return -1; + switch (gUnknown_203F3CC->unk_01C0_1) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + break; + case 1: + if (UpdatePaletteFade()) + return 0; + ChangeBgY(2, 0, 0); + SetGpuReg(REG_OFFSET_WIN0H, 0); + SetGpuReg(REG_OFFSET_WIN0V, 0); + SetGpuReg(REG_OFFSET_WININ, 0); + SetGpuReg(REG_OFFSET_WINOUT, 0); + ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON); + break; + case 2: + FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 0, 30, 20); + FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 30, 20); + FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 30, 24); + FillBgTilemapBufferRect_Palette0(3, 0x000, 0, 0, 30, 24); + CopyBgTilemapBufferToVram(0); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(3); + break; + case 3: + HideBg(1); + HideBg(2); + RemoveWindow(gUnknown_203F3CC->unk_01C8[1]); + RemoveWindow(gUnknown_203F3CC->unk_01C8[0]); + break; + case 4: + ChangeBgY(2, 0, 0); + ChangeBgY(3, 0, 0); + if (gUnknown_203F3CC->unk_01C1 != 0xFF) + { + RemoveScrollIndicatorArrowPair(gUnknown_203F3CC->unk_01C1); + gUnknown_203F3CC->unk_01C1 = 0xFF; + } + break; + case 5: + sub_8142344(gUnknown_203F3B8, flag); + break; + case 6: + sub_8142420(); + CopyBgTilemapBufferToVram(0); + CopyBgTilemapBufferToVram(3); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + break; + default: + if (UpdatePaletteFade()) + return 0; + gUnknown_203F3CC->unk_01C0_1 = 0; + return 1; + } + ++gUnknown_203F3CC->unk_01C0_1; + return 0; +} -- cgit v1.2.3 From 3700b24a316d4c053e719c97642e32e3b1b297ca Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 3 Dec 2018 08:44:24 -0500 Subject: through sub_8146834 --- src/mevent_8145654.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src') diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c index 5161d5380..04fac680e 100644 --- a/src/mevent_8145654.c +++ b/src/mevent_8145654.c @@ -638,3 +638,23 @@ s32 sub_8146604(bool32 flag) ++gUnknown_203F3CC->unk_01C0_1; return 0; } + +void sub_81467EC(void) +{ + if (!gUnknown_203F3CC->unk_01C0_0 && gUnknown_203F3CC->unk_01C1 != 0xFF) + { + RemoveScrollIndicatorArrowPair(gUnknown_203F3CC->unk_01C1); + gUnknown_203F3CC->unk_01C1 = 0xFF; + gUnknown_203F3CC->unk_01C0_0 = TRUE; + } +} + + +void sub_8146834(void) +{ + if (gUnknown_203F3CC->unk_01C0_0) + { + gUnknown_203F3CC->unk_01C1 = AddScrollIndicatorArrowPair(&gUnknown_203F3CC->unk_0394, &gUnknown_203F3CC->unk_01C6); + gUnknown_203F3CC->unk_01C0_0 = FALSE; + } +} \ No newline at end of file -- cgit v1.2.3 From 0f486fec545ed2583b478033410b648329fc98f1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 3 Dec 2018 09:43:03 -0500 Subject: sub_8146884 --- src/mevent_8145654.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 47 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c index 04fac680e..443aa0b76 100644 --- a/src/mevent_8145654.c +++ b/src/mevent_8145654.c @@ -456,9 +456,13 @@ struct UnkStruct_203F3CC /*0000*/ struct MEventBuffer_3120_Sub unk_0000; /*01bc*/ const struct UnkStruct_8468720 * unk_01BC; /*01c0*/ u8 unk_01C0_0:1; - /*01c0*/ u8 unk_01C0_1:7; + u8 unk_01C0_1:7; /*01c1*/ u8 unk_01C1; - /*01c2*/ u8 filler_01C2[4]; + /*01c2*/ u8 unk_01C2_0:1; + u8 unk_01C2_1:7; + /*01c3*/ u8 unk_01C3_0:1; + u8 unk_01C3_1:7; + /*01c4*/ u16 unk_01C4; /*01c6*/ u16 unk_01C6; /*01c8*/ u16 unk_01C8[2]; /*01cc*/ u8 filler_01CC[0x1C8]; @@ -470,6 +474,7 @@ EWRAM_DATA struct UnkStruct_203F3CC * gUnknown_203F3CC = NULL; void sub_8146980(void); void sub_8146A30(void); +void sub_8146B58(void); extern const struct TextColor gUnknown_8468038[2]; extern const struct WindowTemplate gUnknown_8468040[2]; @@ -657,4 +662,43 @@ void sub_8146834(void) gUnknown_203F3CC->unk_01C1 = AddScrollIndicatorArrowPair(&gUnknown_203F3CC->unk_0394, &gUnknown_203F3CC->unk_01C6); gUnknown_203F3CC->unk_01C0_0 = FALSE; } -} \ No newline at end of file +} + +u8 sub_8146884(u16 input) +{ + if (gUnknown_203F3CC->unk_01C2_0) + { + sub_8146B58(); + return 0xFF; + } + switch (input) + { + case A_BUTTON: + return 0; + case B_BUTTON: + return 1; + case DPAD_UP: + if (gUnknown_203F3CC->unk_01C6 == 0) + return 0xFF; + if (gUnknown_203F3CC->unk_01C0_0) + return 0xFF; + gUnknown_203F3CC->unk_01C3_0 = FALSE; + break; + case DPAD_DOWN: + if (gUnknown_203F3CC->unk_01C6 == gUnknown_203F3CC->unk_01C4) + return 0xFF; + if (gUnknown_203F3CC->unk_01C0_0) + return 0xFF; + gUnknown_203F3CC->unk_01C3_0 = TRUE; + break; + default: + return 0xFF; + } + gUnknown_203F3CC->unk_01C2_0 = TRUE; + gUnknown_203F3CC->unk_01C2_1 = 2; + gUnknown_203F3CC->unk_01C3_1 = 0; + if (gUnknown_203F3CC->unk_01C3_0 == FALSE) + return 2; + else + return 3; +} -- cgit v1.2.3 From 59b87e9d2af887401736d8fd06d3a9266e3983e5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 3 Dec 2018 10:09:28 -0500 Subject: sub_8146980 --- src/mevent_8145654.c | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c index 443aa0b76..0be18ad8f 100644 --- a/src/mevent_8145654.c +++ b/src/mevent_8145654.c @@ -465,7 +465,9 @@ struct UnkStruct_203F3CC /*01c4*/ u16 unk_01C4; /*01c6*/ u16 unk_01C6; /*01c8*/ u16 unk_01C8[2]; - /*01cc*/ u8 filler_01CC[0x1C8]; + /*01cc*/ u8 filler_01CC[2]; + /*01ce*/ u8 unk_01CE[41]; + /*01f7*/ u8 unk_01F7[10][41]; /*0394*/ struct ScrollIndicatorArrowPairTemplate unk_0394; /*03a4*/ u8 buffer_03A4[0x1000]; }; @@ -476,10 +478,19 @@ void sub_8146980(void); void sub_8146A30(void); void sub_8146B58(void); -extern const struct TextColor gUnknown_8468038[2]; -extern const struct WindowTemplate gUnknown_8468040[2]; +const struct TextColor gUnknown_8468038[] = { + {0, 2, 3}, + {0, 1, 2} +}; +const struct WindowTemplate gUnknown_8468040[] = { + {0, 1, 0, 28, 3, 15, 0x000}, + {2, 1, 3, 28, 20, 15, 0x000} +}; +const struct ScrollIndicatorArrowPairTemplate gUnknown_8468050 = { + 0x02, 0xe8, 0x18, 0x03, 0xe8, 0x98, + 0x0000, 0x0002, 0x1000, 0x1000, 0x0, 0x000 +}; extern const struct UnkStruct_8468720 gUnknown_8468720[8]; -extern const struct ScrollIndicatorArrowPairTemplate gUnknown_8468050; bool32 sub_8146288(const struct MEventBuffer_3120_Sub * a0) { @@ -702,3 +713,19 @@ u8 sub_8146884(u16 input) else return 3; } + +void sub_8146980(void) +{ + u8 i = 0; + memcpy(gUnknown_203F3CC->unk_01CE, gUnknown_203F3CC->unk_0000.unk_04, 40); + gUnknown_203F3CC->unk_01CE[40] = EOS; + for (i = 0; i < 10; ++i) + { + memcpy(gUnknown_203F3CC->unk_01F7[i], gUnknown_203F3CC->unk_0000.unk_2C[i], 40); + gUnknown_203F3CC->unk_01F7[i][40] = EOS; + if (i > 7 && gUnknown_203F3CC->unk_01F7[i][0] != EOS) + ++gUnknown_203F3CC->unk_01C4; + } + gUnknown_203F3CC->unk_0394 = gUnknown_8468050; + gUnknown_203F3CC->unk_0394.unk_08 = gUnknown_203F3CC->unk_01C4; +} -- cgit v1.2.3 From c500754d6bfbfc1ae0d67b89e725bcb0014de892 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 3 Dec 2018 10:40:38 -0500 Subject: Finish decomp and dism of mevent_8145654 --- src/mevent_8145654.c | 90 ++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 76 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c index 0be18ad8f..c39d76f25 100644 --- a/src/mevent_8145654.c +++ b/src/mevent_8145654.c @@ -443,18 +443,10 @@ void sub_81461D8(void) } } -struct UnkStruct_8468720 -{ - u8 unk0; - const void * unk4; - const void * unk8; - const void * unkC; -}; - struct UnkStruct_203F3CC { /*0000*/ struct MEventBuffer_3120_Sub unk_0000; - /*01bc*/ const struct UnkStruct_8468720 * unk_01BC; + /*01bc*/ const struct UnkStruct_8467FB8 * unk_01BC; /*01c0*/ u8 unk_01C0_0:1; u8 unk_01C0_1:7; /*01c1*/ u8 unk_01C1; @@ -490,7 +482,31 @@ const struct ScrollIndicatorArrowPairTemplate gUnknown_8468050 = { 0x02, 0xe8, 0x18, 0x03, 0xe8, 0x98, 0x0000, 0x0002, 0x1000, 0x1000, 0x0, 0x000 }; -extern const struct UnkStruct_8468720 gUnknown_8468720[8]; + +const u16 gUnknown_8468060[] = INCBIN_U16("data/graphics/mevent/pal_468060.gbapal"); +const u16 gUnknown_8468080[] = INCBIN_U16("data/graphics/mevent/pal_468080.gbapal"); +const u16 gUnknown_84680A0[] = INCBIN_U16("data/graphics/mevent/pal_4680A0.gbapal"); +const u8 gUnknown_84680C0[] = INCBIN_U8("data/graphics/mevent/gfx_4680C0.4bpp.lz"); +const u8 gUnknown_8468140[] = INCBIN_U8("data/graphics/mevent/tilemap_468140.bin.lz"); +const u8 gUnknown_846821C[] = INCBIN_U8("data/graphics/mevent/gfx_46821C.4bpp.lz"); +const u8 gUnknown_846824C[] = INCBIN_U8("data/graphics/mevent/tilemap_46824C.bin.lz"); +const u8 gUnknown_846830C[] = INCBIN_U8("data/graphics/mevent/gfx_46830C.4bpp.lz"); +const u8 gUnknown_846837C[] = INCBIN_U8("data/graphics/mevent/tilemap_46837C.bin.lz"); +const u8 gUnknown_8468448[] = INCBIN_U8("data/graphics/mevent/gfx_468448.4bpp.lz"); +const u8 gUnknown_84684D8[] = INCBIN_U8("data/graphics/mevent/tilemap_4684D8.bin.lz"); +const u8 gUnknown_84685B4[] = INCBIN_U8("data/graphics/mevent/gfx_4685B4.4bpp.lz"); +const u8 gUnknown_8468644[] = INCBIN_U8("data/graphics/mevent/tilemap_468644.bin.lz"); + +const struct UnkStruct_8467FB8 gUnknown_8468720[] = { + {1, 0, 0, 0, gUnknown_84680C0, gUnknown_8468140, gUnknown_8468060}, + {1, 0, 0, 0, gUnknown_846821C, gUnknown_846824C, gUnknown_84670AC}, + {1, 0, 0, 0, gUnknown_846830C, gUnknown_846837C, gUnknown_84670CC}, + {1, 0, 0, 0, gUnknown_846830C, gUnknown_846837C, gUnknown_84670EC}, + {1, 0, 0, 0, gUnknown_846830C, gUnknown_846837C, gUnknown_846710C}, + {1, 0, 0, 0, gUnknown_846830C, gUnknown_846837C, gUnknown_846712C}, + {1, 0, 0, 0, gUnknown_8468448, gUnknown_84684D8, gUnknown_8468080}, + {1, 0, 0, 0, gUnknown_84685B4, gUnknown_8468644, gUnknown_84680A0} +}; bool32 sub_8146288(const struct MEventBuffer_3120_Sub * a0) { @@ -549,7 +565,7 @@ s32 sub_8146318(void) CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(3); - decompress_and_copy_tile_data_to_vram(3, gUnknown_203F3CC->unk_01BC->unk4, 0, 8, 0); + decompress_and_copy_tile_data_to_vram(3, gUnknown_203F3CC->unk_01BC->tiles, 0, 8, 0); gUnknown_203F3CC->unk_01C8[0] = AddWindow(&gUnknown_8468040[0]); gUnknown_203F3CC->unk_01C8[1] = AddWindow(&gUnknown_8468040[1]); break; @@ -557,8 +573,8 @@ s32 sub_8146318(void) if (free_temp_tile_data_buffers_if_possible()) return 0; gPaletteFade.bufferTransferDisabled = TRUE; - LoadPalette(gUnknown_203F3CC->unk_01BC->unkC, 0x10, 0x20); - LZ77UnCompWram(gUnknown_203F3CC->unk_01BC->unk8, gUnknown_203F3CC->buffer_03A4); + LoadPalette(gUnknown_203F3CC->unk_01BC->pal, 0x10, 0x20); + LZ77UnCompWram(gUnknown_203F3CC->unk_01BC->map, gUnknown_203F3CC->buffer_03A4); CopyRectToBgTilemapBufferRect(1, gUnknown_203F3CC->buffer_03A4, 0, 0, 30, 3, 0, 0, 30, 3, 1, 8, 0); CopyRectToBgTilemapBufferRect(3, gUnknown_203F3CC->buffer_03A4, 0, 3, 30, 23, 0, 3, 30, 23, 1, 8, 0); CopyBgTilemapBufferToVram(1); @@ -719,7 +735,7 @@ void sub_8146980(void) u8 i = 0; memcpy(gUnknown_203F3CC->unk_01CE, gUnknown_203F3CC->unk_0000.unk_04, 40); gUnknown_203F3CC->unk_01CE[40] = EOS; - for (i = 0; i < 10; ++i) + for (; i < 10; ++i) { memcpy(gUnknown_203F3CC->unk_01F7[i], gUnknown_203F3CC->unk_0000.unk_2C[i], 40); gUnknown_203F3CC->unk_01F7[i][40] = EOS; @@ -729,3 +745,49 @@ void sub_8146980(void) gUnknown_203F3CC->unk_0394 = gUnknown_8468050; gUnknown_203F3CC->unk_0394.unk_08 = gUnknown_203F3CC->unk_01C4; } + +void sub_8146A30(void) +{ + u8 i = 0; + s32 x; + PutWindowTilemap(gUnknown_203F3CC->unk_01C8[0]); + PutWindowTilemap(gUnknown_203F3CC->unk_01C8[1]); + FillWindowPixelBuffer(gUnknown_203F3CC->unk_01C8[0], 0); + FillWindowPixelBuffer(gUnknown_203F3CC->unk_01C8[1], 0); + x = (0xe0 - GetStringWidth(3, gUnknown_203F3CC->unk_01CE, GetFontAttribute(3, 2))) / 2; + if (x < 0) + x = 0; + box_print(gUnknown_203F3CC->unk_01C8[0], 3, x, 6, &gUnknown_8468038[gUnknown_203F3CC->unk_01BC->textPal1], 0, gUnknown_203F3CC->unk_01CE); + for (; i < 10; ++i) + { + box_print(gUnknown_203F3CC->unk_01C8[1], 3, 0, 16 * i + 2, &gUnknown_8468038[gUnknown_203F3CC->unk_01BC->textPal2], 0, gUnknown_203F3CC->unk_01F7[i]); + } + CopyWindowToVram(gUnknown_203F3CC->unk_01C8[0], 3); + CopyWindowToVram(gUnknown_203F3CC->unk_01C8[1], 3); +} + +void sub_8146B58(void) +{ + u16 r4 = gUnknown_203F3CC->unk_01C2_1; + r4 <<= 8; + if (gUnknown_203F3CC->unk_01C3_0) + { + ChangeBgY(2, r4, 1); + ChangeBgY(3, r4, 1); + } + else + { + ChangeBgY(2, r4, 2); + ChangeBgY(3, r4, 2); + } + gUnknown_203F3CC->unk_01C3_1 += gUnknown_203F3CC->unk_01C2_1; + if (gUnknown_203F3CC->unk_01C3_1 > 15) + { + if (gUnknown_203F3CC->unk_01C3_0) + ++gUnknown_203F3CC->unk_01C6; + else + --gUnknown_203F3CC->unk_01C6; + gUnknown_203F3CC->unk_01C2_0 = FALSE; + gUnknown_203F3CC->unk_01C3_1 = 0; + } +} -- cgit v1.2.3 From 931f19d2ead516a5fb5a2a15784391ea02bdbbc3 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 3 Dec 2018 20:21:35 -0500 Subject: Port mystery_event_script --- src/mevent_server.c | 2 +- src/mystery_event_script.c | 322 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 323 insertions(+), 1 deletion(-) create mode 100644 src/mystery_event_script.c (limited to 'src') diff --git a/src/mevent_server.c b/src/mevent_server.c index d5a9a0c0e..5e384ae0b 100644 --- a/src/mevent_server.c +++ b/src/mevent_server.c @@ -227,7 +227,7 @@ static u32 ish_mainseq_4(struct mevent_srv_ish * svr) break; case 18: memcpy(gSaveBlock2Ptr->unk_4A0, svr->recvBuffer, 0xbc); - sub_80E7490(); + ValidateEReaderTrainer(); break; case 21: memcpy(gDecompressionBuffer, svr->recvBuffer, ME_SEND_BUF_SIZE); diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c new file mode 100644 index 000000000..c9dc6ae81 --- /dev/null +++ b/src/mystery_event_script.c @@ -0,0 +1,322 @@ +#include "global.h" +#include "berry.h" +#include "battle_tower.h" +#include "easy_chat.h" +#include "event_data.h" +#include "mail.h" +#include "mail_data.h" +#include "mystery_event_script.h" +#include "pokedex.h" +#include "pokemon.h" +#include "pokemon_size_record.h" +#include "script.h" +#include "constants/species.h" +#include "strings.h" +#include "string_util.h" +#include "text.h" +#include "util.h" +#include "mystery_event_msg.h" +#include "pokemon_storage_system.h" + +extern ScrCmdFunc gMysteryEventScriptCmdTable[]; +extern ScrCmdFunc gMysteryEventScriptCmdTableEnd[]; + +#define LANGUAGE_MASK 0x1 +#define VERSION_MASK 0x1 + +EWRAM_DATA static struct ScriptContext sMysteryEventScriptContext = {0}; + +static bool32 CheckCompatibility(u16 a1, u32 a2, u16 a3, u32 a4) +{ + if (!(a1 & LANGUAGE_MASK)) + return FALSE; + + if (!(a2 & LANGUAGE_MASK)) + return FALSE; + + if (!(a3 & 0x1)) + return FALSE; + + if (!(a4 & VERSION_MASK)) + return FALSE; + + return TRUE; +} + +static void SetIncompatible(void) +{ + StringExpandPlaceholders(gStringVar4, gText_MysteryGiftCantBeUsed); + SetMysteryEventScriptStatus(3); +} + +static void InitMysteryEventScript(struct ScriptContext *ctx, u8 *script) +{ + InitScriptContext(ctx, gMysteryEventScriptCmdTable, gMysteryEventScriptCmdTableEnd); + SetupBytecodeScript(ctx, script); + ctx->data[0] = (u32)script; + ctx->data[1] = 0; + ctx->data[2] = 0; + ctx->data[3] = 0; +} + +static bool32 RunMysteryEventScriptCommand(struct ScriptContext *ctx) +{ + if (RunScriptCommand(ctx) && ctx->data[3]) + return TRUE; + else + return FALSE; +} + +void sub_80DA89C(u8 *script) +{ + InitMysteryEventScript(&sMysteryEventScriptContext, script); +} + +bool32 sub_80DA8B0(u32 *a0) +{ + bool32 ret = RunMysteryEventScriptCommand(&sMysteryEventScriptContext); + *a0 = sMysteryEventScriptContext.data[2]; + + return ret; +} + +u32 RunMysteryEventScript(u8 *script) +{ + u32 ret; + sub_80DA89C(script); + while (sub_80DA8B0(&ret)); + + return ret; +} + +void SetMysteryEventScriptStatus(u32 val) +{ + sMysteryEventScriptContext.data[2] = val; +} + +bool8 MEScrCmd_end(struct ScriptContext *ctx) +{ + StopScript(ctx); + return TRUE; +} + +bool8 MEScrCmd_checkcompat(struct ScriptContext *ctx) +{ + u16 v1; + u32 v2; + u16 v3; + u32 v4; + + ctx->data[1] = ScriptReadWord(ctx); + v1 = ScriptReadHalfword(ctx); + v2 = ScriptReadWord(ctx); + v3 = ScriptReadHalfword(ctx); + v4 = ScriptReadWord(ctx); + + if (CheckCompatibility(v1, v2, v3, v4) == TRUE) + ctx->data[3] = 1; + else + SetIncompatible(); + + return TRUE; +} + +bool8 MEScrCmd_nop(struct ScriptContext *ctx) +{ + return FALSE; +} + +bool8 MEScrCmd_setstatus(struct ScriptContext *ctx) +{ + u8 value = ScriptReadByte(ctx); + ctx->data[2] = value; + return FALSE; +} + +bool8 MEScrCmd_setmsg(struct ScriptContext *ctx) +{ + u8 value = ScriptReadByte(ctx); + u8 *str = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + if (value == 0xFF || value == ctx->data[2]) + StringExpandPlaceholders(gStringVar4, str); + return FALSE; +} + +bool8 MEScrCmd_runscript(struct ScriptContext *ctx) +{ + u8 *script = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + ScriptContext2_RunNewScript(script); + return FALSE; +} + +bool8 MEScrCmd_setenigmaberry(struct ScriptContext *ctx) +{ + u8 *str; + const u8 *message; + bool32 haveBerry = IsEnigmaBerryValid(); + u8 *berry = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + StringCopyN(gStringVar1, gSaveBlock1Ptr->enigmaBerry.berry.name, BERRY_NAME_LENGTH + 1); + SetEnigmaBerry(berry); + StringCopyN(gStringVar2, gSaveBlock1Ptr->enigmaBerry.berry.name, BERRY_NAME_LENGTH + 1); + + if (!haveBerry) + { + str = gStringVar4; + message = gText_MysteryGiftBerry; + } + else if (StringCompare(gStringVar1, gStringVar2)) + { + str = gStringVar4; + message = gText_MysteryGiftBerryTransform; + } + else + { + str = gStringVar4; + message = gText_MysteryGiftBerryObtained; + } + + StringExpandPlaceholders(str, message); + + ctx->data[2] = 2; + + if (IsEnigmaBerryValid() == TRUE) + VarSet(VAR_ENIGMA_BERRY_AVAILABLE, 1); + else + ctx->data[2] = 1; + + return FALSE; +} + +bool8 MEScrCmd_giveribbon(struct ScriptContext *ctx) +{ + u8 index = ScriptReadByte(ctx); + u8 ribbonId = ScriptReadByte(ctx); + GiveGiftRibbonToParty(index, ribbonId); + StringExpandPlaceholders(gStringVar4, gText_MysteryGiftSpecialRibbon); + ctx->data[2] = 2; + return FALSE; +} + +bool8 MEScrCmd_initramscript(struct ScriptContext *ctx) +{ + u8 mapGroup = ScriptReadByte(ctx); + u8 mapNum = ScriptReadByte(ctx); + u8 objectId = ScriptReadByte(ctx); + u8 *script = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + u8 *scriptEnd = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + InitRamScript(script, scriptEnd - script, mapGroup, mapNum, objectId); + return FALSE; +} + +bool8 MEScrCmd_givenationaldex(struct ScriptContext *ctx) +{ + EnableNationalPokedex(); + StringExpandPlaceholders(gStringVar4, gText_MysteryGiftNationalDex); + ctx->data[2] = 2; + return FALSE; +} + +bool8 MEScrCmd_addrareword(struct ScriptContext *ctx) +{ + EnableRareWord(ScriptReadByte(ctx)); + StringExpandPlaceholders(gStringVar4, gText_MysteryGiftRareWord); + ctx->data[2] = 2; + return FALSE; +} + +bool8 MEScrCmd_setrecordmixinggift(struct ScriptContext *ctx) +{ + SetIncompatible(); + ctx->data[3] = 0; + return TRUE; +} + +bool8 MEScrCmd_givepokemon(struct ScriptContext *ctx) +{ + struct MailStruct mail; + struct Pokemon pokemon; + u16 species; + u16 heldItem; + u32 data = ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]; + void *pokemonPtr = (void *)data; + void *mailPtr = (void *)(data + sizeof(struct Pokemon)); + + pokemon = *(struct Pokemon *)pokemonPtr; + species = GetMonData(&pokemon, MON_DATA_SPECIES2); + + if (species == SPECIES_EGG) + StringCopyN(gStringVar1, gText_EggNickname, POKEMON_NAME_LENGTH + 1); + else + StringCopyN(gStringVar1, gText_Pokemon, POKEMON_NAME_LENGTH + 1); + + if (gPlayerPartyCount == PARTY_SIZE) + { + StringExpandPlaceholders(gStringVar4, gText_MysteryGiftFullParty); + ctx->data[2] = 3; + } + else + { + memcpy(&gPlayerParty[5], pokemonPtr, sizeof(struct Pokemon)); + memcpy(&mail, mailPtr, sizeof(struct MailStruct)); + + if (species != SPECIES_EGG) + { + u16 pokedexNum = SpeciesToNationalPokedexNum(species); + GetSetPokedexFlag(pokedexNum, FLAG_SET_SEEN); + GetSetPokedexFlag(pokedexNum, FLAG_SET_CAUGHT); + } + + heldItem = GetMonData(&gPlayerParty[5], MON_DATA_HELD_ITEM); + if (itemid_is_mail(heldItem)) + GiveMailToMon2(&gPlayerParty[5], &mail); + CompactPartySlots(); + CalculatePlayerPartyCount(); + StringExpandPlaceholders(gStringVar4, gText_MysteryGiftSentOver); + ctx->data[2] = 2; + } + + return FALSE; +} + +bool8 MEScrCmd_addtrainer(struct ScriptContext *ctx) +{ + u32 data = ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]; + memcpy(gSaveBlock2Ptr->unk_4A0, (void *)data, 0xBC); + ValidateEReaderTrainer(); + StringExpandPlaceholders(gStringVar4, gText_MysteryGiftNewTrainer); + ctx->data[2] = 2; + return FALSE; +} + +bool8 MEScrCmd_enableresetrtc(struct ScriptContext *ctx) +{ + SetIncompatible(); + ctx->data[3] = 0; + return TRUE; +} + +bool8 MEScrCmd_checksum(struct ScriptContext *ctx) +{ + int checksum = ScriptReadWord(ctx); + u8 *data = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + u8 *dataEnd = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + if (checksum != CalcByteArraySum(data, dataEnd - data)) + { + ctx->data[3] = 0; + ctx->data[2] = 1; + } + return TRUE; +} + +bool8 MEScrCmd_crc(struct ScriptContext *ctx) +{ + int crc = ScriptReadWord(ctx); + u8 *data = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + u8 *dataEnd = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); + if (crc != CalcCRC16(data, dataEnd - data)) + { + ctx->data[3] = 0; + ctx->data[2] = 1; + } + return TRUE; +} -- cgit v1.2.3 From 089703dc086d03081f80aa90c2978a0f091d7d77 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 3 Dec 2018 21:15:42 -0500 Subject: Decompile (partially) mystery_event_msg --- src/mystery_event_msg.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 src/mystery_event_msg.c (limited to 'src') diff --git a/src/mystery_event_msg.c b/src/mystery_event_msg.c new file mode 100644 index 000000000..a21750b7a --- /dev/null +++ b/src/mystery_event_msg.c @@ -0,0 +1,13 @@ +#include "global.h" + +const u8 gText_MysteryGiftBerry[] = _("Obtained a {STR_VAR_2} BERRY!\nDad has it at PETALBURG GYM."); +const u8 gText_MysteryGiftBerryTransform[] = _("The {STR_VAR_1} BERRY transformed into\none {STR_VAR_2} BERRY."); +const u8 gText_MysteryGiftBerryObtained[] = _("The {STR_VAR_1} BERRY has already been\nobtained."); +const u8 gText_MysteryGiftSpecialRibbon[] = _("A special RIBBON was awarded to\nyour party POKéMON."); +const u8 gText_MysteryGiftNationalDex[] = _("The POKéDEX has been upgraded\nwith the NATIONAL MODE."); +const u8 gText_MysteryGiftRareWord[] = _("A rare word has been added."); +const u8 gText_MysteryGiftSentOver[] = _("{STR_VAR_1} was sent over!"); +const u8 gText_MysteryGiftFullParty[] = _("Your party is full.\n{STR_VAR_1} could not be sent over."); +const u8 gText_MysteryGiftNewTrainer[] = _("A new TRAINER has arrived in\nHOENN."); +const u8 gText_MysteryGiftNewAdversaryInBattleTower[] = _("バトルタワーに あらたな\nたいせんしゃが あらわれた!"); +const u8 gText_MysteryGiftCantBeUsed[] = _("This data can’t be used in\nthis version."); -- cgit v1.2.3 From c14c6d36f8a60fd561f7c24339b575807bc6066f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 5 Dec 2018 08:43:55 -0500 Subject: Rename most special vars --- src/fame_checker.c | 10 +++++----- src/menews_jisan.c | 2 +- src/quest_log.c | 8 ++++---- src/vs_seeker.c | 10 +++++----- 4 files changed, 15 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/fame_checker.c b/src/fame_checker.c index ed38406cb..bbbe02c58 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -1038,9 +1038,9 @@ static void FCSetup_ResetBGCoords(void) void SetFlavorTextFlagFromSpecialVars(void) { - if (gUnknown_20370C0 < NUM_FAMECHECKER_PERSONS && gSpecialVar_0x8005 < 6) + if (gSpecialVar_0x8004 < NUM_FAMECHECKER_PERSONS && gSpecialVar_0x8005 < 6) { - gSaveBlock1Ptr->fameChecker[gUnknown_20370C0].flavorTextFlags |= (1 << gSpecialVar_0x8005); + gSaveBlock1Ptr->fameChecker[gSpecialVar_0x8004].flavorTextFlags |= (1 << gSpecialVar_0x8005); gSpecialVar_0x8005 = FCPICKSTATE_SILHOUETTE; UpdatePickStateFromSpecialVar8005(); } @@ -1048,15 +1048,15 @@ void SetFlavorTextFlagFromSpecialVars(void) void UpdatePickStateFromSpecialVar8005(void) { - if (gUnknown_20370C0 < NUM_FAMECHECKER_PERSONS && gSpecialVar_0x8005 < 3) + if (gSpecialVar_0x8004 < NUM_FAMECHECKER_PERSONS && gSpecialVar_0x8005 < 3) { if (gSpecialVar_0x8005 == FCPICKSTATE_NO_DRAW) return; if ( gSpecialVar_0x8005 == FCPICKSTATE_SILHOUETTE - && gSaveBlock1Ptr->fameChecker[gUnknown_20370C0].pickState == FCPICKSTATE_COLORED + && gSaveBlock1Ptr->fameChecker[gSpecialVar_0x8004].pickState == FCPICKSTATE_COLORED ) return; - gSaveBlock1Ptr->fameChecker[gUnknown_20370C0].pickState = gSpecialVar_0x8005; + gSaveBlock1Ptr->fameChecker[gSpecialVar_0x8004].pickState = gSpecialVar_0x8005; } } diff --git a/src/menews_jisan.c b/src/menews_jisan.c index 13c787df7..b4fe080bf 100644 --- a/src/menews_jisan.c +++ b/src/menews_jisan.c @@ -107,7 +107,7 @@ void sub_8146CA4(void) u16 sub_8146CE8(void) { - u16 *r6 = &gUnknown_20370D0; + u16 *r6 = &gSpecialVar_Result; struct MysteryEventStruct *r4 = sub_8143D94(); u16 r5; diff --git a/src/quest_log.c b/src/quest_log.c index 546ff6e05..8e890af21 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -523,7 +523,7 @@ void sub_8110A3C(void) void sub_8110AB4(void) { - gUnknown_20370D0 = gUnknown_203ADFA; + gSpecialVar_Result = gUnknown_203ADFA; } u8 sub_8110AC8(void) @@ -2654,7 +2654,7 @@ bool16 sub_8113364(void) bool16 sub_811337C(struct Var4038Struct * a0) { - return (a0->unk_1 >> gUnknown_20370C0) & 1; + return (a0->unk_1 >> gSpecialVar_0x8004) & 1; } void sub_8113390(struct Var4038Struct * a0) @@ -2669,7 +2669,7 @@ void sub_81133A4(void) u8 r3 = 0; u8 r2 = 0; - switch (gUnknown_20370C0) + switch (gSpecialVar_0x8004) { case 0: r2 = 0; @@ -2770,7 +2770,7 @@ void sub_8113524(struct Var4038Struct * a0) u8 sub_8113530(void) { - return sub_8113114(VAR_0x4038_STRUCT, gUnknown_20370C0); + return sub_8113114(VAR_0x4038_STRUCT, gSpecialVar_0x8004); } static u16 * (*const sQuestLogStorageCBs[])(u16 *, const u16 *) = { diff --git a/src/vs_seeker.c b/src/vs_seeker.c index 17a13ab01..4d42f270d 100644 --- a/src/vs_seeker.c +++ b/src/vs_seeker.c @@ -63,7 +63,7 @@ struct VsSeekerStruct u8 responseCode:5; }; -extern u16 gUnknown_20370D2; +extern u16 gSpecialVar_LastTalked; extern struct MapObject gMapObjects[MAP_OBJECTS_COUNT]; extern u8 gUnknown_3005074; @@ -588,7 +588,7 @@ void Task_VsSeeker_0(u8 taskId) } else if (respval == 2) { - sub_80A2294(4, 0, gUnknown_203AD30, 0xffff); + sub_80A2294(4, 0, gSpecialVar_ItemId, 0xffff); FieldEffectStart(FLDEFF_UNK_41); // TODO: name this enum gTasks[taskId].func = Task_VsSeeker_1; gTasks[taskId].data[0] = 15; @@ -1078,7 +1078,7 @@ static bool8 sub_810CD80(const VsSeekerData *vsSeekerData, u16 trainerBattleOppo return FALSE; if (rematchIdx >= 0 && rematchIdx < ARRAY_COUNT(sVsSeekerData)) { - if (IsThisTrainerRematchable(gUnknown_20370D2)) + if (IsThisTrainerRematchable(gSpecialVar_LastTalked)) return TRUE; } return FALSE; @@ -1097,7 +1097,7 @@ static bool8 HasRematchTrainerAlreadyBeenFought(const VsSeekerData *vsSeekerData void sub_810CDE8(void) { - gSaveBlock1Ptr->trainerRematches[gUnknown_20370D2] = 0; + gSaveBlock1Ptr->trainerRematches[gSpecialVar_LastTalked] = 0; sub_80803FC(); } @@ -1148,7 +1148,7 @@ static bool8 sub_810CED0(const VsSeekerData * a0, u16 a1) return FALSE; if ((u32)r1 >= ARRAY_COUNT(sVsSeekerData)) return FALSE; - if (!IsThisTrainerRematchable(gUnknown_20370D2)) + if (!IsThisTrainerRematchable(gSpecialVar_LastTalked)) return FALSE; return TRUE; } -- cgit v1.2.3 From a7ab82a948cdbbe30da4307d2245369980440bea Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 21 Dec 2018 11:43:24 -0500 Subject: Guess a small struct in save block 2 --- src/main.c | 4 ++-- src/mevent.c | 6 +++--- src/quest_log.c | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/main.c b/src/main.c index a625386b2..068cc8578 100644 --- a/src/main.c +++ b/src/main.c @@ -98,7 +98,7 @@ static IntrFunc * const sTimerIntrFunc = gIntrTable + 0x7; extern u16 gTrainerId; extern bool8 gUnknown_3005ECC; -extern bool8 gUnknown_3003F3C; +extern bool8 gWirelessCommType; extern bool8 gUnknown_3005E88; EWRAM_DATA void (**gFlashTimerIntrFunc)(void) = NULL; @@ -348,7 +348,7 @@ extern void ProcessDma3Requests(void); static void VBlankIntr(void) { - if (gUnknown_3003F3C) + if (gWirelessCommType) RFUVSync(); else if (!gLinkVSyncDisabled) LinkVSync(); diff --git a/src/mevent.c b/src/mevent.c index 7a7fcc399..a62286f21 100644 --- a/src/mevent.c +++ b/src/mevent.c @@ -211,7 +211,7 @@ u32 sub_8143770(u8 * r4, u16 * r5) } else if (IsLinkConnectionEstablished()) { - if (gUnknown_3003F64) + if (gReceivedRemoteLinkPlayers) { if (IsLinkPlayerDataExchangeComplete()) { @@ -230,7 +230,7 @@ u32 sub_8143770(u8 * r4, u16 * r5) *r4 = 5; break; case 5: - if (!gUnknown_3003F64) + if (!gReceivedRemoteLinkPlayers) { *r4 = 0; return 4; @@ -428,7 +428,7 @@ void sub_8143910(u8 taskId) data->t08 = 16; break; case 16: - if (!gUnknown_3003F64) + if (!gReceivedRemoteLinkPlayers) { if (data->t0E == 1) data->t08 = 17; diff --git a/src/quest_log.c b/src/quest_log.c index 8e890af21..4f462505a 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -165,7 +165,7 @@ u16 sub_81132A0(struct Var4038Struct *); void sub_81132E0(struct Var4038Struct *); bool16 sub_811337C(struct Var4038Struct *); void sub_8113390(struct Var4038Struct *); -void sub_8113414(u8 (*)[16], u8, u8); +void sub_8113414(struct LinkBattleRecords *, u8, u8); void sub_81134CC(struct Var4038Struct *); bool8 sub_8113508(struct Var4038Struct * ); void sub_8113524(struct Var4038Struct *); @@ -2693,13 +2693,13 @@ void sub_81133A4(void) r3 = 1; break; } - sub_8113414(gSaveBlock2Ptr->unk_A98, r3, r2); + sub_8113414(&gSaveBlock2Ptr->linkBattleRecords, r3, r2); } -void sub_8113414(u8 (* a0)[16], u8 a1, u8 a2) +void sub_8113414(struct LinkBattleRecords * a0, u8 a1, u8 a2) { u8 * str; - const u8 * src = a0[a1]; + const u8 * src = a0->entries[a1].name; if (src[0] == EOS) { switch (a2) -- cgit v1.2.3