summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/code_080732D0.s3191
-rw-r--r--asm/code_08076C80.s1083
-rw-r--r--asm/code_080A5574.s888
-rw-r--r--asm/item/itemBomb.inc231
-rw-r--r--asm/item/itemBoomerang.inc101
-rw-r--r--asm/item/itemBow.inc264
-rw-r--r--asm/item/itemDebug.inc10
-rw-r--r--asm/item/itemGustJar.inc396
-rw-r--r--asm/item/itemJarEmpty.inc176
-rw-r--r--asm/item/itemLantern.inc390
-rw-r--r--asm/item/itemMoleMitts.inc508
-rw-r--r--asm/item/itemPegasusBoots.inc450
-rw-r--r--asm/item/itemRocsCape.inc232
-rw-r--r--asm/item/itemSword.inc891
-rw-r--r--asm/item/itemTryPickupObject.inc597
-rw-r--r--asm/playerItem/playerItemSword.inc891
-rw-r--r--data/const/item/itemBomb.inc9
-rw-r--r--data/const/item/itemBoomerang.inc3
-rw-r--r--data/const/item/itemBow.inc8
-rw-r--r--data/const/item/itemGustJar.inc5
-rw-r--r--data/const/item/itemJarEmpty.inc5
-rw-r--r--data/const/item/itemLantern.inc5
-rw-r--r--data/const/item/itemMoleMitts.inc14
-rw-r--r--data/const/item/itemOcarina.inc3
-rw-r--r--data/const/item/itemPacciCane.inc3
-rw-r--r--data/const/item/itemPegasusBoots.inc4
-rw-r--r--data/const/item/itemShield.inc4
-rw-r--r--data/const/item/itemSword.inc10
-rw-r--r--data/const/item/itemTryPickupObject.inc8
-rw-r--r--data/const/playerItem/playerItemSword.inc4
-rw-r--r--data/data_0811BD44.s145
-rw-r--r--data/data_08124712.s24
-rw-r--r--linker.ld4
-rw-r--r--src/item.c117
-rw-r--r--src/item/itemGustJar.c10
-rw-r--r--src/item/itemOcarina.c40
-rw-r--r--src/item/itemPacciCane.c35
-rw-r--r--src/item/itemShield.c52
38 files changed, 5516 insertions, 5295 deletions
diff --git a/asm/code_080732D0.s b/asm/code_080732D0.s
index 42d8326a..b64b3477 100644
--- a/asm/code_080732D0.s
+++ b/asm/code_080732D0.s
@@ -4331,3173 +4331,42 @@ sub_080752E8: @ 0x080752E8
.align 2, 0
_080752FC: .4byte gItemFunctions
- thumb_func_start ItemDebug
-ItemDebug: @ 0x08075300
- push {r4, r5, lr}
- adds r4, r0, #0
- adds r5, r1, #0
- bl sub_08077BD4
- adds r0, r4, #0
- adds r1, r5, #0
- bl sub_08077E78
- pop {r4, r5, pc}
-
- thumb_func_start ItemSword
-ItemSword: @ 0x08075314
- push {lr}
- ldr r2, _08075330 @ =gPlayerState
- adds r2, #0xa8
- movs r3, #2
- strb r3, [r2]
- ldr r3, _08075334 @ =gUnk_0811BD44
- ldrb r2, [r0, #4]
- lsls r2, r2, #2
- adds r2, r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- pop {pc}
- .align 2, 0
-_08075330: .4byte gPlayerState
-_08075334: .4byte gUnk_0811BD44
-
- thumb_func_start sub_08075338
-sub_08075338: @ 0x08075338
- push {r4, r5, r6, r7, lr}
- adds r5, r0, #0
- adds r7, r1, #0
- ldr r4, _0807536C @ =gPlayerState
- ldr r1, [r4, #0x30]
- movs r3, #0x80
- adds r0, r1, #0
- ands r0, r3
- cmp r0, #0
- beq _08075370
- ldrb r0, [r5, #9]
- movs r1, #0x80
- orrs r1, r0
- strb r1, [r5, #9]
- adds r0, r5, #0
- adds r1, r7, #0
- bl sub_08077D38
- movs r0, #0xc0
- lsls r0, r0, #4
- strh r0, [r4, #8]
- movs r0, #0x75
- bl SoundReq
- b _080754B4
- .align 2, 0
-_0807536C: .4byte gPlayerState
-_08075370:
- ldrb r2, [r4, #2]
- cmp r2, #0
- beq _080753DC
- movs r6, #7
- adds r0, r6, #0
- ands r0, r2
- cmp r0, #3
- beq _080753E4
- movs r0, #0x78
- ands r0, r2
- cmp r0, #0
- bne _080753E4
- ldr r3, _080753D4 @ =gPlayerEntity
- ldr r1, [r3, #0x20]
- ldr r0, _080753D8 @ =0x00017FFF
- cmp r1, r0
- bhi _080753E4
- adds r0, r4, #0
- adds r0, #0xac
- ldrh r1, [r0]
- movs r0, #0x40
- ands r0, r1
- cmp r0, #0
- beq _080753E4
- ldr r0, [r3, #0x34]
- cmp r0, #0
- beq _080753E4
- movs r0, #0x20
- orrs r0, r2
- strb r0, [r4, #2]
- adds r0, r4, #0
- adds r0, #0xab
- strb r6, [r0]
- movs r0, #8
- asrs r0, r7
- lsls r1, r0, #4
- orrs r0, r1
- ldrb r1, [r4, #4]
- orrs r0, r1
- strb r0, [r4, #4]
- adds r0, r5, #0
- bl sub_08077B98
- movs r0, #6
- strb r0, [r5, #4]
- adds r0, r5, #0
- adds r1, r7, #0
- bl sub_08075898
- b _080754B4
- .align 2, 0
-_080753D4: .4byte gPlayerEntity
-_080753D8: .4byte 0x00017FFF
-_080753DC:
- ldr r2, _080753F0 @ =gPlayerEntity
- ldr r0, [r2, #0x34]
- cmp r0, #0
- beq _080753F4
-_080753E4:
- adds r0, r5, #0
- adds r1, r7, #0
- bl sub_080759B8
- b _080754B4
- .align 2, 0
-_080753F0: .4byte gPlayerEntity
-_080753F4:
- movs r6, #0x80
- lsls r6, r6, #0xb
- ands r6, r1
- cmp r6, #0
- beq _08075480
- adds r0, r4, #0
- adds r0, #0xac
- ldrh r1, [r0]
- movs r0, #2
- ands r0, r1
- lsls r0, r0, #0x10
- lsrs r6, r0, #0x10
- cmp r6, #0
- bne _0807541E
- ldr r0, [r4, #0x2c]
- cmp r0, #0
- beq _080754B4
- bl DeleteEntity
- str r6, [r4, #0x2c]
- b _080754B4
-_0807541E:
- adds r0, r5, #0
- adds r1, r7, #0
- bl sub_08077D38
- adds r0, r5, #0
- bl sub_08077B98
- movs r3, #8
- adds r1, r3, #0
- asrs r1, r7
- lsls r0, r1, #4
- orrs r0, r1
- ldrb r2, [r4, #4]
- orrs r0, r2
- strb r0, [r4, #4]
- ldrb r2, [r4, #0xa]
- adds r0, r1, #0
- orrs r0, r2
- strb r0, [r4, #0xa]
- ldrb r0, [r4, #0xb]
- orrs r1, r0
- strb r1, [r4, #0xb]
- strb r3, [r5, #4]
- movs r0, #0x14
- strb r0, [r5, #7]
- movs r0, #6
- strb r0, [r5, #0xf]
- ldrb r1, [r5, #9]
- movs r0, #0x80
- orrs r0, r1
- strb r0, [r5, #9]
- adds r1, r4, #0
- adds r1, #0xab
- movs r0, #2
- strb r0, [r1]
- ldr r0, [r4, #0x30]
- movs r1, #0x80
- lsls r1, r1, #0x14
- orrs r0, r1
- str r0, [r4, #0x30]
- movs r1, #0x98
- lsls r1, r1, #1
- adds r0, r5, #0
- bl sub_08077DF4
- movs r0, #0x77
- bl SoundReq
- b _080754B4
-_08075480:
- ldrb r1, [r4, #0x1b]
- adds r0, r3, #0
- ands r0, r1
- cmp r0, #0
- bne _08075492
- strb r6, [r4, #0x1b]
- adds r0, r2, #0
- bl sub_0806F948
-_08075492:
- ldr r1, [r4, #0x2c]
- cmp r1, #0
- beq _080754A6
- ldrb r0, [r1, #9]
- cmp r0, #1
- beq _080754A6
- adds r0, r1, #0
- bl DeleteEntity
- str r6, [r4, #0x2c]
-_080754A6:
- adds r0, r5, #0
- adds r1, r7, #0
- bl sub_08077D38
- adds r0, r5, #0
- bl sub_08077B98
-_080754B4:
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-
- thumb_func_start sub_080754B8
-sub_080754B8: @ 0x080754B8
- push {r4, r5, r6, r7, lr}
- adds r4, r0, #0
- adds r6, r1, #0
- ldr r7, _080754D4 @ =gPlayerState
- ldrb r1, [r7, #0x1b]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _080754D8
- adds r0, r4, #0
- adds r1, r6, #0
- bl sub_08075694
- b _0807557E
- .align 2, 0
-_080754D4: .4byte gPlayerState
-_080754D8:
- ldrb r0, [r7, #4]
- cmp r0, #0
- beq _08075576
- adds r0, r4, #0
- bl UpdateItemAnim
- ldrb r0, [r4, #0xe]
- cmp r0, #0
- beq _080754F2
- ldrb r1, [r4, #9]
- movs r0, #0x7f
- ands r0, r1
- strb r0, [r4, #9]
-_080754F2:
- ldr r0, _0807552C @ =gPlayerEntity
- adds r0, #0x5b
- ldrb r1, [r0]
- movs r0, #1
- ands r0, r1
- cmp r0, #0
- beq _08075538
- bl sub_0807B014
- adds r5, r0, #0
- cmp r5, #0
- beq _08075538
- movs r0, #8
- movs r1, #0xf
- movs r2, #2
- bl FindEntityByID
- cmp r0, #0
- bne _08075538
- adds r0, r4, #0
- movs r1, #0xf
- bl CreatePlayerBomb
- cmp r5, #0xf
- bne _08075530
- adds r1, r7, #0
- adds r1, #0xab
- movs r0, #5
- b _08075536
- .align 2, 0
-_0807552C: .4byte gPlayerEntity
-_08075530:
- adds r1, r7, #0
- adds r1, #0xab
- movs r0, #8
-_08075536:
- strb r0, [r1]
-_08075538:
- ldrb r1, [r4, #0xe]
- movs r2, #0x80
- adds r0, r2, #0
- ands r0, r1
- cmp r0, #0
- beq _0807557E
- ldr r1, _08075568 @ =gPlayerState
- ldr r0, [r1, #0x30]
- ands r0, r2
- cmp r0, #0
- bne _0807555C
- adds r0, r1, #0
- adds r0, #0xac
- ldrh r1, [r0]
- movs r0, #1
- ands r0, r1
- cmp r0, #0
- bne _0807556C
-_0807555C:
- adds r0, r4, #0
- adds r1, r6, #0
- bl sub_080759B8
- b _0807557E
- .align 2, 0
-_08075568: .4byte gPlayerState
-_0807556C:
- adds r0, r4, #0
- adds r1, r6, #0
- bl sub_08075580
- b _0807557E
-_08075576:
- adds r0, r4, #0
- adds r1, r6, #0
- bl sub_080759B8
-_0807557E:
- pop {r4, r5, r6, r7, pc}
-
- thumb_func_start sub_08075580
-sub_08075580: @ 0x08075580
- push {r4, r5, lr}
- adds r4, r0, #0
- adds r5, r1, #0
- bl sub_08077EFC
- cmp r0, #0
- beq _080755E6
- ldr r2, _080755C8 @ =gPlayerState
- ldrb r3, [r2, #2]
- cmp r3, #0
- bne _080755E6
- movs r1, #8
- asrs r1, r5
- ldrb r0, [r2, #0xa]
- bics r0, r1
- strb r0, [r2, #0xa]
- movs r0, #1
- strb r0, [r2, #0x1b]
- ldr r0, [r2, #0x2c]
- adds r0, #0x40
- movs r1, #0xd
- strb r1, [r0]
- strb r3, [r4, #0xf]
- movs r0, #2
- strb r0, [r4, #4]
- adds r0, r2, #0
- adds r0, #0xac
- ldrh r1, [r0]
- movs r0, #0x80
- lsls r0, r0, #2
- ands r0, r1
- cmp r0, #0
- beq _080755CC
- movs r0, #0x28
- b _080755CE
- .align 2, 0
-_080755C8: .4byte gPlayerState
-_080755CC:
- movs r0, #0x50
-_080755CE:
- strb r0, [r4, #7]
- movs r1, #0xb4
- lsls r1, r1, #1
- adds r0, r4, #0
- bl sub_08077DF4
- movs r0, #0x43
- movs r1, #0
- movs r2, #0
- bl CreateObject
- b _080755EE
-_080755E6:
- adds r0, r4, #0
- adds r1, r5, #0
- bl sub_080759B8
-_080755EE:
- pop {r4, r5, pc}
-
- thumb_func_start sub_080755F0
-sub_080755F0: @ 0x080755F0
- push {r4, r5, lr}
- adds r4, r0, #0
- adds r5, r1, #0
- bl sub_08077EFC
- cmp r0, #0
- beq _08075642
- adds r0, r4, #0
- bl sub_08077EC8
- cmp r0, #0
- bne _0807564A
- ldr r2, _08075634 @ =gPlayerState
- ldrb r3, [r2, #0x1b]
- ldrb r0, [r2, #4]
- orrs r0, r3
- cmp r0, #0
- beq _08075638
- ldrb r0, [r4, #7]
- subs r0, #1
- strb r0, [r4, #7]
- lsls r0, r0, #0x18
- cmp r0, #0
- bne _0807564A
- movs r0, #3
- strb r0, [r4, #4]
- ldrb r0, [r4, #9]
- movs r1, #0x80
- orrs r0, r1
- strb r0, [r4, #9]
- movs r0, #0x20
- orrs r0, r3
- strb r0, [r2, #0x1b]
- b _0807564A
- .align 2, 0
-_08075634: .4byte gPlayerState
-_08075638:
- adds r0, r4, #0
- adds r1, r5, #0
- bl sub_080759B8
- b _0807564A
-_08075642:
- adds r0, r4, #0
- adds r1, r5, #0
- bl sub_080759B8
-_0807564A:
- pop {r4, r5, pc}
-
- thumb_func_start sub_0807564C
-sub_0807564C: @ 0x0807564C
- push {r4, r5, r6, lr}
- adds r4, r0, #0
- adds r6, r1, #0
- ldr r5, _08075668 @ =gPlayerState
- ldrb r1, [r5, #0x1b]
- ldrb r0, [r5, #4]
- orrs r0, r1
- cmp r0, #0
- bne _0807566C
- adds r0, r4, #0
- adds r1, r6, #0
- bl sub_080759B8
- b _08075692
- .align 2, 0
-_08075668: .4byte gPlayerState
-_0807566C:
- adds r0, r4, #0
- bl sub_08077EC8
- cmp r0, #0
- bne _08075692
- adds r0, r4, #0
- bl sub_08077EFC
- cmp r0, #0
- beq _0807568A
- ldrb r1, [r5, #0x1b]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _08075692
-_0807568A:
- adds r0, r4, #0
- adds r1, r6, #0
- bl sub_08075694
-_08075692:
- pop {r4, r5, r6, pc}
-
- thumb_func_start sub_08075694
-sub_08075694: @ 0x08075694
- push {r4, r5, lr}
- adds r4, r0, #0
- adds r5, r1, #0
- movs r3, #1
- strb r3, [r4, #7]
- ldr r2, _080756C4 @ =gPlayerState
- ldr r1, [r2, #0x30]
- movs r0, #0x80
- lsls r0, r0, #0x14
- ands r0, r1
- cmp r0, #0
- beq _080756D0
- ldr r0, _080756C8 @ =0xF7FFFFFF
- ands r1, r0
- ldr r0, _080756CC @ =0xFFFBFFFF
- ands r1, r0
- str r1, [r2, #0x30]
- movs r1, #0x96
- lsls r1, r1, #1
- adds r0, r4, #0
- bl sub_08077DF4
- b _080756E0
- .align 2, 0
-_080756C4: .4byte gPlayerState
-_080756C8: .4byte 0xF7FFFFFF
-_080756CC: .4byte 0xFFFBFFFF
-_080756D0:
- adds r0, r2, #0
- adds r0, #0xab
- strb r3, [r0]
- movs r1, #0x92
- lsls r1, r1, #1
- adds r0, r4, #0
- bl sub_08077DF4
-_080756E0:
- ldr r2, _08075730 @ =gPlayerState
- movs r0, #8
- asrs r0, r5
- ldrb r1, [r2, #0xa]
- orrs r0, r1
- strb r0, [r2, #0xa]
- movs r0, #4
- strb r0, [r4, #4]
- movs r0, #6
- strb r0, [r4, #0xf]
- ldr r0, _08075734 @ =gPlayerEntity
- adds r0, #0x40
- movs r1, #0x1e
- strb r1, [r0]
- ldrb r1, [r2, #0x1b]
- movs r0, #0x40
- orrs r0, r1
- movs r1, #0xdf
- ands r0, r1
- strb r0, [r2, #0x1b]
- adds r3, r2, #0
- adds r3, #0xa0
- ldrb r0, [r3]
- cmp r0, #4
- bne _08075726
- ldr r0, [r2, #0x30]
- movs r1, #0x80
- lsls r1, r1, #0xf
- ands r0, r1
- cmp r0, #0
- bne _08075726
- movs r0, #1
- strb r0, [r3]
- bl sub_0807A108
-_08075726:
- movs r0, #0x76
- bl SoundReq
- pop {r4, r5, pc}
- .align 2, 0
-_08075730: .4byte gPlayerState
-_08075734: .4byte gPlayerEntity
-
- thumb_func_start sub_08075738
-sub_08075738: @ 0x08075738
- push {r4, r5, r6, r7, lr}
- adds r4, r0, #0
- adds r6, r1, #0
- ldr r5, _08075750 @ =gPlayerState
- ldrb r0, [r5, #4]
- cmp r0, #0
- bne _08075754
- adds r0, r4, #0
- bl sub_080759B8
- b _0807588C
- .align 2, 0
-_08075750: .4byte gPlayerState
-_08075754:
- adds r0, r4, #0
- bl UpdateItemAnim
- adds r0, r4, #0
- bl sub_08077F10
- cmp r0, #0
- beq _08075768
- movs r0, #2
- strb r0, [r4, #7]
-_08075768:
- ldrb r2, [r5, #0x1b]
- movs r0, #0x10
- ands r0, r2
- cmp r0, #0
- beq _080757D4
- ldrb r1, [r5, #0xd]
- movs r2, #0x80
- adds r0, r2, #0
- ands r0, r1
- cmp r0, #0
- bne _08075780
- strb r1, [r4, #0xb]
-_08075780:
- ldr r1, _080757D0 @ =gPlayerEntity
- ldrb r0, [r4, #0xb]
- strb r0, [r1, #0x15]
- movs r0, #0xc0
- lsls r0, r0, #1
- strh r0, [r1, #0x24]
- ldrb r1, [r4, #0xe]
- adds r0, r2, #0
- ands r0, r1
- cmp r0, #0
- beq _0807588C
- movs r2, #0xa
- adds r0, r5, #0
- adds r0, #0xac
- ldrh r1, [r0]
- movs r0, #0x80
- lsls r0, r0, #4
- ands r0, r1
- cmp r0, #0
- beq _080757AA
- movs r2, #0xf
-_080757AA:
- ldrb r0, [r4, #8]
- adds r0, #1
- strb r0, [r4, #8]
- movs r1, #0xff
- lsls r0, r0, #0x18
- lsrs r0, r0, #0x18
- cmp r2, r0
- bls _080757C6
- ldrb r0, [r4, #7]
- subs r0, #1
- strb r0, [r4, #7]
- ands r0, r1
- cmp r0, #0
- bne _0807588C
-_080757C6:
- adds r0, r4, #0
- adds r1, r6, #0
- bl sub_080759B8
- b _0807588C
- .align 2, 0
-_080757D0: .4byte gPlayerEntity
-_080757D4:
- ldr r7, _08075890 @ =gPlayerEntity
- adds r0, r7, #0
- adds r0, #0x5b
- ldrb r1, [r0]
- movs r0, #1
- ands r0, r1
- cmp r0, #0
- beq _08075816
- movs r0, #0x80
- ands r0, r2
- cmp r0, #0
- bne _08075816
- adds r0, r5, #0
- adds r0, #0xac
- ldrh r1, [r0]
- movs r0, #0x80
- lsls r0, r0, #1
- ands r0, r1
- cmp r0, #0
- beq _08075816
- adds r0, r4, #0
- movs r1, #0x14
- bl CreatePlayerBomb
- adds r2, r0, #0
- cmp r2, #0
- beq _08075816
- ldrb r0, [r7, #0x14]
- movs r1, #6
- ands r1, r0
- movs r0, #0x80
- orrs r1, r0
- strb r1, [r2, #0x14]
-_08075816:
- ldr r5, _08075890 @ =gPlayerEntity
- adds r0, r5, #0
- adds r0, #0x5b
- ldrb r1, [r0]
- movs r0, #2
- ands r0, r1
- cmp r0, #0
- beq _0807587A
- ldr r2, _08075894 @ =gPlayerState
- ldrb r3, [r2, #0x1b]
- movs r0, #0x80
- ands r0, r3
- cmp r0, #0
- bne _0807587A
- adds r0, r2, #0
- adds r0, #0xac
- ldrh r1, [r0]
- movs r0, #0x20
- ands r0, r1
- cmp r0, #0
- beq _0807587A
- ldrb r0, [r4, #7]
- subs r0, #1
- strb r0, [r4, #7]
- lsls r0, r0, #0x18
- cmp r0, #0
- beq _0807587A
- movs r0, #0x10
- orrs r0, r3
- strb r0, [r2, #0x1b]
- adds r1, r2, #0
- adds r1, #0xab
- movs r0, #6
- strb r0, [r1]
- ldrb r0, [r5, #0x14]
- lsls r0, r0, #2
- strb r0, [r4, #0xb]
- movs r0, #1
- strb r0, [r4, #7]
- strb r0, [r4, #8]
- movs r1, #8
- asrs r1, r6
- ldrb r0, [r2, #0xa]
- bics r0, r1
- strb r0, [r2, #0xa]
- movs r1, #0x94
- lsls r1, r1, #1
- adds r0, r4, #0
- bl sub_08077DF4
-_0807587A:
- ldrb r1, [r4, #0xe]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _0807588C
- adds r0, r4, #0
- adds r1, r6, #0
- bl sub_080759B8
-_0807588C:
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-_08075890: .4byte gPlayerEntity
-_08075894: .4byte gPlayerState
-
- thumb_func_start sub_08075898
-sub_08075898: @ 0x08075898
- push {lr}
- adds r2, r0, #0
- ldr r0, _080758AC @ =gPlayerState
- ldrb r0, [r0, #4]
- cmp r0, #0
- bne _080758AA
- adds r0, r2, #0
- bl sub_080759B8
-_080758AA:
- pop {pc}
- .align 2, 0
-_080758AC: .4byte gPlayerState
-
- thumb_func_start sub_080758B0
-sub_080758B0: @ 0x080758B0
- push {r4, r5, lr}
- adds r4, r0, #0
- ldr r5, _080758C4 @ =gPlayerState
- ldrb r0, [r5, #4]
- cmp r0, #0
- bne _080758C8
- adds r0, r4, #0
- bl sub_080759B8
- b _080758F8
- .align 2, 0
-_080758C4: .4byte gPlayerState
-_080758C8:
- adds r0, r4, #0
- bl UpdateItemAnim
- ldrb r1, [r4, #0xe]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _080758F8
- movs r0, #0
- strb r0, [r4, #0xf]
- ldrb r1, [r5, #0x1b]
- movs r0, #0x20
- ands r0, r1
- cmp r0, #0
- beq _080758EA
- movs r0, #3
- b _080758EC
-_080758EA:
- movs r0, #5
-_080758EC:
- strb r0, [r4, #4]
- ldr r2, _080758FC @ =gPlayerState
- ldrb r1, [r2, #0x1b]
- movs r0, #0xf7
- ands r0, r1
- strb r0, [r2, #0x1b]
-_080758F8:
- pop {r4, r5, pc}
- .align 2, 0
-_080758FC: .4byte gPlayerState
-
- thumb_func_start sub_08075900
-sub_08075900: @ 0x08075900
- push {r4, r5, r6, lr}
- adds r4, r0, #0
- adds r6, r1, #0
- ldr r5, _08075920 @ =gPlayerState
- ldrb r0, [r5, #0x12]
- cmp r0, #0x11
- bne _08075928
- ldr r0, [r5, #0x30]
- ldr r1, _08075924 @ =0xFFFBFFFF
- ands r0, r1
- str r0, [r5, #0x30]
- adds r0, r4, #0
- adds r1, r6, #0
- bl sub_080759B8
- b _080759B2
- .align 2, 0
-_08075920: .4byte gPlayerState
-_08075924: .4byte 0xFFFBFFFF
-_08075928:
- adds r0, r4, #0
- bl UpdateItemAnim
- ldrb r1, [r5, #0x1b]
- movs r2, #0x80
- adds r0, r2, #0
- ands r0, r1
- cmp r0, #0
- beq _08075948
- movs r0, #0xa0
- strb r0, [r5, #0x1b]
- adds r0, r4, #0
- adds r1, r6, #0
- bl sub_0807564C
- b _080759B2
-_08075948:
- ldrb r0, [r4, #7]
- cmp r0, #0
- beq _08075998
- subs r0, #1
- strb r0, [r4, #7]
- lsls r0, r0, #0x18
- cmp r0, #0
- bne _08075962
- movs r1, #0x9a
- lsls r1, r1, #1
- adds r0, r4, #0
- bl sub_08077DF4
-_08075962:
- ldr r4, _08075990 @ =gPlayerEntity
- ldrb r0, [r4, #0x14]
- lsrs r0, r0, #1
- lsls r0, r0, #3
- strb r0, [r4, #0x15]
- movs r0, #0xc0
- lsls r0, r0, #2
- strh r0, [r4, #0x24]
- bl sub_08079E08
- ldr r0, _08075994 @ =gScreenTransition
- ldr r0, [r0]
- movs r1, #3
- ands r0, r1
- cmp r0, #0
- bne _080759B2
- adds r0, r4, #0
- movs r1, #0x11
- movs r2, #0x40
- bl CreateFx
- b _080759B2
- .align 2, 0
-_08075990: .4byte gPlayerEntity
-_08075994: .4byte gScreenTransition
-_08075998:
- ldrb r1, [r4, #0xe]
- adds r0, r2, #0
- ands r0, r1
- cmp r0, #0
- beq _080759B2
- ldr r0, [r5, #0x30]
- ldr r1, _080759B4 @ =0xFFFBFFFF
- ands r0, r1
- str r0, [r5, #0x30]
- adds r0, r4, #0
- adds r1, r6, #0
- bl sub_080759B8
-_080759B2:
- pop {r4, r5, r6, pc}
- .align 2, 0
-_080759B4: .4byte 0xFFFBFFFF
-
- thumb_func_start sub_080759B8
-sub_080759B8: @ 0x080759B8
- push {r4, lr}
- adds r3, r0, #0
- adds r4, r1, #0
- ldr r2, _080759E8 @ =gPlayerState
- ldr r1, [r2, #0x30]
- movs r0, #0x80
- ands r1, r0
- cmp r1, #0
- bne _080759D0
- ldr r0, _080759EC @ =gPlayerEntity
- adds r0, #0x40
- strb r1, [r0]
-_080759D0:
- ldr r0, [r2, #0x30]
- ldr r1, _080759F0 @ =0xF7FFFFFF
- ands r0, r1
- str r0, [r2, #0x30]
- movs r0, #0
- strb r0, [r2, #0x1b]
- str r0, [r2, #0x2c]
- adds r0, r3, #0
- adds r1, r4, #0
- bl sub_08077E78
- pop {r4, pc}
- .align 2, 0
-_080759E8: .4byte gPlayerState
-_080759EC: .4byte gPlayerEntity
-_080759F0: .4byte 0xF7FFFFFF
-
- thumb_func_start ItemLantern
-ItemLantern: @ 0x080759F4
- push {lr}
- ldr r3, _08075A08 @ =gUnk_0811BD68
- ldrb r2, [r0, #4]
- lsls r2, r2, #2
- adds r2, r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- pop {pc}
- .align 2, 0
-_08075A08: .4byte gUnk_0811BD68
-
- thumb_func_start sub_08075A0C
-sub_08075A0C: @ 0x08075A0C
- push {r4, r5, r6, lr}
- adds r4, r0, #0
- adds r5, r1, #0
- ldrb r0, [r4, #1]
- bl IsItemEquipped
- adds r6, r0, #0
- ldr r1, _08075A64 @ =gPlayerState
- ldrb r0, [r1, #5]
- cmp r0, #0
- bne _08075A3E
- ldrb r0, [r1, #0xc]
- cmp r0, #0x18
- beq _08075A3E
- ldrb r0, [r1, #2]
- cmp r0, #0
- bne _08075A3E
- ldr r0, [r1, #0x2c]
- cmp r0, #0
- bne _08075A3E
- ldr r0, [r1, #0x30]
- movs r1, #0x80
- ands r0, r1
- cmp r0, #0
- beq _08075A6C
-_08075A3E:
- movs r0, #0xf
- adds r1, r6, #0
- bl ForceEquipItem
- ldr r0, _08075A64 @ =gPlayerState
- ldr r1, [r0, #0x30]
- ldr r2, _08075A68 @ =0xFF7FFFFF
- ands r1, r2
- str r1, [r0, #0x30]
- movs r0, #0xf
- adds r1, r6, #0
- bl ForceEquipItem
- adds r0, r4, #0
- adds r1, r5, #0
- bl sub_08077E78
- b _08075AD0
- .align 2, 0
-_08075A64: .4byte gPlayerState
-_08075A68: .4byte 0xFF7FFFFF
-_08075A6C:
- ldrb r1, [r4, #9]
- movs r0, #0x80
- orrs r0, r1
- strb r0, [r4, #9]
- adds r0, r4, #0
- adds r1, r5, #0
- bl sub_08077D38
- adds r0, r4, #0
- bl sub_08077BD4
- ldr r5, _08075AD4 @ =gPlayerEntity
- adds r0, r5, #0
- bl sub_0806F948
- movs r0, #0x10
- strb r0, [r4, #1]
- adds r1, r6, #0
- bl ForceEquipItem
- ldrb r1, [r5, #0x14]
- movs r0, #6
- ands r0, r1
- ldr r1, _08075AD8 @ =gUnk_08126EEC
- adds r4, r0, r1
- adds r0, r5, #0
- movs r1, #0x45
- movs r2, #1
- movs r3, #0
- bl CreateObjectWithParent
- adds r2, r0, #0
- cmp r2, #0
- beq _08075AD0
- adds r0, r5, #0
- adds r0, #0x60
- ldrh r1, [r0]
- adds r0, r2, #0
- adds r0, #0x60
- strh r1, [r0]
- movs r0, #0
- ldrsb r0, [r4, r0]
- ldrh r1, [r2, #0x2e]
- adds r0, r0, r1
- strh r0, [r2, #0x2e]
- movs r0, #1
- ldrsb r0, [r4, r0]
- ldrh r1, [r2, #0x32]
- adds r0, r0, r1
- strh r0, [r2, #0x32]
-_08075AD0:
- pop {r4, r5, r6, pc}
- .align 2, 0
-_08075AD4: .4byte gPlayerEntity
-_08075AD8: .4byte gUnk_08126EEC
-
- thumb_func_start sub_08075ADC
-sub_08075ADC: @ 0x08075ADC
- push {r4, r5, lr}
- adds r4, r0, #0
- adds r5, r1, #0
- ldr r2, _08075B44 @ =gPlayerState
- ldr r0, [r2, #0x2c]
- cmp r0, #0
- bne _08075B08
- ldrb r1, [r4, #0xe]
- movs r0, #1
- ands r0, r1
- cmp r0, #0
- beq _08075B08
- ldr r0, [r2, #0x30]
- movs r1, #0x88
- lsls r1, r1, #1
- ands r0, r1
- cmp r0, #0
- bne _08075B08
- bl sub_08079D48
- cmp r0, #0
- bne _08075B4C
-_08075B08:
- movs r0, #0
- strb r0, [r4, #0xf]
- ldrb r0, [r4, #4]
- adds r0, #1
- strb r0, [r4, #4]
- ldr r3, _08075B44 @ =gPlayerState
- ldr r0, [r3, #0x30]
- movs r1, #0x80
- lsls r1, r1, #0x10
- orrs r0, r1
- str r0, [r3, #0x30]
- movs r2, #8
- asrs r2, r5
- lsls r1, r2, #4
- orrs r1, r2
- ldrb r0, [r3, #4]
- bics r0, r1
- strb r0, [r3, #4]
- mvns r2, r2
- ldrb r1, [r3, #0xa]
- adds r0, r2, #0
- ands r0, r1
- strb r0, [r3, #0xa]
- ldrb r0, [r3, #0xb]
- ands r2, r0
- strb r2, [r3, #0xb]
- ldr r0, _08075B48 @ =0x0000013D
- bl SoundReq
- b _08075B52
- .align 2, 0
-_08075B44: .4byte gPlayerState
-_08075B48: .4byte 0x0000013D
-_08075B4C:
- adds r0, r4, #0
- bl UpdateItemAnim
-_08075B52:
- pop {r4, r5, pc}
-
- thumb_func_start sub_08075B54
-sub_08075B54: @ 0x08075B54
- push {r4, r5, r6, r7, lr}
- mov r7, sb
- mov r6, r8
- push {r6, r7}
- adds r6, r0, #0
- mov sb, r1
- ldr r5, _08075BB0 @ =gPlayerState
- ldr r0, [r5, #0x30]
- movs r1, #0x88
- lsls r1, r1, #1
- ands r0, r1
- cmp r0, #0
- beq _08075B70
- b _08075C80
-_08075B70:
- ldrb r0, [r6, #1]
- bl IsItemEquipped
- adds r4, r0, #0
- adds r0, r6, #0
- bl sub_08077F10
- cmp r0, #0
- bne _08075B86
- cmp r4, #1
- bls _08075BB8
-_08075B86:
- ldrb r0, [r5, #2]
- cmp r0, #0
- bne _08075BB8
- movs r0, #0xf
- adds r1, r4, #0
- bl ForceEquipItem
- ldr r0, [r5, #0x30]
- ldr r1, _08075BB4 @ =0xFF7FFFFF
- ands r0, r1
- str r0, [r5, #0x30]
- adds r0, r6, #0
- mov r1, sb
- bl sub_08077E78
- movs r0, #0x9f
- lsls r0, r0, #1
- bl SoundReq
- b _08075C80
- .align 2, 0
-_08075BB0: .4byte gPlayerState
-_08075BB4: .4byte 0xFF7FFFFF
-_08075BB8:
- ldr r0, _08075C88 @ =gPlayerState
- mov r8, r0
- ldrb r0, [r0, #0xc]
- cmp r0, #0x18
- beq _08075C80
- ldr r5, _08075C8C @ =gPlayerEntity
- ldrb r0, [r5, #0x1e]
- cmp r0, #0x36
- bhi _08075C80
- ldrh r1, [r5, #0x12]
- cmp r1, #6
- bne _08075C80
- ldrb r0, [r5, #0x14]
- ands r1, r0
- ldr r0, _08075C90 @ =gUnk_08126EEC
- adds r7, r1, r0
- mov r1, r8
- ldrb r0, [r1, #2]
- cmp r0, #0
- bne _08075C80
- movs r2, #0x2e
- ldrsh r0, [r5, r2]
- movs r1, #0
- ldrsb r1, [r7, r1]
- adds r0, r0, r1
- ldr r4, _08075C94 @ =gRoomControls
- ldrh r1, [r4, #6]
- subs r0, r0, r1
- asrs r0, r0, #4
- movs r3, #0x3f
- ands r0, r3
- movs r2, #0x32
- ldrsh r1, [r5, r2]
- movs r2, #1
- ldrsb r2, [r7, r2]
- adds r1, r1, r2
- ldrh r2, [r4, #8]
- subs r1, r1, r2
- asrs r1, r1, #4
- ands r1, r3
- lsls r1, r1, #6
- orrs r0, r1
- adds r1, r5, #0
- adds r1, #0x38
- ldrb r1, [r1]
- movs r2, #0x40
- bl sub_080002F0
- cmp r0, #0
- beq _08075C80
- movs r0, #0xf
- strb r0, [r6, #0xf]
- ldrb r0, [r6, #4]
- adds r0, #1
- strb r0, [r6, #4]
- adds r1, r5, #0
- adds r1, #0x7a
- movs r0, #2
- strh r0, [r1]
- adds r0, r5, #0
- movs r1, #0x45
- movs r2, #1
- movs r3, #0
- bl CreateObjectWithParent
- adds r2, r0, #0
- cmp r2, #0
- beq _08075C60
- adds r0, r5, #0
- adds r0, #0x60
- ldrh r1, [r0]
- adds r0, r2, #0
- adds r0, #0x60
- strh r1, [r0]
- movs r0, #0
- ldrsb r0, [r7, r0]
- ldrh r1, [r2, #0x2e]
- adds r0, r0, r1
- strh r0, [r2, #0x2e]
- movs r0, #1
- ldrsb r0, [r7, r0]
- ldrh r1, [r2, #0x32]
- adds r0, r0, r1
- strh r0, [r2, #0x32]
-_08075C60:
- ldr r1, _08075C98 @ =0x0000060C
- adds r0, r6, #0
- bl sub_08077DF4
- movs r1, #8
- mov r2, sb
- asrs r1, r2
- mov r0, r8
- ldrb r2, [r0, #0xa]
- adds r0, r1, #0
- orrs r0, r2
- mov r2, r8
- strb r0, [r2, #0xa]
- ldrb r0, [r2, #0xb]
- orrs r1, r0
- strb r1, [r2, #0xb]
-_08075C80:
- pop {r3, r4}
- mov r8, r3
- mov sb, r4
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-_08075C88: .4byte gPlayerState
-_08075C8C: .4byte gPlayerEntity
-_08075C90: .4byte gUnk_08126EEC
-_08075C94: .4byte gRoomControls
-_08075C98: .4byte 0x0000060C
-
- thumb_func_start sub_08075C9C
-sub_08075C9C: @ 0x08075C9C
- push {r4, r5, lr}
- adds r4, r0, #0
- adds r5, r1, #0
- bl UpdateItemAnim
- ldrb r1, [r4, #0xe]
- movs r0, #0x10
- ands r0, r1
- cmp r0, #0
- beq _08075CCA
- ldr r0, _08075CF8 @ =gPlayerEntity
- ldrb r1, [r0, #0x14]
- movs r2, #6
- ands r2, r1
- ldr r1, _08075CFC @ =gUnk_08126EEC
- adds r2, r2, r1
- movs r1, #0
- ldrsb r1, [r2, r1]
- ldrb r2, [r2, #1]
- lsls r2, r2, #0x18
- asrs r2, r2, #0x18
- bl sub_0807AB44
-_08075CCA:
- ldrb r1, [r4, #0xe]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _08075D04
- movs r0, #0
- strb r0, [r4, #0xf]
- ldrb r0, [r4, #4]
- subs r0, #1
- strb r0, [r4, #4]
- ldr r2, _08075D00 @ =gPlayerState
- movs r1, #8
- asrs r1, r5
- mvns r1, r1
- ldrb r3, [r2, #0xa]
- adds r0, r1, #0
- ands r0, r3
- strb r0, [r2, #0xa]
- ldrb r0, [r2, #0xb]
- ands r1, r0
- strb r1, [r2, #0xb]
- b _08075D0E
- .align 2, 0
-_08075CF8: .4byte gPlayerEntity
-_08075CFC: .4byte gUnk_08126EEC
-_08075D00: .4byte gPlayerState
-_08075D04:
- ldr r1, _08075D10 @ =gPlayerEntity
- adds r1, #0x7a
- ldrh r0, [r1]
- adds r0, #1
- strh r0, [r1]
-_08075D0E:
- pop {r4, r5, pc}
- .align 2, 0
-_08075D10: .4byte gPlayerEntity
-
- thumb_func_start ItemBoomerang
-ItemBoomerang: @ 0x08075D14
- push {lr}
- ldr r3, _08075D28 @ =gUnk_0811BD78
- ldrb r2, [r0, #4]
- lsls r2, r2, #2
- adds r2, r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- pop {pc}
- .align 2, 0
-_08075D28: .4byte gUnk_0811BD78
-
- thumb_func_start sub_08075D2C
-sub_08075D2C: @ 0x08075D2C
- push {r4, r5, r6, lr}
- adds r4, r0, #0
- adds r6, r1, #0
- ldr r5, _08075D74 @ =gPlayerState
- ldrb r1, [r5, #4]
- movs r0, #8
- ands r0, r1
- cmp r0, #0
- bne _08075D7C
- ldrb r1, [r4, #1]
- adds r0, r4, #0
- bl sub_08077C94
- cmp r0, #0
- bne _08075D7C
- ldrb r1, [r4, #9]
- movs r0, #0xf
- orrs r0, r1
- strb r0, [r4, #9]
- ldr r0, _08075D78 @ =gPlayerEntity
- bl sub_0806F948
- adds r0, r4, #0
- movs r1, #0xb
- bl sub_08077C0C
- adds r0, r4, #0
- adds r1, r6, #0
- bl sub_08077D38
- ldrb r1, [r5, #4]
- movs r0, #8
- orrs r0, r1
- strb r0, [r5, #4]
- b _08075D84
- .align 2, 0
-_08075D74: .4byte gPlayerState
-_08075D78: .4byte gPlayerEntity
-_08075D7C:
- adds r0, r4, #0
- adds r1, r6, #0
- bl sub_08077E78
-_08075D84:
- pop {r4, r5, r6, pc}
- .align 2, 0
-
- thumb_func_start sub_08075D88
-sub_08075D88: @ 0x08075D88
- push {r4, r5, lr}
- adds r4, r0, #0
- adds r5, r1, #0
- ldr r2, _08075DBC @ =gPlayerState
- ldrb r1, [r2, #4]
- movs r3, #0x80
- adds r0, r3, #0
- ands r0, r1
- cmp r0, #0
- bne _08075DD0
- ldrb r0, [r4, #1]
- cmp r0, #0xc
- bne _08075DC0
- ldrb r1, [r2, #0xa]
- adds r0, r3, #0
- ands r0, r1
- cmp r0, #0
- beq _08075DC0
- ldrb r1, [r4, #0xe]
- movs r0, #2
- ands r0, r1
- cmp r0, #0
- beq _08075DC0
- bl sub_08078F60
- b _08075DD8
- .align 2, 0
-_08075DBC: .4byte gPlayerState
-_08075DC0:
- adds r0, r4, #0
- bl UpdateItemAnim
- ldrb r1, [r4, #0xe]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _08075DD8
-_08075DD0:
- adds r0, r4, #0
- adds r1, r5, #0
- bl sub_08077E78
-_08075DD8:
- pop {r4, r5, pc}
- .align 2, 0
-
- thumb_func_start ItemBow
-ItemBow: @ 0x08075DDC
- push {lr}
- ldr r3, _08075DF0 @ =gUnk_0811BD80
- ldrb r2, [r0, #4]
- lsls r2, r2, #2
- adds r2, r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- pop {pc}
- .align 2, 0
-_08075DF0: .4byte gUnk_0811BD80
-
- thumb_func_start sub_08075DF4
-sub_08075DF4: @ 0x08075DF4
- push {r4, r5, r6, lr}
- adds r4, r0, #0
- adds r5, r1, #0
- ldr r6, _08075E2C @ =gPlayerState
- ldrb r1, [r6, #4]
- movs r0, #8
- ands r0, r1
- cmp r0, #0
- bne _08075E34
- ldrb r1, [r4, #9]
- movs r0, #0x80
- orrs r0, r1
- strb r0, [r4, #9]
- ldr r0, _08075E30 @ =gPlayerEntity
- bl sub_0806F948
- adds r0, r4, #0
- bl sub_08077BB8
- adds r0, r4, #0
- adds r1, r5, #0
- bl sub_08077D38
- adds r1, r6, #0
- adds r1, #0x21
- movs r0, #1
- strb r0, [r1]
- b _08075E3C
- .align 2, 0
-_08075E2C: .4byte gPlayerState
-_08075E30: .4byte gPlayerEntity
-_08075E34:
- adds r0, r4, #0
- adds r1, r5, #0
- bl sub_08077E78
-_08075E3C:
- pop {r4, r5, r6, pc}
- .align 2, 0
-
- thumb_func_start sub_08075E40
-sub_08075E40: @ 0x08075E40
- push {r4, r5, r6, r7, lr}
- mov r7, r8
- push {r7}
- adds r4, r0, #0
- mov r8, r1
- ldr r0, _08075EA0 @ =gPlayerState
- adds r1, r0, #0
- adds r1, #0x21
- ldrb r1, [r1]
- adds r6, r0, #0
- cmp r1, #0
- beq _08075EA8
- ldrb r1, [r6, #4]
- movs r5, #0x80
- adds r0, r5, #0
- ands r0, r1
- lsls r0, r0, #0x18
- lsrs r7, r0, #0x18
- cmp r7, #0
- bne _08075EA8
- adds r0, r4, #0
- bl UpdateItemAnim
- ldrb r1, [r4, #0xe]
- adds r0, r5, #0
- ands r0, r1
- cmp r0, #0
- beq _08075EB8
- movs r0, #2
- strb r0, [r4, #4]
- ldrb r1, [r4, #9]
- movs r0, #0x7f
- ands r0, r1
- strb r0, [r4, #9]
- ldr r0, _08075EA4 @ =gSave
- adds r0, #0xad
- ldrb r0, [r0]
- cmp r0, #0
- beq _08075EB8
- strb r7, [r4, #0xf]
- movs r1, #8
- mov r0, r8
- asrs r1, r0
- ldrb r0, [r6, #0xa]
- bics r0, r1
- strb r0, [r6, #0xa]
- b _08075EB8
- .align 2, 0
-_08075EA0: .4byte gPlayerState
-_08075EA4: .4byte gSave
-_08075EA8:
- adds r1, r6, #0
- adds r1, #0x21
- movs r0, #0
- strb r0, [r1]
- adds r0, r4, #0
- mov r1, r8
- bl sub_08077E78
-_08075EB8:
- pop {r3}
- mov r8, r3
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-
- thumb_func_start sub_08075EC0
-sub_08075EC0: @ 0x08075EC0
- push {r4, r5, r6, lr}
- adds r4, r0, #0
- adds r6, r1, #0
- ldr r0, _08075F04 @ =gSave
- adds r0, #0xad
- ldrb r5, [r0]
- adds r0, r4, #0
- bl sub_08077EFC
- cmp r0, #0
- beq _08075F0C
- cmp r5, #0
- beq _08075F0C
- ldr r2, _08075F08 @ =gPlayerState
- ldrb r1, [r2, #4]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- bne _08075EF0
- adds r0, r2, #0
- adds r0, #0x21
- ldrb r0, [r0]
- cmp r0, #0
- bne _08075F32
-_08075EF0:
- adds r1, r2, #0
- adds r1, #0x21
- movs r0, #0
- strb r0, [r1]
- adds r0, r4, #0
- adds r1, r6, #0
- bl sub_08077E78
- b _08075F32
- .align 2, 0
-_08075F04: .4byte gSave
-_08075F08: .4byte gPlayerState
-_08075F0C:
- ldr r2, _08075F34 @ =gPlayerState
- movs r0, #8
- asrs r0, r6
- ldrb r1, [r2, #0xa]
- orrs r0, r1
- strb r0, [r2, #0xa]
- movs r1, #0x9f
- lsls r1, r1, #2
- adds r0, r4, #0
- bl sub_08077DF4
- movs r1, #0xf
- movs r0, #0xf
- strb r0, [r4, #0xf]
- ldrb r0, [r4, #9]
- orrs r1, r0
- strb r1, [r4, #9]
- movs r0, #3
- strb r0, [r4, #4]
-_08075F32:
- pop {r4, r5, r6, pc}
- .align 2, 0
-_08075F34: .4byte gPlayerState
-
- thumb_func_start sub_08075F38
-sub_08075F38: @ 0x08075F38
- push {r4, lr}
- adds r4, r0, #0
- adds r3, r1, #0
- ldr r2, _08075F6C @ =gPlayerState
- ldrb r1, [r2, #4]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- bne _08075F70
- adds r0, r2, #0
- adds r0, #0x21
- ldrb r0, [r0]
- cmp r0, #0
- beq _08075F70
- adds r0, r4, #0
- bl UpdateItemAnim
- ldrb r1, [r4, #0xe]
- movs r0, #1
- ands r0, r1
- cmp r0, #0
- beq _08075F80
- movs r0, #4
- strb r0, [r4, #4]
- b _08075F80
- .align 2, 0
-_08075F6C: .4byte gPlayerState
-_08075F70:
- adds r1, r2, #0
- adds r1, #0x21
- movs r0, #0
- strb r0, [r1]
- adds r0, r4, #0
- adds r1, r3, #0
- bl sub_08077E78
-_08075F80:
- pop {r4, pc}
- .align 2, 0
-
- thumb_func_start sub_08075F84
-sub_08075F84: @ 0x08075F84
- push {r4, r5, lr}
- adds r4, r0, #0
- adds r5, r1, #0
- ldr r2, _08075FB4 @ =gPlayerState
- ldrb r1, [r2, #4]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- bne _08075FC8
- adds r0, r2, #0
- adds r0, #0x21
- ldrb r0, [r0]
- cmp r0, #0
- beq _08075FC8
- movs r0, #0x70
- bl GetInventoryValue
- cmp r0, #1
- bne _08075FB8
- adds r0, r4, #0
- movs r1, #5
- bl sub_08077E3C
- b _08075FBE
- .align 2, 0
-_08075FB4: .4byte gPlayerState
-_08075FB8:
- adds r0, r4, #0
- bl UpdateItemAnim
-_08075FBE:
- ldrb r1, [r4, #0xe]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _08075FD8
-_08075FC8:
- ldr r0, _08075FDC @ =gPlayerState
- adds r0, #0x21
- movs r1, #0
- strb r1, [r0]
- adds r0, r4, #0
- adds r1, r5, #0
- bl sub_08077E78
-_08075FD8:
- pop {r4, r5, pc}
- .align 2, 0
-_08075FDC: .4byte gPlayerState
-
- thumb_func_start ItemBomb
-ItemBomb: @ 0x08075FE0
- push {lr}
- ldr r3, _08075FF4 @ =gUnk_0811BD98
- ldrb r2, [r0, #4]
- lsls r2, r2, #2
- adds r2, r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- pop {pc}
- .align 2, 0
-_08075FF4: .4byte gUnk_0811BD98
-
- thumb_func_start sub_08075FF8
-sub_08075FF8: @ 0x08075FF8
- push {r4, r5, r6, r7, lr}
- adds r6, r0, #0
- adds r7, r1, #0
- ldr r0, _08076018 @ =gPlayerState
- ldrb r1, [r0, #2]
- ldrb r0, [r0, #4]
- orrs r0, r1
- cmp r0, #0
- bne _08076076
- movs r5, #0
- movs r0, #8
- movs r1, #2
- movs r2, #2
- bl FindEntityByID
- b _08076026
- .align 2, 0
-_08076018: .4byte gPlayerState
-_0807601C:
- adds r5, #1
- adds r0, r4, #0
- movs r1, #2
- bl FindNextDuplicateID
-_08076026:
- adds r4, r0, #0
- cmp r4, #0
- bne _0807601C
- ldrb r0, [r6, #1]
- movs r1, #1
- cmp r0, #7
- bne _08076036
- movs r1, #3
-_08076036:
- cmp r1, r5
- bls _08076076
- adds r0, r6, #0
- movs r1, #2
- bl CreatePlayerBomb
- adds r4, r0, #0
- cmp r4, #0
- beq _08076076
- ldr r0, _08076080 @ =gPlayerEntity
- ldrb r2, [r0, #0x14]
- movs r1, #6
- ands r1, r2
- ldr r2, _08076084 @ =gUnk_0811BDAC
- adds r1, r1, r2
- movs r2, #0
- ldrsb r2, [r1, r2]
- lsls r2, r2, #0x10
- movs r3, #1
- ldrsb r3, [r1, r3]
- lsls r3, r3, #0x10
- adds r1, r4, #0
- bl PositionRelative
- movs r0, #1
- rsbs r0, r0, #0
- bl ModBombs
- movs r0, #0x82
- lsls r0, r0, #1
- bl SoundReq
-_08076076:
- adds r0, r6, #0
- adds r1, r7, #0
- bl sub_08077E78
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-_08076080: .4byte gPlayerEntity
-_08076084: .4byte gUnk_0811BDAC
-
- thumb_func_start sub_08076088
-sub_08076088: @ 0x08076088
- push {r4, r5, r6, r7, lr}
- mov r7, r8
- push {r7}
- adds r4, r0, #0
- adds r3, r1, #0
- adds r5, r2, #0
- cmp r3, #0
- beq _080760AA
- ldrb r0, [r3, #0x16]
- movs r1, #1
- ands r1, r0
- cmp r1, #0
- beq _080760A4
- b _080761A0
-_080760A4:
- movs r0, #2
- strb r0, [r3, #0xc]
- strb r1, [r3, #0xd]
-_080760AA:
- str r3, [r4, #0x18]
- ldr r0, _080760C4 @ =gPlayerState
- ldr r0, [r0, #0x30]
- movs r1, #8
- ands r0, r1
- cmp r0, #0
- beq _080760CC
- ldr r1, _080760C8 @ =0x00000928
- adds r0, r4, #0
- bl sub_08077DF4
- b _080760D6
- .align 2, 0
-_080760C4: .4byte gPlayerState
-_080760C8: .4byte 0x00000928
-_080760CC:
- movs r1, #0xce
- lsls r1, r1, #2
- adds r0, r4, #0
- bl sub_08077DF4
-_080760D6:
- ldr r3, _08076130 @ =gPlayerState
- movs r0, #0
- mov r8, r0
- movs r7, #3
- strb r7, [r3, #5]
- adds r0, r3, #0
- adds r0, #0xa8
- movs r6, #4
- strb r6, [r0]
- movs r0, #2
- strb r0, [r4, #4]
- movs r0, #0xf
- strb r0, [r4, #0xf]
- ldr r2, _08076134 @ =gPlayerEntity
- movs r1, #0x79
- adds r1, r1, r2
- mov ip, r1
- ldrb r1, [r1]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _08076138
- mov r1, r8
- mov r0, ip
- strb r1, [r0]
- ldrb r0, [r2, #0x10]
- movs r1, #0x80
- orrs r0, r1
- strb r0, [r2, #0x10]
- strb r6, [r3, #5]
- movs r1, #8
- asrs r1, r5
- mvns r1, r1
- ldrb r2, [r3, #0xb]
- adds r0, r1, #0
- ands r0, r2
- strb r0, [r3, #0xb]
- ldrb r0, [r3, #0xa]
- ands r1, r0
- strb r1, [r3, #0xa]
- strb r7, [r4, #4]
- mov r0, r8
- strb r0, [r4, #0xf]
- b _0807614A
- .align 2, 0
-_08076130: .4byte gPlayerState
-_08076134: .4byte gPlayerEntity
-_08076138:
- movs r1, #8
- asrs r1, r5
- ldrb r2, [r3, #0xa]
- adds r0, r1, #0
- orrs r0, r2
- strb r0, [r3, #0xa]
- ldrb r0, [r3, #0xb]
- orrs r1, r0
- strb r1, [r3, #0xb]
-_0807614A:
- adds r0, r4, #0
- movs r1, #0x13
- bl CreatePlayerBomb
- adds r3, r0, #0
- cmp r3, #0
- bne _08076162
- adds r0, r4, #0
- adds r1, r5, #0
- bl sub_08077F50
- b _080761A0
-_08076162:
- ldr r1, _08076194 @ =gPlayerEntity
- str r3, [r1, #0x74]
- movs r2, #0
- strb r2, [r1, #0xf]
- ldr r0, [r4, #0x18]
- str r0, [r3, #0x54]
- ldrb r0, [r1, #0x16]
- strb r0, [r3, #0x16]
- str r4, [r3, #0x50]
- str r3, [r4, #0x18]
- ldrb r0, [r4, #3]
- strb r0, [r3, #0xb]
- ldrb r0, [r4, #7]
- strb r0, [r3, #0xe]
- ldrb r0, [r4, #8]
- strb r0, [r3, #0xf]
- ldr r0, [r4, #0x18]
- ldrb r1, [r0, #0x16]
- movs r0, #0xf0
- ands r0, r1
- cmp r0, #0x10
- bne _08076198
- movs r0, #8
- strb r0, [r4, #7]
- b _0807619A
- .align 2, 0
-_08076194: .4byte gPlayerEntity
-_08076198:
- strb r2, [r4, #7]
-_0807619A:
- movs r0, #0x7f
- bl SoundReq
-_080761A0:
- pop {r3}
- mov r8, r3
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-
- thumb_func_start ItemTryPickupObject
-ItemTryPickupObject: @ 0x080761A8
- push {lr}
- ldr r3, _080761BC @ =gUnk_0811BDB4
- ldrb r2, [r0, #4]
- lsls r2, r2, #2
- adds r2, r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- pop {pc}
- .align 2, 0
-_080761BC: .4byte gUnk_0811BDB4
-
- thumb_func_start sub_080761C0
-sub_080761C0: @ 0x080761C0
- push {r4, r5, r6, lr}
- adds r4, r0, #0
- adds r6, r1, #0
- ldr r5, _08076220 @ =gPlayerState
- ldrb r0, [r5, #4]
- cmp r0, #0
- bne _080762B8
- ldrb r0, [r5, #2]
- cmp r0, #0
- beq _080761DE
- ldr r0, [r5, #0x30]
- ldr r1, _08076224 @ =0x00001201
- ands r0, r1
- cmp r0, #0
- beq _080762B8
-_080761DE:
- ldr r1, _08076228 @ =gPlayerEntity
- ldrb r2, [r1, #0x14]
- movs r0, #0x80
- orrs r0, r2
- strb r0, [r5, #1]
- adds r1, #0x3d
- movs r0, #0
- ldrsb r0, [r1, r0]
- cmp r0, #8
- bgt _080762B8
- bl sub_080789A8
- adds r3, r0, #0
- cmp r3, #1
- beq _08076258
- cmp r3, #1
- blo _0807626E
- cmp r3, #2
- bne _080762C0
- ldr r0, _0807622C @ =gUnk_03003BE0
- ldr r2, [r0, #8]
- ldrb r1, [r2, #0x16]
- movs r0, #0xf
- ands r0, r1
- cmp r0, #0
- bne _08076230
- adds r0, r4, #0
- adds r1, r2, #0
- adds r2, r6, #0
- bl sub_08076088
- b _080762C0
- .align 2, 0
-_08076220: .4byte gPlayerState
-_08076224: .4byte 0x00001201
-_08076228: .4byte gPlayerEntity
-_0807622C: .4byte gUnk_03003BE0
-_08076230:
- str r2, [r4, #0x18]
- strb r3, [r2, #0xc]
- movs r1, #5
- strb r1, [r2, #0xd]
- adds r0, r5, #0
- adds r0, #0xa8
- strb r1, [r0]
- adds r0, r4, #0
- adds r1, r2, #0
- movs r2, #2
- adds r3, r6, #0
- bl sub_080762C4
- ldr r0, _08076254 @ =gUnk_0200AF00
- adds r0, #0x2e
- movs r1, #8
- strb r1, [r0]
- b _08076264
- .align 2, 0
-_08076254: .4byte gUnk_0200AF00
-_08076258:
- adds r0, r4, #0
- movs r1, #0
- movs r2, #1
- adds r3, r6, #0
- bl sub_080762C4
-_08076264:
- movs r0, #0x81
- lsls r0, r0, #1
- bl SoundReq
- b _080762C0
-_0807626E:
- movs r0, #5
- strb r0, [r4, #4]
- movs r0, #0xf
- strb r0, [r4, #7]
- movs r0, #6
- strb r0, [r4, #0xf]
- movs r3, #8
- adds r1, r3, #0
- asrs r1, r6
- ldrb r2, [r5, #0xa]
- adds r0, r1, #0
- orrs r0, r2
- strb r0, [r5, #0xa]
- ldrb r0, [r5, #0xb]
- orrs r1, r0
- strb r1, [r5, #0xb]
- ldr r0, [r5, #0x30]
- ands r0, r3
- cmp r0, #0
- bne _080762A2
- movs r1, #0xde
- lsls r1, r1, #2
- adds r0, r4, #0
- bl sub_08077DF4
- b _080762AA
-_080762A2:
- ldr r1, _080762B4 @ =0x00000948
- adds r0, r4, #0
- bl sub_08077DF4
-_080762AA:
- movs r0, #0x88
- bl SoundReq
- b _080762C0
- .align 2, 0
-_080762B4: .4byte 0x00000948
-_080762B8:
- adds r0, r4, #0
- adds r1, r6, #0
- bl sub_08077F50
-_080762C0:
- pop {r4, r5, r6, pc}
- .align 2, 0
-
- thumb_func_start sub_080762C4
-sub_080762C4: @ 0x080762C4
- push {lr}
- str r1, [r0, #0x18]
- ldr r1, _080762D4 @ =gPlayerState
- strb r2, [r1, #5]
- adds r1, r3, #0
- bl sub_08077D38
- pop {pc}
- .align 2, 0
-_080762D4: .4byte gPlayerState
-
- thumb_func_start sub_080762D8
-sub_080762D8: @ 0x080762D8
- push {r4, r5, r6, r7, lr}
- adds r5, r0, #0
- adds r6, r1, #0
- ldr r4, _08076334 @ =gPlayerState
- ldrb r0, [r4, #5]
- movs r1, #0xcf
- ands r1, r0
- strb r1, [r4, #5]
- adds r0, r5, #0
- adds r1, r6, #0
- bl sub_08077F64
- cmp r0, #0
- bne _080762F6
- b _08076486
-_080762F6:
- ldr r0, _08076338 @ =gPlayerEntity
- adds r1, r0, #0
- adds r1, #0x3d
- ldrb r1, [r1]
- lsls r1, r1, #0x18
- asrs r1, r1, #0x18
- adds r3, r0, #0
- cmp r1, #8
- bgt _0807636C
- adds r0, #0x42
- ldrb r0, [r0]
- cmp r0, #0
- bne _0807636C
- ldr r2, [r5, #0x18]
- cmp r2, #0
- beq _08076340
- ldrh r1, [r2, #0xc]
- ldr r0, _0807633C @ =0x00000502
- cmp r1, r0
- bne _08076376
- adds r0, r4, #0
- adds r0, #0x90
- ldrh r1, [r0]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- bne _08076340
- movs r0, #6
- strb r0, [r2, #0xd]
- b _08076376
- .align 2, 0
-_08076334: .4byte gPlayerState
-_08076338: .4byte gPlayerEntity
-_0807633C: .4byte 0x00000502
-_08076340:
- ldr r2, _08076364 @ =gPlayerState
- adds r1, r2, #0
- adds r1, #0xa8
- movs r0, #5
- strb r0, [r1]
- ldr r0, _08076368 @ =gUnk_0200AF00
- adds r0, #0x2e
- movs r1, #8
- strb r1, [r0]
- ldrb r0, [r2, #2]
- cmp r0, #0
- beq _0807635A
- b _0807647E
-_0807635A:
- ldrb r0, [r2, #5]
- cmp r0, #1
- bne _08076394
- b _08076380
- .align 2, 0
-_08076364: .4byte gPlayerState
-_08076368: .4byte gUnk_0200AF00
-_0807636C:
- ldr r1, [r5, #0x18]
- cmp r1, #0
- beq _08076376
- movs r0, #6
- strb r0, [r1, #0xd]
-_08076376:
- adds r0, r5, #0
- adds r1, r6, #0
- bl sub_08077F50
- b _08076486
-_08076380:
- adds r0, r3, #0
- movs r1, #6
- adds r2, r5, #0
- bl sub_0800875A
- cmp r0, #0
- beq _08076394
- adds r0, r5, #0
- movs r1, #0
- b _080763EC
-_08076394:
- ldr r1, _080763F4 @ =gUnk_0811BE38
- ldr r7, _080763F8 @ =gPlayerEntity
- ldrb r0, [r7, #0x14]
- lsrs r0, r0, #1
- lsls r3, r0, #1
- adds r1, r3, r1
- ldr r4, _080763FC @ =gPlayerState
- adds r2, r4, #0
- adds r2, #0x90
- ldrh r0, [r1]
- ldrh r2, [r2]
- ands r0, r2
- cmp r0, #0
- beq _08076400
- adds r0, r5, #0
- bl UpdateItemAnim
- ldr r0, [r4, #0x30]
- movs r1, #8
- ands r0, r1
- movs r1, #0x94
- lsls r1, r1, #4
- cmp r0, #0
- bne _080763C8
- movs r1, #0xd0
- lsls r1, r1, #2
-_080763C8:
- ldrh r0, [r5, #0x10]
- cmp r1, r0
- beq _080763D4
- adds r0, r5, #0
- bl sub_08077DF4
-_080763D4:
- ldrb r0, [r4, #5]
- movs r1, #0x10
- orrs r1, r0
- strb r1, [r4, #5]
- adds r2, r4, #0
- adds r2, #0xa8
- movs r0, #0x1a
- strb r0, [r2]
- cmp r1, #1
- beq _08076486
- ldr r1, [r5, #0x18]
- adds r0, r5, #0
-_080763EC:
- adds r2, r6, #0
- bl sub_08076088
- b _08076486
- .align 2, 0
-_080763F4: .4byte gUnk_0811BE38
-_080763F8: .4byte gPlayerEntity
-_080763FC: .4byte gPlayerState
-_08076400:
- ldr r0, _08076418 @ =gUnk_0811BE40
- adds r0, r3, r0
- ldrh r0, [r0]
- ands r0, r2
- cmp r0, #0
- beq _08076460
- ldrb r0, [r7, #0xf]
- cmp r0, #5
- bhi _0807641C
- adds r0, #1
- strb r0, [r7, #0xf]
- b _08076486
- .align 2, 0
-_08076418: .4byte gUnk_0811BE40
-_0807641C:
- ldrb r0, [r5, #0xa]
- adds r1, r4, #0
- adds r1, #0x35
- strb r0, [r1]
- ldrb r0, [r4, #6]
- movs r1, #0x80
- orrs r0, r1
- strb r0, [r4, #6]
- ldrb r1, [r4, #5]
- movs r0, #0x20
- orrs r0, r1
- strb r0, [r4, #5]
- adds r1, r4, #0
- adds r1, #0xa8
- movs r0, #0x19
- strb r0, [r1]
- ldr r0, [r4, #0x30]
- movs r1, #8
- ands r0, r1
- ldr r1, _0807645C @ =0x0000093C
- cmp r0, #0
- bne _0807644C
- movs r1, #0xcf
- lsls r1, r1, #2
-_0807644C:
- ldrh r0, [r5, #0x10]
- cmp r1, r0
- bne _08076476
- adds r0, r5, #0
- bl UpdateItemAnim
- b _08076486
- .align 2, 0
-_0807645C: .4byte 0x0000093C
-_08076460:
- strb r0, [r7, #0xf]
- ldr r0, [r4, #0x30]
- movs r1, #8
- ands r0, r1
- cmp r0, #0
- bne _08076472
- movs r1, #0xd0
- lsls r1, r1, #2
- b _08076476
-_08076472:
- movs r1, #0x94
- lsls r1, r1, #4
-_08076476:
- adds r0, r5, #0
- bl sub_08077DF4
- b _08076486
-_0807647E:
- adds r0, r5, #0
- adds r1, r6, #0
- bl sub_08077F50
-_08076486:
- pop {r4, r5, r6, r7, pc}
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
- thumb_func_start sub_08076488
-sub_08076488: @ 0x08076488
- push {r4, r5, r6, lr}
- adds r4, r0, #0
- adds r5, r1, #0
- ldrb r0, [r4, #7]
- adds r6, r0, #0
- cmp r6, #0
- bne _08076504
- adds r0, r4, #0
- bl sub_08077F64
- cmp r0, #0
- beq _08076508
- ldr r0, [r4, #0x18]
- ldrb r1, [r0, #0x16]
- movs r0, #0xf0
- ands r0, r1
- cmp r0, #0x10
- bne _080764B8
- ldr r0, _080764F8 @ =gScreenTransition
- ldr r0, [r0]
- movs r1, #1
- ands r0, r1
- cmp r0, #0
- bne _08076510
-_080764B8:
- adds r0, r4, #0
- bl UpdateItemAnim
- ldrb r1, [r4, #0xe]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _08076508
- ldr r2, _080764FC @ =gPlayerEntity
- ldrb r1, [r2, #0x10]
- movs r0, #0x80
- orrs r0, r1
- strb r0, [r2, #0x10]
- ldr r2, _08076500 @ =gPlayerState
- movs r0, #4
- strb r0, [r2, #5]
- movs r1, #8
- asrs r1, r5
- mvns r1, r1
- ldrb r3, [r2, #0xb]
- adds r0, r1, #0
- ands r0, r3
- strb r0, [r2, #0xb]
- ldrb r0, [r2, #0xa]
- ands r1, r0
- strb r1, [r2, #0xa]
- ldrb r0, [r4, #4]
- adds r0, #1
- strb r0, [r4, #4]
- strb r6, [r4, #0xf]
- b _08076508
- .align 2, 0
-_080764F8: .4byte gScreenTransition
-_080764FC: .4byte gPlayerEntity
-_08076500: .4byte gPlayerState
-_08076504:
- subs r0, #1
- strb r0, [r4, #7]
-_08076508:
- ldr r0, _08076514 @ =gPlayerState
- adds r0, #0xa8
- movs r1, #4
- strb r1, [r0]
-_08076510:
- pop {r4, r5, r6, pc}
- .align 2, 0
-_08076514: .4byte gPlayerState
-
- thumb_func_start sub_08076518
-sub_08076518: @ 0x08076518
- push {r4, r5, r6, r7, lr}
- mov r7, r8
- push {r7}
- adds r4, r0, #0
- mov r8, r1
- bl sub_08077F64
- cmp r0, #0
- beq _080765D4
- ldr r5, _0807655C @ =gPlayerState
- adds r1, r5, #0
- adds r1, #0xa8
- movs r0, #4
- strb r0, [r1]
- ldrb r1, [r5, #2]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- bne _080765D4
- ldrb r0, [r5, #0x1f]
- cmp r0, #0
- bne _080765D4
- ldr r6, _08076560 @ =gPlayerEntity
- adds r0, r6, #0
- adds r0, #0x42
- ldrb r7, [r0]
- cmp r7, #0
- beq _08076564
- adds r0, r4, #0
- mov r1, r8
- bl sub_08077F50
- b _080765D4
- .align 2, 0
-_0807655C: .4byte gPlayerState
-_08076560: .4byte gPlayerEntity
-_08076564:
- adds r0, r5, #0
- adds r0, #0x92
- ldrh r1, [r0]
- ldr r0, _080765B0 @ =0x00008018
- ands r0, r1
- cmp r0, #0
- beq _080765D4
- adds r0, r6, #0
- bl sub_0806F948
- movs r0, #5
- strb r0, [r5, #5]
- ldr r1, [r4, #0x18]
- movs r0, #2
- strb r0, [r1, #0xd]
- ldr r2, [r4, #0x18]
- ldrb r1, [r6, #0x14]
- movs r0, #0xe
- ands r0, r1
- lsls r0, r0, #2
- strb r0, [r2, #0x15]
- str r7, [r4, #0x18]
- ldrb r0, [r4, #4]
- adds r0, #1
- strb r0, [r4, #4]
- movs r0, #0xf
- strb r0, [r4, #0xf]
- ldr r0, [r5, #0x30]
- movs r1, #8
- ands r0, r1
- cmp r0, #0
- beq _080765B4
- movs r1, #0x93
- lsls r1, r1, #4
- adds r0, r4, #0
- bl sub_08077DF4
- b _080765BE
- .align 2, 0
-_080765B0: .4byte 0x00008018
-_080765B4:
- movs r1, #0xd1
- lsls r1, r1, #2
- adds r0, r4, #0
- bl sub_08077DF4
-_080765BE:
- ldr r2, _080765DC @ =gPlayerState
- movs r1, #8
- mov r0, r8
- asrs r1, r0
- ldrb r3, [r2, #0xa]
- adds r0, r1, #0
- orrs r0, r3
- strb r0, [r2, #0xa]
- ldrb r0, [r2, #0xb]
- orrs r1, r0
- strb r1, [r2, #0xb]
-_080765D4:
- pop {r3}
- mov r8, r3
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-_080765DC: .4byte gPlayerState
+ @ TODO convert .inc files into .s files and include them in linker.ld
+ .include "asm/item/itemDebug.inc"
- thumb_func_start sub_080765E0
-sub_080765E0: @ 0x080765E0
- push {r4, r5, lr}
- adds r4, r0, #0
- adds r5, r1, #0
- bl sub_08077F64
- cmp r0, #0
- beq _08076608
- ldrb r1, [r4, #0xe]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _08076602
- adds r0, r4, #0
- adds r1, r5, #0
- bl sub_08077F50
- b _08076608
-_08076602:
- adds r0, r4, #0
- bl UpdateItemAnim
-_08076608:
- pop {r4, r5, pc}
- .align 2, 0
+ .include "asm/item/itemSword.inc"
- thumb_func_start sub_0807660C
-sub_0807660C: @ 0x0807660C
- push {r4, r5, lr}
- adds r4, r0, #0
- adds r5, r1, #0
- bl UpdateItemAnim
- ldrb r0, [r4, #7]
- subs r0, #1
- strb r0, [r4, #7]
- lsls r0, r0, #0x18
- lsrs r0, r0, #0x18
- cmp r0, #0xff
- beq _0807662C
- ldr r0, _0807663C @ =gPlayerState
- ldrb r0, [r0, #1]
- cmp r0, #0
- bne _0807663A
-_0807662C:
- ldr r1, _0807663C @ =gPlayerState
- movs r0, #0
- strb r0, [r1, #1]
- adds r0, r4, #0
- adds r1, r5, #0
- bl sub_08077E78
-_0807663A:
- pop {r4, r5, pc}
- .align 2, 0
-_0807663C: .4byte gPlayerState
+ .include "asm/item/itemLantern.inc"
- thumb_func_start ItemRocsCape
-ItemRocsCape: @ 0x08076640
- push {r4, r5, lr}
- adds r3, r0, #0
- adds r4, r1, #0
- ldrb r0, [r3, #4]
- cmp r0, #0
- beq _08076654
- adds r0, r3, #0
- bl sub_08076758
- b _08076754
-_08076654:
- ldr r0, _080766BC @ =gPlayerState
- ldr r1, [r0, #0x2c]
- adds r2, r0, #0
- cmp r1, #0
- bne _0807674C
- ldrb r0, [r2, #1]
- cmp r0, #0
- beq _080766C4
- ldrb r1, [r2, #4]
- ldrb r0, [r2, #5]
- orrs r0, r1
- cmp r0, #0
- bne _0807674C
- ldrb r0, [r2, #0x12]
- cmp r0, #0x12
- beq _08076678
- cmp r0, #1
- bne _08076686
-_08076678:
- ldr r0, _080766C0 @ =gPlayerEntity
- ldr r0, [r0, #0x34]
- cmp r0, #0
- bne _08076686
- ldrb r0, [r2, #0x14]
- cmp r0, #0
- beq _0807674C
-_08076686:
- ldrb r1, [r2, #2]
- cmp r1, #0
- beq _08076694
- movs r0, #7
- ands r0, r1
- cmp r0, #3
- bne _08076710
-_08076694:
- ldr r5, _080766C0 @ =gPlayerEntity
- ldr r0, [r5, #0x34]
- cmp r0, #0
- blt _0807674C
- movs r1, #0
- strb r1, [r2, #1]
- ldrb r0, [r3, #4]
- adds r0, #1
- strb r0, [r3, #4]
- strb r1, [r2, #0xb]
- movs r0, #1
- strb r0, [r2, #2]
- movs r0, #0xff
- strb r0, [r2, #0xe]
- str r1, [r2, #0x2c]
- movs r0, #0x80
- lsls r0, r0, #0xa
- str r0, [r5, #0x20]
- b _0807673C
- .align 2, 0
-_080766BC: .4byte gPlayerState
-_080766C0: .4byte gPlayerEntity
-_080766C4:
- ldrb r0, [r2, #0x1b]
- ldrb r1, [r2, #0xa]
- orrs r0, r1
- ldrb r1, [r2, #4]
- orrs r0, r1
- ldrb r1, [r2, #5]
- orrs r0, r1
- ldrb r1, [r2, #0x1c]
- orrs r0, r1
- adds r1, r2, #0
- adds r1, #0x3d
- ldrb r1, [r1]
- orrs r0, r1
- cmp r0, #0
- bne _0807674C
- ldrb r1, [r2, #0x12]
- adds r0, r1, #0
- subs r0, #0x12
- lsls r0, r0, #0x18
- lsrs r0, r0, #0x18
- cmp r0, #1
- bls _080766F4
- cmp r1, #1
- bne _08076702
-_080766F4:
- ldr r0, _0807671C @ =gPlayerEntity
- ldr r0, [r0, #0x34]
- cmp r0, #0
- bne _08076702
- ldrb r0, [r2, #0x14]
- cmp r0, #0
- beq _0807674C
-_08076702:
- ldrb r1, [r2, #2]
- cmp r1, #0
- beq _08076720
- movs r0, #7
- ands r0, r1
- cmp r0, #3
- beq _08076720
-_08076710:
- adds r0, r3, #0
- adds r1, r4, #0
- bl sub_08076758
- b _08076754
- .align 2, 0
-_0807671C: .4byte gPlayerEntity
-_08076720:
- ldr r1, _08076748 @ =gPlayerEntity
- ldr r0, [r1, #0x34]
- cmp r0, #0
- blt _0807674C
- movs r0, #0x80
- lsls r0, r0, #0xa
- str r0, [r1, #0x20]
- movs r1, #0
- movs r0, #1
- strb r0, [r2, #2]
- str r1, [r2, #0x2c]
- ldrb r0, [r3, #4]
- adds r0, #1
- strb r0, [r3, #4]
-_0807673C:
- bl sub_08077F84
- movs r0, #0x78
- bl SoundReq
- b _08076754
- .align 2, 0
-_08076748: .4byte gPlayerEntity
-_0807674C:
- adds r0, r3, #0
- adds r1, r4, #0
- bl sub_08077E78
-_08076754:
- pop {r4, r5, pc}
- .align 2, 0
+ .include "asm/item/itemBoomerang.inc"
- thumb_func_start sub_08076758
-sub_08076758: @ 0x08076758
- push {r4, r5, lr}
- adds r4, r0, #0
- ldr r5, _080767C0 @ =gPlayerState
- movs r0, #0
- strb r0, [r5, #0xe]
- ldrb r2, [r5, #2]
- movs r0, #0x28
- ands r0, r2
- cmp r0, #0
- bne _080767F8
- cmp r2, #0
- beq _080767F8
- movs r0, #7
- ands r0, r2
- cmp r0, #3
- beq _080767F8
- adds r0, r4, #0
- bl sub_08077EFC
- cmp r0, #0
- beq _080767D8
- ldrb r0, [r4, #4]
- cmp r0, #1
- bhi _080767C8
- ldr r2, _080767C4 @ =gPlayerEntity
- ldr r0, [r2, #0x20]
- cmp r0, #0
- bgt _080767FE
- ldrb r3, [r5, #2]
- movs r0, #0x10
- ands r0, r3
- cmp r0, #0
- bne _080767FE
- movs r0, #2
- strb r0, [r4, #4]
- adds r1, r2, #0
- adds r1, #0x7a
- strh r0, [r1]
- movs r0, #0x80
- lsls r0, r0, #0xa
- str r0, [r2, #0x20]
- movs r0, #0x10
- orrs r0, r3
- strb r0, [r5, #2]
- movs r0, #0xa2
- lsls r0, r0, #2
- strh r0, [r5, #8]
- movs r0, #0xb9
- lsls r0, r0, #1
- bl SoundReq
- b _080767FE
- .align 2, 0
-_080767C0: .4byte gPlayerState
-_080767C4: .4byte gPlayerEntity
-_080767C8:
- ldr r1, _080767D4 @ =gPlayerEntity
- adds r1, #0x7a
- ldrh r0, [r1]
- adds r0, #1
- strh r0, [r1]
- b _080767FE
- .align 2, 0
-_080767D4: .4byte gPlayerEntity
-_080767D8:
- ldrb r0, [r4, #4]
- cmp r0, #1
- bls _080767FE
- ldr r1, _080767F4 @ =gPlayerEntity
- adds r1, #0x7a
- ldrh r0, [r1]
- adds r0, #1
- strh r0, [r1]
- ldrb r1, [r5, #2]
- movs r0, #0xef
- ands r0, r1
- strb r0, [r5, #2]
- b _080767FE
- .align 2, 0
-_080767F4: .4byte gPlayerEntity
-_080767F8:
- adds r0, r4, #0
- bl sub_08077E78
-_080767FE:
- pop {r4, r5, pc}
+ .include "asm/item/itemBow.inc"
- thumb_func_start ItemPegasusBoots
-ItemPegasusBoots: @ 0x08076800
- push {r4, r5, r6, r7, lr}
- mov r7, sb
- mov r6, r8
- push {r6, r7}
- adds r6, r0, #0
- mov sb, r1
- ldr r4, _0807682C @ =gPlayerEntity
- adds r0, r4, #0
- adds r0, #0x7a
- ldrh r0, [r0]
- cmp r0, #0
- beq _08076834
- ldr r1, _08076830 @ =gPlayerState
- movs r0, #0
- strb r0, [r1, #0x1e]
- strb r0, [r1, #0xe]
- adds r0, r6, #0
- mov r1, sb
- bl sub_08077E78
- b _080768EC
- .align 2, 0
-_0807682C: .4byte gPlayerEntity
-_08076830: .4byte gPlayerState
-_08076834:
- ldrb r0, [r6, #7]
- subs r0, #1
- strb r0, [r6, #7]
- movs r1, #7
- mov r8, r1
- ands r0, r1
- cmp r0, #0
- bne _0807684A
- movs r0, #0x7d
- bl SoundReq
-_0807684A:
- ldr r2, _08076880 @ =gPlayerState
- ldr r0, [r2, #0x30]
- movs r1, #0x80
- ands r0, r1
- cmp r0, #0
- bne _080768DA
- ldrb r1, [r6, #7]
- mov r0, r8
- ands r0, r1
- cmp r0, #0
- bne _080768DA
- ldrb r0, [r2, #0x12]
- cmp r0, #0x11
- bne _08076884
- adds r0, r4, #0
- adds r0, #0x63
- ldrb r0, [r0]
- lsls r0, r0, #0x18
- asrs r0, r0, #0x18
- cmp r0, #0
- bne _080768DA
- adds r0, r4, #0
- movs r1, #0x52
- movs r2, #0
- bl CreateFx
- b _080768DA
- .align 2, 0
-_08076880: .4byte gPlayerState
-_08076884:
- adds r0, r4, #0
- movs r1, #0x11
- movs r2, #0x40
- bl CreateFx
- adds r5, r0, #0
- cmp r5, #0
- beq _080768DA
- ldrh r0, [r5, #0x32]
- adds r0, #2
- strh r0, [r5, #0x32]
- ldrb r0, [r6, #4]
- cmp r0, #2
- beq _080768DA
- bl Random
- adds r4, r0, #0
- movs r0, #3
- ands r4, r0
- bl Random
- movs r7, #1
- ands r0, r7
- cmp r0, #0
- beq _080768B8
- rsbs r4, r4, #0
-_080768B8:
- ldrh r0, [r5, #0x32]
- adds r0, r0, r4
- strh r0, [r5, #0x32]
- bl Random
- adds r4, r0, #0
- mov r0, r8
- ands r4, r0
- bl Random
- ands r0, r7
- cmp r0, #0
- beq _080768D4
- rsbs r4, r4, #0
-_080768D4:
- ldrh r0, [r5, #0x2e]
- adds r0, r0, r4
- strh r0, [r5, #0x2e]
-_080768DA:
- ldr r0, _080768F4 @ =gUnk_0811BDCC
- ldrb r1, [r6, #4]
- lsls r1, r1, #2
- adds r1, r1, r0
- ldr r2, [r1]
- adds r0, r6, #0
- mov r1, sb
- bl _call_via_r2
-_080768EC:
- pop {r3, r4}
- mov r8, r3
- mov sb, r4
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-_080768F4: .4byte gUnk_0811BDCC
+ .include "asm/item/itemBomb.inc"
- thumb_func_start sub_080768F8
-sub_080768F8: @ 0x080768F8
- push {r4, r5, lr}
- adds r4, r0, #0
- adds r5, r1, #0
- ldr r3, _08076934 @ =gPlayerState
- ldrb r1, [r3, #0x1c]
- ldrb r0, [r3, #4]
- orrs r1, r0
- ldrb r0, [r3, #5]
- orrs r1, r0
- ldrb r0, [r3, #2]
- orrs r1, r0
- ldr r2, [r3, #0x30]
- movs r0, #0x80
- lsls r0, r0, #5
- ands r0, r2
- orrs r1, r0
- cmp r1, #0
- bne _08076954
- movs r0, #1
- strb r0, [r3, #0x1e]
- adds r0, r3, #0
- adds r0, #0x21
- strb r1, [r0]
- movs r0, #0x80
- ands r2, r0
- cmp r2, #0
- bne _08076938
- movs r0, #0x10
- strb r0, [r4, #7]
- b _0807693C
- .align 2, 0
-_08076934: .4byte gPlayerState
-_08076938:
- ldr r0, _08076950 @ =0x00000C14
- strh r0, [r3, #8]
-_0807693C:
- adds r0, r4, #0
- adds r1, r5, #0
- bl sub_08077D38
- adds r0, r4, #0
- adds r1, r5, #0
- bl sub_08076964
- b _08076962
- .align 2, 0
-_08076950: .4byte 0x00000C14
-_08076954:
- movs r0, #0
- strb r0, [r3, #0x1e]
- strb r0, [r3, #0xe]
- adds r0, r4, #0
- adds r1, r5, #0
- bl sub_08077E78
-_08076962:
- pop {r4, r5, pc}
+ .include "asm/item/itemTryPickupObject.inc"
- thumb_func_start sub_08076964
-sub_08076964: @ 0x08076964
- push {r4, r5, r6, r7, lr}
- mov r7, r8
- push {r7}
- adds r4, r0, #0
- adds r6, r1, #0
- bl sub_08077EFC
- cmp r0, #0
- bne _08076978
- b _08076A70
-_08076978:
- ldr r0, _080769C4 @ =gPlayerEntity
- ldr r7, [r0, #0x34]
- cmp r7, #0
- bne _08076A70
- ldr r5, _080769C8 @ =gPlayerState
- ldrb r0, [r5, #0x1e]
- cmp r0, #0
- beq _08076A70
- adds r0, r4, #0
- bl UpdateItemAnim
- ldr r0, [r5, #0x30]
- movs r1, #0x80
- mov r8, r1
- ands r0, r1
- cmp r0, #0
- bne _080769A0
- adds r0, r4, #0
- bl UpdateItemAnim
-_080769A0:
- ldrb r0, [r5, #0x1e]
- adds r0, #1
- strb r0, [r5, #0x1e]
- lsls r0, r0, #0x18
- lsrs r0, r0, #0x18
- cmp r0, #0x1e
- bne _08076A7E
- ldr r0, [r5, #0x30]
- movs r1, #2
- ands r0, r1
- cmp r0, #0
- beq _080769CC
- strb r7, [r5, #0x1e]
- adds r0, r4, #0
- adds r1, r6, #0
- bl sub_08077E78
- b _08076A7E
- .align 2, 0
-_080769C4: .4byte gPlayerEntity
-_080769C8: .4byte gPlayerState
-_080769CC:
- movs r0, #0x40
- strb r0, [r5, #0x1e]
- movs r1, #8
- asrs r1, r6
- ldrb r0, [r5, #0xa]
- bics r0, r1
- strb r0, [r5, #0xa]
- ldrb r0, [r4, #4]
- adds r0, #1
- strb r0, [r4, #4]
- bl sub_0807A158
- cmp r0, #0
- beq _08076A46
- ldr r0, [r5, #0x30]
- mov r1, r8
- ands r0, r1
- cmp r0, #0
- bne _08076A60
- adds r0, r5, #0
- adds r0, #0xac
- ldrh r1, [r0]
- movs r0, #4
- ands r0, r1
- cmp r0, #0
- beq _08076A46
- adds r0, r5, #0
- adds r0, #0xab
- movs r1, #3
- strb r1, [r0]
- movs r1, #0xa6
- lsls r1, r1, #2
- adds r0, r4, #0
- bl sub_08077DF4
- adds r0, r4, #0
- movs r1, #0xc
- bl CreatePlayerBomb
- adds r5, r0, #0
- cmp r5, #0
- beq _08076A70
- ldr r6, _08076A34 @ =gSave
- adds r4, r6, #0
- adds r4, #0xb4
- ldrb r0, [r4]
- bl sub_0805449C
- cmp r0, #0
- beq _08076A38
- ldrb r1, [r4]
- b _08076A3E
- .align 2, 0
-_08076A34: .4byte gSave
-_08076A38:
- adds r0, r6, #0
- adds r0, #0xb5
- ldrb r1, [r0]
-_08076A3E:
- adds r0, r5, #0
- adds r0, #0x68
- strb r1, [r0]
- b _08076A7E
-_08076A46:
- ldr r0, _08076A5C @ =gPlayerState
- ldr r0, [r0, #0x30]
- movs r1, #0x80
- ands r0, r1
- cmp r0, #0
- bne _08076A60
- adds r1, #0x84
- adds r0, r4, #0
- bl sub_08077DF4
- b _08076A7E
- .align 2, 0
-_08076A5C: .4byte gPlayerState
-_08076A60:
- ldr r1, _08076A6C @ =gPlayerState
- movs r0, #0xc1
- lsls r0, r0, #4
- strh r0, [r1, #8]
- b _08076A7E
- .align 2, 0
-_08076A6C: .4byte gPlayerState
-_08076A70:
- ldr r1, _08076A84 @ =gPlayerState
- movs r0, #0
- strb r0, [r1, #0x1e]
- adds r0, r4, #0
- adds r1, r6, #0
- bl sub_08077E78
-_08076A7E:
- pop {r3}
- mov r8, r3
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-_08076A84: .4byte gPlayerState
+ .include "asm/item/itemRocsCape.inc"
- thumb_func_start sub_08076A88
-sub_08076A88: @ 0x08076A88
- push {r4, r5, r6, r7, lr}
- adds r4, r0, #0
- adds r7, r1, #0
- bl sub_08077EFC
- cmp r0, #0
- beq _08076B64
- ldr r1, _08076AB4 @ =gPlayerState
- ldrb r0, [r1, #0x1e]
- adds r3, r1, #0
- cmp r0, #0
- beq _08076B64
- ldr r0, [r3, #0x30]
- movs r1, #0x80
- ands r0, r1
- cmp r0, #0
- bne _08076ABC
- ldr r1, _08076AB8 @ =gPlayerEntity
- movs r0, #0xc0
- lsls r0, r0, #2
- b _08076AC2
- .align 2, 0
-_08076AB4: .4byte gPlayerState
-_08076AB8: .4byte gPlayerEntity
-_08076ABC:
- ldr r1, _08076B00 @ =gPlayerEntity
- movs r0, #0xa0
- lsls r0, r0, #2
-_08076AC2:
- strh r0, [r1, #0x24]
- adds r5, r1, #0
- ldr r1, _08076B04 @ =gUnk_0800275C
- ldrb r2, [r5, #0x14]
- movs r6, #0xe
- adds r0, r6, #0
- ands r0, r2
- lsls r0, r0, #3
- adds r0, r0, r1
- ldrh r1, [r0]
- ldrh r0, [r5, #0x2a]
- ands r0, r1
- cmp r1, r0
- bne _08076B0E
- ldrb r0, [r4, #8]
- cmp r0, #0
- beq _08076B08
- movs r2, #0
- movs r0, #6
- strb r0, [r5, #0xc]
- strb r2, [r5, #0xd]
- ldrb r1, [r5, #0x10]
- movs r0, #0x7f
- ands r0, r1
- strb r0, [r5, #0x10]
- adds r0, r3, #0
- adds r0, #0x38
- strb r2, [r0]
- movs r0, #0xff
- strb r0, [r3, #0xd]
- b _08076B72
- .align 2, 0
-_08076B00: .4byte gPlayerEntity
-_08076B04: .4byte gUnk_0800275C
-_08076B08:
- movs r0, #1
- strb r0, [r4, #8]
- b _08076B72
-_08076B0E:
- ldr r1, _08076B60 @ =gUnk_0811BE38
- movs r0, #0xfe
- ands r0, r2
- adds r0, r0, r1
- adds r1, r3, #0
- adds r1, #0x90
- ldrh r2, [r0]
- ldrh r0, [r1]
- ands r0, r2
- cmp r0, #0
- bne _08076B64
- ldrb r0, [r4, #0xa]
- adds r1, r6, #0
- ands r1, r0
- lsls r0, r1, #2
- strb r0, [r4, #0xb]
- ldrb r2, [r3, #0xd]
- cmp r2, #0xff
- beq _08076B52
- cmp r2, r0
- beq _08076B52
- adds r0, r2, #0
- ldrb r1, [r4, #0xb]
- subs r0, r0, r1
- movs r2, #0x1f
- ands r0, r2
- cmp r0, #0xf
- bgt _08076B4A
- adds r0, r1, #2
- strb r0, [r4, #0xb]
-_08076B4A:
- ldrb r0, [r4, #0xb]
- subs r0, #1
- ands r0, r2
- strb r0, [r4, #0xb]
-_08076B52:
- ldrb r0, [r4, #0xb]
- strb r0, [r3, #0xd]
- adds r0, r4, #0
- bl UpdateItemAnim
- b _08076B72
- .align 2, 0
-_08076B60: .4byte gUnk_0811BE38
-_08076B64:
- ldr r1, _08076B74 @ =gPlayerState
- movs r0, #0
- strb r0, [r1, #0x1e]
- adds r0, r4, #0
- adds r1, r7, #0
- bl sub_08077E78
-_08076B72:
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-_08076B74: .4byte gPlayerState
+ .include "asm/item/itemPegasusBoots.inc"
diff --git a/asm/code_08076C80.s b/asm/code_08076C80.s
index 4f96b523..9cbc0f4b 100644
--- a/asm/code_08076C80.s
+++ b/asm/code_08076C80.s
@@ -6,1088 +6,13 @@
.text
- thumb_func_start sub_08076DF4
-sub_08076DF4: @ 0x08076DF4
- push {r4, r5, r6, r7, lr}
- mov r7, r8
- push {r7}
- adds r4, r0, #0
- adds r7, r1, #0
- ldr r0, _08076E48 @ =gPlayerEntity
- mov r8, r0
- bl sub_0807A894
- cmp r0, #0x29
- beq _08076E50
- ldr r6, _08076E4C @ =gPlayerState
- ldrb r0, [r6, #0x12]
- cmp r0, #0x12
- beq _08076E50
- cmp r0, #0x13
- beq _08076E50
- ldrb r5, [r6, #2]
- cmp r5, #0
- bne _08076E50
- adds r0, r4, #0
- adds r1, r7, #0
- bl sub_08077D38
- strb r5, [r4, #7]
- mov r1, r8
- ldrb r0, [r1, #0x14]
- strb r0, [r4, #0xa]
- ldrb r1, [r4, #9]
- movs r0, #0x80
- orrs r0, r1
- adds r0, #1
- strb r0, [r4, #9]
- movs r0, #1
- strb r0, [r6, #0x1d]
- mov r1, r8
- str r5, [r1, #0x74]
- strb r0, [r6, #0x1c]
- adds r0, r4, #0
- bl sub_08077BB8
- b _08076E58
- .align 2, 0
-_08076E48: .4byte gPlayerEntity
-_08076E4C: .4byte gPlayerState
-_08076E50:
- adds r0, r4, #0
- adds r1, r7, #0
- bl sub_08077E78
-_08076E58:
- pop {r3}
- mov r8, r3
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
+ @ TODO convert .inc files into .s files and include them in linker.ld
+ .include "asm/item/itemGustJar.inc"
- thumb_func_start sub_08076E60
-sub_08076E60: @ 0x08076E60
- push {r4, r5, r6, lr}
- adds r4, r0, #0
- adds r6, r1, #0
- ldr r5, _08076EB4 @ =gPlayerState
- ldrb r1, [r5, #0x1c]
- movs r0, #0xf
- ands r0, r1
- cmp r0, #0
- bne _08076E7A
- adds r0, r4, #0
- adds r1, r6, #0
- bl sub_08077E78
-_08076E7A:
- ldrb r1, [r4, #0xe]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _08076EC0
- movs r0, #2
- strb r0, [r4, #4]
- ldr r1, _08076EB8 @ =0x00000504
- adds r0, r4, #0
- bl sub_08077DF4
- movs r1, #8
- asrs r1, r6
- ldrb r0, [r5, #0xa]
- bics r0, r1
- strb r0, [r5, #0xa]
- movs r0, #0x10
- movs r1, #0
- movs r2, #0
- movs r3, #0
- bl CreatePlayerItem
- adds r1, r0, #0
- cmp r1, #0
- beq _08076EC6
- ldr r0, _08076EBC @ =gPlayerEntity
- str r0, [r1, #0x50]
- b _08076EC6
- .align 2, 0
-_08076EB4: .4byte gPlayerState
-_08076EB8: .4byte 0x00000504
-_08076EBC: .4byte gPlayerEntity
-_08076EC0:
- adds r0, r4, #0
- bl UpdateItemAnim
-_08076EC6:
- pop {r4, r5, r6, pc}
+ .include "asm/item/itemMoleMitts.inc"
- thumb_func_start sub_08076EC8
-sub_08076EC8: @ 0x08076EC8
- push {r4, r5, r6, lr}
- adds r4, r0, #0
- adds r6, r1, #0
- ldr r5, _08076EE4 @ =gPlayerState
- ldrb r1, [r5, #0x1c]
- movs r0, #0xf
- ands r0, r1
- cmp r0, #0
- bne _08076EE8
- adds r0, r4, #0
- adds r1, r6, #0
- bl sub_08077E78
- b _08076F60
- .align 2, 0
-_08076EE4: .4byte gPlayerState
-_08076EE8:
- adds r0, r4, #0
- bl sub_08077EFC
- cmp r0, #0
- beq _08076F50
- ldrb r0, [r4, #7]
- cmp r0, #0xef
- bls _08076EFC
- movs r0, #3
- b _08076F0E
-_08076EFC:
- adds r0, #1
- strb r0, [r4, #7]
- lsls r0, r0, #0x18
- lsrs r0, r0, #0x18
- cmp r0, #0x77
- bls _08076F0C
- movs r0, #2
- b _08076F0E
-_08076F0C:
- movs r0, #1
-_08076F0E:
- strb r0, [r5, #0x1d]
- ldr r0, _08076F1C @ =gPlayerEntity
- ldrb r0, [r0, #0xd]
- cmp r0, #0x1b
- bne _08076F24
- ldr r1, _08076F20 @ =0x00000524
- b _08076F36
- .align 2, 0
-_08076F1C: .4byte gPlayerEntity
-_08076F20: .4byte 0x00000524
-_08076F24:
- ldr r0, _08076F44 @ =gPlayerState
- ldrb r1, [r0, #0xd]
- movs r0, #0x80
- ands r0, r1
- movs r1, #0xa3
- lsls r1, r1, #3
- cmp r0, #0
- beq _08076F36
- subs r1, #0x14
-_08076F36:
- ldrh r0, [r4, #0x10]
- cmp r1, r0
- beq _08076F48
- adds r0, r4, #0
- bl sub_08077DF4
- b _08076F60
- .align 2, 0
-_08076F44: .4byte gPlayerState
-_08076F48:
- adds r0, r4, #0
- bl UpdateItemAnim
- b _08076F60
-_08076F50:
- ldrb r0, [r4, #4]
- adds r0, #1
- strb r0, [r4, #4]
- movs r0, #8
- asrs r0, r6
- ldrb r1, [r5, #0xa]
- orrs r0, r1
- strb r0, [r5, #0xa]
-_08076F60:
- pop {r4, r5, r6, pc}
- .align 2, 0
+ .include "asm/item/itemJarEmpty.inc"
- thumb_func_start sub_08076F64
-sub_08076F64: @ 0x08076F64
- push {r4, r5, r6, lr}
- adds r4, r0, #0
- adds r6, r1, #0
- ldr r1, _08076F84 @ =gPlayerState
- ldrb r0, [r1, #0x1c]
- movs r2, #0xf
- ands r2, r0
- adds r3, r1, #0
- cmp r2, #7
- bls _08076F7A
- b _080770EC
-_08076F7A:
- lsls r0, r2, #2
- ldr r1, _08076F88 @ =_08076F8C
- adds r0, r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08076F84: .4byte gPlayerState
-_08076F88: .4byte _08076F8C
-_08076F8C: @ jump table
- .4byte _08077100 @ case 0
- .4byte _080770EC @ case 1
- .4byte _080770EC @ case 2
- .4byte _0807704C @ case 3
- .4byte _08077052 @ case 4
- .4byte _08076FAC @ case 5
- .4byte _080770B8 @ case 6
- .4byte _080770D0 @ case 7
-_08076FAC:
- ldrb r1, [r4, #0xe]
- movs r5, #0x80
- adds r0, r5, #0
- ands r0, r1
- cmp r0, #0
- beq _0807700E
- ldrb r0, [r4, #8]
- cmp r0, #0
- beq _08077004
- movs r0, #0
- strb r0, [r4, #8]
- strb r0, [r4, #7]
- movs r1, #1
- strb r1, [r3, #0x1d]
- ldr r5, _08076FFC @ =gPlayerEntity
- str r0, [r5, #0x74]
- strb r1, [r3, #0x1c]
- movs r1, #8
- asrs r1, r6
- ldrb r0, [r3, #0xa]
- bics r0, r1
- strb r0, [r3, #0xa]
- movs r0, #2
- strb r0, [r4, #4]
- ldr r1, _08077000 @ =0x00000504
- adds r0, r4, #0
- bl sub_08077DF4
- movs r0, #0x10
- movs r1, #0
- movs r2, #0
- movs r3, #0
- bl CreatePlayerItem
- cmp r0, #0
- bne _08076FF6
- b _08077110
-_08076FF6:
- str r5, [r0, #0x50]
- b _08077110
- .align 2, 0
-_08076FFC: .4byte gPlayerEntity
-_08077000: .4byte 0x00000504
-_08077004:
- movs r0, #6
- strb r0, [r3, #0x1c]
- movs r1, #0xa2
- lsls r1, r1, #3
- b _080770F2
-_0807700E:
- adds r0, r4, #0
- bl sub_08077EFC
- cmp r0, #0
- beq _0807701C
- movs r0, #1
- strb r0, [r4, #8]
-_0807701C:
- adds r0, r4, #0
- bl UpdateItemAnim
- ldr r0, _08077044 @ =gPlayerState
- ldr r0, [r0, #0x30]
- movs r1, #2
- ands r0, r1
- cmp r0, #0
- bne _08077110
- ldr r0, _08077048 @ =gPlayerEntity
- ldrb r1, [r0, #0x14]
- lsls r1, r1, #2
- movs r2, #0x10
- eors r1, r2
- strb r1, [r0, #0x15]
- strh r5, [r0, #0x24]
- bl sub_08079E08
- b _08077110
- .align 2, 0
-_08077044: .4byte gPlayerState
-_08077048: .4byte gPlayerEntity
-_0807704C:
- ldr r1, _080770B0 @ =gPlayerState
- movs r0, #4
- strb r0, [r1, #0x1c]
-_08077052:
- adds r0, r4, #0
- bl sub_08077EFC
- cmp r0, #0
- beq _08077060
- movs r0, #1
- strb r0, [r4, #8]
-_08077060:
- adds r0, r4, #0
- bl UpdateItemAnim
- ldrb r1, [r4, #0xe]
- movs r0, #1
- ands r0, r1
- cmp r0, #0
- beq _0807708C
- ldr r1, _080770B0 @ =gPlayerState
- movs r2, #0
- movs r0, #5
- strb r0, [r1, #0x1c]
- ldr r0, _080770B4 @ =gPlayerEntity
- str r2, [r0, #0x70]
- ldrb r0, [r1, #0x1d]
- cmp r0, #0
- beq _0807708C
- movs r0, #0x11
- movs r1, #0
- movs r3, #0
- bl CreatePlayerItem
-_0807708C:
- ldr r0, _080770B0 @ =gPlayerState
- ldr r0, [r0, #0x30]
- movs r1, #2
- ands r0, r1
- cmp r0, #0
- bne _08077110
- ldr r2, _080770B4 @ =gPlayerEntity
- ldrb r0, [r2, #0x14]
- lsls r0, r0, #2
- movs r1, #0x10
- eors r0, r1
- strb r0, [r2, #0x15]
- movs r0, #0x80
- strh r0, [r2, #0x24]
- bl sub_08079E08
- b _08077110
- .align 2, 0
-_080770B0: .4byte gPlayerState
-_080770B4: .4byte gPlayerEntity
-_080770B8:
- adds r0, r4, #0
- bl UpdateItemAnim
- ldrb r1, [r4, #0xe]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _08077110
- ldr r3, _080770CC @ =gPlayerState
- b _08077100
- .align 2, 0
-_080770CC: .4byte gPlayerState
-_080770D0:
- ldr r1, _080770E4 @ =0x00000514
- adds r0, r4, #0
- bl sub_08077DF4
- ldr r1, _080770E8 @ =gPlayerState
- movs r2, #0
- movs r0, #3
- strb r0, [r1, #0x1c]
- strb r2, [r1, #0x1d]
- b _08077110
- .align 2, 0
-_080770E4: .4byte 0x00000514
-_080770E8: .4byte gPlayerState
-_080770EC:
- movs r0, #3
- strb r0, [r3, #0x1c]
- ldr r1, _080770FC @ =0x00000514
-_080770F2:
- adds r0, r4, #0
- bl sub_08077DF4
- b _08077110
- .align 2, 0
-_080770FC: .4byte 0x00000514
-_08077100:
- movs r1, #0
- strb r1, [r3, #0x1c]
- ldr r0, _08077114 @ =gPlayerEntity
- str r1, [r0, #0x70]
- adds r0, r4, #0
- adds r1, r6, #0
- bl sub_08077E78
-_08077110:
- pop {r4, r5, r6, pc}
- .align 2, 0
-_08077114: .4byte gPlayerEntity
-
- thumb_func_start ItemMoleMitts
-ItemMoleMitts: @ 0x08077118
- push {lr}
- ldr r3, _0807712C @ =gUnk_0811BE04
- ldrb r2, [r0, #4]
- lsls r2, r2, #2
- adds r2, r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- pop {pc}
- .align 2, 0
-_0807712C: .4byte gUnk_0811BE04
-
- thumb_func_start sub_08077130
-sub_08077130: @ 0x08077130
- push {r4, r5, r6, lr}
- adds r4, r0, #0
- ldr r5, _0807718C @ =gPlayerState
- ldrb r0, [r5, #2]
- cmp r0, #0
- bne _080771B6
- adds r0, r4, #0
- bl sub_08077D38
- adds r0, r5, #0
- adds r0, #0x3d
- movs r6, #1
- strb r6, [r0]
- ldrb r1, [r4, #9]
- movs r0, #0x80
- orrs r0, r1
- strb r0, [r4, #9]
- bl sub_080774A0
- adds r5, r0, #0
- cmp r5, #0
- beq _080771A8
- ldrb r0, [r4, #7]
- cmp r0, #0
- bne _080771C4
- ldr r1, _08077190 @ =0x0000050C
- adds r0, r4, #0
- bl sub_08077DF4
- movs r0, #2
- strb r0, [r4, #4]
- cmp r5, #0x56
- bne _080771C4
- ldr r2, _08077194 @ =gPlayerEntity
- ldrb r1, [r2, #0x14]
- ands r0, r1
- cmp r0, #0
- beq _08077198
- ldrh r0, [r2, #0x32]
- movs r1, #0x10
- rsbs r1, r1, #0
- ands r1, r0
- movs r0, #6
- orrs r1, r0
- strh r1, [r2, #0x32]
- b _080771C4
- .align 2, 0
-_0807718C: .4byte gPlayerState
-_08077190: .4byte 0x0000050C
-_08077194: .4byte gPlayerEntity
-_08077198:
- ldrh r0, [r2, #0x2e]
- movs r1, #0x10
- rsbs r1, r1, #0
- ands r1, r0
- movs r0, #8
- orrs r1, r0
- strh r1, [r2, #0x2e]
- b _080771C4
-_080771A8:
- movs r1, #0xa1
- lsls r1, r1, #3
- adds r0, r4, #0
- bl sub_08077DF4
- strb r6, [r4, #4]
- b _080771C4
-_080771B6:
- adds r0, r4, #0
- bl sub_08077E78
- adds r1, r5, #0
- adds r1, #0x3d
- movs r0, #0
- strb r0, [r1]
-_080771C4:
- pop {r4, r5, r6, pc}
- .align 2, 0
-
- thumb_func_start sub_080771C8
-sub_080771C8: @ 0x080771C8
- push {r4, r5, lr}
- adds r4, r0, #0
- adds r5, r1, #0
- bl UpdateItemAnim
- ldrb r1, [r4, #0xe]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _080771F4
- adds r0, r4, #0
- adds r1, r5, #0
- bl sub_08077E78
- ldr r0, _080771F0 @ =gPlayerState
- adds r0, #0x3d
- movs r1, #0
- strb r1, [r0]
- b _080772A4
- .align 2, 0
-_080771F0: .4byte gPlayerState
-_080771F4:
- movs r0, #0x20
- ands r0, r1
- cmp r0, #0
- beq _0807720E
- ldrb r0, [r4, #8]
- cmp r0, #0xff
- bne _0807720E
- ldr r0, _08077240 @ =gPlayerEntity
- ldrb r2, [r4, #0xe]
- movs r1, #0x1e
- movs r3, #1
- bl CreateObjectWithParent
-_0807720E:
- ldrb r1, [r4, #0xe]
- movs r0, #0x10
- ands r0, r1
- cmp r0, #0
- beq _080772A4
- ldr r5, _08077240 @ =gPlayerEntity
- adds r0, r5, #0
- movs r1, #0xd
- adds r2, r4, #0
- bl sub_0800875A
- cmp r0, #0
- bne _08077248
- movs r1, #0xa4
- lsls r1, r1, #3
- adds r0, r4, #0
- bl sub_08077DF4
- movs r0, #3
- strb r0, [r4, #4]
- ldr r0, _08077244 @ =0x00000107
- bl SoundReq
- b _080772A4
- .align 2, 0
-_08077240: .4byte gPlayerEntity
-_08077244: .4byte 0x00000107
-_08077248:
- ldrb r0, [r4, #8]
- cmp r0, #0xff
- beq _0807728C
- ldrb r3, [r4, #3]
- adds r0, r5, #0
- movs r1, #0x1f
- movs r2, #0
- bl CreateObjectWithParent
- adds r3, r0, #0
- cmp r3, #0
- beq _0807729C
- ldrb r0, [r4, #7]
- movs r2, #0
- strb r0, [r3, #0xe]
- ldrb r0, [r4, #8]
- strb r0, [r3, #0xf]
- ldrb r1, [r5, #0x14]
- movs r0, #6
- ands r0, r1
- strb r0, [r3, #0x14]
- adds r0, r5, #0
- adds r0, #0x5a
- strb r2, [r0]
- ldr r1, _08077288 @ =gUnk_0811BE14
- ldrb r0, [r4, #8]
- adds r0, r0, r1
- ldrb r1, [r0]
- adds r0, r5, #0
- adds r0, #0x59
- strb r1, [r0]
- b _0807729C
- .align 2, 0
-_08077288: .4byte gUnk_0811BE14
-_0807728C:
- ldrb r0, [r4, #3]
- cmp r0, #0xf
- bne _0807729C
- ldrb r0, [r4, #7]
- cmp r0, #0x17
- bne _0807729C
- movs r0, #0
- strb r0, [r4, #8]
-_0807729C:
- movs r0, #0x84
- lsls r0, r0, #1
- bl SoundReq
-_080772A4:
- pop {r4, r5, pc}
- .align 2, 0
-
- thumb_func_start sub_080772A8
-sub_080772A8: @ 0x080772A8
- push {r4, r5, r6, lr}
- adds r4, r0, #0
- adds r6, r1, #0
- ldrb r1, [r4, #0xe]
- movs r0, #8
- ands r0, r1
- cmp r0, #0
- beq _080772C6
- adds r0, r4, #0
- bl sub_08077F10
- cmp r0, #0
- beq _080772C6
- movs r0, #1
- strb r0, [r4, #7]
-_080772C6:
- movs r0, #0x71
- bl GetInventoryValue
- cmp r0, #1
- bne _08077318
- ldrb r1, [r4, #0xe]
- movs r5, #7
- adds r0, r5, #0
- ands r0, r1
- cmp r0, #3
- beq _08077300
- adds r0, r4, #0
- movs r1, #2
- bl sub_08077E3C
- ldr r3, _080772F8 @ =gPlayerEntity
- ldr r2, _080772FC @ =gUnk_0811BE16
- ldrb r1, [r4, #0xe]
- adds r0, r5, #0
- ands r0, r1
- lsls r0, r0, #1
- adds r0, r0, r2
- ldrh r0, [r0]
- lsls r0, r0, #1
- b _0807732E
- .align 2, 0
-_080772F8: .4byte gPlayerEntity
-_080772FC: .4byte gUnk_0811BE16
-_08077300:
- adds r0, r4, #0
- bl UpdateItemAnim
- ldr r3, _08077310 @ =gPlayerEntity
- ldr r2, _08077314 @ =gUnk_0811BE16
- ldrb r1, [r4, #0xe]
- adds r0, r5, #0
- b _08077326
- .align 2, 0
-_08077310: .4byte gPlayerEntity
-_08077314: .4byte gUnk_0811BE16
-_08077318:
- adds r0, r4, #0
- bl UpdateItemAnim
- ldr r3, _0807736C @ =gPlayerEntity
- ldr r2, _08077370 @ =gUnk_0811BE16
- ldrb r1, [r4, #0xe]
- movs r0, #7
-_08077326:
- ands r0, r1
- lsls r0, r0, #1
- adds r0, r0, r2
- ldrh r0, [r0]
-_0807732E:
- strh r0, [r3, #0x24]
- ldr r5, _0807736C @ =gPlayerEntity
- ldrb r0, [r5, #0x14]
- lsls r0, r0, #2
- strb r0, [r5, #0x15]
- movs r1, #0x24
- ldrsh r0, [r5, r1]
- cmp r0, #0
- beq _08077344
- bl sub_08079E08
-_08077344:
- ldrb r1, [r4, #0xe]
- movs r0, #0x10
- ands r0, r1
- cmp r0, #0
- beq _0807738C
- ldrb r0, [r4, #7]
- cmp r0, #0
- beq _08077374
- adds r0, r5, #0
- adds r0, #0x59
- movs r1, #1
- strb r1, [r0]
- bl sub_080774A0
- cmp r0, #0
- beq _08077374
- movs r0, #0
- strb r0, [r4, #7]
- b _0807743E
- .align 2, 0
-_0807736C: .4byte gPlayerEntity
-_08077370: .4byte gUnk_0811BE16
-_08077374:
- adds r0, r4, #0
- adds r1, r6, #0
- bl sub_08077E78
- ldr r0, _08077388 @ =gPlayerState
- adds r0, #0x3d
- movs r1, #0
- strb r1, [r0]
- b _0807743E
- .align 2, 0
-_08077388: .4byte gPlayerState
-_0807738C:
- movs r0, #0x60
- ands r0, r1
- cmp r0, #0
- beq _0807743E
- adds r0, r5, #0
- adds r0, #0x59
- movs r6, #1
- strb r6, [r0]
- adds r0, r5, #0
- bl sub_0807B5B0
- cmp r0, #0
- beq _080773BC
- movs r0, #0x84
- lsls r0, r0, #1
- bl SoundReq
- ldrb r2, [r4, #0xe]
- adds r0, r5, #0
- movs r1, #0x1e
- movs r3, #0
- bl CreateObjectWithParent
- b _0807743E
-_080773BC:
- ldr r1, _08077440 @ =0x0000051C
- adds r0, r4, #0
- bl sub_08077DF4
- adds r0, r5, #0
- movs r1, #0x1d
- movs r2, #0
- bl CreateFx
- adds r3, r0, #0
- cmp r3, #0
- beq _080773F6
- ldrb r0, [r4, #0xa]
- strb r0, [r3, #0x14]
- adds r0, r5, #0
- adds r0, #0x29
- ldrb r1, [r0]
- lsls r1, r1, #0x1d
- lsrs r1, r1, #0x1d
- subs r1, #1
- adds r3, #0x29
- movs r0, #7
- ands r1, r0
- ldrb r2, [r3]
- movs r0, #8
- rsbs r0, r0, #0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_080773F6:
- adds r0, r5, #0
- movs r1, #0x1d
- movs r2, #0
- bl CreateFx
- adds r3, r0, #0
- cmp r3, #0
- beq _08077432
- ldrb r0, [r4, #0xa]
- strb r0, [r3, #0x14]
- adds r0, r5, #0
- adds r0, #0x29
- ldrb r1, [r0]
- lsls r1, r1, #0x1d
- lsrs r1, r1, #0x1d
- subs r1, #1
- movs r0, #0x29
- adds r0, r0, r3
- mov ip, r0
- movs r0, #7
- ands r1, r0
- mov r0, ip
- ldrb r2, [r0]
- movs r0, #8
- rsbs r0, r0, #0
- ands r0, r2
- orrs r0, r1
- mov r1, ip
- strb r0, [r1]
- strb r6, [r3, #0xf]
-_08077432:
- movs r0, #3
- strb r0, [r4, #4]
- strb r6, [r4, #5]
- ldr r0, _08077444 @ =0x00000119
- bl SoundReq
-_0807743E:
- pop {r4, r5, r6, pc}
- .align 2, 0
-_08077440: .4byte 0x0000051C
-_08077444: .4byte 0x00000119
-
- thumb_func_start sub_08077448
-sub_08077448: @ 0x08077448
- push {r4, r5, lr}
- adds r4, r0, #0
- adds r5, r1, #0
- ldr r2, _08077498 @ =gPlayerEntity
- ldrb r0, [r2, #0x14]
- lsls r0, r0, #2
- movs r1, #0x10
- eors r0, r1
- strb r0, [r2, #0x15]
- movs r0, #0x80
- lsls r0, r0, #1
- strh r0, [r2, #0x24]
- ldrb r1, [r4, #0xe]
- movs r0, #1
- ands r0, r1
- cmp r0, #0
- beq _08077474
- ldrb r0, [r4, #5]
- cmp r0, #0
- beq _08077474
- bl sub_08079E08
-_08077474:
- adds r0, r4, #0
- bl UpdateItemAnim
- ldrb r1, [r4, #0xe]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _08077494
- ldr r0, _0807749C @ =gPlayerState
- adds r0, #0x3d
- movs r1, #0
- strb r1, [r0]
- adds r0, r4, #0
- adds r1, r5, #0
- bl sub_08077E78
-_08077494:
- pop {r4, r5, pc}
- .align 2, 0
-_08077498: .4byte gPlayerEntity
-_0807749C: .4byte gPlayerState
-
- thumb_func_start sub_080774A0
-sub_080774A0: @ 0x080774A0
- push {r4, r5, r6, r7, lr}
- ldr r3, _080774FC @ =gPlayerEntity
- movs r0, #0x2e
- ldrsh r2, [r3, r0]
- ldr r5, _08077500 @ =gUnk_0811BE1E
- ldrb r0, [r3, #0x14]
- movs r1, #6
- ands r1, r0
- adds r0, r1, r5
- ldrb r0, [r0]
- lsls r0, r0, #0x18
- asrs r0, r0, #0x18
- adds r2, r2, r0
- ldr r4, _08077504 @ =gRoomControls
- ldrh r0, [r4, #6]
- subs r2, r2, r0
- asrs r6, r2, #4
- movs r2, #0x3f
- ands r6, r2
- movs r7, #0x32
- ldrsh r0, [r3, r7]
- adds r1, #1
- adds r1, r1, r5
- ldrb r1, [r1]
- lsls r1, r1, #0x18
- asrs r1, r1, #0x18
- adds r0, r0, r1
- ldrh r1, [r4, #8]
- subs r0, r0, r1
- asrs r0, r0, #4
- ands r0, r2
- lsls r0, r0, #6
- orrs r6, r0
- adds r4, r3, #0
- adds r4, #0x38
- ldrb r1, [r4]
- adds r0, r6, #0
- bl sub_080002E0
- cmp r0, #0x16
- bhi _080774F6
- cmp r0, #0xe
- bhi _08077508
-_080774F6:
- movs r0, #0
- b _0807751A
- .align 2, 0
-_080774FC: .4byte gPlayerEntity
-_08077500: .4byte gUnk_0811BE1E
-_08077504: .4byte gRoomControls
-_08077508:
- adds r0, r6, #0
- ldrb r1, [r4]
- bl sub_080002C8
- cmp r0, #0x56
- bne _08077518
- movs r0, #0x56
- b _0807751A
-_08077518:
- movs r0, #1
-_0807751A:
- pop {r4, r5, r6, r7, pc}
-
- thumb_func_start ItemJarEmpty
-ItemJarEmpty: @ 0x0807751C
- push {lr}
- ldr r3, _08077530 @ =gUnk_0811BE28
- ldrb r2, [r0, #4]
- lsls r2, r2, #2
- adds r2, r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- pop {pc}
- .align 2, 0
-_08077530: .4byte gUnk_0811BE28
-
- thumb_func_start sub_08077534
-sub_08077534: @ 0x08077534
- push {r4, lr}
- adds r4, r0, #0
- bl sub_08077D38
- ldr r0, _08077570 @ =gPlayerEntity
- bl sub_0806F948
- adds r0, r4, #0
- bl sub_08077BB8
- ldrb r1, [r4, #9]
- movs r0, #0xf
- orrs r0, r1
- strb r0, [r4, #9]
- ldrb r1, [r4, #1]
- ldr r0, _08077574 @ =gSave
- adds r0, r0, r1
- adds r0, #0x9a
- ldrb r0, [r0]
- strb r0, [r4, #7]
- ldrb r0, [r4, #7]
- subs r0, #0x20
- cmp r0, #0x11
- bhi _080775F8
- lsls r0, r0, #2
- ldr r1, _08077578 @ =_0807757C
- adds r0, r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08077570: .4byte gPlayerEntity
-_08077574: .4byte gSave
-_08077578: .4byte _0807757C
-_0807757C: @ jump table
- .4byte _080775C4 @ case 0
- .4byte _080775D4 @ case 1
- .4byte _080775D4 @ case 2
- .4byte _080775D4 @ case 3
- .4byte _080775D4 @ case 4
- .4byte _080775D4 @ case 5
- .4byte _080775F8 @ case 6
- .4byte _080775F8 @ case 7
- .4byte _080775F8 @ case 8
- .4byte _080775D4 @ case 9
- .4byte _080775D4 @ case 10
- .4byte _080775D4 @ case 11
- .4byte _080775D4 @ case 12
- .4byte _080775D4 @ case 13
- .4byte _080775D4 @ case 14
- .4byte _080775F8 @ case 15
- .4byte _080775F8 @ case 16
- .4byte _080775F8 @ case 17
-_080775C4:
- ldr r1, _080775D0 @ =0x00000614
- adds r0, r4, #0
- bl sub_08077DF4
- b _08077610
- .align 2, 0
-_080775D0: .4byte 0x00000614
-_080775D4:
- movs r0, #3
- strb r0, [r4, #4]
- ldr r1, _080775F0 @ =gPlayerEntity
- movs r0, #4
- strb r0, [r1, #0x14]
- ldrb r2, [r1, #0x18]
- subs r0, #0x45
- ands r0, r2
- strb r0, [r1, #0x18]
- ldr r1, _080775F4 @ =0x000002DF
- adds r0, r4, #0
- bl sub_08077DF4
- b _08077606
- .align 2, 0
-_080775F0: .4byte gPlayerEntity
-_080775F4: .4byte 0x000002DF
-_080775F8:
- movs r0, #3
- strb r0, [r4, #4]
- movs r1, #0xc2
- lsls r1, r1, #3
- adds r0, r4, #0
- bl sub_08077DF4
-_08077606:
- ldr r2, _08077614 @ =gPlayerEntity
- ldrb r1, [r2, #0x10]
- movs r0, #0x7f
- ands r0, r1
- strb r0, [r2, #0x10]
-_08077610:
- pop {r4, pc}
- .align 2, 0
-_08077614: .4byte gPlayerEntity
-
- thumb_func_start sub_08077618
-sub_08077618: @ 0x08077618
- push {r4, lr}
- adds r4, r0, #0
- ldrb r1, [r4, #0xe]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _08077638
- movs r1, #0xc3
- lsls r1, r1, #3
- adds r0, r4, #0
- bl sub_08077DF4
- ldrb r0, [r4, #4]
- adds r0, #1
- strb r0, [r4, #4]
- b _0807763E
-_08077638:
- adds r0, r4, #0
- bl UpdateItemAnim
-_0807763E:
- pop {r4, pc}
-
- thumb_func_start sub_08077640
-sub_08077640: @ 0x08077640
- push {r4, r5, lr}
- adds r4, r0, #0
- adds r5, r1, #0
- bl UpdateItemAnim
- ldrb r1, [r4, #0xe]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _08077666
- ldr r2, _08077668 @ =gPlayerEntity
- ldrb r1, [r2, #0x10]
- movs r0, #0x80
- orrs r0, r1
- strb r0, [r2, #0x10]
- adds r0, r4, #0
- adds r1, r5, #0
- bl sub_08077E78
-_08077666:
- pop {r4, r5, pc}
- .align 2, 0
-_08077668: .4byte gPlayerEntity
-
- thumb_func_start sub_0807766C
-sub_0807766C: @ 0x0807766C
- push {r4, r5, lr}
- adds r4, r0, #0
- adds r5, r1, #0
- bl UpdateItemAnim
- ldrb r1, [r4, #0xe]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _08077692
- ldr r2, _08077694 @ =gPlayerEntity
- ldrb r1, [r2, #0x10]
- movs r0, #0x80
- orrs r0, r1
- strb r0, [r2, #0x10]
- adds r0, r4, #0
- adds r1, r5, #0
- bl sub_08077E78
-_08077692:
- pop {r4, r5, pc}
- .align 2, 0
-_08077694: .4byte gPlayerEntity
thumb_func_start sub_08077698
sub_08077698: @ 0x08077698
diff --git a/asm/code_080A5574.s b/asm/code_080A5574.s
index d0cb1892..f5a9c67b 100644
--- a/asm/code_080A5574.s
+++ b/asm/code_080A5574.s
@@ -3982,893 +3982,9 @@ sub_080A7528: @ 0x080A7528
_080A753C: .4byte gUnk_08129030
_080A7540: .4byte gUnk_02032EC0
- thumb_func_start PlayerItemSword
-PlayerItemSword: @ 0x080A7544
- push {r4, lr}
- adds r4, r0, #0
- ldr r1, _080A7584 @ =gUnk_0812905C
- ldrb r0, [r4, #0xc]
- lsls r0, r0, #2
- adds r0, r0, r1
- ldr r1, [r0]
- adds r0, r4, #0
- bl _call_via_r1
- ldrb r0, [r4, #0xa]
- cmp r0, #0
- bne _080A7582
- ldr r1, _080A7588 @ =gPlayerEntity
- adds r0, r4, #0
- bl sub_08078E84
- ldr r1, [r4, #0x48]
- adds r0, r4, #0
- adds r0, #0x62
- ldrb r0, [r0]
- ldrb r2, [r1]
- adds r0, r0, r2
- strb r0, [r1]
- ldr r1, [r4, #0x48]
- adds r0, r4, #0
- adds r0, #0x63
- ldrb r0, [r0]
- ldrb r2, [r1, #1]
- adds r0, r0, r2
- strb r0, [r1, #1]
-_080A7582:
- pop {r4, pc}
- .align 2, 0
-_080A7584: .4byte gUnk_0812905C
-_080A7588: .4byte gPlayerEntity
+ @ TODO convert .inc files into .s files and include them in linker.ld
+ .include "asm/playerItem/playerItemSword.inc"
- thumb_func_start sub_080A758C
-sub_080A758C: @ 0x080A758C
- push {r4, r5, lr}
- adds r5, r0, #0
- ldrb r0, [r5, #0xa]
- cmp r0, #0
- bne _080A75AC
- ldr r1, _080A7654 @ =gPlayerState
- ldrb r0, [r1, #4]
- cmp r0, #0
- bne _080A75AC
- ldrb r1, [r1, #2]
- movs r0, #0x20
- ands r0, r1
- cmp r0, #0
- bne _080A75AC
- bl DeleteThisEntity
-_080A75AC:
- adds r0, r5, #0
- bl AllocMutableHitbox
- cmp r0, #0
- bne _080A75BA
- bl DeleteThisEntity
-_080A75BA:
- adds r0, r5, #0
- movs r1, #1
- movs r2, #3
- bl sub_080AE008
- ldr r1, _080A7658 @ =gPlayerEntity
- adds r0, r1, #0
- adds r0, #0x3c
- ldrb r0, [r0]
- adds r0, #1
- movs r2, #0x20
- adds r3, r5, #0
- adds r3, #0x3c
- movs r4, #0
- orrs r0, r2
- strb r0, [r3]
- adds r1, #0x3b
- ldrb r0, [r1]
- adds r1, r5, #0
- adds r1, #0x3b
- strb r0, [r1]
- ldrb r1, [r5, #0x11]
- movs r0, #0x10
- rsbs r0, r0, #0
- ands r0, r1
- movs r1, #6
- orrs r0, r1
- strb r0, [r5, #0x11]
- adds r0, r5, #0
- adds r0, #0x41
- strb r4, [r0]
- subs r0, #4
- strb r4, [r0]
- adds r0, #5
- strb r4, [r0]
- ldrb r0, [r5, #0xc]
- adds r0, #1
- strb r0, [r5, #0xc]
- movs r0, #0xff
- strb r0, [r5, #0x1e]
- adds r0, r5, #0
- bl sub_0801766C
- ldrb r0, [r5, #0xa]
- cmp r0, #0
- bne _080A76BC
- ldr r2, _080A7654 @ =gPlayerState
- ldrb r1, [r2, #2]
- movs r0, #0x20
- ands r0, r1
- cmp r0, #0
- beq _080A767A
- ldrb r1, [r5, #0x10]
- movs r0, #0x7f
- ands r0, r1
- strb r0, [r5, #0x10]
- movs r0, #2
- strb r0, [r5, #0xb]
- adds r0, r2, #0
- adds r0, #0x3e
- ldrb r0, [r0]
- lsls r0, r0, #0x1e
- lsrs r0, r0, #0x1d
- adds r0, #8
- adds r1, r5, #0
- adds r1, #0x44
- strb r0, [r1]
- adds r0, r5, #0
- adds r0, #0x68
- ldrb r0, [r0]
- cmp r0, #1
- beq _080A765C
- cmp r0, #6
- bne _080A7664
- subs r1, #4
- movs r0, #0x1a
- b _080A766A
- .align 2, 0
-_080A7654: .4byte gPlayerState
-_080A7658: .4byte gPlayerEntity
-_080A765C:
- adds r1, r5, #0
- adds r1, #0x40
- movs r0, #0x18
- b _080A766A
-_080A7664:
- adds r1, r5, #0
- adds r1, #0x40
- movs r0, #0x19
-_080A766A:
- strb r0, [r1]
- ldrb r0, [r5, #0xc]
- adds r0, #1
- strb r0, [r5, #0xc]
- adds r0, r5, #0
- bl sub_080A7824
- b _080A7692
-_080A767A:
- adds r0, r2, #0
- adds r0, #0x3e
- ldrb r0, [r0]
- lsls r0, r0, #0x1e
- lsrs r0, r0, #0x1d
- adds r0, #4
- adds r1, r5, #0
- adds r1, #0x44
- strb r0, [r1]
- adds r0, r5, #0
- bl sub_080A76CC
-_080A7692:
- ldr r0, _080A76B0 @ =gPlayerState
- str r5, [r0, #0x2c]
- adds r0, r5, #0
- bl sub_08079BD8
- ldr r4, _080A76B4 @ =gUnk_0812906C
- ldr r0, _080A76B8 @ =gUnk_08129068
- bl sub_080028F4
- lsls r0, r0, #1
- adds r0, r0, r4
- ldrh r0, [r0]
- bl SoundReq
- b _080A76C2
- .align 2, 0
-_080A76B0: .4byte gPlayerState
-_080A76B4: .4byte gUnk_0812906C
-_080A76B8: .4byte gUnk_08129068
-_080A76BC:
- adds r0, r5, #0
- bl sub_080A76CC
-_080A76C2:
- movs r0, #0x87
- lsls r0, r0, #1
- bl SoundReq
- pop {r4, r5, pc}
-
- thumb_func_start sub_080A76CC
-sub_080A76CC: @ 0x080A76CC
- push {r4, r5, lr}
- adds r4, r0, #0
- ldrb r0, [r4, #0xa]
- cmp r0, #0
- beq _080A76D8
- b _080A77DC
-_080A76D8:
- ldr r5, _080A771C @ =gPlayerState
- ldr r0, [r5, #0x2c]
- cmp r0, r4
- beq _080A76E4
- bl DeleteThisEntity
-_080A76E4:
- ldrb r0, [r5, #4]
- cmp r0, #0
- bne _080A76F2
- str r0, [r5, #0x2c]
- strb r0, [r5, #0x1b]
- bl DeleteThisEntity
-_080A76F2:
- ldrb r2, [r5, #0x1b]
- cmp r2, #0
- beq _080A7744
- adds r1, r4, #0
- adds r1, #0x40
- movs r0, #0xd
- strb r0, [r1]
- movs r0, #0x40
- ands r0, r2
- cmp r0, #0
- beq _080A7728
- adds r0, r4, #0
- adds r0, #0x68
- ldrb r0, [r0]
- cmp r0, #1
- beq _080A7720
- cmp r0, #6
- bne _080A7724
- movs r0, #0xa
- b _080A7726
- .align 2, 0
-_080A771C: .4byte gPlayerState
-_080A7720:
- movs r0, #8
- b _080A7726
-_080A7724:
- movs r0, #9
-_080A7726:
- strb r0, [r1]
-_080A7728:
- ldr r0, _080A7740 @ =gPlayerEntity
- adds r0, #0x5a
- ldrb r1, [r0]
- movs r0, #0x20
- ands r0, r1
- cmp r0, #0
- beq _080A77C4
- movs r0, #0x8b
- lsls r0, r0, #1
- bl SoundReq
- b _080A77C4
- .align 2, 0
-_080A7740: .4byte gPlayerEntity
-_080A7744:
- ldr r0, [r5, #0x30]
- movs r1, #0x80
- lsls r1, r1, #0x14
- ands r0, r1
- cmp r0, #0
- beq _080A776A
- adds r0, r4, #0
- adds r0, #0x68
- ldrb r0, [r0]
- cmp r0, #6
- bne _080A7762
- adds r1, r4, #0
- adds r1, #0x40
- movs r0, #0xc
- b _080A7768
-_080A7762:
- adds r1, r4, #0
- adds r1, #0x40
- movs r0, #0xb
-_080A7768:
- strb r0, [r1]
-_080A776A:
- ldr r0, _080A77D0 @ =gPlayerState
- adds r0, #0x3e
- ldrb r0, [r0]
- movs r2, #3
- ands r2, r0
- cmp r2, #0
- beq _080A77C4
- ldr r0, _080A77D4 @ =gPlayerEntity
- adds r0, #0x5a
- ldrb r1, [r0]
- movs r0, #0x40
- ands r0, r1
- cmp r0, #0
- beq _080A77C4
- movs r1, #0x12
- cmp r2, #1
- bne _080A778E
- movs r1, #0x14
-_080A778E:
- adds r0, r4, #0
- movs r2, #0
- bl CreateFx
- adds r2, r0, #0
- cmp r2, #0
- beq _080A77C4
- ldrb r1, [r4, #0x1e]
- lsls r1, r1, #1
- ldr r0, _080A77D8 @ =gUnk_081292E2
- adds r1, r1, r0
- movs r0, #1
- ldrsb r0, [r1, r0]
- ldrh r3, [r4, #0x32]
- adds r0, r0, r3
- strh r0, [r2, #0x32]
- ldrb r1, [r1]
- lsls r1, r1, #0x18
- asrs r1, r1, #0x18
- ldrb r0, [r4, #0x18]
- lsls r0, r0, #0x19
- cmp r0, #0
- bge _080A77BE
- rsbs r1, r1, #0
-_080A77BE:
- ldrh r0, [r4, #0x2e]
- adds r0, r0, r1
- strh r0, [r2, #0x2e]
-_080A77C4:
- ldr r1, _080A77D4 @ =gPlayerEntity
- adds r0, r4, #0
- bl sub_080A78B8
- b _080A7806
- .align 2, 0
-_080A77D0: .4byte gPlayerState
-_080A77D4: .4byte gPlayerEntity
-_080A77D8: .4byte gUnk_081292E2
-_080A77DC:
- ldr r1, _080A7810 @ =gPlayerState
- ldrb r0, [r1, #4]
- cmp r0, #0
- beq _080A7814
- ldr r0, [r1, #0x2c]
- adds r2, r0, #0
- adds r2, #0x40
- ldrb r0, [r2]
- cmp r0, #0
- beq _080A7814
- ldrb r1, [r4, #0x10]
- movs r0, #0x80
- orrs r0, r1
- strb r0, [r4, #0x10]
- ldrb r1, [r2]
- adds r0, r4, #0
- adds r0, #0x40
- strb r1, [r0]
- adds r0, r4, #0
- bl sub_080A7A54
-_080A7806:
- adds r0, r4, #0
- bl sub_080A7A84
- b _080A7820
- .align 2, 0
-_080A7810: .4byte gPlayerState
-_080A7814:
- movs r0, #0xff
- strb r0, [r4, #0x1e]
- ldrb r1, [r4, #0x10]
- movs r0, #0x7f
- ands r0, r1
- strb r0, [r4, #0x10]
-_080A7820:
- pop {r4, r5, pc}
- .align 2, 0
-
- thumb_func_start sub_080A7824
-sub_080A7824: @ 0x080A7824
- push {r4, r5, r6, lr}
- adds r4, r0, #0
- ldr r5, _080A7860 @ =gPlayerState
- ldr r0, [r5, #0x2c]
- cmp r0, r4
- beq _080A7834
- bl DeleteThisEntity
-_080A7834:
- ldrb r0, [r5, #4]
- cmp r0, #0
- beq _080A78AE
- ldrb r0, [r5, #2]
- cmp r0, #0
- bne _080A7846
- str r0, [r5, #0x2c]
- bl DeleteThisEntity
-_080A7846:
- ldr r2, _080A7864 @ =gPlayerEntity
- adds r6, r2, #0
- adds r6, #0x5a
- ldrb r1, [r6]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _080A7868
- movs r0, #0
- str r0, [r5, #0x2c]
- bl DeleteThisEntity
- b _080A78B4
- .align 2, 0
-_080A7860: .4byte gPlayerState
-_080A7864: .4byte gPlayerEntity
-_080A7868:
- adds r0, r4, #0
- adds r1, r2, #0
- bl sub_080A78B8
- ldrb r1, [r6]
- movs r0, #0x20
- ands r0, r1
- cmp r0, #0
- beq _080A7880
- movs r0, #0x77
- bl SoundReq
-_080A7880:
- ldrb r0, [r4, #0x1e]
- cmp r0, #0x8a
- bls _080A788A
- movs r0, #0xff
- strb r0, [r4, #0x1e]
-_080A788A:
- ldrb r1, [r6]
- movs r0, #8
- ands r0, r1
- cmp r0, #0
- beq _080A78A4
- ldrb r0, [r4, #0x10]
- movs r1, #0x80
- orrs r0, r1
- strb r0, [r4, #0x10]
- adds r0, r4, #0
- bl sub_080A7B98
- b _080A78B4
-_080A78A4:
- ldrb r1, [r4, #0x10]
- movs r0, #0x7f
- ands r0, r1
- strb r0, [r4, #0x10]
- b _080A78B4
-_080A78AE:
- str r0, [r5, #0x2c]
- bl DeleteThisEntity
-_080A78B4:
- pop {r4, r5, r6, pc}
- .align 2, 0
-
- thumb_func_start sub_080A78B8
-sub_080A78B8: @ 0x080A78B8
- push {r4, r5, r6, r7, lr}
- mov r7, r8
- push {r7}
- adds r4, r0, #0
- adds r6, r1, #0
- ldr r0, _080A78E8 @ =gPlayerState
- ldrb r1, [r0, #0x1b]
- movs r0, #0x20
- ands r0, r1
- cmp r0, #0
- beq _080A78FC
- ldrb r0, [r6, #0x1e]
- subs r0, #0x6a
- strb r0, [r4, #0x1e]
- ldr r0, _080A78EC @ =gScreenTransition
- ldr r0, [r0]
- movs r1, #4
- ands r0, r1
- cmp r0, #0
- beq _080A78F0
- ldrb r1, [r4, #0x14]
- lsrs r1, r1, #1
- adds r1, #0xb1
- b _080A78F2
- .align 2, 0
-_080A78E8: .4byte gPlayerState
-_080A78EC: .4byte gScreenTransition
-_080A78F0:
- ldrb r1, [r4, #0x1e]
-_080A78F2:
- ldrh r2, [r4, #0x12]
- adds r0, r4, #0
- bl sub_080042D0
- b _080A7912
-_080A78FC:
- ldrb r0, [r6, #0x1e]
- subs r0, #0x6a
- ldrb r1, [r4, #0x1e]
- cmp r0, r1
- beq _080A7912
- strb r0, [r4, #0x1e]
- ldrb r1, [r4, #0x1e]
- ldrh r2, [r4, #0x12]
- adds r0, r4, #0
- bl sub_080042D0
-_080A7912:
- ldr r2, _080A792C @ =gPlayerState
- ldrb r1, [r2, #0x1b]
- movs r0, #0x40
- ands r0, r1
- adds r7, r2, #0
- cmp r0, #0
- beq _080A7930
- ldrb r1, [r4, #0x18]
- movs r0, #0x41
- rsbs r0, r0, #0
- ands r0, r1
- b _080A7958
- .align 2, 0
-_080A792C: .4byte gPlayerState
-_080A7930:
- ldrb r1, [r6, #0x14]
- movs r0, #2
- ands r0, r1
- cmp r0, #0
- beq _080A7946
- ldrb r0, [r6, #0x18]
- lsls r0, r0, #0x19
- lsrs r2, r0, #0x1f
- movs r0, #1
- eors r2, r0
- b _080A794C
-_080A7946:
- ldrb r0, [r6, #0x18]
- lsls r0, r0, #0x19
- lsrs r2, r0, #0x1f
-_080A794C:
- lsls r2, r2, #6
- ldrb r1, [r4, #0x18]
- movs r0, #0x41
- rsbs r0, r0, #0
- ands r0, r1
- orrs r0, r2
-_080A7958:
- strb r0, [r4, #0x18]
- adds r2, r4, #0
- adds r2, #0x41
- ldrb r1, [r2]
- movs r0, #0x80
- ands r0, r1
- mov r8, r2
- adds r5, r4, #0
- adds r5, #0x3d
- cmp r0, #0
- beq _080A7A1C
- adds r3, r6, #0
- adds r3, #0x3d
- ldrb r0, [r3]
- lsls r0, r0, #0x18
- cmp r0, #0
- beq _080A7980
- lsrs r0, r0, #0x18
- cmp r0, #0x81
- bne _080A79AE
-_080A7980:
- adds r2, r4, #0
- adds r2, #0x3d
- ldrb r0, [r2]
- movs r1, #0
- strb r0, [r3]
- adds r5, r4, #0
- adds r5, #0x3e
- ldrb r0, [r5]
- adds r3, r6, #0
- adds r3, #0x3e
- strb r0, [r3]
- movs r3, #0x42
- adds r3, r3, r4
- mov ip, r3
- ldrb r0, [r3]
- adds r3, r6, #0
- adds r3, #0x42
- strb r0, [r3]
- mov r0, ip
- strb r1, [r0]
- strb r1, [r5]
- strb r1, [r2]
- adds r5, r2, #0
-_080A79AE:
- ldr r0, [r7, #0x30]
- movs r1, #0x80
- lsls r1, r1, #0x14
- ands r0, r1
- cmp r0, #0
- beq _080A79C4
- ldrb r1, [r7, #0x1b]
- movs r0, #0x80
- orrs r0, r1
- strb r0, [r7, #0x1b]
- b _080A7A1C
-_080A79C4:
- ldrb r0, [r7, #0x1b]
- cmp r0, #0
- beq _080A7A1C
- mov r1, r8
- ldrb r0, [r1]
- movs r1, #0x7f
- ands r1, r0
- cmp r1, #0x43
- beq _080A79E6
- cmp r1, #0x43
- bgt _080A79E0
- cmp r1, #0xd
- beq _080A79E6
- b _080A7A08
-_080A79E0:
- cmp r1, #0x44
- bne _080A7A08
- b _080A7A1C
-_080A79E6:
- ldrb r1, [r7, #0x1b]
- movs r0, #8
- orrs r0, r1
- strb r0, [r7, #0x1b]
- adds r1, r6, #0
- adds r1, #0x42
- movs r0, #2
- strb r0, [r1]
- ldrb r1, [r7, #0x1b]
- movs r0, #0x20
- ands r0, r1
- cmp r0, #0
- bne _080A7A1C
- movs r0, #0xfe
- ands r0, r1
- strb r0, [r7, #0x1b]
- b _080A7A1C
-_080A7A08:
- ldrb r0, [r7, #0x1b]
- movs r1, #0xc0
- ands r1, r0
- cmp r1, #0
- bne _080A7A1C
- strb r1, [r7, #0x1b]
- strb r1, [r7, #4]
- str r1, [r7, #0x2c]
- bl DeleteThisEntity
-_080A7A1C:
- adds r1, r5, #0
- ldrb r0, [r1]
- movs r2, #0
- ldrsb r2, [r1, r2]
- cmp r2, #0
- beq _080A7A36
- cmp r2, #0
- ble _080A7A32
- subs r0, #1
- strb r0, [r1]
- b _080A7A36
-_080A7A32:
- adds r0, #1
- strb r0, [r5]
-_080A7A36:
- adds r0, r4, #0
- bl sub_080A7A54
- ldrb r0, [r4, #0x18]
- lsls r0, r0, #0x19
- cmp r0, #0
- bge _080A7A4C
- ldr r1, [r4, #0x48]
- ldrb r0, [r1]
- rsbs r0, r0, #0
- strb r0, [r1]
-_080A7A4C:
- pop {r3}
- mov r8, r3
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-
- thumb_func_start sub_080A7A54
-sub_080A7A54: @ 0x080A7A54
- ldr r1, _080A7A7C @ =gPlayerEntity
- ldrb r1, [r1, #0x1e]
- subs r1, #0x6a
- lsls r1, r1, #2
- ldr r2, _080A7A80 @ =gUnk_08129096
- adds r1, r1, r2
- ldr r3, [r0, #0x48]
- ldrb r2, [r1]
- strb r2, [r3]
- ldr r3, [r0, #0x48]
- ldrb r2, [r1, #1]
- strb r2, [r3, #1]
- ldr r3, [r0, #0x48]
- ldrb r2, [r1, #2]
- strb r2, [r3, #6]
- ldr r2, [r0, #0x48]
- ldrb r0, [r1, #3]
- strb r0, [r2, #7]
- bx lr
- .align 2, 0
-_080A7A7C: .4byte gPlayerEntity
-_080A7A80: .4byte gUnk_08129096
-
- thumb_func_start sub_080A7A84
-sub_080A7A84: @ 0x080A7A84
- push {r4, r5, r6, r7, lr}
- adds r4, r0, #0
- ldr r6, _080A7AE0 @ =gPlayerEntity
- adds r0, r6, #0
- adds r0, #0x5a
- ldrb r0, [r0]
- movs r1, #0xf
- ands r1, r0
- cmp r1, #0
- beq _080A7B8C
- ldr r2, _080A7AE4 @ =gUnk_08129072
- subs r0, r1, #1
- lsls r0, r0, #1
- adds r1, r0, r2
- movs r3, #0
- ldrsb r3, [r1, r3]
- adds r0, #1
- adds r0, r0, r2
- movs r5, #0
- ldrsb r5, [r0, r5]
- ldr r2, _080A7AE8 @ =gPlayerState
- ldrb r1, [r2, #0x1b]
- movs r0, #0xc0
- ands r0, r1
- adds r7, r2, #0
- cmp r0, #0
- bne _080A7AC4
- ldrb r0, [r6, #0x18]
- lsls r0, r0, #0x19
- cmp r0, #0
- bge _080A7AC4
- rsbs r3, r3, #0
-_080A7AC4:
- ldrb r0, [r4, #0xa]
- cmp r0, #0
- beq _080A7AEC
- movs r0, #0x2e
- ldrsh r2, [r4, r0]
- adds r2, r2, r3
- movs r1, #0x32
- ldrsh r3, [r4, r1]
- adds r3, r3, r5
- adds r0, r4, #0
- movs r1, #0
- bl sub_08008796
- b _080A7B8C
- .align 2, 0
-_080A7AE0: .4byte gPlayerEntity
-_080A7AE4: .4byte gUnk_08129072
-_080A7AE8: .4byte gPlayerState
-_080A7AEC:
- ldr r0, [r4, #0x34]
- cmp r0, #0
- bne _080A7B8C
- adds r0, r7, #0
- adds r0, #0xac
- ldrh r0, [r0]
- movs r1, #8
- ands r1, r0
- lsls r1, r1, #0x10
- lsrs r1, r1, #0x10
- rsbs r1, r1, #0
- lsrs r1, r1, #0x1f
- movs r0, #0x2e
- ldrsh r2, [r4, r0]
- adds r6, r3, #0
- adds r2, r2, r6
- movs r0, #0x32
- ldrsh r3, [r4, r0]
- adds r3, r3, r5
- adds r0, r4, #0
- bl sub_08008796
- cmp r0, #0
- bne _080A7B8C
- ldrb r2, [r7, #0x1b]
- cmp r2, #0
- beq _080A7B8C
- movs r0, #0xc0
- ands r0, r2
- cmp r0, #0
- bne _080A7B8C
- adds r0, r4, #0
- adds r1, r6, #0
- adds r2, r5, #0
- bl sub_080002B4
- cmp r0, #0x2e
- bne _080A7B4C
- ldr r0, _080A7B44 @ =gPlayerEntity
- ldr r1, _080A7B48 @ =0x00000119
- bl sub_0800449C
- b _080A7B54
- .align 2, 0
-_080A7B44: .4byte gPlayerEntity
-_080A7B48: .4byte 0x00000119
-_080A7B4C:
- ldr r0, _080A7B90 @ =gPlayerEntity
- movs r1, #0x74
- bl sub_0800449C
-_080A7B54:
- movs r0, #0xf
- movs r1, #0x1a
- movs r2, #0
- bl CreateObject
- adds r2, r0, #0
- cmp r2, #0
- beq _080A7B8C
- ldr r1, _080A7B94 @ =gUnk_0812908E
- ldrb r0, [r4, #0x14]
- adds r0, r0, r1
- ldrb r0, [r0]
- lsls r0, r0, #0x18
- asrs r0, r0, #0x18
- ldrh r3, [r4, #0x2e]
- adds r0, r0, r3
- strh r0, [r2, #0x2e]
- ldrb r0, [r4, #0x14]
- adds r0, #1
- adds r0, r0, r1
- ldrb r0, [r0]
- lsls r0, r0, #0x18
- asrs r0, r0, #0x18
- ldrh r1, [r4, #0x32]
- adds r0, r0, r1
- strh r0, [r2, #0x32]
- ldr r0, [r4, #0x34]
- str r0, [r2, #0x34]
-_080A7B8C:
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-_080A7B90: .4byte gPlayerEntity
-_080A7B94: .4byte gUnk_0812908E
-
- thumb_func_start sub_080A7B98
-sub_080A7B98: @ 0x080A7B98
- push {r4, r5, r6, r7, lr}
- mov r7, sl
- mov r6, sb
- mov r5, r8
- push {r5, r6, r7}
- adds r6, r0, #0
- ldr r0, _080A7BFC @ =gPlayerState
- adds r0, #0xac
- ldrh r1, [r0]
- movs r0, #8
- ands r0, r1
- lsls r0, r0, #0x10
- lsrs r0, r0, #0x10
- rsbs r0, r0, #0
- lsrs r0, r0, #0x1f
- mov sl, r0
- movs r7, #0x10
- rsbs r7, r7, #0
- movs r0, #0
-_080A7BBE:
- movs r5, #0x10
- rsbs r5, r5, #0
- movs r4, #0
- movs r1, #0x10
- adds r1, r1, r7
- mov sb, r1
- adds r0, #1
- mov r8, r0
-_080A7BCE:
- movs r0, #0x2e
- ldrsh r2, [r6, r0]
- adds r2, r2, r5
- movs r1, #0x32
- ldrsh r3, [r6, r1]
- adds r3, r3, r7
- adds r0, r6, #0
- mov r1, sl
- bl sub_08008796
- adds r5, #0x10
- adds r4, #1
- cmp r4, #2
- bls _080A7BCE
- mov r7, sb
- mov r0, r8
- cmp r0, #2
- bls _080A7BBE
- pop {r3, r4, r5}
- mov r8, r3
- mov sb, r4
- mov sl, r5
- pop {r4, r5, r6, r7, pc}
- .align 2, 0
-_080A7BFC: .4byte gPlayerState
thumb_func_start CreateItemEntity
CreateItemEntity: @ 0x080A7C00
diff --git a/asm/item/itemBomb.inc b/asm/item/itemBomb.inc
new file mode 100644
index 00000000..89f31822
--- /dev/null
+++ b/asm/item/itemBomb.inc
@@ -0,0 +1,231 @@
+ thumb_func_start ItemBomb
+ItemBomb: @ 0x08075FE0
+ push {lr}
+ ldr r3, _08075FF4 @ =gUnk_0811BD98
+ ldrb r2, [r0, #4]
+ lsls r2, r2, #2
+ adds r2, r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ pop {pc}
+ .align 2, 0
+_08075FF4: .4byte gUnk_0811BD98
+
+ thumb_func_start sub_08075FF8
+sub_08075FF8: @ 0x08075FF8
+ push {r4, r5, r6, r7, lr}
+ adds r6, r0, #0
+ adds r7, r1, #0
+ ldr r0, _08076018 @ =gPlayerState
+ ldrb r1, [r0, #2]
+ ldrb r0, [r0, #4]
+ orrs r0, r1
+ cmp r0, #0
+ bne _08076076
+ movs r5, #0
+ movs r0, #8
+ movs r1, #2
+ movs r2, #2
+ bl FindEntityInListBySubtype
+ b _08076026
+ .align 2, 0
+_08076018: .4byte gPlayerState
+_0807601C:
+ adds r5, #1
+ adds r0, r4, #0
+ movs r1, #2
+ bl FindNextEntityOfSameSubtype
+_08076026:
+ adds r4, r0, #0
+ cmp r4, #0
+ bne _0807601C
+ ldrb r0, [r6, #1]
+ movs r1, #1
+ cmp r0, #7
+ bne _08076036
+ movs r1, #3
+_08076036:
+ cmp r1, r5
+ bls _08076076
+ adds r0, r6, #0
+ movs r1, #2
+ bl CreatePlayerBomb
+ adds r4, r0, #0
+ cmp r4, #0
+ beq _08076076
+ ldr r0, _08076080 @ =gPlayerEntity
+ ldrb r2, [r0, #0x14]
+ movs r1, #6
+ ands r1, r2
+ ldr r2, _08076084 @ =gUnk_0811BDAC
+ adds r1, r1, r2
+ movs r2, #0
+ ldrsb r2, [r1, r2]
+ lsls r2, r2, #0x10
+ movs r3, #1
+ ldrsb r3, [r1, r3]
+ lsls r3, r3, #0x10
+ adds r1, r4, #0
+ bl PositionRelative
+ movs r0, #1
+ rsbs r0, r0, #0
+ bl ModBombs
+ movs r0, #0x82
+ lsls r0, r0, #1
+ bl SoundReq
+_08076076:
+ adds r0, r6, #0
+ adds r1, r7, #0
+ bl sub_08077E78
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_08076080: .4byte gPlayerEntity
+_08076084: .4byte gUnk_0811BDAC
+
+ thumb_func_start sub_08076088
+sub_08076088: @ 0x08076088
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ adds r4, r0, #0
+ adds r3, r1, #0
+ adds r5, r2, #0
+ cmp r3, #0
+ beq _080760AA
+ ldrb r0, [r3, #0x16]
+ movs r1, #1
+ ands r1, r0
+ cmp r1, #0
+ beq _080760A4
+ b _080761A0
+_080760A4:
+ movs r0, #2
+ strb r0, [r3, #0xc]
+ strb r1, [r3, #0xd]
+_080760AA:
+ str r3, [r4, #0x18]
+ ldr r0, _080760C4 @ =gPlayerState
+ ldr r0, [r0, #0x30]
+ movs r1, #8
+ ands r0, r1
+ cmp r0, #0
+ beq _080760CC
+ ldr r1, _080760C8 @ =0x00000928
+ adds r0, r4, #0
+ bl sub_08077DF4
+ b _080760D6
+ .align 2, 0
+_080760C4: .4byte gPlayerState
+_080760C8: .4byte 0x00000928
+_080760CC:
+ movs r1, #0xce
+ lsls r1, r1, #2
+ adds r0, r4, #0
+ bl sub_08077DF4
+_080760D6:
+ ldr r3, _08076130 @ =gPlayerState
+ movs r0, #0
+ mov r8, r0
+ movs r7, #3
+ strb r7, [r3, #5]
+ adds r0, r3, #0
+ adds r0, #0xa8
+ movs r6, #4
+ strb r6, [r0]
+ movs r0, #2
+ strb r0, [r4, #4]
+ movs r0, #0xf
+ strb r0, [r4, #0xf]
+ ldr r2, _08076134 @ =gPlayerEntity
+ movs r1, #0x79
+ adds r1, r1, r2
+ mov ip, r1
+ ldrb r1, [r1]
+ movs r0, #0x80
+ ands r0, r1
+ cmp r0, #0
+ beq _08076138
+ mov r1, r8
+ mov r0, ip
+ strb r1, [r0]
+ ldrb r0, [r2, #0x10]
+ movs r1, #0x80
+ orrs r0, r1
+ strb r0, [r2, #0x10]
+ strb r6, [r3, #5]
+ movs r1, #8
+ asrs r1, r5
+ mvns r1, r1
+ ldrb r2, [r3, #0xb]
+ adds r0, r1, #0
+ ands r0, r2
+ strb r0, [r3, #0xb]
+ ldrb r0, [r3, #0xa]
+ ands r1, r0
+ strb r1, [r3, #0xa]
+ strb r7, [r4, #4]
+ mov r0, r8
+ strb r0, [r4, #0xf]
+ b _0807614A
+ .align 2, 0
+_08076130: .4byte gPlayerState
+_08076134: .4byte gPlayerEntity
+_08076138:
+ movs r1, #8
+ asrs r1, r5
+ ldrb r2, [r3, #0xa]
+ adds r0, r1, #0
+ orrs r0, r2
+ strb r0, [r3, #0xa]
+ ldrb r0, [r3, #0xb]
+ orrs r1, r0
+ strb r1, [r3, #0xb]
+_0807614A:
+ adds r0, r4, #0
+ movs r1, #0x13
+ bl CreatePlayerBomb
+ adds r3, r0, #0
+ cmp r3, #0
+ bne _08076162
+ adds r0, r4, #0
+ adds r1, r5, #0
+ bl sub_08077F50
+ b _080761A0
+_08076162:
+ ldr r1, _08076194 @ =gPlayerEntity
+ str r3, [r1, #0x74]
+ movs r2, #0
+ strb r2, [r1, #0xf]
+ ldr r0, [r4, #0x18]
+ str r0, [r3, #0x54]
+ ldrb r0, [r1, #0x16]
+ strb r0, [r3, #0x16]
+ str r4, [r3, #0x50]
+ str r3, [r4, #0x18]
+ ldrb r0, [r4, #3]
+ strb r0, [r3, #0xb]
+ ldrb r0, [r4, #7]
+ strb r0, [r3, #0xe]
+ ldrb r0, [r4, #8]
+ strb r0, [r3, #0xf]
+ ldr r0, [r4, #0x18]
+ ldrb r1, [r0, #0x16]
+ movs r0, #0xf0
+ ands r0, r1
+ cmp r0, #0x10
+ bne _08076198
+ movs r0, #8
+ strb r0, [r4, #7]
+ b _0807619A
+ .align 2, 0
+_08076194: .4byte gPlayerEntity
+_08076198:
+ strb r2, [r4, #7]
+_0807619A:
+ movs r0, #0x7f
+ bl SoundReq
+_080761A0:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
diff --git a/asm/item/itemBoomerang.inc b/asm/item/itemBoomerang.inc
new file mode 100644
index 00000000..a56088a0
--- /dev/null
+++ b/asm/item/itemBoomerang.inc
@@ -0,0 +1,101 @@
+ thumb_func_start ItemBoomerang
+ItemBoomerang: @ 0x08075D14
+ push {lr}
+ ldr r3, _08075D28 @ =gUnk_0811BD78
+ ldrb r2, [r0, #4]
+ lsls r2, r2, #2
+ adds r2, r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ pop {pc}
+ .align 2, 0
+_08075D28: .4byte gUnk_0811BD78
+
+ thumb_func_start sub_08075D2C
+sub_08075D2C: @ 0x08075D2C
+ push {r4, r5, r6, lr}
+ adds r4, r0, #0
+ adds r6, r1, #0
+ ldr r5, _08075D74 @ =gPlayerState
+ ldrb r1, [r5, #4]
+ movs r0, #8
+ ands r0, r1
+ cmp r0, #0
+ bne _08075D7C
+ ldrb r1, [r4, #1]
+ adds r0, r4, #0
+ bl sub_08077C94
+ cmp r0, #0
+ bne _08075D7C
+ ldrb r1, [r4, #9]
+ movs r0, #0xf
+ orrs r0, r1
+ strb r0, [r4, #9]
+ ldr r0, _08075D78 @ =gPlayerEntity
+ bl sub_0806F948
+ adds r0, r4, #0
+ movs r1, #0xb
+ bl sub_08077C0C
+ adds r0, r4, #0
+ adds r1, r6, #0
+ bl sub_08077D38
+ ldrb r1, [r5, #4]
+ movs r0, #8
+ orrs r0, r1
+ strb r0, [r5, #4]
+ b _08075D84
+ .align 2, 0
+_08075D74: .4byte gPlayerState
+_08075D78: .4byte gPlayerEntity
+_08075D7C:
+ adds r0, r4, #0
+ adds r1, r6, #0
+ bl sub_08077E78
+_08075D84:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start sub_08075D88
+sub_08075D88: @ 0x08075D88
+ push {r4, r5, lr}
+ adds r4, r0, #0
+ adds r5, r1, #0
+ ldr r2, _08075DBC @ =gPlayerState
+ ldrb r1, [r2, #4]
+ movs r3, #0x80
+ adds r0, r3, #0
+ ands r0, r1
+ cmp r0, #0
+ bne _08075DD0
+ ldrb r0, [r4, #1]
+ cmp r0, #0xc
+ bne _08075DC0
+ ldrb r1, [r2, #0xa]
+ adds r0, r3, #0
+ ands r0, r1
+ cmp r0, #0
+ beq _08075DC0
+ ldrb r1, [r4, #0xe]
+ movs r0, #2
+ ands r0, r1
+ cmp r0, #0
+ beq _08075DC0
+ bl sub_08078F60
+ b _08075DD8
+ .align 2, 0
+_08075DBC: .4byte gPlayerState
+_08075DC0:
+ adds r0, r4, #0
+ bl UpdateItemAnim
+ ldrb r1, [r4, #0xe]
+ movs r0, #0x80
+ ands r0, r1
+ cmp r0, #0
+ beq _08075DD8
+_08075DD0:
+ adds r0, r4, #0
+ adds r1, r5, #0
+ bl sub_08077E78
+_08075DD8:
+ pop {r4, r5, pc}
+ .align 2, 0
diff --git a/asm/item/itemBow.inc b/asm/item/itemBow.inc
new file mode 100644
index 00000000..ee915297
--- /dev/null
+++ b/asm/item/itemBow.inc
@@ -0,0 +1,264 @@
+ thumb_func_start ItemBow
+ItemBow: @ 0x08075DDC
+ push {lr}
+ ldr r3, _08075DF0 @ =gUnk_0811BD80
+ ldrb r2, [r0, #4]
+ lsls r2, r2, #2
+ adds r2, r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ pop {pc}
+ .align 2, 0
+_08075DF0: .4byte gUnk_0811BD80
+
+ thumb_func_start sub_08075DF4
+sub_08075DF4: @ 0x08075DF4
+ push {r4, r5, r6, lr}
+ adds r4, r0, #0
+ adds r5, r1, #0
+ ldr r6, _08075E2C @ =gPlayerState
+ ldrb r1, [r6, #4]
+ movs r0, #8
+ ands r0, r1
+ cmp r0, #0
+ bne _08075E34
+ ldrb r1, [r4, #9]
+ movs r0, #0x80
+ orrs r0, r1
+ strb r0, [r4, #9]
+ ldr r0, _08075E30 @ =gPlayerEntity
+ bl sub_0806F948
+ adds r0, r4, #0
+ bl sub_08077BB8
+ adds r0, r4, #0
+ adds r1, r5, #0
+ bl sub_08077D38
+ adds r1, r6, #0
+ adds r1, #0x21
+ movs r0, #1
+ strb r0, [r1]
+ b _08075E3C
+ .align 2, 0
+_08075E2C: .4byte gPlayerState
+_08075E30: .4byte gPlayerEntity
+_08075E34:
+ adds r0, r4, #0
+ adds r1, r5, #0
+ bl sub_08077E78
+_08075E3C:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start sub_08075E40
+sub_08075E40: @ 0x08075E40
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ adds r4, r0, #0
+ mov r8, r1
+ ldr r0, _08075EA0 @ =gPlayerState
+ adds r1, r0, #0
+ adds r1, #0x21
+ ldrb r1, [r1]
+ adds r6, r0, #0
+ cmp r1, #0
+ beq _08075EA8
+ ldrb r1, [r6, #4]
+ movs r5, #0x80
+ adds r0, r5, #0
+ ands r0, r1
+ lsls r0, r0, #0x18
+ lsrs r7, r0, #0x18
+ cmp r7, #0
+ bne _08075EA8
+ adds r0, r4, #0
+ bl UpdateItemAnim
+ ldrb r1, [r4, #0xe]
+ adds r0, r5, #0
+ ands r0, r1
+ cmp r0, #0
+ beq _08075EB8
+ movs r0, #2
+ strb r0, [r4, #4]
+ ldrb r1, [r4, #9]
+ movs r0, #0x7f
+ ands r0, r1
+ strb r0, [r4, #9]
+ ldr r0, _08075EA4 @ =gSave
+ adds r0, #0xad
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _08075EB8
+ strb r7, [r4, #0xf]
+ movs r1, #8
+ mov r0, r8
+ asrs r1, r0
+ ldrb r0, [r6, #0xa]
+ bics r0, r1
+ strb r0, [r6, #0xa]
+ b _08075EB8
+ .align 2, 0
+_08075EA0: .4byte gPlayerState
+_08075EA4: .4byte gSave
+_08075EA8:
+ adds r1, r6, #0
+ adds r1, #0x21
+ movs r0, #0
+ strb r0, [r1]
+ adds r0, r4, #0
+ mov r1, r8
+ bl sub_08077E78
+_08075EB8:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start sub_08075EC0
+sub_08075EC0: @ 0x08075EC0
+ push {r4, r5, r6, lr}
+ adds r4, r0, #0
+ adds r6, r1, #0
+ ldr r0, _08075F04 @ =gSave
+ adds r0, #0xad
+ ldrb r5, [r0]
+ adds r0, r4, #0
+ bl sub_08077EFC
+ cmp r0, #0
+ beq _08075F0C
+ cmp r5, #0
+ beq _08075F0C
+ ldr r2, _08075F08 @ =gPlayerState
+ ldrb r1, [r2, #4]
+ movs r0, #0x80
+ ands r0, r1
+ cmp r0, #0
+ bne _08075EF0
+ adds r0, r2, #0
+ adds r0, #0x21
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _08075F32
+_08075EF0:
+ adds r1, r2, #0
+ adds r1, #0x21
+ movs r0, #0
+ strb r0, [r1]
+ adds r0, r4, #0
+ adds r1, r6, #0
+ bl sub_08077E78
+ b _08075F32
+ .align 2, 0
+_08075F04: .4byte gSave
+_08075F08: .4byte gPlayerState
+_08075F0C:
+ ldr r2, _08075F34 @ =gPlayerState
+ movs r0, #8
+ asrs r0, r6
+ ldrb r1, [r2, #0xa]
+ orrs r0, r1
+ strb r0, [r2, #0xa]
+ movs r1, #0x9f
+ lsls r1, r1, #2
+ adds r0, r4, #0
+ bl sub_08077DF4
+ movs r1, #0xf
+ movs r0, #0xf
+ strb r0, [r4, #0xf]
+ ldrb r0, [r4, #9]
+ orrs r1, r0
+ strb r1, [r4, #9]
+ movs r0, #3
+ strb r0, [r4, #4]
+_08075F32:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_08075F34: .4byte gPlayerState
+
+ thumb_func_start sub_08075F38
+sub_08075F38: @ 0x08075F38
+ push {r4, lr}
+ adds r4, r0, #0
+ adds r3, r1, #0
+ ldr r2, _08075F6C @ =gPlayerState
+ ldrb r1, [r2, #4]
+ movs r0, #0x80
+ ands r0, r1
+ cmp r0, #0
+ bne _08075F70
+ adds r0, r2, #0
+ adds r0, #0x21
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _08075F70
+ adds r0, r4, #0
+ bl UpdateItemAnim
+ ldrb r1, [r4, #0xe]
+ movs r0, #1
+ ands r0, r1
+ cmp r0, #0
+ beq _08075F80
+ movs r0, #4
+ strb r0, [r4, #4]
+ b _08075F80
+ .align 2, 0
+_08075F6C: .4byte gPlayerState
+_08075F70:
+ adds r1, r2, #0
+ adds r1, #0x21
+ movs r0, #0
+ strb r0, [r1]
+ adds r0, r4, #0
+ adds r1, r3, #0
+ bl sub_08077E78
+_08075F80:
+ pop {r4, pc}
+ .align 2, 0
+
+ thumb_func_start sub_08075F84
+sub_08075F84: @ 0x08075F84
+ push {r4, r5, lr}
+ adds r4, r0, #0
+ adds r5, r1, #0
+ ldr r2, _08075FB4 @ =gPlayerState
+ ldrb r1, [r2, #4]
+ movs r0, #0x80
+ ands r0, r1
+ cmp r0, #0
+ bne _08075FC8
+ adds r0, r2, #0
+ adds r0, #0x21
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq _08075FC8
+ movs r0, #0x70
+ bl GetInventoryValue
+ cmp r0, #1
+ bne _08075FB8
+ adds r0, r4, #0
+ movs r1, #5
+ bl sub_08077E3C
+ b _08075FBE
+ .align 2, 0
+_08075FB4: .4byte gPlayerState
+_08075FB8:
+ adds r0, r4, #0
+ bl UpdateItemAnim
+_08075FBE:
+ ldrb r1, [r4, #0xe]
+ movs r0, #0x80
+ ands r0, r1
+ cmp r0, #0
+ beq _08075FD8
+_08075FC8:
+ ldr r0, _08075FDC @ =gPlayerState
+ adds r0, #0x21
+ movs r1, #0
+ strb r1, [r0]
+ adds r0, r4, #0
+ adds r1, r5, #0
+ bl sub_08077E78
+_08075FD8:
+ pop {r4, r5, pc}
+ .align 2, 0
+_08075FDC: .4byte gPlayerState
diff --git a/asm/item/itemDebug.inc b/asm/item/itemDebug.inc
new file mode 100644
index 00000000..57e628f6
--- /dev/null
+++ b/asm/item/itemDebug.inc
@@ -0,0 +1,10 @@
+ thumb_func_start ItemDebug
+ItemDebug: @ 0x08075300
+ push {r4, r5, lr}
+ adds r4, r0, #0
+ adds r5, r1, #0
+ bl sub_08077BD4
+ adds r0, r4, #0
+ adds r1, r5, #0
+ bl sub_08077E78
+ pop {r4, r5, pc}
diff --git a/asm/item/itemGustJar.inc b/asm/item/itemGustJar.inc
new file mode 100644
index 00000000..b2c311c2
--- /dev/null
+++ b/asm/item/itemGustJar.inc
@@ -0,0 +1,396 @@
+ thumb_func_start sub_08076DF4
+sub_08076DF4: @ 0x08076DF4
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ adds r4, r0, #0
+ adds r7, r1, #0
+ ldr r0, _08076E48 @ =gPlayerEntity
+ mov r8, r0
+ bl sub_0807A894
+ cmp r0, #0x29
+ beq _08076E50
+ ldr r6, _08076E4C @ =gPlayerState
+ ldrb r0, [r6, #0x12]
+ cmp r0, #0x12
+ beq _08076E50
+ cmp r0, #0x13
+ beq _08076E50
+ ldrb r5, [r6, #2]
+ cmp r5, #0
+ bne _08076E50
+ adds r0, r4, #0
+ adds r1, r7, #0
+ bl sub_08077D38
+ strb r5, [r4, #7]
+ mov r1, r8
+ ldrb r0, [r1, #0x14]
+ strb r0, [r4, #0xa]
+ ldrb r1, [r4, #9]
+ movs r0, #0x80
+ orrs r0, r1
+ adds r0, #1
+ strb r0, [r4, #9]
+ movs r0, #1
+ strb r0, [r6, #0x1d]
+ mov r1, r8
+ str r5, [r1, #0x74]
+ strb r0, [r6, #0x1c]
+ adds r0, r4, #0
+ bl sub_08077BB8
+ b _08076E58
+ .align 2, 0
+_08076E48: .4byte gPlayerEntity
+_08076E4C: .4byte gPlayerState
+_08076E50:
+ adds r0, r4, #0
+ adds r1, r7, #0
+ bl sub_08077E78
+_08076E58:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start sub_08076E60
+sub_08076E60: @ 0x08076E60
+ push {r4, r5, r6, lr}
+ adds r4, r0, #0
+ adds r6, r1, #0
+ ldr r5, _08076EB4 @ =gPlayerState
+ ldrb r1, [r5, #0x1c]
+ movs r0, #0xf
+ ands r0, r1
+ cmp r0, #0
+ bne _08076E7A
+ adds r0, r4, #0
+ adds r1, r6, #0
+ bl sub_08077E78
+_08076E7A:
+ ldrb r1, [r4, #0xe]
+ movs r0, #0x80
+ ands r0, r1
+ cmp r0, #0
+ beq _08076EC0
+ movs r0, #2
+ strb r0, [r4, #4]
+ ldr r1, _08076EB8 @ =0x00000504
+ adds r0, r4, #0
+ bl sub_08077DF4
+ movs r1, #8
+ asrs r1, r6
+ ldrb r0, [r5, #0xa]
+ bics r0, r1
+ strb r0, [r5, #0xa]
+ movs r0, #0x10
+ movs r1, #0
+ movs r2, #0
+ movs r3, #0
+ bl CreatePlayerItem
+ adds r1, r0, #0
+ cmp r1, #0
+ beq _08076EC6
+ ldr r0, _08076EBC @ =gPlayerEntity
+ str r0, [r1, #0x50]
+ b _08076EC6
+ .align 2, 0
+_08076EB4: .4byte gPlayerState
+_08076EB8: .4byte 0x00000504
+_08076EBC: .4byte gPlayerEntity
+_08076EC0:
+ adds r0, r4, #0
+ bl UpdateItemAnim
+_08076EC6:
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start sub_08076EC8
+sub_08076EC8: @ 0x08076EC8
+ push {r4, r5, r6, lr}
+ adds r4, r0, #0
+ adds r6, r1, #0
+ ldr r5, _08076EE4 @ =gPlayerState
+ ldrb r1, [r5, #0x1c]
+ movs r0, #0xf
+ ands r0, r1
+ cmp r0, #0
+ bne _08076EE8
+ adds r0, r4, #0
+ adds r1, r6, #0
+ bl sub_08077E78
+ b _08076F60
+ .align 2, 0
+_08076EE4: .4byte gPlayerState
+_08076EE8:
+ adds r0, r4, #0
+ bl sub_08077EFC
+ cmp r0, #0
+ beq _08076F50
+ ldrb r0, [r4, #7]
+ cmp r0, #0xef
+ bls _08076EFC
+ movs r0, #3
+ b _08076F0E
+_08076EFC:
+ adds r0, #1
+ strb r0, [r4, #7]
+ lsls r0, r0, #0x18
+ lsrs r0, r0, #0x18
+ cmp r0, #0x77
+ bls _08076F0C
+ movs r0, #2
+ b _08076F0E
+_08076F0C:
+ movs r0, #1
+_08076F0E:
+ strb r0, [r5, #0x1d]
+ ldr r0, _08076F1C @ =gPlayerEntity
+ ldrb r0, [r0, #0xd]
+ cmp r0, #0x1b
+ bne _08076F24
+ ldr r1, _08076F20 @ =0x00000524
+ b _08076F36
+ .align 2, 0
+_08076F1C: .4byte gPlayerEntity
+_08076F20: .4byte 0x00000524
+_08076F24:
+ ldr r0, _08076F44 @ =gPlayerState
+ ldrb r1, [r0, #0xd]
+ movs r0, #0x80
+ ands r0, r1
+ movs r1, #0xa3
+ lsls r1, r1, #3
+ cmp r0, #0
+ beq _08076F36
+ subs r1, #0x14
+_08076F36:
+ ldrh r0, [r4, #0x10]
+ cmp r1, r0
+ beq _08076F48
+ adds r0, r4, #0
+ bl sub_08077DF4
+ b _08076F60
+ .align 2, 0
+_08076F44: .4byte gPlayerState
+_08076F48:
+ adds r0, r4, #0
+ bl UpdateItemAnim
+ b _08076F60
+_08076F50:
+ ldrb r0, [r4, #4]
+ adds r0, #1
+ strb r0, [r4, #4]
+ movs r0, #8
+ asrs r0, r6
+ ldrb r1, [r5, #0xa]
+ orrs r0, r1
+ strb r0, [r5, #0xa]
+_08076F60:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start sub_08076F64
+sub_08076F64: @ 0x08076F64
+ push {r4, r5, r6, lr}
+ adds r4, r0, #0
+ adds r6, r1, #0
+ ldr r1, _08076F84 @ =gPlayerState
+ ldrb r0, [r1, #0x1c]
+ movs r2, #0xf
+ ands r2, r0
+ adds r3, r1, #0
+ cmp r2, #7
+ bls _08076F7A
+ b _080770EC
+_08076F7A:
+ lsls r0, r2, #2
+ ldr r1, _08076F88 @ =_08076F8C
+ adds r0, r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08076F84: .4byte gPlayerState
+_08076F88: .4byte _08076F8C
+_08076F8C: @ jump table
+ .4byte _08077100 @ case 0
+ .4byte _080770EC @ case 1
+ .4byte _080770EC @ case 2
+ .4byte _0807704C @ case 3
+ .4byte _08077052 @ case 4
+ .4byte _08076FAC @ case 5
+ .4byte _080770B8 @ case 6
+ .4byte _080770D0 @ case 7
+_08076FAC:
+ ldrb r1, [r4, #0xe]
+ movs r5, #0x80
+ adds r0, r5, #0
+ ands r0, r1
+ cmp r0, #0
+ beq _0807700E
+ ldrb r0, [r4, #8]
+ cmp r0, #0
+ beq _08077004
+ movs r0, #0
+ strb r0, [r4, #8]
+ strb r0, [r4, #7]
+ movs r1, #1
+ strb r1, [r3, #0x1d]
+ ldr r5, _08076FFC @ =gPlayerEntity
+ str r0, [r5, #0x74]
+ strb r1, [r3, #0x1c]
+ movs r1, #8
+ asrs r1, r6
+ ldrb r0, [r3, #0xa]
+ bics r0, r1
+ strb r0, [r3, #0xa]
+ movs r0, #2
+ strb r0, [r4, #4]
+ ldr r1, _08077000 @ =0x00000504
+ adds r0, r4, #0
+ bl sub_08077DF4
+ movs r0, #0x10
+ movs r1, #0
+ movs r2, #0
+ movs r3, #0
+ bl CreatePlayerItem
+ cmp r0, #0
+ bne _08076FF6
+ b _08077110
+_08076FF6:
+ str r5, [r0, #0x50]
+ b _08077110
+ .align 2, 0
+_08076FFC: .4byte gPlayerEntity
+_08077000: .4byte 0x00000504
+_08077004:
+ movs r0, #6
+ strb r0, [r3, #0x1c]
+ movs r1, #0xa2
+ lsls r1, r1, #3
+ b _080770F2
+_0807700E:
+ adds r0, r4, #0
+ bl sub_08077EFC
+ cmp r0, #0
+ beq _0807701C
+ movs r0, #1
+ strb r0, [r4, #8]
+_0807701C:
+ adds r0, r4, #0
+ bl UpdateItemAnim
+ ldr r0, _08077044 @ =gPlayerState
+ ldr r0, [r0, #0x30]
+ movs r1, #2
+ ands r0, r1
+ cmp r0, #0
+ bne _08077110
+ ldr r0, _08077048 @ =gPlayerEntity
+ ldrb r1, [r0, #0x14]
+ lsls r1, r1, #2
+ movs r2, #0x10
+ eors r1, r2
+ strb r1, [r0, #0x15]
+ strh r5, [r0, #0x24]
+ bl sub_08079E08
+ b _08077110
+ .align 2, 0
+_08077044: .4byte gPlayerState
+_08077048: .4byte gPlayerEntity
+_0807704C:
+ ldr r1, _080770B0 @ =gPlayerState
+ movs r0, #4
+ strb r0, [r1, #0x1c]
+_08077052:
+ adds r0, r4, #0
+ bl sub_08077EFC
+ cmp r0, #0
+ beq _08077060
+ movs r0, #1
+ strb r0, [r4, #8]
+_08077060:
+ adds r0, r4, #0
+ bl UpdateItemAnim
+ ldrb r1, [r4, #0xe]
+ movs r0, #1
+ ands r0, r1
+ cmp r0, #0
+ beq _0807708C
+ ldr r1, _080770B0 @ =gPlayerState
+ movs r2, #0
+ movs r0, #5
+ strb r0, [r1, #0x1c]
+ ldr r0, _080770B4 @ =gPlayerEntity
+ str r2, [r0, #0x70]
+ ldrb r0, [r1, #0x1d]
+ cmp r0, #0
+ beq _0807708C
+ movs r0, #0x11
+ movs r1, #0
+ movs r3, #0
+ bl CreatePlayerItem
+_0807708C:
+ ldr r0, _080770B0 @ =gPlayerState
+ ldr r0, [r0, #0x30]
+ movs r1, #2
+ ands r0, r1
+ cmp r0, #0
+ bne _08077110
+ ldr r2, _080770B4 @ =gPlayerEntity
+ ldrb r0, [r2, #0x14]
+ lsls r0, r0, #2
+ movs r1, #0x10
+ eors r0, r1
+ strb r0, [r2, #0x15]
+ movs r0, #0x80
+ strh r0, [r2, #0x24]
+ bl sub_08079E08
+ b _08077110
+ .align 2, 0
+_080770B0: .4byte gPlayerState
+_080770B4: .4byte gPlayerEntity
+_080770B8:
+ adds r0, r4, #0
+ bl UpdateItemAnim
+ ldrb r1, [r4, #0xe]
+ movs r0, #0x80
+ ands r0, r1
+ cmp r0, #0
+ beq _08077110
+ ldr r3, _080770CC @ =gPlayerState
+ b _08077100
+ .align 2, 0
+_080770CC: .4byte gPlayerState
+_080770D0:
+ ldr r1, _080770E4 @ =0x00000514
+ adds r0, r4, #0
+ bl sub_08077DF4
+ ldr r1, _080770E8 @ =gPlayerState
+ movs r2, #0
+ movs r0, #3
+ strb r0, [r1, #0x1c]
+ strb r2, [r1, #0x1d]
+ b _08077110
+ .align 2, 0
+_080770E4: .4byte 0x00000514
+_080770E8: .4byte gPlayerState
+_080770EC:
+ movs r0, #3
+ strb r0, [r3, #0x1c]
+ ldr r1, _080770FC @ =0x00000514
+_080770F2:
+ adds r0, r4, #0
+ bl sub_08077DF4
+ b _08077110
+ .align 2, 0
+_080770FC: .4byte 0x00000514
+_08077100:
+ movs r1, #0
+ strb r1, [r3, #0x1c]
+ ldr r0, _08077114 @ =gPlayerEntity
+ str r1, [r0, #0x70]
+ adds r0, r4, #0
+ adds r1, r6, #0
+ bl sub_08077E78
+_08077110:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_08077114: .4byte gPlayerEntity
diff --git a/asm/item/itemJarEmpty.inc b/asm/item/itemJarEmpty.inc
new file mode 100644
index 00000000..66085890
--- /dev/null
+++ b/asm/item/itemJarEmpty.inc
@@ -0,0 +1,176 @@
+ thumb_func_start ItemJarEmpty
+ItemJarEmpty: @ 0x0807751C
+ push {lr}
+ ldr r3, _08077530 @ =gUnk_0811BE28
+ ldrb r2, [r0, #4]
+ lsls r2, r2, #2
+ adds r2, r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ pop {pc}
+ .align 2, 0
+_08077530: .4byte gUnk_0811BE28
+
+ thumb_func_start sub_08077534
+sub_08077534: @ 0x08077534
+ push {r4, lr}
+ adds r4, r0, #0
+ bl sub_08077D38
+ ldr r0, _08077570 @ =gPlayerEntity
+ bl sub_0806F948
+ adds r0, r4, #0
+ bl sub_08077BB8
+ ldrb r1, [r4, #9]
+ movs r0, #0xf
+ orrs r0, r1
+ strb r0, [r4, #9]
+ ldrb r1, [r4, #1]
+ ldr r0, _08077574 @ =gSave
+ adds r0, r0, r1
+ adds r0, #0x9a
+ ldrb r0, [r0]
+ strb r0, [r4, #7]
+ ldrb r0, [r4, #7]
+ subs r0, #0x20
+ cmp r0, #0x11
+ bhi _080775F8
+ lsls r0, r0, #2
+ ldr r1, _08077578 @ =_0807757C
+ adds r0, r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08077570: .4byte gPlayerEntity
+_08077574: .4byte gSave
+_08077578: .4byte _0807757C
+_0807757C: @ jump table
+ .4byte _080775C4 @ case 0
+ .4byte _080775D4 @ case 1
+ .4byte _080775D4 @ case 2
+ .4byte _080775D4 @ case 3
+ .4byte _080775D4 @ case 4
+ .4byte _080775D4 @ case 5
+ .4byte _080775F8 @ case 6
+ .4byte _080775F8 @ case 7
+ .4byte _080775F8 @ case 8
+ .4byte _080775D4 @ case 9
+ .4byte _080775D4 @ case 10
+ .4byte _080775D4 @ case 11
+ .4byte _080775D4 @ case 12
+ .4byte _080775D4 @ case 13
+ .4byte _080775D4 @ case 14
+ .4byte _080775F8 @ case 15
+ .4byte _080775F8 @ case 16
+ .4byte _080775F8 @ case 17
+_080775C4:
+ ldr r1, _080775D0 @ =0x00000614
+ adds r0, r4, #0
+ bl sub_08077DF4
+ b _08077610
+ .align 2, 0
+_080775D0: .4byte 0x00000614
+_080775D4:
+ movs r0, #3
+ strb r0, [r4, #4]
+ ldr r1, _080775F0 @ =gPlayerEntity
+ movs r0, #4
+ strb r0, [r1, #0x14]
+ ldrb r2, [r1, #0x18]
+ subs r0, #0x45
+ ands r0, r2
+ strb r0, [r1, #0x18]
+ ldr r1, _080775F4 @ =0x000002DF
+ adds r0, r4, #0
+ bl sub_08077DF4
+ b _08077606
+ .align 2, 0
+_080775F0: .4byte gPlayerEntity
+_080775F4: .4byte 0x000002DF
+_080775F8:
+ movs r0, #3
+ strb r0, [r4, #4]
+ movs r1, #0xc2
+ lsls r1, r1, #3
+ adds r0, r4, #0
+ bl sub_08077DF4
+_08077606:
+ ldr r2, _08077614 @ =gPlayerEntity
+ ldrb r1, [r2, #0x10]
+ movs r0, #0x7f
+ ands r0, r1
+ strb r0, [r2, #0x10]
+_08077610:
+ pop {r4, pc}
+ .align 2, 0
+_08077614: .4byte gPlayerEntity
+
+ thumb_func_start sub_08077618
+sub_08077618: @ 0x08077618
+ push {r4, lr}
+ adds r4, r0, #0
+ ldrb r1, [r4, #0xe]
+ movs r0, #0x80
+ ands r0, r1
+ cmp r0, #0
+ beq _08077638
+ movs r1, #0xc3
+ lsls r1, r1, #3
+ adds r0, r4, #0
+ bl sub_08077DF4
+ ldrb r0, [r4, #4]
+ adds r0, #1
+ strb r0, [r4, #4]
+ b _0807763E
+_08077638:
+ adds r0, r4, #0
+ bl UpdateItemAnim
+_0807763E:
+ pop {r4, pc}
+
+ thumb_func_start sub_08077640
+sub_08077640: @ 0x08077640
+ push {r4, r5, lr}
+ adds r4, r0, #0
+ adds r5, r1, #0
+ bl UpdateItemAnim
+ ldrb r1, [r4, #0xe]
+ movs r0, #0x80
+ ands r0, r1
+ cmp r0, #0
+ beq _08077666
+ ldr r2, _08077668 @ =gPlayerEntity
+ ldrb r1, [r2, #0x10]
+ movs r0, #0x80
+ orrs r0, r1
+ strb r0, [r2, #0x10]
+ adds r0, r4, #0
+ adds r1, r5, #0
+ bl sub_08077E78
+_08077666:
+ pop {r4, r5, pc}
+ .align 2, 0
+_08077668: .4byte gPlayerEntity
+
+ thumb_func_start sub_0807766C
+sub_0807766C: @ 0x0807766C
+ push {r4, r5, lr}
+ adds r4, r0, #0
+ adds r5, r1, #0
+ bl UpdateItemAnim
+ ldrb r1, [r4, #0xe]
+ movs r0, #0x80
+ ands r0, r1
+ cmp r0, #0
+ beq _08077692
+ ldr r2, _08077694 @ =gPlayerEntity
+ ldrb r1, [r2, #0x10]
+ movs r0, #0x80
+ orrs r0, r1
+ strb r0, [r2, #0x10]
+ adds r0, r4, #0
+ adds r1, r5, #0
+ bl sub_08077E78
+_08077692:
+ pop {r4, r5, pc}
+ .align 2, 0
+_08077694: .4byte gPlayerEntity
diff --git a/asm/item/itemLantern.inc b/asm/item/itemLantern.inc
new file mode 100644
index 00000000..9919a4ac
--- /dev/null
+++ b/asm/item/itemLantern.inc
@@ -0,0 +1,390 @@
+ thumb_func_start ItemLantern
+ItemLantern: @ 0x080759F4
+ push {lr}
+ ldr r3, _08075A08 @ =gUnk_0811BD68
+ ldrb r2, [r0, #4]
+ lsls r2, r2, #2
+ adds r2, r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ pop {pc}
+ .align 2, 0
+_08075A08: .4byte gUnk_0811BD68
+
+ thumb_func_start sub_08075A0C
+sub_08075A0C: @ 0x08075A0C
+ push {r4, r5, r6, lr}
+ adds r4, r0, #0
+ adds r5, r1, #0
+ ldrb r0, [r4, #1]
+ bl IsItemEquipped
+ adds r6, r0, #0
+ ldr r1, _08075A64 @ =gPlayerState
+ ldrb r0, [r1, #5]
+ cmp r0, #0
+ bne _08075A3E
+ ldrb r0, [r1, #0xc]
+ cmp r0, #0x18
+ beq _08075A3E
+ ldrb r0, [r1, #2]
+ cmp r0, #0
+ bne _08075A3E
+ ldr r0, [r1, #0x2c]
+ cmp r0, #0
+ bne _08075A3E
+ ldr r0, [r1, #0x30]
+ movs r1, #0x80
+ ands r0, r1
+ cmp r0, #0
+ beq _08075A6C
+_08075A3E:
+ movs r0, #0xf
+ adds r1, r6, #0
+ bl ForceEquipItem
+ ldr r0, _08075A64 @ =gPlayerState
+ ldr r1, [r0, #0x30]
+ ldr r2, _08075A68 @ =0xFF7FFFFF
+ ands r1, r2
+ str r1, [r0, #0x30]
+ movs r0, #0xf
+ adds r1, r6, #0
+ bl ForceEquipItem
+ adds r0, r4, #0
+ adds r1, r5, #0
+ bl sub_08077E78
+ b _08075AD0
+ .align 2, 0
+_08075A64: .4byte gPlayerState
+_08075A68: .4byte 0xFF7FFFFF
+_08075A6C:
+ ldrb r1, [r4, #9]
+ movs r0, #0x80
+ orrs r0, r1
+ strb r0, [r4, #9]
+ adds r0, r4, #0
+ adds r1, r5, #0
+ bl sub_08077D38
+ adds r0, r4, #0
+ bl sub_08077BD4
+ ldr r5, _08075AD4 @ =gPlayerEntity
+ adds r0, r5, #0
+ bl sub_0806F948
+ movs r0, #0x10
+ strb r0, [r4, #1]
+ adds r1, r6, #0
+ bl ForceEquipItem
+ ldrb r1, [r5, #0x14]
+ movs r0, #6
+ ands r0, r1
+ ldr r1, _08075AD8 @ =gUnk_08126EEC
+ adds r4, r0, r1
+ adds r0, r5, #0
+ movs r1, #0x45
+ movs r2, #1
+ movs r3, #0
+ bl CreateObjectWithParent
+ adds r2, r0, #0
+ cmp r2, #0
+ beq _08075AD0
+ adds r0, r5, #0
+ adds r0, #0x60
+ ldrh r1, [r0]
+ adds r0, r2, #0
+ adds r0, #0x60
+ strh r1, [r0]
+ movs r0, #0
+ ldrsb r0, [r4, r0]
+ ldrh r1, [r2, #0x2e]
+ adds r0, r0, r1
+ strh r0, [r2, #0x2e]
+ movs r0, #1
+ ldrsb r0, [r4, r0]
+ ldrh r1, [r2, #0x32]
+ adds r0, r0, r1
+ strh r0, [r2, #0x32]
+_08075AD0:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_08075AD4: .4byte gPlayerEntity
+_08075AD8: .4byte gUnk_08126EEC
+
+ thumb_func_start sub_08075ADC
+sub_08075ADC: @ 0x08075ADC
+ push {r4, r5, lr}
+ adds r4, r0, #0
+ adds r5, r1, #0
+ ldr r2, _08075B44 @ =gPlayerState
+ ldr r0, [r2, #0x2c]
+ cmp r0, #0
+ bne _08075B08
+ ldrb r1, [r4, #0xe]
+ movs r0, #1
+ ands r0, r1
+ cmp r0, #0
+ beq _08075B08
+ ldr r0, [r2, #0x30]
+ movs r1, #0x88
+ lsls r1, r1, #1
+ ands r0, r1
+ cmp r0, #0
+ bne _08075B08
+ bl sub_08079D48
+ cmp r0, #0
+ bne _08075B4C
+_08075B08:
+ movs r0, #0
+ strb r0, [r4, #0xf]
+ ldrb r0, [r4, #4]
+ adds r0, #1
+ strb r0, [r4, #4]
+ ldr r3, _08075B44 @ =gPlayerState
+ ldr r0, [r3, #0x30]
+ movs r1, #0x80
+ lsls r1, r1, #0x10
+ orrs r0, r1
+ str r0, [r3, #0x30]
+ movs r2, #8
+ asrs r2, r5
+ lsls r1, r2, #4
+ orrs r1, r2
+ ldrb r0, [r3, #4]
+ bics r0, r1
+ strb r0, [r3, #4]
+ mvns r2, r2
+ ldrb r1, [r3, #0xa]
+ adds r0, r2, #0
+ ands r0, r1
+ strb r0, [r3, #0xa]
+ ldrb r0, [r3, #0xb]
+ ands r2, r0
+ strb r2, [r3, #0xb]
+ ldr r0, _08075B48 @ =0x0000013D
+ bl SoundReq
+ b _08075B52
+ .align 2, 0
+_08075B44: .4byte gPlayerState
+_08075B48: .4byte 0x0000013D
+_08075B4C:
+ adds r0, r4, #0
+ bl UpdateItemAnim
+_08075B52:
+ pop {r4, r5, pc}
+
+ thumb_func_start sub_08075B54
+sub_08075B54: @ 0x08075B54
+ push {r4, r5, r6, r7, lr}
+ mov r7, sb
+ mov r6, r8
+ push {r6, r7}
+ adds r6, r0, #0
+ mov sb, r1
+ ldr r5, _08075BB0 @ =gPlayerState
+ ldr r0, [r5, #0x30]
+ movs r1, #0x88
+ lsls r1, r1, #1
+ ands r0, r1
+ cmp r0, #0
+ beq _08075B70
+ b _08075C80
+_08075B70:
+ ldrb r0, [r6, #1]
+ bl IsItemEquipped
+ adds r4, r0, #0
+ adds r0, r6, #0
+ bl sub_08077F10
+ cmp r0, #0
+ bne _08075B86
+ cmp r4, #1
+ bls _08075BB8
+_08075B86:
+ ldrb r0, [r5, #2]
+ cmp r0, #0
+ bne _08075BB8
+ movs r0, #0xf
+ adds r1, r4, #0
+ bl ForceEquipItem
+ ldr r0, [r5, #0x30]
+ ldr r1, _08075BB4 @ =0xFF7FFFFF
+ ands r0, r1
+ str r0, [r5, #0x30]
+ adds r0, r6, #0
+ mov r1, sb
+ bl sub_08077E78
+ movs r0, #0x9f
+ lsls r0, r0, #1
+ bl SoundReq
+ b _08075C80
+ .align 2, 0
+_08075BB0: .4byte gPlayerState
+_08075BB4: .4byte 0xFF7FFFFF
+_08075BB8:
+ ldr r0, _08075C88 @ =gPlayerState
+ mov r8, r0
+ ldrb r0, [r0, #0xc]
+ cmp r0, #0x18
+ beq _08075C80
+ ldr r5, _08075C8C @ =gPlayerEntity
+ ldrb r0, [r5, #0x1e]
+ cmp r0, #0x36
+ bhi _08075C80
+ ldrh r1, [r5, #0x12]
+ cmp r1, #6
+ bne _08075C80
+ ldrb r0, [r5, #0x14]
+ ands r1, r0
+ ldr r0, _08075C90 @ =gUnk_08126EEC
+ adds r7, r1, r0
+ mov r1, r8
+ ldrb r0, [r1, #2]
+ cmp r0, #0
+ bne _08075C80
+ movs r2, #0x2e
+ ldrsh r0, [r5, r2]
+ movs r1, #0
+ ldrsb r1, [r7, r1]
+ adds r0, r0, r1
+ ldr r4, _08075C94 @ =gRoomControls
+ ldrh r1, [r4, #6]
+ subs r0, r0, r1
+ asrs r0, r0, #4
+ movs r3, #0x3f
+ ands r0, r3
+ movs r2, #0x32
+ ldrsh r1, [r5, r2]
+ movs r2, #1
+ ldrsb r2, [r7, r2]
+ adds r1, r1, r2
+ ldrh r2, [r4, #8]
+ subs r1, r1, r2
+ asrs r1, r1, #4
+ ands r1, r3
+ lsls r1, r1, #6
+ orrs r0, r1
+ adds r1, r5, #0
+ adds r1, #0x38
+ ldrb r1, [r1]
+ movs r2, #0x40
+ bl sub_080002F0
+ cmp r0, #0
+ beq _08075C80
+ movs r0, #0xf
+ strb r0, [r6, #0xf]
+ ldrb r0, [r6, #4]
+ adds r0, #1
+ strb r0, [r6, #4]
+ adds r1, r5, #0
+ adds r1, #0x7a
+ movs r0, #2
+ strh r0, [r1]
+ adds r0, r5, #0
+ movs r1, #0x45
+ movs r2, #1
+ movs r3, #0
+ bl CreateObjectWithParent
+ adds r2, r0, #0
+ cmp r2, #0
+ beq _08075C60
+ adds r0, r5, #0
+ adds r0, #0x60
+ ldrh r1, [r0]
+ adds r0, r2, #0
+ adds r0, #0x60
+ strh r1, [r0]
+ movs r0, #0
+ ldrsb r0, [r7, r0]
+ ldrh r1, [r2, #0x2e]
+ adds r0, r0, r1
+ strh r0, [r2, #0x2e]
+ movs r0, #1
+ ldrsb r0, [r7, r0]
+ ldrh r1, [r2, #0x32]
+ adds r0, r0, r1
+ strh r0, [r2, #0x32]
+_08075C60:
+ ldr r1, _08075C98 @ =0x0000060C
+ adds r0, r6, #0
+ bl sub_08077DF4
+ movs r1, #8
+ mov r2, sb
+ asrs r1, r2
+ mov r0, r8
+ ldrb r2, [r0, #0xa]
+ adds r0, r1, #0
+ orrs r0, r2
+ mov r2, r8
+ strb r0, [r2, #0xa]
+ ldrb r0, [r2, #0xb]
+ orrs r1, r0
+ strb r1, [r2, #0xb]
+_08075C80:
+ pop {r3, r4}
+ mov r8, r3
+ mov sb, r4
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_08075C88: .4byte gPlayerState
+_08075C8C: .4byte gPlayerEntity
+_08075C90: .4byte gUnk_08126EEC
+_08075C94: .4byte gRoomControls
+_08075C98: .4byte 0x0000060C
+
+ thumb_func_start sub_08075C9C
+sub_08075C9C: @ 0x08075C9C
+ push {r4, r5, lr}
+ adds r4, r0, #0
+ adds r5, r1, #0
+ bl UpdateItemAnim
+ ldrb r1, [r4, #0xe]
+ movs r0, #0x10
+ ands r0, r1
+ cmp r0, #0
+ beq _08075CCA
+ ldr r0, _08075CF8 @ =gPlayerEntity
+ ldrb r1, [r0, #0x14]
+ movs r2, #6
+ ands r2, r1
+ ldr r1, _08075CFC @ =gUnk_08126EEC
+ adds r2, r2, r1
+ movs r1, #0
+ ldrsb r1, [r2, r1]
+ ldrb r2, [r2, #1]
+ lsls r2, r2, #0x18
+ asrs r2, r2, #0x18
+ bl sub_0807AB44
+_08075CCA:
+ ldrb r1, [r4, #0xe]
+ movs r0, #0x80
+ ands r0, r1
+ cmp r0, #0
+ beq _08075D04
+ movs r0, #0
+ strb r0, [r4, #0xf]
+ ldrb r0, [r4, #4]
+ subs r0, #1
+ strb r0, [r4, #4]
+ ldr r2, _08075D00 @ =gPlayerState
+ movs r1, #8
+ asrs r1, r5
+ mvns r1, r1
+ ldrb r3, [r2, #0xa]
+ adds r0, r1, #0
+ ands r0, r3
+ strb r0, [r2, #0xa]
+ ldrb r0, [r2, #0xb]
+ ands r1, r0
+ strb r1, [r2, #0xb]
+ b _08075D0E
+ .align 2, 0
+_08075CF8: .4byte gPlayerEntity
+_08075CFC: .4byte gUnk_08126EEC
+_08075D00: .4byte gPlayerState
+_08075D04:
+ ldr r1, _08075D10 @ =gPlayerEntity
+ adds r1, #0x7a
+ ldrh r0, [r1]
+ adds r0, #1
+ strh r0, [r1]
+_08075D0E:
+ pop {r4, r5, pc}
+ .align 2, 0
+_08075D10: .4byte gPlayerEntity
diff --git a/asm/item/itemMoleMitts.inc b/asm/item/itemMoleMitts.inc
new file mode 100644
index 00000000..e1bf3e0e
--- /dev/null
+++ b/asm/item/itemMoleMitts.inc
@@ -0,0 +1,508 @@
+ thumb_func_start ItemMoleMitts
+ItemMoleMitts: @ 0x08077118
+ push {lr}
+ ldr r3, _0807712C @ =gUnk_0811BE04
+ ldrb r2, [r0, #4]
+ lsls r2, r2, #2
+ adds r2, r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ pop {pc}
+ .align 2, 0
+_0807712C: .4byte gUnk_0811BE04
+
+ thumb_func_start sub_08077130
+sub_08077130: @ 0x08077130
+ push {r4, r5, r6, lr}
+ adds r4, r0, #0
+ ldr r5, _0807718C @ =gPlayerState
+ ldrb r0, [r5, #2]
+ cmp r0, #0
+ bne _080771B6
+ adds r0, r4, #0
+ bl sub_08077D38
+ adds r0, r5, #0
+ adds r0, #0x3d
+ movs r6, #1
+ strb r6, [r0]
+ ldrb r1, [r4, #9]
+ movs r0, #0x80
+ orrs r0, r1
+ strb r0, [r4, #9]
+ bl sub_080774A0
+ adds r5, r0, #0
+ cmp r5, #0
+ beq _080771A8
+ ldrb r0, [r4, #7]
+ cmp r0, #0
+ bne _080771C4
+ ldr r1, _08077190 @ =0x0000050C
+ adds r0, r4, #0
+ bl sub_08077DF4
+ movs r0, #2
+ strb r0, [r4, #4]
+ cmp r5, #0x56
+ bne _080771C4
+ ldr r2, _08077194 @ =gPlayerEntity
+ ldrb r1, [r2, #0x14]
+ ands r0, r1
+ cmp r0, #0
+ beq _08077198
+ ldrh r0, [r2, #0x32]
+ movs r1, #0x10
+ rsbs r1, r1, #0
+ ands r1, r0
+ movs r0, #6
+ orrs r1, r0
+ strh r1, [r2, #0x32]
+ b _080771C4
+ .align 2, 0
+_0807718C: .4byte gPlayerState
+_08077190: .4byte 0x0000050C
+_08077194: .4byte gPlayerEntity
+_08077198:
+ ldrh r0, [r2, #0x2e]
+ movs r1, #0x10
+ rsbs r1, r1, #0
+ ands r1, r0
+ movs r0, #8
+ orrs r1, r0
+ strh r1, [r2, #0x2e]
+ b _080771C4
+_080771A8:
+ movs r1, #0xa1
+ lsls r1, r1, #3
+ adds r0, r4, #0
+ bl sub_08077DF4
+ strb r6, [r4, #4]
+ b _080771C4
+_080771B6:
+ adds r0, r4, #0
+ bl sub_08077E78
+ adds r1, r5, #0
+ adds r1, #0x3d
+ movs r0, #0
+ strb r0, [r1]
+_080771C4:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start sub_080771C8
+sub_080771C8: @ 0x080771C8
+ push {r4, r5, lr}
+ adds r4, r0, #0
+ adds r5, r1, #0
+ bl UpdateItemAnim
+ ldrb r1, [r4, #0xe]
+ movs r0, #0x80
+ ands r0, r1
+ cmp r0, #0
+ beq _080771F4
+ adds r0, r4, #0
+ adds r1, r5, #0
+ bl sub_08077E78
+ ldr r0, _080771F0 @ =gPlayerState
+ adds r0, #0x3d
+ movs r1, #0
+ strb r1, [r0]
+ b _080772A4
+ .align 2, 0
+_080771F0: .4byte gPlayerState
+_080771F4:
+ movs r0, #0x20
+ ands r0, r1
+ cmp r0, #0
+ beq _0807720E
+ ldrb r0, [r4, #8]
+ cmp r0, #0xff
+ bne _0807720E
+ ldr r0, _08077240 @ =gPlayerEntity
+ ldrb r2, [r4, #0xe]
+ movs r1, #0x1e
+ movs r3, #1
+ bl CreateObjectWithParent
+_0807720E:
+ ldrb r1, [r4, #0xe]
+ movs r0, #0x10
+ ands r0, r1
+ cmp r0, #0
+ beq _080772A4
+ ldr r5, _08077240 @ =gPlayerEntity
+ adds r0, r5, #0
+ movs r1, #0xd
+ adds r2, r4, #0
+ bl sub_0800875A
+ cmp r0, #0
+ bne _08077248
+ movs r1, #0xa4
+ lsls r1, r1, #3
+ adds r0, r4, #0
+ bl sub_08077DF4
+ movs r0, #3
+ strb r0, [r4, #4]
+ ldr r0, _08077244 @ =0x00000107
+ bl SoundReq
+ b _080772A4
+ .align 2, 0
+_08077240: .4byte gPlayerEntity
+_08077244: .4byte 0x00000107
+_08077248:
+ ldrb r0, [r4, #8]
+ cmp r0, #0xff
+ beq _0807728C
+ ldrb r3, [r4, #3]
+ adds r0, r5, #0
+ movs r1, #0x1f
+ movs r2, #0
+ bl CreateObjectWithParent
+ adds r3, r0, #0
+ cmp r3, #0
+ beq _0807729C
+ ldrb r0, [r4, #7]
+ movs r2, #0
+ strb r0, [r3, #0xe]
+ ldrb r0, [r4, #8]
+ strb r0, [r3, #0xf]
+ ldrb r1, [r5, #0x14]
+ movs r0, #6
+ ands r0, r1
+ strb r0, [r3, #0x14]
+ adds r0, r5, #0
+ adds r0, #0x5a
+ strb r2, [r0]
+ ldr r1, _08077288 @ =gUnk_0811BE14
+ ldrb r0, [r4, #8]
+ adds r0, r0, r1
+ ldrb r1, [r0]
+ adds r0, r5, #0
+ adds r0, #0x59
+ strb r1, [r0]
+ b _0807729C
+ .align 2, 0
+_08077288: .4byte gUnk_0811BE14
+_0807728C:
+ ldrb r0, [r4, #3]
+ cmp r0, #0xf
+ bne _0807729C
+ ldrb r0, [r4, #7]
+ cmp r0, #0x17
+ bne _0807729C
+ movs r0, #0
+ strb r0, [r4, #8]
+_0807729C:
+ movs r0, #0x84
+ lsls r0, r0, #1
+ bl SoundReq
+_080772A4:
+ pop {r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start sub_080772A8
+sub_080772A8: @ 0x080772A8
+ push {r4, r5, r6, lr}
+ adds r4, r0, #0
+ adds r6, r1, #0
+ ldrb r1, [r4, #0xe]
+ movs r0, #8
+ ands r0, r1
+ cmp r0, #0
+ beq _080772C6
+ adds r0, r4, #0
+ bl sub_08077F10
+ cmp r0, #0
+ beq _080772C6
+ movs r0, #1
+ strb r0, [r4, #7]
+_080772C6:
+ movs r0, #0x71
+ bl GetInventoryValue
+ cmp r0, #1
+ bne _08077318
+ ldrb r1, [r4, #0xe]
+ movs r5, #7
+ adds r0, r5, #0
+ ands r0, r1
+ cmp r0, #3
+ beq _08077300
+ adds r0, r4, #0
+ movs r1, #2
+ bl sub_08077E3C
+ ldr r3, _080772F8 @ =gPlayerEntity
+ ldr r2, _080772FC @ =gUnk_0811BE16
+ ldrb r1, [r4, #0xe]
+ adds r0, r5, #0
+ ands r0, r1
+ lsls r0, r0, #1
+ adds r0, r0, r2
+ ldrh r0, [r0]
+ lsls r0, r0, #1
+ b _0807732E
+ .align 2, 0
+_080772F8: .4byte gPlayerEntity
+_080772FC: .4byte gUnk_0811BE16
+_08077300:
+ adds r0, r4, #0
+ bl UpdateItemAnim
+ ldr r3, _08077310 @ =gPlayerEntity
+ ldr r2, _08077314 @ =gUnk_0811BE16
+ ldrb r1, [r4, #0xe]
+ adds r0, r5, #0
+ b _08077326
+ .align 2, 0
+_08077310: .4byte gPlayerEntity
+_08077314: .4byte gUnk_0811BE16
+_08077318:
+ adds r0, r4, #0
+ bl UpdateItemAnim
+ ldr r3, _0807736C @ =gPlayerEntity
+ ldr r2, _08077370 @ =gUnk_0811BE16
+ ldrb r1, [r4, #0xe]
+ movs r0, #7
+_08077326:
+ ands r0, r1
+ lsls r0, r0, #1
+ adds r0, r0, r2
+ ldrh r0, [r0]
+_0807732E:
+ strh r0, [r3, #0x24]
+ ldr r5, _0807736C @ =gPlayerEntity
+ ldrb r0, [r5, #0x14]
+ lsls r0, r0, #2
+ strb r0, [r5, #0x15]
+ movs r1, #0x24
+ ldrsh r0, [r5, r1]
+ cmp r0, #0
+ beq _08077344
+ bl sub_08079E08
+_08077344:
+ ldrb r1, [r4, #0xe]
+ movs r0, #0x10
+ ands r0, r1
+ cmp r0, #0
+ beq _0807738C
+ ldrb r0, [r4, #7]
+ cmp r0, #0
+ beq _08077374
+ adds r0, r5, #0
+ adds r0, #0x59
+ movs r1, #1
+ strb r1, [r0]
+ bl sub_080774A0
+ cmp r0, #0
+ beq _08077374
+ movs r0, #0
+ strb r0, [r4, #7]
+ b _0807743E
+ .align 2, 0
+_0807736C: .4byte gPlayerEntity
+_08077370: .4byte gUnk_0811BE16
+_08077374:
+ adds r0, r4, #0
+ adds r1, r6, #0
+ bl sub_08077E78
+ ldr r0, _08077388 @ =gPlayerState
+ adds r0, #0x3d
+ movs r1, #0
+ strb r1, [r0]
+ b _0807743E
+ .align 2, 0
+_08077388: .4byte gPlayerState
+_0807738C:
+ movs r0, #0x60
+ ands r0, r1
+ cmp r0, #0
+ beq _0807743E
+ adds r0, r5, #0
+ adds r0, #0x59
+ movs r6, #1
+ strb r6, [r0]
+ adds r0, r5, #0
+ bl sub_0807B5B0
+ cmp r0, #0
+ beq _080773BC
+ movs r0, #0x84
+ lsls r0, r0, #1
+ bl SoundReq
+ ldrb r2, [r4, #0xe]
+ adds r0, r5, #0
+ movs r1, #0x1e
+ movs r3, #0
+ bl CreateObjectWithParent
+ b _0807743E
+_080773BC:
+ ldr r1, _08077440 @ =0x0000051C
+ adds r0, r4, #0
+ bl sub_08077DF4
+ adds r0, r5, #0
+ movs r1, #0x1d
+ movs r2, #0
+ bl CreateFx
+ adds r3, r0, #0
+ cmp r3, #0
+ beq _080773F6
+ ldrb r0, [r4, #0xa]
+ strb r0, [r3, #0x14]
+ adds r0, r5, #0
+ adds r0, #0x29
+ ldrb r1, [r0]
+ lsls r1, r1, #0x1d
+ lsrs r1, r1, #0x1d
+ subs r1, #1
+ adds r3, #0x29
+ movs r0, #7
+ ands r1, r0
+ ldrb r2, [r3]
+ movs r0, #8
+ rsbs r0, r0, #0
+ ands r0, r2
+ orrs r0, r1
+ strb r0, [r3]
+_080773F6:
+ adds r0, r5, #0
+ movs r1, #0x1d
+ movs r2, #0
+ bl CreateFx
+ adds r3, r0, #0
+ cmp r3, #0
+ beq _08077432
+ ldrb r0, [r4, #0xa]
+ strb r0, [r3, #0x14]
+ adds r0, r5, #0
+ adds r0, #0x29
+ ldrb r1, [r0]
+ lsls r1, r1, #0x1d
+ lsrs r1, r1, #0x1d
+ subs r1, #1
+ movs r0, #0x29
+ adds r0, r0, r3
+ mov ip, r0
+ movs r0, #7
+ ands r1, r0
+ mov r0, ip
+ ldrb r2, [r0]
+ movs r0, #8
+ rsbs r0, r0, #0
+ ands r0, r2
+ orrs r0, r1
+ mov r1, ip
+ strb r0, [r1]
+ strb r6, [r3, #0xf]
+_08077432:
+ movs r0, #3
+ strb r0, [r4, #4]
+ strb r6, [r4, #5]
+ ldr r0, _08077444 @ =0x00000119
+ bl SoundReq
+_0807743E:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_08077440: .4byte 0x0000051C
+_08077444: .4byte 0x00000119
+
+ thumb_func_start sub_08077448
+sub_08077448: @ 0x08077448
+ push {r4, r5, lr}
+ adds r4, r0, #0
+ adds r5, r1, #0
+ ldr r2, _08077498 @ =gPlayerEntity
+ ldrb r0, [r2, #0x14]
+ lsls r0, r0, #2
+ movs r1, #0x10
+ eors r0, r1
+ strb r0, [r2, #0x15]
+ movs r0, #0x80
+ lsls r0, r0, #1
+ strh r0, [r2, #0x24]
+ ldrb r1, [r4, #0xe]
+ movs r0, #1
+ ands r0, r1
+ cmp r0, #0
+ beq _08077474
+ ldrb r0, [r4, #5]
+ cmp r0, #0
+ beq _08077474
+ bl sub_08079E08
+_08077474:
+ adds r0, r4, #0
+ bl UpdateItemAnim
+ ldrb r1, [r4, #0xe]
+ movs r0, #0x80
+ ands r0, r1
+ cmp r0, #0
+ beq _08077494
+ ldr r0, _0807749C @ =gPlayerState
+ adds r0, #0x3d
+ movs r1, #0
+ strb r1, [r0]
+ adds r0, r4, #0
+ adds r1, r5, #0
+ bl sub_08077E78
+_08077494:
+ pop {r4, r5, pc}
+ .align 2, 0
+_08077498: .4byte gPlayerEntity
+_0807749C: .4byte gPlayerState
+
+ thumb_func_start sub_080774A0
+sub_080774A0: @ 0x080774A0
+ push {r4, r5, r6, r7, lr}
+ ldr r3, _080774FC @ =gPlayerEntity
+ movs r0, #0x2e
+ ldrsh r2, [r3, r0]
+ ldr r5, _08077500 @ =gUnk_0811BE1E
+ ldrb r0, [r3, #0x14]
+ movs r1, #6
+ ands r1, r0
+ adds r0, r1, r5
+ ldrb r0, [r0]
+ lsls r0, r0, #0x18
+ asrs r0, r0, #0x18
+ adds r2, r2, r0
+ ldr r4, _08077504 @ =gRoomControls
+ ldrh r0, [r4, #6]
+ subs r2, r2, r0
+ asrs r6, r2, #4
+ movs r2, #0x3f
+ ands r6, r2
+ movs r7, #0x32
+ ldrsh r0, [r3, r7]
+ adds r1, #1
+ adds r1, r1, r5
+ ldrb r1, [r1]
+ lsls r1, r1, #0x18
+ asrs r1, r1, #0x18
+ adds r0, r0, r1
+ ldrh r1, [r4, #8]
+ subs r0, r0, r1
+ asrs r0, r0, #4
+ ands r0, r2
+ lsls r0, r0, #6
+ orrs r6, r0
+ adds r4, r3, #0
+ adds r4, #0x38
+ ldrb r1, [r4]
+ adds r0, r6, #0
+ bl sub_080002E0
+ cmp r0, #0x16
+ bhi _080774F6
+ cmp r0, #0xe
+ bhi _08077508
+_080774F6:
+ movs r0, #0
+ b _0807751A
+ .align 2, 0
+_080774FC: .4byte gPlayerEntity
+_08077500: .4byte gUnk_0811BE1E
+_08077504: .4byte gRoomControls
+_08077508:
+ adds r0, r6, #0
+ ldrb r1, [r4]
+ bl sub_080002C8
+ cmp r0, #0x56
+ bne _08077518
+ movs r0, #0x56
+ b _0807751A
+_08077518:
+ movs r0, #1
+_0807751A:
+ pop {r4, r5, r6, r7, pc}
diff --git a/asm/item/itemPegasusBoots.inc b/asm/item/itemPegasusBoots.inc
new file mode 100644
index 00000000..44aafa1d
--- /dev/null
+++ b/asm/item/itemPegasusBoots.inc
@@ -0,0 +1,450 @@
+
+ thumb_func_start ItemPegasusBoots
+ItemPegasusBoots: @ 0x08076800
+ push {r4, r5, r6, r7, lr}
+ mov r7, sb
+ mov r6, r8
+ push {r6, r7}
+ adds r6, r0, #0
+ mov sb, r1
+ ldr r4, _0807682C @ =gPlayerEntity
+ adds r0, r4, #0
+ adds r0, #0x7a
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq _08076834
+ ldr r1, _08076830 @ =gPlayerState
+ movs r0, #0
+ strb r0, [r1, #0x1e]
+ strb r0, [r1, #0xe]
+ adds r0, r6, #0
+ mov r1, sb
+ bl sub_08077E78
+ b _080768EC
+ .align 2, 0
+_0807682C: .4byte gPlayerEntity
+_08076830: .4byte gPlayerState
+_08076834:
+ ldrb r0, [r6, #7]
+ subs r0, #1
+ strb r0, [r6, #7]
+ movs r1, #7
+ mov r8, r1
+ ands r0, r1
+ cmp r0, #0
+ bne _0807684A
+ movs r0, #0x7d
+ bl SoundReq
+_0807684A:
+ ldr r2, _08076880 @ =gPlayerState
+ ldr r0, [r2, #0x30]
+ movs r1, #0x80
+ ands r0, r1
+ cmp r0, #0
+ bne _080768DA
+ ldrb r1, [r6, #7]
+ mov r0, r8
+ ands r0, r1
+ cmp r0, #0
+ bne _080768DA
+ ldrb r0, [r2, #0x12]
+ cmp r0, #0x11
+ bne _08076884
+ adds r0, r4, #0
+ adds r0, #0x63
+ ldrb r0, [r0]
+ lsls r0, r0, #0x18
+ asrs r0, r0, #0x18
+ cmp r0, #0
+ bne _080768DA
+ adds r0, r4, #0
+ movs r1, #0x52
+ movs r2, #0
+ bl CreateFx
+ b _080768DA
+ .align 2, 0
+_08076880: .4byte gPlayerState
+_08076884:
+ adds r0, r4, #0
+ movs r1, #0x11
+ movs r2, #0x40
+ bl CreateFx
+ adds r5, r0, #0
+ cmp r5, #0
+ beq _080768DA
+ ldrh r0, [r5, #0x32]
+ adds r0, #2
+ strh r0, [r5, #0x32]
+ ldrb r0, [r6, #4]
+ cmp r0, #2
+ beq _080768DA
+ bl Random
+ adds r4, r0, #0
+ movs r0, #3
+ ands r4, r0
+ bl Random
+ movs r7, #1
+ ands r0, r7
+ cmp r0, #0
+ beq _080768B8
+ rsbs r4, r4, #0
+_080768B8:
+ ldrh r0, [r5, #0x32]
+ adds r0, r0, r4
+ strh r0, [r5, #0x32]
+ bl Random
+ adds r4, r0, #0
+ mov r0, r8
+ ands r4, r0
+ bl Random
+ ands r0, r7
+ cmp r0, #0
+ beq _080768D4
+ rsbs r4, r4, #0
+_080768D4:
+ ldrh r0, [r5, #0x2e]
+ adds r0, r0, r4
+ strh r0, [r5, #0x2e]
+_080768DA:
+ ldr r0, _080768F4 @ =gUnk_0811BDCC
+ ldrb r1, [r6, #4]
+ lsls r1, r1, #2
+ adds r1, r1, r0
+ ldr r2, [r1]
+ adds r0, r6, #0
+ mov r1, sb
+ bl _call_via_r2
+_080768EC:
+ pop {r3, r4}
+ mov r8, r3
+ mov sb, r4
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_080768F4: .4byte gUnk_0811BDCC
+
+ thumb_func_start sub_080768F8
+sub_080768F8: @ 0x080768F8
+ push {r4, r5, lr}
+ adds r4, r0, #0
+ adds r5, r1, #0
+ ldr r3, _08076934 @ =gPlayerState
+ ldrb r1, [r3, #0x1c]
+ ldrb r0, [r3, #4]
+ orrs r1, r0
+ ldrb r0, [r3, #5]
+ orrs r1, r0
+ ldrb r0, [r3, #2]
+ orrs r1, r0
+ ldr r2, [r3, #0x30]
+ movs r0, #0x80
+ lsls r0, r0, #5
+ ands r0, r2
+ orrs r1, r0
+ cmp r1, #0
+ bne _08076954
+ movs r0, #1
+ strb r0, [r3, #0x1e]
+ adds r0, r3, #0
+ adds r0, #0x21
+ strb r1, [r0]
+ movs r0, #0x80
+ ands r2, r0
+ cmp r2, #0
+ bne _08076938
+ movs r0, #0x10
+ strb r0, [r4, #7]
+ b _0807693C
+ .align 2, 0
+_08076934: .4byte gPlayerState
+_08076938:
+ ldr r0, _08076950 @ =0x00000C14
+ strh r0, [r3, #8]
+_0807693C:
+ adds r0, r4, #0
+ adds r1, r5, #0
+ bl sub_08077D38
+ adds r0, r4, #0
+ adds r1, r5, #0
+ bl sub_08076964
+ b _08076962
+ .align 2, 0
+_08076950: .4byte 0x00000C14
+_08076954:
+ movs r0, #0
+ strb r0, [r3, #0x1e]
+ strb r0, [r3, #0xe]
+ adds r0, r4, #0
+ adds r1, r5, #0
+ bl sub_08077E78
+_08076962:
+ pop {r4, r5, pc}
+
+ thumb_func_start sub_08076964
+sub_08076964: @ 0x08076964
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ adds r4, r0, #0
+ adds r6, r1, #0
+ bl sub_08077EFC
+ cmp r0, #0
+ bne _08076978
+ b _08076A70
+_08076978:
+ ldr r0, _080769C4 @ =gPlayerEntity
+ ldr r7, [r0, #0x34]
+ cmp r7, #0
+ bne _08076A70
+ ldr r5, _080769C8 @ =gPlayerState
+ ldrb r0, [r5, #0x1e]
+ cmp r0, #0
+ beq _08076A70
+ adds r0, r4, #0
+ bl UpdateItemAnim
+ ldr r0, [r5, #0x30]
+ movs r1, #0x80
+ mov r8, r1
+ ands r0, r1
+ cmp r0, #0
+ bne _080769A0
+ adds r0, r4, #0
+ bl UpdateItemAnim
+_080769A0:
+ ldrb r0, [r5, #0x1e]
+ adds r0, #1
+ strb r0, [r5, #0x1e]
+ lsls r0, r0, #0x18
+ lsrs r0, r0, #0x18
+ cmp r0, #0x1e
+ bne _08076A7E
+ ldr r0, [r5, #0x30]
+ movs r1, #2
+ ands r0, r1
+ cmp r0, #0
+ beq _080769CC
+ strb r7, [r5, #0x1e]
+ adds r0, r4, #0
+ adds r1, r6, #0
+ bl sub_08077E78
+ b _08076A7E
+ .align 2, 0
+_080769C4: .4byte gPlayerEntity
+_080769C8: .4byte gPlayerState
+_080769CC:
+ movs r0, #0x40
+ strb r0, [r5, #0x1e]
+ movs r1, #8
+ asrs r1, r6
+ ldrb r0, [r5, #0xa]
+ bics r0, r1
+ strb r0, [r5, #0xa]
+ ldrb r0, [r4, #4]
+ adds r0, #1
+ strb r0, [r4, #4]
+ bl sub_0807A158
+ cmp r0, #0
+ beq _08076A46
+ ldr r0, [r5, #0x30]
+ mov r1, r8
+ ands r0, r1
+ cmp r0, #0
+ bne _08076A60
+ adds r0, r5, #0
+ adds r0, #0xac
+ ldrh r1, [r0]
+ movs r0, #4
+ ands r0, r1
+ cmp r0, #0
+ beq _08076A46
+ adds r0, r5, #0
+ adds r0, #0xab
+ movs r1, #3
+ strb r1, [r0]
+ movs r1, #0xa6
+ lsls r1, r1, #2
+ adds r0, r4, #0
+ bl sub_08077DF4
+ adds r0, r4, #0
+ movs r1, #0xc
+ bl CreatePlayerBomb
+ adds r5, r0, #0
+ cmp r5, #0
+ beq _08076A70
+ ldr r6, _08076A34 @ =gSave
+ adds r4, r6, #0
+ adds r4, #0xb4
+ ldrb r0, [r4]
+ bl sub_0805449C
+ cmp r0, #0
+ beq _08076A38
+ ldrb r1, [r4]
+ b _08076A3E
+ .align 2, 0
+_08076A34: .4byte gSave
+_08076A38:
+ adds r0, r6, #0
+ adds r0, #0xb5
+ ldrb r1, [r0]
+_08076A3E:
+ adds r0, r5, #0
+ adds r0, #0x68
+ strb r1, [r0]
+ b _08076A7E
+_08076A46:
+ ldr r0, _08076A5C @ =gPlayerState
+ ldr r0, [r0, #0x30]
+ movs r1, #0x80
+ ands r0, r1
+ cmp r0, #0
+ bne _08076A60
+ adds r1, #0x84
+ adds r0, r4, #0
+ bl sub_08077DF4
+ b _08076A7E
+ .align 2, 0
+_08076A5C: .4byte gPlayerState
+_08076A60:
+ ldr r1, _08076A6C @ =gPlayerState
+ movs r0, #0xc1
+ lsls r0, r0, #4
+ strh r0, [r1, #8]
+ b _08076A7E
+ .align 2, 0
+_08076A6C: .4byte gPlayerState
+_08076A70:
+ ldr r1, _08076A84 @ =gPlayerState
+ movs r0, #0
+ strb r0, [r1, #0x1e]
+ adds r0, r4, #0
+ adds r1, r6, #0
+ bl sub_08077E78
+_08076A7E:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_08076A84: .4byte gPlayerState
+
+ thumb_func_start sub_08076A88
+sub_08076A88: @ 0x08076A88
+ push {r4, r5, r6, r7, lr}
+ adds r4, r0, #0
+ adds r7, r1, #0
+ bl sub_08077EFC
+ cmp r0, #0
+ beq _08076B64
+ ldr r1, _08076AB4 @ =gPlayerState
+ ldrb r0, [r1, #0x1e]
+ adds r3, r1, #0
+ cmp r0, #0
+ beq _08076B64
+ ldr r0, [r3, #0x30]
+ movs r1, #0x80
+ ands r0, r1
+ cmp r0, #0
+ bne _08076ABC
+ ldr r1, _08076AB8 @ =gPlayerEntity
+ movs r0, #0xc0
+ lsls r0, r0, #2
+ b _08076AC2
+ .align 2, 0
+_08076AB4: .4byte gPlayerState
+_08076AB8: .4byte gPlayerEntity
+_08076ABC:
+ ldr r1, _08076B00 @ =gPlayerEntity
+ movs r0, #0xa0
+ lsls r0, r0, #2
+_08076AC2:
+ strh r0, [r1, #0x24]
+ adds r5, r1, #0
+ ldr r1, _08076B04 @ =gUnk_0800275C
+ ldrb r2, [r5, #0x14]
+ movs r6, #0xe
+ adds r0, r6, #0
+ ands r0, r2
+ lsls r0, r0, #3
+ adds r0, r0, r1
+ ldrh r1, [r0]
+ ldrh r0, [r5, #0x2a]
+ ands r0, r1
+ cmp r1, r0
+ bne _08076B0E
+ ldrb r0, [r4, #8]
+ cmp r0, #0
+ beq _08076B08
+ movs r2, #0
+ movs r0, #6
+ strb r0, [r5, #0xc]
+ strb r2, [r5, #0xd]
+ ldrb r1, [r5, #0x10]
+ movs r0, #0x7f
+ ands r0, r1
+ strb r0, [r5, #0x10]
+ adds r0, r3, #0
+ adds r0, #0x38
+ strb r2, [r0]
+ movs r0, #0xff
+ strb r0, [r3, #0xd]
+ b _08076B72
+ .align 2, 0
+_08076B00: .4byte gPlayerEntity
+_08076B04: .4byte gUnk_0800275C
+_08076B08:
+ movs r0, #1
+ strb r0, [r4, #8]
+ b _08076B72
+_08076B0E:
+ ldr r1, _08076B60 @ =gUnk_0811BE38
+ movs r0, #0xfe
+ ands r0, r2
+ adds r0, r0, r1
+ adds r1, r3, #0
+ adds r1, #0x90
+ ldrh r2, [r0]
+ ldrh r0, [r1]
+ ands r0, r2
+ cmp r0, #0
+ bne _08076B64
+ ldrb r0, [r4, #0xa]
+ adds r1, r6, #0
+ ands r1, r0
+ lsls r0, r1, #2
+ strb r0, [r4, #0xb]
+ ldrb r2, [r3, #0xd]
+ cmp r2, #0xff
+ beq _08076B52
+ cmp r2, r0
+ beq _08076B52
+ adds r0, r2, #0
+ ldrb r1, [r4, #0xb]
+ subs r0, r0, r1
+ movs r2, #0x1f
+ ands r0, r2
+ cmp r0, #0xf
+ bgt _08076B4A
+ adds r0, r1, #2
+ strb r0, [r4, #0xb]
+_08076B4A:
+ ldrb r0, [r4, #0xb]
+ subs r0, #1
+ ands r0, r2
+ strb r0, [r4, #0xb]
+_08076B52:
+ ldrb r0, [r4, #0xb]
+ strb r0, [r3, #0xd]
+ adds r0, r4, #0
+ bl UpdateItemAnim
+ b _08076B72
+ .align 2, 0
+_08076B60: .4byte gUnk_0811BE38
+_08076B64:
+ ldr r1, _08076B74 @ =gPlayerState
+ movs r0, #0
+ strb r0, [r1, #0x1e]
+ adds r0, r4, #0
+ adds r1, r7, #0
+ bl sub_08077E78
+_08076B72:
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_08076B74: .4byte gPlayerState
diff --git a/asm/item/itemRocsCape.inc b/asm/item/itemRocsCape.inc
new file mode 100644
index 00000000..eb9745df
--- /dev/null
+++ b/asm/item/itemRocsCape.inc
@@ -0,0 +1,232 @@
+ thumb_func_start ItemRocsCape
+ItemRocsCape: @ 0x08076640
+ push {r4, r5, lr}
+ adds r3, r0, #0
+ adds r4, r1, #0
+ ldrb r0, [r3, #4]
+ cmp r0, #0
+ beq _08076654
+ adds r0, r3, #0
+ bl sub_08076758
+ b _08076754
+_08076654:
+ ldr r0, _080766BC @ =gPlayerState
+ ldr r1, [r0, #0x2c]
+ adds r2, r0, #0
+ cmp r1, #0
+ bne _0807674C
+ ldrb r0, [r2, #1]
+ cmp r0, #0
+ beq _080766C4
+ ldrb r1, [r2, #4]
+ ldrb r0, [r2, #5]
+ orrs r0, r1
+ cmp r0, #0
+ bne _0807674C
+ ldrb r0, [r2, #0x12]
+ cmp r0, #0x12
+ beq _08076678
+ cmp r0, #1
+ bne _08076686
+_08076678:
+ ldr r0, _080766C0 @ =gPlayerEntity
+ ldr r0, [r0, #0x34]
+ cmp r0, #0
+ bne _08076686
+ ldrb r0, [r2, #0x14]
+ cmp r0, #0
+ beq _0807674C
+_08076686:
+ ldrb r1, [r2, #2]
+ cmp r1, #0
+ beq _08076694
+ movs r0, #7
+ ands r0, r1
+ cmp r0, #3
+ bne _08076710
+_08076694:
+ ldr r5, _080766C0 @ =gPlayerEntity
+ ldr r0, [r5, #0x34]
+ cmp r0, #0
+ blt _0807674C
+ movs r1, #0
+ strb r1, [r2, #1]
+ ldrb r0, [r3, #4]
+ adds r0, #1
+ strb r0, [r3, #4]
+ strb r1, [r2, #0xb]
+ movs r0, #1
+ strb r0, [r2, #2]
+ movs r0, #0xff
+ strb r0, [r2, #0xe]
+ str r1, [r2, #0x2c]
+ movs r0, #0x80
+ lsls r0, r0, #0xa
+ str r0, [r5, #0x20]
+ b _0807673C
+ .align 2, 0
+_080766BC: .4byte gPlayerState
+_080766C0: .4byte gPlayerEntity
+_080766C4:
+ ldrb r0, [r2, #0x1b]
+ ldrb r1, [r2, #0xa]
+ orrs r0, r1
+ ldrb r1, [r2, #4]
+ orrs r0, r1
+ ldrb r1, [r2, #5]
+ orrs r0, r1
+ ldrb r1, [r2, #0x1c]
+ orrs r0, r1
+ adds r1, r2, #0
+ adds r1, #0x3d
+ ldrb r1, [r1]
+ orrs r0, r1
+ cmp r0, #0
+ bne _0807674C
+ ldrb r1, [r2, #0x12]
+ adds r0, r1, #0
+ subs r0, #0x12
+ lsls r0, r0, #0x18
+ lsrs r0, r0, #0x18
+ cmp r0, #1
+ bls _080766F4
+ cmp r1, #1
+ bne _08076702
+_080766F4:
+ ldr r0, _0807671C @ =gPlayerEntity
+ ldr r0, [r0, #0x34]
+ cmp r0, #0
+ bne _08076702
+ ldrb r0, [r2, #0x14]
+ cmp r0, #0
+ beq _0807674C
+_08076702:
+ ldrb r1, [r2, #2]
+ cmp r1, #0
+ beq _08076720
+ movs r0, #7
+ ands r0, r1
+ cmp r0, #3
+ beq _08076720
+_08076710:
+ adds r0, r3, #0
+ adds r1, r4, #0
+ bl sub_08076758
+ b _08076754
+ .align 2, 0
+_0807671C: .4byte gPlayerEntity
+_08076720:
+ ldr r1, _08076748 @ =gPlayerEntity
+ ldr r0, [r1, #0x34]
+ cmp r0, #0
+ blt _0807674C
+ movs r0, #0x80
+ lsls r0, r0, #0xa
+ str r0, [r1, #0x20]
+ movs r1, #0
+ movs r0, #1
+ strb r0, [r2, #2]
+ str r1, [r2, #0x2c]
+ ldrb r0, [r3, #4]
+ adds r0, #1
+ strb r0, [r3, #4]
+_0807673C:
+ bl sub_08077F84
+ movs r0, #0x78
+ bl SoundReq
+ b _08076754
+ .align 2, 0
+_08076748: .4byte gPlayerEntity
+_0807674C:
+ adds r0, r3, #0
+ adds r1, r4, #0
+ bl sub_08077E78
+_08076754:
+ pop {r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start sub_08076758
+sub_08076758: @ 0x08076758
+ push {r4, r5, lr}
+ adds r4, r0, #0
+ ldr r5, _080767C0 @ =gPlayerState
+ movs r0, #0
+ strb r0, [r5, #0xe]
+ ldrb r2, [r5, #2]
+ movs r0, #0x28
+ ands r0, r2
+ cmp r0, #0
+ bne _080767F8
+ cmp r2, #0
+ beq _080767F8
+ movs r0, #7
+ ands r0, r2
+ cmp r0, #3
+ beq _080767F8
+ adds r0, r4, #0
+ bl sub_08077EFC
+ cmp r0, #0
+ beq _080767D8
+ ldrb r0, [r4, #4]
+ cmp r0, #1
+ bhi _080767C8
+ ldr r2, _080767C4 @ =gPlayerEntity
+ ldr r0, [r2, #0x20]
+ cmp r0, #0
+ bgt _080767FE
+ ldrb r3, [r5, #2]
+ movs r0, #0x10
+ ands r0, r3
+ cmp r0, #0
+ bne _080767FE
+ movs r0, #2
+ strb r0, [r4, #4]
+ adds r1, r2, #0
+ adds r1, #0x7a
+ strh r0, [r1]
+ movs r0, #0x80
+ lsls r0, r0, #0xa
+ str r0, [r2, #0x20]
+ movs r0, #0x10
+ orrs r0, r3
+ strb r0, [r5, #2]
+ movs r0, #0xa2
+ lsls r0, r0, #2
+ strh r0, [r5, #8]
+ movs r0, #0xb9
+ lsls r0, r0, #1
+ bl SoundReq
+ b _080767FE
+ .align 2, 0
+_080767C0: .4byte gPlayerState
+_080767C4: .4byte gPlayerEntity
+_080767C8:
+ ldr r1, _080767D4 @ =gPlayerEntity
+ adds r1, #0x7a
+ ldrh r0, [r1]
+ adds r0, #1
+ strh r0, [r1]
+ b _080767FE
+ .align 2, 0
+_080767D4: .4byte gPlayerEntity
+_080767D8:
+ ldrb r0, [r4, #4]
+ cmp r0, #1
+ bls _080767FE
+ ldr r1, _080767F4 @ =gPlayerEntity
+ adds r1, #0x7a
+ ldrh r0, [r1]
+ adds r0, #1
+ strh r0, [r1]
+ ldrb r1, [r5, #2]
+ movs r0, #0xef
+ ands r0, r1
+ strb r0, [r5, #2]
+ b _080767FE
+ .align 2, 0
+_080767F4: .4byte gPlayerEntity
+_080767F8:
+ adds r0, r4, #0
+ bl sub_08077E78
+_080767FE:
+ pop {r4, r5, pc}
diff --git a/asm/item/itemSword.inc b/asm/item/itemSword.inc
new file mode 100644
index 00000000..e67c2109
--- /dev/null
+++ b/asm/item/itemSword.inc
@@ -0,0 +1,891 @@
+ thumb_func_start ItemSword
+ItemSword: @ 0x08075314
+ push {lr}
+ ldr r2, _08075330 @ =gPlayerState
+ adds r2, #0xa8
+ movs r3, #2
+ strb r3, [r2]
+ ldr r3, _08075334 @ =gUnk_0811BD44
+ ldrb r2, [r0, #4]
+ lsls r2, r2, #2
+ adds r2, r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ pop {pc}
+ .align 2, 0
+_08075330: .4byte gPlayerState
+_08075334: .4byte gUnk_0811BD44
+
+ thumb_func_start sub_08075338
+sub_08075338: @ 0x08075338
+ push {r4, r5, r6, r7, lr}
+ adds r5, r0, #0
+ adds r7, r1, #0
+ ldr r4, _0807536C @ =gPlayerState
+ ldr r1, [r4, #0x30]
+ movs r3, #0x80
+ adds r0, r1, #0
+ ands r0, r3
+ cmp r0, #0
+ beq _08075370
+ ldrb r0, [r5, #9]
+ movs r1, #0x80
+ orrs r1, r0
+ strb r1, [r5, #9]
+ adds r0, r5, #0
+ adds r1, r7, #0
+ bl sub_08077D38
+ movs r0, #0xc0
+ lsls r0, r0, #4
+ strh r0, [r4, #8]
+ movs r0, #0x75
+ bl SoundReq
+ b _080754B4
+ .align 2, 0
+_0807536C: .4byte gPlayerState
+_08075370:
+ ldrb r2, [r4, #2]
+ cmp r2, #0
+ beq _080753DC
+ movs r6, #7
+ adds r0, r6, #0
+ ands r0, r2
+ cmp r0, #3
+ beq _080753E4
+ movs r0, #0x78
+ ands r0, r2
+ cmp r0, #0
+ bne _080753E4
+ ldr r3, _080753D4 @ =gPlayerEntity
+ ldr r1, [r3, #0x20]
+ ldr r0, _080753D8 @ =0x00017FFF
+ cmp r1, r0
+ bhi _080753E4
+ adds r0, r4, #0
+ adds r0, #0xac
+ ldrh r1, [r0]
+ movs r0, #0x40
+ ands r0, r1
+ cmp r0, #0
+ beq _080753E4
+ ldr r0, [r3, #0x34]
+ cmp r0, #0
+ beq _080753E4
+ movs r0, #0x20
+ orrs r0, r2
+ strb r0, [r4, #2]
+ adds r0, r4, #0
+ adds r0, #0xab
+ strb r6, [r0]
+ movs r0, #8
+ asrs r0, r7
+ lsls r1, r0, #4
+ orrs r0, r1
+ ldrb r1, [r4, #4]
+ orrs r0, r1
+ strb r0, [r4, #4]
+ adds r0, r5, #0
+ bl sub_08077B98
+ movs r0, #6
+ strb r0, [r5, #4]
+ adds r0, r5, #0
+ adds r1, r7, #0
+ bl sub_08075898
+ b _080754B4
+ .align 2, 0
+_080753D4: .4byte gPlayerEntity
+_080753D8: .4byte 0x00017FFF
+_080753DC:
+ ldr r2, _080753F0 @ =gPlayerEntity
+ ldr r0, [r2, #0x34]
+ cmp r0, #0
+ beq _080753F4
+_080753E4:
+ adds r0, r5, #0
+ adds r1, r7, #0
+ bl sub_080759B8
+ b _080754B4
+ .align 2, 0
+_080753F0: .4byte gPlayerEntity
+_080753F4:
+ movs r6, #0x80
+ lsls r6, r6, #0xb
+ ands r6, r1
+ cmp r6, #0
+ beq _08075480
+ adds r0, r4, #0
+ adds r0, #0xac
+ ldrh r1, [r0]
+ movs r0, #2
+ ands r0, r1
+ lsls r0, r0, #0x10
+ lsrs r6, r0, #0x10
+ cmp r6, #0
+ bne _0807541E
+ ldr r0, [r4, #0x2c]
+ cmp r0, #0
+ beq _080754B4
+ bl DeleteEntity
+ str r6, [r4, #0x2c]
+ b _080754B4
+_0807541E:
+ adds r0, r5, #0
+ adds r1, r7, #0
+ bl sub_08077D38
+ adds r0, r5, #0
+ bl sub_08077B98
+ movs r3, #8
+ adds r1, r3, #0
+ asrs r1, r7
+ lsls r0, r1, #4
+ orrs r0, r1
+ ldrb r2, [r4, #4]
+ orrs r0, r2
+ strb r0, [r4, #4]
+ ldrb r2, [r4, #0xa]
+ adds r0, r1, #0
+ orrs r0, r2
+ strb r0, [r4, #0xa]
+ ldrb r0, [r4, #0xb]
+ orrs r1, r0
+ strb r1, [r4, #0xb]
+ strb r3, [r5, #4]
+ movs r0, #0x14
+ strb r0, [r5, #7]
+ movs r0, #6
+ strb r0, [r5, #0xf]
+ ldrb r1, [r5, #9]
+ movs r0, #0x80
+ orrs r0, r1
+ strb r0, [r5, #9]
+ adds r1, r4, #0
+ adds r1, #0xab
+ movs r0, #2
+ strb r0, [r1]
+ ldr r0, [r4, #0x30]
+ movs r1, #0x80
+ lsls r1, r1, #0x14
+ orrs r0, r1
+ str r0, [r4, #0x30]
+ movs r1, #0x98
+ lsls r1, r1, #1
+ adds r0, r5, #0
+ bl sub_08077DF4
+ movs r0, #0x77
+ bl SoundReq
+ b _080754B4
+_08075480:
+ ldrb r1, [r4, #0x1b]
+ adds r0, r3, #0
+ ands r0, r1
+ cmp r0, #0
+ bne _08075492
+ strb r6, [r4, #0x1b]
+ adds r0, r2, #0
+ bl sub_0806F948
+_08075492:
+ ldr r1, [r4, #0x2c]
+ cmp r1, #0
+ beq _080754A6
+ ldrb r0, [r1, #9]
+ cmp r0, #1
+ beq _080754A6
+ adds r0, r1, #0
+ bl DeleteEntity
+ str r6, [r4, #0x2c]
+_080754A6:
+ adds r0, r5, #0
+ adds r1, r7, #0
+ bl sub_08077D38
+ adds r0, r5, #0
+ bl sub_08077B98
+_080754B4:
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+ thumb_func_start sub_080754B8
+sub_080754B8: @ 0x080754B8
+ push {r4, r5, r6, r7, lr}
+ adds r4, r0, #0
+ adds r6, r1, #0
+ ldr r7, _080754D4 @ =gPlayerState
+ ldrb r1, [r7, #0x1b]
+ movs r0, #0x80
+ ands r0, r1
+ cmp r0, #0
+ beq _080754D8
+ adds r0, r4, #0
+ adds r1, r6, #0
+ bl sub_08075694
+ b _0807557E
+ .align 2, 0
+_080754D4: .4byte gPlayerState
+_080754D8:
+ ldrb r0, [r7, #4]
+ cmp r0, #0
+ beq _08075576
+ adds r0, r4, #0
+ bl UpdateItemAnim
+ ldrb r0, [r4, #0xe]
+ cmp r0, #0
+ beq _080754F2
+ ldrb r1, [r4, #9]
+ movs r0, #0x7f
+ ands r0, r1
+ strb r0, [r4, #9]
+_080754F2:
+ ldr r0, _0807552C @ =gPlayerEntity
+ adds r0, #0x5b
+ ldrb r1, [r0]
+ movs r0, #1
+ ands r0, r1
+ cmp r0, #0
+ beq _08075538
+ bl sub_0807B014
+ adds r5, r0, #0
+ cmp r5, #0
+ beq _08075538
+ movs r0, #8
+ movs r1, #0xf
+ movs r2, #2
+ bl FindEntityInListBySubtype
+ cmp r0, #0
+ bne _08075538
+ adds r0, r4, #0
+ movs r1, #0xf
+ bl CreatePlayerBomb
+ cmp r5, #0xf
+ bne _08075530
+ adds r1, r7, #0
+ adds r1, #0xab
+ movs r0, #5
+ b _08075536
+ .align 2, 0
+_0807552C: .4byte gPlayerEntity
+_08075530:
+ adds r1, r7, #0
+ adds r1, #0xab
+ movs r0, #8
+_08075536:
+ strb r0, [r1]
+_08075538:
+ ldrb r1, [r4, #0xe]
+ movs r2, #0x80
+ adds r0, r2, #0
+ ands r0, r1
+ cmp r0, #0
+ beq _0807557E
+ ldr r1, _08075568 @ =gPlayerState
+ ldr r0, [r1, #0x30]
+ ands r0, r2
+ cmp r0, #0
+ bne _0807555C
+ adds r0, r1, #0
+ adds r0, #0xac
+ ldrh r1, [r0]
+ movs r0, #1
+ ands r0, r1
+ cmp r0, #0
+ bne _0807556C
+_0807555C:
+ adds r0, r4, #0
+ adds r1, r6, #0
+ bl sub_080759B8
+ b _0807557E
+ .align 2, 0
+_08075568: .4byte gPlayerState
+_0807556C:
+ adds r0, r4, #0
+ adds r1, r6, #0
+ bl sub_08075580
+ b _0807557E
+_08075576:
+ adds r0, r4, #0
+ adds r1, r6, #0
+ bl sub_080759B8
+_0807557E:
+ pop {r4, r5, r6, r7, pc}
+
+
+ thumb_func_start sub_08075580
+sub_08075580: @ 0x08075580
+ push {r4, r5, lr}
+ adds r4, r0, #0
+ adds r5, r1, #0
+ bl sub_08077EFC
+ cmp r0, #0
+ beq _080755E6
+ ldr r2, _080755C8 @ =gPlayerState
+ ldrb r3, [r2, #2]
+ cmp r3, #0
+ bne _080755E6
+ movs r1, #8
+ asrs r1, r5
+ ldrb r0, [r2, #0xa]
+ bics r0, r1
+ strb r0, [r2, #0xa]
+ movs r0, #1
+ strb r0, [r2, #0x1b]
+ ldr r0, [r2, #0x2c]
+ adds r0, #0x40
+ movs r1, #0xd
+ strb r1, [r0]
+ strb r3, [r4, #0xf]
+ movs r0, #2
+ strb r0, [r4, #4]
+ adds r0, r2, #0
+ adds r0, #0xac
+ ldrh r1, [r0]
+ movs r0, #0x80
+ lsls r0, r0, #2
+ ands r0, r1
+ cmp r0, #0
+ beq _080755CC
+ movs r0, #0x28
+ b _080755CE
+ .align 2, 0
+_080755C8: .4byte gPlayerState
+_080755CC:
+ movs r0, #0x50
+_080755CE:
+ strb r0, [r4, #7]
+ movs r1, #0xb4
+ lsls r1, r1, #1
+ adds r0, r4, #0
+ bl sub_08077DF4
+ movs r0, #0x43
+ movs r1, #0
+ movs r2, #0
+ bl CreateObject
+ b _080755EE
+_080755E6:
+ adds r0, r4, #0
+ adds r1, r5, #0
+ bl sub_080759B8
+_080755EE:
+ pop {r4, r5, pc}
+
+ thumb_func_start sub_080755F0
+sub_080755F0: @ 0x080755F0
+ push {r4, r5, lr}
+ adds r4, r0, #0
+ adds r5, r1, #0
+ bl sub_08077EFC
+ cmp r0, #0
+ beq _08075642
+ adds r0, r4, #0
+ bl sub_08077EC8
+ cmp r0, #0
+ bne _0807564A
+ ldr r2, _08075634 @ =gPlayerState
+ ldrb r3, [r2, #0x1b]
+ ldrb r0, [r2, #4]
+ orrs r0, r3
+ cmp r0, #0
+ beq _08075638
+ ldrb r0, [r4, #7]
+ subs r0, #1
+ strb r0, [r4, #7]
+ lsls r0, r0, #0x18
+ cmp r0, #0
+ bne _0807564A
+ movs r0, #3
+ strb r0, [r4, #4]
+ ldrb r0, [r4, #9]
+ movs r1, #0x80
+ orrs r0, r1
+ strb r0, [r4, #9]
+ movs r0, #0x20
+ orrs r0, r3
+ strb r0, [r2, #0x1b]
+ b _0807564A
+ .align 2, 0
+_08075634: .4byte gPlayerState
+_08075638:
+ adds r0, r4, #0
+ adds r1, r5, #0
+ bl sub_080759B8
+ b _0807564A
+_08075642:
+ adds r0, r4, #0
+ adds r1, r5, #0
+ bl sub_080759B8
+_0807564A:
+ pop {r4, r5, pc}
+
+ thumb_func_start sub_0807564C
+sub_0807564C: @ 0x0807564C
+ push {r4, r5, r6, lr}
+ adds r4, r0, #0
+ adds r6, r1, #0
+ ldr r5, _08075668 @ =gPlayerState
+ ldrb r1, [r5, #0x1b]
+ ldrb r0, [r5, #4]
+ orrs r0, r1
+ cmp r0, #0
+ bne _0807566C
+ adds r0, r4, #0
+ adds r1, r6, #0
+ bl sub_080759B8
+ b _08075692
+ .align 2, 0
+_08075668: .4byte gPlayerState
+_0807566C:
+ adds r0, r4, #0
+ bl sub_08077EC8
+ cmp r0, #0
+ bne _08075692
+ adds r0, r4, #0
+ bl sub_08077EFC
+ cmp r0, #0
+ beq _0807568A
+ ldrb r1, [r5, #0x1b]
+ movs r0, #0x80
+ ands r0, r1
+ cmp r0, #0
+ beq _08075692
+_0807568A:
+ adds r0, r4, #0
+ adds r1, r6, #0
+ bl sub_08075694
+_08075692:
+ pop {r4, r5, r6, pc}
+
+ thumb_func_start sub_08075694
+sub_08075694: @ 0x08075694
+ push {r4, r5, lr}
+ adds r4, r0, #0
+ adds r5, r1, #0
+ movs r3, #1
+ strb r3, [r4, #7]
+ ldr r2, _080756C4 @ =gPlayerState
+ ldr r1, [r2, #0x30]
+ movs r0, #0x80
+ lsls r0, r0, #0x14
+ ands r0, r1
+ cmp r0, #0
+ beq _080756D0
+ ldr r0, _080756C8 @ =0xF7FFFFFF
+ ands r1, r0
+ ldr r0, _080756CC @ =0xFFFBFFFF
+ ands r1, r0
+ str r1, [r2, #0x30]
+ movs r1, #0x96
+ lsls r1, r1, #1
+ adds r0, r4, #0
+ bl sub_08077DF4
+ b _080756E0
+ .align 2, 0
+_080756C4: .4byte gPlayerState
+_080756C8: .4byte 0xF7FFFFFF
+_080756CC: .4byte 0xFFFBFFFF
+_080756D0:
+ adds r0, r2, #0
+ adds r0, #0xab
+ strb r3, [r0]
+ movs r1, #0x92
+ lsls r1, r1, #1
+ adds r0, r4, #0
+ bl sub_08077DF4
+_080756E0:
+ ldr r2, _08075730 @ =gPlayerState
+ movs r0, #8
+ asrs r0, r5
+ ldrb r1, [r2, #0xa]
+ orrs r0, r1
+ strb r0, [r2, #0xa]
+ movs r0, #4
+ strb r0, [r4, #4]
+ movs r0, #6
+ strb r0, [r4, #0xf]
+ ldr r0, _08075734 @ =gPlayerEntity
+ adds r0, #0x40
+ movs r1, #0x1e
+ strb r1, [r0]
+ ldrb r1, [r2, #0x1b]
+ movs r0, #0x40
+ orrs r0, r1
+ movs r1, #0xdf
+ ands r0, r1
+ strb r0, [r2, #0x1b]
+ adds r3, r2, #0
+ adds r3, #0xa0
+ ldrb r0, [r3]
+ cmp r0, #4
+ bne _08075726
+ ldr r0, [r2, #0x30]
+ movs r1, #0x80
+ lsls r1, r1, #0xf
+ ands r0, r1
+ cmp r0, #0
+ bne _08075726
+ movs r0, #1
+ strb r0, [r3]
+ bl sub_0807A108
+_08075726:
+ movs r0, #0x76
+ bl SoundReq
+ pop {r4, r5, pc}
+ .align 2, 0
+_08075730: .4byte gPlayerState
+_08075734: .4byte gPlayerEntity
+
+ thumb_func_start sub_08075738
+sub_08075738: @ 0x08075738
+ push {r4, r5, r6, r7, lr}
+ adds r4, r0, #0
+ adds r6, r1, #0
+ ldr r5, _08075750 @ =gPlayerState
+ ldrb r0, [r5, #4]
+ cmp r0, #0
+ bne _08075754
+ adds r0, r4, #0
+ bl sub_080759B8
+ b _0807588C
+ .align 2, 0
+_08075750: .4byte gPlayerState
+_08075754:
+ adds r0, r4, #0
+ bl UpdateItemAnim
+ adds r0, r4, #0
+ bl sub_08077F10
+ cmp r0, #0
+ beq _08075768
+ movs r0, #2
+ strb r0, [r4, #7]
+_08075768:
+ ldrb r2, [r5, #0x1b]
+ movs r0, #0x10
+ ands r0, r2
+ cmp r0, #0
+ beq _080757D4
+ ldrb r1, [r5, #0xd]
+ movs r2, #0x80
+ adds r0, r2, #0
+ ands r0, r1
+ cmp r0, #0
+ bne _08075780
+ strb r1, [r4, #0xb]
+_08075780:
+ ldr r1, _080757D0 @ =gPlayerEntity
+ ldrb r0, [r4, #0xb]
+ strb r0, [r1, #0x15]
+ movs r0, #0xc0
+ lsls r0, r0, #1
+ strh r0, [r1, #0x24]
+ ldrb r1, [r4, #0xe]
+ adds r0, r2, #0
+ ands r0, r1
+ cmp r0, #0
+ beq _0807588C
+ movs r2, #0xa
+ adds r0, r5, #0
+ adds r0, #0xac
+ ldrh r1, [r0]
+ movs r0, #0x80
+ lsls r0, r0, #4
+ ands r0, r1
+ cmp r0, #0
+ beq _080757AA
+ movs r2, #0xf
+_080757AA:
+ ldrb r0, [r4, #8]
+ adds r0, #1
+ strb r0, [r4, #8]
+ movs r1, #0xff
+ lsls r0, r0, #0x18
+ lsrs r0, r0, #0x18
+ cmp r2, r0
+ bls _080757C6
+ ldrb r0, [r4, #7]
+ subs r0, #1
+ strb r0, [r4, #7]
+ ands r0, r1
+ cmp r0, #0
+ bne _0807588C
+_080757C6:
+ adds r0, r4, #0
+ adds r1, r6, #0
+ bl sub_080759B8
+ b _0807588C
+ .align 2, 0
+_080757D0: .4byte gPlayerEntity
+_080757D4:
+ ldr r7, _08075890 @ =gPlayerEntity
+ adds r0, r7, #0
+ adds r0, #0x5b
+ ldrb r1, [r0]
+ movs r0, #1
+ ands r0, r1
+ cmp r0, #0
+ beq _08075816
+ movs r0, #0x80
+ ands r0, r2
+ cmp r0, #0
+ bne _08075816
+ adds r0, r5, #0
+ adds r0, #0xac
+ ldrh r1, [r0]
+ movs r0, #0x80
+ lsls r0, r0, #1
+ ands r0, r1
+ cmp r0, #0
+ beq _08075816
+ adds r0, r4, #0
+ movs r1, #0x14
+ bl CreatePlayerBomb
+ adds r2, r0, #0
+ cmp r2, #0
+ beq _08075816
+ ldrb r0, [r7, #0x14]
+ movs r1, #6
+ ands r1, r0
+ movs r0, #0x80
+ orrs r1, r0
+ strb r1, [r2, #0x14]
+_08075816:
+ ldr r5, _08075890 @ =gPlayerEntity
+ adds r0, r5, #0
+ adds r0, #0x5b
+ ldrb r1, [r0]
+ movs r0, #2
+ ands r0, r1
+ cmp r0, #0
+ beq _0807587A
+ ldr r2, _08075894 @ =gPlayerState
+ ldrb r3, [r2, #0x1b]
+ movs r0, #0x80
+ ands r0, r3
+ cmp r0, #0
+ bne _0807587A
+ adds r0, r2, #0
+ adds r0, #0xac
+ ldrh r1, [r0]
+ movs r0, #0x20
+ ands r0, r1
+ cmp r0, #0
+ beq _0807587A
+ ldrb r0, [r4, #7]
+ subs r0, #1
+ strb r0, [r4, #7]
+ lsls r0, r0, #0x18
+ cmp r0, #0
+ beq _0807587A
+ movs r0, #0x10
+ orrs r0, r3
+ strb r0, [r2, #0x1b]
+ adds r1, r2, #0
+ adds r1, #0xab
+ movs r0, #6
+ strb r0, [r1]
+ ldrb r0, [r5, #0x14]
+ lsls r0, r0, #2
+ strb r0, [r4, #0xb]
+ movs r0, #1
+ strb r0, [r4, #7]
+ strb r0, [r4, #8]
+ movs r1, #8
+ asrs r1, r6
+ ldrb r0, [r2, #0xa]
+ bics r0, r1
+ strb r0, [r2, #0xa]
+ movs r1, #0x94
+ lsls r1, r1, #1
+ adds r0, r4, #0
+ bl sub_08077DF4
+_0807587A:
+ ldrb r1, [r4, #0xe]
+ movs r0, #0x80
+ ands r0, r1
+ cmp r0, #0
+ beq _0807588C
+ adds r0, r4, #0
+ adds r1, r6, #0
+ bl sub_080759B8
+_0807588C:
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_08075890: .4byte gPlayerEntity
+_08075894: .4byte gPlayerState
+
+ thumb_func_start sub_08075898
+sub_08075898: @ 0x08075898
+ push {lr}
+ adds r2, r0, #0
+ ldr r0, _080758AC @ =gPlayerState
+ ldrb r0, [r0, #4]
+ cmp r0, #0
+ bne _080758AA
+ adds r0, r2, #0
+ bl sub_080759B8
+_080758AA:
+ pop {pc}
+ .align 2, 0
+_080758AC: .4byte gPlayerState
+
+ thumb_func_start sub_080758B0
+sub_080758B0: @ 0x080758B0
+ push {r4, r5, lr}
+ adds r4, r0, #0
+ ldr r5, _080758C4 @ =gPlayerState
+ ldrb r0, [r5, #4]
+ cmp r0, #0
+ bne _080758C8
+ adds r0, r4, #0
+ bl sub_080759B8
+ b _080758F8
+ .align 2, 0
+_080758C4: .4byte gPlayerState
+_080758C8:
+ adds r0, r4, #0
+ bl UpdateItemAnim
+ ldrb r1, [r4, #0xe]
+ movs r0, #0x80
+ ands r0, r1
+ cmp r0, #0
+ beq _080758F8
+ movs r0, #0
+ strb r0, [r4, #0xf]
+ ldrb r1, [r5, #0x1b]
+ movs r0, #0x20
+ ands r0, r1
+ cmp r0, #0
+ beq _080758EA
+ movs r0, #3
+ b _080758EC
+_080758EA:
+ movs r0, #5
+_080758EC:
+ strb r0, [r4, #4]
+ ldr r2, _080758FC @ =gPlayerState
+ ldrb r1, [r2, #0x1b]
+ movs r0, #0xf7
+ ands r0, r1
+ strb r0, [r2, #0x1b]
+_080758F8:
+ pop {r4, r5, pc}
+ .align 2, 0
+_080758FC: .4byte gPlayerState
+
+ thumb_func_start sub_08075900
+sub_08075900: @ 0x08075900
+ push {r4, r5, r6, lr}
+ adds r4, r0, #0
+ adds r6, r1, #0
+ ldr r5, _08075920 @ =gPlayerState
+ ldrb r0, [r5, #0x12]
+ cmp r0, #0x11
+ bne _08075928
+ ldr r0, [r5, #0x30]
+ ldr r1, _08075924 @ =0xFFFBFFFF
+ ands r0, r1
+ str r0, [r5, #0x30]
+ adds r0, r4, #0
+ adds r1, r6, #0
+ bl sub_080759B8
+ b _080759B2
+ .align 2, 0
+_08075920: .4byte gPlayerState
+_08075924: .4byte 0xFFFBFFFF
+_08075928:
+ adds r0, r4, #0
+ bl UpdateItemAnim
+ ldrb r1, [r5, #0x1b]
+ movs r2, #0x80
+ adds r0, r2, #0
+ ands r0, r1
+ cmp r0, #0
+ beq _08075948
+ movs r0, #0xa0
+ strb r0, [r5, #0x1b]
+ adds r0, r4, #0
+ adds r1, r6, #0
+ bl sub_0807564C
+ b _080759B2
+_08075948:
+ ldrb r0, [r4, #7]
+ cmp r0, #0
+ beq _08075998
+ subs r0, #1
+ strb r0, [r4, #7]
+ lsls r0, r0, #0x18
+ cmp r0, #0
+ bne _08075962
+ movs r1, #0x9a
+ lsls r1, r1, #1
+ adds r0, r4, #0
+ bl sub_08077DF4
+_08075962:
+ ldr r4, _08075990 @ =gPlayerEntity
+ ldrb r0, [r4, #0x14]
+ lsrs r0, r0, #1
+ lsls r0, r0, #3
+ strb r0, [r4, #0x15]
+ movs r0, #0xc0
+ lsls r0, r0, #2
+ strh r0, [r4, #0x24]
+ bl sub_08079E08
+ ldr r0, _08075994 @ =gScreenTransition
+ ldr r0, [r0]
+ movs r1, #3
+ ands r0, r1
+ cmp r0, #0
+ bne _080759B2
+ adds r0, r4, #0
+ movs r1, #0x11
+ movs r2, #0x40
+ bl CreateFx
+ b _080759B2
+ .align 2, 0
+_08075990: .4byte gPlayerEntity
+_08075994: .4byte gScreenTransition
+_08075998:
+ ldrb r1, [r4, #0xe]
+ adds r0, r2, #0
+ ands r0, r1
+ cmp r0, #0
+ beq _080759B2
+ ldr r0, [r5, #0x30]
+ ldr r1, _080759B4 @ =0xFFFBFFFF
+ ands r0, r1
+ str r0, [r5, #0x30]
+ adds r0, r4, #0
+ adds r1, r6, #0
+ bl sub_080759B8
+_080759B2:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_080759B4: .4byte 0xFFFBFFFF
+
+
+
+ thumb_func_start sub_080759B8
+sub_080759B8: @ 0x080759B8
+ push {r4, lr}
+ adds r3, r0, #0
+ adds r4, r1, #0
+ ldr r2, _080759E8 @ =gPlayerState
+ ldr r1, [r2, #0x30]
+ movs r0, #0x80
+ ands r1, r0
+ cmp r1, #0
+ bne _080759D0
+ ldr r0, _080759EC @ =gPlayerEntity
+ adds r0, #0x40
+ strb r1, [r0]
+_080759D0:
+ ldr r0, [r2, #0x30]
+ ldr r1, _080759F0 @ =0xF7FFFFFF
+ ands r0, r1
+ str r0, [r2, #0x30]
+ movs r0, #0
+ strb r0, [r2, #0x1b]
+ str r0, [r2, #0x2c]
+ adds r0, r3, #0
+ adds r1, r4, #0
+ bl sub_08077E78
+ pop {r4, pc}
+ .align 2, 0
+_080759E8: .4byte gPlayerState
+_080759EC: .4byte gPlayerEntity
+_080759F0: .4byte 0xF7FFFFFF
diff --git a/asm/item/itemTryPickupObject.inc b/asm/item/itemTryPickupObject.inc
new file mode 100644
index 00000000..12b7f64a
--- /dev/null
+++ b/asm/item/itemTryPickupObject.inc
@@ -0,0 +1,597 @@
+ thumb_func_start ItemTryPickupObject
+ItemTryPickupObject: @ 0x080761A8
+ push {lr}
+ ldr r3, _080761BC @ =gUnk_0811BDB4
+ ldrb r2, [r0, #4]
+ lsls r2, r2, #2
+ adds r2, r2, r3
+ ldr r2, [r2]
+ bl _call_via_r2
+ pop {pc}
+ .align 2, 0
+_080761BC: .4byte gUnk_0811BDB4
+
+ thumb_func_start sub_080761C0
+sub_080761C0: @ 0x080761C0
+ push {r4, r5, r6, lr}
+ adds r4, r0, #0
+ adds r6, r1, #0
+ ldr r5, _08076220 @ =gPlayerState
+ ldrb r0, [r5, #4]
+ cmp r0, #0
+ bne _080762B8
+ ldrb r0, [r5, #2]
+ cmp r0, #0
+ beq _080761DE
+ ldr r0, [r5, #0x30]
+ ldr r1, _08076224 @ =0x00001201
+ ands r0, r1
+ cmp r0, #0
+ beq _080762B8
+_080761DE:
+ ldr r1, _08076228 @ =gPlayerEntity
+ ldrb r2, [r1, #0x14]
+ movs r0, #0x80
+ orrs r0, r2
+ strb r0, [r5, #1]
+ adds r1, #0x3d
+ movs r0, #0
+ ldrsb r0, [r1, r0]
+ cmp r0, #8
+ bgt _080762B8
+ bl sub_080789A8
+ adds r3, r0, #0
+ cmp r3, #1
+ beq _08076258
+ cmp r3, #1
+ blo _0807626E
+ cmp r3, #2
+ bne _080762C0
+ ldr r0, _0807622C @ =gUnk_03003BE0
+ ldr r2, [r0, #8]
+ ldrb r1, [r2, #0x16]
+ movs r0, #0xf
+ ands r0, r1
+ cmp r0, #0
+ bne _08076230
+ adds r0, r4, #0
+ adds r1, r2, #0
+ adds r2, r6, #0
+ bl sub_08076088
+ b _080762C0
+ .align 2, 0
+_08076220: .4byte gPlayerState
+_08076224: .4byte 0x00001201
+_08076228: .4byte gPlayerEntity
+_0807622C: .4byte gUnk_03003BE0
+_08076230:
+ str r2, [r4, #0x18]
+ strb r3, [r2, #0xc]
+ movs r1, #5
+ strb r1, [r2, #0xd]
+ adds r0, r5, #0
+ adds r0, #0xa8
+ strb r1, [r0]
+ adds r0, r4, #0
+ adds r1, r2, #0
+ movs r2, #2
+ adds r3, r6, #0
+ bl sub_080762C4
+ ldr r0, _08076254 @ =gUnk_0200AF00
+ adds r0, #0x2e
+ movs r1, #8
+ strb r1, [r0]
+ b _08076264
+ .align 2, 0
+_08076254: .4byte gUnk_0200AF00
+_08076258:
+ adds r0, r4, #0
+ movs r1, #0
+ movs r2, #1
+ adds r3, r6, #0
+ bl sub_080762C4
+_08076264:
+ movs r0, #0x81
+ lsls r0, r0, #1
+ bl SoundReq
+ b _080762C0
+_0807626E:
+ movs r0, #5
+ strb r0, [r4, #4]
+ movs r0, #0xf
+ strb r0, [r4, #7]
+ movs r0, #6
+ strb r0, [r4, #0xf]
+ movs r3, #8
+ adds r1, r3, #0
+ asrs r1, r6
+ ldrb r2, [r5, #0xa]
+ adds r0, r1, #0
+ orrs r0, r2
+ strb r0, [r5, #0xa]
+ ldrb r0, [r5, #0xb]
+ orrs r1, r0
+ strb r1, [r5, #0xb]
+ ldr r0, [r5, #0x30]
+ ands r0, r3
+ cmp r0, #0
+ bne _080762A2
+ movs r1, #0xde
+ lsls r1, r1, #2
+ adds r0, r4, #0
+ bl sub_08077DF4
+ b _080762AA
+_080762A2:
+ ldr r1, _080762B4 @ =0x00000948
+ adds r0, r4, #0
+ bl sub_08077DF4
+_080762AA:
+ movs r0, #0x88
+ bl SoundReq
+ b _080762C0
+ .align 2, 0
+_080762B4: .4byte 0x00000948
+_080762B8:
+ adds r0, r4, #0
+ adds r1, r6, #0
+ bl sub_08077F50
+_080762C0:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+ thumb_func_start sub_080762C4
+sub_080762C4: @ 0x080762C4
+ push {lr}
+ str r1, [r0, #0x18]
+ ldr r1, _080762D4 @ =gPlayerState
+ strb r2, [r1, #5]
+ adds r1, r3, #0
+ bl sub_08077D38
+ pop {pc}
+ .align 2, 0
+_080762D4: .4byte gPlayerState
+
+ thumb_func_start sub_080762D8
+sub_080762D8: @ 0x080762D8
+ push {r4, r5, r6, r7, lr}
+ adds r5, r0, #0
+ adds r6, r1, #0
+ ldr r4, _08076334 @ =gPlayerState
+ ldrb r0, [r4, #5]
+ movs r1, #0xcf
+ ands r1, r0
+ strb r1, [r4, #5]
+ adds r0, r5, #0
+ adds r1, r6, #0
+ bl sub_08077F64
+ cmp r0, #0
+ bne _080762F6
+ b _08076486
+_080762F6:
+ ldr r0, _08076338 @ =gPlayerEntity
+ adds r1, r0, #0
+ adds r1, #0x3d
+ ldrb r1, [r1]
+ lsls r1, r1, #0x18
+ asrs r1, r1, #0x18
+ adds r3, r0, #0
+ cmp r1, #8
+ bgt _0807636C
+ adds r0, #0x42
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne _0807636C
+ ldr r2, [r5, #0x18]
+ cmp r2, #0
+ beq _08076340
+ ldrh r1, [r2, #0xc]
+ ldr r0, _0807633C @ =0x00000502
+ cmp r1, r0
+ bne _08076376
+ adds r0, r4, #0
+ adds r0, #0x90
+ ldrh r1, [r0]
+ movs r0, #0x80
+ ands r0, r1
+ cmp r0, #0
+ bne _08076340
+ movs r0, #6
+ strb r0, [r2, #0xd]
+ b _08076376
+ .align 2, 0
+_08076334: .4byte gPlayerState
+_08076338: .4byte gPlayerEntity
+_0807633C: .4byte 0x00000502
+_08076340:
+ ldr r2, _08076364 @ =gPlayerState
+ adds r1, r2, #0
+ adds r1, #0xa8
+ movs r0, #5
+ strb r0, [r1]
+ ldr r0, _08076368 @ =gUnk_0200AF00
+ adds r0, #0x2e
+ movs r1, #8
+ strb r1, [r0]
+ ldrb r0, [r2, #2]
+ cmp r0, #0
+ beq _0807635A
+ b _0807647E
+_0807635A:
+ ldrb r0, [r2, #5]
+ cmp r0, #1
+ bne _08076394
+ b _08076380
+ .align 2, 0
+_08076364: .4byte gPlayerState
+_08076368: .4byte gUnk_0200AF00
+_0807636C:
+ ldr r1, [r5, #0x18]
+ cmp r1, #0
+ beq _08076376
+ movs r0, #6
+ strb r0, [r1, #0xd]
+_08076376:
+ adds r0, r5, #0
+ adds r1, r6, #0
+ bl sub_08077F50
+ b _08076486
+_08076380:
+ adds r0, r3, #0
+ movs r1, #6
+ adds r2, r5, #0
+ bl sub_0800875A
+ cmp r0, #0
+ beq _08076394
+ adds r0, r5, #0
+ movs r1, #0
+ b _080763EC
+_08076394:
+ ldr r1, _080763F4 @ =gUnk_0811BE38
+ ldr r7, _080763F8 @ =gPlayerEntity
+ ldrb r0, [r7, #0x14]
+ lsrs r0, r0, #1
+ lsls r3, r0, #1
+ adds r1, r3, r1
+ ldr r4, _080763FC @ =gPlayerState
+ adds r2, r4, #0
+ adds r2, #0x90
+ ldrh r0, [r1]
+ ldrh r2, [r2]
+ ands r0, r2
+ cmp r0, #0
+ beq _08076400
+ adds r0, r5, #0
+ bl UpdateItemAnim
+ ldr r0, [r4, #0x30]
+ movs r1, #8
+ ands r0, r1
+ movs r1, #0x94
+ lsls r1, r1, #4
+ cmp r0, #0
+ bne _080763C8
+ movs r1, #0xd0
+ lsls r1, r1, #2
+_080763C8:
+ ldrh r0, [r5, #0x10]
+ cmp r1, r0
+ beq _080763D4
+ adds r0, r5, #0
+ bl sub_08077DF4
+_080763D4:
+ ldrb r0, [r4, #5]
+ movs r1, #0x10
+ orrs r1, r0
+ strb r1, [r4, #5]
+ adds r2, r4, #0
+ adds r2, #0xa8
+ movs r0, #0x1a
+ strb r0, [r2]
+ cmp r1, #1
+ beq _08076486
+ ldr r1, [r5, #0x18]
+ adds r0, r5, #0
+_080763EC:
+ adds r2, r6, #0
+ bl sub_08076088
+ b _08076486
+ .align 2, 0
+_080763F4: .4byte gUnk_0811BE38
+_080763F8: .4byte gPlayerEntity
+_080763FC: .4byte gPlayerState
+_08076400:
+ ldr r0, _08076418 @ =gUnk_0811BE40
+ adds r0, r3, r0
+ ldrh r0, [r0]
+ ands r0, r2
+ cmp r0, #0
+ beq _08076460
+ ldrb r0, [r7, #0xf]
+ cmp r0, #5
+ bhi _0807641C
+ adds r0, #1
+ strb r0, [r7, #0xf]
+ b _08076486
+ .align 2, 0
+_08076418: .4byte gUnk_0811BE40
+_0807641C:
+ ldrb r0, [r5, #0xa]
+ adds r1, r4, #0
+ adds r1, #0x35
+ strb r0, [r1]
+ ldrb r0, [r4, #6]
+ movs r1, #0x80
+ orrs r0, r1
+ strb r0, [r4, #6]
+ ldrb r1, [r4, #5]
+ movs r0, #0x20
+ orrs r0, r1
+ strb r0, [r4, #5]
+ adds r1, r4, #0
+ adds r1, #0xa8
+ movs r0, #0x19
+ strb r0, [r1]
+ ldr r0, [r4, #0x30]
+ movs r1, #8
+ ands r0, r1
+ ldr r1, _0807645C @ =0x0000093C
+ cmp r0, #0
+ bne _0807644C
+ movs r1, #0xcf
+ lsls r1, r1, #2
+_0807644C:
+ ldrh r0, [r5, #0x10]
+ cmp r1, r0
+ bne _08076476
+ adds r0, r5, #0
+ bl UpdateItemAnim
+ b _08076486
+ .align 2, 0
+_0807645C: .4byte 0x0000093C
+_08076460:
+ strb r0, [r7, #0xf]
+ ldr r0, [r4, #0x30]
+ movs r1, #8
+ ands r0, r1
+ cmp r0, #0
+ bne _08076472
+ movs r1, #0xd0
+ lsls r1, r1, #2
+ b _08076476
+_08076472:
+ movs r1, #0x94
+ lsls r1, r1, #4
+_08076476:
+ adds r0, r5, #0
+ bl sub_08077DF4
+ b _08076486
+_0807647E:
+ adds r0, r5, #0
+ adds r1, r6, #0
+ bl sub_08077F50
+_08076486:
+ pop {r4, r5, r6, r7, pc}
+
+ thumb_func_start sub_08076488
+sub_08076488: @ 0x08076488
+ push {r4, r5, r6, lr}
+ adds r4, r0, #0
+ adds r5, r1, #0
+ ldrb r0, [r4, #7]
+ adds r6, r0, #0
+ cmp r6, #0
+ bne _08076504
+ adds r0, r4, #0
+ bl sub_08077F64
+ cmp r0, #0
+ beq _08076508
+ ldr r0, [r4, #0x18]
+ ldrb r1, [r0, #0x16]
+ movs r0, #0xf0
+ ands r0, r1
+ cmp r0, #0x10
+ bne _080764B8
+ ldr r0, _080764F8 @ =gScreenTransition
+ ldr r0, [r0]
+ movs r1, #1
+ ands r0, r1
+ cmp r0, #0
+ bne _08076510
+_080764B8:
+ adds r0, r4, #0
+ bl UpdateItemAnim
+ ldrb r1, [r4, #0xe]
+ movs r0, #0x80
+ ands r0, r1
+ cmp r0, #0
+ beq _08076508
+ ldr r2, _080764FC @ =gPlayerEntity
+ ldrb r1, [r2, #0x10]
+ movs r0, #0x80
+ orrs r0, r1
+ strb r0, [r2, #0x10]
+ ldr r2, _08076500 @ =gPlayerState
+ movs r0, #4
+ strb r0, [r2, #5]
+ movs r1, #8
+ asrs r1, r5
+ mvns r1, r1
+ ldrb r3, [r2, #0xb]
+ adds r0, r1, #0
+ ands r0, r3
+ strb r0, [r2, #0xb]
+ ldrb r0, [r2, #0xa]
+ ands r1, r0
+ strb r1, [r2, #0xa]
+ ldrb r0, [r4, #4]
+ adds r0, #1
+ strb r0, [r4, #4]
+ strb r6, [r4, #0xf]
+ b _08076508
+ .align 2, 0
+_080764F8: .4byte gScreenTransition
+_080764FC: .4byte gPlayerEntity
+_08076500: .4byte gPlayerState
+_08076504:
+ subs r0, #1
+ strb r0, [r4, #7]
+_08076508:
+ ldr r0, _08076514 @ =gPlayerState
+ adds r0, #0xa8
+ movs r1, #4
+ strb r1, [r0]
+_08076510:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_08076514: .4byte gPlayerState
+
+ thumb_func_start sub_08076518
+sub_08076518: @ 0x08076518
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ adds r4, r0, #0
+ mov r8, r1
+ bl sub_08077F64
+ cmp r0, #0
+ beq _080765D4
+ ldr r5, _0807655C @ =gPlayerState
+ adds r1, r5, #0
+ adds r1, #0xa8
+ movs r0, #4
+ strb r0, [r1]
+ ldrb r1, [r5, #2]
+ movs r0, #0x80
+ ands r0, r1
+ cmp r0, #0
+ bne _080765D4
+ ldrb r0, [r5, #0x1f]
+ cmp r0, #0
+ bne _080765D4
+ ldr r6, _08076560 @ =gPlayerEntity
+ adds r0, r6, #0
+ adds r0, #0x42
+ ldrb r7, [r0]
+ cmp r7, #0
+ beq _08076564
+ adds r0, r4, #0
+ mov r1, r8
+ bl sub_08077F50
+ b _080765D4
+ .align 2, 0
+_0807655C: .4byte gPlayerState
+_08076560: .4byte gPlayerEntity
+_08076564:
+ adds r0, r5, #0
+ adds r0, #0x92
+ ldrh r1, [r0]
+ ldr r0, _080765B0 @ =0x00008018
+ ands r0, r1
+ cmp r0, #0
+ beq _080765D4
+ adds r0, r6, #0
+ bl sub_0806F948
+ movs r0, #5
+ strb r0, [r5, #5]
+ ldr r1, [r4, #0x18]
+ movs r0, #2
+ strb r0, [r1, #0xd]
+ ldr r2, [r4, #0x18]
+ ldrb r1, [r6, #0x14]
+ movs r0, #0xe
+ ands r0, r1
+ lsls r0, r0, #2
+ strb r0, [r2, #0x15]
+ str r7, [r4, #0x18]
+ ldrb r0, [r4, #4]
+ adds r0, #1
+ strb r0, [r4, #4]
+ movs r0, #0xf
+ strb r0, [r4, #0xf]
+ ldr r0, [r5, #0x30]
+ movs r1, #8
+ ands r0, r1
+ cmp r0, #0
+ beq _080765B4
+ movs r1, #0x93
+ lsls r1, r1, #4
+ adds r0, r4, #0
+ bl sub_08077DF4
+ b _080765BE
+ .align 2, 0
+_080765B0: .4byte 0x00008018
+_080765B4:
+ movs r1, #0xd1
+ lsls r1, r1, #2
+ adds r0, r4, #0
+ bl sub_08077DF4
+_080765BE:
+ ldr r2, _080765DC @ =gPlayerState
+ movs r1, #8
+ mov r0, r8
+ asrs r1, r0
+ ldrb r3, [r2, #0xa]
+ adds r0, r1, #0
+ orrs r0, r3
+ strb r0, [r2, #0xa]
+ ldrb r0, [r2, #0xb]
+ orrs r1, r0
+ strb r1, [r2, #0xb]
+_080765D4:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_080765DC: .4byte gPlayerState
+
+ thumb_func_start sub_080765E0
+sub_080765E0: @ 0x080765E0
+ push {r4, r5, lr}
+ adds r4, r0, #0
+ adds r5, r1, #0
+ bl sub_08077F64
+ cmp r0, #0
+ beq _08076608
+ ldrb r1, [r4, #0xe]
+ movs r0, #0x80
+ ands r0, r1
+ cmp r0, #0
+ beq _08076602
+ adds r0, r4, #0
+ adds r1, r5, #0
+ bl sub_08077F50
+ b _08076608
+_08076602:
+ adds r0, r4, #0
+ bl UpdateItemAnim
+_08076608:
+ pop {r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start sub_0807660C
+sub_0807660C: @ 0x0807660C
+ push {r4, r5, lr}
+ adds r4, r0, #0
+ adds r5, r1, #0
+ bl UpdateItemAnim
+ ldrb r0, [r4, #7]
+ subs r0, #1
+ strb r0, [r4, #7]
+ lsls r0, r0, #0x18
+ lsrs r0, r0, #0x18
+ cmp r0, #0xff
+ beq _0807662C
+ ldr r0, _0807663C @ =gPlayerState
+ ldrb r0, [r0, #1]
+ cmp r0, #0
+ bne _0807663A
+_0807662C:
+ ldr r1, _0807663C @ =gPlayerState
+ movs r0, #0
+ strb r0, [r1, #1]
+ adds r0, r4, #0
+ adds r1, r5, #0
+ bl sub_08077E78
+_0807663A:
+ pop {r4, r5, pc}
+ .align 2, 0
+_0807663C: .4byte gPlayerState
diff --git a/asm/playerItem/playerItemSword.inc b/asm/playerItem/playerItemSword.inc
new file mode 100644
index 00000000..2ca17a22
--- /dev/null
+++ b/asm/playerItem/playerItemSword.inc
@@ -0,0 +1,891 @@
+ thumb_func_start PlayerItemSword
+PlayerItemSword: @ 0x080A7544
+ push {r4, lr}
+ adds r4, r0, #0
+ ldr r1, _080A7584 @ =gUnk_0812905C
+ ldrb r0, [r4, #0xc]
+ lsls r0, r0, #2
+ adds r0, r0, r1
+ ldr r1, [r0]
+ adds r0, r4, #0
+ bl _call_via_r1
+ ldrb r0, [r4, #0xa]
+ cmp r0, #0
+ bne _080A7582
+ ldr r1, _080A7588 @ =gPlayerEntity
+ adds r0, r4, #0
+ bl sub_08078E84
+ ldr r1, [r4, #0x48]
+ adds r0, r4, #0
+ adds r0, #0x62
+ ldrb r0, [r0]
+ ldrb r2, [r1]
+ adds r0, r0, r2
+ strb r0, [r1]
+ ldr r1, [r4, #0x48]
+ adds r0, r4, #0
+ adds r0, #0x63
+ ldrb r0, [r0]
+ ldrb r2, [r1, #1]
+ adds r0, r0, r2
+ strb r0, [r1, #1]
+_080A7582:
+ pop {r4, pc}
+ .align 2, 0
+_080A7584: .4byte gUnk_0812905C
+_080A7588: .4byte gPlayerEntity
+
+ thumb_func_start sub_080A758C
+sub_080A758C: @ 0x080A758C
+ push {r4, r5, lr}
+ adds r5, r0, #0
+ ldrb r0, [r5, #0xa]
+ cmp r0, #0
+ bne _080A75AC
+ ldr r1, _080A7654 @ =gPlayerState
+ ldrb r0, [r1, #4]
+ cmp r0, #0
+ bne _080A75AC
+ ldrb r1, [r1, #2]
+ movs r0, #0x20
+ ands r0, r1
+ cmp r0, #0
+ bne _080A75AC
+ bl DeleteThisEntity
+_080A75AC:
+ adds r0, r5, #0
+ bl AllocMutableHitbox
+ cmp r0, #0
+ bne _080A75BA
+ bl DeleteThisEntity
+_080A75BA:
+ adds r0, r5, #0
+ movs r1, #1
+ movs r2, #3
+ bl sub_080AE008
+ ldr r1, _080A7658 @ =gPlayerEntity
+ adds r0, r1, #0
+ adds r0, #0x3c
+ ldrb r0, [r0]
+ adds r0, #1
+ movs r2, #0x20
+ adds r3, r5, #0
+ adds r3, #0x3c
+ movs r4, #0
+ orrs r0, r2
+ strb r0, [r3]
+ adds r1, #0x3b
+ ldrb r0, [r1]
+ adds r1, r5, #0
+ adds r1, #0x3b
+ strb r0, [r1]
+ ldrb r1, [r5, #0x11]
+ movs r0, #0x10
+ rsbs r0, r0, #0
+ ands r0, r1
+ movs r1, #6
+ orrs r0, r1
+ strb r0, [r5, #0x11]
+ adds r0, r5, #0
+ adds r0, #0x41
+ strb r4, [r0]
+ subs r0, #4
+ strb r4, [r0]
+ adds r0, #5
+ strb r4, [r0]
+ ldrb r0, [r5, #0xc]
+ adds r0, #1
+ strb r0, [r5, #0xc]
+ movs r0, #0xff
+ strb r0, [r5, #0x1e]
+ adds r0, r5, #0
+ bl sub_0801766C
+ ldrb r0, [r5, #0xa]
+ cmp r0, #0
+ bne _080A76BC
+ ldr r2, _080A7654 @ =gPlayerState
+ ldrb r1, [r2, #2]
+ movs r0, #0x20
+ ands r0, r1
+ cmp r0, #0
+ beq _080A767A
+ ldrb r1, [r5, #0x10]
+ movs r0, #0x7f
+ ands r0, r1
+ strb r0, [r5, #0x10]
+ movs r0, #2
+ strb r0, [r5, #0xb]
+ adds r0, r2, #0
+ adds r0, #0x3e
+ ldrb r0, [r0]
+ lsls r0, r0, #0x1e
+ lsrs r0, r0, #0x1d
+ adds r0, #8
+ adds r1, r5, #0
+ adds r1, #0x44
+ strb r0, [r1]
+ adds r0, r5, #0
+ adds r0, #0x68
+ ldrb r0, [r0]
+ cmp r0, #1
+ beq _080A765C
+ cmp r0, #6
+ bne _080A7664
+ subs r1, #4
+ movs r0, #0x1a
+ b _080A766A
+ .align 2, 0
+_080A7654: .4byte gPlayerState
+_080A7658: .4byte gPlayerEntity
+_080A765C:
+ adds r1, r5, #0
+ adds r1, #0x40
+ movs r0, #0x18
+ b _080A766A
+_080A7664:
+ adds r1, r5, #0
+ adds r1, #0x40
+ movs r0, #0x19
+_080A766A:
+ strb r0, [r1]
+ ldrb r0, [r5, #0xc]
+ adds r0, #1
+ strb r0, [r5, #0xc]
+ adds r0, r5, #0
+ bl sub_080A7824
+ b _080A7692
+_080A767A:
+ adds r0, r2, #0
+ adds r0, #0x3e
+ ldrb r0, [r0]
+ lsls r0, r0, #0x1e
+ lsrs r0, r0, #0x1d
+ adds r0, #4
+ adds r1, r5, #0
+ adds r1, #0x44
+ strb r0, [r1]
+ adds r0, r5, #0
+ bl sub_080A76CC
+_080A7692:
+ ldr r0, _080A76B0 @ =gPlayerState
+ str r5, [r0, #0x2c]
+ adds r0, r5, #0
+ bl sub_08079BD8
+ ldr r4, _080A76B4 @ =gUnk_0812906C
+ ldr r0, _080A76B8 @ =gUnk_08129068
+ bl sub_080028F4
+ lsls r0, r0, #1
+ adds r0, r0, r4
+ ldrh r0, [r0]
+ bl SoundReq
+ b _080A76C2
+ .align 2, 0
+_080A76B0: .4byte gPlayerState
+_080A76B4: .4byte gUnk_0812906C
+_080A76B8: .4byte gUnk_08129068
+_080A76BC:
+ adds r0, r5, #0
+ bl sub_080A76CC
+_080A76C2:
+ movs r0, #0x87
+ lsls r0, r0, #1
+ bl SoundReq
+ pop {r4, r5, pc}
+
+ thumb_func_start sub_080A76CC
+sub_080A76CC: @ 0x080A76CC
+ push {r4, r5, lr}
+ adds r4, r0, #0
+ ldrb r0, [r4, #0xa]
+ cmp r0, #0
+ beq _080A76D8
+ b _080A77DC
+_080A76D8:
+ ldr r5, _080A771C @ =gPlayerState
+ ldr r0, [r5, #0x2c]
+ cmp r0, r4
+ beq _080A76E4
+ bl DeleteThisEntity
+_080A76E4:
+ ldrb r0, [r5, #4]
+ cmp r0, #0
+ bne _080A76F2
+ str r0, [r5, #0x2c]
+ strb r0, [r5, #0x1b]
+ bl DeleteThisEntity
+_080A76F2:
+ ldrb r2, [r5, #0x1b]
+ cmp r2, #0
+ beq _080A7744
+ adds r1, r4, #0
+ adds r1, #0x40
+ movs r0, #0xd
+ strb r0, [r1]
+ movs r0, #0x40
+ ands r0, r2
+ cmp r0, #0
+ beq _080A7728
+ adds r0, r4, #0
+ adds r0, #0x68
+ ldrb r0, [r0]
+ cmp r0, #1
+ beq _080A7720
+ cmp r0, #6
+ bne _080A7724
+ movs r0, #0xa
+ b _080A7726
+ .align 2, 0
+_080A771C: .4byte gPlayerState
+_080A7720:
+ movs r0, #8
+ b _080A7726
+_080A7724:
+ movs r0, #9
+_080A7726:
+ strb r0, [r1]
+_080A7728:
+ ldr r0, _080A7740 @ =gPlayerEntity
+ adds r0, #0x5a
+ ldrb r1, [r0]
+ movs r0, #0x20
+ ands r0, r1
+ cmp r0, #0
+ beq _080A77C4
+ movs r0, #0x8b
+ lsls r0, r0, #1
+ bl SoundReq
+ b _080A77C4
+ .align 2, 0
+_080A7740: .4byte gPlayerEntity
+_080A7744:
+ ldr r0, [r5, #0x30]
+ movs r1, #0x80
+ lsls r1, r1, #0x14
+ ands r0, r1
+ cmp r0, #0
+ beq _080A776A
+ adds r0, r4, #0
+ adds r0, #0x68
+ ldrb r0, [r0]
+ cmp r0, #6
+ bne _080A7762
+ adds r1, r4, #0
+ adds r1, #0x40
+ movs r0, #0xc
+ b _080A7768
+_080A7762:
+ adds r1, r4, #0
+ adds r1, #0x40
+ movs r0, #0xb
+_080A7768:
+ strb r0, [r1]
+_080A776A:
+ ldr r0, _080A77D0 @ =gPlayerState
+ adds r0, #0x3e
+ ldrb r0, [r0]
+ movs r2, #3
+ ands r2, r0
+ cmp r2, #0
+ beq _080A77C4
+ ldr r0, _080A77D4 @ =gPlayerEntity
+ adds r0, #0x5a
+ ldrb r1, [r0]
+ movs r0, #0x40
+ ands r0, r1
+ cmp r0, #0
+ beq _080A77C4
+ movs r1, #0x12
+ cmp r2, #1
+ bne _080A778E
+ movs r1, #0x14
+_080A778E:
+ adds r0, r4, #0
+ movs r2, #0
+ bl CreateFx
+ adds r2, r0, #0
+ cmp r2, #0
+ beq _080A77C4
+ ldrb r1, [r4, #0x1e]
+ lsls r1, r1, #1
+ ldr r0, _080A77D8 @ =gUnk_081292E2
+ adds r1, r1, r0
+ movs r0, #1
+ ldrsb r0, [r1, r0]
+ ldrh r3, [r4, #0x32]
+ adds r0, r0, r3
+ strh r0, [r2, #0x32]
+ ldrb r1, [r1]
+ lsls r1, r1, #0x18
+ asrs r1, r1, #0x18
+ ldrb r0, [r4, #0x18]
+ lsls r0, r0, #0x19
+ cmp r0, #0
+ bge _080A77BE
+ rsbs r1, r1, #0
+_080A77BE:
+ ldrh r0, [r4, #0x2e]
+ adds r0, r0, r1
+ strh r0, [r2, #0x2e]
+_080A77C4:
+ ldr r1, _080A77D4 @ =gPlayerEntity
+ adds r0, r4, #0
+ bl sub_080A78B8
+ b _080A7806
+ .align 2, 0
+_080A77D0: .4byte gPlayerState
+_080A77D4: .4byte gPlayerEntity
+_080A77D8: .4byte gUnk_081292E2
+_080A77DC:
+ ldr r1, _080A7810 @ =gPlayerState
+ ldrb r0, [r1, #4]
+ cmp r0, #0
+ beq _080A7814
+ ldr r0, [r1, #0x2c]
+ adds r2, r0, #0
+ adds r2, #0x40
+ ldrb r0, [r2]
+ cmp r0, #0
+ beq _080A7814
+ ldrb r1, [r4, #0x10]
+ movs r0, #0x80
+ orrs r0, r1
+ strb r0, [r4, #0x10]
+ ldrb r1, [r2]
+ adds r0, r4, #0
+ adds r0, #0x40
+ strb r1, [r0]
+ adds r0, r4, #0
+ bl sub_080A7A54
+_080A7806:
+ adds r0, r4, #0
+ bl sub_080A7A84
+ b _080A7820
+ .align 2, 0
+_080A7810: .4byte gPlayerState
+_080A7814:
+ movs r0, #0xff
+ strb r0, [r4, #0x1e]
+ ldrb r1, [r4, #0x10]
+ movs r0, #0x7f
+ ands r0, r1
+ strb r0, [r4, #0x10]
+_080A7820:
+ pop {r4, r5, pc}
+ .align 2, 0
+
+ thumb_func_start sub_080A7824
+sub_080A7824: @ 0x080A7824
+ push {r4, r5, r6, lr}
+ adds r4, r0, #0
+ ldr r5, _080A7860 @ =gPlayerState
+ ldr r0, [r5, #0x2c]
+ cmp r0, r4
+ beq _080A7834
+ bl DeleteThisEntity
+_080A7834:
+ ldrb r0, [r5, #4]
+ cmp r0, #0
+ beq _080A78AE
+ ldrb r0, [r5, #2]
+ cmp r0, #0
+ bne _080A7846
+ str r0, [r5, #0x2c]
+ bl DeleteThisEntity
+_080A7846:
+ ldr r2, _080A7864 @ =gPlayerEntity
+ adds r6, r2, #0
+ adds r6, #0x5a
+ ldrb r1, [r6]
+ movs r0, #0x80
+ ands r0, r1
+ cmp r0, #0
+ beq _080A7868
+ movs r0, #0
+ str r0, [r5, #0x2c]
+ bl DeleteThisEntity
+ b _080A78B4
+ .align 2, 0
+_080A7860: .4byte gPlayerState
+_080A7864: .4byte gPlayerEntity
+_080A7868:
+ adds r0, r4, #0
+ adds r1, r2, #0
+ bl sub_080A78B8
+ ldrb r1, [r6]
+ movs r0, #0x20
+ ands r0, r1
+ cmp r0, #0
+ beq _080A7880
+ movs r0, #0x77
+ bl SoundReq
+_080A7880:
+ ldrb r0, [r4, #0x1e]
+ cmp r0, #0x8a
+ bls _080A788A
+ movs r0, #0xff
+ strb r0, [r4, #0x1e]
+_080A788A:
+ ldrb r1, [r6]
+ movs r0, #8
+ ands r0, r1
+ cmp r0, #0
+ beq _080A78A4
+ ldrb r0, [r4, #0x10]
+ movs r1, #0x80
+ orrs r0, r1
+ strb r0, [r4, #0x10]
+ adds r0, r4, #0
+ bl sub_080A7B98
+ b _080A78B4
+_080A78A4:
+ ldrb r1, [r4, #0x10]
+ movs r0, #0x7f
+ ands r0, r1
+ strb r0, [r4, #0x10]
+ b _080A78B4
+_080A78AE:
+ str r0, [r5, #0x2c]
+ bl DeleteThisEntity
+_080A78B4:
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+
+
+ thumb_func_start sub_080A78B8
+sub_080A78B8: @ 0x080A78B8
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ adds r4, r0, #0
+ adds r6, r1, #0
+ ldr r0, _080A78E8 @ =gPlayerState
+ ldrb r1, [r0, #0x1b]
+ movs r0, #0x20
+ ands r0, r1
+ cmp r0, #0
+ beq _080A78FC
+ ldrb r0, [r6, #0x1e]
+ subs r0, #0x6a
+ strb r0, [r4, #0x1e]
+ ldr r0, _080A78EC @ =gScreenTransition
+ ldr r0, [r0]
+ movs r1, #4
+ ands r0, r1
+ cmp r0, #0
+ beq _080A78F0
+ ldrb r1, [r4, #0x14]
+ lsrs r1, r1, #1
+ adds r1, #0xb1
+ b _080A78F2
+ .align 2, 0
+_080A78E8: .4byte gPlayerState
+_080A78EC: .4byte gScreenTransition
+_080A78F0:
+ ldrb r1, [r4, #0x1e]
+_080A78F2:
+ ldrh r2, [r4, #0x12]
+ adds r0, r4, #0
+ bl sub_080042D0
+ b _080A7912
+_080A78FC:
+ ldrb r0, [r6, #0x1e]
+ subs r0, #0x6a
+ ldrb r1, [r4, #0x1e]
+ cmp r0, r1
+ beq _080A7912
+ strb r0, [r4, #0x1e]
+ ldrb r1, [r4, #0x1e]
+ ldrh r2, [r4, #0x12]
+ adds r0, r4, #0
+ bl sub_080042D0
+_080A7912:
+ ldr r2, _080A792C @ =gPlayerState
+ ldrb r1, [r2, #0x1b]
+ movs r0, #0x40
+ ands r0, r1
+ adds r7, r2, #0
+ cmp r0, #0
+ beq _080A7930
+ ldrb r1, [r4, #0x18]
+ movs r0, #0x41
+ rsbs r0, r0, #0
+ ands r0, r1
+ b _080A7958
+ .align 2, 0
+_080A792C: .4byte gPlayerState
+_080A7930:
+ ldrb r1, [r6, #0x14]
+ movs r0, #2
+ ands r0, r1
+ cmp r0, #0
+ beq _080A7946
+ ldrb r0, [r6, #0x18]
+ lsls r0, r0, #0x19
+ lsrs r2, r0, #0x1f
+ movs r0, #1
+ eors r2, r0
+ b _080A794C
+_080A7946:
+ ldrb r0, [r6, #0x18]
+ lsls r0, r0, #0x19
+ lsrs r2, r0, #0x1f
+_080A794C:
+ lsls r2, r2, #6
+ ldrb r1, [r4, #0x18]
+ movs r0, #0x41
+ rsbs r0, r0, #0
+ ands r0, r1
+ orrs r0, r2
+_080A7958:
+ strb r0, [r4, #0x18]
+ adds r2, r4, #0
+ adds r2, #0x41
+ ldrb r1, [r2]
+ movs r0, #0x80
+ ands r0, r1
+ mov r8, r2
+ adds r5, r4, #0
+ adds r5, #0x3d
+ cmp r0, #0
+ beq _080A7A1C
+ adds r3, r6, #0
+ adds r3, #0x3d
+ ldrb r0, [r3]
+ lsls r0, r0, #0x18
+ cmp r0, #0
+ beq _080A7980
+ lsrs r0, r0, #0x18
+ cmp r0, #0x81
+ bne _080A79AE
+_080A7980:
+ adds r2, r4, #0
+ adds r2, #0x3d
+ ldrb r0, [r2]
+ movs r1, #0
+ strb r0, [r3]
+ adds r5, r4, #0
+ adds r5, #0x3e
+ ldrb r0, [r5]
+ adds r3, r6, #0
+ adds r3, #0x3e
+ strb r0, [r3]
+ movs r3, #0x42
+ adds r3, r3, r4
+ mov ip, r3
+ ldrb r0, [r3]
+ adds r3, r6, #0
+ adds r3, #0x42
+ strb r0, [r3]
+ mov r0, ip
+ strb r1, [r0]
+ strb r1, [r5]
+ strb r1, [r2]
+ adds r5, r2, #0
+_080A79AE:
+ ldr r0, [r7, #0x30]
+ movs r1, #0x80
+ lsls r1, r1, #0x14
+ ands r0, r1
+ cmp r0, #0
+ beq _080A79C4
+ ldrb r1, [r7, #0x1b]
+ movs r0, #0x80
+ orrs r0, r1
+ strb r0, [r7, #0x1b]
+ b _080A7A1C
+_080A79C4:
+ ldrb r0, [r7, #0x1b]
+ cmp r0, #0
+ beq _080A7A1C
+ mov r1, r8
+ ldrb r0, [r1]
+ movs r1, #0x7f
+ ands r1, r0
+ cmp r1, #0x43
+ beq _080A79E6
+ cmp r1, #0x43
+ bgt _080A79E0
+ cmp r1, #0xd
+ beq _080A79E6
+ b _080A7A08
+_080A79E0:
+ cmp r1, #0x44
+ bne _080A7A08
+ b _080A7A1C
+_080A79E6:
+ ldrb r1, [r7, #0x1b]
+ movs r0, #8
+ orrs r0, r1
+ strb r0, [r7, #0x1b]
+ adds r1, r6, #0
+ adds r1, #0x42
+ movs r0, #2
+ strb r0, [r1]
+ ldrb r1, [r7, #0x1b]
+ movs r0, #0x20
+ ands r0, r1
+ cmp r0, #0
+ bne _080A7A1C
+ movs r0, #0xfe
+ ands r0, r1
+ strb r0, [r7, #0x1b]
+ b _080A7A1C
+_080A7A08:
+ ldrb r0, [r7, #0x1b]
+ movs r1, #0xc0
+ ands r1, r0
+ cmp r1, #0
+ bne _080A7A1C
+ strb r1, [r7, #0x1b]
+ strb r1, [r7, #4]
+ str r1, [r7, #0x2c]
+ bl DeleteThisEntity
+_080A7A1C:
+ adds r1, r5, #0
+ ldrb r0, [r1]
+ movs r2, #0
+ ldrsb r2, [r1, r2]
+ cmp r2, #0
+ beq _080A7A36
+ cmp r2, #0
+ ble _080A7A32
+ subs r0, #1
+ strb r0, [r1]
+ b _080A7A36
+_080A7A32:
+ adds r0, #1
+ strb r0, [r5]
+_080A7A36:
+ adds r0, r4, #0
+ bl sub_080A7A54
+ ldrb r0, [r4, #0x18]
+ lsls r0, r0, #0x19
+ cmp r0, #0
+ bge _080A7A4C
+ ldr r1, [r4, #0x48]
+ ldrb r0, [r1]
+ rsbs r0, r0, #0
+ strb r0, [r1]
+_080A7A4C:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+
+
+ thumb_func_start sub_080A7A54
+sub_080A7A54: @ 0x080A7A54
+ ldr r1, _080A7A7C @ =gPlayerEntity
+ ldrb r1, [r1, #0x1e]
+ subs r1, #0x6a
+ lsls r1, r1, #2
+ ldr r2, _080A7A80 @ =gUnk_08129096
+ adds r1, r1, r2
+ ldr r3, [r0, #0x48]
+ ldrb r2, [r1]
+ strb r2, [r3]
+ ldr r3, [r0, #0x48]
+ ldrb r2, [r1, #1]
+ strb r2, [r3, #1]
+ ldr r3, [r0, #0x48]
+ ldrb r2, [r1, #2]
+ strb r2, [r3, #6]
+ ldr r2, [r0, #0x48]
+ ldrb r0, [r1, #3]
+ strb r0, [r2, #7]
+ bx lr
+ .align 2, 0
+_080A7A7C: .4byte gPlayerEntity
+_080A7A80: .4byte gUnk_08129096
+
+
+ thumb_func_start sub_080A7A84
+sub_080A7A84: @ 0x080A7A84
+ push {r4, r5, r6, r7, lr}
+ adds r4, r0, #0
+ ldr r6, _080A7AE0 @ =gPlayerEntity
+ adds r0, r6, #0
+ adds r0, #0x5a
+ ldrb r0, [r0]
+ movs r1, #0xf
+ ands r1, r0
+ cmp r1, #0
+ beq _080A7B8C
+ ldr r2, _080A7AE4 @ =gUnk_08129072
+ subs r0, r1, #1
+ lsls r0, r0, #1
+ adds r1, r0, r2
+ movs r3, #0
+ ldrsb r3, [r1, r3]
+ adds r0, #1
+ adds r0, r0, r2
+ movs r5, #0
+ ldrsb r5, [r0, r5]
+ ldr r2, _080A7AE8 @ =gPlayerState
+ ldrb r1, [r2, #0x1b]
+ movs r0, #0xc0
+ ands r0, r1
+ adds r7, r2, #0
+ cmp r0, #0
+ bne _080A7AC4
+ ldrb r0, [r6, #0x18]
+ lsls r0, r0, #0x19
+ cmp r0, #0
+ bge _080A7AC4
+ rsbs r3, r3, #0
+_080A7AC4:
+ ldrb r0, [r4, #0xa]
+ cmp r0, #0
+ beq _080A7AEC
+ movs r0, #0x2e
+ ldrsh r2, [r4, r0]
+ adds r2, r2, r3
+ movs r1, #0x32
+ ldrsh r3, [r4, r1]
+ adds r3, r3, r5
+ adds r0, r4, #0
+ movs r1, #0
+ bl sub_08008796
+ b _080A7B8C
+ .align 2, 0
+_080A7AE0: .4byte gPlayerEntity
+_080A7AE4: .4byte gUnk_08129072
+_080A7AE8: .4byte gPlayerState
+_080A7AEC:
+ ldr r0, [r4, #0x34]
+ cmp r0, #0
+ bne _080A7B8C
+ adds r0, r7, #0
+ adds r0, #0xac
+ ldrh r0, [r0]
+ movs r1, #8
+ ands r1, r0
+ lsls r1, r1, #0x10
+ lsrs r1, r1, #0x10
+ rsbs r1, r1, #0
+ lsrs r1, r1, #0x1f
+ movs r0, #0x2e
+ ldrsh r2, [r4, r0]
+ adds r6, r3, #0
+ adds r2, r2, r6
+ movs r0, #0x32
+ ldrsh r3, [r4, r0]
+ adds r3, r3, r5
+ adds r0, r4, #0
+ bl sub_08008796
+ cmp r0, #0
+ bne _080A7B8C
+ ldrb r2, [r7, #0x1b]
+ cmp r2, #0
+ beq _080A7B8C
+ movs r0, #0xc0
+ ands r0, r2
+ cmp r0, #0
+ bne _080A7B8C
+ adds r0, r4, #0
+ adds r1, r6, #0
+ adds r2, r5, #0
+ bl sub_080002B4
+ cmp r0, #0x2e
+ bne _080A7B4C
+ ldr r0, _080A7B44 @ =gPlayerEntity
+ ldr r1, _080A7B48 @ =0x00000119
+ bl sub_0800449C
+ b _080A7B54
+ .align 2, 0
+_080A7B44: .4byte gPlayerEntity
+_080A7B48: .4byte 0x00000119
+_080A7B4C:
+ ldr r0, _080A7B90 @ =gPlayerEntity
+ movs r1, #0x74
+ bl sub_0800449C
+_080A7B54:
+ movs r0, #0xf
+ movs r1, #0x1a
+ movs r2, #0
+ bl CreateObject
+ adds r2, r0, #0
+ cmp r2, #0
+ beq _080A7B8C
+ ldr r1, _080A7B94 @ =gUnk_0812908E
+ ldrb r0, [r4, #0x14]
+ adds r0, r0, r1
+ ldrb r0, [r0]
+ lsls r0, r0, #0x18
+ asrs r0, r0, #0x18
+ ldrh r3, [r4, #0x2e]
+ adds r0, r0, r3
+ strh r0, [r2, #0x2e]
+ ldrb r0, [r4, #0x14]
+ adds r0, #1
+ adds r0, r0, r1
+ ldrb r0, [r0]
+ lsls r0, r0, #0x18
+ asrs r0, r0, #0x18
+ ldrh r1, [r4, #0x32]
+ adds r0, r0, r1
+ strh r0, [r2, #0x32]
+ ldr r0, [r4, #0x34]
+ str r0, [r2, #0x34]
+_080A7B8C:
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_080A7B90: .4byte gPlayerEntity
+_080A7B94: .4byte gUnk_0812908E
+
+
+ thumb_func_start sub_080A7B98
+sub_080A7B98: @ 0x080A7B98
+ push {r4, r5, r6, r7, lr}
+ mov r7, sl
+ mov r6, sb
+ mov r5, r8
+ push {r5, r6, r7}
+ adds r6, r0, #0
+ ldr r0, _080A7BFC @ =gPlayerState
+ adds r0, #0xac
+ ldrh r1, [r0]
+ movs r0, #8
+ ands r0, r1
+ lsls r0, r0, #0x10
+ lsrs r0, r0, #0x10
+ rsbs r0, r0, #0
+ lsrs r0, r0, #0x1f
+ mov sl, r0
+ movs r7, #0x10
+ rsbs r7, r7, #0
+ movs r0, #0
+_080A7BBE:
+ movs r5, #0x10
+ rsbs r5, r5, #0
+ movs r4, #0
+ movs r1, #0x10
+ adds r1, r1, r7
+ mov sb, r1
+ adds r0, #1
+ mov r8, r0
+_080A7BCE:
+ movs r0, #0x2e
+ ldrsh r2, [r6, r0]
+ adds r2, r2, r5
+ movs r1, #0x32
+ ldrsh r3, [r6, r1]
+ adds r3, r3, r7
+ adds r0, r6, #0
+ mov r1, sl
+ bl sub_08008796
+ adds r5, #0x10
+ adds r4, #1
+ cmp r4, #2
+ bls _080A7BCE
+ mov r7, sb
+ mov r0, r8
+ cmp r0, #2
+ bls _080A7BBE
+ pop {r3, r4, r5}
+ mov r8, r3
+ mov sb, r4
+ mov sl, r5
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_080A7BFC: .4byte gPlayerState
diff --git a/data/const/item/itemBomb.inc b/data/const/item/itemBomb.inc
new file mode 100644
index 00000000..99f9ef37
--- /dev/null
+++ b/data/const/item/itemBomb.inc
@@ -0,0 +1,9 @@
+gUnk_0811BD98:: @ 0811BD98
+ .4byte sub_08075FF8
+ .4byte 00000000
+ .4byte sub_08076488
+ .4byte sub_08076518
+ .4byte sub_080765E0
+
+gUnk_0811BDAC:: @ 0811BDAC
+ .incbin "baserom.gba", 0x11BDAC, 0x0000008
diff --git a/data/const/item/itemBoomerang.inc b/data/const/item/itemBoomerang.inc
new file mode 100644
index 00000000..e405bb3b
--- /dev/null
+++ b/data/const/item/itemBoomerang.inc
@@ -0,0 +1,3 @@
+gUnk_0811BD78:: @ 0811BD78
+ .4byte sub_08075D2C
+ .4byte sub_08075D88
diff --git a/data/const/item/itemBow.inc b/data/const/item/itemBow.inc
new file mode 100644
index 00000000..f4c164e7
--- /dev/null
+++ b/data/const/item/itemBow.inc
@@ -0,0 +1,8 @@
+
+gUnk_0811BD80:: @ 0811BD80
+ .4byte sub_08075DF4
+ .4byte sub_08075E40
+ .4byte sub_08075EC0
+ .4byte sub_08075F38
+ .4byte sub_08075F84
+ .4byte sub_08075D88
diff --git a/data/const/item/itemGustJar.inc b/data/const/item/itemGustJar.inc
new file mode 100644
index 00000000..824dfb31
--- /dev/null
+++ b/data/const/item/itemGustJar.inc
@@ -0,0 +1,5 @@
+gUnk_0811BDF4:: @ 0811BDF4
+ .4byte sub_08076DF4
+ .4byte sub_08076E60
+ .4byte sub_08076EC8
+ .4byte sub_08076F64
diff --git a/data/const/item/itemJarEmpty.inc b/data/const/item/itemJarEmpty.inc
new file mode 100644
index 00000000..b1d1143f
--- /dev/null
+++ b/data/const/item/itemJarEmpty.inc
@@ -0,0 +1,5 @@
+gUnk_0811BE28:: @ 0811BE28
+ .4byte sub_08077534
+ .4byte sub_08077618
+ .4byte sub_08077640
+ .4byte sub_0807766C
diff --git a/data/const/item/itemLantern.inc b/data/const/item/itemLantern.inc
new file mode 100644
index 00000000..7e275377
--- /dev/null
+++ b/data/const/item/itemLantern.inc
@@ -0,0 +1,5 @@
+gUnk_0811BD68:: @ 0811BD68
+ .4byte sub_08075A0C
+ .4byte sub_08075ADC
+ .4byte sub_08075B54
+ .4byte sub_08075C9C
diff --git a/data/const/item/itemMoleMitts.inc b/data/const/item/itemMoleMitts.inc
new file mode 100644
index 00000000..8b908a24
--- /dev/null
+++ b/data/const/item/itemMoleMitts.inc
@@ -0,0 +1,14 @@
+gUnk_0811BE04:: @ 0811BE04
+ .4byte sub_08077130
+ .4byte sub_080771C8
+ .4byte sub_080772A8
+ .4byte sub_08077448
+
+gUnk_0811BE14:: @ 0811BE14
+ .incbin "baserom.gba", 0x11BE14, 0x0000002
+
+gUnk_0811BE16:: @ 0811BE16
+ .incbin "baserom.gba", 0x11BE16, 0x0000008
+
+gUnk_0811BE1E:: @ 0811BE1E
+ .incbin "baserom.gba", 0x11BE1E, 0x000000A
diff --git a/data/const/item/itemOcarina.inc b/data/const/item/itemOcarina.inc
new file mode 100644
index 00000000..1c7d0931
--- /dev/null
+++ b/data/const/item/itemOcarina.inc
@@ -0,0 +1,3 @@
+gOcarinaStates:: @ 0811BDD8
+ .4byte OcarinaUse
+ .4byte OcarinaUpdate
diff --git a/data/const/item/itemPacciCane.inc b/data/const/item/itemPacciCane.inc
new file mode 100644
index 00000000..be948d8a
--- /dev/null
+++ b/data/const/item/itemPacciCane.inc
@@ -0,0 +1,3 @@
+gUnk_0811BDE0:: @ 0811BDE0
+ .4byte sub_08076C98
+ .4byte sub_08076CBC
diff --git a/data/const/item/itemPegasusBoots.inc b/data/const/item/itemPegasusBoots.inc
new file mode 100644
index 00000000..80735f20
--- /dev/null
+++ b/data/const/item/itemPegasusBoots.inc
@@ -0,0 +1,4 @@
+gUnk_0811BDCC:: @ 0811BDCC
+ .4byte sub_080768F8
+ .4byte sub_08076964
+ .4byte sub_08076A88
diff --git a/data/const/item/itemShield.inc b/data/const/item/itemShield.inc
new file mode 100644
index 00000000..107f799f
--- /dev/null
+++ b/data/const/item/itemShield.inc
@@ -0,0 +1,4 @@
+gUnk_0811BDE8:: @ 0811BDE8
+ .4byte sub_08076D04
+ .4byte sub_08076D34
+ .4byte sub_08076D94
diff --git a/data/const/item/itemSword.inc b/data/const/item/itemSword.inc
new file mode 100644
index 00000000..dc687f1a
--- /dev/null
+++ b/data/const/item/itemSword.inc
@@ -0,0 +1,10 @@
+gUnk_0811BD44:: @ 0811BD44
+ .4byte sub_08075338
+ .4byte sub_080754B8
+ .4byte sub_080755F0
+ .4byte sub_0807564C
+ .4byte sub_08075738
+ .4byte sub_08075580
+ .4byte sub_08075898
+ .4byte sub_080758B0
+ .4byte sub_08075900
diff --git a/data/const/item/itemTryPickupObject.inc b/data/const/item/itemTryPickupObject.inc
new file mode 100644
index 00000000..76adfecd
--- /dev/null
+++ b/data/const/item/itemTryPickupObject.inc
@@ -0,0 +1,8 @@
+
+gUnk_0811BDB4:: @ 0811BDB4
+ .4byte sub_080761C0
+ .4byte sub_080762D8
+ .4byte sub_08076488
+ .4byte sub_08076518
+ .4byte sub_080765E0
+ .4byte sub_0807660C
diff --git a/data/const/playerItem/playerItemSword.inc b/data/const/playerItem/playerItemSword.inc
new file mode 100644
index 00000000..306e6fe1
--- /dev/null
+++ b/data/const/playerItem/playerItemSword.inc
@@ -0,0 +1,4 @@
+gUnk_0812905C:: @ 0812905C
+ .4byte sub_080A758C
+ .4byte sub_080A76CC
+ .4byte sub_080A7824
diff --git a/data/data_0811BD44.s b/data/data_0811BD44.s
index 9ff36b90..fef839e0 100644
--- a/data/data_0811BD44.s
+++ b/data/data_0811BD44.s
@@ -4,56 +4,33 @@
.section .rodata
.align 2
-gUnk_0811BD44:: @ 0811BD44
- .incbin "baserom.gba", 0x11BD44, 0x0000024
+ @ TODO convert .inc files into .s files and include them in linker.ld
+ .include "data/const/item/itemSword.inc"
-gUnk_0811BD68:: @ 0811BD68
- .incbin "baserom.gba", 0x11BD68, 0x0000010
+ .include "data/const/item/itemLantern.inc"
-gUnk_0811BD78:: @ 0811BD78
- .incbin "baserom.gba", 0x11BD78, 0x0000008
+ .include "data/const/item/itemBoomerang.inc"
-gUnk_0811BD80:: @ 0811BD80
- .incbin "baserom.gba", 0x11BD80, 0x0000018
+ .include "data/const/item/itemBow.inc"
-gUnk_0811BD98:: @ 0811BD98
- .incbin "baserom.gba", 0x11BD98, 0x0000014
+ .include "data/const/item/itemBomb.inc"
-gUnk_0811BDAC:: @ 0811BDAC
- .incbin "baserom.gba", 0x11BDAC, 0x0000008
+ .include "data/const/item/itemTryPickupObject.inc"
-gUnk_0811BDB4:: @ 0811BDB4
- .incbin "baserom.gba", 0x11BDB4, 0x0000018
+ .include "data/const/item/itemPegasusBoots.inc"
-gUnk_0811BDCC:: @ 0811BDCC
- .incbin "baserom.gba", 0x11BDCC, 0x000000C
+ .include "data/const/item/itemOcarina.inc"
-gOcarinaStates:: @ 0811BDD8
- .incbin "baserom.gba", 0x11BDD8, 0x0000008
+ .include "data/const/item/itemPacciCane.inc"
-gUnk_0811BDE0:: @ 0811BDE0
- .incbin "baserom.gba", 0x11BDE0, 0x0000008
+ .include "data/const/item/itemShield.inc"
-gUnk_0811BDE8:: @ 0811BDE8
- .incbin "baserom.gba", 0x11BDE8, 0x000000C
+ .include "data/const/item/itemGustJar.inc"
-gUnk_0811BDF4:: @ 0811BDF4
- .incbin "baserom.gba", 0x11BDF4, 0x0000010
+ .include "data/const/item/itemMoleMitts.inc"
-gUnk_0811BE04:: @ 0811BE04
- .incbin "baserom.gba", 0x11BE04, 0x0000010
+ .include "data/const/item/itemJarEmpty.inc"
-gUnk_0811BE14:: @ 0811BE14
- .incbin "baserom.gba", 0x11BE14, 0x0000002
-
-gUnk_0811BE16:: @ 0811BE16
- .incbin "baserom.gba", 0x11BE16, 0x0000008
-
-gUnk_0811BE1E:: @ 0811BE1E
- .incbin "baserom.gba", 0x11BE1E, 0x000000A
-
-gUnk_0811BE28:: @ 0811BE28
- .incbin "baserom.gba", 0x11BE28, 0x0000010
gUnk_0811BE38:: @ 0811BE38
.incbin "baserom.gba", 0x11BE38, 0x0000008
@@ -65,13 +42,23 @@ gUnk_0811BE48:: @ 0811BE48
.incbin "baserom.gba", 0x11BE48, 0x0000180
gUnk_0811BFC8:: @ 0811BFC8
- .incbin "baserom.gba", 0x11BFC8, 0x0000018
+ .4byte sub_080779E8
+ .4byte sub_080779EC
+ .4byte sub_08077A18
+ .4byte sub_08077A48
+ .4byte sub_08077A98
+ .4byte sub_08077AC8
gUnk_0811BFE0:: @ 0811BFE0
.incbin "baserom.gba", 0x11BFE0, 0x0000008
gUnk_0811BFE8:: @ 0811BFE8
- .incbin "baserom.gba", 0x11BFE8, 0x0000018
+ .4byte sub_08078008
+ .4byte sub_08078124
+ .4byte sub_08078140
+ .4byte sub_08078070
+ .4byte sub_080780E0
+ .4byte sub_08078108
gUnk_0811C000:: @ 0811C000
.incbin "baserom.gba", 0x11C000, 0x000000C
@@ -92,7 +79,8 @@ gUnk_0811C090:: @ 0811C090
.incbin "baserom.gba", 0x11C090, 0x0000020
gUnk_0811C0B0:: @ 0811C0B0
- .incbin "baserom.gba", 0x11C0B0, 0x0000008
+ .4byte gUnk_0811C070
+ .4byte gUnk_0811C090
gUnk_0811C0B8:: @ 0811C0B8
.incbin "baserom.gba", 0x11C0B8, 0x0000010
@@ -104,7 +92,10 @@ gUnk_0811C0D8:: @ 0811C0D8
.incbin "baserom.gba", 0x11C0D8, 0x0000010
gUnk_0811C0E8:: @ 0811C0E8
- .incbin "baserom.gba", 0x11C0E8, 0x0000010
+ .4byte gUnk_0811C0B8
+ .4byte gUnk_0811C0D8
+ .4byte gUnk_0811C0B8
+ .4byte gUnk_0811C0C8
gUnk_0811C0F8:: @ 0811C0F8
.incbin "baserom.gba", 0x11C0F8, 0x0000008
@@ -122,13 +113,64 @@ gUnk_0811C118:: @ 0811C118
.incbin "baserom.gba", 0x11C118, 0x0000008
gUnk_0811C120:: @ 0811C120
- .incbin "baserom.gba", 0x11C120, 0x00000B8
+ .4byte nullsub_112
+ .4byte sub_08074200
+ .4byte 00000000
+ .4byte 00000000
+ .4byte sub_0807422C
+ .4byte sub_08074238
+ .4byte sub_080742AC
+ .4byte sub_080742E4
+ .4byte sub_08074314
+ .4byte sub_08074338
+ .4byte sub_0807435C
+ .4byte sub_08074380
+ .4byte sub_08074638
+ .4byte sub_08074B4C
+ .4byte sub_08074B74
+ .4byte sub_08074BA0
+ .4byte sub_08074BCC
+ .4byte sub_08074678
+ .4byte nullsub_112
+ .4byte nullsub_112
+ .4byte sub_080743D4
+ .4byte sub_0807441C
+ .4byte sub_0807450C
+ .4byte sub_08074584
+ .4byte sub_080745B4
+ .4byte sub_0807479C
+ .4byte sub_080748C4
+ .4byte sub_080748DC
+ .4byte sub_08074918
+ .4byte 00000000
+ .4byte sub_0807496C
+ .4byte 00000000
+ .4byte sub_08074A48
+ .4byte sub_0807450C
+ .4byte nullsub_504
+ .4byte sub_080742AC
+ .4byte sub_080742AC
+ .4byte sub_08074A9C
+ .4byte sub_08074AF4
+ .4byte sub_08074B18
+ .4byte sub_0807422C
+ .4byte sub_08074238
+ .4byte sub_080749D4
+ .4byte sub_0807493C
+ .4byte sub_080749A8
+ .4byte sub_08074A9C
gUnk_0811C1D8:: @ 0811C1D8
- .incbin "baserom.gba", 0x11C1D8, 0x0000010
+ .4byte gUnk_0811C240
+ .4byte gUnk_0811C24A
+ .4byte gUnk_0811C254
+ .4byte gUnk_0811C25E
gUnk_0811C1E8:: @ 0811C1E8
- .incbin "baserom.gba", 0x11C1E8, 0x0000010
+ .4byte gUnk_0811C1F8
+ .4byte gUnk_0811C20A
+ .4byte gUnk_0811C21C
+ .4byte gUnk_0811C22E
gUnk_0811C1F8:: @ 0811C1F8
.incbin "baserom.gba", 0x11C1F8, 0x0000012
@@ -158,13 +200,22 @@ gUnk_0811C268:: @ 0811C268
.incbin "baserom.gba", 0x11C268, 0x0000014
gUnk_0811C27C:: @ 0811C27C
- .incbin "baserom.gba", 0x11C27C, 0x0000008
+ .4byte sub_0807B114
+ .4byte sub_0807B128
gUnk_0811C284:: @ 0811C284
- .incbin "baserom.gba", 0x11C284, 0x0000014
+ .4byte sub_0807B1A8
+ .4byte sub_0807B144
+ .4byte nullsub_506
+ .4byte sub_0807B178
+ .4byte sub_0807B2F8
gUnk_0811C298:: @ 0811C298
- .incbin "baserom.gba", 0x11C298, 0x0000014
+ .4byte sub_0807B1DC
+ .4byte sub_0807B1EC
+ .4byte sub_0807B21C
+ .4byte sub_0807B264
+ .4byte sub_0807B2B8
gUnk_0811C2AC:: @ 0811C2AC
.incbin "baserom.gba", 0x11C2AC, 0x0000020
diff --git a/data/data_08124712.s b/data/data_08124712.s
index 80ae3de1..29a9f4d7 100644
--- a/data/data_08124712.s
+++ b/data/data_08124712.s
@@ -653,13 +653,27 @@ gUnk_08129004:: @ 08129004
.incbin "baserom.gba", 0x129004, 0x0000018
gUnk_0812901C:: @ 0812901C
- .incbin "baserom.gba", 0x12901C, 0x0000014
+ .4byte sub_080A7250
+ .4byte sub_080A7328
+ .4byte sub_080A7528
+ .4byte sub_080A73A8
+ .4byte sub_080A74C8
gUnk_08129030:: @ 08129030
- .incbin "baserom.gba", 0x129030, 0x000002C
-
-gUnk_0812905C:: @ 0812905C
- .incbin "baserom.gba", 0x12905C, 0x000000C
+ .4byte sub_080A71DC
+ .4byte sub_080A4EA0
+ .4byte sub_080A71DC
+ .4byte sub_080A64FC
+ .4byte DrawKinstoneMenu
+ .4byte sub_08051E68
+ .4byte sub_0804AB54
+ .4byte sub_080A45A4
+ .4byte sub_08054870
+ .4byte sub_080A6C74
+ .4byte sub_080A6AB8
+
+ @ TODO convert .inc files into .s files and include them in linker.ld
+ .include "data/const/playerItem/playerItemSword.inc"
gUnk_08129068:: @ 08129068
.incbin "baserom.gba", 0x129068, 0x0000004
diff --git a/linker.ld b/linker.ld
index d5ccf39c..77caa1c1 100644
--- a/linker.ld
+++ b/linker.ld
@@ -649,7 +649,9 @@ SECTIONS {
asm/stairsInteract.o(.text);
asm/code_080732D0.o(.text);
asm/ocarina.o(.text);
- src/item.o(.text);
+ src/item/itemPacciCane.o(.text);
+ src/item/itemShield.o(.text);
+ src/item/itemGustJar.o(.text);
asm/code_08076C80.o(.text);
asm/respawnPlayer.o(.text);
src/code_08077B98.o(.text);
diff --git a/src/item.c b/src/item.c
index fbf31cd8..60006575 100644
--- a/src/item.c
+++ b/src/item.c
@@ -11,119 +11,4 @@ void (*const gItemFunctions[])(ItemBehavior*, u32) = {
ItemShield, ItemLantern, ItemLantern, ItemGustJar, ItemPacciCane, ItemMoleMitts, ItemRocsCape,
ItemPegasusBoots, ItemDebug, ItemOcarina, ItemDebug, ItemDebug, ItemDebug, ItemTryPickupObject,
ItemJarEmpty, ItemJarEmpty, ItemJarEmpty, ItemJarEmpty,
-};
-
-extern void sub_08077E78(ItemBehavior*, u32);
-extern void sub_08078F60(void);
-extern void sub_08077D38(ItemBehavior*, u32);
-extern void sub_0805E544(void);
-extern void UpdateItemAnim(ItemBehavior*);
-extern void CreateBird(void);
-extern void UnfreezeTime(void);
-extern void sub_0806F948(Entity*);
-extern void sub_08077BB8(ItemBehavior*);
-extern void CreatePlayerBomb(ItemBehavior*, u32);
-extern u32 sub_08077EFC();
-
-extern void (*const gOcarinaStates[4])(ItemBehavior*, u32);
-extern void (*const gUnk_0811BDE0[])(ItemBehavior* beh, u32);
-extern void (*const gUnk_0811BDE8[])(ItemBehavior* beh, u32);
-extern void (*const gUnk_0811BDF4[])(ItemBehavior* beh, u32);
-
-#if 0
-void Ocarina(ItemBehavior* beh, u32 inputFlags) {
- gOcarinaStates[beh->stateID](beh, inputFlags);
- gPlayerEntity.field_0x7a++;
-}
-
-void OcarinaUse(ItemBehavior *beh, u32 arg1)
-{
- u32 bVar1;
-
- if (gPlayerState.playerAction == 0x18) {
- PlayerChangeState(beh, arg1);
- }
- else {
- beh->field_0x5[4] = beh->field_0x5[4] | 0xf;
- gPlayerEntity.animationState = 4;
- gPlayerEntity.spriteSettings.b.flipX = 0;
- gPlayerEntity.flags &= 0x7f;
- gPlayerEntity.field_0x7a = 2;
- gPlayerState.flags.all |= 0x10000000;
- gPlayerState.field_0x27[0] = 0xff;
- gUnk_02034490[0] = 1;
- bVar1 = (8 >> arg1);
- gPlayerState.field_0xa |= bVar1;
- gPlayerState.keepFacing |= bVar1;
- sub_08078F60();
- sub_08077D38(beh, arg1);
- SoundReq(0x216);
- sub_0805E544();
- }
-}
-#endif
-
-void ItemPacciCane(ItemBehavior* beh, u32 arg1) {
- gUnk_0811BDE0[beh->stateID](beh, arg1);
-}
-
-void sub_08076C98(ItemBehavior* beh, u32 arg1) {
- beh->field_0x5[4] |= 0xf;
- sub_08077D38(beh, arg1);
- sub_0806F948(&gPlayerEntity);
- sub_08077BB8(beh);
-}
-
-void sub_08076CBC(ItemBehavior* beh, u32 arg1) {
- if ((beh->field_0x5[9] & 0x80) != 0) {
- sub_08077E78(beh, arg1);
- } else {
- if ((beh->field_0x5[9] & 0x40) != 0) {
- CreatePlayerBomb(beh, 0x12);
- }
- UpdateItemAnim(beh);
- }
-}
-
-void ItemShield(ItemBehavior* beh, u32 arg1) {
- gUnk_0811BDE8[beh->stateID](beh, arg1);
-}
-
-void sub_08076D04(ItemBehavior* beh, u32 arg1) {
- gPlayerState.field_0x3[0] = 0x81;
- beh->field_0x5[4] = 2;
- sub_0806F948(&gPlayerEntity);
- sub_08077D38(beh, arg1);
- sub_08077BB8(beh);
-}
-
-void sub_08076D34(ItemBehavior* beh, u32 arg1) {
- if (sub_08077EFC() != 0) {
- gPlayerState.field_0x3[0] |= 1;
- UpdateItemAnim(beh);
- if (beh->field_0x5[9] != 0) {
- beh->stateID++;
- beh->field_0xf = 0;
- gPlayerState.field_0xa &= ~(u8)(8 >> arg1);
- SoundReq(0x15d);
- }
- } else {
- gPlayerState.field_0x3[0] = 0;
- sub_08077E78(beh, arg1);
- }
-}
-
-void sub_08076D94(ItemBehavior* beh, u32 arg1) {
- if (sub_08077EFC(beh)) {
- gPlayerState.field_0x3[0] |= 1;
- UpdateItemAnim(beh);
- } else {
- gPlayerState.field_0x3[0] = 0;
- sub_08077E78(beh, arg1);
- }
-}
-
-void ItemGustJar(ItemBehavior* beh, u32 arg1) {
- gPlayerState.field_0xa8 = 3;
- gUnk_0811BDF4[beh->stateID](beh, arg1);
-}
+}; \ No newline at end of file
diff --git a/src/item/itemGustJar.c b/src/item/itemGustJar.c
new file mode 100644
index 00000000..ef25e097
--- /dev/null
+++ b/src/item/itemGustJar.c
@@ -0,0 +1,10 @@
+#include "global.h"
+#include "entity.h"
+#include "item.h"
+
+extern void (*const gUnk_0811BDF4[])(ItemBehavior* beh, u32);
+
+void ItemGustJar(ItemBehavior* beh, u32 arg1) {
+ gPlayerState.field_0xa8 = 3;
+ gUnk_0811BDF4[beh->stateID](beh, arg1);
+}
diff --git a/src/item/itemOcarina.c b/src/item/itemOcarina.c
new file mode 100644
index 00000000..efb256eb
--- /dev/null
+++ b/src/item/itemOcarina.c
@@ -0,0 +1,40 @@
+#include "item.h"
+
+extern void (*const gOcarinaStates[4])(ItemBehavior*, u32);
+
+extern void sub_08078F60(void);
+extern void sub_0805E544(void);
+
+
+#if 0
+void Ocarina(ItemBehavior* beh, u32 inputFlags) {
+ gOcarinaStates[beh->stateID](beh, inputFlags);
+ gPlayerEntity.field_0x7a++;
+}
+
+void OcarinaUse(ItemBehavior *beh, u32 arg1)
+{
+ u32 bVar1;
+
+ if (gPlayerState.playerAction == 0x18) {
+ PlayerChangeState(beh, arg1);
+ }
+ else {
+ beh->field_0x5[4] = beh->field_0x5[4] | 0xf;
+ gPlayerEntity.animationState = 4;
+ gPlayerEntity.spriteSettings.b.flipX = 0;
+ gPlayerEntity.flags &= 0x7f;
+ gPlayerEntity.field_0x7a = 2;
+ gPlayerState.flags.all |= 0x10000000;
+ gPlayerState.field_0x27[0] = 0xff;
+ gUnk_02034490[0] = 1;
+ bVar1 = (8 >> arg1);
+ gPlayerState.field_0xa |= bVar1;
+ gPlayerState.keepFacing |= bVar1;
+ sub_08078F60();
+ sub_08077D38(beh, arg1);
+ SoundReq(0x216);
+ sub_0805E544();
+ }
+}
+#endif
diff --git a/src/item/itemPacciCane.c b/src/item/itemPacciCane.c
new file mode 100644
index 00000000..524ae645
--- /dev/null
+++ b/src/item/itemPacciCane.c
@@ -0,0 +1,35 @@
+#include "global.h"
+#include "entity.h"
+#include "item.h"
+
+// TODO include correct headers?
+extern void UpdateItemAnim(ItemBehavior*);
+extern void CreatePlayerBomb(ItemBehavior*, u32);
+extern void sub_08077E78(ItemBehavior*, u32);
+extern void sub_08077BB8(ItemBehavior*);
+extern void sub_0806F948(Entity*);
+extern void sub_08077D38(ItemBehavior*, u32);
+
+extern void (*const gUnk_0811BDE0[])(ItemBehavior* beh, u32);
+
+void ItemPacciCane(ItemBehavior* beh, u32 arg1) {
+ gUnk_0811BDE0[beh->stateID](beh, arg1);
+}
+
+void sub_08076C98(ItemBehavior* beh, u32 arg1) {
+ beh->field_0x5[4] |= 0xf;
+ sub_08077D38(beh, arg1);
+ sub_0806F948(&gPlayerEntity);
+ sub_08077BB8(beh);
+}
+
+void sub_08076CBC(ItemBehavior* beh, u32 arg1) {
+ if ((beh->field_0x5[9] & 0x80) != 0) {
+ sub_08077E78(beh, arg1);
+ } else {
+ if ((beh->field_0x5[9] & 0x40) != 0) {
+ CreatePlayerBomb(beh, 0x12);
+ }
+ UpdateItemAnim(beh);
+ }
+}
diff --git a/src/item/itemShield.c b/src/item/itemShield.c
new file mode 100644
index 00000000..621341e2
--- /dev/null
+++ b/src/item/itemShield.c
@@ -0,0 +1,52 @@
+#include "global.h"
+#include "entity.h"
+#include "item.h"
+
+// TODO include correct headers?
+extern void sub_08077E78(ItemBehavior*, u32);
+extern void SoundReq(u32);
+extern void UpdateItemAnim(ItemBehavior*);
+extern u32 sub_08077EFC();
+extern void sub_08077BB8(ItemBehavior*);
+extern void sub_08077D38(ItemBehavior*, u32);
+extern void sub_0806F948(Entity*);
+
+extern void (*const gUnk_0811BDE8[])(ItemBehavior* beh, u32);
+
+void ItemShield(ItemBehavior* beh, u32 arg1) {
+ gUnk_0811BDE8[beh->stateID](beh, arg1);
+}
+
+void sub_08076D04(ItemBehavior* beh, u32 arg1) {
+ gPlayerState.field_0x3[0] = 0x81;
+ beh->field_0x5[4] = 2;
+ sub_0806F948(&gPlayerEntity);
+ sub_08077D38(beh, arg1);
+ sub_08077BB8(beh);
+}
+
+void sub_08076D34(ItemBehavior* beh, u32 arg1) {
+ if (sub_08077EFC() != 0) {
+ gPlayerState.field_0x3[0] |= 1;
+ UpdateItemAnim(beh);
+ if (beh->field_0x5[9] != 0) {
+ beh->stateID++;
+ beh->field_0xf = 0;
+ gPlayerState.field_0xa &= ~(u8)(8 >> arg1);
+ SoundReq(0x15d);
+ }
+ } else {
+ gPlayerState.field_0x3[0] = 0;
+ sub_08077E78(beh, arg1);
+ }
+}
+
+void sub_08076D94(ItemBehavior* beh, u32 arg1) {
+ if (sub_08077EFC(beh)) {
+ gPlayerState.field_0x3[0] |= 1;
+ UpdateItemAnim(beh);
+ } else {
+ gPlayerState.field_0x3[0] = 0;
+ sub_08077E78(beh, arg1);
+ }
+}