summaryrefslogtreecommitdiff
path: root/src/pokemon/mail.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pokemon/mail.c')
-rw-r--r--src/pokemon/mail.c199
1 files changed, 199 insertions, 0 deletions
diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c
index 6e03958e6..1ad8d8376 100644
--- a/src/pokemon/mail.c
+++ b/src/pokemon/mail.c
@@ -327,6 +327,204 @@ static void sub_80F8F58(void);
static void sub_80F8F78(void);
static void sub_80F8FB4(void);
+// some debug variable, I guess.
+// TODO: where exactly is this located?
+__attribute__((section(".bss"))) /*static*/ u8 gUnknown_0300074C = 0;
+
+#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;
@@ -390,6 +588,7 @@ void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2)
SetMainCallback2(sub_80F8D50);
}
+#endif
#define RETURN_UP_STATE break
#define RETURN_SKIP_STATE return FALSE