SDL : Add Gb sound effects support (patch by chrono)
git-svn-id: https://svn.code.sf.net/p/vbam/code/trunk@725 a31d4220-a93d-0410-bf67-fe4944624d44
This commit is contained in:
parent
a159851cc5
commit
9ef0900656
|
@ -46,6 +46,7 @@
|
||||||
#include "../dmg/gb.h"
|
#include "../dmg/gb.h"
|
||||||
#include "../dmg/gbGlobals.h"
|
#include "../dmg/gbGlobals.h"
|
||||||
#include "../dmg/gbCheats.h"
|
#include "../dmg/gbCheats.h"
|
||||||
|
#include "../dmg/gbSound.h"
|
||||||
#include "../Cheats.h"
|
#include "../Cheats.h"
|
||||||
|
|
||||||
#include "debugger.h"
|
#include "debugger.h"
|
||||||
|
@ -239,6 +240,10 @@ int sdlPreparedCheats = 0;
|
||||||
#define MAX_CHEATS 100
|
#define MAX_CHEATS 100
|
||||||
const char * sdlPreparedCheatCodes[MAX_CHEATS];
|
const char * sdlPreparedCheatCodes[MAX_CHEATS];
|
||||||
|
|
||||||
|
#define SDL_SOUND_MAX_VOLUME 2.0
|
||||||
|
#define SDL_SOUND_ECHO 0.2
|
||||||
|
#define SDL_SOUND_STEREO 0.15
|
||||||
|
|
||||||
struct option sdlOptions[] = {
|
struct option sdlOptions[] = {
|
||||||
{ "agb-print", no_argument, &sdlAgbPrint, 1 },
|
{ "agb-print", no_argument, &sdlAgbPrint, 1 },
|
||||||
{ "auto-frameskip", no_argument, &autoFrameSkip, 1 },
|
{ "auto-frameskip", no_argument, &autoFrameSkip, 1 },
|
||||||
|
@ -291,12 +296,11 @@ static void sdlChangeVolume(float d)
|
||||||
float newVolume = oldVolume + d;
|
float newVolume = oldVolume + d;
|
||||||
|
|
||||||
if (newVolume < 0.0) newVolume = 0.0;
|
if (newVolume < 0.0) newVolume = 0.0;
|
||||||
if (newVolume > 2.0) newVolume = 2.0;
|
if (newVolume > SDL_SOUND_MAX_VOLUME) newVolume = SDL_SOUND_MAX_VOLUME;
|
||||||
|
|
||||||
if (fabs(newVolume - oldVolume) > 0.001) {
|
if (fabs(newVolume - oldVolume) > 0.001) {
|
||||||
char tmp[32];
|
char tmp[32];
|
||||||
if (newVolume < oldVolume) sprintf(tmp, "Sound volume decreased (%i%%)", (int)(newVolume*100.0+0.5));
|
sprintf(tmp, "Volume: %i%%", (int)(newVolume*100.0+0.5));
|
||||||
else sprintf(tmp, "Sound volume increased (%i%%)", (int)(newVolume*100.0+0.5));
|
|
||||||
systemScreenMessage(tmp);
|
systemScreenMessage(tmp);
|
||||||
soundSetVolume(newVolume);
|
soundSetVolume(newVolume);
|
||||||
}
|
}
|
||||||
|
@ -361,7 +365,7 @@ u32 sdlFromHex(char *s)
|
||||||
|
|
||||||
u32 sdlFromDec(char *s)
|
u32 sdlFromDec(char *s)
|
||||||
{
|
{
|
||||||
u32 value;
|
u32 value = 0;
|
||||||
sscanf(s, "%u", &value);
|
sscanf(s, "%u", &value);
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
@ -728,14 +732,28 @@ void sdlReadPreferences(FILE *f)
|
||||||
} else if(!strcmp(key, "soundEnable")) {
|
} else if(!strcmp(key, "soundEnable")) {
|
||||||
int res = sdlFromHex(value) & 0x30f;
|
int res = sdlFromHex(value) & 0x30f;
|
||||||
soundSetEnable(res);
|
soundSetEnable(res);
|
||||||
|
} else if(!strcmp(key, "soundStereo")) {
|
||||||
|
if (sdlFromHex(value)) {
|
||||||
|
gb_effects_config.stereo = SDL_SOUND_STEREO;
|
||||||
|
gb_effects_config.enabled = true;
|
||||||
|
}
|
||||||
} else if(!strcmp(key, "soundEcho")) {
|
} else if(!strcmp(key, "soundEcho")) {
|
||||||
/* TODO */
|
if (sdlFromHex(value)) {
|
||||||
/* soundEcho = sdlFromHex(value) ? true : false; */
|
gb_effects_config.echo = SDL_SOUND_ECHO;
|
||||||
|
gb_effects_config.enabled = true;
|
||||||
|
}
|
||||||
|
} else if(!strcmp(key, "soundSurround")) {
|
||||||
|
if (sdlFromHex(value)) {
|
||||||
|
gb_effects_config.surround = true;
|
||||||
|
gb_effects_config.enabled = true;
|
||||||
|
}
|
||||||
|
} else if(!strcmp(key, "declicking")) {
|
||||||
|
gbSoundSetDeclicking(sdlFromHex(value) != 0);
|
||||||
} else if(!strcmp(key, "soundVolume")) {
|
} else if(!strcmp(key, "soundVolume")) {
|
||||||
int volume = sdlFromDec(value);
|
float volume = sdlFromDec(value) / 100.0;
|
||||||
if (volume < 0 || volume > 200)
|
if (volume < 0.0 || volume > SDL_SOUND_MAX_VOLUME)
|
||||||
volume = 100;
|
volume = 1.0;
|
||||||
soundSetVolume((float)(volume / 100.0f ));
|
soundSetVolume(volume);
|
||||||
} else if(!strcmp(key, "saveType")) {
|
} else if(!strcmp(key, "saveType")) {
|
||||||
cpuSaveType = sdlFromHex(value);
|
cpuSaveType = sdlFromHex(value);
|
||||||
if(cpuSaveType < 0 || cpuSaveType > 5)
|
if(cpuSaveType < 0 || cpuSaveType > 5)
|
||||||
|
@ -1428,6 +1446,45 @@ void sdlPollEvents()
|
||||||
case SDLK_KP_MULTIPLY:
|
case SDLK_KP_MULTIPLY:
|
||||||
sdlChangeVolume(0.1);
|
sdlChangeVolume(0.1);
|
||||||
break;
|
break;
|
||||||
|
case SDLK_KP_MINUS:
|
||||||
|
if (gb_effects_config.stereo > 0.0) {
|
||||||
|
gb_effects_config.stereo = 0.0;
|
||||||
|
if (gb_effects_config.echo == 0.0 && !gb_effects_config.surround) {
|
||||||
|
gb_effects_config.enabled = 0;
|
||||||
|
}
|
||||||
|
systemScreenMessage("Stereo off");
|
||||||
|
} else {
|
||||||
|
gb_effects_config.stereo = SDL_SOUND_STEREO;
|
||||||
|
gb_effects_config.enabled = true;
|
||||||
|
systemScreenMessage("Stereo on");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SDLK_KP_PLUS:
|
||||||
|
if (gb_effects_config.echo > 0.0) {
|
||||||
|
gb_effects_config.echo = 0.0;
|
||||||
|
if (gb_effects_config.stereo == 0.0 && !gb_effects_config.surround) {
|
||||||
|
gb_effects_config.enabled = false;
|
||||||
|
}
|
||||||
|
systemScreenMessage("Echo off");
|
||||||
|
} else {
|
||||||
|
gb_effects_config.echo = SDL_SOUND_ECHO;
|
||||||
|
gb_effects_config.enabled = true;
|
||||||
|
systemScreenMessage("Echo on");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SDLK_KP_ENTER:
|
||||||
|
if (gb_effects_config.surround) {
|
||||||
|
gb_effects_config.surround = false;
|
||||||
|
if (gb_effects_config.stereo == 0.0 && gb_effects_config.echo == 0.0) {
|
||||||
|
gb_effects_config.enabled = false;
|
||||||
|
}
|
||||||
|
systemScreenMessage("Surround off");
|
||||||
|
} else {
|
||||||
|
gb_effects_config.surround =true;
|
||||||
|
gb_effects_config.enabled = true;
|
||||||
|
systemScreenMessage("Surround on");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case SDLK_p:
|
case SDLK_p:
|
||||||
if(!(event.key.keysym.mod & MOD_NOCTRL) &&
|
if(!(event.key.keysym.mod & MOD_NOCTRL) &&
|
||||||
|
@ -1800,6 +1857,11 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
parseDebug = true;
|
parseDebug = true;
|
||||||
|
|
||||||
|
gb_effects_config.stereo = 0.0;
|
||||||
|
gb_effects_config.echo = 0.0;
|
||||||
|
gb_effects_config.surround = false;
|
||||||
|
gb_effects_config.enabled = false;
|
||||||
|
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
struct stat s;
|
struct stat s;
|
||||||
|
|
||||||
|
|
|
@ -138,10 +138,22 @@ captureFormat=0
|
||||||
# 1=44 Khz, 2=22Khz, 4=11Khz
|
# 1=44 Khz, 2=22Khz, 4=11Khz
|
||||||
soundQuality=2
|
soundQuality=2
|
||||||
|
|
||||||
# Sound Echo
|
# GB Sound Stereo
|
||||||
|
# 0=false, anything else for true
|
||||||
|
soundStereo=0
|
||||||
|
|
||||||
|
# GB Sound Echo
|
||||||
# 0=false, anything else for true
|
# 0=false, anything else for true
|
||||||
soundEcho=0
|
soundEcho=0
|
||||||
|
|
||||||
|
# GB Sound Surround
|
||||||
|
# 0=false, anything else for true
|
||||||
|
soundSurround=0
|
||||||
|
|
||||||
|
# GB Sound Declicking
|
||||||
|
# 0=false, anything else for true
|
||||||
|
declicking=1
|
||||||
|
|
||||||
# Save Type
|
# Save Type
|
||||||
# 0=automatic, 1=EEPROM, 2=SRAM, 3=Flash, 4=EEPROM+Sensor, 5=NONE
|
# 0=automatic, 1=EEPROM, 2=SRAM, 3=Flash, 4=EEPROM+Sensor, 5=NONE
|
||||||
saveType=0
|
saveType=0
|
||||||
|
|
Loading…
Reference in New Issue