diff --git a/asm/non_matching/gleerok/sub_0802E768.inc b/asm/non_matching/gleerok/sub_0802E768.inc deleted file mode 100644 index 0a99cd88..00000000 --- a/asm/non_matching/gleerok/sub_0802E768.inc +++ /dev/null @@ -1,61 +0,0 @@ - .syntax unified - - .text - push {r4, r5, r6, lr} - adds r4, r0, #0 - movs r2, #0 - movs r6, #0x1f -_0802E770: - lsls r3, r2, #2 - adds r0, r4, r3 - ldrb r1, [r0, #1] - adds r2, #1 - lsls r0, r2, #2 - adds r0, r4, r0 - ldrb r0, [r0, #1] - subs r0, r1, r0 - ands r0, r6 - adds r5, r2, #0 - cmp r0, #0x10 - ble _0802E790 - cmp r0, #0x1e - bgt _0802E798 - adds r1, #1 - b _0802E796 -_0802E790: - cmp r0, #1 - ble _0802E798 - subs r1, #1 -_0802E796: - ands r1, r6 -_0802E798: - adds r0, r4, r3 - strb r1, [r0, #1] - ldrb r1, [r0, #0x19] - lsls r0, r5, #2 - adds r0, r4, r0 - ldrb r0, [r0, #0x19] - subs r0, r1, r0 - movs r2, #0x1f - ands r0, r2 - cmp r0, #0x10 - ble _0802E7B6 - cmp r0, #0x1d - bgt _0802E7BE - adds r1, #1 - b _0802E7BC -_0802E7B6: - cmp r0, #2 - ble _0802E7BE - subs r1, #1 -_0802E7BC: - ands r1, r2 -_0802E7BE: - adds r0, r4, r3 - strb r1, [r0, #0x19] - adds r2, r5, #0 - cmp r2, #4 - bls _0802E770 - pop {r4, r5, r6, pc} - .align 2, 0 - .syntax divided diff --git a/src/enemy/gleerok.c b/src/enemy/gleerok.c index 948ba8dd..f5afc6c3 100644 --- a/src/enemy/gleerok.c +++ b/src/enemy/gleerok.c @@ -1316,20 +1316,18 @@ NONMATCH("asm/non_matching/gleerok/sub_0802E518.inc", void sub_0802E518(GleerokE } END_NONMATCH -NONMATCH("asm/non_matching/gleerok/sub_0802E768.inc", bool32 sub_0802E768(Gleerok_HeapStruct* param_1)) { +void sub_0802E768(Gleerok_HeapStruct* param_1) { + u32 cVar1; s32 bVar2; s32 bVar2a; - u32 bVar3; - - // solves regalloc - // register u32 bVar3 asm("r1"); + FORCE_REGISTER(u32 bVar3, r1); u32 bVar3a; u32 uVar4; s32 iVar5; for (uVar4 = 0; uVar4 <= 4; uVar4++) { - bVar3 = param_1->filler[uVar4].unk0.HALF.HI; - bVar2 = (bVar3 - param_1->filler[uVar4 + 1].unk0.HALF.HI) & 0x1f; + bVar3 = param_1->filler[uVar4].unk1; + bVar2 = (bVar3 - param_1->filler[uVar4 + 1].unk1) & 0x1f; if (bVar2 > 0x10) { if (bVar2 <= 0x1e) { @@ -1339,9 +1337,9 @@ NONMATCH("asm/non_matching/gleerok/sub_0802E768.inc", bool32 sub_0802E768(Gleero bVar3 = (bVar3 - 1) & 0x1f; } - param_1->filler[uVar4].unk0.HALF.HI = bVar3; - bVar3 = param_1->filler2[uVar4].unk0.HALF.HI; - bVar2 = (bVar3 - param_1->filler2[uVar4 + 1].unk0.HALF.HI) & 0x1f; + param_1->filler[uVar4].unk1 = bVar3; + bVar3 = param_1->filler2[(uVar4)].unk1; + bVar2 = (bVar3 - param_1->filler2[(uVar4 + 1)].unk1) & 0x1f; if (bVar2 > 0x10) { if (bVar2 <= 0x1d) { @@ -1351,10 +1349,9 @@ NONMATCH("asm/non_matching/gleerok/sub_0802E768.inc", bool32 sub_0802E768(Gleero bVar3 = (bVar3 - 1) & 0x1f; } - param_1->filler2[uVar4].unk0.HALF.HI = bVar3; + param_1->filler2[(uVar4)].unk1 = bVar3; } } -END_NONMATCH u32 sub_0802E7CC(Gleerok_HeapStruct* param_1, u32 param_2, u32 param_3, u32 param_4) { param_1->entities[(u8)param_2]->animationState = param_1->filler[(u8)param_2].unk0.HALF.HI;