Match sub_8006AC4 through sub_8006C44

This commit is contained in:
Kermalis
2023-08-05 22:27:03 -04:00
parent e31da7df5c
commit d6baf52f33
2 changed files with 151 additions and 502 deletions

View File

@@ -5,501 +5,6 @@
.text
thumb_func_start sub_8006AC4
sub_8006AC4:
push {r4,r5,lr}
adds r4, r1, 0
ldr r5, [sp, 0xC]
cmp r2, 0x1C
bgt _08006B64
cmp r2, 0
blt _08006B64
ldr r0, [r0, 0xC]
cmp r0, 0x7
bhi _08006B64
lsls r0, 2
ldr r1, _08006AE4
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08006AE4: .4byte _08006AE8
.align 2, 0
_08006AE8:
.4byte _08006B2C
.4byte _08006B2C
.4byte _08006B08
.4byte _08006B2C
.4byte _08006B2C
.4byte _08006B54
.4byte _08006B2C
.4byte _08006B54
_08006B08:
lsls r1, r4, 1
lsls r0, r2, 6
adds r0, r5
adds r1, r0
ldr r2, _08006B24
adds r0, r2, 0
orrs r3, r0
strh r3, [r1]
movs r0, 0x80
lsls r0, 4
adds r1, r0
ldr r2, _08006B28
b _08006B44
.align 2, 0
_08006B24: .4byte 0xfffff000
_08006B28: .4byte 0x0000f278
_08006B2C:
lsls r1, r4, 1
lsls r0, r2, 6
adds r0, r5
adds r1, r0
ldr r2, _08006B4C
adds r0, r2, 0
orrs r3, r0
strh r3, [r1]
movs r0, 0x80
lsls r0, 4
adds r1, r0
ldr r2, _08006B50
_08006B44:
adds r0, r2, 0
strh r0, [r1]
b _08006B64
.align 2, 0
_08006B4C: .4byte 0xfffff000
_08006B50: .4byte 0x0000f2db
_08006B54:
lsls r0, r4, 1
lsls r1, r2, 6
adds r1, r5
adds r0, r1
ldr r2, _08006B6C
adds r1, r2, 0
orrs r3, r1
strh r3, [r0]
_08006B64:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08006B6C: .4byte 0xfffff000
thumb_func_end sub_8006AC4
thumb_func_start sub_8006B70
sub_8006B70:
push {r4-r6,lr}
adds r6, r0, 0
adds r4, r1, 0
adds r5, r3, 0
ldr r3, [sp, 0x10]
cmp r2, 0x1C
bgt _08006C3A
cmp r2, 0
blt _08006C3A
ldr r0, [r6, 0xC]
cmp r0, 0x7
bhi _08006C3A
lsls r0, 2
ldr r1, _08006B94
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08006B94: .4byte _08006B98
.align 2, 0
_08006B98:
.4byte _08006BB8
.4byte _08006C3A
.4byte _08006C3A
.4byte _08006BE8
.4byte _08006BF8
.4byte _08006C1C
.4byte _08006BE8
.4byte _08006C2C
_08006BB8:
cmp r5, 0
bne _08006BCC
lsls r1, r4, 1
lsls r0, r2, 6
adds r0, r3
adds r1, r0
ldr r2, _08006BC8
b _08006C02
.align 2, 0
_08006BC8: .4byte 0x0000f697
_08006BCC:
movs r1, 0x6
ldrsh r0, [r6, r1]
subs r0, 0x1
cmp r5, r0
bne _08006BE8
lsls r1, r4, 1
lsls r0, r2, 6
adds r0, r3
adds r1, r0
ldr r2, _08006BE4
b _08006C02
.align 2, 0
_08006BE4: .4byte 0x0000fe97
_08006BE8:
lsls r1, r4, 1
lsls r0, r2, 6
adds r0, r3
adds r1, r0
ldr r2, _08006BF4
b _08006C02
.align 2, 0
_08006BF4: .4byte 0x0000f6da
_08006BF8:
lsls r1, r4, 1
lsls r0, r2, 6
adds r0, r3
adds r1, r0
ldr r2, _08006C14
_08006C02:
adds r0, r2, 0
strh r0, [r1]
movs r0, 0x80
lsls r0, 4
adds r1, r0
ldr r2, _08006C18
adds r0, r2, 0
strh r0, [r1]
b _08006C3A
.align 2, 0
_08006C14: .4byte 0x0000f6ea
_08006C18: .4byte 0x0000f2db
_08006C1C:
lsls r0, r4, 1
lsls r1, r2, 6
adds r1, r3
adds r0, r1
ldr r2, _08006C28
b _08006C36
.align 2, 0
_08006C28: .4byte 0x0000f6de
_08006C2C:
lsls r0, r4, 1
lsls r1, r2, 6
adds r1, r3
adds r0, r1
ldr r2, _08006C40
_08006C36:
adds r1, r2, 0
strh r1, [r0]
_08006C3A:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08006C40: .4byte 0x0000f6b6
thumb_func_end sub_8006B70
thumb_func_start sub_8006C44
sub_8006C44:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
adds r6, r0, 0
adds r4, r1, 0
str r2, [sp]
lsls r3, 24
lsrs r3, 24
mov r9, r3
movs r1, 0
ldrsh r0, [r6, r1]
subs r3, r0, 0x1
cmp r4, 0x1C
ble _08006C68
b _08006E76
_08006C68:
cmp r4, 0
bge _08006C6E
b _08006E76
_08006C6E:
ldr r0, [r6, 0xC]
cmp r0, 0x7
bls _08006C76
b _08006E76
_08006C76:
lsls r0, 2
ldr r1, _08006C80
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08006C80: .4byte _08006C84
.align 2, 0
_08006C84:
.4byte _08006E76
.4byte _08006E76
.4byte _08006E76
.4byte _08006CA4
.4byte _08006D64
.4byte _08006DE8
.4byte _08006CA4
.4byte _08006E34
_08006CA4:
lsls r1, r3, 1
lsls r2, r4, 6
ldr r4, [sp]
adds r0, r2, r4
adds r1, r0
ldr r7, _08006CC8
adds r0, r7, 0
strh r0, [r1]
adds r5, r2, 0
mov r0, r9
cmp r0, 0
beq _08006CD0
movs r2, 0x80
lsls r2, 4
adds r1, r2
ldr r4, _08006CCC
adds r0, r4, 0
b _08006CDA
.align 2, 0
_08006CC8: .4byte 0x0000fad8
_08006CCC: .4byte 0x0000fa93
_08006CD0:
movs r7, 0x80
lsls r7, 4
adds r1, r7
ldr r2, _08006D40
adds r0, r2, 0
_08006CDA:
strh r0, [r1]
adds r3, 0x1
movs r4, 0
movs r7, 0x4
ldrsh r0, [r6, r7]
cmp r4, r0
bge _08006D1E
ldr r0, _08006D44
mov r8, r0
lsls r0, r3, 1
ldr r2, [sp]
movs r7, 0x80
lsls r7, 4
adds r1, r2, r7
adds r1, r5, r1
adds r2, r0, r1
ldr r7, [sp]
adds r1, r5, r7
adds r1, r0, r1
ldr r0, _08006D40
mov r12, r0
_08006D04:
mov r7, r8
strh r7, [r1]
mov r0, r12
strh r0, [r2]
adds r2, 0x2
adds r1, 0x2
adds r3, 0x1
adds r4, 0x1
movs r0, 0x4
ldrsh r7, [r6, r0]
mov r10, r7
cmp r4, r10
blt _08006D04
_08006D1E:
lsls r0, r3, 1
ldr r2, [sp]
adds r1, r5, r2
adds r1, r0, r1
ldr r4, _08006D48
adds r0, r4, 0
strh r0, [r1]
mov r7, r9
cmp r7, 0
beq _08006D50
movs r0, 0x80
lsls r0, 4
adds r1, r0
ldr r2, _08006D4C
adds r0, r2, 0
strh r0, [r1]
b _08006E76
.align 2, 0
_08006D40: .4byte 0x0000f2db
_08006D44: .4byte 0x0000fad9
_08006D48: .4byte 0x0000fed8
_08006D4C: .4byte 0x0000fe93
_08006D50:
movs r4, 0x80
lsls r4, 4
adds r1, r4
ldr r7, _08006D60
adds r0, r7, 0
strh r0, [r1]
b _08006E76
.align 2, 0
_08006D60: .4byte 0x0000f2db
_08006D64:
lsls r1, r3, 1
lsls r2, r4, 6
ldr r0, [sp]
adds r0, r2
mov r12, r0
add r1, r12
ldr r4, _08006DD8
adds r0, r4, 0
strh r0, [r1]
movs r7, 0x80
lsls r7, 4
mov r8, r7
add r1, r8
ldr r0, _08006DDC
mov r9, r0
strh r0, [r1]
adds r3, 0x1
movs r4, 0
movs r1, 0x4
ldrsh r0, [r6, r1]
adds r5, r2, 0
cmp r4, r0
bge _08006DBE
ldr r2, _08006DE0
mov r10, r2
lsls r1, r3, 1
ldr r0, [sp]
add r0, r8
adds r0, r5, r0
adds r2, r1, r0
add r1, r12
mov r12, r9
_08006DA4:
mov r7, r10
strh r7, [r1]
mov r0, r12
strh r0, [r2]
adds r2, 0x2
adds r1, 0x2
adds r3, 0x1
adds r4, 0x1
movs r0, 0x4
ldrsh r7, [r6, r0]
mov r8, r7
cmp r4, r8
blt _08006DA4
_08006DBE:
lsls r0, r3, 1
ldr r2, [sp]
adds r1, r5, r2
adds r0, r1
ldr r4, _08006DE4
adds r1, r4, 0
strh r1, [r0]
movs r7, 0x80
lsls r7, 4
adds r0, r7
ldr r2, _08006DDC
adds r1, r2, 0
b _08006E74
.align 2, 0
_08006DD8: .4byte 0x0000fae8
_08006DDC: .4byte 0x0000f2db
_08006DE0: .4byte 0x0000fae9
_08006DE4: .4byte 0x0000fee8
_08006DE8:
lsls r0, r3, 1
lsls r2, r4, 6
ldr r4, [sp]
adds r4, r2
mov r12, r4
add r0, r12
ldr r7, _08006E28
adds r1, r7, 0
strh r1, [r0]
adds r3, 0x1
movs r1, 0x4
ldrsh r0, [r6, r1]
adds r5, r2, 0
cmp r0, 0
ble _08006E1C
ldr r2, _08006E2C
adds r1, r2, 0
adds r4, r0, 0
lsls r0, r3, 1
add r0, r12
_08006E10:
strh r1, [r0]
adds r0, 0x2
adds r3, 0x1
subs r4, 0x1
cmp r4, 0
bne _08006E10
_08006E1C:
lsls r0, r3, 1
ldr r4, [sp]
adds r1, r5, r4
adds r0, r1
ldr r7, _08006E30
b _08006E72
.align 2, 0
_08006E28: .4byte 0x0000fadc
_08006E2C: .4byte 0x0000fadd
_08006E30: .4byte 0x0000fedc
_08006E34:
lsls r0, r3, 1
lsls r2, r4, 6
ldr r1, [sp]
adds r1, r2
mov r12, r1
add r0, r12
ldr r4, _08006E88
adds r1, r4, 0
strh r1, [r0]
adds r3, 0x1
movs r7, 0x4
ldrsh r0, [r6, r7]
adds r5, r2, 0
cmp r0, 0
ble _08006E68
ldr r2, _08006E8C
adds r1, r2, 0
adds r4, r0, 0
lsls r0, r3, 1
add r0, r12
_08006E5C:
strh r1, [r0]
adds r0, 0x2
adds r3, 0x1
subs r4, 0x1
cmp r4, 0
bne _08006E5C
_08006E68:
lsls r0, r3, 1
ldr r4, [sp]
adds r1, r5, r4
adds r0, r1
ldr r7, _08006E90
_08006E72:
adds r1, r7, 0
_08006E74:
strh r1, [r0]
_08006E76:
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08006E88: .4byte 0x0000fa93
_08006E8C: .4byte 0x0000fa97
_08006E90: .4byte 0x0000fe93
thumb_func_end sub_8006C44
thumb_func_start sub_8006E94
sub_8006E94:
push {r4-r7,lr}

View File

@@ -6,14 +6,14 @@
extern const u32 gUnknown_80B8814[];
// text.s
extern void sub_8006AC4(struct UnkTextStruct1 *, s32, s32, u32, u16 *);
extern void sub_8006B70(struct UnkTextStruct1 *, s32, s32, s32, u16 *);
extern void sub_8006C44(struct UnkTextStruct1 *, s32, u16 *, u8);
extern void sub_8006E94(struct UnkTextStruct1 *, s32, u32, const u8 *, u16 *);
extern void sub_8008C6C(struct UnkTextStruct1 *, u32);
void sub_800677C(struct UnkTextStruct1 *, s32, u16 *, u8);
void sub_80069CC(struct UnkTextStruct1 *, s32, s32, s32, u16 *);
void sub_8006AC4(struct UnkTextStruct1 *, s32, s32, s32, u16 *);
void sub_8006B70(struct UnkTextStruct1 *, s32, s32, s32, u16 *);
void sub_8006C44(struct UnkTextStruct1 *, s32, u16 *, u8);
void nullsub_152(void)
{
@@ -135,13 +135,13 @@ void sub_800677C(struct UnkTextStruct1 *a0, s32 a1, u16 *a2, u8 a3)
s32 i;
iVar5 = a0->unk0 - 1;
if (a1 > 28)
return;
// Cannot combine these ifs for matching
if (a1 < 0)
return;
switch (a0->unkC) {
case 0:
case 1:
@@ -204,13 +204,13 @@ void sub_800677C(struct UnkTextStruct1 *a0, s32 a1, u16 *a2, u8 a3)
}
void sub_80069CC(struct UnkTextStruct1 *a0, s32 a1, s32 a2, s32 a3, u16 *a4)
{
{
if (a2 > 28)
return;
// Cannot combine these ifs for matching
if (a2 < 0)
return;
switch (a0->unkC) {
case 1:
case 2:
@@ -243,4 +243,148 @@ void sub_80069CC(struct UnkTextStruct1 *a0, s32 a1, s32 a2, s32 a3, u16 *a4)
(a4 + a2 * 0x20)[a1] = 0xF2B6;
break;
}
}
void sub_8006AC4(struct UnkTextStruct1 *a0, s32 a1, s32 a2, s32 a3, u16 *a4)
{
if (a2 > 28)
return;
// Cannot combine these ifs for matching
if (a2 < 0)
return;
switch (a0->unkC) {
case 2:
(a4 + a2 * 0x20)[a1] = a3 | 0xF000;
(a4 + a2 * 0x20)[a1 + 0x400] = 0xF278;
break;
case 0:
case 1:
case 3:
case 4:
case 6:
(a4 + a2 * 0x20)[a1] = a3 | 0xF000;
(a4 + a2 * 0x20)[a1 + 0x400] = 0xF2DB;
break;
case 5:
case 7:
(a4 + a2 * 0x20)[a1] = a3 | 0xF000;
break;
}
}
void sub_8006B70(struct UnkTextStruct1 *a0, s32 a1, s32 a2, s32 a3, u16 *a4)
{
if (a2 > 28)
return;
// Cannot combine these ifs for matching
if (a2 < 0)
return;
switch (a0->unkC) {
case 1:
case 2:
break;
case 0:
if (a3 == 0) {
(a4 + a2 * 0x20)[a1] = 0xF697;
(a4 + a2 * 0x20)[a1 + 0x400] = 0xF2DB;
break;
}
if (a3 == a0->unk6 - 1) {
(a4 + a2 * 0x20)[a1] = 0xFE97;
(a4 + a2 * 0x20)[a1 + 0x400] = 0xF2DB;
break;
}
// Fallthrough
case 3:
case 6:
(a4 + a2 * 0x20)[a1] = 0xF6DA;
(a4 + a2 * 0x20)[a1 + 0x400] = 0xF2DB;
break;
case 4:
(a4 + a2 * 0x20)[a1] = 0xF6EA;
(a4 + a2 * 0x20)[a1 + 0x400] = 0xF2DB;
break;
case 5:
(a4 + a2 * 0x20)[a1] = 0xF6DE;
break;
case 7:
(a4 + a2 * 0x20)[a1] = 0xF6B6;
break;
}
}
void sub_8006C44(struct UnkTextStruct1 *a0, s32 a1, u16 *a2, u8 a3)
{
s32 iVar5;
s32 i;
iVar5 = a0->unk0 - 1;
if (a1 > 28)
return;
// Cannot combine these ifs for matching
if (a1 < 0)
return;
switch (a0->unkC) {
case 0:
case 1:
case 2:
break;
case 3:
case 6:
(a2 + a1 * 0x20)[iVar5] = 0xFAD8;
if (a3 != 0)
(a2 + a1 * 0x20)[iVar5 + 0x400] = 0xFA93;
else
(a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB;
iVar5++;
for (i = 0; i < a0->unk4; i++) {
(a2 + a1 * 0x20)[iVar5] = 0xFAD9;
(a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB;
iVar5++;
}
(a2 + a1 * 0x20)[iVar5] = 0xFED8;
if (a3 != 0)
(a2 + a1 * 0x20)[iVar5 + 0x400] = 0xFE93;
else
(a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB;
break;
case 4:
(a2 + a1 * 0x20)[iVar5] = 0xFAE8;
(a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB;
iVar5++;
for (i = 0; i < a0->unk4; i++) {
(a2 + a1 * 0x20)[iVar5] = 0xFAE9;
(a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB;
iVar5++;
}
(a2 + a1 * 0x20)[iVar5] = 0xFEE8;
(a2 + a1 * 0x20)[iVar5 + 0x400] = 0xF2DB;
break;
case 5:
(a2 + a1 * 0x20)[iVar5] = 0xFADC;
iVar5++;
for (i = 0; i < a0->unk4; i++) {
(a2 + a1 * 0x20)[iVar5] = 0xFADD;
iVar5++;
}
(a2 + a1 * 0x20)[iVar5] = 0xFEDC;
break;
case 7:
(a2 + a1 * 0x20)[iVar5] = 0xFA93;
iVar5++;
for (i = 0; i < a0->unk4; i++) {
(a2 + a1 * 0x20)[iVar5] = 0xFA97;
iVar5++;
}
(a2 + a1 * 0x20)[iVar5] = 0xFE93;
break;
}
}