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