Cleanup sound.h (#60)

This commit is contained in:
k3tamina 2022-07-05 08:15:43 +02:00 committed by GitHub
parent ead439335e
commit 0695947b49
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 55 additions and 78 deletions

View File

@ -1,7 +1,6 @@
#include "sound.h" #include "sound.h"
#include "debug.h" #include "debug.h"
#include "memory.h"
#include "platform_compat.h" #include "platform_compat.h"
#ifdef _WIN32 #ifdef _WIN32
@ -20,26 +19,62 @@
#include <algorithm> #include <algorithm>
#define SOUND_FLAG_SOUND_IS_PLAYING (0x02)
#define SOUND_FLAG_SOUND_IS_PAUSED (0x08)
typedef char*(SoundFileNameMangler)(char*);
typedef struct STRUCT_51D478 {
Sound* field_0;
int field_4;
int field_8;
int field_C;
int field_10;
int field_14;
struct STRUCT_51D478* prev;
struct STRUCT_51D478* next;
} STRUCT_51D478;
static void* soundMallocProcDefaultImpl(size_t size);
static void* soundReallocProcDefaultImpl(void* ptr, size_t size);
static void soundFreeProcDefaultImpl(void* ptr);
static char* soundFileManglerDefaultImpl(char* fname);
static void _refreshSoundBuffers(Sound* sound);
static int _preloadBuffers(Sound* sound);
static int _soundRewind(Sound* sound);
static int _addSoundData(Sound* sound, unsigned char* buf, int size);
static int _soundSetData(Sound* sound, unsigned char* buf, int size);
static int soundContinue(Sound* sound);
static int _soundGetVolume(Sound* sound);
static void soundDeleteInternal(Sound* sound);
#ifdef HAVE_DSOUND
static void CALLBACK _doTimerEvent(UINT uTimerID, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2);
static void _removeTimedEvent(unsigned int* timerId);
#endif
static void _removeFadeSound(STRUCT_51D478* a1);
static void _fadeSounds();
static int _internalSoundFade(Sound* sound, int a2, int a3, int a4);
// 0x51D478 // 0x51D478
STRUCT_51D478* _fadeHead = NULL; static STRUCT_51D478* _fadeHead = NULL;
// 0x51D47C // 0x51D47C
STRUCT_51D478* _fadeFreeList = NULL; static STRUCT_51D478* _fadeFreeList = NULL;
// 0x51D480 // 0x51D480
unsigned int _fadeEventHandle = UINT_MAX; static unsigned int _fadeEventHandle = UINT_MAX;
// 0x51D488 // 0x51D488
MallocProc* gSoundMallocProc = soundMallocProcDefaultImpl; static MallocProc* gSoundMallocProc = soundMallocProcDefaultImpl;
// 0x51D48C // 0x51D48C
ReallocProc* gSoundReallocProc = soundReallocProcDefaultImpl; static ReallocProc* gSoundReallocProc = soundReallocProcDefaultImpl;
// 0x51D490 // 0x51D490
FreeProc* gSoundFreeProc = soundFreeProcDefaultImpl; static FreeProc* gSoundFreeProc = soundFreeProcDefaultImpl;
// 0x51D494 // 0x51D494
SoundFileIO gSoundDefaultFileIO = { static SoundFileIO gSoundDefaultFileIO = {
open, open,
close, close,
compat_read, compat_read,
@ -51,10 +86,10 @@ SoundFileIO gSoundDefaultFileIO = {
}; };
// 0x51D4B4 // 0x51D4B4
SoundFileNameMangler* gSoundFileNameMangler = soundFileManglerDefaultImpl; static SoundFileNameMangler* gSoundFileNameMangler = soundFileManglerDefaultImpl;
// 0x51D4B8 // 0x51D4B8
const char* gSoundErrorDescriptions[SOUND_ERR_COUNT] = { static const char* gSoundErrorDescriptions[SOUND_ERR_COUNT] = {
"sound.c: No error", "sound.c: No error",
"sound.c: SOS driver not loaded", "sound.c: SOS driver not loaded",
"sound.c: SOS invalid pointer", "sound.c: SOS invalid pointer",
@ -92,38 +127,38 @@ const char* gSoundErrorDescriptions[SOUND_ERR_COUNT] = {
}; };
// 0x668150 // 0x668150
int gSoundLastError; static int gSoundLastError;
// 0x668154 // 0x668154
int _masterVol; static int _masterVol;
#ifdef HAVE_DSOUND #ifdef HAVE_DSOUND
// 0x668158 // 0x668158
LPDIRECTSOUNDBUFFER gDirectSoundPrimaryBuffer; static LPDIRECTSOUNDBUFFER gDirectSoundPrimaryBuffer;
#endif #endif
// 0x66815C // 0x66815C
int _sampleRate; static int _sampleRate;
// Number of sounds currently playing. // Number of sounds currently playing.
// //
// 0x668160 // 0x668160
int _numSounds; static int _numSounds;
// 0x668164 // 0x668164
int _deviceInit; static int _deviceInit;
// 0x668168 // 0x668168
int _dataSize; static int _dataSize;
// 0x66816C // 0x66816C
int _numBuffers; static int _numBuffers;
// 0x668170 // 0x668170
bool gSoundInitialized; static bool gSoundInitialized;
// 0x668174 // 0x668174
Sound* gSoundListHead; static Sound* gSoundListHead;
#ifdef HAVE_DSOUND #ifdef HAVE_DSOUND
// 0x668178 // 0x668178

View File

@ -4,9 +4,6 @@
#include "memory_defs.h" #include "memory_defs.h"
#include "win32.h" #include "win32.h"
#define SOUND_FLAG_SOUND_IS_PLAYING (0x02)
#define SOUND_FLAG_SOUND_IS_PAUSED (0x08)
#define VOLUME_MIN (0) #define VOLUME_MIN (0)
#define VOLUME_MAX (0x7FFF) #define VOLUME_MAX (0x7FFF)
@ -49,7 +46,6 @@ typedef enum SoundError {
SOUND_ERR_COUNT, SOUND_ERR_COUNT,
} SoundError; } SoundError;
typedef char*(SoundFileNameMangler)(char*);
typedef int SoundOpenProc(const char* filePath, int flags, ...); typedef int SoundOpenProc(const char* filePath, int flags, ...);
typedef int SoundCloseProc(int fileHandle); typedef int SoundCloseProc(int fileHandle);
typedef int SoundReadProc(int fileHandle, void* buf, unsigned int size); typedef int SoundReadProc(int fileHandle, void* buf, unsigned int size);
@ -110,64 +106,19 @@ typedef struct Sound {
struct Sound* prev; struct Sound* prev;
} Sound; } Sound;
typedef struct STRUCT_51D478 {
Sound* field_0;
int field_4;
int field_8;
int field_C;
int field_10;
int field_14;
struct STRUCT_51D478* prev;
struct STRUCT_51D478* next;
} STRUCT_51D478;
extern STRUCT_51D478* _fadeHead;
extern STRUCT_51D478* _fadeFreeList;
extern unsigned int _fadeEventHandle;
extern MallocProc* gSoundMallocProc;
extern ReallocProc* gSoundReallocProc;
extern FreeProc* gSoundFreeProc;
extern SoundFileIO gSoundDefaultFileIO;
extern SoundFileNameMangler* gSoundFileNameMangler;
extern const char* gSoundErrorDescriptions[SOUND_ERR_COUNT];
extern int gSoundLastError;
extern int _masterVol;
#ifdef HAVE_DSOUND
extern LPDIRECTSOUNDBUFFER gDirectSoundPrimaryBuffer;
#endif
extern int _sampleRate;
extern int _numSounds;
extern int _deviceInit;
extern int _dataSize;
extern int _numBuffers;
extern bool gSoundInitialized;
extern Sound* gSoundListHead;
#ifdef HAVE_DSOUND #ifdef HAVE_DSOUND
extern LPDIRECTSOUND gDirectSound; extern LPDIRECTSOUND gDirectSound;
#endif #endif
void* soundMallocProcDefaultImpl(size_t size);
void* soundReallocProcDefaultImpl(void* ptr, size_t size);
void soundFreeProcDefaultImpl(void* ptr);
void soundSetMemoryProcs(MallocProc* mallocProc, ReallocProc* reallocProc, FreeProc* freeProc); void soundSetMemoryProcs(MallocProc* mallocProc, ReallocProc* reallocProc, FreeProc* freeProc);
char* soundFileManglerDefaultImpl(char* fname);
const char* soundGetErrorDescription(int err); const char* soundGetErrorDescription(int err);
void _refreshSoundBuffers(Sound* sound);
int soundInit(int a1, int a2, int a3, int a4, int rate); int soundInit(int a1, int a2, int a3, int a4, int rate);
void soundExit(); void soundExit();
Sound* soundAllocate(int a1, int a2); Sound* soundAllocate(int a1, int a2);
int _preloadBuffers(Sound* sound);
int soundLoad(Sound* sound, char* filePath); int soundLoad(Sound* sound, char* filePath);
int _soundRewind(Sound* sound);
int _addSoundData(Sound* sound, unsigned char* buf, int size);
int _soundSetData(Sound* sound, unsigned char* buf, int size);
int soundPlay(Sound* sound); int soundPlay(Sound* sound);
int soundStop(Sound* sound); int soundStop(Sound* sound);
int soundDelete(Sound* sound); int soundDelete(Sound* sound);
int soundContinue(Sound* sound);
bool soundIsPlaying(Sound* sound); bool soundIsPlaying(Sound* sound);
bool _soundDone(Sound* sound); bool _soundDone(Sound* sound);
bool soundIsPaused(Sound* sound); bool soundIsPaused(Sound* sound);
@ -176,24 +127,15 @@ int soundGetDuration(Sound* sound);
int soundSetLooping(Sound* sound, int a2); int soundSetLooping(Sound* sound, int a2);
int _soundVolumeHMItoDirectSound(int a1); int _soundVolumeHMItoDirectSound(int a1);
int soundSetVolume(Sound* sound, int volume); int soundSetVolume(Sound* sound, int volume);
int _soundGetVolume(Sound* sound);
int soundSetCallback(Sound* sound, SoundCallback* callback, void* userData); int soundSetCallback(Sound* sound, SoundCallback* callback, void* userData);
int soundSetChannels(Sound* sound, int channels); int soundSetChannels(Sound* sound, int channels);
int soundSetReadLimit(Sound* sound, int readLimit); int soundSetReadLimit(Sound* sound, int readLimit);
int soundPause(Sound* sound); int soundPause(Sound* sound);
int soundResume(Sound* sound); int soundResume(Sound* sound);
int soundSetFileIO(Sound* sound, SoundOpenProc* openProc, SoundCloseProc* closeProc, SoundReadProc* readProc, SoundWriteProc* writeProc, SoundSeekProc* seekProc, SoundTellProc* tellProc, SoundFileLengthProc* fileLengthProc); int soundSetFileIO(Sound* sound, SoundOpenProc* openProc, SoundCloseProc* closeProc, SoundReadProc* readProc, SoundWriteProc* writeProc, SoundSeekProc* seekProc, SoundTellProc* tellProc, SoundFileLengthProc* fileLengthProc);
void soundDeleteInternal(Sound* sound);
int _soundSetMasterVolume(int value); int _soundSetMasterVolume(int value);
#ifdef HAVE_DSOUND
void CALLBACK _doTimerEvent(UINT uTimerID, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2);
void _removeTimedEvent(unsigned int* timerId);
#endif
int _soundGetPosition(Sound* sound); int _soundGetPosition(Sound* sound);
int _soundSetPosition(Sound* sound, int a2); int _soundSetPosition(Sound* sound, int a2);
void _removeFadeSound(STRUCT_51D478* a1);
void _fadeSounds();
int _internalSoundFade(Sound* sound, int a2, int a3, int a4);
int _soundFade(Sound* sound, int a2, int a3); int _soundFade(Sound* sound, int a2, int a3);
void soundDeleteAll(); void soundDeleteAll();
void soundContinueAll(); void soundContinueAll();