through sub_8010528

This commit is contained in:
PikalaxALT 2018-01-20 14:59:34 -05:00
parent c5096c81ad
commit aa6ffc5ba1
3 changed files with 135 additions and 336 deletions

View File

@ -5,338 +5,6 @@
.text
thumb_func_start sub_80102B8
sub_80102B8: @ 80102B8
push {r4,r5,lr}
bl GetMultiplayerId
lsls r0, 24
cmp r0, 0
beq _080102E6
ldr r1, =gUnknown_03005000
ldr r2, =0x000009e6
adds r0, r1, r2
ldrb r0, [r0]
adds r4, r0, 0
cmp r4, 0
bne _080102E6
adds r5, r1, 0
adds r5, 0xFE
ldrh r0, [r5]
cmp r0, 0x3C
bls _080102E6
movs r0, 0xCC
lsls r0, 7
bl sub_800FD14
strh r4, [r5]
_080102E6:
bl GetLinkPlayerCount
lsls r0, 24
lsrs r2, r0, 24
movs r1, 0
cmp r1, r2
bcs _08010312
ldr r0, =gUnknown_03005000
adds r3, r0, 0
adds r3, 0xE9
ldrb r0, [r3]
cmp r0, 0
beq _08010312
_08010300:
adds r0, r1, 0x1
lsls r0, 24
lsrs r1, r0, 24
cmp r1, r2
bcs _08010312
adds r0, r1, r3
ldrb r0, [r0]
cmp r0, 0
bne _08010300
_08010312:
ldr r4, =gUnknown_03005000
cmp r1, r2
bne _0801033E
movs r1, 0
adds r3, r4, 0
adds r3, 0xE9
movs r2, 0
_08010320:
adds r0, r1, r3
strb r2, [r0]
adds r0, r1, 0x1
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x4
bls _08010320
movs r1, 0x80
lsls r1, 1
adds r0, r4, r1
ldrh r1, [r0]
adds r1, 0x1
movs r2, 0
strh r1, [r0]
str r2, [r4]
_0801033E:
adds r1, r4, 0
adds r1, 0xFE
ldrh r0, [r1]
adds r0, 0x1
strh r0, [r1]
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_80102B8
thumb_func_start sub_8010358
sub_8010358: @ 8010358
push {r4,lr}
ldr r4, =gUnknown_03005000
ldr r1, =0x000009e6
adds r0, r4, r1
ldrb r0, [r0]
cmp r0, 0
bne _0801037A
ldr r0, =gSendCmd
ldrh r0, [r0]
cmp r0, 0
bne _0801037A
movs r0, 0xCC
lsls r0, 7
bl sub_800FD14
ldr r0, =sub_80102B8
str r0, [r4]
_0801037A:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_8010358
thumb_func_start sub_8010390
sub_8010390: @ 8010390
push {r4,lr}
bl GetMultiplayerId
lsls r0, 24
cmp r0, 0
beq _080103CC
ldr r4, =gUnknown_03005000
ldr r1, =0x000009e6
adds r0, r4, r1
ldrb r0, [r0]
cmp r0, 0
bne _0801041E
ldr r0, =gSendCmd
ldrh r0, [r0]
cmp r0, 0
bne _0801041E
movs r0, 0xCC
lsls r0, 7
bl sub_800FD14
ldr r0, =sub_80102B8
b _0801041C
.pool
_080103CC:
bl GetLinkPlayerCount
lsls r0, 24
lsrs r2, r0, 24
movs r1, 0x1
cmp r1, r2
bcs _080103FA
ldr r3, =gUnknown_03005000
adds r0, r3, 0
adds r0, 0xEA
ldrb r0, [r0]
cmp r0, 0
beq _080103FA
adds r3, 0xE9
_080103E8:
adds r0, r1, 0x1
lsls r0, 24
lsrs r1, r0, 24
cmp r1, r2
bcs _080103FA
adds r0, r1, r3
ldrb r0, [r0]
cmp r0, 0
bne _080103E8
_080103FA:
cmp r1, r2
bne _0801041E
ldr r4, =gUnknown_03005000
ldr r1, =0x000009e6
adds r0, r4, r1
ldrb r0, [r0]
cmp r0, 0
bne _0801041E
ldr r0, =gSendCmd
ldrh r0, [r0]
cmp r0, 0
bne _0801041E
movs r0, 0xCC
lsls r0, 7
bl sub_800FD14
ldr r0, =sub_8010358
_0801041C:
str r0, [r4]
_0801041E:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_8010390
thumb_func_start sub_8010434
sub_8010434: @ 8010434
push {lr}
ldr r1, =gUnknown_03005000
ldr r2, [r1]
cmp r2, 0
bne _08010448
ldr r0, =sub_8010390
str r0, [r1]
adds r0, r1, 0
adds r0, 0xFE
strh r2, [r0]
_08010448:
pop {r0}
bx r0
.pool
thumb_func_end sub_8010434
thumb_func_start sub_8010454
sub_8010454: @ 8010454
push {r4,lr}
adds r3, r0, 0
ldr r1, =gUnknown_082ED6E0
ldrh r0, [r1]
cmp r0, r3
beq _08010482
ldr r4, =0x0000ffff
adds r2, r1, 0
_08010464:
ldrh r0, [r2]
cmp r0, r4
bne _08010478
movs r0, 0
b _08010484
.pool
_08010478:
adds r1, 0x2
adds r2, 0x2
ldrh r0, [r1]
cmp r0, r3
bne _08010464
_08010482:
movs r0, 0x1
_08010484:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8010454
thumb_func_start sub_801048C
sub_801048C: @ 801048C
push {lr}
cmp r0, 0
beq _080104A0
movs r1, 0x96
lsls r1, 2
movs r0, 0x1
bl sub_800D550
movs r0, 0
b _080104AC
_080104A0:
movs r0, 0
movs r1, 0
bl sub_800D550
lsls r0, 24
lsrs r0, 24
_080104AC:
pop {r1}
bx r1
thumb_func_end sub_801048C
thumb_func_start sub_80104B0
sub_80104B0: @ 80104B0
push {lr}
ldr r0, =gUnknown_03005000
ldr r1, =0x00000cd9
adds r0, r1
movs r1, 0x1
strb r1, [r0]
movs r0, 0
bl sub_800C27C
pop {r0}
bx r0
.pool
thumb_func_end sub_80104B0
thumb_func_start rfu_get_multiplayer_id
rfu_get_multiplayer_id: @ 80104D0
push {lr}
ldr r1, =gUnknown_03005000
ldrb r0, [r1, 0xC]
cmp r0, 0x1
beq _080104EC
ldr r2, =0x00000cce
adds r0, r1, r2
ldrb r0, [r0]
b _080104EE
.pool
_080104EC:
movs r0, 0
_080104EE:
pop {r1}
bx r1
thumb_func_end rfu_get_multiplayer_id
thumb_func_start sub_80104F4
sub_80104F4: @ 80104F4
ldr r0, =gUnknown_03005000
ldrb r0, [r0, 0xD]
bx lr
.pool
thumb_func_end sub_80104F4
thumb_func_start sub_8010500
sub_8010500: @ 8010500
push {lr}
ldr r2, =gUnknown_03005000
adds r0, r2, 0
adds r0, 0xF1
ldrb r0, [r0]
cmp r0, 0x2
bne _08010518
movs r0, 0
b _08010524
.pool
_08010518:
movs r1, 0
ldr r0, [r2]
cmp r0, 0
bne _08010522
movs r1, 0x1
_08010522:
adds r0, r1, 0
_08010524:
pop {r1}
bx r1
thumb_func_end sub_8010500
thumb_func_start sub_8010528
sub_8010528: @ 8010528
push {lr}
ldr r0, =gUnknown_03005000
ldr r0, [r0]
cmp r0, 0
beq _08010536
bl _call_via_r0
_08010536:
pop {r0}
bx r0
.pool
thumb_func_end sub_8010528
thumb_func_start sub_8010540
sub_8010540: @ 8010540
push {r4-r7,lr}

View File

@ -162,9 +162,10 @@ struct UnkRfuStruct_2 {
/* 0x0e9 */ u8 unk_e9[5];
/* 0x0ee */ vu8 unk_ee;
/* 0x0ef */ u8 unk_ef;
/* 0x0f0 */ u8 filler_f0[2];
/* 0x0f0 */ u8 unk_f0;
/* 0x0f1 */ u8 unk_f1;
/* 0x0f2 */ u16 unk_f2[6];
/* 0x0fe */ u8 filler_fe[2];
/* 0x0fe */ u16 unk_fe;
/* 0x100 */ u16 unk_100;
/* 0x102 */ u8 unk_102;
/* 0x103 */ u8 filler_103[0x21];

View File

@ -62,7 +62,7 @@ void sub_800FD14(u16 command);
void rfufunc_80F9F44(void);
void sub_800FFB0(void);
void rfufunc_80FA020(void);
bool32 sub_8010454(u16 a0);
bool32 sub_8010454(u32 a0);
void sub_8010528(void);
void sub_8010750(void);
int sub_80107A0(void);
@ -3924,7 +3924,7 @@ void sub_801022C(void)
void sub_8010264(u8 taskId)
{
if (gUnknown_03005000.unk_00 == 0)
if (gUnknown_03005000.unk_00 == NULL)
{
gUnknown_03005000.unk_cd9 = 1;
gUnknown_03005000.unk_00 = sub_801022C;
@ -3937,3 +3937,133 @@ void task_add_05_task_del_08FA224_when_no_RfuFunc(void)
if (!FuncIsActiveTask(sub_8010264))
CreateTask(sub_8010264, 5);
}
void sub_80102B8(void)
{
u8 playerCount;
u8 i;
if (GetMultiplayerId() != 0)
{
u8 r4 = gUnknown_03005000.unk_124.unk_8c2;
if (r4 == 0 && gUnknown_03005000.unk_fe > 0x3c)
{
sub_800FD14(0x6600);
gUnknown_03005000.unk_fe = r4;
}
}
playerCount = GetLinkPlayerCount();
for (i = 0; i < playerCount; i++)
{
if (gUnknown_03005000.unk_e9[i] == 0)
break;
}
if (i == playerCount)
{
for (i = 0; i < MAX_RFU_PLAYERS; i++)
gUnknown_03005000.unk_e9[i] = 0;
gUnknown_03005000.unk_100++;
gUnknown_03005000.unk_00 = NULL;
}
gUnknown_03005000.unk_fe++;
}
void sub_8010358(void)
{
if (gUnknown_03005000.unk_124.unk_8c2 == 0 && gSendCmd[0] == 0)
{
sub_800FD14(0x6600);
gUnknown_03005000.unk_00 = sub_80102B8;
}
}
void sub_8010390(void)
{
u8 i;
u8 playerCount;
if (GetMultiplayerId() != 0)
{
if (gUnknown_03005000.unk_124.unk_8c2 == 0 && gSendCmd[0] == 0)
{
sub_800FD14(0x6600);
gUnknown_03005000.unk_00 = sub_80102B8;
}
}
else
{
playerCount = GetLinkPlayerCount();
for (i = 1; i < playerCount; i++)
{
if (gUnknown_03005000.unk_e9[i] == 0)
break;
}
if (i == playerCount)
{
if (gUnknown_03005000.unk_124.unk_8c2 == 0 && gSendCmd[0] == 0)
{
sub_800FD14(0x6600);
gUnknown_03005000.unk_00 = sub_8010358;
}
}
}
}
void sub_8010434(void)
{
if (gUnknown_03005000.unk_00 == NULL)
{
gUnknown_03005000.unk_00 = sub_8010390;
gUnknown_03005000.unk_fe = 0;
}
}
bool32 sub_8010454(u32 a0)
{
int i;
for (i = 0; gUnknown_082ED6E0[i] != a0; i++)
{
if (gUnknown_082ED6E0[i] == 0xffff)
return FALSE;
}
return TRUE;
}
u8 sub_801048C(bool32 a0)
{
if (a0 == 0)
return sub_800D550(0, 0);
sub_800D550(1, 0x258);
return FALSE;
}
void sub_80104B0(void)
{
gUnknown_03005000.unk_cd9 = 1;
sub_800C27C(FALSE);
}
u8 rfu_get_multiplayer_id(void)
{
if (gUnknown_03005000.unk_0c == 1)
return 0;
return gUnknown_03005000.unk_cce;
}
u8 sub_80104F4(void)
{
return gUnknown_03005000.playerCount;
}
bool8 sub_8010500(void)
{
if (gUnknown_03005000.unk_f1 == 2)
return FALSE;
return gUnknown_03005000.unk_00 ? FALSE : TRUE;
}
void sub_8010528(void)
{
if (gUnknown_03005000.unk_00)
gUnknown_03005000.unk_00();
}