From 4f08c658696910d67a214277b7a11bd443e82fda Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Sun, 13 Feb 2022 07:23:45 +0200 Subject: [PATCH] Match ItemInit --- asm/non_matching/arm_proxy/ItemInit.inc | 130 ------------------------ src/playerItem.c | 9 +- 2 files changed, 5 insertions(+), 134 deletions(-) delete mode 100644 asm/non_matching/arm_proxy/ItemInit.inc diff --git a/asm/non_matching/arm_proxy/ItemInit.inc b/asm/non_matching/arm_proxy/ItemInit.inc deleted file mode 100644 index 848c33be..00000000 --- a/asm/non_matching/arm_proxy/ItemInit.inc +++ /dev/null @@ -1,130 +0,0 @@ - .syntax unified - push {r4, r5, lr} - mov ip, r0 - ldrb r0, [r0, #9] - lsls r0, r0, #3 - ldr r1, _08017410 @ =gPlayerItemDefinitions - adds r3, r0, r1 - ldrb r0, [r3] - cmp r0, #0xff - bne _080173CE - ldrb r2, [r3, #2] - ldr r1, _08017414 @ =gAdditionalPlayerItemDefinitions - ldrb r0, [r3, #1] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r3, [r0] - mov r0, ip - adds r0, #0x68 - ldrb r0, [r0] - subs r0, r0, r2 - lsls r0, r0, #3 - adds r3, r3, r0 -_080173CE: - ldrb r0, [r3] - movs r1, #0xf - ands r1, r0 - lsls r0, r0, #4 - orrs r0, r1 - mov r1, ip - strb r0, [r1, #0x1a] - ldrb r1, [r3, #1] - mov r0, ip - adds r0, #0x44 - strb r1, [r0] - ldrb r1, [r3, #3] - subs r0, #4 - strb r1, [r0] - ldrb r0, [r3, #4] - mov r1, ip - adds r1, #0x3f - strb r0, [r1] - ldrb r0, [r3, #5] - mov r2, ip - strh r0, [r2, #0x12] - ldrh r1, [r3, #6] - cmp r1, #0 - bne _0801741C - ldr r2, _08017418 @ =gPlayerEntity - adds r0, r2, #0 - adds r0, #0x60 - ldrh r1, [r0] - mov r0, ip - adds r0, #0x60 - strh r1, [r0] - adds r5, r2, #0 - b _08017428 - .align 2, 0 -_08017410: .4byte gPlayerItemDefinitions -_08017414: .4byte gAdditionalPlayerItemDefinitions -_08017418: .4byte gPlayerEntity -_0801741C: - ldr r0, _0801749C @ =0x000003FF - ands r0, r1 - mov r1, ip - adds r1, #0x60 - strh r0, [r1] - ldr r5, _080174A0 @ =gPlayerEntity -_08017428: - mov r3, ip - ldrb r0, [r3, #0x14] - cmp r0, #0 - bne _08017438 - ldrb r1, [r5, #0x14] - movs r0, #6 - ands r0, r1 - strb r0, [r3, #0x14] -_08017438: - adds r0, r5, #0 - adds r0, #0x38 - ldrb r1, [r0] - mov r0, ip - adds r0, #0x38 - strb r1, [r0] - ldrb r1, [r5, #0x19] - lsrs r1, r1, #6 - lsls r1, r1, #6 - mov r0, ip - ldrb r3, [r0, #0x19] - movs r2, #0x3f - adds r0, r2, #0 - ands r0, r3 - orrs r0, r1 - mov r1, ip - strb r0, [r1, #0x19] - adds r0, r5, #0 - adds r0, #0x29 - ldrb r1, [r0] - lsls r1, r1, #0x1d - mov r4, ip - adds r4, #0x29 - lsrs r1, r1, #0x1d - ldrb r3, [r4] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r3 - orrs r0, r1 - strb r0, [r4] - ldrb r0, [r5, #0x1b] - lsrs r0, r0, #6 - lsls r0, r0, #6 - mov r3, ip - ldrb r1, [r3, #0x1b] - ands r2, r1 - orrs r2, r0 - strb r2, [r3, #0x1b] - mov r2, ip - adds r2, #0x45 - movs r1, #1 - movs r0, #1 - strb r0, [r2] - ldrb r0, [r3, #0x10] - orrs r1, r0 - strb r1, [r3, #0x10] - pop {r4, r5} - pop {r0} - bx r0 - .align 2, 0 -_0801749C: .4byte 0x000003FF -_080174A0: .4byte gPlayerEntity - .syntax divided diff --git a/src/playerItem.c b/src/playerItem.c index 48b67c0a..5606437b 100644 --- a/src/playerItem.c +++ b/src/playerItem.c @@ -84,15 +84,17 @@ void ItemUpdate(Entity* this) { DrawEntity(this); } -// tiny regalloc -NONMATCH("asm/non_matching/arm_proxy/ItemInit.inc", void ItemInit(Entity* this)) { +void ItemInit(Entity* this) { + u32 tmp2, tmp3; const PlayerItemDefinition* definition = &gPlayerItemDefinitions[this->id]; if (definition->bitfield == 0xff) { u32 tmp = definition->firstItemIndex; definition = gAdditionalPlayerItemDefinitions[definition->index]; definition = &definition[this->field_0x68.HALF.LO - tmp]; } - this->palette.raw = (definition->bitfield & 0xf) | (definition->bitfield << 4); + tmp3 = definition->bitfield; + tmp2 = tmp3 & 0xf; + this->palette.raw = (tmp3 << 4) | (tmp2); this->damage = definition->index; this->hurtType = definition->hurtType; this->hitType = definition->hitType; @@ -113,4 +115,3 @@ NONMATCH("asm/non_matching/arm_proxy/ItemInit.inc", void ItemInit(Entity* this)) this->health = 1; this->flags |= ENT_DID_INIT; } -END_NONMATCH