summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-04-07 13:02:58 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2018-04-07 13:02:58 -0400
commit5bf9e96c84c5f9253e014416208f32b95a297087 (patch)
tree0b7a03585e4c0a5a455e31f342bb337b3496af18 /src
parent0426e350618857107fd8351e7c05b563152e4fdb (diff)
Decompile nonmatching debug_sub_813C740
Diffstat (limited to 'src')
-rw-r--r--src/debug/unk_debug_menu_3.c173
1 files changed, 153 insertions, 20 deletions
diff --git a/src/debug/unk_debug_menu_3.c b/src/debug/unk_debug_menu_3.c
index 0b348fa0b..50c9cb5cb 100644
--- a/src/debug/unk_debug_menu_3.c
+++ b/src/debug/unk_debug_menu_3.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "debug.h"
+#include "constants/species.h"
#include "constants/items.h"
#include "string_util.h"
#include "new_game.h"
@@ -9,8 +10,8 @@
#if DEBUG
-extern const u8 gUnknown_Debug_845DAE1[];
-extern const u8 gUnknown_Debug_845DAE1End[];
+extern u8 gUnknown_Debug_845DAE1[];
+extern u8 gUnknown_Debug_845DAE1End[];
size_t debug_sub_813C404(u8 * dest)
{
@@ -20,8 +21,8 @@ size_t debug_sub_813C404(u8 * dest)
return size;
}
-extern const u8 gUnknown_Debug_845E3E0[];
-extern const u8 gUnknown_Debug_845E3E0End[];
+extern u8 gUnknown_Debug_845E3E0[];
+extern u8 gUnknown_Debug_845E3E0End[];
size_t debug_sub_813C430(u8 * dest)
{
@@ -31,8 +32,8 @@ size_t debug_sub_813C430(u8 * dest)
return size;
}
-extern const u8 gUnknown_Debug_845E422[];
-extern const u8 gUnknown_Debug_845E422End[];
+extern u8 gUnknown_Debug_845E422[];
+extern u8 gUnknown_Debug_845E422End[];
size_t debug_sub_813C45C(u8 * dest)
{
@@ -42,8 +43,8 @@ size_t debug_sub_813C45C(u8 * dest)
return size;
}
-extern const u8 gUnknown_Debug_845E402[];
-extern const u8 gUnknown_Debug_845E402End[];
+extern u8 gUnknown_Debug_845E402[];
+extern u8 gUnknown_Debug_845E402End[];
size_t debug_sub_813C488(u8 * dest)
{
@@ -53,8 +54,8 @@ size_t debug_sub_813C488(u8 * dest)
return size;
}
-extern const u8 gUnknown_Debug_845E606[];
-extern const u8 gUnknown_Debug_845E606End[];
+extern u8 gUnknown_Debug_845E606[];
+extern u8 gUnknown_Debug_845E606End[];
size_t debug_sub_813C4B4(u8 * dest)
{
@@ -63,8 +64,8 @@ size_t debug_sub_813C4B4(u8 * dest)
return size;
}
-extern const u8 gUnknown_Debug_845E619[];
-extern const u8 gUnknown_Debug_845E619End[];
+extern u8 gUnknown_Debug_845E619[];
+extern u8 gUnknown_Debug_845E619End[];
size_t debug_sub_813C4D4(u8 * dest)
{
@@ -74,8 +75,8 @@ size_t debug_sub_813C4D4(u8 * dest)
return size;
}
-extern const u8 gUnknown_Debug_845E712[];
-extern const u8 gUnknown_Debug_845E712End[];
+extern u8 gUnknown_Debug_845E712[];
+extern u8 gUnknown_Debug_845E712End[];
size_t debug_sub_813C500(u8 * dest)
{
@@ -85,9 +86,9 @@ size_t debug_sub_813C500(u8 * dest)
return size;
}
-extern const u8 gUnknown_Debug_845E797[];
-extern const u8 gUnknown_Debug_845E797End[];
-extern const u8 gUnknown_Debug_845E7B5[];
+extern u8 gUnknown_Debug_845E797[];
+extern u8 gUnknown_Debug_845E797End[];
+extern u8 gUnknown_Debug_845E7B5[];
size_t debug_sub_813C52C(u8 * dest, u16 itemId)
{
@@ -122,9 +123,9 @@ size_t debug_sub_813C5A4(u8 * dest)
return debug_sub_813C52C(dest, ITEM_TM01_FOCUS_PUNCH);
}
-extern const u8 gUnknown_Debug_845DDB2[];
-extern const u8 gUnknown_Debug_845DDB2End[];
-extern const u8 gUnknown_Debug_845DDD6[];
+extern u8 gUnknown_Debug_845DDB2[];
+extern u8 gUnknown_Debug_845DDB2End[];
+extern u8 gUnknown_Debug_845DDD6[];
extern const u8 Str_842E23C[]; //static const u8 Str_842E23C[] = _("ガイブ");
@@ -191,4 +192,136 @@ void debug_sub_813C6AC(struct Pokemon *mon, struct MailStruct *mail)
}
}
+extern u8 gUnknown_Debug_845E443[];
+extern u8 gUnknown_Debug_845E443End[];
+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;
+ struct Pokemon *mon = gEnemyParty;
+ size_t size = gUnknown_Debug_845E443End - gUnknown_Debug_845E443;
+ u8 dataBuffer[11];
+
+ memcpy(dest, gUnknown_Debug_845E443, size);
+ debug_sub_813C638(mon, SPECIES_PIKACHU, 5, ITEM_NONE);
+ dataBuffer[0] = TRUE;
+ SetMonData(mon, MON_DATA_IS_EGG, dataBuffer);
+ dataBuffer[0] = 3;
+ SetMonData(mon, MON_DATA_FRIENDSHIP, dataBuffer);
+ dataBuffer[0] = 255;
+ SetMonData(mon, MON_DATA_MET_LOCATION, dataBuffer);
+
+ StringCopyN(dataBuffer, Str_842E238, POKEMON_NAME_LENGTH);
+ 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_845E4CB - gUnknown_Debug_845E443 + 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
+
#endif // DEBUG