Match sub_08043B08

This commit is contained in:
Tal Hayon 2022-08-26 20:54:54 +03:00
parent 487277e786
commit 2d5ceeacd4
2 changed files with 39 additions and 69 deletions

View File

@ -1,67 +0,0 @@
.syntax unified
push {r4, r5, r6, lr}
ldrb r3, [r0, #0xa]
lsls r1, r3, #4
adds r4, r1, #0
adds r4, #8
ldr r2, [r0, #0x64]
adds r6, r2, r4
adds r1, #0x18
adds r4, r2, r1
ldr r0, _08043B40 @ =gUnk_080D13B2
adds r3, r3, r0
ldrb r5, [r3]
ldr r0, [r2]
ldrb r0, [r0, #0xb]
cmp r0, #0
bne _08043B44
ldrb r1, [r6, #1]
ldrb r0, [r4, #1]
subs r0, r1, r0
lsls r0, r0, #0x18
asrs r3, r0, #0x18
cmp r5, r3
bhs _08043B5E
cmp r3, #0
ble _08043B56
subs r0, r1, r5
b _08043B5C
.align 2, 0
_08043B40: .4byte gUnk_080D13B2
_08043B44:
ldrb r0, [r4, #1]
ldrb r1, [r6, #1]
subs r0, r0, r1
lsls r0, r0, #0x18
asrs r3, r0, #0x18
cmp r5, r3
bhs _08043B5E
cmp r3, #0
bge _08043B5A
_08043B56:
strb r1, [r4, #1]
b _08043B5E
_08043B5A:
adds r0, r1, r5
_08043B5C:
strb r0, [r4, #1]
_08043B5E:
ldrb r2, [r6, #5]
ldrb r0, [r4, #5]
subs r3, r2, r0
lsls r1, r5, #1
adds r0, r3, r5
cmp r1, r0
bhs _08043B78
cmp r3, #0
ble _08043B74
subs r0, r2, r5
b _08043B76
_08043B74:
adds r0, r2, r5
_08043B76:
strb r0, [r4, #5]
_08043B78:
pop {r4, r5, r6, pc}
.align 2, 0
.syntax divided

View File

@ -1201,9 +1201,46 @@ static void sub_08043ABC(Entity* this) {
((VaatiArm_HeapStruct*)this->myHeap)->entities[0]->spriteOffsetY--;
}
static ASM_FUNC("asm/non_matching/vaati/sub_08043B08.inc", void sub_08043B08(Entity* this))
void sub_08043B08(Entity* this) {
VaatiArm_HeapStruct1* hs1;
VaatiArm_HeapStruct1* hs2;
u32 bVar1;
s32 uVar6;
static void sub_08043B7C(Entity* this) {
hs1 = &((VaatiArm_HeapStruct*)this->myHeap)->s1[this->type - 1];
hs2 = &((VaatiArm_HeapStruct*)this->myHeap)->s1[this->type];
bVar1 = gUnk_080D13B2[this->type];
if (((VaatiArm_HeapStruct*)this->myHeap)->entities[0]->type2 == 0) {
uVar6 = (s8)((hs1->unk00.HALF.HI - hs2->unk00.HALF.HI));
if (bVar1 < uVar6) {
if (uVar6 <= 0) {
hs2->unk00.HALF.HI = hs1->unk00.HALF.HI;
} else {
hs2->unk00.HALF.HI = hs1->unk00.HALF.HI - bVar1;
}
}
} else {
uVar6 = (s8)(hs2->unk00.HALF.HI - hs1->unk00.HALF.HI);
if (bVar1 < uVar6) {
if (uVar6 < 0) {
hs2->unk00.HALF.HI = hs1->unk00.HALF.HI;
} else {
hs2->unk00.HALF.HI = hs1->unk00.HALF.HI + bVar1;
}
}
}
uVar6 = hs1->unk04.HALF.HI - hs2->unk04.HALF.HI;
if ((bVar1 << 1) < uVar6 + bVar1) {
if (uVar6 > 0) {
hs2->unk04.HALF.HI = hs1->unk04.HALF.HI - bVar1;
} else {
hs2->unk04.HALF.HI = hs1->unk04.HALF.HI + bVar1;
}
}
}
static void sub_08043B7C(Entity* this) {
sub_08043B08(((VaatiArm_HeapStruct*)this->myHeap)->entities[1]);
sub_08043B08(((VaatiArm_HeapStruct*)this->myHeap)->entities[2]);
sub_08043B08(((VaatiArm_HeapStruct*)this->myHeap)->entities[3]);