Finish decomp of mevent_server
This commit is contained in:
+2
-2
@@ -792,7 +792,7 @@ bool32 sub_81443D4(const struct MEventStruct_Unk1442CC * data)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u32 sub_8144418(const u16 * a0, const struct MEventStruct_Unk1442CC * a1)
|
||||
u32 sub_8144418(const u16 * a0, const struct MEventStruct_Unk1442CC * a1, void * unused)
|
||||
{
|
||||
if (a1->unk_14 == 0)
|
||||
return 0;
|
||||
@@ -801,7 +801,7 @@ u32 sub_8144418(const u16 * a0, const struct MEventStruct_Unk1442CC * a1)
|
||||
return 2;
|
||||
}
|
||||
|
||||
u32 sub_8144434(const u16 * a0, const struct MEventStruct_Unk1442CC * a1)
|
||||
u32 sub_8144434(const u16 * a0, const struct MEventStruct_Unk1442CC * a1, void * unused)
|
||||
{
|
||||
s32 r4 = a1->unk_44 - sub_8144184(&a1->unk_20, a1->unk_44);
|
||||
if (r4 == 0)
|
||||
|
||||
+225
-16
@@ -13,18 +13,29 @@
|
||||
|
||||
extern u16 gBlockRecvBuffer[][128];
|
||||
|
||||
struct mevent_cmd
|
||||
{
|
||||
u32 instr;
|
||||
bool32 flag;
|
||||
void * parameter;
|
||||
};
|
||||
|
||||
struct mevent_srv_common
|
||||
{
|
||||
u32 unk_00;
|
||||
u32 unk_04;
|
||||
u32 mainseqno;
|
||||
u32 unk_0C;
|
||||
const void * unk_10;
|
||||
u32 cmdidx;
|
||||
const struct mevent_cmd * cmdBuffer;
|
||||
void * unk_14;
|
||||
void * unk_18;
|
||||
void * unk_1C;
|
||||
void * unk_20;
|
||||
u8 filler_24[0x14];
|
||||
struct MEventBuffer_32E0_Sub * unk_18;
|
||||
struct MEventBuffer_3120_Sub * unk_1C;
|
||||
struct MEventStruct_Unk1442CC * unk_20;
|
||||
void * unk_24;
|
||||
u32 unk_28;
|
||||
void * unk_2C;
|
||||
u32 unk_30;
|
||||
void * unk_34;
|
||||
struct mevent_srv_sub unk_38;
|
||||
};
|
||||
|
||||
@@ -73,8 +84,8 @@ void mevent_srv_init_common(struct mevent_srv_common * svr, const void * a1, u32
|
||||
svr->unk_1C = AllocZeroed(444);
|
||||
svr->unk_14 = AllocZeroed(ME_SEND_BUF_SIZE);
|
||||
svr->unk_20 = AllocZeroed(100);
|
||||
svr->unk_10 = a1;
|
||||
svr->unk_0C = 0;
|
||||
svr->cmdBuffer = a1;
|
||||
svr->cmdidx = 0;
|
||||
sub_814485C(&svr->unk_38, a2, a3);
|
||||
}
|
||||
|
||||
@@ -86,15 +97,213 @@ void mevent_srv_free_resources(struct mevent_srv_common * svr)
|
||||
Free(svr->unk_20);
|
||||
}
|
||||
|
||||
const char gUnknown_8466F80[] = "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c";
|
||||
const char gUnknown_8466FB8[] = "size <= ME_SEND_BUF_SIZE";
|
||||
const char gUnknown_8466FD4[] = "cmd->parameter == NULL";
|
||||
const char gUnknown_8466FEC[] = "cmd->flag == FALSE";
|
||||
const char gUnknown_8467000[] = "cmd->flag == FALSE && cmd->parameter == NULL";
|
||||
|
||||
void sub_814501C(struct mevent_srv_common * svr, u32 a1, void * a2, u32 size)
|
||||
{
|
||||
// AGB_ASSERT_EX(size <= ME_SEND_BUF_SIZE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 257);
|
||||
size <= ME_SEND_BUF_SIZE ? NULL : AGBAssert(gUnknown_8466F80, 257, gUnknown_8466FB8, 1);
|
||||
AGB_ASSERT_EX(size <= ME_SEND_BUF_SIZE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 257);
|
||||
sub_8144888(&svr->unk_38, a1, a2, size);
|
||||
}
|
||||
|
||||
void * sub_814505C(void * a0, void * a1)
|
||||
{
|
||||
if (a0 != NULL)
|
||||
return a0;
|
||||
else
|
||||
return a1;
|
||||
}
|
||||
|
||||
u32 sub_8145068(void * a0, void * a1)
|
||||
{
|
||||
if (a1 < a0)
|
||||
return 0;
|
||||
else if (a1 == a0)
|
||||
return 1;
|
||||
else
|
||||
return 2;
|
||||
}
|
||||
|
||||
u32 sub_8145080(struct mevent_srv_common * svr)
|
||||
{
|
||||
svr->mainseqno = 4;
|
||||
return 0;
|
||||
}
|
||||
|
||||
u32 sub_8145088(struct mevent_srv_common * svr)
|
||||
{
|
||||
return 3;
|
||||
}
|
||||
|
||||
u32 sub_814508C(struct mevent_srv_common * svr)
|
||||
{
|
||||
if (sub_8144844(&svr->unk_38))
|
||||
svr->mainseqno = 4;
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_81450A8(struct mevent_srv_common * svr)
|
||||
{
|
||||
if (sub_8144850(&svr->unk_38))
|
||||
svr->mainseqno = 4;
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32 sub_81450C4(struct mevent_srv_common * svr)
|
||||
{
|
||||
const struct mevent_cmd * cmd = &svr->cmdBuffer[svr->cmdidx];
|
||||
void * ptr;
|
||||
svr->cmdidx++;
|
||||
|
||||
switch (cmd->instr)
|
||||
{
|
||||
case 0:
|
||||
AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 354);
|
||||
svr->mainseqno = 1;
|
||||
svr->unk_04 = cmd->flag;
|
||||
break;
|
||||
case 1:
|
||||
svr->mainseqno = 3;
|
||||
break;
|
||||
case 2:
|
||||
AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 364);
|
||||
sub_81448AC(&svr->unk_38, cmd->flag, svr->unk_14);
|
||||
svr->mainseqno = 2;
|
||||
break;
|
||||
case 3:
|
||||
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 370);
|
||||
svr->cmdidx = 0;
|
||||
svr->cmdBuffer = cmd->parameter;
|
||||
break;
|
||||
case 5:
|
||||
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 376);
|
||||
AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 377);
|
||||
memcpy(svr->unk_20, svr->unk_14, 100);
|
||||
break;
|
||||
case 6:
|
||||
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 382);
|
||||
AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 383);
|
||||
svr->unk_04 = sub_81443D4(svr->unk_20);
|
||||
break;
|
||||
case 4:
|
||||
if (svr->unk_04 == cmd->flag)
|
||||
{
|
||||
svr->cmdidx = 0;
|
||||
svr->cmdBuffer = cmd->parameter;
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 396);
|
||||
ptr = sub_814505C(cmd->parameter, svr->unk_18);
|
||||
svr->unk_04 = sub_8144418(ptr, svr->unk_20, ptr);
|
||||
break;
|
||||
case 8:
|
||||
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 402);
|
||||
AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 403);
|
||||
svr->unk_04 = *(u32 *)svr->unk_14;
|
||||
break;
|
||||
case 9:
|
||||
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 408);
|
||||
ptr = sub_814505C(cmd->parameter, &svr->unk_34);
|
||||
svr->unk_04 = sub_8144434(ptr, svr->unk_20, ptr);
|
||||
break;
|
||||
case 10:
|
||||
AGB_ASSERT_EX(cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 415);
|
||||
svr->unk_04 = sub_81444B0(svr->unk_20, cmd->flag);
|
||||
break;
|
||||
case 11:
|
||||
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 420);
|
||||
svr->unk_04 = sub_8144474(svr->unk_20, cmd->parameter);
|
||||
break;
|
||||
case 12:
|
||||
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 426);
|
||||
svr->unk_04 = sub_8145068(cmd->parameter, *(void **)svr->unk_14);
|
||||
break;
|
||||
case 14:
|
||||
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 432);
|
||||
sub_814501C(svr, 0x17, sub_814505C(cmd->parameter, svr->unk_1C), 444);
|
||||
break;
|
||||
case 13:
|
||||
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 438);
|
||||
sub_814501C(svr, 0x16, sub_814505C(cmd->parameter, svr->unk_18), 332);
|
||||
break;
|
||||
case 16:
|
||||
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 444);
|
||||
sub_814501C(svr, 0x18, sub_814505C(cmd->parameter, &svr->unk_34), 4);
|
||||
break;
|
||||
case 15:
|
||||
if (cmd->parameter == NULL)
|
||||
sub_814501C(svr, 0x19, svr->unk_24, svr->unk_28);
|
||||
else
|
||||
sub_814501C(svr, 0x19, cmd->parameter, cmd->flag);
|
||||
break;
|
||||
case 18:
|
||||
if (cmd->parameter == NULL)
|
||||
sub_814501C(svr, 0x10, svr->unk_2C, svr->unk_30);
|
||||
else
|
||||
sub_814501C(svr, 0x10, cmd->parameter, cmd->flag);
|
||||
break;
|
||||
case 19:
|
||||
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 466);
|
||||
sub_814501C(svr, 0x1a, cmd->parameter, 188);
|
||||
break;
|
||||
case 20:
|
||||
sub_814501C(svr, 0x15, cmd->parameter, cmd->flag);
|
||||
break;
|
||||
case 17:
|
||||
sub_814501C(svr, 0x1c, cmd->parameter, cmd->flag);
|
||||
break;
|
||||
case 22:
|
||||
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 481);
|
||||
memcpy(svr->unk_18, cmd->parameter, 332);
|
||||
break;
|
||||
case 23:
|
||||
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 486);
|
||||
memcpy(svr->unk_1C, cmd->parameter, 444);
|
||||
break;
|
||||
case 21:
|
||||
AGB_ASSERT_EX(cmd->flag == FALSE, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 491);
|
||||
svr->unk_34 = *(void **)cmd->parameter;
|
||||
break;
|
||||
case 24:
|
||||
svr->unk_24 = cmd->parameter;
|
||||
svr->unk_28 = cmd->flag;
|
||||
break;
|
||||
case 25:
|
||||
svr->unk_2C = cmd->parameter;
|
||||
svr->unk_30 = cmd->flag;
|
||||
break;
|
||||
case 26:
|
||||
AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 506);
|
||||
memcpy(svr->unk_18, sav1_get_mevent_buffer_1(), 332);
|
||||
sub_814410C(svr->unk_18);
|
||||
break;
|
||||
case 27:
|
||||
AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 512);
|
||||
memcpy(svr->unk_1C, sub_8143D58(), 444);
|
||||
break;
|
||||
case 28:
|
||||
AGB_ASSERT_EX(cmd->flag == FALSE && cmd->parameter == NULL, "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 517);
|
||||
svr->unk_24 = sub_8069E48();
|
||||
break;
|
||||
case 29:
|
||||
sub_814501C(svr, 0x1b, cmd->parameter, cmd->flag);
|
||||
break;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static u32 (*const func_tbl[])(struct mevent_srv_common *) = {
|
||||
sub_8145080,
|
||||
sub_8145088,
|
||||
sub_814508C,
|
||||
sub_81450A8,
|
||||
sub_81450C4
|
||||
};
|
||||
|
||||
u32 sub_8145600(struct mevent_srv_common * svr)
|
||||
{
|
||||
u32 response;
|
||||
AGB_ASSERT_EX(svr->mainseqno < NELEMS(func_tbl), "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 546);
|
||||
response = func_tbl[svr->mainseqno](svr);
|
||||
AGB_ASSERT_EX(svr->mainseqno < NELEMS(func_tbl), "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c", 548);
|
||||
return response;
|
||||
}
|
||||
|
||||
+20
-23
@@ -13,27 +13,26 @@
|
||||
|
||||
extern u16 gBlockRecvBuffer[][128];
|
||||
|
||||
struct mevent_cmd
|
||||
{
|
||||
u32 instr;
|
||||
u32 parameter;
|
||||
};
|
||||
|
||||
struct mevent_srv_ish
|
||||
{
|
||||
u32 unk_00;
|
||||
u32 unk_04;
|
||||
u32 mainseqno;
|
||||
u32 unk_0C;
|
||||
u32 unk_10;
|
||||
u32 cmdidx;
|
||||
void * unk_14;
|
||||
void * unk_18;
|
||||
void * unk_1C;
|
||||
struct mevent_cmd * cmdBuffer;
|
||||
void * unk_20;
|
||||
struct mevent_srv_sub unk_24;
|
||||
};
|
||||
|
||||
struct mevent_cmd
|
||||
{
|
||||
u32 instr;
|
||||
bool32 flag;
|
||||
u32 parameter;
|
||||
};
|
||||
|
||||
EWRAM_DATA struct mevent_srv_ish * gUnknown_203F3C0 = NULL;
|
||||
|
||||
void mevent_srv_ish_init(struct mevent_srv_ish *, u32, u32);
|
||||
@@ -85,7 +84,7 @@ void mevent_srv_ish_init(struct mevent_srv_ish * svr, u32 a1, u32 a2)
|
||||
svr->unk_0C = 0;
|
||||
svr->unk_14 = AllocZeroed(ME_SEND_BUF_SIZE);
|
||||
svr->unk_18 = AllocZeroed(ME_SEND_BUF_SIZE);
|
||||
svr->unk_1C = AllocZeroed(ME_SEND_BUF_SIZE);
|
||||
svr->cmdBuffer = AllocZeroed(ME_SEND_BUF_SIZE);
|
||||
svr->unk_20 = AllocZeroed(0x40);
|
||||
sub_814485C(&svr->unk_24, a1, a2);
|
||||
}
|
||||
@@ -94,14 +93,14 @@ void sub_8144BC0(struct mevent_srv_ish * svr)
|
||||
{
|
||||
Free(svr->unk_14);
|
||||
Free(svr->unk_18);
|
||||
Free(svr->unk_1C);
|
||||
Free(svr->cmdBuffer);
|
||||
Free(svr->unk_20);
|
||||
}
|
||||
|
||||
void sub_8144BE4(struct mevent_srv_ish * svr)
|
||||
{
|
||||
memcpy(svr->unk_1C, svr->unk_18, ME_SEND_BUF_SIZE);
|
||||
svr->unk_10 = 0;
|
||||
memcpy(svr->cmdBuffer, svr->unk_18, ME_SEND_BUF_SIZE);
|
||||
svr->cmdidx = 0;
|
||||
}
|
||||
|
||||
void sub_8144C00(struct mevent_srv_ish * svr, u32 a1, u32 a2)
|
||||
@@ -111,12 +110,10 @@ void sub_8144C00(struct mevent_srv_ish * svr, u32 a1, u32 a2)
|
||||
sub_8144888(&svr->unk_24, a1, svr->unk_14, 4);
|
||||
}
|
||||
|
||||
// funcs in array gUnknown_8466F60
|
||||
|
||||
u32 sub_8144C34(struct mevent_srv_ish * svr)
|
||||
{
|
||||
memcpy(svr->unk_1C, gUnknown_84687E0, ME_SEND_BUF_SIZE);
|
||||
svr->unk_10 = 0;
|
||||
memcpy(svr->cmdBuffer, gUnknown_84687E0, ME_SEND_BUF_SIZE);
|
||||
svr->cmdidx = 0;
|
||||
svr->mainseqno = 4;
|
||||
svr->unk_0C = 0;
|
||||
return 0;
|
||||
@@ -149,19 +146,19 @@ u32 sub_8144C80(struct mevent_srv_ish * svr)
|
||||
|
||||
u32 sub_8144CA0(struct mevent_srv_ish * svr)
|
||||
{
|
||||
u32 * r2 = (u32 *)svr->unk_1C + 2 * svr->unk_10;
|
||||
++svr->unk_10;
|
||||
switch (r2[0])
|
||||
struct mevent_cmd * cmd = &svr->cmdBuffer[svr->cmdidx];
|
||||
++svr->cmdidx;
|
||||
switch (cmd->instr)
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
svr->unk_04 = r2[1];
|
||||
svr->unk_04 = cmd->parameter;
|
||||
svr->mainseqno = 1;
|
||||
svr->unk_0C = 0;
|
||||
break;
|
||||
case 2:
|
||||
sub_81448AC(&svr->unk_24, r2[1], svr->unk_18);
|
||||
sub_81448AC(&svr->unk_24, cmd->parameter, svr->unk_18);
|
||||
svr->mainseqno = 2;
|
||||
svr->unk_0C = 0;
|
||||
break;
|
||||
@@ -175,7 +172,7 @@ u32 sub_8144CA0(struct mevent_srv_ish * svr)
|
||||
svr->unk_0C = 0;
|
||||
break;
|
||||
case 19:
|
||||
sub_8144C00(svr, 0x12, GetGameStat(r2[1]));
|
||||
sub_8144C00(svr, 0x12, GetGameStat(cmd->parameter));
|
||||
svr->mainseqno = 3;
|
||||
svr->unk_0C = 0;
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user