pmd-red/asm/kangaskhan_storage_2.s
2021-11-02 16:31:16 -07:00

360 lines
5.4 KiB
ArmAsm

.include "constants/gba_constants.inc"
.include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_80182E4
sub_80182E4:
push {r4-r7,lr}
mov r7, r8
push {r7}
movs r0, 0
mov r8, r0
ldr r4, _080183DC
ldr r0, [r4]
adds r0, 0x60
movs r1, 0
movs r2, 0x10
bl MemoryFill16
ldr r1, [r4]
ldr r0, _080183E0
ldr r0, [r0]
str r0, [r1, 0x20]
movs r0, 0x2
str r0, [r1, 0x24]
bl GetNumberOfFilledInventorySlots
cmp r0, 0
beq _0801831C
movs r0, 0
bl sub_801CF50
lsls r0, 24
cmp r0, 0
beq _08018324
_0801831C:
ldr r0, [r4]
adds r0, 0x60
movs r1, 0x1
strh r1, [r0]
_08018324:
movs r1, 0x1
add r8, r1
ldr r4, _080183DC
ldr r2, [r4]
mov r0, r8
lsls r3, r0, 3
adds r0, r2, 0
adds r0, 0x20
adds r0, r3
ldr r1, _080183E4
ldr r1, [r1]
str r1, [r0]
adds r2, 0x24
adds r2, r3
movs r0, 0x3
str r0, [r2]
movs r0, 0x1
bl sub_801CF14
lsls r0, 24
cmp r0, 0
bne _08018358
bl GetNumberOfFilledInventorySlots
cmp r0, 0x13
ble _08018366
_08018358:
ldr r0, [r4]
mov r2, r8
lsls r1, r2, 1
adds r0, 0x60
adds r0, r1
movs r1, 0x1
strh r1, [r0]
_08018366:
movs r0, 0x1
add r8, r0
ldr r4, _080183DC
ldr r7, [r4]
mov r2, r8
lsls r1, r2, 3
adds r2, r7, 0
adds r2, 0x20
adds r3, r2, r1
ldr r0, _080183E8
ldr r0, [r0]
str r0, [r3]
adds r6, r7, 0
adds r6, 0x24
adds r1, r6, r1
movs r3, 0x1
str r3, [r1]
add r8, r3
mov r1, r8
lsls r0, r1, 3
adds r2, r0
movs r1, 0
str r1, [r2]
adds r0, r6, r0
str r3, [r0]
movs r5, 0
mov r12, r4
cmp r5, r8
bge _080183C0
adds r4, r7, 0
adds r2, r4, 0
adds r2, 0x60
adds r3, r6, 0
_080183A8:
ldrh r0, [r2]
cmp r0, 0
bne _080183B6
ldr r1, [r3]
ldr r0, [r4, 0x14]
cmp r1, r0
beq _08018410
_080183B6:
adds r2, 0x2
adds r3, 0x8
adds r5, 0x1
cmp r5, r8
blt _080183A8
_080183C0:
movs r5, 0
cmp r5, r8
bge _08018410
mov r2, r12
ldr r1, [r2]
adds r0, r1, 0
adds r0, 0x60
ldrh r0, [r0]
cmp r0, 0
bne _080183EC
ldr r0, [r1, 0x24]
str r0, [r1, 0x14]
b _08018410
.align 2, 0
_080183DC: .4byte gUnknown_203B20C
_080183E0: .4byte gUnknown_80D4958
_080183E4: .4byte gUnknown_80D4964
_080183E8: .4byte gUnknown_80D4934
_080183EC:
adds r5, 0x1
cmp r5, r8
bge _08018410
mov r0, r12
ldr r2, [r0]
lsls r0, r5, 1
adds r1, r2, 0
adds r1, 0x60
adds r1, r0
ldrh r0, [r1]
cmp r0, 0
bne _080183EC
lsls r0, r5, 3
adds r1, r2, 0
adds r1, 0x24
adds r1, r0
ldr r0, [r1]
str r0, [r2, 0x14]
_08018410:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80182E4
thumb_func_start sub_801841C
sub_801841C:
push {r4-r7,lr}
ldr r4, _080184A0
ldr r0, [r4]
adds r0, 0x60
movs r1, 0
movs r2, 0x10
bl MemoryFill16
ldr r1, [r4]
ldr r0, _080184A4
ldr r0, [r0]
str r0, [r1, 0x20]
movs r0, 0x2
str r0, [r1, 0x24]
ldr r0, [r1, 0xC]
bl sub_801ADA0
lsls r0, 24
cmp r0, 0
bne _0801844C
ldr r0, [r4]
adds r0, 0x60
movs r1, 0x1
strh r1, [r0]
_0801844C:
ldr r2, [r4]
movs r1, 0x1
ldr r0, _080184A8
ldr r0, [r0]
str r0, [r2, 0x28]
movs r0, 0x4
str r0, [r2, 0x2C]
movs r5, 0x2
movs r0, 0
str r0, [r2, 0x30]
str r1, [r2, 0x34]
movs r3, 0
adds r6, r4, 0
mov r12, r2
mov r4, r12
adds r4, 0x60
adds r2, 0x24
_0801846E:
ldrh r0, [r4]
cmp r0, 0
bne _0801847E
ldr r1, [r2]
mov r7, r12
ldr r0, [r7, 0x18]
cmp r1, r0
beq _080184CE
_0801847E:
adds r4, 0x2
adds r2, 0x8
adds r3, 0x1
cmp r3, r5
blt _0801846E
movs r3, 0
cmp r3, r5
bge _080184CE
ldr r1, [r6]
adds r0, r1, 0
adds r0, 0x60
ldrh r0, [r0]
cmp r0, 0
bne _080184AC
ldr r0, [r1, 0x24]
str r0, [r1, 0x18]
b _080184CE
.align 2, 0
_080184A0: .4byte gUnknown_203B20C
_080184A4: .4byte gUnknown_80D4958
_080184A8: .4byte gUnknown_80D4970
_080184AC:
adds r3, 0x1
cmp r3, r5
bge _080184CE
ldr r2, [r6]
lsls r0, r3, 1
adds r1, r2, 0
adds r1, 0x60
adds r1, r0
ldrh r0, [r1]
cmp r0, 0
bne _080184AC
lsls r0, r3, 3
adds r1, r2, 0
adds r1, 0x24
adds r1, r0
ldr r0, [r1]
str r0, [r2, 0x18]
_080184CE:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_801841C
thumb_func_start sub_80184D4
sub_80184D4:
push {r4-r7,lr}
ldr r4, _08018554
ldr r0, [r4]
adds r0, 0x60
movs r1, 0
movs r2, 0x10
bl MemoryFill16
ldr r1, [r4]
ldr r0, _08018558
ldr r0, [r0]
str r0, [r1, 0x20]
movs r0, 0x3
str r0, [r1, 0x24]
bl GetNumberOfFilledInventorySlots
cmp r0, 0x13
ble _08018500
ldr r0, [r4]
adds r0, 0x60
movs r1, 0x1
strh r1, [r0]
_08018500:
ldr r2, [r4]
movs r1, 0x1
ldr r0, _0801855C
ldr r0, [r0]
str r0, [r2, 0x28]
movs r0, 0x4
str r0, [r2, 0x2C]
movs r5, 0x2
movs r0, 0
str r0, [r2, 0x30]
str r1, [r2, 0x34]
movs r3, 0
adds r6, r4, 0
mov r12, r2
mov r4, r12
adds r4, 0x60
adds r2, 0x24
_08018522:
ldrh r0, [r4]
cmp r0, 0
bne _08018532
ldr r1, [r2]
mov r7, r12
ldr r0, [r7, 0x1C]
cmp r1, r0
beq _08018582
_08018532:
adds r4, 0x2
adds r2, 0x8
adds r3, 0x1
cmp r3, r5
blt _08018522
movs r3, 0
cmp r3, r5
bge _08018582
ldr r1, [r6]
adds r0, r1, 0
adds r0, 0x60
ldrh r0, [r0]
cmp r0, 0
bne _08018560
ldr r0, [r1, 0x24]
str r0, [r1, 0x1C]
b _08018582
.align 2, 0
_08018554: .4byte gUnknown_203B20C
_08018558: .4byte gUnknown_80D4964
_0801855C: .4byte gUnknown_80D4970
_08018560:
adds r3, 0x1
cmp r3, r5
bge _08018582
ldr r2, [r6]
lsls r0, r3, 1
adds r1, r2, 0
adds r1, 0x60
adds r1, r0
ldrh r0, [r1]
cmp r0, 0
bne _08018560
lsls r0, r3, 3
adds r1, r2, 0
adds r1, 0x24
adds r1, r0
ldr r0, [r1]
str r0, [r2, 0x1C]
_08018582:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_80184D4
.align 2,0