mirror of https://github.com/zeldaret/tmc.git
Merge pull request #539 from hatal175/sub_0802E9B0
This commit is contained in:
commit
d0283de8c6
|
|
@ -1,723 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.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}
|
||||
adds r3, r2, #0
|
||||
movs r2, #0x80
|
||||
lsls r2, r2, #5
|
||||
adds r1, r1, r2
|
||||
subs r1, r1, r0
|
||||
ldr r0, _0802EA40 @ =0x00001FFF
|
||||
ands r1, r0
|
||||
lsls r3, r3, #8
|
||||
subs r2, r2, r3
|
||||
cmp r1, r2
|
||||
blo _0802EA44
|
||||
movs r2, #0x80
|
||||
lsls r2, r2, #5
|
||||
adds r0, r3, r2
|
||||
cmp r1, r0
|
||||
bhi _0802EA44
|
||||
movs r0, #0
|
||||
b _0802EA46
|
||||
.align 2, 0
|
||||
_0802EA40: .4byte 0x00001FFF
|
||||
_0802EA44:
|
||||
movs r0, #1
|
||||
_0802EA46:
|
||||
pop {pc}
|
||||
|
||||
thumb_func_start sub_0802EA48
|
||||
sub_0802EA48: @ 0x0802EA48
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
cmp r3, #1
|
||||
bne _0802EA52
|
||||
rsbs r2, r2, #0
|
||||
_0802EA52:
|
||||
lsls r0, r1, #2
|
||||
adds r0, r4, r0
|
||||
ldrh r1, [r0]
|
||||
adds r1, r1, r2
|
||||
ldr r3, _0802EA64 @ =0x00001FFF
|
||||
adds r2, r3, #0
|
||||
ands r1, r2
|
||||
strh r1, [r0]
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0802EA64: .4byte 0x00001FFF
|
||||
|
||||
thumb_func_start sub_0802EA68
|
||||
sub_0802EA68: @ 0x0802EA68
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
cmp r3, #2
|
||||
bne _0802EA72
|
||||
rsbs r2, r2, #0
|
||||
_0802EA72:
|
||||
lsls r0, r1, #2
|
||||
adds r0, r4, r0
|
||||
ldrh r1, [r0, #0x18]
|
||||
adds r1, r1, r2
|
||||
ldr r3, _0802EA84 @ =0x00001FFF
|
||||
adds r2, r3, #0
|
||||
ands r1, r2
|
||||
strh r1, [r0, #0x18]
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0802EA84: .4byte 0x00001FFF
|
||||
|
||||
thumb_func_start sub_0802EA88
|
||||
sub_0802EA88: @ 0x0802EA88
|
||||
push {r4, r5, r6, lr}
|
||||
adds r5, r0, #0
|
||||
movs r6, #0
|
||||
movs r3, #0
|
||||
_0802EA90:
|
||||
lsls r0, r3, #2
|
||||
adds r4, r5, r0
|
||||
adds r2, r3, #1
|
||||
lsls r0, r2, #2
|
||||
adds r1, r5, r0
|
||||
ldrb r0, [r4, #1]
|
||||
ldrb r3, [r1, #1]
|
||||
cmp r0, r3
|
||||
beq _0802EAC2
|
||||
movs r6, #1
|
||||
ldrb r0, [r1, #1]
|
||||
ldrb r1, [r4, #1]
|
||||
subs r0, r0, r1
|
||||
movs r1, #0x1f
|
||||
ands r0, r1
|
||||
movs r3, #1
|
||||
cmp r0, #0x10
|
||||
ble _0802EAB6
|
||||
movs r3, #0
|
||||
_0802EAB6:
|
||||
adds r0, r5, #0
|
||||
adds r1, r2, #0
|
||||
movs r2, #0x20
|
||||
bl sub_0802EA48
|
||||
b _0802EAC8
|
||||
_0802EAC2:
|
||||
adds r3, r2, #0
|
||||
cmp r3, #4
|
||||
bls _0802EA90
|
||||
_0802EAC8:
|
||||
movs r3, #0
|
||||
movs r4, #0x1f
|
||||
_0802EACC:
|
||||
adds r2, r3, #1
|
||||
lsls r0, r2, #2
|
||||
adds r0, r5, r0
|
||||
ldrb r1, [r0, #1]
|
||||
lsls r0, r3, #2
|
||||
adds r0, r5, r0
|
||||
ldrb r0, [r0, #1]
|
||||
subs r0, r1, r0
|
||||
ands r0, r4
|
||||
adds r3, r1, #0
|
||||
adds r1, r2, #0
|
||||
cmp r0, #0x10
|
||||
ble _0802EAEE
|
||||
cmp r0, #0x1e
|
||||
bgt _0802EAF6
|
||||
adds r3, #1
|
||||
b _0802EAF4
|
||||
_0802EAEE:
|
||||
cmp r0, #1
|
||||
ble _0802EAF6
|
||||
subs r3, #1
|
||||
_0802EAF4:
|
||||
ands r3, r4
|
||||
_0802EAF6:
|
||||
lsls r0, r1, #2
|
||||
adds r0, r5, r0
|
||||
strb r3, [r0, #1]
|
||||
adds r3, r1, #0
|
||||
cmp r3, #4
|
||||
bls _0802EACC
|
||||
adds r0, r6, #0
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0802EB08
|
||||
sub_0802EB08: @ 0x0802EB08
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
adds r5, r0, #0
|
||||
adds r6, r1, #0
|
||||
adds r7, r2, #0
|
||||
movs r0, #0
|
||||
mov r8, r0
|
||||
movs r3, #0
|
||||
_0802EB1A:
|
||||
lsls r0, r3, #2
|
||||
adds r4, r5, r0
|
||||
adds r2, r3, #1
|
||||
lsls r0, r2, #2
|
||||
adds r1, r5, r0
|
||||
ldrb r0, [r4, #0x19]
|
||||
ldrb r3, [r1, #0x19]
|
||||
cmp r0, r3
|
||||
beq _0802EB4E
|
||||
movs r0, #1
|
||||
mov r8, r0
|
||||
ldrb r0, [r1, #0x19]
|
||||
ldrb r1, [r4, #0x19]
|
||||
subs r0, r0, r1
|
||||
movs r1, #0x1f
|
||||
ands r0, r1
|
||||
movs r3, #2
|
||||
cmp r0, #0x10
|
||||
ble _0802EB42
|
||||
movs r3, #3
|
||||
_0802EB42:
|
||||
adds r0, r5, #0
|
||||
adds r1, r2, #0
|
||||
adds r2, r6, #0
|
||||
bl sub_0802EA68
|
||||
b _0802EB54
|
||||
_0802EB4E:
|
||||
adds r3, r2, #0
|
||||
cmp r3, #4
|
||||
bls _0802EB1A
|
||||
_0802EB54:
|
||||
movs r3, #0
|
||||
movs r4, #0x1f
|
||||
rsbs r6, r7, #0
|
||||
ands r6, r4
|
||||
_0802EB5C:
|
||||
adds r2, r3, #1
|
||||
lsls r0, r2, #2
|
||||
adds r0, r5, r0
|
||||
ldrb r1, [r0, #0x19]
|
||||
lsls r0, r3, #2
|
||||
adds r0, r5, r0
|
||||
ldrb r0, [r0, #0x19]
|
||||
subs r0, r1, r0
|
||||
ands r0, r4
|
||||
adds r3, r1, #0
|
||||
adds r1, r2, #0
|
||||
cmp r0, #0x10
|
||||
ble _0802EB7E
|
||||
cmp r6, r0
|
||||
ble _0802EB86
|
||||
adds r3, #1
|
||||
b _0802EB84
|
||||
_0802EB7E:
|
||||
cmp r7, r0
|
||||
bge _0802EB86
|
||||
subs r3, #1
|
||||
_0802EB84:
|
||||
ands r3, r4
|
||||
_0802EB86:
|
||||
lsls r0, r1, #2
|
||||
adds r0, r5, r0
|
||||
strb r3, [r0, #0x19]
|
||||
adds r3, r1, #0
|
||||
cmp r3, #4
|
||||
bls _0802EB5C
|
||||
mov r0, r8
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0802EB9C
|
||||
sub_0802EB9C: @ 0x0802EB9C
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r0, _0802EBBC @ =gUnk_080CD850
|
||||
bl GetRandomByWeight
|
||||
ldr r1, _0802EBC0 @ =gUnk_080CD854
|
||||
adds r0, r0, r1
|
||||
ldrb r1, [r0]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x74
|
||||
strb r1, [r0]
|
||||
adds r4, #0x75
|
||||
ldrb r0, [r4]
|
||||
adds r0, #1
|
||||
strb r0, [r4]
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0802EBBC: .4byte gUnk_080CD850
|
||||
_0802EBC0: .4byte gUnk_080CD854
|
||||
|
||||
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}
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r0, #0x84
|
||||
ldr r6, [r0]
|
||||
movs r4, #0
|
||||
adds r7, r6, #0
|
||||
adds r7, #0x3c
|
||||
adds r5, r7, #0
|
||||
_0802D34A:
|
||||
ldm r5!, {r0}
|
||||
bl DeleteEntity
|
||||
adds r4, #1
|
||||
cmp r4, #3
|
||||
bls _0802D34A
|
||||
lsls r1, r4, #2
|
||||
adds r1, r7, r1
|
||||
ldr r0, [r1]
|
||||
adds r0, #0x45
|
||||
movs r3, #0
|
||||
strb r3, [r0]
|
||||
ldr r1, [r1]
|
||||
adds r1, #0x6d
|
||||
ldrb r2, [r1]
|
||||
movs r0, #1
|
||||
orrs r0, r2
|
||||
strb r0, [r1]
|
||||
ldr r0, [r6, #0x50]
|
||||
adds r0, #0x45
|
||||
strb r3, [r0]
|
||||
ldr r0, [r6, #0x50]
|
||||
strb r3, [r0, #0xb]
|
||||
ldr r3, [r6, #0x50]
|
||||
ldrb r2, [r3, #0x18]
|
||||
lsls r1, r2, #0x1e
|
||||
lsrs r1, r1, #0x1e
|
||||
movs r0, #2
|
||||
rsbs r0, r0, #0
|
||||
ands r1, r0
|
||||
subs r0, #2
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
strb r0, [r3, #0x18]
|
||||
bl DeleteThisEntity
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.syntax divided
|
||||
|
|
@ -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
|
||||
|
|
@ -0,0 +1,75 @@
|
|||
.syntax unified
|
||||
|
||||
.text
|
||||
push {r4, r5, r6, lr}
|
||||
adds r5, r0, #0
|
||||
movs r6, #0
|
||||
movs r3, #0
|
||||
_0802EA90:
|
||||
lsls r0, r3, #2
|
||||
adds r4, r5, r0
|
||||
adds r2, r3, #1
|
||||
lsls r0, r2, #2
|
||||
adds r1, r5, r0
|
||||
ldrb r0, [r4, #1]
|
||||
ldrb r3, [r1, #1]
|
||||
cmp r0, r3
|
||||
beq _0802EAC2
|
||||
movs r6, #1
|
||||
ldrb r0, [r1, #1]
|
||||
ldrb r1, [r4, #1]
|
||||
subs r0, r0, r1
|
||||
movs r1, #0x1f
|
||||
ands r0, r1
|
||||
movs r3, #1
|
||||
cmp r0, #0x10
|
||||
ble _0802EAB6
|
||||
movs r3, #0
|
||||
_0802EAB6:
|
||||
adds r0, r5, #0
|
||||
adds r1, r2, #0
|
||||
movs r2, #0x20
|
||||
bl sub_0802EA48
|
||||
b _0802EAC8
|
||||
_0802EAC2:
|
||||
adds r3, r2, #0
|
||||
cmp r3, #4
|
||||
bls _0802EA90
|
||||
_0802EAC8:
|
||||
movs r3, #0
|
||||
movs r4, #0x1f
|
||||
_0802EACC:
|
||||
adds r2, r3, #1
|
||||
lsls r0, r2, #2
|
||||
adds r0, r5, r0
|
||||
ldrb r1, [r0, #1]
|
||||
lsls r0, r3, #2
|
||||
adds r0, r5, r0
|
||||
ldrb r0, [r0, #1]
|
||||
subs r0, r1, r0
|
||||
ands r0, r4
|
||||
adds r3, r1, #0
|
||||
adds r1, r2, #0
|
||||
cmp r0, #0x10
|
||||
ble _0802EAEE
|
||||
cmp r0, #0x1e
|
||||
bgt _0802EAF6
|
||||
adds r3, #1
|
||||
b _0802EAF4
|
||||
_0802EAEE:
|
||||
cmp r0, #1
|
||||
ble _0802EAF6
|
||||
subs r3, #1
|
||||
_0802EAF4:
|
||||
ands r3, r4
|
||||
_0802EAF6:
|
||||
lsls r0, r1, #2
|
||||
adds r0, r5, r0
|
||||
strb r3, [r0, #1]
|
||||
adds r3, r1, #0
|
||||
cmp r3, #4
|
||||
bls _0802EACC
|
||||
adds r0, r6, #0
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
.syntax unified
|
||||
|
||||
.text
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
adds r5, r0, #0
|
||||
adds r6, r1, #0
|
||||
adds r7, r2, #0
|
||||
movs r0, #0
|
||||
mov r8, r0
|
||||
movs r3, #0
|
||||
_0802EB1A:
|
||||
lsls r0, r3, #2
|
||||
adds r4, r5, r0
|
||||
adds r2, r3, #1
|
||||
lsls r0, r2, #2
|
||||
adds r1, r5, r0
|
||||
ldrb r0, [r4, #0x19]
|
||||
ldrb r3, [r1, #0x19]
|
||||
cmp r0, r3
|
||||
beq _0802EB4E
|
||||
movs r0, #1
|
||||
mov r8, r0
|
||||
ldrb r0, [r1, #0x19]
|
||||
ldrb r1, [r4, #0x19]
|
||||
subs r0, r0, r1
|
||||
movs r1, #0x1f
|
||||
ands r0, r1
|
||||
movs r3, #2
|
||||
cmp r0, #0x10
|
||||
ble _0802EB42
|
||||
movs r3, #3
|
||||
_0802EB42:
|
||||
adds r0, r5, #0
|
||||
adds r1, r2, #0
|
||||
adds r2, r6, #0
|
||||
bl sub_0802EA68
|
||||
b _0802EB54
|
||||
_0802EB4E:
|
||||
adds r3, r2, #0
|
||||
cmp r3, #4
|
||||
bls _0802EB1A
|
||||
_0802EB54:
|
||||
movs r3, #0
|
||||
movs r4, #0x1f
|
||||
rsbs r6, r7, #0
|
||||
ands r6, r4
|
||||
_0802EB5C:
|
||||
adds r2, r3, #1
|
||||
lsls r0, r2, #2
|
||||
adds r0, r5, r0
|
||||
ldrb r1, [r0, #0x19]
|
||||
lsls r0, r3, #2
|
||||
adds r0, r5, r0
|
||||
ldrb r0, [r0, #0x19]
|
||||
subs r0, r1, r0
|
||||
ands r0, r4
|
||||
adds r3, r1, #0
|
||||
adds r1, r2, #0
|
||||
cmp r0, #0x10
|
||||
ble _0802EB7E
|
||||
cmp r6, r0
|
||||
ble _0802EB86
|
||||
adds r3, #1
|
||||
b _0802EB84
|
||||
_0802EB7E:
|
||||
cmp r7, r0
|
||||
bge _0802EB86
|
||||
subs r3, #1
|
||||
_0802EB84:
|
||||
ands r3, r4
|
||||
_0802EB86:
|
||||
lsls r0, r1, #2
|
||||
adds r0, r5, r0
|
||||
strb r3, [r0, #0x19]
|
||||
adds r3, r1, #0
|
||||
cmp r3, #4
|
||||
bls _0802EB5C
|
||||
mov r0, r8
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -7,7 +7,16 @@
|
|||
#include "object.h"
|
||||
|
||||
typedef struct {
|
||||
/*0x00*/ u8 filler[0x30];
|
||||
union SplitHWord unk0;
|
||||
u8 unk2;
|
||||
u8 unk3;
|
||||
} Gleerok_HeapStruct2;
|
||||
|
||||
typedef struct {
|
||||
/*0x00*/ Gleerok_HeapStruct2 filler[6];
|
||||
/*0x00*/ Gleerok_HeapStruct2 filler2[5];
|
||||
/*0x2c*/ union SplitHWord unk_2c;
|
||||
/*0x2e*/ u16 filler_2e;
|
||||
/*0x30*/ u8 unk_30[6];
|
||||
/*0x36*/ u8 filler_36[0x2];
|
||||
/*0x38*/ Entity* ent;
|
||||
|
|
@ -43,27 +52,31 @@ extern void (*const gUnk_080CD828[])(GleerokEntity*);
|
|||
extern void (*const gUnk_080CD848[])(GleerokEntity*);
|
||||
|
||||
extern u8 gUnk_080CD774[];
|
||||
extern u8 gUnk_080CD7C4[];
|
||||
extern Gleerok_HeapStruct2 gUnk_080CD7C4[];
|
||||
extern u8 gUnk_080CD884[];
|
||||
extern u8 gUnk_080CD7F8[];
|
||||
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);
|
||||
|
||||
extern void sub_0802E518(GleerokEntity* this);
|
||||
extern void sub_0802E7E4(Gleerok_HeapStruct* this);
|
||||
extern void sub_0802E1D0(GleerokEntity* this);
|
||||
extern u32 sub_0802EB9C(GleerokEntity* this);
|
||||
extern void sub_0802EB9C(GleerokEntity* this);
|
||||
extern void sub_0802D86C(GleerokEntity* this);
|
||||
extern void sub_0802E430(GleerokEntity* this);
|
||||
extern void sub_0802EBC4(GleerokEntity* this);
|
||||
extern void sub_0802E9B0(GleerokEntity* this);
|
||||
|
||||
extern bool32 sub_0802EB08(Gleerok_HeapStruct* param_1, u32 param_2, u32 param_3);
|
||||
extern bool32 sub_0802EA18(u16 param_1, u16 param_2, u32 param_3);
|
||||
extern bool32 sub_0802EA48(Gleerok_HeapStruct* param_1, u32 param_2, u32 param_3, u32 param_4);
|
||||
extern bool32 sub_0802EA68(Gleerok_HeapStruct* param_1, u32 param_2, u32 param_3, u32 param_4);
|
||||
extern bool32 sub_0802EB08(Gleerok_HeapStruct* param_1, u32 param_2, s32 param_3);
|
||||
extern bool32 sub_0802EA18(u32 param_1, u32 param_2, u32 param_3);
|
||||
extern void sub_0802EA48(Gleerok_HeapStruct* param_1, u32 param_2, u32 param_3, u32 param_4);
|
||||
extern void sub_0802EA68(Gleerok_HeapStruct* param_1, u32 param_2, u32 param_3, u32 param_4);
|
||||
extern bool32 sub_0802E7CC(Gleerok_HeapStruct* param_1, u32 param_2, u32 param_3, u32 param_4);
|
||||
extern bool32 sub_0802EA88(Gleerok_HeapStruct* param_1);
|
||||
extern bool32 sub_0802E768(Gleerok_HeapStruct* param_1);
|
||||
|
|
@ -134,8 +147,8 @@ void sub_0802D170(GleerokEntity* this) {
|
|||
return;
|
||||
|
||||
if (super->action == 1) {
|
||||
this->unk_84->filler[1] = 0x10;
|
||||
this->unk_84->filler[0x19] = 0x10;
|
||||
this->unk_84->filler[0].unk0.HALF.HI = 0x10;
|
||||
this->unk_84->filler2[0].unk0.HALF.HI = 0x10;
|
||||
if (sub_0802EB08(this->unk_84, 0x40, 2) == 0 && sub_0802EA88(this->unk_84) == 0) {
|
||||
super->action = 2;
|
||||
gPlayerEntity.x.HALF.HI = gRoomControls.origin_x + 0x98;
|
||||
|
|
@ -149,7 +162,7 @@ void sub_0802D170(GleerokEntity* this) {
|
|||
super->action = 3;
|
||||
this->unk_80 = 0;
|
||||
((Entity*)this->unk_84)->parent->timer = 24;
|
||||
this->unk_84->filler[0x19] = 0;
|
||||
this->unk_84->filler2[0].unk0.HALF.HI = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -162,7 +175,7 @@ void sub_0802D218(GleerokEntity* this) {
|
|||
super->subtimer = 0;
|
||||
this->unk_7c.HALF_U.LO = 0xb4;
|
||||
((Entity*)(this->unk_84))->parent->timer = 12;
|
||||
CreateObjectWithParent(super, 0x67, 0x2, this->unk_7c.HALF_U.LO);
|
||||
CreateObjectWithParent(super, GLEEROK_PARTICLE, 0x2, this->unk_7c.HALF_U.LO);
|
||||
}
|
||||
|
||||
void sub_0802D258(GleerokEntity* this) {
|
||||
|
|
@ -214,28 +227,21 @@ void sub_0802D258(GleerokEntity* this) {
|
|||
sub_0802E768(this->unk_84);
|
||||
}
|
||||
|
||||
NONMATCH("asm/non_matching/gleerok/sub_0802D33C.inc", void sub_0802D33C(GleerokEntity* this)) {
|
||||
u8* unk_84 = (u8*)this->unk_84;
|
||||
u8* ptr = unk_84;
|
||||
u8* ptr2;
|
||||
u32 i = 0;
|
||||
ptr += 0x3c;
|
||||
ptr2 = ptr;
|
||||
void sub_0802D33C(GleerokEntity* this) {
|
||||
Gleerok_HeapStruct* unk_84 = this->unk_84;
|
||||
u32 i;
|
||||
|
||||
do {
|
||||
DeleteEntity(*(Entity**)ptr);
|
||||
ptr += 4;
|
||||
} while (i < 4);
|
||||
for (i = 0; i < 4; i++) {
|
||||
DeleteEntity(unk_84->entities[i]);
|
||||
}
|
||||
|
||||
ptr2 += (i << 2);
|
||||
*(u32*)((*(u8**)ptr2) + 0x45) = 0;
|
||||
*((*(u8**)ptr2) + 0x6d) |= 1;
|
||||
((Entity*)(*(u8**)(unk_84 + 0x50)))->health = 0;
|
||||
((Entity*)(*(u8**)(unk_84 + 0x50)))->type2 = 0;
|
||||
((Entity*)(*(u8**)(unk_84 + 0x50)))->spriteSettings.draw &= ~1;
|
||||
unk_84->entities[i]->health = 0;
|
||||
((GenericEntity*)unk_84->entities[i])->field_0x6c.HALF.HI |= 1;
|
||||
unk_84->ent2->health = 0;
|
||||
unk_84->ent2->type2 = 0;
|
||||
unk_84->ent2->spriteSettings.draw &= ~1;
|
||||
DeleteThisEntity();
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
void Gleerok_OnTick(GleerokEntity* this) {
|
||||
gUnk_080CD7B8[super->action](this);
|
||||
|
|
@ -247,8 +253,8 @@ NONMATCH("asm/non_matching/gleerok/sub_0802D3B8.inc", void sub_0802D3B8(GleerokE
|
|||
Entity* ent;
|
||||
Gleerok_HeapStruct* heap;
|
||||
u32 val;
|
||||
u8* ptr;
|
||||
u8* ptr2;
|
||||
Gleerok_HeapStruct2* ptr;
|
||||
Gleerok_HeapStruct2* ptr2;
|
||||
|
||||
if (CheckGlobalFlag(LV2_CLEAR)) {
|
||||
gScreen.lcd.displayControl &= 0xFDFF;
|
||||
|
|
@ -281,10 +287,9 @@ NONMATCH("asm/non_matching/gleerok/sub_0802D3B8.inc", void sub_0802D3B8(GleerokE
|
|||
uvar1 = 0;
|
||||
|
||||
do {
|
||||
ent = CreateEnemy(GLEEROK, 1);
|
||||
super->child = ent;
|
||||
if (ent != NULL) {
|
||||
ent->type2 = uvar1 + 1;
|
||||
super->child = CreateEnemy(GLEEROK, 1);
|
||||
if (super->child != NULL) {
|
||||
super->child->type2 = uvar1 + 1;
|
||||
super->child->collisionLayer = super->collisionLayer;
|
||||
super->child->x.HALF.HI = super->x.HALF.HI;
|
||||
super->child->y.HALF.HI = super->y.HALF.HI + ((uvar1 + 1) * 12);
|
||||
|
|
@ -292,10 +297,10 @@ NONMATCH("asm/non_matching/gleerok/sub_0802D3B8.inc", void sub_0802D3B8(GleerokE
|
|||
((GleerokEntity*)super->child)->unk_84 = this->unk_84;
|
||||
this->unk_84->entities[uvar1] = super->child;
|
||||
ptr = this->unk_84->filler;
|
||||
ptr2 = ptr + uvar1 * 4;
|
||||
ptr2[1] = 0x10;
|
||||
ptr2[0x19] = 0;
|
||||
ptr[0x35] = 0;
|
||||
ptr2 = ptr + uvar1;
|
||||
ptr2[0].unk0.HALF.HI = 0x10;
|
||||
ptr2[6].unk0.HALF.HI = 0;
|
||||
ptr[13].unk0.HALF.HI = 0;
|
||||
}
|
||||
} while (++uvar1 < 5);
|
||||
|
||||
|
|
@ -308,9 +313,9 @@ NONMATCH("asm/non_matching/gleerok/sub_0802D3B8.inc", void sub_0802D3B8(GleerokE
|
|||
super->child->parent = super;
|
||||
((GleerokEntity*)super->child)->unk_84 = this->unk_84;
|
||||
heap->ent2 = super->child;
|
||||
heap->filler[0x15] = 0x10;
|
||||
heap->filler[0x2d] = 0;
|
||||
heap->filler[0x35] = 0;
|
||||
heap->filler[5].unk0.HALF.HI = 0x10;
|
||||
heap->filler2[5].unk0.HALF.HI = 0;
|
||||
heap->filler[13].unk0.HALF.HI = 0;
|
||||
}
|
||||
#ifndef EU
|
||||
gPlayerState.controlMode = CONTROL_DISABLED;
|
||||
|
|
@ -322,9 +327,7 @@ NONMATCH("asm/non_matching/gleerok/sub_0802D3B8.inc", void sub_0802D3B8(GleerokE
|
|||
COLLISION_ON(super);
|
||||
super->flags2 |= 0x80;
|
||||
}
|
||||
ptr = gUnk_080CD7C4;
|
||||
ptr += super->type2 * 4;
|
||||
super->spritePriority.b0 = *(ptr + 1);
|
||||
super->spritePriority.b0 = gUnk_080CD7C4[super->type2].unk0.HALF.HI;
|
||||
super->subtimer = 0;
|
||||
InitializeAnimation(super, 0x24);
|
||||
break;
|
||||
|
|
@ -411,15 +414,14 @@ void sub_0802D714(GleerokEntity* this) {
|
|||
Entity* enemy;
|
||||
u32 index;
|
||||
u32 val1, val2;
|
||||
u8* ptr;
|
||||
Gleerok_HeapStruct2* ptr;
|
||||
Gleerok_HeapStruct* heap;
|
||||
if (--this->unk_7c.WORD != -1)
|
||||
return;
|
||||
|
||||
for (heap = this->unk_84, index = 0, val1 = 0, val2 = 0x10, ptr = this->unk_84->filler; index < 6;
|
||||
ptr += 4, ++index) {
|
||||
*(u16*)(ptr + 0x18) = val1;
|
||||
*(ptr + 1) = val2;
|
||||
for (heap = this->unk_84, index = 0, val1 = 0, val2 = 0x10, ptr = this->unk_84->filler; index < 6; ptr++, ++index) {
|
||||
ptr[6].unk0.HWORD = val1;
|
||||
ptr->unk0.HALF.HI = val2;
|
||||
}
|
||||
|
||||
super->subAction = 3;
|
||||
|
|
@ -577,7 +579,7 @@ NONMATCH("asm/non_matching/gleerok/sub_0802D86C.inc", void sub_0802D86C(GleerokE
|
|||
super->child = enemy;
|
||||
if (enemy) {
|
||||
enemy->parent = super->parent;
|
||||
super->timer = this->unk_84->filler[1];
|
||||
super->timer = this->unk_84->filler[0].unk0.HALF.HI;
|
||||
this->unk_84->ent = super->child;
|
||||
((GleerokEntity*)super->child)->unk_84 = this->unk_84;
|
||||
}
|
||||
|
|
@ -608,8 +610,8 @@ NONMATCH("asm/non_matching/gleerok/sub_0802D86C.inc", void sub_0802D86C(GleerokE
|
|||
SoundReq(SFX_BUTTON_PRESS);
|
||||
}
|
||||
} else {
|
||||
if (super->timer != this->unk_84->filler[1]) {
|
||||
if (((super->timer - this->unk_84->filler[1]) & 0x1f) > 0x10) {
|
||||
if (super->timer != this->unk_84->filler[0].unk0.HALF.HI) {
|
||||
if (((super->timer - this->unk_84->filler[0].unk0.HALF.HI) & 0x1f) > 0x10) {
|
||||
if (++super->frameIndex >= 0x31) {
|
||||
super->frameIndex = 0x28;
|
||||
}
|
||||
|
|
@ -619,7 +621,7 @@ NONMATCH("asm/non_matching/gleerok/sub_0802D86C.inc", void sub_0802D86C(GleerokE
|
|||
}
|
||||
}
|
||||
|
||||
super->timer = this->unk_84->filler[1];
|
||||
super->timer = this->unk_84->filler[0].unk0.HALF.HI;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -654,13 +656,13 @@ END_NONMATCH
|
|||
void sub_0802DB84(GleerokEntity* this) {
|
||||
u32 timer;
|
||||
super->direction = GetFacingDirection(super, &gPlayerEntity);
|
||||
if (this->unk_84->filler[0x1] == super->direction) {
|
||||
if (this->unk_84->filler[0].unk0.HALF.HI == super->direction) {
|
||||
super->subAction = 1;
|
||||
this->unk_78 = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if (((this->unk_84->filler[0x1] - super->direction) & 0x1f) > 0x10) {
|
||||
if (((this->unk_84->filler[0].unk0.HALF.HI - super->direction) & 0x1f) > 0x10) {
|
||||
timer = 0;
|
||||
super->timer &= 0xfe;
|
||||
} else {
|
||||
|
|
@ -688,7 +690,7 @@ void sub_0802DB84(GleerokEntity* this) {
|
|||
|
||||
void sub_0802DC1C(GleerokEntity* this) {
|
||||
u32 diff = GetFacingDirection(super, &gPlayerEntity);
|
||||
diff = (this->unk_84->filler[1] - diff) & 0x1f;
|
||||
diff = (this->unk_84->filler[0].unk0.HALF.HI - diff) & 0x1f;
|
||||
|
||||
if (diff > 0x10) {
|
||||
if (diff <= 0x1d) {
|
||||
|
|
@ -711,11 +713,11 @@ void sub_0802DC1C(GleerokEntity* this) {
|
|||
}
|
||||
|
||||
sub_0802EA48(this->unk_84, 5, 0x20, diff);
|
||||
if (sub_0802EA18(*(u16*)&this->unk_84->filler[0], *(u16*)&this->unk_84->filler[0x14], 4)) {
|
||||
if (sub_0802EA18(this->unk_84->filler[0].unk0.HWORD, this->unk_84->filler[5].unk0.HWORD, 4)) {
|
||||
if (super->timer == 1) {
|
||||
*(u16*)&this->unk_84->filler[0x14] = (((this->unk_84->filler[0x1] - 4) & 0x1f) << 8) | 0xff;
|
||||
this->unk_84->filler[5].unk0.HWORD = (((this->unk_84->filler[0].unk0.HALF.HI - 4) & 0x1f) << 8) | 0xff;
|
||||
} else {
|
||||
*(u16*)&this->unk_84->filler[0x14] = (((this->unk_84->filler[0x1] + 4) & 0x1f) << 8);
|
||||
this->unk_84->filler[5].unk0.HWORD = (((this->unk_84->filler[0].unk0.HALF.HI + 4) & 0x1f) << 8);
|
||||
}
|
||||
|
||||
super->timer ^= 1;
|
||||
|
|
@ -732,13 +734,13 @@ void sub_0802DC1C(GleerokEntity* this) {
|
|||
void sub_0802DCE0(GleerokEntity* this) {
|
||||
if (this->unk_84->ent2->timer != 12) {
|
||||
super->direction = GetFacingDirection(super, &gPlayerEntity);
|
||||
if (this->unk_84->filler[0x15] == super->direction) {
|
||||
if (this->unk_84->filler[5].unk0.HALF.HI == super->direction) {
|
||||
this->unk_84->ent2->timer = 12;
|
||||
this->unk_82 = 4;
|
||||
super->subtimer = 0;
|
||||
} else {
|
||||
s32 svar1, diff;
|
||||
diff = ((this->unk_84->filler[0x15] - super->direction) & 0x1f);
|
||||
diff = ((this->unk_84->filler[5].unk0.HALF.HI - super->direction) & 0x1f);
|
||||
svar1 = 1;
|
||||
if (diff > 0x10) {
|
||||
svar1 = 0;
|
||||
|
|
@ -761,7 +763,7 @@ void sub_0802DCE0(GleerokEntity* this) {
|
|||
super->child = CreateProjectileWithParent(super, GLEEROK_PROJECTILE, 0);
|
||||
|
||||
if (super->child != NULL) {
|
||||
super->child->direction = this->unk_84->filler[0x15];
|
||||
super->child->direction = this->unk_84->filler[5].unk0.HALF.HI;
|
||||
super->child->type2 = this->unk_84->ent2->frame & 0xf;
|
||||
super->child->parent = this->unk_84->ent2;
|
||||
super->child->child = this->unk_84->entities[0];
|
||||
|
|
@ -805,10 +807,10 @@ void sub_0802DDD8(GleerokEntity* this) {
|
|||
|
||||
if ((Random() & 1) == 0) {
|
||||
super->direction = 0;
|
||||
this->unk_7a = (this->unk_84->filler[1] + uvar1) & 0x1f;
|
||||
this->unk_7a = (this->unk_84->filler[0].unk0.HALF.HI + uvar1) & 0x1f;
|
||||
} else {
|
||||
super->direction = 1;
|
||||
this->unk_7a = (this->unk_84->filler[1] - uvar1) & 0x1f;
|
||||
this->unk_7a = (this->unk_84->filler[0].unk0.HALF.HI - uvar1) & 0x1f;
|
||||
}
|
||||
|
||||
break;
|
||||
|
|
@ -828,7 +830,7 @@ void sub_0802DDD8(GleerokEntity* this) {
|
|||
if (this->unk_84->ent2->subtimer == 1) {
|
||||
super->child = CreateProjectileWithParent(super, GLEEROK_PROJECTILE, r2);
|
||||
if (super->child != NULL) {
|
||||
super->child->direction = this->unk_84->filler[0x15];
|
||||
super->child->direction = this->unk_84->filler[5].unk0.HALF.HI;
|
||||
super->child->type2 = this->unk_84->ent2->frame & 0xf;
|
||||
super->child->parent = this->unk_84->ent2;
|
||||
super->child->child = this->unk_84->entities[0];
|
||||
|
|
@ -858,7 +860,7 @@ void sub_0802DDD8(GleerokEntity* this) {
|
|||
}
|
||||
sub_0802E768(this->unk_84);
|
||||
|
||||
if (this->unk_7a == this->unk_84->filler[0x15]) {
|
||||
if (this->unk_7a == this->unk_84->filler[5].unk0.HALF.HI) {
|
||||
if (super->type2 == 1) {
|
||||
super->type2 = 2;
|
||||
super->direction ^= 1;
|
||||
|
|
@ -888,7 +890,7 @@ void sub_0802DFA8(GleerokEntity* this) {
|
|||
}
|
||||
|
||||
void sub_0802DFC0(GleerokEntity* this) {
|
||||
u32 val = this->unk_84->filler[1] & 7;
|
||||
u32 val = this->unk_84->filler[0].unk0.HALF.HI & 7;
|
||||
if (val) {
|
||||
if (val > 4) {
|
||||
super->direction = 0;
|
||||
|
|
@ -921,10 +923,10 @@ void sub_0802E034(GleerokEntity* this) {
|
|||
val = 0;
|
||||
} else {
|
||||
super->direction = 3;
|
||||
val = gUnk_080CD840[heap->filler[1] >> 3];
|
||||
val = gUnk_080CD840[heap->filler[0].unk0.HALF.HI >> 3];
|
||||
}
|
||||
|
||||
if (val != heap->filler[0x19]) {
|
||||
if (val != heap->filler2[0].unk0.HALF.HI) {
|
||||
sub_0802EA68(heap, 0, 0x40, super->direction);
|
||||
sub_0802EB08(heap, 0x40, 2);
|
||||
} else {
|
||||
|
|
@ -936,7 +938,7 @@ void sub_0802E034(GleerokEntity* this) {
|
|||
}
|
||||
|
||||
super->type2++;
|
||||
heap->filler[0x19] = 1;
|
||||
heap->filler2[0].unk0.HALF.HI = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1043,7 +1045,7 @@ void sub_0802E1D0(GleerokEntity* this) {
|
|||
void sub_0802E300(GleerokEntity* this) {
|
||||
u32 dir, tmp;
|
||||
u32 index;
|
||||
u8* ptr;
|
||||
Gleerok_HeapStruct2* ptr;
|
||||
u8* ptr2;
|
||||
Entity* ent;
|
||||
Gleerok_HeapStruct* heap;
|
||||
|
|
@ -1082,9 +1084,9 @@ void sub_0802E300(GleerokEntity* this) {
|
|||
tmp = 0;
|
||||
ptr = heap->filler;
|
||||
do {
|
||||
((u16*)ptr)[0xc] = tmp;
|
||||
ptr[1] = dir;
|
||||
ptr += 4;
|
||||
ptr[6].unk0.HWORD = tmp;
|
||||
ptr->unk0.HALF.HI = dir;
|
||||
ptr++;
|
||||
index++;
|
||||
} while (index <= 5);
|
||||
|
||||
|
|
@ -1118,7 +1120,7 @@ void sub_0802E448(GleerokEntity* this) {
|
|||
Gleerok_HeapStruct* heap = this->unk_84;
|
||||
s32 index;
|
||||
for (index = 5; index >= 0; index--) {
|
||||
u8* ptr = &heap->filler[0x30];
|
||||
u8* ptr = heap->unk_30;
|
||||
if (ptr[index] == 0) {
|
||||
CreateFx(heap->entities[0], FX_LAVA_SPLASH, 0);
|
||||
SoundReq(SFX_PLY_LAND);
|
||||
|
|
@ -1132,7 +1134,7 @@ void sub_0802E448(GleerokEntity* this) {
|
|||
}
|
||||
}
|
||||
|
||||
if (heap->filler[0x2d] <= 9) {
|
||||
if (heap->unk_2c.HALF.HI <= 9) {
|
||||
sub_0802EA68(heap, 5, 0x40, 3);
|
||||
}
|
||||
|
||||
|
|
@ -1171,9 +1173,9 @@ NONMATCH("asm/non_matching/gleerok/sub_0802E518.inc", void sub_0802E518(GleerokE
|
|||
s32 r7;
|
||||
Gleerok_HeapStruct* heap = this->unk_84;
|
||||
CopyPosition(heap->entities[0]->parent, heap->entities[0]);
|
||||
heap->entities[0]->direction = heap->filler[1];
|
||||
heap->entities[0]->direction = heap->filler->unk0.HALF.HI;
|
||||
|
||||
r6 = heap->filler[1];
|
||||
r6 = heap->filler->unk0.HALF.HI;
|
||||
if (r6 > 0x10) {
|
||||
r6 ^= 0xf;
|
||||
r6 = (r6 + 1) & 0xf;
|
||||
|
|
@ -1185,29 +1187,29 @@ NONMATCH("asm/non_matching/gleerok/sub_0802E518.inc", void sub_0802E518(GleerokE
|
|||
|
||||
heap->entities[0]->speed = ((r6 ^ 0xf) + 0x12) << 8;
|
||||
LinearMoveUpdate(heap->entities[0]);
|
||||
sp4 = *(u32*)&heap->filler[0x30];
|
||||
sp4 = *(u32*)&heap->unk_30;
|
||||
sp8 = this->unk_80;
|
||||
|
||||
for (index = 0; index <= 4; index++) {
|
||||
s32 result;
|
||||
CopyPosition(heap->entities[index], heap->entities[index + 1]);
|
||||
result = FixedMul(gSineTable[heap->filler[0x19 + (index + 1) * 4]], ((u8*)sp4)[r6]);
|
||||
result = FixedMul(gSineTable[heap->filler2[(index + 1)].unk0.HALF.HI * 8], (heap->unk_30)[r6] << 8);
|
||||
result = FixedDiv(result, 0x100);
|
||||
result = FixedMul(gSineTable[heap->filler[0x1 + (index + 1) * 4]], result);
|
||||
result = FixedMul(gSineTable[heap->filler[(index + 1)].unk0.HALF.HI * 8], result);
|
||||
result = FixedDiv(result, 0x100);
|
||||
heap->entities[index]->x.WORD += result << 8;
|
||||
|
||||
result = FixedMul(gSineTable[heap->filler[0x19 + (index + 1) * 4]], ((u8*)sp4)[r6]);
|
||||
result = FixedMul(gSineTable[heap->filler2[(index + 1)].unk0.HALF.HI * 8 + 0x40], (heap->unk_30)[r6] << 8);
|
||||
result = FixedDiv(result, 0x100);
|
||||
heap->entities[index]->y.WORD -= result << 8;
|
||||
}
|
||||
|
||||
if (heap->ent2->timer == 24) {
|
||||
r7 = (heap->filler[0x15] >> 3) << 2;
|
||||
if (heap->filler[0x2d] > 0xc) {
|
||||
r7 = (heap->filler[5].unk0.HALF.HI >> 3) << 2;
|
||||
if (heap->unk_2c.HALF.HI > 0xc) {
|
||||
r7 += 3;
|
||||
} else {
|
||||
r7 += heap->filler[0x2d] >> 2;
|
||||
r7 += heap->unk_2c.HALF.HI >> 2;
|
||||
}
|
||||
|
||||
if (heap->ent2->animIndex != r7 + 0x18) {
|
||||
|
|
@ -1216,15 +1218,21 @@ NONMATCH("asm/non_matching/gleerok/sub_0802E518.inc", void sub_0802E518(GleerokE
|
|||
} else {
|
||||
if (this->unk_80 == 0) {
|
||||
sub_0802E7CC(heap, 5, 0, 0);
|
||||
r7 = (heap->ent2->animationState / 2 + heap->ent2->animationState) / 4;
|
||||
r7 += heap->ent2->timer;
|
||||
r7 = (heap->ent2->animationState + (heap->ent2->animationState >> 1));
|
||||
r7 = (r7 >> 2) + heap->ent2->timer;
|
||||
} else {
|
||||
if (super->iframes == 0) {
|
||||
if ((super->animIndex != (heap->filler[0x15] >> 3) + 0x2f) || (super->frame & ANIM_DONE) != 0) {
|
||||
r7 = (heap->filler[0x15] >> 3) + 0x28;
|
||||
if ((super->animIndex != (heap->filler[5].unk0.HALF.HI >> 3) + 0x2f)) {
|
||||
r7 = (heap->filler[5].unk0.HALF.HI >> 3) + 0x28;
|
||||
} else {
|
||||
if ((super->frame & ANIM_DONE) != 0) {
|
||||
r7 = (heap->filler[5].unk0.HALF.HI >> 3) + 0x28;
|
||||
} else {
|
||||
r7 = super->animIndex;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
r7 = (heap->filler[0x15] >> 3) + 0x2f;
|
||||
r7 = (heap->filler[5].unk0.HALF.HI >> 3) + 0x2f;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1240,9 +1248,9 @@ NONMATCH("asm/non_matching/gleerok/sub_0802E518.inc", void sub_0802E518(GleerokE
|
|||
u32 val;
|
||||
sub_0802E7CC(heap, (u8)index, 0, 0);
|
||||
r7 = heap->entities[index]->animationState * 12;
|
||||
r7 += (((s32)heap->filler[0x19 + (index + 1) * 4]) / 3) * 12;
|
||||
r7 += (((s32)heap->filler2[(index + 1)].unk0.HALF.HI) / 3) * 12;
|
||||
} else {
|
||||
r7 = heap->filler[0x1 + index * 4] >> 3;
|
||||
r7 = heap->filler[index].unk0.HALF.HI >> 3;
|
||||
r7 += 0x48;
|
||||
}
|
||||
if (heap->entities[index]->animIndex != r7) {
|
||||
|
|
@ -1251,3 +1259,273 @@ 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)) {
|
||||
s32 bVar2;
|
||||
s32 bVar2a;
|
||||
u32 bVar3;
|
||||
|
||||
// solves regalloc
|
||||
// register u32 bVar3 asm("r1");
|
||||
u32 bVar3a;
|
||||
u32 uVar4;
|
||||
s32 iVar5;
|
||||
|
||||
for (uVar4 = 0; uVar4 <= 4; uVar4++) {
|
||||
bVar3 = param_1->filler[uVar4].unk0.HALF.HI;
|
||||
bVar2 = (bVar3 - param_1->filler[uVar4 + 1].unk0.HALF.HI) & 0x1f;
|
||||
|
||||
if (bVar2 > 0x10) {
|
||||
if (bVar2 <= 0x1e) {
|
||||
bVar3 = (bVar3 + 1) & 0x1f;
|
||||
}
|
||||
} else if (bVar2 > 1) {
|
||||
bVar3 = (bVar3 - 1) & 0x1f;
|
||||
}
|
||||
|
||||
param_1->filler[uVar4].unk0.HALF.HI = bVar3;
|
||||
bVar3 = param_1->filler2[uVar4].unk0.HALF.HI;
|
||||
bVar2 = (bVar3 - param_1->filler2[uVar4 + 1].unk0.HALF.HI) & 0x1f;
|
||||
|
||||
if (bVar2 > 0x10) {
|
||||
if (bVar2 <= 0x1d) {
|
||||
bVar3 = (bVar3 + 1) & 0x1f;
|
||||
}
|
||||
} else if (bVar2 > 2) {
|
||||
bVar3 = (bVar3 - 1) & 0x1f;
|
||||
}
|
||||
|
||||
param_1->filler2[uVar4].unk0.HALF.HI = bVar3;
|
||||
}
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
u32 sub_0802E7CC(Gleerok_HeapStruct* param_1, u32 param_2, u32 param_3, u32 param_4) {
|
||||
param_1->entities[(u8)param_2]->animationState = param_1->filler[(u8)param_2].unk0.HALF.HI;
|
||||
return param_1->entities[(u8)param_2]->animationState;
|
||||
}
|
||||
|
||||
void sub_0802E7E4(Gleerok_HeapStruct* this) {
|
||||
u32 i;
|
||||
u32 bVar6;
|
||||
|
||||
if ((this->ent2->frame & 0x40) != 0) {
|
||||
bVar6 = 0;
|
||||
for (i = 0; i < 6; i++) {
|
||||
this->entities[i]->spritePriority.b0 = bVar6++;
|
||||
if (this->unk_30[i] == 0) {
|
||||
this->entities[i]->spriteSettings.draw &= ~1;
|
||||
} else {
|
||||
this->entities[i]->spriteSettings.draw = 1;
|
||||
}
|
||||
}
|
||||
for (i = 0; i < 5; i++) {
|
||||
if ((u8)(this->filler[i].unk0.HALF.HI - 8) < 0x11) {
|
||||
bVar6 = this->entities[i]->spritePriority.b0;
|
||||
this->entities[i]->spritePriority.b0 = this->entities[i + 1]->spritePriority.b0;
|
||||
this->entities[i + 1]->spritePriority.b0 = bVar6;
|
||||
}
|
||||
}
|
||||
this->ent->spritePriority.b0 = 0;
|
||||
} else {
|
||||
bVar6 = 5;
|
||||
|
||||
for (i = 0; i < 6; i++) {
|
||||
this->entities[i]->spritePriority.b0 = bVar6--;
|
||||
if (this->unk_30[i] == 0) {
|
||||
this->entities[i]->spriteSettings.draw &= ~1;
|
||||
} else {
|
||||
this->entities[i]->spriteSettings.draw = 1;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < 5; i++) {
|
||||
if (0x10 < (u8)(this->filler[i].unk0.HALF.HI - 8)) {
|
||||
bVar6 = this->entities[i]->spritePriority.b0;
|
||||
this->entities[i]->spritePriority.b0 = this->entities[i + 1]->spritePriority.b0;
|
||||
this->entities[i + 1]->spritePriority.b0 = bVar6;
|
||||
}
|
||||
}
|
||||
this->ent->spritePriority.b0 = 6;
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool32 sub_0802EA18(u32 arg0, u32 arg1, u32 arg2) {
|
||||
u32 r1;
|
||||
|
||||
r1 = arg1 + 0x1000;
|
||||
r1 -= arg0;
|
||||
r1 &= 0x1FFF;
|
||||
arg2 <<= 8;
|
||||
|
||||
if (r1 >= 0x1000 - arg2) {
|
||||
if (r1 <= 0x1000 + arg2) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void sub_0802EA48(Gleerok_HeapStruct* param_1, u32 param_2, u32 param_3, u32 param_4) {
|
||||
if (param_4 == 1) {
|
||||
param_3 = -param_3;
|
||||
}
|
||||
param_1->filler[param_2].unk0.HWORD = (param_1->filler[param_2].unk0.HWORD + param_3) & 0x1fff;
|
||||
}
|
||||
|
||||
void sub_0802EA68(Gleerok_HeapStruct* param_1, u32 param_2, u32 param_3, u32 param_4) {
|
||||
if (param_4 == 2) {
|
||||
param_3 = -param_3;
|
||||
}
|
||||
param_1->filler2[param_2].unk0.HWORD = (param_1->filler2[param_2].unk0.HWORD + param_3) & 0x1fff;
|
||||
}
|
||||
|
||||
NONMATCH("asm/non_matching/gleerok/sub_0802EA88.inc", bool32 sub_0802EA88(Gleerok_HeapStruct* this)) {
|
||||
s32 bVar2;
|
||||
u32 uVar3;
|
||||
u32 bVar4;
|
||||
u32 uVar5;
|
||||
u32 uVar6;
|
||||
|
||||
uVar6 = FALSE;
|
||||
|
||||
for (uVar5 = 0; uVar5 < 5; uVar5++) {
|
||||
if (this->filler[uVar5].unk0.HALF.HI != this->filler[uVar5 + 1].unk0.HALF.HI) {
|
||||
uVar6 = TRUE;
|
||||
if ((s32)((this->filler[uVar5 + 1].unk0.HALF.HI - this->filler[uVar5].unk0.HALF.HI) & 0x1fU) > 0x10) {
|
||||
uVar3 = 0;
|
||||
} else {
|
||||
uVar3 = 1;
|
||||
}
|
||||
sub_0802EA48(this, uVar5 + 1, 0x20, uVar3);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (uVar5 = 0; uVar5 <= 4; uVar5++) {
|
||||
bVar4 = this->filler[uVar5 + 1].unk0.HALF.HI;
|
||||
bVar2 = (bVar4 - this->filler[uVar5].unk0.HALF.HI) & 0x1f;
|
||||
if (bVar2 >= 0x11) {
|
||||
if (bVar2 < 0x1f) {
|
||||
bVar4 = (bVar4 + 1) & 0x1f;
|
||||
}
|
||||
} else {
|
||||
if (1 < bVar2) {
|
||||
bVar4 = (bVar4 - 1) & 0x1f;
|
||||
}
|
||||
}
|
||||
this->filler[uVar5 + 1].unk0.HALF.HI = bVar4;
|
||||
}
|
||||
return uVar6;
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
NONMATCH("asm/non_matching/gleerok/sub_0802EB08.inc",
|
||||
bool32 sub_0802EB08(Gleerok_HeapStruct* param_1, u32 param_2, s32 param_3)) {
|
||||
s32 uVar2;
|
||||
u32 bVar4;
|
||||
u32 uVar5;
|
||||
u32 uVar6;
|
||||
u32 uVar7;
|
||||
|
||||
uVar7 = FALSE;
|
||||
|
||||
for (uVar6 = 0; uVar6 < 5; uVar6++) {
|
||||
if (param_1->filler2[uVar6].unk0.HALF.HI != param_1->filler2[uVar6 + 1].unk0.HALF.HI) {
|
||||
uVar7 = TRUE;
|
||||
if (0x10 <
|
||||
(s32)((param_1->filler2[uVar6 + 1].unk0.HALF.HI - param_1->filler2[uVar6].unk0.HALF.HI) & 0x1fU)) {
|
||||
uVar5 = 3;
|
||||
} else {
|
||||
uVar5 = 2;
|
||||
}
|
||||
sub_0802EA68(param_1, uVar6 + 1, param_2, uVar5);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (uVar6 = 0; uVar6 <= 4; uVar6++) {
|
||||
bVar4 = param_1->filler2[uVar6 + 1].unk0.HALF.HI;
|
||||
uVar2 = (bVar4 - param_1->filler2[uVar6].unk0.HALF.HI) & 0x1f;
|
||||
if (uVar2 >= 0x11) {
|
||||
if ((-param_3 & 0x1f) > uVar2) {
|
||||
bVar4 = (bVar4 + 1) & 0x1f;
|
||||
}
|
||||
} else {
|
||||
if (param_3 < (int)uVar2) {
|
||||
bVar4 = (bVar4 - 1) & 0x1f;
|
||||
}
|
||||
}
|
||||
param_1->filler2[uVar6 + 1].unk0.HALF.HI = bVar4;
|
||||
}
|
||||
return uVar7;
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
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--;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue