From fccc22f6b80ed8e7fc39e7b0f3cd782033b870f9 Mon Sep 17 00:00:00 2001 From: Oliver Bell Date: Tue, 17 May 2022 18:09:36 +0100 Subject: [PATCH] non matching sub_8063DCC, decompile sub_80641B0 --- asm/non_matching/.gitkeep | 0 asm/non_matching/sub_8063DCC.inc | 498 +++++++++++++++++++++++ asm/profile.s | 665 ------------------------------- src/profile.c | 167 +++++++- 4 files changed, 657 insertions(+), 673 deletions(-) create mode 100644 asm/non_matching/.gitkeep create mode 100644 asm/non_matching/sub_8063DCC.inc diff --git a/asm/non_matching/.gitkeep b/asm/non_matching/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/asm/non_matching/sub_8063DCC.inc b/asm/non_matching/sub_8063DCC.inc new file mode 100644 index 000000000..093b46f92 --- /dev/null +++ b/asm/non_matching/sub_8063DCC.inc @@ -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 diff --git a/asm/profile.s b/asm/profile.s index e399b0542..530c5f229 100644 --- a/asm/profile.s +++ b/asm/profile.s @@ -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} diff --git a/src/profile.c b/src/profile.c index 34551639a..ee3166cd4 100644 --- a/src/profile.c +++ b/src/profile.c @@ -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; + } }