data/link_rfu.s --> data/easy_chat_2.s

This commit is contained in:
PikalaxALT
2020-01-14 12:50:49 -05:00
parent 0d5f88f496
commit 5ef7bf7bf4
10 changed files with 681 additions and 1175 deletions
+14 -987
View File
File diff suppressed because it is too large Load Diff
-124
View File
@@ -2,127 +2,3 @@
.include "constants/constants.inc"
.section .rodata
.align 2, 0
gUnknown_843EEC0::
.incbin "graphics/interface/wireless_link_icon.gbapal"
gUnknown_843EEE0::
.incbin "graphics/interface/wireless_link_icon.4bpp.lz"
gUnknown_843F004:: @ 843F004
.byte 0xff, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x37
.byte 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f
.byte 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47
.byte 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f
.byte 0x00, 0xab, 0xb5, 0xb6, 0xb1, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0xb2, 0xf1, 0x00, 0xae, 0xad, 0xba
.byte 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8
.byte 0xa9, 0xaa, 0x00, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f
.byte 0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1
.byte 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9
.byte 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1
.byte 0xd2, 0xd3, 0xd4, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6
.byte 0x00, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb
.byte 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3
.byte 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb
.byte 0xec, 0xed, 0xee, 0x2d, 0x2f, 0x30, 0x31, 0x32
.byte 0x33, 0x34, 0x35, 0x36, 0x50, 0x00, 0x01, 0x02
.byte 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a
.byte 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12
.byte 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a
.byte 0x1b, 0xad, 0xb3, 0xb4, 0x00, 0xaf, 0x7d, 0x7f
.byte 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0xa0
.byte 0xae, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57
.byte 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f
.byte 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67
.byte 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f
.byte 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77
.byte 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7e, 0xb0, 0xac
.byte 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23
.byte 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b
.byte 0x2c, 0x2e, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c
.byte 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94
gUnknown_843F104:: @ 843F104
.byte 0x20, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c
.byte 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94
.byte 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c
.byte 0x9d, 0x9e, 0x9f, 0xa0, 0xe0, 0xe1, 0xe2, 0xe3
.byte 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb
.byte 0xec, 0xed, 0xee, 0xef, 0xf0, 0x7b, 0xf1, 0x7c
.byte 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x07
.byte 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f
.byte 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17
.byte 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
.byte 0x84, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7
.byte 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf
.byte 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7
.byte 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf
.byte 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7
.byte 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xa6, 0xdd, 0xa7
.byte 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xf2
.byte 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa
.byte 0xfb, 0xfc, 0xfd, 0xfe, 0xff, 0x01, 0x02, 0x03
.byte 0x04, 0x05, 0x06, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f
.byte 0xaf, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36
.byte 0x37, 0x38, 0x39, 0x21, 0xdf, 0xa1, 0xb0, 0xa5
.byte 0xde, 0x24, 0x2a, 0xa2, 0xa3, 0x22, 0x23, 0x20
.byte 0xa4, 0x20, 0x2f, 0x41, 0x42, 0x43, 0x44, 0x45
.byte 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d
.byte 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55
.byte 0x56, 0x57, 0x58, 0x59, 0x5a, 0x61, 0x62, 0x63
.byte 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b
.byte 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73
.byte 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x20
.byte 0x20, 0x2b, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x20
.byte 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00
gUnknown_843F204:: @ 843F204
.4byte 0x40000000, 0x00000000
gAnimCmd_843F20C::
obj_image_anim_frame 0x0004, 5
obj_image_anim_frame 0x0008, 5
obj_image_anim_frame 0x000c, 5
obj_image_anim_frame 0x0010, 10
obj_image_anim_frame 0x000c, 5
obj_image_anim_frame 0x0008, 5
obj_image_anim_jump 0
gAnimCmd_843F228::
obj_image_anim_frame 0x0004, 5
obj_image_anim_frame 0x0008, 5
obj_image_anim_frame 0x000c, 10
obj_image_anim_frame 0x0008, 5
obj_image_anim_jump 0
gAnimCmd_843F23C::
obj_image_anim_frame 0x0004, 5
obj_image_anim_frame 0x0008, 5
obj_image_anim_jump 0
gAnimCmd_843F248::
obj_image_anim_frame 0x0004, 10
obj_image_anim_frame 0x0014, 10
obj_image_anim_jump 0
gAnimCmd_843F254::
obj_image_anim_frame 0x0018, 10
obj_image_anim_frame 0x0004, 10
obj_image_anim_jump 0
gSpriteAnimTable_843F260::
.4byte gAnimCmd_843F20C
.4byte gAnimCmd_843F228
.4byte gAnimCmd_843F23C
.4byte gAnimCmd_843F248
.4byte gAnimCmd_843F254
gUnknown_843F274:: @ 843F274
obj_tiles gUnknown_843EEE0, 0x0380, 54321
gUnknown_843F27C:: @ 843F27C
obj_pal gUnknown_843EEC0, 54322
gUnknown_843F284:: @ 843F284
spr_template 54321, 54322, gUnknown_843F204, gSpriteAnimTable_843F260, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+19 -10
View File
@@ -145,6 +145,15 @@ struct UnkRfuStruct_2_Sub_c1c
/* 0x1e */ vu8 unk_1e;
};
struct UnkRfuStruct_Sub_Unused
{
/* 0x000 */ u8 unk_00[2][256];
/* 0x200 */ vu8 unk_200;
/* 0x201 */ vu8 unk_201;
/* 0x202 */ vu8 unk_202;
/* 0x203 */ vu8 unk_203;
};
struct UnkRfuStruct_2
{
/* 0x000 */ void (*RfuFunc)(void);
@@ -157,7 +166,7 @@ struct UnkRfuStruct_2
/* 0x00f */ u8 unk_0f;
/* 0x010 */ u16 unk_10;
/* 0x012 */ u16 unk_12;
/* 0x014 */ u8 unk_14[4][14];
/* 0x014 */ u8 unk_14[RFU_CHILD_MAX][14];
/* 0x04c */ u8 unk_4c[14];
/* 0x05a */ u8 unk_5a;
/* 0x05b */ u8 unk_5b;
@@ -193,14 +202,14 @@ struct UnkRfuStruct_2
/* 0x986 */ u8 unk_cce; // childId
/* 0x987 */ u8 unk_ccf;
/* 0x988 */ vu8 unk_cd0;
/* 0x989 */ u8 unk_cd1[4];
/* 0x98d */ u8 unk_cd5[4];
/* 0x989 */ u8 unk_cd1[RFU_CHILD_MAX];
/* 0x98d */ u8 unk_cd5[RFU_CHILD_MAX];
/* 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];
/* 0x996 */ u8 unk_cde[RFU_CHILD_MAX];
/* 0x99a */ u8 unk_ce2;
/* 0x99b */ u8 unk_ce3;
/* 0x99c */ u8 unk_ce4;
@@ -209,8 +218,8 @@ struct UnkRfuStruct_2
/* 0x99f */ u8 unk_ce7;
/* 0x9a0 */ u8 unk_ce8;
/* 0x9a1 */ u8 unk_ce9;
/* 0x9a2 */ u8 unk_cea[4];
/* 0x9a6 */ u8 unk_cee[4];
/* 0x9a2 */ u8 unk_cea[RFU_CHILD_MAX];
/* 0x9a6 */ u8 unk_cee[RFU_CHILD_MAX];
}; // size: 0x9AC
extern struct UnkRfuStruct_1 gUnknown_3005E10;
@@ -235,7 +244,7 @@ bool32 IsSendingKeysToRfu(void);
void Rfu_set_zero(void);
u8 GetRfuPlayerCount(void);
void sub_80F9828(void);
u8 rfu_get_multiplayer_id(void);
u8 LinkRfu_GetMultiplayerId(void);
bool32 Rfu_InitBlockSend(const u8 * src, size_t size);
bool8 sub_80FA0F8(u8 a0);
u8 Rfu_GetBlockReceivedStatus(void);
@@ -272,13 +281,13 @@ void sub_80FD52C(void);
u8 sub_80FD610(u16 parentId, u16 unk_1a);
bool8 sub_80FC79C(struct UnkRfuStruct_2_Sub_9e8 *q1, u8 *q2);
bool8 sub_80FC888(struct UnkRfuStruct_2_Sub_c1c *q1, u8 *q2);
bool8 sub_80FC828(struct UnkRfuStruct_2_Sub_c1c *q1, const u8 *q2);
void sub_80FC828(struct UnkRfuStruct_2_Sub_c1c *q1, const u8 *q2);
bool8 sub_80FC6E8(struct UnkRfuStruct_2_Sub_124 * a0, u8 *a1);
bool8 sub_80FC63C(struct UnkRfuStruct_2_Sub_9e8 * a0, u8 *a1);
void sub_80FC63C(struct UnkRfuStruct_2_Sub_9e8 * a0, u8 *a1);
u8 sub_80FEA34(u8 a0, u16 a1);
void sub_80FDA30(u32 a0);
void sub_80FCB54(struct GFtgtGname *data, u8 r9, bool32 r2, s32 r3);
void rfu_syncVBlank_(void);
void LinkRfu_syncVBlank_(void);
s32 sub_80FD430(void (*func1)(u8, u8), void (*func2)(u16));
void sub_80FEB3C(void);
void sub_80FAFE0(u8 a0);
+3 -2
View File
@@ -226,6 +226,7 @@ SECTIONS {
src/save_menu_util.o(.text);
src/map_preview_screen.o(.text);
src/link_rfu_2.o(.text);
src/link_rfu_4.o(.text);
asm/link_rfu_4.o(.text);
src/link_rfu.o(.text);
asm/easy_chat_2.o(.text);
@@ -511,8 +512,8 @@ SECTIONS {
data/box_party_pokemon_dropdown.o(.rodata);
src/map_preview_screen.o(.rodata);
src/link_rfu_2.o(.rodata);
data/link_rfu_4.o(.rodata);
data/link_rfu.o(.rodata);
src/link_rfu_4.o(.rodata);
data/easy_chat_2.o(.rodata);
src/pokedex_screen.o(.rodata);
data/pokedex_screen.o(.rodata);
src/list_menu.o(.rodata);
+1 -1
View File
@@ -984,7 +984,7 @@ u8 GetMultiplayerId(void)
{
if (gWirelessCommType == 1)
{
return rfu_get_multiplayer_id();
return LinkRfu_GetMultiplayerId();
}
return SIO_MULTI_CNT->id;
}
+1 -1
View File
@@ -417,7 +417,7 @@ static bool8 sub_80FD850(u16 reqCommandId)
return retVal;
}
void rfu_syncVBlank_(void)
void LinkRfu_syncVBlank_(void)
{
if (rfu_syncVBlank())
{
+45 -46
View File
@@ -24,7 +24,6 @@ struct UnkRfuStruct_8010A14{
static EWRAM_DATA struct UnkLinkRfuStruct_02022B2C gUnknown_203ABF0 = {};
static EWRAM_DATA struct UnkLinkRfuStruct_02022B44 gUnknown_203AC08 = {};
static u8 gUnknown_3001188;
static struct RfuAPIBuffer gRfuAPIBuffer;
static u8 gUnknown_3001FF8[14];
static u16 gUnknown_3002008[7];
@@ -276,7 +275,7 @@ static void sub_80F887C(s32 r2, s32 r5)
s32 r6 = 0;
if (r5 == -1)
{
for (i = 0; i < 4; r2 >>= 1, i++)
for (i = 0; i < RFU_CHILD_MAX; r2 >>= 1, i++)
{
if (r2 & 1)
{
@@ -287,7 +286,7 @@ static void sub_80F887C(s32 r2, s32 r5)
}
else
{
for (i = 0; i < 4; r1 >>= 1, i++)
for (i = 0; i < RFU_CHILD_MAX; r1 >>= 1, i++)
{
if (!(r1 & 1))
{
@@ -296,13 +295,13 @@ static void sub_80F887C(s32 r2, s32 r5)
}
for (r4 = 4; r4 != 0; r4--)
{
for (i = 0; i < 4 && Rfu.unk_cde[i] != r4; i++);
for (i = 0; i < RFU_CHILD_MAX && Rfu.unk_cde[i] != r4; i++);
if (i == 4)
{
r6 = r4;
}
}
for (r5 &= ~r2, i = 0; i < 4; r5 >>= 1, i++)
for (r5 &= ~r2, i = 0; i < RFU_CHILD_MAX; r5 >>= 1, i++)
{
if (r5 & 1)
{
@@ -351,8 +350,8 @@ static void sub_80F893C(u8 taskId)
{
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);
rfu_setRecvBuffer(16, Rfu.unk_c3e, Rfu.unk_c3f, sizeof(Rfu.unk_c3f));
rfu_UNI_setSendData(r5, Rfu.unk_4c, sizeof(Rfu.unk_4c));
gTasks[taskId].data[1] = 8;
DestroyTask(taskId);
if (gUnknown_203AC08.unk_0f == 0)
@@ -370,11 +369,11 @@ static void sub_80F8AA4(void)
{
u8 i;
u8 r5 = gUnknown_3005E10.unk_00;
for (i = 0; i < 4; i++)
for (i = 0; i < RFU_CHILD_MAX; i++)
{
if (r5 & 1)
{
rfu_setRecvBuffer(16, i, Rfu.unk_14[i], 14);
rfu_setRecvBuffer(16, i, Rfu.unk_14[i], sizeof(Rfu.unk_14[i]));
rfu_clearSlot(3, i);
}
r5 >>= 1;
@@ -384,7 +383,7 @@ static void sub_80F8AA4(void)
static void sub_80F8AEC(void)
{
u8 r5 = gUnknown_3005E10.unk_00;
rfu_UNI_setSendData(r5, Rfu.unk_c87, 70);
rfu_UNI_setSendData(r5, Rfu.unk_c87, sizeof(Rfu.unk_c87));
Rfu.unk_cda = sub_80F886C(r5);
Rfu.unk_ce2 = r5;
sub_80F887C(r5, -1);
@@ -416,7 +415,7 @@ static void sub_80F8B34(u8 taskId)
case 18:
break;
case 13:
if (rfu_UNI_setSendData(1 << Rfu.unk_c3e, Rfu.unk_4c, 14) == 0)
if (rfu_UNI_setSendData(1 << Rfu.unk_c3e, Rfu.unk_4c, sizeof(Rfu.unk_4c)) == 0)
{
Rfu.unk_0c = 0;
DestroyTask(taskId);
@@ -521,7 +520,7 @@ void sub_80F8DC0(void)
sub_80F85F8();
}
}
for (i = 0; i < 3; i++)
for (i = 0; i < NELEMS(gUnknown_843ED88); i++)
{
if (FuncIsActiveTask(gUnknown_843ED88[i]) == TRUE)
{
@@ -597,7 +596,7 @@ static void sub_80F8FAC(u8 a0)
{
u8 i;
for (i = 0; i < 4; i++)
for (i = 0; i < RFU_CHILD_MAX; i++)
{
if (a0 & 1)
{
@@ -751,7 +750,7 @@ static bool32 sub_80F9204(void)
Rfu.unk_cdc = 0;
gUnknown_203AC08.unk_06++;
flags = gUnknown_3005E10.unk_00;
for (i = 0; i < 4; i++)
for (i = 0; i < RFU_CHILD_MAX; i++)
{
if (flags & 1)
{
@@ -787,18 +786,18 @@ static bool32 sub_80F9204(void)
{
gUnknown_203AC08.unk_0e = 0;
rfu_clearSlot(3, Rfu.unk_cda);
for (i = 0; i < 4; i++)
for (i = 0; i < RFU_CHILD_MAX; i++)
{
if ((Rfu.unk_ce5 >> i) & 1)
{
rfu_setRecvBuffer(0x10, i, Rfu.unk_14[i], 14);
rfu_setRecvBuffer(0x10, i, Rfu.unk_14[i], sizeof(Rfu.unk_14[i]));
}
}
sub_80F887C(Rfu.unk_ce2, Rfu.unk_ce2 | Rfu.unk_ce5);
Rfu.unk_ce9 = Rfu.unk_ce5;
Rfu.unk_ce2 |= Rfu.unk_ce5;
Rfu.unk_ce5 = 0;
rfu_UNI_setSendData(Rfu.unk_ce2, Rfu.unk_c87, 70);
rfu_UNI_setSendData(Rfu.unk_ce2, Rfu.unk_c87, sizeof(Rfu.unk_c87));
Rfu.unk_cda = sub_80F886C(Rfu.unk_ce2);
CreateTask(sub_80FAA94, 0);
}
@@ -930,7 +929,7 @@ static u8 sub_80F9770(const u8 *a0)
if (Rfu.unk_0c == 1)
return FALSE;
for (i = 0; i < 4; i++)
for (i = 0; i < RFU_CHILD_MAX; i++)
{
Rfu.unk_cde[i] = a0[i];
}
@@ -939,7 +938,7 @@ static u8 sub_80F9770(const u8 *a0)
static void rfu_func_080F97B8(void)
{
// static u8 gUnknown_3001188;
static u8 gUnknown_3001188;
if (gReceivedRemoteLinkPlayers
&& gHeldKeyCodeToSend != LINK_KEY_CODE_NULL
&& gLinkTransferringData != TRUE)
@@ -1149,7 +1148,7 @@ static void sub_80F9D04(u16 command)
Rfu.playerCount = gUnknown_843EC41[tmp] + 1;
gSendCmd[1] = Rfu.playerCount;
buff = (u8 *)(gSendCmd + 2);
for (i = 0; i < 4; i++)
for (i = 0; i < RFU_CHILD_MAX; i++)
buff[i] = Rfu.unk_cde[i];
break;
case 0x6600:
@@ -1450,7 +1449,7 @@ bool32 sub_80FA44C(u32 a0)
u8 sub_80FA484(bool32 a0)
{
if (a0 == FALSE)
if (!a0)
return sub_80FEA34(0, 0);
sub_80FEA34(1, 0x258);
return 0;
@@ -1462,7 +1461,7 @@ void sub_80FA4A8(void)
sub_80FD760(FALSE);
}
u8 rfu_get_multiplayer_id(void)
u8 LinkRfu_GetMultiplayerId(void)
{
if (Rfu.unk_0c == 1)
return 0;
@@ -1476,12 +1475,12 @@ u8 GetRfuPlayerCount(void)
bool8 IsLinkRfuTaskFinished(void)
{
return Rfu.RfuFunc ? FALSE : TRUE;
return Rfu.RfuFunc != NULL ? FALSE : TRUE;
}
static void CallRfuFunc(void)
{
if (Rfu.RfuFunc)
if (Rfu.RfuFunc != NULL)
Rfu.RfuFunc();
}
@@ -1518,7 +1517,7 @@ bool32 sub_80FA5D4(void)
{
u8 flags = 0;
s32 i;
for (i = 0; i < 4; i++)
for (i = 0; i < RFU_CHILD_MAX; i++)
{
if (Rfu.unk_cd5[i] == 11)
{
@@ -1531,7 +1530,7 @@ bool32 sub_80FA5D4(void)
rfu_REQ_disconnect(flags);
rfu_waitREQComplete();
}
for (i = 0; i < 4; i++)
for (i = 0; i < RFU_CHILD_MAX; i++)
{
if (Rfu.unk_cd5[i] == 10 || Rfu.unk_cd5[i] == 11)
return TRUE;
@@ -1579,7 +1578,7 @@ static void sub_80FA738(void)
s32 i;
sub_80FA528();
for (i = 0; i < 4; i++)
for (i = 0; i < RFU_CHILD_MAX; i++)
{
if (gRfuSlotStatusNI[i]->send.state == SLOT_STATE_SEND_SUCCESS || gRfuSlotStatusNI[i]->send.state == SLOT_STATE_SEND_FAILED)
{
@@ -1683,7 +1682,7 @@ static void sub_80FA834(u8 taskId)
sub_80FEA34(1, 0x258);
if (Rfu.unk_ce6)
{
for (i = 0; i < 4; i++)
for (i = 0; i < RFU_CHILD_MAX; i++)
{
if ((Rfu.unk_ce6 >> i) & 1)
{
@@ -1700,7 +1699,7 @@ static void sub_80FA9D0(u16 a0)
{
s32 i;
for (i = 0; i < 4; i++)
for (i = 0; i < RFU_CHILD_MAX; i++)
{
if ((a0 >> i) & 1)
Rfu.unk_cde[i] = 0;
@@ -1711,7 +1710,7 @@ static void sub_80FA9FC(const struct UnkRfuStruct_8010A14 *a0)
{
s32 i;
Rfu.playerCount = a0->unk_0f;
for (i = 0; i < 4; i++)
for (i = 0; i < RFU_CHILD_MAX; i++)
Rfu.unk_cde[i] = a0->unk_10[i];
for (i = 0; i < MAX_RFU_PLAYERS; i++)
{
@@ -1769,7 +1768,7 @@ static void sub_80FAA94(u8 taskId)
r5 = (struct UnkRfuStruct_8010A14 *)gBlockSendBuffer;
memcpy(r5->unk_00, "PokemonSioInfo", sizeof("PokemonSioInfo"));
r5->unk_0f = Rfu.playerCount;
for (i = 0; i < 4; i++)
for (i = 0; i < RFU_CHILD_MAX; i++)
r5->unk_10[i] = Rfu.unk_cde[i];
memcpy(r5->unk_14, gLinkPlayers, sizeof gLinkPlayers);
gTasks[taskId].data[0]++;
@@ -1777,7 +1776,7 @@ static void sub_80FAA94(u8 taskId)
case 4:
r5 = (struct UnkRfuStruct_8010A14 *)gBlockSendBuffer;
r5->unk_0f = Rfu.playerCount;
for (i = 0; i < 4; i++)
for (i = 0; i < RFU_CHILD_MAX; i++)
r5->unk_10[i] = Rfu.unk_cde[i];
memcpy(r5->unk_14, gLinkPlayers, sizeof gLinkPlayers);
if (SendBlock(0, gBlockSendBuffer, 0xa0))
@@ -1791,7 +1790,7 @@ static void sub_80FAA94(u8 taskId)
Rfu.unk_ce8 = 0;
if (Rfu.unk_ce6)
{
for (i = 0; i < 4; i++)
for (i = 0; i < RFU_CHILD_MAX; i++)
{
if ((Rfu.unk_ce6 >> i) & 1)
{
@@ -1958,7 +1957,7 @@ void sub_80FB030(u32 a0)
r5 = 0;
r7 = 0;
r8 = Rfu.unk_ce2 ^ Rfu.unk_ce3;
for (i = 0; i < 4; i++)
for (i = 0; i < RFU_CHILD_MAX; i++)
{
if ((r8 >> i) & 1)
{
@@ -2020,7 +2019,7 @@ static void sub_80FB184(u8 a0, u8 unused1)
break;
case 0x11:
sub_80FB564(gUnknown_3005E10.unk_14);
for (i = 0; i < 4; i++)
for (i = 0; i < RFU_CHILD_MAX; i++)
{
if ((gUnknown_3005E10.unk_14 >> i) & 1)
{
@@ -2165,7 +2164,7 @@ static void sub_80FB564(s32 a0)
{
s32 i;
for (i = 0; i < 4; i++)
for (i = 0; i < RFU_CHILD_MAX; i++)
{
if ((a0 >> i) & 1)
{
@@ -2180,7 +2179,7 @@ static u8 sub_80FB5A0(s32 a0)
u8 ret = 0;
u8 i;
for (i = 0; i < 4; i++)
for (i = 0; i < RFU_CHILD_MAX; i++)
{
if ((a0 >> i) & 1)
{
@@ -2370,7 +2369,7 @@ bool8 Rfu_IsMaster(void)
void RFUVSync(void)
{
rfu_syncVBlank_();
LinkRfu_syncVBlank_();
}
void sub_80FBA44(void)
@@ -2400,7 +2399,7 @@ static void sub_80FBA78(void)
sub_800B1F4();
OpenLink();
SeedRng(gMain.vblankCounter2);
for (i = 0; i < 4; i++)
for (i = 0; i < RFU_CHILD_MAX; i++)
gSaveBlock2Ptr->playerTrainerId[i] = Random() % 256;
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_1D_MAP);
@@ -2480,7 +2479,7 @@ static u8 sub_80FBC70(const u8 *a0, u16 a1)
u8 i;
u8 ret = 0xFF;
for (i = 0; i < 4; i++)
for (i = 0; i < RFU_CHILD_MAX; i++)
{
u16 trainerId = ReadU16(((struct GFtgtGname *)gRfuLinkStatus->partner[i].gname)->unk_00.playerTrainerId);
if (sub_80FA44C(gRfuLinkStatus->partner[i].serialNo)
@@ -2520,7 +2519,7 @@ void sub_80FBD6C(u32 a0)
s32 i;
u8 var = 0;
for (i = 0; i < 4; i++)
for (i = 0; i < RFU_CHILD_MAX; i++)
{
if (Rfu.unk_cde[i] == a0 && (Rfu.unk_ce2 >> i) & 1)
var |= 1 << i;
@@ -2716,7 +2715,7 @@ bool32 sub_80FC1CC(void)
{
s32 i;
for (i = 0; i < 4; i++)
for (i = 0; i < RFU_CHILD_MAX; i++)
{
if ((gUnknown_3005E10.unk_00 >> i) & 1 && Rfu.unk_cd1[i] == 0)
return FALSE;
@@ -2755,7 +2754,7 @@ static void sub_80FC228(void)
nullsub_88(gRfuLinkStatus->linkLossSlotFlag, 0x17, 1, 1);
if (Rfu.unk_0c == 1)
{
for (i = 0; i < 4; i++)
for (i = 0; i < RFU_CHILD_MAX; i++)
{
if ((gRfuLinkStatus->getNameFlag >> i) & 1)
{
@@ -2764,7 +2763,7 @@ static void sub_80FC228(void)
nullsub_87(gRfuLinkStatus->partner[i].uname, 0x16, i + 3);
}
}
for (i = 0; i < 4; i++)
for (i = 0; i < RFU_CHILD_MAX; i++)
{
for (j = 0; j < 14; j++)
{
@@ -2775,7 +2774,7 @@ static void sub_80FC228(void)
}
else if (gRfuLinkStatus->connSlotFlag != 0 && gRfuLinkStatus->getNameFlag != 0)
{
for (i = 0; i < 4; i++)
for (i = 0; i < RFU_CHILD_MAX; i++)
{
nullsub_88(0, 1, i + 3, 4);
nullsub_87(gUnknown_843EE47, 6, i + 3);
@@ -2796,7 +2795,7 @@ static void sub_80FC228(void)
nullsub_87(gRfuLinkStatus->partner[i].uname, 0x16, i + 3);
}
}
for (; i < 4; i++)
for (; i < RFU_CHILD_MAX; i++)
{
nullsub_88(0, 1, i + 3, 4);
nullsub_87(gUnknown_843EE47, 6, i + 3);
+596
View File
@@ -0,0 +1,596 @@
#include "global.h"
#include "link_rfu.h"
#include "random.h"
#include "text.h"
const u16 gWirelessLinkIconPalette[] = INCBIN_U16("graphics/interface/wireless_link_icon.gbapal");
const u32 gWirelessLinkIconPic[] = INCBIN_U32("graphics/interface/wireless_link_icon.4bpp.lz");
const u8 sWireless_ASCIItoRSETable[] = {
0xff, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x37,
0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
0x00, 0xab, 0xb5, 0xb6, 0xb1, 0x00, 0x00, 0x00,
0x00, 0x00, 0xb2, 0xf1, 0x00, 0xae, 0xad, 0xba,
0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8,
0xa9, 0xaa, 0x00, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
0x00, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1,
0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9,
0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1,
0xd2, 0xd3, 0xd4, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6,
0x00, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb,
0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3,
0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb,
0xec, 0xed, 0xee, 0x2d, 0x2f, 0x30, 0x31, 0x32,
0x33, 0x34, 0x35, 0x36, 0x50, 0x00, 0x01, 0x02,
0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12,
0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a,
0x1b, 0xad, 0xb3, 0xb4, 0x00, 0xaf, 0x7d, 0x7f,
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0xa0,
0xae, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7e, 0xb0, 0xac,
0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23,
0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b,
0x2c, 0x2e, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c,
0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94
};
const u8 sWireless_RSEtoASCIITable[] = {
0x20, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c,
0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94,
0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c,
0x9d, 0x9e, 0x9f, 0xa0, 0xe0, 0xe1, 0xe2, 0xe3,
0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb,
0xec, 0xed, 0xee, 0xef, 0xf0, 0x7b, 0xf1, 0x7c,
0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x07,
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
0x84, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xa6, 0xdd, 0xa7,
0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xf2,
0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa,
0xfb, 0xfc, 0xfd, 0xfe, 0xff, 0x01, 0x02, 0x03,
0x04, 0x05, 0x06, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
0xaf, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36,
0x37, 0x38, 0x39, 0x21, 0xdf, 0xa1, 0xb0, 0xa5,
0xde, 0x24, 0x2a, 0xa2, 0xa3, 0x22, 0x23, 0x20,
0xa4, 0x20, 0x2f, 0x41, 0x42, 0x43, 0x44, 0x45,
0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d,
0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55,
0x56, 0x57, 0x58, 0x59, 0x5a, 0x61, 0x62, 0x63,
0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b,
0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73,
0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x20,
0x20, 0x2b, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00
};
const struct OamData sWirelessStatusIndicatorOamData =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
.objMode = ST_OAM_OBJ_NORMAL,
.bpp = ST_OAM_4BPP,
.shape = SPRITE_SHAPE(16x16),
.x = 0,
.size = SPRITE_SIZE(16x16),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
};
const union AnimCmd sWirelessStatusIndicatorAnim0[] = {
// 3 bars
ANIMCMD_FRAME( 4, 5),
ANIMCMD_FRAME( 8, 5),
ANIMCMD_FRAME(12, 5),
ANIMCMD_FRAME(16, 10),
ANIMCMD_FRAME(12, 5),
ANIMCMD_FRAME( 8, 5),
ANIMCMD_JUMP(0)
};
const union AnimCmd sWirelessStatusIndicatorAnim1[] = {
// 2 bars
ANIMCMD_FRAME( 4, 5),
ANIMCMD_FRAME( 8, 5),
ANIMCMD_FRAME(12, 10),
ANIMCMD_FRAME( 8, 5),
ANIMCMD_JUMP(0)
};
const union AnimCmd sWirelessStatusIndicatorAnim2[] = {
// 1 bar
ANIMCMD_FRAME(4, 5),
ANIMCMD_FRAME(8, 5),
ANIMCMD_JUMP(0)
};
const union AnimCmd sWirelessStatusIndicatorAnim3[] = {
// searching
ANIMCMD_FRAME( 4, 10),
ANIMCMD_FRAME(20, 10),
ANIMCMD_JUMP(0)
};
const union AnimCmd sWirelessStatusIndicatorAnim4[] = {
// error
ANIMCMD_FRAME(24, 10),
ANIMCMD_FRAME( 4, 10),
ANIMCMD_JUMP(0)
};
const union AnimCmd *const sWirelessStatusIndicatorAnims[] = {
sWirelessStatusIndicatorAnim0,
sWirelessStatusIndicatorAnim1,
sWirelessStatusIndicatorAnim2,
sWirelessStatusIndicatorAnim3,
sWirelessStatusIndicatorAnim4
};
const struct CompressedSpriteSheet sWirelessStatusIndicatorSpriteSheet = {
gWirelessLinkIconPic, 0x0380, 0xD431
};
const struct SpritePalette sWirelessStatusIndicatorSpritePalette = {
gWirelessLinkIconPalette, 0xD432
};
const struct SpriteTemplate sWirelessStatusIndicatorSpriteTemplate = {
0xD431,
0xD432,
&sWirelessStatusIndicatorOamData,
sWirelessStatusIndicatorAnims,
NULL,
gDummySpriteAffineAnimTable,
SpriteCallbackDummy
};
void sub_80FC478(struct UnkRfuStruct_2_Sub_124 *ptr)
{
s32 i;
s32 j;
for (i = 0; i < 20; i++)
{
for (j = 0; j < 70; j++)
{
ptr->unk_00[i][j] = 0;
}
}
ptr->unk_8c1 = 0;
ptr->unk_8c0 = 0;
ptr->unk_8c2 = 0;
ptr->unk_8c3 = 0;
}
void sub_80FC4D4(struct UnkRfuStruct_2_Sub_9e8 *ptr)
{
s32 i;
s32 j;
for (i = 0; i < 40; i++)
{
for (j = 0; j < 14; j++)
{
ptr->unk_00[i][j] = 0;
}
}
ptr->unk_231 = 0;
ptr->unk_230 = 0;
ptr->unk_232 = 0;
ptr->unk_233 = 0;
}
void sub_80FC530(struct UnkRfuStruct_Sub_Unused *ptr)
{
s32 i;
s32 j;
for (i = 0; i < 2; i++)
{
for (j = 0; j < 256; j++)
{
ptr->unk_00[i][j] = 0;
}
}
ptr->unk_201 = 0;
ptr->unk_200 = 0;
ptr->unk_202 = 0;
ptr->unk_203 = 0;
}
void sub_80FC588(struct UnkRfuStruct_2_Sub_124 *q1, u8 *q2)
{
s32 i;
u16 imeBak;
u8 count;
if (q1->unk_8c2 < 20)
{
imeBak = REG_IME;
REG_IME = 0;
count = 0;
for (i = 0; i < 70; i += 14)
{
if (q2[i] == 0 && q2[i + 1] == 0)
{
count++;
}
}
if (count != 5)
{
for (i = 0; i < 70; i++)
{
q1->unk_00[q1->unk_8c0][i] = q2[i];
}
q1->unk_8c0++;
q1->unk_8c0 %= 20;
q1->unk_8c2++;
for (i = 0; i < 70; i++)
{
q2[i] = 0;
}
}
REG_IME = imeBak;
}
else
{
q1->unk_8c3 = 1;
}
}
void sub_80FC63C(struct UnkRfuStruct_2_Sub_9e8 *q1, u8 *q2)
{
s32 i;
u16 imeBak;
if (q1->unk_232 < 40)
{
imeBak = REG_IME;
REG_IME = 0;
for (i = 0; i < 14; i++)
{
if (q2[i] != 0)
{
break;
}
}
if (i != 14)
{
for (i = 0; i < 14; i++)
{
q1->unk_00[q1->unk_230][i] = q2[i];
}
q1->unk_230++;
q1->unk_230 %= 40;
q1->unk_232++;
for (i = 0; i < 14; i++)
{
q2[i] = 0;
}
}
REG_IME = imeBak;
}
else
{
q1->unk_233 = 1;
}
}
bool8 sub_80FC6E8(struct UnkRfuStruct_2_Sub_124 *q1, u8 *q2)
{
u16 imeBak;
s32 i;
imeBak = REG_IME;
REG_IME = 0;
if (q1->unk_8c0 == q1->unk_8c1 || q1->unk_8c3 != 0)
{
for (i = 0; i < 70; i++)
{
q2[i] = 0;
}
REG_IME = imeBak;
return FALSE;
}
for (i = 0; i < 70; i++)
{
q2[i] = q1->unk_00[q1->unk_8c1][i];
}
q1->unk_8c1++;
q1->unk_8c1 %= 20;
q1->unk_8c2--;
REG_IME = imeBak;
return TRUE;
}
bool8 sub_80FC79C(struct UnkRfuStruct_2_Sub_9e8 *q1, u8 *q2)
{
s32 i;
u16 imeBak;
if (q1->unk_230 == q1->unk_231 || q1->unk_233 != 0)
{
return FALSE;
}
imeBak = REG_IME;
REG_IME = 0;
for (i = 0; i < 14; i++)
{
q2[i] = q1->unk_00[q1->unk_231][i];
}
q1->unk_231++;
q1->unk_231 %= 40;
q1->unk_232--;
REG_IME = imeBak;
return TRUE;
}
void sub_80FC828(struct UnkRfuStruct_2_Sub_c1c *q1, const u8 *q2)
{
s32 i;
if (q2[1] == 0)
{
sub_80FC888(q1, NULL);
}
else
{
for (i = 0; i < 14; i++)
{
q1->unk_00[q1->unk_1c][i] = q2[i];
}
q1->unk_1c++;
q1->unk_1c %= 2;
if (q1->unk_1e < 2)
{
q1->unk_1e++;
}
else
{
q1->unk_1d = q1->unk_1c;
}
}
}
bool8 sub_80FC888(struct UnkRfuStruct_2_Sub_c1c *q1, u8 *q2)
{
s32 i;
if (q1->unk_1e == 0)
{
return FALSE;
}
if (q2 != NULL)
{
for (i = 0; i < 14; i++)
{
q2[i] = q1->unk_00[q1->unk_1d][i];
}
}
q1->unk_1d++;
q1->unk_1d %= 2;
q1->unk_1e--;
return TRUE;
}
void sub_80FC8D8(struct UnkRfuStruct_Sub_Unused *q1, u8 *q2)
{
s32 i;
if (q1->unk_202 < 2)
{
for (i = 0; i < 256; i++)
{
q1->unk_00[q1->unk_200][i] = q2[i];
}
q1->unk_200++;
q1->unk_200 %= 2;
q1->unk_202++;
}
else
{
q1->unk_203 = 1;
}
}
bool8 sub_80FC944(struct UnkRfuStruct_Sub_Unused *q1, u8 *q2)
{
s32 i;
if (q1->unk_200 == q1->unk_201 || q1->unk_203)
{
return FALSE;
}
for (i = 0; i < 256; i++)
{
q2[i] = q1->unk_00[q1->unk_201][i];
}
q1->unk_201++;
q1->unk_201 %= 2;
q1->unk_202--;
return TRUE;
}
void sub_80FC9B8(u8 *q1, u8 mode)
{
s32 i;
u8 rval;
u16 r5 = 0;
static u8 _3002018;
switch (mode)
{
case 0:
for (i = 0; i < 200; i++)
{
q1[i] = i + 1;
r5 += i + 1;
}
*((u16 *)(q1 + i)) = r5;
break;
case 1:
for (i = 0; i < 100; i++)
{
q1[i] = i + 1;
r5 += i + 1;
}
*((u16 *)(q1 + 200)) = r5;
break;
case 2:
for (i = 0; i < 200; i++)
{
rval = Random();
q1[i] = rval;
r5 += rval;
}
*((u16 *)(q1 + i)) = r5;
break;
case 3:
for (i = 0; i < 200; i++)
{
q1[i] = i + 1 + _3002018;
r5 += (i + 1 + _3002018) & 0xFF;
}
*((u16 *)(q1 + i)) = r5;
_3002018++;
break;
}
}
void PkmnStrToASCII(u8 *q1, const u8 *q2)
{
s32 i;
for (i = 0; q2[i] != EOS; i++)
{
q1[i] = sWireless_RSEtoASCIITable[q2[i]];
}
q1[i] = 0;
}
void ASCIIToPkmnStr(u8 *q1, const u8 *q2)
{
s32 i;
for (i = 0; q2[i] != 0; i++)
{
q1[i] = sWireless_ASCIItoRSETable[q2[i]];
}
q1[i] = EOS;
}
#ifdef NONMATCHING
u8 sub_80FCADC(u8 maxFlags)
{
u8 flagCount = 0;
u8 flags = gRfuLinkStatus->connSlotFlag;
u8 i;
if (gRfuLinkStatus->parentChild == MODE_PARENT)
{
for (i = 0; i < 4; flags >>= 1, i++)
{
if (flags & 1)
{
if (maxFlags == flagCount + 1)
return gRfuLinkStatus->strength[i];
flagCount++;
}
}
return 0;
}
else
{
for (i = 0; i < 4; flags >>= 1, i++)
{
if (flags & 1)
return gRfuLinkStatus->strength[i];
}
return 0;
}
}
#else
NAKED
u8 sub_80FCADC(u8 maxFlags)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tlsls r0, 24\n"
"\tlsrs r5, r0, 24\n"
"\tmovs r6, 0\n"
"\tldr r0, _080FCB04 @ =gRfuLinkStatus\n"
"\tldr r4, [r0]\n"
"\tldrb r2, [r4, 0x2]\n"
"\tldrb r1, [r4]\n"
"\tadds r7, r0, 0\n"
"\tcmp r1, 0x1\n"
"\tbne _080FCB32\n"
"\tmovs r3, 0\n"
"\tands r1, r2\n"
"\tcmp r1, 0\n"
"\tbeq _080FCB0E\n"
"\tcmp r5, 0x1\n"
"\tbne _080FCB08\n"
"\tldrb r0, [r4, 0xA]\n"
"\tb _080FCB4C\n"
"\t.align 2, 0\n"
"_080FCB04: .4byte gRfuLinkStatus\n"
"_080FCB08:\n"
"\tadds r0, r6, 0x1\n"
"\tlsls r0, 24\n"
"\tlsrs r6, r0, 24\n"
"_080FCB0E:\n"
"\tlsrs r2, 1\n"
"\tadds r0, r3, 0x1\n"
"\tlsls r0, 24\n"
"\tlsrs r3, r0, 24\n"
"\tcmp r3, 0x3\n"
"\tbhi _080FCB4A\n"
"\tmovs r0, 0x1\n"
"\tands r0, r2\n"
"\tcmp r0, 0\n"
"\tbeq _080FCB0E\n"
"\tadds r0, r6, 0x1\n"
"\tcmp r5, r0\n"
"\tbne _080FCB08\n"
"_080FCB28:\n"
"\tldr r0, [r7]\n"
"\tadds r0, 0xA\n"
"\tadds r0, r3\n"
"\tldrb r0, [r0]\n"
"\tb _080FCB4C\n"
"_080FCB32:\n"
"\tmovs r3, 0\n"
"\tmovs r1, 0x1\n"
"_080FCB36:\n"
"\tadds r0, r2, 0\n"
"\tands r0, r1\n"
"\tcmp r0, 0\n"
"\tbne _080FCB28\n"
"\tlsrs r2, 1\n"
"\tadds r0, r3, 0x1\n"
"\tlsls r0, 24\n"
"\tlsrs r3, r0, 24\n"
"\tcmp r3, 0x3\n"
"\tbls _080FCB36\n"
"_080FCB4A:\n"
"\tmovs r0, 0\n"
"_080FCB4C:\n"
"\tpop {r4-r7}\n"
"\tpop {r1}\n"
"\tbx r1");
}
#endif
+2 -4
View File
@@ -72,11 +72,9 @@ gUnknown_3000FE8: @ 3000FE8
.include "src/easy_chat.o"
.align 2
.include "src/link_rfu_2.o"
.align 2
gUnknown_3002018: @ 3002018
.space 0x4
.include "src/link_rfu_4.o"
.align 2
.include "src/quest_log.o"
.align 2