link through TestBlockTransfer + bss, ewram
This commit is contained in:
+198
-474
File diff suppressed because it is too large
Load Diff
+37
-37
@@ -71,7 +71,7 @@ _080F863E:
|
||||
adds r0, r4, 0
|
||||
bl sub_80FC4D4
|
||||
strh r5, [r7]
|
||||
ldr r1, _080F86AC @ =gUnknown_3003F50
|
||||
ldr r1, _080F86AC @ =gSendCmd
|
||||
ldr r2, _080F86B0 @ =0x01000008
|
||||
adds r0, r7, 0
|
||||
bl CpuSet
|
||||
@@ -97,7 +97,7 @@ _080F869C: .4byte gUnknown_3005450
|
||||
_080F86A0: .4byte 0x010004d6
|
||||
_080F86A4: .4byte gUnknown_30054BC
|
||||
_080F86A8: .4byte 0x00000634
|
||||
_080F86AC: .4byte gUnknown_3003F50
|
||||
_080F86AC: .4byte gSendCmd
|
||||
_080F86B0: .4byte 0x01000008
|
||||
_080F86B4: .4byte gRecvCmds
|
||||
_080F86B8: .4byte 0x01000028
|
||||
@@ -1277,7 +1277,7 @@ _080F9034: .4byte 0x01000028
|
||||
thumb_func_start sub_80F9038
|
||||
sub_80F9038: @ 80F9038
|
||||
push {lr}
|
||||
ldr r3, _080F9064 @ =gUnknown_3003F50
|
||||
ldr r3, _080F9064 @ =gSendCmd
|
||||
ldr r2, _080F9068 @ =gRecvCmds
|
||||
movs r1, 0x6
|
||||
_080F9040:
|
||||
@@ -1288,7 +1288,7 @@ _080F9040:
|
||||
subs r1, 0x1
|
||||
cmp r1, 0
|
||||
bge _080F9040
|
||||
ldr r1, _080F9064 @ =gUnknown_3003F50
|
||||
ldr r1, _080F9064 @ =gSendCmd
|
||||
movs r2, 0
|
||||
adds r0, r1, 0
|
||||
adds r0, 0xC
|
||||
@@ -1300,7 +1300,7 @@ _080F9056:
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080F9064: .4byte gUnknown_3003F50
|
||||
_080F9064: .4byte gSendCmd
|
||||
_080F9068: .4byte gRecvCmds
|
||||
thumb_func_end sub_80F9038
|
||||
|
||||
@@ -2007,7 +2007,7 @@ _080F95E4:
|
||||
ldrb r1, [r2]
|
||||
strb r0, [r2]
|
||||
bl sub_80FA510
|
||||
ldr r5, _080F9658 @ =gUnknown_3003F50
|
||||
ldr r5, _080F9658 @ =gSendCmd
|
||||
add r4, sp, 0x48
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
@@ -2045,7 +2045,7 @@ _080F9648: .4byte 0x0000099c
|
||||
_080F964C: .4byte gUnknown_3007460
|
||||
_080F9650: .4byte gReceivedRemoteLinkPlayers
|
||||
_080F9654: .4byte 0x00000988
|
||||
_080F9658: .4byte gUnknown_3003F50
|
||||
_080F9658: .4byte gSendCmd
|
||||
thumb_func_end sub_80F9514
|
||||
|
||||
thumb_func_start sub_80F965C
|
||||
@@ -2723,7 +2723,7 @@ _080F9B68:
|
||||
movs r0, 0xEE
|
||||
lsls r0, 8
|
||||
bl sub_80F9D04
|
||||
ldr r1, _080F9B90 @ =gUnknown_3003F50
|
||||
ldr r1, _080F9B90 @ =gSendCmd
|
||||
ldr r3, _080F9B94 @ =gUnknown_3003ED2
|
||||
adds r0, r5, r3
|
||||
ldrh r0, [r0]
|
||||
@@ -2739,7 +2739,7 @@ _080F9B68:
|
||||
strh r0, [r1, 0x6]
|
||||
b _080F9BF4
|
||||
.align 2, 0
|
||||
_080F9B90: .4byte gUnknown_3003F50
|
||||
_080F9B90: .4byte gSendCmd
|
||||
_080F9B94: .4byte gUnknown_3003ED2
|
||||
_080F9B98: .4byte gUnknown_3003ED4
|
||||
_080F9B9C: .4byte gRecvCmds
|
||||
@@ -2949,7 +2949,7 @@ sub_80F9D04: @ 80F9D04
|
||||
push {r4,r5,lr}
|
||||
lsls r0, 16
|
||||
lsrs r1, r0, 16
|
||||
ldr r5, _080F9D34 @ =gUnknown_3003F50
|
||||
ldr r5, _080F9D34 @ =gSendCmd
|
||||
strh r1, [r5]
|
||||
movs r0, 0xF0
|
||||
lsls r0, 7
|
||||
@@ -2970,7 +2970,7 @@ sub_80F9D04: @ 80F9D04
|
||||
beq _080F9DFC
|
||||
b _080F9E22
|
||||
.align 2, 0
|
||||
_080F9D34: .4byte gUnknown_3003F50
|
||||
_080F9D34: .4byte gSendCmd
|
||||
_080F9D38:
|
||||
movs r0, 0xCC
|
||||
lsls r0, 7
|
||||
@@ -3103,7 +3103,7 @@ _080F9E28: .4byte gUnknown_3005028
|
||||
sub_80F9E2C: @ 80F9E2C
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
ldr r0, _080F9E58 @ =gUnknown_3003F50
|
||||
ldr r0, _080F9E58 @ =gSendCmd
|
||||
ldrh r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _080F9E52
|
||||
@@ -3122,7 +3122,7 @@ _080F9E52:
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080F9E58: .4byte gUnknown_3003F50
|
||||
_080F9E58: .4byte gSendCmd
|
||||
_080F9E5C: .4byte gUnknown_3005542
|
||||
thumb_func_end sub_80F9E2C
|
||||
|
||||
@@ -3146,7 +3146,7 @@ _080F9E7C:
|
||||
ldr r0, [r5]
|
||||
cmp r0, 0
|
||||
bne _080F9EA4
|
||||
ldr r0, _080F9EB8 @ =gUnknown_3003F50
|
||||
ldr r0, _080F9EB8 @ =gSendCmd
|
||||
ldrh r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _080F9EA4
|
||||
@@ -3170,7 +3170,7 @@ _080F9EA8: .4byte gUnknown_843ED94
|
||||
_080F9EAC: .4byte 0x00000701
|
||||
_080F9EB0: .4byte gUnknown_843EDD8
|
||||
_080F9EB4: .4byte gUnknown_3005450
|
||||
_080F9EB8: .4byte gUnknown_3003F50
|
||||
_080F9EB8: .4byte gSendCmd
|
||||
_080F9EBC: .4byte gUnknown_203AC08
|
||||
_080F9EC0:
|
||||
adds r0, r6, 0
|
||||
@@ -3240,7 +3240,7 @@ _080F9F40: .4byte rfufunc_80F9F44
|
||||
thumb_func_start rfufunc_80F9F44
|
||||
rfufunc_80F9F44: @ 80F9F44
|
||||
push {r4,r5,lr}
|
||||
ldr r0, _080F9F74 @ =gUnknown_3003F50
|
||||
ldr r0, _080F9F74 @ =gSendCmd
|
||||
ldrh r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _080F9F98
|
||||
@@ -3263,7 +3263,7 @@ rfufunc_80F9F44: @ 80F9F44
|
||||
bls _080F9F98
|
||||
b _080F9F94
|
||||
.align 2, 0
|
||||
_080F9F74: .4byte gUnknown_3003F50
|
||||
_080F9F74: .4byte gSendCmd
|
||||
_080F9F78: .4byte gUnknown_3005450
|
||||
_080F9F7C:
|
||||
bl GetMultiplayerId
|
||||
@@ -3295,7 +3295,7 @@ sub_80F9FA8: @ 80F9FA8
|
||||
ldr r0, _080FA014 @ =gUnknown_3005450
|
||||
mov r12, r0
|
||||
ldr r5, [r0, 0x70]
|
||||
ldr r3, _080FA018 @ =gUnknown_3003F50
|
||||
ldr r3, _080FA018 @ =gSendCmd
|
||||
mov r2, r12
|
||||
adds r2, 0x6C
|
||||
ldrh r1, [r2]
|
||||
@@ -3348,7 +3348,7 @@ _080FA00C:
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080FA014: .4byte gUnknown_3005450
|
||||
_080FA018: .4byte gUnknown_3003F50
|
||||
_080FA018: .4byte gSendCmd
|
||||
_080FA01C: .4byte rfufunc_80FA020
|
||||
thumb_func_end sub_80F9FA8
|
||||
|
||||
@@ -3367,7 +3367,7 @@ rfufunc_80FA020: @ 80FA020
|
||||
ldrb r0, [r5, 0xC]
|
||||
cmp r0, 0
|
||||
bne _080FA0E8
|
||||
ldr r3, _080FA0CC @ =gUnknown_3003F50
|
||||
ldr r3, _080FA0CC @ =gSendCmd
|
||||
adds r2, r5, 0
|
||||
adds r2, 0x6E
|
||||
ldrh r0, [r2]
|
||||
@@ -3439,7 +3439,7 @@ _080FA05C:
|
||||
b _080FA0EC
|
||||
.align 2, 0
|
||||
_080FA0C8: .4byte gUnknown_3005450
|
||||
_080FA0CC: .4byte gUnknown_3003F50
|
||||
_080FA0CC: .4byte gSendCmd
|
||||
_080FA0D0: .4byte 0xffff8900
|
||||
_080FA0D4: .4byte gRecvCmds
|
||||
_080FA0D8: .4byte gUnknown_843EBD4
|
||||
@@ -3624,7 +3624,7 @@ _080FA220: .4byte sub_80FA160
|
||||
thumb_func_start sub_80FA224
|
||||
sub_80FA224: @ 80FA224
|
||||
push {r4,lr}
|
||||
ldr r0, _080FA250 @ =gUnknown_3003F50
|
||||
ldr r0, _080FA250 @ =gSendCmd
|
||||
ldrh r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _080FA248
|
||||
@@ -3645,7 +3645,7 @@ _080FA248:
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080FA250: .4byte gUnknown_3003F50
|
||||
_080FA250: .4byte gSendCmd
|
||||
_080FA254: .4byte gUnknown_3005450
|
||||
_080FA258: .4byte sub_80FA1C4
|
||||
thumb_func_end sub_80FA224
|
||||
@@ -3789,7 +3789,7 @@ sub_80FA350: @ 80FA350
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _080FA372
|
||||
ldr r0, _080FA380 @ =gUnknown_3003F50
|
||||
ldr r0, _080FA380 @ =gSendCmd
|
||||
ldrh r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _080FA372
|
||||
@@ -3805,7 +3805,7 @@ _080FA372:
|
||||
.align 2, 0
|
||||
_080FA378: .4byte gUnknown_3005450
|
||||
_080FA37C: .4byte 0x0000069e
|
||||
_080FA380: .4byte gUnknown_3003F50
|
||||
_080FA380: .4byte gSendCmd
|
||||
_080FA384: .4byte sub_80FA2B0
|
||||
thumb_func_end sub_80FA350
|
||||
|
||||
@@ -3822,7 +3822,7 @@ sub_80FA388: @ 80FA388
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _080FA416
|
||||
ldr r0, _080FA3BC @ =gUnknown_3003F50
|
||||
ldr r0, _080FA3BC @ =gSendCmd
|
||||
ldrh r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _080FA416
|
||||
@@ -3834,7 +3834,7 @@ sub_80FA388: @ 80FA388
|
||||
.align 2, 0
|
||||
_080FA3B4: .4byte gUnknown_3005450
|
||||
_080FA3B8: .4byte 0x0000069e
|
||||
_080FA3BC: .4byte gUnknown_3003F50
|
||||
_080FA3BC: .4byte gSendCmd
|
||||
_080FA3C0: .4byte sub_80FA2B0
|
||||
_080FA3C4:
|
||||
bl GetLinkPlayerCount
|
||||
@@ -3869,7 +3869,7 @@ _080FA3F2:
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _080FA416
|
||||
ldr r0, _080FA424 @ =gUnknown_3003F50
|
||||
ldr r0, _080FA424 @ =gSendCmd
|
||||
ldrh r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _080FA416
|
||||
@@ -3886,7 +3886,7 @@ _080FA416:
|
||||
.align 2, 0
|
||||
_080FA41C: .4byte gUnknown_3005450
|
||||
_080FA420: .4byte 0x0000069e
|
||||
_080FA424: .4byte gUnknown_3003F50
|
||||
_080FA424: .4byte gSendCmd
|
||||
_080FA428: .4byte sub_80FA350
|
||||
thumb_func_end sub_80FA388
|
||||
|
||||
@@ -4540,7 +4540,7 @@ _080FA8D8:
|
||||
.align 2, 0
|
||||
_080FA8E8: .4byte gTasks
|
||||
_080FA8EC:
|
||||
ldr r0, _080FA8FC @ =gUnknown_3003F50
|
||||
ldr r0, _080FA8FC @ =gSendCmd
|
||||
ldrh r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _080FA9BC
|
||||
@@ -4549,7 +4549,7 @@ _080FA8F4:
|
||||
strh r0, [r4, 0x8]
|
||||
b _080FA9BC
|
||||
.align 2, 0
|
||||
_080FA8FC: .4byte gUnknown_3003F50
|
||||
_080FA8FC: .4byte gSendCmd
|
||||
_080FA900:
|
||||
ldrb r0, [r5, 0xD]
|
||||
b _080FA92C
|
||||
@@ -4831,7 +4831,7 @@ _080FAB0C:
|
||||
.4byte _080FABEE
|
||||
.4byte _080FAC78
|
||||
_080FAB24:
|
||||
ldr r0, _080FAB40 @ =gUnknown_3003F50
|
||||
ldr r0, _080FAB40 @ =gSendCmd
|
||||
ldrh r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _080FAB2E
|
||||
@@ -4844,9 +4844,9 @@ _080FAB2E:
|
||||
bl sub_80F9D04
|
||||
b _080FAC2E
|
||||
.align 2, 0
|
||||
_080FAB40: .4byte gUnknown_3003F50
|
||||
_080FAB40: .4byte gSendCmd
|
||||
_080FAB44:
|
||||
ldr r0, _080FAB58 @ =gUnknown_3003F50
|
||||
ldr r0, _080FAB58 @ =gSendCmd
|
||||
ldrh r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _080FAB4E
|
||||
@@ -4857,7 +4857,7 @@ _080FAB4E:
|
||||
adds r1, r3
|
||||
b _080FAC36
|
||||
.align 2, 0
|
||||
_080FAB58: .4byte gUnknown_3003F50
|
||||
_080FAB58: .4byte gSendCmd
|
||||
_080FAB5C:
|
||||
bl GetBlockReceivedStatus
|
||||
lsls r0, 24
|
||||
@@ -7269,7 +7269,7 @@ sub_80FBDB8: @ 80FBDB8
|
||||
push {r4-r6,lr}
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
ldr r6, _080FBE10 @ =gUnknown_3003F50
|
||||
ldr r6, _080FBE10 @ =gSendCmd
|
||||
ldrh r0, [r6]
|
||||
cmp r0, 0
|
||||
bne _080FBE08
|
||||
@@ -7309,7 +7309,7 @@ _080FBE08:
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080FBE10: .4byte gUnknown_3003F50
|
||||
_080FBE10: .4byte gSendCmd
|
||||
_080FBE14: .4byte gUnknown_3005450
|
||||
_080FBE18: .4byte gTasks
|
||||
_080FBE1C: .4byte gUnknown_843EC41
|
||||
|
||||
+3
-3
@@ -138,7 +138,7 @@ extern u16 gRecvCmds[MAX_RFU_PLAYERS][CMD_LENGTH];
|
||||
extern u8 gBlockSendBuffer[BLOCK_BUFFER_SIZE];
|
||||
extern u16 gLinkType;
|
||||
extern u32 gLinkStatus;
|
||||
extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2];
|
||||
extern u16 gBlockRecvBuffer[MAX_RFU_PLAYERS][BLOCK_BUFFER_SIZE / 2];
|
||||
extern u16 gSendCmd[CMD_LENGTH];
|
||||
extern u8 gShouldAdvanceLinkState;
|
||||
extern struct LinkPlayer gLinkPlayers[];
|
||||
@@ -147,7 +147,7 @@ extern bool8 gReceivedRemoteLinkPlayers;
|
||||
extern bool8 gLinkVSyncDisabled;
|
||||
extern u8 gWirelessCommType;
|
||||
|
||||
extern u8 gUnknown_3003F84;
|
||||
extern u8 gShouldAdvanceLinkState;
|
||||
extern u64 gSioMlt_Recv;
|
||||
|
||||
void Task_DestroySelf(u8);
|
||||
@@ -208,7 +208,7 @@ void sub_80098D8(void);
|
||||
void CloseLink(void);
|
||||
bool8 IsLinkTaskFinished(void);
|
||||
bool32 sub_800B270(void);
|
||||
void sub_800B388(void);
|
||||
void ResetSerial(void);
|
||||
void sub_8054A28(void);
|
||||
void sub_800B1F4(void);
|
||||
void LoadWirelessStatusIndicatorSpriteGfx(void);
|
||||
|
||||
@@ -51,7 +51,7 @@ int EReader_Send(size_t r6, const void * r5)
|
||||
{
|
||||
GetKeyInput();
|
||||
if (TEST_BUTTON(sJoyNew, B_BUTTON))
|
||||
gUnknown_3003F84 = 2;
|
||||
gShouldAdvanceLinkState = 2;
|
||||
|
||||
sSendRecvStatus = EReaderHandleTransfer(1, r6, r5, NULL);
|
||||
if ((sSendRecvStatus & 0x13) == 0x10)
|
||||
@@ -71,7 +71,7 @@ int EReader_Send(size_t r6, const void * r5)
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_3003F84 = 0;
|
||||
gShouldAdvanceLinkState = 0;
|
||||
VBlankIntrWait();
|
||||
}
|
||||
}
|
||||
@@ -90,7 +90,7 @@ int EReader_Recv(void * r5)
|
||||
{
|
||||
GetKeyInput();
|
||||
if (TEST_BUTTON(sJoyNew, B_BUTTON))
|
||||
gUnknown_3003F84 = 2;
|
||||
gShouldAdvanceLinkState = 2;
|
||||
|
||||
sSendRecvStatus = EReaderHandleTransfer(0, 0, NULL, r5);
|
||||
if ((sSendRecvStatus & 0x13) == 0x10)
|
||||
@@ -110,7 +110,7 @@ int EReader_Recv(void * r5)
|
||||
}
|
||||
else
|
||||
{
|
||||
gUnknown_3003F84 = 0;
|
||||
gShouldAdvanceLinkState = 0;
|
||||
VBlankIntrWait();
|
||||
}
|
||||
}
|
||||
@@ -150,7 +150,7 @@ static void OpenSerial32(void)
|
||||
REG_RCNT = 0;
|
||||
REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE;
|
||||
REG_SIOCNT |= SIO_MULTI_SD;
|
||||
gUnknown_3003F84 = 0;
|
||||
gShouldAdvanceLinkState = 0;
|
||||
sCounter1 = 0;
|
||||
sCounter2 = 0;
|
||||
}
|
||||
@@ -167,7 +167,7 @@ u16 EReaderHandleTransfer(u8 mode, size_t size, const void * data, void * recvBu
|
||||
case 1:
|
||||
if (DetermineSendRecvState(mode))
|
||||
EnableSio();
|
||||
if (gUnknown_3003F84 == 2)
|
||||
if (gShouldAdvanceLinkState == 2)
|
||||
{
|
||||
sSendRecvMgr.field_04 = 2;
|
||||
sSendRecvMgr.state = 6;
|
||||
@@ -179,7 +179,7 @@ u16 EReaderHandleTransfer(u8 mode, size_t size, const void * data, void * recvBu
|
||||
sSendRecvMgr.state = 3;
|
||||
// fallthrough
|
||||
case 3:
|
||||
if (gUnknown_3003F84 == 2)
|
||||
if (gShouldAdvanceLinkState == 2)
|
||||
{
|
||||
sSendRecvMgr.field_04 = 2;
|
||||
sSendRecvMgr.state = 6;
|
||||
|
||||
+1
-1
@@ -561,7 +561,7 @@ static bool8 sub_80EC62C(void)
|
||||
}
|
||||
break;
|
||||
case 142:
|
||||
sub_800B388();
|
||||
ResetSerial();
|
||||
SetMainCallback2(sub_80EC5B8);
|
||||
break;
|
||||
}
|
||||
|
||||
+162
-2
@@ -27,18 +27,68 @@ struct LinkTestBGInfo
|
||||
u32 dummy_C;
|
||||
};
|
||||
|
||||
u32 gUnknown_3000E58;
|
||||
#define static __attribute__((section(".bss")))
|
||||
static struct BlockTransfer sBlockSend;
|
||||
ALIGNED(8) static struct BlockTransfer sBlockRecv[MAX_LINK_PLAYERS];
|
||||
static u32 sBlockSendDelayCounter;
|
||||
static u32 gUnknown_3000E4C;
|
||||
static u8 gUnknown_3000E50;
|
||||
static u32 sPlayerDataExchangeStatus;
|
||||
static u32 gUnknown_3000E58;
|
||||
static u8 sLinkTestLastBlockSendPos;
|
||||
ALIGNED(8) static u8 sLinkTestLastBlockRecvPos[MAX_LINK_PLAYERS];
|
||||
static u8 sNumVBlanksWithoutSerialIntr;
|
||||
static bool8 sSendBufferEmpty;
|
||||
static u16 sSendNonzeroCheck;
|
||||
static u16 sRecvNonzeroCheck;
|
||||
static u8 sChecksumAvailable;
|
||||
static u8 sHandshakePlayerCount;
|
||||
#undef static
|
||||
|
||||
struct LinkTestBGInfo gLinkTestBGInfo;
|
||||
bool8 gLinkErrorOccurred;
|
||||
bool8 gSuppressLinkErrorMessage;
|
||||
void (*gLinkCallback)(void);
|
||||
bool8 gUnknown_3003F28;
|
||||
bool8 gUnknown_3003F24;
|
||||
u16 gUnknown_3003F34;
|
||||
u8 gRemoteLinkPlayersNotReceived[MAX_LINK_PLAYERS];
|
||||
u8 gUnknown_3003F30[MAX_LINK_PLAYERS];
|
||||
u8 gUnknown_3003F2C[MAX_LINK_PLAYERS];
|
||||
u16 gLinkTestBlockChecksums[MAX_LINK_PLAYERS];
|
||||
|
||||
EWRAM_DATA bool8 gLinkTestDebugValuesEnabled = FALSE;
|
||||
EWRAM_DATA bool8 gUnknown_2022111 = FALSE;
|
||||
EWRAM_DATA u32 gUnknown_2022114 = 0;
|
||||
EWRAM_DATA u16 gBlockRecvBuffer[MAX_RFU_PLAYERS][BLOCK_BUFFER_SIZE / 2] = {};
|
||||
EWRAM_DATA u8 gBlockSendBuffer[BLOCK_BUFFER_SIZE] = {};
|
||||
EWRAM_DATA bool8 gLinkOpen = FALSE;
|
||||
EWRAM_DATA u16 gLinkType = 0;
|
||||
EWRAM_DATA u16 gLinkTimeOutCounter = 0;
|
||||
EWRAM_DATA struct LinkPlayer gLocalLinkPlayer = {};
|
||||
EWRAM_DATA struct LinkPlayer gLinkPlayers[MAX_RFU_PLAYERS] = {};
|
||||
EWRAM_DATA struct LinkPlayer gSavedLinkPlayers[MAX_RFU_PLAYERS] = {};
|
||||
EWRAM_DATA struct {
|
||||
u32 status;
|
||||
u8 lastRecvQueueCount;
|
||||
u8 lastSendQueueCount;
|
||||
u8 unk_06;
|
||||
} sLinkErrorBuffer = {};
|
||||
EWRAM_DATA u16 gUnknown_202285C = 0;
|
||||
EWRAM_DATA void *gUnknown_2022860 = NULL;
|
||||
|
||||
void sub_800B210(void);
|
||||
void InitLocalLinkPlayer(void);
|
||||
void sub_800978C(void);
|
||||
u16 LinkTestCalcBlockChecksum(const u16 *src, u16 size);
|
||||
void LinkTest_prnthex(u32 pos, u8 a0, u8 a1, u8 a2);
|
||||
void LinkCB_RequestPlayerDataExchange(void);
|
||||
void ResetBlockSend(void);
|
||||
void task00_link_test(u8 taskId);
|
||||
void CB2_LinkTest(void);
|
||||
void EnableSerial(void);
|
||||
void sub_800B210(void);
|
||||
void sub_80F8DC0(void);
|
||||
void DisableSerial(void);
|
||||
|
||||
extern const u16 gLinkTestDigitsPal[0x20];
|
||||
extern const u16 gLinkTestDigitsGfx[0x1000];
|
||||
@@ -151,3 +201,113 @@ void InitLocalLinkPlayer(void)
|
||||
gLocalLinkPlayer.name[8] |= 0x10;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_800978C(void)
|
||||
{
|
||||
LoadOam();
|
||||
ProcessSpriteCopyRequests();
|
||||
TransferPlttBuffer();
|
||||
}
|
||||
|
||||
void InitLink(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
gSendCmd[i] = 0xEFFF;
|
||||
}
|
||||
gLinkOpen = TRUE;
|
||||
EnableSerial();
|
||||
}
|
||||
|
||||
void Task_TriggerHandshake(u8 taskId)
|
||||
{
|
||||
if (++gTasks[taskId].data[0] == 5)
|
||||
{
|
||||
gShouldAdvanceLinkState = 1;
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
void OpenLink(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!gWirelessCommType)
|
||||
{
|
||||
ResetSerial();
|
||||
InitLink();
|
||||
gLinkCallback = LinkCB_RequestPlayerDataExchange;
|
||||
gLinkVSyncDisabled = FALSE;
|
||||
gLinkErrorOccurred = FALSE;
|
||||
gSuppressLinkErrorMessage = FALSE;
|
||||
ResetBlockReceivedFlags();
|
||||
ResetBlockSend();
|
||||
gUnknown_3000E4C = 0;
|
||||
gUnknown_3003F28 = FALSE;
|
||||
gUnknown_3003F24 = FALSE;
|
||||
gUnknown_3003F34 = 0;
|
||||
CreateTask(Task_TriggerHandshake, 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_80F86F4();
|
||||
}
|
||||
gReceivedRemoteLinkPlayers = 0;
|
||||
for (i = 0; i < MAX_LINK_PLAYERS; i++)
|
||||
{
|
||||
gRemoteLinkPlayersNotReceived[i] = TRUE;
|
||||
gUnknown_3003F30[i] = FALSE;
|
||||
gUnknown_3003F2C[i] = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void CloseLink(void)
|
||||
{
|
||||
gReceivedRemoteLinkPlayers = FALSE;
|
||||
if (gWirelessCommType)
|
||||
{
|
||||
sub_80F8DC0();
|
||||
}
|
||||
gLinkOpen = FALSE;
|
||||
DisableSerial();
|
||||
}
|
||||
|
||||
void TestBlockTransfer(u8 nothing, u8 is, u8 used)
|
||||
{
|
||||
u8 i;
|
||||
u8 status;
|
||||
|
||||
if (sLinkTestLastBlockSendPos != sBlockSend.pos)
|
||||
{
|
||||
LinkTest_prnthex(sBlockSend.pos, 2, 3, 2);
|
||||
sLinkTestLastBlockSendPos = sBlockSend.pos;
|
||||
}
|
||||
for (i = 0; i < MAX_LINK_PLAYERS; i++)
|
||||
{
|
||||
if (sLinkTestLastBlockRecvPos[i] != sBlockRecv[i].pos)
|
||||
{
|
||||
LinkTest_prnthex(sBlockRecv[i].pos, 2, i + 4, 2);
|
||||
sLinkTestLastBlockRecvPos[i] = sBlockRecv[i].pos;
|
||||
}
|
||||
}
|
||||
status = GetBlockReceivedStatus();
|
||||
if (status == 0xF) // 0b1111
|
||||
{
|
||||
for (i = 0; i < MAX_LINK_PLAYERS; i++)
|
||||
{
|
||||
if ((status >> i) & 1)
|
||||
{
|
||||
gLinkTestBlockChecksums[i] = LinkTestCalcBlockChecksum(gBlockRecvBuffer[i], sBlockRecv[i].size);
|
||||
ResetBlockReceivedFlag(i);
|
||||
if (gLinkTestBlockChecksums[i] != 0x0342)
|
||||
{
|
||||
gLinkTestDebugValuesEnabled = FALSE;
|
||||
gUnknown_2022111 = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -126,7 +126,7 @@ u8 sub_8143674(struct MEvent_Str_1 *mgr)
|
||||
resp = 2;
|
||||
if (mgr->status & 4)
|
||||
resp = 3;
|
||||
gUnknown_3003F84 = 0;
|
||||
gShouldAdvanceLinkState = 0;
|
||||
return resp;
|
||||
}
|
||||
|
||||
|
||||
+11
-50
@@ -6,58 +6,19 @@
|
||||
|
||||
.space 0x4
|
||||
|
||||
.include "src/bg.o"
|
||||
.include "src/malloc.o"
|
||||
.include "src/text_printer.o"
|
||||
.include "src/sprite.o"
|
||||
|
||||
.align 2
|
||||
gUnknown_3000E08: @ 3000E08
|
||||
.space 0x10
|
||||
|
||||
gUnknown_3000E18: @ 3000E18
|
||||
.space 0x30
|
||||
|
||||
gUnknown_3000E48: @ 3000E48
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3000E4C: @ 3000E4C
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3000E50: @ 3000E50
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3000E54: @ 3000E54
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3000E58: @ 3000E58
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3000E5C: @ 3000E5C
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3000E60: @ 3000E60
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3000E64: @ 3000E64
|
||||
.space 0x1
|
||||
|
||||
gUnknown_3000E65: @ 3000E65
|
||||
.space 0x1
|
||||
|
||||
gUnknown_3000E66: @ 3000E66
|
||||
.space 0x2
|
||||
|
||||
gUnknown_3000E68: @ 3000E68
|
||||
.space 0x2
|
||||
|
||||
gUnknown_3000E6A: @ 3000E6A
|
||||
.space 0x1
|
||||
|
||||
gUnknown_3000E6B: @ 3000E6B
|
||||
.space 0x1
|
||||
|
||||
.include "src/bg.o"
|
||||
.align 2
|
||||
.include "src/malloc.o"
|
||||
.align 2
|
||||
.include "src/text_printer.o"
|
||||
.align 2
|
||||
.include "src/sprite.o"
|
||||
.align 2
|
||||
.include "src/link.o"
|
||||
.align 2
|
||||
.include "src/multiboot.o"
|
||||
.align 2
|
||||
.include "src/daycare.o"
|
||||
|
||||
gUnknown_3000E78: @ 3000E78
|
||||
|
||||
+7
-7
@@ -15,13 +15,13 @@ gUnknown_3003E6C: @ 3003E6C
|
||||
gUnknown_3003E70: @ 3003E70
|
||||
.space 0x3C
|
||||
|
||||
gUnknown_3003EAC: @ 3003EAC
|
||||
gLinkErrorOccurred: @ 3003EAC
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3003EB0: @ 3003EB0
|
||||
.space 0x8
|
||||
|
||||
gUnknown_3003EB8: @ 3003EB8
|
||||
gRemoteLinkPlayersNotReceived: @ 3003EB8
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3003EBC: @ 3003EBC
|
||||
@@ -57,7 +57,7 @@ gUnknown_3003F30: @ 3003F30
|
||||
gUnknown_3003F34: @ 3003F34
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3003F38: @ 3003F38
|
||||
gSuppressLinkErrorMessage: @ 3003F38
|
||||
.space 0x4
|
||||
|
||||
gWirelessCommType: @ 3003F3C
|
||||
@@ -66,7 +66,7 @@ gWirelessCommType: @ 3003F3C
|
||||
gUnknown_3003F40: @ 3003F40
|
||||
.space 0x10
|
||||
|
||||
gUnknown_3003F50: @ 3003F50
|
||||
gSendCmd: @ 3003F50
|
||||
.space 0x10
|
||||
|
||||
gUnknown_3003F60: @ 3003F60
|
||||
@@ -78,13 +78,13 @@ gReceivedRemoteLinkPlayers: @ 3003F64
|
||||
gLinkTestBGInfo: @ 3003F70
|
||||
.space 0x10
|
||||
|
||||
gUnknown_3003F80: @ 3003F80
|
||||
gLinkCallback: @ 3003F80
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3003F84: @ 3003F84
|
||||
gShouldAdvanceLinkState: @ 3003F84
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3003F88: @ 3003F88
|
||||
gLinkTestBlockChecksums: @ 3003F88
|
||||
.space 0x8
|
||||
|
||||
gUnknown_3003F90: @ 3003F90
|
||||
|
||||
+2
-50
@@ -13,57 +13,9 @@
|
||||
.include "src/sprite.o"
|
||||
.align 2
|
||||
.include "src/string_util.o"
|
||||
|
||||
@ .include "src/link.o"
|
||||
gLinkTestDebugValuesEnabled: @ 2022110
|
||||
.space 0x1
|
||||
|
||||
gUnknown_2022111: @ 2022111
|
||||
.space 0x1
|
||||
|
||||
.align 2
|
||||
gUnknown_2022114: @ 2022114
|
||||
.space 0x4
|
||||
|
||||
gBlockRecvBuffer: @ 2022118
|
||||
.space 0x500
|
||||
|
||||
gBlockSendBuffer: @ 2022618
|
||||
.space 0x100
|
||||
|
||||
gLinkOpen: @ 2022718
|
||||
.space 0x1
|
||||
|
||||
.align 1
|
||||
gLinkType: @ 202271A
|
||||
.space 0x2
|
||||
|
||||
gLinkTimeOutCounter: @ 202271C
|
||||
.space 0x2
|
||||
|
||||
.align 2
|
||||
gLocalLinkPlayer: @ 2022720
|
||||
.space 0x1C
|
||||
|
||||
.align 2
|
||||
gLinkPlayers: @ 202273C
|
||||
.space 0x8C
|
||||
|
||||
.align 2
|
||||
gSavedLinkPlayers: @ 20227C8
|
||||
.space 0x8C
|
||||
|
||||
.align 2
|
||||
sLinkErrorBuffer: @ 2022854
|
||||
.space 0x8
|
||||
|
||||
.align 1
|
||||
gUnknown_202285C: @ 202285C
|
||||
.space 0x2
|
||||
|
||||
.align 2
|
||||
gUnknown_2022860: @ 2022860
|
||||
.space 0xC
|
||||
.include "src/link.o"
|
||||
.space 8
|
||||
|
||||
@ .include "src/link_rfu.o"
|
||||
.include "src/battle_controllers.o"
|
||||
|
||||
Reference in New Issue
Block a user