Match sub_08026C40

This commit is contained in:
Tal Hayon 2022-07-17 06:01:00 +03:00
parent a3c3eb24ad
commit 1f0a99b011
2 changed files with 91 additions and 248 deletions

View File

@ -20,254 +20,6 @@
thumb_func_start sub_08026C40
sub_08026C40: @ 0x08026C40
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
sub sp, #4
adds r5, r0, #0
ldr r4, [r5, #0x54]
ldr r7, [r5, #0x68]
ldr r6, [r5, #0x50]
adds r2, r5, #0
adds r2, #0x7d
ldrb r0, [r2]
cmp r0, #0
beq _08026CCC
subs r1, r0, #1
strb r1, [r2]
lsls r0, r1, #0x18
cmp r0, #0
beq _08026C9C
movs r0, #8
ands r1, r0
cmp r1, #0
beq _08026C82
ldr r0, [r4, #0x74]
movs r1, #0x80
lsls r1, r1, #0xa
adds r0, r0, r1
str r0, [r4, #0x74]
ldr r0, [r4, #0x78]
movs r2, #0x80
lsls r2, r2, #9
adds r0, r0, r2
str r0, [r4, #0x78]
b _08026E12
_08026C82:
ldr r0, [r4, #0x74]
ldr r3, _08026C94 @ =0xFFFE0000
adds r0, r0, r3
str r0, [r4, #0x74]
ldr r0, [r4, #0x78]
ldr r1, _08026C98 @ =0xFFFF0000
adds r0, r0, r1
str r0, [r4, #0x78]
b _08026E12
.align 2, 0
_08026C94: .4byte 0xFFFE0000
_08026C98: .4byte 0xFFFF0000
_08026C9C:
ldrb r1, [r5, #0x15]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _08026CBA
adds r0, r4, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r0, #8
beq _08026CCC
adds r0, r4, #0
movs r1, #8
bl InitAnimationForceUpdate
b _08026CCC
_08026CBA:
adds r0, r4, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r0, #7
beq _08026CCC
adds r0, r4, #0
movs r1, #7
bl InitAnimationForceUpdate
_08026CCC:
adds r0, r5, #0
adds r0, #0x7c
ldrb r1, [r0]
mov r8, r0
cmp r1, #0
bne _08026CF0
ldrb r1, [r5, #0x15]
movs r0, #0x10
ands r0, r1
ldr r2, _08026CEC @ =0xFFFFFD00
cmp r0, #0
beq _08026D00
movs r2, #0xc0
lsls r2, r2, #2
b _08026D00
.align 2, 0
_08026CEC: .4byte 0xFFFFFD00
_08026CF0:
ldrb r1, [r5, #0x15]
movs r0, #0x10
ands r0, r1
ldr r2, _08026D30 @ =0xFFFFFB80
cmp r0, #0
beq _08026D00
movs r2, #0x90
lsls r2, r2, #3
_08026D00:
adds r0, r7, #0
adds r0, #0x83
ldrb r0, [r0]
adds r0, #6
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xc
bls _08026D34
adds r1, r7, #0
adds r1, #0x82
lsls r0, r2, #1
ldrh r3, [r1]
adds r0, r0, r3
strh r0, [r1]
adds r1, r6, #0
adds r1, #0x82
ldrh r0, [r1]
adds r0, r0, r2
strh r0, [r1]
adds r1, r4, #0
adds r1, #0x82
ldrh r0, [r1]
b _08026D7E
.align 2, 0
_08026D30: .4byte 0xFFFFFB80
_08026D34:
adds r0, r7, #0
adds r0, #0x82
movs r1, #0
strh r1, [r0]
adds r0, r6, #0
adds r0, #0x83
ldrb r0, [r0]
adds r0, #6
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xc
bls _08026D60
adds r1, r6, #0
adds r1, #0x82
lsls r0, r2, #1
ldrh r3, [r1]
adds r0, r0, r3
strh r0, [r1]
adds r1, r4, #0
adds r1, #0x82
ldrh r0, [r1]
b _08026D7E
_08026D60:
adds r0, r6, #0
adds r0, #0x82
strh r1, [r0]
adds r0, r4, #0
adds r0, #0x83
ldrb r0, [r0]
adds r0, #6
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xc
bls _08026D84
adds r1, r4, #0
adds r1, #0x82
lsls r0, r2, #1
ldrh r2, [r1]
_08026D7E:
adds r0, r0, r2
strh r0, [r1]
b _08026D8A
_08026D84:
adds r0, r4, #0
adds r0, #0x82
strh r1, [r0]
_08026D8A:
adds r1, r4, #0
adds r1, #0x76
ldrh r0, [r1]
cmp r0, #0xa0
bls _08026DA4
ldr r0, [r4, #0x74]
ldr r3, _08026DA0 @ =0xFFFC0000
adds r0, r0, r3
str r0, [r4, #0x74]
b _08026DA8
.align 2, 0
_08026DA0: .4byte 0xFFFC0000
_08026DA4:
movs r0, #0xa0
strh r0, [r1]
_08026DA8:
adds r0, r4, #0
adds r0, #0x7a
ldrh r0, [r0]
cmp r0, #0x9f
bhi _08026DBE
ldr r0, [r4, #0x78]
movs r1, #0x80
lsls r1, r1, #8
adds r0, r0, r1
str r0, [r4, #0x78]
b _08026E0C
_08026DBE:
adds r0, r5, #0
movs r1, #3
movs r2, #0
bl sub_080276F4
adds r0, r4, #0
adds r0, #0x7d
movs r2, #0
strb r2, [r0]
ldrb r1, [r5, #0x15]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _08026DEE
adds r1, r6, #0
adds r1, #0x85
movs r0, #1
strb r0, [r1]
adds r1, r7, #0
adds r1, #0x85
strb r0, [r1]
adds r1, r4, #0
adds r1, #0x85
strb r0, [r1]
_08026DEE:
movs r0, #8
strb r0, [r5, #0xd]
movs r0, #4
mov r3, r8
strb r0, [r3]
strb r2, [r6, #0xf]
strb r2, [r7, #0xf]
strb r2, [r4, #0xf]
str r2, [sp]
adds r0, r5, #0
movs r1, #0x90
movs r2, #0xb0
movs r3, #0x10
bl sub_08027B98
_08026E0C:
adds r0, r5, #0
bl sub_08027870
_08026E12:
add sp, #4
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_08026E1C
sub_08026E1C: @ 0x08026E1C

View File

@ -979,3 +979,94 @@ void sub_08026BE8(ChuchuBossEntity* this) {
}
sub_08027870(super);
}
void sub_08026C40(ChuchuBossEntity* this) {
u8 bVar2;
int iVar5;
ChuchuBossEntity* pEVar6;
ChuchuBossEntity* pEVar7;
ChuchuBossEntity* pEVar8;
pEVar6 = (ChuchuBossEntity*)super->child;
pEVar8 = this->unk_68;
pEVar7 = (ChuchuBossEntity*)super->parent;
if (this->unk_7d != 0) {
if (--this->unk_7d != 0) {
if ((this->unk_7d & 8) != 0) {
pEVar6->unk_74.WORD += 0x20000;
pEVar6->unk_78.WORD += 0x10000;
return;
}
pEVar6->unk_74.WORD -= 0x20000;
pEVar6->unk_78.WORD -= 0x10000;
return;
}
if ((super->direction & 0x10) != 0) {
if (pEVar6->base.animIndex != 8) {
InitAnimationForceUpdate(&pEVar6->base, 8);
}
} else {
if (pEVar6->base.animIndex != 7) {
InitAnimationForceUpdate(&pEVar6->base, 7);
}
}
}
if (this->unk_7c == 0) {
if ((super->direction & 0x10) != 0) {
iVar5 = 0x300;
} else {
iVar5 = -0x300;
}
} else {
if ((super->direction & 0x10) != 0) {
iVar5 = 0x480;
} else {
iVar5 = -0x480;
}
}
bVar2 = pEVar8->unk_82.HALF.HI + 6;
if (bVar2 >= 0xd) {
pEVar8->unk_82.HWORD += iVar5 * 2;
pEVar7->unk_82.HWORD += iVar5;
pEVar6->unk_82.HWORD += iVar5;
} else {
pEVar8->unk_82.HWORD = 0;
bVar2 = pEVar7->unk_82.HALF.HI + 6U;
if (bVar2 >= 0xd) {
pEVar7->unk_82.HWORD += iVar5 * 2;
pEVar6->unk_82.HWORD += iVar5;
} else {
pEVar7->unk_82.HWORD = 0;
bVar2 = pEVar6->unk_82.HALF.HI + 6U;
if (bVar2 >= 0xd) {
pEVar6->unk_82.HWORD += iVar5 * 2;
} else {
pEVar6->unk_82.HWORD = 0;
}
}
}
if (pEVar6->unk_74.HALF_U.HI >= 0xa1) {
pEVar6->unk_74.WORD -= 0x40000;
} else {
pEVar6->unk_74.HALF_U.HI = 0xa0;
}
if (pEVar6->unk_78.HALF_U.HI < 0xa0) {
pEVar6->unk_78.WORD += 0x8000;
} else {
sub_080276F4(this, 3, 0);
pEVar6->unk_7d = 0;
if ((super->direction & 0x10) != 0) {
*(u8*)((int)pEVar7 + 0x85) = 1;
*(u8*)((int)pEVar8 + 0x85) = 1;
*(u8*)((int)pEVar6 + 0x85) = 1;
}
super->subAction = 8;
this->unk_7c = 4;
pEVar7->base.subtimer = 0;
pEVar8->base.subtimer = 0;
pEVar6->base.subtimer = 0;
sub_08027B98(this, 0x90, 0xb0, 0x10, 0);
}
sub_08027870(super);
}