From 74b661df24dbebf42496cb3cce2049cb3f15c57b Mon Sep 17 00:00:00 2001 From: octorock <79596758+octorock@users.noreply.github.com> Date: Tue, 16 Mar 2021 00:22:13 +0100 Subject: [PATCH] Split items and extract pointers --- asm/code_080732D0.s | 3191 +-------------------- asm/code_08076C80.s | 1083 +------ asm/code_080A5574.s | 888 +----- asm/item/itemBomb.inc | 231 ++ asm/item/itemBoomerang.inc | 101 + asm/item/itemBow.inc | 264 ++ asm/item/itemDebug.inc | 10 + asm/item/itemGustJar.inc | 396 +++ asm/item/itemJarEmpty.inc | 176 ++ asm/item/itemLantern.inc | 390 +++ asm/item/itemMoleMitts.inc | 508 ++++ asm/item/itemPegasusBoots.inc | 450 +++ asm/item/itemRocsCape.inc | 232 ++ asm/item/itemSword.inc | 891 ++++++ asm/item/itemTryPickupObject.inc | 597 ++++ asm/playerItem/playerItemSword.inc | 891 ++++++ data/const/item/itemBomb.inc | 9 + data/const/item/itemBoomerang.inc | 3 + data/const/item/itemBow.inc | 8 + data/const/item/itemGustJar.inc | 5 + data/const/item/itemJarEmpty.inc | 5 + data/const/item/itemLantern.inc | 5 + data/const/item/itemMoleMitts.inc | 14 + data/const/item/itemOcarina.inc | 3 + data/const/item/itemPacciCane.inc | 3 + data/const/item/itemPegasusBoots.inc | 4 + data/const/item/itemShield.inc | 4 + data/const/item/itemSword.inc | 10 + data/const/item/itemTryPickupObject.inc | 8 + data/const/playerItem/playerItemSword.inc | 4 + data/data_0811BD44.s | 145 +- data/data_08124712.s | 24 +- linker.ld | 4 +- src/item.c | 117 +- src/item/itemGustJar.c | 10 + src/item/itemOcarina.c | 40 + src/item/itemPacciCane.c | 35 + src/item/itemShield.c | 52 + 38 files changed, 5516 insertions(+), 5295 deletions(-) create mode 100644 asm/item/itemBomb.inc create mode 100644 asm/item/itemBoomerang.inc create mode 100644 asm/item/itemBow.inc create mode 100644 asm/item/itemDebug.inc create mode 100644 asm/item/itemGustJar.inc create mode 100644 asm/item/itemJarEmpty.inc create mode 100644 asm/item/itemLantern.inc create mode 100644 asm/item/itemMoleMitts.inc create mode 100644 asm/item/itemPegasusBoots.inc create mode 100644 asm/item/itemRocsCape.inc create mode 100644 asm/item/itemSword.inc create mode 100644 asm/item/itemTryPickupObject.inc create mode 100644 asm/playerItem/playerItemSword.inc create mode 100644 data/const/item/itemBomb.inc create mode 100644 data/const/item/itemBoomerang.inc create mode 100644 data/const/item/itemBow.inc create mode 100644 data/const/item/itemGustJar.inc create mode 100644 data/const/item/itemJarEmpty.inc create mode 100644 data/const/item/itemLantern.inc create mode 100644 data/const/item/itemMoleMitts.inc create mode 100644 data/const/item/itemOcarina.inc create mode 100644 data/const/item/itemPacciCane.inc create mode 100644 data/const/item/itemPegasusBoots.inc create mode 100644 data/const/item/itemShield.inc create mode 100644 data/const/item/itemSword.inc create mode 100644 data/const/item/itemTryPickupObject.inc create mode 100644 data/const/playerItem/playerItemSword.inc create mode 100644 src/item/itemGustJar.c create mode 100644 src/item/itemOcarina.c create mode 100644 src/item/itemPacciCane.c create mode 100644 src/item/itemShield.c 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 + @ TODO convert .inc files into .s files and include them in linker.ld + .include "asm/item/itemDebug.inc" - 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 + .include "asm/item/itemSword.inc" - 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} + .include "asm/item/itemLantern.inc" - 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} + .include "asm/item/itemBoomerang.inc" - 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} + .include "asm/item/itemBow.inc" - 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} + .include "asm/item/itemBomb.inc" - 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 + .include "asm/item/itemTryPickupObject.inc" - 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 + .include "asm/item/itemRocsCape.inc" - 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 - - 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 - - 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} - - 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 + .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); + } +}