Match sub_08027064

This commit is contained in:
Tal Hayon 2022-07-17 09:37:49 +03:00
parent 6e077ed02b
commit 09f4a3267a
2 changed files with 83 additions and 226 deletions

View File

@ -7,231 +7,6 @@
.text
thumb_func_start sub_08027064
sub_08027064: @ 0x08027064
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
adds r5, r0, #0
ldr r6, [r5, #0x54]
ldr r0, [r5, #0x68]
mov sb, r0
ldr r1, [r5, #0x50]
mov r8, r1
movs r0, #0x60
strh r0, [r5, #0x24]
adds r0, r6, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r0, #0xa
beq _08027098
ldr r0, _080270C8 @ =gRoomTransition
ldr r0, [r0]
movs r1, #0xf
ands r0, r1
cmp r0, #0
bne _08027098
movs r0, #0x7c
bl SoundReq
_08027098:
adds r0, r5, #0
adds r0, #0x84
ldr r3, [r0]
ldrb r1, [r3, #3]
adds r7, r0, #0
cmp r1, #0
beq _080270E0
ldr r0, _080270CC @ =gPlayerEntity
movs r2, #0x32
ldrsh r4, [r5, r2]
movs r1, #0x32
ldrsh r2, [r0, r1]
cmp r4, r2
beq _080270E0
ldr r0, _080270C8 @ =gRoomTransition
ldr r1, [r0]
movs r0, #0xf
ands r1, r0
cmp r1, #0
bne _080270D4
cmp r4, r2
ble _080270D0
strb r1, [r3, #0xc]
b _080270D4
.align 2, 0
_080270C8: .4byte gRoomTransition
_080270CC: .4byte gPlayerEntity
_080270D0:
movs r0, #0x10
strb r0, [r3, #0xc]
_080270D4:
ldr r0, [r7]
ldrb r0, [r0, #0xc]
strb r0, [r5, #0x15]
adds r0, r5, #0
bl ProcessMovement0
_080270E0:
adds r0, r6, #0
adds r0, #0x85
ldrb r0, [r0]
cmp r0, #1
bne _080270FC
adds r0, r6, #0
adds r0, #0x83
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
bgt _0802710E
movs r0, #0x18
b _08027110
_080270FC:
adds r0, r6, #0
adds r0, #0x83
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
bge _0802710E
movs r0, #0x18
b _08027110
_0802710E:
movs r0, #8
_08027110:
strb r0, [r5, #0x15]
ldr r1, [r7]
ldrb r0, [r1, #3]
cmp r0, #0
bne _08027152
movs r2, #0x2e
ldrsh r0, [r5, r2]
ldrh r1, [r1, #0xe]
cmp r0, r1
bne _0802714A
mov r0, r8
adds r0, #0x84
movs r1, #1
strb r1, [r0]
mov r0, sb
adds r0, #0x84
strb r1, [r0]
adds r0, r6, #0
adds r0, #0x84
strb r1, [r0]
adds r1, r5, #0
adds r1, #0x7c
movs r0, #0x1e
strb r0, [r1]
ldr r1, [r7]
ldrb r0, [r1, #3]
adds r0, #1
strb r0, [r1, #3]
b _080271FE
_0802714A:
adds r0, r5, #0
bl ProcessMovement0
b _080271FE
_08027152:
adds r0, r6, #0
adds r0, #0x7d
ldrb r0, [r0]
cmp r0, #0
beq _080271E6
mov r0, sb
adds r0, #0x7d
ldrb r0, [r0]
cmp r0, #0
beq _080271E6
mov r0, r8
adds r0, #0x7d
ldrb r0, [r0]
cmp r0, #0
beq _080271E6
adds r1, r5, #0
adds r1, #0x7c
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xff
bne _080271FE
mov r0, r8
adds r0, #0x84
movs r1, #1
strb r1, [r0]
mov r0, sb
adds r0, #0x84
strb r1, [r0]
adds r0, r6, #0
adds r0, #0x84
strb r1, [r0]
movs r3, #0
ldr r0, [r7]
ldrb r0, [r0, #3]
cmp r0, #1
bls _080271B2
ldr r0, _080271DC @ =gPlayerEntity
movs r2, #0x2e
ldrsh r1, [r5, r2]
movs r2, #0x2e
ldrsh r0, [r0, r2]
movs r3, #8
cmp r1, r0
ble _080271B2
movs r3, #0x18
_080271B2:
ldr r2, [r7]
ldrb r1, [r2, #3]
cmp r1, #5
beq _080271C0
ldrb r0, [r5, #0x15]
cmp r0, r3
bne _080271E0
_080271C0:
movs r4, #0
movs r0, #6
strb r0, [r5, #0xd]
adds r0, r5, #0
movs r1, #7
movs r2, #1
bl sub_080276F4
ldr r0, [r7]
strb r4, [r0, #3]
adds r1, r5, #0
adds r1, #0x7d
movs r0, #0xf
b _080271FC
.align 2, 0
_080271DC: .4byte gPlayerEntity
_080271E0:
adds r0, r1, #1
strb r0, [r2, #3]
b _080271FE
_080271E6:
ldr r0, [r7]
ldrb r0, [r0, #3]
cmp r0, #4
beq _080271F6
adds r1, r5, #0
adds r1, #0x7c
movs r0, #0x1e
b _080271FC
_080271F6:
adds r1, r5, #0
adds r1, #0x7c
movs r0, #0x3c
_080271FC:
strb r0, [r1]
_080271FE:
adds r0, r5, #0
bl sub_08027870
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_0802720C
sub_0802720C: @ 0x0802720C
push {r4, lr}

View File

@ -20,7 +20,8 @@ typedef struct {
u8 unk_06;
u8 unk_07;
u32 unk_08;
u16 unk_0c;
u8 unk_0c;
u8 unk_0d;
u16 unk_0e;
} Helper;
@ -1171,3 +1172,84 @@ void sub_08026FA4(ChuchuBossEntity* this) {
}
sub_08027870(super);
}
void sub_08027064(ChuchuBossEntity* this) {
u32 uVar2;
ChuchuBossEntity* pEVar5;
ChuchuBossEntity* pEVar7;
ChuchuBossEntity* pEVar10;
pEVar10 = (ChuchuBossEntity*)super->child;
pEVar5 = this->unk_68;
pEVar7 = (ChuchuBossEntity*)super->parent;
super->speed = 0x60;
if (pEVar10->base.animIndex != 10 && ((gRoomTransition.frameCount & 0xf) == 0)) {
SoundReq(SFX_PLY_JUMP);
}
if (this->unk_84->unk_03 != 0) {
if (super->y.HALF.HI != gPlayerEntity.y.HALF.HI) {
if ((gRoomTransition.frameCount & 0xf) == 0) {
if (super->y.HALF.HI > gPlayerEntity.y.HALF.HI) {
this->unk_84->unk_0c = 0;
} else {
this->unk_84->unk_0c = 0x10;
}
}
super->direction = this->unk_84->unk_0c;
ProcessMovement0(super);
}
}
if (*(char*)((int)pEVar10 + 0x85) == 1) {
if ((s8)pEVar10->unk_82.HALF.HI < 1) {
super->direction = 24;
} else {
super->direction = 8;
}
} else {
if ((s8)pEVar10->unk_82.HALF.HI <= -1) {
super->direction = 24;
} else {
super->direction = 8;
}
}
if (this->unk_84->unk_03 == 0) {
if (super->x.HALF.HI == this->unk_84->unk_0e) {
*(char*)((int)pEVar7 + 0x84) = 1;
*(char*)((int)pEVar5 + 0x84) = 1;
*(char*)((int)pEVar10 + 0x84) = 1;
this->unk_7c = 0x1e;
this->unk_84->unk_03++;
} else {
ProcessMovement0(super);
}
} else if (pEVar10->unk_7d != 0 && pEVar5->unk_7d != 0 && pEVar7->unk_7d != 0) {
if (this->unk_7c-- == 0) {
*(char*)((int)pEVar7 + 0x84) = 1;
*(char*)((int)pEVar5 + 0x84) = 1;
*(char*)((int)pEVar10 + 0x84) = 1;
uVar2 = 0;
if (this->unk_84->unk_03 > 1) {
if (super->x.HALF.HI > gPlayerEntity.x.HALF.HI) {
uVar2 = 24;
} else {
uVar2 = 8;
}
}
if (this->unk_84->unk_03 == 5 || super->direction == uVar2) {
super->subAction = 6;
sub_080276F4(this, 7, 1);
this->unk_84->unk_03 = 0;
this->unk_7d = 0xf;
} else {
this->unk_84->unk_03++;
}
}
} else {
if (this->unk_84->unk_03 != 4) {
this->unk_7c = 0x1e;
} else {
this->unk_7c = 0x3c;
}
}
sub_08027870(super);
}