summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle_2.c25
-rw-r--r--src/battle_controller_player.c4
-rw-r--r--src/battle_controllers.c4
-rw-r--r--src/evolution_scene.c4
-rw-r--r--src/link.c119
-rw-r--r--src/main.c2
-rw-r--r--src/reshow_battle_screen.c2
7 files changed, 113 insertions, 47 deletions
diff --git a/src/battle_2.c b/src/battle_2.c
index 24b43bdbd..a69a16dac 100644
--- a/src/battle_2.c
+++ b/src/battle_2.c
@@ -17,6 +17,7 @@
#include "items.h"
#include "hold_effects.h"
#include "link.h"
+#include "link_rfu.h"
#include "bg.h"
#include "dma3.h"
#include "string_util.h"
@@ -734,7 +735,7 @@ static void CB2_HandleStartBattle(void)
sub_805EF14();
gBattleCommunication[MULTIUSE_STATE] = 1;
}
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
sub_800E0E8();
break;
case 1:
@@ -758,7 +759,7 @@ static void CB2_HandleStartBattle(void)
SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->field_180, 32);
gBattleCommunication[MULTIUSE_STATE] = 2;
}
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
sub_800DFB4(0, 0);
}
}
@@ -929,7 +930,7 @@ static void CB2_HandleStartMultiPartnerBattle(void)
sub_805EF14();
gBattleCommunication[MULTIUSE_STATE] = 1;
}
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
sub_800E0E8();
// fall through
case 1:
@@ -960,7 +961,7 @@ static void CB2_HandleStartMultiPartnerBattle(void)
gBattleCommunication[MULTIUSE_STATE] = 2;
}
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
sub_800DFB4(0, 0);
}
}
@@ -1237,14 +1238,14 @@ static void CB2_PreInitMultiBattle(void)
if (sub_800A520() && !gPaletteFade.active)
{
gBattleCommunication[MULTIUSE_STATE]++;
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
sub_800ADF8();
else
sub_800AC34();
}
break;
case 3:
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
{
if (sub_8010500())
{
@@ -1329,7 +1330,7 @@ static void CB2_HandleStartMultiBattle(void)
sub_805EF14();
gBattleCommunication[MULTIUSE_STATE] = 1;
}
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
sub_800E0E8();
break;
case 1:
@@ -1347,7 +1348,7 @@ static void CB2_HandleStartMultiBattle(void)
SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->field_180, 32);
gBattleCommunication[MULTIUSE_STATE]++;
}
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
sub_800DFB4(0, 0);
}
}
@@ -2132,12 +2133,12 @@ static void sub_8038F34(void)
}
break;
case 8:
- if (!gLinkVSyncDisabled)
+ if (!gSerialIsRFU)
sub_800AC34();
gBattleCommunication[MULTIUSE_STATE]++;
break;
case 9:
- if (!gMain.field_439_x4 || gLinkVSyncDisabled || gReceivedRemoteLinkPlayers != 1)
+ if (!gMain.field_439_x4 || gSerialIsRFU || gReceivedRemoteLinkPlayers != 1)
{
gMain.field_439_x4 = 0;
SetMainCallback2(gMain.savedCallback);
@@ -2316,13 +2317,13 @@ static void sub_803939C(void)
case 8:
if (--gBattleCommunication[1] == 0)
{
- if (gMain.field_439_x4 && !gLinkVSyncDisabled)
+ if (gMain.field_439_x4 && !gSerialIsRFU)
sub_800AC34();
gBattleCommunication[MULTIUSE_STATE]++;
}
break;
case 9:
- if (!gMain.field_439_x4 || gLinkVSyncDisabled || gReceivedRemoteLinkPlayers != 1)
+ if (!gMain.field_439_x4 || gSerialIsRFU || gReceivedRemoteLinkPlayers != 1)
{
gMain.field_439_x4 = 0;
if (!gPaletteFade.active)
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index 10d361cb9..2a882de99 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -896,7 +896,7 @@ static void HandleMoveSwitchting(void)
static void sub_80586F8(void)
{
- if (gLinkVSyncDisabled == 0)
+ if (gSerialIsRFU == 0)
{
if (gReceivedRemoteLinkPlayers == 0)
{
@@ -932,7 +932,7 @@ void sub_80587B0(void)
{
if (sub_800A520())
{
- if (gLinkVSyncDisabled == 0)
+ if (gSerialIsRFU == 0)
sub_800AC34();
else
sub_800ADF8();
diff --git a/src/battle_controllers.c b/src/battle_controllers.c
index d3653d0b3..d741a8a98 100644
--- a/src/battle_controllers.c
+++ b/src/battle_controllers.c
@@ -59,7 +59,7 @@ void HandleLinkBattleSetup(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
sub_800B488();
if (!gReceivedRemoteLinkPlayers)
sub_8009734();
@@ -780,7 +780,7 @@ static void Task_HandleSendLinkBuffersData(u8 taskId)
gTasks[taskId].data[11]++;
break;
case 2:
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
{
gTasks[taskId].data[11]++;
}
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index 68731a14a..101feab56 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -405,7 +405,7 @@ static void CB2_TradeEvolutionSceneLoadGraphics(void)
}
break;
case 6:
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
{
sub_800E0E8();
sub_800DFB4(0, 0);
@@ -1188,7 +1188,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
case 5:
if (!gPaletteFade.active)
{
- if (gLinkVSyncDisabled)
+ if (gSerialIsRFU)
sub_800E084();
Free(GetBgTilemapBuffer(3));
diff --git a/src/link.c b/src/link.c
index d9d5a48dd..68868491b 100644
--- a/src/link.c
+++ b/src/link.c
@@ -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;
+ }
+}
diff --git a/src/main.c b/src/main.c
index b90dc3837..61f6f60a4 100644
--- a/src/main.c
+++ b/src/main.c
@@ -336,7 +336,7 @@ extern void ProcessDma3Requests(void);
static void VBlankIntr(void)
{
- if (gLinkVSyncDisabled != FALSE)
+ if (gSerialIsRFU != FALSE)
LinkVSync();
else if (gUnknown_03002748 == FALSE)
sub_800B9B8();
diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c
index 002f4f069..87ad20ed7 100644
--- a/src/reshow_battle_screen.c
+++ b/src/reshow_battle_screen.c
@@ -177,7 +177,7 @@ static void CB2_ReshowBattleScreenAfterMenu(void)
ActionSelectionCreateCursorAt(gActionSelectionCursor[gBankInMenu], 0);
- if (gLinkVSyncDisabled != 0 && gReceivedRemoteLinkPlayers != 0)
+ if (gSerialIsRFU != 0 && gReceivedRemoteLinkPlayers != 0)
{
sub_800E0E8();
sub_800DFB4(0, 0);