diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-04-07 13:29:59 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-04-07 13:29:59 -0400 |
commit | 0d6c2a9b1b1cfc3eba7dfe51066f8520283fc28f (patch) | |
tree | ac37936ea738869c7d016675ec47b7973b374793 /src | |
parent | 28565a3fe307d906cceb562c1ffe526f3d94cfc8 (diff) |
debug_sub_813C888; and then everything matched
Diffstat (limited to 'src')
-rw-r--r-- | src/debug/unk_debug_menu_3.c | 199 |
1 files changed, 36 insertions, 163 deletions
diff --git a/src/debug/unk_debug_menu_3.c b/src/debug/unk_debug_menu_3.c index 7b9d2bbaa..6cadea1eb 100644 --- a/src/debug/unk_debug_menu_3.c +++ b/src/debug/unk_debug_menu_3.c @@ -198,15 +198,16 @@ extern u8 gUnknown_Debug_845E467[]; extern u8 gUnknown_Debug_845E4CB[]; extern const u8 Str_842E238[]; -#ifdef NONMATCHING size_t debug_sub_813C740(u8 * dest) { struct MailStruct mail; + u8 * src = gUnknown_Debug_845E443; + u8 * end = gUnknown_Debug_845E443End; struct Pokemon *mon = gEnemyParty; - size_t size = gUnknown_Debug_845E443End - gUnknown_Debug_845E443; + size_t size = end - src; u8 dataBuffer[11]; - memcpy(dest, gUnknown_Debug_845E443, size); + memcpy(dest, src, size); debug_sub_813C638(mon, SPECIES_PIKACHU, 5, ITEM_NONE); dataBuffer[0] = TRUE; SetMonData(mon, MON_DATA_IS_EGG, dataBuffer); @@ -215,192 +216,64 @@ size_t debug_sub_813C740(u8 * dest) dataBuffer[0] = 255; SetMonData(mon, MON_DATA_MET_LOCATION, dataBuffer); - StringCopyN(dataBuffer, Str_842E238, POKEMON_NAME_LENGTH); + StringCopyN(dataBuffer, Str_842E238, POKEMON_NAME_LENGTH + 1); SetMonData(mon, MON_DATA_NICKNAME, dataBuffer); dataBuffer[0] = LANGUAGE_JAPANESE; SetMonData(mon, MON_DATA_LANGUAGE, dataBuffer); // nonmatching pointer arithmetic - memcpy(gUnknown_Debug_845E467 - gUnknown_Debug_845E443 + dest, mon, sizeof(struct Pokemon)); + memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon)); - memcpy(gUnknown_Debug_845E4CB - gUnknown_Debug_845E443 + dest, &mail, sizeof(struct MailStruct)); + memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); return size; } -#else -__attribute__((naked)) size_t debug_sub_813C740(u8 * dest) -{ - asm("\tpush\t{r4, r5, r6, lr}\n" - "\tmov\tr6, sl\n" - "\tmov\tr5, r9\n" - "\tmov\tr4, r8\n" - "\tpush\t{r4, r5, r6}\n" - "\tadd\tsp, sp, #0xffffffd0\n" - "\tadd\tr6, r0, #0\n" - "\tldr\tr0, ._29 @ gUnknown_Debug_845E443\n" - "\tmov\tr8, r0\n" - "\tldr\tr1, ._29 + 4 @ gUnknown_Debug_845E4EF\n" - "\tldr\tr5, ._29 + 8 @ gEnemyParty\n" - "\tsub\tr1, r1, r0\n" - "\tmov\tr9, r1\n" - "\tadd\tr0, r6, #0\n" - "\tmov\tr1, r8\n" - "\tmov\tr2, r9\n" - "\tbl\tmemcpy\n" - "\tadd\tr0, r5, #0\n" - "\tmov\tr1, #0x19\n" - "\tmov\tr2, #0x5\n" - "\tmov\tr3, #0x0\n" - "\tbl\tdebug_sub_813C638\n" - "\tadd\tr4, sp, #0x24\n" - "\tmov\tr0, #0x1\n" - "\tmov\tsl, r0\n" - "\tmov\tr1, sl\n" - "\tstrb\tr1, [r4]\n" - "\tadd\tr0, r5, #0\n" - "\tmov\tr1, #0x2d\n" - "\tadd\tr2, r4, #0\n" - "\tbl\tSetMonData\n" - "\tmov\tr0, #0x3\n" - "\tstrb\tr0, [r4]\n" - "\tadd\tr0, r5, #0\n" - "\tmov\tr1, #0x20\n" - "\tadd\tr2, r4, #0\n" - "\tbl\tSetMonData\n" - "\tmov\tr0, #0xff\n" - "\tstrb\tr0, [r4]\n" - "\tadd\tr0, r5, #0\n" - "\tmov\tr1, #0x23\n" - "\tadd\tr2, r4, #0\n" - "\tbl\tSetMonData\n" - "\tldr\tr1, ._29 + 12 @ Str_842E238\n" - "\tadd\tr0, r4, #0\n" - "\tmov\tr2, #0xb\n" - "\tbl\tStringCopyN\n" - "\tadd\tr0, r5, #0\n" - "\tmov\tr1, #0x2\n" - "\tadd\tr2, r4, #0\n" - "\tbl\tSetMonData\n" - "\tmov\tr0, sl\n" - "\tstrb\tr0, [r4]\n" - "\tadd\tr0, r5, #0\n" - "\tmov\tr1, #0x3\n" - "\tadd\tr2, r4, #0\n" - "\tbl\tSetMonData\n" - "\tldr\tr0, ._29 + 16 @ gUnknown_Debug_845E467\n" - "\tadd\tr0, r6, r0\n" - "\tmov\tr1, r8\n" - "\tsub\tr0, r0, r1\n" - "\tadd\tr1, r5, #0\n" - "\tmov\tr2, #0x64\n" - "\tbl\tmemcpy\n" - "\tldr\tr0, ._29 + 20 @ gUnknown_Debug_845E4CB\n" - "\tadd\tr6, r6, r0\n" - "\tmov\tr0, r8\n" - "\tsub\tr6, r6, r0\n" - "\tadd\tr0, r6, #0\n" - "\tmov\tr1, sp\n" - "\tmov\tr2, #0x24\n" - "\tbl\tmemcpy\n" - "\tmov\tr0, r9\n" - "\tadd\tsp, sp, #0x30\n" - "\tpop\t{r3, r4, r5}\n" - "\tmov\tr8, r3\n" - "\tmov\tr9, r4\n" - "\tmov\tsl, r5\n" - "\tpop\t{r4, r5, r6}\n" - "\tpop\t{r1}\n" - "\tbx\tr1\n" - "._30:\n" - "\t.align\t2, 0\n" - "._29:\n" - "\t.word\tgUnknown_Debug_845E443\n" - "\t.word\tgUnknown_Debug_845E4EF\n" - "\t.word\tgEnemyParty\n" - "\t.word\tStr_842E238\n" - "\t.word\tgUnknown_Debug_845E467\n" - "\t.word\tgUnknown_Debug_845E4CB"); -} -#endif // NONMATCHING -#ifdef NONMATCHING // same reason as before size_t debug_sub_813C810(u8 * dest) { struct MailStruct mail; - size_t size = gUnknown_Debug_845E443End - gUnknown_Debug_845E443; + u8 * src = gUnknown_Debug_845E443; + u8 * end = gUnknown_Debug_845E443End; struct Pokemon *mon = gEnemyParty; + size_t size = end - src; - memcpy(dest, gUnknown_Debug_845E443, size); - debug_sub_813C638(mon, SPECIES_UNOWN, 5, ITEM_NONE); + memcpy(dest, src, size); + debug_sub_813C638(mon, SPECIES_UNOWN, 21, ITEM_DREAM_MAIL); debug_sub_813C6AC(mon, &mail); // nonmatching pointer arithmetic - memcpy(gUnknown_Debug_845E467 - gUnknown_Debug_845E443 + dest, mon, sizeof(struct Pokemon)); + memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon)); - memcpy(gUnknown_Debug_845E4CB - gUnknown_Debug_845E443 + dest, &mail, sizeof(struct MailStruct)); + memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); - unref_sub_812620C(dest, gUnknown_Debug_845E443); + unref_sub_812620C(dest, src); return size; } -#else -__attribute__((naked)) size_t debug_sub_813C810(u8 * dest) + +size_t debug_sub_813C888(u8 * dest) { - asm("\tpush\t{r4, r5, r6, lr}\n" - "\tmov\tr6, r8\n" - "\tpush\t{r6}\n" - "\tadd\tsp, sp, #0xffffffdc\n" - "\tadd\tr6, r0, #0\n" - "\tldr\tr5, ._31 @ gUnknown_Debug_845E443\n" - "\tldr\tr0, ._31 + 4 @ gUnknown_Debug_845E4EF\n" - "\tldr\tr4, ._31 + 8 @ gEnemyParty\n" - "\tsub\tr0, r0, r5\n" - "\tmov\tr8, r0\n" - "\tadd\tr0, r6, #0\n" - "\tadd\tr1, r5, #0\n" - "\tmov\tr2, r8\n" - "\tbl\tmemcpy\n" - "\tadd\tr0, r4, #0\n" - "\tmov\tr1, #0xc9\n" - "\tmov\tr2, #0x15\n" - "\tmov\tr3, #0x82\n" - "\tbl\tdebug_sub_813C638\n" - "\tadd\tr0, r4, #0\n" - "\tmov\tr1, sp\n" - "\tbl\tdebug_sub_813C6AC\n" - "\tldr\tr0, ._31 + 12 @ gUnknown_Debug_845E467\n" - "\tadd\tr0, r6, r0\n" - "\tsub\tr0, r0, r5\n" - "\tadd\tr1, r4, #0\n" - "\tmov\tr2, #0x64\n" - "\tbl\tmemcpy\n" - "\tldr\tr0, ._31 + 16 @ gUnknown_Debug_845E4CB\n" - "\tadd\tr0, r6, r0\n" - "\tsub\tr0, r0, r5\n" - "\tmov\tr1, sp\n" - "\tmov\tr2, #0x24\n" - "\tbl\tmemcpy\n" - "\tadd\tr0, r6, #0\n" - "\tadd\tr1, r5, #0\n" - "\tbl\tunref_sub_812620C\n" - "\tmov\tr0, r8\n" - "\tadd\tsp, sp, #0x24\n" - "\tpop\t{r3}\n" - "\tmov\tr8, r3\n" - "\tpop\t{r4, r5, r6}\n" - "\tpop\t{r1}\n" - "\tbx\tr1\n" - "._32:\n" - "\t.align\t2, 0\n" - "._31:\n" - "\t.word\tgUnknown_Debug_845E443\n" - "\t.word\tgUnknown_Debug_845E4EF\n" - "\t.word\tgEnemyParty\n" - "\t.word\tgUnknown_Debug_845E467\n" - "\t.word\tgUnknown_Debug_845E4CB"); + struct MailStruct mail; + u8 * src = gUnknown_Debug_845E443; + u8 * end = gUnknown_Debug_845E443End; + struct Pokemon *mon = gEnemyParty; + size_t size = end - src; + + memcpy(dest, src, size); + debug_sub_813C638(mon, SPECIES_UNOWN, 21, ITEM_DREAM_MAIL); + debug_sub_813C6AC(mon, &mail); + mon->box.checksum = 0; + + // nonmatching pointer arithmetic + memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon)); + + memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); + + unref_sub_812620C(dest, src); + + return size; } -#endif // NONMATCHING #endif // DEBUG |