Added gui sound option, removed code of beeper low pass filter

This commit is contained in:
fabio.olimpieri 2014-04-26 05:03:41 +00:00
parent a213400508
commit c1f6c60679
5 changed files with 20 additions and 47 deletions

View File

@ -135,6 +135,7 @@ void computer_init () { //Called only on start-up
for (bucle = 0; bucle < 16; bucle++) for (bucle = 0; bucle < 16; bucle++)
ordenador.ay_registers[bucle] = 0; ordenador.ay_registers[bucle] = 0;
ordenador.ay_emul = 0; ordenador.ay_emul = 0;
ordenador.gui_sound = 1;
ordenador.aych_a = 0; ordenador.aych_a = 0;
ordenador.aych_b = 0; ordenador.aych_b = 0;
ordenador.aych_c = 0; ordenador.aych_c = 0;
@ -176,7 +177,6 @@ void computer_init () { //Called only on start-up
ordenador.npixels=4; ordenador.npixels=4;
ordenador.progressive=0; ordenador.progressive=0;
ordenador.audio_mode=2; //ACB ordenador.audio_mode=2; //ACB
ordenador.low_filter=480;
} }
void computer_set_palete() { void computer_set_palete() {

View File

@ -132,7 +132,6 @@ struct computer {
unsigned char sound_bit; unsigned char sound_bit;
unsigned char sound_bit_mic; unsigned char sound_bit_mic;
unsigned int tstados_counter_sound; unsigned int tstados_counter_sound;
unsigned int low_filter;
unsigned int *current_buffer; unsigned int *current_buffer;
unsigned char num_buff; unsigned char num_buff;
unsigned int sound_cuantity; // counter for the buffer unsigned int sound_cuantity; // counter for the buffer
@ -141,6 +140,7 @@ struct computer {
unsigned char ayval_a,ayval_b,ayval_c,ayval_n; unsigned char ayval_a,ayval_b,ayval_c,ayval_n;
unsigned char ay_emul; // 0: no AY emulation; 1: AY emulation unsigned char ay_emul; // 0: no AY emulation; 1: AY emulation
unsigned char audio_mode; //mono, ABC, ACB, BAC unsigned char audio_mode; //mono, ABC, ACB, BAC
unsigned char gui_sound;
unsigned int vol_a,vol_b,vol_c; unsigned int vol_a,vol_b,vol_c;
unsigned int tst_ay; unsigned int tst_ay;
unsigned int ay_latch; unsigned int ay_latch;

View File

@ -731,6 +731,7 @@ int save_config(struct computer *object, char *filename) {
fprintf(fconfig,"joystick2=%c%c",48+object->joystick[1],10); fprintf(fconfig,"joystick2=%c%c",48+object->joystick[1],10);
fprintf(fconfig,"ay_sound=%c%c",48+object->ay_emul,10); fprintf(fconfig,"ay_sound=%c%c",48+object->ay_emul,10);
fprintf(fconfig,"audio_mode=%c%c",48+object->audio_mode,10); fprintf(fconfig,"audio_mode=%c%c",48+object->audio_mode,10);
fprintf(fconfig,"gui_sound=%c%c",48+object->gui_sound,10);
fprintf(fconfig,"interface1=%c%c",48+object->mdr_active,10); fprintf(fconfig,"interface1=%c%c",48+object->mdr_active,10);
fprintf(fconfig,"doublescan=%c%c",48+object->dblscan,10); fprintf(fconfig,"doublescan=%c%c",48+object->dblscan,10);
fprintf(fconfig,"framerate=%c%c",48+jump_frames,10); fprintf(fconfig,"framerate=%c%c",48+jump_frames,10);
@ -920,7 +921,7 @@ int load_config(struct computer *object, char *filename) {
unsigned char volume=255,mode128k=255,issue=255,ntsc=255, joystick1=255,joystick2=255,ay_emul=255,mdr_active=255, unsigned char volume=255,mode128k=255,issue=255,ntsc=255, joystick1=255,joystick2=255,ay_emul=255,mdr_active=255,
dblscan=255,framerate =255, screen =255, text=255, precision=255, bw=255, tap_fast=255, audio_mode=255, dblscan=255,framerate =255, screen =255, text=255, precision=255, bw=255, tap_fast=255, audio_mode=255,
joypad1=255, joypad2=255, rumble1=255, rumble2=255, joy_n=255, key_n=255, port=255, autoconf=255, turbo=225, vk_auto=255, vk_rumble=255, joypad1=255, joypad2=255, rumble1=255, rumble2=255, joy_n=255, key_n=255, port=255, autoconf=255, turbo=225, vk_auto=255, vk_rumble=255,
rewind_on_reset=255, pause_instant_load =255, ignore_z80_joy_conf=255; rewind_on_reset=255, pause_instant_load =255, ignore_z80_joy_conf=255, gui_sound=255;
if (filename) strcpy(config_path,filename); if (filename) strcpy(config_path,filename);
else return -2; else return -2;
@ -982,6 +983,10 @@ int load_config(struct computer *object, char *filename) {
audio_mode=line[11]-'0'; audio_mode=line[11]-'0';
continue; continue;
} }
if (!strncmp(line,"gui_sound=",10)) {
gui_sound=line[10]-'0';
continue;
}
if (!strncmp(line,"interface1=",11)) { if (!strncmp(line,"interface1=",11)) {
mdr_active=line[11]-'0'; mdr_active=line[11]-'0';
continue; continue;
@ -1095,6 +1100,9 @@ int load_config(struct computer *object, char *filename) {
if (audio_mode<4) { if (audio_mode<4) {
object->audio_mode=audio_mode; object->audio_mode=audio_mode;
} }
if (gui_sound<2) {
object->gui_sound=gui_sound;
}
if (mdr_active<2) { if (mdr_active<2) {
object->mdr_active=mdr_active; object->mdr_active=mdr_active;
} }

View File

@ -119,9 +119,9 @@ static const char *audio_messages[] = {
/*05*/ " ", /*05*/ " ",
/*06*/ "Audio mode", /*06*/ "Audio mode",
/*07*/ "^|mono|ABC|ACB|BAC", /*07*/ "^|mono|ABC|ACB|BAC",
/*08 " ", */ /*08*/ " ",
/*09 "Beeper low pass filter",*/ /*09*/ "Gui sound",
/*10 "^|0|1|2|3|4|5|6|7|max",*/ /*10*/ "^|on|off",
NULL NULL
}; };
@ -695,40 +695,6 @@ static void tape_settings(void)
} }
unsigned int get_value_filter (unsigned int value)
{
switch (value)
{
case 480:
return(0);
case 240:
return(1);
case 160:
return(2);
case 120:
return(3);
case 80:
return(4);
case 60:
return(5);
case 40:
return(6);
case 24:
return(7);
case 10:
return(8);
default:
return(0);
}
}
unsigned int set_value_filter (unsigned int value)
{
unsigned int set[9] = {480,240,160,120,80,60,40,24,10};
beeper=0;
return set[value];
}
static void audio_settings(void) static void audio_settings(void)
{ {
unsigned int submenus[4]; unsigned int submenus[4];
@ -741,8 +707,7 @@ static void audio_settings(void)
submenus[0] = ordenador.volume/2; submenus[0] = ordenador.volume/2;
submenus[1] = !ordenador.ay_emul; submenus[1] = !ordenador.ay_emul;
submenus[2] = ordenador.audio_mode; submenus[2] = ordenador.audio_mode;
submenus[3] = get_value_filter(ordenador.low_filter); submenus[3] = !ordenador.gui_sound;
opt = menu_select_title("Audio settings", opt = menu_select_title("Audio settings",
audio_messages, submenus); audio_messages, submenus);
@ -753,8 +718,7 @@ static void audio_settings(void)
ordenador.volume = submenus[0]*2; ordenador.volume = submenus[0]*2;
ordenador.ay_emul = !submenus[1]; ordenador.ay_emul = !submenus[1];
ordenador.audio_mode = submenus[2]; ordenador.audio_mode = submenus[2];
ordenador.low_filter= set_value_filter(submenus[3]); ordenador.gui_sound = !submenus[3];
} }

View File

@ -1617,17 +1617,18 @@ int menu_is_inited(void)
return is_inited; return is_inited;
} }
//Sound must be reseted before calling this function //Sound must be reseted before calling this function (except for ASND)
void play_click(sound) void play_click(sound)
{ {
if (!ordenador.gui_sound) return;
#ifdef GEKKO
if (sound_type == SOUND_ASND) if (sound_type == SOUND_ASND)
{ {
ASND_SetVoice(2,VOICE_STEREO_16BIT_BE,ordenador.freq,0, click_buffer_pointer[sound],len_click_buffer[sound], ASND_SetVoice(2,VOICE_STEREO_16BIT_BE,ordenador.freq,0, click_buffer_pointer[sound],len_click_buffer[sound],
255, 255, NULL); 255, 255, NULL);
return; return;
} }
#endif
int inc; int inc;
int len_click_buffer_norm = len_click_buffer[sound]/ordenador.increment; int len_click_buffer_norm = len_click_buffer[sound]/ordenador.increment;