through sub_81165E8

This commit is contained in:
PikalaxALT
2020-01-20 10:00:19 -05:00
parent 8a5386899a
commit bc0fbb5d6e
2 changed files with 137 additions and 368 deletions
-366
View File
@@ -5,372 +5,6 @@
.text
thumb_func_start sub_8116444
sub_8116444: @ 8116444
push {r4-r6,lr}
adds r5, r0, 0
adds r6, r1, 0
adds r4, r2, 0
ldr r0, [r5]
bl sub_8116524
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _08116460
cmp r0, 0x2
beq _081164AC
b _081164C0
_08116460:
movs r0, 0x2
bl PlaySE
ldrb r0, [r5, 0x12]
bl RedrawListMenu
ldr r4, _081164A0 @ =gStringVar2
ldrb r0, [r5, 0x13]
lsls r0, 5
ldr r1, [r5]
adds r1, r0
adds r1, 0x10
adds r0, r4, 0
bl StringCopy7
ldr r1, [r5]
ldrb r0, [r5, 0x13]
lsls r0, 5
adds r1, r0
ldrb r1, [r1]
lsls r1, 28
lsrs r1, 28
adds r0, r4, 0
bl ConvertInternationalString
ldr r0, _081164A4 @ =gStringVar4
ldr r1, _081164A8 @ =gUnknown_203B058
ldrb r1, [r1]
bl sub_8116244
strb r6, [r5, 0xC]
b _081164C0
.align 2, 0
_081164A0: .4byte gStringVar2
_081164A4: .4byte gStringVar4
_081164A8: .4byte gUnknown_203B058
_081164AC:
movs r0, 0
movs r1, 0
bl sub_80FB9E4
ldrb r0, [r5, 0x12]
bl RedrawListMenu
strb r4, [r5, 0xC]
movs r0, 0x1
b _081164C2
_081164C0:
movs r0, 0
_081164C2:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_8116444
thumb_func_start sub_81164C8
sub_81164C8: @ 81164C8
push {r4-r6,lr}
sub sp, 0x8
adds r4, r1, 0
lsls r0, 24
lsrs r5, r0, 24
lsls r2, 24
lsrs r6, r2, 24
ldr r0, _081164F4 @ =gUnknown_203B05C
ldr r3, [r0]
movs r2, 0
ldr r1, [r3]
lsls r0, r4, 5
adds r1, r0
ldrb r0, [r1, 0x1A]
lsls r0, 30
lsrs r0, 30
cmp r0, 0x1
beq _081164F8
cmp r0, 0x2
beq _08116502
b _08116504
.align 2, 0
_081164F4: .4byte gUnknown_203B05C
_081164F8:
ldrb r0, [r1, 0x1B]
cmp r0, 0
beq _08116504
movs r2, 0x2
b _08116504
_08116502:
movs r2, 0x1
_08116504:
lsls r0, r4, 5
ldr r3, [r3]
adds r3, r0
str r2, [sp]
lsls r0, r4, 24
lsrs r0, 24
str r0, [sp, 0x4]
adds r0, r5, 0
movs r1, 0
adds r2, r6, 0
bl sub_811A910
add sp, 0x8
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_81164C8
thumb_func_start sub_8116524
sub_8116524: @ 8116524
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x4
ldr r0, _0811657C @ =gUnknown_203B05C
ldr r5, [r0]
movs r0, 0
mov r8, r0
movs r3, 0x1
_08116538:
ldr r0, [r5]
lsls r6, r3, 5
adds r2, r0, r6
ldrb r0, [r2, 0x1A]
lsls r0, 30
lsrs r0, 30
mov r9, r0
cmp r0, 0x1
bne _08116598
ldr r1, [r5, 0x4]
adds r0, r2, 0
str r3, [sp]
bl sub_811A748
adds r4, r0, 0
ldr r3, [sp]
cmp r4, 0xFF
beq _08116580
ldr r1, [r5]
ldr r0, [r5, 0x4]
lsls r2, r4, 3
subs r2, r4
lsls r2, 2
adds r1, r6
adds r0, r2
ldm r0!, {r2,r4,r7}
stm r1!, {r2,r4,r7}
ldm r0!, {r2,r4,r7}
stm r1!, {r2,r4,r7}
ldr r0, [r5]
adds r0, r6
mov r1, r9
strh r1, [r0, 0x18]
b _08116598
.align 2, 0
_0811657C: .4byte gUnknown_203B05C
_08116580:
ldr r2, [r5]
adds r2, r6
ldrb r1, [r2, 0x1A]
movs r4, 0x4
negs r4, r4
adds r0, r4, 0
ands r1, r0
movs r0, 0x2
orrs r1, r0
strb r1, [r2, 0x1A]
movs r7, 0x2
mov r8, r7
_08116598:
adds r0, r3, 0x1
lsls r0, 24
lsrs r3, r0, 24
cmp r3, 0x4
bls _08116538
movs r6, 0
movs r4, 0x3
_081165A6:
ldr r0, [r5]
ldr r1, [r5, 0x4]
adds r1, r6
movs r2, 0x5
bl sub_811A798
adds r6, 0x1C
subs r4, 0x1
ldr r0, [r5]
cmp r4, 0
bge _081165A6
mov r1, r8
cmp r1, 0x2
beq _081165D8
adds r1, r0, 0
movs r4, 0x4
_081165C6:
ldrb r0, [r1, 0x1B]
cmp r0, 0
beq _081165D0
movs r2, 0x1
mov r8, r2
_081165D0:
adds r1, 0x20
subs r4, 0x1
cmp r4, 0
bge _081165C6
_081165D8:
mov r0, r8
add sp, 0x4
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8116524
thumb_func_start sub_81165E8
sub_81165E8: @ 81165E8
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
ldr r0, _081166BC @ =gUnknown_203B05C
ldr r4, [r0]
movs r3, 0
_081165F8:
ldr r0, [r4, 0x8]
lsls r2, r3, 5
ldr r1, [r4]
adds r0, r2
adds r1, r2
ldm r1!, {r2,r5,r6}
stm r0!, {r2,r5,r6}
ldm r1!, {r2,r5,r7}
stm r0!, {r2,r5,r7}
ldm r1!, {r6,r7}
stm r0!, {r6,r7}
adds r3, 0x1
ldr r0, [r4, 0x8]
ldr r1, [r4]
cmp r3, 0x4
ble _081165F8
movs r5, 0
mov r8, r1
mov r9, r0
movs r3, 0x4
_08116620:
mov r1, r9
ldrb r0, [r1, 0x1A]
lsls r0, 30
lsrs r0, 30
cmp r0, 0x1
bne _08116642
lsls r0, r5, 5
add r0, r8
ldm r1!, {r2,r6,r7}
stm r0!, {r2,r6,r7}
ldm r1!, {r2,r6,r7}
stm r0!, {r2,r6,r7}
ldm r1!, {r2,r6}
stm r0!, {r2,r6}
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
_08116642:
movs r7, 0x20
add r9, r7
subs r3, 0x1
cmp r3, 0
bge _08116620
mov r10, r5
cmp r5, 0x4
bhi _081166A4
ldr r0, _081166C0 @ =gUnknown_8457034
mov r9, r0
movs r1, 0
mov r12, r1
movs r2, 0x4
negs r2, r2
mov r8, r2
_08116660:
ldr r1, [r4]
lsls r3, r5, 5
adds r1, r3
mov r0, r9
ldm r0!, {r2,r6,r7}
stm r1!, {r2,r6,r7}
ldm r0!, {r2,r6,r7}
stm r1!, {r2,r6,r7}
ldr r0, [r4]
adds r0, r3
movs r1, 0
strh r1, [r0, 0x18]
ldr r1, [r4]
adds r1, r3
ldrb r2, [r1, 0x1A]
mov r0, r8
ands r0, r2
strb r0, [r1, 0x1A]
ldr r1, [r4]
adds r1, r3
ldrb r2, [r1, 0x1A]
movs r0, 0x5
negs r0, r0
ands r0, r2
strb r0, [r1, 0x1A]
ldr r0, [r4]
adds r0, r3
mov r6, r12
strb r6, [r0, 0x1B]
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0x4
bls _08116660
_081166A4:
movs r3, 0
ldr r1, [r4]
ldrb r0, [r1, 0x1A]
lsls r0, 30
lsrs r0, 30
cmp r0, 0x1
bne _081166C4
ldrb r0, [r1, 0x1B]
cmp r0, 0x40
bne _081166C4
mov r10, r3
b _081166E4
.align 2, 0
_081166BC: .4byte gUnknown_203B05C
_081166C0: .4byte gUnknown_8457034
_081166C4:
adds r3, 0x1
cmp r3, 0x4
bgt _081166E4
lsls r0, r3, 5
adds r2, r1, r0
ldrb r0, [r2, 0x1A]
lsls r0, 30
lsrs r0, 30
cmp r0, 0x1
bne _081166C4
ldrb r0, [r2, 0x1B]
cmp r0, 0x40
bne _081166C4
lsls r0, r3, 24
lsrs r0, 24
mov r10, r0
_081166E4:
mov r0, r10
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_81165E8
thumb_func_start TryJoinLinkGroup
TryJoinLinkGroup: @ 81166F4
push {lr}
+137 -2
View File
@@ -8,6 +8,12 @@
#include "script.h"
#include "task.h"
#include "union_room.h"
#include "constants/songs.h"
#define sub_8018404(dest, arg1) ({ \
StringCopy7(dest, (arg1).unk.playerName); \
ConvertInternationalString(dest, (arg1).unk.field_0.unk_00.unk_00_0); \
})
EWRAM_DATA union UnkUnion_Main gUnknown_203B05C = {};
EWRAM_DATA u8 gUnknown_203B058 = 0;
@@ -18,6 +24,7 @@ IWRAM_DATA struct UnkStruct_Leader *gUnknown_3002024;
void sub_8115A68(u8 taskId);
void sub_81161E4(struct UnkStruct_Leader * leader);
bool8 sub_8116444(struct UnkStruct_Leader * leader, u32 a1, u32 a2);
u8 sub_8116524(struct UnkStruct_Main0 * a0);
u8 sub_81165E8(struct UnkStruct_Main0 * a0);
void sub_8117990(void);
u16 sub_8118658(const u8 *data);
@@ -27,6 +34,9 @@ s8 sub_811A14C(u8 *dest, bool32 arg1);
void sub_811A444(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx);
void sub_811A5E4(struct UnkStruct_x20 *arg0, u8 count);
void sub_811A650(struct UnkStruct_Main4 *arg0, u8 count);
u32 sub_811A748(struct UnkStruct_x20 *arg0, struct UnkStruct_x1C *arg1);
u8 sub_811A798(struct UnkStruct_x20 *arg0, struct UnkStruct_x1C *arg1, u8 arg2);
void sub_811A910(u8 arg0, u8 arg1, u8 arg2, struct UnkStruct_x20 *arg3, u8 arg4, u8 id);
extern const u8 *const gUnknown_8456C74[];
extern const struct WindowTemplate gUnknown_8456CD0;
@@ -34,6 +44,7 @@ extern const u32 gUnknown_8456CD8[];
extern const struct WindowTemplate gUnknown_8456CFC;
extern const struct WindowTemplate gUnknown_8456D04;
extern const struct ListMenuTemplate gUnknown_8456D34;
extern const struct UnkStruct_Shared gUnknown_8457034;
extern const u8 gUnknown_84571B4[];
extern const u8 gUnknown_8457234[];
extern const u8 gUnknown_8457264[];
@@ -278,8 +289,7 @@ void sub_8115A68(u8 taskId)
}
else
{
StringCopy7(gStringVar1, data->field_0->arr[data->field_13 - 1].unk.playerName);
ConvertInternationalString(gStringVar1, data->field_0->arr[data->field_13 - 1].unk.field_0.unk_00.unk_00_0);
sub_8018404(gStringVar1, data->field_0->arr[data->field_13 - 1]);
StringExpandPlaceholders(gStringVar4, gUnknown_8457554);
data->state = 13;
}
@@ -509,3 +519,128 @@ void sub_81163B0(u8 *dst, u8 caseId)
break;
}
}
bool8 sub_8116444(struct UnkStruct_Leader *data, u32 arg1, u32 arg2)
{
switch (sub_8116524(data->field_0))
{
case 1:
PlaySE(SE_PC_LOGIN);
RedrawListMenu(data->listTaskId);
sub_8018404(gStringVar2, data->field_0->arr[data->field_13]);
sub_8116244(gStringVar4, gUnknown_203B058);
data->state = arg1;
break;
case 2:
sub_80FB9E4(0, 0);
RedrawListMenu(data->listTaskId);
data->state = arg2;
return TRUE;
}
return FALSE;
}
void sub_81164C8(u8 arg0, s32 id, u8 arg2)
{
struct UnkStruct_Leader *data = gUnknown_203B05C.leader;
u8 var = 0;
switch (data->field_0->arr[id].field_1A_0)
{
case 1:
if (data->field_0->arr[id].field_1B != 0)
var = 2;
break;
case 2:
var = 1;
break;
}
sub_811A910(arg0, 0, arg2, &data->field_0->arr[id], var, id);
}
u8 sub_8116524(struct UnkStruct_Main0 *arg0)
{
struct UnkStruct_Leader *data = gUnknown_203B05C.leader;
u8 ret = 0;
u8 i;
s32 id;
for (i = 1; i < 5; i++)
{
u16 var = data->field_0->arr[i].field_1A_0;
if (var == 1)
{
id = sub_811A748(&data->field_0->arr[i], data->field_4->arr);
if (id != 0xFF)
{
data->field_0->arr[i].unk = data->field_4->arr[id].unk0;
data->field_0->arr[i].field_18 = var;
}
else
{
data->field_0->arr[i].field_1A_0 = 2;
ret = 2;
}
}
}
for (id = 0; id < 4; id++)
sub_811A798(data->field_0->arr, &data->field_4->arr[id], 5);
if (ret != 2)
{
for (id = 0; id < 5; id++)
{
if (data->field_0->arr[id].field_1B != 0)
ret = 1;
}
}
return ret;
}
u8 sub_81165E8(struct UnkStruct_Main0 *arg0)
{
struct UnkStruct_Leader *data = gUnknown_203B05C.leader;
u8 copiedCount;
s32 i;
u8 ret;
for (i = 0; i < 5; i++)
data->field_8->arr[i] = data->field_0->arr[i];
copiedCount = 0;
for (i = 0; i < 5; i++)
{
if (data->field_8->arr[i].field_1A_0 == 1)
{
data->field_0->arr[copiedCount] = data->field_8->arr[i];
copiedCount++;
}
}
ret = copiedCount;
for (; copiedCount < 5; copiedCount++)
{
data->field_0->arr[copiedCount].unk = gUnknown_8457034;
data->field_0->arr[copiedCount].field_18 = 0;
data->field_0->arr[copiedCount].field_1A_0 = 0;
data->field_0->arr[copiedCount].field_1A_1 = 0;
data->field_0->arr[copiedCount].field_1B = 0;
}
for (i = 0; i < 5; i++)
{
if (data->field_0->arr[i].field_1A_0 != 1)
continue;
if (data->field_0->arr[i].field_1B != 0x40)
continue;
ret = i;
break;
}
return ret;
}