summaryrefslogtreecommitdiff
path: root/src/engine/mystery_event_menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/mystery_event_menu.c')
-rw-r--r--src/engine/mystery_event_menu.c546
1 files changed, 120 insertions, 426 deletions
diff --git a/src/engine/mystery_event_menu.c b/src/engine/mystery_event_menu.c
index bc14c760d..56801ff53 100644
--- a/src/engine/mystery_event_menu.c
+++ b/src/engine/mystery_event_menu.c
@@ -13,6 +13,7 @@
#include "strings2.h"
#include "task.h"
#include "text.h"
+#include "title_screen.h"
#include "ewram.h"
static EWRAM_DATA u8 gUnknown_02039338 = 0;
@@ -341,151 +342,51 @@ static void CB2_MysteryEventMenu(void)
#if DEBUG
+static const u8 Str_843DA70[] = _("CARDーE emulation。。。");
+static const u8 Str_843DA84[] = _("LR: select A: send。");
+static const u8 Str_843DA98[] = _("sending。。。");
+static const u8 Str_843DAA3[] = _("completed。");
+
+extern const struct {const u8 *text; void (*func)();} gUnknown_Debug_842E2D0[];
+extern const u8 gUnknown_Debug_842E350;
+
void debug_sub_815D1D8();
-__attribute__((naked))
-void debug_sub_815D04C()
+void debug_sub_815D04C(u8 taskId)
{
- asm(
- " push {r4, r5, r6, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r5, r0, #0x18\n"
- " ldr r1, ._125 @ gTasks\n"
- " lsl r0, r5, #0x2\n"
- " add r0, r0, r5\n"
- " lsl r0, r0, #0x3\n"
- " add r4, r0, r1\n"
- " mov r1, #0x8\n"
- " ldsh r0, [r4, r1]\n"
- " cmp r0, #0\n"
- " bne ._121 @cond_branch\n"
- " mov r0, #0x4\n"
- " mov r1, #0x4\n"
- " mov r2, #0xd\n"
- " mov r3, #0x7\n"
- " bl Menu_DrawStdWindowFrame\n"
- " ldr r1, ._125 + 4 @ gUnknown_Debug_842E2D0\n"
- " mov r2, #0xa\n"
- " ldsh r0, [r4, r2]\n"
- " lsl r0, r0, #0x3\n"
- " add r0, r0, r1\n"
- " ldr r0, [r0]\n"
- " mov r1, #0x5\n"
- " mov r2, #0x5\n"
- " bl Menu_PrintText\n"
- " ldrh r0, [r4, #0x8]\n"
- " add r0, r0, #0x1\n"
- " strh r0, [r4, #0x8]\n"
- "._121:\n"
- " ldr r2, ._125 + 8 @ gMain\n"
- " ldrh r1, [r2, #0x2e]\n"
- " mov r0, #0x20\n"
- " and r0, r0, r1\n"
- " add r6, r2, #0\n"
- " cmp r0, #0\n"
- " beq ._122 @cond_branch\n"
- " ldrh r1, [r4, #0xa]\n"
- " mov r2, #0xa\n"
- " ldsh r0, [r4, r2]\n"
- " cmp r0, #0\n"
- " bne ._123 @cond_branch\n"
- " ldr r0, ._125 + 12 @ gUnknown_Debug_842E350\n"
- " ldrb r0, [r0]\n"
- " sub r0, r0, #0x1\n"
- " b ._124\n"
- "._126:\n"
- " .align 2, 0\n"
- "._125:\n"
- " .word gTasks\n"
- " .word gUnknown_Debug_842E2D0\n"
- " .word gMain\n"
- " .word gUnknown_Debug_842E350\n"
- "._123:\n"
- " sub r0, r1, #1\n"
- "._124:\n"
- " strh r0, [r4, #0xa]\n"
- " ldr r0, ._130 @ gTasks\n"
- " lsl r1, r5, #0x2\n"
- " add r1, r1, r5\n"
- " lsl r1, r1, #0x3\n"
- " add r1, r1, r0\n"
- " mov r0, #0x0\n"
- " strh r0, [r1, #0x8]\n"
- "._122:\n"
- " ldrh r1, [r6, #0x2e]\n"
- " mov r0, #0x10\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._127 @cond_branch\n"
- " ldr r1, ._130 @ gTasks\n"
- " lsl r2, r5, #0x2\n"
- " add r0, r2, r5\n"
- " lsl r0, r0, #0x3\n"
- " add r4, r0, r1\n"
- " mov r0, #0xa\n"
- " ldsh r3, [r4, r0]\n"
- " ldr r0, ._130 + 4 @ gUnknown_Debug_842E350\n"
- " ldrb r0, [r0]\n"
- " sub r0, r0, #0x1\n"
- " cmp r3, r0\n"
- " bne ._128 @cond_branch\n"
- " mov r0, #0x0\n"
- " b ._129\n"
- "._131:\n"
- " .align 2, 0\n"
- "._130:\n"
- " .word gTasks\n"
- " .word gUnknown_Debug_842E350\n"
- "._128:\n"
- " ldrh r0, [r4, #0xa]\n"
- " add r0, r0, #0x1\n"
- "._129:\n"
- " strh r0, [r4, #0xa]\n"
- " add r0, r2, r5\n"
- " lsl r0, r0, #0x3\n"
- " add r0, r0, r1\n"
- " mov r1, #0x0\n"
- " strh r1, [r0, #0x8]\n"
- "._127:\n"
- " ldrh r1, [r6, #0x2e]\n"
- " mov r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._132 @cond_branch\n"
- " ldr r1, ._133 @ gTasks\n"
- " lsl r0, r5, #0x2\n"
- " add r0, r0, r5\n"
- " lsl r0, r0, #0x3\n"
- " add r0, r0, r1\n"
- " mov r2, #0xa\n"
- " ldsh r1, [r0, r2]\n"
- " lsl r1, r1, #0x3\n"
- " ldr r0, ._133 + 4 @ gUnknown_Debug_842E2D0\n"
- " add r0, r0, #0x4\n"
- " add r1, r1, r0\n"
- " ldr r0, ._133 + 8 @ \n"
- " ldr r1, [r1]\n"
- " bl _call_via_r1\n"
- " ldr r0, ._133 + 12 @ \n"
- " add r1, r6, r0\n"
- " ldrb r0, [r1]\n"
- " add r0, r0, #0x1\n"
- " strb r0, [r1]\n"
- " add r0, r5, #0\n"
- " bl DestroyTask\n"
- "._132:\n"
- " pop {r4, r5, r6}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._134:\n"
- " .align 2, 0\n"
- "._133:\n"
- " .word gTasks\n"
- " .word gUnknown_Debug_842E2D0\n"
- " .word +0x2004000\n"
- " .word 0x43c\n"
- "\n"
- );
+ if (gTasks[taskId].data[0] == 0)
+ {
+ Menu_DrawStdWindowFrame(4, 4, 13, 7);
+ Menu_PrintText(gUnknown_Debug_842E2D0[gTasks[taskId].data[1]].text, 5, 5);
+ gTasks[taskId].data[0]++;
+ }
+
+ if (gMain.newKeys & 0x20)
+ {
+ if (gTasks[taskId].data[1] == 0)
+ gTasks[taskId].data[1] = gUnknown_Debug_842E350 - 1;
+ else
+ gTasks[taskId].data[1]--;
+ gTasks[taskId].data[0] = 0;
+ }
+ if (gMain.newKeys & 0x10)
+ {
+ if (gTasks[taskId].data[1] == gUnknown_Debug_842E350 - 1)
+ gTasks[taskId].data[1] = 0;
+ else
+ gTasks[taskId].data[1]++;
+ gTasks[taskId].data[0] = 0;
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ // TODO: fix this
+ s32 var = gTasks[taskId].data[1];
+ asm(""::"r"(var * 8));
+ gUnknown_Debug_842E2D0[var].func(gSharedMem + 0x4000);
+
+ gMain.state++;
+ DestroyTask(taskId);
+ }
}
void debug_sub_815D15C(void)
@@ -510,291 +411,84 @@ void debug_sub_815D15C(void)
SetMainCallback2(debug_sub_815D1D8);
}
-__attribute__((naked))
-void debug_sub_815D1D8()
+void debug_sub_815D1D8(void)
{
- asm(
- " push {r4, lr}\n"
- " add sp, sp, #0xfffffffc\n"
- " ldr r1, ._139 @ gMain\n"
- " ldr r2, ._139 + 4 @ 0x43c\n"
- " add r0, r1, r2\n"
- " ldrb r0, [r0]\n"
- " add r4, r1, #0\n"
- " cmp r0, #0xb\n"
- " bls ._137 @cond_branch\n"
- " b ._196\n"
- "._137:\n"
- " lsl r0, r0, #0x2\n"
- " ldr r1, ._139 + 8 @ \n"
- " add r0, r0, r1\n"
- " ldr r0, [r0]\n"
- " mov pc, r0\n"
- "._140:\n"
- " .align 2, 0\n"
- "._139:\n"
- " .word gMain\n"
- " .word 0x43c\n"
- " .word ._141\n"
- "._141:\n"
- " .word ._142\n"
- " .word ._143\n"
- " .word ._144\n"
- " .word ._145\n"
- " .word ._146\n"
- " .word ._196\n"
- " .word ._148\n"
- " .word ._149\n"
- " .word ._150\n"
- " .word ._151\n"
- " .word ._152\n"
- " .word ._153\n"
- "._142:\n"
- " mov r0, #0x3\n"
- " mov r1, #0xe\n"
- " mov r2, #0x1b\n"
- " mov r3, #0x13\n"
- " bl Menu_DrawStdWindowFrame\n"
- " mov r0, #0x1\n"
- " neg r0, r0\n"
- " mov r1, #0x0\n"
- " str r1, [sp]\n"
- " mov r2, #0x10\n"
- " mov r3, #0x0\n"
- " bl BeginNormalPaletteFade\n"
- " ldr r1, ._155 @ gMain\n"
- " ldr r0, ._155 + 4 @ 0x43c\n"
- " add r1, r1, r0\n"
- " b ._189\n"
- "._156:\n"
- " .align 2, 0\n"
- "._155:\n"
- " .word gMain\n"
- " .word 0x43c\n"
- "._143:\n"
- " ldr r0, ._161 @ gPaletteFade\n"
- " ldrb r1, [r0, #0x7]\n"
- " mov r0, #0x80\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._157 @cond_branch\n"
- " b ._196\n"
- "._157:\n"
- " ldrh r1, [r4, #0x2c]\n"
- " mov r0, #0x80\n"
- " lsl r0, r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._159 @cond_branch\n"
- " ldr r1, ._161 + 4 @ gUnknown_Debug_30030E0\n"
- " ldrb r0, [r1]\n"
- " add r0, r0, #0x1\n"
- " strb r0, [r1]\n"
- "._159:\n"
- " ldr r0, ._161 + 8 @ Str_843DA70\n"
- " mov r1, #0x4\n"
- " mov r2, #0xf\n"
- " bl MenuPrintMessage\n"
- " ldr r2, ._161 + 12 @ 0x43c\n"
- " add r1, r4, r2\n"
- " b ._189\n"
- "._162:\n"
- " .align 2, 0\n"
- "._161:\n"
- " .word gPaletteFade\n"
- " .word gUnknown_Debug_30030E0\n"
- " .word Str_843DA70\n"
- " .word 0x43c\n"
- "._144:\n"
- " bl Menu_UpdateWindowText\n"
- " lsl r0, r0, #0x18\n"
- " cmp r0, #0\n"
- " bne ._163 @cond_branch\n"
- " b ._196\n"
- "._163:\n"
- " ldr r1, ._166 @ gMain\n"
- " ldr r0, ._166 + 4 @ 0x43c\n"
- " add r1, r1, r0\n"
- " ldrb r0, [r1]\n"
- " add r0, r0, #0x1\n"
- " strb r0, [r1]\n"
- " ldr r1, ._166 + 8 @ gLinkType\n"
- " ldr r2, ._166 + 12 @ 0x5501\n"
- " add r0, r2, #0\n"
- " strh r0, [r1]\n"
- " bl OpenLink\n"
- " b ._196\n"
- "._167:\n"
- " .align 2, 0\n"
- "._166:\n"
- " .word gMain\n"
- " .word 0x43c\n"
- " .word gLinkType\n"
- " .word 0x5501\n"
- "._145:\n"
- " ldr r0, ._171 @ gReceivedRemoteLinkPlayers\n"
- " ldrb r0, [r0]\n"
- " cmp r0, #0\n"
- " bne ._168 @cond_branch\n"
- " b ._196\n"
- "._168:\n"
- " ldr r1, ._171 + 4 @ 0x43c\n"
- " add r0, r4, r1\n"
- " ldrb r1, [r0]\n"
- " add r1, r1, #0x1\n"
- " strb r1, [r0]\n"
- " ldr r0, ._171 + 8 @ Str_843DA84\n"
- " mov r1, #0x4\n"
- " mov r2, #0xf\n"
- " bl MenuPrintMessage\n"
- " b ._196\n"
- "._172:\n"
- " .align 2, 0\n"
- "._171:\n"
- " .word gReceivedRemoteLinkPlayers\n"
- " .word 0x43c\n"
- " .word Str_843DA84\n"
- "._146:\n"
- " bl Menu_UpdateWindowText\n"
- " lsl r0, r0, #0x18\n"
- " cmp r0, #0\n"
- " bne ._173 @cond_branch\n"
- " b ._196\n"
- "._173:\n"
- " ldr r0, ._176 @ debug_sub_815D04C\n"
- " mov r1, #0xa\n"
- " bl CreateTask\n"
- " ldr r1, ._176 + 4 @ gMain\n"
- " ldr r2, ._176 + 8 @ 0x43c\n"
- " add r1, r1, r2\n"
- " b ._189\n"
- "._177:\n"
- " .align 2, 0\n"
- "._176:\n"
- " .word debug_sub_815D04C+1\n"
- " .word gMain\n"
- " .word 0x43c\n"
- "._148:\n"
- " ldr r0, ._179 @ Str_843DA98\n"
- " mov r1, #0x4\n"
- " mov r2, #0xf\n"
- " bl MenuPrintMessage\n"
- " ldr r1, ._179 + 4 @ 0x2004000\n"
- " ldr r2, ._179 + 8 @ 0x2004\n"
- " mov r0, #0x0\n"
- " bl SendBlock\n"
- " ldr r1, ._179 + 12 @ gMain\n"
- " ldr r0, ._179 + 16 @ 0x43c\n"
- " add r1, r1, r0\n"
- " b ._189\n"
- "._180:\n"
- " .align 2, 0\n"
- "._179:\n"
- " .word Str_843DA98\n"
- " .word 0x2004000\n"
- " .word 0x2004\n"
- " .word gMain\n"
- " .word 0x43c\n"
- "._149:\n"
- " bl Menu_UpdateWindowText\n"
- " bl IsLinkTaskFinished\n"
- " lsl r0, r0, #0x18\n"
- " cmp r0, #0\n"
- " beq ._196 @cond_branch\n"
- " ldr r1, ._183 @ gMain\n"
- " ldr r2, ._183 + 4 @ 0x43c\n"
- " add r1, r1, r2\n"
- " b ._189\n"
- "._184:\n"
- " .align 2, 0\n"
- "._183:\n"
- " .word gMain\n"
- " .word 0x43c\n"
- "._150:\n"
- " bl sub_800832C\n"
- " ldr r1, ._186 @ gMain\n"
- " ldr r0, ._186 + 4 @ 0x43c\n"
- " add r1, r1, r0\n"
- " b ._189\n"
- "._187:\n"
- " .align 2, 0\n"
- "._186:\n"
- " .word gMain\n"
- " .word 0x43c\n"
- "._151:\n"
- " ldr r0, ._190 @ gReceivedRemoteLinkPlayers\n"
- " ldrb r0, [r0]\n"
- " cmp r0, #0\n"
- " bne ._196 @cond_branch\n"
- " mov r0, #0x4\n"
- " mov r1, #0xf\n"
- " mov r2, #0x1a\n"
- " mov r3, #0x12\n"
- " bl Menu_BlankWindowRect\n"
- " ldr r0, ._190 + 4 @ Str_843DAA3\n"
- " mov r1, #0x4\n"
- " mov r2, #0xf\n"
- " bl Menu_PrintText\n"
- " ldr r1, ._190 + 8 @ gMain\n"
- " ldr r2, ._190 + 12 @ 0x43c\n"
- " add r1, r1, r2\n"
- " b ._189\n"
- "._191:\n"
- " .align 2, 0\n"
- "._190:\n"
- " .word gReceivedRemoteLinkPlayers\n"
- " .word Str_843DAA3\n"
- " .word gMain\n"
- " .word 0x43c\n"
- "._152:\n"
- " ldrh r1, [r4, #0x2e]\n"
- " mov r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._196 @cond_branch\n"
- " mov r0, #0x1\n"
- " neg r0, r0\n"
- " mov r1, #0x0\n"
- " str r1, [sp]\n"
- " mov r2, #0x0\n"
- " mov r3, #0x10\n"
- " bl BeginNormalPaletteFade\n"
- " ldr r0, ._194 @ 0x43c\n"
- " add r1, r4, r0\n"
- "._189:\n"
- " ldrb r0, [r1]\n"
- " add r0, r0, #0x1\n"
- " strb r0, [r1]\n"
- " b ._196\n"
- "._195:\n"
- " .align 2, 0\n"
- "._194:\n"
- " .word 0x43c\n"
- "._153:\n"
- " ldr r0, ._197 @ gPaletteFade\n"
- " ldrb r1, [r0, #0x7]\n"
- " mov r0, #0x80\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " bne ._196 @cond_branch\n"
- " ldr r0, ._197 + 4 @ CB2_InitTitleScreen\n"
- " bl SetMainCallback2\n"
- "._196:\n"
- " bl RunTasks\n"
- " bl AnimateSprites\n"
- " bl BuildOamBuffer\n"
- " bl UpdatePaletteFade\n"
- " add sp, sp, #0x4\n"
- " pop {r4}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._198:\n"
- " .align 2, 0\n"
- "._197:\n"
- " .word gPaletteFade\n"
- " .word CB2_InitTitleScreen+1\n"
- "\n"
- );
+ switch (gMain.state)
+ {
+ case 0:
+ Menu_DrawStdWindowFrame(3, 14, 27, 19);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ gMain.state++;
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ {
+ if (gMain.heldKeys & 0x100)
+ gUnknown_Debug_30030E0++;
+ MenuPrintMessage(Str_843DA70, 4, 15);
+ gMain.state++;
+ }
+ break;
+ case 2:
+ if (Menu_UpdateWindowText())
+ {
+ gMain.state++;
+ gLinkType = 0x5501;
+ OpenLink();
+ }
+ break;
+ case 3:
+ if (gReceivedRemoteLinkPlayers != 0)
+ {
+ gMain.state++;
+ MenuPrintMessage(Str_843DA84, 4, 15);
+ }
+ break;
+ case 4:
+ if (Menu_UpdateWindowText())
+ {
+ CreateTask(debug_sub_815D04C, 10);
+ gMain.state++;
+ }
+ break;
+ case 6:
+ MenuPrintMessage(Str_843DA98, 4, 15);
+ SendBlock(0, gSharedMem + 0x4000, 0x2004);
+ gMain.state++;
+ break;
+ case 7:
+ Menu_UpdateWindowText();
+ if (IsLinkTaskFinished())
+ gMain.state++;
+ break;
+ case 8:
+ sub_800832C();
+ gMain.state++;
+ break;
+ case 9:
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ Menu_BlankWindowRect(4, 15, 26, 18);
+ Menu_PrintText(Str_843DAA3, 4, 15);
+ gMain.state++;
+ }
+ break;
+ case 10:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gMain.state++;
+ }
+ break;
+ case 11:
+ if (!gPaletteFade.active)
+ SetMainCallback2(CB2_InitTitleScreen);
+ break;
+ }
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
}
#endif