link_rfu_2 through sub_80F8F5C
This commit is contained in:
-1158
File diff suppressed because it is too large
Load Diff
@@ -6,93 +6,6 @@
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnknown_843EBB4:: @ 843EBB4
|
||||
.byte 0x04, 0x20
|
||||
.2byte 0x0000
|
||||
.byte 0x00
|
||||
.align 1
|
||||
.2byte 0x0002
|
||||
.4byte gUnknown_3005440
|
||||
.4byte Rfu+2480
|
||||
.byte 0x01, 0x00
|
||||
.2byte 0x0258, 0x012c
|
||||
.align 2
|
||||
|
||||
gUnknown_843EBCC:: @ 843EBCC
|
||||
.byte 0x00, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
gUnknown_843EBD4:: @ 843EBD4
|
||||
.4byte 0x00000000, 0x00000001, 0x00000003, 0x00000007, 0x0000000f, 0x0000001f, 0x0000003f, 0x0000007f
|
||||
.4byte 0x000000ff, 0x000001ff, 0x000003ff, 0x000007ff, 0x00000fff, 0x00001fff, 0x00003fff, 0x00007fff
|
||||
.4byte 0x0000ffff, 0x0001ffff, 0x0003ffff, 0x0007ffff, 0x000fffff, 0x001fffff, 0x003fffff, 0x007fffff
|
||||
.4byte 0x00ffffff
|
||||
|
||||
gUnknown_843EC38:: @ 843EC38
|
||||
.byte 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02
|
||||
.byte 0x03
|
||||
|
||||
gUnknown_843EC41:: @ 843EC41
|
||||
.byte 0x00, 0x01, 0x01, 0x02, 0x01, 0x02, 0x02, 0x03
|
||||
.byte 0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04
|
||||
|
||||
gUnknown_843EC51:: @ 843EC51
|
||||
.byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00
|
||||
.byte 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00
|
||||
.byte 0x00, 0x00, 0x00
|
||||
|
||||
gUnknown_843EC64:: @ 843EC64
|
||||
.4byte gBlockSendBuffer
|
||||
.2byte 0xc8
|
||||
.align 2
|
||||
.4byte gBlockSendBuffer
|
||||
.2byte 0xc8
|
||||
.align 2
|
||||
.4byte gBlockSendBuffer
|
||||
.2byte 0x64
|
||||
.align 2
|
||||
.4byte gBlockSendBuffer
|
||||
.2byte 0xdc
|
||||
.align 2
|
||||
.4byte gBlockSendBuffer
|
||||
.2byte 0x28
|
||||
.align 2
|
||||
|
||||
gUnknown_843EC8C:: @ 843EC8C
|
||||
.2byte 0x0002, 0x7f7d, 0xffff
|
||||
|
||||
.macro ascipad str, len
|
||||
1:
|
||||
.ascii "\str"
|
||||
2:
|
||||
.space \len - (2b - 1b)
|
||||
.endm
|
||||
|
||||
sUnref_843EC92::
|
||||
ascipad "RFU WAIT", 15
|
||||
ascipad "RFU BOOT", 15
|
||||
ascipad "RFU ERROR", 15
|
||||
ascipad "RFU RESET", 15
|
||||
ascipad "RFU CONFIG", 15
|
||||
ascipad "RFU START", 15
|
||||
ascipad "RFU SC POLL", 15
|
||||
ascipad "RFU SP POLL", 15
|
||||
ascipad "RFU START", 15
|
||||
ascipad "RFU SEND ERR", 15
|
||||
ascipad "RFU CP POLL", 15
|
||||
|
||||
sUnref_843ED38::
|
||||
ascipad " ", 16
|
||||
ascipad "RECOVER START ", 16
|
||||
ascipad "DISSCONECT ", 16
|
||||
ascipad "RECOVER SUUSES", 16
|
||||
ascipad "RECOVER FAILED", 16
|
||||
|
||||
.align 2
|
||||
gUnknown_843ED88:: @ 843ED88
|
||||
.4byte sub_80FA834
|
||||
.4byte sub_80FAA94
|
||||
.4byte sub_80FACF0
|
||||
|
||||
.align 2
|
||||
gUnknown_843ED94:: @ 843ED94
|
||||
abspath "rfu.c"
|
||||
|
||||
@@ -24,6 +24,20 @@ struct UnkLinkRfuStruct_02022B2C
|
||||
u16 unk_14;
|
||||
};
|
||||
|
||||
struct UnkLinkRfuStruct_02022B44
|
||||
{
|
||||
u8 fill_00[6];
|
||||
u16 unk_06;
|
||||
u8 fill_08[6];
|
||||
vu8 unk_0e;
|
||||
u8 unk_0f;
|
||||
u8 fill_10[0x54];
|
||||
u16 unk_64;
|
||||
u8 fill_66[0x1d];
|
||||
u8 unk_83;
|
||||
u8 fill_84[0x58];
|
||||
};
|
||||
|
||||
struct UnkRfuStruct_1
|
||||
{
|
||||
/* 0x000 */ u8 unk_00;
|
||||
@@ -65,6 +79,26 @@ struct UnkRfuStruct_1
|
||||
/* 0x044 */ void (*unk_44)(u16);
|
||||
};
|
||||
|
||||
struct UnkRfuStruct_2_Sub_124
|
||||
{
|
||||
/* 0x000 */ u8 unk_00[20][70];
|
||||
/* 0x578 */ vu8 unk_8c0;
|
||||
/* 0x579 */ vu8 unk_8c1;
|
||||
/* 0x57a */ vu8 unk_8c2;
|
||||
/* 0x57b */ vu8 unk_8c3;
|
||||
};
|
||||
|
||||
struct UnkRfuStruct_2_Sub_9e8
|
||||
{
|
||||
/* 0x000 */ u8 unk_00[40][14];
|
||||
/* 0x230 */ vu8 unk_230;
|
||||
/* 0x231 */ vu8 unk_231;
|
||||
/* 0x232 */ vu8 unk_232;
|
||||
/* 0x233 */ vu8 unk_233;
|
||||
};
|
||||
|
||||
extern struct UnkRfuStruct_1 gUnknown_3005E10;
|
||||
|
||||
void AddTextPrinterToWindow1(const u8 *str);
|
||||
bool32 MG_PrintTextOnWindow1AndWaitButton(u8 * cmdPtr, const u8 * src);
|
||||
void sub_80FA190(void);
|
||||
@@ -106,6 +140,20 @@ void sub_80FCF34(void);
|
||||
void InitRFU(void);
|
||||
void sub_80FEB14(void);
|
||||
|
||||
void sub_80FC478(struct UnkRfuStruct_2_Sub_124 *ptr);
|
||||
void sub_80FC4D4(struct UnkRfuStruct_2_Sub_9e8 *ptr);
|
||||
|
||||
void sub_80FD4B0(const struct UnkLinkRfuStruct_02022B2C *unk0);
|
||||
u8 sub_80FD538(u8 r5, u16 r7, u16 r8, const u16 *r6);
|
||||
void sub_80FD760(bool8 a0);
|
||||
void sub_80FEA10(void (*func)(u16));
|
||||
void sub_80FB9E4(u8 a0, u16 a1);
|
||||
u8 sub_80FB9F4(void);
|
||||
void LinkRfu_REQ_SendData_HandleParentRelationship(bool8 clockChangeFlag);
|
||||
void sub_80FC588(struct UnkRfuStruct_2_Sub_124 *q1, u8 *q2);
|
||||
void sub_80FD52C(void);
|
||||
u8 sub_80FD610(u16 parentId, u16 unk_1a);
|
||||
|
||||
#include "mevent_server.h"
|
||||
extern const struct mevent_server_cmd gMEventSrvScript_OtherTrainerCanceled[];
|
||||
|
||||
|
||||
@@ -225,6 +225,7 @@ SECTIONS {
|
||||
asm/box_party_pokemon_dropdown.o(.text);
|
||||
src/save_menu_util.o(.text);
|
||||
src/map_preview_screen.o(.text);
|
||||
src/link_rfu_2.o(.text);
|
||||
asm/link_rfu_2.o(.text);
|
||||
asm/link_rfu_4.o(.text);
|
||||
src/link_rfu.o(.text);
|
||||
@@ -510,6 +511,7 @@ SECTIONS {
|
||||
src/new_menu_helpers.o(.rodata);
|
||||
data/box_party_pokemon_dropdown.o(.rodata);
|
||||
src/map_preview_screen.o(.rodata);
|
||||
src/link_rfu_2.o(.rodata);
|
||||
data/link_rfu_2.o(.rodata);
|
||||
data/link_rfu_4.o(.rodata);
|
||||
data/link_rfu.o(.rodata);
|
||||
|
||||
@@ -0,0 +1,638 @@
|
||||
#include "global.h"
|
||||
#include "librfu.h"
|
||||
#include "link.h"
|
||||
#include "link_rfu.h"
|
||||
#include "quest_log.h"
|
||||
#include "task.h"
|
||||
|
||||
struct UnkRfuStruct_2_Sub_6c
|
||||
{
|
||||
/* 0x00 */ u16 unk_00;
|
||||
/* 0x02 */ u16 unk_02;
|
||||
/* 0x04 */ const u8 *unk_04;
|
||||
/* 0x08 */ u32 unk_08;
|
||||
/* 0x0c */ u32 unk_0c;
|
||||
/* 0x10 */ u8 unk_10;
|
||||
/* 0x11 */ u8 unk_11;
|
||||
/* 0x12 */ u8 unk_12;
|
||||
};
|
||||
|
||||
struct UnkRfuStruct_2_Sub_c1c
|
||||
{
|
||||
/* 0x00 */ u8 unk_00[2][14];
|
||||
/* 0x1c */ vu8 unk_1c;
|
||||
/* 0x1d */ vu8 unk_1d;
|
||||
/* 0x1e */ vu8 unk_1e;
|
||||
};
|
||||
|
||||
struct
|
||||
{
|
||||
/* 0x000 */ void (*RfuFunc)(void);
|
||||
/* 0x004 */ u16 unk_04;
|
||||
/* 0x006 */ u8 filler_06[4];
|
||||
/* 0x00a */ u16 unk_0a;
|
||||
/* 0x00c */ u8 unk_0c;
|
||||
/* 0x00d */ u8 playerCount;
|
||||
/* 0x00e */ u8 unk_0e;
|
||||
/* 0x00f */ u8 unk_0f;
|
||||
/* 0x010 */ u16 unk_10;
|
||||
/* 0x012 */ u16 unk_12;
|
||||
/* 0x014 */ u8 unk_14[4][14];
|
||||
/* 0x04c */ u8 unk_4c[14];
|
||||
/* 0x05a */ u8 unk_5a;
|
||||
/* 0x05b */ u8 unk_5b;
|
||||
/* 0x05c */ u8 unk_5c[5];
|
||||
/* 0x061 */ u8 unk_61[5];
|
||||
/* 0x066 */ u8 unk_66;
|
||||
/* 0x067 */ u8 unk_67;
|
||||
/* 0x068 */ u8 filler_68[4];
|
||||
/* 0x06c */ struct UnkRfuStruct_2_Sub_6c unk_6c;
|
||||
/* 0x080 */ struct UnkRfuStruct_2_Sub_6c unk_80[5];
|
||||
/* 0x0e4 */ u8 unk_e4[5];
|
||||
/* 0x0e9 */ u8 unk_e9[5];
|
||||
/* 0x0ee */ vu8 unk_ee;
|
||||
/* 0x0ef */ u8 unk_ef;
|
||||
/* 0x0f0 */ u8 unk_f0;
|
||||
/* 0x0f1 */ u8 unk_f1;
|
||||
/* 0x0f2 */ u16 unk_f2[6];
|
||||
/* 0x0fe */ u16 unk_fe;
|
||||
/* 0x100 */ u16 unk_100;
|
||||
/* 0x102 */ u8 unk_102;
|
||||
/* 0x103 */ u8 filler_103[0x10A - 0x103];
|
||||
/* 0x10A */ struct UnkLinkRfuStruct_02022B14 unk_10A;
|
||||
/* 0x11B */ u8 filler_;
|
||||
/* 0x11C */ u8 playerName[PLAYER_NAME_LENGTH];
|
||||
/* 0x124 */ struct UnkRfuStruct_2_Sub_124 unk_124;
|
||||
/* 0x6a0 */ struct UnkRfuStruct_2_Sub_9e8 unk_9e8;
|
||||
/* 0x8d4 */ struct UnkRfuStruct_2_Sub_c1c unk_c1c;
|
||||
/* 0x8f4 */ vu8 unk_c3c;
|
||||
/* 0x8f5 */ u8 unk_c3d;
|
||||
/* 0x8f6 */ vu8 unk_c3e;
|
||||
/* 0x8f7 */ u8 unk_c3f[70];
|
||||
/* 0x93d */ u8 unk_c85;
|
||||
/* 0x93e */ u8 unk_c86;
|
||||
/* 0x93f */ u8 unk_c87[5][7][2];
|
||||
/* 0x985 */ u8 unk_ccd;
|
||||
/* 0x986 */ u8 unk_cce;
|
||||
/* 0x987 */ u8 unk_ccf;
|
||||
/* 0x988 */ vu8 unk_cd0;
|
||||
/* 0x989 */ u8 unk_cd1[4];
|
||||
/* 0x98d */ u8 unk_cd5[4];
|
||||
/* 0x991 */ u8 unk_cd9;
|
||||
/* 0x992 */ u8 unk_cda;
|
||||
/* 0x993 */ vu8 unk_cdb;
|
||||
/* 0x994 */ vu8 unk_cdc;
|
||||
/* 0x995 */ u8 unk_cdd;
|
||||
/* 0x996 */ u8 unk_cde[4];
|
||||
/* 0x99a */ u8 unk_ce2;
|
||||
/* 0x99b */ u8 unk_ce3;
|
||||
/* 0x99c */ u8 unk_ce4;
|
||||
/* 0x99d */ u8 unk_ce5;
|
||||
/* 0x99e */ u8 unk_ce6;
|
||||
/* 0x99f */ u8 unk_ce7;
|
||||
/* 0x9a0 */ u8 unk_ce8;
|
||||
/* 0x9a1 */ u8 unk_ce9;
|
||||
/* 0x9a2 */ u8 unk_cea[4];
|
||||
/* 0x9a6 */ u8 unk_cee[4];
|
||||
} Rfu; // size: 0x9AC
|
||||
|
||||
EWRAM_DATA struct UnkLinkRfuStruct_02022B2C gUnknown_203ABF0 = {};
|
||||
EWRAM_DATA struct UnkLinkRfuStruct_02022B44 gUnknown_203AC08 = {};
|
||||
|
||||
ALIGNED(8) IWRAM_DATA u8 gUnknown_3001188;
|
||||
ALIGNED(8) IWRAM_DATA struct RfuAPIBuffer gRfuAPIBuffer;
|
||||
ALIGNED(8) IWRAM_DATA u8 gUnknown_3001FF8[14];
|
||||
ALIGNED(8) IWRAM_DATA u16 gUnknown_3002008[7];
|
||||
|
||||
struct UnkLinkRfuStruct_02022B14 gUnknown_3005440;
|
||||
u8 gUnknown_3005E00[PLAYER_NAME_LENGTH];
|
||||
|
||||
void sub_80F8AA4(void);
|
||||
void sub_80F8AEC(void);
|
||||
void sub_80F8D20(u16 a0);
|
||||
void sub_80F8DA8(u16 a0);
|
||||
void sub_80F906C(void);
|
||||
void sub_80F9CB4(struct UnkRfuStruct_2_Sub_6c *data);
|
||||
void sub_80FA738(void);
|
||||
int sub_80FA788(void);
|
||||
void sub_80FA834(u8 taskId);
|
||||
void sub_80FAA94(u8 taskId);
|
||||
void sub_80FACF0(u8 taskId);
|
||||
void sub_80FAFE0(u8 a0);
|
||||
void sub_80FC208(void);
|
||||
|
||||
const struct UnkLinkRfuStruct_02022B2C gUnknown_843EBB4 = {
|
||||
.unk_00 = 0x04,
|
||||
.unk_01 = 0x20,
|
||||
.unk_02 = 0x0000,
|
||||
.unk_04 = 0x00,
|
||||
.unk_06 = 0x0002,
|
||||
.unk_08 = &gUnknown_3005440,
|
||||
.unk_0c = gUnknown_3005E00,
|
||||
.unk_10 = 0x01,
|
||||
.unk_11 = 0x00,
|
||||
.unk_12 = 0x0258,
|
||||
.unk_14 = 0x012c
|
||||
};
|
||||
|
||||
const u8 gUnknown_843EBCC[] = {
|
||||
0, 3, 2, 1, 0
|
||||
};
|
||||
|
||||
const u32 gUnknown_843EBD4[] = {
|
||||
0x000000,
|
||||
0x000001,
|
||||
0x000003,
|
||||
0x000007,
|
||||
0x00000f,
|
||||
0x00001f,
|
||||
0x00003f,
|
||||
0x00007f,
|
||||
0x0000ff,
|
||||
0x0001ff,
|
||||
0x0003ff,
|
||||
0x0007ff,
|
||||
0x000fff,
|
||||
0x001fff,
|
||||
0x003fff,
|
||||
0x007fff,
|
||||
0x00ffff,
|
||||
0x01ffff,
|
||||
0x03ffff,
|
||||
0x07ffff,
|
||||
0x0fffff,
|
||||
0x1fffff,
|
||||
0x3fffff,
|
||||
0x7fffff,
|
||||
0xffffff
|
||||
};
|
||||
|
||||
const u8 gUnknown_843EC38[] = {
|
||||
0, 0, 1,
|
||||
1, 2, 2,
|
||||
2, 2, 3
|
||||
};
|
||||
|
||||
const u8 gUnknown_843EC41[] = {
|
||||
0, 1, 1, 2,
|
||||
1, 2, 2, 3,
|
||||
1, 2, 2, 3,
|
||||
2, 3, 3, 4
|
||||
};
|
||||
|
||||
const u8 gUnknown_843EC51[] = {
|
||||
0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0
|
||||
};
|
||||
|
||||
const struct {
|
||||
u8 *buffer;
|
||||
u32 size;
|
||||
} gUnknown_843EC64[] = {
|
||||
{ gBlockSendBuffer, 200 },
|
||||
{ gBlockSendBuffer, 200 },
|
||||
{ gBlockSendBuffer, 100 },
|
||||
{ gBlockSendBuffer, 220 },
|
||||
{ gBlockSendBuffer, 40 }
|
||||
};
|
||||
|
||||
const u16 gUnknown_843EC8C[] = {
|
||||
0x0002, 0x7f7d, 0xFFFF
|
||||
};
|
||||
|
||||
const char sUnref_843EC92[][15] = {
|
||||
"RFU WAIT",
|
||||
"RFU BOOT",
|
||||
"RFU ERROR",
|
||||
"RFU RESET",
|
||||
"RFU CONFIG",
|
||||
"RFU START",
|
||||
"RFU SC POLL",
|
||||
"RFU SP POLL",
|
||||
"RFU START",
|
||||
"RFU SEND ERR",
|
||||
"RFU CP POLL"
|
||||
};
|
||||
|
||||
const char sUnref_843ED37[][16] = {
|
||||
" ",
|
||||
"RECOVER START ",
|
||||
"DISSCONECT ",
|
||||
"RECOVER SUUSES",
|
||||
"RECOVER FAILED"
|
||||
};
|
||||
|
||||
const TaskFunc gUnknown_843ED88[] = {
|
||||
sub_80FA834,
|
||||
sub_80FAA94,
|
||||
sub_80FACF0
|
||||
};
|
||||
|
||||
void nullsub_87(const void *unused_0, u8 unused_1, u8 unused_2)
|
||||
{
|
||||
// debug?
|
||||
}
|
||||
|
||||
void nullsub_88(u16 unused_0, u8 unused_1, u8 unused_2, u8 unused_3)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void sub_80F85F8(void)
|
||||
{
|
||||
s32 i;
|
||||
u8 unk_ee_bak = Rfu.unk_ee;
|
||||
CpuFill16(0, &Rfu, sizeof Rfu);
|
||||
Rfu.unk_0c = 0xFF;
|
||||
Rfu.unk_ee = unk_ee_bak;
|
||||
if (Rfu.unk_ee != 4)
|
||||
{
|
||||
Rfu.unk_ee = 0;
|
||||
}
|
||||
for (i = 0; i < 5; i++)
|
||||
{
|
||||
sub_80F9CB4(Rfu.unk_80 + i);
|
||||
}
|
||||
sub_80F9CB4(&Rfu.unk_6c);
|
||||
sub_80FC478(&Rfu.unk_124);
|
||||
sub_80FC4D4(&Rfu.unk_9e8);
|
||||
CpuFill16(0, gSendCmd, sizeof gSendCmd);
|
||||
CpuFill16(0, gRecvCmds, sizeof gRecvCmds);
|
||||
CpuFill16(0, gLinkPlayers, sizeof gLinkPlayers);
|
||||
}
|
||||
|
||||
void InitRFU(void)
|
||||
{
|
||||
IntrFunc serialIntr = gIntrTable[1];
|
||||
IntrFunc timerIntr = gIntrTable[2];
|
||||
sub_80F86F4();
|
||||
rfu_REQ_stopMode();
|
||||
rfu_waitREQComplete();
|
||||
REG_IME = 0;
|
||||
gIntrTable[1] = serialIntr;
|
||||
gIntrTable[2] = timerIntr;
|
||||
REG_IME = INTR_FLAG_VBLANK;
|
||||
}
|
||||
|
||||
void sub_80F86F4(void)
|
||||
{
|
||||
if (!rfu_initializeAPI(&gRfuAPIBuffer, sizeof gRfuAPIBuffer, gIntrTable + 1, TRUE))
|
||||
{
|
||||
gLinkType = 0;
|
||||
sub_80FB128(0);
|
||||
sub_80F85F8();
|
||||
rfu_setTimerInterrupt(3, gIntrTable + 2);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80F8738(u8 taskId)
|
||||
{
|
||||
sub_80FA738();
|
||||
switch (Rfu.unk_04)
|
||||
{
|
||||
case 0:
|
||||
sub_80FD4B0(&gUnknown_203ABF0);
|
||||
Rfu.unk_04 = 1;
|
||||
gTasks[taskId].data[1] = 1;
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
case 2:
|
||||
sub_80FD538(Rfu.unk_0c, 0, 240, gUnknown_843EC8C);
|
||||
Rfu.unk_04 = 3;
|
||||
gTasks[taskId].data[1] = 6;
|
||||
break;
|
||||
case 3:
|
||||
break;
|
||||
case 4:
|
||||
sub_80FD760(FALSE);
|
||||
Rfu.unk_04 = 5;
|
||||
break;
|
||||
case 5:
|
||||
break;
|
||||
case 18:
|
||||
Rfu.unk_cdb = 0;
|
||||
sub_80FEA10(sub_80F8DA8);
|
||||
sub_80F8AA4();
|
||||
sub_80F8AEC();
|
||||
Rfu.unk_04 = 20;
|
||||
gTasks[taskId].data[1] = 8;
|
||||
CreateTask(sub_80FA834, 5);
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
s32 sub_80F886C(u8 idx)
|
||||
{
|
||||
return gUnknown_843EC51[idx];
|
||||
}
|
||||
|
||||
void sub_80F887C(s32 r2, s32 r5)
|
||||
{
|
||||
u8 i;
|
||||
u8 r4 = 1;
|
||||
s32 r1 = r2;
|
||||
s32 r6 = 0;
|
||||
if (r5 == -1)
|
||||
{
|
||||
for (i = 0; i < 4; r2 >>= 1, i++)
|
||||
{
|
||||
if (r2 & 1)
|
||||
{
|
||||
Rfu.unk_cde[i] = r4;
|
||||
r4++;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0; i < 4; r1 >>= 1, i++)
|
||||
{
|
||||
if (!(r1 & 1))
|
||||
{
|
||||
Rfu.unk_cde[i] = 0;
|
||||
}
|
||||
}
|
||||
for (r4 = 4; r4 != 0; r4--)
|
||||
{
|
||||
for (i = 0; i < 4 && Rfu.unk_cde[i] != r4; i++);
|
||||
if (i == 4)
|
||||
{
|
||||
r6 = r4;
|
||||
}
|
||||
}
|
||||
for (r5 &= ~r2, i = 0; i < 4; r5 >>= 1, i++)
|
||||
{
|
||||
if (r5 & 1)
|
||||
{
|
||||
Rfu.unk_cde[i] = r6++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80F893C(u8 taskId)
|
||||
{
|
||||
switch (Rfu.unk_04)
|
||||
{
|
||||
case 0:
|
||||
sub_80FD4B0(&gUnknown_843EBB4);
|
||||
Rfu.unk_04 = 1;
|
||||
gTasks[taskId].data[1] = 1;
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
case 6:
|
||||
sub_80FD538(Rfu.unk_0c, 0, 0xf0, gUnknown_843EC8C);
|
||||
Rfu.unk_04 = 7;
|
||||
gTasks[taskId].data[1] = 7;
|
||||
break;
|
||||
case 7:
|
||||
break;
|
||||
case 9:
|
||||
gTasks[taskId].data[1] = 10;
|
||||
break;
|
||||
case 11:
|
||||
switch (sub_80FA788())
|
||||
{
|
||||
case 5:
|
||||
Rfu.unk_04 = 12;
|
||||
break;
|
||||
case 6:
|
||||
case 9:
|
||||
sub_80FEB14();
|
||||
Rfu.unk_ce4 = 2;
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 12:
|
||||
{
|
||||
u8 r5 = 1 << Rfu.unk_c3e;
|
||||
rfu_clearSlot(12, Rfu.unk_c3e);
|
||||
rfu_setRecvBuffer(16, Rfu.unk_c3e, Rfu.unk_c3f, 70);
|
||||
rfu_UNI_setSendData(r5, Rfu.unk_4c, 14);
|
||||
gTasks[taskId].data[1] = 8;
|
||||
DestroyTask(taskId);
|
||||
if (gUnknown_203AC08.unk_0f == 0)
|
||||
{
|
||||
sub_80FC208();
|
||||
gUnknown_203AC08.unk_0f++;
|
||||
}
|
||||
CreateTask(sub_80FA834, 5);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80F8AA4(void)
|
||||
{
|
||||
u8 i;
|
||||
u8 r5 = gUnknown_3005E10.unk_00;
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (r5 & 1)
|
||||
{
|
||||
rfu_setRecvBuffer(16, i, Rfu.unk_14[i], 14);
|
||||
rfu_clearSlot(3, i);
|
||||
}
|
||||
r5 >>= 1;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80F8AEC(void)
|
||||
{
|
||||
u8 r5 = gUnknown_3005E10.unk_00;
|
||||
rfu_UNI_setSendData(r5, Rfu.unk_c87, 70);
|
||||
Rfu.unk_cda = sub_80F886C(r5);
|
||||
Rfu.unk_ce2 = r5;
|
||||
sub_80F887C(r5, -1);
|
||||
Rfu.unk_0c = 1;
|
||||
}
|
||||
|
||||
void sub_80F8B34(u8 taskId)
|
||||
{
|
||||
if (sub_80F9800()->unk_0a_0 == 0x54 && sub_80FB9F4() == 4)
|
||||
{
|
||||
rfu_REQ_disconnect(gUnknown_3005E10.unk_00);
|
||||
rfu_waitREQComplete();
|
||||
sub_80FB9E4(0, 0);
|
||||
}
|
||||
switch (Rfu.unk_04)
|
||||
{
|
||||
case 0:
|
||||
sub_80FD4B0(&gUnknown_203ABF0);
|
||||
Rfu.unk_04 = 1;
|
||||
gTasks[taskId].data[1] = 1;
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
case 17:
|
||||
sub_80FD538(2, 0, 240, gUnknown_843EC8C);
|
||||
sub_80FEA10(sub_80F8D20);
|
||||
Rfu.unk_04 = 18;
|
||||
break;
|
||||
case 18:
|
||||
break;
|
||||
case 13:
|
||||
if (rfu_UNI_setSendData(1 << Rfu.unk_c3e, Rfu.unk_4c, 14) == 0)
|
||||
{
|
||||
Rfu.unk_0c = 0;
|
||||
DestroyTask(taskId);
|
||||
if (gTasks[taskId].data[7])
|
||||
{
|
||||
CreateTask(sub_80FACF0, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
CreateTask(sub_80FA834, 5);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 14:
|
||||
sub_80FD760(0);
|
||||
Rfu.unk_04 = 15;
|
||||
break;
|
||||
case 15:
|
||||
break;
|
||||
case 16:
|
||||
Rfu.unk_cdb = 0;
|
||||
sub_80FEA10(sub_80F8DA8);
|
||||
sub_80FAFE0(1);
|
||||
sub_80F8AA4();
|
||||
sub_80F8AEC();
|
||||
Rfu.unk_04 = 20;
|
||||
gTasks[taskId].data[1] = 8;
|
||||
Rfu.unk_0c = 1;
|
||||
CreateTask(sub_80FA834, 5);
|
||||
Rfu.unk_ce8 = 1;
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80F8CFC(void)
|
||||
{
|
||||
sub_80FD538(1, 0, 240, gUnknown_843EC8C);
|
||||
}
|
||||
|
||||
void sub_80F8D14(void)
|
||||
{
|
||||
sub_80FD760(FALSE);
|
||||
}
|
||||
|
||||
void sub_80F8D20(u16 unused)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 14; i++)
|
||||
{
|
||||
Rfu.unk_4c[i] = 0;
|
||||
}
|
||||
rfu_REQ_recvData();
|
||||
rfu_waitREQComplete();
|
||||
if (gRfuSlotStatusUNI[Rfu.unk_c3e]->recv.newDataFlag)
|
||||
{
|
||||
Rfu.unk_cd0++;
|
||||
sub_80FC588(&Rfu.unk_124, Rfu.unk_c3f);
|
||||
gUnknown_203AC08.unk_06++;
|
||||
sub_80F906C();
|
||||
rfu_UNI_readySendData(Rfu.unk_c3e);
|
||||
rfu_UNI_clearRecvNewDataFlag(Rfu.unk_c3e);
|
||||
}
|
||||
LinkRfu_REQ_SendData_HandleParentRelationship(TRUE);
|
||||
}
|
||||
|
||||
void sub_80F8DA8(u16 unused)
|
||||
{
|
||||
Rfu.unk_cdb = 1;
|
||||
}
|
||||
|
||||
void sub_80F8DC0(void)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3)
|
||||
return;
|
||||
|
||||
sub_80FD52C();
|
||||
if (Rfu.unk_0c == 1)
|
||||
{
|
||||
if (FuncIsActiveTask(sub_80F8738) == TRUE)
|
||||
{
|
||||
DestroyTask(Rfu.unk_67);
|
||||
sub_80F85F8();
|
||||
}
|
||||
}
|
||||
else if (Rfu.unk_0c == 0)
|
||||
{
|
||||
if (FuncIsActiveTask(sub_80F893C) == TRUE)
|
||||
{
|
||||
DestroyTask(Rfu.unk_67);
|
||||
sub_80F85F8();
|
||||
}
|
||||
}
|
||||
else if (Rfu.unk_0c == 2)
|
||||
{
|
||||
if (FuncIsActiveTask(sub_80F8B34) == TRUE)
|
||||
{
|
||||
DestroyTask(Rfu.unk_67);
|
||||
sub_80F85F8();
|
||||
}
|
||||
}
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
if (FuncIsActiveTask(gUnknown_843ED88[i]) == TRUE)
|
||||
{
|
||||
DestroyTask(FindTaskIdByFunc(gUnknown_843ED88[i]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80F8E74(void)
|
||||
{
|
||||
if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3)
|
||||
return;
|
||||
Rfu.unk_67 = CreateTask(sub_80F8738, 1);
|
||||
}
|
||||
|
||||
bool8 sub_80F8EA4(void)
|
||||
{
|
||||
if (Rfu.unk_04 == 7 && Rfu.unk_ccd)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool32 sub_80F8ECC(void)
|
||||
{
|
||||
if (Rfu.unk_04 == 7 && !sub_80FD610(gRfuLinkStatus->partner[Rfu.unk_c3d].id, 240))
|
||||
{
|
||||
Rfu.unk_04 = 9;
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_80F8F10(void)
|
||||
{
|
||||
if (gUnknown_203ADFA == 2 || gUnknown_203ADFA == 3)
|
||||
return;
|
||||
Rfu.unk_67 = CreateTask(sub_80F893C, 1);
|
||||
}
|
||||
|
||||
bool8 sub_80F8F40(void)
|
||||
{
|
||||
if (gUnknown_3005E10.unk_00)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void sub_80F8F5C(void)
|
||||
{
|
||||
Rfu.unk_04 = 4;
|
||||
Rfu.unk_ce7 = gUnknown_3005E10.unk_00;
|
||||
}
|
||||
+3
-12
@@ -70,19 +70,10 @@ gUnknown_3000FE8: @ 3000FE8
|
||||
|
||||
.align 2
|
||||
.include "src/easy_chat.o"
|
||||
.align 2
|
||||
.include "src/link_rfu_2.o"
|
||||
|
||||
gUnknown_3001188: @ 3001188
|
||||
.space 0x8
|
||||
|
||||
gRfuAPIBuffer: @ 3001190
|
||||
.space 0xE68
|
||||
|
||||
gUnknown_3001FF8: @ 3001FF8
|
||||
.space 0x10
|
||||
|
||||
gUnknown_3002008: @ 3002008
|
||||
.space 0x10
|
||||
|
||||
.align 2
|
||||
gUnknown_3002018: @ 3002018
|
||||
.space 0x4
|
||||
|
||||
|
||||
Reference in New Issue
Block a user