2022-05-19 01:51:26 -07:00
|
|
|
#ifndef SOUND_EFFECTS_CACHE_H
|
|
|
|
#define SOUND_EFFECTS_CACHE_H
|
|
|
|
|
|
|
|
#include "cache.h"
|
|
|
|
|
|
|
|
// The maximum number of sound effects that can be loaded and played
|
|
|
|
// simultaneously.
|
|
|
|
#define SOUND_EFFECTS_MAX_COUNT (4)
|
|
|
|
|
|
|
|
#define SOUND_EFFECTS_CACHE_MIN_SIZE (0x40000)
|
|
|
|
|
|
|
|
typedef struct SoundEffect {
|
|
|
|
// NOTE: This field is only 1 byte, likely unsigned char. It always uses
|
|
|
|
// cmp for checking implying it's not bitwise flags. Therefore it's better
|
|
|
|
// to express it as boolean.
|
|
|
|
bool used;
|
|
|
|
CacheEntry* cacheHandle;
|
|
|
|
int tag;
|
|
|
|
int dataSize;
|
|
|
|
int fileSize;
|
|
|
|
// TODO: Make size_t.
|
|
|
|
int position;
|
|
|
|
int dataPosition;
|
|
|
|
unsigned char* data;
|
|
|
|
} SoundEffect;
|
|
|
|
|
|
|
|
extern const char* off_50DE04;
|
|
|
|
extern bool gSoundEffectsCacheInitialized;
|
|
|
|
extern int _sfxc_cmpr;
|
|
|
|
extern Cache* gSoundEffectsCache;
|
|
|
|
extern int gSoundEffectsCacheDebugLevel;
|
|
|
|
extern char* gSoundEffectsCacheEffectsPath;
|
|
|
|
extern SoundEffect* gSoundEffects;
|
|
|
|
extern int _sfxc_files_open;
|
|
|
|
|
|
|
|
int soundEffectsCacheInit(int cache_size, const char* effectsPath);
|
|
|
|
void soundEffectsCacheExit();
|
|
|
|
int soundEffectsCacheInitialized();
|
|
|
|
void soundEffectsCacheFlush();
|
|
|
|
int soundEffectsCacheFileOpen(const char* fname, int mode, ...);
|
|
|
|
int soundEffectsCacheFileClose(int handle);
|
|
|
|
int soundEffectsCacheFileRead(int handle, void* buf, unsigned int size);
|
|
|
|
int soundEffectsCacheFileWrite(int handle, const void* buf, unsigned int size);
|
2022-05-21 08:22:03 -07:00
|
|
|
long soundEffectsCacheFileSeek(int handle, long offset, int origin);
|
2022-05-19 01:51:26 -07:00
|
|
|
long soundEffectsCacheFileTell(int handle);
|
|
|
|
long soundEffectsCacheFileLength(int handle);
|
|
|
|
int soundEffectsCacheGetFileSizeImpl(int tag, int* sizePtr);
|
|
|
|
int soundEffectsCacheReadDataImpl(int tag, int* sizePtr, unsigned char* data);
|
|
|
|
void soundEffectsCacheFreeImpl(void* ptr);
|
|
|
|
int soundEffectsCacheCreateHandles();
|
|
|
|
void soundEffectsCacheFreeHandles();
|
|
|
|
int soundEffectsCreate(int* handlePtr, int id, void* data, CacheEntry* cacheHandle);
|
|
|
|
bool soundEffectsIsValidHandle(int a1);
|
|
|
|
int soundEffectsCacheFileReadCompressed(int handle, void* buf, unsigned int size);
|
|
|
|
int _sfxc_ad_reader(int handle, void* buf, unsigned int size);
|
|
|
|
|
|
|
|
#endif /* SOUND_EFFECTS_CACHE_H */
|