From 378049e42428178dc196731c8160afa7e5bb7f18 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Fri, 18 Feb 2022 06:15:03 +0200 Subject: [PATCH] Match sub_080A2D98 --- .../playerItemShield/sub_080A2D98.inc | 52 ------------------- src/playerItem/playerItemShield.c | 23 +++++++- 2 files changed, 22 insertions(+), 53 deletions(-) delete mode 100644 asm/non_matching/playerItemShield/sub_080A2D98.inc diff --git a/asm/non_matching/playerItemShield/sub_080A2D98.inc b/asm/non_matching/playerItemShield/sub_080A2D98.inc deleted file mode 100644 index 6068d539..00000000 --- a/asm/non_matching/playerItemShield/sub_080A2D98.inc +++ /dev/null @@ -1,52 +0,0 @@ - .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 LoadSwapGFX - adds r0, r4, #0 - bl sub_080A2E00 - pop {r4, pc} - .align 2, 0 -_080A2DFC: .4byte gPlayerEntity - .syntax divided diff --git a/src/playerItem/playerItemShield.c b/src/playerItem/playerItemShield.c index f62e2bc6..34558bb1 100644 --- a/src/playerItem/playerItemShield.c +++ b/src/playerItem/playerItemShield.c @@ -1,7 +1,11 @@ #include "entity.h" +#include "player.h" +#include "functions.h" extern void (*const gUnk_081271D4[])(Entity*); +extern u8 gUnk_081271DC[]; +void sub_080A2E00(Entity* this); void PlayerItemShield(Entity* this) { if (*(int*)&this->field_0x6c != 0) { @@ -10,6 +14,23 @@ void PlayerItemShield(Entity* this) { gUnk_081271D4[this->action](this); } -ASM_FUNC("asm/non_matching/playerItemShield/sub_080A2D98.inc", void sub_080A2D98(Entity* this)) +void sub_080A2D98(Entity* this) { + gPlayerState.item = this; + this->action = 1; + this->updatePriority = 6; + this->frameIndex = 0xff; + if (this->field_0x68.HALF.LO == 14) { + this->field_0x70.WORD = 0x27; + *(u32*)&this->field_0x78 = gUnk_081271DC[1]; + *(u32*)&this->field_0x74 = 0; + *(u8**)&this->field_0x7c = gUnk_081271DC; + } else { + this->field_0x70.WORD = 0; + } + this->animationState = gPlayerEntity.animationState & 0xe; + sub_08079BD8(this); + LoadSwapGFX(this, 1, 3); + sub_080A2E00(this); +} ASM_FUNC("asm/non_matching/playerItemShield/sub_080A2E00.inc", void sub_080A2E00(Entity* this))