Match sub_0802EBC4

This commit is contained in:
Tal Hayon 2022-07-26 17:34:48 +03:00
parent 17a7755083
commit 9c47da96e6
3 changed files with 36 additions and 102 deletions

View File

@ -1,99 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_0802EBC4
sub_0802EBC4: @ 0x0802EBC4
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x74
ldrb r0, [r1]
adds r6, r0, #0
cmp r6, #0
bne _0802EC66
ldr r1, _0802EC18 @ =gUnk_080CD86C
adds r5, r4, #0
adds r5, #0x79
ldrb r0, [r5]
lsls r0, r0, #2
adds r0, r0, r1
ldr r0, [r0]
bl GetRandomByWeight
ldr r2, _0802EC1C @ =gUnk_080CD878
ldrb r1, [r5]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
adds r1, r1, r0
adds r2, r4, #0
adds r2, #0x75
ldrb r0, [r1]
ldrb r1, [r2]
cmp r0, r1
bhs _0802EC60
strb r6, [r2]
ldrb r1, [r5]
cmp r1, #0
bne _0802EC20
adds r0, r4, #0
adds r0, #0x76
strb r1, [r0]
adds r1, r4, #0
adds r1, #0x77
movs r0, #3
strb r0, [r1]
b _0802EC56
.align 2, 0
_0802EC18: .4byte gUnk_080CD86C
_0802EC1C: .4byte gUnk_080CD878
_0802EC20:
bl Random
adds r1, r0, #0
movs r5, #1
ands r1, r5
adds r3, r4, #0
adds r3, #0x76
ldrb r0, [r3]
cmp r1, r0
beq _0802EC3E
strb r1, [r3]
adds r0, r4, #0
adds r0, #0x77
strb r5, [r0]
b _0802EC56
_0802EC3E:
adds r2, r4, #0
adds r2, #0x77
ldrb r0, [r2]
adds r0, #1
strb r0, [r2]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #2
bls _0802EC54
eors r1, r5
strb r5, [r2]
_0802EC54:
strb r1, [r3]
_0802EC56:
movs r1, #0
movs r0, #3
strb r0, [r4, #0xd]
strb r1, [r4, #0xb]
b _0802EC6A
_0802EC60:
movs r0, #2
strb r0, [r4, #0xd]
b _0802EC6A
_0802EC66:
subs r0, #1
strb r0, [r1]
_0802EC6A:
pop {r4, r5, r6, pc}

View File

@ -328,7 +328,6 @@ SECTIONS {
src/enemy/bobomb.o(.text);
src/enemy/wallMaster2.o(.text);
src/enemy/gleerok.o(.text);
asm/enemy/gleerok.o(.text);
src/enemy/vaatiEyesMacro.o(.text);
src/enemy/tektite.o(.text);
src/enemy/wizzrobeWind.o(.text);

View File

@ -59,6 +59,8 @@ extern u8 gUnk_080CD840[];
extern u8 gUnk_080CD844[];
extern u8 gUnk_080CD850[];
extern u8 gUnk_080CD854[];
extern const u8* gUnk_080CD86C[];
extern const u8* gUnk_080CD878[];
extern u32 sub_0806FC80(Entity*, Entity*, s32);
@ -1259,7 +1261,6 @@ 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)) {
u32 cVar1;
s32 bVar2;
s32 bVar2a;
u32 bVar3;
@ -1409,7 +1410,6 @@ void sub_0802EA68(Gleerok_HeapStruct* param_1, u32 param_2, u32 param_3, u32 par
}
NONMATCH("asm/non_matching/gleerok/sub_0802EA88.inc", bool32 sub_0802EA88(Gleerok_HeapStruct* this)) {
u32 cVar1;
s32 bVar2;
u32 uVar3;
u32 bVar4;
@ -1495,3 +1495,37 @@ void sub_0802EB9C(GleerokEntity* this) {
this->unk_74 = gUnk_080CD854[GetRandomByWeight(gUnk_080CD850)];
this->unk_75++;
}
void sub_0802EBC4(GleerokEntity* this) {
u32 bVar3;
s32 iVar4;
if (this->unk_74 == 0) {
iVar4 = GetRandomByWeight(gUnk_080CD86C[this->unk_79]);
if (gUnk_080CD878[this->unk_79][iVar4] < this->unk_75) {
this->unk_75 = 0;
if (this->unk_79 == 0) {
this->unk_76 = 0;
this->unk_77 = 3;
} else {
bVar3 = Random() & 1;
if (bVar3 != this->unk_76) {
this->unk_76 = bVar3;
this->unk_77 = 1;
} else {
if (++this->unk_77 > 2) {
bVar3 ^= 1;
this->unk_77 = 1;
}
this->unk_76 = bVar3;
}
}
this->base.subAction = 3;
this->base.type2 = 0;
} else {
this->base.subAction = 2;
}
} else {
this->unk_74--;
}
}