Match sub_0802E9B0

This commit is contained in:
Tal Hayon 2022-07-25 17:43:17 +03:00
parent b9be6d5eed
commit d1819a0aba
5 changed files with 362 additions and 379 deletions

View File

@ -7,384 +7,6 @@
.text
thumb_func_start sub_0802E768
sub_0802E768: @ 0x0802E768
push {r4, r5, r6, lr}
adds r4, r0, #0
movs r2, #0
movs r6, #0x1f
_0802E770:
lsls r3, r2, #2
adds r0, r4, r3
ldrb r1, [r0, #1]
adds r2, #1
lsls r0, r2, #2
adds r0, r4, r0
ldrb r0, [r0, #1]
subs r0, r1, r0
ands r0, r6
adds r5, r2, #0
cmp r0, #0x10
ble _0802E790
cmp r0, #0x1e
bgt _0802E798
adds r1, #1
b _0802E796
_0802E790:
cmp r0, #1
ble _0802E798
subs r1, #1
_0802E796:
ands r1, r6
_0802E798:
adds r0, r4, r3
strb r1, [r0, #1]
ldrb r1, [r0, #0x19]
lsls r0, r5, #2
adds r0, r4, r0
ldrb r0, [r0, #0x19]
subs r0, r1, r0
movs r2, #0x1f
ands r0, r2
cmp r0, #0x10
ble _0802E7B6
cmp r0, #0x1d
bgt _0802E7BE
adds r1, #1
b _0802E7BC
_0802E7B6:
cmp r0, #2
ble _0802E7BE
subs r1, #1
_0802E7BC:
ands r1, r2
_0802E7BE:
adds r0, r4, r3
strb r1, [r0, #0x19]
adds r2, r5, #0
cmp r2, #4
bls _0802E770
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_0802E7CC
sub_0802E7CC: @ 0x0802E7CC
lsls r1, r1, #0x18
lsrs r1, r1, #0x16
adds r2, r0, #0
adds r2, #0x3c
adds r2, r2, r1
ldr r3, [r2]
adds r0, r0, r1
ldrb r0, [r0, #1]
strb r0, [r3, #0x14]
ldr r0, [r2]
ldrb r0, [r0, #0x14]
bx lr
thumb_func_start sub_0802E7E4
sub_0802E7E4: @ 0x0802E7E4
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
mov ip, r0
ldr r0, [r0, #0x50]
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x40
ands r0, r1
cmp r0, #0
beq _0802E8D0
movs r6, #0
movs r5, #0
mov r7, ip
adds r7, #0x3c
movs r0, #0x30
add r0, ip
mov r8, r0
movs r1, #8
rsbs r1, r1, #0
mov sl, r1
movs r2, #4
rsbs r2, r2, #0
mov sb, r2
_0802E818:
lsls r0, r5, #2
adds r4, r7, r0
ldr r3, [r4]
adds r3, #0x29
movs r1, #7
ands r1, r6
ldrb r2, [r3]
mov r0, sl
ands r0, r2
orrs r0, r1
strb r0, [r3]
adds r6, #1
mov r1, r8
adds r0, r1, r5
ldrb r0, [r0]
cmp r0, #0
bne _0802E852
ldr r3, [r4]
ldrb r2, [r3, #0x18]
lsls r1, r2, #0x1e
lsrs r1, r1, #0x1e
movs r0, #2
rsbs r0, r0, #0
ands r1, r0
mov r0, sb
ands r0, r2
orrs r0, r1
strb r0, [r3, #0x18]
b _0802E860
_0802E852:
ldr r2, [r4]
ldrb r1, [r2, #0x18]
mov r0, sb
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r2, #0x18]
_0802E860:
adds r5, #1
cmp r5, #5
bls _0802E818
movs r5, #0
movs r2, #7
mov sb, r2
movs r0, #8
rsbs r0, r0, #0
mov r8, r0
_0802E872:
lsls r1, r5, #2
mov r2, ip
adds r0, r2, r1
ldrb r0, [r0, #1]
subs r0, #8
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r5, #1
cmp r0, #0x10
bhi _0802E8BA
adds r0, r7, r1
ldr r3, [r0]
adds r3, #0x29
ldrb r4, [r3]
lsls r0, r4, #0x1d
lsrs r6, r0, #0x1d
lsls r2, r5, #2
adds r2, r7, r2
ldr r0, [r2]
adds r0, #0x29
ldrb r1, [r0]
lsls r1, r1, #0x1d
lsrs r1, r1, #0x1d
mov r0, r8
ands r0, r4
orrs r0, r1
strb r0, [r3]
ldr r1, [r2]
adds r1, #0x29
mov r0, sb
ands r6, r0
ldrb r2, [r1]
mov r0, r8
ands r0, r2
orrs r0, r6
strb r0, [r1]
_0802E8BA:
cmp r5, #4
bls _0802E872
mov r1, ip
ldr r0, [r1, #0x38]
adds r0, #0x29
ldrb r2, [r0]
movs r1, #8
rsbs r1, r1, #0
ands r1, r2
strb r1, [r0]
b _0802E9A4
_0802E8D0:
movs r6, #5
movs r5, #0
mov r7, ip
adds r7, #0x3c
movs r2, #0x30
add r2, ip
mov r8, r2
movs r0, #8
rsbs r0, r0, #0
mov sl, r0
movs r1, #4
rsbs r1, r1, #0
mov sb, r1
_0802E8EA:
lsls r0, r5, #2
adds r4, r7, r0
ldr r3, [r4]
adds r3, #0x29
movs r1, #7
ands r1, r6
ldrb r2, [r3]
mov r0, sl
ands r0, r2
orrs r0, r1
strb r0, [r3]
subs r6, #1
mov r2, r8
adds r0, r2, r5
ldrb r0, [r0]
cmp r0, #0
bne _0802E924
ldr r3, [r4]
ldrb r2, [r3, #0x18]
lsls r1, r2, #0x1e
lsrs r1, r1, #0x1e
movs r0, #2
rsbs r0, r0, #0
ands r1, r0
mov r0, sb
ands r0, r2
orrs r0, r1
strb r0, [r3, #0x18]
b _0802E932
_0802E924:
ldr r2, [r4]
ldrb r1, [r2, #0x18]
mov r0, sb
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r2, #0x18]
_0802E932:
adds r5, #1
cmp r5, #5
bls _0802E8EA
movs r5, #0
movs r0, #7
mov sb, r0
movs r1, #8
rsbs r1, r1, #0
mov r8, r1
_0802E944:
lsls r1, r5, #2
mov r2, ip
adds r0, r2, r1
ldrb r0, [r0, #1]
subs r0, #8
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r5, #1
cmp r0, #0x10
bls _0802E98C
adds r0, r7, r1
ldr r3, [r0]
adds r3, #0x29
ldrb r4, [r3]
lsls r0, r4, #0x1d
lsrs r6, r0, #0x1d
lsls r2, r5, #2
adds r2, r7, r2
ldr r0, [r2]
adds r0, #0x29
ldrb r1, [r0]
lsls r1, r1, #0x1d
lsrs r1, r1, #0x1d
mov r0, r8
ands r0, r4
orrs r0, r1
strb r0, [r3]
ldr r1, [r2]
adds r1, #0x29
mov r0, sb
ands r6, r0
ldrb r2, [r1]
mov r0, r8
ands r0, r2
orrs r0, r6
strb r0, [r1]
_0802E98C:
cmp r5, #4
bls _0802E944
mov r1, ip
ldr r2, [r1, #0x38]
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #6
orrs r0, r1
strb r0, [r2]
_0802E9A4:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_0802E9B0
sub_0802E9B0: @ 0x0802E9B0
push {r4, lr}
adds r4, r0, #0
ldr r0, _0802E9D0 @ =gPlayerEntity
movs r2, #0x2e
ldrsh r1, [r0, r2]
movs r3, #0x32
ldrsh r2, [r0, r3]
adds r0, r4, #0
bl sub_080041DC
lsrs r2, r0, #4
cmp r2, #0x5f
bgt _0802E9D4
movs r2, #0xa
b _0802E9EA
.align 2, 0
_0802E9D0: .4byte gPlayerEntity
_0802E9D4:
adds r1, r2, #0
subs r1, #0x60
cmp r1, #0
bge _0802E9DE
adds r1, #3
_0802E9DE:
asrs r1, r1, #2
movs r0, #0xa
subs r2, r0, r1
cmp r2, #3
bgt _0802E9EA
movs r2, #4
_0802E9EA:
adds r0, r4, #0
adds r0, #0x84
ldr r3, [r0]
adds r0, r3, #0
adds r0, #0x2d
ldrb r0, [r0]
cmp r2, r0
beq _0802EA10
cmp r2, r0
ble _0802EA04
ldrh r0, [r3, #0x2c]
adds r0, #0x20
b _0802EA08
_0802EA04:
ldrh r0, [r3, #0x2c]
subs r0, #0x20
_0802EA08:
ldr r2, _0802EA14 @ =0x00001FFF
adds r1, r2, #0
ands r0, r1
strh r0, [r3, #0x2c]
_0802EA10:
pop {r4, pc}
.align 2, 0
_0802EA14: .4byte 0x00001FFF
thumb_func_start sub_0802EA18
sub_0802EA18: @ 0x0802EA18
push {lr}

View File

@ -0,0 +1,61 @@
.syntax unified
.text
push {r4, r5, r6, lr}
adds r4, r0, #0
movs r2, #0
movs r6, #0x1f
_0802E770:
lsls r3, r2, #2
adds r0, r4, r3
ldrb r1, [r0, #1]
adds r2, #1
lsls r0, r2, #2
adds r0, r4, r0
ldrb r0, [r0, #1]
subs r0, r1, r0
ands r0, r6
adds r5, r2, #0
cmp r0, #0x10
ble _0802E790
cmp r0, #0x1e
bgt _0802E798
adds r1, #1
b _0802E796
_0802E790:
cmp r0, #1
ble _0802E798
subs r1, #1
_0802E796:
ands r1, r6
_0802E798:
adds r0, r4, r3
strb r1, [r0, #1]
ldrb r1, [r0, #0x19]
lsls r0, r5, #2
adds r0, r4, r0
ldrb r0, [r0, #0x19]
subs r0, r1, r0
movs r2, #0x1f
ands r0, r2
cmp r0, #0x10
ble _0802E7B6
cmp r0, #0x1d
bgt _0802E7BE
adds r1, #1
b _0802E7BC
_0802E7B6:
cmp r0, #2
ble _0802E7BE
subs r1, #1
_0802E7BC:
ands r1, r2
_0802E7BE:
adds r0, r4, r3
strb r1, [r0, #0x19]
adds r2, r5, #0
cmp r2, #4
bls _0802E770
pop {r4, r5, r6, pc}
.align 2, 0
.syntax divided

View File

@ -0,0 +1,16 @@
.syntax unified
.text
lsls r1, r1, #0x18
lsrs r1, r1, #0x16
adds r2, r0, #0
adds r2, #0x3c
adds r2, r2, r1
ldr r3, [r2]
adds r0, r0, r1
ldrb r0, [r0, #1]
strb r0, [r3, #0x14]
ldr r0, [r2]
ldrb r0, [r0, #0x14]
bx lr
.syntax divided

View File

@ -0,0 +1,246 @@
.syntax unified
.text
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
mov ip, r0
ldr r0, [r0, #0x50]
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x40
ands r0, r1
cmp r0, #0
beq _0802E8D0
movs r6, #0
movs r5, #0
mov r7, ip
adds r7, #0x3c
movs r0, #0x30
add r0, ip
mov r8, r0
movs r1, #8
rsbs r1, r1, #0
mov sl, r1
movs r2, #4
rsbs r2, r2, #0
mov sb, r2
_0802E818:
lsls r0, r5, #2
adds r4, r7, r0
ldr r3, [r4]
adds r3, #0x29
movs r1, #7
ands r1, r6
ldrb r2, [r3]
mov r0, sl
ands r0, r2
orrs r0, r1
strb r0, [r3]
adds r6, #1
mov r1, r8
adds r0, r1, r5
ldrb r0, [r0]
cmp r0, #0
bne _0802E852
ldr r3, [r4]
ldrb r2, [r3, #0x18]
lsls r1, r2, #0x1e
lsrs r1, r1, #0x1e
movs r0, #2
rsbs r0, r0, #0
ands r1, r0
mov r0, sb
ands r0, r2
orrs r0, r1
strb r0, [r3, #0x18]
b _0802E860
_0802E852:
ldr r2, [r4]
ldrb r1, [r2, #0x18]
mov r0, sb
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r2, #0x18]
_0802E860:
adds r5, #1
cmp r5, #5
bls _0802E818
movs r5, #0
movs r2, #7
mov sb, r2
movs r0, #8
rsbs r0, r0, #0
mov r8, r0
_0802E872:
lsls r1, r5, #2
mov r2, ip
adds r0, r2, r1
ldrb r0, [r0, #1]
subs r0, #8
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r5, #1
cmp r0, #0x10
bhi _0802E8BA
adds r0, r7, r1
ldr r3, [r0]
adds r3, #0x29
ldrb r4, [r3]
lsls r0, r4, #0x1d
lsrs r6, r0, #0x1d
lsls r2, r5, #2
adds r2, r7, r2
ldr r0, [r2]
adds r0, #0x29
ldrb r1, [r0]
lsls r1, r1, #0x1d
lsrs r1, r1, #0x1d
mov r0, r8
ands r0, r4
orrs r0, r1
strb r0, [r3]
ldr r1, [r2]
adds r1, #0x29
mov r0, sb
ands r6, r0
ldrb r2, [r1]
mov r0, r8
ands r0, r2
orrs r0, r6
strb r0, [r1]
_0802E8BA:
cmp r5, #4
bls _0802E872
mov r1, ip
ldr r0, [r1, #0x38]
adds r0, #0x29
ldrb r2, [r0]
movs r1, #8
rsbs r1, r1, #0
ands r1, r2
strb r1, [r0]
b _0802E9A4
_0802E8D0:
movs r6, #5
movs r5, #0
mov r7, ip
adds r7, #0x3c
movs r2, #0x30
add r2, ip
mov r8, r2
movs r0, #8
rsbs r0, r0, #0
mov sl, r0
movs r1, #4
rsbs r1, r1, #0
mov sb, r1
_0802E8EA:
lsls r0, r5, #2
adds r4, r7, r0
ldr r3, [r4]
adds r3, #0x29
movs r1, #7
ands r1, r6
ldrb r2, [r3]
mov r0, sl
ands r0, r2
orrs r0, r1
strb r0, [r3]
subs r6, #1
mov r2, r8
adds r0, r2, r5
ldrb r0, [r0]
cmp r0, #0
bne _0802E924
ldr r3, [r4]
ldrb r2, [r3, #0x18]
lsls r1, r2, #0x1e
lsrs r1, r1, #0x1e
movs r0, #2
rsbs r0, r0, #0
ands r1, r0
mov r0, sb
ands r0, r2
orrs r0, r1
strb r0, [r3, #0x18]
b _0802E932
_0802E924:
ldr r2, [r4]
ldrb r1, [r2, #0x18]
mov r0, sb
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r2, #0x18]
_0802E932:
adds r5, #1
cmp r5, #5
bls _0802E8EA
movs r5, #0
movs r0, #7
mov sb, r0
movs r1, #8
rsbs r1, r1, #0
mov r8, r1
_0802E944:
lsls r1, r5, #2
mov r2, ip
adds r0, r2, r1
ldrb r0, [r0, #1]
subs r0, #8
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r5, #1
cmp r0, #0x10
bls _0802E98C
adds r0, r7, r1
ldr r3, [r0]
adds r3, #0x29
ldrb r4, [r3]
lsls r0, r4, #0x1d
lsrs r6, r0, #0x1d
lsls r2, r5, #2
adds r2, r7, r2
ldr r0, [r2]
adds r0, #0x29
ldrb r1, [r0]
lsls r1, r1, #0x1d
lsrs r1, r1, #0x1d
mov r0, r8
ands r0, r4
orrs r0, r1
strb r0, [r3]
ldr r1, [r2]
adds r1, #0x29
mov r0, sb
ands r6, r0
ldrb r2, [r1]
mov r0, r8
ands r0, r2
orrs r0, r6
strb r0, [r1]
_0802E98C:
cmp r5, #4
bls _0802E944
mov r1, ip
ldr r2, [r1, #0x38]
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #6
orrs r0, r1
strb r0, [r2]
_0802E9A4:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
.syntax divided

View File

@ -7,7 +7,9 @@
#include "object.h"
typedef struct {
/*0x00*/ u8 filler[0x30];
/*0x00*/ u8 filler[0x2c];
/*0x2c*/ union SplitHWord unk_2c;
/*0x2e*/ u16 filler_2e;
/*0x30*/ u8 unk_30[6];
/*0x36*/ u8 filler_36[0x2];
/*0x38*/ Entity* ent;
@ -1251,3 +1253,39 @@ NONMATCH("asm/non_matching/gleerok/sub_0802E518.inc", void sub_0802E518(GleerokE
}
}
END_NONMATCH
ASM_FUNC("asm/non_matching/gleerok/sub_0802E768.inc", bool32 sub_0802E768(Gleerok_HeapStruct* param_1));
ASM_FUNC("asm/non_matching/gleerok/sub_0802E7CC.inc",
bool32 sub_0802E7CC(Gleerok_HeapStruct* param_1, u32 param_2, u32 param_3, u32 param_4));
ASM_FUNC("asm/non_matching/gleerok/sub_0802E7E4.inc", void sub_0802E7E4(Gleerok_HeapStruct* this));
void sub_0802E9B0(GleerokEntity* this) {
u32 uVar1;
s32 iVar2;
s32 uVar4;
Gleerok_HeapStruct* heap;
iVar2 = sub_080041DC(super, gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI) >> 4;
if (iVar2 < 0x60) {
iVar2 = 10;
} else {
uVar4 = iVar2 - 0x60;
if (uVar4 < 0) {
uVar4 = iVar2 - 0x5d;
}
iVar2 = 10 - (uVar4 >> 2);
if (iVar2 < 4) {
iVar2 = 4;
}
}
heap = this->unk_84;
if (iVar2 != heap->unk_2c.HALF.HI) {
if (iVar2 > heap->unk_2c.HALF.HI) {
heap->unk_2c.HWORD = (heap->unk_2c.HWORD + 0x20) & 0x1fff;
} else {
heap->unk_2c.HWORD = (heap->unk_2c.HWORD - 0x20) & 0x1fff;
}
}
}