diff --git a/Source/nthread.cpp b/Source/nthread.cpp index c1b568a3b..096bd08e2 100644 --- a/Source/nthread.cpp +++ b/Source/nthread.cpp @@ -16,8 +16,8 @@ int turn_upper_bit; // weak char byte_679758; // weak char sgbPacketCountdown; // weak char sgbThreadIsRunning; // weak -int gdwLargestMsgSize; // weak -int gdwNormalMsgSize; // weak +DWORD gdwLargestMsgSize; // weak +DWORD gdwNormalMsgSize; // weak int last_tick; // weak /* data */ @@ -152,18 +152,17 @@ void nthread_start(BOOL set_turn_upper_bit) largestMsgSize = caps.maxmessagesize; gdwDeltaBytesSec = (unsigned int)caps.bytessec >> 2; gdwLargestMsgSize = largestMsgSize; + gdwNormalMsgSize = caps.bytessec * (unsigned int)(unsigned char)byte_679704 / 0x14; + gdwNormalMsgSize *= 3; + gdwNormalMsgSize = gdwNormalMsgSize >> 2; if (caps.maxplayers > 4u) caps.maxplayers = 4; - normalMsgSize = (3 * (caps.bytessec * (unsigned int)(unsigned char)byte_679704 / 0x14) >> 2) / caps.maxplayers; - gdwNormalMsgSize = normalMsgSize; - if (normalMsgSize < 0x80) { - do { + gdwNormalMsgSize /= caps.maxplayers; + while (gdwNormalMsgSize < 0x80){ + gdwNormalMsgSize *= 2; byte_679704 *= 2; - normalMsgSize *= 2; - } while (normalMsgSize < 0x80); - gdwNormalMsgSize = normalMsgSize; } - if (normalMsgSize > largestMsgSize) + if (gdwNormalMsgSize > largestMsgSize) gdwNormalMsgSize = largestMsgSize; if ((unsigned char)gbMaxPlayers > 1u) { sgbThreadIsRunning = 0; @@ -179,19 +178,6 @@ void nthread_start(BOOL set_turn_upper_bit) SetThreadPriority(sghThread, THREAD_PRIORITY_HIGHEST); } } -// 679660: using guessed type char gbMaxPlayers; -// 679704: using guessed type char byte_679704; -// 679730: using guessed type int gdwDeltaBytesSec; -// 679734: using guessed type char nthread_should_run; -// 679738: using guessed type int gdwTurnsInTransit; -// 679750: using guessed type char sgbSyncCountdown; -// 679754: using guessed type int turn_upper_bit; -// 679758: using guessed type char byte_679758; -// 679759: using guessed type char sgbPacketCountdown; -// 67975A: using guessed type char sgbThreadIsRunning; -// 67975C: using guessed type int gdwLargestMsgSize; -// 679760: using guessed type int gdwNormalMsgSize; -// 679764: using guessed type int last_tick; unsigned int __stdcall nthread_handler(void *a1) { diff --git a/Source/nthread.h b/Source/nthread.h index 9710d8a91..479512318 100644 --- a/Source/nthread.h +++ b/Source/nthread.h @@ -11,8 +11,8 @@ extern int glpMsgTbl[MAX_PLRS]; extern unsigned int glpNThreadId; extern int turn_upper_bit; // weak extern char byte_679758; // weak -extern int gdwLargestMsgSize; // weak -extern int gdwNormalMsgSize; // weak +extern DWORD gdwLargestMsgSize; // weak +extern DWORD gdwNormalMsgSize; // weak extern int last_tick; // weak void nthread_terminate_game(const char *pszFcn);