non matching sub_8063DCC, decompile sub_80641B0

This commit is contained in:
Oliver Bell committed 2022-05-17 18:09:36 +01:00
1 parent 61ee717b00
commit fccc22f6b8
4 files changed
+657 -673

No files matched your search

View File
Whitespace-only changes.
+498
View File
@@ -0,0 +1,498 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0x40
mov sb, r0
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
str r1, [sp, #0x20]
ldr r0, _08064008 @ =0x0000035B
add r0, sb
ldrb r0, [r0]
str r0, [sp, #0x24]
movs r0, #0xf9
lsls r0, r0, #2
add r0, sb
ldr r6, _0806400C @ =0x00000414
add r6, sb
ldr r1, _08064010 @ =0x00000594
add r1, sb
mov sl, r1
ldr r2, _08064014 @ =0x00000654
add r2, sb
str r2, [sp, #0x28]
ldr r3, [sp, #0x24]
lsls r4, r3, #3
ldr r1, _08064018 @ =gUnknown_080D95E8
adds r4, r4, r1
ldrh r2, [r4, #4]
ldrh r3, [r4]
movs r1, #0xc0
lsls r1, r1, #6
str r1, [sp]
movs r5, #0
str r5, [sp, #4]
movs r1, #0xf
str r1, [sp, #8]
str r1, [sp, #0xc]
ldrb r1, [r4, #2]
str r1, [sp, #0x10]
str r5, [sp, #0x14]
movs r1, #0
bl sub_806A568
movs r0, #0
mov r8, r0
movs r1, #0x1e
str r1, [sp, #0x2c]
ldr r2, [sp, #0x24]
lsls r2, r2, #6
str r2, [sp, #0x34]
ldr r3, [sp, #0x20]
lsls r0, r3, #0x10
asrs r0, r0, #0x10
str r0, [sp, #0x38]
_08063E3C:
movs r0, #0xd7
lsls r0, r0, #2
add r0, sb
ldrb r0, [r0]
mov r2, r8
lsls r1, r2, #0x10
cmp r0, #0
bne _08063E56
asrs r0, r1, #0x10
ldr r3, [sp, #0x20]
lsls r5, r3, #0x10
cmp r0, #5
beq _08063EBA
_08063E56:
asrs r2, r1, #0x10
lsls r0, r2, #3
ldr r1, _0806401C @ =gUnknown_080D9618
adds r0, r0, r1
ldr r3, [sp, #0x34]
adds r1, r3, r0
movs r0, #0xf0
lsls r0, r0, #3
add r0, sb
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
movs r7, #0x28
cmp r0, r2
bne _08063E76
movs r7, #0x20
_08063E76:
ldr r0, [sp, #0x20]
lsls r5, r0, #0x10
ldr r3, [sp, #0x38]
cmp r3, #1
bne _08063E86
cmp r2, #0
bne _08063E86
ldr r7, _08064020 @ =0x0000FF48
_08063E86:
ldrh r2, [r1, #4]
ldrh r3, [r1]
movs r0, #0xc0
lsls r0, r0, #6
str r0, [sp]
lsls r0, r7, #0x10
asrs r0, r0, #0x10
str r0, [sp, #4]
ldr r0, [sp, #0x2c]
lsls r4, r0, #0x10
asrs r4, r4, #0x10
str r4, [sp, #8]
movs r0, #0xd
str r0, [sp, #0xc]
ldrb r0, [r1, #2]
str r0, [sp, #0x10]
movs r0, #0
str r0, [sp, #0x14]
adds r0, r6, #0
movs r1, #0
bl sub_806A568
adds r4, #0xf
lsls r4, r4, #0x10
lsrs r4, r4, #0x10
str r4, [sp, #0x2c]
_08063EBA:
mov r1, r8
lsls r0, r1, #0x10
movs r2, #0x80
lsls r2, r2, #9
adds r0, r0, r2
adds r6, #0x30
lsrs r3, r0, #0x10
mov r8, r3
asrs r0, r0, #0x10
str r0, [sp, #0x30]
cmp r0, #7
ble _08063E3C
movs r6, #0xf0
lsls r6, r6, #3
add r6, sb
movs r0, #0
ldrsb r0, [r6, r0]
movs r1, #0xa0
cmp r0, #0
bne _08063EE4
movs r1, #0x98
_08063EE4:
adds r7, r1, #0
asrs r5, r5, #0x10
str r5, [sp, #0x3c]
cmp r5, #1
bne _08063EF0
ldr r7, _08064024 @ =0x0000FFC0
_08063EF0:
ldr r3, _08064028 @ =0x000003BA
movs r0, #0xc0
lsls r0, r0, #6
str r0, [sp]
lsls r0, r7, #0x10
asrs r0, r0, #0x10
str r0, [sp, #4]
movs r0, #0x1e
str r0, [sp, #8]
movs r0, #0xc
str r0, [sp, #0xc]
movs r1, #0
mov r8, r1
str r1, [sp, #0x10]
str r1, [sp, #0x14]
mov r0, sl
movs r2, #0x12
bl sub_806A568
movs r2, #0x30
add sl, r2
ldr r3, [sp, #0x24]
lsls r5, r3, #4
ldr r0, _0806402C @ =0x00000359
add r0, sb
ldrb r0, [r0]
lsls r0, r0, #3
ldr r1, _08064030 @ =gUnknown_080D9798
adds r0, r0, r1
adds r1, r5, r0
movs r0, #0
ldrsb r0, [r6, r0]
movs r4, #0xa0
cmp r0, #1
bne _08063F38
movs r4, #0x98
_08063F38:
ldrh r2, [r1, #4]
ldrh r3, [r1]
movs r0, #0xc0
lsls r0, r0, #6
str r0, [sp]
str r4, [sp, #4]
movs r0, #0x2d
str r0, [sp, #8]
movs r7, #0xa
str r7, [sp, #0xc]
ldrb r0, [r1, #2]
str r0, [sp, #0x10]
mov r1, r8
str r1, [sp, #0x14]
mov r0, sl
movs r1, #0
bl sub_806A568
movs r2, #0x30
add sl, r2
ldr r0, _08064034 @ =0x0000035A
add r0, sb
ldrb r0, [r0]
lsls r0, r0, #3
ldr r1, _08064038 @ =gUnknown_080D97F8
adds r0, r0, r1
adds r1, r5, r0
movs r0, #0
ldrsb r0, [r6, r0]
movs r4, #0xa0
cmp r0, #2
bne _08063F7A
movs r4, #0x98
_08063F7A:
ldrh r2, [r1, #4]
ldrh r3, [r1]
movs r0, #0xc0
lsls r0, r0, #6
str r0, [sp]
str r4, [sp, #4]
movs r0, #0x3c
str r0, [sp, #8]
str r7, [sp, #0xc]
ldrb r0, [r1, #2]
str r0, [sp, #0x10]
mov r1, r8
str r1, [sp, #0x14]
mov r0, sl
movs r1, #0
bl sub_806A568
movs r2, #0x30
add sl, r2
ldr r3, [sp, #0x24]
lsls r1, r3, #3
ldr r0, _0806403C @ =gUnknown_080D9858
adds r1, r1, r0
movs r0, #0
ldrsb r0, [r6, r0]
movs r4, #0xa0
cmp r0, #3
bne _08063FB4
movs r4, #0x98
_08063FB4:
ldrh r2, [r1, #4]
ldrh r3, [r1]
movs r0, #0xc0
lsls r0, r0, #6
str r0, [sp]
str r4, [sp, #4]
movs r0, #0x4b
str r0, [sp, #8]
str r7, [sp, #0xc]
ldrb r0, [r1, #2]
str r0, [sp, #0x10]
mov r1, r8
str r1, [sp, #0x14]
mov r0, sl
movs r1, #0
bl sub_806A568
movs r0, #0
ldrsb r0, [r6, r0]
movs r1, #0xab
cmp r0, #0
bne _08063FE2
movs r1, #0xa3
_08063FE2:
adds r7, r1, #0
ldr r2, [sp, #0x3c]
cmp r2, #1
bne _08063FF2
ldr r3, [sp, #0x30]
cmp r3, #0
bne _08063FF2
ldr r7, _08064040 @ =0x0000FFCB
_08063FF2:
movs r0, #0
mov r8, r0
movs r1, #0x26
str r1, [sp, #0x2c]
mov sl, r0
_08063FFC:
mov r2, sl
cmp r2, #0
beq _08064044
movs r1, #0x11
b _0806404E
.align 2, 0
_08064008: .4byte 0x0000035B
_0806400C: .4byte 0x00000414
_08064010: .4byte 0x00000594
_08064014: .4byte 0x00000654
_08064018: .4byte gUnknown_080D95E8
_0806401C: .4byte gUnknown_080D9618
_08064020: .4byte 0x0000FF48
_08064024: .4byte 0x0000FFC0
_08064028: .4byte 0x000003BA
_0806402C: .4byte 0x00000359
_08064030: .4byte gUnknown_080D9798
_08064034: .4byte 0x0000035A
_08064038: .4byte gUnknown_080D97F8
_0806403C: .4byte gUnknown_080D9858
_08064040: .4byte 0x0000FFCB
_08064044:
mov r3, r8
lsls r0, r3, #0x10
asrs r0, r0, #0xf
add r0, sb
ldrh r1, [r0]
_0806404E:
ldr r0, _080640FC @ =0x0000FFFF
cmp r1, r0
bne _0806405A
movs r1, #0x11
movs r0, #1
mov sl, r0
_0806405A:
add r0, sp, #0x18
bl sub_806B908
ldr r4, [sp, #0x18]
ldr r5, [sp, #0x1c]
lsls r3, r5, #0x10
lsrs r3, r3, #0x10
movs r0, #0xc0
lsls r0, r0, #6
str r0, [sp]
lsls r0, r7, #0x10
asrs r6, r0, #0x10
str r6, [sp, #4]
ldr r1, [sp, #0x2c]
lsls r0, r1, #0x10
asrs r0, r0, #0x10
str r0, [sp, #8]
movs r0, #0xa
str r0, [sp, #0xc]
lsrs r0, r5, #0x10
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
str r0, [sp, #0x10]
movs r0, #0
str r0, [sp, #0x14]
ldr r0, [sp, #0x28]
movs r1, #0
adds r2, r4, #0
bl sub_806A568
movs r0, #0xf0
lsls r0, r0, #3
add r0, sb
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
movs r1, #8
cmp r0, #0
bne _080640AA
movs r1, #7
_080640AA:
ldr r0, [sp, #0x28]
adds r0, #0x25
strb r1, [r0]
mov r2, r8
lsls r1, r2, #0x10
movs r3, #0x80
lsls r3, r3, #9
adds r1, r1, r3
ldr r0, [sp, #0x28]
adds r0, #0x30
str r0, [sp, #0x28]
adds r0, r6, #0
adds r0, #0xa
lsls r0, r0, #0x10
lsrs r7, r0, #0x10
lsrs r2, r1, #0x10
mov r8, r2
asrs r1, r1, #0x10
cmp r1, #5
ble _08063FFC
movs r3, #0
mov r8, r3
movs r5, #0xf0
lsls r5, r5, #3
add r5, sb
movs r7, #0
movs r6, #1
ldr r4, _08064100 @ =0x000005B9
add r4, sb
ldr r3, _08064104 @ =0x00000439
add r3, sb
_080640E8:
movs r0, #0
ldrsb r0, [r5, r0]
mov r2, r8
lsls r1, r2, #0x10
asrs r2, r1, #0x10
cmp r0, r2
bne _08064108
strb r7, [r3]
b _0806410A
.align 2, 0
_080640FC: .4byte 0x0000FFFF
_08064100: .4byte 0x000005B9
_08064104: .4byte 0x00000439
_08064108:
strb r6, [r3]
_0806410A:
adds r3, #0x30
asrs r2, r1, #0x10
cmp r2, #3
bgt _08064122
movs r0, #0
ldrsb r0, [r5, r0]
cmp r0, r2
bne _0806411E
strb r7, [r4]
b _08064120
_0806411E:
strb r6, [r4]
_08064120:
adds r4, #0x30
_08064122:
movs r2, #0x80
lsls r2, r2, #9
adds r0, r1, r2
lsrs r1, r0, #0x10
mov r8, r1
asrs r0, r0, #0x10
cmp r0, #7
ble _080640E8
movs r6, #0
movs r4, #0xf1
lsls r4, r4, #2
str r6, [sp]
str r6, [sp, #4]
str r6, [sp, #8]
str r6, [sp, #0xc]
str r6, [sp, #0x10]
str r6, [sp, #0x14]
movs r0, #0
movs r1, #0
movs r2, #0
adds r3, r4, #0
bl sub_806A568
str r6, [sp]
str r6, [sp, #4]
str r6, [sp, #8]
str r6, [sp, #0xc]
movs r0, #1
str r0, [sp, #0x10]
str r6, [sp, #0x14]
movs r0, #0
movs r1, #0
movs r2, #0
adds r3, r4, #0
bl sub_806A568
subs r4, #1
str r6, [sp]
str r6, [sp, #4]
str r6, [sp, #8]
str r6, [sp, #0xc]
movs r0, #0xc
str r0, [sp, #0x10]
str r6, [sp, #0x14]
movs r0, #0
movs r1, #0
movs r2, #0
adds r3, r4, #0
bl sub_806A568
str r6, [sp]
str r6, [sp, #4]
str r6, [sp, #8]
str r6, [sp, #0xc]
movs r0, #0xd
str r0, [sp, #0x10]
str r6, [sp, #0x14]
movs r0, #0
movs r1, #0
movs r2, #0
adds r3, r4, #0
bl sub_806A568
add sp, #0x40
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.syntax divided
-665
View File
@@ -7,671 +7,6 @@
@; Unlikely to all be profile but a large section
@; but a large section seems to relate to it
thumb_func_start sub_8063DCC
sub_8063DCC: @ 0x08063DCC
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0x40
mov sb, r0
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
str r1, [sp, #0x20]
ldr r0, _08064008 @ =0x0000035B
add r0, sb
ldrb r0, [r0]
str r0, [sp, #0x24]
movs r0, #0xf9
lsls r0, r0, #2
add r0, sb
ldr r6, _0806400C @ =0x00000414
add r6, sb
ldr r1, _08064010 @ =0x00000594
add r1, sb
mov sl, r1
ldr r2, _08064014 @ =0x00000654
add r2, sb
str r2, [sp, #0x28]
ldr r3, [sp, #0x24]
lsls r4, r3, #3
ldr r1, _08064018 @ =gUnknown_080D95E8
adds r4, r4, r1
ldrh r2, [r4, #4]
ldrh r3, [r4]
movs r1, #0xc0
lsls r1, r1, #6
str r1, [sp]
movs r5, #0
str r5, [sp, #4]
movs r1, #0xf
str r1, [sp, #8]
str r1, [sp, #0xc]
ldrb r1, [r4, #2]
str r1, [sp, #0x10]
str r5, [sp, #0x14]
movs r1, #0
bl sub_806A568
movs r0, #0
mov r8, r0
movs r1, #0x1e
str r1, [sp, #0x2c]
ldr r2, [sp, #0x24]
lsls r2, r2, #6
str r2, [sp, #0x34]
ldr r3, [sp, #0x20]
lsls r0, r3, #0x10
asrs r0, r0, #0x10
str r0, [sp, #0x38]
_08063E3C:
movs r0, #0xd7
lsls r0, r0, #2
add r0, sb
ldrb r0, [r0]
mov r2, r8
lsls r1, r2, #0x10
cmp r0, #0
bne _08063E56
asrs r0, r1, #0x10
ldr r3, [sp, #0x20]
lsls r5, r3, #0x10
cmp r0, #5
beq _08063EBA
_08063E56:
asrs r2, r1, #0x10
lsls r0, r2, #3
ldr r1, _0806401C @ =gUnknown_080D9618
adds r0, r0, r1
ldr r3, [sp, #0x34]
adds r1, r3, r0
movs r0, #0xf0
lsls r0, r0, #3
add r0, sb
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
movs r7, #0x28
cmp r0, r2
bne _08063E76
movs r7, #0x20
_08063E76:
ldr r0, [sp, #0x20]
lsls r5, r0, #0x10
ldr r3, [sp, #0x38]
cmp r3, #1
bne _08063E86
cmp r2, #0
bne _08063E86
ldr r7, _08064020 @ =0x0000FF48
_08063E86:
ldrh r2, [r1, #4]
ldrh r3, [r1]
movs r0, #0xc0
lsls r0, r0, #6
str r0, [sp]
lsls r0, r7, #0x10
asrs r0, r0, #0x10
str r0, [sp, #4]
ldr r0, [sp, #0x2c]
lsls r4, r0, #0x10
asrs r4, r4, #0x10
str r4, [sp, #8]
movs r0, #0xd
str r0, [sp, #0xc]
ldrb r0, [r1, #2]
str r0, [sp, #0x10]
movs r0, #0
str r0, [sp, #0x14]
adds r0, r6, #0
movs r1, #0
bl sub_806A568
adds r4, #0xf
lsls r4, r4, #0x10
lsrs r4, r4, #0x10
str r4, [sp, #0x2c]
_08063EBA:
mov r1, r8
lsls r0, r1, #0x10
movs r2, #0x80
lsls r2, r2, #9
adds r0, r0, r2
adds r6, #0x30
lsrs r3, r0, #0x10
mov r8, r3
asrs r0, r0, #0x10
str r0, [sp, #0x30]
cmp r0, #7
ble _08063E3C
movs r6, #0xf0
lsls r6, r6, #3
add r6, sb
movs r0, #0
ldrsb r0, [r6, r0]
movs r1, #0xa0
cmp r0, #0
bne _08063EE4
movs r1, #0x98
_08063EE4:
adds r7, r1, #0
asrs r5, r5, #0x10
str r5, [sp, #0x3c]
cmp r5, #1
bne _08063EF0
ldr r7, _08064024 @ =0x0000FFC0
_08063EF0:
ldr r3, _08064028 @ =0x000003BA
movs r0, #0xc0
lsls r0, r0, #6
str r0, [sp]
lsls r0, r7, #0x10
asrs r0, r0, #0x10
str r0, [sp, #4]
movs r0, #0x1e
str r0, [sp, #8]
movs r0, #0xc
str r0, [sp, #0xc]
movs r1, #0
mov r8, r1
str r1, [sp, #0x10]
str r1, [sp, #0x14]
mov r0, sl
movs r2, #0x12
bl sub_806A568
movs r2, #0x30
add sl, r2
ldr r3, [sp, #0x24]
lsls r5, r3, #4
ldr r0, _0806402C @ =0x00000359
add r0, sb
ldrb r0, [r0]
lsls r0, r0, #3
ldr r1, _08064030 @ =gUnknown_080D9798
adds r0, r0, r1
adds r1, r5, r0
movs r0, #0
ldrsb r0, [r6, r0]
movs r4, #0xa0
cmp r0, #1
bne _08063F38
movs r4, #0x98
_08063F38:
ldrh r2, [r1, #4]
ldrh r3, [r1]
movs r0, #0xc0
lsls r0, r0, #6
str r0, [sp]
str r4, [sp, #4]
movs r0, #0x2d
str r0, [sp, #8]
movs r7, #0xa
str r7, [sp, #0xc]
ldrb r0, [r1, #2]
str r0, [sp, #0x10]
mov r1, r8
str r1, [sp, #0x14]
mov r0, sl
movs r1, #0
bl sub_806A568
movs r2, #0x30
add sl, r2
ldr r0, _08064034 @ =0x0000035A
add r0, sb
ldrb r0, [r0]
lsls r0, r0, #3
ldr r1, _08064038 @ =gUnknown_080D97F8
adds r0, r0, r1
adds r1, r5, r0
movs r0, #0
ldrsb r0, [r6, r0]
movs r4, #0xa0
cmp r0, #2
bne _08063F7A
movs r4, #0x98
_08063F7A:
ldrh r2, [r1, #4]
ldrh r3, [r1]
movs r0, #0xc0
lsls r0, r0, #6
str r0, [sp]
str r4, [sp, #4]
movs r0, #0x3c
str r0, [sp, #8]
str r7, [sp, #0xc]
ldrb r0, [r1, #2]
str r0, [sp, #0x10]
mov r1, r8
str r1, [sp, #0x14]
mov r0, sl
movs r1, #0
bl sub_806A568
movs r2, #0x30
add sl, r2
ldr r3, [sp, #0x24]
lsls r1, r3, #3
ldr r0, _0806403C @ =gUnknown_080D9858
adds r1, r1, r0
movs r0, #0
ldrsb r0, [r6, r0]
movs r4, #0xa0
cmp r0, #3
bne _08063FB4
movs r4, #0x98
_08063FB4:
ldrh r2, [r1, #4]
ldrh r3, [r1]
movs r0, #0xc0
lsls r0, r0, #6
str r0, [sp]
str r4, [sp, #4]
movs r0, #0x4b
str r0, [sp, #8]
str r7, [sp, #0xc]
ldrb r0, [r1, #2]
str r0, [sp, #0x10]
mov r1, r8
str r1, [sp, #0x14]
mov r0, sl
movs r1, #0
bl sub_806A568
movs r0, #0
ldrsb r0, [r6, r0]
movs r1, #0xab
cmp r0, #0
bne _08063FE2
movs r1, #0xa3
_08063FE2:
adds r7, r1, #0
ldr r2, [sp, #0x3c]
cmp r2, #1
bne _08063FF2
ldr r3, [sp, #0x30]
cmp r3, #0
bne _08063FF2
ldr r7, _08064040 @ =0x0000FFCB
_08063FF2:
movs r0, #0
mov r8, r0
movs r1, #0x26
str r1, [sp, #0x2c]
mov sl, r0
_08063FFC:
mov r2, sl
cmp r2, #0
beq _08064044
movs r1, #0x11
b _0806404E
.align 2, 0
_08064008: .4byte 0x0000035B
_0806400C: .4byte 0x00000414
_08064010: .4byte 0x00000594
_08064014: .4byte 0x00000654
_08064018: .4byte gUnknown_080D95E8
_0806401C: .4byte gUnknown_080D9618
_08064020: .4byte 0x0000FF48
_08064024: .4byte 0x0000FFC0
_08064028: .4byte 0x000003BA
_0806402C: .4byte 0x00000359
_08064030: .4byte gUnknown_080D9798
_08064034: .4byte 0x0000035A
_08064038: .4byte gUnknown_080D97F8
_0806403C: .4byte gUnknown_080D9858
_08064040: .4byte 0x0000FFCB
_08064044:
mov r3, r8
lsls r0, r3, #0x10
asrs r0, r0, #0xf
add r0, sb
ldrh r1, [r0]
_0806404E:
ldr r0, _080640FC @ =0x0000FFFF
cmp r1, r0
bne _0806405A
movs r1, #0x11
movs r0, #1
mov sl, r0
_0806405A:
add r0, sp, #0x18
bl sub_806B908
ldr r4, [sp, #0x18]
ldr r5, [sp, #0x1c]
lsls r3, r5, #0x10
lsrs r3, r3, #0x10
movs r0, #0xc0
lsls r0, r0, #6
str r0, [sp]
lsls r0, r7, #0x10
asrs r6, r0, #0x10
str r6, [sp, #4]
ldr r1, [sp, #0x2c]
lsls r0, r1, #0x10
asrs r0, r0, #0x10
str r0, [sp, #8]
movs r0, #0xa
str r0, [sp, #0xc]
lsrs r0, r5, #0x10
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
str r0, [sp, #0x10]
movs r0, #0
str r0, [sp, #0x14]
ldr r0, [sp, #0x28]
movs r1, #0
adds r2, r4, #0
bl sub_806A568
movs r0, #0xf0
lsls r0, r0, #3
add r0, sb
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
movs r1, #8
cmp r0, #0
bne _080640AA
movs r1, #7
_080640AA:
ldr r0, [sp, #0x28]
adds r0, #0x25
strb r1, [r0]
mov r2, r8
lsls r1, r2, #0x10
movs r3, #0x80
lsls r3, r3, #9
adds r1, r1, r3
ldr r0, [sp, #0x28]
adds r0, #0x30
str r0, [sp, #0x28]
adds r0, r6, #0
adds r0, #0xa
lsls r0, r0, #0x10
lsrs r7, r0, #0x10
lsrs r2, r1, #0x10
mov r8, r2
asrs r1, r1, #0x10
cmp r1, #5
ble _08063FFC
movs r3, #0
mov r8, r3
movs r5, #0xf0
lsls r5, r5, #3
add r5, sb
movs r7, #0
movs r6, #1
ldr r4, _08064100 @ =0x000005B9
add r4, sb
ldr r3, _08064104 @ =0x00000439
add r3, sb
_080640E8:
movs r0, #0
ldrsb r0, [r5, r0]
mov r2, r8
lsls r1, r2, #0x10
asrs r2, r1, #0x10
cmp r0, r2
bne _08064108
strb r7, [r3]
b _0806410A
.align 2, 0
_080640FC: .4byte 0x0000FFFF
_08064100: .4byte 0x000005B9
_08064104: .4byte 0x00000439
_08064108:
strb r6, [r3]
_0806410A:
adds r3, #0x30
asrs r2, r1, #0x10
cmp r2, #3
bgt _08064122
movs r0, #0
ldrsb r0, [r5, r0]
cmp r0, r2
bne _0806411E
strb r7, [r4]
b _08064120
_0806411E:
strb r6, [r4]
_08064120:
adds r4, #0x30
_08064122:
movs r2, #0x80
lsls r2, r2, #9
adds r0, r1, r2
lsrs r1, r0, #0x10
mov r8, r1
asrs r0, r0, #0x10
cmp r0, #7
ble _080640E8
movs r6, #0
movs r4, #0xf1
lsls r4, r4, #2
str r6, [sp]
str r6, [sp, #4]
str r6, [sp, #8]
str r6, [sp, #0xc]
str r6, [sp, #0x10]
str r6, [sp, #0x14]
movs r0, #0
movs r1, #0
movs r2, #0
adds r3, r4, #0
bl sub_806A568
str r6, [sp]
str r6, [sp, #4]
str r6, [sp, #8]
str r6, [sp, #0xc]
movs r0, #1
str r0, [sp, #0x10]
str r6, [sp, #0x14]
movs r0, #0
movs r1, #0
movs r2, #0
adds r3, r4, #0
bl sub_806A568
subs r4, #1
str r6, [sp]
str r6, [sp, #4]
str r6, [sp, #8]
str r6, [sp, #0xc]
movs r0, #0xc
str r0, [sp, #0x10]
str r6, [sp, #0x14]
movs r0, #0
movs r1, #0
movs r2, #0
adds r3, r4, #0
bl sub_806A568
str r6, [sp]
str r6, [sp, #4]
str r6, [sp, #8]
str r6, [sp, #0xc]
movs r0, #0xd
str r0, [sp, #0x10]
str r6, [sp, #0x14]
movs r0, #0
movs r1, #0
movs r2, #0
adds r3, r4, #0
bl sub_806A568
add sp, #0x40
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
thumb_func_start sub_80641B0
sub_80641B0: @ 0x080641B0
push {r4, r5, r6, lr}
ldr r0, _080641EC @ =gCurTask
ldr r0, [r0]
ldrh r4, [r0, #6]
movs r0, #0xc0
lsls r0, r0, #0x12
adds r5, r4, r0
bl sub_80649A4
ldr r0, _080641F0 @ =gPressedKeys
ldrh r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0806421A
movs r0, #0x6a
bl m4aSongNumStart
ldr r1, _080641F4 @ =gUnknown_03000780
adds r0, r4, r1
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #5
beq _08064208
cmp r0, #5
bgt _080641F8
cmp r0, #3
beq _08064202
b _08064214
.align 2, 0
_080641EC: .4byte gCurTask
_080641F0: .4byte gPressedKeys
_080641F4: .4byte gUnknown_03000780
_080641F8:
cmp r0, #6
beq _0806420E
cmp r0, #7
beq _0806422C
b _08064214
_08064202:
bl sub_806A8EC
b _080642F0
_08064208:
bl sub_806A99C
b _080642F0
_0806420E:
bl sub_806AA4C
b _080642F0
_08064214:
bl sub_806A814
b _080642F0
_0806421A:
movs r0, #2
ands r0, r1
lsls r0, r0, #0x10
lsrs r6, r0, #0x10
cmp r6, #0
beq _08064232
movs r0, #0x6b
bl m4aSongNumStart
_0806422C:
bl sub_806ACF0
b _080642F0
_08064232:
ldr r0, _08064260 @ =gRepeatedKeys
ldrh r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0806428C
movs r0, #0x6c
bl m4aSongNumStart
ldr r3, _08064264 @ =gUnknown_03000780
adds r2, r4, r3
ldrb r0, [r2]
adds r3, #1
adds r1, r4, r3
strb r0, [r1]
ldrb r1, [r2]
movs r0, #0
ldrsb r0, [r2, r0]
cmp r0, #6
ble _08064268
strb r6, [r2]
b _0806426C
.align 2, 0
_08064260: .4byte gRepeatedKeys
_08064264: .4byte gUnknown_03000780
_08064268:
adds r0, r1, #1
strb r0, [r2]
_0806426C:
movs r1, #0xd7
lsls r1, r1, #2
adds r0, r5, r1
ldrb r0, [r0]
cmp r0, #0
bne _080642E0
movs r3, #0xf0
lsls r3, r3, #3
adds r1, r5, r3
ldrb r2, [r1]
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #5
bne _080642E0
adds r0, r2, #1
b _080642DE
_0806428C:
movs r0, #0x40
ands r0, r1
cmp r0, #0
beq _080642F0
movs r0, #0x6c
bl m4aSongNumStart
ldr r1, _080642B4 @ =gUnknown_03000780
adds r2, r4, r1
ldrb r0, [r2]
ldr r3, _080642B8 @ =gUnknown_03000781
adds r1, r4, r3
strb r0, [r1]
ldrb r1, [r2]
movs r0, #0
ldrsb r0, [r2, r0]
cmp r0, #0
bgt _080642BC
movs r0, #7
b _080642BE
.align 2, 0
_080642B4: .4byte gUnknown_03000780
_080642B8: .4byte gUnknown_03000781
_080642BC:
subs r0, r1, #1
_080642BE:
strb r0, [r2]
movs r1, #0xd7
lsls r1, r1, #2
adds r0, r5, r1
ldrb r0, [r0]
cmp r0, #0
bne _080642E0
movs r3, #0xf0
lsls r3, r3, #3
adds r1, r5, r3
ldrb r2, [r1]
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #5
bne _080642E0
subs r0, r2, #1
_080642DE:
strb r0, [r1]
_080642E0:
ldr r0, _080642F8 @ =0x00000783
adds r1, r5, r0
movs r0, #0
strb r0, [r1]
ldr r0, _080642FC @ =gCurTask
ldr r1, [r0]
ldr r0, _08064300 @ =sub_8064304
str r0, [r1, #8]
_080642F0:
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_080642F8: .4byte 0x00000783
_080642FC: .4byte gCurTask
_08064300: .4byte sub_8064304
thumb_func_start sub_8064304
sub_8064304: @ 0x08064304
push {r4, r5, r6, r7, lr}
+159 -8
View File
@@ -400,20 +400,37 @@ struct UNK_080D95E8 {
u16 unk6;
};
struct UNK_806B908 {
u32 unk0;
u32 unk4;
};
extern const struct UNK_080D95E8 gUnknown_080D95E8[6];
extern const struct UNK_080D95E8 gUnknown_080D9618[8][6];
extern const struct UNK_080D95E8 gUnknown_080D9798[2][6];
extern const struct UNK_080D95E8 gUnknown_080D97F8[2][6];
extern const struct UNK_080D95E8 gUnknown_080D9618[8 * 6];
extern const struct UNK_080D95E8 gUnknown_080D9798[2 * 6];
extern const struct UNK_080D95E8 gUnknown_080D97F8[2 * 6];
extern const struct UNK_080D95E8 gUnknown_080D9858[6];
extern void sub_806A568(struct UNK_0808B3FC_UNK240*, s32, u16, u16, u32, u16, u16, u32, u8, u8);
extern void sub_806B908(struct UNK_806B908*, u16);
#ifndef NON_MATCHING
ASM_FUNC("asm/non_matching/sub_8063DCC.inc", void sub_8063DCC(struct UNK_8063730* optionsScreen, u16 p2))
#else
// https://decomp.me/scratch/EzQR3
void sub_8063DCC(struct UNK_8063730* optionsScreen, u16 p2) {
s32 i;
u16 itemPos;
u16 otherPos;
u16 var4;
s16 temp0;
u32 bVar1;
struct UNK_806B908 local48;
struct UNK_0808B3FC_UNK240* option414;
struct UNK_0808B3FC_UNK240* option594;
u8 language = optionsScreen->unk35B;
struct UNK_0808B3FC_UNK240* options414 = optionsScreen->unk414;
struct UNK_0808B3FC_UNK240* options594 = optionsScreen->unk594;
@@ -437,7 +454,7 @@ void sub_8063DCC(struct UNK_8063730* optionsScreen, u16 p2) {
for (i = 0; i < 8; i++) {
if (optionsScreen->unk35C || i != 5) {
itemText = &gUnknown_080D9618[i][language];
itemText = &gUnknown_080D9618[i + language];
temp0 = 0x28;
if (optionsScreen->unk780 == i) {
@@ -485,7 +502,7 @@ void sub_8063DCC(struct UNK_8063730* optionsScreen, u16 p2) {
0
);
itemText = &gUnknown_080D9798[optionsScreen->unk359][language];
itemText = &gUnknown_080D9798[optionsScreen->unk359 + language];
temp0 = 0xA0;
if (optionsScreen->unk780 == 1) {
temp0 = 0x98;
@@ -504,7 +521,7 @@ void sub_8063DCC(struct UNK_8063730* optionsScreen, u16 p2) {
0
);
itemText = &gUnknown_080D97F8[optionsScreen->unk35A][language];
itemText = &gUnknown_080D97F8[optionsScreen->unk35A + language];
temp0 = 0xA0;
if (optionsScreen->unk780 == 2) {
temp0 = 0x98;
@@ -552,5 +569,139 @@ void sub_8063DCC(struct UNK_8063730* optionsScreen, u16 p2) {
otherPos = 0xFFCB;
}
bVar1 = 0;
for (i = 0; i < 6; i++) {
if (bVar1) {
var4 = 0x11;
} else {
var4 = optionsScreen->unk0.unk0[i];
}
if (var4 == 0xFFFF) {
var4 = 0x11;
bVar1 = 1;
}
sub_806B908(&local48, var4);
sub_806A568(
&options654[i],
0,
local48.unk0,
local48.unk4 & 0xFFFF,
0x3000,
otherPos,
0x26,
10,
local48.unk4 >> 0x10 & 0xFF,
0
);
options654[i].unk25 = optionsScreen->unk780 == 0 ? 7 : 8;
}
for (i = 0; i < 8; i++) {
if (optionsScreen->unk780 == i) {
optionsScreen->unk414[i].unk25 = 0;
} else {
optionsScreen->unk414[i].unk25 = 1;
}
if (i < 4) {
if (optionsScreen->unk780 == i) {
optionsScreen->unk594[i].unk25 = 0;
} else {
optionsScreen->unk594[i].unk25 = 1;
}
}
}
sub_806A568(0,0,0,0x3c4,0,0,0,0,0,0);
sub_806A568(0,0,0,0x3c4,0,0,0,0,1,0);
sub_806A568(0,0,0,0x3c3,0,0,0,0,0xc,0);
sub_806A568(0,0,0,0x3c3,0,0,0,0,0xd,0);
}
#endif
void sub_80649A4(void);
void sub_806A99C(void);
void sub_806A8EC(void);
void sub_806AA4C(void);
void sub_806ACF0(void);
void sub_806A814(void);
void sub_8064304(void);
void sub_80641B0() {
struct UNK_8063730* optionsScreen = TaskGetStructPtr(gCurTask, optionsScreen);
sub_80649A4();
if (gPressedKeys & A_BUTTON) {
m4aSongNumStart(SE_SELECT);
switch(optionsScreen->unk780) {
case 3:
sub_806A8EC();
return;
case 5:
sub_806A99C();
return;
case 6:
sub_806AA4C();
return;
case 7:
sub_806ACF0();
return;
default:
sub_806A814();
return;
}
}
if (gPressedKeys & B_BUTTON) {
m4aSongNumStart(SE_RETURN);
sub_806ACF0();
return;
}
if (gRepeatedKeys & DPAD_DOWN) {
m4aSongNumStart(SE_MENU_CURSOR_MOVE);
optionsScreen->unk781 = optionsScreen->unk780;
if (optionsScreen->unk780 > 6) {
optionsScreen->unk780 = 0;
} else {
optionsScreen->unk780++;
}
if (optionsScreen->unk35C == 0 && optionsScreen->unk780 == 5) {
optionsScreen->unk780++;
}
optionsScreen->unk783 = 0;
gCurTask->main = sub_8064304;
return;
}
if (gRepeatedKeys & DPAD_UP) {
m4aSongNumStart(SE_MENU_CURSOR_MOVE);
optionsScreen->unk781 = optionsScreen->unk780;
if (optionsScreen->unk780 < 1) {
optionsScreen->unk780 = 7;
} else {
optionsScreen->unk780--;
}
if (optionsScreen->unk35C == 0 && optionsScreen->unk780 == 5) {
optionsScreen->unk780--;
}
optionsScreen->unk783 = 0;
gCurTask->main = sub_8064304;
}
}