diff options
Diffstat (limited to 'asm/mailbox.s')
-rw-r--r-- | asm/mailbox.s | 560 |
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 |