mirror of
https://github.com/jmarshall23/Hellfire.git
synced 2026-08-11 23:40:51 +02:00
143 lines
5.0 KiB
C++
143 lines
5.0 KiB
C++
/*-----------------------------------------------------------------------**
|
|
** Diablo
|
|
**
|
|
** Constants and Variables
|
|
**
|
|
** (C)1995 Condor, Inc. All rights reserved.
|
|
**-----------------------------------------------------------------------**
|
|
** $Header: /Diablo/ENGINE.H 1 1/22/97 2:06p Dgartner $
|
|
**-----------------------------------------------------------------------*/
|
|
|
|
|
|
/*-----------------------------------------------------------------------**
|
|
** Prototypes
|
|
**-----------------------------------------------------------------------*/
|
|
void DrawCel (long, long, BYTE *, long, long);
|
|
void DrawCelP (BYTE *, BYTE *, long, long);
|
|
void DrawSlabCel (long, long, BYTE *, long, long, long, long);
|
|
void DrawSlabCelP (BYTE *, BYTE *, long, long, long, long);
|
|
|
|
void DrawCelL (long, long, BYTE *, long, long);
|
|
void DrawCelPL (BYTE *, BYTE *, long, long);
|
|
void DrawSlabCelL (long, long, BYTE *, long, long, long, long);
|
|
void DrawSlabCelPL (BYTE *, BYTE *, long, long, long, long);
|
|
void TDrawSlabCelPL (BYTE *, BYTE *, long, long, long, long);
|
|
|
|
void CDrawSlabCel (long, long, BYTE *, long, long, long, long);
|
|
void CDrawSlabCelP (BYTE *, BYTE *, long, long, long, long);
|
|
void CDrawSlabCelL (long, long, BYTE *, long, long, long, long);
|
|
void CDrawSlabCelPL (BYTE *, BYTE *, long, long, long, long);
|
|
void TCDrawSlabCelPL (BYTE *, BYTE *, long, long, long, long);
|
|
|
|
void DrawSlabCelI(long, long, BYTE *, long, long, long, long, char);
|
|
void CDrawSlabCelI(long, long, BYTE *, long, long, long, long, char);
|
|
|
|
void OutlineSlabCel(byte, long, long, BYTE *, long, long, long, long);
|
|
void COutlineSlabCel(byte, long, long, BYTE *, long, long, long, long);
|
|
|
|
void DrawBuffCel(BYTE *, long, long, long, BYTE *, long, long);
|
|
|
|
void DecodeFullCel (BYTE *, BYTE *, long, long);
|
|
void DecodeFullCelL (BYTE *, BYTE *, long, long);
|
|
|
|
void CDecodeFullCel (BYTE *, BYTE *, long, long);
|
|
void CDecodeFullCelL (BYTE *, BYTE *, long, long);
|
|
|
|
void TranslateCels(byte *, byte *, int);
|
|
|
|
int GetDirection(int, int, int, int);
|
|
|
|
long GetRndSeed();
|
|
void SetRndSeed(long);
|
|
long random(byte, long);
|
|
|
|
void DrawLine(int, int, int, int, byte);
|
|
void DrawPoint(int, int, byte);
|
|
|
|
void PlayInGameMovie(const char * pszMovie);
|
|
|
|
//******************************************************************
|
|
// memory management
|
|
//******************************************************************
|
|
#define DEBUG_MEM 1 // 0 in final
|
|
#ifdef NDEBUG
|
|
#undef DEBUG_MEM
|
|
#define DEBUG_MEM 0
|
|
#endif
|
|
|
|
// public memory management functions
|
|
BYTE * DiabloAllocPtr(DWORD dwBytes);
|
|
BYTE * DiabloAllocPtrSig(DWORD dwBytes,DWORD dwSig);
|
|
|
|
// NOTE: DiabloFreePtr behavior
|
|
//
|
|
// p MUST be an l-value
|
|
//
|
|
// if p is NULL:
|
|
// no memory is freed
|
|
// if p is NOT NULL:
|
|
// p is set to NULL before call to free, and then memory is freed
|
|
// GUARANTEES p == NULL immediately after DiabloFreePtr is called!
|
|
void DiabloFreePtr(void * p);
|
|
|
|
|
|
BYTE * LoadFileInMem(const char * pszName, DWORD * pdwFileLen);
|
|
BYTE * LoadFileInMemSig(const char * pszName, DWORD * pdwFileLen,DWORD dwSig);
|
|
DWORD LoadFileWithMem(const char * pszName, BYTE * pbMem);
|
|
void mem_cleanup(BOOL bNormalExit);
|
|
|
|
|
|
#if DEBUG_MEM
|
|
|
|
// internal functions
|
|
void mem_use_sig(DWORD dwSig,DWORD dwBytes);
|
|
void mem_unuse_sig(DWORD dwSig,DWORD dwBytes);
|
|
BYTE * mem_malloc_dbg(DWORD dwBytes,DWORD dwSig,DWORD dwLine,const TCHAR * pszFile);
|
|
void mem_free_dbg(void * p,DWORD dwLine,const TCHAR * pszFile);
|
|
BYTE * load_file_dbg(const char * pszName,DWORD * pdwFileLen,DWORD dwSig,DWORD dwLine,const TCHAR * pszFile);
|
|
|
|
// definitions of public functions
|
|
#define DiabloAllocPtr(dwBytes) mem_malloc_dbg(dwBytes,'NONE',__LINE__,__FILE__)
|
|
#define DiabloAllocPtrSig(dwBytes,dwSig) mem_malloc_dbg(dwBytes,dwSig,__LINE__,__FILE__)
|
|
#define LoadFileInMem(pszName,pdwFileLen) load_file_dbg(pszName,pdwFileLen,'NONE',__LINE__,__FILE__)
|
|
#define LoadFileInMemSig(pszName,pdwFileLen,dwSig) load_file_dbg(pszName,pdwFileLen,dwSig,__LINE__,__FILE__)
|
|
|
|
// free function -- set pointer to NULL before real call to free
|
|
#define DiabloFreePtr(p) { \
|
|
void * p__p = (void *) (p); \
|
|
(p) = NULL; \
|
|
mem_free_dbg(p__p,__LINE__,__FILE__); \
|
|
}
|
|
|
|
|
|
#else
|
|
|
|
// internal functions
|
|
void mem_free_dbg(void * p);
|
|
|
|
// definitions of public functions
|
|
#define DiabloAllocPtrSig(dwBytes,dwSig) DiabloAllocPtr(dwBytes)
|
|
#define LoadFileInMemSig(pszName,pdwFileLen,dwSig) LoadFileInMem(pszName,pdwFileLen)
|
|
|
|
// free function -- set pointer to NULL before real call to free
|
|
#define DiabloFreePtr(p) { \
|
|
void * p__p = (void *) (p); \
|
|
(p) = NULL; \
|
|
mem_free_dbg(p__p); \
|
|
}
|
|
|
|
|
|
#endif
|
|
|
|
|
|
//******************************************************************
|
|
// file manager
|
|
//******************************************************************
|
|
#ifdef _STORM_H_
|
|
void patSFileCloseFile(HSFILE handle);
|
|
DWORD patSFileGetFileSize(HSFILE handle,LPDWORD filesizehigh = NULL);
|
|
BOOL patSFileOpenFile(LPCTSTR filename,HSFILE *handle,BOOL bCanFail = FALSE);
|
|
void patSFileReadFile(HSFILE handle,LPVOID buffer,DWORD bytestoread);
|
|
DWORD patSFileSetFilePointer(HSFILE handle,LONG distancetomove,PLONG distancetomovehigh,DWORD movemethod);
|
|
#endif
|