dep: Update RAInterface

This commit is contained in:
Connor McLaughlin 2022-08-22 19:33:00 +10:00
parent ce5ff4186c
commit 43869bf74c
3 changed files with 51 additions and 2 deletions

View file

@ -76,6 +76,7 @@ enum ConsoleID
MegaDuck = 69, MegaDuck = 69,
Zeebo = 70, Zeebo = 70,
Arduboy = 71, Arduboy = 71,
WASM4 = 72,
NumConsoleIDs NumConsoleIDs
}; };

View file

@ -20,12 +20,14 @@ static int (CCONV* _RA_InitClientOffline)(HWND hMainWnd, const char* sC
static void (CCONV* _RA_InstallSharedFunctions)(int(*)(), void(*)(), void(*)(), void(*)(), void(*)(char*), void(*)(), void(*)(const char*)) = nullptr; static void (CCONV* _RA_InstallSharedFunctions)(int(*)(), void(*)(), void(*)(), void(*)(), void(*)(char*), void(*)(), void(*)(const char*)) = nullptr;
static void (CCONV* _RA_SetForceRepaint)(int bEnable) = nullptr; static void (CCONV* _RA_SetForceRepaint)(int bEnable) = nullptr;
static HMENU (CCONV* _RA_CreatePopupMenu)() = nullptr; static HMENU (CCONV* _RA_CreatePopupMenu)() = nullptr;
static int (CCONV* _RA_GetPopupMenuItems)(RA_MenuItem*) = nullptr;
static void (CCONV* _RA_InvokeDialog)(LPARAM nID) = nullptr; static void (CCONV* _RA_InvokeDialog)(LPARAM nID) = nullptr;
static void (CCONV* _RA_SetUserAgentDetail)(const char* sDetail); static void (CCONV* _RA_SetUserAgentDetail)(const char* sDetail);
static void (CCONV* _RA_AttemptLogin)(int bBlocking) = nullptr; static void (CCONV* _RA_AttemptLogin)(int bBlocking) = nullptr;
static int (CCONV* _RA_SetConsoleID)(unsigned int nConsoleID) = nullptr; static int (CCONV* _RA_SetConsoleID)(unsigned int nConsoleID) = nullptr;
static void (CCONV* _RA_ClearMemoryBanks)() = nullptr; static void (CCONV* _RA_ClearMemoryBanks)() = nullptr;
static void (CCONV* _RA_InstallMemoryBank)(int nBankID, RA_ReadMemoryFunc* pReader, RA_WriteMemoryFunc* pWriter, int nBankSize) = nullptr; static void (CCONV* _RA_InstallMemoryBank)(int nBankID, RA_ReadMemoryFunc* pReader, RA_WriteMemoryFunc* pWriter, int nBankSize) = nullptr;
static void (CCONV* _RA_InstallMemoryBankBlockReader)(int nBankID, RA_ReadMemoryBlockFunc* pReader) = nullptr;
static int (CCONV* _RA_Shutdown)() = nullptr; static int (CCONV* _RA_Shutdown)() = nullptr;
// Overlay // Overlay
static int (CCONV* _RA_IsOverlayFullyVisible)() = nullptr; static int (CCONV* _RA_IsOverlayFullyVisible)() = nullptr;
@ -134,11 +136,22 @@ void RA_InstallMemoryBank(int nBankID, RA_ReadMemoryFunc pReader, RA_WriteMemory
_RA_InstallMemoryBank(nBankID, pReader, pWriter, nBankSize); _RA_InstallMemoryBank(nBankID, pReader, pWriter, nBankSize);
} }
void RA_InstallMemoryBankBlockReader(int nBankID, RA_ReadMemoryBlockFunc pReader)
{
if (_RA_InstallMemoryBankBlockReader != nullptr)
_RA_InstallMemoryBankBlockReader(nBankID, pReader);
}
HMENU RA_CreatePopupMenu(void) HMENU RA_CreatePopupMenu(void)
{ {
return (_RA_CreatePopupMenu != nullptr) ? _RA_CreatePopupMenu() : nullptr; return (_RA_CreatePopupMenu != nullptr) ? _RA_CreatePopupMenu() : nullptr;
} }
int RA_GetPopupMenuItems(RA_MenuItem *pItems)
{
return (_RA_GetPopupMenuItems != nullptr) ? _RA_GetPopupMenuItems(pItems) : 0;
}
void RA_UpdateAppTitle(const char* sCustomMsg) void RA_UpdateAppTitle(const char* sCustomMsg)
{ {
if (_RA_UpdateAppTitle != nullptr) if (_RA_UpdateAppTitle != nullptr)
@ -293,6 +306,7 @@ static BOOL DoBlockingHttpCall(const char* sHostUrl, const char* sRequestedPage,
{ {
BOOL bResults = FALSE, bSuccess = FALSE; BOOL bResults = FALSE, bSuccess = FALSE;
HINTERNET hSession = nullptr, hConnect = nullptr, hRequest = nullptr; HINTERNET hSession = nullptr, hConnect = nullptr, hRequest = nullptr;
size_t nHostnameLen;
WCHAR wBuffer[1024]; WCHAR wBuffer[1024];
size_t nTemp; size_t nTemp;
@ -313,6 +327,17 @@ static BOOL DoBlockingHttpCall(const char* sHostUrl, const char* sRequestedPage,
nPort = INTERNET_DEFAULT_HTTPS_PORT; nPort = INTERNET_DEFAULT_HTTPS_PORT;
} }
const char* sPort = strchr(sHostName, ':');
if (sPort)
{
nHostnameLen = sPort - sHostName;
nPort = atoi(sPort + 1);
}
else
{
nHostnameLen = strlen(sHostName);
}
// Use WinHttpOpen to obtain a session handle. // Use WinHttpOpen to obtain a session handle.
hSession = WinHttpOpen(L"RetroAchievements Client Bootstrap", hSession = WinHttpOpen(L"RetroAchievements Client Bootstrap",
WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
@ -327,10 +352,11 @@ static BOOL DoBlockingHttpCall(const char* sHostUrl, const char* sRequestedPage,
else else
{ {
#if defined(_MSC_VER) && _MSC_VER >= 1400 #if defined(_MSC_VER) && _MSC_VER >= 1400
mbstowcs_s(&nTemp, wBuffer, sizeof(wBuffer) / sizeof(wBuffer[0]), sHostName, strlen(sHostName) + 1); mbstowcs_s(&nTemp, wBuffer, sizeof(wBuffer) / sizeof(wBuffer[0]), sHostName, nHostnameLen);
#else #else
nTemp = mbstowcs(wBuffer, sHostName, strlen(sHostName) + 1); nTemp = mbstowcs(wBuffer, sHostName, nHostnameLen);
#endif #endif
if (nTemp > 0) if (nTemp > 0)
{ {
hConnect = WinHttpConnect(hSession, wBuffer, nPort, 0); hConnect = WinHttpConnect(hSession, wBuffer, nPort, 0);
@ -659,12 +685,14 @@ static const char* CCONV _RA_InstallIntegration()
_RA_InstallSharedFunctions = (void(CCONV*)(int(*)(), void(*)(), void(*)(), void(*)(), void(*)(char*), void(*)(), void(*)(const char*))) GetProcAddress(g_hRADLL, "_RA_InstallSharedFunctionsExt"); _RA_InstallSharedFunctions = (void(CCONV*)(int(*)(), void(*)(), void(*)(), void(*)(), void(*)(char*), void(*)(), void(*)(const char*))) GetProcAddress(g_hRADLL, "_RA_InstallSharedFunctionsExt");
_RA_SetForceRepaint = (void(CCONV*)(int)) GetProcAddress(g_hRADLL, "_RA_SetForceRepaint"); _RA_SetForceRepaint = (void(CCONV*)(int)) GetProcAddress(g_hRADLL, "_RA_SetForceRepaint");
_RA_CreatePopupMenu = (HMENU(CCONV*)(void)) GetProcAddress(g_hRADLL, "_RA_CreatePopupMenu"); _RA_CreatePopupMenu = (HMENU(CCONV*)(void)) GetProcAddress(g_hRADLL, "_RA_CreatePopupMenu");
_RA_GetPopupMenuItems = (int(CCONV*)(RA_MenuItem*)) GetProcAddress(g_hRADLL, "_RA_GetPopupMenuItems");
_RA_InvokeDialog = (void(CCONV*)(LPARAM)) GetProcAddress(g_hRADLL, "_RA_InvokeDialog"); _RA_InvokeDialog = (void(CCONV*)(LPARAM)) GetProcAddress(g_hRADLL, "_RA_InvokeDialog");
_RA_SetUserAgentDetail = (void(CCONV*)(const char*)) GetProcAddress(g_hRADLL, "_RA_SetUserAgentDetail"); _RA_SetUserAgentDetail = (void(CCONV*)(const char*)) GetProcAddress(g_hRADLL, "_RA_SetUserAgentDetail");
_RA_AttemptLogin = (void(CCONV*)(int)) GetProcAddress(g_hRADLL, "_RA_AttemptLogin"); _RA_AttemptLogin = (void(CCONV*)(int)) GetProcAddress(g_hRADLL, "_RA_AttemptLogin");
_RA_SetConsoleID = (int(CCONV*)(unsigned int)) GetProcAddress(g_hRADLL, "_RA_SetConsoleID"); _RA_SetConsoleID = (int(CCONV*)(unsigned int)) GetProcAddress(g_hRADLL, "_RA_SetConsoleID");
_RA_ClearMemoryBanks = (void(CCONV*)()) GetProcAddress(g_hRADLL, "_RA_ClearMemoryBanks"); _RA_ClearMemoryBanks = (void(CCONV*)()) GetProcAddress(g_hRADLL, "_RA_ClearMemoryBanks");
_RA_InstallMemoryBank = (void(CCONV*)(int, RA_ReadMemoryFunc*, RA_WriteMemoryFunc*, int)) GetProcAddress(g_hRADLL, "_RA_InstallMemoryBank"); _RA_InstallMemoryBank = (void(CCONV*)(int, RA_ReadMemoryFunc*, RA_WriteMemoryFunc*, int)) GetProcAddress(g_hRADLL, "_RA_InstallMemoryBank");
_RA_InstallMemoryBankBlockReader = (void(CCONV*)(int, RA_ReadMemoryBlockFunc*)) GetProcAddress(g_hRADLL, "_RA_InstallMemoryBankBlockReader");
_RA_Shutdown = (int(CCONV*)()) GetProcAddress(g_hRADLL, "_RA_Shutdown"); _RA_Shutdown = (int(CCONV*)()) GetProcAddress(g_hRADLL, "_RA_Shutdown");
_RA_IsOverlayFullyVisible = (int(CCONV*)()) GetProcAddress(g_hRADLL, "_RA_IsOverlayFullyVisible"); _RA_IsOverlayFullyVisible = (int(CCONV*)()) GetProcAddress(g_hRADLL, "_RA_IsOverlayFullyVisible");
_RA_SetPaused = (void(CCONV*)(int)) GetProcAddress(g_hRADLL, "_RA_SetPaused"); _RA_SetPaused = (void(CCONV*)(int)) GetProcAddress(g_hRADLL, "_RA_SetPaused");
@ -983,12 +1011,14 @@ void RA_Shutdown()
_RA_InstallSharedFunctions = nullptr; _RA_InstallSharedFunctions = nullptr;
_RA_SetForceRepaint = nullptr; _RA_SetForceRepaint = nullptr;
_RA_CreatePopupMenu = nullptr; _RA_CreatePopupMenu = nullptr;
_RA_GetPopupMenuItems = nullptr;
_RA_InvokeDialog = nullptr; _RA_InvokeDialog = nullptr;
_RA_SetUserAgentDetail = nullptr; _RA_SetUserAgentDetail = nullptr;
_RA_AttemptLogin = nullptr; _RA_AttemptLogin = nullptr;
_RA_SetConsoleID = nullptr; _RA_SetConsoleID = nullptr;
_RA_ClearMemoryBanks = nullptr; _RA_ClearMemoryBanks = nullptr;
_RA_InstallMemoryBank = nullptr; _RA_InstallMemoryBank = nullptr;
_RA_InstallMemoryBankBlockReader = nullptr;
_RA_Shutdown = nullptr; _RA_Shutdown = nullptr;
_RA_IsOverlayFullyVisible = nullptr; _RA_IsOverlayFullyVisible = nullptr;
_RA_SetPaused = nullptr; _RA_SetPaused = nullptr;

View file

@ -72,6 +72,21 @@ extern HMENU RA_CreatePopupMenu(void);
#define IDM_RA_MENUSTART 1700 #define IDM_RA_MENUSTART 1700
#define IDM_RA_MENUEND 1739 #define IDM_RA_MENUEND 1739
typedef struct RA_MenuItem
{
LPCWSTR sLabel;
LPARAM nID;
int bChecked;
} RA_MenuItem;
/**
* Gets items for building a popup menu.
*
* @param pItems Pre-allocated array to populate [should contain space for at least 32 items]
* @return Number of items populated in the items array
*/
extern int RA_GetPopupMenuItems(RA_MenuItem *pItems);
/** /**
* Called when a menu item in the popup menu is selected. * Called when a menu item in the popup menu is selected.
* *
@ -127,6 +142,9 @@ typedef void (RA_WriteMemoryFunc)(unsigned int nAddress, unsigned char nValue);
*/ */
extern void RA_InstallMemoryBank(int nBankID, RA_ReadMemoryFunc pReader, RA_WriteMemoryFunc pWriter, int nBankSize); extern void RA_InstallMemoryBank(int nBankID, RA_ReadMemoryFunc pReader, RA_WriteMemoryFunc pWriter, int nBankSize);
typedef unsigned int (RA_ReadMemoryBlockFunc)(unsigned int nAddress, unsigned char* pBuffer, unsigned int nBytes);
extern void RA_InstallMemoryBankBlockReader(int nBankID, RA_ReadMemoryBlockFunc pReader);
/** /**
* Deinitializes and unloads the DLL. * Deinitializes and unloads the DLL.
*/ */