Decompiled two difficult functions

Had do use a lot of `asm` directives for sub_81C8A28 to match.
This commit is contained in:
Phlosioneer
2019-03-16 00:34:11 -04:00
parent 8cea949e6d
commit bdc6ed1a98
2 changed files with 136 additions and 258 deletions
-254
View File
@@ -5,260 +5,6 @@
.text
thumb_func_start sub_81C8958
sub_81C8958: @ 81C8958
push {r4,r5,lr}
adds r5, r0, 0
movs r0, 0x11
bl GetSubstructPtr
adds r4, r0, 0
bl IsDma3ManagerBusyWithBgCopy
lsls r0, 24
cmp r0, 0
beq _081C8972
movs r0, 0x2
b _081C8A22
_081C8972:
cmp r5, 0x7
bhi _081C8A1C
lsls r0, r5, 2
ldr r1, =_081C8984
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_081C8984:
.4byte _081C89A4
.4byte _081C89B4
.4byte _081C89BE
.4byte _081C89D0
.4byte _081C89DA
.4byte _081C89EC
.4byte _081C89F6
.4byte _081C8A08
_081C89A4:
ldr r1, =0x00000888
adds r0, r4, r1
adds r1, r4, 0
bl sub_81C8CB4
b _081C8A20
.pool
_081C89B4:
adds r0, r4, 0
movs r1, 0
bl sub_81C8DBC
b _081C8A20
_081C89BE:
ldr r1, =0x00000888
adds r0, r4, r1
adds r1, r4, 0
movs r2, 0
bl sub_81C8E54
b _081C8A20
.pool
_081C89D0:
adds r0, r4, 0
movs r1, 0x1
bl sub_81C8DBC
b _081C8A20
_081C89DA:
ldr r1, =0x00000888
adds r0, r4, r1
adds r1, r4, 0
movs r2, 0x1
bl sub_81C8E54
b _081C8A20
.pool
_081C89EC:
adds r0, r4, 0
movs r1, 0x2
bl sub_81C8DBC
b _081C8A20
_081C89F6:
ldr r1, =0x00000888
adds r0, r4, r1
adds r1, r4, 0
movs r2, 0x2
bl sub_81C8E54
b _081C8A20
.pool
_081C8A08:
ldr r1, =0x00000888
adds r0, r4, r1
adds r1, r4, 0
movs r2, 0x3
bl sub_81C8E54
b _081C8A20
.pool
_081C8A1C:
movs r0, 0x4
b _081C8A22
_081C8A20:
movs r0, 0
_081C8A22:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_81C8958
thumb_func_start sub_81C8A28
sub_81C8A28: @ 81C8A28
push {r4-r7,lr}
sub sp, 0x8
adds r5, r0, 0
bl IsDma3ManagerBusyWithBgCopy
lsls r0, 24
cmp r0, 0
bne _081C8AA6
movs r0, 0x11
bl GetSubstructPtr
adds r4, r0, 0
ldr r0, =0x00000888
adds r6, r4, r0
adds r2, r4, 0
cmp r5, 0x6
bls _081C8A4C
b _081C8B64
_081C8A4C:
lsls r0, r5, 2
ldr r1, =_081C8A60
adds r0, r1
ldr r0, [r0]
mov pc, r0
.pool
.align 2, 0
_081C8A60:
.4byte _081C8A7C
.4byte _081C8A88
.4byte _081C8AE8
.4byte _081C8AFC
.4byte _081C8B14
.4byte _081C8B34
.4byte _081C8B5C
_081C8A7C:
adds r0, r6, 0
adds r1, r2, 0
bl sub_81C8D4C
movs r0, 0
b _081C8B66
_081C8A88:
ldr r1, =0x0000089c
adds r7, r4, r1
ldr r0, [r7]
adds r1, r0, 0x1
str r1, [r7]
movs r3, 0x89
lsls r3, 4
adds r0, r4, r3
ldrh r0, [r0]
cmp r1, r0
bge _081C8AB0
adds r0, r2, 0
movs r2, 0x1
bl sub_81C8B70
_081C8AA6:
movs r0, 0x2
b _081C8B66
.pool
_081C8AB0:
movs r0, 0
str r0, [r7]
ldrh r0, [r6, 0x2]
ldrh r1, [r6, 0x8]
cmp r0, r1
bhi _081C8AC6
ldrh r0, [r6]
cmp r0, 0
beq _081C8B52
adds r4, r0, 0
b _081C8AD4
_081C8AC6:
ldrh r1, [r6]
ldrh r0, [r6, 0x8]
adds r4, r1, r0
ldrh r1, [r6, 0x2]
cmp r4, r1
ble _081C8B52
subs r4, r1
_081C8AD4:
negs r5, r4
adds r0, r2, 0
adds r1, r5, 0
adds r2, r4, 0
bl sub_81C8B70
strh r4, [r6, 0x6]
str r5, [r7]
movs r0, 0
b _081C8B66
_081C8AE8:
ldr r2, =0x0000089c
adds r0, r4, r2
ldr r0, [r0]
movs r1, 0
bl sub_81C84E8
movs r0, 0
b _081C8B66
.pool
_081C8AFC:
bl sub_81C8630
adds r1, r0, 0
cmp r1, 0
bne _081C8AA6
ldr r3, =0x0000089c
adds r0, r4, r3
str r1, [r0]
_081C8B0C:
movs r0, 0x1
b _081C8B66
.pool
_081C8B14:
ldr r0, [r6, 0x10]
ldrh r1, [r6]
ldr r3, =0x0000089c
adds r2, r4, r3
ldr r2, [r2]
adds r1, r2
ldr r3, [r6, 0xC]
str r2, [sp]
str r4, [sp, 0x4]
movs r2, 0x1
bl sub_81C83AC
movs r0, 0
b _081C8B66
.pool
_081C8B34:
bl sub_81C83E0
cmp r0, 0
bne _081C8AA6
ldr r0, =0x0000089c
adds r1, r4, r0
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
ldrh r1, [r6, 0x2]
cmp r0, r1
bge _081C8B0C
ldrh r6, [r6, 0x8]
cmp r0, r6
bge _081C8B0C
_081C8B52:
movs r0, 0x9
b _081C8B66
.pool
_081C8B5C:
adds r0, r2, 0
movs r1, 0
bl sub_81C9008
_081C8B64:
movs r0, 0x4
_081C8B66:
add sp, 0x8
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_81C8A28
thumb_func_start sub_81C8B70
sub_81C8B70: @ 81C8B70
push {r4-r7,lr}