diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-04-07 13:39:52 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-04-07 13:39:52 -0400 |
commit | eaaa093ccaca498e79a0630941cfba0f31fbd9fb (patch) | |
tree | 519aeaa9d027ee8212ff51df15840654dae6af1a | |
parent | 0d6c2a9b1b1cfc3eba7dfe51066f8520283fc28f (diff) |
finish decompiling unk_debug_menu_3 code
-rw-r--r-- | asm/unk_debug_menu_3.s | 82 | ||||
-rw-r--r-- | data/debug_menu_3.s | 1 | ||||
-rw-r--r-- | include/start_menu.h | 1 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/debug/unk_debug_menu_3.c | 34 |
5 files changed, 33 insertions, 86 deletions
diff --git a/asm/unk_debug_menu_3.s b/asm/unk_debug_menu_3.s deleted file mode 100644 index 46e91de8e..000000000 --- a/asm/unk_debug_menu_3.s +++ /dev/null @@ -1,82 +0,0 @@ -.if DEBUG - - .include "constants/gba_constants.inc" - .include "include/macros.inc" - - .text - - thumb_func_start debug_sub_813C904 -debug_sub_813C904: - push {r4, lr} - ldr r4, ._35 @ gPlayerParty - add r0, r4, #0 - mov r1, #0x5 - mov r2, #0x32 - mov r3, #0xb7 - bl debug_sub_813C638 - add r0, r4, #0 - add r0, r0, #0x64 - mov r1, #0x8 - mov r2, #0x32 - mov r3, #0xc4 - bl debug_sub_813C638 - add r4, r4, #0xc8 - add r0, r4, #0 - mov r1, #0x2 - mov r2, #0x32 - mov r3, #0x8d - bl debug_sub_813C638 - pop {r4} - pop {r0} - bx r0 -._36: - .align 2, 0 -._35: - .word gPlayerParty - - thumb_func_end debug_sub_813C904 - - thumb_func_start debug_sub_813C93C -debug_sub_813C93C: - push {r4, r5, r6, lr} - add sp, sp, #0xffffff44 - add r4, r0, #0 - ldr r6, ._37 @ gUnknown_Debug_845E4EF - ldr r5, ._37 + 4 @ gUnknown_Debug_845E606 - sub r5, r5, r6 - add r1, r6, #0 - add r2, r5, #0 - bl memcpy - bl SavePlayerParty - bl debug_sub_813C904 - ldr r1, ._37 + 8 @ Str_842E253 - ldr r2, ._37 + 12 @ 0x270f - mov r0, sp - bl debug_sub_8075DB4 - bl LoadPlayerParty - ldr r0, ._37 + 16 @ gUnknown_Debug_845E506 - add r4, r4, r0 - sub r4, r4, r6 - add r0, r4, #0 - mov r1, sp - mov r2, #0xbc - bl memcpy - add r0, r5, #0 - add sp, sp, #0xbc - pop {r4, r5, r6} - pop {r1} - bx r1 -._38: - .align 2, 0 -._37: - .word gUnknown_Debug_845E4EF - .word gUnknown_Debug_845E606 - .word Str_842E253+5 @ weird... - .word 0x270f - .word gUnknown_Debug_845E506 - - thumb_func_end debug_sub_813C93C - - .align 2, 0 - -.endif diff --git a/data/debug_menu_3.s b/data/debug_menu_3.s index 8e478bf46..37d7585b2 100644 --- a/data/debug_menu_3.s +++ b/data/debug_menu_3.s @@ -215,6 +215,7 @@ gUnknown_Debug_845E4EF:: gUnknown_Debug_845E506:: .space 256 +gUnknown_Debug_845E4EFEnd:: gUnknown_Debug_845E606:: me_checkcompat gUnknown_Debug_845E606, 0x4, 0x4, 0x4, 0x80 diff --git a/include/start_menu.h b/include/start_menu.h index 5e513b9dc..87f6828ab 100644 --- a/include/start_menu.h +++ b/include/start_menu.h @@ -9,5 +9,6 @@ void sub_80712B4(u8 taskId); void sub_8071310(void); void ScrSpecial_DoSaveDialog(void); void sub_8071B28(void); +void debug_sub_8075DB4(struct BattleTowerEReaderTrainer *ereaderTrainer, const u8 *b, u32 trainerId); #endif // GUARD_STARTER_CHOOSE_H diff --git a/ld_script.txt b/ld_script.txt index 56d1ac39f..dffcb1fef 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -364,7 +364,6 @@ SECTIONS { src/save.o(.text); src/mystery_event_script.o(.text); src/debug/unk_debug_menu_3.o(.text); - asm/unk_debug_menu_3.o(.text); src/field_effect_helpers.o(.text); src/contest_ai.o(.text); src/unused_81258BC.o(.text); diff --git a/src/debug/unk_debug_menu_3.c b/src/debug/unk_debug_menu_3.c index 6cadea1eb..373c01f5b 100644 --- a/src/debug/unk_debug_menu_3.c +++ b/src/debug/unk_debug_menu_3.c @@ -4,6 +4,8 @@ #include "constants/items.h" #include "string_util.h" #include "new_game.h" +#include "load_save.h" +#include "start_menu.h" #include "mystery_event_script.h" #include "berry.h" #include "mail_data.h" @@ -222,7 +224,6 @@ size_t debug_sub_813C740(u8 * dest) dataBuffer[0] = LANGUAGE_JAPANESE; SetMonData(mon, MON_DATA_LANGUAGE, dataBuffer); - // nonmatching pointer arithmetic memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon)); memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); @@ -243,7 +244,6 @@ size_t debug_sub_813C810(u8 * dest) debug_sub_813C638(mon, SPECIES_UNOWN, 21, ITEM_DREAM_MAIL); debug_sub_813C6AC(mon, &mail); - // nonmatching pointer arithmetic memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon)); memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); @@ -266,7 +266,6 @@ size_t debug_sub_813C888(u8 * dest) 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)); @@ -276,4 +275,33 @@ size_t debug_sub_813C888(u8 * dest) return size; } +void debug_sub_813C904(void) +{ + debug_sub_813C638(gPlayerParty + 0, SPECIES_CHARMELEON, 50, ITEM_QUICK_CLAW); + debug_sub_813C638(gPlayerParty + 1, SPECIES_WARTORTLE, 50, ITEM_FOCUS_BAND); + debug_sub_813C638(gPlayerParty + 2, SPECIES_IVYSAUR, 50, ITEM_LUM_BERRY); +} + +extern u8 gUnknown_Debug_845E4EF[]; +extern u8 gUnknown_Debug_845E4EFEnd[]; +extern u8 gUnknown_Debug_845E506[]; +extern const u8 Str_842E253[]; + +size_t debug_sub_813C93C(u8 * dest) +{ + u8 * src = gUnknown_Debug_845E4EF; + size_t size = gUnknown_Debug_845E4EFEnd - src; + struct BattleTowerEReaderTrainer ereaderTrainer; + + memcpy(dest, src, size); + SavePlayerParty(); + debug_sub_813C904(); + debug_sub_8075DB4(&ereaderTrainer, Str_842E253 + 5, 9999); + LoadPlayerParty(); + + memcpy(gUnknown_Debug_845E506 - src + dest, &ereaderTrainer, sizeof(ereaderTrainer)); + + return size; +} + #endif // DEBUG |