summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/engine/sprite.c2
-rw-r--r--src/pokemon/mail.c1706
2 files changed, 341 insertions, 1367 deletions
diff --git a/src/engine/sprite.c b/src/engine/sprite.c
index df8c66750..a9d84e01a 100644
--- a/src/engine/sprite.c
+++ b/src/engine/sprite.c
@@ -815,7 +815,7 @@ void ProcessSpriteCopyRequests(void)
}
}
-/*static*/ void RequestSpriteFrameImageCopy(u16 index, u16 tileNum, const struct SpriteFrameImage *images)
+static void RequestSpriteFrameImageCopy(u16 index, u16 tileNum, const struct SpriteFrameImage *images)
{
if (gSpriteCopyRequestCount < MAX_SPRITE_COPY_REQUESTS)
{
diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c
index 11851410b..16252af64 100644
--- a/src/pokemon/mail.c
+++ b/src/pokemon/mail.c
@@ -1,7 +1,10 @@
#include "global.h"
#include "mail.h"
+#include "data2.h"
#include "easy_chat.h"
#include "constants/items.h"
+#include "constants/species.h"
+#include "field_fadetransition.h"
#include "graphics.h"
#include "mail_data.h"
#include "menu.h"
@@ -10,6 +13,7 @@
#include "palette.h"
#include "pokemon_icon.h"
#include "overworld.h"
+#include "script.h"
#include "sprite.h"
#include "string_util.h"
#include "strings2.h"
@@ -18,6 +22,8 @@
#include "scanline_effect.h"
#include "ewram.h"
+extern u8 (*gMenuCallback)(void);
+
struct UnkMailStruct
{
u8 unk_0_0:2;
@@ -287,31 +293,6 @@ const u8 Str_8411608[] = _("メールをけす"); // Delete Mail
// XXX: what is this?
static u8 *const sSharedMemPtr = gSharedMem;
-#if DEBUG
-
-const u8 Str_841160F[] = _("{STR_VAR_1} {STR_VAR_2}");
-const u8 Str_841161A[] = _("メール{STR_VAR_1} {STR_VAR_2}");
-const u8 Str_8411623[] = _("メール{STR_VAR_1}を だれに もたせる?");
-const u8 Str_8411634[] = _("000 {STR_VAR_1}");
-const u8 Str_841163B[] = _("せいきの データが とうろくずみ です\n"
- "しんき とうろく できません");
-const u8 Str_841165E[] = _("せいきに とうろくされたメールデータは\n"
- "へんこう できません");
-const u8 Str_841167D[] = _("メール{STR_VAR_1} とうろく かいじょ");
-const u8 Str_841168D[] = _("デバッグメニューから とうろくした\n"
- "メール いがいは けせません");
-const u8 Str_84116AE[] = _("メール{STR_VAR_1} {STR_VAR_2} {STR_VAR_3}");
-
-const struct MenuAction _84116BC[] =
-{
- {Str_84115F4, NULL},
- {Str_84115FB, NULL},
- {Str_8411603, NULL},
- {Str_8411608, NULL},
-};
-
-#endif
-
static u8 sub_80F8A28(void);
/*static*/ void sub_80F8D50(void);
static void sub_80F8DA0(void);
@@ -322,226 +303,44 @@ static void sub_80F8F58(void);
static void sub_80F8F78(void);
static void sub_80F8FB4(void);
+extern u16 gSpecialVar_0x8004;
+extern u16 gSpecialVar_0x8005;
+extern u16 gSpecialVar_0x8006;
+
#if DEBUG
-// some debug variable, I guess.
-// TODO: where exactly is this located?
-__attribute__((section(".bss"))) /*static*/ u8 gUnknown_0300074C = 0;
+static u8 gUnknown_Debug_0300079C;
#endif
-#if DEBUG
-__attribute__((naked))
-void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2)
-{
- asm(
- " push {r4, r5, r6, lr}\n"
- " add sp, sp, #0xfffffffc\n"
- " add r4, r0, #0\n"
- " add r6, r1, #0\n"
- " lsl r2, r2, #0x18\n"
- " lsr r5, r2, #0x18\n"
- " ldr r0, .__3\n"
- " ldrb r3, [r0]\n"
- " cmp r3, #0\n"
- " beq .__1 @cond_branch\n"
- " ldr r2, .__3 + 4\n"
- " add r1, r2, #0\n"
- " add r1, r1, #0xff\n"
- " mov r0, #0x5\n"
- " strb r0, [r1]\n"
- " ldr r0, .__3 + 8\n"
- " ldrh r1, [r0]\n"
- " mov r3, #0x80\n"
- " lsl r3, r3, #0x1\n"
- " add r0, r2, r3\n"
- " strb r1, [r0]\n"
- " mov r0, #0x82\n"
- " lsl r0, r0, #0x1\n"
- " add r1, r2, r0\n"
- " ldr r0, .__3 + 12\n"
- " str r0, [r1]\n"
- " add r3, r3, #0x8\n"
- " add r1, r2, r3\n"
- " ldr r0, .__3 + 16\n"
- " str r0, [r1]\n"
- " ldr r0, .__3 + 20\n"
- " ldrh r1, [r0]\n"
- " b .__2\n"
- ".__4:\n"
- " .align 2, 0\n"
- ".__3:\n"
- " .word gUnknown_0300074C\n"
- " .word +0x2000000\n"
- " .word gSpecialVar_0x8004\n"
- " .word EasyChat_GetWordText+1\n"
- " .word ConvertEasyChatWordsToString+1\n"
- " .word gSpecialVar_0x8006\n"
- ".__1:\n"
- " ldr r2, .__7\n"
- " add r1, r2, #0\n"
- " add r1, r1, #0xff\n"
- " mov r0, #0x5\n"
- " strb r0, [r1]\n"
- " add r0, r0, #0xfb\n"
- " add r1, r2, r0\n"
- " mov r0, #0x1\n"
- " strb r0, [r1]\n"
- " mov r0, #0x82\n"
- " lsl r0, r0, #0x1\n"
- " add r1, r2, r0\n"
- " ldr r0, .__7 + 4\n"
- " str r0, [r1]\n"
- " mov r0, #0x84\n"
- " lsl r0, r0, #0x1\n"
- " add r1, r2, r0\n"
- " ldr r0, .__7 + 8\n"
- " str r0, [r1]\n"
- " ldrh r1, [r4, #0x20]\n"
- " add r0, r1, #0\n"
- " sub r0, r0, #0x79\n"
- " lsl r0, r0, #0x10\n"
- " lsr r0, r0, #0x10\n"
- " cmp r0, #0xb\n"
- " bhi .__5 @cond_branch\n"
- " sub r1, r1, #0x79\n"
- ".__2:\n"
- " add r0, r2, #0\n"
- " add r0, r0, #0xfa\n"
- " strb r1, [r0]\n"
- " b .__6\n"
- ".__8:\n"
- " .align 2, 0\n"
- ".__7:\n"
- " .word +0x2000000\n"
- " .word EasyChat_GetWordText+1\n"
- " .word ConvertEasyChatWordsToString+1\n"
- ".__5:\n"
- " add r0, r2, #0\n"
- " add r0, r0, #0xfa\n"
- " strb r3, [r0]\n"
- " mov r5, #0x0\n"
- ".__6:\n"
- " ldr r1, .__12\n"
- " mov r2, #0x80\n"
- " lsl r2, r2, #0x1\n"
- " add r0, r1, r2\n"
- " ldrb r0, [r0]\n"
- " cmp r0, #0\n"
- " beq .__9 @cond_branch\n"
- " cmp r0, #0x1\n"
- " beq .__10 @cond_branch\n"
- ".__9:\n"
- " mov r3, #0x86\n"
- " lsl r3, r3, #0x1\n"
- " add r2, r1, r3\n"
- " add r0, r1, #0\n"
- " add r0, r0, #0xfa\n"
- " ldrb r0, [r0]\n"
- " lsl r0, r0, #0x3\n"
- " ldr r1, .__12 + 4\n"
- " b .__11\n"
- ".__13:\n"
- " .align 2, 0\n"
- ".__12:\n"
- " .word +0x2000000\n"
- " .word gUnknown_083E5730\n"
- ".__10:\n"
- " mov r0, #0x86\n"
- " lsl r0, r0, #0x1\n"
- " add r2, r1, r0\n"
- " add r0, r1, #0\n"
- " add r0, r0, #0xfa\n"
- " ldrb r0, [r0]\n"
- " lsl r0, r0, #0x3\n"
- " ldr r1, .__18\n"
- ".__11:\n"
- " add r0, r0, r1\n"
- " str r0, [r2]\n"
- " ldrh r0, [r4, #0x1e]\n"
- " mov r1, sp\n"
- " bl MailSpeciesToSpecies\n"
- " lsl r0, r0, #0x10\n"
- " ldr r1, .__18 + 4\n"
- " add r0, r0, r1\n"
- " mov r1, #0xcd\n"
- " lsl r1, r1, #0x11\n"
- " cmp r0, r1\n"
- " bhi .__14 @cond_branch\n"
- " ldr r0, .__18 + 8\n"
- " add r1, r0, #0\n"
- " add r1, r1, #0xfa\n"
- " ldrb r2, [r1]\n"
- " add r1, r0, #0\n"
- " cmp r2, #0x6\n"
- " beq .__15 @cond_branch\n"
- " cmp r2, #0x9\n"
- " beq .__16 @cond_branch\n"
- " b .__17\n"
- ".__19:\n"
- " .align 2, 0\n"
- ".__18:\n"
- " .word gUnknown_083E57A4\n"
- " .word 0xffff0000\n"
- " .word +0x2000000\n"
- ".__15:\n"
- " add r2, r1, #0\n"
- " add r2, r2, #0xfb\n"
- " mov r0, #0x1\n"
- " b .__21\n"
- ".__16:\n"
- " add r2, r1, #0\n"
- " add r2, r2, #0xfb\n"
- " mov r0, #0x2\n"
- " b .__21\n"
- ".__14:\n"
- " ldr r1, .__22\n"
- ".__17:\n"
- " add r2, r1, #0\n"
- " add r2, r2, #0xfb\n"
- " mov r0, #0x0\n"
- ".__21:\n"
- " strb r0, [r2]\n"
- " add r0, r1, #0\n"
- " add r0, r0, #0xf4\n"
- " str r4, [r0]\n"
- " sub r0, r0, #0x8\n"
- " str r6, [r0]\n"
- " add r0, r0, #0xc\n"
- " strb r5, [r0]\n"
- " ldr r0, .__22 + 4\n"
- " bl SetMainCallback2\n"
- " add sp, sp, #0x4\n"
- " pop {r4, r5, r6}\n"
- " pop {r0}\n"
- " bx r0\n"
- ".__23:\n"
- " .align 2, 0\n"
- ".__22:\n"
- " .word +0x2000000\n"
- " .word sub_80F8D50+1\n"
- "\n"
- );
-}
-#else
void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2)
{
- u16 mailDesign;
u16 buffer[2];
+ u16 species;
- ewram0_4.varFF = GAME_LANGUAGE;
- ewram0_4.var100 = 1;
- ewram0_4.var104 = (MainCallback)EasyChat_GetWordText;
- ewram0_4.var108 = (MainCallback)ConvertEasyChatWordsToString;
-
- mailDesign = arg0->itemId - ITEM_ORANGE_MAIL;
-
- if (mailDesign <= 11)
+#if DEBUG
+ if (gUnknown_Debug_0300079C != 0)
{
- ewram0_4.varFA = arg0->itemId - ITEM_ORANGE_MAIL;
+ ewram0_4.varFF = GAME_LANGUAGE;
+ ewram0_4.var100 = gSpecialVar_0x8004;
+ ewram0_4.var104 = (MainCallback)EasyChat_GetWordText;
+ ewram0_4.var108 = (MainCallback)ConvertEasyChatWordsToString;
+ ewram0_4.varFA = gSpecialVar_0x8006;
}
else
+#endif
{
- ewram0_4.varFA = 0;
- arg2 = FALSE;
+ ewram0_4.varFF = GAME_LANGUAGE;
+ ewram0_4.var100 = 1;
+ ewram0_4.var104 = (MainCallback)EasyChat_GetWordText;
+ ewram0_4.var108 = (MainCallback)ConvertEasyChatWordsToString;
+ if (IS_ITEM_MAIL(arg0->itemId))
+ {
+ ewram0_4.varFA = arg0->itemId - 0x79;
+ }
+ else
+ {
+ ewram0_4.varFA = 0;
+ arg2 = FALSE;
+ }
}
switch (ewram0_4.var100)
@@ -550,24 +349,22 @@ void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2)
default:
ewram0_4.var10C = &gUnknown_083E5730[ewram0_4.varFA];
break;
-
case 1:
ewram0_4.var10C = &gUnknown_083E57A4[ewram0_4.varFA];
break;
}
- if (((MailSpeciesToSpecies(arg0->species, buffer) << 16) + 0xFFFF0000) <= (410 << 16))
+ species = MailSpeciesToSpecies(arg0->species, buffer);
+ if (species >= 1 && species <= 411)
{
switch (ewram0_4.varFA)
{
case 6:
ewram0_4.varFB = 1;
break;
-
case 9:
ewram0_4.varFB = 2;
break;
-
default:
ewram0_4.varFB = 0;
break;
@@ -578,14 +375,12 @@ void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2)
ewram0_4.varFB = 0;
}
-
ewram0_4.varF4 = arg0;
ewram0_4.varEC = arg1;
ewram0_4.varF8 = arg2;
SetMainCallback2(sub_80F8D50);
}
-#endif
#define RETURN_UP_STATE break
#define RETURN_SKIP_STATE return FALSE
@@ -849,1180 +644,359 @@ static void sub_80F8F78(void)
}
}
-#if DEBUG
-__attribute__((naked))
-void sub_80F8FB4()
-{
- asm(
- " push {r4, lr}\n"
- " bl UpdatePaletteFade\n"
- " lsl r0, r0, #0x18\n"
- " cmp r0, #0\n"
- " bne ._135 @cond_branch\n"
- " ldr r4, ._138\n"
- " add r0, r4, #0\n"
- " add r0, r0, #0xec\n"
- " ldr r0, [r0]\n"
- " bl SetMainCallback2\n"
- " add r0, r4, #0\n"
- " add r0, r0, #0xfb\n"
- " ldrb r0, [r0]\n"
- " cmp r0, #0x2\n"
- " bgt ._137 @cond_branch\n"
- " cmp r0, #0x1\n"
- " blt ._137 @cond_branch\n"
- " add r0, r4, #0\n"
- " add r0, r0, #0xf4\n"
- " ldr r0, [r0]\n"
- " ldrh r0, [r0, #0x1e]\n"
- " bl sub_809D4A8\n"
- " lsl r0, r0, #0x10\n"
- " lsr r0, r0, #0x10\n"
- " bl sub_809D608\n"
- " add r0, r4, #0\n"
- " add r0, r0, #0xfc\n"
- " ldrb r1, [r0]\n"
- " lsl r0, r1, #0x4\n"
- " add r0, r0, r1\n"
- " lsl r0, r0, #0x2\n"
- " ldr r1, ._138 + 4\n"
- " add r0, r0, r1\n"
- " bl sub_809D510\n"
- "._137:\n"
- " bl ResetPaletteFade\n"
- "._135:\n"
- " pop {r4}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._139:\n"
- " .align 2, 0\n"
- "._138:\n"
- " .word +0x2000000\n"
- " .word gSprites\n"
- "\n"
- );
-}
-#else
static void sub_80F8FB4(void)
{
- u16 local1;
-
- if (UpdatePaletteFade())
+ if (!UpdatePaletteFade())
{
- return;
+ SetMainCallback2(ewram0_4.varEC);
+ switch (ewram0_4.varFB)
+ {
+ case 2:
+ case 1:
+ sub_809D608(sub_809D4A8(ewram0_4.varF4->species));
+ sub_809D510(&gSprites[ewram0_4.varFC]);
+ break;
+ }
+#if !DEBUG
+ memset(&ewram0_4, 0, 0x110);
+#endif
+ ResetPaletteFade();
}
+}
- SetMainCallback2(ewram0_4.varEC);
- switch (ewram0_4.varFB)
- {
- case 2:
- case 1:
- local1 = sub_809D4A8(ewram0_4.varF4->species);
- sub_809D608(local1);
+#if DEBUG
- sub_809D510(&gSprites[ewram0_4.varFC]);
- break;
- }
+void debug_sub_810CA7C(u8);
+void debug_sub_810CE1C(u8);
+void debug_sub_810D388(void);
+void debug_sub_810D340(void);
- memset(&ewram0_4, 0, 0x110);
- ResetPaletteFade();
+void debug_sub_810C910(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ gUnknown_Debug_0300079C = 1;
+ Menu_EraseScreen();
+ DestroyTask(taskId);
+ if (gSaveBlock1.mail[gSpecialVar_0x8005].itemId == 0)
+ HandleReadMail(&gSaveBlock1.mail[gSpecialVar_0x8005], debug_sub_810D388, 0);
+ else
+ HandleReadMail(&gSaveBlock1.mail[gSpecialVar_0x8005], debug_sub_810D388, 1);
+ }
}
-#endif
-#if DEBUG
-__attribute__((naked))
-void debug_sub_810C910()
+void debug_sub_810C990(u8 taskId)
{
- asm(
- " push {r4, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r4, r0, #0x18\n"
- " ldr r0, ._143\n"
- " ldrb r1, [r0, #0x7]\n"
- " mov r0, #0x80\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " bne ._142 @cond_branch\n"
- " ldr r1, ._143 + 4\n"
- " mov r0, #0x1\n"
- " strb r0, [r1]\n"
- " bl Menu_EraseScreen\n"
- " add r0, r4, #0\n"
- " bl DestroyTask\n"
- " ldr r2, ._143 + 8\n"
- " ldr r0, ._143 + 12\n"
- " ldrh r1, [r0]\n"
- " lsl r0, r1, #0x3\n"
- " add r0, r0, r1\n"
- " lsl r1, r0, #0x2\n"
- " add r0, r1, r2\n"
- " ldr r3, ._143 + 16\n"
- " add r0, r0, r3\n"
- " ldrh r0, [r0]\n"
- " cmp r0, #0\n"
- " bne ._141 @cond_branch\n"
- " sub r3, r3, #0x20\n"
- " add r0, r2, r3\n"
- " add r0, r1, r0\n"
- " ldr r1, ._143 + 20\n"
- " mov r2, #0x0\n"
- " bl HandleReadMail\n"
- " b ._142\n"
- "._144:\n"
- " .align 2, 0\n"
- "._143:\n"
- " .word gPaletteFade\n"
- " .word gUnknown_0300074C\n"
- " .word gSaveBlock1\n"
- " .word gSpecialVar_0x8005\n"
- " .word 0x2b6c\n"
- " .word debug_sub_810D388+1\n"
- "._141:\n"
- " ldr r3, ._145\n"
- " add r0, r2, r3\n"
- " add r0, r1, r0\n"
- " ldr r1, ._145 + 4\n"
- " mov r2, #0x1\n"
- " bl HandleReadMail\n"
- "._142:\n"
- " pop {r4}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._146:\n"
- " .align 2, 0\n"
- "._145:\n"
- " .word 0x2b4c\n"
- " .word debug_sub_810D388+1\n"
- "\n"
- );
+ if (gMain.newKeys & (DPAD_LEFT | DPAD_DOWN))
+ {
+ gSpecialVar_0x8006 = (gSpecialVar_0x8006 + 11) % 12;
+ Menu_DrawStdWindowFrame(1, 1, 10, 4);
+ Menu_PrintText(_84115C4[gSpecialVar_0x8006], 2, 2);
+ }
+ else if (gMain.newKeys & (DPAD_UP | DPAD_RIGHT))
+ {
+ gSpecialVar_0x8006 = (gSpecialVar_0x8006 + 1) % 12;
+ Menu_DrawStdWindowFrame(1, 1, 10, 4);
+ Menu_PrintText(_84115C4[gSpecialVar_0x8006], 2, 2);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gTasks[taskId].func = debug_sub_810C910;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(Str_8411540, 4, 15);
+ Menu_PrintText(_8411560[gSpecialVar_0x8004], 2, 2);
+ gTasks[taskId].func = debug_sub_810CA7C;
+ }
}
-__attribute__((naked))
-void debug_sub_810C990()
+void debug_sub_810CA7C(u8 taskId)
{
- asm(
- " push {r4, r5, lr}\n"
- " add sp, sp, #0xfffffffc\n"
- " lsl r0, r0, #0x18\n"
- " lsr r4, r0, #0x18\n"
- " add r5, r4, #0\n"
- " ldr r0, ._149\n"
- " ldrh r1, [r0, #0x2e]\n"
- " mov r0, #0xa0\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._147 @cond_branch\n"
- " ldr r4, ._149 + 4\n"
- " ldrh r0, [r4]\n"
- " add r0, r0, #0xb\n"
- " b ._148\n"
- "._150:\n"
- " .align 2, 0\n"
- "._149:\n"
- " .word gMain\n"
- " .word gSpecialVar_0x8006\n"
- "._147:\n"
- " mov r2, #0x50\n"
- " and r2, r2, r1\n"
- " cmp r2, #0\n"
- " beq ._151 @cond_branch\n"
- " ldr r4, ._153\n"
- " ldrh r0, [r4]\n"
- " add r0, r0, #0x1\n"
- "._148:\n"
- " mov r1, #0xc\n"
- " bl __modsi3\n"
- " strh r0, [r4]\n"
- " mov r0, #0x1\n"
- " mov r1, #0x1\n"
- " mov r2, #0xa\n"
- " mov r3, #0x4\n"
- " bl Menu_DrawStdWindowFrame\n"
- " ldr r1, ._153 + 4\n"
- " ldrh r0, [r4]\n"
- " lsl r0, r0, #0x2\n"
- " add r0, r0, r1\n"
- " ldr r0, [r0]\n"
- " mov r1, #0x2\n"
- " mov r2, #0x2\n"
- " bl Menu_PrintText\n"
- " b ._159\n"
- "._154:\n"
- " .align 2, 0\n"
- "._153:\n"
- " .word gSpecialVar_0x8006\n"
- " .word _84115C4\n"
- "._151:\n"
- " mov r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._155 @cond_branch\n"
- " mov r0, #0x1\n"
- " neg r0, r0\n"
- " str r2, [sp]\n"
- " mov r1, #0x0\n"
- " mov r2, #0x0\n"
- " mov r3, #0x10\n"
- " bl BeginNormalPaletteFade\n"
- " ldr r1, ._157\n"
- " lsl r0, r4, #0x2\n"
- " add r0, r0, r4\n"
- " lsl r0, r0, #0x3\n"
- " add r0, r0, r1\n"
- " ldr r1, ._157 + 4\n"
- " b ._156\n"
- "._158:\n"
- " .align 2, 0\n"
- "._157:\n"
- " .word gTasks\n"
- " .word debug_sub_810C910+1\n"
- "._155:\n"
- " mov r0, #0x2\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._159 @cond_branch\n"
- " bl Menu_DisplayDialogueFrame\n"
- " ldr r0, ._160\n"
- " mov r1, #0x4\n"
- " mov r2, #0xf\n"
- " bl Menu_PrintText\n"
- " ldr r1, ._160 + 4\n"
- " ldr r0, ._160 + 8\n"
- " ldrh r0, [r0]\n"
- " lsl r0, r0, #0x2\n"
- " add r0, r0, r1\n"
- " ldr r0, [r0]\n"
- " mov r1, #0x2\n"
- " mov r2, #0x2\n"
- " bl Menu_PrintText\n"
- " ldr r1, ._160 + 12\n"
- " lsl r0, r5, #0x2\n"
- " add r0, r0, r5\n"
- " lsl r0, r0, #0x3\n"
- " add r0, r0, r1\n"
- " ldr r1, ._160 + 16\n"
- "._156:\n"
- " str r1, [r0]\n"
- "._159:\n"
- " add sp, sp, #0x4\n"
- " pop {r4, r5}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._161:\n"
- " .align 2, 0\n"
- "._160:\n"
- " .word Str_8411540\n"
- " .word _8411560\n"
- " .word gSpecialVar_0x8004\n"
- " .word gTasks\n"
- " .word debug_sub_810CA7C+1\n"
- "\n"
- );
+ if (gMain.newKeys & 0xF0)
+ {
+ gSpecialVar_0x8004 ^= 1;
+ Menu_PrintText(_8411560[gSpecialVar_0x8004], 2, 2);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ if (gMain.watchedKeysPressed)
+ {
+ gMain.watchedKeysPressed = FALSE;
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(Str_8411540, 4, 15);
+ Menu_DrawStdWindowFrame(1, 1, 10, 4);
+ Menu_PrintText(_8411560[gSpecialVar_0x8004], 2, 2);
+ }
+ else
+ {
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(Str_8411568, 4, 15);
+ Menu_DrawStdWindowFrame(1, 1, 10, 4);
+ Menu_PrintText(_84115C4[gSpecialVar_0x8006], 2, 2);
+ gTasks[taskId].func = debug_sub_810C990;
+ }
+ }
}
-__attribute__((naked))
-void debug_sub_810CA7C()
+void debug_sub_810CB50(u8 taskId)
{
- asm(
- " push {r4, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r4, r0, #0x18\n"
- " ldr r3, ._164\n"
- " ldrh r1, [r3, #0x2e]\n"
- " mov r2, #0xf0\n"
- " and r2, r2, r1\n"
- " cmp r2, #0\n"
- " beq ._162 @cond_branch\n"
- " ldr r2, ._164 + 4\n"
- " ldrh r0, [r2]\n"
- " mov r1, #0x1\n"
- " eor r0, r0, r1\n"
- " strh r0, [r2]\n"
- " ldr r1, ._164 + 8\n"
- " ldrh r0, [r2]\n"
- " b ._163\n"
- "._165:\n"
- " .align 2, 0\n"
- "._164:\n"
- " .word gMain\n"
- " .word gSpecialVar_0x8004\n"
- " .word _8411560\n"
- "._162:\n"
- " mov r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._168 @cond_branch\n"
- " ldrh r0, [r3, #0x34]\n"
- " cmp r0, #0\n"
- " beq ._167 @cond_branch\n"
- " strh r2, [r3, #0x34]\n"
- " bl Menu_DisplayDialogueFrame\n"
- " ldr r0, ._169\n"
- " mov r1, #0x4\n"
- " mov r2, #0xf\n"
- " bl Menu_PrintText\n"
- " mov r0, #0x1\n"
- " mov r1, #0x1\n"
- " mov r2, #0xa\n"
- " mov r3, #0x4\n"
- " bl Menu_DrawStdWindowFrame\n"
- " ldr r1, ._169 + 4\n"
- " ldr r0, ._169 + 8\n"
- " ldrh r0, [r0]\n"
- "._163:\n"
- " lsl r0, r0, #0x2\n"
- " add r0, r0, r1\n"
- " ldr r0, [r0]\n"
- " mov r1, #0x2\n"
- " mov r2, #0x2\n"
- " bl Menu_PrintText\n"
- " b ._168\n"
- "._170:\n"
- " .align 2, 0\n"
- "._169:\n"
- " .word Str_8411540\n"
- " .word _8411560\n"
- " .word gSpecialVar_0x8004\n"
- "._167:\n"
- " bl Menu_DisplayDialogueFrame\n"
- " ldr r0, ._171\n"
- " mov r1, #0x4\n"
- " mov r2, #0xf\n"
- " bl Menu_PrintText\n"
- " mov r0, #0x1\n"
- " mov r1, #0x1\n"
- " mov r2, #0xa\n"
- " mov r3, #0x4\n"
- " bl Menu_DrawStdWindowFrame\n"
- " ldr r1, ._171 + 4\n"
- " ldr r0, ._171 + 8\n"
- " ldrh r0, [r0]\n"
- " lsl r0, r0, #0x2\n"
- " add r0, r0, r1\n"
- " ldr r0, [r0]\n"
- " mov r1, #0x2\n"
- " mov r2, #0x2\n"
- " bl Menu_PrintText\n"
- " ldr r1, ._171 + 12\n"
- " lsl r0, r4, #0x2\n"
- " add r0, r0, r4\n"
- " lsl r0, r0, #0x3\n"
- " add r0, r0, r1\n"
- " ldr r1, ._171 + 16\n"
- " str r1, [r0]\n"
- "._168:\n"
- " pop {r4}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._172:\n"
- " .align 2, 0\n"
- "._171:\n"
- " .word Str_8411568\n"
- " .word _84115C4\n"
- " .word gSpecialVar_0x8006\n"
- " .word gTasks\n"
- " .word debug_sub_810C990+1\n"
- "\n"
- );
+ u8 sp0[] = _("{STR_VAR_1} {STR_VAR_2}");
+ u8 sp8[] = _("メール{STR_VAR_1} {STR_VAR_2}");
+ bool8 r2 = FALSE;
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ ConvertIntToDecimalStringN(gStringVar1, gSpecialVar_0x8005, 2, 1);
+ StringCopy(gStringVar2, gSpeciesNames[gTasks[taskId].data[0]]);
+ gSaveBlock1.mail[gSpecialVar_0x8005].species = gTasks[taskId].data[0];
+ StringExpandPlaceholders(gStringVar4, sp8);
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(gStringVar4, 4, 15);
+ DestroyTask(taskId);
+ CreateTask(debug_sub_810CE1C, 0);
+ debug_sub_810D340();
+ return;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ DestroyTask(taskId);
+ Menu_EraseScreen();
+ CreateTask(debug_sub_810CE1C, 0);
+ debug_sub_810D340();
+ return;
+ }
+ else if (gMain.newKeys & (DPAD_LEFT | DPAD_DOWN))
+ {
+ gTasks[taskId].data[0] = (gTasks[taskId].data[0] + 0x19B) % 0x19C;
+ r2 = TRUE;
+ }
+ else if (gMain.newKeys & (DPAD_UP | DPAD_RIGHT))
+ {
+ gTasks[taskId].data[0] = (gTasks[taskId].data[0] + 1) % 0x19C;
+ r2 = TRUE;
+ }
+
+ if (r2)
+ {
+ ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[0], 2, 3);
+ StringCopy(gStringVar2, gSpeciesNames[gTasks[taskId].data[0]]);
+ StringExpandPlaceholders(gStringVar4, sp0);
+ Menu_DrawStdWindowFrame(0, 0, 12, 3);
+ Menu_PrintText(gStringVar4, 1, 1);
+ }
}
-__attribute__((naked))
-void debug_sub_810CB50()
+void debug_sub_810CCEC(u8 taskId)
{
- asm(
- " push {r4, r5, r6, r7, lr}\n"
- " add sp, sp, #0xffffffec\n"
- " lsl r0, r0, #0x18\n"
- " lsr r6, r0, #0x18\n"
- " ldr r1, ._175\n"
- " mov r0, sp\n"
- " mov r2, #0x6\n"
- " bl memcpy\n"
- " add r7, sp, #0x8\n"
- " ldr r1, ._175 + 4\n"
- " add r0, r7, #0\n"
- " mov r2, #0x9\n"
- " bl memcpy\n"
- " mov r2, #0x0\n"
- " ldr r0, ._175 + 8\n"
- " ldrh r1, [r0, #0x2e]\n"
- " mov r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._173 @cond_branch\n"
- " ldr r0, ._175 + 12\n"
- " ldr r5, ._175 + 16\n"
- " ldrh r1, [r5]\n"
- " mov r2, #0x2\n"
- " mov r3, #0x1\n"
- " bl ConvertIntToDecimalStringN\n"
- " ldr r0, ._175 + 20\n"
- " ldr r1, ._175 + 24\n"
- " lsl r4, r6, #0x2\n"
- " add r4, r4, r6\n"
- " lsl r4, r4, #0x3\n"
- " add r4, r4, r1\n"
- " mov r1, #0x8\n"
- " ldsh r2, [r4, r1]\n"
- " mov r1, #0xb\n"
- " mul r1, r1, r2\n"
- " ldr r2, ._175 + 28\n"
- " add r1, r1, r2\n"
- " bl StringCopy\n"
- " ldr r2, ._175 + 32\n"
- " ldrh r1, [r5]\n"
- " lsl r0, r1, #0x3\n"
- " add r0, r0, r1\n"
- " lsl r0, r0, #0x2\n"
- " add r0, r0, r2\n"
- " ldrh r1, [r4, #0x8]\n"
- " ldr r2, ._175 + 36\n"
- " add r0, r0, r2\n"
- " strh r1, [r0]\n"
- " ldr r4, ._175 + 40\n"
- " add r0, r4, #0\n"
- " add r1, r7, #0\n"
- " bl StringExpandPlaceholders\n"
- " bl Menu_DisplayDialogueFrame\n"
- " add r0, r4, #0\n"
- " mov r1, #0x4\n"
- " mov r2, #0xf\n"
- " bl Menu_PrintText\n"
- " add r0, r6, #0\n"
- " bl DestroyTask\n"
- " b ._174\n"
- "._176:\n"
- " .align 2, 0\n"
- "._175:\n"
- " .word Str_841160F\n"
- " .word Str_841161A\n"
- " .word gMain\n"
- " .word gStringVar1\n"
- " .word gSpecialVar_0x8005\n"
- " .word gStringVar2\n"
- " .word gTasks\n"
- " .word gSpeciesNames\n"
- " .word gSaveBlock1\n"
- " .word 0x2b6a\n"
- " .word gStringVar4\n"
- "._173:\n"
- " mov r0, #0x2\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._177 @cond_branch\n"
- " add r0, r6, #0\n"
- " bl DestroyTask\n"
- " bl Menu_EraseScreen\n"
- "._174:\n"
- " ldr r0, ._179\n"
- " mov r1, #0x0\n"
- " bl CreateTask\n"
- " bl debug_sub_810D340\n"
- " b ._186\n"
- "._180:\n"
- " .align 2, 0\n"
- "._179:\n"
- " .word debug_sub_810CE1C+1\n"
- "._177:\n"
- " mov r0, #0xa0\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._181 @cond_branch\n"
- " ldr r0, ._183\n"
- " lsl r4, r6, #0x2\n"
- " add r4, r4, r6\n"
- " lsl r4, r4, #0x3\n"
- " add r4, r4, r0\n"
- " mov r1, #0x8\n"
- " ldsh r0, [r4, r1]\n"
- " ldr r2, ._183 + 4\n"
- " add r0, r0, r2\n"
- " mov r1, #0xce\n"
- " lsl r1, r1, #0x1\n"
- " bl __modsi3\n"
- " strh r0, [r4, #0x8]\n"
- " b ._182\n"
- "._184:\n"
- " .align 2, 0\n"
- "._183:\n"
- " .word gTasks\n"
- " .word 0x19b\n"
- "._181:\n"
- " mov r0, #0x50\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._185 @cond_branch\n"
- " ldr r0, ._187\n"
- " lsl r4, r6, #0x2\n"
- " add r4, r4, r6\n"
- " lsl r4, r4, #0x3\n"
- " add r4, r4, r0\n"
- " mov r1, #0x8\n"
- " ldsh r0, [r4, r1]\n"
- " add r0, r0, #0x1\n"
- " mov r1, #0xce\n"
- " lsl r1, r1, #0x1\n"
- " bl __modsi3\n"
- " strh r0, [r4, #0x8]\n"
- " mov r2, #0x1\n"
- "._185:\n"
- " cmp r2, #0\n"
- " beq ._186 @cond_branch\n"
- "._182:\n"
- " ldr r0, ._187 + 4\n"
- " ldr r1, ._187\n"
- " lsl r4, r6, #0x2\n"
- " add r4, r4, r6\n"
- " lsl r4, r4, #0x3\n"
- " add r4, r4, r1\n"
- " mov r2, #0x8\n"
- " ldsh r1, [r4, r2]\n"
- " mov r2, #0x2\n"
- " mov r3, #0x3\n"
- " bl ConvertIntToDecimalStringN\n"
- " ldr r0, ._187 + 8\n"
- " mov r1, #0x8\n"
- " ldsh r2, [r4, r1]\n"
- " mov r1, #0xb\n"
- " mul r1, r1, r2\n"
- " ldr r2, ._187 + 12\n"
- " add r1, r1, r2\n"
- " bl StringCopy\n"
- " ldr r4, ._187 + 16\n"
- " add r0, r4, #0\n"
- " mov r1, sp\n"
- " bl StringExpandPlaceholders\n"
- " mov r0, #0x0\n"
- " mov r1, #0x0\n"
- " mov r2, #0xc\n"
- " mov r3, #0x3\n"
- " bl Menu_DrawStdWindowFrame\n"
- " add r0, r4, #0\n"
- " mov r1, #0x1\n"
- " mov r2, #0x1\n"
- " bl Menu_PrintText\n"
- "._186:\n"
- " add sp, sp, #0x14\n"
- " pop {r4, r5, r6, r7}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._188:\n"
- " .align 2, 0\n"
- "._187:\n"
- " .word gTasks\n"
- " .word gStringVar1\n"
- " .word gStringVar2\n"
- " .word gSpeciesNames\n"
- " .word gStringVar4\n"
- "\n"
- );
+ u8 string1[] = _("メール{STR_VAR_1}を だれに もたせる?");
+ u8 string2[] = _("000 {STR_VAR_1}");
+
+ ConvertIntToDecimalStringN(gStringVar1, gSpecialVar_0x8005, 1, 1);
+ StringExpandPlaceholders(gStringVar4, string1);
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(gStringVar4, 4, 15);
+
+ StringCopy(gStringVar1, gSpeciesNames[0]);
+ StringExpandPlaceholders(gStringVar4, string2);
+ Menu_DrawStdWindowFrame(0, 0, 12, 3);
+ Menu_PrintText(string2, 1, 1); // This probably should have been gStringVar4
+
+ gTasks[taskId].func = debug_sub_810CB50;
}
-__attribute__((naked))
-void debug_sub_810CCEC()
+u8 debug_sub_810CD9C(void)
{
- asm(
- " push {r4, r5, r6, lr}\n"
- " mov r6, r8\n"
- " push {r6}\n"
- " add sp, sp, #0xffffffe4\n"
- " add r5, r0, #0\n"
- " lsl r5, r5, #0x18\n"
- " lsr r5, r5, #0x18\n"
- " ldr r1, ._189\n"
- " mov r0, sp\n"
- " mov r2, #0x11\n"
- " bl memcpy\n"
- " add r6, sp, #0x14\n"
- " ldr r1, ._189 + 4\n"
- " add r0, r6, #0\n"
- " mov r2, #0x7\n"
- " bl memcpy\n"
- " ldr r0, ._189 + 8\n"
- " mov r8, r0\n"
- " ldr r0, ._189 + 12\n"
- " ldrh r1, [r0]\n"
- " mov r0, r8\n"
- " mov r2, #0x1\n"
- " mov r3, #0x1\n"
- " bl ConvertIntToDecimalStringN\n"
- " ldr r4, ._189 + 16\n"
- " add r0, r4, #0\n"
- " mov r1, sp\n"
- " bl StringExpandPlaceholders\n"
- " bl Menu_DisplayDialogueFrame\n"
- " add r0, r4, #0\n"
- " mov r1, #0x4\n"
- " mov r2, #0xf\n"
- " bl Menu_PrintText\n"
- " ldr r1, ._189 + 20\n"
- " mov r0, r8\n"
- " bl StringCopy\n"
- " add r0, r4, #0\n"
- " add r1, r6, #0\n"
- " bl StringExpandPlaceholders\n"
- " mov r0, #0x0\n"
- " mov r1, #0x0\n"
- " mov r2, #0xc\n"
- " mov r3, #0x3\n"
- " bl Menu_DrawStdWindowFrame\n"
- " add r0, r6, #0\n"
- " mov r1, #0x1\n"
- " mov r2, #0x1\n"
- " bl Menu_PrintText\n"
- " ldr r1, ._189 + 24\n"
- " lsl r0, r5, #0x2\n"
- " add r0, r0, r5\n"
- " lsl r0, r0, #0x3\n"
- " add r0, r0, r1\n"
- " ldr r1, ._189 + 28\n"
- " str r1, [r0]\n"
- " add sp, sp, #0x1c\n"
- " pop {r3}\n"
- " mov r8, r3\n"
- " pop {r4, r5, r6}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._190:\n"
- " .align 2, 0\n"
- "._189:\n"
- " .word Str_8411623\n"
- " .word Str_8411634\n"
- " .word gStringVar1\n"
- " .word gSpecialVar_0x8005\n"
- " .word gStringVar4\n"
- " .word gSpeciesNames\n"
- " .word gTasks\n"
- " .word debug_sub_810CB50+1\n"
- "\n"
- );
+ CloseMenu();
+ ScriptContext1_Stop();
+ ScriptContext2_Enable();
+ gUnknown_Debug_0300079C = 0;
+ gSpecialVar_0x8004 = gSpecialVar_0x8005 = gSpecialVar_0x8006 = 0;
+ SetMainCallback2(debug_sub_810D388);
+ return 1;
}
-__attribute__((naked))
-void debug_sub_810CD9C()
+void debug_sub_810CDE0(void)
{
- asm(
- " push {lr}\n"
- " bl CloseMenu\n"
- " bl ScriptContext1_Stop\n"
- " bl ScriptContext2_Enable\n"
- " ldr r1, ._191\n"
- " mov r0, #0x0\n"
- " strb r0, [r1]\n"
- " ldr r3, ._191 + 4\n"
- " ldr r2, ._191 + 8\n"
- " ldr r1, ._191 + 12\n"
- " mov r0, #0x0\n"
- " strh r0, [r1]\n"
- " strh r0, [r2]\n"
- " strh r0, [r3]\n"
- " ldr r0, ._191 + 16\n"
- " bl SetMainCallback2\n"
- " mov r0, #0x1\n"
- " pop {r1}\n"
- " bx r1\n"
- "._192:\n"
- " .align 2, 0\n"
- "._191:\n"
- " .word gUnknown_0300074C\n"
- " .word gSpecialVar_0x8004\n"
- " .word gSpecialVar_0x8005\n"
- " .word gSpecialVar_0x8006\n"
- " .word debug_sub_810D388+1\n"
- "\n"
- );
+ UpdatePaletteFade();
+ RunTasks();
}
-__attribute__((naked))
-void debug_sub_810CDE0()
+void debug_sub_810CDF0(void)
{
- asm(
- " push {lr}\n"
- " bl UpdatePaletteFade\n"
- " bl RunTasks\n"
- " pop {r0}\n"
- " bx r0\n"
- "\n"
- );
+ gMain.watchedKeysPressed = 0;
+ gMain.watchedKeysMask = 0;
+ gFieldCallback = mapldr_default;
+ SetMainCallback2(c2_exit_to_overworld_2_switch);
}
-__attribute__((naked))
-void debug_sub_810CDF0()
+void debug_sub_810CE1C(u8 taskId)
{
- asm(
- " push {lr}\n"
- " ldr r1, ._193\n"
- " mov r0, #0x0\n"
- " strh r0, [r1, #0x34]\n"
- " strh r0, [r1, #0x36]\n"
- " ldr r1, ._193 + 4\n"
- " ldr r0, ._193 + 8\n"
- " str r0, [r1]\n"
- " ldr r0, ._193 + 12\n"
- " bl SetMainCallback2\n"
- " pop {r0}\n"
- " bx r0\n"
- "._194:\n"
- " .align 2, 0\n"
- "._193:\n"
- " .word gMain\n"
- " .word gFieldCallback\n"
- " .word mapldr_default+1\n"
- " .word c2_exit_to_overworld_2_switch+1\n"
- "\n"
- );
+ if (gMenuCallback() == TRUE)
+ {
+ CloseMenu();
+ DestroyTask(taskId);
+ }
}
-__attribute__((naked))
-void debug_sub_810CE1C()
+u8 debug_sub_810CE48(void)
{
- asm(
- " push {r4, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r4, r0, #0x18\n"
- " ldr r0, ._196\n"
- " ldr r0, [r0]\n"
- " bl _call_via_r0\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- " cmp r0, #0x1\n"
- " bne ._195 @cond_branch\n"
- " bl CloseMenu\n"
- " add r0, r4, #0\n"
- " bl DestroyTask\n"
- "._195:\n"
- " pop {r4}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._197:\n"
- " .align 2, 0\n"
- "._196:\n"
- " .word gMenuCallback\n"
- "\n"
- );
+ s8 input = Menu_ProcessInput();
+
+ switch (input)
+ {
+ case -1:
+ Menu_EraseScreen();
+ debug_sub_810D340();
+ return 0;
+ case -2:
+ return 0;
+ default:
+ gSpecialVar_0x8005 = input;
+ gSpecialVar_0x8006 %= 12;
+ CreateTask(debug_sub_810CA7C, 0);
+ gMain.watchedKeysPressed = TRUE; // huh?
+ gMain.watchedKeysMask = 0;
+ return 1;
+ }
}
-__attribute__((naked))
-void debug_sub_810CE48()
+u8 debug_sub_810CEA4(void)
{
- asm(
- " push {r4, lr}\n"
- " bl Menu_ProcessInput\n"
- " lsl r0, r0, #0x18\n"
- " asr r1, r0, #0x18\n"
- " mov r0, #0x2\n"
- " neg r0, r0\n"
- " cmp r1, r0\n"
- " beq ._198 @cond_branch\n"
- " add r0, r0, #0x1\n"
- " cmp r1, r0\n"
- " bne ._199 @cond_branch\n"
- " bl Menu_EraseScreen\n"
- " bl debug_sub_810D340\n"
- "._198:\n"
- " mov r0, #0x0\n"
- " b ._200\n"
- "._199:\n"
- " ldr r0, ._201\n"
- " strh r1, [r0]\n"
- " ldr r4, ._201 + 4\n"
- " ldrh r0, [r4]\n"
- " mov r1, #0xc\n"
- " bl __umodsi3\n"
- " strh r0, [r4]\n"
- " ldr r0, ._201 + 8\n"
- " mov r1, #0x0\n"
- " bl CreateTask\n"
- " ldr r1, ._201 + 12\n"
- " mov r2, #0x0\n"
- " mov r0, #0x1\n"
- " strh r0, [r1, #0x34]\n"
- " strh r2, [r1, #0x36]\n"
- "._200:\n"
- " pop {r4}\n"
- " pop {r1}\n"
- " bx r1\n"
- "._202:\n"
- " .align 2, 0\n"
- "._201:\n"
- " .word gSpecialVar_0x8005\n"
- " .word gSpecialVar_0x8006\n"
- " .word debug_sub_810CA7C+1\n"
- " .word gMain\n"
- "\n"
- );
+ if (!gPaletteFade.active)
+ {
+ gSpecialVar_0x8004 = 4;
+ sub_80E60D8();
+ return 1;
+ }
+ return 0;
}
-__attribute__((naked))
-void debug_sub_810CEA4()
+u8 debug_sub_810CED0(void)
{
- asm(
- " push {lr}\n"
- " ldr r0, ._205\n"
- " ldrb r1, [r0, #0x7]\n"
- " mov r0, #0x80\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._203 @cond_branch\n"
- " mov r0, #0x0\n"
- " b ._204\n"
- "._206:\n"
- " .align 2, 0\n"
- "._205:\n"
- " .word gPaletteFade\n"
- "._203:\n"
- " ldr r1, ._207\n"
- " mov r0, #0x4\n"
- " strh r0, [r1]\n"
- " bl sub_80E60D8\n"
- " mov r0, #0x1\n"
- "._204:\n"
- " pop {r1}\n"
- " bx r1\n"
- "._208:\n"
- " .align 2, 0\n"
- "._207:\n"
- " .word gSpecialVar_0x8004\n"
- "\n"
- );
+ u8 text[] = _("せいきの データが とうろくずみ です\n"
+ "しんき とうろく できません");
+ s8 input = Menu_ProcessInput();
+
+ switch (input)
+ {
+ case -1:
+ Menu_EraseScreen();
+ break;
+ case -2:
+ return 0;
+ default:
+ gSpecialVar_0x8005 = input;
+ if (IS_ITEM_MAIL(gSaveBlock1.mail[input].itemId))
+ {
+ Menu_EraseScreen();
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(text, 4, 15);
+ }
+ else
+ {
+ gSaveBlock1.mail[gSpecialVar_0x8005].itemId = 0xFFFF;
+ StringCopy(gSaveBlock1.mail[gSpecialVar_0x8005].playerName, gSaveBlock2.playerName);
+ *(u32 *)gSaveBlock1.mail[gSpecialVar_0x8005].trainerId = *(u32 *)gSaveBlock2.playerTrainerId;
+ gMenuCallback = debug_sub_810CEA4;
+ return 0;
+ }
+ break;
+ }
+ debug_sub_810D340();
+ return 0;
}
-__attribute__((naked))
-void debug_sub_810CED0()
+u8 debug_sub_810CFA4(void)
{
- asm(
- " push {r4, r5, r6, lr}\n"
- " add sp, sp, #0xffffffdc\n"
- " ldr r1, ._212\n"
- " mov r0, sp\n"
- " mov r2, #0x23\n"
- " bl memcpy\n"
- " bl Menu_ProcessInput\n"
- " lsl r0, r0, #0x18\n"
- " asr r1, r0, #0x18\n"
- " mov r0, #0x2\n"
- " neg r0, r0\n"
- " cmp r1, r0\n"
- " beq ._215 @cond_branch\n"
- " add r0, r0, #0x1\n"
- " cmp r1, r0\n"
- " bne ._210 @cond_branch\n"
- " bl Menu_EraseScreen\n"
- " b ._211\n"
- "._213:\n"
- " .align 2, 0\n"
- "._212:\n"
- " .word Str_841163B\n"
- "._210:\n"
- " ldr r5, ._216\n"
- " strh r1, [r5]\n"
- " ldr r6, ._216 + 4\n"
- " lsl r0, r1, #0x3\n"
- " add r0, r0, r1\n"
- " lsl r0, r0, #0x2\n"
- " add r0, r0, r6\n"
- " ldr r1, ._216 + 8\n"
- " add r0, r0, r1\n"
- " ldrh r0, [r0]\n"
- " sub r0, r0, #0x79\n"
- " lsl r0, r0, #0x10\n"
- " lsr r0, r0, #0x10\n"
- " cmp r0, #0xb\n"
- " bls ._214 @cond_branch\n"
- " ldrh r1, [r5]\n"
- " lsl r0, r1, #0x3\n"
- " add r0, r0, r1\n"
- " lsl r0, r0, #0x2\n"
- " add r0, r0, r6\n"
- " ldr r2, ._216 + 8\n"
- " add r0, r0, r2\n"
- " ldr r1, ._216 + 12\n"
- " strh r1, [r0]\n"
- " ldrh r1, [r5]\n"
- " lsl r0, r1, #0x3\n"
- " add r0, r0, r1\n"
- " lsl r0, r0, #0x2\n"
- " sub r2, r2, #0xe\n"
- " add r1, r6, r2\n"
- " add r0, r0, r1\n"
- " ldr r4, ._216 + 16\n"
- " add r1, r4, #0\n"
- " bl StringCopy\n"
- " ldrh r1, [r5]\n"
- " lsl r0, r1, #0x3\n"
- " add r0, r0, r1\n"
- " lsl r0, r0, #0x2\n"
- " ldr r2, ._216 + 20\n"
- " add r1, r6, r2\n"
- " add r0, r0, r1\n"
- " add r4, r4, #0xa\n"
- " ldr r1, [r4]\n"
- " str r1, [r0]\n"
- " ldr r1, ._216 + 24\n"
- " ldr r0, ._216 + 28\n"
- " str r0, [r1]\n"
- " b ._215\n"
- "._217:\n"
- " .align 2, 0\n"
- "._216:\n"
- " .word gSpecialVar_0x8005\n"
- " .word gSaveBlock1\n"
- " .word 0x2b6c\n"
- " .word 0xffff\n"
- " .word gSaveBlock2\n"
- " .word 0x2b66\n"
- " .word gMenuCallback\n"
- " .word debug_sub_810CEA4+1\n"
- "._214:\n"
- " bl Menu_EraseScreen\n"
- " bl Menu_DisplayDialogueFrame\n"
- " mov r0, sp\n"
- " mov r1, #0x4\n"
- " mov r2, #0xf\n"
- " bl Menu_PrintText\n"
- "._211:\n"
- " bl debug_sub_810D340\n"
- "._215:\n"
- " mov r0, #0x0\n"
- " add sp, sp, #0x24\n"
- " pop {r4, r5, r6}\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
+ u8 text[] = _("せいきに とうろくされたメールデータは\n"
+ "へんこう できません");
+ s8 input = Menu_ProcessInput();
+
+ switch (input)
+ {
+ case -1:
+ Menu_EraseScreen();
+ debug_sub_810D340();
+ return 0;
+ case -2:
+ return 0;
+ default:
+ gSpecialVar_0x8005 = input;
+ if (IS_ITEM_MAIL(gSaveBlock1.mail[input].itemId))
+ {
+ Menu_EraseScreen();
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(text, 4, 15);
+ debug_sub_810D340();
+ return 0;
+ }
+ else
+ {
+ CreateTask(debug_sub_810CCEC, 0);
+ return 1;
+ }
+ }
}
-__attribute__((naked))
-void debug_sub_810CFA4()
+u8 debug_sub_810D030(void)
{
- asm(
- " push {lr}\n"
- " add sp, sp, #0xffffffe0\n"
- " ldr r1, ._221\n"
- " mov r0, sp\n"
- " mov r2, #0x1f\n"
- " bl memcpy\n"
- " bl Menu_ProcessInput\n"
- " lsl r0, r0, #0x18\n"
- " asr r2, r0, #0x18\n"
- " mov r0, #0x2\n"
- " neg r0, r0\n"
- " cmp r2, r0\n"
- " beq ._218 @cond_branch\n"
- " add r0, r0, #0x1\n"
- " cmp r2, r0\n"
- " bne ._219 @cond_branch\n"
- " bl Menu_EraseScreen\n"
- " b ._220\n"
- "._222:\n"
- " .align 2, 0\n"
- "._221:\n"
- " .word Str_841165E\n"
- "._219:\n"
- " ldr r0, ._225\n"
- " strh r2, [r0]\n"
- " ldr r1, ._225 + 4\n"
- " lsl r0, r2, #0x3\n"
- " add r0, r0, r2\n"
- " lsl r0, r0, #0x2\n"
- " add r0, r0, r1\n"
- " ldr r1, ._225 + 8\n"
- " add r0, r0, r1\n"
- " ldrh r0, [r0]\n"
- " sub r0, r0, #0x79\n"
- " lsl r0, r0, #0x10\n"
- " lsr r0, r0, #0x10\n"
- " cmp r0, #0xb\n"
- " bls ._223 @cond_branch\n"
- " ldr r0, ._225 + 12\n"
- " mov r1, #0x0\n"
- " bl CreateTask\n"
- " mov r0, #0x1\n"
- " b ._224\n"
- "._226:\n"
- " .align 2, 0\n"
- "._225:\n"
- " .word gSpecialVar_0x8005\n"
- " .word gSaveBlock1\n"
- " .word 0x2b6c\n"
- " .word debug_sub_810CCEC+1\n"
- "._223:\n"
- " bl Menu_EraseScreen\n"
- " bl Menu_DisplayDialogueFrame\n"
- " mov r0, sp\n"
- " mov r1, #0x4\n"
- " mov r2, #0xf\n"
- " bl Menu_PrintText\n"
- "._220:\n"
- " bl debug_sub_810D340\n"
- "._218:\n"
- " mov r0, #0x0\n"
- "._224:\n"
- " add sp, sp, #0x20\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
+ const u8 text1[] = _("メール{STR_VAR_1} とうろく かいじょ");
+ const u8 text2[] = _("デバッグメニューから とうろくした\n"
+ "メール いがいは けせません");
+ s8 input = Menu_ProcessInput();
+
+ switch (input)
+ {
+ case -1:
+ Menu_EraseScreen();
+ debug_sub_810D340();
+ return 0;
+ case -2:
+ return 0;
+ default:
+ gSpecialVar_0x8005 = input;
+ if (gSaveBlock1.mail[gSpecialVar_0x8005].itemId != 0xFFFF
+ && gSaveBlock1.mail[gSpecialVar_0x8005].itemId != 0)
+ {
+ Menu_EraseScreen();
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(text2, 4, 15);
+ debug_sub_810D340();
+ return 0;
+ }
+ else
+ {
+ s8 i;
+
+ gSaveBlock1.mail[gSpecialVar_0x8005].itemId = 0;
+ gSaveBlock1.mail[gSpecialVar_0x8005].species = 0;
+ gSaveBlock1.mail[gSpecialVar_0x8005].playerName[0] = EOS;
+ *(u32 *)gSaveBlock1.mail[gSpecialVar_0x8005].trainerId = 0;
+ for (i = 0; i < 9; i++)
+ gSaveBlock1.mail[gSpecialVar_0x8005].words[i] = 0xFFFF;
+ ConvertIntToDecimalStringN(gStringVar1, gSpecialVar_0x8005, 1, 1);
+ StringExpandPlaceholders(gStringVar4, text1);
+ Menu_EraseScreen();
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(gStringVar4, 4, 15);
+ debug_sub_810D340();
+ return 0;
+ }
+ }
}
-__attribute__((naked))
-void debug_sub_810D030()
+const u8 Str_84116AE[] = _("メール{STR_VAR_1} {STR_VAR_2} {STR_VAR_3}");
+
+const struct MenuAction _84116BC[] =
{
- asm(
- " push {r4, r5, r6, r7, lr}\n"
- " add sp, sp, #0xffffffcc\n"
- " ldr r1, ._230\n"
- " mov r0, sp\n"
- " mov r2, #0x10\n"
- " bl memcpy\n"
- " add r5, sp, #0x10\n"
- " ldr r1, ._230 + 4\n"
- " add r0, r5, #0\n"
- " mov r2, #0x21\n"
- " bl memcpy\n"
- " bl Menu_ProcessInput\n"
- " lsl r0, r0, #0x18\n"
- " asr r1, r0, #0x18\n"
- " mov r0, #0x2\n"
- " neg r0, r0\n"
- " cmp r1, r0\n"
- " beq ._227 @cond_branch\n"
- " add r0, r0, #0x1\n"
- " cmp r1, r0\n"
- " bne ._228 @cond_branch\n"
- " bl Menu_EraseScreen\n"
- " b ._229\n"
- "._231:\n"
- " .align 2, 0\n"
- "._230:\n"
- " .word Str_841167D\n"
- " .word Str_841168D\n"
- "._228:\n"
- " ldr r2, ._235\n"
- " strh r1, [r2]\n"
- " ldr r3, ._235 + 4\n"
- " ldrh r1, [r2]\n"
- " lsl r0, r1, #0x3\n"
- " add r0, r0, r1\n"
- " lsl r0, r0, #0x2\n"
- " add r0, r0, r3\n"
- " ldr r1, ._235 + 8\n"
- " add r0, r0, r1\n"
- " ldrh r1, [r0]\n"
- " ldr r0, ._235 + 12\n"
- " add r4, r2, #0\n"
- " cmp r1, r0\n"
- " beq ._233 @cond_branch\n"
- " cmp r1, #0\n"
- " beq ._233 @cond_branch\n"
- " bl Menu_EraseScreen\n"
- " bl Menu_DisplayDialogueFrame\n"
- " add r0, r5, #0\n"
- " b ._234\n"
- "._236:\n"
- " .align 2, 0\n"
- "._235:\n"
- " .word gSpecialVar_0x8005\n"
- " .word gSaveBlock1\n"
- " .word 0x2b6c\n"
- " .word 0xffff\n"
- "._233:\n"
- " ldrh r1, [r4]\n"
- " lsl r0, r1, #0x3\n"
- " add r0, r0, r1\n"
- " lsl r0, r0, #0x2\n"
- " add r0, r0, r3\n"
- " ldr r5, ._238\n"
- " add r0, r0, r5\n"
- " mov r2, #0x0\n"
- " strh r2, [r0]\n"
- " ldrh r1, [r4]\n"
- " lsl r0, r1, #0x3\n"
- " add r0, r0, r1\n"
- " lsl r0, r0, #0x2\n"
- " add r0, r0, r3\n"
- " ldr r1, ._238 + 4\n"
- " add r0, r0, r1\n"
- " strh r2, [r0]\n"
- " ldrh r1, [r4]\n"
- " lsl r0, r1, #0x3\n"
- " add r0, r0, r1\n"
- " lsl r0, r0, #0x2\n"
- " add r0, r0, r3\n"
- " sub r5, r5, #0xe\n"
- " add r0, r0, r5\n"
- " mov r1, #0xff\n"
- " strb r1, [r0]\n"
- " ldrh r1, [r4]\n"
- " lsl r0, r1, #0x3\n"
- " add r0, r0, r1\n"
- " lsl r0, r0, #0x2\n"
- " add r5, r5, #0x8\n"
- " add r1, r3, r5\n"
- " add r0, r0, r1\n"
- " str r2, [r0]\n"
- " mov r0, #0x0\n"
- " ldr r1, ._238 + 8\n"
- " mov ip, r1\n"
- " sub r5, r5, #0x1a\n"
- " add r7, r3, r5\n"
- " add r6, r4, #0\n"
- " ldr r1, ._238 + 12\n"
- " add r5, r1, #0\n"
- "._237:\n"
- " lsl r1, r0, #0x18\n"
- " asr r1, r1, #0x18\n"
- " lsl r3, r1, #0x1\n"
- " ldrh r2, [r6]\n"
- " lsl r0, r2, #0x3\n"
- " add r0, r0, r2\n"
- " lsl r0, r0, #0x2\n"
- " add r3, r3, r0\n"
- " add r3, r3, r7\n"
- " ldrh r0, [r3]\n"
- " orr r0, r0, r5\n"
- " strh r0, [r3]\n"
- " add r1, r1, #0x1\n"
- " lsl r1, r1, #0x18\n"
- " lsr r0, r1, #0x18\n"
- " asr r1, r1, #0x18\n"
- " cmp r1, #0x8\n"
- " ble ._237 @cond_branch\n"
- " ldrh r1, [r4]\n"
- " mov r0, ip\n"
- " mov r2, #0x1\n"
- " mov r3, #0x1\n"
- " bl ConvertIntToDecimalStringN\n"
- " ldr r4, ._238 + 16\n"
- " add r0, r4, #0\n"
- " mov r1, sp\n"
- " bl StringExpandPlaceholders\n"
- " bl Menu_EraseScreen\n"
- " bl Menu_DisplayDialogueFrame\n"
- " add r0, r4, #0\n"
- "._234:\n"
- " mov r1, #0x4\n"
- " mov r2, #0xf\n"
- " bl Menu_PrintText\n"
- "._229:\n"
- " bl debug_sub_810D340\n"
- "._227:\n"
- " mov r0, #0x0\n"
- " add sp, sp, #0x34\n"
- " pop {r4, r5, r6, r7}\n"
- " pop {r1}\n"
- " bx r1\n"
- "._239:\n"
- " .align 2, 0\n"
- "._238:\n"
- " .word 0x2b6c\n"
- " .word 0x2b6a\n"
- " .word gStringVar1\n"
- " .word 0xffff\n"
- " .word gStringVar4\n"
- "\n"
- );
-}
+ {Str_84115F4, NULL},
+ {Str_84115FB, NULL},
+ {Str_8411603, NULL},
+ {Str_8411608, NULL},
+};
__attribute__((naked))
void debug_sub_810D174()
@@ -2367,7 +1341,7 @@ void debug_sub_810D388()
"._300:\n"
" .align 2, 0\n"
"._299:\n"
- " .word gUnknown_0300074C\n"
+ " .word gUnknown_Debug_0300079C\n"
" .word 0x43c\n"
"._297:\n"
" bl ScanlineEffect_Stop\n"