through sub_800A588

This commit is contained in:
PikalaxALT
2017-11-10 22:08:17 -05:00
parent b92d85fd30
commit 27c0dc0fd5
23 changed files with 207 additions and 313 deletions

View File

@@ -16,6 +16,7 @@
#include "palette.h"
#include "task.h"
#include "trade.h"
#include "link_rfu.h"
#include "link.h"
// Static type declarations
@@ -37,13 +38,6 @@ struct LinkTestBGInfo
u32 dummy_C;
};
struct SIOCnt {
u32 cnt0_0:4;
u32 cnt0_2:2;
};
#define REG_SIOCNT_STRUCT (*(volatile struct SIOCnt *)REG_ADDR_SIOCNT)
// Static RAM declarations
IWRAM_DATA struct BlockTransfer gUnknown_03000D10;
@@ -88,7 +82,7 @@ u8 gUnknown_030030EC[MAX_LINK_PLAYERS];
u8 gUnknown_030030F0[MAX_LINK_PLAYERS];
u16 gUnknown_030030F4;
u8 gUnknown_030030F8;
bool8 gLinkVSyncDisabled;
bool8 gSerialIsRFU;
bool8 gUnknown_03003100;
u16 gUnknown_03003110[8];
u8 gUnknown_03003120;
@@ -137,16 +131,6 @@ void sub_800B524(struct LinkPlayer *linkPlayer);
void sub_800B53C(void);
void sub_800B594(void);
// rfu
u32 sub_800BEC0(void);
void sub_800E700(void);
void sub_800EDD4(void);
bool32 sub_800F7E4(void);
void sub_800F804(void);
void sub_800F850(void);
void Rfu_set_zero(void);
u8 sub_80104F4(void);
// .rodata
ALIGNED(4) const u16 gWirelessLinkDisplayPal[] = INCBIN_U16("graphics/interface/wireless_link_display.gbapal");
@@ -333,7 +317,7 @@ void sub_8009734(void)
{
int i;
if (!gLinkVSyncDisabled)
if (!gSerialIsRFU)
{
sub_800B628();
sub_80096D0();
@@ -365,7 +349,7 @@ void sub_8009734(void)
void sub_80097E8(void)
{
gReceivedRemoteLinkPlayers = FALSE;
if (gLinkVSyncDisabled)
if (gSerialIsRFU)
{
sub_800EDD4();
}
@@ -467,7 +451,7 @@ u16 sub_80099E0(const u16 *src)
gUnknown_03003084 = *src;
if (gUnknown_030030E0 & 0x40)
{
sub_8009AA0(REG_SIOCNT_STRUCT.cnt0_2);
sub_8009AA0(SIO_MULTI_CNT->id);
if (gUnknown_03003140 != NULL)
{
gUnknown_03003140();
@@ -685,7 +669,7 @@ void sub_8009D90(u16 command)
void sub_8009F18(void)
{
if (gLinkVSyncDisabled)
if (gSerialIsRFU)
{
sub_800F804();
}
@@ -694,7 +678,7 @@ void sub_8009F18(void)
bool32 sub_8009F3C(void)
{
if (gLinkVSyncDisabled)
if (gSerialIsRFU)
{
return sub_800F7E4();
}
@@ -715,7 +699,7 @@ static void sub_8009F70(void)
void sub_8009F8C(void)
{
if (gLinkVSyncDisabled)
if (gSerialIsRFU)
{
Rfu_set_zero();
}
@@ -727,7 +711,7 @@ void sub_8009F8C(void)
void sub_8009FAC(void)
{
if (gLinkVSyncDisabled)
if (gSerialIsRFU)
{
Rfu_set_zero();
}
@@ -739,7 +723,7 @@ void sub_8009FAC(void)
u8 GetLinkPlayerCount(void)
{
if (gLinkVSyncDisabled)
if (gSerialIsRFU)
{
return sub_80104F4();
}
@@ -997,7 +981,7 @@ void sub_800A3F8(void)
void sub_800A418(void)
{
gUnknown_020223C0 = 0;
if (gLinkVSyncDisabled)
if (gSerialIsRFU)
{
sub_800F850();
}
@@ -1006,3 +990,84 @@ void sub_800A418(void)
gUnknown_03003140 = sub_800A3F8;
}
}
u32 sub_800A44C(void)
{
return gUnknown_020223C0;
}
void sub_800A458(void)
{
sub_8009D90(0xaaaa);
}
u8 GetMultiplayerId(void)
{
if (gSerialIsRFU == TRUE)
{
return rfu_get_multiplayer_id();
}
return SIO_MULTI_CNT->id;
}
u8 bitmask_all_link_players_but_self(void)
{
u8 mpId;
mpId = GetMultiplayerId();
return ((1 << MAX_LINK_PLAYERS) - 1) ^ (1 << mpId);
}
bool8 SendBlock(u8 unused, const void *src, u16 size)
{
if (gSerialIsRFU == TRUE)
{
return sub_800FE84(src, size);
}
return sub_800A2F4(src, size);
}
bool8 sub_800A4D8(u8 a0)
{
if (gSerialIsRFU == TRUE)
{
return sub_8010100(a0);
}
if (gUnknown_03003140 == NULL)
{
gUnknown_03003150 = a0;
sub_8009D90(0xcccc);
return TRUE;
}
return FALSE;
}
bool8 sub_800A520(void)
{
if (gSerialIsRFU == TRUE)
{
return sub_8010500();
}
return gUnknown_03003140 == NULL;
}
u8 GetBlockReceivedStatus(void)
{
if (gSerialIsRFU == TRUE)
{
return sub_800FCD8();
}
return (gUnknown_0300307C[3] << 3) | (gUnknown_0300307C[2] << 2) | (gUnknown_0300307C[1] << 1) | (gUnknown_0300307C[0] << 0);
}
void sub_800A588(u8 who)
{
if (gSerialIsRFU == TRUE)
{
sub_800F6FC(who);
}
else
{
gUnknown_0300307C[who] = TRUE;
}
}