summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/debug/unk_debug_menu_3.c199
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