diff --git a/asm/non_matching/armos/sub_080304BC.inc b/asm/non_matching/armos/sub_080304BC.inc deleted file mode 100644 index 5d872b51..00000000 --- a/asm/non_matching/armos/sub_080304BC.inc +++ /dev/null @@ -1,29 +0,0 @@ - .syntax unified - push {r4, lr} - adds r4, r0, #0 - bl sub_080309A8 - adds r3, r4, #0 - adds r3, #0x5a - ldrb r1, [r3] - movs r0, #0x80 - ands r0, r1 - lsls r0, r0, #0x18 - lsrs r2, r0, #0x18 - cmp r2, #0 - beq _080304DE - adds r0, r4, #0 - bl sub_08030580 - b _080304F0 -_080304DE: - lsls r0, r1, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #1 - bne _080304F0 - strb r2, [r3] - movs r0, #0x95 - lsls r0, r0, #1 - bl EnqueueSFX -_080304F0: - pop {r4, pc} - .align 2, 0 - .syntax divided diff --git a/asm/non_matching/playerItemCellOverwriteSet/PlayerItemCellOverwriteSet.inc b/asm/non_matching/playerItemCellOverwriteSet/PlayerItemCellOverwriteSet.inc deleted file mode 100644 index 99ffd681..00000000 --- a/asm/non_matching/playerItemCellOverwriteSet/PlayerItemCellOverwriteSet.inc +++ /dev/null @@ -1,364 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - mov r8, r0 - ldr r7, _0801BFF0 @ =gPlayerEntity - ldrb r0, [r0, #0xc] - cmp r0, #0 - bne _0801BF62 - movs r1, #0x2e - ldrsh r0, [r7, r1] - ldr r5, _0801BFF4 @ =gUnk_080B7B6C - ldrb r1, [r7, #0x14] - movs r2, #0xe - ands r2, r1 - adds r1, r2, r5 - ldrb r1, [r1] - lsls r1, r1, #0x18 - asrs r1, r1, #0x18 - adds r0, r0, r1 - ldr r4, _0801BFF8 @ =gRoomControls - ldrh r1, [r4, #6] - subs r0, r0, r1 - asrs r0, r0, #4 - movs r3, #0x3f - ands r0, r3 - movs r6, #0x32 - ldrsh r1, [r7, r6] - adds r2, #1 - adds r2, r2, r5 - ldrb r2, [r2] - lsls r2, r2, #0x18 - asrs r2, r2, #0x18 - 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 - mov r1, r8 - adds r1, #0x38 - ldrb r1, [r1] - bl GetTileType - mov r1, r8 - adds r1, #0x6c - strh r0, [r1] - mov r1, r8 - ldrb r0, [r1, #0xc] - adds r0, #1 - strb r0, [r1, #0xc] -_0801BF62: - ldr r2, _0801BFFC @ =gPlayerState - mov sb, r2 - ldrb r1, [r2, #0x1a] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r2, #0x1a] - ldr r6, _0801C000 @ =gInput - ldrh r1, [r6] - movs r3, #0x80 - lsls r3, r3, #1 - mov sl, r3 - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _0801C074 - ldrh r1, [r6, #2] - mov r0, sl - ands r0, r1 - cmp r0, #0 - beq _0801BFDA - movs r4, #0x2e - ldrsh r0, [r7, r4] - ldr r5, _0801BFF4 @ =gUnk_080B7B6C - mov sb, r5 - ldrb r1, [r7, #0x14] - movs r2, #0xe - ands r2, r1 - adds r1, r2, r5 - ldrb r1, [r1] - lsls r1, r1, #0x18 - asrs r1, r1, #0x18 - adds r0, r0, r1 - ldr r4, _0801BFF8 @ =gRoomControls - ldrh r1, [r4, #6] - subs r0, r0, r1 - asrs r0, r0, #4 - movs r3, #0x3f - ands r0, r3 - movs r5, #0x32 - ldrsh r1, [r7, r5] - adds r2, #1 - add r2, sb - ldrb r2, [r2] - lsls r2, r2, #0x18 - asrs r2, r2, #0x18 - 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 - mov r1, r8 - adds r1, #0x38 - ldrb r1, [r1] - bl GetTileType - mov r1, r8 - adds r1, #0x6c - strh r0, [r1] -_0801BFDA: - ldrh r3, [r6] - mov r0, sl - ands r0, r3 - adds r4, r3, #0 - cmp r0, #0 - beq _0801C004 - adds r1, r7, #0 - adds r1, #0x3d - movs r0, #2 - strb r0, [r1] - b _0801C0D4 - .align 2, 0 -_0801BFF0: .4byte gPlayerEntity -_0801BFF4: .4byte gUnk_080B7B6C -_0801BFF8: .4byte gRoomControls -_0801BFFC: .4byte gPlayerState -_0801C000: .4byte gInput -_0801C004: - ldrh r2, [r6, #2] - movs r6, #0x10 - adds r0, r6, #0 - ands r0, r2 - cmp r0, #0 - beq _0801C01A - mov r1, r8 - adds r1, #0x6c - ldrh r0, [r1] - subs r0, #1 - strh r0, [r1] -_0801C01A: - movs r5, #0x20 - adds r0, r5, #0 - ands r0, r2 - cmp r0, #0 - beq _0801C02E - mov r1, r8 - adds r1, #0x6c - ldrh r0, [r1] - adds r0, #1 - strh r0, [r1] -_0801C02E: - movs r0, #0x30 - ands r0, r4 - cmp r0, #0 - beq _0801C06E - mov r1, r8 - ldrb r0, [r1, #0xf] - adds r0, #1 - strb r0, [r1, #0xf] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0x1e - bls _0801C0D4 - movs r0, #0x1e - strb r0, [r1, #0xf] - adds r0, r6, #0 - ands r0, r4 - cmp r0, #0 - beq _0801C05A - adds r1, #0x6c - ldrh r0, [r1] - subs r0, #1 - strh r0, [r1] -_0801C05A: - adds r0, r5, #0 - ands r0, r3 - cmp r0, #0 - beq _0801C0D4 - mov r1, r8 - adds r1, #0x6c - ldrh r0, [r1] - adds r0, #1 - strh r0, [r1] - b _0801C0D4 -_0801C06E: - mov r2, r8 - strb r0, [r2, #0xf] - b _0801C0D4 -_0801C074: - mov r0, r8 - adds r0, #0x6c - ldrh r0, [r0] - movs r3, #0x2e - ldrsh r1, [r7, r3] - ldr r4, _0801C1C8 @ =gUnk_080B7B6C - mov sl, r4 - ldrb r2, [r7, #0x14] - movs r3, #0xe - ands r3, r2 - adds r2, r3, r4 - ldrb r2, [r2] - lsls r2, r2, #0x18 - asrs r2, r2, #0x18 - adds r1, r1, r2 - ldr r5, _0801C1CC @ =gRoomControls - ldrh r2, [r5, #6] - subs r1, r1, r2 - asrs r1, r1, #4 - movs r4, #0x3f - ands r1, r4 - movs r6, #0x32 - ldrsh r2, [r7, r6] - adds r3, #1 - add r3, sl - ldrb r3, [r3] - lsls r3, r3, #0x18 - asrs r3, r3, #0x18 - adds r2, r2, r3 - ldrh r3, [r5, #8] - subs r2, r2, r3 - asrs r2, r2, #4 - ands r2, r4 - lsls r2, r2, #6 - orrs r1, r2 - mov r2, r8 - adds r2, #0x38 - ldrb r2, [r2] - bl sub_0807B7D8 - mov r0, sb - ldrb r1, [r0, #0x1a] - movs r0, #0x7f - ands r0, r1 - mov r1, sb - strb r0, [r1, #0x1a] - bl DeleteThisEntity -_0801C0D4: - ldr r0, _0801C1D0 @ =gInput - ldrh r1, [r0] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _0801C1BE - movs r2, #0x6c - add r2, r8 - mov sb, r2 - ldrh r0, [r2] - movs r3, #0x2e - ldrsh r1, [r7, r3] - ldr r6, _0801C1C8 @ =gUnk_080B7B6C - movs r2, #0 - ldrsb r2, [r6, r2] - adds r1, r1, r2 - ldr r5, _0801C1CC @ =gRoomControls - ldrh r2, [r5, #6] - subs r1, r1, r2 - asrs r1, r1, #4 - movs r4, #0x3f - ands r1, r4 - movs r3, #0x32 - ldrsh r2, [r7, r3] - movs r3, #1 - ldrsb r3, [r6, r3] - adds r2, r2, r3 - ldrh r3, [r5, #8] - subs r2, r2, r3 - asrs r2, r2, #4 - ands r2, r4 - lsls r2, r2, #6 - orrs r1, r2 - movs r2, #0x38 - add r8, r2 - mov r3, r8 - ldrb r2, [r3] - bl sub_0807B7D8 - mov r1, sb - ldrh r0, [r1] - movs r2, #0x2e - ldrsh r1, [r7, r2] - movs r2, #2 - ldrsb r2, [r6, r2] - adds r1, r1, r2 - ldrh r2, [r5, #6] - subs r1, r1, r2 - asrs r1, r1, #4 - ands r1, r4 - movs r3, #0x32 - ldrsh r2, [r7, r3] - movs r3, #3 - ldrsb r3, [r6, r3] - adds r2, r2, r3 - ldrh r3, [r5, #8] - subs r2, r2, r3 - asrs r2, r2, #4 - ands r2, r4 - lsls r2, r2, #6 - orrs r1, r2 - mov r3, r8 - ldrb r2, [r3] - bl sub_0807B7D8 - mov r1, sb - ldrh r0, [r1] - movs r2, #0x2e - ldrsh r1, [r7, r2] - movs r2, #4 - ldrsb r2, [r6, r2] - adds r1, r1, r2 - ldrh r2, [r5, #6] - subs r1, r1, r2 - asrs r1, r1, #4 - ands r1, r4 - movs r3, #0x32 - ldrsh r2, [r7, r3] - movs r3, #5 - ldrsb r3, [r6, r3] - adds r2, r2, r3 - ldrh r3, [r5, #8] - subs r2, r2, r3 - asrs r2, r2, #4 - ands r2, r4 - lsls r2, r2, #6 - orrs r1, r2 - mov r3, r8 - ldrb r2, [r3] - bl sub_0807B7D8 - mov r1, sb - ldrh r0, [r1] - movs r2, #0x2e - ldrsh r1, [r7, r2] - movs r2, #6 - ldrsb r2, [r6, r2] - adds r1, r1, r2 - ldrh r2, [r5, #6] - subs r1, r1, r2 - asrs r1, r1, #4 - ands r1, r4 - movs r3, #0x32 - ldrsh r2, [r7, r3] - movs r3, #7 - ldrsb r3, [r6, r3] - adds r2, r2, r3 - ldrh r3, [r5, #8] - subs r2, r2, r3 - asrs r2, r2, #4 - ands r2, r4 - lsls r2, r2, #6 - orrs r1, r2 - mov r4, r8 - ldrb r2, [r4] - bl sub_0807B7D8 -_0801C1BE: - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0801C1C8: .4byte gUnk_080B7B6C -_0801C1CC: .4byte gRoomControls -_0801C1D0: .4byte gInput - .syntax divided diff --git a/asm/non_matching/playerItemSword/sub_080A7B98.inc b/asm/non_matching/playerItemSword/sub_080A7B98.inc deleted file mode 100644 index 051160de..00000000 --- a/asm/non_matching/playerItemSword/sub_080A7B98.inc +++ /dev/null @@ -1,55 +0,0 @@ - .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/vaati/sub_08044000.inc b/asm/non_matching/vaati/sub_08044000.inc deleted file mode 100644 index eb4a964a..00000000 --- a/asm/non_matching/vaati/sub_08044000.inc +++ /dev/null @@ -1,59 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xb] - lsls r1, r0, #2 - adds r1, r1, r0 - lsls r1, r1, #1 - ldr r0, _08044070 @ =gUnk_080D1400 - movs r3, #0 - ldr r2, _08044074 @ =gUnk_080D1414 - mov ip, r2 - movs r7, #8 - rsbs r7, r7, #0 - adds r5, r1, r0 - movs r6, #0x18 -_0804401C: - ldr r0, [r4, #0x64] - lsls r1, r3, #2 - adds r0, r0, r1 - ldr r2, [r0] - ldrb r1, [r2, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r2, #0x10] - adds r2, #0x29 - ldrb r1, [r2] - adds r0, r7, #0 - ands r0, r1 - movs r1, #4 - orrs r0, r1 - strb r0, [r2] - ldr r1, [r4, #0x64] - adds r1, r1, r6 - ldrh r0, [r5] - strh r0, [r1] - movs r0, #0x80 - lsls r0, r0, #7 - strh r0, [r1, #4] - mov r2, ip - adds r0, r3, r2 - ldrb r0, [r0] - strb r0, [r1, #0xc] - adds r5, #2 - adds r6, #0x10 - adds r3, #1 - cmp r3, #4 - bls _0804401C - adds r0, r4, #0 - movs r1, #7 - bl InitAnimationForceUpdate - ldr r1, [r4, #0x64] - ldr r0, [r1, #0x14] - ldr r1, [r1, #0x10] - bl CopyPosition - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08044070: .4byte gUnk_080D1400 -_08044074: .4byte gUnk_080D1414 - .syntax divided diff --git a/assets/assets.json b/assets/assets.json index 2571a08d..877b59ca 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -20795,11 +20795,6 @@ "start": 752190, "size": 302 }, - { - "path": "playerItemCellOverwriteSet/gUnk_080B7B6C.bin", - "start": 752492, - "size": 8 - }, { "path": "data_080B7B74/gCollisionMtx.bin", "start": 752500, diff --git a/data/const/playerItem/playerItemCellOverwriteSet.s b/data/const/playerItem/playerItemCellOverwriteSet.s deleted file mode 100644 index 86b7ba22..00000000 --- a/data/const/playerItem/playerItemCellOverwriteSet.s +++ /dev/null @@ -1,8 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_080B7B6C:: @ 080B7B6C - .incbin "playerItemCellOverwriteSet/gUnk_080B7B6C.bin" diff --git a/linker.ld b/linker.ld index 0b57a0d3..f25ebb70 100644 --- a/linker.ld +++ b/linker.ld @@ -903,7 +903,7 @@ SECTIONS { src/playerItem/playerItemDashSword.o(.rodata); src/playerItem/playerItemBottle.o(.rodata); data/data_080B7910.o(.rodata); - data/const/playerItem/playerItemCellOverwriteSet.o(.rodata); + src/playerItem/playerItemCellOverwriteSet.o(.rodata); data/data_080B7B74.o(.rodata); src/sineTable.o(.rodata); data/data_080C93E0.o(.rodata); diff --git a/src/enemy/armos.c b/src/enemy/armos.c index c2f4d54a..90f19cec 100644 --- a/src/enemy/armos.c +++ b/src/enemy/armos.c @@ -240,21 +240,15 @@ void sub_08030474(ArmosEntity* this) { } } -NONMATCH("asm/non_matching/armos/sub_080304BC.inc", void sub_080304BC(ArmosEntity* this)) { - u32 tmp; - +void sub_080304BC(ArmosEntity* this) { sub_080309A8(this); - tmp = super->frame & ANIM_DONE; - if (tmp != 0) { + if ((super->frame & ANIM_DONE) != 0) { sub_08030580(this); - } else { - if (super->frame == 1) { - super->frame = tmp; - EnqueueSFX(SFX_12A); - } + } else if (super->frame == 1) { + super->frame = 0; + EnqueueSFX(SFX_12A); } } -END_NONMATCH void sub_080304F4(ArmosEntity* this) { LinearMoveUpdate(super); diff --git a/src/enemy/vaatiArm.c b/src/enemy/vaatiArm.c index 1512c92f..912e48cc 100644 --- a/src/enemy/vaatiArm.c +++ b/src/enemy/vaatiArm.c @@ -167,8 +167,10 @@ const u8 gUnk_080D13E0[] = { 0xc, 0xe, 0x10 }; const u8 gUnk_080D13E3[] = { 8, 9, 10, 4, 4, 5 }; const s8 gUnk_080D13E9[] = { -8, 8 }; const ScreenTransitionData gUnk_080D13EC = { 1, { 0, 0, 0, 0 }, 0x98, 0xb8, 0, 0x8a, 0, 1, 0, 0, 0 }; -const u16 gUnk_080D1400[] = { 0x8000, 0x7000, 0x6000, 0x5000, 0x4000, 0x8000, -0x7000 }; -const u16 gUnk_080D140E[] = { -0x6000, -0x5000, -0x4000 }; +const u16 gUnk_080D1400[][5] = { + { 0x8000, 0x7000, 0x6000, 0x5000, 0x4000 }, + { 0x8000, -0x7000, -0x6000, -0x5000, -0x4000 }, +}; const u8 gUnk_080D1414[] = { 0, 0xc, 0xe, 0x10, 0x1c }; const u8 gUnk_080D1419[] = { 0, 0xa, 0xa, 0xa, 0x1c }; @@ -1423,26 +1425,25 @@ static void sub_08043EB8(Entity* this) { } } -static NONMATCH("asm/non_matching/vaati/sub_08044000.inc", void sub_08044000(Entity* this)) { +void sub_08044000(Entity* this) { Entity* entity; u32 i; VaatiArm_HeapStruct1* ptr; const u16* ptr2; - ptr2 = &gUnk_080D1400[this->type2 * 5]; - for (i = 0; i < 5; ptr2++, i++) { + ptr2 = gUnk_080D1400[this->type2]; + for (i = 0; i < 5; i++) { entity = ((VaatiArm_HeapStruct*)this->myHeap)->entities[i]; - entity->flags = entity->flags | ENT_COLLIDE; + entity->flags = entity->flags | 0x80; entity->spritePriority.b0 = 4; ptr = &((VaatiArm_HeapStruct*)this->myHeap)->s1[i]; - ptr->unk00.HWORD = *ptr2; + ptr->unk00.HWORD = ptr2[i]; ptr->unk04.HWORD = 0x4000; ptr->unk0c = gUnk_080D1414[i]; } InitAnimationForceUpdate(this, 7); CopyPosition(((VaatiArm_HeapStruct*)this->myHeap)->parent, ((VaatiArm_HeapStruct*)this->myHeap)->entities[4]); } -END_NONMATCH static void sub_08044078(Entity* this) { if (this->action == 0) { diff --git a/src/playerItem/playerItemCellOverwriteSet.c b/src/playerItem/playerItemCellOverwriteSet.c index d73c655d..20636f7b 100644 --- a/src/playerItem/playerItemCellOverwriteSet.c +++ b/src/playerItem/playerItemCellOverwriteSet.c @@ -1,4 +1,73 @@ #include "entity.h" +#include "player.h" +#include "room.h" +#include "common.h" +#include "asm.h" -ASM_FUNC("asm/non_matching/playerItemCellOverwriteSet/PlayerItemCellOverwriteSet.inc", - void PlayerItemCellOverwriteSet(Entity* this)) +void PlayerItemCellOverwriteSet(Entity* this) { + static const s8 gUnk_080B7B6C[] = { 0x0, -0x10, 0x10, 0x0, 0x0, 0x10, -0x10, 0x0 }; + u32 tmp; + Entity* player = &gPlayerEntity; + + if (this->action == 0) { + this->field_0x6c.HWORD = + GetTileType(TILE(player->x.HALF.HI + gUnk_080B7B6C[player->animationState & 0xe], + player->y.HALF.HI + gUnk_080B7B6C[(player->animationState & 0xe) + 1]), + this->collisionLayer); + this->action++; + } + gPlayerState.mobility |= 0x80; + tmp = gInput.heldKeys & R_BUTTON; + if ((gInput.heldKeys & A_BUTTON) != 0) { + if ((R_BUTTON & gInput.newKeys) != 0) { + this->field_0x6c.HWORD = + GetTileType(TILE(player->x.HALF.HI + gUnk_080B7B6C[player->animationState & 0xe], + player->y.HALF.HI + gUnk_080B7B6C[(player->animationState & 0xe) + 1]), + this->collisionLayer); + } + if ((gInput.heldKeys & R_BUTTON) != 0) { + player->iframes = 2; + } else { + if ((gInput.newKeys & DPAD_RIGHT) != 0) { + this->field_0x6c.HWORD--; + } + if ((gInput.newKeys & DPAD_LEFT) != 0) { + this->field_0x6c.HWORD++; + } + if ((gInput.heldKeys & (DPAD_LEFT | DPAD_RIGHT)) != 0) { + if (++this->subtimer > 0x1e) { + this->subtimer = 0x1e; + if ((gInput.heldKeys & DPAD_RIGHT) != 0) { + this->field_0x6c.HWORD--; + } + if ((gInput.heldKeys & DPAD_LEFT) != 0) { + this->field_0x6c.HWORD++; + } + } + } else { + this->subtimer = 0; + } + } + } else { + sub_0807B7D8(this->field_0x6c.HWORD, + TILE(player->x.HALF.HI + gUnk_080B7B6C[player->animationState & 0xe], + player->y.HALF.HI + gUnk_080B7B6C[(player->animationState & 0xe) + 1]), + this->collisionLayer); + gPlayerState.mobility &= 0x7f; + DeleteThisEntity(); + } + if ((gInput.heldKeys & B_BUTTON) != 0) { + sub_0807B7D8(this->field_0x6c.HWORD, + TILE(player->x.HALF.HI + gUnk_080B7B6C[0], player->y.HALF.HI + gUnk_080B7B6C[1]), + this->collisionLayer); + sub_0807B7D8(this->field_0x6c.HWORD, + TILE(player->x.HALF.HI + gUnk_080B7B6C[2], player->y.HALF.HI + gUnk_080B7B6C[3]), + this->collisionLayer); + sub_0807B7D8(this->field_0x6c.HWORD, + TILE(player->x.HALF.HI + gUnk_080B7B6C[4], player->y.HALF.HI + gUnk_080B7B6C[5]), + this->collisionLayer); + sub_0807B7D8(this->field_0x6c.HWORD, + TILE(player->x.HALF.HI + gUnk_080B7B6C[6], player->y.HALF.HI + gUnk_080B7B6C[7]), + this->collisionLayer); + } +} diff --git a/src/playerItem/playerItemSword.c b/src/playerItem/playerItemSword.c index 5f6ed69a..cb0fef2a 100644 --- a/src/playerItem/playerItemSword.c +++ b/src/playerItem/playerItemSword.c @@ -337,4 +337,24 @@ void sub_080A7A54(PlayerItemSwordEntity* this) { ASM_FUNC("asm/non_matching/playerItemSword/sub_080A7A84.inc", void sub_080A7A84(PlayerItemSwordEntity* this)) -ASM_FUNC("asm/non_matching/playerItemSword/sub_080A7B98.inc", void sub_080A7B98(PlayerItemSwordEntity* this)) +void sub_080A7B98(PlayerItemSwordEntity* this) { + u32 i, j; + u32 uVar2; + s32 xOffset; + s32 yOffset; + if ((gPlayerState.skills & 8) != 0) { + uVar2 = 1; + } else { + uVar2 = 0; + } + yOffset = -0x10; + + for (i = 0; i < 3; i++) { + xOffset = -0x10; + for (j = 0; j < 3; j++) { + sub_08008796(super, uVar2, super->x.HALF.HI + xOffset, super->y.HALF.HI + yOffset); + xOffset += 0x10; + } + yOffset += 0x10; + } +}