diff --git a/Source/control.cpp b/Source/control.cpp index 14b4e1fa2..9d8e71ae2 100644 --- a/Source/control.cpp +++ b/Source/control.cpp @@ -6,8 +6,8 @@ void *pDurIcons; void *pChrButtons; BOOL drawhpflag; // idb BOOL dropGoldFlag; -int panbtn[8]; -BOOL chrbtn[4]; +WORD panbtn[8]; +WORD chrbtn[4]; void *pMultiBtns; void *pPanelButtons; void *pChrPanel; @@ -18,14 +18,14 @@ BOOL drawmanaflag; // idb BOOL chrbtnactive; char sgszTalkMsg[MAX_SEND_STR_LEN]; BYTE *pPanelText; -int frame_4B8800; // idb +int nGoldFrame; BYTE *pLifeBuff; BYTE *pBtmBuff; void *pTalkBtns; int pstrjust[4]; int pnumlines; // idb BOOL pinfoflag; -int talkbtndown[3]; +WORD talkbtndown[3]; int pSpell; // weak BYTE *pManaBuff; char infoclr; // weak @@ -1176,64 +1176,58 @@ void UpdateManaFlask() void InitControlPan() { - size_t v0; // esi - void *v1; // ecx - void *v2; // ecx - void *v3; // ecx - unsigned char *v5; // eax - - v0 = 144 * 640; - if (gbMaxPlayers != 1) - v0 = 288 * 640; - pBtmBuff = DiabloAllocPtr(v0); - memset(pBtmBuff, 0, v0); - pManaBuff = DiabloAllocPtr(0x1E40); - memset(pManaBuff, 0, 0x1E40); - pLifeBuff = DiabloAllocPtr(0x1E40); - memset(pLifeBuff, 0, 0x1E40); + int i; + + if (gbMaxPlayers == 1) { + pBtmBuff = DiabloAllocPtr(144 * 640); + memset(pBtmBuff, 0, 144 * 640); + } else { + pBtmBuff = DiabloAllocPtr(288 * 640); + memset(pBtmBuff, 0, 288 * 640); + } + pManaBuff = DiabloAllocPtr(88 * 88); + memset(pManaBuff, 0, 88 * 88); + pLifeBuff = DiabloAllocPtr(88 * 88); + memset(pLifeBuff, 0, 88 * 88); pPanelText = LoadFileInMem("CtrlPan\\SmalText.CEL", 0); pChrPanel = LoadFileInMem("Data\\Char.CEL", 0); pSpellCels = LoadFileInMem("CtrlPan\\SpelIcon.CEL", 0); SetSpellTrans(RSPLTYPE_SKILL); pStatusPanel = LoadFileInMem("CtrlPan\\Panel8.CEL", 0); CelDecodeRect((BYTE *)pBtmBuff, 0, 143, 640, (BYTE *)pStatusPanel, 1, 640); - v1 = pStatusPanel; - pStatusPanel = 0; - mem_free_dbg(v1); + MemFreeDbg(pStatusPanel); pStatusPanel = LoadFileInMem("CtrlPan\\P8Bulbs.CEL", 0); CelDecodeRect((BYTE *)pLifeBuff, 0, 87, 88, (BYTE *)pStatusPanel, 1, 88); CelDecodeRect((BYTE *)pManaBuff, 0, 87, 88, (BYTE *)pStatusPanel, 2, 88); - v2 = pStatusPanel; - pStatusPanel = 0; - mem_free_dbg(v2); + MemFreeDbg(pStatusPanel); talkflag = 0; if (gbMaxPlayers != 1) { pTalkPanel = LoadFileInMem("CtrlPan\\TalkPanl.CEL", 0); CelDecodeRect((BYTE *)pBtmBuff, 0, 287, 640, (BYTE *)pTalkPanel, 1, 640); - v3 = pTalkPanel; - pTalkPanel = 0; - mem_free_dbg(v3); + MemFreeDbg(pTalkPanel); pMultiBtns = LoadFileInMem("CtrlPan\\P8But2.CEL", 0); pTalkBtns = LoadFileInMem("CtrlPan\\TalkButt.CEL", 0); sgbPlrTalkTbl = 0; - *(_DWORD *)byte_4B894C = 0x1010101; - talkbtndown[0] = 0; - talkbtndown[1] = 0; sgszTalkMsg[0] = 0; - talkbtndown[2] = 0; + for (i = 0; i < sizeof(byte_4B894C); i++) + byte_4B894C[i] = 1; + for (i = 0; i < sizeof(talkbtndown); i++) + talkbtndown[i] = 0; } panelflag = 0; lvlbtndown = 0; pPanelButtons = LoadFileInMem("CtrlPan\\Panel8bu.CEL", 0); - memset(panbtn, 0, sizeof(panbtn)); + for (i = 0; i < sizeof(panbtn); i++) + panbtn[i] = 0; panbtndown = 0; - numpanbtns = 2 * (gbMaxPlayers != 1) + 6; + if (gbMaxPlayers == 1) + numpanbtns = 6; + else + numpanbtns = 8; pChrButtons = LoadFileInMem("Data\\CharBut.CEL", 0); - chrbtn[0] = 0; - chrbtn[1] = 0; - chrbtn[2] = 0; + for (i = 0; i < sizeof(chrbtn); i++) + chrbtn[i] = 0; chrbtnactive = FALSE; - chrbtn[3] = 0; pDurIcons = LoadFileInMem("Items\\DurIcons.CEL", 0); strcpy(infostr, ""); ClearPanel(); @@ -1254,23 +1248,13 @@ void InitControlPan() SpellPages[0][0] = SPL_RECHARGE; } pQLogCel = LoadFileInMem("Data\\Quest.CEL", 0); - v5 = LoadFileInMem("CtrlPan\\Golddrop.cel", 0); - frame_4B8800 = 1; + pGBoxBuff = LoadFileInMem("CtrlPan\\Golddrop.cel", 0); dropGoldFlag = FALSE; dropGoldValue = 0; initialDropGoldValue = 0; initialDropGoldIndex = 0; - pGBoxBuff = v5; + nGoldFrame = 1; } -// 4B851C: using guessed type int lvlbtndown; -// 4B8840: using guessed type int sgbPlrTalkTbl; -// 4B8950: using guessed type int sbooktab; -// 4B8960: using guessed type int talkflag; -// 4B8968: using guessed type int sbookflag; -// 4B8A7C: using guessed type int numpanbtns; -// 4B8B84: using guessed type int panelflag; -// 4B8C98: using guessed type int spselflag; -// 679660: using guessed type char gbMaxPlayers; void ClearCtrlPan() { @@ -2580,8 +2564,8 @@ void DrawGoldSplit(int amount) } screen_xa = screen_x + 452; } - CelDecodeOnly(screen_xa, 300, (BYTE *)pCelBuff, frame_4B8800, 12); - frame_4B8800 = (frame_4B8800 & 7) + 1; + CelDecodeOnly(screen_xa, 300, (BYTE *)pCelBuff, nGoldFrame, 12); + nGoldFrame = (nGoldFrame & 7) + 1; } void control_drop_gold(char vkey) diff --git a/Source/control.h b/Source/control.h index 31d8859f2..40fa51e41 100644 --- a/Source/control.h +++ b/Source/control.h @@ -6,8 +6,8 @@ extern void *pDurIcons; extern void *pChrButtons; extern BOOL drawhpflag; // idb extern BOOL dropGoldFlag; -extern int panbtn[8]; -extern BOOL chrbtn[4]; +extern WORD panbtn[8]; +extern WORD chrbtn[4]; extern void *pMultiBtns; extern void *pPanelButtons; extern void *pChrPanel; @@ -16,14 +16,14 @@ extern int dropGoldValue; // idb extern BOOL drawmanaflag; // idb extern BOOL chrbtnactive; extern BYTE *pPanelText; -extern int frame_4B8800; // idb +extern int nGoldFrame; extern BYTE *pLifeBuff; extern BYTE *pBtmBuff; extern void *pTalkBtns; extern int pstrjust[4]; extern int pnumlines; // idb extern BOOL pinfoflag; -extern int talkbtndown[3]; +extern WORD talkbtndown[3]; extern int pSpell; // weak extern BYTE *pManaBuff; extern char infoclr; // weak