mirror of
https://github.com/simple64/simple64.git
synced 2026-07-11 01:24:00 +02:00
update audio
This commit is contained in:
@@ -17,7 +17,6 @@ static AUDIO_INFO AudioInfo;
|
|||||||
static unsigned char primaryBuffer[0x40000];
|
static unsigned char primaryBuffer[0x40000];
|
||||||
static uint8_t mix_buffer[0x40000];
|
static uint8_t mix_buffer[0x40000];
|
||||||
static int VolIsMuted = 0;
|
static int VolIsMuted = 0;
|
||||||
static unsigned int paused = 0;
|
|
||||||
static int ff = 0;
|
static int ff = 0;
|
||||||
static int VolSDL = SDL_MIX_MAXVOLUME;
|
static int VolSDL = SDL_MIX_MAXVOLUME;
|
||||||
|
|
||||||
@@ -30,7 +29,8 @@ void CloseAudio()
|
|||||||
dev = 0;
|
dev = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(hardware_spec != NULL) free(hardware_spec);
|
if (hardware_spec != NULL)
|
||||||
|
free(hardware_spec);
|
||||||
hardware_spec = NULL;
|
hardware_spec = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -103,30 +103,29 @@ void InitAudio()
|
|||||||
free(desired);
|
free(desired);
|
||||||
hardware_spec = obtained;
|
hardware_spec = obtained;
|
||||||
SDL_PauseAudioDevice(dev, 0);
|
SDL_PauseAudioDevice(dev, 0);
|
||||||
paused = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT void CALL AiDacrateChanged( int SystemType )
|
EXPORT void CALL AiDacrateChanged(int SystemType)
|
||||||
{
|
{
|
||||||
if (!l_PluginInit)
|
if (!l_PluginInit)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
switch (SystemType)
|
switch (SystemType)
|
||||||
{
|
{
|
||||||
case SYSTEM_NTSC:
|
case SYSTEM_NTSC:
|
||||||
GameFreq = 48681812 / (*AudioInfo.AI_DACRATE_REG + 1);
|
GameFreq = 48681812 / (*AudioInfo.AI_DACRATE_REG + 1);
|
||||||
break;
|
break;
|
||||||
case SYSTEM_PAL:
|
case SYSTEM_PAL:
|
||||||
GameFreq = 49656530 / (*AudioInfo.AI_DACRATE_REG + 1);
|
GameFreq = 49656530 / (*AudioInfo.AI_DACRATE_REG + 1);
|
||||||
break;
|
break;
|
||||||
case SYSTEM_MPAL:
|
case SYSTEM_MPAL:
|
||||||
GameFreq = 48628316 / (*AudioInfo.AI_DACRATE_REG + 1);
|
GameFreq = 48628316 / (*AudioInfo.AI_DACRATE_REG + 1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
InitAudio();
|
InitAudio();
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT void CALL AiLenChanged( void )
|
EXPORT void CALL AiLenChanged(void)
|
||||||
{
|
{
|
||||||
if (!l_PluginInit)
|
if (!l_PluginInit)
|
||||||
return;
|
return;
|
||||||
@@ -136,15 +135,15 @@ EXPORT void CALL AiLenChanged( void )
|
|||||||
|
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
for ( i = 0 ; i < LenReg ; i += 4 )
|
for (i = 0; i < LenReg; i += 4)
|
||||||
{
|
{
|
||||||
// Left channel
|
// Left channel
|
||||||
primaryBuffer[ i ] = p[ i + 2 ];
|
primaryBuffer[i] = p[i + 2];
|
||||||
primaryBuffer[ i + 1 ] = p[ i + 3 ];
|
primaryBuffer[i + 1] = p[i + 3];
|
||||||
|
|
||||||
// Right channel
|
// Right channel
|
||||||
primaryBuffer[ i + 2 ] = p[ i ];
|
primaryBuffer[i + 2] = p[i];
|
||||||
primaryBuffer[ i + 3 ] = p[ i + 1 ];
|
primaryBuffer[i + 3] = p[i + 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!VolIsMuted && !ff)
|
if (!VolIsMuted && !ff)
|
||||||
@@ -153,15 +152,11 @@ EXPORT void CALL AiLenChanged( void )
|
|||||||
unsigned int acceptable_latency = (hardware_spec->freq * 0.2) * 4;
|
unsigned int acceptable_latency = (hardware_spec->freq * 0.2) * 4;
|
||||||
unsigned int min_latency = (hardware_spec->freq * 0.02) * 4;
|
unsigned int min_latency = (hardware_spec->freq * 0.02) * 4;
|
||||||
|
|
||||||
if (!paused && audio_queued < min_latency)
|
if (audio_queued < min_latency)
|
||||||
{
|
{
|
||||||
SDL_PauseAudioDevice(dev, 1);
|
unsigned int pause_buffer_length = ((min_latency - audio_queued) * 2) & ~3;
|
||||||
paused = 1;
|
SDL_memset(mix_buffer, 0, pause_buffer_length);
|
||||||
}
|
SDL_QueueAudio(dev, mix_buffer, pause_buffer_length);
|
||||||
else if (paused && audio_queued >= (min_latency * 2))
|
|
||||||
{
|
|
||||||
SDL_PauseAudioDevice(dev, 0);
|
|
||||||
paused = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (audio_queued < acceptable_latency)
|
if (audio_queued < acceptable_latency)
|
||||||
@@ -173,7 +168,7 @@ EXPORT void CALL AiLenChanged( void )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT int CALL InitiateAudio( AUDIO_INFO Audio_Info )
|
EXPORT int CALL InitiateAudio(AUDIO_INFO Audio_Info)
|
||||||
{
|
{
|
||||||
if (!l_PluginInit)
|
if (!l_PluginInit)
|
||||||
return 0;
|
return 0;
|
||||||
@@ -194,7 +189,7 @@ EXPORT int CALL RomOpen(void)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT void CALL RomClosed( void )
|
EXPORT void CALL RomClosed(void)
|
||||||
{
|
{
|
||||||
if (!l_PluginInit)
|
if (!l_PluginInit)
|
||||||
return;
|
return;
|
||||||
@@ -245,7 +240,7 @@ EXPORT void CALL VolumeSetLevel(int level)
|
|||||||
VolSDL = SDL_MIX_MAXVOLUME * level / 100;
|
VolSDL = SDL_MIX_MAXVOLUME * level / 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT const char * CALL VolumeGetString(void)
|
EXPORT const char *CALL VolumeGetString(void)
|
||||||
{
|
{
|
||||||
static char VolumeString[32];
|
static char VolumeString[32];
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user