summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-04-07 13:39:52 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2018-04-07 13:39:52 -0400
commiteaaa093ccaca498e79a0630941cfba0f31fbd9fb (patch)
tree519aeaa9d027ee8212ff51df15840654dae6af1a
parent0d6c2a9b1b1cfc3eba7dfe51066f8520283fc28f (diff)
finish decompiling unk_debug_menu_3 code
-rw-r--r--asm/unk_debug_menu_3.s82
-rw-r--r--data/debug_menu_3.s1
-rw-r--r--include/start_menu.h1
-rw-r--r--ld_script.txt1
-rw-r--r--src/debug/unk_debug_menu_3.c34
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