@@ -39,22 +39,24 @@ typedef unsigned char BYTE;
3939 * The structure which contains data about commandline arguments (ie, the precise values of them)
4040 * @author Necrolis
4141 */
42+ #pragma pack(push,enter_include)
43+ #pragma pack(1)
4244struct D2GameConfigStrc // size 0x3C7
4345{
44- DWORD dwExpansion;
45- BYTE bWindowed; // {"VIDEO","WINDOW" , "w" , 0x00, 0x04, 0x00},
46- BYTE b3DFX; // {"VIDEO","3DFX" , "3dfx" , 0x00, 0x05, 0x00},
47- BYTE bOpenGL; // {"VIDEO","OPENGL" , "opengl", 0x00, 0x06, 0x00},
48- BYTE bRave; // {"VIDEO","RAVE" , "rave" , 0x00, 0x07, 0x00},
49- BYTE bD3D; // {"VIDEO","D3D" , "d3d" , 0x00, 0x08, 0x00},
50- BYTE bPerspective; // {"VIDEO","PERSPECTIVE" , "per" , 0x00, 0x09, 0x00},
51- BYTE bQuality; // {"VIDEO","QUALITY" , "lq" , 0x00, 0x0A, 0x00},
52- DWORD dwGamma; // {"VIDEO","GAMMA" , "gamma" , 0x00, 0x0B, 0x00},
53- BYTE bVSync; // {"VIDEO","VSYNC" , "vsync" , 0x00, 0x0F, 0x00},
54- DWORD dwFramerate; // {"VIDEO","FRAMERATE" , "fr" , 0x01, 0x10, 0x00},
55- DWORD dwGameType; // {"NETWORK" ,"GAMETYPE" ," gametype" , 0x01, 0x0014, 0x00},
56- WORD wJoinID; // {"NETWORK" ,"JOINID" ," joinid" , 0x01, 0x0018, 0x00}, ??? dword overlapps next addy !
57- char szGameName[24 ]; // {"NETWORK" ,"GAMENAME" ," gamename" , 0x02, 0x001A, 0x00} ,
46+ DWORD dwExpansion; // +00
47+ BYTE bWindowed; // +04 ( "w" option)
48+ BYTE b3DFX; // +05 ( "3dfx" option)
49+ BYTE bOpenGL; // +06 ( "opengl" option)
50+ BYTE bRave; // +07 ( "rave" option)
51+ BYTE bD3D; // +08 ( "d3d" option)
52+ BYTE bPerspective; // +09 ( "per" option)
53+ BYTE bQuality; // +0A ( "lq" option)
54+ DWORD dwGamma; // +0B ( "gamma" option)
55+ BYTE bVSync; // +0F ( "vsync" option)
56+ DWORD dwFramerate; // +10 ( "fr" option)
57+ DWORD dwGameType; // +14 (" gametype" option)
58+ WORD wJoinID; // +18 (" joinid" option) ??? dword overlapps next addy !
59+ char szGameName[24 ]; // +1A (" gamename" option) ,
5860 char szServerIP[24 ]; // {"NETWORK" ,"SERVERIP" ,"s" , 0x02, 0x0032, 0x00},
5961 char szBNetIP[24 ]; // {"NETWORK" ,"BATTLENETIP" ,"bn" , 0x02, 0x004A, 0x00},
6062 char szMCPIP[24 ]; // {"NETWORK" ,"MCPIP" ,"mcpip" , 0x02, 0x0062, 0x00},
@@ -95,8 +97,8 @@ struct D2GameConfigStrc // size 0x3C7
9597 BYTE bUnk208;
9698 BYTE bUnk209;
9799 BYTE bUnk20A;
98- BYTE nDifficulty;
99- void * pfMPQFunc; // function ptr; returns 1
100+ BYTE nDifficulty; // +20B
101+ void * pfMPQFunc; // +20C function ptr; returns 1
100102 BYTE bTXT; // {"TXT" ,"TXT" ,"txt" , 0x00, 0x0210, 0x00},
101103 BYTE bLog; // {"DEBUG" ,"LOG" ,"log" , 0x00, 0x0211, 0x00},
102104 BYTE bMsgLog; // {"DEBUG" ,"MSGLOG" ,"msglog" , 0x00, 0x0212, 0x00},
@@ -110,14 +112,15 @@ struct D2GameConfigStrc // size 0x3C7
110112 BYTE bSkipInterface; // skips loading the BNClient QueryInterface
111113 BYTE bBuild; // {"BUILD" ,"BUILD" ,"build" , 0x00, 0x021E, 0x00},
112114 void * pInterface; // {"NETWORK" ,"COMINT" ,"comint" , 0x01, 0x021F, 0x00},
113- BYTE bUnk223[0x134 ]; // ?
115+ BYTE bUnk223[0x134 ]; // +223 ?
114116 BYTE bSkipToBNet; // {"NETWORK" ,"SKIPTOBNET" ,"W" , 0x00, 0x0357, 0x00}, //check at d2launch.6FA1D660 CMP BYTE PTR DS:[EAX+357],BL
115117 BYTE nScreenSize; // {"VIDEO" ,"SCREENSIZE" ,"sz" , 0x00, 0x358, 0x00},
116118 BYTE bShowLogo; // {"VIDEO" ,"SHOWLOGO" ,"sl" , 0x00, 0x359, 0x00},
117119 BYTE nUnk[0x6E ]; // ?
118120
119121 BYTE nPadding; // account for the extra option in 1.13c+
120122};
123+ #pragma pack(pop,enter_include)
121124
122125/*
123126 * The structure which contains OpenD2-specific data
0 commit comments