mirror of
https://github.com/pret/pmd-sky.git
synced 2026-03-21 17:25:15 -05:00
2783 lines
53 KiB
ArmAsm
2783 lines
53 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "main_0200EDFC.inc"
|
|
|
|
.text
|
|
|
|
arm_func_start GetNbItemsInBag
|
|
GetNbItemsInBag: ; 0x0200EDFC
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, _0200EE48 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r0, #0
|
|
ldr r1, [r1]
|
|
mov lr, r0
|
|
ldr ip, [r1, #0x384]
|
|
mov r1, r0
|
|
mov r2, #1
|
|
_0200EE1C:
|
|
ldrb r3, [ip]
|
|
add lr, lr, #1
|
|
add ip, ip, #6
|
|
tst r3, #1
|
|
movne r3, r2
|
|
moveq r3, r1
|
|
tst r3, #0xff
|
|
addne r0, r0, #1
|
|
cmp lr, #0x32
|
|
blt _0200EE1C
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0200EE48: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end GetNbItemsInBag
|
|
|
|
arm_func_start CountNbItemsOfTypeInBag
|
|
CountNbItemsOfTypeInBag: ; 0x0200EE4C
|
|
ldr r1, _0200EE84 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r3, #0
|
|
ldr r1, [r1]
|
|
mov ip, r3
|
|
ldr r2, [r1, #0x384]
|
|
_0200EE60:
|
|
ldrsh r1, [r2, #4]
|
|
add ip, ip, #1
|
|
add r2, r2, #6
|
|
cmp r1, r0
|
|
addeq r3, r3, #1
|
|
cmp ip, #0x32
|
|
blt _0200EE60
|
|
mov r0, r3
|
|
bx lr
|
|
.align 2, 0
|
|
_0200EE84: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end CountNbItemsOfTypeInBag
|
|
|
|
arm_func_start CountItemTypeInBag
|
|
CountItemTypeInBag: ; 0x0200EE88
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
ldr r1, _0200EEDC ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r5, #0
|
|
ldr r1, [r1]
|
|
mov r7, r0
|
|
ldr r4, [r1, #0x384]
|
|
mov r6, r5
|
|
_0200EEA4:
|
|
ldrsh r0, [r4, #4]
|
|
cmp r0, r7
|
|
bne _0200EEC4
|
|
bl IsThrownItem
|
|
cmp r0, #0
|
|
ldrneh r0, [r4, #2]
|
|
addne r5, r5, r0
|
|
addeq r5, r5, #1
|
|
_0200EEC4:
|
|
add r6, r6, #1
|
|
cmp r6, #0x32
|
|
add r4, r4, #6
|
|
blt _0200EEA4
|
|
mov r0, r5
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_0200EEDC: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end CountItemTypeInBag
|
|
|
|
arm_func_start IsItemInBag
|
|
IsItemInBag: ; 0x0200EEE0
|
|
ldr r1, _0200EF1C ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r3, #0
|
|
ldr r1, [r1]
|
|
ldr r2, [r1, #0x384]
|
|
b _0200EF0C
|
|
_0200EEF4:
|
|
ldrsh r1, [r2, #4]
|
|
cmp r1, r0
|
|
moveq r0, #1
|
|
bxeq lr
|
|
add r3, r3, #1
|
|
add r2, r2, #6
|
|
_0200EF0C:
|
|
cmp r3, #0x32
|
|
blt _0200EEF4
|
|
mov r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_0200EF1C: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end IsItemInBag
|
|
|
|
arm_func_start IsItemWithFlagsInBag
|
|
IsItemWithFlagsInBag: ; 0x0200EF20
|
|
ldr r2, _0200EF68 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov ip, #0
|
|
ldr r2, [r2]
|
|
ldr r3, [r2, #0x384]
|
|
b _0200EF58
|
|
_0200EF34:
|
|
ldrsh r2, [r3, #4]
|
|
cmp r2, r0
|
|
bne _0200EF50
|
|
ldrb r2, [r3]
|
|
tst r2, r1
|
|
movne r0, #1
|
|
bxne lr
|
|
_0200EF50:
|
|
add ip, ip, #1
|
|
add r3, r3, #6
|
|
_0200EF58:
|
|
cmp ip, #0x32
|
|
blt _0200EF34
|
|
mov r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_0200EF68: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end IsItemWithFlagsInBag
|
|
|
|
#ifndef JAPAN
|
|
arm_func_start IsItemInTreasureBoxes
|
|
IsItemInTreasureBoxes: ; 0x0200EF6C
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r1, _0200EFC8 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r4, r0
|
|
ldr r0, [r1]
|
|
mov r6, #0
|
|
ldr r5, [r0, #0x384]
|
|
b _0200EFB8
|
|
_0200EF88:
|
|
ldrsh r0, [r5, #4]
|
|
bl GetItemCategoryVeneer
|
|
add r0, r0, #0xf4
|
|
and r0, r0, #0xff
|
|
cmp r0, #2
|
|
bhi _0200EFB0
|
|
ldrh r0, [r5, #2]
|
|
cmp r0, r4
|
|
moveq r0, #1
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
_0200EFB0:
|
|
add r6, r6, #1
|
|
add r5, r5, #6
|
|
_0200EFB8:
|
|
cmp r6, #0x32
|
|
blt _0200EF88
|
|
mov r0, #0
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_0200EFC8: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end IsItemInTreasureBoxes
|
|
#endif
|
|
|
|
arm_func_start IsHeldItemInBag
|
|
IsHeldItemInBag: ; 0x0200EFCC
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
ldr r1, _0200F04C ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r6, r0
|
|
ldr r0, [r1]
|
|
mov r5, #0
|
|
mov sb, #1
|
|
ldr r4, [r0, #0x384]
|
|
mov r8, r5
|
|
mov r7, sb
|
|
b _0200F03C
|
|
_0200EFF4:
|
|
ldrb r0, [r4]
|
|
tst r0, #1
|
|
movne r0, sb
|
|
moveq r0, r8
|
|
tst r0, #0xff
|
|
beq _0200F034
|
|
ldrb r0, [r4, #1]
|
|
cmp r0, #0
|
|
bne _0200F034
|
|
mov r0, r4
|
|
mov r1, r6
|
|
mov r2, r7
|
|
bl AreItemsEquivalent
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
_0200F034:
|
|
add r5, r5, #1
|
|
add r4, r4, #6
|
|
_0200F03C:
|
|
cmp r5, #0x32
|
|
blt _0200EFF4
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
_0200F04C: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end IsHeldItemInBag
|
|
|
|
arm_func_start IsItemForSpecialSpawnInBag
|
|
IsItemForSpecialSpawnInBag: ; 0x0200F050
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r0, _0200F0E0 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r4, #0
|
|
ldr r0, [r0]
|
|
mov ip, #1
|
|
ldr lr, [r0, #0x384]
|
|
mov r3, r4
|
|
mov r1, r4
|
|
mov r2, ip
|
|
b _0200F0D0
|
|
_0200F078:
|
|
ldrb r5, [lr]
|
|
tst r5, #1
|
|
movne r0, ip
|
|
moveq r0, r3
|
|
tst r0, #0xff
|
|
beq _0200F0C8
|
|
ldrsh r0, [lr, #4]
|
|
sub r0, r0, #0xad
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
cmp r0, #1
|
|
bhi _0200F0C8
|
|
tst r5, #8
|
|
movne r0, r2
|
|
moveq r0, r1
|
|
tst r0, #0xff
|
|
moveq r0, #1
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
_0200F0C8:
|
|
add r4, r4, #1
|
|
add lr, lr, #6
|
|
_0200F0D0:
|
|
cmp r4, #0x32
|
|
blt _0200F078
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_0200F0E0: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end IsItemForSpecialSpawnInBag
|
|
|
|
arm_func_start HasStorableItems
|
|
HasStorableItems: ; 0x0200F0E4
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
ldr r0, _0200F148 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r7, #0
|
|
ldr r0, [r0]
|
|
mov r4, r7
|
|
ldr r6, [r0, #0x384]
|
|
mov r5, #1
|
|
b _0200F138
|
|
_0200F104:
|
|
ldrb r0, [r6]
|
|
tst r0, #1
|
|
movne r0, r5
|
|
moveq r0, r4
|
|
tst r0, #0xff
|
|
beq _0200F130
|
|
ldrsh r0, [r6, #4]
|
|
bl IsStorableItem
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
|
|
_0200F130:
|
|
add r7, r7, #1
|
|
add r6, r6, #6
|
|
_0200F138:
|
|
cmp r7, #0x32
|
|
blt _0200F104
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_0200F148: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end HasStorableItems
|
|
|
|
arm_func_start GetItemIndex
|
|
GetItemIndex: ; 0x0200F14C
|
|
ldr r1, _0200F188 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r2, #0
|
|
ldr r1, [r1]
|
|
ldr r1, [r1, #0x384]
|
|
b _0200F178
|
|
_0200F160:
|
|
cmp r1, r0
|
|
moveq r0, r2, lsl #0x10
|
|
moveq r0, r0, asr #0x10
|
|
bxeq lr
|
|
add r2, r2, #1
|
|
add r1, r1, #6
|
|
_0200F178:
|
|
cmp r2, #0x32
|
|
blt _0200F160
|
|
mvn r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_0200F188: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end GetItemIndex
|
|
|
|
arm_func_start GetEquivItemIndex
|
|
GetEquivItemIndex: ; 0x0200F18C
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
ldr r1, _0200F204 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r5, r0
|
|
ldr r0, [r1]
|
|
mov r4, #0
|
|
ldr sb, [r0, #0x384]
|
|
mov r7, r4
|
|
mov r8, #1
|
|
mov r6, #0xb
|
|
b _0200F1F4
|
|
_0200F1B4:
|
|
ldrb r0, [sb]
|
|
tst r0, #1
|
|
movne r0, r8
|
|
moveq r0, r7
|
|
tst r0, #0xff
|
|
beq _0200F1EC
|
|
mov r0, sb
|
|
mov r1, r5
|
|
mov r2, r6
|
|
bl AreItemsEquivalent
|
|
cmp r0, #0
|
|
movne r0, r4, lsl #0x10
|
|
movne r0, r0, asr #0x10
|
|
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
_0200F1EC:
|
|
add r4, r4, #1
|
|
add sb, sb, #6
|
|
_0200F1F4:
|
|
cmp r4, #0x32
|
|
blt _0200F1B4
|
|
mvn r0, #0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
_0200F204: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end GetEquivItemIndex
|
|
|
|
arm_func_start GetEquippedThrowableItem
|
|
GetEquippedThrowableItem: ; 0x0200F208
|
|
ldr r0, _0200F268 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov ip, #0
|
|
ldr r0, [r0]
|
|
mov r1, ip
|
|
ldr r3, [r0, #0x384]
|
|
mov r2, #1
|
|
b _0200F258
|
|
_0200F224:
|
|
ldrb r0, [r3]
|
|
tst r0, #1
|
|
movne r0, r2
|
|
moveq r0, r1
|
|
tst r0, #0xff
|
|
beq _0200F250
|
|
ldrb r0, [r3]
|
|
tst r0, #0x10
|
|
movne r0, ip, lsl #0x10
|
|
movne r0, r0, asr #0x10
|
|
bxne lr
|
|
_0200F250:
|
|
add ip, ip, #1
|
|
add r3, r3, #6
|
|
_0200F258:
|
|
cmp ip, #0x32
|
|
blt _0200F224
|
|
mvn r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_0200F268: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end GetEquippedThrowableItem
|
|
|
|
arm_func_start GetFirstUnequippedItemOfType
|
|
GetFirstUnequippedItemOfType: ; 0x0200F26C
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, _0200F2DC ; =BAG_ITEMS_PTR_MIRROR
|
|
mvn ip, #0
|
|
ldr r1, [r1]
|
|
cmp r0, #0
|
|
ldr r3, [r1, #0x384]
|
|
moveq r0, ip
|
|
ldmeqia sp!, {r3, pc}
|
|
mov lr, #0
|
|
mov r2, ip
|
|
b _0200F2CC
|
|
_0200F298:
|
|
ldrsh r1, [r3, #4]
|
|
cmp r1, r0
|
|
bne _0200F2C4
|
|
ldrb r1, [r3, #1]
|
|
cmp r1, #0
|
|
moveq r0, lr, lsl #0x10
|
|
moveq r0, r0, asr #0x10
|
|
ldmeqia sp!, {r3, pc}
|
|
cmp ip, r2
|
|
moveq r1, lr, lsl #0x10
|
|
moveq ip, r1, asr #0x10
|
|
_0200F2C4:
|
|
add lr, lr, #1
|
|
add r3, r3, #6
|
|
_0200F2CC:
|
|
cmp lr, #0x32
|
|
blt _0200F298
|
|
mov r0, ip
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0200F2DC: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end GetFirstUnequippedItemOfType
|
|
|
|
arm_func_start CopyItemAtIdx
|
|
CopyItemAtIdx: ; 0x0200F2E0
|
|
stmdb sp!, {r3, lr}
|
|
ldr r3, _0200F344 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r2, #6
|
|
ldr r3, [r3]
|
|
smulbb r2, r0, r2
|
|
ldr r3, [r3, #0x384]
|
|
ldrb r0, [r3, r2]
|
|
add r3, r3, r2
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _0200F334
|
|
ldrh r2, [r3]
|
|
mov r0, #1
|
|
strh r2, [r1]
|
|
ldrh r2, [r3, #2]
|
|
strh r2, [r1, #2]
|
|
ldrh r2, [r3, #4]
|
|
strh r2, [r1, #4]
|
|
ldmia sp!, {r3, pc}
|
|
_0200F334:
|
|
mov r0, r1
|
|
bl ItemZInit
|
|
mov r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0200F344: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end CopyItemAtIdx
|
|
|
|
arm_func_start GetItemAtIdx
|
|
GetItemAtIdx: ; 0x0200F348
|
|
cmp r0, #0
|
|
movlt r0, #0
|
|
bxlt lr
|
|
ldr r2, _0200F36C ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r1, #6
|
|
ldr r2, [r2]
|
|
ldr r2, [r2, #0x384]
|
|
smlabb r0, r0, r1, r2
|
|
bx lr
|
|
.align 2, 0
|
|
_0200F36C: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end GetItemAtIdx
|
|
|
|
arm_func_start RemoveEmptyItemsInBag
|
|
RemoveEmptyItemsInBag: ; 0x0200F370
|
|
ldr r0, _0200F388 ; =BAG_ITEMS_PTR_MIRROR
|
|
ldr ip, _0200F38C ; =RemoveEmptyItems
|
|
ldr r0, [r0]
|
|
mov r1, #0x32
|
|
ldr r0, [r0, #0x384]
|
|
bx ip
|
|
.align 2, 0
|
|
_0200F388: .word BAG_ITEMS_PTR_MIRROR
|
|
_0200F38C: .word RemoveEmptyItems
|
|
arm_func_end RemoveEmptyItemsInBag
|
|
|
|
arm_func_start RemoveItemNoHole
|
|
RemoveItemNoHole: ; 0x0200F390
|
|
stmdb sp!, {r4, lr}
|
|
ldr r2, _0200F400 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r1, #6
|
|
ldr r2, [r2]
|
|
smulbb r1, r0, r1
|
|
ldr r2, [r2, #0x384]
|
|
ldrb r0, [r2, r1]
|
|
add r4, r2, r1
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _0200F3F8
|
|
ldrb r0, [r4, #1]
|
|
cmp r0, #0
|
|
beq _0200F3D4
|
|
bl sub_020582E0
|
|
_0200F3D4:
|
|
mov r0, r4
|
|
bl ItemZInit
|
|
ldr r0, _0200F400 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r1, #0x32
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x384]
|
|
bl RemoveEmptyItems
|
|
mov r0, #1
|
|
ldmia sp!, {r4, pc}
|
|
_0200F3F8:
|
|
mov r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_0200F400: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end RemoveItemNoHole
|
|
|
|
arm_func_start RemoveItem
|
|
RemoveItem: ; 0x0200F404
|
|
stmdb sp!, {r4, lr}
|
|
ldr r2, _0200F450 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r1, #6
|
|
ldr r2, [r2]
|
|
smulbb r1, r0, r1
|
|
ldr r2, [r2, #0x384]
|
|
ldrb r0, [r2, r1]
|
|
add r4, r2, r1
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
ldrneb r0, [r4, #1]
|
|
cmpne r0, #0
|
|
beq _0200F444
|
|
bl sub_020582E0
|
|
_0200F444:
|
|
mov r0, r4
|
|
bl ItemZInit
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_0200F450: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end RemoveItem
|
|
|
|
arm_func_start RemoveHeldItemNoHole
|
|
RemoveHeldItemNoHole: ; 0x0200F454
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
movs r5, r0
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
|
|
ldr r0, _0200F4D0 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r4, #0
|
|
ldr r0, [r0]
|
|
mov r6, r4
|
|
ldr r8, [r0, #0x384]
|
|
mov r7, #1
|
|
_0200F478:
|
|
ldrb r0, [r8]
|
|
tst r0, #1
|
|
movne r0, r7
|
|
moveq r0, r6
|
|
tst r0, #0xff
|
|
beq _0200F4A8
|
|
ldrb r0, [r8, #1]
|
|
cmp r0, r5
|
|
bne _0200F4A8
|
|
bl sub_020582E0
|
|
mov r0, r8
|
|
bl ItemZInit
|
|
_0200F4A8:
|
|
add r4, r4, #1
|
|
cmp r4, #0x32
|
|
add r8, r8, #6
|
|
blt _0200F478
|
|
ldr r0, _0200F4D0 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r1, #0x32
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x384]
|
|
bl RemoveEmptyItems
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
_0200F4D0: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end RemoveHeldItemNoHole
|
|
|
|
arm_func_start RemoveItemByIdAndStackNoHole
|
|
RemoveItemByIdAndStackNoHole: ; 0x0200F4D4
|
|
stmdb sp!, {r4, lr}
|
|
ldr r1, _0200F554 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r3, #0
|
|
ldr r1, [r1]
|
|
ldr r4, [r1, #0x384]
|
|
b _0200F544
|
|
_0200F4EC:
|
|
ldrsh r2, [r4, #4]
|
|
ldrsh r1, [r0]
|
|
cmp r2, r1
|
|
ldreqh r2, [r4, #2]
|
|
ldreqh r1, [r0, #2]
|
|
cmpeq r2, r1
|
|
bne _0200F53C
|
|
ldrb r0, [r4, #1]
|
|
cmp r0, #0
|
|
beq _0200F518
|
|
bl sub_020582E0
|
|
_0200F518:
|
|
mov r0, r4
|
|
bl ItemZInit
|
|
ldr r0, _0200F554 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r1, #0x32
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x384]
|
|
bl RemoveEmptyItems
|
|
mov r0, #1
|
|
ldmia sp!, {r4, pc}
|
|
_0200F53C:
|
|
add r3, r3, #1
|
|
add r4, r4, #6
|
|
_0200F544:
|
|
cmp r3, #0x32
|
|
blt _0200F4EC
|
|
mov r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_0200F554: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end RemoveItemByIdAndStackNoHole
|
|
|
|
arm_func_start RemoveEquivItem
|
|
RemoveEquivItem: ; 0x0200F558
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
ldr r1, _0200F5FC ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r5, r0
|
|
ldr r0, [r1]
|
|
mov r4, #0
|
|
ldr sb, [r0, #0x384]
|
|
mov r7, r4
|
|
mov r8, #1
|
|
mov r6, #0xb
|
|
b _0200F5EC
|
|
_0200F580:
|
|
ldrb r0, [sb]
|
|
tst r0, #1
|
|
movne r0, r8
|
|
moveq r0, r7
|
|
tst r0, #0xff
|
|
beq _0200F5E4
|
|
mov r0, sb
|
|
mov r1, r5
|
|
mov r2, r6
|
|
bl AreItemsEquivalent
|
|
cmp r0, #0
|
|
beq _0200F5E4
|
|
ldrb r0, [sb, #1]
|
|
cmp r0, #0
|
|
beq _0200F5C0
|
|
bl sub_020582E0
|
|
_0200F5C0:
|
|
mov r0, sb
|
|
bl ItemZInit
|
|
ldr r0, _0200F5FC ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r1, #0x32
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x384]
|
|
bl RemoveEmptyItems
|
|
mov r0, #1
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
_0200F5E4:
|
|
add r4, r4, #1
|
|
add sb, sb, #6
|
|
_0200F5EC:
|
|
cmp r4, #0x32
|
|
blt _0200F580
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
_0200F5FC: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end RemoveEquivItem
|
|
|
|
arm_func_start RemoveEquivItemNoHole
|
|
RemoveEquivItemNoHole: ; 0x0200F600
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
ldr r1, _0200F690 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r5, r0
|
|
ldr r0, [r1]
|
|
mov r4, #0
|
|
ldr sb, [r0, #0x384]
|
|
mov r7, r4
|
|
mov r8, #1
|
|
mov r6, #0xb
|
|
b _0200F680
|
|
_0200F628:
|
|
ldrb r0, [sb]
|
|
tst r0, #1
|
|
movne r0, r8
|
|
moveq r0, r7
|
|
tst r0, #0xff
|
|
beq _0200F678
|
|
mov r0, sb
|
|
mov r1, r5
|
|
mov r2, r6
|
|
bl AreItemsEquivalent
|
|
cmp r0, #0
|
|
beq _0200F678
|
|
ldrb r0, [sb, #1]
|
|
cmp r0, #0
|
|
beq _0200F668
|
|
bl sub_020582E0
|
|
_0200F668:
|
|
mov r0, sb
|
|
bl ItemZInit
|
|
mov r0, #1
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
_0200F678:
|
|
add r4, r4, #1
|
|
add sb, sb, #6
|
|
_0200F680:
|
|
cmp r4, #0x32
|
|
blt _0200F628
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
_0200F690: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end RemoveEquivItemNoHole
|
|
|
|
arm_func_start DecrementStackItem
|
|
DecrementStackItem: ; 0x0200F694
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
ldr r1, _0200F714 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r6, r0
|
|
ldr r0, [r1]
|
|
mov r5, #0
|
|
ldr r4, [r0, #0x384]
|
|
mov r8, r5
|
|
mov sb, #1
|
|
mov r7, #0xb
|
|
b _0200F704
|
|
_0200F6BC:
|
|
ldrb r0, [r4]
|
|
tst r0, #1
|
|
movne r0, sb
|
|
moveq r0, r8
|
|
tst r0, #0xff
|
|
beq _0200F6FC
|
|
mov r0, r4
|
|
mov r1, r6
|
|
mov r2, r7
|
|
bl AreItemsEquivalent
|
|
cmp r0, #0
|
|
ldrneh r1, [r4, #2]
|
|
movne r0, #1
|
|
subne r1, r1, #1
|
|
strneh r1, [r4, #2]
|
|
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
_0200F6FC:
|
|
add r5, r5, #1
|
|
add r4, r4, #6
|
|
_0200F704:
|
|
cmp r5, #0x32
|
|
blt _0200F6BC
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
_0200F714: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end DecrementStackItem
|
|
|
|
arm_func_start RemoveItemNoHoleCheck
|
|
RemoveItemNoHoleCheck: ; 0x0200F718
|
|
stmdb sp!, {r4, lr}
|
|
mvn r1, #0
|
|
cmp r0, r1
|
|
beq _0200F78C
|
|
ldr r2, _0200F794 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r1, #6
|
|
ldr r2, [r2]
|
|
smulbb r1, r0, r1
|
|
ldr r2, [r2, #0x384]
|
|
ldrb r0, [r2, r1]
|
|
add r4, r2, r1
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _0200F78C
|
|
ldrb r0, [r4, #1]
|
|
cmp r0, #0
|
|
beq _0200F768
|
|
bl sub_020582E0
|
|
_0200F768:
|
|
mov r0, r4
|
|
bl ItemZInit
|
|
ldr r0, _0200F794 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r1, #0x32
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x384]
|
|
bl RemoveEmptyItems
|
|
mov r0, #1
|
|
ldmia sp!, {r4, pc}
|
|
_0200F78C:
|
|
mov r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_0200F794: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end RemoveItemNoHoleCheck
|
|
|
|
arm_func_start RemoveFirstUnequippedItemOfType
|
|
RemoveFirstUnequippedItemOfType: ; 0x0200F798
|
|
stmdb sp!, {r3, lr}
|
|
bl GetFirstUnequippedItemOfType
|
|
bl RemoveItemNoHoleCheck
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end RemoveFirstUnequippedItemOfType
|
|
|
|
arm_func_start RemoveAllItems
|
|
RemoveAllItems: ; 0x0200F7A8
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r0, _0200F7D8 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r5, #0
|
|
ldr r0, [r0]
|
|
ldr r4, [r0, #0x384]
|
|
_0200F7BC:
|
|
mov r0, r4
|
|
bl ItemZInit
|
|
add r5, r5, #1
|
|
cmp r5, #0x32
|
|
add r4, r4, #6
|
|
blt _0200F7BC
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_0200F7D8: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end RemoveAllItems
|
|
|
|
arm_func_start RemoveAllItemsStartingAt
|
|
RemoveAllItemsStartingAt: ; 0x0200F7DC
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
ldr r6, _0200F848 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r4, r0
|
|
ldr r1, [r6]
|
|
mov r0, #6
|
|
ldr r1, [r1, #0x384]
|
|
mov r5, r0
|
|
mla r7, r4, r0, r1
|
|
b _0200F828
|
|
_0200F800:
|
|
ldrb r0, [r7, #1]
|
|
cmp r0, #0
|
|
beq _0200F810
|
|
bl sub_020582E0
|
|
_0200F810:
|
|
ldr r0, [r6]
|
|
ldr r0, [r0, #0x384]
|
|
mla r0, r4, r5, r0
|
|
bl ItemZInit
|
|
add r4, r4, #1
|
|
add r7, r7, #6
|
|
_0200F828:
|
|
cmp r4, #0x32
|
|
blt _0200F800
|
|
ldr r0, _0200F848 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r1, #0x32
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x384]
|
|
bl RemoveEmptyItems
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_0200F848: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end RemoveAllItemsStartingAt
|
|
|
|
arm_func_start SpecialProcAddItemToBag
|
|
SpecialProcAddItemToBag: ; 0x0200F84C
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #8
|
|
mov r1, r0
|
|
add r0, sp, #0
|
|
bl BulkItemToItem
|
|
add r0, sp, #0
|
|
mov r1, #0
|
|
bl AddItemToBag
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end SpecialProcAddItemToBag
|
|
|
|
arm_func_start AddItemToBagNoHeld
|
|
AddItemToBagNoHeld: ; 0x0200F874
|
|
ldr ip, _0200F880 ; =AddItemToBag
|
|
mov r1, #0
|
|
bx ip
|
|
.align 2, 0
|
|
_0200F880: .word AddItemToBag
|
|
arm_func_end AddItemToBagNoHeld
|
|
|
|
arm_func_start AddItemToBag
|
|
AddItemToBag: ; 0x0200F884
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r2, _0200F90C ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r6, r0
|
|
ldr r0, [r2]
|
|
mov r5, r1
|
|
ldr r4, [r0, #0x384]
|
|
bl GetCurrentBagCapacity
|
|
mov ip, #0
|
|
mov r1, ip
|
|
mov r2, #1
|
|
b _0200F8FC
|
|
_0200F8B0:
|
|
ldrb r3, [r4]
|
|
tst r3, #1
|
|
movne r3, r2
|
|
moveq r3, r1
|
|
tst r3, #0xff
|
|
bne _0200F8F4
|
|
ldrh r1, [r6]
|
|
mov r0, r6
|
|
strh r1, [r4]
|
|
ldrh r1, [r6, #2]
|
|
strh r1, [r4, #2]
|
|
ldrh r1, [r6, #4]
|
|
strh r1, [r4, #4]
|
|
strb r5, [r4, #1]
|
|
bl SetItemAcquired
|
|
mov r0, #1
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
_0200F8F4:
|
|
add ip, ip, #1
|
|
add r4, r4, #6
|
|
_0200F8FC:
|
|
cmp ip, r0
|
|
blt _0200F8B0
|
|
mov r0, #0
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_0200F90C: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end AddItemToBag
|
|
|
|
arm_func_start CleanStickyItemsInBag
|
|
CleanStickyItemsInBag: ; 0x0200F910
|
|
ldr r0, _0200F93C ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r2, #0
|
|
ldr r0, [r0]
|
|
ldr r1, [r0, #0x384]
|
|
_0200F920:
|
|
ldrb r0, [r1]
|
|
add r2, r2, #1
|
|
cmp r2, #0x32
|
|
bic r0, r0, #8
|
|
strb r0, [r1], #6
|
|
blt _0200F920
|
|
bx lr
|
|
.align 2, 0
|
|
_0200F93C: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end CleanStickyItemsInBag
|
|
|
|
arm_func_start CountStickyItemsInBag
|
|
CountStickyItemsInBag: ; 0x0200F940
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r0, _0200F9B0 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov lr, #0
|
|
ldr r0, [r0]
|
|
mov r3, #1
|
|
ldr ip, [r0, #0x384]
|
|
mov r4, lr
|
|
mov r2, lr
|
|
mov r0, lr
|
|
mov r1, r3
|
|
_0200F968:
|
|
ldrb r5, [ip]
|
|
tst r5, #1
|
|
movne r6, r3
|
|
moveq r6, r2
|
|
tst r6, #0xff
|
|
beq _0200F994
|
|
tst r5, #8
|
|
movne r5, r1
|
|
moveq r5, r0
|
|
tst r5, #0xff
|
|
addne lr, lr, #1
|
|
_0200F994:
|
|
add r4, r4, #1
|
|
cmp r4, #0x32
|
|
add ip, ip, #6
|
|
blt _0200F968
|
|
mov r0, lr, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_0200F9B0: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end CountStickyItemsInBag
|
|
|
|
arm_func_start sub_0200F9B4
|
|
sub_0200F9B4: ; 0x0200F9B4
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, _0200FA08 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov lr, #0
|
|
ldr r1, [r1]
|
|
mov r2, lr
|
|
ldr ip, [r1, #0x384]
|
|
mov r3, #1
|
|
_0200F9D0:
|
|
ldrb r1, [ip]
|
|
add lr, lr, #1
|
|
tst r1, #1
|
|
movne r1, r3
|
|
moveq r1, r2
|
|
tst r1, #0xff
|
|
ldrneb r1, [ip, #1]
|
|
cmpne r1, #0
|
|
ldrneb r1, [r0, r1]
|
|
strneb r1, [ip, #1]
|
|
cmp lr, #0x32
|
|
add ip, ip, #6
|
|
blt _0200F9D0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0200FA08: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end sub_0200F9B4
|
|
|
|
arm_func_start sub_0200FA0C
|
|
sub_0200FA0C: ; 0x0200FA0C
|
|
stmdb sp!, {r3, lr}
|
|
ldr r3, _0200FA64 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r2, #0x12c
|
|
ldr r3, [r3]
|
|
mov lr, #0
|
|
mla ip, r1, r2, r3
|
|
mov r2, lr
|
|
mov r3, #1
|
|
_0200FA2C:
|
|
ldrb r1, [ip]
|
|
add lr, lr, #1
|
|
tst r1, #1
|
|
movne r1, r3
|
|
moveq r1, r2
|
|
tst r1, #0xff
|
|
ldrneb r1, [ip, #1]
|
|
cmpne r1, #0
|
|
ldrneb r1, [r0, r1]
|
|
strneb r1, [ip, #1]
|
|
cmp lr, #0x32
|
|
add ip, ip, #6
|
|
blt _0200FA2C
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0200FA64: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end sub_0200FA0C
|
|
|
|
arm_func_start TransmuteHeldItemInBag
|
|
TransmuteHeldItemInBag: ; 0x0200FA68
|
|
stmdb sp!, {r4, lr}
|
|
ldr r1, _0200FAE8 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r4, #0
|
|
ldr r1, [r1]
|
|
mov r3, r4
|
|
ldr lr, [r1, #0x384]
|
|
mov ip, #1
|
|
b _0200FAD8
|
|
_0200FA88:
|
|
ldrb r1, [lr]
|
|
tst r1, #1
|
|
movne r1, ip
|
|
moveq r1, r3
|
|
tst r1, #0xff
|
|
beq _0200FAD0
|
|
ldrb r2, [lr, #1]
|
|
ldrb r1, [r0, #1]
|
|
cmp r2, r1
|
|
bne _0200FAD0
|
|
ldrh r1, [r0]
|
|
strh r1, [lr]
|
|
ldrh r1, [r0, #2]
|
|
strh r1, [lr, #2]
|
|
ldrh r1, [r0, #4]
|
|
mov r0, #1
|
|
strh r1, [lr, #4]
|
|
ldmia sp!, {r4, pc}
|
|
_0200FAD0:
|
|
add r4, r4, #1
|
|
add lr, lr, #6
|
|
_0200FAD8:
|
|
cmp r4, #0x32
|
|
blt _0200FA88
|
|
mov r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_0200FAE8: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end TransmuteHeldItemInBag
|
|
|
|
arm_func_start SetFlagsForHeldItemInBag
|
|
SetFlagsForHeldItemInBag: ; 0x0200FAEC
|
|
stmdb sp!, {r4, lr}
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r4, pc}
|
|
ldr r2, _0200FB50 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r4, #0
|
|
ldr r2, [r2]
|
|
mov r3, r4
|
|
ldr lr, [r2, #0x384]
|
|
mov ip, #1
|
|
_0200FB10:
|
|
ldrb r2, [lr]
|
|
tst r2, #1
|
|
movne r2, ip
|
|
moveq r2, r3
|
|
tst r2, #0xff
|
|
beq _0200FB3C
|
|
ldrb r2, [lr, #1]
|
|
cmp r2, r0
|
|
ldreqb r2, [lr]
|
|
orreq r2, r2, r1
|
|
streqb r2, [lr]
|
|
_0200FB3C:
|
|
add r4, r4, #1
|
|
cmp r4, #0x32
|
|
add lr, lr, #6
|
|
blt _0200FB10
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_0200FB50: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end SetFlagsForHeldItemInBag
|
|
|
|
arm_func_start RemoveHolderForItemInBag
|
|
RemoveHolderForItemInBag: ; 0x0200FB54
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
ldr r1, _0200FBDC ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r6, r0
|
|
ldr r0, [r1]
|
|
mov r5, #0
|
|
mov sb, #1
|
|
ldr r4, [r0, #0x384]
|
|
mov r8, r5
|
|
mov r7, sb
|
|
b _0200FBCC
|
|
_0200FB7C:
|
|
ldrb r0, [r4]
|
|
tst r0, #1
|
|
movne r0, sb
|
|
moveq r0, r8
|
|
tst r0, #0xff
|
|
beq _0200FBC4
|
|
mov r0, r4
|
|
mov r1, r6
|
|
mov r2, r7
|
|
bl AreItemsEquivalent
|
|
cmp r0, #0
|
|
beq _0200FBC4
|
|
mov r0, #0
|
|
strb r0, [r4, #1]
|
|
ldrb r1, [r6]
|
|
mov r0, #1
|
|
strb r1, [r4]
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
_0200FBC4:
|
|
add r5, r5, #1
|
|
add r4, r4, #6
|
|
_0200FBCC:
|
|
cmp r5, #0x32
|
|
blt _0200FB7C
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
_0200FBDC: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end RemoveHolderForItemInBag
|
|
|
|
arm_func_start SetHolderForItemInBag
|
|
SetHolderForItemInBag: ; 0x0200FBE0
|
|
stmdb sp!, {r4, lr}
|
|
ldr ip, _0200FC20 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r3, #6
|
|
ldr lr, [ip]
|
|
smulbb ip, r0, r3
|
|
ldr lr, [lr, #0x384]
|
|
and r0, r2, #0xff
|
|
ldrb r3, [lr, ip]
|
|
add r4, lr, ip
|
|
bic r3, r3, #0x10
|
|
strb r3, [lr, ip]
|
|
strb r2, [r1, #1]
|
|
strb r0, [r4, #1]
|
|
ldrb r0, [r1]
|
|
strb r0, [lr, ip]
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_0200FC20: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end SetHolderForItemInBag
|
|
|
|
arm_func_start SortItemsInBag
|
|
SortItemsInBag: ; 0x0200FC24
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
mov r4, #0
|
|
ldr r7, _0200FCA8 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r8, r4
|
|
mov sb, #1
|
|
mov r6, #6
|
|
_0200FC3C:
|
|
mul r1, r4, r6
|
|
ldr r0, [r7]
|
|
ldr r2, [r0, #0x384]
|
|
ldrb r0, [r2, r1]
|
|
add r5, r2, r1
|
|
tst r0, #1
|
|
movne r0, sb
|
|
moveq r0, r8
|
|
tst r0, #0xff
|
|
beq _0200FC84
|
|
ldrsh r0, [r5, #4]
|
|
cmp r0, #0xb7
|
|
bne _0200FC84
|
|
mov r0, r5
|
|
bl sub_0200D8AC
|
|
bl AddMoneyCarried
|
|
mov r0, r5
|
|
bl ItemZInit
|
|
_0200FC84:
|
|
add r4, r4, #1
|
|
cmp r4, #0x32
|
|
blt _0200FC3C
|
|
ldr r0, _0200FCA8 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r1, #0x32
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x384]
|
|
bl SortItemList
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
_0200FCA8: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end SortItemsInBag
|
|
|
|
arm_func_start RemovePokeItemsInBag
|
|
RemovePokeItemsInBag: ; 0x0200FCAC
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
ldr r0, _0200FD34 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r5, #0
|
|
ldr r0, [r0]
|
|
mov r6, r5
|
|
ldr r4, [r0, #0x384]
|
|
mov r7, #1
|
|
_0200FCC8:
|
|
ldrb r0, [r4]
|
|
tst r0, #1
|
|
movne r0, r7
|
|
moveq r0, r6
|
|
tst r0, #0xff
|
|
beq _0200FD0C
|
|
ldrsh r0, [r4, #4]
|
|
cmp r0, #0xb7
|
|
bne _0200FD0C
|
|
ldrb r1, [r4]
|
|
mov r0, r4
|
|
bic r1, r1, #8
|
|
strb r1, [r4]
|
|
bl sub_0200D8AC
|
|
bl AddMoneyCarried
|
|
mov r0, r4
|
|
bl ItemZInit
|
|
_0200FD0C:
|
|
add r5, r5, #1
|
|
cmp r5, #0x32
|
|
add r4, r4, #6
|
|
blt _0200FCC8
|
|
ldr r0, _0200FD34 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r1, #0x32
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x384]
|
|
bl RemoveEmptyItems
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_0200FD34: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end RemovePokeItemsInBag
|
|
|
|
arm_func_start sub_0200FD38
|
|
sub_0200FD38: ; 0x0200FD38
|
|
bx lr
|
|
arm_func_end sub_0200FD38
|
|
|
|
arm_func_start sub_0200FD3C
|
|
sub_0200FD3C: ; 0x0200FD3C
|
|
ldr ip, _0200FD44 ; =StorageZInit
|
|
bx ip
|
|
.align 2, 0
|
|
_0200FD44: .word StorageZInit
|
|
arm_func_end sub_0200FD3C
|
|
|
|
arm_func_start sub_0200FD48
|
|
sub_0200FD48: ; 0x0200FD48
|
|
ldr ip, _0200FD50 ; =GetRankStorageSize
|
|
bx ip
|
|
.align 2, 0
|
|
_0200FD50: .word GetRankStorageSize
|
|
arm_func_end sub_0200FD48
|
|
|
|
arm_func_start IsStorageFull
|
|
IsStorageFull: ; 0x0200FD54
|
|
stmdb sp!, {r4, lr}
|
|
bl GetRankStorageSize
|
|
mov r4, r0
|
|
bl CountNbOfItemsInStorage
|
|
cmp r0, r4
|
|
movge r0, #1
|
|
movlt r0, #0
|
|
and r0, r0, #0xff
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end IsStorageFull
|
|
|
|
arm_func_start CountNbOfItemsInStorage
|
|
CountNbOfItemsInStorage: ; 0x0200FD78
|
|
ldr r1, _0200FDAC ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r0, #0
|
|
ldr r3, [r1]
|
|
mov r2, r0
|
|
_0200FD88:
|
|
add r1, r3, r2, lsl #1
|
|
add r1, r1, #0x300
|
|
ldrsh r1, [r1, #0x8a]
|
|
add r2, r2, #1
|
|
cmp r1, #0
|
|
addne r0, r0, #1
|
|
cmp r2, #0x3e8
|
|
blt _0200FD88
|
|
bx lr
|
|
.align 2, 0
|
|
_0200FDAC: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end CountNbOfItemsInStorage
|
|
|
|
arm_func_start CountNbOfValidItemsInStorage
|
|
CountNbOfValidItemsInStorage: ; 0x0200FDB0
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r5, #0
|
|
ldr r4, _0200FDFC ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r6, r5
|
|
_0200FDC0:
|
|
ldr r0, [r4]
|
|
add r0, r0, r6, lsl #1
|
|
add r0, r0, #0x300
|
|
ldrsh r1, [r0, #0x8a]
|
|
cmp r1, #0
|
|
beq _0200FDE8
|
|
ldrsh r0, [r0, #0x8a]
|
|
bl IsItemValidVeneer
|
|
cmp r0, #0
|
|
addne r5, r5, #1
|
|
_0200FDE8:
|
|
add r6, r6, #1
|
|
cmp r6, #0x3e8
|
|
blt _0200FDC0
|
|
mov r0, r5
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_0200FDFC: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end CountNbOfValidItemsInStorage
|
|
|
|
arm_func_start CountNbOfValidItemsInTimeDarknessInStorage
|
|
CountNbOfValidItemsInTimeDarknessInStorage: ; 0x0200FE00
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r4, #0
|
|
ldr r6, _0200FEA4 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r5, r4
|
|
_0200FE10:
|
|
ldr r0, [r6]
|
|
add r0, r0, r5, lsl #1
|
|
add r0, r0, #0x300
|
|
ldrsh r7, [r0, #0x8a]
|
|
cmp r7, #0
|
|
beq _0200FE90
|
|
mov r0, r7
|
|
bl IsItemValidVeneer
|
|
cmp r0, #0
|
|
beq _0200FE90
|
|
mov r0, r7
|
|
bl IsItemInTimeDarkness
|
|
cmp r0, #0
|
|
beq _0200FE90
|
|
mov r0, r7
|
|
bl IsTreasureBox
|
|
cmp r0, #0
|
|
beq _0200FE8C
|
|
ldr r0, [r6]
|
|
add r0, r0, r5, lsl #1
|
|
add r0, r0, #0xb00
|
|
ldrsh r7, [r0, #0x5a]
|
|
mov r0, r7
|
|
bl IsItemValidVeneer
|
|
cmp r0, #0
|
|
beq _0200FE90
|
|
mov r0, r7
|
|
bl IsItemInTimeDarkness
|
|
cmp r0, #0
|
|
addne r4, r4, #1
|
|
b _0200FE90
|
|
_0200FE8C:
|
|
add r4, r4, #1
|
|
_0200FE90:
|
|
add r5, r5, #1
|
|
cmp r5, #0x3e8
|
|
blt _0200FE10
|
|
mov r0, r4
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_0200FEA4: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end CountNbOfValidItemsInTimeDarknessInStorage
|
|
|
|
arm_func_start CountNbItemsOfTypeInStorage
|
|
CountNbItemsOfTypeInStorage: ; 0x0200FEA8
|
|
ldr r1, _0200FEE0 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r2, #0
|
|
ldr ip, [r1]
|
|
mov r3, r2
|
|
_0200FEB8:
|
|
add r1, ip, r3, lsl #1
|
|
add r1, r1, #0x300
|
|
ldrsh r1, [r1, #0x8a]
|
|
add r3, r3, #1
|
|
cmp r0, r1
|
|
addeq r2, r2, #1
|
|
cmp r3, #0x3e8
|
|
blt _0200FEB8
|
|
mov r0, r2
|
|
bx lr
|
|
.align 2, 0
|
|
_0200FEE0: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end CountNbItemsOfTypeInStorage
|
|
|
|
arm_func_start CountItemTypeInStorage
|
|
CountItemTypeInStorage: ; 0x0200FEE4
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r4, #0
|
|
ldr r7, _0200FF4C ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r6, r0
|
|
mov r5, r4
|
|
_0200FEF8:
|
|
ldr r1, [r7]
|
|
ldrsh r0, [r6]
|
|
add r1, r1, r5, lsl #1
|
|
add r1, r1, #0x300
|
|
ldrsh r1, [r1, #0x8a]
|
|
cmp r0, r1
|
|
bne _0200FF38
|
|
bl IsThrownItem
|
|
cmp r0, #0
|
|
addeq r4, r4, #1
|
|
beq _0200FF38
|
|
ldr r0, [r7]
|
|
add r0, r0, r5, lsl #1
|
|
add r0, r0, #0xb00
|
|
ldrh r0, [r0, #0x5a]
|
|
add r4, r4, r0
|
|
_0200FF38:
|
|
add r5, r5, #1
|
|
cmp r5, #0x3e8
|
|
blt _0200FEF8
|
|
mov r0, r4
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_0200FF4C: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end CountItemTypeInStorage
|
|
|
|
arm_func_start GetEquivBulkItemIdxInStorage
|
|
GetEquivBulkItemIdxInStorage: ; 0x0200FF50
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, _0200FFA8 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov ip, #0
|
|
ldr lr, [r1]
|
|
b _0200FF98
|
|
_0200FF64:
|
|
add r2, lr, ip, lsl #1
|
|
add r1, r2, #0x300
|
|
ldrsh r3, [r0]
|
|
ldrsh r1, [r1, #0x8a]
|
|
cmp r3, r1
|
|
addeq r1, r2, #0xb00
|
|
ldreqh r2, [r0, #2]
|
|
ldreqh r1, [r1, #0x5a]
|
|
cmpeq r2, r1
|
|
moveq r0, ip, lsl #0x10
|
|
moveq r0, r0, asr #0x10
|
|
ldmeqia sp!, {r3, pc}
|
|
add ip, ip, #1
|
|
_0200FF98:
|
|
cmp ip, #0x3e8
|
|
blt _0200FF64
|
|
mvn r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0200FFA8: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end GetEquivBulkItemIdxInStorage
|
|
|
|
arm_func_start ConvertStorageItemAtIdxToBulkItem
|
|
ConvertStorageItemAtIdxToBulkItem: ; 0x0200FFAC
|
|
ldr r3, _0200FFF0 ; =BAG_ITEMS_PTR_MIRROR
|
|
ldr r2, [r3]
|
|
add r2, r2, r0, lsl #1
|
|
add r2, r2, #0x300
|
|
ldrsh r2, [r2, #0x8a]
|
|
strh r2, [r1]
|
|
ldr r2, [r3]
|
|
add r0, r2, r0, lsl #1
|
|
add r0, r0, #0xb00
|
|
ldrh r0, [r0, #0x5a]
|
|
strh r0, [r1, #2]
|
|
ldrsh r0, [r1]
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_0200FFF0: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end ConvertStorageItemAtIdxToBulkItem
|
|
|
|
arm_func_start ConvertStorageItemAtIdxToItem
|
|
ConvertStorageItemAtIdxToItem: ; 0x0200FFF4
|
|
ldr r3, _02010040 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov ip, #0
|
|
ldr r2, [r3]
|
|
add r2, r2, r0, lsl #1
|
|
add r2, r2, #0x300
|
|
ldrsh r2, [r2, #0x8a]
|
|
strh r2, [r1, #4]
|
|
ldr r2, [r3]
|
|
add r0, r2, r0, lsl #1
|
|
add r0, r0, #0xb00
|
|
ldrh r0, [r0, #0x5a]
|
|
strh r0, [r1, #2]
|
|
strb ip, [r1]
|
|
strb ip, [r1, #1]
|
|
ldrsh r0, [r1, #4]
|
|
cmp r0, #0
|
|
movne ip, #1
|
|
and r0, ip, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_02010040: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end ConvertStorageItemAtIdxToItem
|
|
|
|
arm_func_start sub_02010044
|
|
sub_02010044: ; 0x02010044
|
|
ldr r1, _0201005C ; =BAG_ITEMS_PTR_MIRROR
|
|
ldr r1, [r1]
|
|
add r0, r1, r0, lsl #1
|
|
add r0, r0, #0x300
|
|
ldrsh r0, [r0, #0x8a]
|
|
bx lr
|
|
.align 2, 0
|
|
_0201005C: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end sub_02010044
|
|
|
|
arm_func_start sub_02010060
|
|
sub_02010060: ; 0x02010060
|
|
ldr r1, _02010078 ; =BAG_ITEMS_PTR_MIRROR
|
|
ldr r1, [r1]
|
|
add r0, r1, r0, lsl #1
|
|
add r0, r0, #0xb00
|
|
ldrh r0, [r0, #0x5a]
|
|
bx lr
|
|
.align 2, 0
|
|
_02010078: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end sub_02010060
|
|
|
|
arm_func_start sub_0201007C
|
|
sub_0201007C: ; 0x0201007C
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, _02010150 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r0, #0
|
|
ldr r2, [r1]
|
|
b _02010144
|
|
_02010090:
|
|
add r1, r2, r0, lsl #1
|
|
add r1, r1, #0x300
|
|
ldrsh r1, [r1, #0x8a]
|
|
cmp r1, #0
|
|
bne _02010140
|
|
mov r1, r0
|
|
add r0, r0, #1
|
|
ldr r3, _02010150 ; =BAG_ITEMS_PTR_MIRROR
|
|
b _020100FC
|
|
_020100B4:
|
|
ldr lr, [r3]
|
|
add r2, lr, r0, lsl #1
|
|
add r2, r2, #0x300
|
|
ldrsh ip, [r2, #0x8a]
|
|
cmp ip, #0
|
|
beq _020100F8
|
|
add r2, lr, r1, lsl #1
|
|
add r2, r2, #0x300
|
|
strh ip, [r2, #0x8a]
|
|
ldr lr, [r3]
|
|
add r2, lr, r0, lsl #1
|
|
add r2, r2, #0xb00
|
|
ldrh ip, [r2, #0x5a]
|
|
add r2, lr, r1, lsl #1
|
|
add r2, r2, #0xb00
|
|
strh ip, [r2, #0x5a]
|
|
add r1, r1, #1
|
|
_020100F8:
|
|
add r0, r0, #1
|
|
_020100FC:
|
|
cmp r0, #0x3e8
|
|
blt _020100B4
|
|
mov r3, #0
|
|
ldr r2, _02010150 ; =BAG_ITEMS_PTR_MIRROR
|
|
b _02010134
|
|
_02010110:
|
|
ldr r0, [r2]
|
|
add r0, r0, r1, lsl #1
|
|
add r0, r0, #0x300
|
|
strh r3, [r0, #0x8a]
|
|
ldr r0, [r2]
|
|
add r0, r0, r1, lsl #1
|
|
add r0, r0, #0xb00
|
|
strh r3, [r0, #0x5a]
|
|
add r1, r1, #1
|
|
_02010134:
|
|
cmp r1, #0x3e8
|
|
blt _02010110
|
|
ldmia sp!, {r3, pc}
|
|
_02010140:
|
|
add r0, r0, #1
|
|
_02010144:
|
|
cmp r0, #0x3e8
|
|
blt _02010090
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02010150: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end sub_0201007C
|
|
|
|
arm_func_start sub_02010154
|
|
sub_02010154: ; 0x02010154
|
|
stmdb sp!, {r3, lr}
|
|
ldr r2, _0201019C ; =BAG_ITEMS_PTR_MIRROR
|
|
ldr r1, [r2]
|
|
add r1, r1, r0, lsl #1
|
|
add r1, r1, #0x300
|
|
ldrsh r3, [r1, #0x8a]
|
|
cmp r3, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
mov r3, #0
|
|
strh r3, [r1, #0x8a]
|
|
ldr r1, [r2]
|
|
add r0, r1, r0, lsl #1
|
|
add r0, r0, #0xb00
|
|
strh r3, [r0, #0x5a]
|
|
bl sub_0201007C
|
|
mov r0, #1
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0201019C: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end sub_02010154
|
|
|
|
arm_func_start RemoveItemAtIdxInStorage
|
|
RemoveItemAtIdxInStorage: ; 0x020101A0
|
|
ldr r2, _020101E0 ; =BAG_ITEMS_PTR_MIRROR
|
|
ldr r1, [r2]
|
|
add r1, r1, r0, lsl #1
|
|
add r1, r1, #0x300
|
|
ldrsh r3, [r1, #0x8a]
|
|
cmp r3, #0
|
|
moveq r0, #0
|
|
bxeq lr
|
|
mov r3, #0
|
|
strh r3, [r1, #0x8a]
|
|
ldr r1, [r2]
|
|
add r0, r1, r0, lsl #1
|
|
add r0, r0, #0xb00
|
|
strh r3, [r0, #0x5a]
|
|
mov r0, #1
|
|
bx lr
|
|
.align 2, 0
|
|
_020101E0: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end RemoveItemAtIdxInStorage
|
|
|
|
arm_func_start RemoveBulkItemInStorage
|
|
RemoveBulkItemInStorage: ; 0x020101E4
|
|
stmdb sp!, {r4, lr}
|
|
ldr r1, _0201025C ; =BAG_ITEMS_PTR_MIRROR
|
|
mov lr, #0
|
|
ldr r4, [r1]
|
|
b _0201024C
|
|
_020101F8:
|
|
add r3, r4, lr, lsl #1
|
|
add r2, r3, #0x300
|
|
ldrsh ip, [r0]
|
|
ldrsh r1, [r2, #0x8a]
|
|
cmp ip, r1
|
|
addeq r1, r3, #0xb00
|
|
ldreqh r3, [r0, #2]
|
|
ldreqh r1, [r1, #0x5a]
|
|
cmpeq r3, r1
|
|
bne _02010248
|
|
mov r1, #0
|
|
ldr r0, _0201025C ; =BAG_ITEMS_PTR_MIRROR
|
|
strh r1, [r2, #0x8a]
|
|
ldr r0, [r0]
|
|
add r0, r0, lr, lsl #1
|
|
add r0, r0, #0xb00
|
|
strh r1, [r0, #0x5a]
|
|
bl sub_0201007C
|
|
mov r0, #1
|
|
ldmia sp!, {r4, pc}
|
|
_02010248:
|
|
add lr, lr, #1
|
|
_0201024C:
|
|
cmp lr, #0x3e8
|
|
blt _020101F8
|
|
mov r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_0201025C: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end RemoveBulkItemInStorage
|
|
|
|
arm_func_start RemoveItemInStorage
|
|
RemoveItemInStorage: ; 0x02010260
|
|
stmdb sp!, {r4, lr}
|
|
ldr r1, _020102D8 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov lr, #0
|
|
ldr r4, [r1]
|
|
b _020102C8
|
|
_02010274:
|
|
add r3, r4, lr, lsl #1
|
|
add r2, r3, #0x300
|
|
ldrsh ip, [r0, #4]
|
|
ldrsh r1, [r2, #0x8a]
|
|
cmp ip, r1
|
|
addeq r1, r3, #0xb00
|
|
ldreqh r3, [r0, #2]
|
|
ldreqh r1, [r1, #0x5a]
|
|
cmpeq r3, r1
|
|
bne _020102C4
|
|
mov r1, #0
|
|
ldr r0, _020102D8 ; =BAG_ITEMS_PTR_MIRROR
|
|
strh r1, [r2, #0x8a]
|
|
ldr r0, [r0]
|
|
add r0, r0, lr, lsl #1
|
|
add r0, r0, #0xb00
|
|
strh r1, [r0, #0x5a]
|
|
bl sub_0201007C
|
|
mov r0, #1
|
|
ldmia sp!, {r4, pc}
|
|
_020102C4:
|
|
add lr, lr, #1
|
|
_020102C8:
|
|
cmp lr, #0x3e8
|
|
blt _02010274
|
|
mov r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_020102D8: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end RemoveItemInStorage
|
|
|
|
arm_func_start StorageZInit
|
|
StorageZInit: ; 0x020102DC
|
|
mov r3, #0
|
|
ldr r1, _02010318 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r2, r3
|
|
_020102E8:
|
|
ldr r0, [r1]
|
|
add r0, r0, r3, lsl #1
|
|
add r0, r0, #0x300
|
|
strh r2, [r0, #0x8a]
|
|
ldr r0, [r1]
|
|
add r0, r0, r3, lsl #1
|
|
add r0, r0, #0xb00
|
|
add r3, r3, #1
|
|
strh r2, [r0, #0x5a]
|
|
cmp r3, #0x3e8
|
|
blt _020102E8
|
|
bx lr
|
|
.align 2, 0
|
|
_02010318: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end StorageZInit
|
|
|
|
arm_func_start AddBulkItemToStorage
|
|
AddBulkItemToStorage: ; 0x0201031C
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
sub sp, sp, #8
|
|
mov r4, r0
|
|
bl GetRankStorageSize
|
|
mov r5, r0
|
|
add r0, sp, #0
|
|
mov r1, r4
|
|
bl BulkItemToItem
|
|
ldr r0, _020103A8 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov ip, #0
|
|
ldr r2, [r0]
|
|
b _02010394
|
|
_0201034C:
|
|
add r0, r2, ip, lsl #1
|
|
add r1, r0, #0x300
|
|
ldrsh r0, [r1, #0x8a]
|
|
cmp r0, #0
|
|
bne _02010390
|
|
ldrsh r3, [r4]
|
|
ldr r2, _020103A8 ; =BAG_ITEMS_PTR_MIRROR
|
|
add r0, sp, #0
|
|
strh r3, [r1, #0x8a]
|
|
ldr r1, [r2]
|
|
ldrh r2, [r4, #2]
|
|
add r1, r1, ip, lsl #1
|
|
add r1, r1, #0xb00
|
|
strh r2, [r1, #0x5a]
|
|
bl SetItemAcquired
|
|
mov r0, #1
|
|
b _020103A0
|
|
_02010390:
|
|
add ip, ip, #1
|
|
_02010394:
|
|
cmp ip, r5
|
|
blt _0201034C
|
|
mov r0, #0
|
|
_020103A0:
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_020103A8: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end AddBulkItemToStorage
|
|
|
|
arm_func_start AddItemToStorage
|
|
AddItemToStorage: ; 0x020103AC
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl GetRankStorageSize
|
|
ldr r1, _02010420 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov ip, #0
|
|
ldr r3, [r1]
|
|
b _02010410
|
|
_020103C8:
|
|
add r1, r3, ip, lsl #1
|
|
add r1, r1, #0x300
|
|
ldrsh r2, [r1, #0x8a]
|
|
cmp r2, #0
|
|
bne _0201040C
|
|
ldrsh r3, [r4, #4]
|
|
ldr r2, _02010420 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r0, r4
|
|
strh r3, [r1, #0x8a]
|
|
ldr r1, [r2]
|
|
ldrh r2, [r4, #2]
|
|
add r1, r1, ip, lsl #1
|
|
add r1, r1, #0xb00
|
|
strh r2, [r1, #0x5a]
|
|
bl SetItemAcquired
|
|
mov r0, #1
|
|
ldmia sp!, {r4, pc}
|
|
_0201040C:
|
|
add ip, ip, #1
|
|
_02010410:
|
|
cmp ip, r0
|
|
blt _020103C8
|
|
mov r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02010420: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end AddItemToStorage
|
|
|
|
arm_func_start SortItemsInStorage
|
|
SortItemsInStorage: ; 0x02010424
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
mov sb, r1
|
|
mov r1, #6
|
|
mov sl, r0
|
|
mul r0, sb, r1
|
|
mov r1, #0
|
|
bl MemAlloc
|
|
mov r5, #6
|
|
mov r7, r0
|
|
mov r8, #0
|
|
mov fp, #0x80
|
|
ldr r6, _0201058C ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r4, r5
|
|
b _020104C8
|
|
_0201045C:
|
|
ldr r0, [r6]
|
|
add r0, r0, r8, lsl #1
|
|
add r0, r0, #0x300
|
|
ldrsh r0, [r0, #0x8a]
|
|
cmp r0, #0
|
|
beq _020104D0
|
|
mla r0, r8, r5, r7
|
|
bl ItemZInit
|
|
ldrb r0, [sl, r8]
|
|
mul r2, r8, r4
|
|
cmp r0, #0
|
|
movne r0, fp
|
|
moveq r0, #0
|
|
orr r0, r0, #1
|
|
strb r0, [r7, r2]
|
|
ldr r1, [r6]
|
|
add r0, r7, r2
|
|
add r1, r1, r8, lsl #1
|
|
add r1, r1, #0x300
|
|
ldrsh r1, [r1, #0x8a]
|
|
strh r1, [r0, #4]
|
|
ldr r1, [r6]
|
|
add r1, r1, r8, lsl #1
|
|
add r1, r1, #0xb00
|
|
ldrh r1, [r1, #0x5a]
|
|
add r8, r8, #1
|
|
strh r1, [r0, #2]
|
|
_020104C8:
|
|
cmp r8, sb
|
|
blt _0201045C
|
|
_020104D0:
|
|
mov r0, r7
|
|
mov r1, r8
|
|
bl SortItemList
|
|
mov r6, #0
|
|
mov r1, r6
|
|
mov r2, #1
|
|
mov fp, #6
|
|
ldr r0, _0201058C ; =BAG_ITEMS_PTR_MIRROR
|
|
b _0201053C
|
|
_020104F4:
|
|
mul r4, r6, fp
|
|
add r5, r7, r4
|
|
ldr ip, [r0]
|
|
ldrsh r3, [r5, #4]
|
|
add ip, ip, r6, lsl #1
|
|
add ip, ip, #0x300
|
|
strh r3, [ip, #0x8a]
|
|
ldr ip, [r0]
|
|
ldrh r3, [r5, #2]
|
|
add r5, ip, r6, lsl #1
|
|
add r5, r5, #0xb00
|
|
strh r3, [r5, #0x5a]
|
|
ldrb r3, [r7, r4]
|
|
tst r3, #0x80
|
|
movne r3, r2
|
|
moveq r3, r1
|
|
strb r3, [sl, r6]
|
|
add r6, r6, #1
|
|
_0201053C:
|
|
cmp r6, r8
|
|
blt _020104F4
|
|
mov r2, #0
|
|
ldr r1, _0201058C ; =BAG_ITEMS_PTR_MIRROR
|
|
b _02010578
|
|
_02010550:
|
|
ldr r0, [r1]
|
|
add r0, r0, r6, lsl #1
|
|
add r0, r0, #0x300
|
|
strh r2, [r0, #0x8a]
|
|
ldr r0, [r1]
|
|
add r0, r0, r6, lsl #1
|
|
add r0, r0, #0xb00
|
|
strh r2, [r0, #0x5a]
|
|
strb r2, [sl, r6]
|
|
add r6, r6, #1
|
|
_02010578:
|
|
cmp r6, sb
|
|
blt _02010550
|
|
mov r0, r7
|
|
bl MemFree
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_0201058C: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end SortItemsInStorage
|
|
|
|
arm_func_start sub_02010590
|
|
sub_02010590: ; 0x02010590
|
|
bx lr
|
|
arm_func_end sub_02010590
|
|
|
|
arm_func_start AllKecleonShopsZInit
|
|
AllKecleonShopsZInit: ; 0x02010594
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r2, #0
|
|
ldr ip, _02010650 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r5, r2
|
|
mov r0, r2
|
|
mov r1, r2
|
|
_020105AC:
|
|
mov r6, r1
|
|
_020105B0:
|
|
ldr r3, [ip]
|
|
mov r4, r6, lsl #2
|
|
add r3, r3, #0x330
|
|
add r3, r3, #0x1000
|
|
add r3, r3, r2, lsl #5
|
|
add lr, r3, r6, lsl #2
|
|
strh r5, [r3, r4]
|
|
add r6, r6, #1
|
|
strh r5, [lr, #2]
|
|
cmp r6, #8
|
|
blt _020105B0
|
|
mov r6, r5
|
|
_020105E0:
|
|
ldr r3, [ip]
|
|
mov lr, r6, lsl #2
|
|
add r3, r3, #0x374
|
|
add r3, r3, #0x1000
|
|
add r3, r3, r2, lsl #4
|
|
add r4, r3, r6, lsl #2
|
|
strh r0, [r3, lr]
|
|
add r6, r6, #1
|
|
strh r0, [r4, #2]
|
|
cmp r6, #4
|
|
blt _020105E0
|
|
add r2, r2, #1
|
|
cmp r2, #2
|
|
blt _020105AC
|
|
ldr r2, _02010650 ; =BAG_ITEMS_PTR_MIRROR
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x1000
|
|
str r0, [r1, #0x3a0]
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x1300
|
|
strh r0, [r1, #0xa4]
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x1300
|
|
strh r0, [r1, #0xa6]
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x1300
|
|
strh r0, [r1, #0xa8]
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02010650: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end AllKecleonShopsZInit
|
|
|
|
arm_func_start SpecialEpisodeKecleonShopZInit
|
|
SpecialEpisodeKecleonShopZInit: ; 0x02010654
|
|
stmdb sp!, {r3, lr}
|
|
mov lr, #0
|
|
ldr r2, _020106C0 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r0, lr
|
|
_02010664:
|
|
ldr r1, [r2]
|
|
mov r3, lr, lsl #2
|
|
add r1, r1, #0x350
|
|
add r1, r1, #0x1000
|
|
add ip, r1, lr, lsl #2
|
|
strh r0, [r1, r3]
|
|
add lr, lr, #1
|
|
strh r0, [ip, #2]
|
|
cmp lr, #8
|
|
blt _02010664
|
|
ldr r2, _020106C0 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r3, #0
|
|
_02010694:
|
|
ldr r1, [r2]
|
|
mov ip, r0, lsl #2
|
|
add r1, r1, #0x384
|
|
add r1, r1, #0x1000
|
|
add lr, r1, r0, lsl #2
|
|
strh r3, [r1, ip]
|
|
add r0, r0, #1
|
|
strh r3, [lr, #2]
|
|
cmp r0, #4
|
|
blt _02010694
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_020106C0: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end SpecialEpisodeKecleonShopZInit
|
|
|
|
arm_func_start SetActiveKecleonShop
|
|
SetActiveKecleonShop: ; 0x020106C4
|
|
ldr r2, _02010708 ; =BAG_ITEMS_PTR_MIRROR
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x1000
|
|
strb r0, [r1, #0x32a]
|
|
ldr ip, [r2]
|
|
add r1, ip, #0x330
|
|
add r1, r1, #0x1000
|
|
add r3, r1, r0, lsl #5
|
|
add r1, ip, #0x1000
|
|
str r3, [r1, #0x32c]
|
|
ldr r2, [r2]
|
|
add r1, r2, #0x374
|
|
add r1, r1, #0x1000
|
|
add r1, r1, r0, lsl #4
|
|
add r0, r2, #0x1000
|
|
str r1, [r0, #0x370]
|
|
bx lr
|
|
.align 2, 0
|
|
_02010708: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end SetActiveKecleonShop
|
|
|
|
arm_func_start GetMoneyStored
|
|
GetMoneyStored: ; 0x0201070C
|
|
ldr r0, _02010720 ; =BAG_ITEMS_PTR_MIRROR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1000
|
|
ldr r0, [r0, #0x3a0]
|
|
bx lr
|
|
.align 2, 0
|
|
_02010720: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end GetMoneyStored
|
|
|
|
arm_func_start SetMoneyStored
|
|
SetMoneyStored: ; 0x02010724
|
|
ldr r1, _02010750 ; =0x0098967F
|
|
cmp r0, r1
|
|
movgt r0, r1
|
|
bgt _0201073C
|
|
cmp r0, #0
|
|
movlt r0, #0
|
|
_0201073C:
|
|
ldr r1, _02010754 ; =BAG_ITEMS_PTR_MIRROR
|
|
ldr r1, [r1]
|
|
add r1, r1, #0x1000
|
|
str r0, [r1, #0x3a0]
|
|
bx lr
|
|
.align 2, 0
|
|
_02010750: .word 0x0098967F
|
|
_02010754: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end SetMoneyStored
|
|
|
|
arm_func_start AddMoneyStored
|
|
AddMoneyStored: ; 0x02010758
|
|
ldr r1, _02010774 ; =BAG_ITEMS_PTR_MIRROR
|
|
ldr ip, _02010778 ; =SetMoneyStored
|
|
ldr r1, [r1]
|
|
add r1, r1, #0x1000
|
|
ldr r1, [r1, #0x3a0]
|
|
add r0, r1, r0
|
|
bx ip
|
|
.align 2, 0
|
|
_02010774: .word BAG_ITEMS_PTR_MIRROR
|
|
_02010778: .word SetMoneyStored
|
|
arm_func_end AddMoneyStored
|
|
|
|
arm_func_start sub_0201077C
|
|
sub_0201077C: ; 0x0201077C
|
|
ldr r0, _02010790 ; =BAG_ITEMS_PTR_MIRROR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1300
|
|
ldrsh r0, [r0, #0xa4]
|
|
bx lr
|
|
.align 2, 0
|
|
_02010790: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end sub_0201077C
|
|
|
|
arm_func_start sub_02010794
|
|
sub_02010794: ; 0x02010794
|
|
ldr r1, _020107A8 ; =BAG_ITEMS_PTR_MIRROR
|
|
ldr r1, [r1]
|
|
add r1, r1, #0x1300
|
|
strh r0, [r1, #0xa4]
|
|
bx lr
|
|
.align 2, 0
|
|
_020107A8: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end sub_02010794
|
|
|
|
arm_func_start sub_020107AC
|
|
sub_020107AC: ; 0x020107AC
|
|
ldr r0, _020107C0 ; =BAG_ITEMS_PTR_MIRROR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1300
|
|
ldrh r0, [r0, #0xa6]
|
|
bx lr
|
|
.align 2, 0
|
|
_020107C0: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end sub_020107AC
|
|
|
|
arm_func_start sub_020107C4
|
|
sub_020107C4: ; 0x020107C4
|
|
ldr r1, _020107D8 ; =BAG_ITEMS_PTR_MIRROR
|
|
ldr r1, [r1]
|
|
add r1, r1, #0x1300
|
|
strh r0, [r1, #0xa6]
|
|
bx lr
|
|
.align 2, 0
|
|
_020107D8: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end sub_020107C4
|
|
|
|
arm_func_start sub_020107DC
|
|
sub_020107DC: ; 0x020107DC
|
|
ldr r0, _020107F0 ; =BAG_ITEMS_PTR_MIRROR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1300
|
|
ldrh r0, [r0, #0xa8]
|
|
bx lr
|
|
.align 2, 0
|
|
_020107F0: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end sub_020107DC
|
|
|
|
arm_func_start sub_020107F4
|
|
sub_020107F4: ; 0x020107F4
|
|
ldr r1, _02010808 ; =BAG_ITEMS_PTR_MIRROR
|
|
ldr r1, [r1]
|
|
add r1, r1, #0x1300
|
|
strh r0, [r1, #0xa8]
|
|
bx lr
|
|
.align 2, 0
|
|
_02010808: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end sub_020107F4
|
|
|
|
arm_func_start sub_0201080C
|
|
sub_0201080C: ; 0x0201080C
|
|
ldr r0, _0201082C ; =BAG_ITEMS_PTR_MIRROR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1300
|
|
ldrh r1, [r0, #0xa8]
|
|
cmp r1, #0
|
|
subne r1, r1, #1
|
|
strneh r1, [r0, #0xa8]
|
|
bx lr
|
|
.align 2, 0
|
|
_0201082C: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end sub_0201080C
|
|
|
|
arm_func_start sub_02010830
|
|
sub_02010830: ; 0x02010830
|
|
ldr r1, _02010868 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r0, #0
|
|
ldr r1, [r1]
|
|
mov r2, r0
|
|
add r1, r1, #0x1000
|
|
ldr r3, [r1, #0x32c]
|
|
_02010848:
|
|
mov r1, r2, lsl #2
|
|
ldrsh r1, [r3, r1]
|
|
add r2, r2, #1
|
|
cmp r1, #0
|
|
addne r0, r0, #1
|
|
cmp r2, #8
|
|
blt _02010848
|
|
bx lr
|
|
.align 2, 0
|
|
_02010868: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end sub_02010830
|
|
|
|
arm_func_start RemoveItemFromKecleonShop1
|
|
RemoveItemFromKecleonShop1: ; 0x0201086C
|
|
ldr r1, _02010894 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r3, r0, lsl #2
|
|
ldr r1, [r1]
|
|
mov r2, #0
|
|
add r1, r1, #0x1000
|
|
ldr r1, [r1, #0x32c]
|
|
strh r2, [r1, r3]
|
|
add r0, r1, r0, lsl #2
|
|
strh r2, [r0, #2]
|
|
bx lr
|
|
.align 2, 0
|
|
_02010894: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end RemoveItemFromKecleonShop1
|
|
|
|
arm_func_start sub_02010898
|
|
sub_02010898: ; 0x02010898
|
|
ldr r1, _020108B0 ; =BAG_ITEMS_PTR_MIRROR
|
|
ldr r1, [r1]
|
|
add r1, r1, #0x1000
|
|
ldr r1, [r1, #0x32c]
|
|
add r0, r1, r0, lsl #2
|
|
bx lr
|
|
.align 2, 0
|
|
_020108B0: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end sub_02010898
|
|
|
|
arm_func_start sub_020108B4
|
|
sub_020108B4: ; 0x020108B4
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r0, #0
|
|
mov r4, r0
|
|
ldr r2, _02010950 ; =BAG_ITEMS_PTR_MIRROR
|
|
b _020108E8
|
|
_020108C8:
|
|
ldr r1, [r2]
|
|
mov r3, r0, lsl #2
|
|
add r1, r1, #0x1000
|
|
ldr r1, [r1, #0x32c]
|
|
ldrsh r1, [r1, r3]
|
|
cmp r1, #0
|
|
bne _020108F0
|
|
add r0, r0, #1
|
|
_020108E8:
|
|
cmp r0, #8
|
|
blt _020108C8
|
|
_020108F0:
|
|
cmp r0, #8
|
|
beq _02010944
|
|
cmp r0, r4
|
|
ble _0201092C
|
|
ldr r1, [r2]
|
|
mov r3, r0, lsl #2
|
|
add r1, r1, #0x1000
|
|
ldr r5, [r1, #0x32c]
|
|
mov lr, r4, lsl #2
|
|
ldrh r1, [r5, r3]
|
|
add ip, r5, r0, lsl #2
|
|
add r3, r5, r4, lsl #2
|
|
strh r1, [r5, lr]
|
|
ldrh r1, [ip, #2]
|
|
strh r1, [r3, #2]
|
|
_0201092C:
|
|
add r0, r0, #1
|
|
add r4, r4, #1
|
|
b _020108E8
|
|
_02010938:
|
|
and r0, r4, #0xff
|
|
bl RemoveItemFromKecleonShop1
|
|
add r4, r4, #1
|
|
_02010944:
|
|
cmp r4, #8
|
|
blt _02010938
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_02010950: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end sub_020108B4
|
|
|
|
arm_func_start SortKecleonItems1
|
|
SortKecleonItems1: ; 0x02010954
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
|
|
sub sp, sp, #4
|
|
mov r6, #0
|
|
_02010960:
|
|
add r7, r6, #1
|
|
mov r5, r6, lsl #2
|
|
ldr r4, _02010A48 ; =BAG_ITEMS_PTR_MIRROR
|
|
b _02010A2C
|
|
_02010970:
|
|
ldr r0, [r4]
|
|
add r0, r0, #0x1000
|
|
ldr r0, [r0, #0x32c]
|
|
ldrsh r0, [r5, r0]
|
|
bl sub_0200D1F0
|
|
ldr r1, [r4]
|
|
mov r2, r7, lsl #2
|
|
add r1, r1, #0x1000
|
|
ldr r1, [r1, #0x32c]
|
|
mov r8, r0
|
|
ldrsh r0, [r1, r2]
|
|
bl sub_0200D1F0
|
|
cmp r8, r0
|
|
bgt _020109D0
|
|
bne _02010A28
|
|
ldr r0, [r4]
|
|
add r0, r0, #0x1000
|
|
ldr r0, [r0, #0x32c]
|
|
add r1, r5, r0
|
|
add r0, r0, r7, lsl #2
|
|
ldrh r1, [r1, #2]
|
|
ldrh r0, [r0, #2]
|
|
cmp r1, r0
|
|
bhs _02010A28
|
|
_020109D0:
|
|
ldr r1, [r4]
|
|
mov r0, r7, lsl #2
|
|
add r1, r1, #0x1000
|
|
ldr r8, [r1, #0x32c]
|
|
add lr, r5, r8
|
|
ldrh ip, [r5, r8]
|
|
ldrh r3, [lr, #2]
|
|
ldrh r1, [r8, r0]
|
|
add r2, r8, r7, lsl #2
|
|
strh ip, [sp]
|
|
strh r1, [r5, r8]
|
|
ldrh r1, [r2, #2]
|
|
strh r3, [sp, #2]
|
|
ldrh r3, [sp]
|
|
strh r1, [lr, #2]
|
|
ldr r1, [r4]
|
|
ldrh r2, [sp, #2]
|
|
add r1, r1, #0x1000
|
|
ldr r1, [r1, #0x32c]
|
|
strh r3, [r1, r0]
|
|
add r0, r1, r7, lsl #2
|
|
strh r2, [r0, #2]
|
|
_02010A28:
|
|
add r7, r7, #1
|
|
_02010A2C:
|
|
cmp r7, #8
|
|
blt _02010970
|
|
add r6, r6, #1
|
|
cmp r6, #7
|
|
blt _02010960
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
_02010A48: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end SortKecleonItems1
|
|
|
|
arm_func_start GenerateKecleonItems1
|
|
GenerateKecleonItems1: ; 0x02010A4C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
mov r8, r0
|
|
mov r4, #0
|
|
_02010A58:
|
|
and r0, r4, #0xff
|
|
bl RemoveItemFromKecleonShop1
|
|
add r4, r4, #1
|
|
cmp r4, #8
|
|
blt _02010A58
|
|
ldr r0, _02010AC0 ; =KECLEON_SHOP_ITEM_TABLE_LISTS_1
|
|
ldr r5, _02010AC4 ; =0x0000270F
|
|
ldr r6, [r0, r8, lsl #2]
|
|
mov r7, #0
|
|
_02010A7C:
|
|
mov r0, r5
|
|
bl RandIntSafe
|
|
mov r4, r0
|
|
mov r0, r5
|
|
bl RandIntSafe
|
|
mov r2, r0
|
|
mov r0, r6
|
|
mov r1, r4
|
|
bl GetItemIdFromList
|
|
bl AddItemToKecleonShop1
|
|
add r7, r7, #1
|
|
cmp r7, #8
|
|
blt _02010A7C
|
|
bl SortKecleonItems1
|
|
mov r0, r8
|
|
bl GenerateKecleonItems2
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
_02010AC0: .word KECLEON_SHOP_ITEM_TABLE_LISTS_1
|
|
_02010AC4: .word 0x0000270F
|
|
arm_func_end GenerateKecleonItems1
|
|
|
|
arm_func_start AddItemToKecleonShop1
|
|
AddItemToKecleonShop1: ; 0x02010AC8
|
|
stmdb sp!, {r3, lr}
|
|
mov r1, r0
|
|
add r0, sp, #0
|
|
bl InitBulkItem
|
|
ldr r0, _02010B38 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r2, #0
|
|
ldr r3, [r0]
|
|
add r0, r3, #0x1000
|
|
b _02010B28
|
|
_02010AEC:
|
|
ldr r1, [r0, #0x32c]
|
|
mov ip, r2, lsl #2
|
|
ldrsh r1, [r1, ip]
|
|
cmp r1, #0
|
|
bne _02010B24
|
|
add r0, r3, #0x1000
|
|
ldr r3, [r0, #0x32c]
|
|
ldrh r1, [sp]
|
|
add r2, r3, ip
|
|
mov r0, #0
|
|
strh r1, [r3, ip]
|
|
ldrh r1, [sp, #2]
|
|
strh r1, [r2, #2]
|
|
ldmia sp!, {r3, pc}
|
|
_02010B24:
|
|
add r2, r2, #1
|
|
_02010B28:
|
|
cmp r2, #8
|
|
blt _02010AEC
|
|
mov r0, #1
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02010B38: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end AddItemToKecleonShop1
|
|
|
|
arm_func_start sub_02010B3C
|
|
sub_02010B3C: ; 0x02010B3C
|
|
ldr r1, _02010B74 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r0, #0
|
|
ldr r1, [r1]
|
|
mov r2, r0
|
|
add r1, r1, #0x1000
|
|
ldr r3, [r1, #0x370]
|
|
_02010B54:
|
|
mov r1, r2, lsl #2
|
|
ldrsh r1, [r3, r1]
|
|
add r2, r2, #1
|
|
cmp r1, #0
|
|
addne r0, r0, #1
|
|
cmp r2, #4
|
|
blt _02010B54
|
|
bx lr
|
|
.align 2, 0
|
|
_02010B74: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end sub_02010B3C
|
|
|
|
arm_func_start RemoveItemFromKecleonShop2
|
|
RemoveItemFromKecleonShop2: ; 0x02010B78
|
|
ldr r1, _02010BA0 ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r3, r0, lsl #2
|
|
ldr r1, [r1]
|
|
mov r2, #0
|
|
add r1, r1, #0x1000
|
|
ldr r1, [r1, #0x370]
|
|
strh r2, [r1, r3]
|
|
add r0, r1, r0, lsl #2
|
|
strh r2, [r0, #2]
|
|
bx lr
|
|
.align 2, 0
|
|
_02010BA0: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end RemoveItemFromKecleonShop2
|
|
|
|
arm_func_start sub_02010BA4
|
|
sub_02010BA4: ; 0x02010BA4
|
|
ldr r1, _02010BBC ; =BAG_ITEMS_PTR_MIRROR
|
|
ldr r1, [r1]
|
|
add r1, r1, #0x1000
|
|
ldr r1, [r1, #0x370]
|
|
add r0, r1, r0, lsl #2
|
|
bx lr
|
|
.align 2, 0
|
|
_02010BBC: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end sub_02010BA4
|
|
|
|
arm_func_start sub_02010BC0
|
|
sub_02010BC0: ; 0x02010BC0
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r0, #0
|
|
mov r4, r0
|
|
ldr r2, _02010C5C ; =BAG_ITEMS_PTR_MIRROR
|
|
b _02010BF4
|
|
_02010BD4:
|
|
ldr r1, [r2]
|
|
mov r3, r0, lsl #2
|
|
add r1, r1, #0x1000
|
|
ldr r1, [r1, #0x370]
|
|
ldrsh r1, [r1, r3]
|
|
cmp r1, #0
|
|
bne _02010BFC
|
|
add r0, r0, #1
|
|
_02010BF4:
|
|
cmp r0, #4
|
|
blt _02010BD4
|
|
_02010BFC:
|
|
cmp r0, #4
|
|
beq _02010C50
|
|
cmp r0, r4
|
|
ble _02010C38
|
|
ldr r1, [r2]
|
|
mov r3, r0, lsl #2
|
|
add r1, r1, #0x1000
|
|
ldr r5, [r1, #0x370]
|
|
mov lr, r4, lsl #2
|
|
ldrh r1, [r5, r3]
|
|
add ip, r5, r0, lsl #2
|
|
add r3, r5, r4, lsl #2
|
|
strh r1, [r5, lr]
|
|
ldrh r1, [ip, #2]
|
|
strh r1, [r3, #2]
|
|
_02010C38:
|
|
add r0, r0, #1
|
|
add r4, r4, #1
|
|
b _02010BF4
|
|
_02010C44:
|
|
and r0, r4, #0xff
|
|
bl RemoveItemFromKecleonShop2
|
|
add r4, r4, #1
|
|
_02010C50:
|
|
cmp r4, #4
|
|
blt _02010C44
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_02010C5C: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end sub_02010BC0
|
|
|
|
arm_func_start SortKecleonItems2
|
|
SortKecleonItems2: ; 0x02010C60
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
|
|
sub sp, sp, #4
|
|
mov r6, #0
|
|
_02010C6C:
|
|
add r7, r6, #1
|
|
mov r5, r6, lsl #2
|
|
ldr r4, _02010D54 ; =BAG_ITEMS_PTR_MIRROR
|
|
b _02010D38
|
|
_02010C7C:
|
|
ldr r0, [r4]
|
|
add r0, r0, #0x1000
|
|
ldr r0, [r0, #0x370]
|
|
ldrsh r0, [r5, r0]
|
|
bl sub_0200D1F0
|
|
ldr r1, [r4]
|
|
mov r2, r7, lsl #2
|
|
add r1, r1, #0x1000
|
|
ldr r1, [r1, #0x370]
|
|
mov r8, r0
|
|
ldrsh r0, [r1, r2]
|
|
bl sub_0200D1F0
|
|
cmp r8, r0
|
|
bgt _02010CDC
|
|
bne _02010D34
|
|
ldr r0, [r4]
|
|
add r0, r0, #0x1000
|
|
ldr r0, [r0, #0x370]
|
|
add r1, r5, r0
|
|
add r0, r0, r7, lsl #2
|
|
ldrh r1, [r1, #2]
|
|
ldrh r0, [r0, #2]
|
|
cmp r1, r0
|
|
bhs _02010D34
|
|
_02010CDC:
|
|
ldr r1, [r4]
|
|
mov r0, r7, lsl #2
|
|
add r1, r1, #0x1000
|
|
ldr r8, [r1, #0x370]
|
|
add lr, r5, r8
|
|
ldrh ip, [r5, r8]
|
|
ldrh r3, [lr, #2]
|
|
ldrh r1, [r8, r0]
|
|
add r2, r8, r7, lsl #2
|
|
strh ip, [sp]
|
|
strh r1, [r5, r8]
|
|
ldrh r1, [r2, #2]
|
|
strh r3, [sp, #2]
|
|
ldrh r3, [sp]
|
|
strh r1, [lr, #2]
|
|
ldr r1, [r4]
|
|
ldrh r2, [sp, #2]
|
|
add r1, r1, #0x1000
|
|
ldr r1, [r1, #0x370]
|
|
strh r3, [r1, r0]
|
|
add r0, r1, r7, lsl #2
|
|
strh r2, [r0, #2]
|
|
_02010D34:
|
|
add r7, r7, #1
|
|
_02010D38:
|
|
cmp r7, #4
|
|
blt _02010C7C
|
|
add r6, r6, #1
|
|
cmp r6, #3
|
|
blt _02010C6C
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
_02010D54: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end SortKecleonItems2
|
|
|
|
arm_func_start GenerateKecleonItems2
|
|
GenerateKecleonItems2: ; 0x02010D58
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r5, r0
|
|
mov r4, #0
|
|
_02010D64:
|
|
and r0, r4, #0xff
|
|
bl RemoveItemFromKecleonShop2
|
|
add r4, r4, #1
|
|
cmp r4, #4
|
|
blt _02010D64
|
|
ldr r0, _02010DC4 ; =KECLEON_SHOP_ITEM_TABLE_LISTS_2
|
|
mov r7, #0
|
|
ldr r6, [r0, r5, lsl #2]
|
|
ldr r5, _02010DC8 ; =0x0000270F
|
|
_02010D88:
|
|
mov r0, r5
|
|
bl RandIntSafe
|
|
mov r4, r0
|
|
mov r0, r5
|
|
bl RandIntSafe
|
|
mov r2, r0
|
|
mov r0, r6
|
|
mov r1, r4
|
|
bl GetItemIdFromList
|
|
bl AddItemToKecleonShop2
|
|
add r7, r7, #1
|
|
cmp r7, #4
|
|
blt _02010D88
|
|
bl SortKecleonItems2
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_02010DC4: .word KECLEON_SHOP_ITEM_TABLE_LISTS_2
|
|
_02010DC8: .word 0x0000270F
|
|
arm_func_end GenerateKecleonItems2
|
|
|
|
arm_func_start AddItemToKecleonShop2
|
|
AddItemToKecleonShop2: ; 0x02010DCC
|
|
stmdb sp!, {r3, lr}
|
|
mov r1, r0
|
|
add r0, sp, #0
|
|
bl InitBulkItem
|
|
ldr r0, _02010E3C ; =BAG_ITEMS_PTR_MIRROR
|
|
mov r2, #0
|
|
ldr r3, [r0]
|
|
add r0, r3, #0x1000
|
|
b _02010E2C
|
|
_02010DF0:
|
|
ldr r1, [r0, #0x370]
|
|
mov ip, r2, lsl #2
|
|
ldrsh r1, [r1, ip]
|
|
cmp r1, #0
|
|
bne _02010E28
|
|
add r0, r3, #0x1000
|
|
ldr r3, [r0, #0x370]
|
|
ldrh r1, [sp]
|
|
add r2, r3, ip
|
|
mov r0, #0
|
|
strh r1, [r3, ip]
|
|
ldrh r1, [sp, #2]
|
|
strh r1, [r2, #2]
|
|
ldmia sp!, {r3, pc}
|
|
_02010E28:
|
|
add r2, r2, #1
|
|
_02010E2C:
|
|
cmp r2, #4
|
|
blt _02010DF0
|
|
mov r0, #1
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02010E3C: .word BAG_ITEMS_PTR_MIRROR
|
|
arm_func_end AddItemToKecleonShop2
|
|
|
|
arm_func_start GetExclusiveItemOffset
|
|
GetExclusiveItemOffset: ; 0x02010E40
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl GetItemCategory
|
|
cmp r0, #0xf
|
|
movne r0, #0
|
|
subeq r0, r4, #0x1bc
|
|
moveq r0, r0, lsl #0x10
|
|
moveq r0, r0, asr #0x10
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end GetExclusiveItemOffset
|
|
|
|
arm_func_start ApplyExclusiveItemStatBoosts
|
|
ApplyExclusiveItemStatBoosts: ; 0x02010E64
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
sub sp, sp, #8
|
|
mov r7, r1
|
|
mov r6, r2
|
|
mov r5, r3
|
|
ldr r4, [sp, #0x28]
|
|
bl GetExclusiveItemOffset
|
|
ldr r1, _02010F6C ; =EXCLUSIVE_ITEM_STAT_BOOST_DATA_INDEXES
|
|
ldrb r2, [r7]
|
|
ldrb r1, [r1, r0, lsl #1]
|
|
ldrb r0, [r4]
|
|
strh r2, [sp, #4]
|
|
ldrb r2, [r5]
|
|
strh r0, [sp, #2]
|
|
ldrb r3, [r6]
|
|
ldr r0, _02010F70 ; =EXCLUSIVE_ITEM_ATTACK_BOOSTS
|
|
mov r1, r1, lsl #2
|
|
strh r3, [sp, #6]
|
|
strh r2, [sp]
|
|
ldrsb r2, [r0, r1]
|
|
ldr r0, _02010F74 ; =EXCLUSIVE_ITEM_SPECIAL_ATTACK_BOOSTS
|
|
ldrh sb, [sp, #4]
|
|
ldrsb r8, [r0, r1]
|
|
mov r0, r2, lsl #0x10
|
|
add r0, sb, r0, lsr #16
|
|
strh r0, [sp, #4]
|
|
mov r0, r8, lsl #0x10
|
|
ldrh lr, [sp, #6]
|
|
ldrh r2, [sp, #4]
|
|
ldr ip, _02010F78 ; =EXCLUSIVE_ITEM_DEFENSE_BOOSTS
|
|
add r0, lr, r0, lsr #16
|
|
ldrsb lr, [ip, r1]
|
|
ldr r3, _02010F7C ; =EXCLUSIVE_ITEM_SPECIAL_DEFENSE_BOOSTS
|
|
ldrsh ip, [sp, #2]
|
|
ldrsb r1, [r3, r1]
|
|
strh r0, [sp, #6]
|
|
ldrsh r8, [sp]
|
|
add r0, ip, r1
|
|
strh r0, [sp, #2]
|
|
cmp r2, #0xff
|
|
movhi r0, #0xff
|
|
strhih r0, [sp, #4]
|
|
ldrh r0, [sp, #6]
|
|
add r3, r8, lr
|
|
ldrh r2, [sp, #4]
|
|
cmp r0, #0xff
|
|
movhi r0, #0xff
|
|
strh r3, [sp]
|
|
strhih r0, [sp, #6]
|
|
ldrsh r0, [sp]
|
|
strb r2, [r7]
|
|
cmp r0, #0xff
|
|
movgt r0, #0xff
|
|
strgth r0, [sp]
|
|
ldrsh r0, [sp, #2]
|
|
ldrsh r1, [sp]
|
|
cmp r0, #0xff
|
|
movgt r0, #0xff
|
|
strgth r0, [sp, #2]
|
|
ldrh r0, [sp, #6]
|
|
strb r0, [r6]
|
|
ldrsh r0, [sp, #2]
|
|
strb r1, [r5]
|
|
strb r0, [r4]
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
_02010F6C: .word EXCLUSIVE_ITEM_STAT_BOOST_DATA_INDEXES
|
|
_02010F70: .word EXCLUSIVE_ITEM_ATTACK_BOOSTS
|
|
_02010F74: .word EXCLUSIVE_ITEM_SPECIAL_ATTACK_BOOSTS
|
|
_02010F78: .word EXCLUSIVE_ITEM_DEFENSE_BOOSTS
|
|
_02010F7C: .word EXCLUSIVE_ITEM_SPECIAL_DEFENSE_BOOSTS
|
|
arm_func_end ApplyExclusiveItemStatBoosts
|
|
|
|
arm_func_start SetExclusiveItemEffect
|
|
SetExclusiveItemEffect: ; 0x02010F80
|
|
cmp r1, #0
|
|
bxeq lr
|
|
mov ip, r1, lsr #5
|
|
ldr r3, [r0, ip, lsl #2]
|
|
sub r1, r1, ip, lsl #5
|
|
mov r2, #1
|
|
orr r1, r3, r2, lsl r1
|
|
str r1, [r0, ip, lsl #2]
|
|
bx lr
|
|
arm_func_end SetExclusiveItemEffect
|