diff --git a/3rdParty/Storm/Source/storm.cpp b/3rdParty/Storm/Source/storm.cpp index 0ec510336..583be190c 100644 --- a/3rdParty/Storm/Source/storm.cpp +++ b/3rdParty/Storm/Source/storm.cpp @@ -64,13 +64,13 @@ int STORMAPI Ordinal224(int a1) rInt; BOOL STORMAPI SFileCloseArchive(HANDLE hArchive) rBool; BOOL STORMAPI SFileCloseFile(HANDLE hFile) rBool; -BOOL STORMAPI SFileDdaBeginEx(HANDLE directsound, DWORD flags, DWORD mask, unsigned __int32 lDistanceToMove, signed __int32 volume, signed int a6, int a7) rBool; +BOOL STORMAPI SFileDdaBeginEx(HANDLE hFile, DWORD flags, DWORD mask, unsigned __int32 lDistanceToMove, signed __int32 volume, signed int a6, int a7) rBool; BOOL STORMAPI SFileDdaDestroy() rBool; -BOOL STORMAPI SFileDdaEnd(HANDLE directsound) rBool; -BOOL STORMAPI SFileDdaGetPos(HANDLE directsound, int a2, int a3) rBool; +BOOL STORMAPI SFileDdaEnd(HANDLE hFile) rBool; +BOOL STORMAPI SFileDdaGetPos(HANDLE hFile, int *current, int *end) rBool; BOOL STORMAPI SFileDdaInitialize(HANDLE directsound) rBool; -BOOL STORMAPI SFileDdaSetVolume(HANDLE directsound, signed int bigvolume, signed int volume) rBool; +BOOL STORMAPI SFileDdaSetVolume(HANDLE hFile, signed int bigvolume, signed int volume) rBool; BOOL STORMAPI SFileDestroy() rBool; BOOL STORMAPI SFileGetFileArchive(HANDLE hFile, HANDLE *archive) rBool; @@ -96,7 +96,7 @@ BOOL STORMAPI SBltROP3Tiled(void *lpDstBuffer, RECT *lpDstRect, POINT *lpDstPt, BOOL STORMAPI SBmpDecodeImage(DWORD dwImgType, void *pSrcBuffer, DWORD dwSrcBuffersize, PALETTEENTRY *pPalette, void *pDstBuffer, DWORD dwDstBuffersize, DWORD *pdwWidth, DWORD *pdwHeight, DWORD *pdwBpp) rBool; -BOOL STORMAPI SBmpLoadImage(const char *pszFileName, PALETTEENTRY *pPalette, void *pBuffer, DWORD dwBuffersize, DWORD *pdwWidth, DWORD *dwHeight, DWORD *pdwBpp) rBool; +BOOL STORMAPI SBmpLoadImage(const char *pszFileName, PALETTEENTRY *pPalette, BYTE *pBuffer, DWORD dwBuffersize, DWORD *pdwWidth, DWORD *pdwHeight, DWORD *pdwBpp) rBool; BOOL STORMAPI SBmpSaveImage(const char*, PALETTEENTRY*, void*, DWORD, DWORD, DWORD) rBool; HANDLE STORMAPI SBmpAllocLoadImage(const char *fileName, PALETTEENTRY *palette, void **buffer, int *width, int *height, int unused6, int unused7, void *(STORMAPI *allocFunction)(DWORD)) rPVoid; @@ -169,7 +169,7 @@ BOOL STORMAPI STransCreateI(void *pBuffer, int width, int height, int bpp, int a BOOL STORMAPI SVidDestroy() rBool; BOOL STORMAPI SVidGetSize(HANDLE video, int width, int height, int zero) rBool; BOOL STORMAPI SVidInitialize(HANDLE video) rBool; -BOOL STORMAPI SVidPlayBegin(char *filename, int arg4, int a3, int a4, int a5, int a6, HANDLE* video) rBool; +BOOL STORMAPI SVidPlayBegin(char *filename, int a2, int a3, int a4, int a5, int flags, HANDLE *video) rBool; BOOL STORMAPI SVidPlayContinueSingle(HANDLE video, int a2, int a3) rBool; BOOL STORMAPI SVidPlayEnd(HANDLE video) rBool; @@ -246,6 +246,6 @@ void __stdcall SDlgSetCursor(HWND hWnd, HCURSOR a2, int a3, int *a4) rVoid; BOOL __stdcall SDlgSetTimer(int a1, int a2, int a3, void (__stdcall *a4)(int, int, int, int)) rBool; BOOL __stdcall SDlgKillTimer(int a1, int a2) rBool; BOOL __stdcall SDlgDrawBitmap(HWND hWnd, int a2, int a3, int a4, int a5, int a6, int a7) rBool; -BOOL __stdcall SDlgDialogBoxParam(HINSTANCE hInst, char *szDialog, int a3, WNDPROC func, int a5) rBool; +BOOL __stdcall SDlgDialogBoxParam(HINSTANCE hInst, char *szDialog, int hWnd, WNDPROC func, int selhero_is_good) rBool; BOOL __stdcall SGdiTextOut(void *pBuffer, int x, int y, int mask, char *str, int len) rBool; BOOL __stdcall SFileEnableDirectAccess(BOOL enable) rBool; diff --git a/3rdParty/Storm/Source/storm.h b/3rdParty/Storm/Source/storm.h index ab8f987c8..e5651a11a 100644 --- a/3rdParty/Storm/Source/storm.h +++ b/3rdParty/Storm/Source/storm.h @@ -470,13 +470,13 @@ int STORMAPI Ordinal224(int a1); BOOL STORMAPI SFileCloseArchive(HANDLE hArchive); BOOL STORMAPI SFileCloseFile(HANDLE hFile); -BOOL STORMAPI SFileDdaBeginEx(HANDLE directsound, DWORD flags, DWORD mask, unsigned __int32 lDistanceToMove, signed __int32 volume, signed int a6, int a7); +BOOL STORMAPI SFileDdaBeginEx(HANDLE hFile, DWORD flags, DWORD mask, unsigned __int32 lDistanceToMove, signed __int32 volume, signed int pan, int a7); BOOL STORMAPI SFileDdaDestroy(); -BOOL STORMAPI SFileDdaEnd(HANDLE directsound); -BOOL STORMAPI SFileDdaGetPos(HANDLE directsound, int a2, int a3); +BOOL STORMAPI SFileDdaEnd(HANDLE hFile); +BOOL STORMAPI SFileDdaGetPos(HANDLE hFile, int *current, int *end); BOOL STORMAPI SFileDdaInitialize(HANDLE directsound); -BOOL STORMAPI SFileDdaSetVolume(HANDLE directsound, signed int bigvolume, signed int volume); +BOOL STORMAPI SFileDdaSetVolume(HANDLE hFile, signed int bigvolume, signed int volume); BOOL STORMAPI SFileDestroy(); BOOL STORMAPI SFileGetFileArchive(HANDLE hFile, HANDLE *archive); @@ -594,7 +594,7 @@ STORMAPI SBmpLoadImage( const char *pszFileName, PALETTEENTRY *pPalette , - void *pBuffer, + BYTE *pBuffer, DWORD dwBuffersize, DWORD *pdwWidth, DWORD *pdwHeight, @@ -898,7 +898,7 @@ BOOL STORMAPI STransCreateI(void *pBuffer, int width, int height, int bpp, int a 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); +BOOL STORMAPI SVidPlayBegin(char *filename, int a2, int a3, int a4, int a5, int flags, HANDLE *video); BOOL STORMAPI SVidPlayContinueSingle(HANDLE video, int a2, int a3); BOOL STORMAPI SVidPlayEnd(HANDLE video); @@ -1308,7 +1308,7 @@ void __stdcall SDlgSetCursor(HWND hWnd, HCURSOR a2, int a3, int *a4); BOOL __stdcall SDlgSetTimer(int a1, int a2, int a3, void (__stdcall *a4)(int, int, int, int)); BOOL __stdcall SDlgKillTimer(int a1, int a2); BOOL __stdcall SDlgDrawBitmap(HWND hWnd, int a2, int a3, int a4, int a5, int a6, int a7); -BOOL __stdcall SDlgDialogBoxParam(HINSTANCE hInst, char *szDialog, int a3, WNDPROC func, int a5); +BOOL __stdcall SDlgDialogBoxParam(HINSTANCE hInst, char *szDialog, int hWnd, WNDPROC func, int selhero_is_good); BOOL __stdcall SGdiTextOut(void *pBuffer, int x, int y, int mask, char *str, int len); BOOL __stdcall SFileEnableDirectAccess(BOOL enable); diff --git a/DiabloUI/connect.cpp b/DiabloUI/connect.cpp index 1a23a6a80..f52e2853f 100644 --- a/DiabloUI/connect.cpp +++ b/DiabloUI/connect.cpp @@ -72,7 +72,7 @@ BOOL __cdecl Connect_LoadGFXAndStuff() // 100295C0: using guessed type int heroport_frames; // ref: 0x10003009 -BOOL __stdcall UiArtCallback(int game_type, unsigned int art_code, PALETTEENTRY *pPalette, void *pBuffer, DWORD dwBuffersize, DWORD *pdwWidth, DWORD *pdwHeight, DWORD *pdwBpp) +BOOL __stdcall UiArtCallback(int game_type, unsigned int art_code, PALETTEENTRY *pPalette, BYTE *pBuffer, DWORD dwBuffersize, DWORD *pdwWidth, DWORD *pdwHeight, DWORD *pdwBpp) { BOOL result; // eax char pszFileName[260]; // [esp+8h] [ebp-104h] diff --git a/DiabloUI/diabloui.h b/DiabloUI/diabloui.h index 4a7768c5f..afc1bfa64 100644 --- a/DiabloUI/diabloui.h +++ b/DiabloUI/diabloui.h @@ -46,7 +46,7 @@ BOOL __stdcall UiSoundCallback(int a1, int type, int a3); void __stdcall UiMessageBoxCallback(HWND hWnd, char *lpText, LPCSTR lpCaption, UINT uType); BOOL __stdcall UiDrawDescCallback(int arg0, COLORREF color, LPCSTR lpString, char *a4, int a5, UINT align, time_t a7, HDC *a8); BOOL __stdcall UiCreateGameCallback(int a1, int a2, int a3, int a4, int a5, int a6); -BOOL __stdcall UiArtCallback(int game_type, unsigned int art_code, PALETTEENTRY *pPalette, void *pBuffer, DWORD dwBuffersize, DWORD *pdwWidth, DWORD *pdwHeight, DWORD *pdwBpp); +BOOL __stdcall UiArtCallback(int game_type, unsigned int art_code, PALETTEENTRY *pPalette, BYTE *pBuffer, DWORD dwBuffersize, DWORD *pdwWidth, DWORD *pdwHeight, DWORD *pdwBpp); int __stdcall UiSelectGame(int a1, _SNETPROGRAMDATA *client_info, _SNETPLAYERDATA *user_info, _SNETUIDATA *ui_info, _SNETVERSIONDATA *file_info, int *a6); int __stdcall UiSelectProvider(int a1, _SNETPROGRAMDATA *client_info, _SNETPLAYERDATA *user_info, _SNETUIDATA *ui_info, _SNETVERSIONDATA *file_info, int *type); BOOL __stdcall UiCreatePlayerDescription(_uiheroinfo *info, int mode, char *desc); diff --git a/Source/effects.cpp b/Source/effects.cpp index 3f1c64d41..bae460f44 100644 --- a/Source/effects.cpp +++ b/Source/effects.cpp @@ -1145,27 +1145,18 @@ void __cdecl sound_stop() void __cdecl sound_update() { - //int v0; // ebp - //unsigned int v1; // ecx - // int v2; // eax - unsigned int v3; // [esp-Ch] [ebp-Ch] - unsigned int v4; // [esp-8h] [ebp-8h] - //int v5; // [esp-4h] [ebp-4h] - - if (gbSndInited) { - snd_update(0); - //v5 = v0; - //v4 = v1; - //v3 = v1; - if (sfx_stream) { - //_LOBYTE(v2) = SFileDdaGetPos(sfx_stream, (int)&v4, (int)&v3); - if (SFileDdaGetPos(sfx_stream, (int)&v4, (int)&v3)) { - if (v4 >= v3) - sfx_stop(); - } - } + int current, end; + + if (!gbSndInited) { + return; + } + + snd_update(FALSE); + if (sfx_stream != NULL && SFileDdaGetPos(sfx_stream, ¤t, &end) && current >= end) { + sfx_stop(); } } + // 415DBA: could not find valid save-restore pair for ebp void __cdecl effects_cleanup_sfx() diff --git a/Source/sound.cpp b/Source/sound.cpp index a7f894c15..b9ae59d05 100644 --- a/Source/sound.cpp +++ b/Source/sound.cpp @@ -4,7 +4,7 @@ LPDIRECTSOUNDBUFFER DSBs[8]; LPDIRECTSOUND sglpDS; -char gbSndInited; +BOOLEAN gbSndInited; int sglMusicVolume; int sglSoundVolume; HMODULE hDsound_dll; diff --git a/Source/sound.h b/Source/sound.h index 9ef9a2f2d..ffc0439f2 100644 --- a/Source/sound.h +++ b/Source/sound.h @@ -3,7 +3,7 @@ #define __SOUND_H__ extern IDirectSoundBuffer *DSBs[8]; -extern char gbSndInited; +extern BOOLEAN gbSndInited; extern HMODULE hDsound_dll; void __fastcall snd_update(BOOL bStopAll);