mirror of
https://github.com/CTCaer/RetroArch.git
synced 2024-12-15 23:06:40 +00:00
(PS3) Sound options added - reiniting sound has yet to happen
This commit is contained in:
parent
ae5900aaa1
commit
db87f664b8
@ -1,3 +1,21 @@
|
||||
/* SSNES - A Super Ninteno Entertainment System (SNES) Emulator frontend for libsnes.
|
||||
* Copyright (C) 2010-2012 - Hans-Kristian Arntzen
|
||||
* Copyright (C) 2011-2012 - Daniel De Matteis
|
||||
*
|
||||
* Some code herein may be based on code found in BSNES.
|
||||
*
|
||||
* SSNES is free software: you can redistribute it and/or modify it under the terms
|
||||
* of the GNU General Public License as published by the Free Software Found-
|
||||
* ation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* SSNES is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with SSNES.
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* RSound - A PCM audio client/server
|
||||
* Copyright (C) 2010 - Hans-Kristian Arntzen
|
||||
*
|
||||
@ -78,7 +96,7 @@ enum rsd_conn_type
|
||||
static inline int rsnd_is_little_endian(void);
|
||||
static inline void rsnd_swap_endian_16(uint16_t * x);
|
||||
static inline void rsnd_swap_endian_32(uint32_t * x);
|
||||
static inline int rsnd_format_to_samplesize(enum rsd_format fmt);
|
||||
static inline int rsnd_format_to_samplesize(uint16_t fmt);
|
||||
static int rsnd_connect_server(rsound_t *rd);
|
||||
static int rsnd_send_header_info(rsound_t *rd);
|
||||
static int rsnd_get_backend_info(rsound_t *rd);
|
||||
@ -137,7 +155,7 @@ static inline void rsnd_swap_endian_32 ( uint32_t * x )
|
||||
(*x << 24);
|
||||
}
|
||||
|
||||
static inline int rsnd_format_to_samplesize ( enum rsd_format fmt )
|
||||
static inline int rsnd_format_to_samplesize ( uint16_t fmt )
|
||||
{
|
||||
switch(fmt)
|
||||
{
|
||||
@ -178,6 +196,7 @@ int rsd_samplesize( rsound_t *rd )
|
||||
static int rsnd_connect_server( rsound_t *rd )
|
||||
{
|
||||
struct sockaddr_in addr;
|
||||
struct pollfd fd;
|
||||
int i = 1;
|
||||
|
||||
memset(&addr, 0, sizeof(addr));
|
||||
@ -214,10 +233,8 @@ static int rsnd_connect_server( rsound_t *rd )
|
||||
/* Nonblocking connect with 3 second timeout */
|
||||
connect(rd->conn.socket, (struct sockaddr*)&addr, sizeof(addr));
|
||||
|
||||
struct pollfd fd = {
|
||||
.fd = rd->conn.socket,
|
||||
.events = POLLOUT
|
||||
};
|
||||
fd.fd = rd->conn.socket;
|
||||
fd.events = POLLOUT;
|
||||
|
||||
rsnd_poll(&fd, 1, 3000);
|
||||
if (!(fd.revents & POLLOUT))
|
||||
|
@ -189,6 +189,10 @@ struct console_settings
|
||||
bool triple_buffering_enable;
|
||||
float overscan_amount;
|
||||
uint32_t aspect_ratio_index;
|
||||
uint32_t custom_viewport_width;
|
||||
uint32_t custom_viewport_height;
|
||||
uint32_t custom_viewport_x;
|
||||
uint32_t custom_viewport_y;
|
||||
uint32_t emulator_initialized;
|
||||
uint32_t external_launcher_support;
|
||||
uint32_t screen_orientation;
|
||||
@ -197,6 +201,7 @@ struct console_settings
|
||||
uint32_t ingame_menu_item;
|
||||
uint32_t initial_resolution_id;
|
||||
uint32_t mode_switch;
|
||||
uint32_t sound_mode;
|
||||
uint32_t *supported_resolutions;
|
||||
uint32_t supported_resolutions_count;
|
||||
uint32_t control_timer_expiration_frame_count;
|
||||
@ -207,6 +212,7 @@ struct console_settings
|
||||
char cgp_path[PATH_MAX];
|
||||
char input_cfg_path[PATH_MAX];
|
||||
char rom_path[PATH_MAX];
|
||||
char rsound_ip_address[PATH_MAX];
|
||||
char aspect_ratio_name[PATH_MAX];
|
||||
char default_rom_startup_dir[PATH_MAX];
|
||||
char default_savestate_dir[PATH_MAX];
|
||||
|
16
ps3/main.c
16
ps3/main.c
@ -160,6 +160,11 @@ static void set_default_settings(void)
|
||||
g_console.menu_font_size = 1.0f;
|
||||
g_console.overscan_enable = false;
|
||||
g_console.overscan_amount = 0.0f;
|
||||
g_console.sound_mode = SOUND_MODE_NORMAL;
|
||||
g_console.custom_viewport_width = 0;
|
||||
g_console.custom_viewport_height = 0;
|
||||
g_console.custom_viewport_x = 0;
|
||||
g_console.custom_viewport_y = 0;
|
||||
|
||||
// g_extern
|
||||
g_extern.state_slot = 0;
|
||||
@ -234,7 +239,12 @@ static void init_settings(bool load_libsnes_path)
|
||||
CONFIG_GET_BOOL_CONSOLE(triple_buffering_enable, "triple_buffering_enable");
|
||||
CONFIG_GET_INT_CONSOLE(aspect_ratio_index, "aspect_ratio_index");
|
||||
CONFIG_GET_INT_CONSOLE(current_resolution_id, "current_resolution_id");
|
||||
CONFIG_GET_INT_CONSOLE(custom_viewport_x, "custom_viewport_x");
|
||||
CONFIG_GET_INT_CONSOLE(custom_viewport_y, "custom_viewport_y");
|
||||
CONFIG_GET_INT_CONSOLE(custom_viewport_width, "custom_viewport_width");
|
||||
CONFIG_GET_INT_CONSOLE(custom_viewport_height, "custom_viewport_height");
|
||||
CONFIG_GET_INT_CONSOLE(screen_orientation, "screen_orientation");
|
||||
CONFIG_GET_INT_CONSOLE(sound_mode, "sound_mode");
|
||||
CONFIG_GET_STRING_CONSOLE(aspect_ratio_name, "aspect_ratio_name");
|
||||
CONFIG_GET_STRING_CONSOLE(default_rom_startup_dir, "default_rom_startup_dir");
|
||||
CONFIG_GET_FLOAT_CONSOLE(menu_font_size, "menu_font_size");
|
||||
@ -282,8 +292,13 @@ static void save_settings(void)
|
||||
config_set_bool(conf, "screenshots_enable", g_console.screenshots_enable);
|
||||
config_set_bool(conf, "throttle_enable", g_console.throttle_enable);
|
||||
config_set_bool(conf, "triple_buffering_enable", g_console.triple_buffering_enable);
|
||||
config_set_int(conf, "sound_mode", g_console.sound_mode);
|
||||
config_set_int(conf, "aspect_ratio_index", g_console.aspect_ratio_index);
|
||||
config_set_int(conf, "current_resolution_id", g_console.current_resolution_id);
|
||||
config_set_int(conf, "custom_viewport_width", g_console.custom_viewport_width);
|
||||
config_set_int(conf, "custom_viewport_height", g_console.custom_viewport_height);
|
||||
config_set_int(conf, "custom_viewport_x", g_console.custom_viewport_x);
|
||||
config_set_int(conf, "custom_viewport_y", g_console.custom_viewport_y);
|
||||
config_set_int(conf, "screen_orientation", g_console.screen_orientation);
|
||||
config_set_string(conf, "aspect_ratio_name", g_console.aspect_ratio_name);
|
||||
config_set_string(conf, "default_rom_startup_dir", g_console.default_rom_startup_dir);
|
||||
@ -643,7 +658,6 @@ begin_shutdown:
|
||||
{
|
||||
SSNES_LOG("SELF file is not of NPDRM type, trying another approach to boot it...\n");
|
||||
sys_game_process_exitspawn(g_console.launch_app_on_exit, NULL, NULL, NULL, 0, 1000, SYS_PROCESS_PRIMARY_STACK_SIZE_1M);
|
||||
|
||||
}
|
||||
sceNpTerm();
|
||||
cellSysmoduleUnloadModule(CELL_SYSMODULE_SYSUTIL_NP);
|
||||
|
58
ps3/menu.c
58
ps3/menu.c
@ -564,6 +564,21 @@ static void set_setting_label(menu * menu_obj, uint64_t currentsetting)
|
||||
case SETTING_DEFAULT_VIDEO_ALL:
|
||||
break;
|
||||
case SETTING_SOUND_MODE:
|
||||
switch(g_console.sound_mode)
|
||||
{
|
||||
case SOUND_MODE_NORMAL:
|
||||
snprintf(menu_obj->items[currentsetting].comment, sizeof(menu_obj->items[currentsetting].comment), "INFO - [Sound Output] is set to 'Normal' - normal audio output will be\nused.");
|
||||
snprintf(menu_obj->items[currentsetting].setting_text, sizeof(menu_obj->items[currentsetting].setting_text), "Normal");
|
||||
break;
|
||||
case SOUND_MODE_RSOUND:
|
||||
snprintf(menu_obj->items[currentsetting].comment, sizeof(menu_obj->items[currentsetting].comment), "INFO - [Sound Output] is set to 'RSound' - the sound will be streamed over the\n network to the RSound audio server." );
|
||||
snprintf(menu_obj->items[currentsetting].setting_text, sizeof(menu_obj->items[currentsetting].setting_text), "RSound");
|
||||
break;
|
||||
case SOUND_MODE_HEADSET:
|
||||
snprintf(menu_obj->items[currentsetting].comment, sizeof(menu_obj->items[currentsetting].comment), "INFO - [Sound Output] is set to 'USB/Bluetooth Headset' - sound will\n be output through the headset");
|
||||
snprintf(menu_obj->items[currentsetting].setting_text, sizeof(menu_obj->items[currentsetting].setting_text), "USB/Bluetooth Headset");
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case SETTING_RSOUND_SERVER_IP_ADDRESS:
|
||||
break;
|
||||
@ -1504,8 +1519,51 @@ static void producesettingentry(menu * menu_obj, uint64_t switchvalue)
|
||||
case SETTING_DEFAULT_VIDEO_ALL:
|
||||
break;
|
||||
case SETTING_SOUND_MODE:
|
||||
if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state))
|
||||
{
|
||||
if(g_console.sound_mode != SOUND_MODE_NORMAL)
|
||||
{
|
||||
g_console.sound_mode--;
|
||||
//emulator_toggle_sound(g_console.sound_mode);
|
||||
set_delay = DELAY_MEDIUM;
|
||||
}
|
||||
}
|
||||
if(CTRL_RIGHT(state) || CTRL_LSTICK_RIGHT(state) || CTRL_CROSS(state))
|
||||
{
|
||||
if(g_console.sound_mode < SOUND_MODE_HEADSET)
|
||||
{
|
||||
g_console.sound_mode++;
|
||||
//emulator_toggle_sound(g_console.sound_mode);
|
||||
set_delay = DELAY_MEDIUM;
|
||||
}
|
||||
}
|
||||
if(CTRL_START(state))
|
||||
{
|
||||
g_console.sound_mode = SOUND_MODE_NORMAL;
|
||||
//emulator_toggle_sound(g_console.sound_mode);
|
||||
set_delay = DELAY_MEDIUM;
|
||||
}
|
||||
break;
|
||||
case SETTING_RSOUND_SERVER_IP_ADDRESS:
|
||||
if(CTRL_LEFT(state) || CTRL_LSTICK_LEFT(state) || CTRL_RIGHT(state) || CTRL_CROSS(state) | CTRL_LSTICK_RIGHT(state) )
|
||||
{
|
||||
oskutil_write_initial_message(&g_console.oskutil_handle, L"192.168.1.1");
|
||||
oskutil_write_message(&g_console.oskutil_handle, L"Enter IP address for the RSound Server.");
|
||||
oskutil_start(&g_console.oskutil_handle);
|
||||
while(OSK_IS_RUNNING(g_console.oskutil_handle))
|
||||
{
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
ps3graphics_draw_menu();
|
||||
video_gl.swap(NULL);
|
||||
cell_console_poll();
|
||||
cellSysutilCheckCallback();
|
||||
}
|
||||
|
||||
if(g_console.oskutil_handle.text_can_be_fetched)
|
||||
strcpy(g_console.rsound_ip_address, OUTPUT_TEXT_STRING(g_console.oskutil_handle));
|
||||
}
|
||||
if(CTRL_START(state))
|
||||
strcpy(g_console.rsound_ip_address, "0.0.0.0");
|
||||
break;
|
||||
case SETTING_DEFAULT_AUDIO_ALL:
|
||||
break;
|
||||
|
@ -18,6 +18,7 @@
|
||||
|
||||
#include "../driver.h"
|
||||
#include "../general.h"
|
||||
#include "shared.h"
|
||||
#include <stdlib.h>
|
||||
#include <cell/audio.h>
|
||||
#include <sys/timer.h>
|
||||
@ -90,7 +91,10 @@ static void *ps3_audio_init(const char *device, unsigned rate, unsigned latency)
|
||||
cellAudioInit();
|
||||
params.nChannel = AUDIO_CHANNELS;
|
||||
params.nBlock = AUDIO_BLOCKS;
|
||||
params.attr = 0;
|
||||
if(g_console.sound_mode == SOUND_MODE_HEADSET)
|
||||
params.attr = CELL_AUDIO_PORTATTR_OUT_SECONDARY;
|
||||
else
|
||||
params.attr = 0;
|
||||
|
||||
if (cellAudioPortOpen(¶ms, &data->audio_port) != CELL_OK)
|
||||
{
|
||||
|
@ -1284,6 +1284,11 @@ void ps3graphics_video_init(bool get_all_resolutions)
|
||||
|
||||
gl_t * gl = g_gl;
|
||||
|
||||
gl->custom_viewport_width = g_console.custom_viewport_width;
|
||||
gl->custom_viewport_height = g_console.custom_viewport_height;
|
||||
gl->custom_viewport_x = g_console.custom_viewport_x;
|
||||
gl->custom_viewport_y = g_console.custom_viewport_y;
|
||||
|
||||
gl->overscan_enable = g_console.overscan_enable;
|
||||
gl->overscan_amount = g_console.overscan_amount;
|
||||
|
||||
|
@ -59,6 +59,12 @@ enum {
|
||||
INPUT_PRESET_FILE
|
||||
};
|
||||
|
||||
enum {
|
||||
SOUND_MODE_NORMAL,
|
||||
SOUND_MODE_RSOUND,
|
||||
SOUND_MODE_HEADSET
|
||||
};
|
||||
|
||||
enum {
|
||||
MENU_ITEM_LOAD_STATE = 0,
|
||||
MENU_ITEM_SAVE_STATE,
|
||||
|
Loading…
Reference in New Issue
Block a user