pull in project-slippi/Ishiiruka/commit/29c3127385db6d67806d3a90fc7514e43d114169

add EXI for fetching delay frames
This commit is contained in:
Nikhil Narayana 2021-12-18 16:55:09 -08:00
commit 486bc55d8b
2 changed files with 20 additions and 0 deletions

View file

@ -2542,6 +2542,20 @@ void CEXISlippi::handleReportGame(u8* payload)
#endif
}
void CEXISlippi::prepareDelayResponse()
{
m_read_queue.clear();
m_read_queue.push_back(1); // Indicate this is a real response
if (NetPlay::IsNetPlayRunning())
{
// If we are using the old netplay, we don't want to add any additional delay, so return 0
m_read_queue.push_back(0);
return;
}
m_read_queue.push_back((u8)SConfig::GetInstance().m_slippiOnlineDelay);
}
void CEXISlippi::DMAWrite(u32 _uAddr, u32 _uSize)
{
u8* memPtr = Memory::GetPointer(_uAddr);
@ -2677,6 +2691,9 @@ void CEXISlippi::DMAWrite(u32 _uAddr, u32 _uSize)
case CMD_GCT_LOAD:
prepareGctLoad(&memPtr[bufLoc + 1]);
break;
case CMD_GET_DELAY:
prepareDelayResponse();
break;
default:
writeToFileAsync(&memPtr[bufLoc], payloadLen + 1, "");
SlippiSpectateServer::getInstance().write(&memPtr[bufLoc], payloadLen + 1);

View file

@ -81,6 +81,7 @@ private:
CMD_FILE_LOAD = 0xD2,
CMD_GCT_LENGTH = 0xD3,
CMD_GCT_LOAD = 0xD4,
CMD_GET_DELAY = 0xD5,
};
enum
@ -128,6 +129,7 @@ private:
{CMD_FILE_LOAD, 0x40},
{CMD_GCT_LENGTH, 0x0},
{CMD_GCT_LOAD, 0x4},
{CMD_GET_DELAY, 0x0},
};
struct WriteMessage
@ -195,6 +197,7 @@ private:
void prepareFileLoad(u8* payload);
void prepareGctLength();
void prepareGctLoad(u8* payload);
void prepareDelayResponse();
int getCharColor(u8 charId, u8 teamId);
void FileWriteThread(void);