diff --git a/asm/greatFairy/sub_08087150.inc b/asm/greatFairy/sub_08087150.inc deleted file mode 100644 index a42edb80..00000000 --- a/asm/greatFairy/sub_08087150.inc +++ /dev/null @@ -1,50 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - push {r4, lr} - adds r4, r0, #0 - bl GreatFairy_InitializeAnimation - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - ldrb r2, [r4, #0x1b] - movs r1, #0x3f - adds r0, r1, #0 - ands r0, r2 - strb r0, [r4, #0x1b] - ldrb r0, [r4, #0x19] - ands r1, r0 - strb r1, [r4, #0x19] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #3 - orrs r0, r1 - strb r0, [r2] - movs r0, #0x80 - strh r0, [r4, #0x24] - movs r0, #0x10 - strb r0, [r4, #0x15] - ldr r0, _080871A0 @ =gUnk_0812079C - ldrb r0, [r0] - movs r1, #0xf - ands r1, r0 - lsls r0, r0, #4 - orrs r0, r1 - strb r0, [r4, #0x1a] - pop {r4, pc} - .align 2, 0 -_080871A0: .4byte gUnk_0812079C -.syntax divided diff --git a/asm/item/itemBoomerang.s b/asm/item/itemBoomerang.s deleted file mode 100644 index 94aef046..00000000 --- a/asm/item/itemBoomerang.s +++ /dev/null @@ -1,109 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - 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.s b/asm/item/itemBow.s deleted file mode 100644 index 3313c488..00000000 --- a/asm/item/itemBow.s +++ /dev/null @@ -1,272 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - 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.s b/asm/item/itemDebug.s deleted file mode 100644 index c77a00d1..00000000 --- a/asm/item/itemDebug.s +++ /dev/null @@ -1,18 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - 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/itemJarEmpty.s b/asm/item/itemJarEmpty.s deleted file mode 100644 index 9bfab5c1..00000000 --- a/asm/item/itemJarEmpty.s +++ /dev/null @@ -1,184 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - 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.s b/asm/item/itemLantern.s deleted file mode 100644 index 08f5e893..00000000 --- a/asm/item/itemLantern.s +++ /dev/null @@ -1,457 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - 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 -.ifdef EU - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r1, #0 - ldrb r1, [r4, #0xe] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _08075532 - ldr r0, _08075570 @ =gPlayerState - ldr r0, [r0, #0x30] - movs r1, #0x88 - lsls r1, r1, #1 - ands r0, r1 - cmp r0, #0 - bne _08075532 - bl sub_08079D48 - cmp r0, #0 - bne _08075578 -_08075532: - movs r0, #0 - strb r0, [r4, #0xf] - ldrb r0, [r4, #4] - adds r0, #1 - strb r0, [r4, #4] - ldr r3, _08075570 @ =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, _08075574 @ =0x0000013D - bl SoundReq - b _0807557E - .align 2, 0 -_08075570: .4byte gPlayerState -_08075574: .4byte 0x0000013D -_08075578: - adds r0, r4, #0 - bl UpdateItemAnim -_0807557E: - pop {r4, r5, pc} -.else - 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} -.endif - - 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.s b/asm/item/itemMoleMitts.s deleted file mode 100644 index 4294b657..00000000 --- a/asm/item/itemMoleMitts.s +++ /dev/null @@ -1,516 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - 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.s b/asm/item/itemPegasusBoots.s deleted file mode 100644 index e2dc0bae..00000000 --- a/asm/item/itemPegasusBoots.s +++ /dev/null @@ -1,458 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - 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/itemSword.s b/asm/item/itemSword.s deleted file mode 100644 index 4e6af7b5..00000000 --- a/asm/item/itemSword.s +++ /dev/null @@ -1,1081 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - 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 -.ifdef EU - push {r4, r5, r6, r7, lr} - adds r5, r0, #0 - adds r7, r1, #0 - ldr r4, _08074DA8 @ =gPlayerState - ldr r1, [r4, #0x30] - movs r3, #0x80 - adds r0, r1, #0 - ands r0, r3 - cmp r0, #0 - beq _08074DAC - 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 _08074EE2 - .align 2, 0 -_08074DA8: .4byte gPlayerState -_08074DAC: - ldrb r2, [r4, #2] - cmp r2, #0 - beq _08074E22 - movs r6, #7 - adds r0, r6, #0 - ands r0, r2 - cmp r0, #3 - beq _08074E18 - movs r0, #0x78 - ands r0, r2 - cmp r0, #0 - bne _08074E18 - ldr r3, _08074E10 @ =gPlayerEntity - ldr r1, [r3, #0x20] - ldr r0, _08074E14 @ =0x00017FFF - cmp r1, r0 - bhi _08074E18 - adds r0, r4, #0 - adds r0, #0xac - ldrh r1, [r0] - movs r0, #0x40 - ands r0, r1 - cmp r0, #0 - beq _08074E18 - ldr r0, [r3, #0x34] - cmp r0, #0 - beq _08074E18 - 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 _08074EE2 - .align 2, 0 -_08074E10: .4byte gPlayerEntity -_08074E14: .4byte 0x00017FFF -_08074E18: - adds r0, r5, #0 - adds r1, r7, #0 - bl sub_080759B8 - b _08074EE2 -_08074E22: - movs r6, #0x80 - lsls r6, r6, #0xb - ands r6, r1 - cmp r6, #0 - beq _08074EAE - 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 _08074E4C - ldr r0, [r4, #0x2c] - cmp r0, #0 - beq _08074EE2 - bl DeleteEntity - str r6, [r4, #0x2c] - b _08074EE2 -_08074E4C: - 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 _08074EE2 -_08074EAE: - ldrb r1, [r4, #0x1b] - adds r0, r3, #0 - ands r0, r1 - cmp r0, #0 - bne _08074EC0 - strb r6, [r4, #0x1b] - ldr r0, _08074EE4 @ =gPlayerEntity - bl sub_0806F948 -_08074EC0: - ldr r1, [r4, #0x2c] - cmp r1, #0 - beq _08074ED4 - ldrb r0, [r1, #9] - cmp r0, #1 - beq _08074ED4 - adds r0, r1, #0 - bl DeleteEntity - str r6, [r4, #0x2c] -_08074ED4: - adds r0, r5, #0 - adds r1, r7, #0 - bl sub_08077D38 - adds r0, r5, #0 - bl sub_08077B98 -_08074EE2: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08074EE4: .4byte gPlayerEntity - -.else - 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 -.endif - - thumb_func_start sub_080754B8 -sub_080754B8: @ 0x080754B8 - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - adds r6, r1, #0 - ldr r7, _080754D4 @ =gPlayerState - ldrb r1, [r7, #0x1b] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080754D8 - adds r0, r4, #0 - adds r1, r6, #0 - bl sub_08075694 - b _0807557E - .align 2, 0 -_080754D4: .4byte gPlayerState -_080754D8: - ldrb r0, [r7, #4] - cmp r0, #0 - beq _08075576 - adds r0, r4, #0 - bl UpdateItemAnim - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _080754F2 - ldrb r1, [r4, #9] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #9] -_080754F2: - ldr r0, _0807552C @ =gPlayerEntity - adds r0, #0x5b - ldrb r1, [r0] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _08075538 - bl sub_0807B014 - adds r5, r0, #0 - cmp r5, #0 - beq _08075538 - movs r0, #8 - movs r1, #0xf - movs r2, #2 - bl FindEntityByID - cmp r0, #0 - bne _08075538 - adds r0, r4, #0 - movs r1, #0xf - bl CreatePlayerBomb - cmp r5, #0xf - bne _08075530 - adds r1, r7, #0 - adds r1, #0xab - movs r0, #5 - b _08075536 - .align 2, 0 -_0807552C: .4byte gPlayerEntity -_08075530: - adds r1, r7, #0 - adds r1, #0xab - movs r0, #8 -_08075536: - strb r0, [r1] -_08075538: - ldrb r1, [r4, #0xe] - movs r2, #0x80 - adds r0, r2, #0 - ands r0, r1 - cmp r0, #0 - beq _0807557E - ldr r1, _08075568 @ =gPlayerState - ldr r0, [r1, #0x30] - ands r0, r2 - cmp r0, #0 - bne _0807555C - adds r0, r1, #0 - adds r0, #0xac - ldrh r1, [r0] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - bne _0807556C -_0807555C: - adds r0, r4, #0 - adds r1, r6, #0 - bl sub_080759B8 - b _0807557E - .align 2, 0 -_08075568: .4byte gPlayerState -_0807556C: - adds r0, r4, #0 - adds r1, r6, #0 - bl sub_08075580 - b _0807557E -_08075576: - adds r0, r4, #0 - adds r1, r6, #0 - bl sub_080759B8 -_0807557E: - pop {r4, r5, r6, r7, pc} - - - thumb_func_start sub_08075580 -sub_08075580: @ 0x08075580 - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r1, #0 - bl sub_08077EFC - cmp r0, #0 - beq _080755E6 - ldr r2, _080755C8 @ =gPlayerState - ldrb r3, [r2, #2] - cmp r3, #0 - bne _080755E6 - movs r1, #8 - asrs r1, r5 - ldrb r0, [r2, #0xa] - bics r0, r1 - strb r0, [r2, #0xa] - movs r0, #1 - strb r0, [r2, #0x1b] - ldr r0, [r2, #0x2c] - adds r0, #0x40 - movs r1, #0xd - strb r1, [r0] - strb r3, [r4, #0xf] - movs r0, #2 - strb r0, [r4, #4] - adds r0, r2, #0 - adds r0, #0xac - ldrh r1, [r0] - movs r0, #0x80 - lsls r0, r0, #2 - ands r0, r1 - cmp r0, #0 - beq _080755CC - movs r0, #0x28 - b _080755CE - .align 2, 0 -_080755C8: .4byte gPlayerState -_080755CC: - movs r0, #0x50 -_080755CE: - strb r0, [r4, #7] - movs r1, #0xb4 - lsls r1, r1, #1 - adds r0, r4, #0 - bl sub_08077DF4 - movs r0, #0x43 - movs r1, #0 - movs r2, #0 - bl CreateObject - b _080755EE -_080755E6: - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_080759B8 -_080755EE: - pop {r4, r5, pc} - - thumb_func_start sub_080755F0 -sub_080755F0: @ 0x080755F0 - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r1, #0 - bl sub_08077EFC - cmp r0, #0 - beq _08075642 - adds r0, r4, #0 - bl sub_08077EC8 - cmp r0, #0 - bne _0807564A - ldr r2, _08075634 @ =gPlayerState - ldrb r3, [r2, #0x1b] - ldrb r0, [r2, #4] - orrs r0, r3 - cmp r0, #0 - beq _08075638 - ldrb r0, [r4, #7] - subs r0, #1 - strb r0, [r4, #7] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0807564A - movs r0, #3 - strb r0, [r4, #4] - ldrb r0, [r4, #9] - movs r1, #0x80 - orrs r0, r1 - strb r0, [r4, #9] - movs r0, #0x20 - orrs r0, r3 - strb r0, [r2, #0x1b] - b _0807564A - .align 2, 0 -_08075634: .4byte gPlayerState -_08075638: - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_080759B8 - b _0807564A -_08075642: - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_080759B8 -_0807564A: - pop {r4, r5, pc} - - thumb_func_start sub_0807564C -sub_0807564C: @ 0x0807564C - push {r4, r5, r6, lr} - adds r4, r0, #0 - adds r6, r1, #0 - ldr r5, _08075668 @ =gPlayerState - ldrb r1, [r5, #0x1b] - ldrb r0, [r5, #4] - orrs r0, r1 - cmp r0, #0 - bne _0807566C - adds r0, r4, #0 - adds r1, r6, #0 - bl sub_080759B8 - b _08075692 - .align 2, 0 -_08075668: .4byte gPlayerState -_0807566C: - adds r0, r4, #0 - bl sub_08077EC8 - cmp r0, #0 - bne _08075692 - adds r0, r4, #0 - bl sub_08077EFC - cmp r0, #0 - beq _0807568A - ldrb r1, [r5, #0x1b] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08075692 -_0807568A: - adds r0, r4, #0 - adds r1, r6, #0 - bl sub_08075694 -_08075692: - pop {r4, r5, r6, pc} - - thumb_func_start sub_08075694 -sub_08075694: @ 0x08075694 - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r1, #0 - movs r3, #1 - strb r3, [r4, #7] - ldr r2, _080756C4 @ =gPlayerState - ldr r1, [r2, #0x30] - movs r0, #0x80 - lsls r0, r0, #0x14 - ands r0, r1 - cmp r0, #0 - beq _080756D0 - ldr r0, _080756C8 @ =0xF7FFFFFF - ands r1, r0 - ldr r0, _080756CC @ =0xFFFBFFFF - ands r1, r0 - str r1, [r2, #0x30] - movs r1, #0x96 - lsls r1, r1, #1 - adds r0, r4, #0 - bl sub_08077DF4 - b _080756E0 - .align 2, 0 -_080756C4: .4byte gPlayerState -_080756C8: .4byte 0xF7FFFFFF -_080756CC: .4byte 0xFFFBFFFF -_080756D0: - adds r0, r2, #0 - adds r0, #0xab - strb r3, [r0] - movs r1, #0x92 - lsls r1, r1, #1 - adds r0, r4, #0 - bl sub_08077DF4 -_080756E0: - ldr r2, _08075730 @ =gPlayerState - movs r0, #8 - asrs r0, r5 - ldrb r1, [r2, #0xa] - orrs r0, r1 - strb r0, [r2, #0xa] - movs r0, #4 - strb r0, [r4, #4] - movs r0, #6 - strb r0, [r4, #0xf] - ldr r0, _08075734 @ =gPlayerEntity - adds r0, #0x40 - movs r1, #0x1e - strb r1, [r0] - ldrb r1, [r2, #0x1b] - movs r0, #0x40 - orrs r0, r1 - movs r1, #0xdf - ands r0, r1 - strb r0, [r2, #0x1b] - adds r3, r2, #0 - adds r3, #0xa0 - ldrb r0, [r3] - cmp r0, #4 - bne _08075726 - ldr r0, [r2, #0x30] - movs r1, #0x80 - lsls r1, r1, #0xf - ands r0, r1 - cmp r0, #0 - bne _08075726 - movs r0, #1 - strb r0, [r3] - bl sub_0807A108 -_08075726: - movs r0, #0x76 - bl SoundReq - pop {r4, r5, pc} - .align 2, 0 -_08075730: .4byte gPlayerState -_08075734: .4byte gPlayerEntity - - thumb_func_start sub_08075738 -sub_08075738: @ 0x08075738 - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - adds r6, r1, #0 - ldr r5, _08075750 @ =gPlayerState - ldrb r0, [r5, #4] - cmp r0, #0 - bne _08075754 - adds r0, r4, #0 - bl sub_080759B8 - b _0807588C - .align 2, 0 -_08075750: .4byte gPlayerState -_08075754: - adds r0, r4, #0 - bl UpdateItemAnim - adds r0, r4, #0 - bl sub_08077F10 - cmp r0, #0 - beq _08075768 - movs r0, #2 - strb r0, [r4, #7] -_08075768: - ldrb r2, [r5, #0x1b] - movs r0, #0x10 - ands r0, r2 - cmp r0, #0 - beq _080757D4 - ldrb r1, [r5, #0xd] - movs r2, #0x80 - adds r0, r2, #0 - ands r0, r1 - cmp r0, #0 - bne _08075780 - strb r1, [r4, #0xb] -_08075780: - ldr r1, _080757D0 @ =gPlayerEntity - ldrb r0, [r4, #0xb] - strb r0, [r1, #0x15] - movs r0, #0xc0 - lsls r0, r0, #1 - strh r0, [r1, #0x24] - ldrb r1, [r4, #0xe] - adds r0, r2, #0 - ands r0, r1 - cmp r0, #0 - beq _0807588C - movs r2, #0xa - adds r0, r5, #0 - adds r0, #0xac - ldrh r1, [r0] - movs r0, #0x80 - lsls r0, r0, #4 - ands r0, r1 - cmp r0, #0 - beq _080757AA - movs r2, #0xf -_080757AA: - ldrb r0, [r4, #8] - adds r0, #1 - strb r0, [r4, #8] - movs r1, #0xff - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r2, r0 - bls _080757C6 - ldrb r0, [r4, #7] - subs r0, #1 - strb r0, [r4, #7] - ands r0, r1 - cmp r0, #0 - bne _0807588C -_080757C6: - adds r0, r4, #0 - adds r1, r6, #0 - bl sub_080759B8 - b _0807588C - .align 2, 0 -_080757D0: .4byte gPlayerEntity -_080757D4: - ldr r7, _08075890 @ =gPlayerEntity - adds r0, r7, #0 - adds r0, #0x5b - ldrb r1, [r0] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _08075816 - movs r0, #0x80 - ands r0, r2 - cmp r0, #0 - bne _08075816 - adds r0, r5, #0 - adds r0, #0xac - ldrh r1, [r0] - movs r0, #0x80 - lsls r0, r0, #1 - ands r0, r1 - cmp r0, #0 - beq _08075816 - adds r0, r4, #0 - movs r1, #0x14 - bl CreatePlayerBomb - adds r2, r0, #0 - cmp r2, #0 - beq _08075816 - ldrb r0, [r7, #0x14] - movs r1, #6 - ands r1, r0 - movs r0, #0x80 - orrs r1, r0 - strb r1, [r2, #0x14] -_08075816: - ldr r5, _08075890 @ =gPlayerEntity - adds r0, r5, #0 - adds r0, #0x5b - ldrb r1, [r0] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _0807587A - ldr r2, _08075894 @ =gPlayerState - ldrb r3, [r2, #0x1b] - movs r0, #0x80 - ands r0, r3 - cmp r0, #0 - bne _0807587A - adds r0, r2, #0 - adds r0, #0xac - ldrh r1, [r0] - movs r0, #0x20 - ands r0, r1 - cmp r0, #0 - beq _0807587A - ldrb r0, [r4, #7] - subs r0, #1 - strb r0, [r4, #7] - lsls r0, r0, #0x18 - cmp r0, #0 - beq _0807587A - movs r0, #0x10 - orrs r0, r3 - strb r0, [r2, #0x1b] - adds r1, r2, #0 - adds r1, #0xab - movs r0, #6 - strb r0, [r1] - ldrb r0, [r5, #0x14] - lsls r0, r0, #2 - strb r0, [r4, #0xb] - movs r0, #1 - strb r0, [r4, #7] - strb r0, [r4, #8] - movs r1, #8 - asrs r1, r6 - ldrb r0, [r2, #0xa] - bics r0, r1 - strb r0, [r2, #0xa] - movs r1, #0x94 - lsls r1, r1, #1 - adds r0, r4, #0 - bl sub_08077DF4 -_0807587A: - ldrb r1, [r4, #0xe] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0807588C - adds r0, r4, #0 - adds r1, r6, #0 - bl sub_080759B8 -_0807588C: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08075890: .4byte gPlayerEntity -_08075894: .4byte gPlayerState - - thumb_func_start sub_08075898 -sub_08075898: @ 0x08075898 - push {lr} - adds r2, r0, #0 - ldr r0, _080758AC @ =gPlayerState - ldrb r0, [r0, #4] - cmp r0, #0 - bne _080758AA - adds r0, r2, #0 - bl sub_080759B8 -_080758AA: - pop {pc} - .align 2, 0 -_080758AC: .4byte gPlayerState - - thumb_func_start sub_080758B0 -sub_080758B0: @ 0x080758B0 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r5, _080758C4 @ =gPlayerState - ldrb r0, [r5, #4] - cmp r0, #0 - bne _080758C8 - adds r0, r4, #0 - bl sub_080759B8 - b _080758F8 - .align 2, 0 -_080758C4: .4byte gPlayerState -_080758C8: - adds r0, r4, #0 - bl UpdateItemAnim - ldrb r1, [r4, #0xe] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080758F8 - movs r0, #0 - strb r0, [r4, #0xf] - ldrb r1, [r5, #0x1b] - movs r0, #0x20 - ands r0, r1 - cmp r0, #0 - beq _080758EA - movs r0, #3 - b _080758EC -_080758EA: - movs r0, #5 -_080758EC: - strb r0, [r4, #4] - ldr r2, _080758FC @ =gPlayerState - ldrb r1, [r2, #0x1b] - movs r0, #0xf7 - ands r0, r1 - strb r0, [r2, #0x1b] -_080758F8: - pop {r4, r5, pc} - .align 2, 0 -_080758FC: .4byte gPlayerState - - thumb_func_start sub_08075900 -sub_08075900: @ 0x08075900 - push {r4, r5, r6, lr} - adds r4, r0, #0 - adds r6, r1, #0 - ldr r5, _08075920 @ =gPlayerState - ldrb r0, [r5, #0x12] - cmp r0, #0x11 - bne _08075928 - ldr r0, [r5, #0x30] - ldr r1, _08075924 @ =0xFFFBFFFF - ands r0, r1 - str r0, [r5, #0x30] - adds r0, r4, #0 - adds r1, r6, #0 - bl sub_080759B8 - b _080759B2 - .align 2, 0 -_08075920: .4byte gPlayerState -_08075924: .4byte 0xFFFBFFFF -_08075928: - adds r0, r4, #0 - bl UpdateItemAnim - ldrb r1, [r5, #0x1b] - movs r2, #0x80 - adds r0, r2, #0 - ands r0, r1 - cmp r0, #0 - beq _08075948 - movs r0, #0xa0 - strb r0, [r5, #0x1b] - adds r0, r4, #0 - adds r1, r6, #0 - bl sub_0807564C - b _080759B2 -_08075948: - ldrb r0, [r4, #7] - cmp r0, #0 - beq _08075998 - subs r0, #1 - strb r0, [r4, #7] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08075962 - movs r1, #0x9a - lsls r1, r1, #1 - adds r0, r4, #0 - bl sub_08077DF4 -_08075962: - ldr r4, _08075990 @ =gPlayerEntity - ldrb r0, [r4, #0x14] - lsrs r0, r0, #1 - lsls r0, r0, #3 - strb r0, [r4, #0x15] - movs r0, #0xc0 - lsls r0, r0, #2 - strh r0, [r4, #0x24] - bl sub_08079E08 - ldr r0, _08075994 @ =gScreenTransition - ldr r0, [r0] - movs r1, #3 - ands r0, r1 - cmp r0, #0 - bne _080759B2 - adds r0, r4, #0 - movs r1, #0x11 - movs r2, #0x40 - bl CreateFx - b _080759B2 - .align 2, 0 -_08075990: .4byte gPlayerEntity -_08075994: .4byte gScreenTransition -_08075998: - ldrb r1, [r4, #0xe] - adds r0, r2, #0 - ands r0, r1 - cmp r0, #0 - beq _080759B2 - ldr r0, [r5, #0x30] - ldr r1, _080759B4 @ =0xFFFBFFFF - ands r0, r1 - str r0, [r5, #0x30] - adds r0, r4, #0 - adds r1, r6, #0 - bl sub_080759B8 -_080759B2: - pop {r4, r5, r6, pc} - .align 2, 0 -_080759B4: .4byte 0xFFFBFFFF - - - - thumb_func_start sub_080759B8 -sub_080759B8: @ 0x080759B8 - push {r4, lr} - adds r3, r0, #0 - adds r4, r1, #0 - ldr r2, _080759E8 @ =gPlayerState - ldr r1, [r2, #0x30] - movs r0, #0x80 - ands r1, r0 - cmp r1, #0 - bne _080759D0 - ldr r0, _080759EC @ =gPlayerEntity - adds r0, #0x40 - strb r1, [r0] -_080759D0: - ldr r0, [r2, #0x30] - ldr r1, _080759F0 @ =0xF7FFFFFF - ands r0, r1 - str r0, [r2, #0x30] - movs r0, #0 - strb r0, [r2, #0x1b] - str r0, [r2, #0x2c] - adds r0, r3, #0 - adds r1, r4, #0 - bl sub_08077E78 - pop {r4, pc} - .align 2, 0 -_080759E8: .4byte gPlayerState -_080759EC: .4byte gPlayerEntity -_080759F0: .4byte 0xF7FFFFFF diff --git a/asm/item/itemTryPickupObject.s b/asm/item/itemTryPickupObject.s deleted file mode 100644 index e032229f..00000000 --- a/asm/item/itemTryPickupObject.s +++ /dev/null @@ -1,605 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - 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/non_matching/bigGoron/sub_0806D1D0.inc b/asm/non_matching/bigGoron/sub_0806D1D0.inc deleted file mode 100644 index 07de3c4b..00000000 --- a/asm/non_matching/bigGoron/sub_0806D1D0.inc +++ /dev/null @@ -1,87 +0,0 @@ - .syntax unified - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r5, [r4, #0xc] - cmp r5, #0 - bne _0806D21A - bl sub_0806D00C - cmp r0, #0 - bne _0806D1E6 - bl DeleteThisEntity -_0806D1E6: - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r0, [r4, #0x1b] - movs r1, #0xc0 - orrs r0, r1 - strb r0, [r4, #0x1b] - ldrb r0, [r4, #0x19] - orrs r0, r1 - strb r0, [r4, #0x19] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r0, [r2] - movs r1, #7 - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r4, #0x18] - movs r1, #3 - orrs r0, r1 - strb r0, [r4, #0x18] - strb r5, [r4, #0x1e] - movs r0, #0x1e - strb r0, [r4, #0xe] - adds r0, r4, #0 - movs r1, #2 - bl sub_0805E3A0 -_0806D21A: - ldrb r0, [r4, #0xd] - cmp r0, #1 - beq _0806D25A - cmp r0, #1 - ble _0806D228 - cmp r0, #2 - beq _0806D25E -_0806D228: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - movs r5, #0xff - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0806D24A - bl Random - movs r1, #0x7f - ands r0, r1 - adds r0, #0x30 - strb r0, [r4, #0xe] - movs r0, #8 - strb r0, [r4, #0xf] - movs r0, #1 - strb r0, [r4, #0x1e] -_0806D24A: - ldrb r0, [r4, #0xf] - cmp r0, #0 - beq _0806D268 - subs r0, #1 - strb r0, [r4, #0xf] - ands r0, r5 - cmp r0, #0 - bne _0806D268 -_0806D25A: - strb r0, [r4, #0x1e] - b _0806D268 -_0806D25E: - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] -_0806D268: - ldr r0, [r4, #0x50] - ldrh r1, [r0, #0x2e] - strh r1, [r4, #0x2e] - ldrh r0, [r0, #0x32] - strh r0, [r4, #0x32] - pop {r4, r5, pc} - .syntax divided diff --git a/asm/non_matching/clothesRack/sub_0806DD90.inc b/asm/non_matching/clothesRack/sub_0806DD90.inc deleted file mode 100644 index f20d50cc..00000000 --- a/asm/non_matching/clothesRack/sub_0806DD90.inc +++ /dev/null @@ -1,149 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - adds r7, r0, #0 - movs r0, #1 - strb r0, [r7, #0xc] - movs r0, #0x3b - bl CheckGlobalFlag - rsbs r1, r0, #0 - orrs r1, r0 - lsrs r4, r1, #0x1f - movs r0, #0x3c - bl CheckGlobalFlag - cmp r0, #0 - beq _0806DDB8 - movs r4, #2 -_0806DDB8: - movs r0, #0x3d - bl CheckGlobalFlag - cmp r0, #0 - beq _0806DDC4 - movs r4, #3 -_0806DDC4: - adds r0, r7, #0 - adds r1, r4, #0 - bl InitializeAnimation - movs r0, #0x2e - ldrsh r5, [r7, r0] - movs r1, #0x32 - ldrsh r4, [r7, r1] - ldr r2, _0806DEC0 @ =0x00004072 - mov sl, r2 - ldr r0, _0806DEC4 @ =gRoomControls - mov r8, r0 - ldrh r1, [r0, #6] - adds r1, #0x18 - subs r1, r5, r1 - lsrs r1, r1, #4 - movs r6, #0x3f - ands r1, r6 - ldrh r0, [r0, #8] - adds r0, #0x10 - subs r0, r4, r0 - lsrs r0, r0, #4 - ands r0, r6 - lsls r0, r0, #6 - orrs r1, r0 - adds r7, #0x38 - mov sb, r7 - mov r0, sb - ldrb r2, [r0] - mov r0, sl - bl SetTile - mov r2, r8 - ldrh r1, [r2, #6] - adds r1, #0x18 - subs r1, r5, r1 - lsrs r1, r1, #4 - ands r1, r6 - ldrh r0, [r2, #8] - subs r0, r4, r0 - lsrs r0, r0, #4 - ands r0, r6 - lsls r0, r0, #6 - orrs r1, r0 - mov r0, sb - ldrb r2, [r0] - mov r0, sl - bl SetTile - mov r2, r8 - ldrh r1, [r2, #6] - adds r1, #0x18 - subs r1, r5, r1 - lsrs r1, r1, #4 - ands r1, r6 - ldrh r0, [r2, #8] - subs r0, #0x10 - subs r0, r4, r0 - lsrs r0, r0, #4 - ands r0, r6 - lsls r0, r0, #6 - orrs r1, r0 - mov r0, sb - ldrb r2, [r0] - mov r0, sl - bl SetTile - mov r2, r8 - ldrh r1, [r2, #6] - subs r1, #0x18 - subs r1, r5, r1 - lsrs r1, r1, #4 - ands r1, r6 - ldrh r0, [r2, #8] - adds r0, #0x10 - subs r0, r4, r0 - lsrs r0, r0, #4 - ands r0, r6 - lsls r0, r0, #6 - orrs r1, r0 - mov r0, sb - ldrb r2, [r0] - mov r0, sl - bl SetTile - mov r2, r8 - ldrh r1, [r2, #6] - subs r1, #0x18 - subs r1, r5, r1 - lsrs r1, r1, #4 - ands r1, r6 - ldrh r0, [r2, #8] - subs r0, r4, r0 - lsrs r0, r0, #4 - ands r0, r6 - lsls r0, r0, #6 - orrs r1, r0 - mov r0, sb - ldrb r2, [r0] - mov r0, sl - bl SetTile - mov r1, r8 - ldrh r0, [r1, #6] - subs r0, #0x18 - subs r5, r5, r0 - lsrs r5, r5, #4 - ands r5, r6 - ldrh r0, [r1, #8] - subs r0, #0x10 - subs r4, r4, r0 - lsrs r4, r4, #4 - ands r4, r6 - lsls r4, r4, #6 - orrs r5, r4 - mov r0, sb - ldrb r2, [r0] - mov r0, sl - adds r1, r5, #0 - bl SetTile - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0806DEC0: .4byte 0x00004072 -_0806DEC4: .4byte gRoomControls - .syntax divided diff --git a/asm/non_matching/eu/sub_0801B4C8.inc b/asm/non_matching/eu/sub_0801B4C8.inc new file mode 100644 index 00000000..33416c34 --- /dev/null +++ b/asm/non_matching/eu/sub_0801B4C8.inc @@ -0,0 +1,103 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + ldr r3, _0801B564 @ =gPlayerState + str r4, [r3, #0x2c] + movs r2, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r0, _0801B568 @ =gUnk_081271CC + str r0, [r4, #0x48] + movs r0, #0xff + strb r0, [r4, #0x1e] + adds r0, r4, #0 + adds r0, #0x80 + strb r2, [r0] + ldr r5, _0801B56C @ =gPlayerEntity + adds r0, r5, #0 + adds r0, #0x60 + ldrh r1, [r0] + adds r0, r4, #0 + adds r0, #0x60 + strh r1, [r0] + adds r1, r4, #0 + adds r1, #0x58 + movs r0, #0xb + strb r0, [r1] + str r5, [r4, #0x50] + adds r0, r4, #0 + adds r0, #0x86 + strh r2, [r0] + ldrb r1, [r4, #0x14] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0801B550 + ldrb r0, [r5, #0x18] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1f + movs r1, #1 + bics r1, r0 + lsls r1, r1, #6 + ldrb r2, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] +_0801B550: + adds r0, r4, #0 + adds r0, #0x68 + ldrb r0, [r0] + cmp r0, #0xc + bne _0801B570 + movs r0, #0xa0 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + movs r0, #0x3c + b _0801B578 + .align 2, 0 +_0801B564: .4byte gPlayerState +_0801B568: .4byte gUnk_081271CC +_0801B56C: .4byte gPlayerEntity +_0801B570: + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + movs r0, #0x1e +_0801B578: + strb r0, [r4, #0xe] + ldrb r1, [r3, #0xd] + movs r0, #0xd + ldrsb r0, [r3, r0] + cmp r0, #0 + blt _0801B588 + strb r1, [r4, #0x15] + b _0801B58E +_0801B588: + ldrb r0, [r4, #0x14] + lsls r0, r0, #2 + strb r0, [r4, #0x15] +_0801B58E: + ldrb r0, [r4, #0x15] + adds r1, r4, #0 + adds r1, #0x83 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #2 + bne _0801B5A4 + movs r0, #1 + strb r0, [r4, #0xb] +_0801B5A4: + adds r0, r4, #0 + movs r1, #1 + movs r2, #3 + bl sub_080AE008 + adds r0, r4, #0 + bl sub_0801766C + adds r0, r4, #0 + bl sub_0801B584 + pop {r4, r5, pc} + .syntax divided \ No newline at end of file diff --git a/asm/non_matching/eu/sub_08075338.inc b/asm/non_matching/eu/sub_08075338.inc new file mode 100644 index 00000000..1ab34548 --- /dev/null +++ b/asm/non_matching/eu/sub_08075338.inc @@ -0,0 +1,180 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r7, r1, #0 + ldr r4, _08074DA8 @ =gPlayerState + ldr r1, [r4, #0x30] + movs r3, #0x80 + adds r0, r1, #0 + ands r0, r3 + cmp r0, #0 + beq _08074DAC + 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 _08074EE2 + .align 2, 0 +_08074DA8: .4byte gPlayerState +_08074DAC: + ldrb r2, [r4, #2] + cmp r2, #0 + beq _08074E22 + movs r6, #7 + adds r0, r6, #0 + ands r0, r2 + cmp r0, #3 + beq _08074E18 + movs r0, #0x78 + ands r0, r2 + cmp r0, #0 + bne _08074E18 + ldr r3, _08074E10 @ =gPlayerEntity + ldr r1, [r3, #0x20] + ldr r0, _08074E14 @ =0x00017FFF + cmp r1, r0 + bhi _08074E18 + adds r0, r4, #0 + adds r0, #0xac + ldrh r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08074E18 + ldr r0, [r3, #0x34] + cmp r0, #0 + beq _08074E18 + 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 _08074EE2 + .align 2, 0 +_08074E10: .4byte gPlayerEntity +_08074E14: .4byte 0x00017FFF +_08074E18: + adds r0, r5, #0 + adds r1, r7, #0 + bl sub_080759B8 + b _08074EE2 +_08074E22: + movs r6, #0x80 + lsls r6, r6, #0xb + ands r6, r1 + cmp r6, #0 + beq _08074EAE + 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 _08074E4C + ldr r0, [r4, #0x2c] + cmp r0, #0 + beq _08074EE2 + bl DeleteEntity + str r6, [r4, #0x2c] + b _08074EE2 +_08074E4C: + 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 _08074EE2 +_08074EAE: + ldrb r1, [r4, #0x1b] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + bne _08074EC0 + strb r6, [r4, #0x1b] + ldr r0, _08074EE4 @ =gPlayerEntity + bl sub_0806F948 +_08074EC0: + ldr r1, [r4, #0x2c] + cmp r1, #0 + beq _08074ED4 + ldrb r0, [r1, #9] + cmp r0, #1 + beq _08074ED4 + adds r0, r1, #0 + bl DeleteEntity + str r6, [r4, #0x2c] +_08074ED4: + adds r0, r5, #0 + adds r1, r7, #0 + bl sub_08077D38 + adds r0, r5, #0 + bl sub_08077B98 +_08074EE2: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08074EE4: .4byte gPlayerEntity + .syntax divided \ No newline at end of file diff --git a/asm/non_matching/eu/sub_08075ADC.inc b/asm/non_matching/eu/sub_08075ADC.inc new file mode 100644 index 00000000..5ebc348f --- /dev/null +++ b/asm/non_matching/eu/sub_08075ADC.inc @@ -0,0 +1,58 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r1, [r4, #0xe] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08075532 + ldr r0, _08075570 @ =gPlayerState + ldr r0, [r0, #0x30] + movs r1, #0x88 + lsls r1, r1, #1 + ands r0, r1 + cmp r0, #0 + bne _08075532 + bl sub_08079D48 + cmp r0, #0 + bne _08075578 +_08075532: + movs r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #4] + adds r0, #1 + strb r0, [r4, #4] + ldr r3, _08075570 @ =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, _08075574 @ =0x0000013D + bl SoundReq + b _0807557E + .align 2, 0 +_08075570: .4byte gPlayerState +_08075574: .4byte 0x0000013D +_08075578: + adds r0, r4, #0 + bl UpdateItemAnim +_0807557E: + pop {r4, r5, pc} + .syntax divided \ No newline at end of file diff --git a/asm/non_matching/farmers/sub_0806BC94.inc b/asm/non_matching/farmers/sub_0806BC94.inc deleted file mode 100644 index e6b32265..00000000 --- a/asm/non_matching/farmers/sub_0806BC94.inc +++ /dev/null @@ -1,19 +0,0 @@ - .syntax unified - push {lr} - ldrb r3, [r0, #0x18] - lsls r3, r3, #0x19 - lsrs r3, r3, #0x1f - rsbs r2, r3, #0 - orrs r2, r3 - asrs r2, r2, #0x1f - movs r3, #8 - ands r2, r3 - ldr r1, [r1, #4] - adds r1, r1, r2 - ldrb r2, [r0, #0x14] - lsrs r2, r2, #1 - adds r1, r1, r2 - bl InitializeAnimation - pop {pc} - .align 2, 0 - .syntax divided diff --git a/asm/item/itemBomb.s b/asm/non_matching/itemBomb/sub_08076088.inc similarity index 61% rename from asm/item/itemBomb.s rename to asm/non_matching/itemBomb/sub_08076088.inc index df9e8883..6f95363b 100644 --- a/asm/item/itemBomb.s +++ b/asm/non_matching/itemBomb/sub_08076088.inc @@ -1,97 +1,4 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - .syntax unified - - .text - - 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} @@ -237,3 +144,4 @@ _080761A0: mov r8, r3 pop {r4, r5, r6, r7, pc} .align 2, 0 + .syntax divided diff --git a/asm/non_matching/itemGustJar/sub_08076DF4.inc b/asm/non_matching/itemGustJar/sub_08076DF4.inc new file mode 100644 index 00000000..47aa05bd --- /dev/null +++ b/asm/non_matching/itemGustJar/sub_08076DF4.inc @@ -0,0 +1,53 @@ + .syntax unified + 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 + .syntax divided diff --git a/asm/non_matching/itemGustJar/sub_08076EC8.inc b/asm/non_matching/itemGustJar/sub_08076EC8.inc new file mode 100644 index 00000000..80ed8064 --- /dev/null +++ b/asm/non_matching/itemGustJar/sub_08076EC8.inc @@ -0,0 +1,84 @@ + .syntax unified + 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 + .syntax divided diff --git a/asm/item/itemGustJar.s b/asm/non_matching/itemGustJar/sub_08076F64.inc similarity index 52% rename from asm/item/itemGustJar.s rename to asm/non_matching/itemGustJar/sub_08076F64.inc index 68d82a34..dd604ea4 100644 --- a/asm/item/itemGustJar.s +++ b/asm/non_matching/itemGustJar/sub_08076F64.inc @@ -1,203 +1,4 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - .syntax unified - - .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 - - 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 @@ -402,3 +203,4 @@ _08077110: pop {r4, r5, r6, pc} .align 2, 0 _08077114: .4byte gPlayerEntity + .syntax divided diff --git a/asm/non_matching/itemMoleMitts/sub_080772A8.inc b/asm/non_matching/itemMoleMitts/sub_080772A8.inc new file mode 100644 index 00000000..4bc2b222 --- /dev/null +++ b/asm/non_matching/itemMoleMitts/sub_080772A8.inc @@ -0,0 +1,201 @@ + .syntax unified + 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 + .syntax divided diff --git a/asm/non_matching/itemMoleMitts/sub_080774A0.inc b/asm/non_matching/itemMoleMitts/sub_080774A0.inc new file mode 100644 index 00000000..28673743 --- /dev/null +++ b/asm/non_matching/itemMoleMitts/sub_080774A0.inc @@ -0,0 +1,63 @@ + .syntax unified + 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} + .syntax divided diff --git a/asm/non_matching/itemPegasusBoots/sub_08076964.inc b/asm/non_matching/itemPegasusBoots/sub_08076964.inc new file mode 100644 index 00000000..ab565b3d --- /dev/null +++ b/asm/non_matching/itemPegasusBoots/sub_08076964.inc @@ -0,0 +1,145 @@ + .syntax unified + 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 + .syntax divided diff --git a/asm/non_matching/itemPegasusBoots/sub_08076A88.inc b/asm/non_matching/itemPegasusBoots/sub_08076A88.inc new file mode 100644 index 00000000..5a56e40d --- /dev/null +++ b/asm/non_matching/itemPegasusBoots/sub_08076A88.inc @@ -0,0 +1,123 @@ + .syntax unified + 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 + .syntax divided diff --git a/asm/item/itemRocsCape.s b/asm/non_matching/itemRocsCape/ItemRocsCape.inc similarity index 60% rename from asm/item/itemRocsCape.s rename to asm/non_matching/itemRocsCape/ItemRocsCape.inc index 7254948f..8de6c30b 100644 --- a/asm/item/itemRocsCape.s +++ b/asm/non_matching/itemRocsCape/ItemRocsCape.inc @@ -1,13 +1,4 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - .syntax unified - - .text - - thumb_func_start ItemRocsCape -ItemRocsCape: @ 0x08076640 push {r4, r5, lr} adds r3, r0, #0 adds r4, r1, #0 @@ -152,89 +143,4 @@ _0807674C: _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} + .syntax divided diff --git a/asm/non_matching/itemSword/sub_08075338.inc b/asm/non_matching/itemSword/sub_08075338.inc new file mode 100644 index 00000000..426fdf26 --- /dev/null +++ b/asm/non_matching/itemSword/sub_08075338.inc @@ -0,0 +1,186 @@ + .syntax unified + 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 + .syntax divided diff --git a/asm/non_matching/itemSword/sub_080754B8.inc b/asm/non_matching/itemSword/sub_080754B8.inc new file mode 100644 index 00000000..ae6d7dce --- /dev/null +++ b/asm/non_matching/itemSword/sub_080754B8.inc @@ -0,0 +1,102 @@ + .syntax unified + 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} + .syntax divided diff --git a/asm/non_matching/itemSword/sub_08075738.inc b/asm/non_matching/itemSword/sub_08075738.inc new file mode 100644 index 00000000..31991b9c --- /dev/null +++ b/asm/non_matching/itemSword/sub_08075738.inc @@ -0,0 +1,177 @@ + .syntax unified + 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 + .syntax divided diff --git a/asm/non_matching/itemSword/sub_08075900.inc b/asm/non_matching/itemSword/sub_08075900.inc new file mode 100644 index 00000000..1d912115 --- /dev/null +++ b/asm/non_matching/itemSword/sub_08075900.inc @@ -0,0 +1,89 @@ + .syntax unified + 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 + .syntax divided diff --git a/asm/non_matching/itemTryPickupObject/sub_080761C0.inc b/asm/non_matching/itemTryPickupObject/sub_080761C0.inc new file mode 100644 index 00000000..08ce1ec9 --- /dev/null +++ b/asm/non_matching/itemTryPickupObject/sub_080761C0.inc @@ -0,0 +1,127 @@ + .syntax unified + 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 + .syntax divided diff --git a/asm/non_matching/itemTryPickupObject/sub_080762D8.inc b/asm/non_matching/itemTryPickupObject/sub_080762D8.inc new file mode 100644 index 00000000..696ef580 --- /dev/null +++ b/asm/non_matching/itemTryPickupObject/sub_080762D8.inc @@ -0,0 +1,219 @@ + .syntax unified + 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} + .syntax divided diff --git a/asm/non_matching/itemTryPickupObject/sub_08076518.inc b/asm/non_matching/itemTryPickupObject/sub_08076518.inc new file mode 100644 index 00000000..696b2d1e --- /dev/null +++ b/asm/non_matching/itemTryPickupObject/sub_08076518.inc @@ -0,0 +1,98 @@ + .syntax unified + 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 + .syntax divided diff --git a/asm/non_matching/ocarina/OcarinaUpdate.inc b/asm/non_matching/ocarina/OcarinaUpdate.inc new file mode 100644 index 00000000..6e203081 --- /dev/null +++ b/asm/non_matching/ocarina/OcarinaUpdate.inc @@ -0,0 +1,38 @@ + .syntax unified + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + bl UpdateItemAnim + ldrb r1, [r5, #0xe] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08076C6E + ldr r0, _08076C70 @ =gPlayerEntity + ldrb r2, [r0, #0x10] + movs r4, #0 + movs r1, #0x80 + orrs r1, r2 + strb r1, [r0, #0x10] + ldr r2, _08076C74 @ =gPlayerState + ldr r1, [r2, #0x30] + ldr r3, _08076C78 @ =0xEFFFFFFF + ands r1, r3 + str r1, [r2, #0x30] + adds r2, #0x27 + strb r4, [r2] + ldr r1, _08076C7C @ =gUnk_02034490 + strb r4, [r1] + bl CreateBird + bl UnfreezeTime + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_08077E78 +_08076C6E: + pop {r4, r5, r6, pc} + .align 2, 0 +_08076C70: .4byte gPlayerEntity +_08076C74: .4byte gPlayerState +_08076C78: .4byte 0xEFFFFFFF +_08076C7C: .4byte gUnk_02034490 + .syntax divided diff --git a/asm/non_matching/playerItem10/sub_080ACC78.inc b/asm/non_matching/playerItem10/sub_080ACC78.inc new file mode 100644 index 00000000..2de8d46b --- /dev/null +++ b/asm/non_matching/playerItem10/sub_080ACC78.inc @@ -0,0 +1,168 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrb r2, [r4, #0xa] + ldr r0, _080ACD20 @ =gScreenTransition + ldr r0, [r0] + adds r0, r2, r0 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _080ACCF8 + ldr r0, _080ACD24 @ =gUnk_0812AAAC + lsls r1, r2, #2 + adds r1, r1, r0 + ldr r7, [r1] + ldr r0, [r4, #0x74] + adds r0, r7, r0 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bne _080ACCA4 + str r0, [r4, #0x74] +_080ACCA4: + ldr r0, [r4, #0x74] + adds r0, r7, r0 + movs r2, #0 + ldrsb r2, [r0, r2] + movs r3, #1 + ldrsb r3, [r0, r3] + adds r0, r4, #0 + movs r1, #0xe + bl sub_08008782 + adds r5, r0, #0 + cmp r5, #0 + beq _080ACCF2 + ldrb r1, [r5, #5] + ldrb r2, [r5, #2] + movs r0, #0x11 + bl CreateObject + adds r6, r0, #0 + cmp r6, #0 + beq _080ACCF2 + ldrb r0, [r5, #3] + strb r0, [r6, #0xe] + ldr r0, [r4, #0x74] + adds r0, r7, r0 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x2e] + adds r0, r0, r1 + strh r0, [r6, #0x2e] + ldr r0, [r4, #0x74] + adds r0, r0, r7 + ldrb r0, [r0, #1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r6, #0x32] +_080ACCF2: + ldr r0, [r4, #0x74] + adds r0, #2 + str r0, [r4, #0x74] +_080ACCF8: + ldr r2, [r4, #0x54] + cmp r2, #0 + bne _080ACD08 + ldr r0, [r4, #0x70] + cmp r0, #2 + bls _080ACD08 + movs r0, #1 + str r0, [r4, #0x70] +_080ACD08: + ldr r0, [r4, #0x70] + subs r0, #1 + str r0, [r4, #0x70] + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _080ACDAE + cmp r2, #0 + bne _080ACD28 + movs r0, #2 + b _080ACD32 + .align 2, 0 +_080ACD20: .4byte gScreenTransition +_080ACD24: .4byte gUnk_0812AAAC +_080ACD28: + ldr r0, _080ACD74 @ =gUnk_0812AABC + ldrb r1, [r4, #0xa] + adds r1, r1, r0 + movs r0, #0 + ldrsb r0, [r1, r0] +_080ACD32: + str r0, [r4, #0x70] + movs r0, #0x17 + movs r1, #0 + movs r2, #0 + bl CreateObject + adds r6, r0, #0 + cmp r6, #0 + beq _080ACDAE + bl Random + adds r2, r0, #0 + movs r0, #0xf + ands r2, r0 + ldr r3, [r4, #0x48] + ldrb r1, [r3, #6] + cmp r1, r2 + bge _080ACD58 + adds r2, r1, #0 +_080ACD58: + movs r0, #1 + ands r0, r2 + cmp r0, #0 + beq _080ACD62 + rsbs r2, r2, #0 +_080ACD62: + ldrb r0, [r4, #0x14] + lsrs r0, r0, #1 + cmp r0, #1 + beq _080ACD9C + cmp r0, #1 + bgt _080ACD78 + cmp r0, #0 + beq _080ACD82 + b _080ACDAE + .align 2, 0 +_080ACD74: .4byte gUnk_0812AABC +_080ACD78: + cmp r0, #2 + beq _080ACD8C + cmp r0, #3 + beq _080ACDA2 + b _080ACDAE +_080ACD82: + ldrb r0, [r3, #7] + ldrh r1, [r4, #0x32] + subs r1, r1, r0 + strh r1, [r6, #0x32] + b _080ACD94 +_080ACD8C: + ldrh r0, [r4, #0x32] + ldrb r3, [r3, #7] + adds r0, r0, r3 + strh r0, [r6, #0x32] +_080ACD94: + ldrh r0, [r4, #0x2e] + adds r0, r0, r2 + strh r0, [r6, #0x2e] + b _080ACDAE +_080ACD9C: + ldrh r0, [r4, #0x2e] + adds r0, r0, r1 + b _080ACDA6 +_080ACDA2: + ldrh r0, [r4, #0x2e] + subs r0, r0, r1 +_080ACDA6: + strh r0, [r6, #0x2e] + ldrh r0, [r4, #0x32] + adds r0, r0, r2 + strh r0, [r6, #0x32] +_080ACDAE: + pop {r4, r5, r6, r7, pc} + .syntax divided diff --git a/asm/non_matching/playerItem10/sub_080ACDB0.inc b/asm/non_matching/playerItem10/sub_080ACDB0.inc new file mode 100644 index 00000000..663ffea1 --- /dev/null +++ b/asm/non_matching/playerItem10/sub_080ACDB0.inc @@ -0,0 +1,150 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _080ACDE8 + ldr r2, _080ACDE0 @ =gPlayerEntity + ldr r1, _080ACDE4 @ =gUnk_08126EE4 + ldrb r0, [r4, #0x14] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r3, [r2, #0x2e] + adds r0, r0, r3 + strh r0, [r4, #0x2e] + ldrb r0, [r4, #0x14] + adds r0, #1 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r2, [r2, #0x32] + adds r0, r0, r2 + b _080ACEB4 + .align 2, 0 +_080ACDE0: .4byte gPlayerEntity +_080ACDE4: .4byte gUnk_08126EE4 +_080ACDE8: + ldrb r2, [r4, #0x14] + movs r0, #2 + ands r0, r2 + cmp r0, #0 + beq _080ACE48 + ldr r0, [r4, #0x50] + ldrh r1, [r0, #0x32] + subs r1, #3 + strh r1, [r4, #0x32] + movs r1, #4 + ands r1, r2 + adds r3, r0, #0 + cmp r1, #0 + beq _080ACE20 + movs r0, #0x2e + ldrsh r7, [r3, r0] + movs r0, #0x2e + ldrsh r6, [r4, r0] + ldr r1, _080ACE1C @ =gUnk_0812AAE8 + ldrb r2, [r4, #0xa] + adds r0, r2, r1 + ldrb r0, [r0] + rsbs r5, r0, #0 + adds r0, r1, #0 + b _080ACE30 + .align 2, 0 +_080ACE1C: .4byte gUnk_0812AAE8 +_080ACE20: + movs r0, #0x2e + ldrsh r6, [r3, r0] + movs r0, #0x2e + ldrsh r7, [r4, r0] + ldr r0, _080ACE44 @ =gUnk_0812AAE8 + ldrb r2, [r4, #0xa] + adds r1, r2, r0 + ldrb r5, [r1] +_080ACE30: + subs r1, r7, r6 + str r1, [r4, #0x78] + adds r0, r2, r0 + ldrb r0, [r0] + cmp r0, r1 + bhi _080ACE90 + ldrh r0, [r3, #0x2e] + adds r0, r0, r5 + strh r0, [r4, #0x2e] + b _080ACEB6 + .align 2, 0 +_080ACE44: .4byte gUnk_0812AAE8 +_080ACE48: + ldr r1, [r4, #0x50] + ldrh r0, [r1, #0x2e] + strh r0, [r4, #0x2e] + movs r0, #4 + ands r0, r2 + adds r3, r1, #0 + cmp r0, #0 + beq _080ACE70 + movs r0, #0x32 + ldrsh r6, [r3, r0] + movs r0, #0x32 + ldrsh r7, [r4, r0] + ldr r0, _080ACE6C @ =gUnk_0812AAE8 + ldrb r2, [r4, #0xa] + adds r1, r2, r0 + ldrb r5, [r1] + b _080ACE84 + .align 2, 0 +_080ACE6C: .4byte gUnk_0812AAE8 +_080ACE70: + movs r0, #0x32 + ldrsh r7, [r3, r0] + movs r0, #0x32 + ldrsh r6, [r4, r0] + ldr r1, _080ACEAC @ =gUnk_0812AAE8 + ldrb r2, [r4, #0xa] + adds r0, r2, r1 + ldrb r0, [r0] + rsbs r5, r0, #0 + adds r0, r1, #0 +_080ACE84: + subs r1, r7, r6 + str r1, [r4, #0x78] + adds r0, r2, r0 + ldrb r0, [r0] + cmp r0, r1 + bls _080ACEB0 +_080ACE90: + subs r0, r0, r1 + lsls r1, r0, #8 + strh r1, [r4, #0x24] + lsls r0, r0, #0x18 + asrs r0, r0, #0x10 + movs r1, #0x80 + lsls r1, r1, #2 + cmp r0, r1 + ble _080ACEA4 + strh r1, [r4, #0x24] +_080ACEA4: + adds r0, r4, #0 + bl sub_080AEFB4 + b _080ACEB6 + .align 2, 0 +_080ACEAC: .4byte gUnk_0812AAE8 +_080ACEB0: + ldrh r0, [r3, #0x32] + adds r0, r0, r5 +_080ACEB4: + strh r0, [r4, #0x32] +_080ACEB6: + ldr r0, _080ACEC8 @ =gPlayerEntity + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x38 + strb r1, [r0] + movs r0, #0 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080ACEC8: .4byte gPlayerEntity + .syntax divided diff --git a/asm/playerItem11.s b/asm/non_matching/playerItem11/sub_08018E68.inc similarity index 67% rename from asm/playerItem11.s rename to asm/non_matching/playerItem11/sub_08018E68.inc index e8e29fba..7918577b 100644 --- a/asm/playerItem11.s +++ b/asm/non_matching/playerItem11/sub_08018E68.inc @@ -1,12 +1,4 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - .syntax unified - - .text - - thumb_func_start sub_08018E68 -sub_08018E68: @ 0x08018E68 push {r4, r5, r6, lr} adds r4, r0, #0 ldr r0, [r4, #0x54] @@ -138,57 +130,4 @@ _08018F62: .align 2, 0 _08018F64: .4byte gUnk_080B3DF4 _08018F68: .4byte gUnk_08003E44 - - thumb_func_start sub_08018F6C -sub_08018F6C: @ 0x08018F6C - push {r4, lr} - adds r4, r0, #0 - ldr r1, [r4, #0x54] - cmp r1, #0 - beq _08018F8A - movs r0, #5 - strb r0, [r1, #0xd] - ldr r2, [r4, #0x54] - ldrb r1, [r2, #0x18] - subs r0, #9 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r2, #0x18] - b _08018F9A -_08018F8A: - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r0, [r0] - cmp r0, #0 - beq _08018F9E -_08018F9A: - bl DeleteThisEntity -_08018F9E: - pop {r4, pc} - - thumb_func_start sub_08018FA0 -sub_08018FA0: @ 0x08018FA0 - push {lr} - adds r2, r0, #0 - ldr r0, _08018FC8 @ =gPlayerEntity - adds r0, #0x38 - ldrb r0, [r0] - adds r1, r2, #0 - adds r1, #0x38 - strb r0, [r1] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #2 - bne _08018FBC - movs r0, #1 - strb r0, [r2, #0xb] -_08018FBC: - ldrb r0, [r2, #0xa] - adds r0, #0xea - bl SoundReq - pop {pc} - .align 2, 0 -_08018FC8: .4byte gPlayerEntity + .syntax divided diff --git a/asm/non_matching/playerItem12/sub_08070100.inc b/asm/non_matching/playerItem12/sub_08070100.inc new file mode 100644 index 00000000..752b8681 --- /dev/null +++ b/asm/non_matching/playerItem12/sub_08070100.inc @@ -0,0 +1,121 @@ + .syntax unified + push {r4, r5, lr} + adds r5, r0, #0 + movs r2, #1 + movs r3, #1 + strb r3, [r5, #0xc] + ldrb r1, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #0x18] + ldrb r1, [r5, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] + ldrb r0, [r5, #0x14] + lsls r0, r0, #2 + strb r0, [r5, #0x15] + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r5, #0x24] + movs r0, #0x40 + str r0, [r5, #0x74] + movs r0, #0xf0 + lsls r0, r0, #1 + str r0, [r5, #0x78] + ldr r2, _0807017C @ =gPlayerEntity + ldr r1, _08070180 @ =gUnk_0811B9A0 + ldrb r0, [r5, #0x14] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r4, [r2, #0x2e] + adds r0, r0, r4 + strh r0, [r5, #0x2e] + ldrb r0, [r5, #0x14] + adds r0, #1 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r2, #0x32] + adds r0, r0, r1 + strh r0, [r5, #0x32] + adds r1, r5, #0 + adds r1, #0x3c + movs r0, #7 + strb r0, [r1] + subs r1, #1 + movs r0, #0x8a + strb r0, [r1] + ldr r0, _08070184 @ =gUnk_0811B9D0 + str r0, [r5, #0x48] + adds r0, r5, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #2 + bne _08070188 + strb r3, [r5, #0xa] + b _0807018C + .align 2, 0 +_0807017C: .4byte gPlayerEntity +_08070180: .4byte gUnk_0811B9A0 +_08070184: .4byte gUnk_0811B9D0 +_08070188: + movs r0, #0 + strb r0, [r5, #0xa] +_0807018C: + ldrb r1, [r2, #0x1b] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r5, #0x1b] + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #0x1b] + ldrb r3, [r5, #0x14] + lsrs r3, r3, #1 + lsls r3, r3, #3 + ldr r0, _080701F0 @ =gUnk_0811B9A8 + adds r3, r3, r0 + ldrb r1, [r3] + movs r0, #1 + ands r1, r0 + lsls r1, r1, #6 + ldrb r2, [r5, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #0x18] + ldrb r1, [r3, #1] + lsls r1, r1, #7 + movs r2, #0x7f + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #0x18] + ldrb r0, [r3, #4] + adds r4, r5, #0 + adds r4, #0x58 + strb r0, [r4] + movs r0, #2 + ldrsb r0, [r3, r0] + str r0, [r5, #0x6c] + movs r0, #3 + ldrsb r0, [r3, r0] + str r0, [r5, #0x70] + adds r0, r5, #0 + bl sub_0801766C + ldrb r1, [r4] + adds r0, r5, #0 + bl InitializeAnimation + ldr r0, _080701F4 @ =0x000001DD + bl SoundReq + pop {r4, r5, pc} + .align 2, 0 +_080701F0: .4byte gUnk_0811B9A8 +_080701F4: .4byte 0x000001DD + .syntax divided diff --git a/asm/non_matching/playerItem12/sub_080701F8.inc b/asm/non_matching/playerItem12/sub_080701F8.inc new file mode 100644 index 00000000..5ac6540b --- /dev/null +++ b/asm/non_matching/playerItem12/sub_080701F8.inc @@ -0,0 +1,185 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldr r0, _08070244 @ =gUnk_0811B9C8 + ldrb r1, [r5, #0x14] + adds r2, r1, r0 + movs r6, #0 + ldrsb r6, [r2, r6] + adds r1, #1 + adds r1, r1, r0 + movs r7, #0 + ldrsb r7, [r1, r7] + adds r0, r5, #0 + movs r1, #0xa + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_08008782 + adds r4, r0, #0 + cmp r4, #0 + beq _08070248 + ldrb r1, [r4, #5] + ldrb r2, [r4, #2] + movs r0, #0x53 + bl CreateObject + adds r1, r0, #0 + cmp r1, #0 + beq _08070260 + ldrb r0, [r4, #3] + strb r0, [r1, #0xe] + ldrh r0, [r5, #0x2e] + adds r0, r0, r6 + strh r0, [r1, #0x2e] + ldrh r0, [r5, #0x32] + adds r0, r0, r7 + strh r0, [r1, #0x32] + b _08070260 + .align 2, 0 +_08070244: .4byte gUnk_0811B9C8 +_08070248: + ldr r0, [r5, #0x74] + subs r0, #1 + str r0, [r5, #0x74] + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _08070260 + ldr r0, [r5, #0x78] + subs r0, #1 + str r0, [r5, #0x78] + cmp r0, r1 + bne _08070268 +_08070260: + adds r0, r5, #0 + bl sub_08070458 + b _0807037A +_08070268: + adds r0, r5, #0 + bl GetNextFrame + adds r0, r5, #0 + bl sub_0806F69C + ldrb r0, [r5, #0xa] + cmp r0, #0 + bne _08070280 + adds r0, r5, #0 + bl sub_0800451C +_08070280: + movs r1, #0x2e + ldrsh r0, [r5, r1] + ldr r7, _08070354 @ =gRoomControls + ldrh r1, [r7, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r6, #0x3f + ands r0, r6 + movs r2, #0x32 + ldrsh r1, [r5, r2] + ldrh r2, [r7, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r6 + lsls r1, r1, #6 + orrs r0, r1 + ldr r1, _08070358 @ =gPlayerEntity + adds r1, #0x38 + ldrb r1, [r1] + movs r2, #0x80 + bl sub_080002F0 + cmp r0, #0 + bne _0807036A + ldr r1, _0807035C @ =gUnk_08003E44 + movs r3, #0x2e + ldrsh r2, [r5, r3] + movs r0, #0x32 + ldrsh r3, [r5, r0] + adds r0, r5, #0 + bl sub_080040D8 + cmp r0, #0 + bne _08070364 + adds r0, r5, #0 + bl sub_080002B8 + cmp r0, #0x19 + bne _0807036A + movs r0, #4 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r5, #0x10] + ldrh r2, [r5, #0x2e] + movs r1, #0x10 + rsbs r1, r1, #0 + adds r0, r1, #0 + ands r0, r2 + movs r2, #8 + orrs r0, r2 + strh r0, [r5, #0x2e] + ldrh r0, [r5, #0x32] + ands r1, r0 + orrs r1, r2 + strh r1, [r5, #0x32] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + movs r1, #0x2e + ldrsh r0, [r5, r1] + ldrh r1, [r7, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r6 + movs r2, #0x32 + ldrsh r1, [r5, r2] + ldrh r2, [r7, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r6 + lsls r1, r1, #6 + orrs r0, r1 + adds r4, r5, #0 + adds r4, #0x38 + ldrb r1, [r4] + bl sub_080001DA + str r0, [r5, #0x7c] + adds r0, r5, #0 + movs r1, #0x14 + bl InitializeAnimation + ldr r0, _08070360 @ =0x00004020 + movs r3, #0x2e + ldrsh r1, [r5, r3] + ldrh r2, [r7, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r6 + movs r3, #0x32 + ldrsh r2, [r5, r3] + ldrh r3, [r7, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r6 + lsls r2, r2, #6 + orrs r1, r2 + ldrb r2, [r4] + bl SetTile + b _0807037A + .align 2, 0 +_08070354: .4byte gRoomControls +_08070358: .4byte gPlayerEntity +_0807035C: .4byte gUnk_08003E44 +_08070360: .4byte 0x00004020 +_08070364: + adds r0, r5, #0 + bl sub_08070458 +_0807036A: + adds r0, r5, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0 + beq _0807037A + adds r0, r5, #0 + bl sub_08070458 +_0807037A: + pop {r4, r5, r6, r7, pc} + .syntax divided diff --git a/asm/non_matching/playerItem12/sub_080703BC.inc b/asm/non_matching/playerItem12/sub_080703BC.inc new file mode 100644 index 00000000..88818bf1 --- /dev/null +++ b/asm/non_matching/playerItem12/sub_080703BC.inc @@ -0,0 +1,82 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + bl GetNextFrame + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r2, _08070404 @ =gRoomControls + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r5, #0x32 + ldrsh r1, [r4, r5] + ldrh r2, [r2, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080001DA + adds r1, r0, #0 + ldr r0, _08070408 @ =0x00004021 + cmp r1, r0 + beq _0807042E + cmp r1, r0 + bhi _0807040C + subs r0, #1 + cmp r1, r0 + beq _08070420 + b _08070412 + .align 2, 0 +_08070404: .4byte gRoomControls +_08070408: .4byte 0x00004021 +_0807040C: + ldr r0, _08070418 @ =0x00004070 + cmp r1, r0 + beq _0807041C +_08070412: + movs r0, #0 + str r0, [r4, #0x7c] + b _0807042E + .align 2, 0 +_08070418: .4byte 0x00004070 +_0807041C: + movs r0, #0xff + str r0, [r4, #0x78] +_08070420: + ldr r0, [r4, #0x78] + subs r0, #1 + str r0, [r4, #0x78] + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _08070436 +_0807042E: + adds r0, r4, #0 + bl sub_08070458 + b _08070454 +_08070436: + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + cmp r1, #0 + beq _08070454 + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _0807044E + ldrb r0, [r4, #0xc] + cmp r0, #0x1a + bne _08070454 +_0807044E: + adds r0, r4, #0 + bl sub_08070458 +_08070454: + pop {r4, r5, pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/playerItem13/sub_080ACF2C.inc b/asm/non_matching/playerItem13/sub_080ACF2C.inc new file mode 100644 index 00000000..687cb92d --- /dev/null +++ b/asm/non_matching/playerItem13/sub_080ACF2C.inc @@ -0,0 +1,81 @@ + .syntax unified + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + ldr r0, _080ACF60 @ =gUnk_081320E4 + str r0, [r4, #0x48] + ldr r5, [r4, #0x54] + adds r6, r5, #0 + cmp r5, #0 + beq _080ACF64 + ldr r0, [r5, #0x2c] + str r0, [r4, #0x2c] + ldr r0, [r5, #0x30] + str r0, [r4, #0x30] + ldr r0, [r5, #0x34] + str r0, [r4, #0x34] + adds r0, r5, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x38 + strb r1, [r0] + ldrb r0, [r5, #0x16] + strb r0, [r4, #0x16] + b _080ACFB6 + .align 2, 0 +_080ACF60: .4byte gUnk_081320E4 +_080ACF64: + adds r5, r4, #0 + str r4, [r4, #0x54] + movs r0, #2 + strb r0, [r4, #0xc] + ldr r3, _080ACFC8 @ =gUnk_081320B8 + ldrb r0, [r4, #0xf] + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0, #1] + movs r0, #0xf + ands r1, r0 + ldrb r2, [r4, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x1a] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + strb r6, [r4, #0x16] + ldrb r0, [r4, #0xf] + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0, #2] + adds r0, r4, #0 + adds r0, #0x60 + strh r1, [r0] + ldrb r0, [r4, #0xf] + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0] + adds r0, r4, #0 + bl InitializeAnimation + bl sub_08078D60 +_080ACFB6: + ldrb r1, [r5, #8] + adds r0, r4, #0 + adds r0, #0x6c + strh r1, [r0] + ldrb r1, [r5, #9] + adds r0, #2 + strh r1, [r0] + pop {r4, r5, r6, pc} + .align 2, 0 +_080ACFC8: .4byte gUnk_081320B8 + .syntax divided diff --git a/asm/non_matching/playerItem13/sub_080ACFCC.inc b/asm/non_matching/playerItem13/sub_080ACFCC.inc new file mode 100644 index 00000000..4334f0a5 --- /dev/null +++ b/asm/non_matching/playerItem13/sub_080ACFCC.inc @@ -0,0 +1,59 @@ + .syntax unified + push {r4, lr} + adds r4, r0, #0 + ldr r1, [r4, #0x54] + adds r0, #0x6c + ldrh r0, [r0] + ldrb r2, [r1, #8] + cmp r0, r2 + beq _080ACFE8 + adds r0, r4, #0 + adds r0, #0x6e + ldrh r0, [r0] + ldrb r2, [r1, #9] + cmp r0, r2 + bne _080AD034 +_080ACFE8: + ldrb r0, [r1, #0xc] + cmp r0, #2 + beq _080ACFF8 + bl sub_08079184 + bl DeleteThisEntity + b _080AD03C +_080ACFF8: + ldr r0, _080AD02C @ =gPlayerState + ldrb r0, [r0, #5] + cmp r0, #0 + beq _080AD00E + ldr r0, _080AD030 @ =gPlayerEntity + adds r0, #0x79 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + beq _080AD03C +_080AD00E: + adds r0, r4, #0 + bl sub_080AD27C + ldrb r0, [r4, #0xd] + adds r0, #1 + movs r2, #0 + strb r0, [r4, #0xd] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + movs r0, #0xff + strb r0, [r4, #0x15] + str r2, [r4, #0x20] + b _080AD03C + .align 2, 0 +_080AD02C: .4byte gPlayerState +_080AD030: .4byte gPlayerEntity +_080AD034: + bl sub_08079184 + bl DeleteThisEntity +_080AD03C: + pop {r4, pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/playerItem13/sub_080AD040.inc b/asm/non_matching/playerItem13/sub_080AD040.inc new file mode 100644 index 00000000..33fff72b --- /dev/null +++ b/asm/non_matching/playerItem13/sub_080AD040.inc @@ -0,0 +1,290 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, [r4, #0x54] + ldrb r0, [r5, #0xc] + cmp r0, #2 + beq _080AD050 + bl DeleteThisEntity +_080AD050: + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r3, #0x80 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _080AD064 + movs r0, #0 + str r0, [r4, #0x34] +_080AD064: + movs r1, #0x24 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080AD06E + b _080AD220 +_080AD06E: + adds r2, r4, #0 + adds r2, #0x42 + ldrb r1, [r2] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _080AD088 + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] + movs r1, #0 + strb r0, [r4, #0x15] + strb r1, [r2] +_080AD088: + ldr r2, _080AD0B0 @ =gUnk_081320C4 + ldrb r0, [r4, #0x15] + lsrs r0, r0, #2 + adds r1, r0, r2 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r0, #1 + adds r0, r0, r2 + movs r2, #0 + ldrsb r2, [r0, r2] + adds r0, r4, #0 + bl sub_080002B4 + cmp r0, #0x74 + bne _080AD0B4 + adds r0, r4, #0 + bl sub_0806F69C + b _080AD0C8 + .align 2, 0 +_080AD0B0: .4byte gUnk_081320C4 +_080AD0B4: + adds r0, r4, #0 + bl sub_080002D0 + cmp r0, #0x24 + beq _080AD0C8 + cmp r0, #0x26 + beq _080AD0C8 + adds r0, r4, #0 + bl sub_080AF00C +_080AD0C8: + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + beq _080AD0D8 + b _080AD202 +_080AD0D8: + ldr r0, [r4, #0x20] + str r0, [r5, #0x20] + ldr r0, [r4, #0x2c] + str r0, [r5, #0x2c] + ldr r0, [r4, #0x30] + str r0, [r5, #0x30] + ldr r0, [r4, #0x34] + str r0, [r5, #0x34] + adds r0, r4, #0 + bl sub_080002B8 + cmp r0, #0x11 + bhi _080AD0FC + cmp r0, #0x10 + bhs _080AD104 + cmp r0, #0xd + beq _080AD104 + b _080AD14E +_080AD0FC: + cmp r0, #0x13 + beq _080AD104 + cmp r0, #0x5a + bne _080AD14E +_080AD104: + cmp r5, r4 + bne _080AD146 + cmp r0, #0x11 + bhi _080AD116 + cmp r0, #0x10 + bhs _080AD12C + cmp r0, #0xd + beq _080AD120 + b _080AD142 +_080AD116: + cmp r0, #0x13 + beq _080AD138 + cmp r0, #0x5a + beq _080AD126 + b _080AD142 +_080AD120: + adds r0, r4, #0 + movs r1, #0 + b _080AD130 +_080AD126: + adds r0, r4, #0 + movs r1, #0xc + b _080AD130 +_080AD12C: + adds r0, r4, #0 + movs r1, #0xb +_080AD130: + movs r2, #0 + bl CreateFx + b _080AD142 +_080AD138: + adds r0, r4, #0 + movs r1, #0x52 + movs r2, #0 + bl CreateFx +_080AD142: + movs r0, #4 + b _080AD148 +_080AD146: + movs r0, #3 +_080AD148: + strb r0, [r5, #0xd] + bl DeleteThisEntity +_080AD14E: + ldr r0, [r4, #0x54] + cmp r0, r4 + bne _080AD178 + ldrb r0, [r4, #0xb] + cmp r0, #0xff + beq _080AD1DA + cmp r0, #0xf + bne _080AD16A + ldrb r1, [r4, #0xe] + adds r0, r4, #0 + movs r2, #0x80 + bl CreateFx + b _080AD1DA +_080AD16A: + ldrb r1, [r4, #0xb] + ldrb r2, [r4, #0xe] + adds r0, r4, #0 + movs r3, #0 + bl CreateObjectWithParent + b _080AD1DA +_080AD178: + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _080AD188 + adds r0, r5, #0 + bl sub_080AD32C + cmp r0, #0 + beq _080AD1E0 +_080AD188: + ldrb r0, [r4, #0xe] + cmp r0, #1 + bne _080AD196 + movs r0, #0x82 + lsls r0, r0, #1 + bl SoundReq +_080AD196: + adds r0, r4, #0 + bl UpdateSpriteForCollisionLayer + movs r0, #3 + strb r0, [r5, #0xd] + ldrb r2, [r4, #0x19] + lsrs r2, r2, #6 + lsls r2, r2, #6 + ldrb r3, [r5, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r5, #0x19] + ldrb r0, [r4, #0x1b] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r5, #0x1b] + ands r1, r2 + orrs r1, r0 + strb r1, [r5, #0x1b] + adds r0, r4, #0 + adds r0, #0x29 + ldrb r1, [r0] + lsls r1, r1, #0x1d + adds r3, r5, #0 + adds r3, #0x29 + lsrs r1, r1, #0x1d + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080AD1DA: + bl DeleteThisEntity + b _080AD26E +_080AD1E0: + movs r0, #0x82 + lsls r0, r0, #1 + bl SoundReq + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + movs r0, #0x80 + lsls r0, r0, #9 + str r0, [r4, #0x20] + movs r1, #0x24 + ldrsh r0, [r4, r1] + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + strh r0, [r4, #0x24] + b _080AD26E +_080AD202: + adds r0, r4, #0 + bl sub_0800451C + adds r0, r4, #0 + bl sub_0806F8DC + adds r0, r4, #0 + adds r1, r5, #0 + bl CopyPosition + ldr r0, [r4, #0x20] + str r0, [r5, #0x20] + ldrb r0, [r4, #0x15] + strb r0, [r5, #0x15] + b _080AD26E +_080AD220: + ldr r1, _080AD240 @ =gPlayerEntity + adds r0, r1, #0 + adds r0, #0x5a + ldrb r0, [r0] + movs r5, #1 + ands r5, r0 + cmp r5, #0 + beq _080AD244 + movs r0, #0x79 + bl SoundReq + adds r0, r4, #0 + bl sub_080AD27C + b _080AD26E + .align 2, 0 +_080AD240: .4byte gPlayerEntity +_080AD244: + ldr r0, _080AD270 @ =gPlayerState + ldrb r0, [r0, #5] + cmp r0, #0 + beq _080AD25A + adds r0, r1, #0 + adds r0, #0x79 + ldrb r1, [r0] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _080AD26E +_080AD25A: + adds r0, r4, #0 + bl sub_080AD27C + ldrb r0, [r4, #0x10] + movs r1, #0x7f + ands r1, r0 + strb r1, [r4, #0x10] + movs r0, #0xff + strb r0, [r4, #0x15] + str r5, [r4, #0x20] +_080AD26E: + pop {r4, r5, pc} + .align 2, 0 +_080AD270: .4byte gPlayerState + .syntax divided diff --git a/asm/non_matching/playerItem13/sub_080AD27C.inc b/asm/non_matching/playerItem13/sub_080AD27C.inc new file mode 100644 index 00000000..1c31dc1d --- /dev/null +++ b/asm/non_matching/playerItem13/sub_080AD27C.inc @@ -0,0 +1,89 @@ + .syntax unified + push {r4, r5, lr} + adds r3, r0, #0 + ldr r4, [r3, #0x54] + ldr r1, _080AD2AC @ =gPlayerEntity + movs r0, #0 + str r0, [r1, #0x74] + adds r0, r3, #0 + adds r0, #0x6c + ldrh r0, [r0] + adds r5, r1, #0 + ldrb r1, [r4, #8] + cmp r0, r1 + bne _080AD320 + adds r0, r3, #0 + adds r0, #0x6e + ldrh r0, [r0] + ldrb r1, [r4, #9] + cmp r0, r1 + bne _080AD320 + cmp r4, r3 + beq _080AD2B0 + movs r0, #2 + strb r0, [r4, #0xd] + b _080AD2C2 + .align 2, 0 +_080AD2AC: .4byte gPlayerEntity +_080AD2B0: + adds r2, r3, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #0x39 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #0x18 + orrs r1, r0 + strb r1, [r2] +_080AD2C2: + ldr r0, [r4, #0x48] + str r0, [r3, #0x48] + ldrb r1, [r3, #0x16] + lsrs r1, r1, #4 + ldr r2, _080AD318 @ =gUnk_081320CC + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r3, #0x24] + ldr r0, _080AD31C @ =gUnk_081320D4 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + str r0, [r3, #0x20] + ldrh r0, [r4, #0x36] + adds r0, #8 + strh r0, [r4, #0x36] + strh r0, [r3, #0x36] + adds r0, r4, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r3, #0 + adds r0, #0x38 + strb r1, [r0] + ldrh r0, [r5, #0x32] + strh r0, [r3, #0x32] + ldrh r0, [r5, #0x2e] + strh r0, [r3, #0x2e] + adds r0, r5, #0 + adds r0, #0x3c + ldrb r1, [r0] + adds r0, r3, #0 + adds r0, #0x3c + strb r1, [r0] + ldrb r1, [r3, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r3, #0x10] + adds r0, r3, #0 + bl sub_0801766C + b _080AD328 + .align 2, 0 +_080AD318: .4byte gUnk_081320CC +_080AD31C: .4byte gUnk_081320D4 +_080AD320: + bl sub_08079184 + bl DeleteThisEntity +_080AD328: + pop {r4, r5, pc} + .align 2, 0 + .syntax divided diff --git a/asm/playerItem/playerItem15.s b/asm/non_matching/playerItem15/sub_080A310C.inc similarity index 55% rename from asm/playerItem/playerItem15.s rename to asm/non_matching/playerItem15/sub_080A310C.inc index 6165556f..0af22d2f 100644 --- a/asm/playerItem/playerItem15.s +++ b/asm/non_matching/playerItem15/sub_080A310C.inc @@ -1,90 +1,4 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - .syntax unified - - .text - - thumb_func_start PlayerItem15 -PlayerItem15: @ 0x080A306C - push {lr} - ldr r2, _080A3080 @ =gUnk_08127270 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080A3080: .4byte gUnk_08127270 - - thumb_func_start sub_080A3084 -sub_080A3084: @ 0x080A3084 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - movs r5, #1 - strb r5, [r4, #0xc] - ldr r0, [r4, #0x50] - adds r1, r4, #0 - bl CopyPosition - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _080A30F8 - ldr r0, _080A30EC @ =gPlayerEntity - adds r0, #0x3c - ldrb r0, [r0] - adds r0, #1 - adds r1, r4, #0 - adds r1, #0x3c - strb r0, [r1] - ldr r0, _080A30F0 @ =gUnk_08127278 - str r0, [r4, #0x48] - movs r0, #0x80 - lsls r0, r0, #3 - strh r0, [r4, #0x24] - adds r0, r4, #0 - adds r0, #0x38 - ldrb r0, [r0] - cmp r0, #2 - bne _080A30CC - strb r5, [r4, #0xb] -_080A30CC: - ldrb r0, [r4, #0x14] - lsls r0, r0, #2 - strb r0, [r4, #0x15] - movs r0, #0x3c - str r0, [r4, #0x6c] - adds r0, r4, #0 - bl sub_0801766C - adds r0, r4, #0 - bl sub_0806F69C - ldr r0, _080A30F4 @ =0x0000013F - bl SoundReq - b _080A30FC - .align 2, 0 -_080A30EC: .4byte gPlayerEntity -_080A30F0: .4byte gUnk_08127278 -_080A30F4: .4byte 0x0000013F -_080A30F8: - movs r0, #6 - strb r0, [r4, #0xe] -_080A30FC: - adds r0, r4, #0 - movs r1, #0x18 - bl InitializeAnimation - adds r0, r4, #0 - bl sub_080A310C - pop {r4, r5, pc} - - thumb_func_start sub_080A310C -sub_080A310C: @ 0x080A310C push {r4, r5, lr} adds r4, r0, #0 ldrb r0, [r4, #0xa] @@ -199,7 +113,4 @@ _080A31FC: _080A3200: pop {r4, r5, pc} .align 2, 0 - - - - + .syntax divided diff --git a/asm/non_matching/playerItem3/sub_0801B4C8.inc b/asm/non_matching/playerItem3/sub_0801B4C8.inc new file mode 100644 index 00000000..016efeee --- /dev/null +++ b/asm/non_matching/playerItem3/sub_0801B4C8.inc @@ -0,0 +1,97 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + ldr r3, _0801B52C @ =gPlayerState + str r4, [r3, #0x2c] + movs r2, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r0, _0801B530 @ =gUnk_081271CC + str r0, [r4, #0x48] + movs r0, #0xff + strb r0, [r4, #0x1e] + adds r0, r4, #0 + adds r0, #0x80 + strb r2, [r0] + adds r1, r4, #0 + adds r1, #0x58 + movs r0, #0xb + strb r0, [r1] + ldr r5, _0801B534 @ =gPlayerEntity + str r5, [r4, #0x50] + adds r0, r4, #0 + adds r0, #0x86 + strh r2, [r0] + ldrb r1, [r4, #0x14] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0801B518 + ldrb r0, [r5, #0x18] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1f + movs r1, #1 + bics r1, r0 + lsls r1, r1, #6 + ldrb r2, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] +_0801B518: + adds r0, r4, #0 + adds r0, #0x68 + ldrb r0, [r0] + cmp r0, #0xc + bne _0801B538 + movs r0, #0xa0 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + movs r0, #0x3c + b _0801B540 + .align 2, 0 +_0801B52C: .4byte gPlayerState +_0801B530: .4byte gUnk_081271CC +_0801B534: .4byte gPlayerEntity +_0801B538: + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + movs r0, #0x1e +_0801B540: + strb r0, [r4, #0xe] + ldrb r1, [r3, #0xd] + movs r0, #0xd + ldrsb r0, [r3, r0] + cmp r0, #0 + blt _0801B550 + strb r1, [r4, #0x15] + b _0801B556 +_0801B550: + ldrb r0, [r4, #0x14] + lsls r0, r0, #2 + strb r0, [r4, #0x15] +_0801B556: + ldrb r0, [r4, #0x15] + adds r1, r4, #0 + adds r1, #0x83 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #2 + bne _0801B56C + movs r0, #1 + strb r0, [r4, #0xb] +_0801B56C: + adds r0, r4, #0 + movs r1, #1 + movs r2, #3 + bl sub_080AE008 + adds r0, r4, #0 + bl sub_0801766C + adds r0, r4, #0 + bl sub_0801B584 + pop {r4, r5, pc} + .syntax divided diff --git a/asm/non_matching/playerItem3/sub_0801B584.inc b/asm/non_matching/playerItem3/sub_0801B584.inc new file mode 100644 index 00000000..7d42f0ef --- /dev/null +++ b/asm/non_matching/playerItem3/sub_0801B584.inc @@ -0,0 +1,127 @@ + .syntax unified + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + bl sub_0801B804 + ldr r1, _0801B5F8 @ =gPlayerState + ldrb r0, [r1, #4] + cmp r0, #0 + beq _0801B5A8 + ldrb r0, [r1, #0x1a] + cmp r0, #0 + bne _0801B5A8 + ldr r0, [r1, #0x2c] + cmp r0, r6 + bne _0801B5B4 + ldr r0, _0801B5FC @ =gPlayerEntity + ldrb r0, [r0, #0xc] + cmp r0, #1 + beq _0801B5B8 +_0801B5A8: + ldr r1, _0801B5F8 @ =gPlayerState + ldr r0, [r1, #0x2c] + cmp r0, r6 + bne _0801B5B4 + movs r0, #0 + str r0, [r1, #0x2c] +_0801B5B4: + bl DeleteThisEntity +_0801B5B8: + ldr r7, _0801B5FC @ =gPlayerEntity + adds r0, r7, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r3, #1 + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0801B600 + adds r0, r6, #0 + adds r0, #0x68 + ldrb r0, [r0] + movs r2, #0 + cmp r0, #0xc + bne _0801B5D8 + movs r2, #6 +_0801B5D8: + lsrs r0, r1, #4 + adds r1, r0, r2 + ldrb r0, [r6, #0x1e] + cmp r0, r1 + beq _0801B5EE + strb r1, [r6, #0x1e] + ldrb r1, [r6, #0x1e] + ldrh r2, [r6, #0x12] + adds r0, r6, #0 + bl sub_080042D0 +_0801B5EE: + adds r0, r6, #0 + adds r1, r7, #0 + bl sub_08078E84 + b _0801B674 + .align 2, 0 +_0801B5F8: .4byte gPlayerState +_0801B5FC: .4byte gPlayerEntity +_0801B600: + movs r5, #0 + movs r0, #2 + strb r0, [r6, #0xc] + adds r1, r6, #0 + adds r1, #0x60 + movs r0, #0xd5 + strh r0, [r1] + ldrb r0, [r6, #0x10] + movs r4, #0x80 + orrs r0, r4 + strb r0, [r6, #0x10] + subs r1, #0x24 + ldrb r0, [r1] + orrs r0, r3 + strb r0, [r1] + adds r0, r7, #0 + adds r0, #0x3b + ldrb r0, [r0] + adds r2, r6, #0 + adds r2, #0x3b + strb r0, [r2] + movs r0, #0xa6 + strh r0, [r6, #0x12] + ldrb r1, [r6, #0x18] + subs r0, #0xe7 + ands r0, r1 + movs r1, #4 + rsbs r1, r1, #0 + ands r0, r1 + orrs r0, r3 + strb r0, [r6, #0x18] + ldrb r1, [r6, #0x14] + lsrs r1, r1, #1 + lsls r1, r1, #1 + ldr r2, _0801B678 @ =gUnk_080B7826 + adds r0, r1, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r3, [r6, #0x2e] + adds r0, r0, r3 + strh r0, [r6, #0x2e] + adds r1, #1 + adds r1, r1, r2 + movs r0, #0 + ldrsb r0, [r1, r0] + ldrh r1, [r6, #0x32] + adds r0, r0, r1 + strh r0, [r6, #0x32] + adds r0, r6, #0 + movs r1, #0 + bl InitializeAnimation + ldr r0, _0801B67C @ =gPlayerState + str r5, [r0, #0x2c] + ldrb r1, [r0, #4] + orrs r4, r1 + strb r4, [r0, #4] +_0801B674: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0801B678: .4byte gUnk_080B7826 +_0801B67C: .4byte gPlayerState + .syntax divided diff --git a/asm/non_matching/playerItem3/sub_0801B680.inc b/asm/non_matching/playerItem3/sub_0801B680.inc new file mode 100644 index 00000000..71d17694 --- /dev/null +++ b/asm/non_matching/playerItem3/sub_0801B680.inc @@ -0,0 +1,154 @@ + .syntax unified + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_0801B804 + adds r0, r4, #0 + adds r0, #0x68 + ldrb r0, [r0] + cmp r0, #0xc + bne _0801B6DC + adds r0, r4, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + bne _0801B6DC + ldr r3, _0801B6C4 @ =gPlayerState + ldrb r1, [r3, #0xd] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0801B6DC + adds r2, r4, #0 + adds r2, #0x83 + ldrb r0, [r2] + ldrb r1, [r3, #0xd] + subs r0, r0, r1 + movs r3, #0x1f + ands r0, r3 + cmp r0, #0x10 + ble _0801B6C8 + adds r1, r4, #0 + adds r1, #0x82 + ldrh r0, [r1] + adds r0, #0x40 + b _0801B6D0 + .align 2, 0 +_0801B6C4: .4byte gPlayerState +_0801B6C8: + adds r1, r4, #0 + adds r1, #0x82 + ldrh r0, [r1] + subs r0, #0x40 +_0801B6D0: + strh r0, [r1] + ldrb r1, [r2] + adds r0, r3, #0 + ands r0, r1 + strb r0, [r2] + strb r0, [r4, #0x15] +_0801B6DC: + adds r0, r4, #0 + bl sub_0806F69C + movs r5, #0 + adds r0, r4, #0 + bl sub_0801B864 + cmp r0, #0 + beq _0801B6FE + adds r0, r4, #0 + adds r0, #0x68 + ldrb r1, [r0] + movs r0, #0xc + eors r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r5, r0, #0x1f +_0801B6FE: + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r2, _0801B780 @ =gRoomControls + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r6, #0x32 + ldrsh r1, [r4, r6] + ldrh r2, [r2, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + ldr r1, _0801B784 @ =gPlayerEntity + adds r1, #0x38 + ldrb r1, [r1] + movs r2, #0x80 + bl sub_080002F0 + cmp r0, #0 + bne _0801B73C + cmp r5, #0 + bne _0801B790 + ldr r1, _0801B788 @ =gUnk_08003E44 + adds r0, r4, #0 + bl sub_080040E2 + adds r5, r0, #0 +_0801B73C: + cmp r5, #0 + bne _0801B790 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xb + bhi _0801B754 + ldrh r0, [r4, #0x24] + subs r0, #0x10 + strh r0, [r4, #0x24] +_0801B754: + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _0801B75C + movs r5, #1 +_0801B75C: + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0801B76C + movs r5, #1 +_0801B76C: + cmp r5, #0 + beq _0801B7A4 + adds r0, r4, #0 + adds r0, #0x68 + ldrb r0, [r0] + cmp r0, #0xc + bne _0801B78C + movs r0, #0x1e + b _0801B792 + .align 2, 0 +_0801B780: .4byte gRoomControls +_0801B784: .4byte gPlayerEntity +_0801B788: .4byte gUnk_08003E44 +_0801B78C: + movs r0, #0xc + b _0801B792 +_0801B790: + movs r0, #1 +_0801B792: + strb r0, [r4, #0xe] + cmp r5, #0 + beq _0801B7A4 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + movs r0, #0xe0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] +_0801B7A4: + pop {r4, r5, r6, pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/playerItem3/sub_0801B804.inc b/asm/non_matching/playerItem3/sub_0801B804.inc new file mode 100644 index 00000000..8ade9e2a --- /dev/null +++ b/asm/non_matching/playerItem3/sub_0801B804.inc @@ -0,0 +1,54 @@ + .syntax unified + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0xc + bl IsItemEquipped + cmp r0, #1 + beq _0801B820 + cmp r0, #1 + blo _0801B81C + cmp r0, #2 + beq _0801B824 + b _0801B826 +_0801B81C: + movs r4, #1 + b _0801B826 +_0801B820: + movs r4, #2 + b _0801B826 +_0801B824: + movs r4, #0 +_0801B826: + ldr r3, _0801B850 @ =gPlayerState + adds r0, r3, #0 + adds r0, #0x90 + ldrh r0, [r0] + ands r4, r0 + cmp r4, #0 + bne _0801B854 + adds r1, r5, #0 + adds r1, #0x80 + movs r0, #1 + strb r0, [r1] + ldrb r2, [r3, #0xa] + movs r1, #0x7f + adds r0, r1, #0 + ands r0, r2 + strb r0, [r3, #0xa] + ldrb r0, [r3, #0xb] + ands r1, r0 + strb r1, [r3, #0xb] + b _0801B862 + .align 2, 0 +_0801B850: .4byte gPlayerState +_0801B854: + ldrb r1, [r3, #0xa] + movs r0, #0x80 + orrs r1, r0 + strb r1, [r3, #0xa] + ldrb r1, [r3, #0xb] + orrs r0, r1 + strb r0, [r3, #0xb] +_0801B862: + pop {r4, r5, pc} + .syntax divided diff --git a/asm/non_matching/playerItemBomb/PlayerItemBomb.inc b/asm/non_matching/playerItemBomb/PlayerItemBomb.inc new file mode 100644 index 00000000..14f7c6a1 --- /dev/null +++ b/asm/non_matching/playerItemBomb/PlayerItemBomb.inc @@ -0,0 +1,99 @@ + .syntax unified + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0801B1E0 @ =gUnk_080B77C8 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl GetNextFrame + ldrb r2, [r4, #0xc] + cmp r2, #3 + beq _0801B24E + ldrb r1, [r4, #0xe] + cmp r1, #0 + beq _0801B1E4 + adds r0, r4, #0 + adds r0, #0x68 + ldrb r0, [r0] + cmp r0, #7 + bne _0801B1BC + subs r0, r1, #1 + strb r0, [r4, #0xe] +_0801B1BC: + ldrb r1, [r4, #0xe] + cmp r1, #0 + bne _0801B24E + movs r0, #0x50 + strb r0, [r4, #0xf] + str r1, [r4, #0x68] + ldrb r0, [r4, #0x19] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x19] + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0805EC9C + b _0801B24E + .align 2, 0 +_0801B1E0: .4byte gUnk_080B77C8 +_0801B1E4: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _0801B24E + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0801B248 + cmp r2, #2 + bne _0801B204 + ldrb r0, [r4, #0xd] + cmp r0, #1 + bne _0801B204 + ldr r0, _0801B244 @ =gPlayerState + strb r1, [r0, #5] +_0801B204: + movs r0, #3 + strb r0, [r4, #0xc] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #0x3c + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r2] + movs r0, #0xf + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x18] + subs r0, #0x13 + ands r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_0805EC60 + adds r0, r4, #0 + bl sub_08078954 + adds r0, r4, #0 + movs r1, #0x20 + movs r2, #0 + movs r3, #0 + bl CreateObjectWithParent + adds r0, r4, #0 + bl sub_0801B418 + b _0801B24E + .align 2, 0 +_0801B244: .4byte gPlayerState +_0801B248: + adds r0, r4, #0 + bl sub_0801B3A4 +_0801B24E: + pop {r4, pc} + .syntax divided diff --git a/asm/non_matching/playerItemBomb/sub_0801B250.inc b/asm/non_matching/playerItemBomb/sub_0801B250.inc new file mode 100644 index 00000000..09cae23b --- /dev/null +++ b/asm/non_matching/playerItemBomb/sub_0801B250.inc @@ -0,0 +1,67 @@ + .syntax unified + push {lr} + adds r2, r0, #0 + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + movs r0, #1 + strb r0, [r2, #0xc] + adds r3, r2, #0 + adds r3, #0x29 + ldrb r1, [r3] + subs r0, #0x3a + ands r0, r1 + movs r1, #0x18 + orrs r0, r1 + strb r0, [r3] + ldrb r1, [r2, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #0x10] + ldrb r1, [r2, #0xa] + adds r0, r1, #0 + cmp r0, #0xff + bne _0801B28A + movs r0, #0x3c + b _0801B29C +_0801B28A: + cmp r0, #0xfe + bne _0801B29A + movs r0, #0xf + strb r0, [r2, #0xe] + movs r0, #0xff + orrs r0, r1 + strb r0, [r2, #0xa] + b _0801B29E +_0801B29A: + movs r0, #0x96 +_0801B29C: + strb r0, [r2, #0xe] +_0801B29E: + ldr r0, _0801B2BC @ =gUnk_080B77F4 + str r0, [r2, #0x48] + movs r0, #0 + strb r0, [r2, #0x16] + adds r0, r2, #0 + adds r0, #0x68 + ldrb r0, [r0] + cmp r0, #7 + bne _0801B2C0 + adds r0, r2, #0 + movs r1, #5 + bl InitializeAnimation + b _0801B2C8 + .align 2, 0 +_0801B2BC: .4byte gUnk_080B77F4 +_0801B2C0: + adds r0, r2, #0 + movs r1, #0x15 + bl InitializeAnimation +_0801B2C8: + pop {pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/playerItemBomb/sub_0801B2CC.inc b/asm/non_matching/playerItemBomb/sub_0801B2CC.inc new file mode 100644 index 00000000..a538e0b3 --- /dev/null +++ b/asm/non_matching/playerItemBomb/sub_0801B2CC.inc @@ -0,0 +1,42 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0800442E + cmp r0, #0 + bne _0801B2DE + adds r0, r4, #0 + bl sub_08078930 +_0801B2DE: + movs r0, #8 + bl IsItemEquipped + cmp r0, #1 + beq _0801B2F6 + cmp r0, #1 + blo _0801B2F2 + cmp r0, #2 + beq _0801B2FA + b _0801B2FC +_0801B2F2: + movs r5, #1 + b _0801B2FC +_0801B2F6: + movs r5, #2 + b _0801B2FC +_0801B2FA: + movs r5, #0 +_0801B2FC: + ldr r0, _0801B314 @ =gPlayerState + adds r0, #0x92 + ldrh r0, [r0] + ands r5, r0 + cmp r5, #0 + beq _0801B310 + movs r0, #0 + strb r0, [r4, #0xe] + movs r0, #1 + strb r0, [r4, #0xf] +_0801B310: + pop {r4, r5, pc} + .align 2, 0 +_0801B314: .4byte gPlayerState + .syntax divided diff --git a/asm/non_matching/playerItemBomb/sub_0801B3A4.inc b/asm/non_matching/playerItemBomb/sub_0801B3A4.inc new file mode 100644 index 00000000..21a6c44c --- /dev/null +++ b/asm/non_matching/playerItemBomb/sub_0801B3A4.inc @@ -0,0 +1,65 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + movs r5, #8 + cmp r0, #0x28 + bhi _0801B3F4 + movs r5, #4 + ldr r1, [r4, #0x68] + movs r0, #0x80 + lsls r0, r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0801B3C4 + adds r0, r1, #0 + subs r0, #0x10 + b _0801B3C8 +_0801B3C4: + adds r0, r1, #0 + adds r0, #0x10 +_0801B3C8: + str r0, [r4, #0x68] + ldr r1, [r4, #0x68] + movs r2, #0xf0 + adds r0, r1, #0 + ands r0, r2 + subs r0, #1 + cmp r0, #0x7f + bls _0801B3E0 + movs r0, #0x80 + lsls r0, r0, #8 + eors r1, r0 + str r1, [r4, #0x68] +_0801B3E0: + ldr r0, [r4, #0x68] + ands r0, r2 + movs r2, #0x98 + lsls r2, r2, #1 + subs r2, r2, r0 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0805EC9C +_0801B3F4: + ldrb r0, [r4, #0xf] + ands r0, r5 + cmp r0, #0 + bne _0801B408 + ldrb r1, [r4, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x1a] + b _0801B416 +_0801B408: + ldrb r0, [r4, #0x1a] + lsrs r2, r0, #4 + movs r1, #0x10 + rsbs r1, r1, #0 + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x1a] +_0801B416: + pop {r4, r5, pc} + .syntax divided diff --git a/asm/non_matching/playerItemBow/sub_08018FE4.inc b/asm/non_matching/playerItemBow/sub_08018FE4.inc new file mode 100644 index 00000000..60f549af --- /dev/null +++ b/asm/non_matching/playerItemBow/sub_08018FE4.inc @@ -0,0 +1,207 @@ + .syntax unified + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r3, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r5, [r4, #0xa] + cmp r5, #0 + bne _08018FF6 + b _080190FC +_08018FF6: + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r3 + strb r0, [r4, #0x18] + ldrb r0, [r4, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + movs r0, #0x6a + str r0, [r4, #0x74] + ldrb r0, [r4, #0xb] + adds r1, r4, #0 + adds r1, #0x40 + strb r0, [r1] + movs r0, #0xa6 + strh r0, [r4, #0x12] + ldrb r0, [r1] + adds r6, r1, #0 + cmp r0, #0xe + bne _08019026 + movs r0, #0x80 + lsls r0, r0, #3 + b _0801902A +_08019026: + movs r0, #0xc0 + lsls r0, r0, #2 +_0801902A: + strh r0, [r4, #0x24] + ldrb r0, [r4, #0x14] + lsls r0, r0, #2 + strb r0, [r4, #0x15] + ldr r2, _0801905C @ =gPlayerEntity + adds r0, r2, #0 + adds r0, #0x3c + ldrb r0, [r0] + adds r0, #1 + adds r1, r4, #0 + adds r1, #0x3c + strb r0, [r1] + adds r0, r2, #0 + adds r0, #0x3b + ldrb r0, [r0] + subs r1, #1 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x38 + ldrb r0, [r0] + adds r5, r2, #0 + cmp r0, #2 + bne _08019060 + movs r0, #1 + b _08019062 + .align 2, 0 +_0801905C: .4byte gPlayerEntity +_08019060: + movs r0, #0 +_08019062: + strb r0, [r4, #0xb] + ldrb r1, [r5, #0x1b] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r4, #0x1b] + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x14] + lsrs r0, r0, #1 + lsls r3, r0, #1 + adds r3, r3, r0 + lsls r3, r3, #2 + ldr r0, _080190F8 @ =gUnk_080B3E40 + adds r3, r3, r0 + movs r0, #0 + ldrsb r0, [r3, r0] + ldrh r1, [r5, #0x2e] + adds r0, r0, r1 + strh r0, [r4, #0x2e] + movs r0, #1 + ldrsb r0, [r3, r0] + ldrh r5, [r5, #0x32] + adds r0, r0, r5 + strh r0, [r4, #0x32] + ldrb r1, [r3, #2] + movs r0, #1 + ands r1, r0 + lsls r1, r1, #6 + ldrb r2, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r1, [r3, #3] + lsls r1, r1, #7 + movs r2, #0x7f + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r0, [r3, #6] + adds r5, r4, #0 + adds r5, #0x58 + strb r0, [r5] + movs r0, #4 + ldrsb r0, [r3, r0] + str r0, [r4, #0x6c] + movs r0, #5 + ldrsb r0, [r3, r0] + str r0, [r4, #0x70] + ldr r0, [r3, #8] + str r0, [r4, #0x48] + adds r0, r4, #0 + bl sub_0801766C + ldrb r0, [r6] + cmp r0, #0xe + bne _080190E8 + ldrb r0, [r5] + adds r0, #6 + strb r0, [r5] + adds r1, r4, #0 + adds r1, #0x60 + movs r0, #0 + strh r0, [r1] +_080190E8: + ldrb r1, [r5] + adds r0, r4, #0 + bl InitializeAnimation + movs r0, #0xfc + bl SoundReq + b _08019178 + .align 2, 0 +_080190F8: .4byte gUnk_080B3E40 +_080190FC: + ldrb r1, [r4, #0x11] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r4, #0x11] + movs r0, #0xff + strb r0, [r4, #0x1e] + ldr r2, _08019168 @ =gUnk_080B3E40 + ldrb r1, [r4, #0x14] + lsrs r1, r1, #1 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #2] + ands r1, r3 + lsls r1, r1, #6 + ldrb r2, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + ldr r0, _0801916C @ =gPlayerState + str r4, [r0, #0x2c] + adds r0, r4, #0 + movs r1, #1 + movs r2, #3 + bl sub_080AE008 + adds r0, r4, #0 + bl sub_08079BD8 + adds r0, r4, #0 + adds r0, #0x68 + ldrb r0, [r0] + cmp r0, #0xa + bne _08019170 + movs r0, #0x3c + str r0, [r4, #0x78] + ldrb r1, [r4, #0xa] + movs r0, #0x43 + movs r2, #1 + bl CreateObject + adds r1, r0, #0 + cmp r1, #0 + beq _08019172 + adds r0, r4, #0 + bl CopyPosition + b _08019172 + .align 2, 0 +_08019168: .4byte gUnk_080B3E40 +_0801916C: .4byte gPlayerState +_08019170: + str r5, [r4, #0x78] +_08019172: + adds r0, r4, #0 + bl sub_0801917C +_08019178: + pop {r4, r5, r6, pc} + .align 2, 0 + .syntax divided diff --git a/asm/playerItem/playerItemBow.s b/asm/non_matching/playerItemBow/sub_0801917C.inc similarity index 53% rename from asm/playerItem/playerItemBow.s rename to asm/non_matching/playerItemBow/sub_0801917C.inc index d3df3eb3..da662d59 100644 --- a/asm/playerItem/playerItemBow.s +++ b/asm/non_matching/playerItemBow/sub_0801917C.inc @@ -1,220 +1,4 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - .syntax unified - - .text - - thumb_func_start sub_08018FE4 -sub_08018FE4: @ 0x08018FE4 - push {r4, r5, r6, lr} - adds r4, r0, #0 - movs r3, #1 - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r5, [r4, #0xa] - cmp r5, #0 - bne _08018FF6 - b _080190FC -_08018FF6: - ldrb r1, [r4, #0x18] - subs r0, #5 - ands r0, r1 - orrs r0, r3 - strb r0, [r4, #0x18] - ldrb r0, [r4, #0x10] - movs r1, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - movs r0, #0x6a - str r0, [r4, #0x74] - ldrb r0, [r4, #0xb] - adds r1, r4, #0 - adds r1, #0x40 - strb r0, [r1] - movs r0, #0xa6 - strh r0, [r4, #0x12] - ldrb r0, [r1] - adds r6, r1, #0 - cmp r0, #0xe - bne _08019026 - movs r0, #0x80 - lsls r0, r0, #3 - b _0801902A -_08019026: - movs r0, #0xc0 - lsls r0, r0, #2 -_0801902A: - strh r0, [r4, #0x24] - ldrb r0, [r4, #0x14] - lsls r0, r0, #2 - strb r0, [r4, #0x15] - ldr r2, _0801905C @ =gPlayerEntity - adds r0, r2, #0 - adds r0, #0x3c - ldrb r0, [r0] - adds r0, #1 - adds r1, r4, #0 - adds r1, #0x3c - strb r0, [r1] - adds r0, r2, #0 - adds r0, #0x3b - ldrb r0, [r0] - subs r1, #1 - strb r0, [r1] - adds r0, r4, #0 - adds r0, #0x38 - ldrb r0, [r0] - adds r5, r2, #0 - cmp r0, #2 - bne _08019060 - movs r0, #1 - b _08019062 - .align 2, 0 -_0801905C: .4byte gPlayerEntity -_08019060: - movs r0, #0 -_08019062: - strb r0, [r4, #0xb] - ldrb r1, [r5, #0x1b] - lsrs r1, r1, #6 - lsls r1, r1, #6 - ldrb r2, [r4, #0x1b] - movs r0, #0x3f - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x1b] - ldrb r0, [r4, #0x14] - lsrs r0, r0, #1 - lsls r3, r0, #1 - adds r3, r3, r0 - lsls r3, r3, #2 - ldr r0, _080190F8 @ =gUnk_080B3E40 - adds r3, r3, r0 - movs r0, #0 - ldrsb r0, [r3, r0] - ldrh r1, [r5, #0x2e] - adds r0, r0, r1 - strh r0, [r4, #0x2e] - movs r0, #1 - ldrsb r0, [r3, r0] - ldrh r5, [r5, #0x32] - adds r0, r0, r5 - strh r0, [r4, #0x32] - ldrb r1, [r3, #2] - movs r0, #1 - ands r1, r0 - lsls r1, r1, #6 - ldrb r2, [r4, #0x18] - movs r0, #0x41 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x18] - ldrb r1, [r3, #3] - lsls r1, r1, #7 - movs r2, #0x7f - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x18] - ldrb r0, [r3, #6] - adds r5, r4, #0 - adds r5, #0x58 - strb r0, [r5] - movs r0, #4 - ldrsb r0, [r3, r0] - str r0, [r4, #0x6c] - movs r0, #5 - ldrsb r0, [r3, r0] - str r0, [r4, #0x70] - ldr r0, [r3, #8] - str r0, [r4, #0x48] - adds r0, r4, #0 - bl sub_0801766C - ldrb r0, [r6] - cmp r0, #0xe - bne _080190E8 - ldrb r0, [r5] - adds r0, #6 - strb r0, [r5] - adds r1, r4, #0 - adds r1, #0x60 - movs r0, #0 - strh r0, [r1] -_080190E8: - ldrb r1, [r5] - adds r0, r4, #0 - bl InitializeAnimation - movs r0, #0xfc - bl SoundReq - b _08019178 - .align 2, 0 -_080190F8: .4byte gUnk_080B3E40 -_080190FC: - ldrb r1, [r4, #0x11] - movs r0, #0x10 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #6 - orrs r0, r1 - strb r0, [r4, #0x11] - movs r0, #0xff - strb r0, [r4, #0x1e] - ldr r2, _08019168 @ =gUnk_080B3E40 - ldrb r1, [r4, #0x14] - lsrs r1, r1, #1 - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #2 - adds r0, r0, r2 - ldrb r1, [r0, #2] - ands r1, r3 - lsls r1, r1, #6 - ldrb r2, [r4, #0x18] - movs r0, #0x41 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x18] - ldr r0, _0801916C @ =gPlayerState - str r4, [r0, #0x2c] - adds r0, r4, #0 - movs r1, #1 - movs r2, #3 - bl sub_080AE008 - adds r0, r4, #0 - bl sub_08079BD8 - adds r0, r4, #0 - adds r0, #0x68 - ldrb r0, [r0] - cmp r0, #0xa - bne _08019170 - movs r0, #0x3c - str r0, [r4, #0x78] - ldrb r1, [r4, #0xa] - movs r0, #0x43 - movs r2, #1 - bl CreateObject - adds r1, r0, #0 - cmp r1, #0 - beq _08019172 - adds r0, r4, #0 - bl CopyPosition - b _08019172 - .align 2, 0 -_08019168: .4byte gUnk_080B3E40 -_0801916C: .4byte gPlayerState -_08019170: - str r5, [r4, #0x78] -_08019172: - adds r0, r4, #0 - bl sub_0801917C -_08019178: - pop {r4, r5, r6, pc} - .align 2, 0 - thumb_func_start sub_0801917C -sub_0801917C: @ 0x0801917C push {r4, r5, r6, r7, lr} adds r4, r0, #0 ldrb r2, [r4, #0xa] @@ -544,65 +328,4 @@ _08019402: _08019404: .4byte gSave _08019408: .4byte gPlayerEntity _0801940C: .4byte gPlayerState - - thumb_func_start sub_08019410 -sub_08019410: @ 0x08019410 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - cmp r0, #0xe - bhi _08019428 - adds r0, r4, #0 - adds r0, #0x58 - ldrb r1, [r0] - adds r0, r4, #0 - bl InitializeAnimation - b _0801942E -_08019428: - adds r0, r4, #0 - bl GetNextFrame -_0801942E: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0xff - bne _08019440 - bl DeleteThisEntity -_08019440: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08019444 -sub_08019444: @ 0x08019444 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_0806F69C - movs r1, #0x80 - lsls r1, r1, #6 - adds r0, r4, #0 - bl sub_08003FC4 - cmp r0, #0 - bne _08019464 - bl DeleteThisEntity -_08019464: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08019468 -sub_08019468: @ 0x08019468 - push {lr} - adds r1, r0, #0 - adds r0, #0x40 - ldrb r0, [r0] - cmp r0, #0xe - bne _0801947E - adds r0, r1, #0 - movs r1, #0x50 - movs r2, #0 - bl CreateFx -_0801947E: - pop {pc} + .syntax divided diff --git a/asm/non_matching/playerItemC/sub_0801B8FC.inc b/asm/non_matching/playerItemC/sub_0801B8FC.inc new file mode 100644 index 00000000..6da851da --- /dev/null +++ b/asm/non_matching/playerItemC/sub_0801B8FC.inc @@ -0,0 +1,32 @@ + .syntax unified + push {lr} + ldr r1, _0801B90C @ =gPlayerState + ldr r2, [r1, #0x2c] + cmp r2, r0 + beq _0801B910 + bl DeleteThisEntity + b _0801B934 + .align 2, 0 +_0801B90C: .4byte gPlayerState +_0801B910: + ldrb r0, [r1, #0x1e] + cmp r0, #0 + bne _0801B91E + str r0, [r1, #0x2c] + bl DeleteThisEntity + b _0801B934 +_0801B91E: + ldrb r1, [r2, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #0x10] + adds r1, r2, #0 + adds r1, #0x3c + movs r0, #0x21 + strb r0, [r1] + adds r0, r2, #0 + bl sub_0801B938 +_0801B934: + pop {pc} + .align 2, 0 + .syntax divided diff --git a/asm/non_matching/playerItemC/sub_0801B938.inc b/asm/non_matching/playerItemC/sub_0801B938.inc new file mode 100644 index 00000000..5c7e9e8c --- /dev/null +++ b/asm/non_matching/playerItemC/sub_0801B938.inc @@ -0,0 +1,89 @@ + .syntax unified + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x14] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0801B960 + ldr r3, _0801B95C @ =gPlayerEntity + ldrb r1, [r3, #0x18] + lsls r1, r1, #0x19 + lsrs r1, r1, #0x1f + movs r0, #1 + eors r1, r0 + lsls r1, r1, #6 + ldrb r2, [r4, #0x18] + subs r0, #0x42 + b _0801B96E + .align 2, 0 +_0801B95C: .4byte gPlayerEntity +_0801B960: + ldr r3, _0801B998 @ =gPlayerEntity + ldrb r0, [r3, #0x18] + movs r1, #0x40 + ands r1, r0 + ldrb r2, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 +_0801B96E: + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r3, #0 + adds r0, #0x58 + ldrb r0, [r0] + adds r0, #0x68 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bhi _0801B99C + ldrb r0, [r3, #0x1e] + adds r0, #0x2e + strb r0, [r4, #0x1e] + ldrb r1, [r4, #0x1e] + ldrh r2, [r4, #0x12] + adds r0, r4, #0 + bl sub_080042D0 + b _0801B9A0 + .align 2, 0 +_0801B998: .4byte gPlayerEntity +_0801B99C: + movs r0, #0xff + strb r0, [r4, #0x1e] +_0801B9A0: + ldrb r3, [r4, #0x14] + lsrs r3, r3, #1 + lsls r0, r3, #3 + ldr r1, _0801B9E0 @ =gUnk_080B7850 + adds r0, r0, r1 + str r0, [r4, #0x48] + lsls r3, r3, #1 + ldr r0, _0801B9E4 @ =gUnk_080B7848 + adds r3, r3, r0 + ldr r0, _0801B9E8 @ =gPlayerState + 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 r2, #0 + ldrsb r2, [r3, r2] + ldrb r3, [r3, #1] + lsls r3, r3, #0x18 + asrs r3, r3, #0x18 + adds r0, r4, #0 + bl sub_08008782 + ldr r1, _0801B9EC @ =gPlayerEntity + adds r0, r4, #0 + bl sub_08078E84 + pop {r4, pc} + .align 2, 0 +_0801B9E0: .4byte gUnk_080B7850 +_0801B9E4: .4byte gUnk_080B7848 +_0801B9E8: .4byte gPlayerState +_0801B9EC: .4byte gPlayerEntity + .syntax divided diff --git a/asm/playerItemCellOverwriteSet.s b/asm/non_matching/playerItemCellOverwriteSet/PlayerItemCellOverwriteSet.inc similarity index 97% rename from asm/playerItemCellOverwriteSet.s rename to asm/non_matching/playerItemCellOverwriteSet/PlayerItemCellOverwriteSet.inc index af3d753d..99ffd681 100644 --- a/asm/playerItemCellOverwriteSet.s +++ b/asm/non_matching/playerItemCellOverwriteSet/PlayerItemCellOverwriteSet.inc @@ -1,13 +1,4 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - .syntax unified - - .text - - thumb_func_start PlayerItemCellOverwriteSet -PlayerItemCellOverwriteSet: @ 0x0801BEF8 push {r4, r5, r6, r7, lr} mov r7, sl mov r6, sb @@ -370,3 +361,4 @@ _0801C1BE: _0801C1C8: .4byte gUnk_080B7B6C _0801C1CC: .4byte gRoomControls _0801C1D0: .4byte gInput + .syntax divided diff --git a/asm/non_matching/playerItemGustJar/sub_080ADAD4.inc b/asm/non_matching/playerItemGustJar/sub_080ADAD4.inc new file mode 100644 index 00000000..1d75c8d3 --- /dev/null +++ b/asm/non_matching/playerItemGustJar/sub_080ADAD4.inc @@ -0,0 +1,165 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + ldr r3, _080ADAF4 @ =gPlayerState + ldrb r1, [r3, #0x1c] + adds r0, r1, #0 + cmp r0, #3 + bne _080ADAFC + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldr r0, _080ADAF8 @ =gPlayerEntity + ldrb r1, [r0, #0x14] + lsrs r1, r1, #1 + adds r1, #8 + b _080ADB0C + .align 2, 0 +_080ADAF4: .4byte gPlayerState +_080ADAF8: .4byte gPlayerEntity +_080ADAFC: + cmp r0, #6 + bne _080ADB18 + movs r0, #4 + strb r0, [r4, #0xc] + ldr r0, _080ADB14 @ =gPlayerEntity + ldrb r1, [r0, #0x14] + lsrs r1, r1, #1 + adds r1, #4 +_080ADB0C: + adds r0, r4, #0 + bl InitAnimationForceUpdate + b _080ADC08 + .align 2, 0 +_080ADB14: .4byte gPlayerEntity +_080ADB18: + movs r5, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _080ADB58 + cmp r0, #1 + bne _080ADB36 + adds r0, r4, #0 + movs r1, #4 + bl sub_080ADCA0 + movs r0, #0x18 + strb r0, [r4, #0xe] + movs r0, #2 + strb r0, [r4, #0xa] + b _080ADBE0 +_080ADB36: + adds r0, r4, #0 + movs r1, #1 + bl sub_080ADCDC + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _080ADBE0 + adds r0, r4, #0 + movs r1, #0 + bl sub_080ADCA0 + strb r5, [r4, #0xa] + b _080ADBE0 +_080ADB58: + movs r0, #0xf + ands r0, r1 + cmp r0, #7 + bne _080ADB68 + adds r1, r4, #0 + adds r1, #0x59 + movs r0, #0x7f + strb r0, [r1] +_080ADB68: + ldrb r0, [r3, #0x1d] + cmp r0, #2 + beq _080ADB94 + cmp r0, #2 + bgt _080ADB78 + cmp r0, #1 + beq _080ADBB0 + b _080ADBCA +_080ADB78: + cmp r0, #3 + bne _080ADBCA + adds r0, r4, #0 + movs r1, #3 + bl sub_080ADCDC + ldrb r1, [r4, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x1a] + movs r2, #3 + movs r5, #0xe9 + b _080ADBCA +_080ADB94: + adds r0, r4, #0 + movs r1, #2 + bl sub_080ADCDC + ldrb r0, [r4, #0x1a] + movs r1, #0x10 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #4 + orrs r1, r0 + strb r1, [r4, #0x1a] + movs r2, #2 + movs r5, #0xe8 + b _080ADBCA +_080ADBB0: + adds r0, r4, #0 + movs r1, #1 + bl sub_080ADCDC + ldrb r0, [r4, #0x1a] + movs r1, #0x10 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #1 + orrs r1, r0 + strb r1, [r4, #0x1a] + movs r2, #1 + movs r5, #0xe7 +_080ADBCA: + ldr r0, _080ADC0C @ =gPlayerState + ldrb r1, [r0, #0x1c] + movs r0, #0xf + ands r0, r1 + cmp r0, #7 + bne _080ADBDA + movs r5, #0xee + movs r2, #1 +_080ADBDA: + ldrb r0, [r4, #0xf] + subs r0, r0, r2 + strb r0, [r4, #0xf] +_080ADBE0: + movs r0, #0xf + ldrsb r0, [r4, r0] + cmp r0, #0 + bge _080ADBF6 + cmp r5, #0 + beq _080ADBF2 + adds r0, r5, #0 + bl SoundReq +_080ADBF2: + movs r0, #0xf + strb r0, [r4, #0xf] +_080ADBF6: + ldr r2, _080ADC10 @ =gPlayerEntity + adds r0, r2, #0 + adds r0, #0x5a + ldrb r0, [r0] + movs r1, #0x7f + ands r1, r0 + ldrb r0, [r2, #0x1e] + subs r0, r0, r1 + strb r0, [r4, #0x1e] +_080ADC08: + pop {r4, r5, pc} + .align 2, 0 +_080ADC0C: .4byte gPlayerState +_080ADC10: .4byte gPlayerEntity + .syntax divided diff --git a/asm/non_matching/playerItemGustJar/sub_080ADCA0.inc b/asm/non_matching/playerItemGustJar/sub_080ADCA0.inc new file mode 100644 index 00000000..390fb9fa --- /dev/null +++ b/asm/non_matching/playerItemGustJar/sub_080ADCA0.inc @@ -0,0 +1,30 @@ + .syntax unified + push {r4, lr} + ldr r3, _080ADCD4 @ =gUnk_08132714 + ldr r2, _080ADCD8 @ =gPlayerEntity + ldrb r2, [r2, #0x14] + lsrs r2, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r2, [r1] + str r2, [r0, #0x5c] + ldrb r1, [r2] + adds r3, r0, #0 + adds r3, #0x58 + strb r1, [r3] + adds r1, r2, #1 + str r1, [r0, #0x5c] + ldrb r2, [r2, #1] + movs r4, #0x59 + strb r2, [r4, r0] + adds r1, #1 + str r1, [r0, #0x5c] + ldrb r1, [r3] + ldrh r2, [r0, #0x12] + bl sub_080042D0 + pop {r4, pc} + .align 2, 0 +_080ADCD4: .4byte gUnk_08132714 +_080ADCD8: .4byte gPlayerEntity + .syntax divided diff --git a/asm/non_matching/playerItemGustJar/sub_080ADCDC.inc b/asm/non_matching/playerItemGustJar/sub_080ADCDC.inc new file mode 100644 index 00000000..7b88fa26 --- /dev/null +++ b/asm/non_matching/playerItemGustJar/sub_080ADCDC.inc @@ -0,0 +1,45 @@ + .syntax unified + push {r4, r5, lr} + adds r3, r0, #0 + movs r0, #0x59 + adds r0, r0, r3 + mov ip, r0 + ldrb r0, [r0] + subs r0, r0, r1 + mov r1, ip + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bgt _080ADD2E + ldr r1, [r3, #0x5c] + ldrb r0, [r1] + cmp r0, #0xff + bne _080ADD06 + adds r0, r1, #1 + str r0, [r3, #0x5c] + ldrb r1, [r1, #1] + subs r0, r0, r1 + str r0, [r3, #0x5c] +_080ADD06: + ldr r1, [r3, #0x5c] + ldrb r0, [r1] + adds r2, r3, #0 + adds r2, #0x58 + strb r0, [r2] + adds r1, #1 + str r1, [r3, #0x5c] + ldrb r0, [r1] + mov r4, ip + ldrb r4, [r4] + adds r0, r0, r4 + mov r5, ip + strb r0, [r5] + adds r1, #1 + str r1, [r3, #0x5c] + ldrb r1, [r2] + ldrh r2, [r3, #0x12] + adds r0, r3, #0 + bl sub_080042D0 +_080ADD2E: + pop {r4, r5, pc} + .syntax divided diff --git a/asm/non_matching/playerItemLantern/sub_08054A60.inc b/asm/non_matching/playerItemLantern/sub_08054A60.inc new file mode 100644 index 00000000..f7d97f58 --- /dev/null +++ b/asm/non_matching/playerItemLantern/sub_08054A60.inc @@ -0,0 +1,50 @@ + .syntax unified + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #0xa0 + orrs r0, r1 + strb r0, [r4, #0x10] + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #4 + strb r0, [r4, #0xe] + movs r0, #0xff + strb r0, [r4, #0x1e] + ldrb r1, [r4, #0x11] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r4, #0x11] + adds r1, r4, #0 + adds r1, #0x3c + movs r0, #7 + strb r0, [r1] + subs r1, #1 + movs r0, #0x80 + strb r0, [r1] + ldr r0, _08054AC4 @ =gPlayerEntity + ldrb r1, [r0, #0x14] + movs r0, #0xe + ands r0, r1 + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl AllocMutableHitbox + cmp r0, #0 + bne _08054AAC + bl DeleteThisEntity +_08054AAC: + adds r0, r4, #0 + bl sub_0801766C + adds r0, r4, #0 + movs r1, #1 + movs r2, #3 + bl sub_080AE008 + adds r0, r4, #0 + bl sub_08054AC8 + pop {r4, pc} + .align 2, 0 +_08054AC4: .4byte gPlayerEntity + .syntax divided diff --git a/asm/playerItem/playerItemLantern.s b/asm/non_matching/playerItemLantern/sub_08054AC8.inc similarity index 67% rename from asm/playerItem/playerItemLantern.s rename to asm/non_matching/playerItemLantern/sub_08054AC8.inc index 3c52a459..c8da9d4f 100644 --- a/asm/playerItem/playerItemLantern.s +++ b/asm/non_matching/playerItemLantern/sub_08054AC8.inc @@ -1,83 +1,4 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - .syntax unified - - .text - - - thumb_func_start PlayerItemLantern -PlayerItemLantern: @ 0x08054A40 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _08054A5C @ =gUnk_080FEEA8 - ldrb r0, [r4, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - adds r4, #0x41 - movs r0, #0 - strb r0, [r4] - pop {r4, pc} - .align 2, 0 -_08054A5C: .4byte gUnk_080FEEA8 - - thumb_func_start sub_08054A60 -sub_08054A60: @ 0x08054A60 - push {r4, lr} - adds r4, r0, #0 - ldrb r1, [r4, #0x10] - movs r0, #0xa0 - orrs r0, r1 - strb r0, [r4, #0x10] - movs r0, #1 - strb r0, [r4, #0xc] - movs r0, #4 - strb r0, [r4, #0xe] - movs r0, #0xff - strb r0, [r4, #0x1e] - ldrb r1, [r4, #0x11] - movs r0, #0x10 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #6 - orrs r0, r1 - strb r0, [r4, #0x11] - adds r1, r4, #0 - adds r1, #0x3c - movs r0, #7 - strb r0, [r1] - subs r1, #1 - movs r0, #0x80 - strb r0, [r1] - ldr r0, _08054AC4 @ =gPlayerEntity - ldrb r1, [r0, #0x14] - movs r0, #0xe - ands r0, r1 - strb r0, [r4, #0x14] - adds r0, r4, #0 - bl AllocMutableHitbox - cmp r0, #0 - bne _08054AAC - bl DeleteThisEntity -_08054AAC: - adds r0, r4, #0 - bl sub_0801766C - adds r0, r4, #0 - movs r1, #1 - movs r2, #3 - bl sub_080AE008 - adds r0, r4, #0 - bl sub_08054AC8 - pop {r4, pc} - .align 2, 0 -_08054AC4: .4byte gPlayerEntity - - thumb_func_start sub_08054AC8 -sub_08054AC8: @ 0x08054AC8 push {r4, r5, r6, r7, lr} adds r4, r0, #0 ldr r5, _08054B14 @ =gPlayerEntity @@ -234,3 +155,4 @@ _08054BFC: _08054C00: pop {r4, r5, r6, r7, pc} .align 2, 0 + .syntax divided diff --git a/asm/playerItem/playerItemPacciCane.s b/asm/non_matching/playerItemPacciCane/sub_080704FC.inc similarity index 66% rename from asm/playerItem/playerItemPacciCane.s rename to asm/non_matching/playerItemPacciCane/sub_080704FC.inc index 9b75d7dd..943cfa68 100644 --- a/asm/playerItem/playerItemPacciCane.s +++ b/asm/non_matching/playerItemPacciCane/sub_080704FC.inc @@ -1,46 +1,4 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - .syntax unified - - .text - - thumb_func_start PlayerItemPacciCane -PlayerItemPacciCane: @ 0x080704BC - push {lr} - ldr r2, _080704D0 @ =gUnk_0811B9D8 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080704D0: .4byte gUnk_0811B9D8 - - thumb_func_start sub_080704D4 -sub_080704D4: @ 0x080704D4 - push {r4, lr} - adds r4, r0, #0 - movs r0, #1 - strb r0, [r4, #0xc] - movs r0, #0xff - strb r0, [r4, #0x1e] - adds r0, r4, #0 - movs r1, #1 - movs r2, #3 - bl sub_080AE008 - movs r0, #0x87 - lsls r0, r0, #1 - bl SoundReq - adds r0, r4, #0 - bl sub_080704FC - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080704FC -sub_080704FC: @ 0x080704FC push {r4, r5, lr} adds r4, r0, #0 ldr r5, _0807052C @ =gPlayerEntity @@ -123,3 +81,4 @@ _0807058A: strb r0, [r4, #0x18] pop {r4, r5, pc} .align 2, 0 + .syntax divided diff --git a/asm/non_matching/playerItemShield/sub_080A2D98.inc b/asm/non_matching/playerItemShield/sub_080A2D98.inc new file mode 100644 index 00000000..3cb4b80f --- /dev/null +++ b/asm/non_matching/playerItemShield/sub_080A2D98.inc @@ -0,0 +1,52 @@ + .syntax unified + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080A2DD0 @ =gPlayerState + str r4, [r0, #0x2c] + movs r2, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x11] + subs r0, #0x11 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r4, #0x11] + movs r0, #0xff + strb r0, [r4, #0x1e] + adds r0, r4, #0 + adds r0, #0x68 + ldrb r0, [r0] + cmp r0, #0xe + bne _080A2DD8 + movs r0, #0x27 + str r0, [r4, #0x70] + ldr r1, _080A2DD4 @ =gUnk_081271DC + ldrb r0, [r1, #1] + str r0, [r4, #0x78] + str r2, [r4, #0x74] + str r1, [r4, #0x7c] + b _080A2DDA + .align 2, 0 +_080A2DD0: .4byte gPlayerState +_080A2DD4: .4byte gUnk_081271DC +_080A2DD8: + str r2, [r4, #0x70] +_080A2DDA: + ldr r0, _080A2DFC @ =gPlayerEntity + ldrb r1, [r0, #0x14] + movs r0, #0xe + ands r0, r1 + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_08079BD8 + adds r0, r4, #0 + movs r1, #1 + movs r2, #3 + bl sub_080AE008 + adds r0, r4, #0 + bl sub_080A2E00 + pop {r4, pc} + .align 2, 0 +_080A2DFC: .4byte gPlayerEntity + .syntax divided diff --git a/asm/playerItem/playerItemShield.s b/asm/non_matching/playerItemShield/sub_080A2E00.inc similarity index 78% rename from asm/playerItem/playerItemShield.s rename to asm/non_matching/playerItemShield/sub_080A2E00.inc index d5ebac22..c585fc59 100644 --- a/asm/playerItem/playerItemShield.s +++ b/asm/non_matching/playerItemShield/sub_080A2E00.inc @@ -1,86 +1,4 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - .syntax unified - - .text - - thumb_func_start PlayerItemShield -PlayerItemShield: @ 0x080A2D74 - push {lr} - adds r2, r0, #0 - ldr r0, [r2, #0x6c] - cmp r0, #0 - beq _080A2D82 - subs r0, #1 - str r0, [r2, #0x6c] -_080A2D82: - ldr r0, _080A2D94 @ =gUnk_081271D4 - ldrb r1, [r2, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r2, #0 - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080A2D94: .4byte gUnk_081271D4 - - thumb_func_start sub_080A2D98 -sub_080A2D98: @ 0x080A2D98 - push {r4, lr} - adds r4, r0, #0 - ldr r0, _080A2DD0 @ =gPlayerState - str r4, [r0, #0x2c] - movs r2, #0 - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x11] - subs r0, #0x11 - ands r0, r1 - movs r1, #6 - orrs r0, r1 - strb r0, [r4, #0x11] - movs r0, #0xff - strb r0, [r4, #0x1e] - adds r0, r4, #0 - adds r0, #0x68 - ldrb r0, [r0] - cmp r0, #0xe - bne _080A2DD8 - movs r0, #0x27 - str r0, [r4, #0x70] - ldr r1, _080A2DD4 @ =gUnk_081271DC - ldrb r0, [r1, #1] - str r0, [r4, #0x78] - str r2, [r4, #0x74] - str r1, [r4, #0x7c] - b _080A2DDA - .align 2, 0 -_080A2DD0: .4byte gPlayerState -_080A2DD4: .4byte gUnk_081271DC -_080A2DD8: - str r2, [r4, #0x70] -_080A2DDA: - ldr r0, _080A2DFC @ =gPlayerEntity - ldrb r1, [r0, #0x14] - movs r0, #0xe - ands r0, r1 - strb r0, [r4, #0x14] - adds r0, r4, #0 - bl sub_08079BD8 - adds r0, r4, #0 - movs r1, #1 - movs r2, #3 - bl sub_080AE008 - adds r0, r4, #0 - bl sub_080A2E00 - pop {r4, pc} - .align 2, 0 -_080A2DFC: .4byte gPlayerEntity - - thumb_func_start sub_080A2E00 -sub_080A2E00: @ 0x080A2E00 push {r4, r5, r6, r7, lr} adds r4, r0, #0 ldr r0, _080A2E90 @ =gPlayerEntity @@ -394,3 +312,4 @@ _080A3064: _080A3068: pop {r4, r5, r6, r7, pc} .align 2, 0 + .syntax divided diff --git a/asm/non_matching/playerItemSword/sub_080A758C.inc b/asm/non_matching/playerItemSword/sub_080A758C.inc new file mode 100644 index 00000000..7b932858 --- /dev/null +++ b/asm/non_matching/playerItemSword/sub_080A758C.inc @@ -0,0 +1,156 @@ + .syntax unified + 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} + .syntax divided diff --git a/asm/non_matching/playerItemSword/sub_080A76CC.inc b/asm/non_matching/playerItemSword/sub_080A76CC.inc new file mode 100644 index 00000000..db126d8b --- /dev/null +++ b/asm/non_matching/playerItemSword/sub_080A76CC.inc @@ -0,0 +1,180 @@ + .syntax unified + 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 + .syntax divided diff --git a/asm/non_matching/playerItemSword/sub_080A7824.inc b/asm/non_matching/playerItemSword/sub_080A7824.inc new file mode 100644 index 00000000..de271c21 --- /dev/null +++ b/asm/non_matching/playerItemSword/sub_080A7824.inc @@ -0,0 +1,76 @@ + .syntax unified + 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 + .syntax divided diff --git a/asm/non_matching/playerItemSword/sub_080A78B8.inc b/asm/non_matching/playerItemSword/sub_080A78B8.inc new file mode 100644 index 00000000..c4d52960 --- /dev/null +++ b/asm/non_matching/playerItemSword/sub_080A78B8.inc @@ -0,0 +1,220 @@ + .syntax unified + 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 + .syntax divided diff --git a/asm/non_matching/playerItemSword/sub_080A7A84.inc b/asm/non_matching/playerItemSword/sub_080A7A84.inc new file mode 100644 index 00000000..b9593ac8 --- /dev/null +++ b/asm/non_matching/playerItemSword/sub_080A7A84.inc @@ -0,0 +1,133 @@ + .syntax unified + 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 + .syntax divided diff --git a/asm/non_matching/playerItemSword/sub_080A7B98.inc b/asm/non_matching/playerItemSword/sub_080A7B98.inc new file mode 100644 index 00000000..051160de --- /dev/null +++ b/asm/non_matching/playerItemSword/sub_080A7B98.inc @@ -0,0 +1,55 @@ + .syntax unified + 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 + .syntax divided diff --git a/asm/non_matching/playerItemSwordSpin/sub_0801BA18.inc b/asm/non_matching/playerItemSwordSpin/sub_0801BA18.inc new file mode 100644 index 00000000..204a7c68 --- /dev/null +++ b/asm/non_matching/playerItemSwordSpin/sub_0801BA18.inc @@ -0,0 +1,122 @@ + .syntax unified + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x68 + ldrb r0, [r1] + cmp r0, #0x36 + bne _0801BA2A + movs r0, #0x36 + b _0801BA34 +_0801BA2A: + ldrb r1, [r1] + ldr r0, _0801BA4C @ =gSave + adds r0, r0, r1 + adds r0, #0x9a + ldrb r0, [r0] +_0801BA34: + adds r1, r4, #0 + adds r1, #0x6f + strb r0, [r1] + subs r0, #0x20 + cmp r0, #0x11 + bhi _0801BB02 + lsls r0, r0, #2 + ldr r1, _0801BA50 @ =_0801BA54 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801BA4C: .4byte gSave +_0801BA50: .4byte _0801BA54 +_0801BA54: @ jump table + .4byte _0801BA9C @ case 0 + .4byte _0801BAF8 @ case 1 + .4byte _0801BAF8 @ case 2 + .4byte _0801BAF8 @ case 3 + .4byte _0801BAF8 @ case 4 + .4byte _0801BAF8 @ case 5 + .4byte _0801BB02 @ case 6 + .4byte _0801BB02 @ case 7 + .4byte _0801BB02 @ case 8 + .4byte _0801BAF8 @ case 9 + .4byte _0801BAF8 @ case 10 + .4byte _0801BAF8 @ case 11 + .4byte _0801BAF8 @ case 12 + .4byte _0801BAF8 @ case 13 + .4byte _0801BAF8 @ case 14 + .4byte _0801BB02 @ case 15 + .4byte _0801BB02 @ case 16 + .4byte _0801BB02 @ case 17 +_0801BA9C: + adds r0, r4, #0 + bl AllocMutableHitbox + cmp r0, #0 + beq _0801BB26 + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + ldr r1, _0801BAF4 @ =gPlayerEntity + adds r0, r1, #0 + adds r0, #0x3c + ldrb r0, [r0] + adds r0, #1 + movs r2, #0x20 + adds r3, r4, #0 + adds r3, #0x3c + orrs r0, r2 + strb r0, [r3] + adds r1, #0x3b + ldrb r0, [r1] + adds r1, r4, #0 + adds r1, #0x3b + strb r0, [r1] + adds r1, #5 + movs r0, #0x1f + strb r0, [r1] + movs r0, #1 + strb r0, [r4, #0xa] + movs r0, #0x20 + strb r0, [r4, #0xb] + movs r0, #0x52 + strb r0, [r4, #0xe] + movs r0, #0x1b + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_0801766C + movs r0, #0xee + lsls r0, r0, #1 + bl SoundReq + b _0801BB0A + .align 2, 0 +_0801BAF4: .4byte gPlayerEntity +_0801BAF8: + movs r0, #0xd5 + strb r0, [r4, #0xe] + movs r0, #0x3c + strb r0, [r4, #0xf] + b _0801BB0A +_0801BB02: + movs r1, #0 + movs r0, #0x37 + strb r0, [r4, #0xe] + strb r1, [r4, #0xf] +_0801BB0A: + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0xff + strb r0, [r4, #0x1e] + ldr r0, _0801BB28 @ =gPlayerState + str r4, [r0, #0x2c] + adds r0, r4, #0 + movs r1, #1 + movs r2, #3 + bl sub_080AE008 + adds r0, r4, #0 + bl sub_0801BB2C +_0801BB26: + pop {r4, pc} + .align 2, 0 +_0801BB28: .4byte gPlayerState + .syntax divided diff --git a/asm/non_matching/playerItemSwordSpin/sub_0801BB2C.inc b/asm/non_matching/playerItemSwordSpin/sub_0801BB2C.inc new file mode 100644 index 00000000..b00782d1 --- /dev/null +++ b/asm/non_matching/playerItemSwordSpin/sub_0801BB2C.inc @@ -0,0 +1,99 @@ + .syntax unified + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _0801BB88 @ =gPlayerState + ldr r0, [r0, #0x2c] + cmp r0, r5 + beq _0801BB68 + ldrb r0, [r5, #0xa] + cmp r0, #1 + bne _0801BB64 + ldrb r0, [r5, #0xb] + cmp r0, #0x20 + beq _0801BB64 + adds r0, r5, #0 + adds r0, #0x68 + ldrb r4, [r0] + subs r4, #0x1c + ldrb r0, [r5, #0xb] + adds r1, r4, #0 + bl SetBottleContents + ldrb r0, [r5, #0xb] + adds r1, r4, #0 + movs r2, #5 +.ifdef JP + bl CreateItemEntity +.else +.ifdef EU + bl CreateItemEntity +.else + bl sub_080A7C18 +.endif +.endif + ldr r0, _0801BB8C @ =0x00000109 + bl SoundReq +_0801BB64: + bl DeleteThisEntity +_0801BB68: + ldr r1, _0801BB90 @ =gPlayerEntity + adds r0, r5, #0 + bl sub_0801BDE8 + adds r0, r5, #0 + adds r0, #0x6f + ldrb r0, [r0] + subs r0, #0x20 + cmp r0, #0x11 + bhi _0801BC04 + lsls r0, r0, #2 + ldr r1, _0801BB94 @ =_0801BB98 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801BB88: .4byte gPlayerState +_0801BB8C: .4byte 0x00000109 +_0801BB90: .4byte gPlayerEntity +_0801BB94: .4byte _0801BB98 +_0801BB98: @ jump table + .4byte _0801BBE0 @ case 0 + .4byte _0801BBE8 @ case 1 + .4byte _0801BBE8 @ case 2 + .4byte _0801BBE8 @ case 3 + .4byte _0801BBE8 @ case 4 + .4byte _0801BBE8 @ case 5 + .4byte _0801BC04 @ case 6 + .4byte _0801BC04 @ case 7 + .4byte _0801BC04 @ case 8 + .4byte _0801BBE8 @ case 9 + .4byte _0801BBE8 @ case 10 + .4byte _0801BBE8 @ case 11 + .4byte _0801BBE8 @ case 12 + .4byte _0801BBE8 @ case 13 + .4byte _0801BBE8 @ case 14 + .4byte _0801BC04 @ case 15 + .4byte _0801BC04 @ case 16 + .4byte _0801BC04 @ case 17 +_0801BBE0: + adds r0, r5, #0 + bl sub_0801BC0C + b _0801BC0A +_0801BBE8: + ldr r0, _0801BC00 @ =gPlayerEntity + adds r1, r0, #0 + adds r1, #0x5a + ldrb r0, [r1] + cmp r0, #1 + bne _0801BC0A + movs r0, #0 + strb r0, [r1] + adds r0, r5, #0 + bl sub_0801BC14 + b _0801BC0A + .align 2, 0 +_0801BC00: .4byte gPlayerEntity +_0801BC04: + adds r0, r5, #0 + bl sub_0801BCB4 +_0801BC0A: + pop {r4, r5, pc} + .syntax divided diff --git a/asm/non_matching/playerItemSwordSpin/sub_0801BC14.inc b/asm/non_matching/playerItemSwordSpin/sub_0801BC14.inc new file mode 100644 index 00000000..0ff3194a --- /dev/null +++ b/asm/non_matching/playerItemSwordSpin/sub_0801BC14.inc @@ -0,0 +1,71 @@ + .syntax unified + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r6, #0x20 + movs r5, #0 + adds r0, #0x6f + ldrb r0, [r0] + subs r0, #0x21 + cmp r0, #0xd + bhi _0801BC98 + lsls r0, r0, #2 + ldr r1, _0801BC30 @ =_0801BC34 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801BC30: .4byte _0801BC34 +_0801BC34: @ jump table + .4byte _0801BC76 @ case 0 + .4byte _0801BC6C @ case 1 + .4byte _0801BC6E @ case 2 + .4byte _0801BC76 @ case 3 + .4byte _0801BC72 @ case 4 + .4byte _0801BC98 @ case 5 + .4byte _0801BC98 @ case 6 + .4byte _0801BC98 @ case 7 + .4byte _0801BC7A @ case 8 + .4byte _0801BC7A @ case 9 + .4byte _0801BC7A @ case 10 + .4byte _0801BC7A @ case 11 + .4byte _0801BC7A @ case 12 + .4byte _0801BC7A @ case 13 +_0801BC6C: + movs r6, #0x23 +_0801BC6E: + movs r5, #0x28 + b _0801BC98 +_0801BC72: + movs r5, #0x50 + b _0801BC98 +_0801BC76: + movs r5, #0xa0 + b _0801BC98 +_0801BC7A: + ldr r1, _0801BCB0 @ =gSave + adds r0, r4, #0 + adds r0, #0x6f + ldrb r0, [r0] + adds r2, r1, #0 + adds r2, #0xb3 + strb r0, [r2] + adds r1, #0xc6 + movs r0, #0xe1 + lsls r0, r0, #2 + strh r0, [r1] + movs r0, #0x88 + lsls r0, r0, #2 + bl SoundReq +_0801BC98: + adds r0, r5, #0 + bl ModHealth + adds r0, r4, #0 + adds r0, #0x68 + ldrb r1, [r0] + subs r1, #0x1c + adds r0, r6, #0 + bl SetBottleContents + pop {r4, r5, r6, pc} + .align 2, 0 +_0801BCB0: .4byte gSave + .syntax divided diff --git a/asm/non_matching/playerItemSwordSpin/sub_0801BCB4.inc b/asm/non_matching/playerItemSwordSpin/sub_0801BCB4.inc new file mode 100644 index 00000000..a3dd82c2 --- /dev/null +++ b/asm/non_matching/playerItemSwordSpin/sub_0801BCB4.inc @@ -0,0 +1,143 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _0801BCEC @ =gPlayerEntity + adds r0, #0x5a + ldrb r0, [r0] + cmp r0, #1 + bne _0801BD6C + adds r0, r4, #0 + adds r0, #0x6f + ldrb r1, [r0] + adds r5, r0, #0 + cmp r1, #0x36 + beq _0801BCDA + subs r0, #7 + ldrb r1, [r0] + subs r1, #0x1c + movs r0, #0x20 + bl SetBottleContents +_0801BCDA: + ldrb r0, [r5] + subs r0, #0x26 + cmp r0, #0xb + bhi _0801BD6C + lsls r0, r0, #2 + ldr r1, _0801BCF0 @ =_0801BCF4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801BCEC: .4byte gPlayerEntity +_0801BCF0: .4byte _0801BCF4 +_0801BCF4: @ jump table + .4byte _0801BD24 @ case 0 + .4byte _0801BD32 @ case 1 + .4byte _0801BD40 @ case 2 + .4byte _0801BD6C @ case 3 + .4byte _0801BD6C @ case 4 + .4byte _0801BD6C @ case 5 + .4byte _0801BD6C @ case 6 + .4byte _0801BD6C @ case 7 + .4byte _0801BD6C @ case 8 + .4byte _0801BD54 @ case 9 + .4byte _0801BD54 @ case 10 + .4byte _0801BD54 @ case 11 +_0801BD24: + adds r0, r4, #0 + movs r1, #0x68 + movs r2, #0 + movs r3, #0 + bl CreateObjectWithParent + b _0801BD6C +_0801BD32: + adds r0, r4, #0 + movs r1, #0x68 + movs r2, #1 + movs r3, #1 + bl CreateObjectWithParent + b _0801BD6C +_0801BD40: + adds r0, r4, #0 + movs r1, #0x68 + movs r2, #2 + movs r3, #2 + bl CreateObjectWithParent + movs r0, #0x20 + bl ModHealth + b _0801BD6C +_0801BD54: + ldr r1, _0801BD88 @ =gSave + ldrb r0, [r5] + adds r2, r1, #0 + adds r2, #0xb2 + strb r0, [r2] + adds r1, #0xc4 + movs r0, #0xe1 + lsls r0, r0, #4 + strh r0, [r1] + ldr r0, _0801BD8C @ =0x000001CF + bl SoundReq +_0801BD6C: + ldr r0, _0801BD90 @ =gPlayerEntity + adds r0, #0x5a + ldrb r0, [r0] + cmp r0, #2 + bne _0801BDAE + adds r0, r4, #0 + adds r0, #0x6f + ldrb r0, [r0] + cmp r0, #0x26 + beq _0801BD94 + cmp r0, #0x27 + beq _0801BDA2 + b _0801BDAE + .align 2, 0 +_0801BD88: .4byte gSave +_0801BD8C: .4byte 0x000001CF +_0801BD90: .4byte gPlayerEntity +_0801BD94: + adds r0, r4, #0 + movs r1, #0x68 + movs r2, #0 + movs r3, #0 + bl CreateObjectWithParent + b _0801BDAE +_0801BDA2: + adds r0, r4, #0 + movs r1, #0x68 + movs r2, #1 + movs r3, #1 + bl CreateObjectWithParent +_0801BDAE: + ldr r0, _0801BDC8 @ =gPlayerEntity + adds r0, #0x5a + ldrb r0, [r0] + cmp r0, #3 + bne _0801BDE6 + adds r0, r4, #0 + adds r0, #0x6f + ldrb r0, [r0] + cmp r0, #0x26 + beq _0801BDCC + cmp r0, #0x27 + beq _0801BDDA + b _0801BDE6 + .align 2, 0 +_0801BDC8: .4byte gPlayerEntity +_0801BDCC: + adds r0, r4, #0 + movs r1, #0x68 + movs r2, #0 + movs r3, #0 + bl CreateObjectWithParent + b _0801BDE6 +_0801BDDA: + adds r0, r4, #0 + movs r1, #0x68 + movs r2, #1 + movs r3, #0 + bl CreateObjectWithParent +_0801BDE6: + pop {r4, r5, pc} + .syntax divided diff --git a/asm/non_matching/playerItemSwordSpin/sub_0801BDE8.inc b/asm/non_matching/playerItemSwordSpin/sub_0801BDE8.inc new file mode 100644 index 00000000..cc9ff3f7 --- /dev/null +++ b/asm/non_matching/playerItemSwordSpin/sub_0801BDE8.inc @@ -0,0 +1,40 @@ + .syntax unified + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r5, #0x1e] + ldrb r1, [r4, #0xe] + subs r0, r0, r1 + ldrb r1, [r4, #0xf] + adds r0, r0, r1 + ldrb r1, [r4, #0x1e] + cmp r0, r1 + beq _0801BE0A + strb r0, [r4, #0x1e] + ldrb r1, [r4, #0x1e] + ldrh r2, [r4, #0x12] + adds r0, r4, #0 + bl sub_080042D0 +_0801BE0A: + ldrb r1, [r5, #0x18] + lsls r1, r1, #0x19 + lsrs r1, r1, #0x1f + ldrb r0, [r5, #0x14] + lsrs r0, r0, #1 + movs r2, #1 + ands r0, r2 + eors r1, r0 + lsls r1, r1, #6 + ldrb r2, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + ldr r1, _0801BE34 @ =gPlayerEntity + adds r0, r4, #0 + bl sub_08078E84 + pop {r4, r5, pc} + .align 2, 0 +_0801BE34: .4byte gPlayerEntity + .syntax divided diff --git a/asm/non_matching/playerItemSwordSpin/sub_0801BE38.inc b/asm/non_matching/playerItemSwordSpin/sub_0801BE38.inc new file mode 100644 index 00000000..44dc7a60 --- /dev/null +++ b/asm/non_matching/playerItemSwordSpin/sub_0801BE38.inc @@ -0,0 +1,103 @@ + .syntax unified + push {r4, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x41 + ldrb r0, [r2] + movs r1, #0x7f + ands r1, r0 + cmp r1, #0x49 + beq _0801BE54 + cmp r1, #0x4d + beq _0801BE60 + movs r0, #0 + strb r0, [r2] + b _0801BE6A +_0801BE54: + movs r0, #0x28 + strb r0, [r4, #0xb] + adds r0, r4, #0 + bl sub_0801B9F0 + b _0801BE6A +_0801BE60: + movs r0, #0x27 + strb r0, [r4, #0xb] + adds r0, r4, #0 + bl sub_0801B9F0 +_0801BE6A: + ldrb r0, [r4, #0x1e] + subs r0, #0x1b + lsls r0, r0, #2 + ldr r1, _0801BE84 @ =gUnk_080B788A + adds r2, r0, r1 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x19 + cmp r0, #0 + bge _0801BE88 + ldr r1, [r4, #0x48] + ldrb r0, [r2] + rsbs r0, r0, #0 + b _0801BE8C + .align 2, 0 +_0801BE84: .4byte gUnk_080B788A +_0801BE88: + ldr r1, [r4, #0x48] + ldrb r0, [r2] +_0801BE8C: + strb r0, [r1] + ldr r1, [r4, #0x48] + ldrb r0, [r2, #1] + strb r0, [r1, #1] + ldr r1, [r4, #0x48] + ldrb r0, [r2, #2] + strb r0, [r1, #6] + ldr r1, [r4, #0x48] + ldrb r0, [r2, #3] + strb r0, [r1, #7] + ldr r0, _0801BEF0 @ =gPlayerEntity + adds r0, #0x5a + ldrb r0, [r0] + movs r1, #0xf + ands r1, r0 + cmp r1, #0 + beq _0801BEDE + ldrb r0, [r4, #0xb] + cmp r0, #0x20 + bne _0801BEE4 + subs r0, r1, #1 + lsls r0, r0, #1 + ldr r1, _0801BEF4 @ =gUnk_080B7878 + adds r2, r0, r1 + movs r1, #0 + ldrsb r1, [r2, r1] + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x19 + cmp r0, #0 + bge _0801BECA + rsbs r1, r1, #0 +_0801BECA: + ldrb r2, [r2, #1] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + adds r0, r4, #0 + bl sub_080002B4 + cmp r0, #0x10 + bne _0801BEDE + movs r0, #0x26 + strb r0, [r4, #0xb] +_0801BEDE: + ldrb r0, [r4, #0xb] + cmp r0, #0x20 + beq _0801BEEE +_0801BEE4: + ldr r2, _0801BEF0 @ =gPlayerEntity + ldrb r1, [r2, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #0x10] +_0801BEEE: + pop {r4, pc} + .align 2, 0 +_0801BEF0: .4byte gPlayerEntity +_0801BEF4: .4byte gUnk_080B7878 + .syntax divided diff --git a/asm/non_matching/sittingPerson/sub_08063850.inc b/asm/non_matching/sittingPerson/sub_08063850.inc deleted file mode 100644 index 7ecf28e3..00000000 --- a/asm/non_matching/sittingPerson/sub_08063850.inc +++ /dev/null @@ -1,19 +0,0 @@ - .syntax unified - push {lr} - ldrb r3, [r0, #0x18] - lsls r3, r3, #0x19 - lsrs r3, r3, #0x1f - rsbs r2, r3, #0 - orrs r2, r3 - asrs r2, r2, #0x1f - movs r3, #4 - ands r2, r3 - ldr r1, [r1, #4] - adds r1, r1, r2 - ldrb r2, [r0, #0x14] - lsrs r2, r2, #1 - adds r1, r1, r2 - bl InitializeAnimation - pop {pc} - .align 2, 0 - .syntax divided diff --git a/asm/ocarina.s b/asm/ocarina.s deleted file mode 100644 index a928aa71..00000000 --- a/asm/ocarina.s +++ /dev/null @@ -1,150 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start ItemOcarina -ItemOcarina: @ 0x08076B78 - push {lr} - - ldr r3, _08076B94 @ =gOcarinaStates - - ldrb r2, [r0, #4] - lsls r2, r2, #2 - adds r2, r2, r3 - ldr r2, [r2] - bl _call_via_r2 - - ldr r1, _08076B98 @ =gPlayerEntity - adds r1, #0x7a - ldrh r0, [r1] - adds r0, #1 - strh r0, [r1] - - pop {pc} - .align 2, 0 -_08076B94: .4byte gOcarinaStates -_08076B98: .4byte gPlayerEntity - - thumb_func_start OcarinaUse -OcarinaUse: @ 0x08076B9C - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r1, #0 - ldr r3, _08076BB4 @ =gPlayerState - ldrb r0, [r3, #0xc] - cmp r0, #0x18 - bne _08076BB8 - adds r0, r4, #0 - bl sub_08077E78 - b _08076C1C - .align 2, 0 -_08076BB4: .4byte gPlayerState -_08076BB8: - ldrb r1, [r4, #9] - movs r0, #0xf - orrs r0, r1 - strb r0, [r4, #9] - ldr r1, _08076C20 @ =gPlayerEntity - movs r0, #4 - strb r0, [r1, #0x14] - ldrb r2, [r1, #0x18] - subs r0, #0x45 - ands r0, r2 - strb r0, [r1, #0x18] - - ldrb r2, [r1, #0x10] - movs r0, #0x7f - ands r0, r2 - strb r0, [r1, #0x10] - - adds r1, #0x7a - movs r0, #2 - strh r0, [r1] - - ldr r0, [r3, #0x30] - movs r1, #0x80 - lsls r1, r1, #0x15 - orrs r0, r1 - str r0, [r3, #0x30] - - adds r1, r3, #0 - adds r1, #0x27 - movs r0, #0xff - strb r0, [r1] - - ldr r1, _08076C24 @ =gUnk_02034490 - movs r0, #1 - strb r0, [r1] - - 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] - - bl sub_08078F60 - - adds r0, r4, #0 - adds r1, r5, #0 - bl sub_08077D38 - - ldr r0, _08076C28 @ =0x00000216 - bl SoundReq - - bl sub_0805E544 - -_08076C1C: - pop {r4, r5, pc} - .align 2, 0 -_08076C20: .4byte gPlayerEntity -_08076C24: .4byte gUnk_02034490 -_08076C28: .4byte 0x00000216 - - thumb_func_start OcarinaUpdate -OcarinaUpdate: @ 0x08076C2C - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r6, r1, #0 - bl UpdateItemAnim - ldrb r1, [r5, #0xe] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08076C6E - ldr r0, _08076C70 @ =gPlayerEntity - ldrb r2, [r0, #0x10] - movs r4, #0 - movs r1, #0x80 - orrs r1, r2 - strb r1, [r0, #0x10] - ldr r2, _08076C74 @ =gPlayerState - ldr r1, [r2, #0x30] - ldr r3, _08076C78 @ =0xEFFFFFFF - ands r1, r3 - str r1, [r2, #0x30] - adds r2, #0x27 - strb r4, [r2] - ldr r1, _08076C7C @ =gUnk_02034490 - strb r4, [r1] - bl CreateBird - bl UnfreezeTime - adds r0, r5, #0 - adds r1, r6, #0 - bl sub_08077E78 -_08076C6E: - pop {r4, r5, r6, pc} - .align 2, 0 -_08076C70: .4byte gPlayerEntity -_08076C74: .4byte gPlayerState -_08076C78: .4byte 0xEFFFFFFF -_08076C7C: .4byte gUnk_02034490 diff --git a/asm/playerItem/playerItem10.s b/asm/playerItem/playerItem10.s deleted file mode 100644 index e317526b..00000000 --- a/asm/playerItem/playerItem10.s +++ /dev/null @@ -1,450 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start PlayerItem10 -PlayerItem10: @ 0x080ACBCC - push {r4, lr} - adds r4, r0, #0 - ldr r0, _080ACBFC @ =gPlayerState - ldrb r1, [r0, #0x1c] - movs r0, #0x7f - ands r0, r1 - cmp r0, #1 - beq _080ACBE0 - bl DeleteThisEntity -_080ACBE0: - ldr r1, _080ACC00 @ =gUnk_0812AA80 - ldrb r0, [r4, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - adds r1, r4, #0 - adds r1, #0x3d - movs r0, #0 - strb r0, [r1] - pop {r4, pc} - .align 2, 0 -_080ACBFC: .4byte gPlayerState -_080ACC00: .4byte gUnk_0812AA80 - - thumb_func_start sub_080ACC04 -sub_080ACC04: @ 0x080ACC04 - push {r4, lr} - adds r4, r0, #0 - movs r0, #1 - strb r0, [r4, #0xc] - ldr r0, _080ACC54 @ =gPlayerEntity - adds r0, #0x3b - ldrb r0, [r0] - adds r1, r4, #0 - adds r1, #0x3b - strb r0, [r1] - ldrb r0, [r4, #0x14] - lsls r0, r0, #2 - strb r0, [r4, #0x15] - movs r0, #0x80 - lsls r0, r0, #2 - strh r0, [r4, #0x24] - ldrb r1, [r4, #0x10] - movs r0, #0xa0 - orrs r0, r1 - strb r0, [r4, #0x10] - adds r1, r4, #0 - adds r1, #0x3c - movs r0, #2 - strb r0, [r1] - ldr r1, _080ACC58 @ =gUnk_0812AAD8 - ldrb r0, [r4, #0xa] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r0, [r0] - str r0, [r4, #0x48] - movs r0, #0x10 - str r0, [r4, #0x70] - adds r0, r4, #0 - bl sub_080ACDB0 - adds r0, r4, #0 - bl sub_0801766C - pop {r4, pc} - .align 2, 0 -_080ACC54: .4byte gPlayerEntity -_080ACC58: .4byte gUnk_0812AAD8 - - thumb_func_start sub_080ACC5C -sub_080ACC5C: @ 0x080ACC5C - push {r4, lr} - adds r4, r0, #0 - bl sub_080ACDB0 - cmp r0, #0 - bne _080ACC74 - adds r0, r4, #0 - bl sub_080ACC78 - adds r0, r4, #0 - bl sub_080ACECC -_080ACC74: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080ACC78 -sub_080ACC78: @ 0x080ACC78 - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - ldrb r2, [r4, #0xa] - ldr r0, _080ACD20 @ =gScreenTransition - ldr r0, [r0] - adds r0, r2, r0 - movs r1, #1 - ands r0, r1 - cmp r0, #0 - beq _080ACCF8 - ldr r0, _080ACD24 @ =gUnk_0812AAAC - lsls r1, r2, #2 - adds r1, r1, r0 - ldr r7, [r1] - ldr r0, [r4, #0x74] - adds r0, r7, r0 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _080ACCA4 - str r0, [r4, #0x74] -_080ACCA4: - ldr r0, [r4, #0x74] - adds r0, r7, r0 - movs r2, #0 - ldrsb r2, [r0, r2] - movs r3, #1 - ldrsb r3, [r0, r3] - adds r0, r4, #0 - movs r1, #0xe - bl sub_08008782 - adds r5, r0, #0 - cmp r5, #0 - beq _080ACCF2 - ldrb r1, [r5, #5] - ldrb r2, [r5, #2] - movs r0, #0x11 - bl CreateObject - adds r6, r0, #0 - cmp r6, #0 - beq _080ACCF2 - ldrb r0, [r5, #3] - strb r0, [r6, #0xe] - ldr r0, [r4, #0x74] - adds r0, r7, r0 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldrh r1, [r4, #0x2e] - adds r0, r0, r1 - strh r0, [r6, #0x2e] - ldr r0, [r4, #0x74] - adds r0, r0, r7 - ldrb r0, [r0, #1] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldrh r1, [r4, #0x32] - adds r0, r0, r1 - strh r0, [r6, #0x32] -_080ACCF2: - ldr r0, [r4, #0x74] - adds r0, #2 - str r0, [r4, #0x74] -_080ACCF8: - ldr r2, [r4, #0x54] - cmp r2, #0 - bne _080ACD08 - ldr r0, [r4, #0x70] - cmp r0, #2 - bls _080ACD08 - movs r0, #1 - str r0, [r4, #0x70] -_080ACD08: - ldr r0, [r4, #0x70] - subs r0, #1 - str r0, [r4, #0x70] - movs r1, #1 - rsbs r1, r1, #0 - cmp r0, r1 - bne _080ACDAE - cmp r2, #0 - bne _080ACD28 - movs r0, #2 - b _080ACD32 - .align 2, 0 -_080ACD20: .4byte gScreenTransition -_080ACD24: .4byte gUnk_0812AAAC -_080ACD28: - ldr r0, _080ACD74 @ =gUnk_0812AABC - ldrb r1, [r4, #0xa] - adds r1, r1, r0 - movs r0, #0 - ldrsb r0, [r1, r0] -_080ACD32: - str r0, [r4, #0x70] - movs r0, #0x17 - movs r1, #0 - movs r2, #0 - bl CreateObject - adds r6, r0, #0 - cmp r6, #0 - beq _080ACDAE - bl Random - adds r2, r0, #0 - movs r0, #0xf - ands r2, r0 - ldr r3, [r4, #0x48] - ldrb r1, [r3, #6] - cmp r1, r2 - bge _080ACD58 - adds r2, r1, #0 -_080ACD58: - movs r0, #1 - ands r0, r2 - cmp r0, #0 - beq _080ACD62 - rsbs r2, r2, #0 -_080ACD62: - ldrb r0, [r4, #0x14] - lsrs r0, r0, #1 - cmp r0, #1 - beq _080ACD9C - cmp r0, #1 - bgt _080ACD78 - cmp r0, #0 - beq _080ACD82 - b _080ACDAE - .align 2, 0 -_080ACD74: .4byte gUnk_0812AABC -_080ACD78: - cmp r0, #2 - beq _080ACD8C - cmp r0, #3 - beq _080ACDA2 - b _080ACDAE -_080ACD82: - ldrb r0, [r3, #7] - ldrh r1, [r4, #0x32] - subs r1, r1, r0 - strh r1, [r6, #0x32] - b _080ACD94 -_080ACD8C: - ldrh r0, [r4, #0x32] - ldrb r3, [r3, #7] - adds r0, r0, r3 - strh r0, [r6, #0x32] -_080ACD94: - ldrh r0, [r4, #0x2e] - adds r0, r0, r2 - strh r0, [r6, #0x2e] - b _080ACDAE -_080ACD9C: - ldrh r0, [r4, #0x2e] - adds r0, r0, r1 - b _080ACDA6 -_080ACDA2: - ldrh r0, [r4, #0x2e] - subs r0, r0, r1 -_080ACDA6: - strh r0, [r6, #0x2e] - ldrh r0, [r4, #0x32] - adds r0, r0, r2 - strh r0, [r6, #0x32] -_080ACDAE: - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_080ACDB0 -sub_080ACDB0: @ 0x080ACDB0 - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xa] - cmp r0, #0 - bne _080ACDE8 - ldr r2, _080ACDE0 @ =gPlayerEntity - ldr r1, _080ACDE4 @ =gUnk_08126EE4 - ldrb r0, [r4, #0x14] - adds r0, r0, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldrh r3, [r2, #0x2e] - adds r0, r0, r3 - strh r0, [r4, #0x2e] - ldrb r0, [r4, #0x14] - adds r0, #1 - adds r0, r0, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldrh r2, [r2, #0x32] - adds r0, r0, r2 - b _080ACEB4 - .align 2, 0 -_080ACDE0: .4byte gPlayerEntity -_080ACDE4: .4byte gUnk_08126EE4 -_080ACDE8: - ldrb r2, [r4, #0x14] - movs r0, #2 - ands r0, r2 - cmp r0, #0 - beq _080ACE48 - ldr r0, [r4, #0x50] - ldrh r1, [r0, #0x32] - subs r1, #3 - strh r1, [r4, #0x32] - movs r1, #4 - ands r1, r2 - adds r3, r0, #0 - cmp r1, #0 - beq _080ACE20 - movs r0, #0x2e - ldrsh r7, [r3, r0] - movs r0, #0x2e - ldrsh r6, [r4, r0] - ldr r1, _080ACE1C @ =gUnk_0812AAE8 - ldrb r2, [r4, #0xa] - adds r0, r2, r1 - ldrb r0, [r0] - rsbs r5, r0, #0 - adds r0, r1, #0 - b _080ACE30 - .align 2, 0 -_080ACE1C: .4byte gUnk_0812AAE8 -_080ACE20: - movs r0, #0x2e - ldrsh r6, [r3, r0] - movs r0, #0x2e - ldrsh r7, [r4, r0] - ldr r0, _080ACE44 @ =gUnk_0812AAE8 - ldrb r2, [r4, #0xa] - adds r1, r2, r0 - ldrb r5, [r1] -_080ACE30: - subs r1, r7, r6 - str r1, [r4, #0x78] - adds r0, r2, r0 - ldrb r0, [r0] - cmp r0, r1 - bhi _080ACE90 - ldrh r0, [r3, #0x2e] - adds r0, r0, r5 - strh r0, [r4, #0x2e] - b _080ACEB6 - .align 2, 0 -_080ACE44: .4byte gUnk_0812AAE8 -_080ACE48: - ldr r1, [r4, #0x50] - ldrh r0, [r1, #0x2e] - strh r0, [r4, #0x2e] - movs r0, #4 - ands r0, r2 - adds r3, r1, #0 - cmp r0, #0 - beq _080ACE70 - movs r0, #0x32 - ldrsh r6, [r3, r0] - movs r0, #0x32 - ldrsh r7, [r4, r0] - ldr r0, _080ACE6C @ =gUnk_0812AAE8 - ldrb r2, [r4, #0xa] - adds r1, r2, r0 - ldrb r5, [r1] - b _080ACE84 - .align 2, 0 -_080ACE6C: .4byte gUnk_0812AAE8 -_080ACE70: - movs r0, #0x32 - ldrsh r7, [r3, r0] - movs r0, #0x32 - ldrsh r6, [r4, r0] - ldr r1, _080ACEAC @ =gUnk_0812AAE8 - ldrb r2, [r4, #0xa] - adds r0, r2, r1 - ldrb r0, [r0] - rsbs r5, r0, #0 - adds r0, r1, #0 -_080ACE84: - subs r1, r7, r6 - str r1, [r4, #0x78] - adds r0, r2, r0 - ldrb r0, [r0] - cmp r0, r1 - bls _080ACEB0 -_080ACE90: - subs r0, r0, r1 - lsls r1, r0, #8 - strh r1, [r4, #0x24] - lsls r0, r0, #0x18 - asrs r0, r0, #0x10 - movs r1, #0x80 - lsls r1, r1, #2 - cmp r0, r1 - ble _080ACEA4 - strh r1, [r4, #0x24] -_080ACEA4: - adds r0, r4, #0 - bl sub_080AEFB4 - b _080ACEB6 - .align 2, 0 -_080ACEAC: .4byte gUnk_0812AAE8 -_080ACEB0: - ldrh r0, [r3, #0x32] - adds r0, r0, r5 -_080ACEB4: - strh r0, [r4, #0x32] -_080ACEB6: - ldr r0, _080ACEC8 @ =gPlayerEntity - adds r0, #0x38 - ldrb r1, [r0] - adds r0, r4, #0 - adds r0, #0x38 - strb r1, [r0] - movs r0, #0 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080ACEC8: .4byte gPlayerEntity - - thumb_func_start sub_080ACECC -sub_080ACECC: @ 0x080ACECC - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xa] - cmp r0, #2 - bhi _080ACF0C - ldr r0, [r4, #0x54] - cmp r0, #0 - bne _080ACF0C - ldr r2, [r4, #0x78] - cmp r2, #0 - blt _080ACF0C - ldr r0, _080ACF10 @ =gUnk_0812AAE8 - ldrb r1, [r4, #0xa] - adds r0, r1, r0 - ldrb r0, [r0] - cmp r0, r2 - bhi _080ACF0C - adds r1, #1 - movs r0, #0x10 - movs r2, #0 - movs r3, #0 - bl CreatePlayerItem - adds r1, r0, #0 - cmp r1, #0 - beq _080ACF0C - str r4, [r1, #0x50] - str r1, [r4, #0x54] - ldrh r0, [r4, #0x2e] - strh r0, [r1, #0x2e] - ldrh r0, [r4, #0x32] - strh r0, [r1, #0x32] -_080ACF0C: - pop {r4, pc} - .align 2, 0 -_080ACF10: .4byte gUnk_0812AAE8 diff --git a/asm/playerItem/playerItem12.s b/asm/playerItem/playerItem12.s deleted file mode 100644 index 4735efad..00000000 --- a/asm/playerItem/playerItem12.s +++ /dev/null @@ -1,495 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start PlayerItem12 -PlayerItem12: @ 0x080700E8 - push {lr} - ldr r2, _080700FC @ =gUnk_0811B98C - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080700FC: .4byte gUnk_0811B98C - - thumb_func_start sub_08070100 -sub_08070100: @ 0x08070100 - push {r4, r5, lr} - adds r5, r0, #0 - movs r2, #1 - movs r3, #1 - strb r3, [r5, #0xc] - ldrb r1, [r5, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - orrs r0, r2 - strb r0, [r5, #0x18] - ldrb r1, [r5, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r5, #0x10] - ldrb r0, [r5, #0x14] - lsls r0, r0, #2 - strb r0, [r5, #0x15] - movs r0, #0x80 - lsls r0, r0, #2 - strh r0, [r5, #0x24] - movs r0, #0x40 - str r0, [r5, #0x74] - movs r0, #0xf0 - lsls r0, r0, #1 - str r0, [r5, #0x78] - ldr r2, _0807017C @ =gPlayerEntity - ldr r1, _08070180 @ =gUnk_0811B9A0 - ldrb r0, [r5, #0x14] - adds r0, r0, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldrh r4, [r2, #0x2e] - adds r0, r0, r4 - strh r0, [r5, #0x2e] - ldrb r0, [r5, #0x14] - adds r0, #1 - adds r0, r0, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldrh r1, [r2, #0x32] - adds r0, r0, r1 - strh r0, [r5, #0x32] - adds r1, r5, #0 - adds r1, #0x3c - movs r0, #7 - strb r0, [r1] - subs r1, #1 - movs r0, #0x8a - strb r0, [r1] - ldr r0, _08070184 @ =gUnk_0811B9D0 - str r0, [r5, #0x48] - adds r0, r5, #0 - adds r0, #0x38 - ldrb r0, [r0] - cmp r0, #2 - bne _08070188 - strb r3, [r5, #0xa] - b _0807018C - .align 2, 0 -_0807017C: .4byte gPlayerEntity -_08070180: .4byte gUnk_0811B9A0 -_08070184: .4byte gUnk_0811B9D0 -_08070188: - movs r0, #0 - strb r0, [r5, #0xa] -_0807018C: - ldrb r1, [r2, #0x1b] - lsrs r1, r1, #6 - lsls r1, r1, #6 - ldrb r2, [r5, #0x1b] - movs r0, #0x3f - ands r0, r2 - orrs r0, r1 - strb r0, [r5, #0x1b] - ldrb r3, [r5, #0x14] - lsrs r3, r3, #1 - lsls r3, r3, #3 - ldr r0, _080701F0 @ =gUnk_0811B9A8 - adds r3, r3, r0 - ldrb r1, [r3] - movs r0, #1 - ands r1, r0 - lsls r1, r1, #6 - ldrb r2, [r5, #0x18] - movs r0, #0x41 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, #0x18] - ldrb r1, [r3, #1] - lsls r1, r1, #7 - movs r2, #0x7f - ands r0, r2 - orrs r0, r1 - strb r0, [r5, #0x18] - ldrb r0, [r3, #4] - adds r4, r5, #0 - adds r4, #0x58 - strb r0, [r4] - movs r0, #2 - ldrsb r0, [r3, r0] - str r0, [r5, #0x6c] - movs r0, #3 - ldrsb r0, [r3, r0] - str r0, [r5, #0x70] - adds r0, r5, #0 - bl sub_0801766C - ldrb r1, [r4] - adds r0, r5, #0 - bl InitializeAnimation - ldr r0, _080701F4 @ =0x000001DD - bl SoundReq - pop {r4, r5, pc} - .align 2, 0 -_080701F0: .4byte gUnk_0811B9A8 -_080701F4: .4byte 0x000001DD - - thumb_func_start sub_080701F8 -sub_080701F8: @ 0x080701F8 - push {r4, r5, r6, r7, lr} - adds r5, r0, #0 - ldr r0, _08070244 @ =gUnk_0811B9C8 - ldrb r1, [r5, #0x14] - adds r2, r1, r0 - movs r6, #0 - ldrsb r6, [r2, r6] - adds r1, #1 - adds r1, r1, r0 - movs r7, #0 - ldrsb r7, [r1, r7] - adds r0, r5, #0 - movs r1, #0xa - adds r2, r6, #0 - adds r3, r7, #0 - bl sub_08008782 - adds r4, r0, #0 - cmp r4, #0 - beq _08070248 - ldrb r1, [r4, #5] - ldrb r2, [r4, #2] - movs r0, #0x53 - bl CreateObject - adds r1, r0, #0 - cmp r1, #0 - beq _08070260 - ldrb r0, [r4, #3] - strb r0, [r1, #0xe] - ldrh r0, [r5, #0x2e] - adds r0, r0, r6 - strh r0, [r1, #0x2e] - ldrh r0, [r5, #0x32] - adds r0, r0, r7 - strh r0, [r1, #0x32] - b _08070260 - .align 2, 0 -_08070244: .4byte gUnk_0811B9C8 -_08070248: - ldr r0, [r5, #0x74] - subs r0, #1 - str r0, [r5, #0x74] - movs r1, #1 - rsbs r1, r1, #0 - cmp r0, r1 - beq _08070260 - ldr r0, [r5, #0x78] - subs r0, #1 - str r0, [r5, #0x78] - cmp r0, r1 - bne _08070268 -_08070260: - adds r0, r5, #0 - bl sub_08070458 - b _0807037A -_08070268: - adds r0, r5, #0 - bl GetNextFrame - adds r0, r5, #0 - bl sub_0806F69C - ldrb r0, [r5, #0xa] - cmp r0, #0 - bne _08070280 - adds r0, r5, #0 - bl sub_0800451C -_08070280: - movs r1, #0x2e - ldrsh r0, [r5, r1] - ldr r7, _08070354 @ =gRoomControls - ldrh r1, [r7, #6] - subs r0, r0, r1 - asrs r0, r0, #4 - movs r6, #0x3f - ands r0, r6 - movs r2, #0x32 - ldrsh r1, [r5, r2] - ldrh r2, [r7, #8] - subs r1, r1, r2 - asrs r1, r1, #4 - ands r1, r6 - lsls r1, r1, #6 - orrs r0, r1 - ldr r1, _08070358 @ =gPlayerEntity - adds r1, #0x38 - ldrb r1, [r1] - movs r2, #0x80 - bl sub_080002F0 - cmp r0, #0 - bne _0807036A - ldr r1, _0807035C @ =gUnk_08003E44 - movs r3, #0x2e - ldrsh r2, [r5, r3] - movs r0, #0x32 - ldrsh r3, [r5, r0] - adds r0, r5, #0 - bl sub_080040D8 - cmp r0, #0 - bne _08070364 - adds r0, r5, #0 - bl sub_080002B8 - cmp r0, #0x19 - bne _0807036A - movs r0, #4 - strb r0, [r5, #0xc] - ldrb r1, [r5, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r5, #0x10] - ldrh r2, [r5, #0x2e] - movs r1, #0x10 - rsbs r1, r1, #0 - adds r0, r1, #0 - ands r0, r2 - movs r2, #8 - orrs r0, r2 - strh r0, [r5, #0x2e] - ldrh r0, [r5, #0x32] - ands r1, r0 - orrs r1, r2 - strh r1, [r5, #0x32] - adds r2, r5, #0 - adds r2, #0x29 - ldrb r0, [r2] - movs r1, #7 - orrs r0, r1 - strb r0, [r2] - movs r1, #0x2e - ldrsh r0, [r5, r1] - ldrh r1, [r7, #6] - subs r0, r0, r1 - asrs r0, r0, #4 - ands r0, r6 - movs r2, #0x32 - ldrsh r1, [r5, r2] - ldrh r2, [r7, #8] - subs r1, r1, r2 - asrs r1, r1, #4 - ands r1, r6 - lsls r1, r1, #6 - orrs r0, r1 - adds r4, r5, #0 - adds r4, #0x38 - ldrb r1, [r4] - bl sub_080001DA - str r0, [r5, #0x7c] - adds r0, r5, #0 - movs r1, #0x14 - bl InitializeAnimation - ldr r0, _08070360 @ =0x00004020 - movs r3, #0x2e - ldrsh r1, [r5, r3] - ldrh r2, [r7, #6] - subs r1, r1, r2 - asrs r1, r1, #4 - ands r1, r6 - movs r3, #0x32 - ldrsh r2, [r5, r3] - ldrh r3, [r7, #8] - subs r2, r2, r3 - asrs r2, r2, #4 - ands r2, r6 - lsls r2, r2, #6 - orrs r1, r2 - ldrb r2, [r4] - bl SetTile - b _0807037A - .align 2, 0 -_08070354: .4byte gRoomControls -_08070358: .4byte gPlayerEntity -_0807035C: .4byte gUnk_08003E44 -_08070360: .4byte 0x00004020 -_08070364: - adds r0, r5, #0 - bl sub_08070458 -_0807036A: - adds r0, r5, #0 - adds r0, #0x41 - ldrb r0, [r0] - cmp r0, #0 - beq _0807037A - adds r0, r5, #0 - bl sub_08070458 -_0807037A: - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_0807037C -sub_0807037C: @ 0x0807037C - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r4, #0x5a - ldrb r1, [r4] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08070394 - bl DeleteThisEntity -_08070394: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08070398 -sub_08070398: @ 0x08070398 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_0806F69C - movs r1, #0x80 - lsls r1, r1, #6 - adds r0, r4, #0 - bl sub_08003FC4 - cmp r0, #0 - bne _080703B8 - bl DeleteThisEntity -_080703B8: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080703BC -sub_080703BC: @ 0x080703BC - push {r4, r5, lr} - adds r4, r0, #0 - bl GetNextFrame - movs r1, #0x2e - ldrsh r0, [r4, r1] - ldr r2, _08070404 @ =gRoomControls - ldrh r1, [r2, #6] - subs r0, r0, r1 - asrs r0, r0, #4 - movs r3, #0x3f - ands r0, r3 - movs r5, #0x32 - ldrsh r1, [r4, r5] - ldrh r2, [r2, #8] - subs r1, r1, r2 - asrs r1, r1, #4 - ands r1, r3 - lsls r1, r1, #6 - orrs r0, r1 - adds r1, r4, #0 - adds r1, #0x38 - ldrb r1, [r1] - bl sub_080001DA - adds r1, r0, #0 - ldr r0, _08070408 @ =0x00004021 - cmp r1, r0 - beq _0807042E - cmp r1, r0 - bhi _0807040C - subs r0, #1 - cmp r1, r0 - beq _08070420 - b _08070412 - .align 2, 0 -_08070404: .4byte gRoomControls -_08070408: .4byte 0x00004021 -_0807040C: - ldr r0, _08070418 @ =0x00004070 - cmp r1, r0 - beq _0807041C -_08070412: - movs r0, #0 - str r0, [r4, #0x7c] - b _0807042E - .align 2, 0 -_08070418: .4byte 0x00004070 -_0807041C: - movs r0, #0xff - str r0, [r4, #0x78] -_08070420: - ldr r0, [r4, #0x78] - subs r0, #1 - str r0, [r4, #0x78] - movs r1, #1 - rsbs r1, r1, #0 - cmp r0, r1 - bne _08070436 -_0807042E: - adds r0, r4, #0 - bl sub_08070458 - b _08070454 -_08070436: - adds r0, r4, #0 - adds r0, #0x41 - ldrb r1, [r0] - cmp r1, #0 - beq _08070454 - movs r0, #0x7f - ands r0, r1 - cmp r0, #0 - bne _0807044E - ldrb r0, [r4, #0xc] - cmp r0, #0x1a - bne _08070454 -_0807044E: - adds r0, r4, #0 - bl sub_08070458 -_08070454: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_08070458 -sub_08070458: @ 0x08070458 - push {r4, r5, r6, lr} - adds r4, r0, #0 - movs r2, #0 - movs r0, #2 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - strh r2, [r4, #0x24] - ldr r5, [r4, #0x7c] - cmp r5, #0 - beq _0807049E - movs r0, #0x2e - ldrsh r1, [r4, r0] - ldr r2, _080704B4 @ =gRoomControls - ldrh r0, [r2, #6] - subs r1, r1, r0 - asrs r1, r1, #4 - movs r3, #0x3f - ands r1, r3 - movs r6, #0x32 - ldrsh r0, [r4, r6] - ldrh r2, [r2, #8] - subs r0, r0, r2 - asrs r0, r0, #4 - ands r0, r3 - lsls r0, r0, #6 - orrs r1, r0 - adds r0, r4, #0 - adds r0, #0x38 - ldrb r2, [r0] - adds r0, r5, #0 - bl SetTile -_0807049E: - adds r0, r4, #0 - movs r1, #0x13 - bl InitializeAnimation - adds r0, r4, #0 - bl sub_08017744 - ldr r0, _080704B8 @ =0x00000199 - bl SoundReq - pop {r4, r5, r6, pc} - .align 2, 0 -_080704B4: .4byte gRoomControls -_080704B8: .4byte 0x00000199 - diff --git a/asm/playerItem/playerItem13.s b/asm/playerItem/playerItem13.s deleted file mode 100644 index 599ec6d7..00000000 --- a/asm/playerItem/playerItem13.s +++ /dev/null @@ -1,574 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start PlayerItem13 -PlayerItem13: @ 0x080ACF14 - push {lr} - ldr r2, _080ACF28 @ =gUnk_081320A8 - ldrb r1, [r0, #0xd] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080ACF28: .4byte gUnk_081320A8 - - thumb_func_start sub_080ACF2C -sub_080ACF2C: @ 0x080ACF2C - push {r4, r5, r6, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xd] - adds r0, #1 - strb r0, [r4, #0xd] - ldr r0, _080ACF60 @ =gUnk_081320E4 - str r0, [r4, #0x48] - ldr r5, [r4, #0x54] - adds r6, r5, #0 - cmp r5, #0 - beq _080ACF64 - ldr r0, [r5, #0x2c] - str r0, [r4, #0x2c] - ldr r0, [r5, #0x30] - str r0, [r4, #0x30] - ldr r0, [r5, #0x34] - str r0, [r4, #0x34] - adds r0, r5, #0 - adds r0, #0x38 - ldrb r1, [r0] - adds r0, r4, #0 - adds r0, #0x38 - strb r1, [r0] - ldrb r0, [r5, #0x16] - strb r0, [r4, #0x16] - b _080ACFB6 - .align 2, 0 -_080ACF60: .4byte gUnk_081320E4 -_080ACF64: - adds r5, r4, #0 - str r4, [r4, #0x54] - movs r0, #2 - strb r0, [r4, #0xc] - ldr r3, _080ACFC8 @ =gUnk_081320B8 - ldrb r0, [r4, #0xf] - lsls r0, r0, #2 - adds r0, r0, r3 - ldrb r1, [r0, #1] - movs r0, #0xf - ands r1, r0 - ldrb r2, [r4, #0x1a] - movs r0, #0x10 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x1a] - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - strb r6, [r4, #0x16] - ldrb r0, [r4, #0xf] - lsls r0, r0, #2 - adds r0, r0, r3 - ldrb r1, [r0, #2] - adds r0, r4, #0 - adds r0, #0x60 - strh r1, [r0] - ldrb r0, [r4, #0xf] - lsls r0, r0, #2 - adds r0, r0, r3 - ldrb r1, [r0] - adds r0, r4, #0 - bl InitializeAnimation - bl sub_08078D60 -_080ACFB6: - ldrb r1, [r5, #8] - adds r0, r4, #0 - adds r0, #0x6c - strh r1, [r0] - ldrb r1, [r5, #9] - adds r0, #2 - strh r1, [r0] - pop {r4, r5, r6, pc} - .align 2, 0 -_080ACFC8: .4byte gUnk_081320B8 - - thumb_func_start sub_080ACFCC -sub_080ACFCC: @ 0x080ACFCC - push {r4, lr} - adds r4, r0, #0 - ldr r1, [r4, #0x54] - adds r0, #0x6c - ldrh r0, [r0] - ldrb r2, [r1, #8] - cmp r0, r2 - beq _080ACFE8 - adds r0, r4, #0 - adds r0, #0x6e - ldrh r0, [r0] - ldrb r2, [r1, #9] - cmp r0, r2 - bne _080AD034 -_080ACFE8: - ldrb r0, [r1, #0xc] - cmp r0, #2 - beq _080ACFF8 - bl sub_08079184 - bl DeleteThisEntity - b _080AD03C -_080ACFF8: - ldr r0, _080AD02C @ =gPlayerState - ldrb r0, [r0, #5] - cmp r0, #0 - beq _080AD00E - ldr r0, _080AD030 @ =gPlayerEntity - adds r0, #0x79 - ldrb r1, [r0] - movs r0, #0x7f - ands r0, r1 - cmp r0, #0 - beq _080AD03C -_080AD00E: - adds r0, r4, #0 - bl sub_080AD27C - ldrb r0, [r4, #0xd] - adds r0, #1 - movs r2, #0 - strb r0, [r4, #0xd] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - movs r0, #0xff - strb r0, [r4, #0x15] - str r2, [r4, #0x20] - b _080AD03C - .align 2, 0 -_080AD02C: .4byte gPlayerState -_080AD030: .4byte gPlayerEntity -_080AD034: - bl sub_08079184 - bl DeleteThisEntity -_080AD03C: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080AD040 -sub_080AD040: @ 0x080AD040 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r5, [r4, #0x54] - ldrb r0, [r5, #0xc] - cmp r0, #2 - beq _080AD050 - bl DeleteThisEntity -_080AD050: - adds r0, r4, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r3, #0x80 - adds r0, r3, #0 - ands r0, r1 - cmp r0, #0 - beq _080AD064 - movs r0, #0 - str r0, [r4, #0x34] -_080AD064: - movs r1, #0x24 - ldrsh r0, [r4, r1] - cmp r0, #0 - bne _080AD06E - b _080AD220 -_080AD06E: - adds r2, r4, #0 - adds r2, #0x42 - ldrb r1, [r2] - adds r0, r3, #0 - ands r0, r1 - cmp r0, #0 - beq _080AD088 - adds r0, r4, #0 - adds r0, #0x3e - ldrb r0, [r0] - movs r1, #0 - strb r0, [r4, #0x15] - strb r1, [r2] -_080AD088: - ldr r2, _080AD0B0 @ =gUnk_081320C4 - ldrb r0, [r4, #0x15] - lsrs r0, r0, #2 - adds r1, r0, r2 - ldrb r1, [r1] - lsls r1, r1, #0x18 - asrs r1, r1, #0x18 - adds r0, #1 - adds r0, r0, r2 - movs r2, #0 - ldrsb r2, [r0, r2] - adds r0, r4, #0 - bl sub_080002B4 - cmp r0, #0x74 - bne _080AD0B4 - adds r0, r4, #0 - bl sub_0806F69C - b _080AD0C8 - .align 2, 0 -_080AD0B0: .4byte gUnk_081320C4 -_080AD0B4: - adds r0, r4, #0 - bl sub_080002D0 - cmp r0, #0x24 - beq _080AD0C8 - cmp r0, #0x26 - beq _080AD0C8 - adds r0, r4, #0 - bl sub_080AF00C -_080AD0C8: - movs r1, #0x80 - lsls r1, r1, #6 - adds r0, r4, #0 - bl sub_08003FC4 - cmp r0, #0 - beq _080AD0D8 - b _080AD202 -_080AD0D8: - ldr r0, [r4, #0x20] - str r0, [r5, #0x20] - ldr r0, [r4, #0x2c] - str r0, [r5, #0x2c] - ldr r0, [r4, #0x30] - str r0, [r5, #0x30] - ldr r0, [r4, #0x34] - str r0, [r5, #0x34] - adds r0, r4, #0 - bl sub_080002B8 - cmp r0, #0x11 - bhi _080AD0FC - cmp r0, #0x10 - bhs _080AD104 - cmp r0, #0xd - beq _080AD104 - b _080AD14E -_080AD0FC: - cmp r0, #0x13 - beq _080AD104 - cmp r0, #0x5a - bne _080AD14E -_080AD104: - cmp r5, r4 - bne _080AD146 - cmp r0, #0x11 - bhi _080AD116 - cmp r0, #0x10 - bhs _080AD12C - cmp r0, #0xd - beq _080AD120 - b _080AD142 -_080AD116: - cmp r0, #0x13 - beq _080AD138 - cmp r0, #0x5a - beq _080AD126 - b _080AD142 -_080AD120: - adds r0, r4, #0 - movs r1, #0 - b _080AD130 -_080AD126: - adds r0, r4, #0 - movs r1, #0xc - b _080AD130 -_080AD12C: - adds r0, r4, #0 - movs r1, #0xb -_080AD130: - movs r2, #0 - bl CreateFx - b _080AD142 -_080AD138: - adds r0, r4, #0 - movs r1, #0x52 - movs r2, #0 - bl CreateFx -_080AD142: - movs r0, #4 - b _080AD148 -_080AD146: - movs r0, #3 -_080AD148: - strb r0, [r5, #0xd] - bl DeleteThisEntity -_080AD14E: - ldr r0, [r4, #0x54] - cmp r0, r4 - bne _080AD178 - ldrb r0, [r4, #0xb] - cmp r0, #0xff - beq _080AD1DA - cmp r0, #0xf - bne _080AD16A - ldrb r1, [r4, #0xe] - adds r0, r4, #0 - movs r2, #0x80 - bl CreateFx - b _080AD1DA -_080AD16A: - ldrb r1, [r4, #0xb] - ldrb r2, [r4, #0xe] - adds r0, r4, #0 - movs r3, #0 - bl CreateObjectWithParent - b _080AD1DA -_080AD178: - ldrb r0, [r4, #0xe] - cmp r0, #0 - bne _080AD188 - adds r0, r5, #0 - bl sub_080AD32C - cmp r0, #0 - beq _080AD1E0 -_080AD188: - ldrb r0, [r4, #0xe] - cmp r0, #1 - bne _080AD196 - movs r0, #0x82 - lsls r0, r0, #1 - bl SoundReq -_080AD196: - adds r0, r4, #0 - bl UpdateSpriteForCollisionLayer - movs r0, #3 - strb r0, [r5, #0xd] - ldrb r2, [r4, #0x19] - lsrs r2, r2, #6 - lsls r2, r2, #6 - ldrb r3, [r5, #0x19] - movs r1, #0x3f - adds r0, r1, #0 - ands r0, r3 - orrs r0, r2 - strb r0, [r5, #0x19] - ldrb r0, [r4, #0x1b] - lsrs r0, r0, #6 - lsls r0, r0, #6 - ldrb r2, [r5, #0x1b] - ands r1, r2 - orrs r1, r0 - strb r1, [r5, #0x1b] - adds r0, r4, #0 - adds r0, #0x29 - ldrb r1, [r0] - lsls r1, r1, #0x1d - adds r3, r5, #0 - adds r3, #0x29 - lsrs r1, r1, #0x1d - ldrb r2, [r3] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080AD1DA: - bl DeleteThisEntity - b _080AD26E -_080AD1E0: - movs r0, #0x82 - lsls r0, r0, #1 - bl SoundReq - ldrb r0, [r4, #0xe] - adds r0, #1 - strb r0, [r4, #0xe] - movs r0, #0x80 - lsls r0, r0, #9 - str r0, [r4, #0x20] - movs r1, #0x24 - ldrsh r0, [r4, r1] - lsrs r1, r0, #0x1f - adds r0, r0, r1 - asrs r0, r0, #1 - strh r0, [r4, #0x24] - b _080AD26E -_080AD202: - adds r0, r4, #0 - bl sub_0800451C - adds r0, r4, #0 - bl sub_0806F8DC - adds r0, r4, #0 - adds r1, r5, #0 - bl CopyPosition - ldr r0, [r4, #0x20] - str r0, [r5, #0x20] - ldrb r0, [r4, #0x15] - strb r0, [r5, #0x15] - b _080AD26E -_080AD220: - ldr r1, _080AD240 @ =gPlayerEntity - adds r0, r1, #0 - adds r0, #0x5a - ldrb r0, [r0] - movs r5, #1 - ands r5, r0 - cmp r5, #0 - beq _080AD244 - movs r0, #0x79 - bl SoundReq - adds r0, r4, #0 - bl sub_080AD27C - b _080AD26E - .align 2, 0 -_080AD240: .4byte gPlayerEntity -_080AD244: - ldr r0, _080AD270 @ =gPlayerState - ldrb r0, [r0, #5] - cmp r0, #0 - beq _080AD25A - adds r0, r1, #0 - adds r0, #0x79 - ldrb r1, [r0] - adds r0, r3, #0 - ands r0, r1 - cmp r0, #0 - beq _080AD26E -_080AD25A: - adds r0, r4, #0 - bl sub_080AD27C - ldrb r0, [r4, #0x10] - movs r1, #0x7f - ands r1, r0 - strb r1, [r4, #0x10] - movs r0, #0xff - strb r0, [r4, #0x15] - str r5, [r4, #0x20] -_080AD26E: - pop {r4, r5, pc} - .align 2, 0 -_080AD270: .4byte gPlayerState - - thumb_func_start sub_080AD274 -sub_080AD274: @ 0x080AD274 - push {lr} - bl DeleteThisEntity - pop {pc} - - - thumb_func_start sub_080AD27C -sub_080AD27C: @ 0x080AD27C - push {r4, r5, lr} - adds r3, r0, #0 - ldr r4, [r3, #0x54] - ldr r1, _080AD2AC @ =gPlayerEntity - movs r0, #0 - str r0, [r1, #0x74] - adds r0, r3, #0 - adds r0, #0x6c - ldrh r0, [r0] - adds r5, r1, #0 - ldrb r1, [r4, #8] - cmp r0, r1 - bne _080AD320 - adds r0, r3, #0 - adds r0, #0x6e - ldrh r0, [r0] - ldrb r1, [r4, #9] - cmp r0, r1 - bne _080AD320 - cmp r4, r3 - beq _080AD2B0 - movs r0, #2 - strb r0, [r4, #0xd] - b _080AD2C2 - .align 2, 0 -_080AD2AC: .4byte gPlayerEntity -_080AD2B0: - adds r2, r3, #0 - adds r2, #0x29 - ldrb r0, [r2] - movs r1, #0x39 - rsbs r1, r1, #0 - ands r1, r0 - movs r0, #0x18 - orrs r1, r0 - strb r1, [r2] -_080AD2C2: - ldr r0, [r4, #0x48] - str r0, [r3, #0x48] - ldrb r1, [r3, #0x16] - lsrs r1, r1, #4 - ldr r2, _080AD318 @ =gUnk_081320CC - lsls r0, r1, #1 - adds r0, r0, r2 - ldrh r0, [r0] - strh r0, [r3, #0x24] - ldr r0, _080AD31C @ =gUnk_081320D4 - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r0, [r1] - str r0, [r3, #0x20] - ldrh r0, [r4, #0x36] - adds r0, #8 - strh r0, [r4, #0x36] - strh r0, [r3, #0x36] - adds r0, r4, #0 - adds r0, #0x38 - ldrb r1, [r0] - adds r0, r3, #0 - adds r0, #0x38 - strb r1, [r0] - ldrh r0, [r5, #0x32] - strh r0, [r3, #0x32] - ldrh r0, [r5, #0x2e] - strh r0, [r3, #0x2e] - adds r0, r5, #0 - adds r0, #0x3c - ldrb r1, [r0] - adds r0, r3, #0 - adds r0, #0x3c - strb r1, [r0] - ldrb r1, [r3, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r3, #0x10] - adds r0, r3, #0 - bl sub_0801766C - b _080AD328 - .align 2, 0 -_080AD318: .4byte gUnk_081320CC -_080AD31C: .4byte gUnk_081320D4 -_080AD320: - bl sub_08079184 - bl DeleteThisEntity -_080AD328: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_080AD32C -sub_080AD32C: @ 0x080AD32C - push {lr} - adds r2, r0, #0 - movs r3, #0 - ldrb r1, [r2, #0x16] - movs r0, #0xf0 - ands r0, r1 - cmp r0, #0x10 - beq _080AD34C - ldrb r0, [r2, #8] - cmp r0, #6 - bne _080AD34E - ldrb r0, [r2, #9] - cmp r0, #5 - beq _080AD34C - cmp r0, #0x7d - bne _080AD34E -_080AD34C: - movs r3, #1 -_080AD34E: - adds r0, r3, #0 - pop {pc} - .align 2, 0 diff --git a/asm/playerItem/playerItem3.s b/asm/playerItem/playerItem3.s deleted file mode 100644 index 6c16303d..00000000 --- a/asm/playerItem/playerItem3.s +++ /dev/null @@ -1,678 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - - thumb_func_start PlayerItem3 -PlayerItem3: @ 0x0801B45C - push {r4, lr} - adds r4, r0, #0 - ldr r1, _0801B48C @ =gUnk_080B77FC - ldrb r0, [r4, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - adds r0, #0x58 - ldrb r0, [r0] - cmp r0, #0xb - beq _0801B4AC - ldrb r0, [r4, #0x14] - cmp r0, #6 - bne _0801B490 - adds r1, r4, #0 - adds r1, #0x86 - movs r2, #0x80 - lsls r2, r2, #6 - b _0801B496 - .align 2, 0 -_0801B48C: .4byte gUnk_080B77FC -_0801B490: - adds r1, r4, #0 - adds r1, #0x86 - ldr r2, _0801B4C4 @ =0xFFFFE000 -_0801B496: - adds r0, r2, #0 - ldrh r2, [r1] - adds r0, r0, r2 - strh r0, [r1] - movs r2, #0x80 - lsls r2, r2, #1 - ldrh r3, [r1] - adds r0, r4, #0 - adds r1, r2, #0 - bl sub_0805EC9C -_0801B4AC: - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - movs r1, #0xf - ands r0, r1 - cmp r0, #0 - bne _0801B4C0 - movs r0, #0xfb - bl EnqueueSFX -_0801B4C0: - pop {r4, pc} - .align 2, 0 -_0801B4C4: .4byte 0xFFFFE000 - - thumb_func_start sub_0801B4C8 -sub_0801B4C8: @ 0x0801B4C8 -.ifdef EU - push {r4, r5, lr} - adds r4, r0, #0 - ldr r3, _0801B564 @ =gPlayerState - str r4, [r3, #0x2c] - movs r2, #0 - movs r0, #1 - strb r0, [r4, #0xc] - ldr r0, _0801B568 @ =gUnk_081271CC - str r0, [r4, #0x48] - movs r0, #0xff - strb r0, [r4, #0x1e] - adds r0, r4, #0 - adds r0, #0x80 - strb r2, [r0] - ldr r5, _0801B56C @ =gPlayerEntity - adds r0, r5, #0 - adds r0, #0x60 - ldrh r1, [r0] - adds r0, r4, #0 - adds r0, #0x60 - strh r1, [r0] - adds r1, r4, #0 - adds r1, #0x58 - movs r0, #0xb - strb r0, [r1] - str r5, [r4, #0x50] - adds r0, r4, #0 - adds r0, #0x86 - strh r2, [r0] - ldrb r1, [r4, #0x14] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _0801B550 - ldrb r0, [r5, #0x18] - lsls r0, r0, #0x19 - lsrs r0, r0, #0x1f - movs r1, #1 - bics r1, r0 - lsls r1, r1, #6 - ldrb r2, [r4, #0x18] - movs r0, #0x41 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x18] -_0801B550: - adds r0, r4, #0 - adds r0, #0x68 - ldrb r0, [r0] - cmp r0, #0xc - bne _0801B570 - movs r0, #0xa0 - lsls r0, r0, #2 - strh r0, [r4, #0x24] - movs r0, #0x3c - b _0801B578 - .align 2, 0 -_0801B564: .4byte gPlayerState -_0801B568: .4byte gUnk_081271CC -_0801B56C: .4byte gPlayerEntity -_0801B570: - movs r0, #0x80 - lsls r0, r0, #2 - strh r0, [r4, #0x24] - movs r0, #0x1e -_0801B578: - strb r0, [r4, #0xe] - ldrb r1, [r3, #0xd] - movs r0, #0xd - ldrsb r0, [r3, r0] - cmp r0, #0 - blt _0801B588 - strb r1, [r4, #0x15] - b _0801B58E -_0801B588: - ldrb r0, [r4, #0x14] - lsls r0, r0, #2 - strb r0, [r4, #0x15] -_0801B58E: - ldrb r0, [r4, #0x15] - adds r1, r4, #0 - adds r1, #0x83 - strb r0, [r1] - adds r0, r4, #0 - adds r0, #0x38 - ldrb r0, [r0] - cmp r0, #2 - bne _0801B5A4 - movs r0, #1 - strb r0, [r4, #0xb] -_0801B5A4: - adds r0, r4, #0 - movs r1, #1 - movs r2, #3 - bl sub_080AE008 - adds r0, r4, #0 - bl sub_0801766C - adds r0, r4, #0 - bl sub_0801B584 - pop {r4, r5, pc} -.else - push {r4, r5, lr} - adds r4, r0, #0 - ldr r3, _0801B52C @ =gPlayerState - str r4, [r3, #0x2c] - movs r2, #0 - movs r0, #1 - strb r0, [r4, #0xc] - ldr r0, _0801B530 @ =gUnk_081271CC - str r0, [r4, #0x48] - movs r0, #0xff - strb r0, [r4, #0x1e] - adds r0, r4, #0 - adds r0, #0x80 - strb r2, [r0] - adds r1, r4, #0 - adds r1, #0x58 - movs r0, #0xb - strb r0, [r1] - ldr r5, _0801B534 @ =gPlayerEntity - str r5, [r4, #0x50] - adds r0, r4, #0 - adds r0, #0x86 - strh r2, [r0] - ldrb r1, [r4, #0x14] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _0801B518 - ldrb r0, [r5, #0x18] - lsls r0, r0, #0x19 - lsrs r0, r0, #0x1f - movs r1, #1 - bics r1, r0 - lsls r1, r1, #6 - ldrb r2, [r4, #0x18] - movs r0, #0x41 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x18] -_0801B518: - adds r0, r4, #0 - adds r0, #0x68 - ldrb r0, [r0] - cmp r0, #0xc - bne _0801B538 - movs r0, #0xa0 - lsls r0, r0, #2 - strh r0, [r4, #0x24] - movs r0, #0x3c - b _0801B540 - .align 2, 0 -_0801B52C: .4byte gPlayerState -_0801B530: .4byte gUnk_081271CC -_0801B534: .4byte gPlayerEntity -_0801B538: - movs r0, #0x80 - lsls r0, r0, #2 - strh r0, [r4, #0x24] - movs r0, #0x1e -_0801B540: - strb r0, [r4, #0xe] - ldrb r1, [r3, #0xd] - movs r0, #0xd - ldrsb r0, [r3, r0] - cmp r0, #0 - blt _0801B550 - strb r1, [r4, #0x15] - b _0801B556 -_0801B550: - ldrb r0, [r4, #0x14] - lsls r0, r0, #2 - strb r0, [r4, #0x15] -_0801B556: - ldrb r0, [r4, #0x15] - adds r1, r4, #0 - adds r1, #0x83 - strb r0, [r1] - adds r0, r4, #0 - adds r0, #0x38 - ldrb r0, [r0] - cmp r0, #2 - bne _0801B56C - movs r0, #1 - strb r0, [r4, #0xb] -_0801B56C: - adds r0, r4, #0 - movs r1, #1 - movs r2, #3 - bl sub_080AE008 - adds r0, r4, #0 - bl sub_0801766C - adds r0, r4, #0 - bl sub_0801B584 - pop {r4, r5, pc} -.endif - - thumb_func_start sub_0801B584 -sub_0801B584: @ 0x0801B584 - push {r4, r5, r6, r7, lr} - adds r6, r0, #0 - bl sub_0801B804 - ldr r1, _0801B5F8 @ =gPlayerState - ldrb r0, [r1, #4] - cmp r0, #0 - beq _0801B5A8 - ldrb r0, [r1, #0x1a] - cmp r0, #0 - bne _0801B5A8 - ldr r0, [r1, #0x2c] - cmp r0, r6 - bne _0801B5B4 - ldr r0, _0801B5FC @ =gPlayerEntity - ldrb r0, [r0, #0xc] - cmp r0, #1 - beq _0801B5B8 -_0801B5A8: - ldr r1, _0801B5F8 @ =gPlayerState - ldr r0, [r1, #0x2c] - cmp r0, r6 - bne _0801B5B4 - movs r0, #0 - str r0, [r1, #0x2c] -_0801B5B4: - bl DeleteThisEntity -_0801B5B8: - ldr r7, _0801B5FC @ =gPlayerEntity - adds r0, r7, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r3, #1 - movs r0, #1 - ands r0, r1 - cmp r0, #0 - bne _0801B600 - adds r0, r6, #0 - adds r0, #0x68 - ldrb r0, [r0] - movs r2, #0 - cmp r0, #0xc - bne _0801B5D8 - movs r2, #6 -_0801B5D8: - lsrs r0, r1, #4 - adds r1, r0, r2 - ldrb r0, [r6, #0x1e] - cmp r0, r1 - beq _0801B5EE - strb r1, [r6, #0x1e] - ldrb r1, [r6, #0x1e] - ldrh r2, [r6, #0x12] - adds r0, r6, #0 - bl sub_080042D0 -_0801B5EE: - adds r0, r6, #0 - adds r1, r7, #0 - bl sub_08078E84 - b _0801B674 - .align 2, 0 -_0801B5F8: .4byte gPlayerState -_0801B5FC: .4byte gPlayerEntity -_0801B600: - movs r5, #0 - movs r0, #2 - strb r0, [r6, #0xc] - adds r1, r6, #0 - adds r1, #0x60 - movs r0, #0xd5 - strh r0, [r1] - ldrb r0, [r6, #0x10] - movs r4, #0x80 - orrs r0, r4 - strb r0, [r6, #0x10] - subs r1, #0x24 - ldrb r0, [r1] - orrs r0, r3 - strb r0, [r1] - adds r0, r7, #0 - adds r0, #0x3b - ldrb r0, [r0] - adds r2, r6, #0 - adds r2, #0x3b - strb r0, [r2] - movs r0, #0xa6 - strh r0, [r6, #0x12] - ldrb r1, [r6, #0x18] - subs r0, #0xe7 - ands r0, r1 - movs r1, #4 - rsbs r1, r1, #0 - ands r0, r1 - orrs r0, r3 - strb r0, [r6, #0x18] - ldrb r1, [r6, #0x14] - lsrs r1, r1, #1 - lsls r1, r1, #1 - ldr r2, _0801B678 @ =gUnk_080B7826 - adds r0, r1, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldrh r3, [r6, #0x2e] - adds r0, r0, r3 - strh r0, [r6, #0x2e] - adds r1, #1 - adds r1, r1, r2 - movs r0, #0 - ldrsb r0, [r1, r0] - ldrh r1, [r6, #0x32] - adds r0, r0, r1 - strh r0, [r6, #0x32] - adds r0, r6, #0 - movs r1, #0 - bl InitializeAnimation - ldr r0, _0801B67C @ =gPlayerState - str r5, [r0, #0x2c] - ldrb r1, [r0, #4] - orrs r4, r1 - strb r4, [r0, #4] -_0801B674: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0801B678: .4byte gUnk_080B7826 -_0801B67C: .4byte gPlayerState - - thumb_func_start sub_0801B680 -sub_0801B680: @ 0x0801B680 - push {r4, r5, r6, lr} - adds r4, r0, #0 - bl sub_0801B804 - adds r0, r4, #0 - adds r0, #0x68 - ldrb r0, [r0] - cmp r0, #0xc - bne _0801B6DC - adds r0, r4, #0 - adds r0, #0x80 - ldrb r0, [r0] - cmp r0, #0 - bne _0801B6DC - ldr r3, _0801B6C4 @ =gPlayerState - ldrb r1, [r3, #0xd] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - bne _0801B6DC - adds r2, r4, #0 - adds r2, #0x83 - ldrb r0, [r2] - ldrb r1, [r3, #0xd] - subs r0, r0, r1 - movs r3, #0x1f - ands r0, r3 - cmp r0, #0x10 - ble _0801B6C8 - adds r1, r4, #0 - adds r1, #0x82 - ldrh r0, [r1] - adds r0, #0x40 - b _0801B6D0 - .align 2, 0 -_0801B6C4: .4byte gPlayerState -_0801B6C8: - adds r1, r4, #0 - adds r1, #0x82 - ldrh r0, [r1] - subs r0, #0x40 -_0801B6D0: - strh r0, [r1] - ldrb r1, [r2] - adds r0, r3, #0 - ands r0, r1 - strb r0, [r2] - strb r0, [r4, #0x15] -_0801B6DC: - adds r0, r4, #0 - bl sub_0806F69C - movs r5, #0 - adds r0, r4, #0 - bl sub_0801B864 - cmp r0, #0 - beq _0801B6FE - adds r0, r4, #0 - adds r0, #0x68 - ldrb r1, [r0] - movs r0, #0xc - eors r1, r0 - rsbs r0, r1, #0 - orrs r0, r1 - lsrs r5, r0, #0x1f -_0801B6FE: - movs r1, #0x2e - ldrsh r0, [r4, r1] - ldr r2, _0801B780 @ =gRoomControls - ldrh r1, [r2, #6] - subs r0, r0, r1 - asrs r0, r0, #4 - movs r3, #0x3f - ands r0, r3 - movs r6, #0x32 - ldrsh r1, [r4, r6] - ldrh r2, [r2, #8] - subs r1, r1, r2 - asrs r1, r1, #4 - ands r1, r3 - lsls r1, r1, #6 - orrs r0, r1 - ldr r1, _0801B784 @ =gPlayerEntity - adds r1, #0x38 - ldrb r1, [r1] - movs r2, #0x80 - bl sub_080002F0 - cmp r0, #0 - bne _0801B73C - cmp r5, #0 - bne _0801B790 - ldr r1, _0801B788 @ =gUnk_08003E44 - adds r0, r4, #0 - bl sub_080040E2 - adds r5, r0, #0 -_0801B73C: - cmp r5, #0 - bne _0801B790 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0xb - bhi _0801B754 - ldrh r0, [r4, #0x24] - subs r0, #0x10 - strh r0, [r4, #0x24] -_0801B754: - ldrb r0, [r4, #0xe] - cmp r0, #0 - bne _0801B75C - movs r5, #1 -_0801B75C: - adds r0, r4, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0801B76C - movs r5, #1 -_0801B76C: - cmp r5, #0 - beq _0801B7A4 - adds r0, r4, #0 - adds r0, #0x68 - ldrb r0, [r0] - cmp r0, #0xc - bne _0801B78C - movs r0, #0x1e - b _0801B792 - .align 2, 0 -_0801B780: .4byte gRoomControls -_0801B784: .4byte gPlayerEntity -_0801B788: .4byte gUnk_08003E44 -_0801B78C: - movs r0, #0xc - b _0801B792 -_0801B790: - movs r0, #1 -_0801B792: - strb r0, [r4, #0xe] - cmp r5, #0 - beq _0801B7A4 - ldrb r0, [r4, #0xc] - adds r0, #1 - strb r0, [r4, #0xc] - movs r0, #0xe0 - lsls r0, r0, #1 - strh r0, [r4, #0x24] -_0801B7A4: - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_0801B7A8 -sub_0801B7A8: @ 0x0801B7A8 - push {r4, r5, lr} - adds r5, r0, #0 - bl sub_0801B804 - ldrb r0, [r5, #0xe] - cmp r0, #0 - beq _0801B7BC - subs r0, #1 - strb r0, [r5, #0xe] - b _0801B7FA -_0801B7BC: - adds r0, r5, #0 - bl sub_0801B864 - ldrh r2, [r5, #0x24] - movs r0, #0x24 - ldrsh r1, [r5, r0] - ldr r0, _0801B7FC @ =0x0000027F - cmp r1, r0 - bgt _0801B7D4 - adds r0, r2, #0 - adds r0, #8 - strh r0, [r5, #0x24] -_0801B7D4: - ldr r4, _0801B800 @ =gPlayerEntity - adds r0, r5, #0 - adds r1, r4, #0 - bl GetFacingDirection - strb r0, [r5, #0x15] - adds r0, r5, #0 - bl sub_0806F69C - adds r0, r5, #0 - adds r1, r4, #0 - movs r2, #2 - movs r3, #2 - bl sub_0800419C - cmp r0, #0 - beq _0801B7FA - bl DeleteThisEntity -_0801B7FA: - pop {r4, r5, pc} - .align 2, 0 -_0801B7FC: .4byte 0x0000027F -_0801B800: .4byte gPlayerEntity - - thumb_func_start sub_0801B804 -sub_0801B804: @ 0x0801B804 - push {r4, r5, lr} - adds r5, r0, #0 - movs r0, #0xc - bl IsItemEquipped - cmp r0, #1 - beq _0801B820 - cmp r0, #1 - blo _0801B81C - cmp r0, #2 - beq _0801B824 - b _0801B826 -_0801B81C: - movs r4, #1 - b _0801B826 -_0801B820: - movs r4, #2 - b _0801B826 -_0801B824: - movs r4, #0 -_0801B826: - ldr r3, _0801B850 @ =gPlayerState - adds r0, r3, #0 - adds r0, #0x90 - ldrh r0, [r0] - ands r4, r0 - cmp r4, #0 - bne _0801B854 - adds r1, r5, #0 - adds r1, #0x80 - movs r0, #1 - strb r0, [r1] - ldrb r2, [r3, #0xa] - movs r1, #0x7f - adds r0, r1, #0 - ands r0, r2 - strb r0, [r3, #0xa] - ldrb r0, [r3, #0xb] - ands r1, r0 - strb r1, [r3, #0xb] - b _0801B862 - .align 2, 0 -_0801B850: .4byte gPlayerState -_0801B854: - ldrb r1, [r3, #0xa] - movs r0, #0x80 - orrs r1, r0 - strb r1, [r3, #0xa] - ldrb r1, [r3, #0xb] - orrs r0, r1 - strb r0, [r3, #0xb] -_0801B862: - pop {r4, r5, pc} - - thumb_func_start sub_0801B864 -sub_0801B864: @ 0x0801B864 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xb] - cmp r0, #0 - bne _0801B874 - adds r0, r4, #0 - bl sub_0800451C -_0801B874: - ldrb r0, [r4, #0x15] - lsrs r0, r0, #2 - lsls r0, r0, #1 - ldr r3, _0801B894 @ =gUnk_080B782E - adds r1, r0, r3 - movs r2, #0 - ldrsb r2, [r1, r2] - adds r0, #1 - adds r0, r0, r3 - movs r3, #0 - ldrsb r3, [r0, r3] - adds r0, r4, #0 - movs r1, #2 - bl sub_08008782 - pop {r4, pc} - .align 2, 0 -_0801B894: .4byte gUnk_080B782E diff --git a/asm/playerItem/playerItemBomb.s b/asm/playerItem/playerItemBomb.s deleted file mode 100644 index 4fe4fe42..00000000 --- a/asm/playerItem/playerItemBomb.s +++ /dev/null @@ -1,410 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start PlayerItemBomb -PlayerItemBomb: @ 0x0801B188 - push {r4, lr} - adds r4, r0, #0 - ldr r0, _0801B1E0 @ =gUnk_080B77C8 - ldrb r1, [r4, #0xc] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 - adds r0, r4, #0 - bl GetNextFrame - ldrb r2, [r4, #0xc] - cmp r2, #3 - beq _0801B24E - ldrb r1, [r4, #0xe] - cmp r1, #0 - beq _0801B1E4 - adds r0, r4, #0 - adds r0, #0x68 - ldrb r0, [r0] - cmp r0, #7 - bne _0801B1BC - subs r0, r1, #1 - strb r0, [r4, #0xe] -_0801B1BC: - ldrb r1, [r4, #0xe] - cmp r1, #0 - bne _0801B24E - movs r0, #0x50 - strb r0, [r4, #0xf] - str r1, [r4, #0x68] - ldrb r0, [r4, #0x19] - movs r1, #3 - orrs r0, r1 - strb r0, [r4, #0x19] - movs r2, #0x80 - lsls r2, r2, #1 - adds r0, r4, #0 - adds r1, r2, #0 - movs r3, #0 - bl sub_0805EC9C - b _0801B24E - .align 2, 0 -_0801B1E0: .4byte gUnk_080B77C8 -_0801B1E4: - ldrb r0, [r4, #0xf] - cmp r0, #0 - beq _0801B24E - subs r0, #1 - strb r0, [r4, #0xf] - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - bne _0801B248 - cmp r2, #2 - bne _0801B204 - ldrb r0, [r4, #0xd] - cmp r0, #1 - bne _0801B204 - ldr r0, _0801B244 @ =gPlayerState - strb r1, [r0, #5] -_0801B204: - movs r0, #3 - strb r0, [r4, #0xc] - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - subs r0, #0x3c - ands r0, r1 - movs r1, #0x10 - orrs r0, r1 - strb r0, [r2] - movs r0, #0xf - strb r0, [r4, #0xe] - ldrb r1, [r4, #0x18] - subs r0, #0x13 - ands r0, r1 - strb r0, [r4, #0x18] - adds r0, r4, #0 - bl sub_0805EC60 - adds r0, r4, #0 - bl sub_08078954 - adds r0, r4, #0 - movs r1, #0x20 - movs r2, #0 - movs r3, #0 - bl CreateObjectWithParent - adds r0, r4, #0 - bl sub_0801B418 - b _0801B24E - .align 2, 0 -_0801B244: .4byte gPlayerState -_0801B248: - adds r0, r4, #0 - bl sub_0801B3A4 -_0801B24E: - pop {r4, pc} - - thumb_func_start sub_0801B250 -sub_0801B250: @ 0x0801B250 - push {lr} - adds r2, r0, #0 - ldrb r1, [r2, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r2, #0x18] - movs r0, #1 - strb r0, [r2, #0xc] - adds r3, r2, #0 - adds r3, #0x29 - ldrb r1, [r3] - subs r0, #0x3a - ands r0, r1 - movs r1, #0x18 - orrs r0, r1 - strb r0, [r3] - ldrb r1, [r2, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r2, #0x10] - ldrb r1, [r2, #0xa] - adds r0, r1, #0 - cmp r0, #0xff - bne _0801B28A - movs r0, #0x3c - b _0801B29C -_0801B28A: - cmp r0, #0xfe - bne _0801B29A - movs r0, #0xf - strb r0, [r2, #0xe] - movs r0, #0xff - orrs r0, r1 - strb r0, [r2, #0xa] - b _0801B29E -_0801B29A: - movs r0, #0x96 -_0801B29C: - strb r0, [r2, #0xe] -_0801B29E: - ldr r0, _0801B2BC @ =gUnk_080B77F4 - str r0, [r2, #0x48] - movs r0, #0 - strb r0, [r2, #0x16] - adds r0, r2, #0 - adds r0, #0x68 - ldrb r0, [r0] - cmp r0, #7 - bne _0801B2C0 - adds r0, r2, #0 - movs r1, #5 - bl InitializeAnimation - b _0801B2C8 - .align 2, 0 -_0801B2BC: .4byte gUnk_080B77F4 -_0801B2C0: - adds r0, r2, #0 - movs r1, #0x15 - bl InitializeAnimation -_0801B2C8: - pop {pc} - .align 2, 0 - - thumb_func_start sub_0801B2CC -sub_0801B2CC: @ 0x0801B2CC - push {r4, r5, lr} - adds r4, r0, #0 - bl sub_0800442E - cmp r0, #0 - bne _0801B2DE - adds r0, r4, #0 - bl sub_08078930 -_0801B2DE: - movs r0, #8 - bl IsItemEquipped - cmp r0, #1 - beq _0801B2F6 - cmp r0, #1 - blo _0801B2F2 - cmp r0, #2 - beq _0801B2FA - b _0801B2FC -_0801B2F2: - movs r5, #1 - b _0801B2FC -_0801B2F6: - movs r5, #2 - b _0801B2FC -_0801B2FA: - movs r5, #0 -_0801B2FC: - ldr r0, _0801B314 @ =gPlayerState - adds r0, #0x92 - ldrh r0, [r0] - ands r5, r0 - cmp r5, #0 - beq _0801B310 - movs r0, #0 - strb r0, [r4, #0xe] - movs r0, #1 - strb r0, [r4, #0xf] -_0801B310: - pop {r4, r5, pc} - .align 2, 0 -_0801B314: .4byte gPlayerState - - thumb_func_start sub_0801B318 -sub_0801B318: @ 0x0801B318 - push {lr} - ldr r2, _0801B32C @ =gUnk_080B77D8 - ldrb r1, [r0, #0xd] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0801B32C: .4byte gUnk_080B77D8 - - thumb_func_start sub_0801B330 -sub_0801B330: @ 0x0801B330 - push {lr} - ldrb r1, [r0, #0xd] - adds r1, #1 - strb r1, [r0, #0xd] - bl sub_08079BD8 - pop {pc} - .align 2, 0 - - thumb_func_start sub_0801B340 -sub_0801B340: @ 0x0801B340 - adds r0, #0x29 - ldrb r2, [r0] - movs r1, #0x39 - rsbs r1, r1, #0 - ands r1, r2 - movs r2, #0x10 - orrs r1, r2 - strb r1, [r0] - bx lr - .align 2, 0 - - thumb_func_start sub_0801B354 -sub_0801B354: @ 0x0801B354 - adds r0, #0x29 - ldrb r2, [r0] - movs r1, #0x39 - rsbs r1, r1, #0 - ands r1, r2 - movs r2, #0x18 - orrs r1, r2 - strb r1, [r0] - bx lr - .align 2, 0 - - thumb_func_start sub_0801B368 -sub_0801B368: @ 0x0801B368 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0xc] - subs r0, #1 - movs r1, #0 - strb r0, [r2, #0xc] - strb r1, [r2, #0xd] - ldrb r0, [r2, #0xe] - cmp r0, #0x3c - bls _0801B380 - movs r0, #0x3c - strb r0, [r2, #0xe] -_0801B380: - pop {pc} - .align 2, 0 - - thumb_func_start sub_0801B384 -sub_0801B384: @ 0x0801B384 - push {lr} - bl DeleteThisEntity - pop {pc} - - thumb_func_start sub_0801B38C -sub_0801B38C: @ 0x0801B38C - push {lr} - ldrb r1, [r0, #0xe] - subs r1, #1 - strb r1, [r0, #0xe] - lsls r1, r1, #0x18 - lsrs r1, r1, #0x18 - cmp r1, #0xff - bne _0801B3A0 - bl DeleteThisEntity -_0801B3A0: - pop {pc} - .align 2, 0 - - thumb_func_start sub_0801B3A4 -sub_0801B3A4: @ 0x0801B3A4 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xf] - movs r5, #8 - cmp r0, #0x28 - bhi _0801B3F4 - movs r5, #4 - ldr r1, [r4, #0x68] - movs r0, #0x80 - lsls r0, r0, #8 - ands r0, r1 - cmp r0, #0 - beq _0801B3C4 - adds r0, r1, #0 - subs r0, #0x10 - b _0801B3C8 -_0801B3C4: - adds r0, r1, #0 - adds r0, #0x10 -_0801B3C8: - str r0, [r4, #0x68] - ldr r1, [r4, #0x68] - movs r2, #0xf0 - adds r0, r1, #0 - ands r0, r2 - subs r0, #1 - cmp r0, #0x7f - bls _0801B3E0 - movs r0, #0x80 - lsls r0, r0, #8 - eors r1, r0 - str r1, [r4, #0x68] -_0801B3E0: - ldr r0, [r4, #0x68] - ands r0, r2 - movs r2, #0x98 - lsls r2, r2, #1 - subs r2, r2, r0 - adds r0, r4, #0 - adds r1, r2, #0 - movs r3, #0 - bl sub_0805EC9C -_0801B3F4: - ldrb r0, [r4, #0xf] - ands r0, r5 - cmp r0, #0 - bne _0801B408 - ldrb r1, [r4, #0x1a] - movs r0, #0x10 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x1a] - b _0801B416 -_0801B408: - ldrb r0, [r4, #0x1a] - lsrs r2, r0, #4 - movs r1, #0x10 - rsbs r1, r1, #0 - ands r1, r0 - orrs r1, r2 - strb r1, [r4, #0x1a] -_0801B416: - pop {r4, r5, pc} - - thumb_func_start sub_0801B418 -sub_0801B418: @ 0x0801B418 - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - adds r5, r0, #0 - movs r6, #0x10 - movs r0, #0x10 - rsbs r0, r0, #0 - mov sb, r0 - mov r8, sb -_0801B42C: - movs r4, #0x10 - adds r7, r6, #0 - subs r7, #0x10 -_0801B432: - movs r0, #0x2e - ldrsh r2, [r5, r0] - adds r2, r2, r4 - movs r0, #0x32 - ldrsh r3, [r5, r0] - adds r3, r3, r6 - adds r0, r5, #0 - movs r1, #3 - bl sub_08008796 - subs r4, #0x10 - cmp r4, r8 - bge _0801B432 - adds r6, r7, #0 - cmp r6, sb - bge _0801B42C - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 diff --git a/asm/playerItem/playerItemC.s b/asm/playerItem/playerItemC.s deleted file mode 100644 index dcaa33e7..00000000 --- a/asm/playerItem/playerItemC.s +++ /dev/null @@ -1,191 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start PlayerItemC -PlayerItemC: @ 0x0801B898 - push {lr} - ldr r2, _0801B8AC @ =gUnk_080B7840 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0801B8AC: .4byte gUnk_080B7840 - - thumb_func_start sub_0801B8B0 -sub_0801B8B0: @ 0x0801B8B0 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _0801B8F0 @ =gPlayerState - ldrb r0, [r1, #0x1e] - cmp r0, #0 - beq _0801B8F4 - str r4, [r1, #0x2c] - ldrb r1, [r4, #0x10] - movs r0, #0x20 - orrs r0, r1 - strb r0, [r4, #0x10] - movs r0, #1 - strb r0, [r4, #0xc] - adds r1, r4, #0 - adds r1, #0x3b - movs r0, #8 - strb r0, [r1] - adds r0, r4, #0 - movs r1, #1 - movs r2, #3 - bl sub_080AE008 - adds r0, r4, #0 - bl sub_08079BD8 - adds r0, r4, #0 - bl sub_0801766C - adds r0, r4, #0 - bl sub_0801B8FC - b _0801B8F8 - .align 2, 0 -_0801B8F0: .4byte gPlayerState -_0801B8F4: - bl DeleteThisEntity -_0801B8F8: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0801B8FC -sub_0801B8FC: @ 0x0801B8FC - push {lr} - ldr r1, _0801B90C @ =gPlayerState - ldr r2, [r1, #0x2c] - cmp r2, r0 - beq _0801B910 - bl DeleteThisEntity - b _0801B934 - .align 2, 0 -_0801B90C: .4byte gPlayerState -_0801B910: - ldrb r0, [r1, #0x1e] - cmp r0, #0 - bne _0801B91E - str r0, [r1, #0x2c] - bl DeleteThisEntity - b _0801B934 -_0801B91E: - ldrb r1, [r2, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r2, #0x10] - adds r1, r2, #0 - adds r1, #0x3c - movs r0, #0x21 - strb r0, [r1] - adds r0, r2, #0 - bl sub_0801B938 -_0801B934: - pop {pc} - .align 2, 0 - - thumb_func_start sub_0801B938 -sub_0801B938: @ 0x0801B938 - push {r4, lr} - adds r4, r0, #0 - ldrb r1, [r4, #0x14] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _0801B960 - ldr r3, _0801B95C @ =gPlayerEntity - ldrb r1, [r3, #0x18] - lsls r1, r1, #0x19 - lsrs r1, r1, #0x1f - movs r0, #1 - eors r1, r0 - lsls r1, r1, #6 - ldrb r2, [r4, #0x18] - subs r0, #0x42 - b _0801B96E - .align 2, 0 -_0801B95C: .4byte gPlayerEntity -_0801B960: - ldr r3, _0801B998 @ =gPlayerEntity - ldrb r0, [r3, #0x18] - movs r1, #0x40 - ands r1, r0 - ldrb r2, [r4, #0x18] - movs r0, #0x41 - rsbs r0, r0, #0 -_0801B96E: - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x18] - adds r0, r3, #0 - adds r0, #0x58 - ldrb r0, [r0] - adds r0, #0x68 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #3 - bhi _0801B99C - ldrb r0, [r3, #0x1e] - adds r0, #0x2e - strb r0, [r4, #0x1e] - ldrb r1, [r4, #0x1e] - ldrh r2, [r4, #0x12] - adds r0, r4, #0 - bl sub_080042D0 - b _0801B9A0 - .align 2, 0 -_0801B998: .4byte gPlayerEntity -_0801B99C: - movs r0, #0xff - strb r0, [r4, #0x1e] -_0801B9A0: - ldrb r3, [r4, #0x14] - lsrs r3, r3, #1 - lsls r0, r3, #3 - ldr r1, _0801B9E0 @ =gUnk_080B7850 - adds r0, r0, r1 - str r0, [r4, #0x48] - lsls r3, r3, #1 - ldr r0, _0801B9E4 @ =gUnk_080B7848 - adds r3, r3, r0 - ldr r0, _0801B9E8 @ =gPlayerState - 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 r2, #0 - ldrsb r2, [r3, r2] - ldrb r3, [r3, #1] - lsls r3, r3, #0x18 - asrs r3, r3, #0x18 - adds r0, r4, #0 - bl sub_08008782 - ldr r1, _0801B9EC @ =gPlayerEntity - adds r0, r4, #0 - bl sub_08078E84 - pop {r4, pc} - .align 2, 0 -_0801B9E0: .4byte gUnk_080B7850 -_0801B9E4: .4byte gUnk_080B7848 -_0801B9E8: .4byte gPlayerState -_0801B9EC: .4byte gPlayerEntity - - thumb_func_start sub_0801B9F0 -sub_0801B9F0: @ 0x0801B9F0 - push {lr} - ldrb r2, [r0, #0x10] - movs r1, #0x7f - ands r1, r2 - strb r1, [r0, #0x10] - bl sub_08017744 - pop {pc} diff --git a/asm/playerItem/playerItemGustJar.s b/asm/playerItem/playerItemGustJar.s deleted file mode 100644 index 8997e208..00000000 --- a/asm/playerItem/playerItemGustJar.s +++ /dev/null @@ -1,411 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start PlayerItemGustJar -PlayerItemGustJar: @ 0x080ADA30 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _080ADA60 @ =gPlayerState - ldr r0, [r1, #0x2c] - cmp r0, r4 - bne _080ADA42 - ldrb r0, [r1, #0x1c] - cmp r0, #0 - bne _080ADA46 -_080ADA42: - bl DeleteThisEntity -_080ADA46: - ldr r1, _080ADA64 @ =gUnk_08132700 - ldrb r0, [r4, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r4, #0 - bl _call_via_r1 - ldr r1, _080ADA68 @ =gPlayerEntity - adds r0, r4, #0 - bl sub_08078E84 - pop {r4, pc} - .align 2, 0 -_080ADA60: .4byte gPlayerState -_080ADA64: .4byte gUnk_08132700 -_080ADA68: .4byte gPlayerEntity - - - thumb_func_start sub_080ADA6C -sub_080ADA6C: @ 0x080ADA6C - push {r4, lr} - adds r4, r0, #0 - movs r0, #1 - strb r0, [r4, #0xc] - movs r0, #0xf - strb r0, [r4, #0xf] - ldr r0, _080ADAA4 @ =gUnk_08132B28 - str r0, [r4, #0x48] - movs r1, #3 - strb r1, [r0, #4] - strb r1, [r0, #3] - movs r1, #6 - strb r1, [r0, #5] - strb r1, [r0, #2] - adds r0, r4, #0 - bl sub_080ADC84 - adds r0, r4, #0 - movs r1, #1 - movs r2, #3 - bl sub_080AE008 - ldrb r1, [r4, #0x14] - lsrs r1, r1, #1 - adds r0, r4, #0 - bl InitAnimationForceUpdate - pop {r4, pc} - .align 2, 0 -_080ADAA4: .4byte gUnk_08132B28 - - thumb_func_start sub_080ADAA8 -sub_080ADAA8: @ 0x080ADAA8 - push {r4, lr} - adds r4, r0, #0 - bl sub_080ADC84 - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080ADACC - movs r0, #2 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #0 - bl sub_080ADCA0 - b _080ADAD2 -_080ADACC: - adds r0, r4, #0 - bl UpdateAnimationSingleFrame -_080ADAD2: - pop {r4, pc} - - thumb_func_start sub_080ADAD4 -sub_080ADAD4: @ 0x080ADAD4 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r3, _080ADAF4 @ =gPlayerState - ldrb r1, [r3, #0x1c] - adds r0, r1, #0 - cmp r0, #3 - bne _080ADAFC - ldrb r0, [r4, #0xc] - adds r0, #1 - strb r0, [r4, #0xc] - ldr r0, _080ADAF8 @ =gPlayerEntity - ldrb r1, [r0, #0x14] - lsrs r1, r1, #1 - adds r1, #8 - b _080ADB0C - .align 2, 0 -_080ADAF4: .4byte gPlayerState -_080ADAF8: .4byte gPlayerEntity -_080ADAFC: - cmp r0, #6 - bne _080ADB18 - movs r0, #4 - strb r0, [r4, #0xc] - ldr r0, _080ADB14 @ =gPlayerEntity - ldrb r1, [r0, #0x14] - lsrs r1, r1, #1 - adds r1, #4 -_080ADB0C: - adds r0, r4, #0 - bl InitAnimationForceUpdate - b _080ADC08 - .align 2, 0 -_080ADB14: .4byte gPlayerEntity -_080ADB18: - movs r5, #0 - ldrb r0, [r4, #0xa] - cmp r0, #0 - beq _080ADB58 - cmp r0, #1 - bne _080ADB36 - adds r0, r4, #0 - movs r1, #4 - bl sub_080ADCA0 - movs r0, #0x18 - strb r0, [r4, #0xe] - movs r0, #2 - strb r0, [r4, #0xa] - b _080ADBE0 -_080ADB36: - adds r0, r4, #0 - movs r1, #1 - bl sub_080ADCDC - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0xff - bne _080ADBE0 - adds r0, r4, #0 - movs r1, #0 - bl sub_080ADCA0 - strb r5, [r4, #0xa] - b _080ADBE0 -_080ADB58: - movs r0, #0xf - ands r0, r1 - cmp r0, #7 - bne _080ADB68 - adds r1, r4, #0 - adds r1, #0x59 - movs r0, #0x7f - strb r0, [r1] -_080ADB68: - ldrb r0, [r3, #0x1d] - cmp r0, #2 - beq _080ADB94 - cmp r0, #2 - bgt _080ADB78 - cmp r0, #1 - beq _080ADBB0 - b _080ADBCA -_080ADB78: - cmp r0, #3 - bne _080ADBCA - adds r0, r4, #0 - movs r1, #3 - bl sub_080ADCDC - ldrb r1, [r4, #0x1a] - movs r0, #0x10 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x1a] - movs r2, #3 - movs r5, #0xe9 - b _080ADBCA -_080ADB94: - adds r0, r4, #0 - movs r1, #2 - bl sub_080ADCDC - ldrb r0, [r4, #0x1a] - movs r1, #0x10 - rsbs r1, r1, #0 - ands r1, r0 - movs r0, #4 - orrs r1, r0 - strb r1, [r4, #0x1a] - movs r2, #2 - movs r5, #0xe8 - b _080ADBCA -_080ADBB0: - adds r0, r4, #0 - movs r1, #1 - bl sub_080ADCDC - ldrb r0, [r4, #0x1a] - movs r1, #0x10 - rsbs r1, r1, #0 - ands r1, r0 - movs r0, #1 - orrs r1, r0 - strb r1, [r4, #0x1a] - movs r2, #1 - movs r5, #0xe7 -_080ADBCA: - ldr r0, _080ADC0C @ =gPlayerState - ldrb r1, [r0, #0x1c] - movs r0, #0xf - ands r0, r1 - cmp r0, #7 - bne _080ADBDA - movs r5, #0xee - movs r2, #1 -_080ADBDA: - ldrb r0, [r4, #0xf] - subs r0, r0, r2 - strb r0, [r4, #0xf] -_080ADBE0: - movs r0, #0xf - ldrsb r0, [r4, r0] - cmp r0, #0 - bge _080ADBF6 - cmp r5, #0 - beq _080ADBF2 - adds r0, r5, #0 - bl SoundReq -_080ADBF2: - movs r0, #0xf - strb r0, [r4, #0xf] -_080ADBF6: - ldr r2, _080ADC10 @ =gPlayerEntity - adds r0, r2, #0 - adds r0, #0x5a - ldrb r0, [r0] - movs r1, #0x7f - ands r1, r0 - ldrb r0, [r2, #0x1e] - subs r0, r0, r1 - strb r0, [r4, #0x1e] -_080ADC08: - pop {r4, r5, pc} - .align 2, 0 -_080ADC0C: .4byte gPlayerState -_080ADC10: .4byte gPlayerEntity - - thumb_func_start sub_080ADC14 -sub_080ADC14: @ 0x080ADC14 - push {r4, lr} - adds r4, r0, #0 - ldr r0, _080ADC40 @ =gPlayerState - ldrb r0, [r0, #0x1c] - movs r1, #0xf - ands r1, r0 - cmp r1, #1 - beq _080ADC48 - cmp r1, #6 - bne _080ADC56 - ldrb r0, [r4, #0xc] - adds r0, #1 - strb r0, [r4, #0xc] - ldr r0, _080ADC44 @ =gPlayerEntity - ldrb r1, [r0, #0x14] - lsrs r1, r1, #1 - adds r1, #4 - adds r0, r4, #0 - bl InitAnimationForceUpdate - b _080ADC5C - .align 2, 0 -_080ADC40: .4byte gPlayerState -_080ADC44: .4byte gPlayerEntity -_080ADC48: - adds r0, r4, #0 - movs r1, #0 - bl sub_080ADCA0 - movs r0, #2 - strb r0, [r4, #0xc] - b _080ADC5C -_080ADC56: - adds r0, r4, #0 - bl UpdateAnimationSingleFrame -_080ADC5C: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080ADC60 -sub_080ADC60: @ 0x080ADC60 - push {lr} - adds r2, r0, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080ADC7C - ldrb r1, [r2, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r2, #0x18] - b _080ADC82 -_080ADC7C: - adds r0, r2, #0 - bl UpdateAnimationSingleFrame -_080ADC82: - pop {pc} - - thumb_func_start sub_080ADC84 -sub_080ADC84: @ 0x080ADC84 - ldr r1, _080ADC9C @ =gPlayerEntity - ldrb r1, [r1, #0x18] - movs r2, #0x40 - ands r2, r1 - ldrb r3, [r0, #0x18] - movs r1, #0x41 - rsbs r1, r1, #0 - ands r1, r3 - orrs r1, r2 - strb r1, [r0, #0x18] - bx lr - .align 2, 0 -_080ADC9C: .4byte gPlayerEntity - - thumb_func_start sub_080ADCA0 -sub_080ADCA0: @ 0x080ADCA0 - push {r4, lr} - ldr r3, _080ADCD4 @ =gUnk_08132714 - ldr r2, _080ADCD8 @ =gPlayerEntity - ldrb r2, [r2, #0x14] - lsrs r2, r2, #1 - adds r1, r1, r2 - lsls r1, r1, #2 - adds r1, r1, r3 - ldr r2, [r1] - str r2, [r0, #0x5c] - ldrb r1, [r2] - adds r3, r0, #0 - adds r3, #0x58 - strb r1, [r3] - adds r1, r2, #1 - str r1, [r0, #0x5c] - ldrb r2, [r2, #1] - movs r4, #0x59 - strb r2, [r4, r0] - adds r1, #1 - str r1, [r0, #0x5c] - ldrb r1, [r3] - ldrh r2, [r0, #0x12] - bl sub_080042D0 - pop {r4, pc} - .align 2, 0 -_080ADCD4: .4byte gUnk_08132714 -_080ADCD8: .4byte gPlayerEntity - - thumb_func_start sub_080ADCDC -sub_080ADCDC: @ 0x080ADCDC - push {r4, r5, lr} - adds r3, r0, #0 - movs r0, #0x59 - adds r0, r0, r3 - mov ip, r0 - ldrb r0, [r0] - subs r0, r0, r1 - mov r1, ip - strb r0, [r1] - lsls r0, r0, #0x18 - cmp r0, #0 - bgt _080ADD2E - ldr r1, [r3, #0x5c] - ldrb r0, [r1] - cmp r0, #0xff - bne _080ADD06 - adds r0, r1, #1 - str r0, [r3, #0x5c] - ldrb r1, [r1, #1] - subs r0, r0, r1 - str r0, [r3, #0x5c] -_080ADD06: - ldr r1, [r3, #0x5c] - ldrb r0, [r1] - adds r2, r3, #0 - adds r2, #0x58 - strb r0, [r2] - adds r1, #1 - str r1, [r3, #0x5c] - ldrb r0, [r1] - mov r4, ip - ldrb r4, [r4] - adds r0, r0, r4 - mov r5, ip - strb r0, [r5] - adds r1, #1 - str r1, [r3, #0x5c] - ldrb r1, [r2] - ldrh r2, [r3, #0x12] - adds r0, r3, #0 - bl sub_080042D0 -_080ADD2E: - pop {r4, r5, pc} diff --git a/asm/playerItem/playerItemSword.s b/asm/playerItem/playerItemSword.s deleted file mode 100644 index 7e574412..00000000 --- a/asm/playerItem/playerItemSword.s +++ /dev/null @@ -1,898 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - 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/asm/playerItem/playerItemSwordBeam.s b/asm/playerItem/playerItemSwordBeam.s deleted file mode 100644 index 96b812bd..00000000 --- a/asm/playerItem/playerItemSwordBeam.s +++ /dev/null @@ -1,259 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start PlayerItemSwordBeam -PlayerItemSwordBeam: @ 0x08019480 - push {lr} - ldr r2, _08019494 @ =gUnk_080B43F4 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08019494: .4byte gUnk_080B43F4 - - thumb_func_start sub_08019498 -sub_08019498: @ 0x08019498 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _08019504 @ =gPlayerEntity - adds r0, r4, #0 - adds r1, r5, #0 - bl CopyPosition - ldrb r0, [r5, #0xc] - adds r0, #1 - movs r2, #0 - strb r0, [r5, #0xc] - ldrb r1, [r5, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r5, #0x18] - adds r4, #0x3c - ldrb r0, [r4] - adds r0, #1 - adds r1, r5, #0 - adds r1, #0x3c - strb r0, [r1] - ldr r0, _08019508 @ =gUnk_080B4408 - str r0, [r5, #0x48] - movs r0, #0xe0 - lsls r0, r0, #2 - strh r0, [r5, #0x24] - movs r0, #2 - str r0, [r5, #0x74] - str r2, [r5, #0x70] - adds r0, r5, #0 - adds r0, #0x38 - ldrb r0, [r0] - cmp r0, #2 - bne _080194E6 - movs r0, #1 - strb r0, [r5, #0xb] -_080194E6: - ldrb r0, [r5, #0x14] - lsls r0, r0, #2 - strb r0, [r5, #0x15] - movs r0, #0x3c - str r0, [r5, #0x6c] - ldrb r0, [r5, #0x14] - adds r2, r0, #0 - cmp r0, #2 - beq _08019534 - cmp r0, #2 - bgt _0801950C - cmp r0, #0 - beq _08019516 - b _0801954E - .align 2, 0 -_08019504: .4byte gPlayerEntity -_08019508: .4byte gUnk_080B4408 -_0801950C: - cmp r0, #4 - beq _0801952C - cmp r0, #6 - beq _08019542 - b _0801954E -_08019516: - ldrh r0, [r5, #0x2e] - subs r0, #3 - strh r0, [r5, #0x2e] - ldrh r0, [r5, #0x32] - subs r0, #8 - strh r0, [r5, #0x32] - ldrb r0, [r5, #0x18] - movs r1, #0x80 - orrs r0, r1 - strb r0, [r5, #0x18] - b _0801954E -_0801952C: - ldrh r0, [r5, #0x2e] - adds r0, #2 - strh r0, [r5, #0x2e] - b _0801954E -_08019534: - ldrb r0, [r5, #0x18] - movs r1, #0x40 - orrs r0, r1 - strb r0, [r5, #0x18] - ldrh r0, [r5, #0x2e] - adds r0, #1 - b _08019546 -_08019542: - ldrh r0, [r5, #0x2e] - subs r0, #1 -_08019546: - strh r0, [r5, #0x2e] - ldrh r0, [r5, #0x32] - subs r0, #4 - strh r0, [r5, #0x32] -_0801954E: - ldr r1, _08019578 @ =gUnk_080B43FC - lsrs r0, r2, #1 - adds r0, r0, r1 - ldrb r1, [r0] - adds r0, r5, #0 - bl InitializeAnimation - adds r0, r5, #0 - bl sub_0801766C - adds r0, r5, #0 - bl sub_0806F69C - adds r0, r5, #0 - bl sub_08019580 - ldr r0, _0801957C @ =0x0000013F - bl SoundReq - pop {r4, r5, pc} - .align 2, 0 -_08019578: .4byte gUnk_080B43FC -_0801957C: .4byte 0x0000013F - - thumb_func_start sub_08019580 -sub_08019580: @ 0x08019580 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x6c] - subs r0, #1 - str r0, [r4, #0x6c] - movs r1, #1 - rsbs r1, r1, #0 - cmp r0, r1 - beq _08019638 - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_0806F69C - ldrb r0, [r4, #0xe] - adds r0, #1 - strb r0, [r4, #0xe] - ldrb r0, [r4, #0xb] - cmp r0, #0 - bne _080195B0 - adds r0, r4, #0 - bl sub_0800451C -_080195B0: - movs r1, #0x2e - ldrsh r0, [r4, r1] - ldr r2, _0801962C @ =gRoomControls - ldrh r1, [r2, #6] - subs r0, r0, r1 - asrs r0, r0, #4 - movs r3, #0x3f - ands r0, r3 - movs r5, #0x32 - ldrsh r1, [r4, r5] - ldrh r2, [r2, #8] - subs r1, r1, r2 - asrs r1, r1, #4 - ands r1, r3 - lsls r1, r1, #6 - orrs r0, r1 - ldr r1, _08019630 @ =gPlayerEntity - adds r1, #0x38 - ldrb r1, [r1] - movs r2, #0x80 - bl sub_080002F0 - cmp r0, #0 - bne _08019602 - ldr r1, _08019634 @ =gUnk_08003E44 - movs r0, #0x2e - ldrsh r2, [r4, r0] - movs r5, #0x32 - ldrsh r3, [r4, r5] - adds r0, r4, #0 - bl sub_080040D8 - cmp r0, #0 - beq _08019602 - adds r0, r4, #0 - movs r1, #0x19 - movs r2, #0 - bl CreateFx - bl DeleteThisEntity -_08019602: - adds r0, r4, #0 - adds r0, #0x41 - ldrb r0, [r0] - cmp r0, #0 - beq _0801961A - adds r0, r4, #0 - movs r1, #0x19 - movs r2, #0 - bl CreateFx - bl DeleteThisEntity -_0801961A: - adds r0, r4, #0 - movs r1, #0xc - bl sub_08008790 - cmp r0, #0 - beq _0801963C - bl DeleteThisEntity - b _0801963C - .align 2, 0 -_0801962C: .4byte gRoomControls -_08019630: .4byte gPlayerEntity -_08019634: .4byte gUnk_08003E44 -_08019638: - bl DeleteThisEntity -_0801963C: - adds r0, r4, #0 - bl sub_08019644 - pop {r4, r5, pc} - - thumb_func_start sub_08019644 -sub_08019644: @ 0x08019644 - push {lr} - adds r2, r0, #0 - ldr r0, [r2, #0x74] - subs r1, r0, #1 - str r1, [r2, #0x74] - cmp r1, #0 - bne _08019674 - movs r0, #2 - str r0, [r2, #0x74] - ldr r0, [r2, #0x70] - adds r0, #1 - str r0, [r2, #0x70] - ldr r3, _08019678 @ =gUnk_080B4400 - adds r0, r0, r3 - ldrb r0, [r0] - cmp r0, #0xff - bne _08019668 - str r1, [r2, #0x70] -_08019668: - ldr r0, [r2, #0x70] - adds r0, r0, r3 - ldrb r1, [r0] - adds r0, r2, #0 - bl sub_0801D2B4 -_08019674: - pop {pc} - .align 2, 0 -_08019678: .4byte gUnk_080B4400 diff --git a/asm/playerItem/playerItemSwordSpin.s b/asm/playerItem/playerItemSwordSpin.s deleted file mode 100644 index d0accd5b..00000000 --- a/asm/playerItem/playerItemSwordSpin.s +++ /dev/null @@ -1,610 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start PlayerItemSwordSpin -PlayerItemSwordSpin: @ 0x0801BA00 - push {lr} - ldr r2, _0801BA14 @ =gUnk_080B7870 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0801BA14: .4byte gUnk_080B7870 - - thumb_func_start sub_0801BA18 -sub_0801BA18: @ 0x0801BA18 - push {r4, lr} - adds r4, r0, #0 - adds r1, r4, #0 - adds r1, #0x68 - ldrb r0, [r1] - cmp r0, #0x36 - bne _0801BA2A - movs r0, #0x36 - b _0801BA34 -_0801BA2A: - ldrb r1, [r1] - ldr r0, _0801BA4C @ =gSave - adds r0, r0, r1 - adds r0, #0x9a - ldrb r0, [r0] -_0801BA34: - adds r1, r4, #0 - adds r1, #0x6f - strb r0, [r1] - subs r0, #0x20 - cmp r0, #0x11 - bhi _0801BB02 - lsls r0, r0, #2 - ldr r1, _0801BA50 @ =_0801BA54 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801BA4C: .4byte gSave -_0801BA50: .4byte _0801BA54 -_0801BA54: @ jump table - .4byte _0801BA9C @ case 0 - .4byte _0801BAF8 @ case 1 - .4byte _0801BAF8 @ case 2 - .4byte _0801BAF8 @ case 3 - .4byte _0801BAF8 @ case 4 - .4byte _0801BAF8 @ case 5 - .4byte _0801BB02 @ case 6 - .4byte _0801BB02 @ case 7 - .4byte _0801BB02 @ case 8 - .4byte _0801BAF8 @ case 9 - .4byte _0801BAF8 @ case 10 - .4byte _0801BAF8 @ case 11 - .4byte _0801BAF8 @ case 12 - .4byte _0801BAF8 @ case 13 - .4byte _0801BAF8 @ case 14 - .4byte _0801BB02 @ case 15 - .4byte _0801BB02 @ case 16 - .4byte _0801BB02 @ case 17 -_0801BA9C: - adds r0, r4, #0 - bl AllocMutableHitbox - cmp r0, #0 - beq _0801BB26 - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - ldr r1, _0801BAF4 @ =gPlayerEntity - adds r0, r1, #0 - adds r0, #0x3c - ldrb r0, [r0] - adds r0, #1 - movs r2, #0x20 - adds r3, r4, #0 - adds r3, #0x3c - orrs r0, r2 - strb r0, [r3] - adds r1, #0x3b - ldrb r0, [r1] - adds r1, r4, #0 - adds r1, #0x3b - strb r0, [r1] - adds r1, #5 - movs r0, #0x1f - strb r0, [r1] - movs r0, #1 - strb r0, [r4, #0xa] - movs r0, #0x20 - strb r0, [r4, #0xb] - movs r0, #0x52 - strb r0, [r4, #0xe] - movs r0, #0x1b - strb r0, [r4, #0xf] - adds r0, r4, #0 - bl sub_0801766C - movs r0, #0xee - lsls r0, r0, #1 - bl SoundReq - b _0801BB0A - .align 2, 0 -_0801BAF4: .4byte gPlayerEntity -_0801BAF8: - movs r0, #0xd5 - strb r0, [r4, #0xe] - movs r0, #0x3c - strb r0, [r4, #0xf] - b _0801BB0A -_0801BB02: - movs r1, #0 - movs r0, #0x37 - strb r0, [r4, #0xe] - strb r1, [r4, #0xf] -_0801BB0A: - movs r0, #1 - strb r0, [r4, #0xc] - movs r0, #0xff - strb r0, [r4, #0x1e] - ldr r0, _0801BB28 @ =gPlayerState - str r4, [r0, #0x2c] - adds r0, r4, #0 - movs r1, #1 - movs r2, #3 - bl sub_080AE008 - adds r0, r4, #0 - bl sub_0801BB2C -_0801BB26: - pop {r4, pc} - .align 2, 0 -_0801BB28: .4byte gPlayerState - - thumb_func_start sub_0801BB2C -sub_0801BB2C: @ 0x0801BB2C - push {r4, r5, lr} - adds r5, r0, #0 - ldr r0, _0801BB88 @ =gPlayerState - ldr r0, [r0, #0x2c] - cmp r0, r5 - beq _0801BB68 - ldrb r0, [r5, #0xa] - cmp r0, #1 - bne _0801BB64 - ldrb r0, [r5, #0xb] - cmp r0, #0x20 - beq _0801BB64 - adds r0, r5, #0 - adds r0, #0x68 - ldrb r4, [r0] - subs r4, #0x1c - ldrb r0, [r5, #0xb] - adds r1, r4, #0 - bl SetBottleContents - ldrb r0, [r5, #0xb] - adds r1, r4, #0 - movs r2, #5 -.ifdef JP - bl CreateItemEntity -.else -.ifdef EU - bl CreateItemEntity -.else - bl sub_080A7C18 -.endif -.endif - ldr r0, _0801BB8C @ =0x00000109 - bl SoundReq -_0801BB64: - bl DeleteThisEntity -_0801BB68: - ldr r1, _0801BB90 @ =gPlayerEntity - adds r0, r5, #0 - bl sub_0801BDE8 - adds r0, r5, #0 - adds r0, #0x6f - ldrb r0, [r0] - subs r0, #0x20 - cmp r0, #0x11 - bhi _0801BC04 - lsls r0, r0, #2 - ldr r1, _0801BB94 @ =_0801BB98 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801BB88: .4byte gPlayerState -_0801BB8C: .4byte 0x00000109 -_0801BB90: .4byte gPlayerEntity -_0801BB94: .4byte _0801BB98 -_0801BB98: @ jump table - .4byte _0801BBE0 @ case 0 - .4byte _0801BBE8 @ case 1 - .4byte _0801BBE8 @ case 2 - .4byte _0801BBE8 @ case 3 - .4byte _0801BBE8 @ case 4 - .4byte _0801BBE8 @ case 5 - .4byte _0801BC04 @ case 6 - .4byte _0801BC04 @ case 7 - .4byte _0801BC04 @ case 8 - .4byte _0801BBE8 @ case 9 - .4byte _0801BBE8 @ case 10 - .4byte _0801BBE8 @ case 11 - .4byte _0801BBE8 @ case 12 - .4byte _0801BBE8 @ case 13 - .4byte _0801BBE8 @ case 14 - .4byte _0801BC04 @ case 15 - .4byte _0801BC04 @ case 16 - .4byte _0801BC04 @ case 17 -_0801BBE0: - adds r0, r5, #0 - bl sub_0801BC0C - b _0801BC0A -_0801BBE8: - ldr r0, _0801BC00 @ =gPlayerEntity - adds r1, r0, #0 - adds r1, #0x5a - ldrb r0, [r1] - cmp r0, #1 - bne _0801BC0A - movs r0, #0 - strb r0, [r1] - adds r0, r5, #0 - bl sub_0801BC14 - b _0801BC0A - .align 2, 0 -_0801BC00: .4byte gPlayerEntity -_0801BC04: - adds r0, r5, #0 - bl sub_0801BCB4 -_0801BC0A: - pop {r4, r5, pc} - - thumb_func_start sub_0801BC0C -sub_0801BC0C: @ 0x0801BC0C - push {lr} - bl sub_0801BE38 - pop {pc} - - thumb_func_start sub_0801BC14 -sub_0801BC14: @ 0x0801BC14 - push {r4, r5, r6, lr} - adds r4, r0, #0 - movs r6, #0x20 - movs r5, #0 - adds r0, #0x6f - ldrb r0, [r0] - subs r0, #0x21 - cmp r0, #0xd - bhi _0801BC98 - lsls r0, r0, #2 - ldr r1, _0801BC30 @ =_0801BC34 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801BC30: .4byte _0801BC34 -_0801BC34: @ jump table - .4byte _0801BC76 @ case 0 - .4byte _0801BC6C @ case 1 - .4byte _0801BC6E @ case 2 - .4byte _0801BC76 @ case 3 - .4byte _0801BC72 @ case 4 - .4byte _0801BC98 @ case 5 - .4byte _0801BC98 @ case 6 - .4byte _0801BC98 @ case 7 - .4byte _0801BC7A @ case 8 - .4byte _0801BC7A @ case 9 - .4byte _0801BC7A @ case 10 - .4byte _0801BC7A @ case 11 - .4byte _0801BC7A @ case 12 - .4byte _0801BC7A @ case 13 -_0801BC6C: - movs r6, #0x23 -_0801BC6E: - movs r5, #0x28 - b _0801BC98 -_0801BC72: - movs r5, #0x50 - b _0801BC98 -_0801BC76: - movs r5, #0xa0 - b _0801BC98 -_0801BC7A: - ldr r1, _0801BCB0 @ =gSave - adds r0, r4, #0 - adds r0, #0x6f - ldrb r0, [r0] - adds r2, r1, #0 - adds r2, #0xb3 - strb r0, [r2] - adds r1, #0xc6 - movs r0, #0xe1 - lsls r0, r0, #2 - strh r0, [r1] - movs r0, #0x88 - lsls r0, r0, #2 - bl SoundReq -_0801BC98: - adds r0, r5, #0 - bl ModHealth - adds r0, r4, #0 - adds r0, #0x68 - ldrb r1, [r0] - subs r1, #0x1c - adds r0, r6, #0 - bl SetBottleContents - pop {r4, r5, r6, pc} - .align 2, 0 -_0801BCB0: .4byte gSave - - thumb_func_start sub_0801BCB4 -sub_0801BCB4: @ 0x0801BCB4 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r0, _0801BCEC @ =gPlayerEntity - adds r0, #0x5a - ldrb r0, [r0] - cmp r0, #1 - bne _0801BD6C - adds r0, r4, #0 - adds r0, #0x6f - ldrb r1, [r0] - adds r5, r0, #0 - cmp r1, #0x36 - beq _0801BCDA - subs r0, #7 - ldrb r1, [r0] - subs r1, #0x1c - movs r0, #0x20 - bl SetBottleContents -_0801BCDA: - ldrb r0, [r5] - subs r0, #0x26 - cmp r0, #0xb - bhi _0801BD6C - lsls r0, r0, #2 - ldr r1, _0801BCF0 @ =_0801BCF4 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0801BCEC: .4byte gPlayerEntity -_0801BCF0: .4byte _0801BCF4 -_0801BCF4: @ jump table - .4byte _0801BD24 @ case 0 - .4byte _0801BD32 @ case 1 - .4byte _0801BD40 @ case 2 - .4byte _0801BD6C @ case 3 - .4byte _0801BD6C @ case 4 - .4byte _0801BD6C @ case 5 - .4byte _0801BD6C @ case 6 - .4byte _0801BD6C @ case 7 - .4byte _0801BD6C @ case 8 - .4byte _0801BD54 @ case 9 - .4byte _0801BD54 @ case 10 - .4byte _0801BD54 @ case 11 -_0801BD24: - adds r0, r4, #0 - movs r1, #0x68 - movs r2, #0 - movs r3, #0 - bl CreateObjectWithParent - b _0801BD6C -_0801BD32: - adds r0, r4, #0 - movs r1, #0x68 - movs r2, #1 - movs r3, #1 - bl CreateObjectWithParent - b _0801BD6C -_0801BD40: - adds r0, r4, #0 - movs r1, #0x68 - movs r2, #2 - movs r3, #2 - bl CreateObjectWithParent - movs r0, #0x20 - bl ModHealth - b _0801BD6C -_0801BD54: - ldr r1, _0801BD88 @ =gSave - ldrb r0, [r5] - adds r2, r1, #0 - adds r2, #0xb2 - strb r0, [r2] - adds r1, #0xc4 - movs r0, #0xe1 - lsls r0, r0, #4 - strh r0, [r1] - ldr r0, _0801BD8C @ =0x000001CF - bl SoundReq -_0801BD6C: - ldr r0, _0801BD90 @ =gPlayerEntity - adds r0, #0x5a - ldrb r0, [r0] - cmp r0, #2 - bne _0801BDAE - adds r0, r4, #0 - adds r0, #0x6f - ldrb r0, [r0] - cmp r0, #0x26 - beq _0801BD94 - cmp r0, #0x27 - beq _0801BDA2 - b _0801BDAE - .align 2, 0 -_0801BD88: .4byte gSave -_0801BD8C: .4byte 0x000001CF -_0801BD90: .4byte gPlayerEntity -_0801BD94: - adds r0, r4, #0 - movs r1, #0x68 - movs r2, #0 - movs r3, #0 - bl CreateObjectWithParent - b _0801BDAE -_0801BDA2: - adds r0, r4, #0 - movs r1, #0x68 - movs r2, #1 - movs r3, #1 - bl CreateObjectWithParent -_0801BDAE: - ldr r0, _0801BDC8 @ =gPlayerEntity - adds r0, #0x5a - ldrb r0, [r0] - cmp r0, #3 - bne _0801BDE6 - adds r0, r4, #0 - adds r0, #0x6f - ldrb r0, [r0] - cmp r0, #0x26 - beq _0801BDCC - cmp r0, #0x27 - beq _0801BDDA - b _0801BDE6 - .align 2, 0 -_0801BDC8: .4byte gPlayerEntity -_0801BDCC: - adds r0, r4, #0 - movs r1, #0x68 - movs r2, #0 - movs r3, #0 - bl CreateObjectWithParent - b _0801BDE6 -_0801BDDA: - adds r0, r4, #0 - movs r1, #0x68 - movs r2, #1 - movs r3, #0 - bl CreateObjectWithParent -_0801BDE6: - pop {r4, r5, pc} - - thumb_func_start sub_0801BDE8 -sub_0801BDE8: @ 0x0801BDE8 - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r1, #0 - ldrb r0, [r5, #0x1e] - ldrb r1, [r4, #0xe] - subs r0, r0, r1 - ldrb r1, [r4, #0xf] - adds r0, r0, r1 - ldrb r1, [r4, #0x1e] - cmp r0, r1 - beq _0801BE0A - strb r0, [r4, #0x1e] - ldrb r1, [r4, #0x1e] - ldrh r2, [r4, #0x12] - adds r0, r4, #0 - bl sub_080042D0 -_0801BE0A: - ldrb r1, [r5, #0x18] - lsls r1, r1, #0x19 - lsrs r1, r1, #0x1f - ldrb r0, [r5, #0x14] - lsrs r0, r0, #1 - movs r2, #1 - ands r0, r2 - eors r1, r0 - lsls r1, r1, #6 - ldrb r2, [r4, #0x18] - movs r0, #0x41 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, #0x18] - ldr r1, _0801BE34 @ =gPlayerEntity - adds r0, r4, #0 - bl sub_08078E84 - pop {r4, r5, pc} - .align 2, 0 -_0801BE34: .4byte gPlayerEntity - - thumb_func_start sub_0801BE38 -sub_0801BE38: @ 0x0801BE38 - push {r4, lr} - adds r4, r0, #0 - adds r2, r4, #0 - adds r2, #0x41 - ldrb r0, [r2] - movs r1, #0x7f - ands r1, r0 - cmp r1, #0x49 - beq _0801BE54 - cmp r1, #0x4d - beq _0801BE60 - movs r0, #0 - strb r0, [r2] - b _0801BE6A -_0801BE54: - movs r0, #0x28 - strb r0, [r4, #0xb] - adds r0, r4, #0 - bl sub_0801B9F0 - b _0801BE6A -_0801BE60: - movs r0, #0x27 - strb r0, [r4, #0xb] - adds r0, r4, #0 - bl sub_0801B9F0 -_0801BE6A: - ldrb r0, [r4, #0x1e] - subs r0, #0x1b - lsls r0, r0, #2 - ldr r1, _0801BE84 @ =gUnk_080B788A - adds r2, r0, r1 - ldrb r0, [r4, #0x18] - lsls r0, r0, #0x19 - cmp r0, #0 - bge _0801BE88 - ldr r1, [r4, #0x48] - ldrb r0, [r2] - rsbs r0, r0, #0 - b _0801BE8C - .align 2, 0 -_0801BE84: .4byte gUnk_080B788A -_0801BE88: - ldr r1, [r4, #0x48] - ldrb r0, [r2] -_0801BE8C: - strb r0, [r1] - ldr r1, [r4, #0x48] - ldrb r0, [r2, #1] - strb r0, [r1, #1] - ldr r1, [r4, #0x48] - ldrb r0, [r2, #2] - strb r0, [r1, #6] - ldr r1, [r4, #0x48] - ldrb r0, [r2, #3] - strb r0, [r1, #7] - ldr r0, _0801BEF0 @ =gPlayerEntity - adds r0, #0x5a - ldrb r0, [r0] - movs r1, #0xf - ands r1, r0 - cmp r1, #0 - beq _0801BEDE - ldrb r0, [r4, #0xb] - cmp r0, #0x20 - bne _0801BEE4 - subs r0, r1, #1 - lsls r0, r0, #1 - ldr r1, _0801BEF4 @ =gUnk_080B7878 - adds r2, r0, r1 - movs r1, #0 - ldrsb r1, [r2, r1] - ldrb r0, [r4, #0x18] - lsls r0, r0, #0x19 - cmp r0, #0 - bge _0801BECA - rsbs r1, r1, #0 -_0801BECA: - ldrb r2, [r2, #1] - lsls r2, r2, #0x18 - asrs r2, r2, #0x18 - adds r0, r4, #0 - bl sub_080002B4 - cmp r0, #0x10 - bne _0801BEDE - movs r0, #0x26 - strb r0, [r4, #0xb] -_0801BEDE: - ldrb r0, [r4, #0xb] - cmp r0, #0x20 - beq _0801BEEE -_0801BEE4: - ldr r2, _0801BEF0 @ =gPlayerEntity - ldrb r1, [r2, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r2, #0x10] -_0801BEEE: - pop {r4, pc} - .align 2, 0 -_0801BEF0: .4byte gPlayerEntity -_0801BEF4: .4byte gUnk_080B7878 diff --git a/include/functions.h b/include/functions.h index 33e7b70b..15e0d175 100644 --- a/include/functions.h +++ b/include/functions.h @@ -14,7 +14,7 @@ extern void ShowNPCDialogue(Entity*, Dialog*); extern void DoFade(u32, u32); extern u32 CheckKinstoneFused(u32); -extern void ForceEquipItem(u32, u8); +extern void ForceEquipItem(u32, u32); extern void LoadRoomEntityList(EntityData* listPtr); extern u32 GetAnimationState(Entity*); extern void SetChildOffset(Entity*, s32, s32, s32); @@ -54,7 +54,7 @@ extern void sub_080787A8(Entity*, u32); extern void sub_0806F118(Entity*); extern void sub_080791D0(); extern void sub_0805EC9C(); -extern void sub_0805EC60(); +extern void sub_0805EC60(Entity*); extern u32 sub_080045D4(s16, s16, u32, u32); extern void sub_0806F69C(Entity*); extern void sub_0805E3A0(void*, u32); @@ -82,9 +82,9 @@ extern u32 sub_080041A0(Entity*, Entity*, u32, u32); extern u32 sub_08049EE4(Entity*); extern Entity* sub_0804A98C(Entity*, u8, u8); extern u32 GetBottleContaining(u32); -extern void sub_08077E54(Entity*); +extern void sub_08077E54(ItemBehavior*); extern void sub_080042BA(Entity*, u32); -extern void sub_08077F24(ItemBehavior*, u32); +extern bool32 sub_08077F24(ItemBehavior*, u32); extern void sub_08079184(); extern void sub_08077F50(ItemBehavior* beh, u32 arg1); extern void sub_0807AA80(Entity*); @@ -257,7 +257,7 @@ extern void sub_08056360(); extern u32 sub_080542AC(u32); extern u32 sub_08079FC4(u32); extern void sub_0800455E(Entity*); -extern void sub_08008790(Entity*, u32); +extern u32* sub_08008790(Entity*, u32); extern void sub_0804ACF8(); extern void sub_08073904(Entity*); extern u32 sub_08056134(void); @@ -267,4 +267,18 @@ extern void sub_0805EEB4(u8*, u32); extern void sub_08056BDC(u32); extern void sub_08056F88(u32, u32); extern void sub_0805F8E4(u32 r0, WStruct* r1); + +extern Entity* sub_08077C94(ItemBehavior*, u32); +extern Entity* sub_08077C0C(ItemBehavior*, u32); +extern void sub_08077D38(ItemBehavior*, u32); +extern void sub_08077E78(ItemBehavior*, u32); +extern void UpdateItemAnim(ItemBehavior*); +extern void sub_0806F948(Entity*); +extern void sub_08077DF4(ItemBehavior*, u32); +extern void sub_08077BB8(ItemBehavior*); +extern bool32 sub_08077EFC(ItemBehavior*); + +extern void sub_08078E84(Entity*, Entity*); +extern void sub_080042D0(Entity*, u32, u16); + #endif diff --git a/include/player.h b/include/player.h index da6f324b..c4ef0f0f 100644 --- a/include/player.h +++ b/include/player.h @@ -148,6 +148,8 @@ typedef struct { /*0x4*/ u8 stateID; /*0x5*/ u8 field_0x5[10]; /*0xf*/ u8 field_0xf; + /*0x10*/ u8 field_0x10[8]; + /*0x18*/ u32 field_0x18; } ItemBehavior; extern void (*const gPlayerItemFunctions[])(Entity*); diff --git a/include/structures.h b/include/structures.h index a94d66ce..43455a79 100644 --- a/include/structures.h +++ b/include/structures.h @@ -159,6 +159,7 @@ extern u16 gBG3Buffer[0x800]; struct { u8 filler[0x70]; } extern gUnk_03000B80; +// TODO extern ItemBehavior gUnk_03000B80[4]; static_assert(sizeof(gUnk_03000B80) == 0x70); typedef struct { diff --git a/linker.ld b/linker.ld index 8ec9aac3..8f3dfc92 100644 --- a/linker.ld +++ b/linker.ld @@ -339,16 +339,14 @@ SECTIONS { asm/code_08018500.o(.text); src/code_08018C58.o(.text); src/playerItem/playerItem11.o(.text); - asm/playerItem11.o(.text); src/playerItem/playerItemBow.o(.text); - asm/playerItem/playerItemBow.o(.text); - asm/playerItem/playerItemSwordBeam.o(.text); + src/playerItem/playerItemSwordBeam.o(.text); asm/code_0801967C.o(.text); - asm/playerItem/playerItemBomb.o(.text); - asm/playerItem/playerItem3.o(.text); - asm/playerItem/playerItemC.o(.text); - asm/playerItem/playerItemSwordSpin.o(.text); - asm/playerItemCellOverwriteSet.o(.text); + src/playerItem/playerItemBomb.o(.text); + src/playerItem/playerItem3.o(.text); + src/playerItem/playerItemC.o(.text); + src/playerItem/playerItemSwordSpin.o(.text); + src/playerItem/playerItemCellOverwriteSet.o(.text); asm/code_0801C1D4.o(.text); asm/drawUI.o(.text); asm/code_0801C370.o(.text); @@ -495,7 +493,7 @@ SECTIONS { asm/modArrows.o(.text); src/code_0805436C.o(.text); asm/code_0805436C.o(.text); - asm/playerItem/playerItemLantern.o(.text); + src/playerItem/playerItemLantern.o(.text); asm/code_08054C04.o(.text); src/sub_08055E08.o(.text); src/main.o(.text); @@ -627,7 +625,6 @@ SECTIONS { src/npc/dog.o(.text); src/npc/syrup.o(.text); src/npc/rem.o(.text); - src/npc/rem.o(.text); src/npc/townMinish.o(.text); src/npc/librari.o(.text); src/npc/percy.o(.text); @@ -667,29 +664,27 @@ SECTIONS { asm/code_0806ED78.o(.text); src/coord.o(.text); asm/code_0806FA6C.o(.text); - asm/playerItem/playerItem12.o(.text); - asm/playerItem/playerItemPacciCane.o(.text); + src/playerItem/playerItem12.o(.text); + src/playerItem/playerItemPacciCane.o(.text); asm/code_0807059C.o(.text); src/player.o(.text); asm/stairsInteract.o(.text); asm/code_080732D0.o(.text); - asm/item/itemDebug.o(.text); - asm/item/itemSword.o(.text); - asm/item/itemLantern.o(.text); - asm/item/itemBoomerang.o(.text); - asm/item/itemBow.o(.text); - asm/item/itemBomb.o(.text); - asm/item/itemTryPickupObject.o(.text); - asm/item/itemRocsCape.o(.text); - asm/item/itemPegasusBoots.o(.text); - asm/code_080732D0.o(.text); - asm/ocarina.o(.text); + src/item/itemDebug.o(.text); + src/item/itemSword.o(.text); + src/item/itemLantern.o(.text); + src/item/itemBoomerang.o(.text); + src/item/itemBow.o(.text); + src/item/itemBomb.o(.text); + src/item/itemTryPickupObject.o(.text); + src/item/itemRocsCape.o(.text); + src/item/itemPegasusBoots.o(.text); + src/item/itemOcarina.o(.text); src/item/itemPacciCane.o(.text); src/item/itemShield.o(.text); src/item/itemGustJar.o(.text); - asm/item/itemGustJar.o(.text); - asm/item/itemMoleMitts.o(.text); - asm/item/itemJarEmpty.o(.text); + src/item/itemMoleMitts.o(.text); + src/item/itemJarEmpty.o(.text); asm/code_08077698.o(.text); asm/respawnPlayer.o(.text); src/code_08077B98.o(.text); @@ -919,8 +914,8 @@ SECTIONS { asm/sub_080A285C.o(.text); src/createObject.o(.text); asm/code_080A29BC.o(.text); - asm/playerItem/playerItemShield.o(.text); - asm/playerItem/playerItem15.o(.text); + src/playerItem/playerItemShield.o(.text); + src/playerItem/playerItem15.o(.text); #ifdef DEMO src/demoScreen.o(.text); #endif @@ -930,7 +925,7 @@ SECTIONS { asm/code_080A3BD0.o(.text); src/sub_080A554C.o(.text); asm/code_080A5574.o(.text); - asm/playerItem/playerItemSword.o(.text); + src/playerItem/playerItemSword.o(.text); asm/code_080A7C00.o(.text); src/projectile/projectile0.o(.text); src/projectile/projectile1.o(.text); @@ -969,12 +964,12 @@ SECTIONS { src/projectile/projectile22.o(.text); src/projectile/projectile23.o(.text); src/projectile/projectile24.o(.text); - asm/playerItem/playerItem10.o(.text); - asm/playerItem/playerItem13.o(.text); + src/playerItem/playerItem10.o(.text); + src/playerItem/playerItem13.o(.text); src/intro.o(.text); asm/sub_080AD8F0.o(.text); asm/code_080AD90C.o(.text); - asm/playerItem/playerItemGustJar.o(.text); + src/playerItem/playerItemGustJar.o(.text); asm/code_080ADD30.o(.text); /* library functions */ asm/m4a_asm.o(.text); diff --git a/src/code_0805436C.c b/src/code_0805436C.c index 5f8a1821..77fb95e8 100644 --- a/src/code_0805436C.c +++ b/src/code_0805436C.c @@ -34,16 +34,22 @@ extern void (*const gUnk_080FE2A0[])(); void ForceEquipItem(u32, u8); extern void sub_0807CAA0(u32, u32); +/* +Returns the slot the item is equipped in. +0: A +1: B +2: Not equipped +*/ u32 IsItemEquipped(u32 itemID) { - u32 ret; + u32 itemSlot; if (itemID == gSave.stats.itemOnA) - ret = 0; + itemSlot = 0; else if (itemID == gSave.stats.itemOnB) - ret = 1; + itemSlot = 1; else - ret = 2; - return ret; + itemSlot = 2; + return itemSlot; } NONMATCH("asm/non_matching/PutItemOnSlot.inc", void PutItemOnSlot(u32 itemID)) { diff --git a/src/code_08077B98.c b/src/code_08077B98.c index 86eb16eb..ca36a700 100644 --- a/src/code_08077B98.c +++ b/src/code_08077B98.c @@ -25,7 +25,8 @@ void sub_08077B98(UnkItemStruct* unk) { } } -void sub_08077BB8(UnkItemStruct* unk) { +void sub_08077BB8(ItemBehavior* beh) { + UnkItemStruct* unk = (UnkItemStruct*)beh; // @nocheckin u8* temp = sub_08077C54(unk); if (temp != NULL) { temp[0x10] = 0x20; diff --git a/src/code_08077DF4.c b/src/code_08077DF4.c index f3592e83..84a360f2 100644 --- a/src/code_08077DF4.c +++ b/src/code_08077DF4.c @@ -14,34 +14,36 @@ typedef struct { u8 unk[16]; } Unk_struct; -void sub_08077DF4(Entity* ent, u32 arg1) { +void sub_08077DF4(ItemBehavior* beh, u32 arg1) { + Entity* ent = (Entity*)beh; // @nocheckin *(u16*)&ent->flags = arg1; if ((arg1 & 0xff) > 0xb8) { arg1 += ent->type >> 1; } gPlayerEntity.spriteIndex = (short)(arg1 >> 8); InitAnimationForceUpdate(&gPlayerEntity, (u8)arg1); - sub_08077E54(ent); + sub_08077E54(beh); } -void UpdateItemAnim(Entity* ent) { +void UpdateItemAnim(ItemBehavior* beh) { UpdateAnimationSingleFrame(&gPlayerEntity); - sub_08077E54(ent); + sub_08077E54(beh); } -void sub_08077E3C(Entity* ent, u32 idx) { +void sub_08077E3C(ItemBehavior* ent, u32 idx) { sub_080042BA(&gPlayerEntity, idx); sub_08077E54(ent); } -void sub_08077E54(Entity* ent) { +void sub_08077E54(ItemBehavior* beh) { + Entity* ent = (Entity*)beh; // @nocheckin ent->action = gPlayerEntity.animIndex; *(u8*)&ent->spriteIndex = gPlayerEntity.frameIndex; ent->subAction = gPlayerEntity.frameDuration; ent->actionDelay = gPlayerEntity.frames.all; } -void sub_08077E78(void* arg0, u32 bits) { +void sub_08077E78(ItemBehavior* arg0, u32 bits) { u8* pbVar1; u32 not ; @@ -62,10 +64,11 @@ void sub_08077E78(void* arg0, u32 bits) { MemClear(arg0, 0x1c); } -u32 sub_08077EC8(Unk_struct* arg0) { +u32 sub_08077EC8(ItemBehavior* beh) { + Unk_struct* arg0 = (Unk_struct*)beh; // @nocheckin if ((gPlayerState.field_0x1a[1] & 8) != 0) { - sub_08077DF4((Entity*)arg0, 0x170); + sub_08077DF4(beh, 0x170); arg0->unk[7] = 0x28; arg0->unk[4] = 7; arg0->unk[15] = 6; @@ -75,15 +78,15 @@ u32 sub_08077EC8(Unk_struct* arg0) { } } -void sub_08077EFC(ItemBehavior* arg0) { - sub_08077F24(arg0, (u16)gPlayerState.field_0x90.HALF.LO); +bool32 sub_08077EFC(ItemBehavior* arg0) { + return sub_08077F24(arg0, (u16)gPlayerState.field_0x90.HALF.LO); } -void sub_08077F10(ItemBehavior* arg0) { - sub_08077F24(arg0, (u16)gPlayerState.field_0x90.HALF.HI); +bool32 sub_08077F10(ItemBehavior* arg0) { + return sub_08077F24(arg0, (u16)gPlayerState.field_0x90.HALF.HI); } -ASM_FUNC("asm/non_matching/sub_08077F24.inc", void sub_08077F24(ItemBehavior* beh, u32 arg1)) +ASM_FUNC("asm/non_matching/sub_08077F24.inc", bool32 sub_08077F24(ItemBehavior* beh, u32 arg1)) void sub_08077F50(ItemBehavior* beh, u32 arg1) { sub_08079184(); diff --git a/src/entity.c b/src/entity.c index acc2795c..f3fd7ca3 100644 --- a/src/entity.c +++ b/src/entity.c @@ -76,7 +76,7 @@ extern void sub_0806FE84(); extern void sub_080788E0(); extern void sub_08078954(); extern void sub_0805EC60(); -extern void sub_08017744(); +extern void sub_08017744(Entity*); extern void sub_0805E92C(); extern void UnloadHitbox(); extern void sub_0804AA1C(); diff --git a/src/item/itemBomb.c b/src/item/itemBomb.c new file mode 100644 index 00000000..0ed4d65a --- /dev/null +++ b/src/item/itemBomb.c @@ -0,0 +1,47 @@ +#include "item.h" +#include "coord.h" +#include "audio.h" +#include "functions.h" + +extern void (*const gUnk_0811BD98[])(ItemBehavior*, u32); + +extern Entity* CreatePlayerBomb(); +extern s8 gUnk_0811BDAC[]; +extern void ModBombs(s32); + +void ItemBomb(ItemBehavior* this, u32 arg1) { + gUnk_0811BD98[this->stateID](this, arg1); +} + +void sub_08075FF8(ItemBehavior* this, u32 arg1) { + Entity* entity; + u32 maxBombs; + u32 bombCount; + s8* tmp; + s32 x; + s32 y; + + if ((gPlayerState.jumpStatus | gPlayerState.field_0x3[1]) == 0) { + bombCount = 0; + for (entity = FindEntityByID(8, 2, 2); entity != NULL; entity = FindNextDuplicateID(entity, 2)) { + bombCount += 1; + } + maxBombs = this->behaviorID == 7 ? 3 : 1; + if (maxBombs > bombCount) { + entity = CreatePlayerBomb(this, 2); + if (entity != NULL) { + tmp = &gUnk_0811BDAC[gPlayerEntity.animationState & 6]; + // TODO fix array access + x = tmp[0] << 0x10; + y = tmp[1] << 0x10; + PositionRelative(&gPlayerEntity, entity, x, y); + ModBombs(-1); + SoundReq(SFX_104); + } + } + } + sub_08077E78(this, arg1); +} + +// TODO arg1 type not yet known, called by sub_080761C0 and sub_080762D8 +ASM_FUNC("asm/non_matching/itemBomb/sub_08076088.inc", void sub_08076088(ItemBehavior* this, void* arg1)) diff --git a/src/item/itemBoomerang.c b/src/item/itemBoomerang.c new file mode 100644 index 00000000..b443d6fb --- /dev/null +++ b/src/item/itemBoomerang.c @@ -0,0 +1,36 @@ +#include "item.h" +#include "functions.h" + +extern void (*const gUnk_0811BD78[])(ItemBehavior*, u32); + +extern void sub_08078F60(void); + +void ItemBoomerang(ItemBehavior* this, u32 arg1) { + gUnk_0811BD78[this->stateID](this, arg1); +} + +void sub_08075D2C(ItemBehavior* this, u32 arg1) { + if (((gPlayerState.field_0x3[1] & 8) == 0) && (sub_08077C94(this, this->behaviorID) == NULL)) { + this->field_0x5[4] |= 0xf; + sub_0806F948(&gPlayerEntity); + sub_08077C0C(this, 0xb); + sub_08077D38(this, arg1); + gPlayerState.field_0x3[1] |= 8; + } else { + sub_08077E78(this, arg1); + } +} + +void sub_08075D88(ItemBehavior* this, u32 arg1) { + if ((gPlayerState.field_0x3[1] & 0x80) == 0) { + if (((this->behaviorID == 0xc) && ((gPlayerState.field_0xa & 0x80) != 0)) && ((this->field_0x5[9] & 2) != 0)) { + sub_08078F60(); + return; + } + UpdateItemAnim(this); + if ((this->field_0x5[9] & 0x80) == 0) { + return; + } + } + sub_08077E78(this, arg1); +} diff --git a/src/item/itemBow.c b/src/item/itemBow.c new file mode 100644 index 00000000..9a4e5e89 --- /dev/null +++ b/src/item/itemBow.c @@ -0,0 +1,92 @@ +#include "item.h" +#include "functions.h" +#include "save.h" + +extern void (*const gUnk_0811BD80[])(ItemBehavior*, u32); + +extern void sub_08077E3C(ItemBehavior*, u32); + +void ItemBow(ItemBehavior* this, u32 arg1) { + gUnk_0811BD80[this->stateID](this, arg1); +} + +void sub_08075DF4(ItemBehavior* this, u32 arg1) { + if ((gPlayerState.field_0x3[1] & 8) == 0) { + this->field_0x5[4] |= 0x80; + sub_0806F948(&gPlayerEntity); + sub_08077BB8(this); + sub_08077D38(this, arg1); + gPlayerState.field_0x1d[4] = 1; + } else { + sub_08077E78(this, arg1); + } +} + +void sub_08075E40(ItemBehavior* this, u32 arg1) { + u8 bVar1; + + if (gPlayerState.field_0x1d[4] != 0) { + bVar1 = gPlayerState.field_0x3[1] & 0x80; + if (bVar1 == 0) { + UpdateItemAnim(this); + if ((this->field_0x5[9] & 0x80) != 0) { + this->stateID = 2; + this->field_0x5[4] &= 0x7f; + if (gSave.stats.arrowCount != 0) { + this->field_0xf = bVar1; + gPlayerState.field_0xa &= ~(8 >> arg1); + } + } + return; + } + } + gPlayerState.field_0x1d[4] = 0; + sub_08077E78(this, arg1); +} + +void sub_08075EC0(ItemBehavior* this, u32 arg1) { + u8 arrowCount; + s32 iVar2; + + arrowCount = gSave.stats.arrowCount; + iVar2 = sub_08077EFC(this); + if (iVar2 != 0 && arrowCount != 0) { + if (((gPlayerState.field_0x3[1] & 0x80) != 0) || (gPlayerState.field_0x1d[4] == 0)) { + gPlayerState.field_0x1d[4] = 0; + sub_08077E78(this, arg1); + } + } else { + gPlayerState.field_0xa = (8 >> arg1) | gPlayerState.field_0xa; + sub_08077DF4(this, 0x27c); + this->field_0xf = 0xf; + this->field_0x5[4] |= 0xf; + this->stateID = 3; + } +} + +void sub_08075F38(ItemBehavior* this, u32 arg1) { + if (((gPlayerState.field_0x3[1] & 0x80) == 0) && (gPlayerState.field_0x1d[4] != 0)) { + UpdateItemAnim(this); + if ((this->field_0x5[9] & 1) != 0) { + this->stateID = 4; + } + } else { + gPlayerState.field_0x1d[4] = 0; + sub_08077E78(this, arg1); + } +} + +void sub_08075F84(ItemBehavior* this, u32 arg1) { + if (((gPlayerState.field_0x3[1] & 0x80) == 0) && (gPlayerState.field_0x1d[4] != 0)) { + if (GetInventoryValue(0x70) == 1) { + sub_08077E3C(this, 5); + } else { + UpdateItemAnim(this); + } + if ((this->field_0x5[9] & 0x80) == 0) { + return; + } + } + gPlayerState.field_0x1d[4] = 0; + sub_08077E78(this, arg1); +} diff --git a/src/item/itemDebug.c b/src/item/itemDebug.c new file mode 100644 index 00000000..f8790cde --- /dev/null +++ b/src/item/itemDebug.c @@ -0,0 +1,9 @@ +#include "item.h" + +extern Entity* sub_08077BD4(ItemBehavior*); +extern void sub_08077E78(ItemBehavior*, u32); + +void ItemDebug(ItemBehavior* beh, u32 arg1) { + sub_08077BD4(beh); + sub_08077E78(beh, arg1); +} diff --git a/src/item/itemGustJar.c b/src/item/itemGustJar.c index ef25e097..12410354 100644 --- a/src/item/itemGustJar.c +++ b/src/item/itemGustJar.c @@ -1,10 +1,36 @@ #include "global.h" #include "entity.h" #include "item.h" +#include "functions.h" extern void (*const gUnk_0811BDF4[])(ItemBehavior* beh, u32); -void ItemGustJar(ItemBehavior* beh, u32 arg1) { +void ItemGustJar(ItemBehavior* this, u32 arg1) { gPlayerState.field_0xa8 = 3; - gUnk_0811BDF4[beh->stateID](beh, arg1); + gUnk_0811BDF4[this->stateID](this, arg1); } + +ASM_FUNC("asm/non_matching/itemGustJar/sub_08076DF4.inc", void sub_08076DF4(ItemBehavior* this, u32 arg1)) + +void sub_08076E60(ItemBehavior* this, u32 arg1) { + Entity* playerItem; + + if ((gPlayerState.field_0x1c & 0xf) == 0) { + sub_08077E78(this, arg1); + } + if ((this->field_0x5[9] & 0x80) != 0) { + this->stateID = 2; + sub_08077DF4(this, 0x504); + gPlayerState.field_0xa = gPlayerState.field_0xa & ~(8 >> arg1); + playerItem = CreatePlayerItem(0x10, 0, 0, 0); + if (playerItem != NULL) { + playerItem->parent = &gPlayerEntity; + } + } else { + UpdateItemAnim(this); + } +} + +ASM_FUNC("asm/non_matching/itemGustJar/sub_08076EC8.inc", void sub_08076EC8(ItemBehavior* this, u32 arg1)) + +ASM_FUNC("asm/non_matching/itemGustJar/sub_08076F64.inc", void sub_08076F64(ItemBehavior* this, u32 arg1)) diff --git a/src/item/itemJarEmpty.c b/src/item/itemJarEmpty.c new file mode 100644 index 00000000..2b94db7c --- /dev/null +++ b/src/item/itemJarEmpty.c @@ -0,0 +1,76 @@ +#include "item.h" +#include "save.h" +#include "functions.h" + +extern void (*const gUnk_0811BE28[])(ItemBehavior*, u32); + +extern u8 gUnk_02002AC8[]; +extern void sub_08077BB8(ItemBehavior*); + +void ItemJarEmpty(ItemBehavior* this, u32 arg1) { + gUnk_0811BE28[this->stateID](this, arg1); +} + +void sub_08077534(ItemBehavior* this, u32 arg1) { + u32 tmp; + sub_08077D38(this, arg1); + sub_0806F948(&gPlayerEntity); + sub_08077BB8(this); + this->field_0x5[4] |= 0xf; + tmp = this->behaviorID; + this->field_0x5[2] = gSave.filler86[tmp + 0x14]; + switch (this->field_0x5[2]) { + case 0x20: + sub_08077DF4(this, 0x614); + return; + case 0x21: + case 0x22: + case 0x23: + case 0x24: + case 0x25: + case 0x29: + case 0x2a: + case 0x2b: + case 0x2c: + case 0x2d: + case 0x2e: + this->stateID = 3; + gPlayerEntity.animationState = 4; + gPlayerEntity.spriteSettings.b.flipX = 0; + sub_08077DF4(this, 0x2df); + break; + case 0x2f: + case 0x30: + case 0x31: + default: + this->stateID = 3; + sub_08077DF4(this, 0x610); + break; + } + gPlayerEntity.flags &= 0x7f; +} + +void sub_08077618(ItemBehavior* this, u32 arg1) { + if ((this->field_0x5[9] & 0x80) != 0) { + sub_08077DF4(this, 0x618); + this->stateID += 1; + } else { + UpdateItemAnim(this); + } +} + +void sub_08077640(ItemBehavior* this, u32 arg1) { + UpdateItemAnim(this); + if ((this->field_0x5[9] & 0x80) != 0) { + gPlayerEntity.flags |= 0x80; + sub_08077E78(this, arg1); + } +} + +void sub_0807766C(ItemBehavior* this, u32 arg1) { + UpdateItemAnim(this); + if ((this->field_0x5[9] & 0x80) != 0) { + gPlayerEntity.flags |= 0x80; + sub_08077E78(this, arg1); + } +} diff --git a/src/item/itemLantern.c b/src/item/itemLantern.c new file mode 100644 index 00000000..51f52afe --- /dev/null +++ b/src/item/itemLantern.c @@ -0,0 +1,126 @@ +#include "item.h" +#include "functions.h" +#include "audio.h" + +extern void (*const gUnk_0811BD68[])(ItemBehavior*, u32); + +extern s8 gUnk_08126EEC[]; +extern Entity* sub_08077BD4(ItemBehavior*); + +extern bool32 sub_08077F10(ItemBehavior*); + +extern void sub_0807AB44(Entity*, s32, s32); + +void ItemLantern(ItemBehavior* this, u32 arg1) { + gUnk_0811BD68[this->stateID](this, arg1); +} + +void sub_08075A0C(ItemBehavior* this, u32 arg1) { + Entity* object; + u32 itemSlot; + s8* tmp; + itemSlot = IsItemEquipped(this->behaviorID); + if (gPlayerState.heldObject != 0 || gPlayerState.playerAction == 0x18 || gPlayerState.jumpStatus != 0 || + gPlayerState.field_0x2c != NULL || (gPlayerState.flags.all & 0x80) != 0) { + ForceEquipItem(0xf, itemSlot); + gPlayerState.flags.all &= 0xff7fffff; + ForceEquipItem(0xf, itemSlot); + sub_08077E78(this, arg1); + } else { + + this->field_0x5[4] |= 0x80; + sub_08077D38(this, arg1); + sub_08077BD4(this); + sub_0806F948(&gPlayerEntity); + this->behaviorID = 0x10; + ForceEquipItem(0x10, itemSlot); + tmp = &gUnk_08126EEC[gPlayerEntity.animationState & 6]; + object = CreateObjectWithParent(&gPlayerEntity, 0x45, 1, 0); + if (object != NULL) { + object->spriteVramOffset = gPlayerEntity.spriteVramOffset; + object->x.HALF.HI = tmp[0] + object->x.HALF.HI; + object->y.HALF.HI = tmp[1] + object->y.HALF.HI; + } + } +} + +#ifdef EU +ASM_FUNC("asm/non_matching/eu/sub_08075ADC.inc", void sub_08075ADC(ItemBehavior* this, u32 arg1)) +#else +void sub_08075ADC(ItemBehavior* this, u32 arg1) { + u32 bVar1; + + if (gPlayerState.field_0x2c != NULL || (this->field_0x5[9] & 1) == 0 || (gPlayerState.flags.all & 0x110) != 0 || + sub_08079D48() == 0) { + this->field_0xf = 0; + this->stateID += 1; + gPlayerState.flags.all |= 0x800000; + bVar1 = 8 >> arg1; + gPlayerState.field_0x3[1] = gPlayerState.field_0x3[1] & ~((bVar1 << 4) | bVar1); + bVar1 = ~bVar1; + gPlayerState.field_0xa = bVar1 & gPlayerState.field_0xa; + gPlayerState.keepFacing = bVar1 & gPlayerState.keepFacing; + SoundReq(SFX_ITEM_LANTERN_ON); + } else { + UpdateItemAnim(this); + } +} +#endif + +void sub_08075B54(ItemBehavior* this, u32 arg1) { + u32 bVar1; + u32 itemSlot; + Entity* object; + s8* tmp; + + if ((gPlayerState.flags.all & 0x110) == 0) { + itemSlot = IsItemEquipped(this->behaviorID); + if (!(((sub_08077F10(this) == 0) && (itemSlot < 2)) || (gPlayerState.jumpStatus != 0))) { + ForceEquipItem(0xf, itemSlot); + gPlayerState.flags.all &= 0xff7fffff; + sub_08077E78(this, arg1); + SoundReq(SFX_ITEM_LANTERN_OFF); + } else { + if (((gPlayerState.playerAction != 0x18) && (gPlayerEntity.frameIndex < 0x37)) && + ((u16)gPlayerEntity.spriteIndex == 6)) { + tmp = &gUnk_08126EEC[gPlayerEntity.animationState & 6]; + + if ((gPlayerState.jumpStatus == 0) && + (sub_080002F0(TILE(gPlayerEntity.x.HALF.HI + tmp[0], gPlayerEntity.y.HALF.HI + tmp[1]), + gPlayerEntity.collisionLayer, 0x40) != 0)) { + this->field_0xf = 0xf; + this->stateID += 1; + gPlayerEntity.field_0x7a.HWORD = 2; + object = CreateObjectWithParent(&gPlayerEntity, 0x45, 1, 0); + if (object != NULL) { + object->spriteVramOffset = gPlayerEntity.spriteVramOffset; + object->x.HALF.HI = tmp[0] + object->x.HALF.HI; + object->y.HALF.HI = tmp[1] + object->y.HALF.HI; + } + sub_08077DF4(this, 0x60c); + bVar1 = (8 >> (arg1)); + gPlayerState.field_0xa = bVar1 | gPlayerState.field_0xa; + gPlayerState.keepFacing = bVar1 | gPlayerState.keepFacing; + } + } + } + } +} + +void sub_08075C9C(ItemBehavior* this, u32 arg1) { + s8* tmp; + + UpdateItemAnim(this); + if ((this->field_0x5[9] & 0x10) != 0) { + tmp = &gUnk_08126EEC[gPlayerEntity.animationState & 6]; + sub_0807AB44(&gPlayerEntity, tmp[0], tmp[1]); + } + if ((this->field_0x5[9] & 0x80) != 0) { + this->field_0xf = 0; + this->stateID -= 1; + gPlayerState.field_0xa = (~(8 >> arg1)) & gPlayerState.field_0xa; + gPlayerState.keepFacing = (~(8 >> arg1)) & gPlayerState.keepFacing; + } else { + gPlayerEntity.field_0x7a.HWORD += 1; + } +} diff --git a/src/item/itemMoleMitts.c b/src/item/itemMoleMitts.c new file mode 100644 index 00000000..a30ef93a --- /dev/null +++ b/src/item/itemMoleMitts.c @@ -0,0 +1,101 @@ + +#include "item.h" +#include "functions.h" +#include "audio.h" + +extern void (*const gUnk_0811BE04[])(ItemBehavior*, u32); + +s32 sub_080774A0(void); + +extern u8 gUnk_0811BE14[]; +extern s32 sub_0800875A(Entity*, u32, ItemBehavior*); + +extern void sub_08079E08(); + +void ItemMoleMitts(ItemBehavior* this, u32 arg1) { + gUnk_0811BE04[this->stateID](this, arg1); +} + +void sub_08077130(ItemBehavior* this, u32 arg1) { + s32 iVar1; + + if (gPlayerState.jumpStatus == 0) { + sub_08077D38(this, arg1); + gPlayerState.field_0x3c[1] = 1; + this->field_0x5[4] |= 0x80; + iVar1 = sub_080774A0(); + if (iVar1 != 0) { + if (this->field_0x5[2] == 0) { + sub_08077DF4(this, 0x50c); + this->stateID = 2; + if (iVar1 == 0x56) { + if ((gPlayerEntity.animationState & 2) != 0) { + gPlayerEntity.y.HALF.HI = (gPlayerEntity.y.HALF.HI & 0xfff0) | 6; + } else { + gPlayerEntity.x.HALF.HI = (gPlayerEntity.x.HALF.HI & 0xfff0) | 8; + } + } + } + } else { + sub_08077DF4(this, 0x508); + this->stateID = 1; + } + } else { + sub_08077E78(this, arg1); + gPlayerState.field_0x3c[1] = 0; + } +} + +void sub_080771C8(ItemBehavior* this, u32 arg1) { + Entity* object; + + UpdateItemAnim(this); + if ((this->field_0x5[9] & 0x80) != 0) { + sub_08077E78(this, arg1); + gPlayerState.field_0x3c[1] = 0; + } else { + if (((this->field_0x5[9] & 0x20) != 0) && (this->field_0x5[3] == 0xff)) { + CreateObjectWithParent(&gPlayerEntity, 0x1e, this->field_0x5[9], 1); + } + if ((this->field_0x5[9] & 0x10) != 0) { + if (sub_0800875A(&gPlayerEntity, 0xd, this) == 0) { + sub_08077DF4(this, 0x520); + this->stateID = 3; + SoundReq(SFX_107); + } else { + if (this->field_0x5[3] != 0xff) { + object = CreateObjectWithParent(&gPlayerEntity, 0x1f, 0, this->field_0x2[1]); + if (object != NULL) { + object->actionDelay = this->field_0x5[2]; + object->field_0xf = this->field_0x5[3]; + object->animationState = gPlayerEntity.animationState & 6; + gPlayerEntity.frames.all = 0; + gPlayerEntity.frameDuration = gUnk_0811BE14[this->field_0x5[3]]; + } + } else { + if ((this->field_0x2[1] == 0x0f) && (this->field_0x5[2] == 0x17)) { + this->field_0x5[3] = 0; + } + } + SoundReq(SFX_108); + } + } + } +} + +ASM_FUNC("asm/non_matching/itemMoleMitts/sub_080772A8.inc", void sub_080772A8(ItemBehavior* this, u32 arg1)) + +void sub_08077448(ItemBehavior* this, u32 arg1) { + gPlayerEntity.direction = gPlayerEntity.animationState << 2 ^ 0x10; + gPlayerEntity.speed = 0x100; + if (((this->field_0x5[9] & 1) != 0) && (this->field_0x5[0] != 0)) { + sub_08079E08(); + } + UpdateItemAnim(this); + if ((this->field_0x5[9] & 0x80) != 0) { + gPlayerState.field_0x3c[1] = 0; + sub_08077E78(this, arg1); + } +} + +ASM_FUNC("asm/non_matching/itemMoleMitts/sub_080774A0.inc", s32 sub_080774A0(void)) diff --git a/src/item/itemOcarina.c b/src/item/itemOcarina.c index 391a207a..bb4c6d34 100644 --- a/src/item/itemOcarina.c +++ b/src/item/itemOcarina.c @@ -1,39 +1,52 @@ #include "item.h" +#include "audio.h" +#include "functions.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++; +extern void CreateBird(void); +extern void UnfreezeTime(void); + +void ItemOcarina(ItemBehavior* this, u32 arg1) { + gOcarinaStates[this->stateID](this, arg1); + gPlayerEntity.field_0x7a.HWORD += 1; } -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(); - } +void OcarinaUse(ItemBehavior* this, u32 arg1) { + if (gPlayerState.playerAction == 0x18) { + sub_08077E78(this, arg1); + } else { + this->field_0x5[4] |= 0xf; + gPlayerEntity.animationState = 0x04; + gPlayerEntity.spriteSettings.b.flipX = 0; + gPlayerEntity.flags &= 0x7f; + gPlayerEntity.field_0x7a.HWORD = 2; + gPlayerState.flags.all |= 0x10000000; + gPlayerState.field_0x27[0] = -1; + gUnk_02034490[0] = 1; + gPlayerState.field_0xa = (8 >> arg1) | gPlayerState.field_0xa; + gPlayerState.keepFacing = (8 >> arg1) | gPlayerState.keepFacing; + sub_08078F60(); + sub_08077D38(this, arg1); + SoundReq(SFX_216); + sub_0805E544(); + } } -#endif + +NONMATCH("asm/non_matching/ocarina/OcarinaUpdate.inc", void OcarinaUpdate(ItemBehavior* this, u32 arg1)) { + // TODO regalloc + UpdateItemAnim(this); + if ((this->field_0x5[9] & 0x80) != 0) { + gPlayerEntity.flags |= 0x80; + gPlayerState.flags.all &= 0xefffffff; + gPlayerState.field_0x27[0] = 0; + gUnk_02034490[0] = 0; + CreateBird(); + UnfreezeTime(); + sub_08077E78(this, arg1); + } +} +END_NONMATCH diff --git a/src/item/itemPegasusBoots.c b/src/item/itemPegasusBoots.c new file mode 100644 index 00000000..0eca0fe9 --- /dev/null +++ b/src/item/itemPegasusBoots.c @@ -0,0 +1,77 @@ +#include "item.h" +#include "audio.h" +#include "random.h" +#include "functions.h" + +extern void (*const gUnk_0811BDCC[])(ItemBehavior* beh, u32); + +void sub_08076964(ItemBehavior*, u32); + +void ItemPegasusBoots(ItemBehavior* this, u32 arg1) { + u32 bVar1; + Entity* fx; + u32 uVar4; + + if (gPlayerEntity.field_0x7a.HWORD != 0) { + gPlayerState.field_0x1d[1] = 0; + gPlayerState.field_0xe = 0; + sub_08077E78(this, arg1); + + } else { + bVar1 = this->field_0x5[2] - 1; + this->field_0x5[2] = bVar1; + if ((bVar1 & 7) == 0) { + SoundReq(SFX_PLY_LAND); + } + if (((gPlayerState.flags.all & 0x80) == 0) && ((this->field_0x5[2] & 7) == 0)) { + if (gPlayerState.field_0x10[2] == 0x11) { + if (gPlayerEntity.spriteOffsetY == 0) { + CreateFx(&gPlayerEntity, 0x52, 0); + } + } else { + fx = CreateFx(&gPlayerEntity, 0x11, 0x40); + if ((fx != NULL) && (fx->y.HALF.HI = fx->y.HALF.HI + 2, this->stateID != 2)) { + uVar4 = Random() & 3; + if ((Random() & 1) != 0) { + uVar4 = -uVar4; + } + fx->y.HALF.HI += uVar4; + uVar4 = Random() & 7; + if ((Random() & 1) != 0) { + uVar4 = -uVar4; + } + fx->x.HALF.HI += uVar4; + } + } + } + gUnk_0811BDCC[this->stateID](this, arg1); + } +} + +void sub_080768F8(ItemBehavior* this, u32 arg1) { + u32 bVar1; + u32 bVar2; + + bVar1 = gPlayerState.field_0x1c | gPlayerState.field_0x3[1] | gPlayerState.heldObject | gPlayerState.jumpStatus; + bVar2 = (gPlayerState.flags.all & 0x1000); + bVar1 |= bVar2; + if (bVar1 == 0) { + gPlayerState.field_0x1d[1] = 1; + gPlayerState.field_0x1d[4] = bVar1; + if ((gPlayerState.flags.all & 0x80) == 0) { + this->field_0x5[2] = 0x10; + } else { + gPlayerState.field_0x8 = 0xc14; + } + sub_08077D38(this, arg1); + sub_08076964(this, arg1); + } else { + gPlayerState.field_0x1d[1] = 0; + gPlayerState.field_0xe = 0; + sub_08077E78(this, arg1); + } +} + +ASM_FUNC("asm/non_matching/itemPegasusBoots/sub_08076964.inc", void sub_08076964(ItemBehavior* this, u32 arg1)) + +ASM_FUNC("asm/non_matching/itemPegasusBoots/sub_08076A88.inc", void sub_08076A88(ItemBehavior* this, u32 arg1)) diff --git a/src/item/itemRocsCape.c b/src/item/itemRocsCape.c new file mode 100644 index 00000000..ba98de91 --- /dev/null +++ b/src/item/itemRocsCape.c @@ -0,0 +1,90 @@ +#include "item.h" +#include "audio.h" +#include "functions.h" + +void sub_08076758(ItemBehavior*, u32); +extern void sub_08077F84(void); + +extern bool32 sub_08077EFC(ItemBehavior*); + +/*void ItemRocsCape(ItemBehavior* this, u32 arg1) { + if (this->stateID != 0) { + sub_08076758(this, arg1); + return; + } + if (gPlayerState.field_0x2c == NULL) { + if (gPlayerState.field_0x0[1] == 0) { + if (((u8)(gPlayerState.field_0x1a[1] | gPlayerState.field_0xa | gPlayerState.field_0x3[1] | + gPlayerState.heldObject | gPlayerState.field_0x1c | gPlayerState.field_0x3c[1]) == 0) && + ((((1 < (u8)(gPlayerState.field_0x10[2] - 0x12) && (gPlayerState.field_0x10[2] != 1)) || + (gPlayerEntity.height.WORD != 0)) || + (gPlayerState.field_0x14 != 0)))) { + if ((gPlayerState.jumpStatus != 0) && ((gPlayerState.jumpStatus & 7) != 3)) + goto _08076710; + if (-1 < gPlayerEntity.height.WORD) { + gPlayerEntity.field_0x20 = 0x20000; + gPlayerState.jumpStatus = 1; + gPlayerState.field_0x2c = NULL; + this->stateID += 1; + goto _0807673C; + } + } + } else { + if (((gPlayerState.heldObject | gPlayerState.field_0x3[1]) == 0) && + (((gPlayerState.field_0x10[2] != 0x12 && (gPlayerState.field_0x10[2] != 1)) || + ((gPlayerEntity.height.WORD != 0 || (gPlayerState.field_0x14 != 0)))))) { + if ((gPlayerState.jumpStatus != 0) && ((gPlayerState.jumpStatus & 7) != 3)) { + _08076710: + sub_08076758(this, arg1); + return; + } + if (-1 < gPlayerEntity.height.WORD) { + gPlayerState.field_0x0[1] = 0; + this->stateID += 1; + gPlayerState.keepFacing = 0; + gPlayerState.jumpStatus = 1; + gPlayerState.field_0xe = -1; + gPlayerState.field_0x2c = NULL; + gPlayerEntity.field_0x20 = 0x20000; + _0807673C: + sub_08077F84(); + SoundReq(SFX_PLY_VO4); + return; + } + } + } + } + sub_08077E78(this, arg1); +} +*/ +ASM_FUNC("asm/non_matching/itemRocsCape/ItemRocsCape.inc", void ItemRocsCape(ItemBehavior* this, u32 arg1)) + +void sub_08076758(ItemBehavior* this, u32 arg1) { + s32 iVar1; + + gPlayerState.field_0xe = 0; + if ((((gPlayerState.jumpStatus & 0x28) == 0) && (gPlayerState.jumpStatus != 0)) && + ((gPlayerState.jumpStatus & 7) != 3)) { + if (sub_08077EFC(this)) { + if (this->stateID < 2) { + if ((gPlayerEntity.field_0x20 < 1) && ((gPlayerState.jumpStatus & 0x10) == 0)) { + this->stateID = 2; + gPlayerEntity.field_0x7a.HWORD = 2; + gPlayerEntity.field_0x20 = 0x20000; + gPlayerState.jumpStatus |= 0x10; + gPlayerState.field_0x8 = 0x288; + SoundReq(SFX_172); + } + } else { + gPlayerEntity.field_0x7a.HWORD += 1; + } + } else { + if (this->stateID > 1) { + gPlayerEntity.field_0x7a.HWORD += 1; + gPlayerState.jumpStatus &= 0xef; + } + } + } else { + sub_08077E78(this, arg1); + } +} diff --git a/src/item/itemSword.c b/src/item/itemSword.c new file mode 100644 index 00000000..951ef527 --- /dev/null +++ b/src/item/itemSword.c @@ -0,0 +1,131 @@ +#include "item.h" +#include "functions.h" +#include "audio.h" + +extern void (*const gUnk_0811BD44[])(ItemBehavior*, u32); + +void sub_080759B8(ItemBehavior*, u32); + +extern u32 sub_08077EC8(ItemBehavior*); + +void sub_08075694(ItemBehavior* this, u32 arg1); + +void ItemSword(ItemBehavior* this, u32 arg1) { + gPlayerState.field_0xa8 = 0x02; + gUnk_0811BD44[this->stateID](this, arg1); +} + +#ifdef EU +ASM_FUNC("asm/non_matching/eu/sub_08075338.inc", void sub_08075338(ItemBehavior* this, u32 arg1)) +#else +ASM_FUNC("asm/non_matching/itemSword/sub_08075338.inc", void sub_08075338(ItemBehavior* this, u32 arg1)) +#endif + +ASM_FUNC("asm/non_matching/itemSword/sub_080754B8.inc", void sub_080754B8(ItemBehavior* this, u32 arg1)) + +void sub_08075580(ItemBehavior* this, u32 arg1) { + if ((sub_08077EFC(this) != 0) && (gPlayerState.jumpStatus == 0)) { + gPlayerState.field_0xa = gPlayerState.field_0xa & ~(8 >> arg1); + gPlayerState.field_0x1a[1] = 1; + gPlayerState.field_0x2c[0x40] = 0xd; + this->field_0xf = 0; + this->stateID = 2; + if ((gPlayerState.field_0xac & 0x200) != 0) { + this->field_0x5[2] = 0x28; + } else { + this->field_0x5[2] = 0x50; + } + sub_08077DF4(this, 0x168); + CreateObject(0x43, 0, 0); + return; + } + sub_080759B8(this, arg1); +} + +void sub_080755F0(ItemBehavior* this, u32 arg1) { + if (sub_08077EFC(this) != 0) { + if (sub_08077EC8(this) == 0) { + if ((gPlayerState.field_0x1a[1] | gPlayerState.field_0x3[1]) != 0) { + if (--this->field_0x5[2] == 0) { + this->stateID = 3; + this->field_0x5[4] |= 0x80; + gPlayerState.field_0x1a[1] = gPlayerState.field_0x1a[1] | 0x20; + } + } else { + sub_080759B8(this, arg1); + } + } + } else { + sub_080759B8(this, arg1); + } +} + +void sub_0807564C(ItemBehavior* this, u32 arg1) { + if ((gPlayerState.field_0x1a[1] | gPlayerState.field_0x3[1]) == 0) { + sub_080759B8(this, arg1); + } else { + if ((sub_08077EC8(this) == 0) && ((sub_08077EFC(this) == 0 || ((gPlayerState.field_0x1a[1] & 0x80) != 0)))) { + sub_08075694(this, arg1); + } + } +} + +void sub_08075694(ItemBehavior* this, u32 arg1) { + this->field_0x5[2] = 1; + if ((gPlayerState.flags.all & 0x8000000) != 0) { + gPlayerState.flags.all &= 0xf7ffffff; + gPlayerState.flags.all &= 0xfffbffff; + sub_08077DF4(this, 300); + } else { + gPlayerState.field_0xab = 1; + sub_08077DF4(this, 0x124); + } + gPlayerState.field_0xa = (8 >> arg1) | gPlayerState.field_0xa; + this->stateID = 4; + this->field_0xf = 6; + gPlayerEntity.field_0x40 = 0x1e; + gPlayerState.field_0x1a[1] |= 0x40; + gPlayerState.field_0x1a[1] &= 0xdf; + if ((gPlayerState.field_0xa0[0] == 0x04) && ((gPlayerState.flags.all & 0x400000) == 0)) { + gPlayerState.field_0xa0[0] = 0x01; + sub_0807A108(); + } + SoundReq(SFX_PLY_VO2); +} + +ASM_FUNC("asm/non_matching/itemSword/sub_08075738.inc", void sub_08075738(ItemBehavior* this, u32 arg1)) + +void sub_08075898(ItemBehavior* this, u32 arg1) { + if (gPlayerState.field_0x3[1] == 0) { + sub_080759B8(this, arg1); + } +} + +void sub_080758B0(ItemBehavior* this, u32 arg1) { + if (gPlayerState.field_0x3[1] == 0) { + sub_080759B8(this, arg1); + } else { + UpdateItemAnim(this); + if ((this->field_0x5[9] & 0x80) != 0) { + this->field_0xf = 0; + if ((gPlayerState.field_0x1a[1] & 0x20) != 0) { + this->stateID = 3; + } else { + this->stateID = 5; + } + gPlayerState.field_0x1a[1] &= 0xf7; + } + } +} + +ASM_FUNC("asm/non_matching/itemSword/sub_08075900.inc", void sub_08075900(ItemBehavior* this, u32 arg1)) + +void sub_080759B8(ItemBehavior* this, u32 arg1) { + if ((gPlayerState.flags.all & 0x80) == 0) { + gPlayerEntity.field_0x40 = 0; + } + gPlayerState.flags.all &= 0xf7ffffff; + gPlayerState.field_0x1a[1] = 0; + gPlayerState.field_0x2c = NULL; + sub_08077E78(this, arg1); +} diff --git a/src/item/itemTryPickupObject.c b/src/item/itemTryPickupObject.c new file mode 100644 index 00000000..80d8565d --- /dev/null +++ b/src/item/itemTryPickupObject.c @@ -0,0 +1,66 @@ +#include "item.h" +#include "functions.h" + +extern void (*const gUnk_0811BDB4[])(ItemBehavior*, u32); + +u32 sub_08077F64(ItemBehavior* arg0, u32 unk); + +void ItemTryPickupObject(ItemBehavior* this, u32 arg1) { + gUnk_0811BDB4[this->stateID](this, arg1); +} + +ASM_FUNC("asm/non_matching/itemTryPickupObject/sub_080761C0.inc", void sub_080761C0(ItemBehavior* this, u32 arg1)) + +void sub_080762C4(ItemBehavior* this, u32 arg1, u8 arg2, u32 arg3) { + this->field_0x18 = arg1; + gPlayerState.heldObject = arg2; + sub_08077D38(this, arg3); +} + +ASM_FUNC("asm/non_matching/itemTryPickupObject/sub_080762D8.inc", void sub_080762D8(ItemBehavior* this, u32 arg1)) + +void sub_08076488(ItemBehavior* this, u32 arg1) { + u32 bVar1; + s32 iVar2; + + if (this->field_0x5[2] == 0) { + if (sub_08077F64(this, arg1) != 0) { + if (((*(u8*)((this->field_0x18) + 0x16) & 0xf0) == 0x10) && ((gScreenTransition.frameCount & 1U) != 0)) { + return; + } + UpdateItemAnim(this); + if ((this->field_0x5[9] & 0x80) != 0) { + gPlayerEntity.flags |= 0x80; + gPlayerState.heldObject = 4; + bVar1 = ~(8 >> arg1); + gPlayerState.keepFacing = bVar1 & gPlayerState.keepFacing; + gPlayerState.field_0xa = bVar1 & gPlayerState.field_0xa; + this->stateID += 1; + this->field_0xf = 0; + } + } + } else { + this->field_0x5[2] -= 1; + } + gPlayerState.field_0xa8 = 4; +} + +ASM_FUNC("asm/non_matching/itemTryPickupObject/sub_08076518.inc", void sub_08076518(ItemBehavior* this, u32 arg1)) + +void sub_080765E0(ItemBehavior* this, u32 arg1) { + if (sub_08077F64(this, arg1) != 0) { + if ((this->field_0x5[9] & 0x80) != 0) { + sub_08077F50(this, arg1); + } else { + UpdateItemAnim(this); + } + } +} + +void sub_0807660C(ItemBehavior* this, u32 arg1) { + UpdateItemAnim(this); + if ((--this->field_0x5[2] == 0xff) || (gPlayerState.field_0x0[1] == 0)) { + gPlayerState.field_0x0[1] = 0; + sub_08077E78(this, arg1); + } +} diff --git a/src/loadRoom.c b/src/loadRoom.c index eaf41966..d60fd088 100644 --- a/src/loadRoom.c +++ b/src/loadRoom.c @@ -71,18 +71,20 @@ void sub_0804B0B0(u32 arg0, u32 arg1) { LoadRoomEntityList(GetRoomProperty(arg0, arg1, 1)); } -void SetCurrentRoomPropertyList(u32 arg0, u32 arg1) { +void SetCurrentRoomPropertyList(u32 area, u32 room) { u32** arr; gUnk_02017654 = 0; arr = &gAreaTable; - if (arr[arg0] != 0) { - gUnk_02017654 = arr[arg0][arg1]; + if (arr[area] != 0) { + gUnk_02017654 = arr[area][room]; } } void sub_0804B0E8(u32 arg0, u32 arg1) { void (*func)(); + // init function at index 4 of room data + func = (void (*)())GetRoomProperty(arg0, arg1, 4); if (func != NULL) { func(); @@ -90,13 +92,13 @@ void sub_0804B0E8(u32 arg0, u32 arg1) { } // returns multiple types of data? -void* GetRoomProperty(u32 arg0, u32 arg1, u32 arg2) { +void* GetRoomProperty(u32 area, u32 room, u32 arg2) { u32 temp; u32** arr; temp = 0; arr = &gAreaTable; - if (arr[arg0] != NULL) { - temp = arr[arg0][arg1]; + if (arr[area] != NULL) { + temp = arr[area][room]; if (temp != 0) { temp = *(u32*)(arg2 * 4 + temp); } diff --git a/src/npc/bigGoron.c b/src/npc/bigGoron.c index 1a6ac60a..611f6b24 100644 --- a/src/npc/bigGoron.c +++ b/src/npc/bigGoron.c @@ -122,7 +122,45 @@ ASM_FUNC("asm/non_matching/bigGoron/sub_0806D138.inc", void sub_0806D138(u8* par ASM_FUNC("asm/non_matching/bigGoron/sub_0806D164.inc", void sub_0806D164(Entity* this)) -ASM_FUNC("asm/non_matching/bigGoron/sub_0806D1D0.inc", void sub_0806D1D0(Entity* this)) +void sub_0806D1D0(Entity* this) { + if (this->action == 0) { + if (sub_0806D00C(this) == NULL) { + DeleteThisEntity(); + } + this->action = 1; + this->spriteOrientation.flipY = 3; + this->spriteRendering.b3 = 3; + this->spritePriority.b0 = 7; + this->spriteSettings.b.draw = 3; + this->frameIndex = 0; + this->actionDelay = 0x1e; + sub_0805E3A0(this, 2); + } + + switch (this->subAction) { + case 0: + default: + if (--this->actionDelay == 0) { + this->actionDelay = (Random() & 0x7f) + 0x30; + this->field_0xf = 8; + this->frameIndex = 1; + } + if (this->field_0xf != 0) { + if (--this->field_0xf == 0) { + this->frameIndex = 0; + } + } + break; + case 1: + this->frameIndex = this->subAction; + break; + case 2: + this->spriteSettings.b.draw = 0; + break; + } + this->x.HALF.HI = this->parent->x.HALF.HI; + this->y.HALF.HI = this->parent->y.HALF.HI; +} void sub_0806D274(Entity* this) { Entity* npc; diff --git a/src/npc/clothesRack.c b/src/npc/clothesRack.c index c103f5f3..63d6cc0c 100644 --- a/src/npc/clothesRack.c +++ b/src/npc/clothesRack.c @@ -1,5 +1,7 @@ #include "global.h" #include "entity.h" +#include "functions.h" +#include "flags.h" extern void (*gUnk_0811423C[])(Entity*); @@ -7,7 +9,31 @@ void ClothesRack(Entity* this) { gUnk_0811423C[this->action](this); } -ASM_FUNC("asm/non_matching/clothesRack/sub_0806DD90.inc", void sub_0806DD90(Entity* this)) +void sub_0806DD90(Entity* this) { + u32 uVar1; + u32 uVar2; + u32 x; + u32 y; + + this->action = 1; + uVar1 = CheckGlobalFlag(DRUG_1); + uVar2 = BOOLCAST(uVar1); + if (CheckGlobalFlag(DRUG_2) != 0) { + uVar2 = 2; + } + if (CheckGlobalFlag(DRUG_3) != 0) { + uVar2 = 3; + } + InitializeAnimation(this, uVar2); + x = this->x.HALF.HI; + y = this->y.HALF.HI; + SetTile(0x4072, TILE(x - 0x18, y - 0x10), this->collisionLayer); + SetTile(0x4072, TILE(x - 0x18, y), this->collisionLayer); + SetTile(0x4072, TILE(x - 0x18, y + 0x10), this->collisionLayer); + SetTile(0x4072, TILE(x + 0x18, y - 0x10), this->collisionLayer); + SetTile(0x4072, TILE(x + 0x18, y), this->collisionLayer); + SetTile(0x4072, TILE(x + 0x18, y + 0x10), this->collisionLayer); +} void sub_0806DEC8(Entity* this) { GetNextFrame(this); diff --git a/src/npc/farmers.c b/src/npc/farmers.c index 61f1be97..434f494f 100644 --- a/src/npc/farmers.c +++ b/src/npc/farmers.c @@ -22,7 +22,10 @@ void Farmers_Head(Entity* this) { sub_0807000C(this); } -ASM_FUNC("asm/non_matching/farmers/sub_0806BC94.inc", void sub_0806BC94(Entity* this, ScriptExecutionContext* context)) +void sub_0806BC94(Entity* this, ScriptExecutionContext* context) { + InitializeAnimation(this, context->intVariable + (BOOLCAST(this->spriteSettings.b.flipX) & 8U) + + (this->animationState >> 1)); +} void sub_0806BCB8(Entity* this) { this->animationState = this->actionDelay; diff --git a/src/npc/sittingPerson.c b/src/npc/sittingPerson.c index 34f8eaff..eebf8251 100644 --- a/src/npc/sittingPerson.c +++ b/src/npc/sittingPerson.c @@ -48,7 +48,10 @@ void sub_08063830(Entity* this) { } } -ASM_FUNC("asm/non_matching/sittingPerson/sub_08063850.inc", void sub_08063850(Entity* this)) +void sub_08063850(Entity* this, ScriptExecutionContext* context) { + InitializeAnimation(this, context->intVariable + (BOOLCAST(this->spriteSettings.b.flipX) & 4U) + + (this->animationState >> 1)); +} void sub_08063874(Entity* this) { this->animationState = this->actionDelay; diff --git a/src/object/greatFairy.c b/src/object/greatFairy.c index 9ad2c2a3..2a2cacf0 100644 --- a/src/object/greatFairy.c +++ b/src/object/greatFairy.c @@ -370,20 +370,17 @@ void sub_08087114(Entity* this) { } } -NONMATCH("asm/greatFairy/sub_08087150.inc", void sub_08087150(Entity* this)) { - u32 temp; - +void sub_08087150(Entity* this) { GreatFairy_InitializeAnimation(this); - this->spriteSettings.b.draw = TRUE; + this->spriteSettings.b.draw = 1; this->spriteOrientation.flipY = 0; - this->spriteRendering.b0 = 0; + this->spriteRendering.b3 = 0; this->spritePriority.b0 = 3; - this->speed = 128; + this->speed = 0x80; this->direction = 0x10; - temp = gUnk_0812079C[0]; - this->palette.raw = ((temp & 0xf) << 4) | 0xf; + this->palette.b.b4 = gUnk_0812079C[0]; + this->palette.b.b0 = gUnk_0812079C[0]; } -END_NONMATCH void nullsub_516(Entity* this) { } diff --git a/src/playerItem/playerItem10.c b/src/playerItem/playerItem10.c new file mode 100644 index 00000000..89f24d2e --- /dev/null +++ b/src/playerItem/playerItem10.c @@ -0,0 +1,60 @@ +#include "entity.h" +#include "player.h" +#include "functions.h" + +extern void (*const gUnk_0812AA80[])(Entity*); + +extern Hitbox* gUnk_0812AAD8[]; +bool32 sub_080ACDB0(Entity*); + +void sub_080ACC78(Entity*); +void sub_080ACECC(Entity*); + +extern u8 gUnk_0812AAE8[]; + +void PlayerItem10(Entity* this) { + if ((gPlayerState.field_0x1c & 0x7f) != 1) { + DeleteThisEntity(); + } + gUnk_0812AA80[this->action](this); + this->iframes = 0; +} + +void sub_080ACC04(Entity* this) { + this->action = 1; + this->flags2 = gPlayerEntity.flags2; + this->direction = this->animationState << 2; + this->speed = 0x200; + this->flags |= 0xa0; + this->field_0x3c = 2; + this->hitbox = gUnk_0812AAD8[this->type]; + this->field_0x70.WORD = 0x10; + sub_080ACDB0(this); + sub_0801766C(this); +} + +void sub_080ACC5C(Entity* this) { + if (sub_080ACDB0(this) == FALSE) { + sub_080ACC78(this); + sub_080ACECC(this); + } +} + +ASM_FUNC("asm/non_matching/playerItem10/sub_080ACC78.inc", void sub_080ACC78(Entity* this)) + +ASM_FUNC("asm/non_matching/playerItem10/sub_080ACDB0.inc", bool32 sub_080ACDB0(Entity* this)) + +void sub_080ACECC(Entity* this) { + Entity* entity; + + if (this->type < 3 && this->attachedEntity == NULL && (s32) * (u32*)&this->field_0x78 >= 0 && + gUnk_0812AAE8[this->type] <= *(u32*)&this->field_0x78) { + entity = CreatePlayerItem(0x10, this->type + 1, 0, 0); + if (entity != NULL) { + entity->parent = this; + this->attachedEntity = entity; + entity->x.HALF.HI = this->x.HALF.HI; + entity->y.HALF.HI = this->y.HALF.HI; + } + } +} diff --git a/src/playerItem/playerItem11.c b/src/playerItem/playerItem11.c index 7bdcc871..a2512e11 100644 --- a/src/playerItem/playerItem11.c +++ b/src/playerItem/playerItem11.c @@ -2,6 +2,7 @@ #include "entity.h" #include "player.h" #include "functions.h" +#include "audio.h" extern void sub_08078CD0(Entity*); extern void sub_08018FA0(Entity*); @@ -91,3 +92,26 @@ void sub_08018DE8(Entity* this) { } sub_08078CD0(&gPlayerEntity); } + +ASM_FUNC("asm/non_matching/playerItem11/sub_08018E68.inc", void sub_08018E68(Entity* this)) + +void sub_08018F6C(Entity* this) { + if (this->attachedEntity != NULL) { + this->attachedEntity->subAction = 5; + this->attachedEntity->spriteSettings.b.draw = 1; + } else { + GetNextFrame(this); + if (this->frames.all == 0) { + return; + } + } + DeleteThisEntity(); +} + +void sub_08018FA0(Entity* this) { + this->collisionLayer = gPlayerEntity.collisionLayer; + if (this->collisionLayer == 0x02) { + this->type2 = 0x01; + } + SoundReq(this->type + SFX_EA); +} diff --git a/src/playerItem/playerItem12.c b/src/playerItem/playerItem12.c new file mode 100644 index 00000000..f75a8e4a --- /dev/null +++ b/src/playerItem/playerItem12.c @@ -0,0 +1,44 @@ +#include "entity.h" +#include "functions.h" +#include "audio.h" + +extern void (*const gUnk_0811B98C[])(Entity*); + +extern void sub_08017744(Entity*); + +void PlayerItem12(Entity* this) { + gUnk_0811B98C[this->action](this); +} + +ASM_FUNC("asm/non_matching/playerItem12/sub_08070100.inc", void sub_08070100(Entity* this)) + +ASM_FUNC("asm/non_matching/playerItem12/sub_080701F8.inc", void sub_080701F8(Entity* this)) + +void sub_0807037C(Entity* this) { + GetNextFrame(this); + if ((this->frames.all & 0x80) != 0) { + DeleteThisEntity(); + } +} + +void sub_08070398(Entity* this) { + GetNextFrame(this); + sub_0806F69C(this); + if (sub_08003FC4(this, 0x2000) == 0) { + DeleteThisEntity(); + } +} + +ASM_FUNC("asm/non_matching/playerItem12/sub_080703BC.inc", void sub_080703BC(Entity* this)) + +void sub_08070458(Entity* this) { + this->action = 2; + this->flags &= 0x7f; + this->speed = 0; + if (this->field_0x7c.WORD != 0) { + SetTile(this->field_0x7c.WORD, TILE(this->x.HALF.HI, this->y.HALF.HI), this->collisionLayer); + } + InitializeAnimation(this, 0x13); + sub_08017744(this); + SoundReq(SFX_199); +} diff --git a/src/playerItem/playerItem13.c b/src/playerItem/playerItem13.c new file mode 100644 index 00000000..895663d0 --- /dev/null +++ b/src/playerItem/playerItem13.c @@ -0,0 +1,27 @@ +#include "entity.h" + +extern void (*const gUnk_081320A8[])(Entity*); + +void PlayerItem13(Entity* this) { + gUnk_081320A8[this->subAction](this); +} + +ASM_FUNC("asm/non_matching/playerItem13/sub_080ACF2C.inc", void sub_080ACF2C(Entity* this)) + +ASM_FUNC("asm/non_matching/playerItem13/sub_080ACFCC.inc", void sub_080ACFCC(Entity* this)) + +ASM_FUNC("asm/non_matching/playerItem13/sub_080AD040.inc", void sub_080AD040(Entity* this)) + +void sub_080AD274(Entity* this) { + DeleteThisEntity(); +} + +ASM_FUNC("asm/non_matching/playerItem13/sub_080AD27C.inc", void sub_080AD27C(Entity* this)) + +bool32 sub_080AD32C(Entity* this) { + bool32 result = FALSE; + if (((this->field_0x16 & 0xf0) == 0x10) || ((this->kind == 6 && ((this->id == 5 || (this->id == 0x7d)))))) { + result = TRUE; + } + return result; +} diff --git a/src/playerItem/playerItem15.c b/src/playerItem/playerItem15.c new file mode 100644 index 00000000..4f0a2782 --- /dev/null +++ b/src/playerItem/playerItem15.c @@ -0,0 +1,38 @@ +#include "entity.h" +#include "audio.h" +#include "coord.h" +#include "functions.h" + +extern void (*const gUnk_08127270[])(Entity*); + +extern Hitbox gUnk_08127278; +void sub_080A310C(Entity*); + +void PlayerItem15(Entity* this) { + gUnk_08127270[this->action](this); +} + +void sub_080A3084(Entity* this) { + this->spriteSettings.b.draw = 1; + this->action = 0x01; + CopyPosition(this->parent, this); + if (this->type == 0) { + this->field_0x3c = gPlayerEntity.field_0x3c + 0x01; + this->hitbox = &gUnk_08127278; + this->speed = 0x400; + if (this->collisionLayer == 0x02) { + this->type2 = 0x01; + } + this->direction = this->animationState << 2; + *(u32*)&this->field_0x6c = 0x3c; + sub_0801766C(this); + sub_0806F69C(this); + SoundReq(SFX_ITEM_SWORD_BEAM); + } else { + this->actionDelay = 0x06; + } + InitializeAnimation(this, 0x18); + sub_080A310C(this); +} + +ASM_FUNC("asm/non_matching/playerItem15/sub_080A310C.inc", void sub_080A310C(Entity* this)) diff --git a/src/playerItem/playerItem3.c b/src/playerItem/playerItem3.c new file mode 100644 index 00000000..790062c0 --- /dev/null +++ b/src/playerItem/playerItem3.c @@ -0,0 +1,66 @@ +#include "entity.h" +#include "functions.h" + +extern void (*const gUnk_080B77FC[])(Entity*); + +void sub_0801B804(Entity*); +void sub_0801B864(Entity*); + +extern s8 gUnk_080B782E[]; +extern void sub_08008782(Entity*, u32, s32, s32); + +void PlayerItem3(Entity* this) { + gUnk_080B77FC[this->action](this); + if (this->animIndex != 0xb) { + if (this->animationState == 6) { + this->field_0x86.HWORD += 0x2000; + } else { + this->field_0x86.HWORD -= 0x2000; + } + sub_0805EC9C(this, 0x100, 0x100, this->field_0x86.HWORD); + } + + this->field_0xf--; + if ((this->field_0xf & 0xf) == 0) { + EnqueueSFX(0xfb); + } +} + +#ifdef EU +ASM_FUNC("asm/non_matching/eu/sub_0801B4C8.inc", void sub_0801B4C8(Entity* this)) +#else +ASM_FUNC("asm/non_matching/playerItem3/sub_0801B4C8.inc", void sub_0801B4C8(Entity* this)) +#endif + +ASM_FUNC("asm/non_matching/playerItem3/sub_0801B584.inc", void sub_0801B584(Entity* this)) + +ASM_FUNC("asm/non_matching/playerItem3/sub_0801B680.inc", void sub_0801B680(Entity* this)) + +void sub_0801B7A8(Entity* this) { + sub_0801B804(this); + if (this->actionDelay != 0) { + this->actionDelay -= 1; + } else { + sub_0801B864(this); + if (this->speed < 0x280) { + this->speed += 8; + } + this->direction = GetFacingDirection(this, &gPlayerEntity); + sub_0806F69C(this); + if (sub_0800419C(this, &gPlayerEntity, 2, 2) != 0) { + DeleteThisEntity(); + } + } +} + +ASM_FUNC("asm/non_matching/playerItem3/sub_0801B804.inc", void sub_0801B804(Entity* this)) + +void sub_0801B864(Entity* this) { + s32 iVar1; + + if (this->type2 == 0) { + sub_0800451C(this); + } + iVar1 = (this->direction >> 2) * 2; + sub_08008782(this, 2, gUnk_080B782E[iVar1], gUnk_080B782E[iVar1 + 1]); +} diff --git a/src/playerItem/playerItemBomb.c b/src/playerItem/playerItemBomb.c new file mode 100644 index 00000000..c47cd7c6 --- /dev/null +++ b/src/playerItem/playerItemBomb.c @@ -0,0 +1,113 @@ +#include "entity.h" +#include "player.h" +#include "functions.h" + +extern void (*const gUnk_080B77C8[])(Entity*); +extern void sub_08078954(Entity*); +void sub_0801B418(Entity*); +void sub_0801B3A4(Entity*); + +extern void (*const gUnk_080B77D8[])(Entity*); + +extern void sub_08079BD8(Entity*); + +extern void sub_08008796(Entity*, u32, u32, u32); + +NONMATCH("asm/non_matching/playerItemBomb/PlayerItemBomb.inc", void PlayerItemBomb(Entity* this)) { + u8 uVar1; + + gUnk_080B77C8[this->action](this); + GetNextFrame(this); + // TODO regalloc + uVar1 = this->action; + if (uVar1 != 0x03) { + if (this->actionDelay != 0) { + if (this->field_0x68.HALF.LO == 7) { + this->actionDelay -= 1; + } + if (this->actionDelay == 0) { + this->field_0xf = 0x50; + *(u32*)&this->field_0x68 = 0; + this->spriteRendering.b0 = 3; + sub_0805EC9C(this, 0x100, 0x100, 0); + } + } else { + if (this->field_0xf != 0) { + if (this->field_0xf-- == 0x01) { + if ((uVar1 == 0x02) && (this->subAction == 1)) { + gPlayerState.heldObject = 0; + } + this->action = 0x03; + this->spritePriority.b1 = 2; + this->actionDelay = 0x0f; + this->spriteSettings.b.draw = 0; + sub_0805EC60(this); + sub_08078954(this); + CreateObjectWithParent(this, 0x20, 0, 0); + sub_0801B418(this); + } else { + sub_0801B3A4(this); + } + } + } + } +} +END_NONMATCH + +ASM_FUNC("asm/non_matching/playerItemBomb/sub_0801B250.inc", void sub_0801B250(Entity* this)) + +ASM_FUNC("asm/non_matching/playerItemBomb/sub_0801B2CC.inc", void sub_0801B2CC(Entity* this)) + +void sub_0801B318(Entity* this) { + gUnk_080B77D8[this->subAction](this); +} + +void sub_0801B330(Entity* this) { + this->subAction += 1; + sub_08079BD8(this); +} + +void sub_0801B340(Entity* this) { + this->spritePriority.b1 = 2; +} + +void sub_0801B354(Entity* this) { + this->spritePriority.b1 = 3; +} + +void sub_0801B368(Entity* this) { + this->action -= 1; + this->subAction = 0; + if (0x3c < this->actionDelay) { + this->actionDelay = 0x3c; + } +} + +void sub_0801B384(Entity* this) { + DeleteThisEntity(); +} + +void sub_0801B38C(Entity* this) { + if (this->actionDelay-- == 0) { + DeleteThisEntity(); + } +} + +ASM_FUNC("asm/non_matching/playerItemBomb/sub_0801B3A4.inc", void sub_0801B3A4(Entity* this)) + +void sub_0801B418(Entity* this) { + s32 x; + s32 y; + s32 iVar3 = 0; + + y = 0x10; + while (iVar3 >= -0x10) { + x = 0x10; + iVar3 = y - 0x10; + while (x >= -0x10) { + sub_08008796(this, 3, this->x.HALF.HI + x, this->y.HALF.HI + y); + x -= 0x10; + } + y = iVar3; + } +} diff --git a/src/playerItem/playerItemBow.c b/src/playerItem/playerItemBow.c index d1b52237..351a2907 100644 --- a/src/playerItem/playerItemBow.c +++ b/src/playerItem/playerItemBow.c @@ -1,8 +1,38 @@ #include "global.h" #include "entity.h" +#include "functions.h" extern void (*const gUnk_080B3E30[])(Entity*); void PlayerItemBow(Entity* this) { gUnk_080B3E30[(this->action)](this); } + +ASM_FUNC("asm/non_matching/playerItemBow/sub_08018FE4.inc", void sub_08018FE4(Entity* this)) + +ASM_FUNC("asm/non_matching/playerItemBow/sub_0801917C.inc", void sub_0801917C(Entity* this)) + +void sub_08019410(Entity* this) { + if (this->actionDelay < 0xf) { + InitializeAnimation(this, this->animIndex); + } else { + GetNextFrame(this); + } + if (this->actionDelay-- == 0) { + DeleteThisEntity(); + } +} + +void sub_08019444(Entity* this) { + GetNextFrame(this); + sub_0806F69C(this); + if (sub_08003FC4(this, 0x2000) == 0) { + DeleteThisEntity(); + } +} + +void sub_08019468(Entity* this) { + if (this->field_0x40 == 0x0e) { + CreateFx(this, 0x50, 0); + } +} diff --git a/src/playerItem/playerItemC.c b/src/playerItem/playerItemC.c new file mode 100644 index 00000000..8298a66a --- /dev/null +++ b/src/playerItem/playerItemC.c @@ -0,0 +1,60 @@ + +#include "entity.h" +#include "player.h" +#include "functions.h" + +extern void (*const gUnk_080B7840[])(Entity*); + +extern void sub_08079BD8(Entity*); +void sub_0801B8FC(Entity*); + +void sub_0801B938(Entity*); + +extern void sub_08017744(Entity*); + +void PlayerItemC(Entity* this) { + gUnk_080B7840[this->action](this); +} + +void sub_0801B8B0(Entity* this) { + if (gPlayerState.field_0x1d[1] != 0) { + gPlayerState.field_0x2c = (u8*)this; + this->flags |= 0x20; + this->action = 0x01; + this->flags2 = 8; + sub_080AE008(this, 1, 3); + sub_08079BD8(this); + sub_0801766C(this); + sub_0801B8FC(this); + } else { + DeleteThisEntity(); + } +} + +NONMATCH("asm/non_matching/playerItemC/sub_0801B8FC.inc", void sub_0801B8FC(Entity* this)) { + Entity* pbVar1; + u32 tmp; + + pbVar1 = (Entity*)gPlayerState.field_0x2c; + if ((Entity*)gPlayerState.field_0x2c != this) { + DeleteThisEntity(); + } else { + if ((u8*)(u32)gPlayerState.field_0x1d[1] == NULL) { + gPlayerState.field_0x2c = (u8*)(u32)gPlayerState.field_0x1d[1]; + DeleteThisEntity(); + } else { + // TODO regalloc + gPlayerState.field_0x2c[0x10] |= 0x80; + pbVar1->field_0x3c = 0x21; + sub_0801B938(pbVar1); + } + } +} +END_NONMATCH + +ASM_FUNC("asm/non_matching/playerItemC/sub_0801B938.inc", void sub_0801B938(Entity* this)) + +void sub_0801B9F0(Entity* this) { + this->flags &= 0x7f; + sub_08017744(this); +} diff --git a/src/playerItem/playerItemCellOverwriteSet.c b/src/playerItem/playerItemCellOverwriteSet.c new file mode 100644 index 00000000..d73c655d --- /dev/null +++ b/src/playerItem/playerItemCellOverwriteSet.c @@ -0,0 +1,4 @@ +#include "entity.h" + +ASM_FUNC("asm/non_matching/playerItemCellOverwriteSet/PlayerItemCellOverwriteSet.inc", + void PlayerItemCellOverwriteSet(Entity* this)) diff --git a/src/playerItem/playerItemGustJar.c b/src/playerItem/playerItemGustJar.c new file mode 100644 index 00000000..3b1433a0 --- /dev/null +++ b/src/playerItem/playerItemGustJar.c @@ -0,0 +1,75 @@ +#include "entity.h" +#include "player.h" +#include "functions.h" + +extern void (*const gUnk_08132700[])(Entity*); + +extern Hitbox gUnk_08132B28; +void sub_080ADC84(Entity*); + +void sub_080ADCA0(Entity*, u32); + +void PlayerItemGustJar(Entity* this) { + if (((Entity*)gPlayerState.field_0x2c != this) || (gPlayerState.field_0x1c == 0)) { + DeleteThisEntity(); + } + gUnk_08132700[this->action](this); + sub_08078E84(this, &gPlayerEntity); +} + +void sub_080ADA6C(Entity* this) { + this->action = 1; + this->field_0xf = 0xf; + this->hitbox = &gUnk_08132B28; + this->hitbox->unk2[2] = 3; + this->hitbox->unk2[1] = 3; + this->hitbox->unk2[3] = 6; + this->hitbox->unk2[0] = 6; + sub_080ADC84(this); + sub_080AE008(this, 1, 3); + InitAnimationForceUpdate(this, this->animationState >> 1); +} + +void sub_080ADAA8(Entity* this) { + sub_080ADC84(this); + if ((this->frames.all & 0x80) != 0) { + this->action = 2; + sub_080ADCA0(this, 0); + } else { + UpdateAnimationSingleFrame(this); + } +} + +ASM_FUNC("asm/non_matching/playerItemGustJar/sub_080ADAD4.inc", void sub_080ADAD4(Entity* this)) + +void sub_080ADC14(Entity* this) { + switch (gPlayerState.field_0x1c & 0xf) { + case 6: + this->action += 1; + InitAnimationForceUpdate(this, (gPlayerEntity.animationState >> 1) + 4); + break; + case 1: + sub_080ADCA0(this, 0); + this->action = 2; + break; + default: + UpdateAnimationSingleFrame(this); + break; + } +} + +void sub_080ADC60(Entity* this) { + if ((this->frames.all & 0x80) != 0) { + this->spriteSettings.b.draw = 0; + } else { + UpdateAnimationSingleFrame(this); + } +} + +void sub_080ADC84(Entity* this) { + this->spriteSettings.b.flipX = gPlayerEntity.spriteSettings.b.flipX; +} + +ASM_FUNC("asm/non_matching/playerItemGustJar/sub_080ADCA0.inc", void sub_080ADCA0(Entity* this, u32 param_1)) + +ASM_FUNC("asm/non_matching/playerItemGustJar/sub_080ADCDC.inc", void sub_080ADCDC(Entity* this)) diff --git a/src/playerItem/playerItemLantern.c b/src/playerItem/playerItemLantern.c new file mode 100644 index 00000000..e2f0587f --- /dev/null +++ b/src/playerItem/playerItemLantern.c @@ -0,0 +1,34 @@ +#include "entity.h" +#include "player.h" +#include "functions.h" + +extern void (*const gUnk_080FEEA8[])(Entity*); + +extern bool32 AllocMutableHitbox(Entity*); +void sub_08054AC8(Entity*); + +void PlayerItemLantern(Entity* this) { + gUnk_080FEEA8[this->action](this); + this->bitfield = 0; +} + +NONMATCH("asm/non_matching/playerItemLantern/sub_08054A60.inc", void sub_08054A60(Entity* this)) { + this->flags |= 0xa0; + this->action = 0x01; + this->actionDelay = 0x04; + this->frameIndex = -1; + // TODO regalloc and mov 6 too early + this->scriptedScene = (this->scriptedScene & 0xf0) | 6; + this->field_0x3c = 7; + this->flags2 = -0x80; + this->animationState = gPlayerEntity.animationState & 0xe; + if (AllocMutableHitbox(this) == FALSE) { + DeleteThisEntity(); + } + sub_0801766C(this); + sub_080AE008(this, 1, 3); + sub_08054AC8(this); +} +END_NONMATCH + +ASM_FUNC("asm/non_matching/playerItemLantern/sub_08054AC8.inc", void sub_08054AC8(Entity* this)) diff --git a/src/playerItem/playerItemPacciCane.c b/src/playerItem/playerItemPacciCane.c new file mode 100644 index 00000000..205a5b65 --- /dev/null +++ b/src/playerItem/playerItemPacciCane.c @@ -0,0 +1,21 @@ +#include "entity.h" +#include "audio.h" +#include "functions.h" + +extern void (*const gUnk_0811B9D8[])(Entity*); + +void sub_080704FC(Entity*); + +void PlayerItemPacciCane(Entity* this) { + gUnk_0811B9D8[this->action](this); +} + +void sub_080704D4(Entity* this) { + this->action = 1; + this->frameIndex = -1; + sub_080AE008(this, 1, 3); + SoundReq(SFX_10E); + sub_080704FC(this); +} + +ASM_FUNC("asm/non_matching/playerItemPacciCane/sub_080704FC.inc", void sub_080704FC(Entity* this)) diff --git a/src/playerItem/playerItemShield.c b/src/playerItem/playerItemShield.c new file mode 100644 index 00000000..f62e2bc6 --- /dev/null +++ b/src/playerItem/playerItemShield.c @@ -0,0 +1,15 @@ + +#include "entity.h" + +extern void (*const gUnk_081271D4[])(Entity*); + +void PlayerItemShield(Entity* this) { + if (*(int*)&this->field_0x6c != 0) { + *(int*)&this->field_0x6c += -1; + } + gUnk_081271D4[this->action](this); +} + +ASM_FUNC("asm/non_matching/playerItemShield/sub_080A2D98.inc", void sub_080A2D98(Entity* this)) + +ASM_FUNC("asm/non_matching/playerItemShield/sub_080A2E00.inc", void sub_080A2E00(Entity* this)) diff --git a/src/playerItem/playerItemSword.c b/src/playerItem/playerItemSword.c new file mode 100644 index 00000000..8ff01c17 --- /dev/null +++ b/src/playerItem/playerItemSword.c @@ -0,0 +1,37 @@ +#include "entity.h" +#include "functions.h" + +extern void (*const gUnk_0812905C[])(Entity*); + +extern u8 gUnk_08129096[]; + +void PlayerItemSword(Entity* this) { + gUnk_0812905C[this->action](this); + if (this->type == 0) { + sub_08078E84(this, &gPlayerEntity); + this->hitbox->offset_x += this->spriteOffsetX; + this->hitbox->offset_y += this->spriteOffsetY; + } +} + +ASM_FUNC("asm/non_matching/playerItemSword/sub_080A758C.inc", void sub_080A758C(Entity* this)) + +ASM_FUNC("asm/non_matching/playerItemSword/sub_080A76CC.inc", void sub_080A76CC(Entity* this)) + +ASM_FUNC("asm/non_matching/playerItemSword/sub_080A7824.inc", void sub_080A7824(Entity* this)) + +ASM_FUNC("asm/non_matching/playerItemSword/sub_080A78B8.inc", void sub_080A78B8(Entity* this)) + +void sub_080A7A54(Entity* this) { + u8* tmp; + + tmp = &gUnk_08129096[(gPlayerEntity.frameIndex - 0x6a) * 4]; + this->hitbox->offset_x = tmp[0]; + this->hitbox->offset_y = tmp[1]; + this->hitbox->width = tmp[2]; + this->hitbox->height = tmp[3]; +} + +ASM_FUNC("asm/non_matching/playerItemSword/sub_080A7A84.inc", void sub_080A7A84(Entity* this)) + +ASM_FUNC("asm/non_matching/playerItemSword/sub_080A7B98.inc", void sub_080A7B98(Entity* this)) diff --git a/src/playerItem/playerItemSwordBeam.c b/src/playerItem/playerItemSwordBeam.c new file mode 100644 index 00000000..7329b69b --- /dev/null +++ b/src/playerItem/playerItemSwordBeam.c @@ -0,0 +1,103 @@ +#include "entity.h" +#include "player.h" +#include "coord.h" +#include "functions.h" +#include "audio.h" + +extern void (*const gUnk_080B43F4[])(Entity*); + +extern Hitbox gUnk_080B4408; +extern u8 gUnk_080B43FC[]; +void sub_08019580(Entity*); + +extern u8 gUnk_08003E44; +void sub_08019644(Entity*); + +extern u8 gUnk_080B4400[]; + +void PlayerItemSwordBeam(Entity* this) { + gUnk_080B43F4[this->action](this); +} + +void sub_08019498(Entity* this) { + CopyPosition(&gPlayerEntity, this); + this->action += 0x01; + this->spriteSettings.b.draw = 1; + this->field_0x3c = gPlayerEntity.field_0x3c + 1; + this->hitbox = &gUnk_080B4408; + this->speed = 0x380; + *(u32*)&this->field_0x74 = 2; + this->field_0x70.WORD = 0; + if (this->collisionLayer == 0x02) { + this->type2 = 0x01; + } + this->direction = this->animationState << 2; + *(u32*)&this->field_0x6c = 0x3c; + switch (this->animationState) { + case 0: + this->x.HALF.HI += -3; + this->y.HALF.HI += -8; + this->spriteSettings.raw |= 0x80; + break; + case 4: + this->x.HALF.HI += 2; + break; + case 2: + this->spriteSettings.b.flipX = 1; + this->x.HALF.HI += 1; + this->y.HALF.HI += -4; + break; + case 6: + this->x.HALF.HI -= 1; + this->y.HALF.HI += -4; + break; + } + + InitializeAnimation(this, gUnk_080B43FC[this->animationState >> 1]); + sub_0801766C(this); + sub_0806F69C(this); + sub_08019580(this); + SoundReq(SFX_ITEM_SWORD_BEAM); +} + +void sub_08019580(Entity* this) { + if (--*(int*)&this->field_0x6c != -1) { + GetNextFrame(this); + sub_0806F69C(this); + this->actionDelay += 0x01; + if (this->type2 == 0) { + sub_0800451C(this); + } + if ((sub_080002F0(TILE(this->x.HALF.HI, this->y.HALF.HI), gPlayerEntity.collisionLayer, 0x80) == 0) && + (sub_080040D8(this, &gUnk_08003E44, this->x.HALF.HI, this->y.HALF.HI) != 0)) { + CreateFx(this, 0x19, 0); + DeleteThisEntity(); + } + if (this->bitfield != 0) { + CreateFx(this, 0x19, 0); + DeleteThisEntity(); + } + if (sub_08008790(this, 0xc) != NULL) { + DeleteThisEntity(); + } + } else { + DeleteThisEntity(); + } + + sub_08019644(this); +} + +void sub_08019644(Entity* this) { + s32 iVar1; + + iVar1 = *(int*)&this->field_0x74 + -1; + *(int*)&this->field_0x74 = iVar1; + if (iVar1 == 0) { + *(int*)&this->field_0x74 = 2; + this->field_0x70.WORD += 1; + if (gUnk_080B4400[this->field_0x70.WORD] == 0xff) { + this->field_0x70.WORD = iVar1; + } + sub_0801D2B4(this, (u32)gUnk_080B4400[this->field_0x70.WORD]); + } +} diff --git a/src/playerItem/playerItemSwordSpin.c b/src/playerItem/playerItemSwordSpin.c new file mode 100644 index 00000000..6ba6d213 --- /dev/null +++ b/src/playerItem/playerItemSwordSpin.c @@ -0,0 +1,25 @@ +#include "entity.h" + +extern void (*const gUnk_080B7870[])(Entity*); + +void sub_0801BE38(Entity*); + +void PlayerItemSwordSpin(Entity* this) { + gUnk_080B7870[this->action](this); +} + +ASM_FUNC("asm/non_matching/playerItemSwordSpin/sub_0801BA18.inc", void sub_0801BA18(Entity* this)) + +ASM_FUNC("asm/non_matching/playerItemSwordSpin/sub_0801BB2C.inc", void sub_0801BB2C(Entity* this)) + +void sub_0801BC0C(Entity* this) { + sub_0801BE38(this); +} + +ASM_FUNC("asm/non_matching/playerItemSwordSpin/sub_0801BC14.inc", void sub_0801BC14(Entity* this)) + +ASM_FUNC("asm/non_matching/playerItemSwordSpin/sub_0801BCB4.inc", void sub_0801BCB4(Entity* this)) + +ASM_FUNC("asm/non_matching/playerItemSwordSpin/sub_0801BDE8.inc", void sub_0801BDE8(Entity* this)) + +ASM_FUNC("asm/non_matching/playerItemSwordSpin/sub_0801BE38.inc", void sub_0801BE38(Entity* this))