Files
pokeruby/asm/mail_data.s
T
2017-01-02 04:48:04 -08:00

575 lines
9.2 KiB
ArmAsm

.include "constants/gba_constants.inc"
.include "constants/species_constants.inc"
.include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_80A2B18
sub_80A2B18: @ 80A2B18
push {r4,r5,lr}
movs r4, 0
ldr r5, _080A2B3C @ =gSaveBlock1 + 0x2B4C
_080A2B1E:
lsls r0, r4, 3
adds r0, r4
lsls r0, 2
adds r0, r5
bl sub_80A2B40
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0xF
bls _080A2B1E
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080A2B3C: .4byte gSaveBlock1 + 0x2B4C
thumb_func_end sub_80A2B18
thumb_func_start sub_80A2B40
sub_80A2B40: @ 80A2B40
push {r4-r6,lr}
adds r3, r0, 0
ldr r0, _080A2B90 @ =0x0000ffff
adds r4, r0, 0
adds r1, r3, 0
movs r2, 0x8
_080A2B4C:
ldrh r0, [r1]
orrs r0, r4
strh r0, [r1]
adds r1, 0x2
subs r2, 0x1
cmp r2, 0
bge _080A2B4C
movs r2, 0
adds r6, r3, 0
adds r6, 0x1A
adds r4, r3, 0
adds r4, 0x12
movs r5, 0xFF
_080A2B66:
adds r1, r4, r2
ldrb r0, [r1]
orrs r0, r5
strb r0, [r1]
adds r2, 0x1
cmp r2, 0x7
ble _080A2B66
adds r1, r6, 0
movs r2, 0
adds r0, r1, 0x3
_080A2B7A:
strb r2, [r0]
subs r0, 0x1
cmp r0, r1
bge _080A2B7A
movs r1, 0
movs r0, 0x1
strh r0, [r3, 0x1E]
strh r1, [r3, 0x20]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080A2B90: .4byte 0x0000ffff
thumb_func_end sub_80A2B40
thumb_func_start sub_80A2B94
sub_80A2B94: @ 80A2B94
push {r4,lr}
adds r4, r0, 0
movs r1, 0xC
bl GetMonData
lsls r0, 16
lsrs r0, 16
bl itemid_is_mail
lsls r0, 24
cmp r0, 0
beq _080A2BBC
adds r0, r4, 0
movs r1, 0x40
bl GetMonData
cmp r0, 0xFF
beq _080A2BBC
movs r0, 0x1
b _080A2BBE
_080A2BBC:
movs r0, 0
_080A2BBE:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80A2B94
thumb_func_start sub_80A2BC4
sub_80A2BC4: @ 80A2BC4
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0xC
adds r7, r0, 0
lsls r1, 16
lsrs r0, r1, 16
str r0, [sp, 0x8]
mov r0, sp
movs r2, 0
ldrb r3, [r0, 0x8]
strb r3, [r0]
lsrs r1, 24
strb r1, [r0, 0x1]
add r3, sp, 0x4
strb r2, [r3]
mov r10, r3
ldr r4, _080A2D00 @ =gSaveBlock1
mov r9, r4
mov r8, r3
adds r2, r3, 0
_080A2BF2:
ldrb r1, [r2]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
add r0, r9
ldr r5, _080A2D04 @ =0x00002b6c
adds r0, r5
ldrh r0, [r0]
cmp r0, 0
beq _080A2C08
b _080A2D24
_080A2C08:
movs r3, 0
ldr r0, _080A2D08 @ =gSaveBlock2
mov r12, r0
mov r4, r10
ldr r6, _080A2D0C @ =gSaveBlock1 + 0x2B4C
ldr r1, _080A2D10 @ =0x0000ffff
adds r5, r1, 0
_080A2C16:
lsls r2, r3, 1
ldrb r1, [r4]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
adds r2, r0
adds r2, r6
ldrh r0, [r2]
orrs r0, r5
strh r0, [r2]
adds r0, r3, 0x1
lsls r0, 24
lsrs r3, r0, 24
cmp r3, 0x8
bls _080A2C16
movs r3, 0
mov r2, r10
ldr r4, _080A2D14 @ =gSaveBlock1 + 0x2B5E
_080A2C3A:
ldrb r1, [r2]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
adds r0, r3, r0
adds r0, r4
mov r5, r12
adds r1, r3, r5
ldrb r1, [r1]
strb r1, [r0]
adds r0, r3, 0x1
lsls r0, 24
lsrs r3, r0, 24
cmp r3, 0x6
bls _080A2C3A
mov r0, r8
ldrb r1, [r0]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
adds r0, r3, r0
ldr r1, _080A2D14 @ =gSaveBlock1 + 0x2B5E
adds r0, r1
movs r1, 0xFF
strb r1, [r0]
mov r2, r8
ldrb r1, [r2]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
ldr r3, _080A2D14 @ =gSaveBlock1 + 0x2B5E
adds r0, r3
movs r1, 0
bl PadNameString
movs r3, 0
mov r2, r10
ldr r5, _080A2D18 @ =gSaveBlock1 + 0x2B66
ldr r4, _080A2D1C @ =gSaveBlock2 + 0xA
_080A2C88:
ldrb r1, [r2]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
adds r0, r3, r0
adds r0, r5
adds r1, r3, r4
ldrb r1, [r1]
strb r1, [r0]
adds r0, r3, 0x1
lsls r0, 24
lsrs r3, r0, 24
cmp r3, 0x3
bls _080A2C88
adds r0, r7, 0
movs r1, 0xB
bl GetBoxMonData
adds r4, r0, 0
lsls r4, 16
lsrs r4, 16
adds r0, r7, 0
movs r1, 0
bl GetBoxMonData
adds r1, r0, 0
adds r0, r4, 0
bl sub_80A2D44
mov r4, r8
ldrb r2, [r4]
lsls r1, r2, 3
adds r1, r2
lsls r1, 2
add r1, r9
ldr r5, _080A2D20 @ =0x00002b6a
adds r1, r5
strh r0, [r1]
ldrb r1, [r4]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
add r0, r9
ldr r1, _080A2D04 @ =0x00002b6c
adds r0, r1
mov r2, sp
ldrh r2, [r2, 0x8]
strh r2, [r0]
adds r0, r7, 0
movs r1, 0x40
mov r2, r8
bl SetMonData
adds r0, r7, 0
movs r1, 0xC
mov r2, sp
bl SetMonData
ldrb r0, [r4]
b _080A2D32
.align 2, 0
_080A2D00: .4byte gSaveBlock1
_080A2D04: .4byte 0x00002b6c
_080A2D08: .4byte gSaveBlock2
_080A2D0C: .4byte gSaveBlock1 + 0x2B4C
_080A2D10: .4byte 0x0000ffff
_080A2D14: .4byte gSaveBlock1 + 0x2B5E
_080A2D18: .4byte gSaveBlock1 + 0x2B66
_080A2D1C: .4byte gSaveBlock2 + 0xA
_080A2D20: .4byte 0x00002b6a
_080A2D24:
adds r0, r1, 0x1
strb r0, [r3]
ldrb r0, [r2]
cmp r0, 0x5
bhi _080A2D30
b _080A2BF2
_080A2D30:
movs r0, 0xFF
_080A2D32:
add sp, 0xC
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80A2BC4
thumb_func_start sub_80A2D44
sub_80A2D44: @ 80A2D44
push {lr}
lsls r0, 16
lsrs r0, 16
cmp r0, 0xC9
bne _080A2D5C
adds r0, r1, 0
bl sub_809D474
lsls r0, 16
ldr r1, _080A2D60 @ =0x75300000
adds r0, r1
lsrs r0, 16
_080A2D5C:
pop {r1}
bx r1
.align 2, 0
_080A2D60: .4byte 0x75300000
thumb_func_end sub_80A2D44
thumb_func_start sub_80A2D64
sub_80A2D64: @ 80A2D64
push {lr}
lsls r0, 16
lsrs r3, r0, 16
ldr r0, _080A2D7C @ =0xffff8ad0
adds r2, r3, r0
lsls r0, r2, 16
lsrs r0, 16
cmp r0, 0x1B
bhi _080A2D80
movs r0, 0xC9
strh r2, [r1]
b _080A2D82
.align 2, 0
_080A2D7C: .4byte 0xffff8ad0
_080A2D80:
adds r0, r3, 0
_080A2D82:
pop {r1}
bx r1
thumb_func_end sub_80A2D64
thumb_func_start sub_80A2D88
sub_80A2D88: @ 80A2D88
push {r4-r7,lr}
sub sp, 0x8
adds r6, r0, 0
adds r7, r1, 0
ldrh r5, [r7, 0x20]
adds r1, r5, 0
bl sub_80A2BC4
add r4, sp, 0x4
strb r0, [r4]
ldrb r2, [r4]
cmp r2, 0xFF
beq _080A2DE8
ldr r0, _080A2DE0 @ =gSaveBlock1
lsls r1, r2, 3
adds r1, r2
lsls r1, 2
adds r1, r0
ldr r0, _080A2DE4 @ =0x00002b4c
adds r1, r0
adds r0, r7, 0
ldm r0!, {r2,r3,r7}
stm r1!, {r2,r3,r7}
ldm r0!, {r2,r3,r7}
stm r1!, {r2,r3,r7}
ldm r0!, {r2,r3,r7}
stm r1!, {r2,r3,r7}
adds r0, r6, 0
movs r1, 0x40
adds r2, r4, 0
bl SetMonData
mov r0, sp
strb r5, [r0]
mov r1, sp
lsrs r0, r5, 8
strb r0, [r1, 0x1]
adds r0, r6, 0
movs r1, 0xC
mov r2, sp
bl SetMonData
ldrb r0, [r4]
b _080A2DEA
.align 2, 0
_080A2DE0: .4byte gSaveBlock1
_080A2DE4: .4byte 0x00002b4c
_080A2DE8:
movs r0, 0xFF
_080A2DEA:
add sp, 0x8
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80A2D88
thumb_func_start unref_sub_80A2DF4
unref_sub_80A2DF4: @ 80A2DF4
movs r0, 0
bx lr
thumb_func_end unref_sub_80A2DF4
thumb_func_start sub_80A2DF8
sub_80A2DF8: @ 80A2DF8
push {r4,lr}
sub sp, 0x8
adds r4, r0, 0
bl sub_80A2B94
lsls r0, 24
cmp r0, 0
beq _080A2E46
adds r0, r4, 0
movs r1, 0x40
bl GetMonData
add r2, sp, 0x4
strb r0, [r2]
ldr r3, _080A2E50 @ =gSaveBlock1
ldrb r1, [r2]
lsls r0, r1, 3
adds r0, r1
lsls r0, 2
adds r0, r3
ldr r1, _080A2E54 @ =0x00002b6c
adds r0, r1
movs r3, 0
movs r1, 0
strh r1, [r0]
movs r0, 0xFF
strb r0, [r2]
mov r0, sp
strb r3, [r0]
strb r3, [r0, 0x1]
adds r0, r4, 0
movs r1, 0x40
bl SetMonData
adds r0, r4, 0
movs r1, 0xC
mov r2, sp
bl SetMonData
_080A2E46:
add sp, 0x8
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080A2E50: .4byte gSaveBlock1
_080A2E54: .4byte 0x00002b6c
thumb_func_end sub_80A2DF8
thumb_func_start unref_sub_80A2E58
unref_sub_80A2E58: @ 80A2E58
lsls r0, 24
lsrs r0, 24
ldr r2, _080A2E70 @ =gSaveBlock1
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
adds r1, r2
ldr r0, _080A2E74 @ =0x00002b6c
adds r1, r0
movs r0, 0
strh r0, [r1]
bx lr
.align 2, 0
_080A2E70: .4byte gSaveBlock1
_080A2E74: .4byte 0x00002b6c
thumb_func_end unref_sub_80A2E58
thumb_func_start sub_80A2E78
sub_80A2E78: @ 80A2E78
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0xC
adds r5, r0, 0
mov r0, sp
movs r1, 0
strb r1, [r0]
strb r1, [r0, 0x1]
add r1, sp, 0x4
movs r0, 0xFF
strb r0, [r1]
movs r7, 0x6
mov r9, r1
ldr r0, _080A2F04 @ =gSaveBlock1
mov r8, r0
ldr r2, _080A2F08 @ =0x00002b4c
add r2, r8
_080A2E9E:
lsls r0, r7, 3
adds r0, r7
lsls r4, r0, 2
mov r1, r8
adds r0, r4, r1
ldr r3, _080A2F0C @ =0x00002b6c
adds r0, r3
ldrh r6, [r0]
cmp r6, 0
bne _080A2F10
adds r4, r2
adds r0, r5, 0
movs r1, 0x40
str r2, [sp, 0x8]
bl GetMonData
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
ldr r2, [sp, 0x8]
adds r1, r2
ldm r1!, {r0,r2,r3}
stm r4!, {r0,r2,r3}
ldm r1!, {r0,r2,r3}
stm r4!, {r0,r2,r3}
ldm r1!, {r0,r2,r3}
stm r4!, {r0,r2,r3}
adds r0, r5, 0
movs r1, 0x40
bl GetMonData
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
add r1, r8
ldr r0, _080A2F0C @ =0x00002b6c
adds r1, r0
strh r6, [r1]
adds r0, r5, 0
movs r1, 0x40
mov r2, r9
bl SetMonData
adds r0, r5, 0
movs r1, 0xC
mov r2, sp
bl SetMonData
adds r0, r7, 0
b _080A2F1C
.align 2, 0
_080A2F04: .4byte gSaveBlock1
_080A2F08: .4byte 0x00002b4c
_080A2F0C: .4byte 0x00002b6c
_080A2F10:
adds r0, r7, 0x1
lsls r0, 24
lsrs r7, r0, 24
cmp r7, 0xF
bls _080A2E9E
movs r0, 0xFF
_080A2F1C:
add sp, 0xC
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_80A2E78
thumb_func_start itemid_is_mail
itemid_is_mail: @ 80A2F2C
push {lr}
lsls r0, 16
lsrs r0, 16
cmp r0, 0x84
bgt _080A2F3E
cmp r0, 0x79
blt _080A2F3E
movs r0, 0x1
b _080A2F40
_080A2F3E:
movs r0, 0
_080A2F40:
pop {r1}
bx r1
thumb_func_end itemid_is_mail
.align 2, 0 @ Don't pad with nop.