Per-core volume attenuation.
This commit is contained in:
40
menu.cpp
40
menu.cpp
@@ -1323,7 +1323,7 @@ void HandleUI(void)
|
||||
else if (left)
|
||||
{
|
||||
menustate = MENU_8BIT_INFO;
|
||||
menusub = 1;
|
||||
menusub = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -1866,7 +1866,7 @@ void HandleUI(void)
|
||||
else if (left && !page)
|
||||
{
|
||||
menustate = MENU_8BIT_INFO;
|
||||
menusub = 1;
|
||||
menusub = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -2557,7 +2557,7 @@ void HandleUI(void)
|
||||
case MENU_8BIT_INFO:
|
||||
OsdSetSize(16);
|
||||
helptext = 0;
|
||||
menumask = 3;
|
||||
menumask = 7;
|
||||
menustate = MENU_8BIT_INFO2;
|
||||
OsdSetTitle("System", OSD_ARROW_RIGHT);
|
||||
|
||||
@@ -2566,8 +2566,18 @@ void HandleUI(void)
|
||||
|
||||
OsdWrite(3, " Information");
|
||||
|
||||
m = get_core_volume();
|
||||
{
|
||||
strcpy(s, " Core Volume: ");
|
||||
memset(s + strlen(s), 0, 10);
|
||||
char *bar = s + strlen(s);
|
||||
memset(bar, 0x8C, 8);
|
||||
memset(bar, 0x7f, 8 - m);
|
||||
}
|
||||
OsdWrite(12, s, menusub == 0);
|
||||
|
||||
m = get_volume();
|
||||
strcpy(s, " Volume: ");
|
||||
strcpy(s, " Global Volume: ");
|
||||
if (m & 0x10)
|
||||
{
|
||||
strcat(s, "< Mute >");
|
||||
@@ -2576,22 +2586,28 @@ void HandleUI(void)
|
||||
{
|
||||
memset(s+strlen(s), 0, 10);
|
||||
char *bar = s + strlen(s);
|
||||
memset(bar, 0x8C, 8);
|
||||
memset(bar, 0x7f, 8 - m);
|
||||
int vol = get_core_volume();
|
||||
memset(bar, 0x8C, 8 - vol);
|
||||
memset(bar, 0x7f, 8 - vol - m);
|
||||
}
|
||||
OsdWrite(13, s, menusub == 1);
|
||||
|
||||
OsdWrite(13, s, menusub == 0);
|
||||
OsdWrite(15, STD_EXIT, menusub == 1, 0, OSD_ARROW_RIGHT);
|
||||
OsdWrite(15, STD_EXIT, menusub == 2, 0, OSD_ARROW_RIGHT);
|
||||
break;
|
||||
|
||||
case MENU_8BIT_INFO2:
|
||||
printSysInfo();
|
||||
if ((select && menusub == 1) || menu)
|
||||
if ((select && menusub == 2) || menu)
|
||||
{
|
||||
menustate = MENU_NONE1;
|
||||
break;
|
||||
}
|
||||
else if(menusub == 0 && (right || left || select))
|
||||
else if(menusub == 0 && (right || left))
|
||||
{
|
||||
set_core_volume(right ? 1 : -1);
|
||||
menustate = MENU_8BIT_INFO;
|
||||
}
|
||||
else if (menusub == 1 && (right || left || select))
|
||||
{
|
||||
set_volume(right ? 1 : left ? -1 : 0);
|
||||
menustate = MENU_8BIT_INFO;
|
||||
@@ -3055,7 +3071,7 @@ void HandleUI(void)
|
||||
else if (left)
|
||||
{
|
||||
menustate = MENU_8BIT_INFO;
|
||||
menusub = 1;
|
||||
menusub = 2;
|
||||
}
|
||||
else if (select)
|
||||
{
|
||||
@@ -3616,7 +3632,7 @@ void HandleUI(void)
|
||||
else if (left)
|
||||
{
|
||||
menustate = MENU_8BIT_INFO;
|
||||
menusub = 1;
|
||||
menusub = 2;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
50
user_io.cpp
50
user_io.cpp
@@ -39,6 +39,7 @@ static char core_path[1024] = {};
|
||||
static char rbf_path[1024] = {};
|
||||
|
||||
static uint8_t vol_att = 0;
|
||||
static uint8_t corevol_att = 0;
|
||||
unsigned long vol_set_timeout = 0;
|
||||
|
||||
static fileTYPE sd_image[4] = {};
|
||||
@@ -765,9 +766,16 @@ void user_io_init(const char *path, const char *xml)
|
||||
|
||||
video_mode_load();
|
||||
if(strlen(cfg.font)) LoadFont(cfg.font);
|
||||
|
||||
FileLoadConfig("Volume.dat", &vol_att, 1);
|
||||
vol_att &= 0x1F;
|
||||
spi_uio_cmd8(UIO_AUDVOL, vol_att);
|
||||
if (!is_menu())
|
||||
{
|
||||
static char cfg_name[128];
|
||||
sprintf(cfg_name, "%s_volume.cfg", user_io_get_core_name_ex());
|
||||
FileLoadConfig(cfg_name, &corevol_att, 1);
|
||||
}
|
||||
send_volume();
|
||||
|
||||
user_io_send_buttons(1);
|
||||
|
||||
switch (core_type)
|
||||
@@ -2661,6 +2669,10 @@ void user_io_poll()
|
||||
{
|
||||
vol_set_timeout = 0;
|
||||
FileSaveConfig("Volume.dat", &vol_att, 1);
|
||||
|
||||
static char cfg_name[128];
|
||||
sprintf(cfg_name, "%s_volume.cfg", user_io_get_core_name_ex());
|
||||
FileSaveConfig(cfg_name, &corevol_att, 1);
|
||||
}
|
||||
|
||||
if (diskled_is_on && CheckTimer(diskled_timer))
|
||||
@@ -2946,11 +2958,26 @@ void user_io_osd_key_enable(char on)
|
||||
input_switch(-1);
|
||||
}
|
||||
|
||||
void send_volume()
|
||||
{
|
||||
get_volume();
|
||||
get_core_volume();
|
||||
if (!(vol_att & 0x10) && vol_att + corevol_att > 7) vol_att = 7 - corevol_att;
|
||||
spi_uio_cmd8(UIO_AUDVOL, vol_att + corevol_att);
|
||||
}
|
||||
|
||||
int get_volume()
|
||||
{
|
||||
return vol_att & 0x17;
|
||||
}
|
||||
|
||||
int get_core_volume()
|
||||
{
|
||||
corevol_att &= 7;
|
||||
if (corevol_att > 6) corevol_att = 6;
|
||||
return corevol_att;
|
||||
}
|
||||
|
||||
void set_volume(int cmd)
|
||||
{
|
||||
vol_set_timeout = GetTimer(1000);
|
||||
@@ -2961,7 +2988,7 @@ void set_volume(int cmd)
|
||||
else if (cmd < 0 && vol_att < 7) vol_att += 1;
|
||||
else if (cmd > 0 && vol_att > 0) vol_att -= 1;
|
||||
|
||||
spi_uio_cmd8(UIO_AUDVOL, vol_att);
|
||||
send_volume();
|
||||
|
||||
if (vol_att & 0x10)
|
||||
{
|
||||
@@ -2974,12 +3001,25 @@ void set_volume(int cmd)
|
||||
|
||||
sprintf(str, "\x8d ");
|
||||
char *bar = str + strlen(str);
|
||||
memset(bar, 0x8C, 8);
|
||||
memset(bar, 0x7f, 8 - vol_att);
|
||||
|
||||
int vol = get_core_volume();
|
||||
memset(bar, 0x8C, 8 - vol);
|
||||
memset(bar, 0x7f, 8 - vol - vol_att);
|
||||
Info(str, 1000);
|
||||
}
|
||||
}
|
||||
|
||||
void set_core_volume(int cmd)
|
||||
{
|
||||
vol_set_timeout = GetTimer(1000);
|
||||
|
||||
corevol_att &= 7;
|
||||
if (cmd < 0 && corevol_att < 6) corevol_att += 1;
|
||||
if (cmd > 0 && corevol_att > 0) corevol_att -= 1;
|
||||
|
||||
send_volume();
|
||||
}
|
||||
|
||||
void user_io_kbd(uint16_t key, int press)
|
||||
{
|
||||
if(is_menu()) spi_uio_cmd(UIO_KEYBOARD); //ping the Menu core to wakeup
|
||||
|
||||
Reference in New Issue
Block a user