summaryrefslogtreecommitdiff
path: root/asm/mailbox.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/mailbox.s')
-rw-r--r--asm/mailbox.s560
1 files changed, 560 insertions, 0 deletions
diff --git a/asm/mailbox.s b/asm/mailbox.s
new file mode 100644
index 0000000..6ddf963
--- /dev/null
+++ b/asm/mailbox.s
@@ -0,0 +1,560 @@
+ .include "constants/gba_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start CreateMailboxMenu
+CreateMailboxMenu:
+ push {r4-r7,lr}
+ ldr r4, _0802E380
+ ldr r0, [r4]
+ adds r0, 0xFC
+ movs r1, 0
+ movs r2, 0x10
+ bl MemoryFill16
+ ldr r1, [r4]
+ adds r2, r1, 0
+ adds r2, 0xBC
+ ldr r0, _0802E384
+ str r0, [r2]
+ adds r1, 0xC0
+ movs r0, 0x2
+ str r0, [r1]
+ bl HasNoMailinMailbox
+ lsls r0, 24
+ cmp r0, 0
+ beq _0802E2E6
+ ldr r0, [r4]
+ adds r0, 0xFC
+ movs r1, 0x1
+ strh r1, [r0]
+_0802E2E6:
+ movs r5, 0x1
+ ldr r1, [r4]
+ movs r6, 0x1
+ adds r2, r1, 0
+ adds r2, 0xC4
+ ldr r0, _0802E388
+ str r0, [r2]
+ adds r1, 0xC8
+ movs r0, 0x3
+ str r0, [r1]
+ bl HasNoAcceptedJobs
+ lsls r0, 24
+ cmp r0, 0
+ beq _0802E30A
+ ldr r0, [r4]
+ adds r0, 0xFE
+ strh r5, [r0]
+_0802E30A:
+ ldr r1, [r4]
+ adds r2, r1, 0
+ adds r2, 0xCC
+ ldr r0, _0802E38C
+ str r0, [r2]
+ adds r1, 0xD0
+ movs r0, 0x4
+ str r0, [r1]
+ bl HasNoPKMNNews
+ lsls r0, 24
+ cmp r0, 0
+ beq _0802E32E
+ ldr r0, [r4]
+ movs r1, 0x80
+ lsls r1, 1
+ adds r0, r1
+ strh r6, [r0]
+_0802E32E:
+ movs r5, 0x3
+ ldr r2, [r4]
+ adds r0, r2, 0
+ adds r0, 0xD4
+ movs r1, 0
+ str r1, [r0]
+ adds r0, 0x4
+ str r6, [r0]
+ movs r3, 0
+ adds r6, r4, 0
+ mov r12, r2
+ mov r4, r12
+ adds r4, 0xFC
+ adds r2, 0xC0
+_0802E34A:
+ ldrh r0, [r4]
+ cmp r0, 0
+ bne _0802E35A
+ ldr r1, [r2]
+ mov r7, r12
+ ldr r0, [r7, 0x64]
+ cmp r1, r0
+ beq _0802E3B2
+_0802E35A:
+ adds r4, 0x2
+ adds r2, 0x8
+ adds r3, 0x1
+ cmp r3, r5
+ blt _0802E34A
+ movs r3, 0
+ cmp r3, r5
+ bge _0802E3B2
+ ldr r1, [r6]
+ adds r0, r1, 0
+ adds r0, 0xFC
+ ldrh r0, [r0]
+ cmp r0, 0
+ bne _0802E390
+ adds r0, r1, 0
+ adds r0, 0xC0
+ ldr r0, [r0]
+ str r0, [r1, 0x64]
+ b _0802E3B2
+ .align 2, 0
+_0802E380: .4byte gUnknown_203B304
+_0802E384: .4byte gMailboxCheckMail
+_0802E388: .4byte gMailboxJobList
+_0802E38C: .4byte gMailboxPKMNNews
+_0802E390:
+ adds r3, 0x1
+ cmp r3, r5
+ bge _0802E3B2
+ ldr r2, [r6]
+ lsls r0, r3, 1
+ adds r1, r2, 0
+ adds r1, 0xFC
+ adds r1, r0
+ ldrh r0, [r1]
+ cmp r0, 0
+ bne _0802E390
+ lsls r0, r3, 3
+ adds r1, r2, 0
+ adds r1, 0xC0
+ adds r1, r0
+ ldr r0, [r1]
+ str r0, [r2, 0x64]
+_0802E3B2:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end CreateMailboxMenu
+
+ thumb_func_start CreateMailActionMenu
+CreateMailActionMenu:
+ push {r4-r7,lr}
+ movs r5, 0
+ ldr r4, _0802E3F0
+ ldr r0, [r4]
+ ldrb r0, [r0, 0x8]
+ bl sub_8095FE8
+ adds r7, r0, 0
+ ldrb r0, [r7]
+ cmp r0, 0x1
+ bne _0802E3FC
+ ldr r2, [r4]
+ adds r1, r2, 0
+ adds r1, 0xBC
+ ldr r0, _0802E3F4
+ str r0, [r1]
+ adds r1, 0x4
+ movs r0, 0x6
+ str r0, [r1]
+ adds r1, 0x4
+ ldr r0, _0802E3F8
+ str r0, [r1]
+ adds r1, 0x4
+ movs r0, 0x7
+ str r0, [r1]
+ movs r5, 0x2
+ b _0802E44A
+ .align 2, 0
+_0802E3F0: .4byte gUnknown_203B304
+_0802E3F4: .4byte gMailActionStore
+_0802E3F8: .4byte gMailActionRead
+_0802E3FC:
+ ldr r1, [r4]
+ adds r2, r1, 0
+ adds r2, 0xBC
+ ldr r0, _0802E494
+ ldr r0, [r0]
+ str r0, [r2]
+ adds r1, 0xC0
+ movs r0, 0x5
+ str r0, [r1]
+ adds r0, r7, 0
+ bl sub_80968B0
+ lsls r0, 24
+ cmp r0, 0
+ bne _0802E422
+ bl sub_80969AC
+ cmp r0, 0x7
+ ble _0802E42C
+_0802E422:
+ ldr r0, [r4]
+ adds r0, 0xC0
+ movs r1, 0x1
+ negs r1, r1
+ str r1, [r0]
+_0802E42C:
+ adds r5, 0x1
+ ldr r4, _0802E498
+ ldr r2, [r4]
+ lsls r3, r5, 3
+ adds r0, r2, 0
+ adds r0, 0xBC
+ adds r0, r3
+ ldr r1, _0802E49C
+ ldr r1, [r1]
+ str r1, [r0]
+ adds r2, 0xC0
+ adds r2, r3
+ movs r0, 0x8
+ str r0, [r2]
+ adds r5, 0x1
+_0802E44A:
+ mov r12, r4
+ mov r0, r12
+ ldr r4, [r0]
+ lsls r2, r5, 3
+ adds r0, r4, 0
+ adds r0, 0xBC
+ adds r0, r2
+ movs r1, 0
+ str r1, [r0]
+ adds r1, r4, 0
+ adds r1, 0xC0
+ adds r2, r1, r2
+ movs r0, 0x1
+ str r0, [r2]
+ movs r3, 0
+ cmp r3, r5
+ bge _0802E486
+ movs r6, 0x1
+ negs r6, r6
+ adds r2, r1, 0
+_0802E472:
+ ldr r1, [r2]
+ cmp r1, r6
+ beq _0802E47E
+ ldr r0, [r4, 0x68]
+ cmp r1, r0
+ beq _0802E4A8
+_0802E47E:
+ adds r2, 0x8
+ adds r3, 0x1
+ cmp r3, r5
+ blt _0802E472
+_0802E486:
+ ldrb r0, [r7]
+ cmp r0, 0x1
+ bne _0802E4A0
+ mov r0, r12
+ ldr r1, [r0]
+ movs r0, 0x7
+ b _0802E4A6
+ .align 2, 0
+_0802E494: .4byte gUnknown_80D4990
+_0802E498: .4byte gUnknown_203B304
+_0802E49C: .4byte gUnknown_80D4970
+_0802E4A0:
+ mov r0, r12
+ ldr r1, [r0]
+ movs r0, 0x8
+_0802E4A6:
+ str r0, [r1, 0x68]
+_0802E4A8:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end CreateMailActionMenu
+
+ thumb_func_start sub_802E4B0
+sub_802E4B0:
+ push {r4,lr}
+ sub sp, 0x4
+ movs r0, 0
+ str r0, [sp]
+ ldr r4, _0802E4F0
+ ldr r0, [r4]
+ adds r0, 0x6C
+ bl sub_8012FD8
+ lsls r0, 24
+ cmp r0, 0
+ bne _0802E4DC
+ ldr r0, [r4]
+ adds r0, 0x6C
+ mov r1, sp
+ bl sub_8013114
+ ldr r1, [sp]
+ cmp r1, 0x1
+ beq _0802E4DC
+ ldr r0, [r4]
+ str r1, [r0, 0x64]
+_0802E4DC:
+ ldr r0, [sp]
+ subs r0, 0x1
+ cmp r0, 0x7
+ bhi _0802E56E
+ lsls r0, 2
+ ldr r1, _0802E4F4
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0802E4F0: .4byte gUnknown_203B304
+_0802E4F4: .4byte _0802E4F8
+ .align 2, 0
+_0802E4F8:
+ .4byte _0802E568
+ .4byte _0802E518
+ .4byte _0802E52A
+ .4byte _0802E53C
+ .4byte _0802E56E
+ .4byte _0802E56E
+ .4byte _0802E56E
+ .4byte _0802E560
+_0802E518:
+ bl HasNoMailinMailbox
+ lsls r0, 24
+ cmp r0, 0
+ bne _0802E54E
+ movs r0, 0x4
+ bl SetMailboxState
+ b _0802E56E
+_0802E52A:
+ bl HasNoAcceptedJobs
+ lsls r0, 24
+ cmp r0, 0
+ bne _0802E54E
+ movs r0, 0x8
+ bl SetMailboxState
+ b _0802E56E
+_0802E53C:
+ bl HasNoPKMNNews
+ lsls r0, 24
+ cmp r0, 0
+ bne _0802E54E
+ movs r0, 0x9
+ bl SetMailboxState
+ b _0802E56E
+_0802E54E:
+ ldr r0, _0802E55C
+ ldr r0, [r0]
+ adds r0, 0x6C
+ movs r1, 0x1
+ bl sub_8012EA4
+ b _0802E56E
+ .align 2, 0
+_0802E55C: .4byte gUnknown_203B304
+_0802E560:
+ movs r0, 0x2
+ bl SetMailboxState
+ b _0802E56E
+_0802E568:
+ movs r0, 0x3
+ bl SetMailboxState
+_0802E56E:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_802E4B0
+
+ thumb_func_start sub_802E578
+sub_802E578:
+ push {r4,lr}
+ movs r0, 0x1
+ bl sub_802BDEC
+ cmp r0, 0x4
+ bhi _0802E606
+ lsls r0, 2
+ ldr r1, _0802E590
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0802E590: .4byte _0802E594
+ .align 2, 0
+_0802E594:
+ .4byte _0802E606
+ .4byte _0802E606
+ .4byte _0802E5FC
+ .4byte _0802E5A8
+ .4byte _0802E5C0
+_0802E5A8:
+ bl sub_802BE74
+ ldr r1, _0802E5BC
+ ldr r1, [r1]
+ strb r0, [r1, 0x8]
+ movs r0, 0x6
+ bl SetMailboxState
+ b _0802E606
+ .align 2, 0
+_0802E5BC: .4byte gUnknown_203B304
+_0802E5C0:
+ bl sub_802BE74
+ ldr r4, _0802E5F0
+ ldr r1, [r4]
+ strb r0, [r1, 0x8]
+ ldr r0, [r4]
+ ldrb r0, [r0, 0x8]
+ bl sub_8095FE8
+ adds r2, r0, 0
+ ldrb r0, [r2]
+ cmp r0, 0x1
+ bne _0802E5F4
+ ldr r1, [r4]
+ ldrb r0, [r2, 0x5]
+ strb r0, [r1, 0x9]
+ ldr r1, [r4]
+ movs r0, 0x5
+ str r0, [r1, 0x4]
+ movs r0, 0xB
+ bl SetMailboxState
+ b _0802E606
+ .align 2, 0
+_0802E5F0: .4byte gUnknown_203B304
+_0802E5F4:
+ movs r0, 0x7
+ bl SetMailboxState
+ b _0802E606
+_0802E5FC:
+ bl sub_802BEDC
+ movs r0, 0x1
+ bl SetMailboxState
+_0802E606:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_802E578
+
+ thumb_func_start sub_802E60C
+sub_802E60C:
+ push {r4,lr}
+ sub sp, 0x4
+ movs r0, 0
+ str r0, [sp]
+ bl sub_802BDEC
+ ldr r4, _0802E650
+ ldr r0, [r4]
+ adds r0, 0x6C
+ bl sub_8012FD8
+ lsls r0, 24
+ cmp r0, 0
+ bne _0802E63C
+ ldr r0, [r4]
+ adds r0, 0x6C
+ mov r1, sp
+ bl sub_8013114
+ ldr r1, [sp]
+ cmp r1, 0x1
+ beq _0802E63C
+ ldr r0, [r4]
+ str r1, [r0, 0x68]
+_0802E63C:
+ ldr r0, [sp]
+ subs r0, 0x1
+ cmp r0, 0x7
+ bhi _0802E732
+ lsls r0, 2
+ ldr r1, _0802E654
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_0802E650: .4byte gUnknown_203B304
+_0802E654: .4byte _0802E658
+ .align 2, 0
+_0802E658:
+ .4byte _0802E72C
+ .4byte _0802E732
+ .4byte _0802E732
+ .4byte _0802E732
+ .4byte _0802E678
+ .4byte _0802E6BC
+ .4byte _0802E704
+ .4byte _0802E6B4
+_0802E678:
+ ldr r0, _0802E6AC
+ bl PlaySound
+ ldr r4, _0802E6B0
+ ldr r0, [r4]
+ ldrb r0, [r0, 0x8]
+ bl sub_8095FE8
+ bl sub_8096A78
+ bl sub_8096C80
+ bl sub_8096D24
+ ldr r0, [r4]
+ ldrb r0, [r0, 0x8]
+ bl sub_8096040
+ bl sub_8096078
+ bl HasNoMailinMailbox
+ lsls r0, 24
+ cmp r0, 0
+ bne _0802E6E8
+ b _0802E6FC
+ .align 2, 0
+_0802E6AC: .4byte 0x00000133
+_0802E6B0: .4byte gUnknown_203B304
+_0802E6B4:
+ movs r0, 0x7
+ bl SetMailboxState
+ b _0802E732
+_0802E6BC:
+ ldr r0, _0802E6F4
+ bl PlaySound
+ ldr r4, _0802E6F8
+ ldr r0, [r4]
+ ldrb r0, [r0, 0x8]
+ bl sub_8095FE8
+ ldrb r0, [r0, 0x5]
+ bl sub_8096DF8
+ ldr r0, [r4]
+ ldrb r0, [r0, 0x8]
+ bl sub_8096040
+ bl sub_8096078
+ bl HasNoMailinMailbox
+ lsls r0, 24
+ cmp r0, 0
+ beq _0802E6FC
+_0802E6E8:
+ bl sub_802BEDC
+ movs r0, 0x1
+ bl SetMailboxState
+ b _0802E732
+ .align 2, 0
+_0802E6F4: .4byte 0x00000133
+_0802E6F8: .4byte gUnknown_203B304
+_0802E6FC:
+ movs r0, 0x5
+ bl SetMailboxState
+ b _0802E732
+_0802E704:
+ movs r0, 0
+ bl PlayMenuSoundEffect
+ ldr r4, _0802E728
+ ldr r0, [r4]
+ ldrb r0, [r0, 0x8]
+ bl sub_8095FE8
+ ldr r1, [r4]
+ ldrb r0, [r0, 0x5]
+ strb r0, [r1, 0x9]
+ ldr r1, [r4]
+ movs r0, 0x5
+ str r0, [r1, 0x4]
+ movs r0, 0xB
+ bl SetMailboxState
+ b _0802E732
+ .align 2, 0
+_0802E728: .4byte gUnknown_203B304
+_0802E72C:
+ movs r0, 0x5
+ bl SetMailboxState
+_0802E732:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_802E60C
+
+ .align 2,0