diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-04-07 13:02:58 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-04-07 13:02:58 -0400 |
commit | 5bf9e96c84c5f9253e014416208f32b95a297087 (patch) | |
tree | 0b7a03585e4c0a5a455e31f342bb337b3496af18 /src | |
parent | 0426e350618857107fd8351e7c05b563152e4fdb (diff) |
Decompile nonmatching debug_sub_813C740
Diffstat (limited to 'src')
-rw-r--r-- | src/debug/unk_debug_menu_3.c | 173 |
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 |