Match sub_080277F8

This commit is contained in:
Tal Hayon 2022-07-19 02:10:18 +03:00
parent df272fcd6f
commit d88ce74486
2 changed files with 33 additions and 63 deletions

View File

@ -9,69 +9,6 @@
thumb_func_start sub_080277F8
sub_080277F8: @ 0x080277F8
push {r4, r5, r6, r7, lr}
adds r6, r0, #0
ldr r3, [r6, #0x54]
ldr r5, [r6, #0x68]
ldr r4, [r6, #0x50]
ldrh r2, [r6, #0x2e]
strh r2, [r5, #0x2e]
movs r7, #0xe
strb r7, [r5, #0xe]
ldrh r0, [r6, #0x32]
subs r0, #0xe
strh r0, [r5, #0x32]
strh r2, [r4, #0x2e]
movs r0, #0x7a
adds r0, r0, r3
mov ip, r0
ldrh r1, [r0]
subs r1, #0xa0
asrs r1, r1, #4
movs r0, #0x12
subs r0, r0, r1
strb r0, [r4, #0xe]
ldrb r1, [r4, #0xe]
ldrh r0, [r5, #0x32]
subs r0, r0, r1
strh r0, [r4, #0x32]
strh r2, [r3, #0x2e]
mov r1, ip
ldrh r0, [r1]
cmp r0, #0xa0
bls _0802784E
subs r0, #0xa0
asrs r0, r0, #2
movs r1, #0xe
subs r1, r1, r0
strb r1, [r3, #0xe]
movs r0, #0x80
ands r1, r0
cmp r1, #0
beq _08027850
movs r0, #0
strb r0, [r3, #0xe]
b _08027850
_0802784E:
strb r7, [r3, #0xe]
_08027850:
ldrb r1, [r3, #0xe]
ldrh r0, [r4, #0x32]
subs r0, r0, r1
strh r0, [r3, #0x32]
ldr r0, [r3, #0x74]
str r0, [r4, #0x74]
ldr r0, [r3, #0x78]
str r0, [r4, #0x78]
ldr r0, [r3, #0x74]
str r0, [r5, #0x74]
ldr r0, [r3, #0x78]
str r0, [r5, #0x78]
adds r0, r6, #0
bl sub_08027984
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_08027870
sub_08027870: @ 0x08027870

View File

@ -1533,3 +1533,36 @@ void sub_080277B8(ChuchuBossEntity* this, u32 param_2, s32 param_3) {
}
sub_080277F8(this);
}
void sub_080277F8(ChuchuBossEntity* this) {
u32 uVar1;
ChuchuBossEntity* pEVar3;
ChuchuBossEntity* pEVar4;
ChuchuBossEntity* pEVar5;
pEVar3 = (ChuchuBossEntity*)super->child;
pEVar5 = this->unk_68;
pEVar4 = (ChuchuBossEntity*)super->parent;
uVar1 = super->x.HALF_U.HI;
pEVar5->base.x.HALF.HI = uVar1;
pEVar5->base.timer = 14;
pEVar5->base.y.HALF.HI = super->y.HALF.HI - 14;
pEVar4->base.x.HALF.HI = uVar1;
pEVar4->base.timer = 18 - ((pEVar3->unk_78.HALF_U.HI - 0xa0) >> 4);
pEVar4->base.y.HALF.HI = pEVar5->base.y.HALF.HI - pEVar4->base.timer;
pEVar3->base.x.HALF.HI = uVar1;
if (pEVar3->unk_78.HALF_U.HI >= 0xa1) {
pEVar3->base.timer = 14 - ((pEVar3->unk_78.HALF_U.HI - 0xa0) >> 2);
if ((pEVar3->base.timer & 0x80) != 0) {
pEVar3->base.timer = 0;
}
} else {
pEVar3->base.timer = 14;
}
pEVar3->base.y.HALF.HI = pEVar4->base.y.HALF.HI - pEVar3->base.timer;
pEVar4->unk_74.WORD = pEVar3->unk_74.WORD;
pEVar4->unk_78.WORD = pEVar3->unk_78.WORD;
pEVar5->unk_74.WORD = pEVar3->unk_74.WORD;
pEVar5->unk_78.WORD = pEVar3->unk_78.WORD;
sub_08027984(this);
}