Browse Source

Merge branch 'master'

pull/35/head
Xadhoom 7 years ago
parent
commit
8eebc8c7a4
  1. 2
      3rdParty/Storm/Source/storm.h
  2. 2
      Source/effects.cpp
  3. 39
      SourceX/storm.cpp

2
3rdParty/Storm/Source/storm.h vendored

@ -482,7 +482,7 @@ BOOL STORMAPI SFileCloseFile(HANDLE hFile);
BOOL STORMAPI SFileDdaBeginEx(HANDLE directsound, 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 SFileDdaGetPos(HANDLE directsound, int *current, int *end);
BOOL STORMAPI SFileDdaInitialize(HANDLE directsound);
BOOL STORMAPI SFileDdaSetVolume(HANDLE directsound, signed int bigvolume, signed int volume);

2
Source/effects.cpp

@ -1161,7 +1161,7 @@ void __cdecl sound_update()
//v3 = v1;
if (sfx_stream) {
//_LOBYTE(v2) = SFileDdaGetPos(sfx_stream, (int)&v4, (int)&v3);
if (SFileDdaGetPos(sfx_stream, (INT_PTR)&v4, (INT_PTR)&v3)) {
if (SFileDdaGetPos(sfx_stream, &v4, &v3)) {
if (v4 >= v3)
sfx_stop();
}

39
SourceX/storm.cpp

@ -30,42 +30,45 @@ radon::File ini(getIniPath());
// UNIMPLEMENTED();
// }
Mix_Chunk *SFileChunk;
BOOL SFileDdaBeginEx(HANDLE directsound, DWORD flags, DWORD mask, unsigned __int32 lDistanceToMove,
signed __int32 volume, signed int pan, int a7)
{
DUMMY(); // Todo track when the sound can be released, see sfx_stop()
int bytestoread;
int nrread;
void *SFXbuffer;
bytestoread = (int)SFileGetFileSize(directsound, 0);
SFXbuffer = DiabloAllocPtr(bytestoread);
SFileReadFile(directsound, (char *)SFXbuffer, bytestoread, (LPDWORD)&nrread, 0);
DWORD bytestoread = SFileGetFileSize(directsound, 0);
char *SFXbuffer = malloc(bytestoread);
SFileReadFile(directsound, SFXbuffer, bytestoread, NULL, 0);
SDL_RWops *rw = SDL_RWFromConstMem(SFXbuffer, bytestoread);
Mix_Chunk *SoundFX = Mix_LoadWAV_RW(rw, 1);
SFileChunk = Mix_LoadWAV_RW(rw, 1);
free(SFXbuffer);
Mix_PlayChannel(-1, SoundFX, 0);
Mix_PlayChannel(0, SFileChunk, 0);
return 1;
return TRUE;
}
BOOL SFileDdaDestroy()
{
DUMMY();
return 0;
Mix_FreeChunk(SFileChunk);
return TRUE;
}
BOOL SFileDdaEnd(HANDLE directsound)
{
DUMMY();
return 0;
Mix_HaltChannel(0);
}
BOOL SFileDdaGetPos(HANDLE directsound, int a2, int a3)
BOOL SFileDdaGetPos(HANDLE directsound, int *current, int *end)
{
DUMMY_ONCE();
return true;
*current = 0;
*end = 1;
if (Mix_GetChunk(0) != SFileChunk || !Mix_Playing(0)) {
*current = *end;
}
return TRUE;
}
BOOL SFileDdaInitialize(HANDLE directsound)

Loading…
Cancel
Save