summaryrefslogtreecommitdiff
path: root/src/field/start_menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/field/start_menu.c')
-rw-r--r--src/field/start_menu.c303
1 files changed, 303 insertions, 0 deletions
diff --git a/src/field/start_menu.c b/src/field/start_menu.c
index 2f6f1e7dd..5e76d30a6 100644
--- a/src/field/start_menu.c
+++ b/src/field/start_menu.c
@@ -44,6 +44,11 @@ enum {
MENU_ACTION_PLAYER_LINK
};
+#ifdef DEBUG
+static u32 _debugStartMenu_0 __attribute__((unused));
+static u32 _debugStartMenu_1 __attribute__((unused));
+#endif
+
static u8 (*saveDialogCallback)(void);
static u8 saveDialogTimer; //Number of frames to keep the window on screen after save was completed
static bool8 savingComplete;
@@ -132,6 +137,304 @@ static bool32 sub_80719FC(u8 *ptr);
static void sub_8071B54(void);
static void Task_8071B64(u8 taskId);
+#ifdef DEBUG
+__attribute__((naked))
+void debug_sub_8075C30()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl debug_sub_8075D9C\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8075C40()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " ldr r1, ._5\n"
+ " add r5, r0, r1\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r5, r1]\n"
+ " cmp r0, #0x1\n"
+ " beq ._1 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._2 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._3 @cond_branch\n"
+ " b ._18\n"
+ "._6:\n"
+ " .align 2, 0\n"
+ "._5:\n"
+ " .word gTasks+0x8\n"
+ "._2:\n"
+ " cmp r0, #0x2\n"
+ " beq ._7 @cond_branch\n"
+ " cmp r0, #0x3\n"
+ " beq ._8 @cond_branch\n"
+ " b ._18\n"
+ "._3:\n"
+ " bl m4aSoundVSyncOff\n"
+ " b ._12\n"
+ "._1:\n"
+ " ldr r1, ._13\n"
+ " ldrh r0, [r1]\n"
+ " mov sl, r0\n"
+ " mov r0, #0x0\n"
+ " strh r0, [r1]\n"
+ " ldr r1, ._13 + 4\n"
+ " strh r0, [r1]\n"
+ " mov r0, #0x83\n"
+ " lsl r0, r0, #0x10\n"
+ " str r0, [r1]\n"
+ " ldr r4, ._13 + 8\n"
+ " mov r9, r4\n"
+ " ldr r2, ._13 + 12\n"
+ " ldr r0, ._13 + 16\n"
+ " mov ip, r0\n"
+ " ldr r1, ._13 + 20\n"
+ " mov r8, r1\n"
+ " ldr r7, ._13 + 24\n"
+ " mov r3, r9\n"
+ " add r3, r3, #0x1\n"
+ " ldr r6, ._13 + 28\n"
+ " ldr r4, ._13 + 32\n"
+ "._11:\n"
+ " mov r0, ip\n"
+ " str r0, [r2]\n"
+ " str r6, [r2, #0x4]\n"
+ " str r4, [r2, #0x8]\n"
+ " ldr r0, [r2, #0x8]\n"
+ " ldrh r1, [r2, #0xa]\n"
+ " mov r0, r8\n"
+ " and r0, r0, r1\n"
+ " strh r0, [r2, #0xa]\n"
+ " ldrh r1, [r2, #0xa]\n"
+ " add r0, r7, #0\n"
+ " and r0, r0, r1\n"
+ " strh r0, [r2, #0xa]\n"
+ " ldrh r0, [r2, #0xa]\n"
+ " sub r3, r3, #0x1\n"
+ " cmp r3, #0\n"
+ " bne ._11 @cond_branch\n"
+ " mov r3, r9\n"
+ " add r3, r3, #0x1\n"
+ " ldr r0, ._13 + 36\n"
+ " mov r2, #0x0\n"
+ " strh r2, [r0]\n"
+ " ldr r1, ._13 + 4\n"
+ " ldrh r0, [r1]\n"
+ " ldr r4, ._13 + 40\n"
+ " str r0, [r4]\n"
+ " strh r2, [r1]\n"
+ " ldr r0, ._13\n"
+ " mov r1, sl\n"
+ " strh r1, [r0]\n"
+ " ldr r4, ._13 + 44\n"
+ " str r3, [r4]\n"
+ " bl m4aSoundVSyncOn\n"
+ " b ._12\n"
+ "._14:\n"
+ " .align 2, 0\n"
+ "._13:\n"
+ " .word 0x4000208\n"
+ " .word 0x4000108\n"
+ " .word 0xc34f\n"
+ " .word 0x40000b0\n"
+ " .word gUnknown_03004DE0\n"
+ " .word 0xc5ff\n"
+ " .word 0x7fff\n"
+ " .word 0x4000040\n"
+ " .word 0xa2600001\n"
+ " .word 0x400010a\n"
+ " .word _debugStartMenu_0\n"
+ " .word _debugStartMenu_1\n"
+ "._7:\n"
+ " mov r0, #0x15\n"
+ " bl PlaySE\n"
+ " ldr r0, ._16\n"
+ " ldr r1, ._16 + 4\n"
+ " ldr r1, [r1]\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x8\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " ldr r0, ._16 + 8\n"
+ " ldr r1, ._16 + 12\n"
+ " ldr r1, [r1]\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x8\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " bl MenuDisplayMessageBox\n"
+ " ldr r0, ._16 + 16\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl MenuPrint\n"
+ "._12:\n"
+ " ldrh r0, [r5]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r5]\n"
+ " b ._18\n"
+ "._17:\n"
+ " .align 2, 0\n"
+ "._16:\n"
+ " .word gStringVar1\n"
+ " .word _debugStartMenu_1\n"
+ " .word gStringVar2\n"
+ " .word _debugStartMenu_0\n"
+ " .word gUnknown_Debug_839B6D8\n"
+ "._8:\n"
+ " ldr r0, ._19\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._18 @cond_branch\n"
+ " bl MenuZeroFillScreen\n"
+ " bl ScriptContext2_Disable\n"
+ " add r0, r4, #0\n"
+ " bl DestroyTask\n"
+ "._18:\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._20:\n"
+ " .align 2, 0\n"
+ "._19:\n"
+ " .word gMain\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8075D9C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._21\n"
+ " mov r1, #0xa\n"
+ " bl CreateTask\n"
+ " bl ScriptContext2_Enable\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._22:\n"
+ " .align 2, 0\n"
+ "._21:\n"
+ " .word debug_sub_8075C40+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8075DB4()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r6, r0, #0\n"
+ " add r5, r1, #0\n"
+ " add r4, r2, #0\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x4d\n"
+ " bl __umodsi3\n"
+ " strb r0, [r6, #0x1]\n"
+ " add r1, r6, #0\n"
+ " add r1, r1, #0xc\n"
+ " add r0, r4, #0\n"
+ " bl write_word_to_mem\n"
+ " add r0, r6, #4\n"
+ " add r1, r5, #0\n"
+ " bl StringCopy8\n"
+ " mov r3, #0x7\n"
+ " mov r4, #0x0\n"
+ " ldr r0, ._25\n"
+ " ldr r1, ._25 + 4\n"
+ " add r5, r0, r1\n"
+ " add r2, r6, #0\n"
+ " add r2, r2, #0x10\n"
+ " add r1, r6, #0\n"
+ " add r1, r1, #0x1c\n"
+ "._23:\n"
+ " ldrh r0, [r5]\n"
+ " strh r0, [r2]\n"
+ " strh r3, [r1]\n"
+ " add r0, r3, #6\n"
+ " strh r0, [r1, #0xc]\n"
+ " add r3, r3, #0x1\n"
+ " add r5, r5, #0x2\n"
+ " add r2, r2, #0x2\n"
+ " add r1, r1, #0x2\n"
+ " add r4, r4, #0x1\n"
+ " cmp r4, #0x5\n"
+ " ble ._23 @cond_branch\n"
+ " mov r4, #0x0\n"
+ "._24:\n"
+ " mov r0, #0x64\n"
+ " mul r0, r0, r4\n"
+ " ldr r1, ._25 + 8\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x2c\n"
+ " mul r1, r1, r4\n"
+ " add r1, r1, #0x34\n"
+ " add r1, r6, r1\n"
+ " bl sub_803AF78\n"
+ " add r4, r4, #0x1\n"
+ " cmp r4, #0x2\n"
+ " ble ._24 @cond_branch\n"
+ " add r0, r6, #0\n"
+ " bl sub_8136088\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._26:\n"
+ " .align 2, 0\n"
+ "._25:\n"
+ " .word gSaveBlock1\n"
+ " .word 0x2b28\n"
+ " .word gPlayerParty\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void unref_sub_8070F90()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._27\n"
+ " bl FlagSet\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x4\n"
+ " bl FlagSet\n"
+ " ldr r0, ._27 + 4\n"
+ " bl FlagSet\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._28:\n"
+ " .align 2, 0\n"
+ "._27:\n"
+ " .word 0x801\n"
+ " .word 0x802\n"
+ "\n"
+ );
+}
+#endif
static void BuildStartMenuActions(void)
{