Files
Hellfire/ENGINE.H
T
Justin Marshall 101266ab72 Initial commit.
2026-04-27 10:35:40 -07:00

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