Decomp sub_80479B8 and sub_80482FC

This commit is contained in:
Seth Barberee 2024-04-01 11:39:15 -07:00
parent 5fe3e86372
commit 471597c387
2 changed files with 397 additions and 1014 deletions

View File

@ -1071,979 +1071,4 @@ _080479B0:
bx r1
thumb_func_end sub_8047930
thumb_func_start sub_80479B8
sub_80479B8:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x1C
adds r4, r3, 0
ldr r5, [sp, 0x3C]
ldr r7, [sp, 0x40]
lsls r0, 24
lsrs r6, r0, 24
lsls r1, 24
lsrs r1, 24
lsls r2, 24
lsrs r2, 24
mov r10, r2
cmp r6, 0
beq _08047AD0
cmp r1, 0
bne _08047ABC
movs r0, 0
mov r8, r0
ldr r1, [r5, 0x70]
mov r9, r1
ldrb r0, [r1, 0x6]
cmp r0, 0
beq _08047A20
ldrb r0, [r7, 0x2]
bl GetItemCategory
lsls r0, 24
cmp r0, 0
beq _08047A3C
ldrb r0, [r7, 0x2]
bl GetItemCategory
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
beq _08047A3C
ldrb r0, [r7, 0x2]
bl GetItemCategory
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
eors r0, r1
negs r1, r0
orrs r1, r0
lsrs r1, 31
mov r8, r1
b _08047A3C
_08047A20:
ldrb r0, [r7, 0x2]
bl GetItemCategory
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
beq _08047A3C
adds r0, r5, 0
movs r1, 0x2
bl IQSkillIsEnabled
lsls r0, 24
lsrs r0, 24
mov r8, r0
_08047A3C:
adds r0, r5, 0
bl CannotUseItems
lsls r0, 24
cmp r0, 0
beq _08047A4C
movs r0, 0
mov r8, r0
_08047A4C:
mov r1, r8
cmp r1, 0
beq _08047ABC
mov r0, r9
adds r0, 0x60
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _08047ABC
mov r1, r9
ldrb r0, [r1, 0x8]
cmp r0, 0x1
bne _08047A76
adds r1, r5, 0x4
adds r0, r4, 0
adds r2, r7, 0
bl sub_80464C8
bl _080482BA
_08047A76:
ldr r0, _08047AAC
bl PlaySoundEffect
ldr r0, _08047AB0
adds r1, r7, 0
bl sub_8045BF8
ldr r0, _08047AB4
adds r1, r5, 0
movs r2, 0
bl SetMessageArgument
ldr r0, _08047AB8
ldr r2, [r0]
adds r0, r4, 0
adds r1, r5, 0
bl sub_80522F4
ldr r0, [r7]
mov r1, r9
str r0, [r1, 0x60]
adds r0, r5, 0
bl sub_806A6E8
bl _080482BA
.align 2, 0
_08047AAC: .4byte 0x0000014d
_08047AB0: .4byte gUnknown_202DE58
_08047AB4: .4byte gAvailablePokemonNames
_08047AB8: .4byte gUnknown_80FDBB8
_08047ABC:
cmp r6, 0
beq _08047AD0
adds r0, r5, 0
adds r1, r7, 0
bl sub_8042390
adds r0, r4, 0
adds r1, r5, 0
bl SetShopkeeperAggression
_08047AD0:
ldrb r1, [r7]
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _08047B2C
ldr r0, _08047B1C
adds r1, r7, 0
bl sub_8045BF8
ldr r0, _08047B20
ldr r2, [r0]
adds r0, r4, 0
adds r1, r5, 0
bl sub_80522F4
cmp r6, 0
beq _08047B30
ldr r0, _08047B24
movs r1, 0
ldrsh r2, [r0, r1]
add r0, sp, 0x18
str r0, [sp]
movs r1, 0
str r1, [sp, 0x4]
ldr r0, _08047B28
str r0, [sp, 0x8]
str r1, [sp, 0xC]
str r1, [sp, 0x10]
str r1, [sp, 0x14]
adds r0, r4, 0
adds r1, r5, 0
movs r3, 0x1
bl sub_806F370
adds r0, r4, 0
bl sub_8071DA4
b _080482BA
.align 2, 0
_08047B1C: .4byte gUnknown_202DE58
_08047B20: .4byte gUnknown_80FE3E8
_08047B24: .4byte gUnknown_80F4FAE
_08047B28: .4byte 0x00000217
_08047B2C:
cmp r6, 0
bne _08047B38
_08047B30:
adds r0, r5, 0
adds r1, r7, 0
bl sub_804245C
_08047B38:
ldrb r0, [r7, 0x2]
bl GetItemCategory
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
bne _08047B56
movs r0, 0
str r0, [sp]
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0x5
movs r3, 0
bl sub_8078B5C
_08047B56:
ldrb r0, [r7, 0x2]
bl GetItemCategory
lsls r0, 24
lsrs r0, 24
cmp r0, 0x5
beq _08047B72
ldrb r0, [r7, 0x2]
bl GetItemCategory
lsls r0, 24
lsrs r0, 24
cmp r0, 0xA
bne _08047B9C
_08047B72:
cmp r6, 0
beq _08047B88
ldr r0, _08047B84
movs r1, 0
ldrsh r2, [r0, r1]
mov r0, sp
adds r0, 0x19
b _08048284
.align 2, 0
_08047B84: .4byte gUnknown_80F4FAC
_08047B88:
ldr r0, _08047B98
ldr r2, [r0]
adds r0, r4, 0
adds r1, r5, 0
bl sub_80522F4
b _080482B4
.align 2, 0
_08047B98: .4byte gUnknown_80FE458
_08047B9C:
ldrb r0, [r7, 0x2]
subs r0, 0x1
cmp r0, 0xE8
bls _08047BA6
b _08048276
_08047BA6:
lsls r0, 2
ldr r1, _08047BB0
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08047BB0: .4byte _08047BB4
.align 2, 0
_08047BB4:
.4byte _08047F58
.4byte _08047F70
.4byte _08047F88
.4byte _08047FA0
.4byte _08047FB8
.4byte _08047FD0
.4byte _08047FF0
.4byte _08047FE8
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048004
.4byte _0804825E
.4byte _08048010
.4byte _0804801A
.4byte _0804804C
.4byte _08048276
.4byte _0804802E
.4byte _0804809C
.4byte _08048038
.4byte _08048024
.4byte _080480BA
.4byte _080480C4
.4byte _08048042
.4byte _0804806A
.4byte _08048060
.4byte _08048056
.4byte _0804807E
.4byte _080480B0
.4byte _08048074
.4byte _080480D8
.4byte _080480CE
.4byte _08048092
.4byte _08048088
.4byte _080480A6
.4byte _080480E4
.4byte _080480EE
.4byte _080480F8
.4byte _08048102
.4byte _0804810C
.4byte _08048212
.4byte _08048122
.4byte _0804813C
.4byte _0804812A
.4byte _08048146
.4byte _08048152
.4byte _0804815E
.4byte _0804816A
.4byte _08048176
.4byte _08048182
.4byte _0804818E
.4byte _0804819A
.4byte _080481A6
.4byte _080481B2
.4byte _080481BE
.4byte _080481CA
.4byte _080481D6
.4byte _080481E2
.4byte _080481EE
.4byte _080481FA
.4byte _08048206
.4byte _08048212
.4byte _08048220
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _0804823A
.4byte _08048252
.4byte _08048246
.4byte _0804826A
.4byte _0804822E
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048276
.4byte _08048116
_08047F58:
ldr r0, _08047F6C
movs r1, 0
ldrsh r2, [r0, r1]
adds r0, r4, 0
adds r1, r5, 0
movs r3, 0x1
bl sub_80482FC
b _080482B4
.align 2, 0
_08047F6C: .4byte gUnknown_80F503A
_08047F70:
ldr r0, _08047F84
movs r1, 0
ldrsh r2, [r0, r1]
adds r0, r4, 0
adds r1, r5, 0
movs r3, 0x2
bl sub_80482FC
b _080482B4
.align 2, 0
_08047F84: .4byte gUnknown_80F503C
_08047F88:
ldr r0, _08047F9C
movs r1, 0
ldrsh r2, [r0, r1]
adds r0, r4, 0
adds r1, r5, 0
movs r3, 0x3
bl sub_80482FC
b _080482B4
.align 2, 0
_08047F9C: .4byte gUnknown_80F503E
_08047FA0:
ldr r0, _08047FB4
movs r1, 0
ldrsh r2, [r0, r1]
adds r0, r4, 0
adds r1, r5, 0
movs r3, 0x4
bl sub_80482FC
b _080482B4
.align 2, 0
_08047FB4: .4byte gUnknown_80F5040
_08047FB8:
ldr r0, _08047FCC
movs r1, 0
ldrsh r2, [r0, r1]
adds r0, r4, 0
adds r1, r5, 0
movs r3, 0x5
bl sub_80482FC
b _080482B4
.align 2, 0
_08047FCC: .4byte gUnknown_80F5042
_08047FD0:
ldr r0, _08047FE4
movs r1, 0
ldrsh r2, [r0, r1]
adds r0, r4, 0
adds r1, r5, 0
movs r3, 0x6
bl sub_80482FC
b _080482B4
.align 2, 0
_08047FE4: .4byte gUnknown_80F5044
_08047FE8:
ldr r0, _08047FEC
b _08047FF2
.align 2, 0
_08047FEC: .4byte gUnknown_80F5048
_08047FF0:
ldr r0, _08048000
_08047FF2:
movs r1, 0
ldrsh r2, [r0, r1]
adds r0, r4, 0
adds r1, r5, 0
bl sub_8048340
b _080482B4
.align 2, 0
_08048000: .4byte gUnknown_80F5046
_08048004:
adds r0, r4, 0
adds r1, r5, 0
mov r2, r10
bl sub_8048364
b _080482B4
_08048010:
adds r0, r4, 0
adds r1, r5, 0
bl sub_8048374
b _080482B4
_0804801A:
adds r0, r4, 0
adds r1, r5, 0
bl sub_804839C
b _080482B4
_08048024:
adds r0, r4, 0
adds r1, r5, 0
bl sub_80483D4
b _080482B4
_0804802E:
adds r0, r4, 0
adds r1, r5, 0
bl sub_80483F4
b _080482B4
_08048038:
adds r0, r4, 0
adds r1, r5, 0
bl XEyeSeedAction
b _080482B4
_08048042:
adds r0, r4, 0
adds r1, r5, 0
bl sub_804840C
b _080482B4
_0804804C:
adds r0, r4, 0
adds r1, r5, 0
bl sub_804841C
b _080482B4
_08048056:
adds r0, r4, 0
adds r1, r5, 0
bl sub_804849C
b _080482B4
_08048060:
adds r0, r4, 0
adds r1, r5, 0
bl sub_8048428
b _080482B4
_0804806A:
adds r0, r4, 0
adds r1, r5, 0
bl sub_8048450
b _080482B4
_08048074:
adds r0, r4, 0
adds r1, r5, 0
bl sub_8048480
b _080482B4
_0804807E:
adds r0, r4, 0
adds r1, r5, 0
bl sub_80482D4
b _080482B4
_08048088:
adds r0, r4, 0
adds r1, r5, 0
bl sub_8048490
b _080482B4
_08048092:
adds r0, r4, 0
adds r1, r5, 0
bl sub_80484A8
b _080482B4
_0804809C:
adds r0, r4, 0
adds r1, r5, 0
bl sub_80484DC
b _080482B4
_080480A6:
adds r0, r4, 0
adds r1, r5, 0
bl sub_80484BC
b _080482B4
_080480B0:
adds r0, r4, 0
adds r1, r5, 0
bl sub_80484C8
b _080482B4
_080480BA:
adds r0, r4, 0
adds r1, r5, 0
bl sub_80484E8
b _080482B4
_080480C4:
adds r0, r4, 0
adds r1, r5, 0
bl sub_8048524
b _080482B4
_080480CE:
adds r0, r4, 0
adds r1, r5, 0
bl sub_80485B0
b _080482B4
_080480D8:
adds r0, r4, 0
adds r1, r5, 0
adds r2, r6, 0
bl sub_804869C
b _080482B4
_080480E4:
adds r0, r4, 0
adds r1, r5, 0
bl sub_80483C4
b _080482B4
_080480EE:
adds r0, r4, 0
adds r1, r5, 0
bl sub_804891C
b _080482B4
_080480F8:
adds r0, r4, 0
adds r1, r5, 0
bl sub_8048928
b _080482B4
_08048102:
adds r0, r4, 0
adds r1, r5, 0
bl sub_8048934
b _080482B4
_0804810C:
adds r0, r4, 0
adds r1, r5, 0
bl sub_8048940
b _080482B4
_08048116:
adds r0, r4, 0
adds r1, r5, 0
adds r2, r6, 0
bl nullsub_94
b _080482B4
_08048122:
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0x64
b _08048130
_0804812A:
ldr r2, _08048138
adds r0, r4, 0
adds r1, r5, 0
_08048130:
movs r3, 0xA
bl sub_80487CC
b _080482B4
.align 2, 0
_08048138: .4byte 0x000003e7
_0804813C:
adds r0, r4, 0
adds r1, r5, 0
bl sub_8048E04
b _080482B4
_08048146:
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0x1
bl sub_80487E0
b _080482B4
_08048152:
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0x2
bl sub_80487E0
b _080482B4
_0804815E:
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0x3
bl sub_80487E0
b _080482B4
_0804816A:
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0x4
bl sub_80487E0
b _080482B4
_08048176:
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0x5
bl sub_80487E0
b _080482B4
_08048182:
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0x6
bl sub_80487E0
b _080482B4
_0804818E:
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0x7
bl sub_80487E0
b _080482B4
_0804819A:
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0x8
bl sub_80487E0
b _080482B4
_080481A6:
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0x9
bl sub_80487E0
b _080482B4
_080481B2:
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0xA
bl sub_80487E0
b _080482B4
_080481BE:
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0xB
bl sub_80487E0
b _080482B4
_080481CA:
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0xC
bl sub_80487E0
b _080482B4
_080481D6:
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0xD
bl sub_80487E0
b _080482B4
_080481E2:
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0xE
bl sub_80487E0
b _080482B4
_080481EE:
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0xF
bl sub_80487E0
b _080482B4
_080481FA:
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0x10
bl sub_80487E0
b _080482B4
_08048206:
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0x11
bl sub_80487E0
b _080482B4
_08048212:
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0x32
movs r3, 0x5
bl sub_80487CC
b _080482B4
_08048220:
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0xA
movs r3, 0
bl sub_80487CC
b _080482B4
_0804822E:
adds r0, r4, 0
adds r1, r5, 0
adds r2, r6, 0
bl sub_8048DB8
b _080482B4
_0804823A:
adds r0, r4, 0
adds r1, r5, 0
adds r2, r6, 0
bl sub_8048EB0
b _080482B4
_08048246:
adds r0, r4, 0
adds r1, r5, 0
adds r2, r6, 0
bl sub_8048EC4
b _080482B4
_08048252:
adds r0, r4, 0
adds r1, r5, 0
adds r2, r6, 0
bl sub_8048ED8
b _080482B4
_0804825E:
adds r0, r4, 0
adds r1, r5, 0
adds r2, r6, 0
bl sub_8048EEC
b _080482B4
_0804826A:
adds r0, r4, 0
adds r1, r5, 0
adds r2, r6, 0
bl sub_8048F00
b _080482B4
_08048276:
cmp r6, 0
beq _080482A8
ldr r0, _080482A0
movs r1, 0
ldrsh r2, [r0, r1]
mov r0, sp
adds r0, 0x1A
_08048284:
str r0, [sp]
movs r1, 0
str r1, [sp, 0x4]
ldr r0, _080482A4
str r0, [sp, 0x8]
str r1, [sp, 0xC]
str r1, [sp, 0x10]
str r1, [sp, 0x14]
adds r0, r4, 0
adds r1, r5, 0
movs r3, 0x1
bl sub_806F370
b _080482B4
.align 2, 0
_080482A0: .4byte gUnknown_80F4FAC
_080482A4: .4byte 0x00000217
_080482A8:
ldr r0, _080482CC
ldr r2, [r0]
adds r0, r4, 0
adds r1, r5, 0
bl sub_80522F4
_080482B4:
adds r0, r4, 0
bl sub_8071DA4
_080482BA:
add sp, 0x1C
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080482CC: .4byte gUnknown_80FE458
thumb_func_end sub_80479B8
thumb_func_start nullsub_205
nullsub_205:
bx lr
thumb_func_end nullsub_205
thumb_func_start sub_80482D4
sub_80482D4:
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r1, 0
ldr r1, _080482F8
adds r0, r4, 0
movs r2, 0x1
bl CalculateStatusTurns
adds r2, r0, 0
adds r0, r5, 0
adds r1, r4, 0
movs r3, 0x1
bl sub_8075C58
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080482F8: .4byte gUnknown_80F4E74
thumb_func_end sub_80482D4
thumb_func_start sub_80482FC
sub_80482FC:
push {r4-r6,lr}
mov r6, r9
mov r5, r8
push {r5,r6}
sub sp, 0xC
mov r8, r0
mov r9, r1
adds r6, r2, 0
lsls r4, r3, 24
lsrs r4, 24
add r5, sp, 0x4
ldr r1, _0804833C
adds r0, r5, 0
bl InitPokemonMove
strb r6, [r5, 0x4]
movs r3, 0x80
lsls r3, 1
str r4, [sp]
mov r0, r8
mov r1, r9
add r2, sp, 0x4
bl sub_8055640
add sp, 0xC
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0804833C: .4byte 0x00000195
thumb_func_end sub_80482FC
.align 2,0

View File

@ -6,6 +6,7 @@
#include "constants/type.h"
#include "dungeon_action.h"
#include "structs/dungeon_entity.h"
#include "dungeon_music.h"
#include "dungeon_util.h"
#include "structs/str_dungeon.h"
#include "move_effects_target.h"
@ -16,6 +17,7 @@
#include "moves.h"
#include "code_8077274_1.h"
#include "code_80521D0.h"
#include "code_808417C.h"
#include "pokemon.h"
#include "structs/str_position.h"
#include "status.h"
@ -40,7 +42,21 @@ extern s16 gUnknown_80F4FA6; // 0x2D
extern u32 gUnknown_8106A4C;
extern u32 gUnknown_8106A50;
extern s16 gUnknown_80F4FAC;
extern s16 gUnknown_80F503A;
extern s16 gUnknown_80F503C;
extern s16 gUnknown_80F503E;
extern s16 gUnknown_80F5040;
extern s16 gUnknown_80F5042;
extern s16 gUnknown_80F5044;
extern s16 gUnknown_80F5046;
extern s16 gUnknown_80F5048;
extern s16 gUnknown_80F4FAE;
extern s16 gUnknown_80F4FAC;
extern s16 gUnknown_80F4E74[];
extern u8 *gUnknown_80FDBB8[];
extern u8 *gUnknown_80FE458[];
extern u8 *gUnknown_80FE3E8[];
extern u8 *gUnknown_80FEAE8[];
extern u8 *gUnknown_80FDBA0[];
extern u8 *gUnknown_80FE434[];
@ -84,8 +100,8 @@ extern void sub_803EAF0(u32, u32);
extern void sub_8044C10(bool8);
Entity *DrawFieldGiveItemMenu(u32, u32);
extern void PrintFieldMessage(u32, u8 *, u32);
extern void sub_8044E24(u32, u32, u32);
extern void sub_804245C(u32, Item *);
extern void sub_8044E24(Entity *, u32, u32);
extern void sub_804245C(Entity *, Item *);
extern u8 sub_8072938(Entity *, u16);
extern void sub_807D148(Entity *pokemon, Entity *r1, u32 r2, Position *r3);
extern void sub_8072008(Entity *pokemon, Entity *r1, u32 r2, u8 r3, u32);
@ -99,59 +115,401 @@ Entity *sub_80696FC(Entity *);
extern void sub_80943A0(void*, s32);
extern void sub_803E708(u32 r0, u32 r1);
extern void sub_806A7E8(EntityInfo *, s32);
extern u32 sub_8055640(struct Entity *, struct Entity *, struct Move *, u32, u32);
void StunSeedItemAction(Entity *, Entity *);
void MaxElixirAction(Entity *, Entity *);
void ProteinItemAction(Entity *, Entity *);
void CalciumItemAction(Entity *, Entity *);
void IronItemAction(Entity *, Entity *);
void ZincItemAction(Entity *, Entity *);
void sub_80487CC(Entity *, Entity *, u32, u32);
void GrimyFoodItemAction(Entity *, Entity *);
void HandleGummiItemAction(Entity *, Entity *, u8);
void IcePartItemAction(Entity *, Entity *, u8);
void SteelPartItemAction(Entity *, Entity *, u8);
void RockPartItemAction(Entity *, Entity *, u8);
void MusicBoxItemAction(Entity *, Entity *, u8);
void nullsub_94(Entity *, Entity *, u8);
void KeyItemAction(Entity *, Entity *, u8);
void sub_8078B5C(Entity *, Entity *, u32, u32, u32);
void sub_8048340(Entity *, Entity *, u32);
void HealSeedItemAction(Entity *, Entity *, u8);
void WishStoneItemAction(Entity *, Entity *, u8);
void OranBerryItemAction(Entity *, Entity *);
void ChestoBerryItemAction(Entity *, Entity *);
void JoySeedItemAction(Entity *, Entity *);
void GinsengItemAction(Entity *, Entity *);
void BlastSeedItemAction(Entity *, Entity *, u8);
void SitrusBerryItemAction(Entity *, Entity *);
void WarpSeedItemAction(Entity *, Entity *);
void PlainSeedItemAction(Entity *, Entity *);
void SleepSeedItemAction(Entity *, Entity *);
void TotterSeedItemAction(Entity *, Entity *);
void CheriBerryItemAction(Entity *, Entity *);
void PechaBerryItemAction(Entity *, Entity *);
void QuickSeedItemAction(Entity *, Entity *);
void HungerSeedItemAction(Entity *, Entity *);
void RawstBerryItemAction(Entity *, Entity *);
void LifeSeedItemAction(Entity *, Entity *);
void AllureSeedItemAction(Entity *, Entity *);
void EyedropSeedItemAction(Entity *, Entity *);
void BlinkerSeedItemAction(Entity *, Entity *);
void DoomSeedItemAction(Entity *, Entity *);
void sub_80482FC(Entity *, Entity *, u32, u8);
extern void sub_8071DA4(Entity *);
extern void SetShopkeeperAggression(Entity *, Entity *);
extern void sub_80464C8(Entity *, Position *, Item *);
extern void sub_806A6E8(Entity *);
extern void sub_8042390(Entity *, Item *);
void sub_80479B8(char param_1, char param_2, u8 param_3, Entity *pokemon, Entity *target, Item *item)
{
EntityInfo *info;
u32 flag;
u8 uStack_24;
u8 uStack_23;
u8 auStack_22;
if (param_1 != '\0') {
if (param_2 == '\0') {
flag = FALSE;
info = target->info;
if (info->isNotTeamMember) {
if ((GetItemCategory(item->id) != CATEGORY_THROWN_LINE) && (GetItemCategory(item->id) != CATEGORY_BERRIES_SEEDS_VITAMINS)) {
flag = GetItemCategory(item->id) == CATEGORY_THROWN_ARC ? FALSE : TRUE;
}
}
else {
if (GetItemCategory(item->id) != CATEGORY_BERRIES_SEEDS_VITAMINS) {
flag = IQSkillIsEnabled(target, IQ_ITEM_CATCHER);
}
}
if (CannotUseItems(target)) {
flag = FALSE;
}
if (flag && ((info->heldItem.flags & ITEM_FLAG_EXISTS) == 0)) {
if (info->shopkeeper == TRUE) {
sub_80464C8(pokemon,&target->pos,item);
return;
}
PlaySoundEffect(0x14d);
sub_8045BF8(gUnknown_202DE58,item);
SetMessageArgument(gAvailablePokemonNames,target,0);
sub_80522F4(pokemon,target,*gUnknown_80FDBB8);
info->heldItem = *item;
sub_806A6E8(target);
return;
}
}
if (param_1 != '\0') {
sub_8042390(target,item);
SetShopkeeperAggression(pokemon,target);
}
}
if ((item->flags & ITEM_FLAG_STICKY)) {
sub_8045BF8(gUnknown_202DE58,item);
sub_80522F4(pokemon,target,*gUnknown_80FE3E8);
if (param_1 != '\0') {
sub_806F370(pokemon,target,gUnknown_80F4FAE,1,&uStack_24,0,0x217,0,0,0);
sub_8071DA4(pokemon);
return;
}
else goto _jump;
}
else {
if (param_1 == 0)
_jump:
sub_804245C(target,item);
}
if (GetItemCategory(item->id) == CATEGORY_BERRIES_SEEDS_VITAMINS) {
sub_8078B5C(pokemon,target,5,0,0);
}
if ((GetItemCategory(item->id) == CATEGORY_TMS_HMS) || (GetItemCategory(item->id) == CATEGORY_LINK_BOX)) {
if (param_1 != '\0') {
sub_806F370(pokemon,target,gUnknown_80F4FAC,1,&uStack_23,0,0x217,0,0,0);
goto _080482B4;
}
else
{
sub_80522F4(pokemon,target,*gUnknown_80FE458);
goto _080482B4;
}
}
switch(item->id) {
case ITEM_STICK:
sub_80482FC(pokemon,target,gUnknown_80F503A,1);
break;
case ITEM_IRON_THORN:
sub_80482FC(pokemon,target,gUnknown_80F503C,2);
break;
case ITEM_SILVER_SPIKE:
sub_80482FC(pokemon,target,gUnknown_80F503E,3);
break;
case ITEM_GOLD_FANG:
sub_80482FC(pokemon,target,gUnknown_80F5040,4);
break;
case ITEM_CACNEA_SPIKE:
sub_80482FC(pokemon,target,gUnknown_80F5042,5);
break;
case ITEM_CORSOLA_TWIG:
sub_80482FC(pokemon,target,gUnknown_80F5044,6);
break;
case ITEM_GEO_PEBBLE:
sub_8048340(pokemon,target,gUnknown_80F5048);
break;
case ITEM_GRAVELEROCK:
sub_8048340(pokemon,target,gUnknown_80F5046);
break;
case ITEM_HEAL_SEED:
HealSeedItemAction(pokemon,target,param_3);
break;
case ITEM_ORAN_BERRY:
OranBerryItemAction(pokemon,target);
break;
case ITEM_SITRUS_BERRY:
SitrusBerryItemAction(pokemon,target);
break;
case ITEM_LIFE_SEED:
LifeSeedItemAction(pokemon,target);
break;
case ITEM_BLINKER_SEED:
BlinkerSeedItemAction(pokemon,target);
break;
case ITEM_ALLURE_SEED:
AllureSeedItemAction(pokemon,target);
break;
case ITEM_QUICK_SEED:
QuickSeedItemAction(pokemon,target);
break;
case ITEM_EYEDROP_SEED:
EyedropSeedItemAction(pokemon,target);
break;
case ITEM_TOTTER_SEED:
TotterSeedItemAction(pokemon,target);
break;
case ITEM_CHERI_BERRY:
CheriBerryItemAction(pokemon,target);
break;
case ITEM_PECHA_BERRY:
PechaBerryItemAction(pokemon,target);
break;
case ITEM_WARP_SEED:
WarpSeedItemAction(pokemon,target);
break;
case ITEM_SLEEP_SEED:
SleepSeedItemAction(pokemon,target);
break;
case ITEM_CHESTO_BERRY:
ChestoBerryItemAction(pokemon,target);
break;
case ITEM_JOY_SEED:
JoySeedItemAction(pokemon,target);
break;
case ITEM_DOOM_SEED:
DoomSeedItemAction(pokemon,target);
break;
case ITEM_STUN_SEED:
StunSeedItemAction(pokemon,target);
break;
case ITEM_PLAIN_SEED:
PlainSeedItemAction(pokemon,target);
break;
case ITEM_RAWST_BERRY:
RawstBerryItemAction(pokemon,target);
break;
case ITEM_HUNGER_SEED:
HungerSeedItemAction(pokemon,target);
break;
case ITEM_GINSENG:
GinsengItemAction(pokemon,target);
break;
case ITEM_BLAST_SEED:
BlastSeedItemAction(pokemon,target,param_1);
break;
case ITEM_MAX_ELIXIR:
MaxElixirAction(pokemon,target);
break;
case ITEM_PROTEIN:
ProteinItemAction(pokemon,target);
break;
case ITEM_CALCIUM:
CalciumItemAction(pokemon,target);
break;
case ITEM_IRON:
IronItemAction(pokemon,target);
break;
case ITEM_ZINC:
ZincItemAction(pokemon,target);
break;
case 0xe9:
nullsub_94(pokemon,target,param_1);
break;
case ITEM_BIG_APPLE:
sub_80487CC(pokemon,target,100,10);
break;
case ITEM_HUGE_APPLE:
sub_80487CC(pokemon,target,999,10);
break;
case ITEM_GRIMY_FOOD:
GrimyFoodItemAction(pokemon,target);
break;
case ITEM_WHITE_GUMMI:
HandleGummiItemAction(pokemon,target,1);
break;
case ITEM_RED_GUMMI:
HandleGummiItemAction(pokemon,target,2);
break;
case ITEM_BLUE_GUMMI:
HandleGummiItemAction(pokemon,target,3);
break;
case ITEM_GRASS_GUMMI:
HandleGummiItemAction(pokemon,target,4);
break;
case ITEM_YELLOW_GUMMI:
HandleGummiItemAction(pokemon,target,5);
break;
case ITEM_CLEAR_GUMMI:
HandleGummiItemAction(pokemon,target,6);
break;
case ITEM_ORANGE_GUMMI:
HandleGummiItemAction(pokemon,target,7);
break;
case ITEM_PINK_GUMMI:
HandleGummiItemAction(pokemon,target,8);
break;
case ITEM_BROWN_GUMMI:
HandleGummiItemAction(pokemon,target,9);
break;
case ITEM_SKY_GUMMI:
HandleGummiItemAction(pokemon,target,10);
break;
case ITEM_GOLD_GUMMI:
HandleGummiItemAction(pokemon,target,0xb);
break;
case ITEM_GREEN_GUMMI:
HandleGummiItemAction(pokemon,target,0xc);
break;
case ITEM_GRAY_GUMMI:
HandleGummiItemAction(pokemon,target,0xd);
break;
case ITEM_PURPLE_GUMMI:
HandleGummiItemAction(pokemon,target,0xe);
break;
case ITEM_ROYAL_GUMMI:
HandleGummiItemAction(pokemon,target,0xf);
break;
case ITEM_BLACK_GUMMI:
HandleGummiItemAction(pokemon,target,0x10);
break;
case ITEM_SILVER_GUMMI:
HandleGummiItemAction(pokemon,target,0x11);
break;
case ITEM_APPLE:
case ITEM_BANANA:
sub_80487CC(pokemon,target,0x32,5);
break;
case ITEM_CHESTNUT:
sub_80487CC(pokemon,target,10,0);
break;
case ITEM_KEY:
KeyItemAction(pokemon,target,param_1);
break;
case ITEM_ICE_PART:
IcePartItemAction(pokemon,target,param_1);
break;
case ITEM_ROCK_PART:
RockPartItemAction(pokemon,target,param_1);
break;
case ITEM_STEEL_PART:
SteelPartItemAction(pokemon,target,param_1);
break;
case ITEM_WISH_STONE:
WishStoneItemAction(pokemon,target,param_1);
break;
case ITEM_MUSIC_BOX:
MusicBoxItemAction(pokemon,target,param_1);
break;
default:
if (param_1 != '\0') {
sub_806F370(pokemon,target,gUnknown_80F4FAC,1,&auStack_22,0,0x217,0,0,0);
}
else
{
sub_80522F4(pokemon,target,*gUnknown_80FE458);
}
break;
}
_080482B4:
sub_8071DA4(pokemon);
}
UNUSED void nullsub_205(void) { }
void SleepSeedItemAction(Entity *pokemon, Entity *target) {
sub_8075C58(pokemon, target, CalculateStatusTurns(target, gUnknown_80F4E74, TRUE), TRUE);
}
void sub_80482FC(Entity *pokemon, Entity *target, u32 pp, u8 param_4) {
Move move;
InitPokemonMove(&move, MOVE_PROJECTILE);
move.PP = pp;
sub_8055640(pokemon, target, &move, 0x100, param_4);
}
void sub_8048340(Entity *pokemon, Entity *target, u32 r2)
{
sub_806F370(pokemon, target, r2, 1, 0, 0, 528, 0, 0, 0);
}
void sub_8048364(Entity *pokemon, Entity *target, u8 r2)
void HealSeedItemAction(Entity *pokemon, Entity *target, u8 r2)
{
sub_8079F20(pokemon, target, 1, r2);
}
void sub_8048374(Entity *pokemon, Entity *target)
void OranBerryItemAction(Entity *pokemon, Entity *target)
{
HealTargetHP(pokemon, target, gUnknown_80F4FB6, gUnknown_80F4FB8, TRUE);
}
void sub_804839C(Entity *pokemon, Entity *target)
void SitrusBerryItemAction(Entity *pokemon, Entity *target)
{
HealTargetHP(pokemon, target, gUnknown_80F4FBA, gUnknown_80F4FBC, TRUE);
}
void sub_80483C4(Entity *pokemon, Entity *target)
void MaxElixirAction(Entity *pokemon, Entity *target)
{
RestorePPTarget(pokemon, target, 999);
}
void sub_80483D4(Entity *pokemon, Entity *target)
void LifeSeedItemAction(Entity *pokemon, Entity *target)
{
HealTargetHP(pokemon, target, 0, gUnknown_80F4FBE, TRUE);
}
void sub_80483F4(Entity *pokemon, Entity *target)
void BlinkerSeedItemAction(Entity *pokemon, Entity *target)
{
BlindTarget(pokemon, target);
}
void XEyeSeedAction(Entity *pokemon, Entity *target)
void AllureSeedItemAction(Entity *pokemon, Entity *target)
{
CrossEyeVisionTarget(pokemon, target);
}
void sub_804840C(Entity *pokemon, Entity *target)
void QuickSeedItemAction(Entity *pokemon, Entity *target)
{
RaiseMovementSpeedTarget(pokemon, target, 0, TRUE);
}
void sub_804841C(Entity *pokemon, Entity *target)
void EyedropSeedItemAction(Entity *pokemon, Entity *target)
{
RestoreVisionTarget(pokemon, target);
}
void sub_8048428(Entity *pokemon, Entity *target)
void CheriBerryItemAction(Entity *pokemon, Entity *target)
{
if(target->info->nonVolatileStatus == STATUS_PARALYSIS)
SendNonVolatileEndMessage(pokemon, target);
@ -160,7 +518,7 @@ void sub_8048428(Entity *pokemon, Entity *target)
sub_80522F4(pokemon, target, *gUnknown_80F89F4);
}
void sub_8048450(Entity *pokemon, Entity *target)
void PechaBerryItemAction(Entity *pokemon, Entity *target)
{
if((u8)(target->info->nonVolatileStatus - 2) <= 1)
SendNonVolatileEndMessage(pokemon, target);
@ -169,43 +527,43 @@ void sub_8048450(Entity *pokemon, Entity *target)
sub_80522F4(pokemon, target, *gUnknown_80F89F4);
}
void sub_8048480(Entity *pokemon, Entity *target)
void WarpSeedItemAction(Entity *pokemon, Entity *target)
{
sub_807D148(pokemon, target, 0, NULL);
}
void sub_8048490(Entity *pokemon, Entity *target)
void ChestoBerryItemAction(Entity *pokemon, Entity *target)
{
SleeplessStatusTarget(pokemon, target);
}
void sub_804849C(Entity *pokemon, Entity *target)
void TotterSeedItemAction(Entity *pokemon, Entity *target)
{
ConfuseStatusTarget(pokemon, target, TRUE);
}
void sub_80484A8(Entity *pokemon, Entity *target)
void JoySeedItemAction(Entity *pokemon, Entity *target)
{
sub_8072008(pokemon, target, 1, 1, 1);
}
void sub_80484BC(Entity *pokemon, Entity *target)
void StunSeedItemAction(Entity *pokemon, Entity *target)
{
PetrifiedStatusTarget(pokemon, target);
}
void sub_80484C8(Entity *pokemon, Entity *target)
void PlainSeedItemAction(Entity *pokemon, Entity *target)
{
// Pointer to "But nothing happened!"
sub_80522F4(pokemon, target, *gUnknown_80F89F4);
}
void sub_80484DC(Entity *pokemon, Entity *target)
void DoomSeedItemAction(Entity *pokemon, Entity *target)
{
LevelDownTarget(pokemon, target, 1);
}
void sub_80484E8(Entity *pokemon, Entity *target)
void RawstBerryItemAction(Entity *pokemon, Entity *target)
{
if(target->info->nonVolatileStatus == STATUS_BURN)
SendNonVolatileEndMessage(pokemon, target);
@ -217,7 +575,7 @@ void sub_80484E8(Entity *pokemon, Entity *target)
}
}
void sub_8048524(Entity *pokemon, Entity * target)
void HungerSeedItemAction(Entity *pokemon, Entity * target)
{
EntityInfo *entityInfo;
EntityInfo *entityInfo_1;
@ -247,7 +605,7 @@ void sub_8048524(Entity *pokemon, Entity * target)
}
}
void sub_80485B0(Entity *pokemon, Entity * target)
void GinsengItemAction(Entity *pokemon, Entity * target)
{
bool8 isMoveBoosted;
s32 moveIndex;
@ -298,7 +656,7 @@ void sub_80485B0(Entity *pokemon, Entity * target)
sub_80522F4(pokemon,target,*gUnknown_80FE40C);
}
void sub_804869C(Entity *pokemon, Entity * target, u8 param_3)
void BlastSeedItemAction(Entity *pokemon, Entity * target, u8 param_3)
{
s32 uVar1;
EntityInfo *entityInfo;
@ -363,7 +721,7 @@ static inline bool8 JoinLocationCannotUseItems_1(EntityInfo *pokemonInfo)
return FALSE;
}
void sub_80487E0(Entity *pokemon, Entity *target, u8 gummiIndex)
void HandleGummiItemAction(Entity *pokemon, Entity *target, u8 gummiIndex)
{
s32 iVar3;
EntityInfo *targetInfo;
@ -413,27 +771,27 @@ void sub_80487E0(Entity *pokemon, Entity *target, u8 gummiIndex)
}
}
void sub_804891C(Entity *pokemon, Entity *target)
void ProteinItemAction(Entity *pokemon, Entity *target)
{
RaiseAtkStatTarget(pokemon, target, 3);
}
void sub_8048928(Entity *pokemon, Entity *target)
void CalciumItemAction(Entity *pokemon, Entity *target)
{
RaiseSpAtkStatTarget(pokemon, target, 3);
}
void sub_8048934(Entity *pokemon, Entity *target)
void IronItemAction(Entity *pokemon, Entity *target)
{
RaiseDefStatTarget(pokemon, target, 3);
}
void sub_8048940(Entity *pokemon, Entity *target)
void ZincItemAction(Entity *pokemon, Entity *target)
{
RaiseSpDefStatTarget(pokemon, target, 3);
}
void nullsub_94(void)
void nullsub_94(Entity *pokemon, Entity *target, u8 r2)
{}
static inline bool8 JoinLocationCannotUseItems_2(EntityInfo *pokemonInfo)
@ -449,7 +807,7 @@ static inline bool8 JoinLocationCannotUseItems_2(EntityInfo *pokemonInfo)
return FALSE;
}
bool8 sub_8048950(u32 param_1,Item *item)
bool8 sub_8048950(Entity *param_1,Item *item)
{
u8 flag;
u16 moveID;
@ -514,7 +872,7 @@ static inline bool8 JoinLocationCannotUseItems_3(EntityInfo *pokemonInfo)
return FALSE;
}
bool8 sub_8048A68(u32 param_1,Item *item)
bool8 sub_8048A68(Entity *param_1,Item *item)
{
u8 flag;
Entity *entity2;
@ -720,7 +1078,7 @@ bool8 sub_8048D50(Entity * pokemon, Item *item)
return TRUE;
}
void sub_8048DB8(Entity *pokemon, Entity *target, u8 r2)
void KeyItemAction(Entity *pokemon, Entity *target, u8 r2)
{
u8 temp;
if(r2 != 0)
@ -729,7 +1087,7 @@ void sub_8048DB8(Entity *pokemon, Entity *target, u8 r2)
sub_8051E7C(pokemon);
}
void sub_8048E04(Entity *pokemon, Entity * target)
void GrimyFoodItemAction(Entity *pokemon, Entity * target)
{
sub_8078B5C(pokemon, target, 0x1E, 0, 1);
switch(DungeonRandInt(5))
@ -753,27 +1111,27 @@ void sub_8048E04(Entity *pokemon, Entity * target)
}
}
void sub_8048EB0(Entity *pokemon)
void IcePartItemAction(Entity *pokemon, Entity *target, u8 r2)
{
SendMessage(pokemon, *gPtrIcePartCrumbledMessage);
}
void sub_8048EC4(Entity *pokemon)
void RockPartItemAction(Entity *pokemon, Entity *target, u8 r2)
{
SendMessage(pokemon, *gPtrRockPartCrumbledMessage);
}
void sub_8048ED8(Entity *pokemon)
void SteelPartItemAction(Entity *pokemon, Entity *target, u8 r2)
{
SendMessage(pokemon, *gPtrSteelPartCrumbledMessage);
}
void sub_8048EEC(Entity *pokemon)
void WishStoneItemAction(Entity *pokemon, Entity *target, u8 r2)
{
SendMessage(pokemon, *gPtrWishStoneCrumbledMessage);
}
void sub_8048F00(Entity *pokemon)
void MusicBoxItemAction(Entity *pokemon, Entity *target, u8 r2)
{
sub_80421C0(pokemon, 0xD6);
SendMessage(pokemon, *gPtrMusicBoxPlayedCrumbledMessage);