|
|
|
|
/**
|
|
|
|
|
* @file structs.h
|
|
|
|
|
*
|
|
|
|
|
* Various global structures.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
DEVILUTION_BEGIN_NAMESPACE
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
// textdat
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
typedef struct TextDataStruct {
|
|
|
|
|
const char *txtstr;
|
|
|
|
|
int scrlltxt;
|
|
|
|
|
int txtspd; /* calculated dynamically, 01/23/21 */
|
|
|
|
|
int sfxnr;
|
|
|
|
|
} TextDataStruct;
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
// effects/sound
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
typedef struct TSnd {
|
|
|
|
|
const char *sound_path;
|
|
|
|
|
SoundSample *DSB;
|
|
|
|
|
int start_tc;
|
|
|
|
|
} TSnd;
|
|
|
|
|
|
|
|
|
|
typedef struct TSFX {
|
|
|
|
|
unsigned char bFlags;
|
|
|
|
|
const char *pszName;
|
|
|
|
|
TSnd *pSnd;
|
|
|
|
|
} TSFX;
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
// monster
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
typedef struct AnimStruct {
|
|
|
|
|
BYTE *CMem;
|
|
|
|
|
BYTE *Data[8];
|
|
|
|
|
int Frames;
|
|
|
|
|
int Rate;
|
|
|
|
|
} AnimStruct;
|
|
|
|
|
|
|
|
|
|
typedef struct MonsterData {
|
|
|
|
|
int width;
|
|
|
|
|
int mImage;
|
|
|
|
|
const char *GraphicType;
|
|
|
|
|
BOOL has_special;
|
|
|
|
|
const char *sndfile;
|
|
|
|
|
BOOL snd_special;
|
|
|
|
|
BOOL has_trans;
|
|
|
|
|
const char *TransFile;
|
|
|
|
|
int Frames[6];
|
|
|
|
|
int Rate[6];
|
|
|
|
|
const char *mName;
|
|
|
|
|
char mMinDLvl;
|
|
|
|
|
char mMaxDLvl;
|
|
|
|
|
char mLevel;
|
|
|
|
|
int mMinHP;
|
|
|
|
|
int mMaxHP;
|
|
|
|
|
char mAi;
|
|
|
|
|
int mFlags;
|
|
|
|
|
unsigned char mInt;
|
|
|
|
|
unsigned short mHit; // BUGFIX: Some monsters overflow this value on high difficultys (fixed)
|
|
|
|
|
unsigned char mAFNum;
|
|
|
|
|
unsigned char mMinDamage;
|
|
|
|
|
unsigned char mMaxDamage;
|
|
|
|
|
unsigned short mHit2; // BUGFIX: Some monsters overflow this value on high difficulty (fixed)
|
|
|
|
|
unsigned char mAFNum2;
|
|
|
|
|
unsigned char mMinDamage2;
|
|
|
|
|
unsigned char mMaxDamage2;
|
|
|
|
|
unsigned char mArmorClass;
|
|
|
|
|
char mMonstClass;
|
|
|
|
|
unsigned short mMagicRes;
|
|
|
|
|
unsigned short mMagicRes2;
|
|
|
|
|
unsigned short mTreasure;
|
|
|
|
|
char mSelFlag;
|
|
|
|
|
unsigned short mExp;
|
|
|
|
|
} MonsterData;
|
|
|
|
|
|
|
|
|
|
typedef struct CMonster {
|
|
|
|
|
int mtype;
|
|
|
|
|
// TODO: Add enum for place flags
|
|
|
|
|
unsigned char mPlaceFlags;
|
|
|
|
|
AnimStruct Anims[6];
|
|
|
|
|
TSnd *Snds[4][2];
|
|
|
|
|
int width;
|
|
|
|
|
int width2;
|
|
|
|
|
unsigned char mMinHP;
|
|
|
|
|
unsigned char mMaxHP;
|
|
|
|
|
BOOL has_special;
|
|
|
|
|
unsigned char mAFNum;
|
|
|
|
|
char mdeadval;
|
|
|
|
|
const MonsterData *MData;
|
|
|
|
|
// A TRN file contains a sequence of color transitions, represented
|
|
|
|
|
// as indexes into a palette. (a 256 byte array of palette indices)
|
|
|
|
|
BYTE *trans_file;
|
|
|
|
|
} CMonster;
|
|
|
|
|
|
|
|
|
|
typedef struct MonsterStruct { // note: missing field _mAFNum
|
|
|
|
|
int _mMTidx;
|
|
|
|
|
int _mmode; /* MON_MODE */
|
|
|
|
|
unsigned char _mgoal;
|
|
|
|
|
int _mgoalvar1;
|
|
|
|
|
int _mgoalvar2;
|
|
|
|
|
int _mgoalvar3;
|
|
|
|
|
int field_18;
|
|
|
|
|
unsigned char _pathcount;
|
|
|
|
|
int _mx; // Tile X-position of monster
|
|
|
|
|
int _my; // Tile Y-position of monster
|
|
|
|
|
int _mfutx; // Future tile X-position of monster. Set at start of walking animation
|
|
|
|
|
int _mfuty; // Future tile Y-position of monster. Set at start of walking animation
|
|
|
|
|
int _moldx; // Most recent X-position in dMonster.
|
|
|
|
|
int _moldy; // Most recent Y-position in dMonster.
|
|
|
|
|
int _mxoff; // Monster sprite's pixel X-offset from tile.
|
|
|
|
|
int _myoff; // Monster sprite's pixel Y-offset from tile.
|
|
|
|
|
int _mxvel; // Pixel X-velocity while walking. Applied to _mxoff
|
|
|
|
|
int _myvel; // Pixel Y-velocity while walking. Applied to _myoff
|
|
|
|
|
int _mdir; // Direction faced by monster (direction enum)
|
|
|
|
|
int _menemy; // The current target of the mosnter. An index in to either the plr or monster array based on the _meflag value.
|
|
|
|
|
unsigned char _menemyx; // X-coordinate of enemy (usually correspond's to the enemy's futx value)
|
|
|
|
|
unsigned char _menemyy; // Y-coordinate of enemy (usually correspond's to the enemy's futy value)
|
|
|
|
|
short falign_52; // probably _mAFNum (unused)
|
|
|
|
|
unsigned char *_mAnimData;
|
|
|
|
|
int _mAnimDelay; // Tick length of each frame in the current animation
|
|
|
|
|
int _mAnimCnt; // Increases by one each game tick, counting how close we are to _pAnimDelay
|
|
|
|
|
int _mAnimLen; // Number of frames in current animation
|
|
|
|
|
int _mAnimFrame; // Current frame of animation.
|
|
|
|
|
BOOL _meflag;
|
|
|
|
|
BOOL _mDelFlag;
|
|
|
|
|
int _mVar1;
|
|
|
|
|
int _mVar2;
|
|
|
|
|
int _mVar3;
|
|
|
|
|
int _mVar4;
|
|
|
|
|
int _mVar5;
|
|
|
|
|
int _mVar6; // Used as _mxoff but with a higher range so that we can correctly apply velocities of a smaller number
|
|
|
|
|
int _mVar7; // Used as _myoff but with a higher range so that we can correctly apply velocities of a smaller number
|
|
|
|
|
int _mVar8; // Value used to measure progress for moving from one tile to another
|
|
|
|
|
int _mmaxhp;
|
|
|
|
|
int _mhitpoints;
|
|
|
|
|
unsigned char _mAi;
|
|
|
|
|
unsigned char _mint;
|
|
|
|
|
short falign_9A;
|
|
|
|
|
int _mFlags;
|
|
|
|
|
BYTE _msquelch;
|
|
|
|
|
int falign_A4;
|
|
|
|
|
int _lastx;
|
|
|
|
|
int _lasty;
|
|
|
|
|
int _mRndSeed;
|
|
|
|
|
int _mAISeed;
|
|
|
|
|
int falign_B8;
|
|
|
|
|
unsigned char _uniqtype;
|
|
|
|
|
unsigned char _uniqtrans;
|
|
|
|
|
char _udeadval;
|
|
|
|
|
char mWhoHit;
|
|
|
|
|
char mLevel;
|
|
|
|
|
unsigned short mExp;
|
|
|
|
|
unsigned short mHit;
|
|
|
|
|
unsigned char mMinDamage;
|
|
|
|
|
unsigned char mMaxDamage;
|
|
|
|
|
unsigned short mHit2;
|
|
|
|
|
unsigned char mMinDamage2;
|
|
|
|
|
unsigned char mMaxDamage2;
|
|
|
|
|
unsigned char mArmorClass;
|
|
|
|
|
char falign_CB;
|
|
|
|
|
unsigned short mMagicRes;
|
|
|
|
|
int mtalkmsg;
|
|
|
|
|
unsigned char leader;
|
|
|
|
|
unsigned char leaderflag;
|
|
|
|
|
unsigned char packsize;
|
|
|
|
|
Sint8 mlid; // BUGFIX -1 is used when not emitting light this should be signed (fixed)
|
|
|
|
|
const char *mName;
|
|
|
|
|
CMonster *MType;
|
|
|
|
|
const MonsterData *MData;
|
|
|
|
|
} MonsterStruct;
|
|
|
|
|
|
|
|
|
|
typedef struct UniqMonstStruct {
|
|
|
|
|
int mtype;
|
|
|
|
|
const char *mName;
|
|
|
|
|
const char *mTrnName;
|
|
|
|
|
unsigned char mlevel;
|
|
|
|
|
unsigned short mmaxhp;
|
|
|
|
|
unsigned char mAi;
|
|
|
|
|
unsigned char mint;
|
|
|
|
|
unsigned char mMinDamage;
|
|
|
|
|
unsigned char mMaxDamage;
|
|
|
|
|
unsigned short mMagicRes;
|
|
|
|
|
unsigned short mUnqAttr;
|
|
|
|
|
unsigned char mUnqVar1;
|
|
|
|
|
unsigned char mUnqVar2;
|
|
|
|
|
int mtalkmsg;
|
|
|
|
|
} UniqMonstStruct;
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
// objects
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
typedef struct ObjDataStruct {
|
|
|
|
|
char oload;
|
|
|
|
|
char ofindex;
|
|
|
|
|
char ominlvl;
|
|
|
|
|
char omaxlvl;
|
|
|
|
|
char olvltype;
|
|
|
|
|
char otheme;
|
|
|
|
|
char oquest;
|
|
|
|
|
int oAnimFlag;
|
|
|
|
|
int oAnimDelay; // Tick length of each frame in the current animation
|
|
|
|
|
int oAnimLen; // Number of frames in current animation
|
|
|
|
|
int oAnimWidth;
|
|
|
|
|
BOOL oSolidFlag;
|
|
|
|
|
BOOL oMissFlag;
|
|
|
|
|
BOOL oLightFlag;
|
|
|
|
|
char oBreak;
|
|
|
|
|
char oSelFlag;
|
|
|
|
|
BOOL oTrapFlag;
|
|
|
|
|
} ObjDataStruct;
|
|
|
|
|
|
|
|
|
|
typedef struct ObjectStruct {
|
|
|
|
|
int _otype;
|
|
|
|
|
int _ox;
|
|
|
|
|
int _oy;
|
|
|
|
|
int _oLight;
|
|
|
|
|
int _oAnimFlag;
|
|
|
|
|
unsigned char *_oAnimData;
|
|
|
|
|
int _oAnimDelay; // Tick length of each frame in the current animation
|
|
|
|
|
int _oAnimCnt; // Increases by one each game tick, counting how close we are to _pAnimDelay
|
|
|
|
|
int _oAnimLen; // Number of frames in current animation
|
|
|
|
|
int _oAnimFrame; // Current frame of animation.
|
|
|
|
|
int _oAnimWidth;
|
|
|
|
|
int _oAnimWidth2;
|
|
|
|
|
BOOL _oDelFlag;
|
|
|
|
|
char _oBreak; // check
|
|
|
|
|
BOOL _oSolidFlag;
|
|
|
|
|
BOOL _oMissFlag;
|
|
|
|
|
char _oSelFlag; // check
|
|
|
|
|
BOOL _oPreFlag;
|
|
|
|
|
BOOL _oTrapFlag;
|
|
|
|
|
BOOL _oDoorFlag;
|
|
|
|
|
int _olid;
|
|
|
|
|
int _oRndSeed;
|
|
|
|
|
int _oVar1;
|
|
|
|
|
int _oVar2;
|
|
|
|
|
int _oVar3;
|
|
|
|
|
int _oVar4;
|
|
|
|
|
int _oVar5;
|
|
|
|
|
int _oVar6;
|
|
|
|
|
int _oVar7;
|
|
|
|
|
int _oVar8;
|
|
|
|
|
} ObjectStruct;
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
// portal
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
typedef struct PortalStruct {
|
|
|
|
|
BOOL open;
|
|
|
|
|
int x;
|
|
|
|
|
int y;
|
|
|
|
|
int level;
|
|
|
|
|
int ltype;
|
|
|
|
|
BOOL setlvl;
|
|
|
|
|
} PortalStruct;
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
// gamemenu/gmenu
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
// TPDEF PTR FCN VOID TMenuFcn
|
|
|
|
|
|
|
|
|
|
typedef struct TMenuItem {
|
|
|
|
|
DWORD dwFlags;
|
|
|
|
|
const char *pszStr;
|
|
|
|
|
void (*fnMenu)(BOOL); /* fix, should have one arg */
|
|
|
|
|
} TMenuItem;
|
|
|
|
|
|
|
|
|
|
// TPDEF PTR FCN VOID TMenuUpdateFcn
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
// spells
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
typedef struct SpellData {
|
|
|
|
|
unsigned char sName;
|
|
|
|
|
unsigned char sManaCost;
|
|
|
|
|
unsigned char sType;
|
|
|
|
|
const char *sNameText;
|
|
|
|
|
const char *sSkillText;
|
|
|
|
|
int sBookLvl;
|
|
|
|
|
int sStaffLvl;
|
|
|
|
|
BOOL sTargeted;
|
|
|
|
|
BOOL sTownSpell;
|
|
|
|
|
int sMinInt;
|
|
|
|
|
unsigned char sSFX;
|
|
|
|
|
unsigned char sMissiles[3];
|
|
|
|
|
unsigned char sManaAdj;
|
|
|
|
|
unsigned char sMinMana;
|
|
|
|
|
int sStaffMin;
|
|
|
|
|
int sStaffMax;
|
|
|
|
|
int sBookCost;
|
|
|
|
|
int sStaffCost;
|
|
|
|
|
} SpellData;
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
// drlg
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
typedef struct ShadowStruct {
|
|
|
|
|
unsigned char strig;
|
|
|
|
|
unsigned char s1;
|
|
|
|
|
unsigned char s2;
|
|
|
|
|
unsigned char s3;
|
|
|
|
|
unsigned char nv1;
|
|
|
|
|
unsigned char nv2;
|
|
|
|
|
unsigned char nv3;
|
|
|
|
|
} ShadowStruct;
|
|
|
|
|
|
|
|
|
|
typedef struct HALLNODE {
|
|
|
|
|
int nHallx1;
|
|
|
|
|
int nHally1;
|
|
|
|
|
int nHallx2;
|
|
|
|
|
int nHally2;
|
|
|
|
|
int nHalldir;
|
|
|
|
|
struct HALLNODE *pNext;
|
|
|
|
|
} HALLNODE;
|
|
|
|
|
|
|
|
|
|
typedef struct ROOMNODE {
|
|
|
|
|
int nRoomx1;
|
|
|
|
|
int nRoomy1;
|
|
|
|
|
int nRoomx2;
|
|
|
|
|
int nRoomy2;
|
|
|
|
|
int nRoomDest;
|
|
|
|
|
} ROOMNODE;
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
// themes
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
typedef struct ThemeStruct {
|
|
|
|
|
char ttype; /* aligned 4 */
|
|
|
|
|
int ttval;
|
|
|
|
|
} ThemeStruct;
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
// inv
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
typedef struct InvXY {
|
|
|
|
|
int X;
|
|
|
|
|
int Y;
|
|
|
|
|
} InvXY;
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
// diabloui
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
// TPDEF PTR FCN VOID PLAYSND
|
|
|
|
|
|
|
|
|
|
typedef struct _uidefaultstats {
|
|
|
|
|
WORD strength;
|
|
|
|
|
WORD magic;
|
|
|
|
|
WORD dexterity;
|
|
|
|
|
WORD vitality;
|
|
|
|
|
} _uidefaultstats;
|
|
|
|
|
|
|
|
|
|
typedef struct _uiheroinfo {
|
|
|
|
|
struct _uiheroinfo *next;
|
|
|
|
|
char name[16];
|
|
|
|
|
WORD level;
|
|
|
|
|
BYTE heroclass;
|
|
|
|
|
BYTE herorank;
|
|
|
|
|
WORD strength;
|
|
|
|
|
WORD magic;
|
|
|
|
|
WORD dexterity;
|
|
|
|
|
WORD vitality;
|
|
|
|
|
int gold;
|
|
|
|
|
int hassaved;
|
|
|
|
|
BOOL spawned;
|
|
|
|
|
} _uiheroinfo;
|
|
|
|
|
|
|
|
|
|
// TPDEF PTR FCN UCHAR ENUMHEROPROC
|
|
|
|
|
// TPDEF PTR FCN UCHAR ENUMHEROS
|
|
|
|
|
// TPDEF PTR FCN UCHAR CREATEHERO
|
|
|
|
|
// TPDEF PTR FCN UCHAR DELETEHERO
|
|
|
|
|
// TPDEF PTR FCN UCHAR GETDEFHERO
|
|
|
|
|
|
|
|
|
|
// TPDEF PTR FCN INT PROGRESSFCN
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
// storm
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
// TPDEF PTR FCN UCHAR SMSGIDLEPROC
|
|
|
|
|
// TPDEF PTR FCN VOID SMSGHANDLER
|
|
|
|
|
|
|
|
|
|
typedef struct _SNETCAPS {
|
|
|
|
|
DWORD size;
|
|
|
|
|
DWORD flags;
|
|
|
|
|
DWORD maxmessagesize;
|
|
|
|
|
DWORD maxqueuesize;
|
|
|
|
|
DWORD maxplayers;
|
|
|
|
|
DWORD bytessec;
|
|
|
|
|
DWORD latencyms;
|
|
|
|
|
DWORD defaultturnssec;
|
|
|
|
|
DWORD defaultturnsintransit;
|
|
|
|
|
} _SNETCAPS;
|
|
|
|
|
|
|
|
|
|
typedef struct _SNETEVENT {
|
|
|
|
|
DWORD eventid;
|
|
|
|
|
DWORD playerid;
|
|
|
|
|
void *data;
|
|
|
|
|
DWORD databytes;
|
|
|
|
|
} _SNETEVENT;
|
|
|
|
|
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETABORTPROC
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETCATEGORYPROC
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETCHECKAUTHPROC
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETCREATEPROC
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETDRAWDESCPROC
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETENUMDEVICESPROC
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETENUMGAMESPROC
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETENUMPROVIDERSPROC
|
|
|
|
|
// TPDEF PTR FCN VOID SNETEVENTPROC
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETGETARTPROC
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETGETDATAPROC
|
|
|
|
|
// TPDEF PTR FCN INT SNETMESSAGEBOXPROC
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETPLAYSOUNDPROC
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETSELECTEDPROC
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETSTATUSPROC
|
|
|
|
|
|
|
|
|
|
typedef struct _SNETPLAYERDATA {
|
|
|
|
|
int size;
|
|
|
|
|
char *playername;
|
|
|
|
|
char *playerdescription;
|
|
|
|
|
} _SNETPLAYERDATA;
|
|
|
|
|
|
|
|
|
|
typedef struct _SNETVERSIONDATA {
|
|
|
|
|
int size;
|
|
|
|
|
const char *versionstring;
|
|
|
|
|
} _SNETVERSIONDATA;
|
|
|
|
|
|
|
|
|
|
typedef struct _SNETUIDATA {
|
|
|
|
|
int size;
|
|
|
|
|
void (*selectedcallback)();
|
|
|
|
|
void (*statuscallback)();
|
|
|
|
|
void (*categorylistcallback)();
|
|
|
|
|
void (*newaccountcallback)();
|
|
|
|
|
const char **profilefields;
|
|
|
|
|
int (*selectnamecallback)(
|
|
|
|
|
const struct _SNETPROGRAMDATA *,
|
|
|
|
|
const struct _SNETPLAYERDATA *,
|
|
|
|
|
const struct _SNETUIDATA *,
|
|
|
|
|
const struct _SNETVERSIONDATA *,
|
|
|
|
|
DWORD provider, /* e.g. 'BNET', 'IPXN', 'MODM', 'SCBL' */
|
|
|
|
|
char *, DWORD, /* character name will be copied here */
|
|
|
|
|
char *, DWORD, /* character "description" will be copied here (used to advertise games) */
|
|
|
|
|
BOOL * /* new character? - unsure about this */
|
|
|
|
|
);
|
|
|
|
|
void (*changenamecallback)();
|
|
|
|
|
} _SNETUIDATA;
|
|
|
|
|
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETSPIBIND
|
|
|
|
|
// TPDEF PTR FCN UCHAR SNETSPIQUERY
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
// capture
|
|
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
typedef struct _PcxHeader {
|
|
|
|
|
BYTE Manufacturer;
|
|
|
|
|
BYTE Version;
|
|
|
|
|
BYTE Encoding;
|
|
|
|
|
BYTE BitsPerPixel;
|
|
|
|
|
WORD Xmin;
|
|
|
|
|
WORD Ymin;
|
|
|
|
|
WORD Xmax;
|
|
|
|
|
WORD Ymax;
|
|
|
|
|
WORD HDpi;
|
|
|
|
|
WORD VDpi;
|
|
|
|
|
BYTE Colormap[48];
|
|
|
|
|
BYTE Reserved;
|
|
|
|
|
BYTE NPlanes;
|
|
|
|
|
WORD BytesPerLine;
|
|
|
|
|
WORD PaletteInfo;
|
|
|
|
|
WORD HscreenSize;
|
|
|
|
|
WORD VscreenSize;
|
|
|
|
|
BYTE Filler[54];
|
|
|
|
|
} PCXHEADER;
|
|
|
|
|
|
|
|
|
|
DEVILUTION_END_NAMESPACE
|