|
|
|
@ -25,16 +25,6 @@ |
|
|
|
#ifndef GUSEMU_H |
|
|
|
#define GUSEMU_H |
|
|
|
|
|
|
|
/* data types (need to be adjusted if neither a VC6 nor a C99 compatible compiler is used) */ |
|
|
|
|
|
|
|
#if defined _WIN32 && defined _MSC_VER /* doesn't support other win32 compilers yet, do it yourself... */ |
|
|
|
typedef unsigned int GUSdword; |
|
|
|
typedef signed short GUSsample; |
|
|
|
#else |
|
|
|
typedef uint32_t GUSdword; |
|
|
|
typedef int16_t GUSsample; |
|
|
|
#endif |
|
|
|
|
|
|
|
typedef struct _GUSEmuState |
|
|
|
{ |
|
|
|
uint8_t *himemaddr; /* 1024*1024 bytes used for storing uploaded samples (+32 additional bytes for read padding) */ |
|
|
|
@ -86,7 +76,7 @@ void gus_dma_transferdata(GUSEmuState *state, char *dma_addr, unsigned int count |
|
|
|
/* If the interrupts are asynchronous, it may be needed to use a separate thread mixing into a temporary */ |
|
|
|
/* audio buffer in order to avoid quality loss caused by large numsamples and elapsed_time values. */ |
|
|
|
|
|
|
|
void gus_mixvoices(GUSEmuState *state, unsigned int playback_freq, unsigned int numsamples, GUSsample *bufferpos); |
|
|
|
void gus_mixvoices(GUSEmuState *state, unsigned int playback_freq, unsigned int numsamples, int16_t *bufferpos); |
|
|
|
/* recommended range: 10 < numsamples < 100 */ |
|
|
|
/* lower values may result in increased rounding error, higher values often cause audible timing delays */ |
|
|
|
|
|
|
|
|