tmc/asm/enemy/gleerok.s

724 lines
11 KiB
ArmAsm

.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}