From 2a33606bbb559de862947cabf95caf1b1c81e8a7 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Fri, 14 Dec 2018 23:52:44 +0100 Subject: [PATCH] Clean up msg.cpp msg_send_drop_pkt msg_send_packet delta_kill_monster delta_monster_hp delta_sync_monster delta_sync_golem delta_leave_sync delta_portal_inited delta_quest_inited delta_open_portal Fix On_* bin exact --- Source/msg.cpp | 134 +++++++++++++++++++++---------------------------- structs.h | 30 +++++------ 2 files changed, 72 insertions(+), 92 deletions(-) diff --git a/Source/msg.cpp b/Source/msg.cpp index 6c1f6d7b2..cc9509f48 100644 --- a/Source/msg.cpp +++ b/Source/msg.cpp @@ -23,33 +23,31 @@ static float msg_cpp_init_value = INFINITY; void __fastcall msg_send_drop_pkt(int pnum, int reason) { - TFakeDropPlr cmd; // [esp+0h] [ebp-8h] + TFakeDropPlr cmd; cmd.dwReason = reason; cmd.bCmd = FAKE_CMD_DROPID; cmd.bPlr = pnum; - msg_send_packet(pnum, &cmd, 6); + msg_send_packet(pnum, &cmd, sizeof(cmd)); } void __fastcall msg_send_packet(int pnum, const void *packet, DWORD dwSize) { - const void *v3; // edi - TMegaPkt *v4; // eax - TFakeCmdPlr cmd; // [esp+Ah] [ebp-2h] + TMegaPkt *packeta; + TFakeCmdPlr cmd; - v3 = packet; if (pnum != sgnCurrMegaPlayer) { sgnCurrMegaPlayer = pnum; cmd.bCmd = FAKE_CMD_SETID; cmd.bPlr = pnum; - msg_send_packet(pnum, &cmd, 2); + msg_send_packet(pnum, &cmd, sizeof(cmd)); } - v4 = sgpCurrPkt; - if (sgpCurrPkt->dwSpaceLeft < (unsigned int)dwSize) { + packeta = sgpCurrPkt; + if (sgpCurrPkt->dwSpaceLeft < dwSize) { msg_get_next_packet(); - v4 = sgpCurrPkt; + packeta = sgpCurrPkt; } - memcpy((char *)&v4[1] - v4->dwSpaceLeft, v3, dwSize); + memcpy((char *)&packeta[1] - packeta->dwSpaceLeft, packet, dwSize); sgpCurrPkt->dwSpaceLeft -= dwSize; } // 65AB24: using guessed type int sgnCurrMegaPlayer; @@ -364,17 +362,15 @@ void __cdecl delta_init() void __fastcall delta_kill_monster(int mi, BYTE x, BYTE y, BYTE bLevel) { - DMonsterStr *v4; // eax - char v5; // cl + DMonsterStr *pD; if (gbMaxPlayers != 1) { - v4 = &sgLevels[bLevel].monster[mi]; sgbDeltaChanged = 1; - v5 = monster[mi]._mdir; - v4->_mhitpoints = 0; - v4->_mx = x; - v4->_mdir = v5; - v4->_my = y; + pD = &sgLevels[bLevel].monster[mi]; + pD->_mx = x; + pD->_my = y; + pD->_mdir = monster[mi]._mdir; + pD->_mhitpoints = 0; } } // 67618C: using guessed type char sgbDeltaChanged; @@ -382,13 +378,13 @@ void __fastcall delta_kill_monster(int mi, BYTE x, BYTE y, BYTE bLevel) void __fastcall delta_monster_hp(int mi, int hp, BYTE bLevel) { - DMonsterStr *v3; // eax + DMonsterStr *pD; if (gbMaxPlayers != 1) { sgbDeltaChanged = 1; - v3 = &sgLevels[bLevel].monster[mi]; - if (v3->_mhitpoints > hp) - v3->_mhitpoints = hp; + pD = &sgLevels[bLevel].monster[mi]; + if (pD->_mhitpoints > hp) + pD->_mhitpoints = hp; } } // 67618C: using guessed type char sgbDeltaChanged; @@ -396,18 +392,16 @@ void __fastcall delta_monster_hp(int mi, int hp, BYTE bLevel) void __fastcall delta_sync_monster(TCmdLocParam1 *packet, BYTE level) { - DMonsterStr *v2; // eax - char v3; // dl + DMonsterStr *pD; if (gbMaxPlayers != 1) { sgbDeltaChanged = 1; - v2 = &sgLevels[(unsigned char)level].monster[(unsigned char)packet->bCmd]; - if (v2->_mhitpoints) { - v2->_mx = packet->x; - v3 = packet->y; - v2->_mactive = -1; - v2->_my = v3; - v2->_menemy = packet->wParam1; + pD = &sgLevels[level].monster[(BYTE)packet->bCmd]; + if (pD->_mhitpoints) { + pD->_mx = packet->x; + pD->_my = packet->y; + pD->_mactive = -1; + pD->_menemy = packet->wParam1; } } } @@ -416,19 +410,17 @@ void __fastcall delta_sync_monster(TCmdLocParam1 *packet, BYTE level) void __fastcall delta_sync_golem(TCmdGolem *pG, int pnum, BYTE bLevel) { - DMonsterStr *v3; // eax - char v4; // dl + DMonsterStr *pD; if (gbMaxPlayers != 1) { sgbDeltaChanged = 1; - v3 = &sgLevels[(unsigned char)bLevel].monster[pnum]; - v3->_mx = pG->_mx; - v4 = pG->_my; - v3->_mactive = -1; - v3->_my = v4; - v3->_menemy = pG->_menemy; - v3->_mdir = pG->_mdir; - v3->_mhitpoints = pG->_mhitpoints; + pD = &sgLevels[bLevel].monster[pnum]; + pD->_mx = pG->_mx; + pD->_my = pG->_my; + pD->_mactive = -1; + pD->_menemy = pG->_menemy; + pD->_mdir = pG->_mdir; + pD->_mhitpoints = pG->_mhitpoints; } } // 67618C: using guessed type char sgbDeltaChanged; @@ -436,38 +428,28 @@ void __fastcall delta_sync_golem(TCmdGolem *pG, int pnum, BYTE bLevel) void __fastcall delta_leave_sync(BYTE bLevel) { - unsigned char v1; // bl - BOOLEAN v2; // zf - int v3; // eax - int i; // ebp - int v5; // ecx - int v6; // esi - DMonsterStr *v7; // edi + int i, ma; + DMonsterStr *pD; - v1 = bLevel; if (gbMaxPlayers != 1) { - v2 = currlevel == 0; if (currlevel == 0) { - v3 = GetRndSeed(); - v2 = currlevel == 0; - glSeedTbl[0] = v3; + glSeedTbl[0] = GetRndSeed(); } - if (!v2) { + if (currlevel > 0) { for (i = 0; i < nummonsters; ++i) { - v5 = monstactive[i]; - v6 = monstactive[i]; - if (monster[v6]._mhitpoints) { + ma = monstactive[i]; + if (monster[ma]._mhitpoints) { sgbDeltaChanged = 1; - v7 = &sgLevels[v1].monster[v5]; - v7->_mx = monster[v6]._mx; - v7->_my = monster[v6]._my; - v7->_mdir = monster[v6]._mdir; - v7->_menemy = encode_enemy(v5); - v7->_mhitpoints = monster[v6]._mhitpoints; - v7->_mactive = monster[v6]._msquelch; + pD = &sgLevels[bLevel].monster[ma]; + pD->_mx = monster[ma]._mx; + pD->_my = monster[ma]._my; + pD->_mdir = monster[ma]._mdir; + pD->_menemy = encode_enemy(ma); + pD->_mhitpoints = monster[ma]._mhitpoints; + pD->_mactive = monster[ma]._msquelch; } } - memcpy(&sgLocals[v1], automapview, 0x640u); + memcpy(&sgLocals[bLevel], automapview, 0x640u); } } } @@ -477,12 +459,12 @@ void __fastcall delta_leave_sync(BYTE bLevel) BOOL __fastcall delta_portal_inited(int i) { - return sgJunk.portal[i].x == LOBYTE(-1); + return sgJunk.portal[i].x == -1; } BOOL __fastcall delta_quest_inited(int i) { - return sgJunk.quests[i].qstate != LOBYTE(-1); + return sgJunk.quests[i].qstate != -1; } void __fastcall DeltaAddItem(int ii) @@ -2619,15 +2601,12 @@ int __fastcall On_ACTIVATEPORTAL(TCmdLocParam3 *pCmd, int pnum) void __fastcall delta_open_portal(int pnum, BYTE x, BYTE y, BYTE bLevel, BYTE bLType, BYTE bSetLvl) { - int v6; // eax - - v6 = pnum; sgbDeltaChanged = 1; - sgJunk.portal[v6].y = y; - sgJunk.portal[v6].level = bLevel; - sgJunk.portal[v6].ltype = bLType; - sgJunk.portal[v6].x = x; - sgJunk.portal[v6].setlvl = bSetLvl; + sgJunk.portal[pnum].x = x; + sgJunk.portal[pnum].y = y; + sgJunk.portal[pnum].level = bLevel; + sgJunk.portal[pnum].ltype = bLType; + sgJunk.portal[pnum].setlvl = bSetLvl; } // 67618C: using guessed type char sgbDeltaChanged; @@ -2729,8 +2708,9 @@ int __fastcall On_SYNCQUEST(TCmdQuest *pCmd, int pnum) int __fastcall On_ENDSHIELD(TCmd *pCmd, int pnum) { + int i; + if (gbBufferMsgs != 1 && pnum != myplr && currlevel == plr[pnum].plrlevel) { - int i; for (i = 0; i < nummissiles; i++) { int mi = missileactive[i]; if (missile[mi]._mitype == MIS_MANASHIELD && missile[mi]._misource == pnum) { diff --git a/structs.h b/structs.h index 9665aa5b4..0a49c55b9 100644 --- a/structs.h +++ b/structs.h @@ -701,29 +701,29 @@ typedef struct TCmd { typedef struct TCmdLoc { char bCmd; - char x; - char y; + BYTE x; + BYTE y; } TCmdLoc; typedef struct TCmdLocParam1 { char bCmd; - char x; - char y; + BYTE x; + BYTE y; WORD wParam1; } TCmdLocParam1; typedef struct TCmdLocParam2 { char bCmd; - char x; - char y; + BYTE x; + BYTE y; WORD wParam1; WORD wParam2; } TCmdLocParam2; typedef struct TCmdLocParam3 { char bCmd; - char x; - char y; + BYTE x; + BYTE y; WORD wParam1; WORD wParam2; WORD wParam3; @@ -749,8 +749,8 @@ typedef struct TCmdParam3 { typedef struct TCmdGolem { char bCmd; - char _mx; - char _my; + BYTE _mx; + BYTE _my; BYTE _mdir; char _menemy; int _mhitpoints; @@ -760,7 +760,7 @@ typedef struct TCmdGolem { typedef struct TCmdQuest { char bCmd; BYTE q; - char qstate; + BYTE qstate; BYTE qlog; BYTE qvar1; } TCmdQuest; @@ -771,8 +771,8 @@ typedef struct TCmdGItem { BYTE bPnum; BYTE bCursitem; BYTE bLevel; - char x; - char y; + BYTE x; + BYTE y; WORD wIndx; WORD wCI; int dwSeed; @@ -788,8 +788,8 @@ typedef struct TCmdGItem { typedef struct TCmdPItem { char bCmd; - char x; - char y; + BYTE x; + BYTE y; WORD wIndx; WORD wCI; int dwSeed;