mirror of
https://github.com/pret/pokeruby.git
synced 2026-08-08 10:34:12 -05:00
1309 lines
20 KiB
ArmAsm
1309 lines
20 KiB
ArmAsm
.include "constants/gba_constants.inc"
|
|
.include "constants/species_constants.inc"
|
|
.include "asm/macros.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start CopyItemName
|
|
CopyItemName: @ 80A9224
|
|
push {r4,lr}
|
|
adds r4, r1, 0
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0xAF
|
|
bne _080A924C
|
|
movs r0, 0x2B
|
|
bl GetBerryInfo
|
|
adds r1, r0, 0
|
|
adds r0, r4, 0
|
|
bl StringCopy
|
|
ldr r1, _080A9248 @ =gOtherText_Berry2
|
|
adds r0, r4, 0
|
|
bl StringAppend
|
|
b _080A9258
|
|
.align 2, 0
|
|
_080A9248: .4byte gOtherText_Berry2
|
|
_080A924C:
|
|
bl ItemId_GetItem
|
|
adds r1, r0, 0
|
|
adds r0, r4, 0
|
|
bl StringCopy
|
|
_080A9258:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end CopyItemName
|
|
|
|
thumb_func_start CountUsedBagPocketSlots
|
|
CountUsedBagPocketSlots: @ 80A9260
|
|
push {lr}
|
|
lsls r0, 24
|
|
movs r2, 0
|
|
ldr r1, _080A9284 @ =gBagPockets
|
|
lsrs r0, 21
|
|
adds r0, r1
|
|
ldrb r1, [r0, 0x4]
|
|
cmp r2, r1
|
|
bcs _080A9292
|
|
ldr r3, [r0]
|
|
_080A9274:
|
|
lsls r0, r2, 2
|
|
adds r0, r3
|
|
ldrh r0, [r0]
|
|
cmp r0, 0
|
|
bne _080A9288
|
|
lsls r0, r2, 24
|
|
asrs r0, 24
|
|
b _080A9296
|
|
.align 2, 0
|
|
_080A9284: .4byte gBagPockets
|
|
_080A9288:
|
|
adds r0, r2, 0x1
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
cmp r2, r1
|
|
bcc _080A9274
|
|
_080A9292:
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
_080A9296:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end CountUsedBagPocketSlots
|
|
|
|
thumb_func_start IsBagPocketNonEmpty
|
|
IsBagPocketNonEmpty: @ 80A929C
|
|
push {lr}
|
|
lsls r0, 24
|
|
movs r2, 0
|
|
ldr r1, _080A92C0 @ =gBagPockets
|
|
lsrs r0, 21
|
|
subs r0, 0x8
|
|
adds r0, r1
|
|
ldrb r1, [r0, 0x4]
|
|
cmp r2, r1
|
|
bcs _080A92CE
|
|
ldr r3, [r0]
|
|
_080A92B2:
|
|
lsls r0, r2, 2
|
|
adds r0, r3
|
|
ldrh r0, [r0]
|
|
cmp r0, 0
|
|
beq _080A92C4
|
|
movs r0, 0x1
|
|
b _080A92D0
|
|
.align 2, 0
|
|
_080A92C0: .4byte gBagPockets
|
|
_080A92C4:
|
|
adds r0, r2, 0x1
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
cmp r2, r1
|
|
bcc _080A92B2
|
|
_080A92CE:
|
|
movs r0, 0
|
|
_080A92D0:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end IsBagPocketNonEmpty
|
|
|
|
thumb_func_start CheckBagHasItem
|
|
CheckBagHasItem: @ 80A92D4
|
|
push {r4-r7,lr}
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
lsls r1, 16
|
|
lsrs r4, r1, 16
|
|
adds r0, r5, 0
|
|
bl ItemId_GetPocket
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080A92F0
|
|
b _080A9336
|
|
_080A92EC:
|
|
movs r0, 0x1
|
|
b _080A9338
|
|
_080A92F0:
|
|
adds r0, r5, 0
|
|
bl ItemId_GetPocket
|
|
subs r0, 0x1
|
|
lsls r0, 24
|
|
movs r3, 0
|
|
ldr r6, _080A9340 @ =gBagPockets
|
|
lsrs r2, r0, 21
|
|
adds r0, r2, r6
|
|
ldrb r0, [r0, 0x4]
|
|
cmp r3, r0
|
|
bcs _080A9336
|
|
adds r7, r6, 0
|
|
_080A930A:
|
|
adds r0, r2, r7
|
|
ldr r1, [r0]
|
|
lsls r0, r3, 2
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1]
|
|
cmp r0, r5
|
|
bne _080A9328
|
|
ldrh r0, [r1, 0x2]
|
|
cmp r0, r4
|
|
bcs _080A92EC
|
|
subs r0, r4, r0
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
cmp r4, 0
|
|
beq _080A92EC
|
|
_080A9328:
|
|
adds r0, r3, 0x1
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
adds r0, r2, r6
|
|
ldrb r0, [r0, 0x4]
|
|
cmp r3, r0
|
|
bcc _080A930A
|
|
_080A9336:
|
|
movs r0, 0
|
|
_080A9338:
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080A9340: .4byte gBagPockets
|
|
thumb_func_end CheckBagHasItem
|
|
|
|
thumb_func_start CheckBagHasSpace
|
|
CheckBagHasSpace: @ 80A9344
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
lsls r1, 16
|
|
lsrs r4, r1, 16
|
|
adds r0, r6, 0
|
|
bl ItemId_GetPocket
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A9408
|
|
adds r0, r6, 0
|
|
bl ItemId_GetPocket
|
|
subs r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
ldr r5, _080A940C @ =0x000003e7
|
|
cmp r1, 0x3
|
|
beq _080A9376
|
|
movs r5, 0x63
|
|
_080A9376:
|
|
movs r3, 0
|
|
ldr r0, _080A9410 @ =gBagPockets
|
|
mov r8, r0
|
|
lsls r2, r1, 3
|
|
adds r0, r2, r0
|
|
mov r12, r8
|
|
mov r9, r2
|
|
ldrb r0, [r0, 0x4]
|
|
cmp r3, r0
|
|
bcs _080A93CA
|
|
mov r10, r12
|
|
subs r0, r1, 0x2
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
_080A9392:
|
|
mov r1, r10
|
|
adds r0, r2, r1
|
|
ldr r1, [r0]
|
|
lsls r0, r3, 2
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1]
|
|
cmp r0, r6
|
|
bne _080A93BA
|
|
ldrh r1, [r1, 0x2]
|
|
adds r0, r1, r4
|
|
cmp r0, r5
|
|
ble _080A9414
|
|
cmp r7, 0x1
|
|
bls _080A9408
|
|
subs r0, r5, r1
|
|
subs r0, r4, r0
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
cmp r4, 0
|
|
beq _080A9414
|
|
_080A93BA:
|
|
adds r0, r3, 0x1
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
mov r1, r8
|
|
adds r0, r2, r1
|
|
ldrb r0, [r0, 0x4]
|
|
cmp r3, r0
|
|
bcc _080A9392
|
|
_080A93CA:
|
|
cmp r4, 0
|
|
beq _080A9414
|
|
movs r3, 0
|
|
mov r6, r12
|
|
mov r2, r9
|
|
adds r0, r2, r6
|
|
ldrb r0, [r0, 0x4]
|
|
cmp r3, r0
|
|
bcs _080A9404
|
|
adds r7, r6, 0
|
|
_080A93DE:
|
|
adds r0, r2, r7
|
|
ldr r1, [r0]
|
|
lsls r0, r3, 2
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
cmp r0, 0
|
|
bne _080A93F6
|
|
cmp r4, r5
|
|
bls _080A9414
|
|
subs r0, r4, r5
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
_080A93F6:
|
|
adds r0, r3, 0x1
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
adds r0, r2, r6
|
|
ldrb r0, [r0, 0x4]
|
|
cmp r3, r0
|
|
bcc _080A93DE
|
|
_080A9404:
|
|
cmp r4, 0
|
|
beq _080A9414
|
|
_080A9408:
|
|
movs r0, 0
|
|
b _080A9416
|
|
.align 2, 0
|
|
_080A940C: .4byte 0x000003e7
|
|
_080A9410: .4byte gBagPockets
|
|
_080A9414:
|
|
movs r0, 0x1
|
|
_080A9416:
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end CheckBagHasSpace
|
|
|
|
thumb_func_start AddBagItem
|
|
AddBagItem: @ 80A9424
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
sub sp, 0x100
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r8, r0
|
|
lsls r1, 16
|
|
lsrs r4, r1, 16
|
|
bl ItemId_GetPocket
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A9510
|
|
mov r0, r8
|
|
bl ItemId_GetPocket
|
|
subs r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r1, _080A94F8 @ =gBagPockets
|
|
lsls r0, r6, 3
|
|
adds r5, r0, r1
|
|
ldr r1, [r5]
|
|
ldrb r2, [r5, 0x4]
|
|
lsls r2, 2
|
|
mov r0, sp
|
|
bl memcpy
|
|
ldr r7, _080A94FC @ =0x000003e7
|
|
cmp r6, 0x3
|
|
beq _080A9468
|
|
movs r7, 0x63
|
|
_080A9468:
|
|
movs r1, 0
|
|
ldrb r0, [r5, 0x4]
|
|
cmp r1, r0
|
|
bcs _080A94B2
|
|
subs r0, r6, 0x2
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r12, r0
|
|
_080A9478:
|
|
lsls r0, r1, 2
|
|
mov r2, sp
|
|
adds r3, r2, r0
|
|
ldrh r0, [r3]
|
|
cmp r0, r8
|
|
bne _080A94A6
|
|
ldrh r2, [r3, 0x2]
|
|
adds r0, r2, r4
|
|
cmp r0, r7
|
|
ble _080A9500
|
|
mov r0, r12
|
|
cmp r0, 0x1
|
|
bls _080A9510
|
|
subs r0, r7, r2
|
|
subs r0, r4, r0
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
strh r7, [r3, 0x2]
|
|
ldr r2, _080A94F8 @ =gBagPockets
|
|
mov r9, r2
|
|
lsls r3, r6, 3
|
|
cmp r4, 0
|
|
beq _080A9516
|
|
_080A94A6:
|
|
adds r0, r1, 0x1
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
ldrb r0, [r5, 0x4]
|
|
cmp r1, r0
|
|
bcc _080A9478
|
|
_080A94B2:
|
|
ldr r2, _080A94F8 @ =gBagPockets
|
|
mov r9, r2
|
|
lsls r3, r6, 3
|
|
cmp r4, 0
|
|
beq _080A9516
|
|
movs r1, 0
|
|
adds r0, r3, r2
|
|
ldrb r0, [r0, 0x4]
|
|
cmp r1, r0
|
|
bcs _080A94F2
|
|
mov r6, r9
|
|
adds r5, r3, r6
|
|
_080A94CA:
|
|
lsls r0, r1, 2
|
|
mov r6, sp
|
|
adds r2, r6, r0
|
|
ldrh r0, [r2]
|
|
cmp r0, 0
|
|
bne _080A94E6
|
|
mov r0, r8
|
|
strh r0, [r2]
|
|
cmp r4, r7
|
|
bls _080A9514
|
|
subs r0, r4, r7
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
strh r7, [r2, 0x2]
|
|
_080A94E6:
|
|
adds r0, r1, 0x1
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
ldrb r2, [r5, 0x4]
|
|
cmp r1, r2
|
|
bcc _080A94CA
|
|
_080A94F2:
|
|
cmp r4, 0
|
|
beq _080A9516
|
|
b _080A9510
|
|
.align 2, 0
|
|
_080A94F8: .4byte gBagPockets
|
|
_080A94FC: .4byte 0x000003e7
|
|
_080A9500:
|
|
strh r0, [r3, 0x2]
|
|
ldr r0, _080A950C @ =gBagPockets
|
|
lsls r1, r6, 3
|
|
adds r1, r0
|
|
b _080A951A
|
|
.align 2, 0
|
|
_080A950C: .4byte gBagPockets
|
|
_080A9510:
|
|
movs r0, 0
|
|
b _080A9528
|
|
_080A9514:
|
|
strh r4, [r2, 0x2]
|
|
_080A9516:
|
|
mov r6, r9
|
|
adds r1, r3, r6
|
|
_080A951A:
|
|
ldr r0, [r1]
|
|
ldrb r2, [r1, 0x4]
|
|
lsls r2, 2
|
|
mov r1, sp
|
|
bl memcpy
|
|
movs r0, 0x1
|
|
_080A9528:
|
|
add sp, 0x100
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end AddBagItem
|
|
|
|
thumb_func_start RemoveBagItem
|
|
RemoveBagItem: @ 80A9538
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
lsls r1, 16
|
|
lsrs r4, r1, 16
|
|
movs r7, 0
|
|
adds r0, r6, 0
|
|
bl ItemId_GetPocket
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080A959E
|
|
cmp r6, 0
|
|
beq _080A959E
|
|
adds r0, r6, 0
|
|
bl ItemId_GetPocket
|
|
subs r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r12, r0
|
|
movs r5, 0
|
|
ldr r1, _080A95A4 @ =gBagPockets
|
|
lsls r2, r0, 3
|
|
adds r0, r2, r1
|
|
ldrb r0, [r0, 0x4]
|
|
cmp r5, r0
|
|
bcs _080A959A
|
|
mov r8, r1
|
|
_080A9576:
|
|
mov r0, r8
|
|
adds r3, r2, r0
|
|
ldr r0, [r3]
|
|
lsls r1, r5, 2
|
|
adds r1, r0
|
|
ldrh r0, [r1]
|
|
cmp r0, r6
|
|
bne _080A958E
|
|
ldrh r0, [r1, 0x2]
|
|
adds r0, r7, r0
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
_080A958E:
|
|
adds r0, r5, 0x1
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldrb r3, [r3, 0x4]
|
|
cmp r5, r3
|
|
bcc _080A9576
|
|
_080A959A:
|
|
cmp r7, r4
|
|
bcs _080A95A8
|
|
_080A959E:
|
|
movs r0, 0
|
|
b _080A9664
|
|
.align 2, 0
|
|
_080A95A4: .4byte gBagPockets
|
|
_080A95A8:
|
|
ldr r0, _080A95DC @ =gBagPockets
|
|
mov r2, r12
|
|
lsls r1, r2, 3
|
|
adds r5, r1, r0
|
|
ldr r2, _080A95E0 @ =gUnknown_02038560
|
|
ldrb r3, [r5, 0x4]
|
|
mov r8, r0
|
|
adds r7, r1, 0
|
|
ldrb r0, [r2]
|
|
cmp r3, r0
|
|
bls _080A9606
|
|
ldrb r0, [r2]
|
|
ldr r1, [r5]
|
|
lsls r0, 2
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1]
|
|
cmp r0, r6
|
|
bne _080A9606
|
|
ldrh r0, [r1, 0x2]
|
|
cmp r0, r4
|
|
bcc _080A95E4
|
|
subs r0, r4
|
|
strh r0, [r1, 0x2]
|
|
movs r4, 0
|
|
b _080A95EE
|
|
.align 2, 0
|
|
_080A95DC: .4byte gBagPockets
|
|
_080A95E0: .4byte gUnknown_02038560
|
|
_080A95E4:
|
|
subs r0, r4, r0
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
movs r0, 0
|
|
strh r0, [r1, 0x2]
|
|
_080A95EE:
|
|
mov r1, r8
|
|
adds r0, r7, r1
|
|
ldrb r1, [r2]
|
|
ldr r0, [r0]
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrh r0, [r1, 0x2]
|
|
cmp r0, 0
|
|
bne _080A9602
|
|
strh r0, [r1]
|
|
_080A9602:
|
|
cmp r4, 0
|
|
beq _080A9662
|
|
_080A9606:
|
|
movs r5, 0
|
|
adds r1, r7, 0
|
|
mov r2, r8
|
|
adds r0, r1, r2
|
|
ldrb r2, [r0, 0x4]
|
|
cmp r5, r2
|
|
bcs _080A9662
|
|
mov r12, r8
|
|
adds r3, r0, 0
|
|
_080A9618:
|
|
mov r2, r12
|
|
adds r0, r1, r2
|
|
ldr r0, [r0]
|
|
lsls r1, r5, 2
|
|
adds r2, r1, r0
|
|
ldrh r0, [r2]
|
|
cmp r0, r6
|
|
bne _080A9650
|
|
ldrh r0, [r2, 0x2]
|
|
cmp r0, r4
|
|
bcc _080A9636
|
|
subs r0, r4
|
|
strh r0, [r2, 0x2]
|
|
movs r4, 0
|
|
b _080A9640
|
|
_080A9636:
|
|
subs r0, r4, r0
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
movs r0, 0
|
|
strh r0, [r2, 0x2]
|
|
_080A9640:
|
|
ldr r0, [r3]
|
|
adds r1, r0
|
|
ldrh r0, [r1, 0x2]
|
|
cmp r0, 0
|
|
bne _080A964C
|
|
strh r0, [r1]
|
|
_080A964C:
|
|
cmp r4, 0
|
|
beq _080A9662
|
|
_080A9650:
|
|
adds r0, r5, 0x1
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
adds r1, r7, 0
|
|
mov r2, r8
|
|
adds r0, r1, r2
|
|
ldrb r0, [r0, 0x4]
|
|
cmp r5, r0
|
|
bcc _080A9618
|
|
_080A9662:
|
|
movs r0, 0x1
|
|
_080A9664:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end RemoveBagItem
|
|
|
|
thumb_func_start GetPocketByItemId
|
|
GetPocketByItemId: @ 80A9670
|
|
push {lr}
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
bl ItemId_GetPocket
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetPocketByItemId
|
|
|
|
thumb_func_start ClearItemSlots
|
|
ClearItemSlots: @ 80A9684
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
lsls r1, 24
|
|
movs r2, 0
|
|
lsrs r1, 24
|
|
cmp r2, r1
|
|
bcs _080A96A6
|
|
movs r3, 0
|
|
_080A9694:
|
|
lsls r0, r2, 2
|
|
adds r0, r4
|
|
strh r3, [r0]
|
|
strh r3, [r0, 0x2]
|
|
adds r0, r2, 0x1
|
|
lsls r0, 16
|
|
lsrs r2, r0, 16
|
|
cmp r2, r1
|
|
bcc _080A9694
|
|
_080A96A6:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end ClearItemSlots
|
|
|
|
thumb_func_start FindFreePCItemSlot
|
|
FindFreePCItemSlot: @ 80A96AC
|
|
push {lr}
|
|
movs r1, 0
|
|
ldr r3, _080A96CC @ =gSaveBlock1
|
|
movs r2, 0x93
|
|
lsls r2, 3
|
|
_080A96B6:
|
|
lsls r0, r1, 24
|
|
asrs r1, r0, 24
|
|
lsls r0, r1, 2
|
|
adds r0, r3
|
|
adds r0, r2
|
|
ldrh r0, [r0]
|
|
cmp r0, 0
|
|
bne _080A96D0
|
|
adds r0, r1, 0
|
|
b _080A96E0
|
|
.align 2, 0
|
|
_080A96CC: .4byte gSaveBlock1
|
|
_080A96D0:
|
|
adds r0, r1, 0x1
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
asrs r0, 24
|
|
cmp r0, 0x31
|
|
ble _080A96B6
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
_080A96E0:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end FindFreePCItemSlot
|
|
|
|
thumb_func_start CountUsedPCItemSlots
|
|
CountUsedPCItemSlots: @ 80A96E4
|
|
push {r4,lr}
|
|
movs r2, 0
|
|
movs r1, 0
|
|
ldr r4, _080A9714 @ =gSaveBlock1
|
|
movs r3, 0x93
|
|
lsls r3, 3
|
|
_080A96F0:
|
|
lsls r0, r1, 2
|
|
adds r0, r4
|
|
adds r0, r3
|
|
ldrh r0, [r0]
|
|
cmp r0, 0
|
|
beq _080A9702
|
|
adds r0, r2, 0x1
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
_080A9702:
|
|
adds r0, r1, 0x1
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0x31
|
|
bls _080A96F0
|
|
adds r0, r2, 0
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080A9714: .4byte gSaveBlock1
|
|
thumb_func_end CountUsedPCItemSlots
|
|
|
|
thumb_func_start CheckPCHasItem
|
|
CheckPCHasItem: @ 80A9718
|
|
push {r4-r7,lr}
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
movs r3, 0
|
|
ldr r7, _080A9744 @ =gSaveBlock1
|
|
movs r6, 0x93
|
|
lsls r6, 3
|
|
ldr r5, _080A9748 @ =0x0000049a
|
|
_080A972C:
|
|
lsls r0, r3, 2
|
|
adds r2, r0, r7
|
|
adds r0, r2, r6
|
|
ldrh r0, [r0]
|
|
cmp r0, r4
|
|
bne _080A974C
|
|
adds r0, r2, r5
|
|
ldrh r0, [r0]
|
|
cmp r0, r1
|
|
bcc _080A974C
|
|
movs r0, 0x1
|
|
b _080A9758
|
|
.align 2, 0
|
|
_080A9744: .4byte gSaveBlock1
|
|
_080A9748: .4byte 0x0000049a
|
|
_080A974C:
|
|
adds r0, r3, 0x1
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
cmp r3, 0x31
|
|
bls _080A972C
|
|
movs r0, 0
|
|
_080A9758:
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end CheckPCHasItem
|
|
|
|
thumb_func_start AddPCItem
|
|
AddPCItem: @ 80A9760
|
|
push {r4-r7,lr}
|
|
sub sp, 0xC8
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
lsls r1, 16
|
|
lsrs r4, r1, 16
|
|
ldr r1, _080A97C4 @ =gSaveBlock1 + 0x498
|
|
mov r0, sp
|
|
movs r2, 0xC8
|
|
bl memcpy
|
|
movs r5, 0
|
|
ldr r0, _080A97C8 @ =0x0000fc19
|
|
adds r7, r0, 0
|
|
_080A977C:
|
|
lsls r0, r5, 2
|
|
mov r1, sp
|
|
adds r2, r1, r0
|
|
ldrh r0, [r2]
|
|
cmp r0, r6
|
|
bne _080A97A0
|
|
ldrh r1, [r2, 0x2]
|
|
adds r0, r1, r4
|
|
ldr r3, _080A97CC @ =0x000003e7
|
|
cmp r0, r3
|
|
ble _080A97D0
|
|
adds r0, r4, r7
|
|
adds r0, r1, r0
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
strh r3, [r2, 0x2]
|
|
cmp r4, 0
|
|
beq _080A97DC
|
|
_080A97A0:
|
|
adds r0, r5, 0x1
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
cmp r5, 0x31
|
|
bls _080A977C
|
|
cmp r4, 0
|
|
beq _080A97DC
|
|
bl FindFreePCItemSlot
|
|
lsls r0, 24
|
|
asrs r1, r0, 24
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
bne _080A97D4
|
|
movs r0, 0
|
|
b _080A97E8
|
|
.align 2, 0
|
|
_080A97C4: .4byte gSaveBlock1 + 0x498
|
|
_080A97C8: .4byte 0x0000fc19
|
|
_080A97CC: .4byte 0x000003e7
|
|
_080A97D0:
|
|
strh r0, [r2, 0x2]
|
|
b _080A97DC
|
|
_080A97D4:
|
|
lsls r0, r1, 2
|
|
add r0, sp
|
|
strh r6, [r0]
|
|
strh r4, [r0, 0x2]
|
|
_080A97DC:
|
|
ldr r0, _080A97F0 @ =gSaveBlock1 + 0x498
|
|
mov r1, sp
|
|
movs r2, 0xC8
|
|
bl memcpy
|
|
movs r0, 0x1
|
|
_080A97E8:
|
|
add sp, 0xC8
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080A97F0: .4byte gSaveBlock1 + 0x498
|
|
thumb_func_end AddPCItem
|
|
|
|
thumb_func_start RemovePCItem
|
|
RemovePCItem: @ 80A97F4
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
ldr r2, _080A9824 @ =gSaveBlock1
|
|
lsrs r0, 22
|
|
adds r3, r0, r2
|
|
ldr r0, _080A9828 @ =0x0000049a
|
|
adds r2, r3, r0
|
|
ldrh r0, [r2]
|
|
subs r0, r1
|
|
strh r0, [r2]
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
cmp r1, 0
|
|
bne _080A9820
|
|
movs r2, 0x93
|
|
lsls r2, 3
|
|
adds r0, r3, r2
|
|
strh r1, [r0]
|
|
bl CompactPCItems
|
|
_080A9820:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A9824: .4byte gSaveBlock1
|
|
_080A9828: .4byte 0x0000049a
|
|
thumb_func_end RemovePCItem
|
|
|
|
thumb_func_start CompactPCItems
|
|
CompactPCItems: @ 80A982C
|
|
push {r4-r7,lr}
|
|
movs r2, 0
|
|
ldr r0, _080A987C @ =gSaveBlock1
|
|
mov r12, r0
|
|
_080A9834:
|
|
adds r1, r2, 0x1
|
|
lsls r0, r1, 16
|
|
lsrs r3, r0, 16
|
|
adds r7, r1, 0
|
|
cmp r3, 0x31
|
|
bhi _080A986C
|
|
lsls r1, r2, 2
|
|
mov r2, r12
|
|
adds r0, r1, r2
|
|
movs r2, 0x93
|
|
lsls r2, 3
|
|
adds r5, r0, r2
|
|
ldr r6, _080A9880 @ =gSaveBlock1 + 0x498
|
|
adds r4, r1, r6
|
|
_080A9850:
|
|
ldrh r0, [r5]
|
|
cmp r0, 0
|
|
bne _080A9862
|
|
ldr r2, [r4]
|
|
lsls r1, r3, 2
|
|
adds r1, r6
|
|
ldr r0, [r1]
|
|
str r0, [r4]
|
|
str r2, [r1]
|
|
_080A9862:
|
|
adds r0, r3, 0x1
|
|
lsls r0, 16
|
|
lsrs r3, r0, 16
|
|
cmp r3, 0x31
|
|
bls _080A9850
|
|
_080A986C:
|
|
lsls r0, r7, 16
|
|
lsrs r2, r0, 16
|
|
cmp r2, 0x30
|
|
bls _080A9834
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080A987C: .4byte gSaveBlock1
|
|
_080A9880: .4byte gSaveBlock1 + 0x498
|
|
thumb_func_end CompactPCItems
|
|
|
|
thumb_func_start SwapRegisteredBike
|
|
SwapRegisteredBike: @ 80A9884
|
|
push {lr}
|
|
ldr r0, _080A98A0 @ =gSaveBlock1
|
|
ldr r1, _080A98A4 @ =0x00000496
|
|
adds r2, r0, r1
|
|
ldrh r1, [r2]
|
|
ldr r3, _080A98A8 @ =0x00000103
|
|
cmp r1, r3
|
|
beq _080A98AC
|
|
movs r0, 0x88
|
|
lsls r0, 1
|
|
cmp r1, r0
|
|
beq _080A98B4
|
|
b _080A98B6
|
|
.align 2, 0
|
|
_080A98A0: .4byte gSaveBlock1
|
|
_080A98A4: .4byte 0x00000496
|
|
_080A98A8: .4byte 0x00000103
|
|
_080A98AC:
|
|
movs r0, 0x88
|
|
lsls r0, 1
|
|
strh r0, [r2]
|
|
b _080A98B6
|
|
_080A98B4:
|
|
strh r3, [r2]
|
|
_080A98B6:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end SwapRegisteredBike
|
|
|
|
thumb_func_start SanitizeItemId
|
|
SanitizeItemId: @ 80A98BC
|
|
push {lr}
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
movs r0, 0xAE
|
|
lsls r0, 1
|
|
cmp r1, r0
|
|
bhi _080A98CE
|
|
adds r0, r1, 0
|
|
b _080A98D0
|
|
_080A98CE:
|
|
movs r0, 0
|
|
_080A98D0:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end SanitizeItemId
|
|
|
|
thumb_func_start ItemId_GetItem
|
|
ItemId_GetItem: @ 80A98D4
|
|
push {lr}
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
bl SanitizeItemId
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x2C
|
|
muls r0, r1
|
|
ldr r1, _080A98F0 @ =gItems
|
|
adds r0, r1
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080A98F0: .4byte gItems
|
|
thumb_func_end ItemId_GetItem
|
|
|
|
thumb_func_start ItemId_GetId
|
|
ItemId_GetId: @ 80A98F4
|
|
push {r4,lr}
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldr r4, _080A9914 @ =gItems
|
|
bl SanitizeItemId
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x2C
|
|
muls r0, r1
|
|
adds r0, r4
|
|
ldrh r0, [r0, 0xE]
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080A9914: .4byte gItems
|
|
thumb_func_end ItemId_GetId
|
|
|
|
thumb_func_start ItemId_GetPrice
|
|
ItemId_GetPrice: @ 80A9918
|
|
push {r4,lr}
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldr r4, _080A9938 @ =gItems
|
|
bl SanitizeItemId
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x2C
|
|
muls r0, r1
|
|
adds r0, r4
|
|
ldrh r0, [r0, 0x10]
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080A9938: .4byte gItems
|
|
thumb_func_end ItemId_GetPrice
|
|
|
|
thumb_func_start ItemId_GetHoldEffect
|
|
ItemId_GetHoldEffect: @ 80A993C
|
|
push {r4,lr}
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldr r4, _080A995C @ =gItems
|
|
bl SanitizeItemId
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x2C
|
|
muls r0, r1
|
|
adds r0, r4
|
|
ldrb r0, [r0, 0x12]
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080A995C: .4byte gItems
|
|
thumb_func_end ItemId_GetHoldEffect
|
|
|
|
thumb_func_start ItemId_GetHoldEffectParam
|
|
ItemId_GetHoldEffectParam: @ 80A9960
|
|
push {r4,lr}
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldr r4, _080A9980 @ =gItems
|
|
bl SanitizeItemId
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x2C
|
|
muls r0, r1
|
|
adds r0, r4
|
|
ldrb r0, [r0, 0x13]
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080A9980: .4byte gItems
|
|
thumb_func_end ItemId_GetHoldEffectParam
|
|
|
|
thumb_func_start ItemId_GetDescription
|
|
ItemId_GetDescription: @ 80A9984
|
|
push {r4,lr}
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldr r4, _080A99A4 @ =gItems
|
|
bl SanitizeItemId
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x2C
|
|
muls r0, r1
|
|
adds r4, 0x14
|
|
adds r0, r4
|
|
ldr r0, [r0]
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080A99A4: .4byte gItems
|
|
thumb_func_end ItemId_GetDescription
|
|
|
|
thumb_func_start ItemId_CopyDescription
|
|
ItemId_CopyDescription: @ 80A99A8
|
|
push {r4-r6,lr}
|
|
adds r6, r0, 0
|
|
adds r0, r1, 0
|
|
adds r5, r2, 0x1
|
|
ldr r4, _080A99E4 @ =gItems
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
bl SanitizeItemId
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x2C
|
|
muls r0, r1
|
|
adds r4, 0x14
|
|
adds r0, r4
|
|
ldr r3, [r0]
|
|
adds r2, r6, 0
|
|
_080A99CA:
|
|
ldrb r1, [r3]
|
|
adds r0, r1, 0x2
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bhi _080A99FA
|
|
subs r5, 0x1
|
|
cmp r5, 0
|
|
bne _080A99E8
|
|
movs r0, 0xFF
|
|
strb r0, [r2]
|
|
movs r0, 0x1
|
|
b _080A9A02
|
|
.align 2, 0
|
|
_080A99E4: .4byte gItems
|
|
_080A99E8:
|
|
lsls r0, r1, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0xFF
|
|
bne _080A99F4
|
|
movs r0, 0
|
|
b _080A9A02
|
|
_080A99F4:
|
|
adds r2, r6, 0
|
|
adds r3, 0x1
|
|
b _080A99CA
|
|
_080A99FA:
|
|
strb r1, [r2]
|
|
adds r3, 0x1
|
|
adds r2, 0x1
|
|
b _080A99CA
|
|
_080A9A02:
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end ItemId_CopyDescription
|
|
|
|
thumb_func_start ItemId_GetImportance
|
|
ItemId_GetImportance: @ 80A9A08
|
|
push {r4,lr}
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldr r4, _080A9A28 @ =gItems
|
|
bl SanitizeItemId
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x2C
|
|
muls r0, r1
|
|
adds r0, r4
|
|
ldrb r0, [r0, 0x18]
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080A9A28: .4byte gItems
|
|
thumb_func_end ItemId_GetImportance
|
|
|
|
thumb_func_start ItemId_GetUnknownValue
|
|
ItemId_GetUnknownValue: @ 80A9A2C
|
|
push {r4,lr}
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldr r4, _080A9A4C @ =gItems
|
|
bl SanitizeItemId
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x2C
|
|
muls r0, r1
|
|
adds r0, r4
|
|
ldrb r0, [r0, 0x19]
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080A9A4C: .4byte gItems
|
|
thumb_func_end ItemId_GetUnknownValue
|
|
|
|
thumb_func_start ItemId_GetPocket
|
|
ItemId_GetPocket: @ 80A9A50
|
|
push {r4,lr}
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldr r4, _080A9A70 @ =gItems
|
|
bl SanitizeItemId
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x2C
|
|
muls r0, r1
|
|
adds r0, r4
|
|
ldrb r0, [r0, 0x1A]
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080A9A70: .4byte gItems
|
|
thumb_func_end ItemId_GetPocket
|
|
|
|
thumb_func_start ItemId_GetType
|
|
ItemId_GetType: @ 80A9A74
|
|
push {r4,lr}
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldr r4, _080A9A94 @ =gItems
|
|
bl SanitizeItemId
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x2C
|
|
muls r0, r1
|
|
adds r0, r4
|
|
ldrb r0, [r0, 0x1B]
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080A9A94: .4byte gItems
|
|
thumb_func_end ItemId_GetType
|
|
|
|
thumb_func_start ItemId_GetFieldFunc
|
|
ItemId_GetFieldFunc: @ 80A9A98
|
|
push {r4,lr}
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldr r4, _080A9AB8 @ =gItems
|
|
bl SanitizeItemId
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x2C
|
|
muls r0, r1
|
|
adds r4, 0x1C
|
|
adds r0, r4
|
|
ldr r0, [r0]
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080A9AB8: .4byte gItems
|
|
thumb_func_end ItemId_GetFieldFunc
|
|
|
|
thumb_func_start ItemId_GetBattleUsage
|
|
ItemId_GetBattleUsage: @ 80A9ABC
|
|
push {r4,lr}
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldr r4, _080A9ADC @ =gItems
|
|
bl SanitizeItemId
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x2C
|
|
muls r0, r1
|
|
adds r0, r4
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080A9ADC: .4byte gItems
|
|
thumb_func_end ItemId_GetBattleUsage
|
|
|
|
thumb_func_start ItemId_GetBattleFunc
|
|
ItemId_GetBattleFunc: @ 80A9AE0
|
|
push {r4,lr}
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldr r4, _080A9B00 @ =gItems
|
|
bl SanitizeItemId
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x2C
|
|
muls r0, r1
|
|
adds r4, 0x24
|
|
adds r0, r4
|
|
ldr r0, [r0]
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080A9B00: .4byte gItems
|
|
thumb_func_end ItemId_GetBattleFunc
|
|
|
|
thumb_func_start ItemId_GetSecondaryId
|
|
ItemId_GetSecondaryId: @ 80A9B04
|
|
push {r4,lr}
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldr r4, _080A9B24 @ =gItems
|
|
bl SanitizeItemId
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x2C
|
|
muls r0, r1
|
|
adds r0, r4
|
|
adds r0, 0x28
|
|
ldrb r0, [r0]
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080A9B24: .4byte gItems
|
|
thumb_func_end ItemId_GetSecondaryId
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|