Browse Source

nthread_send_and_recv_turn bin exact

pull/114/head
qndel 7 years ago committed by Anders Jenbo
parent
commit
bca7111fc4
  1. 52
      Source/nthread.cpp
  2. 2
      Source/nthread.h

52
Source/nthread.cpp

@ -39,43 +39,37 @@ void nthread_terminate_game(const char *pszFcn)
} }
} }
int nthread_send_and_recv_turn(int cur_turn, int turn_delta) DWORD nthread_send_and_recv_turn(DWORD cur_turn, int turn_delta)
{ {
unsigned int new_cur_turn; // edi DWORD new_cur_turn;
const char *lastStormFn; // ecx int turn_tmp;
int turn_tmp; // eax int turn;
int turn; // [esp+Ch] [ebp-8h] int curTurnsInTransit;
int curTurnsInTransit; // [esp+10h] [ebp-4h]
new_cur_turn = cur_turn; new_cur_turn = cur_turn;
if (SNetGetTurnsInTransit(&curTurnsInTransit)) { if (!SNetGetTurnsInTransit(&curTurnsInTransit)) {
if (curTurnsInTransit >= (unsigned int)gdwTurnsInTransit) nthread_terminate_game("SNetGetTurnsInTransit");
return new_cur_turn; return 0;
while (1) { }
++curTurnsInTransit; while (curTurnsInTransit < gdwTurnsInTransit) {
curTurnsInTransit++;
turn_tmp = turn_upper_bit | new_cur_turn & 0x7FFFFFFF;
turn_upper_bit = 0;
turn = turn_tmp;
if (!SNetSendTurn((char *)&turn, sizeof(turn))) turn_tmp = turn_upper_bit | new_cur_turn & 0x7FFFFFFF;
break; turn_upper_bit = 0;
turn = turn_tmp;
new_cur_turn += turn_delta; if (!SNetSendTurn((char *)&turn, sizeof(turn))) {
if (new_cur_turn >= 0x7FFFFFFF) nthread_terminate_game("SNetSendTurn");
new_cur_turn = (unsigned short)new_cur_turn; return 0;
if (curTurnsInTransit >= (unsigned int)gdwTurnsInTransit)
return new_cur_turn;
} }
lastStormFn = "SNetSendTurn";
} else { new_cur_turn += turn_delta;
lastStormFn = "SNetGetTurnsInTransit"; if (new_cur_turn >= 0x7FFFFFFF)
new_cur_turn &= 0xFFFF;
} }
nthread_terminate_game(lastStormFn); return new_cur_turn;
return 0;
} }
// 679738: using guessed type int gdwTurnsInTransit;
// 679754: using guessed type int turn_upper_bit;
BOOL nthread_recv_turns(BOOL *pfSendAsync) BOOL nthread_recv_turns(BOOL *pfSendAsync)
{ {

2
Source/nthread.h

@ -16,7 +16,7 @@ extern int gdwNormalMsgSize; // weak
extern int last_tick; // weak extern int last_tick; // weak
void nthread_terminate_game(const char *pszFcn); void nthread_terminate_game(const char *pszFcn);
int nthread_send_and_recv_turn(int cur_turn, int turn_delta); DWORD nthread_send_and_recv_turn(DWORD cur_turn, int turn_delta);
BOOL nthread_recv_turns(BOOL *pfSendAsync); BOOL nthread_recv_turns(BOOL *pfSendAsync);
void nthread_set_turn_upper_bit(); void nthread_set_turn_upper_bit();
void nthread_start(BOOL set_turn_upper_bit); void nthread_start(BOOL set_turn_upper_bit);

Loading…
Cancel
Save