2018-06-07 02:23:06 +00:00
# pragma once
# ifndef __BLIZZARD_STORM_HEADER
# define __BLIZZARD_STORM_HEADER
# include <windows.h>
# include <winuser.h>
# include <winsock.h>
# include <ddraw.h>
// Note to self: Linker error => forgot a return value in cpp
// Storm API definition
# ifndef STORMAPI
# define STORMAPI __stdcall
# endif
# ifndef __STORM_SMAX
# define __STORM_SMAX(x,y) (x < y ? y : x)
# endif
# ifndef __STORM_SSIZEMAX
# define __STORM_SSIZEMAX(x,y) (__STORM_SMAX(sizeof(x),sizeof(y)))
# endif
# ifndef __STORM_SMIN
# define __STORM_SMIN(x,y) (x < y ? x : y)
# endif
# ifndef __STORM_SSIZEMIN
# define __STORM_SSIZEMIN(x,y) (__STORM_SMIN(sizeof(x),sizeof(y)))
# endif
typedef struct _WRECT
{
WORD left ;
WORD top ;
WORD right ;
WORD bottom ;
} WRECT , * PWRECT ;
typedef struct _WPOINT
{
WORD x ;
WORD y ;
} WPOINT , * PWPOINT ;
typedef struct _WSIZE
{
WORD cx ;
WORD cy ;
} WSIZE , * PWSIZE ;
// Game states
# define GAMESTATE_PRIVATE 0x01
# define GAMESTATE_FULL 0x02
# define GAMESTATE_ACTIVE 0x04
# define GAMESTATE_STARTED 0x08
# define GAMESTATE_REPLAY 0x80
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SNetCreateGame ( const char * pszGameName , const char * pszGamePassword , const char * pszGameStatString , DWORD dwGameType , char * GameTemplateData , int GameTemplateSize , int playerCount , char * creatorName , char * a11 , int * playerID ) ;
BOOL STORMAPI SNetDestroy ( ) ;
BOOL STORMAPI SNetEnumProviders ( int ( STORMAPI * callback ) ( DWORD , DWORD , DWORD , DWORD ) , int mincaps ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SNetEnumGames ( int ( STORMAPI * callback ) ( DWORD , DWORD , DWORD ) , int * hintnextcall ) ;
2018-06-07 02:23:06 +00:00
/* SNetDropPlayer @ 106
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Drops a player from the current game .
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* playerid : The player ID for the player to be dropped .
2018-06-08 03:00:35 +00:00
* flags :
2018-06-07 02:23:06 +00:00
*
* Returns TRUE if the function was called successfully and FALSE otherwise .
*/
2018-06-08 03:00:35 +00:00
BOOL
2018-06-07 02:23:06 +00:00
STORMAPI
SNetDropPlayer (
int playerid ,
DWORD flags ) ;
/* SNetGetGameInfo @ 107
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Retrieves specific game information from Storm , such as name , password ,
* stats , mode , game template , and players .
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* type : The type of data to retrieve . See GAMEINFO_ flags .
* dst : The destination buffer for the data .
* length : The maximum size of the destination buffer .
* byteswritten : The number of bytes written to the destination buffer .
*
* Returns TRUE if the function was called successfully and FALSE otherwise .
*/
2018-06-08 03:00:35 +00:00
BOOL
2018-06-07 02:23:06 +00:00
STORMAPI
SNetGetGameInfo (
int type ,
void * dst ,
size_t length ,
size_t * byteswritten = NULL ) ;
# define SNGetGameInfo(typ,dst) SNetGetGameInfo(typ, &dst, sizeof(dst))
// Game info fields
# define GAMEINFO_NAME 1
# define GAMEINFO_PASSWORD 2
# define GAMEINFO_STATS 3
# define GAMEINFO_MODEFLAG 4
# define GAMEINFO_GAMETEMPLATE 5
# define GAMEINFO_PLAYERS 6
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SNetGetNumPlayers ( int * firstplayerid , int * lastplayerid , int * activeplayers ) ;
2018-06-07 02:23:06 +00:00
typedef struct _CAPS
{
DWORD dwSize ; // Size of this structure // sizeof(CAPS)
DWORD dwUnk_0x04 ; // Some flags?
DWORD maxmessagesize ; // Size of the packet buffer, must be beteen 128 and 512
DWORD dwUnk_0x0C ; // Unknown
DWORD dwDisplayedPlayerCount ; // Displayed player count in the mode selection list
DWORD dwUnk_0x14 ; // some kind of timeout or timer related
DWORD dwPlayerLatency ; // ... latency?
DWORD dwPlayerCount ; // the number of players that can participate, must be between 1 and 20
DWORD dwCallDelay ; // the number of calls before data is sent over the network // between 2 and 8; single player is set to 1
} CAPS , * PCAPS ;
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SNetGetPlayerCaps ( char playerid , PCAPS playerCaps ) ;
2018-06-07 02:23:06 +00:00
/* SNetGetPlayerName @ 113
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Retrieves the name of a player given their player ID .
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* playerid : The player ' s ID .
* buffer : The buffer that will receive the name .
* buffersize : The maximum size of buffer .
*
* Returns TRUE if the function was called successfully and FALSE otherwise .
*/
2018-06-08 03:00:35 +00:00
BOOL
2018-06-07 02:23:06 +00:00
STORMAPI
SNetGetPlayerName (
2018-06-08 03:00:35 +00:00
int playerid ,
char * buffer ,
2018-06-07 02:23:06 +00:00
size_t buffersize ) ;
/* SNetGetProviderCaps @ 114
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Retrieves network provider capacity information .
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* providerCaps : A pointer to a CAPS structure that will receive the information .
*
* Returns TRUE if the function was called successfully and FALSE otherwise .
*/
2018-06-08 03:00:35 +00:00
BOOL
STORMAPI
2018-06-07 02:23:06 +00:00
SNetGetProviderCaps (
PCAPS providerCaps ) ;
/* SNetGetTurnsInTransit @ 115
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Retrieves the number of turns ( buffers ) that have been queued
* before sending them over the network .
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* turns : A pointer to an integer that will receive the value .
*
* Returns TRUE if the function was called successfully and FALSE otherwise .
*/
2018-06-08 03:00:35 +00:00
BOOL
2018-06-07 02:23:06 +00:00
STORMAPI
SNetGetTurnsInTransit (
int * turns ) ;
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SNetInitializeDevice ( int a1 , int a2 , int a3 , int a4 , int * a5 ) ;
2018-06-07 02:23:06 +00:00
// Network provider structures
typedef struct _client_info
{
DWORD dwSize ; // 60
char * pszName ;
char * pszVersion ;
DWORD dwProduct ;
DWORD dwVerbyte ;
DWORD dwUnk5 ;
DWORD dwMaxPlayers ;
DWORD dwUnk7 ;
DWORD dwUnk8 ;
DWORD dwUnk9 ;
DWORD dwUnk10 ; // 0xFF
char * pszCdKey ;
char * pszCdOwner ;
DWORD dwIsShareware ;
DWORD dwLangId ;
} client_info ;
typedef struct _user_info
{
DWORD dwSize ; // 16
char * pszPlayerName ;
char * pszUnknown ;
DWORD dwUnknown ;
} user_info ;
typedef struct _battle_info
{
DWORD dwSize ; // 92
DWORD dwUnkType ;
HWND hFrameWnd ;
void * pfnBattleGetResource ;
void * pfnBattleGetErrorString ;
void * pfnBattleMakeCreateGameDialog ;
void * pfnBattleUpdateIcons ;
DWORD dwUnk_07 ;
void * pfnBattleErrorDialog ;
void * pfnBattlePlaySound ;
DWORD dwUnk_10 ;
void * pfnBattleGetCursorLink ;
DWORD dwUnk_12 ;
void * pfnUnk_13 ;
DWORD dwUnk_14 ;
void * pfnBattleMakeProfileDialog ;
char * pszProfileStrings ;
void * pfnBattleDrawProfileInfo ;
void * pfnUnk_18 ;
DWORD dwUnk_19 ;
void * pfnUnk_20 ;
void * pfnUnk_21 ;
void * pfnBattleSetLeagueName ;
} battle_info ;
typedef struct _module_info
{
DWORD dwSize ; // 20
char * pszVersionString ;
char * pszModuleName ;
char * pszMainArchive ;
char * pszPatchArchive ;
} module_info ;
typedef struct _game
{
DWORD dwIndex ;
DWORD dwGameState ;
DWORD dwUnk_08 ;
SOCKADDR saHost ;
DWORD dwUnk_1C ;
DWORD dwTimer ;
DWORD dwUnk_24 ;
char szGameName [ 128 ] ;
char szGameStatString [ 128 ] ;
_game * pNext ;
void * pExtra ;
DWORD dwExtraBytes ;
DWORD dwProduct ;
DWORD dwVersion ;
} game ;
typedef struct _storm_head
{
WORD wChecksum ;
WORD wLength ;
WORD wSent ;
WORD wReceived ;
BYTE bCommandClass ;
BYTE bCommandType ;
BYTE bPlayerId ;
BYTE bFlags ;
} storm_head ;
// Traffic flags
# define STRAFFIC_NORMAL 0
# define STRAFFIC_VERIFY 1
# define STRAFFIC_RESEND 2
# define STRAFFIC_REPLY 4
/* SNetInitializeProvider @ 117
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Initializes a provider by storing the provider callbacks , and calling
* spiInitialize ( ) using the parameters passed to this function .
* Note : The use of the parameters is determined by the network
* module .
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* providerName : The provider ' s identifier . Example : ' TENB ' ( BNET ) .
2018-06-08 03:00:35 +00:00
* gameClientInfo : A pointer to a clientInfo structure containing
2018-06-07 02:23:06 +00:00
* information about the game client .
2018-06-08 03:00:35 +00:00
* userData : A pointer to a userInfo structure containing information
2018-06-07 02:23:06 +00:00
* about the player .
* bnCallbacks : A pointer to a battleInfo structure containing callbacks
* and other information that is specific to Battle . net .
* moduleData : A pointer to a moduleInfo structure containing the
* executable information and paths to MPQ archives .
*
* Returns TRUE if the function was called successfully and FALSE otherwise .
*/
2018-06-08 03:00:35 +00:00
BOOL
2018-06-07 02:23:06 +00:00
STORMAPI
SNetInitializeProvider (
2018-06-08 03:00:35 +00:00
DWORD providerName ,
2018-06-07 02:23:06 +00:00
client_info * gameClientInfo ,
user_info * userData ,
battle_info * bnCallbacks ,
module_info * moduleData ) ;
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SNetJoinGame ( int id , char * gameName , char * gamePassword , char * playerName , char * userStats , int * playerid ) ;
2018-06-07 02:23:06 +00:00
/* SNetLeaveGame @ 119
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Notifies Storm that the player has left the game . Storm will
* notify all connected peers through the network provider .
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* type : The leave type . It doesn ' t appear to be important , no documentation available .
*
* Returns TRUE if the function was called successfully and FALSE otherwise .
*/
2018-06-08 03:00:35 +00:00
BOOL
2018-06-07 02:23:06 +00:00
STORMAPI
SNetLeaveGame (
int type ) ;
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SNetPerformUpgrade ( DWORD * upgradestatus ) ;
BOOL STORMAPI SNetReceiveMessage ( int * senderplayerid , char * * data , int * databytes ) ;
BOOL STORMAPI SNetReceiveTurns ( int a1 , int arraysize , char * * arraydata , unsigned int * arraydatabytes , DWORD * arrayplayerstatus ) ;
2018-06-07 02:23:06 +00:00
// Values for arrayplayerstatus
# define SNET_PS_OK 0
# define SNET_PS_WAITING 2
# define SNET_PS_NOTRESPONDING 3
# define SNET_PS_UNKNOWN default
// Event structure
typedef struct _s_evt
{
DWORD dwFlags ;
int dwPlayerId ;
void * pData ;
DWORD dwSize ;
} S_EVT , * PS_EVT ;
// @TODO: "type" is unknown.
2018-06-08 03:00:35 +00:00
HANDLE STORMAPI SNetRegisterEventHandler ( int type , void ( STORMAPI * sEvent ) ( PS_EVT ) ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
int STORMAPI SNetSelectGame ( int a1 , int a2 , int a3 , int a4 , int a5 , int * playerid ) ;
2018-06-07 02:23:06 +00:00
/* SNetSendMessage @ 127
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Sends a message to a player given their player ID . Network message
* is sent using class 01 and is retrieved by the other client using
* SNetReceiveMessage ( ) .
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* playerID : The player index of the player to receive the data .
* Conversely , this field can be one of the following constants :
* SNPLAYER_ALL | Sends the message to all players , including oneself .
* SNPLAYER_OTHERS | Sends the message to all players , except for oneself .
* data : A pointer to the data .
* databytes : The amount of bytes that the data pointer contains .
*
* Returns TRUE if the function was called successfully and FALSE otherwise .
*/
2018-06-08 03:00:35 +00:00
BOOL
2018-06-07 02:23:06 +00:00
STORMAPI
SNetSendMessage (
int playerID ,
void * data ,
size_t databytes ) ;
// Macro values to target specific players
# define SNPLAYER_ALL -1
# define SNPLAYER_OTHERS -2
/* SNetSendTurn @ 128
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Sends a turn ( data packet ) to all players in the game . Network data
* is sent using class 02 and is retrieved by the other client using
* SNetReceiveTurns ( ) .
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* data : A pointer to the data .
* databytes : The amount of bytes that the data pointer contains .
*
* Returns TRUE if the function was called successfully and FALSE otherwise .
*/
2018-06-08 03:00:35 +00:00
BOOL
2018-06-07 02:23:06 +00:00
STORMAPI
SNetSendTurn (
char * data ,
size_t databytes ) ;
/* SNetSetGameMode @ 130
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Set ' s the game ' s mode flags , notifying the network
* provider that the state of the game has changed .
* For example : notifies Battle . net when the game is
* full .
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* You should first call SNetGetGameInfo to retrieve
* the existing mode flags .
*
* modeFlags : The new flags for the game mode .
* GAMESTATE_PRIVATE | The game is passworded .
* GAMESTATE_FULL | The game is full .
* GAMESTATE_ACTIVE | The game is available .
* GAMESTATE_STARTED | The game is in progress .
* GAMESTATE_REPLAY | The game is a replay .
* makePublic : Used to make the game a public game , removing the GAMESTATE_PRIVATE flag .
*
* Returns TRUE if the function was called successfully and FALSE otherwise .
*/
2018-06-08 03:00:35 +00:00
BOOL
2018-06-07 02:23:06 +00:00
STORMAPI
SNetSetGameMode (
DWORD modeFlags ,
bool makePublic = false ) ;
# define SNMakeGamePublic() SNetSetGameMode( (DWORD mode, SNetGetGameInfo(GAMEINFO_MODEFLAGS, &mode, 4), mode), true)
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SNetEnumGamesEx ( int a1 , int a2 , int ( __fastcall * callback ) ( DWORD , DWORD , DWORD ) , int * hintnextcall ) ;
BOOL STORMAPI SNetSendServerChatCommand ( const char * command ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SNetDisconnectAll ( DWORD flags ) ;
BOOL STORMAPI SNetCreateLadderGame ( const char * pszGameName , const char * pszGamePassword , const char * pszGameStatString , DWORD dwGameType , DWORD dwGameLadderType , DWORD dwGameModeFlags , char * GameTemplateData , int GameTemplateSize , int playerCount , char * creatorName , char * a11 , int * playerID ) ;
2018-06-07 02:23:06 +00:00
# define SNET_GAME_RESULT_WIN 1
# define SNET_GAME_RESULT_LOSS 2
# define SNET_GAME_RESULT_DRAW 3
# define SNET_GAME_RESULT_DISCONNECT 4
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SNetReportGameResult ( unsigned a1 , int size , int * results , const char * headerInfo , const char * detailInfo ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
int STORMAPI SNetSendLeagueCommand ( char * cmd , char * callback ) ;
int STORMAPI SNetSendReplayPath ( int a1 , int a2 , char * replayPath ) ;
int STORMAPI SNetGetLeagueName ( int leagueID ) ;
BOOL STORMAPI SNetGetPlayerNames ( char * * names ) ;
int STORMAPI SNetLeagueLogout ( char * bnetName ) ;
int STORMAPI SNetGetLeaguePlayerName ( char * curPlayerLeageName , size_t nameSize ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
HGDIOBJ STORMAPI SDlgDefDialogProc ( HWND hDlg , signed int DlgType , HDC textLabel , HWND hWnd ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
HANDLE STORMAPI SDlgDialogBoxIndirectParam ( HMODULE hModule , LPCSTR lpName , HWND hWndParent , LPVOID lpParam , LPARAM lParam ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SDlgEndDialog ( HWND hDlg , HANDLE nResult ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SDlgSetControlBitmaps ( HWND parentwindow , int * id , int a3 , char * buffer2 , char * buffer , int flags , int mask ) ;
2018-06-07 02:23:06 +00:00
/*
2018-06-08 03:00:35 +00:00
// lpCursorName can only be IDC_ARROW
2018-06-07 02:23:06 +00:00
BOOL STORMAPI SDlgSetSystemCursor ( void * lpSrcBuffer , void * p_a2 , LPSIZE lpSize , LPCSTR lpCursorName ) ;
*/
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SDlgBltToWindowE ( HWND hWnd , HRGN a2 , char * a3 , int a4 , void * buffer , RECT * rct , SIZE * size , int a8 , int a9 , DWORD rop ) ;
BOOL STORMAPI SDlgSetBitmapE ( HWND hWnd , int a2 , char * src , int mask1 , int flags , int a6 , int a7 , int width , int a9 , int mask2 ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
int STORMAPI Ordinal224 ( int a1 ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SFileCloseArchive ( HANDLE hArchive ) ;
BOOL STORMAPI SFileCloseFile ( HANDLE hFile ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SFileDdaBeginEx ( HANDLE directsound , DWORD flags , DWORD mask , unsigned __int32 lDistanceToMove , signed __int32 volume , signed int a6 , int a7 ) ;
BOOL STORMAPI SFileDdaDestroy ( ) ;
BOOL STORMAPI SFileDdaEnd ( HANDLE directsound ) ;
BOOL STORMAPI SFileDdaGetPos ( HANDLE directsound , int a2 , int a3 ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SFileDdaInitialize ( HANDLE directsound ) ;
BOOL STORMAPI SFileDdaSetVolume ( HANDLE directsound , signed int bigvolume , signed int volume ) ;
BOOL STORMAPI SFileDestroy ( ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SFileGetFileArchive ( HANDLE hFile , HANDLE archive ) ;
LONG STORMAPI SFileGetFileSize ( HANDLE hFile , LPDWORD lpFileSizeHigh ) ;
BOOL STORMAPI SFileOpenArchive ( const char * szMpqName , DWORD dwPriority , DWORD dwFlags , HANDLE * phMpq ) ;
2018-06-07 02:23:06 +00:00
// values for dwFlags
enum MPQFlags
{
MPQ_NO_LISTFILE = 0x0010 ,
MPQ_NO_ATTRIBUTES = 0x0020 ,
MPQ_FORCE_V1 = 0x0040 ,
MPQ_CHECK_SECTOR_CRC = 0x0080
} ;
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SFileOpenFile ( const char * filename , HANDLE * phFile ) ;
BOOL STORMAPI SFileOpenFileEx ( HANDLE hMpq , const char * szFileName , DWORD dwSearchScope , HANDLE * phFile ) ;
2018-06-07 02:23:06 +00:00
// values for dwSearchScope
enum SFileFlags
{
SFILE_FROM_MPQ = 0x00000000 ,
SFILE_FROM_ABSOLUTE = 0x00000001 ,
SFILE_FROM_RELATIVE = 0x00000002 ,
SFILE_FROM_DISK = 0x00000004
} ;
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SFileReadFile ( HANDLE hFile , void * buffer , DWORD nNumberOfBytesToRead , DWORD * read , LONG lpDistanceToMoveHigh ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
void STORMAPI SFileSetLocale ( LCID lcLocale ) ;
2018-06-07 02:23:06 +00:00
// mode: 0 - Silent (callback is NULL)
// 1 - Application Defined
// 2 - Handled by storm (callback is NULL)
// BOOL STORMAPI callback(const char *pszFilename, DWORD dwErrCode, DWORD dwErrCount)
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SFileSetIoErrorMode ( DWORD mode , BOOL ( STORMAPI * callback ) ( const char * , DWORD , DWORD ) ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SFileGetArchiveName ( HANDLE hArchive , char * name , int length ) ;
BOOL STORMAPI SFileGetFileName ( HANDLE hFile , char * buffer , int length ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SFileLoadFile ( char * filename , void * buffer , int buffersize , int a4 , int a5 ) ;
BOOL STORMAPI SFileUnloadFile ( HANDLE hFile ) ;
BOOL STORMAPI SFileLoadFileEx ( void * hArchive , char * filename , int a3 , int a4 , int a5 , DWORD searchScope , struct _OVERLAPPED * lpOverlapped ) ;
2018-06-07 02:23:06 +00:00
// Options are DWORD except for #6
// 1: [TRUE|FALSE] - If true, reports resource leaks (SErrReportResourceLeak/SErrReportNamedResourceLeak) to the attached debugger instead of a message box.
// 2: This option is unused.
// 3: [TRUE|FALSE] - If true, reports general memory leaks to the attached debugger instead of a message box.
// 4: This option is unused.
// 5: [TRUE|FALSE] - If true, reports log messages and log dumps to the attached debugger.
// 6: { DWORD blocks_allocated; DWORD blocks_freed; } Used to determine the amount of memory/heap blocks that have been allocated and freed by storm.
// Can also be used for custom allocations outside of storm.
//
//BOOL STORMAPI StormGetOption(int type, void *pValue, size_t *pSize);
//BOOL STORMAPI StormSetOption(int type, void *pValue, size_t size);
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SBltROP3 ( void * lpDstBuffer , void * lpSrcBuffer , int srcDrawWidth , int srcDrawHeight , int dstWidth , int srcWidth , int a7 , DWORD rop ) ;
BOOL STORMAPI SBltROP3Clipped ( void * lpDstBuffer , RECT * lpDstRect , POINT * lpDstPt , int a4 , void * lpSrcBuffer , RECT * lpSrcRect , POINT * lpSrcPt , int a8 , int a9 , DWORD rop ) ;
2018-06-07 02:23:06 +00:00
# define SBMP_DEFAULT 0
# define SBMP_BMP 1
# define SBMP_PCX 2
# define SBMP_TGA 3
/* SBmpDecodeImage @ 321
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Decodes an image that has already been loaded into a buffer .
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* dwImgType : Optional , the image type . See SBMP_ macros .
* pSrcBuffer : A pointer to the source buffer .
* dwSrcBuffersize : The size of the data in the source buffer .
* pPalette : An optional buffer that receives the image palette .
* pDstBuffer : A buffer that receives the image data .
2018-06-08 03:00:35 +00:00
* dwDstBuffersize : The size of the specified image buffer . If the size of the
2018-06-07 02:23:06 +00:00
* destination buffer is 0 , then the destination buffer is not used .
* pdwWidth : An optional variable that receives the image width .
* pdwHeight : An optional variable that receives the image height .
* pdwBpp : An optional variable that receives the image bits per pixel .
*
* Returns TRUE if the image was supported and decoded correctly , FALSE otherwise .
*/
2018-06-08 03:00:35 +00:00
BOOL
STORMAPI
2018-06-07 02:23:06 +00:00
SBmpDecodeImage (
DWORD dwImgType ,
void * pSrcBuffer ,
DWORD dwSrcBuffersize ,
PALETTEENTRY * pPalette = NULL ,
void * pDstBuffer = NULL ,
DWORD dwDstBuffersize = 0 ,
DWORD * pdwWidth = NULL ,
DWORD * pdwHeight = NULL ,
DWORD * pdwBpp = NULL ) ;
/* SBmpLoadImage @ 323
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Load an image from an available archive into a buffer .
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* pszFileName : The name of the graphic in an active archive .
* pPalette : An optional buffer that receives the image palette .
* pBuffer : A buffer that receives the image data .
* dwBuffersize : The size of the specified image buffer .
* pdwWidth : An optional variable that receives the image width .
* pdwHeight : An optional variable that receives the image height .
* pdwBpp : An optional variable that receives the image bits per pixel .
*
* Returns TRUE if the image was supported and loaded correctly , FALSE otherwise .
*/
2018-06-08 03:00:35 +00:00
BOOL
2018-06-07 02:23:06 +00:00
STORMAPI
SBmpLoadImage (
const char * pszFileName ,
PALETTEENTRY * pPalette = NULL ,
void * pBuffer = NULL ,
DWORD dwBuffersize = 0 ,
DWORD * pdwWidth = NULL ,
DWORD * pdwHeight = NULL ,
DWORD * pdwBpp = NULL ) ;
/* SBmpSaveImage @ 324
2018-06-08 03:00:35 +00:00
*
* Save an image from a buffer to a file . The image format is determined
2018-06-07 02:23:06 +00:00
* from the filename and is either . gif , . pcx , . tga , or . bmp being the default .
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* pszFileName : The name of the file to create .
* pPalette : A pointer to a palette array containing 256 entries .
* pBuffer : A buffer containing the image data .
* pdwWidth : The width of the image .
* pdwHeight : The height of the image .
* pdwBpp : The bits per pixel .
*
* Returns TRUE if the image was saved correctly , FALSE otherwise .
*/
2018-06-08 03:00:35 +00:00
BOOL
2018-06-07 02:23:06 +00:00
STORMAPI
SBmpSaveImage (
const char * pszFileName ,
PALETTEENTRY * pPalette ,
void * pBuffer ,
DWORD dwWidth ,
DWORD dwHeight ,
DWORD dwBpp = 8 ) ;
2018-06-08 03:00:35 +00:00
HANDLE STORMAPI SBmpAllocLoadImage ( const char * fileName , PALETTEENTRY * palette , void * * buffer , int * width , int * height , int unused6 , int unused7 , void * ( STORMAPI * allocFunction ) ( DWORD ) ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SCodeCompile ( char * directives1 , char * directives2 , char * loopstring , unsigned int maxiterations , unsigned int flags , HANDLE handle ) ;
BOOL STORMAPI SCodeDelete ( HANDLE handle ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
int STORMAPI SCodeExecute ( HANDLE handle , int a2 ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SDrawAutoInitialize ( HINSTANCE hInst , LPCSTR lpClassName , LPCSTR lpWindowName , WNDPROC pfnWndProc , int nMode , int nWidth , int nHeight , int nBits ) ;
2018-06-07 02:23:06 +00:00
/* SDrawCaptureScreen @ 342
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Saves a screenshot from the primary surface being handled by Storm .
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* pszOutput : The name of the output file . The save format is automatically set by the extension .
* The extensions supported are . gif , . pcx , . tga , and . bmp . It will write a bitmap by default .
*
* Returns TRUE if successful and FALSE otherwise .
*/
2018-06-08 03:00:35 +00:00
BOOL
STORMAPI
2018-06-07 02:23:06 +00:00
SDrawCaptureScreen (
const char * pszOutput ) ;
/* SDrawGetFrameWindow @ 346
*
* Retrieves the window handle that was specified in
* SDrawManualInitialize or created in SDrawAutoInitialize .
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* sdraw_framewindow : Optional variable that receives the returned handle .
*
* Returns the handle of the window .
*/
2018-06-08 03:00:35 +00:00
HWND
2018-06-07 02:23:06 +00:00
STORMAPI
SDrawGetFrameWindow (
HWND * sdraw_framewindow = NULL ) ;
/* SDrawGetObjects @ 347
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Retrieves the object information that was initialized using
* SDrawManualInitialize or SDrawAutoInitialize .
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* ddInterface : The DirectDraw interface .
* primarySurface : The primary DirectDraw surface .
* surface2 : A second unknown surface .
* surface3 : A third unknown surface .
* backSurface : The back DirectDraw surface .
* ddPalette : The DirectDraw palette .
* hPalette : The palette handle .
*
* Returns FALSE if the direct draw interface has not been initialized .
*/
2018-06-08 03:00:35 +00:00
BOOL
2018-06-07 02:23:06 +00:00
STORMAPI
SDrawGetObjects (
LPDIRECTDRAW * ddInterface = NULL ,
LPDIRECTDRAWSURFACE * primarySurface = NULL ,
LPDIRECTDRAWSURFACE * surface2 = NULL ,
LPDIRECTDRAWSURFACE * surface3 = NULL ,
LPDIRECTDRAWSURFACE * backSurface = NULL ,
LPDIRECTDRAWPALETTE * ddPalette = NULL ,
HPALETTE * hPalette = NULL ) ;
/* SDrawGetScreenSize @ 348
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Obtains information for the current screen resolution .
*
* pdwWidth : Optional variable that receives the screen width .
* pdwHeight : Optional variable that receives the screen height .
* pdwBpp : Optional variable that receives the bits per pixel .
*
* Returns FALSE if no variables were specified .
*/
2018-06-08 03:00:35 +00:00
BOOL
2018-06-07 02:23:06 +00:00
STORMAPI
SDrawGetScreenSize (
DWORD * pdwWidth ,
DWORD * pdwHeight ,
DWORD * pdwBpp ) ;
// undefined
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SDrawLockSurface ( int surfacenumber , RECT * lpDestRect , void * * lplpSurface , int * lpPitch , int arg_unused ) ;
2018-06-07 02:23:06 +00:00
/* SDrawManualInitialize @ 351
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Sets the DirectDraw variables to be referenced in Storm .
*
* hWnd : The handle of the DirectDraw window .
* ddInterface : The DirectDraw interface .
* primarySurface : The first and primary surface .
* surface2 : A second surface . Behaviour not completely known .
* surface3 : A third surface . Behaviour not completely known .
* backSurface : The fourth and final surface . The back surface .
* ddPalette : The DirectDraw palette if the application requires it .
* hPalette : The palette handle that belongs to the window .
* If this is NULL and ddPalette is specified , then it
* will be created automatically . A palette can be created
* using the CreatePalette WinAPI function .
*
* Returns FALSE if no variables were specified .
*/
2018-06-08 03:00:35 +00:00
BOOL
2018-06-07 02:23:06 +00:00
STORMAPI
SDrawManualInitialize (
HWND hWnd = NULL ,
LPDIRECTDRAW ddInterface = NULL ,
LPDIRECTDRAWSURFACE primarySurface = NULL ,
LPDIRECTDRAWSURFACE surface2 = NULL ,
LPDIRECTDRAWSURFACE surface3 = NULL ,
LPDIRECTDRAWSURFACE backSurface = NULL ,
LPDIRECTDRAWPALETTE ddPalette = NULL ,
HPALETTE hPalette = NULL ) ;
/* SDrawPostClose @ 353
*
2018-06-08 03:00:35 +00:00
* Posts a WM_QUIT message to the active drawing window specified
2018-06-07 02:23:06 +00:00
* in SDrawManualInitialize or created in SDrawAutoInitialize .
*
* Returns TRUE if successful and FALSE otherwise .
*/
2018-06-08 03:00:35 +00:00
BOOL
2018-06-07 02:23:06 +00:00
STORMAPI
SDrawPostClose ( ) ;
// undefined
//BOOL STORMAPI SDrawRealizePalette();
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SDrawUnlockSurface ( int surfacenumber , void * lpSurface , int a3 , RECT * lpRect ) ;
BOOL STORMAPI SDrawUpdatePalette ( unsigned int firstentry , unsigned int numentries , PALETTEENTRY * pPalEntries , int a4 ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SEvtDispatch ( DWORD dwMessageID , DWORD dwFlags , int type , PS_EVT pEvent ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SGdiDeleteObject ( HANDLE handle ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SGdiExtTextOut ( int a1 , int a2 , int a3 , int a4 , unsigned int a8 , signed int a6 , signed int a7 , const char * pszString , unsigned int arg20 ) ;
BOOL STORMAPI SGdiImportFont ( HGDIOBJ handle , int windowsfont ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SGdiSelectObject ( int handle ) ;
BOOL STORMAPI SGdiSetPitch ( int pitch ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
BOOL STORMAPI Ordinal393 ( char * pszString , int , int ) ;
2018-06-07 02:23:06 +00:00
/* SMemAlloc @ 401
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Allocates a block of memory . This block is different
* from the standard malloc by including a header containing
2018-06-08 03:00:35 +00:00
* information about the block .
2018-06-07 02:23:06 +00:00
*
* amount : The amount of memory to allocate , in bytes .
* logfilename : The name of the file or object that this call belongs to .
* logline : The line in the file or one of the SLOG_ macros .
* defaultValue : The default value of a byte in the allocated memory .
*
* Returns a pointer to the allocated memory . This pointer does NOT include
* the additional storm header .
*/
2018-06-08 03:00:35 +00:00
void *
2018-06-07 02:23:06 +00:00
STORMAPI
SMemAlloc (
size_t amount ,
char * logfilename ,
int logline ,
char defaultValue = 0 ) ;
# define SMAlloc(amount) SMemAlloc((amount), __FILE__, __LINE__)
/* SMemFree @ 403
2018-06-08 03:00:35 +00:00
*
* Frees a block of memory that was created using SMemAlloc ,
2018-06-07 02:23:06 +00:00
* includes the log file and line for debugging purposes .
*
* location : The memory location to be freed .
* logfilename : The name of the file or object that this call belongs to .
* logline : The line in the file or one of the SLOG_ macros .
2018-06-08 03:00:35 +00:00
* defaultValue :
2018-06-07 02:23:06 +00:00
*
* Returns TRUE if the call was successful and FALSE otherwise .
*/
2018-06-08 03:00:35 +00:00
BOOL
2018-06-07 02:23:06 +00:00
STORMAPI
SMemFree (
void * location ,
char * logfilename ,
int logline ,
char defaultValue = 0 ) ;
# define SMFree(loc) SMemFree((loc), __FILE__, __LINE__)
/* SMemReAlloc @ 405
2018-06-08 03:00:35 +00:00
*
* Reallocates a block of memory that was created using SMemAlloc ,
2018-06-07 02:23:06 +00:00
* includes the log file and line for debugging purposes .
*
* location : The memory location to be re - allocated . If this parameter
* is NULL , then SMemAlloc is called with the remaining parameters .
* amount : The amount of memory to re - allocate .
* logfilename : The name of the file or object that this call belongs to .
* logline : The line in the file or one of the SLOG_ macros .
2018-06-08 03:00:35 +00:00
* defaultValue :
2018-06-07 02:23:06 +00:00
*
* Returns a pointer to the re - allocated memory . This pointer does NOT include
* the additional storm header .
*/
2018-06-08 03:00:35 +00:00
void *
2018-06-07 02:23:06 +00:00
STORMAPI
SMemReAlloc (
void * location ,
size_t amount ,
char * logfilename ,
int logline ,
char defaultValue = 0 ) ;
# define SMReAlloc(loc,s) SMemReAlloc((loc),(s), __FILE__, __LINE__)
// Can be provided instead of logline/__LINE__ parameter to indicate different errors.
# define SLOG_EXPRESSION 0
# define SLOG_FUNCTION -1
# define SLOG_OBJECT -2
# define SLOG_HANDLE -3
# define SLOG_FILE -4
# define SLOG_EXCEPTION -5
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SRegLoadData ( const char * keyname , const char * valuename , int size , LPBYTE lpData , BYTE flags , LPDWORD lpcbData ) ;
BOOL STORMAPI SRegLoadString ( const char * keyname , const char * valuename , BYTE flags , char * buffer , size_t buffersize ) ;
BOOL STORMAPI SRegLoadValue ( const char * keyname , const char * valuename , BYTE flags , int * value ) ;
BOOL STORMAPI SRegSaveData ( const char * keyname , const char * valuename , int size , BYTE * lpData , DWORD cbData ) ;
BOOL STORMAPI SRegSaveString ( const char * keyname , const char * valuename , BYTE flags , char * string ) ;
BOOL STORMAPI SRegSaveValue ( const char * keyname , const char * valuename , BYTE flags , DWORD result ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SRegDeleteValue ( const char * keyname , const char * valuename , BYTE flags ) ;
2018-06-07 02:23:06 +00:00
// Flags for SReg functions
// Default behaviour checks both HKEY_LOCAL_MACHINE and HKEY_CURRENT_USER
// relative to the "Software\\Blizzard Entertainment\\" key in both hives.
# define SREG_NONE 0x00000000
# define SREG_EXCLUDE_LOCAL_MACHINE 0x00000001 // excludes checking the HKEY_LOCAL_MACHINE hive
# define SREG_BATTLE_NET 0x00000002 // sets the relative key to "Software\\Battle.net\\" instead
# define SREG_EXCLUDE_CURRENT_USER 0x00000004 // excludes checking the HKEY_CURRENT_USER hive
# define SREG_ABSOLUTE 0x00000010 // specifies that the key is not a relative key
2018-06-08 03:00:35 +00:00
BOOL STORMAPI STransBlt ( void * lpSurface , int x , int y , int width , HANDLE hTrans ) ;
BOOL STORMAPI STransBltUsingMask ( void * lpDest , void * lpSource , int pitch , int width , HANDLE hTrans ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
BOOL STORMAPI STransDelete ( HANDLE hTrans ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
BOOL STORMAPI STransDuplicate ( HANDLE hTransSource , HANDLE hTransDest ) ;
BOOL STORMAPI STransIntersectDirtyArray ( HANDLE hTrans , char * dirtyarraymask , unsigned flags , HANDLE * phTransResult ) ;
BOOL STORMAPI STransInvertMask ( HANDLE hTrans , HANDLE * phTransResult ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
BOOL STORMAPI STransSetDirtyArrayInfo ( int width , int height , int depth , int bits ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
BOOL STORMAPI STransPointInMask ( HANDLE hTrans , int x , int y ) ; // Name is a pure guess
BOOL STORMAPI STransCombineMasks ( HANDLE hTransA , HANDLE hTransB , int left , int top , int flags , HANDLE * phTransResult ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
BOOL STORMAPI STransCreateE ( void * pBuffer , int width , int height , int bpp , int a5 , int bufferSize , HANDLE * phTransOut ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SVidDestroy ( ) ;
BOOL STORMAPI SVidGetSize ( HANDLE video , int width , int height , int zero ) ;
BOOL STORMAPI SVidInitialize ( HANDLE video ) ;
BOOL STORMAPI SVidPlayBegin ( char * filename , int arg4 , int a3 , int a4 , int a5 , int a6 , HANDLE * video ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
BOOL STORMAPI SVidPlayContinueSingle ( HANDLE video , int a2 , int a3 ) ;
BOOL STORMAPI SVidPlayEnd ( HANDLE video ) ;
2018-06-07 02:23:06 +00:00
/* SErrDisplayError @ 461
*
* Displays a formatted error message . The message is detailed and flexible for many applications .
* The message will be different if there is a debugger attached . Will typically terminate the application
* unless the option to continue is given .
*
* dwErrMessage : The error code . See SErrGetLastError and GetLastError .
* logfilename : The name of the file or object that this call belongs to .
* logline : The line in the file or one of the SLOG_ macros .
* message : A message or expression with additional information .
* allowOption : If TRUE , allows the user the option to continue execution , otherwise the program will terminate .
* exitCode : The exit code used for program termination .
*
* Returns TRUE if the user chose to continue execution , FALSE otherwise .
*/
2018-06-08 03:00:35 +00:00
BOOL
2018-06-07 02:23:06 +00:00
STORMAPI
SErrDisplayError (
DWORD dwErrMsg ,
const char * logfilename ,
int logline ,
const char * message = NULL ,
BOOL allowOption = FALSE ,
int exitCode = 1 ) ;
# define SAssert(x) { if ( !(x) ) SErrDisplayError(STORM_ERROR_ASSERTION, __FILE__, __LINE__, #x) }
# define SEDisplayError(err) SErrDisplayError(e, __FILE__, __LINE__)
/* SErrGetErrorStr @ 462
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Retrieves a string that describes the specified error code for
* the system , Storm , DirectDraw , or DirectSound .
*
* dwErrCode : The error code to look up .
* buffer : The destination buffer to receive the string .
* bufferchars : The size of the destination buffer .
*
* Returns TRUE if the call was successful and FALSE otherwise .
*/
2018-06-08 03:00:35 +00:00
BOOL
2018-06-07 02:23:06 +00:00
STORMAPI
SErrGetErrorStr (
DWORD dwErrCode ,
char * buffer ,
size_t bufferchars ) ;
# define SEGetErrorStr(e,b) SErrGetErrorStr(e,b,sizeof(b))
/* SErrGetLastError @ 463
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Retrieves the last error that was specifically
* set for the Storm library .
*
* Returns the last error set within the Storm library .
*/
2018-06-08 03:00:35 +00:00
DWORD
2018-06-07 02:23:06 +00:00
STORMAPI
SErrGetLastError ( ) ;
// Registers a module as a message source for SErrGetErrorStr, always returns TRUE
// groupID is a group in a MessageTable entry for example in STORM_ERROR_BAD_ARGUMENT 0x85100065, 0x510 is the group.
// BOOL STORMAPI SErrRegisterMessageSource(WORD groupID, HMODULE hSourceModule, int a3)
/* SErrSetLastError @ 465
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Sets the last error for the Storm library and the Kernel32 library .
*
* dwErrCode : The error code that will be set .
*/
2018-06-08 03:00:35 +00:00
void
2018-06-07 02:23:06 +00:00
STORMAPI
SErrSetLastError (
DWORD dwErrCode = NO_ERROR ) ;
2018-06-08 03:00:35 +00:00
//
2018-06-07 02:23:06 +00:00
// void STORMAPI SErrReportNamedResourceLeak(const char *pszMsg, const char *pszSubMsg = nullptr)
// void STORMAPI SErrReportResourceLeak(const char *pszMsg)
2018-06-08 03:00:35 +00:00
void STORMAPI SErrSuppressErrors ( BOOL suppressErrors ) ;
2018-06-07 02:23:06 +00:00
// Values for dwErrCode
# define STORM_ERROR_ASSERTION 0x85100000
# define STORM_ERROR_BAD_ARGUMENT 0x85100065
# define STORM_ERROR_GAME_ALREADY_STARTED 0x85100066
# define STORM_ERROR_GAME_FULL 0x85100067
# define STORM_ERROR_GAME_NOT_FOUND 0x85100068
# define STORM_ERROR_GAME_TERMINATED 0x85100069
# define STORM_ERROR_INVALID_PLAYER 0x8510006a
# define STORM_ERROR_NO_MESSAGES_WAITING 0x8510006b
# define STORM_ERROR_NOT_ARCHIVE 0x8510006c
# define STORM_ERROR_NOT_ENOUGH_ARGUMENTS 0x8510006d
# define STORM_ERROR_NOT_IMPLEMENTED 0x8510006e
# define STORM_ERROR_NOT_IN_ARCHIVE 0x8510006f
# define STORM_ERROR_NOT_IN_GAME 0x85100070
# define STORM_ERROR_NOT_INITIALIZED 0x85100071
# define STORM_ERROR_NOT_PLAYING 0x85100072
# define STORM_ERROR_NOT_REGISTERED 0x85100073
# define STORM_ERROR_REQUIRES_CODEC1 0x85100074
# define STORM_ERROR_REQUIRES_CODEC2 0x85100075
# define STORM_ERROR_REQUIRES_CODEC3 0x85100076
# define STORM_ERROR_REQUIRES_UPGRADE 0x85100077
# define STORM_ERROR_STILL_ACTIVE 0x85100078
# define STORM_ERROR_VERSION_MISMATCH 0x85100079
# define STORM_ERROR_MEM_NOT_ALLOCATED 0x8510007a
# define STORM_ERROR_MEM_CORRUPTED 0x8510007b
# define STORM_ERROR_MEM_INVALID 0x8510007c
# define STORM_ERROR_MEM_MANAGER_NOT_INITIALIZED 0x8510007d
# define STORM_ERROR_MEM_NOT_FREED 0x8510007e
# define STORM_ERROR_RESOURCES_NOT_RELEASED 0x8510007f
# define STORM_ERROR_OUT_OF_BOUNDS 0x85100080
# define STORM_ERROR_NULL_POINTER 0x85100081
# define STORM_ERROR_CDKEY_MISMATCH 0x85100082
# define STORM_ERROR_FILE_CORRUPTED 0x85100083
# define STORM_ERROR_FATAL 0x85100084
# define STORM_ERROR_GAMETYPE_UNAVAILABLE 0x85100085
/* SMemCopy @ 491
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Copies a block of memory from source to destination .
* This function immediately calls memcpy . See online documentation
* of memcpy for more details .
*
* dest : The destination buffer .
* source : The source buffer .
* size : The number of bytes to copy .
*/
2018-06-08 03:00:35 +00:00
void
2018-06-07 02:23:06 +00:00
STORMAPI
SMemCopy (
2018-06-08 03:00:35 +00:00
void * dest ,
const void * source ,
2018-06-07 02:23:06 +00:00
size_t size ) ;
# define SMCopy(d,s) ( SMemCopy(d, s, __STORM_SSIZEMIN(s,d)) )
/* SMemFill @ 492
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Fills a block of memory with the specified character .
* This function immediately calls memset . See online documentation
* of memset for more details .
*
* dest : The destination buffer .
* source : The size of the destination buffer .
* size : The format to use .
*/
2018-06-08 03:00:35 +00:00
void
2018-06-07 02:23:06 +00:00
STORMAPI
SMemFill (
void * location ,
size_t length ,
char fillWith = 0 ) ;
# define SMFill(l,f) (SMemFill(l, sizeof(l), f))
/* SMemZero @ 494
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Fills a block of memory with the integer 0x00 ( Zero ) .
*
* location : The location to write at .
* length : The amount of bytes to write .
*/
2018-06-08 03:00:35 +00:00
void
STORMAPI
2018-06-07 02:23:06 +00:00
SMemZero (
void * location ,
size_t length ) ;
# define SMZero(l) (SMemZero(l, sizeof(l)))
2018-06-08 03:00:35 +00:00
int STORMAPI SMemCmp ( void * location1 , void * location2 , DWORD size ) ;
2018-06-07 02:23:06 +00:00
# define SMCmp(l,x) ( SMemCmp(l, x, __STORM_SSIZEMIN(x,l)) )
/* SStrCopy @ 501
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Copies a string from src to dest ( including NULL terminator )
* until the max_length is reached .
*
* dest : The destination array .
* src : The source array .
* max_length : The maximum length of dest .
*
* Returns the number of characters copied .
*/
2018-06-08 03:00:35 +00:00
int
2018-06-07 02:23:06 +00:00
STORMAPI
SStrCopy (
2018-06-08 03:00:35 +00:00
char * dest ,
2018-06-07 02:23:06 +00:00
const char * src ,
int max_length = 0x7FFFFFFF ) ;
# define SSCopy(d,s) (SStrCopy(d, s, sizeof(d)))
# define STORM_HASH_ABSOLUTE 1
/* SStrHash @ 502
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Creates a simple hash for the string . This function
* should NOT be used for sensitive information .
*
* string : The input string .
* flags : If STORM_HASH_ABSOLUTE is set then this
function uses the absolute string , otherwise
it will convert backslashes to forward
slashes and some other processing .
* seed : The hash seed . If this value is 0 then the
* default value 0x7FED7FED will be used .
*
* Returns the 32 - bit hash of the string .
*/
2018-06-08 03:00:35 +00:00
DWORD
2018-06-07 02:23:06 +00:00
STORMAPI
SStrHash (
const char * string ,
DWORD flags = 0 ,
DWORD Seed = 0 ) ;
2018-06-08 03:00:35 +00:00
int STORMAPI SStrNCat ( char * dest , const char * src , DWORD max_length ) ;
2018-06-07 02:23:06 +00:00
/* SStrLen @ 506
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Retrieves the length of a string .
*
* string : The input string of which to obtain a
* length for .
*
* Returns the length of the string .
*/
2018-06-08 03:00:35 +00:00
int
2018-06-07 02:23:06 +00:00
STORMAPI
SStrLen (
const char * string ) ;
/* SStrCmp @ 508
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Compares two strings case sensitive .
*
* string1 : The first string .
* string2 : The second string .
* size : The maximum amount of characters to compare .
*
* Returns 0 if strings are equal . See strcmp documentation for more details .
*/
2018-06-08 03:00:35 +00:00
int
2018-06-07 02:23:06 +00:00
STORMAPI
SStrCmp (
2018-06-08 03:00:35 +00:00
const char * string1 ,
const char * string2 ,
2018-06-07 02:23:06 +00:00
size_t size ) ;
# define SSCmp(s,x) ( SStrCmp(s,x,__STORM_SSIZEMIN(s,x)) )
/* SStrCmpI @ 509
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Compares two strings case insensitive .
*
* string1 : The first string .
* string2 : The second string .
* size : The maximum amount of characters to compare .
*
* Returns 0 if strings are equal . See strcmpi documentation for more details .
*/
2018-06-08 03:00:35 +00:00
int
2018-06-07 02:23:06 +00:00
STORMAPI
SStrCmpI (
2018-06-08 03:00:35 +00:00
const char * string1 ,
const char * string2 ,
2018-06-07 02:23:06 +00:00
size_t size ) ;
# define SSCmpI(s,x) ( SStrCmpI(s,x,__STORM_SSIZEMIN(s,x)) )
/* SStrUpper @ 510
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Converts all lower - case alpha characters of a string to upper - case .
*
* string : The string to convert .
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Returns the same pointer given in the input .
*/
2018-06-08 03:00:35 +00:00
char *
2018-06-07 02:23:06 +00:00
STORMAPI
SStrUpper (
char * string ) ;
2018-06-08 03:00:35 +00:00
void STORMAPI SRgn523 ( HANDLE hRgn , RECT * pRect , int a3 , int a4 ) ;
void STORMAPI SRgnCreateRegion ( HANDLE * hRgn , int a2 ) ;
void STORMAPI SRgnDeleteRegion ( HANDLE hRgn ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
void STORMAPI SRgn529i ( int handle , int a2 , int a3 ) ;
2018-06-07 02:23:06 +00:00
/* SErrDisplayErrorFmt @ 562
*
* Displays a formatted error message . The message is detailed and flexible for many applications .
* The message will be different if there is a debugger attached . Will typically terminate the application
* unless the option to continue is given .
*
* dwErrMessage : The error code . See SErrGetLastError and GetLastError .
* logfilename : The name of the file or object that this call belongs to .
* logline : The line in the file or one of the SLOG_ macros .
* allowOption : If TRUE , allows the user the option to continue execution , otherwise the program will terminate .
* exitCode : The exit code used for program termination .
* format : Additional message formatting . See printf .
*
* Returns TRUE if the user chose to continue execution , FALSE otherwise .
*/
2018-06-08 03:00:35 +00:00
BOOL
2018-06-07 02:23:06 +00:00
SErrDisplayErrorFmt (
DWORD dwErrMsg ,
const char * logfilename ,
int logline ,
BOOL allowOption ,
int exitCode ,
const char * format ,
. . . ) ;
//#define SEDisplayErrorFmt(err,...) SErrDisplayErrorFmt(err, __FILE__, __LINE__, FALSE, 1, __VA_ARGS__)
/* SErrCatchUnhandledExceptions @ 567
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Registers a top - level exception filter managed entirely by Storm .
* The registered filter will display formatted exception information by calling SErrDisplayError .
*/
2018-06-08 03:00:35 +00:00
void
2018-06-07 02:23:06 +00:00
STORMAPI
SErrCatchUnhandledExceptions ( ) ;
/* SStrChr @ 571
2018-06-08 03:00:35 +00:00
*
* Searches a string for the given character . See
2018-06-07 02:23:06 +00:00
* strchr documentation for more details .
*
* string : The string to search .
* c : The character to search for .
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Returns a pointer to the first occurance of the character .
*/
2018-06-08 03:00:35 +00:00
char *
2018-06-07 02:23:06 +00:00
STORMAPI
SStrChr (
2018-06-08 03:00:35 +00:00
const char * string ,
2018-06-07 02:23:06 +00:00
char c ) ;
2018-06-08 03:00:35 +00:00
char * STORMAPI SStrChrR ( const char * string , char c ) ;
2018-06-07 02:23:06 +00:00
/* SStrVPrintf @ 578
2018-06-08 03:00:35 +00:00
*
2018-06-07 02:23:06 +00:00
* Prints a formatted string to a destination buffer .
* This function calls vsnprintf with some extra error handling .
* See online documentation of vsnprintf for more details .
*
* dest : The destination buffer .
* size : The size of the destination buffer .
* format : The format to use .
*
* Returns the number of characters written .
*/
2018-06-08 03:00:35 +00:00
size_t
2018-06-07 02:23:06 +00:00
SStrVPrintf (
2018-06-08 03:00:35 +00:00
char * dest ,
size_t size ,
2018-06-07 02:23:06 +00:00
const char * format , . . . ) ;
2018-06-08 03:00:35 +00:00
int STORMAPI SBigDel ( void * buffer ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
int STORMAPI SBigFromBinary ( void * buffer , const void * str , size_t size ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
int STORMAPI SBigNew ( void * * buffer ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
int STORMAPI SBigPowMod ( void * buffer1 , void * buffer2 , int a3 , int a4 ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
int STORMAPI SBigToBinaryBuffer ( void * buffer , int length , int a3 , int a4 ) ;
2018-06-07 02:23:06 +00:00
2018-06-08 03:00:35 +00:00
void __stdcall SDrawMessageBox ( char * , char * , int ) ;
void __cdecl SDrawDestroy ( void ) ;
bool __cdecl StormDestroy ( void ) ;
bool __stdcall SFileSetBasePath ( char * ) ;
void __cdecl SDrawRealizePalette ( void ) ;
bool __cdecl SVidPlayContinue ( void ) ;
bool __stdcall SNetGetOwnerTurnsWaiting ( int * ) ;
void * __stdcall SNetUnregisterEventHandler ( int , void ( __stdcall * ) ( struct _SNETEVENT * ) ) ;
void * __stdcall SNetRegisterEventHandler ( int , void ( __stdcall * ) ( struct _SNETEVENT * ) ) ;
bool __stdcall SNetSetBasePlayer ( int ) ;
int __stdcall SNetInitializeProvider ( unsigned long , struct _SNETPROGRAMDATA * , struct _SNETPLAYERDATA * , struct _SNETUIDATA * , struct _SNETVERSIONDATA * ) ;
int __stdcall SNetGetProviderCaps ( struct _SNETCAPS * ) ;
int __stdcall SFileSetFilePointer ( HANDLE , int , HANDLE , int ) ;
2018-06-07 02:23:06 +00:00
# endif