2012-05-29 01:27:45 +02:00
/* RetroArch - A frontend for libretro.
* Copyright ( C ) 2010 - 2012 - Hans - Kristian Arntzen
* Copyright ( C ) 2011 - 2012 - Daniel De Matteis
*
* RetroArch 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 .
*
* RetroArch 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 RetroArch .
* If not , see < http : //www.gnu.org/licenses/>.
*/
# include <stdio.h>
# include <stdlib.h>
# include <stddef.h>
# include <string.h>
# include "../general.h"
2012-07-28 15:54:35 +02:00
# include "rarch_console_settings.h"
2012-05-29 01:27:45 +02:00
void rarch_settings_change ( unsigned setting )
{
switch ( setting )
{
2012-05-29 18:03:58 +02:00
case S_ASPECT_RATIO_DECREMENT :
2012-06-05 18:11:42 +02:00
if ( g_console . aspect_ratio_index > 0 )
2012-05-29 18:03:58 +02:00
g_console . aspect_ratio_index - - ;
break ;
2012-06-05 18:11:42 +02:00
case S_ASPECT_RATIO_INCREMENT :
if ( g_console . aspect_ratio_index < LAST_ASPECT_RATIO )
2012-05-29 18:03:58 +02:00
g_console . aspect_ratio_index + + ;
break ;
2012-07-17 01:06:13 +02:00
case S_AUDIO_MUTE :
2012-07-18 20:38:09 -04:00
g_extern . audio_data . mute = ! g_extern . audio_data . mute ;
break ;
case S_AUDIO_CONTROL_RATE_DECREMENT :
if ( g_settings . audio . rate_control_delta > 0.0 )
g_settings . audio . rate_control_delta - = 0.001 ;
if ( g_settings . audio . rate_control_delta = = 0.0 )
g_settings . audio . rate_control = false ;
else
g_settings . audio . rate_control = true ;
break ;
case S_AUDIO_CONTROL_RATE_INCREMENT :
if ( g_settings . audio . rate_control_delta < 0.2 )
g_settings . audio . rate_control_delta + = 0.001 ;
g_settings . audio . rate_control = true ;
2012-07-17 01:06:13 +02:00
break ;
2012-05-29 02:05:23 +02:00
case S_FRAME_ADVANCE :
g_console . frame_advance_enable = true ;
g_console . menu_enable = false ;
g_console . mode_switch = MODE_EMULATION ;
break ;
2012-05-29 01:37:09 +02:00
case S_HW_TEXTURE_FILTER :
g_settings . video . smooth = ! g_settings . video . smooth ;
break ;
case S_HW_TEXTURE_FILTER_2 :
2012-05-29 02:05:23 +02:00
g_settings . video . second_pass_smooth = ! g_settings . video . second_pass_smooth ;
2012-05-29 01:37:09 +02:00
break ;
2012-05-29 01:27:45 +02:00
case S_OVERSCAN_DECREMENT :
g_console . overscan_amount - = 0.01f ;
2012-05-29 02:05:23 +02:00
g_console . overscan_enable = true ;
if ( g_console . overscan_amount = = 0.0f )
2012-05-29 01:27:45 +02:00
g_console . overscan_enable = false ;
break ;
case S_OVERSCAN_INCREMENT :
2012-05-29 02:05:23 +02:00
g_console . overscan_amount + = 0.01f ;
g_console . overscan_enable = true ;
if ( g_console . overscan_amount = = 0.0f )
2012-05-29 01:27:45 +02:00
g_console . overscan_enable = 0 ;
2012-05-29 02:17:35 +02:00
break ;
2012-06-05 18:11:42 +02:00
case S_RESOLUTION_PREVIOUS :
if ( g_console . current_resolution_index )
{
g_console . current_resolution_index - - ;
g_console . current_resolution_id = g_console . supported_resolutions [ g_console . current_resolution_index ] ;
}
break ;
case S_RESOLUTION_NEXT :
2012-07-18 20:38:09 -04:00
if ( g_console . current_resolution_index + 1 < g_console . supported_resolutions_count )
{
2012-06-05 18:11:42 +02:00
g_console . current_resolution_index + + ;
2012-07-18 20:38:09 -04:00
g_console . current_resolution_id = g_console . supported_resolutions [ g_console . current_resolution_index ] ;
}
2012-06-05 18:11:42 +02:00
break ;
2012-05-29 04:16:38 +02:00
case S_QUIT :
g_console . menu_enable = false ;
2012-05-29 04:39:54 +02:00
g_console . ingame_menu_enable = false ;
g_console . mode_switch = MODE_EXIT ;
2012-05-29 04:16:38 +02:00
break ;
2012-05-29 02:32:34 +02:00
case S_RETURN_TO_DASHBOARD :
2012-05-29 02:17:35 +02:00
g_console . menu_enable = false ;
g_console . initialize_rarch_enable = false ;
g_console . mode_switch = MODE_EXIT ;
2012-05-29 01:27:45 +02:00
break ;
2012-05-29 02:32:34 +02:00
case S_RETURN_TO_GAME :
2012-05-29 02:05:23 +02:00
g_console . frame_advance_enable = false ;
//g_console.ingame_menu_item = 0;
g_console . menu_enable = false ;
g_console . mode_switch = MODE_EMULATION ;
break ;
2012-05-29 02:48:13 +02:00
case S_RETURN_TO_LAUNCHER :
g_console . return_to_launcher = true ;
2012-05-29 03:49:19 +02:00
g_console . menu_enable = false ;
g_console . mode_switch = MODE_EXIT ;
2012-05-29 02:48:13 +02:00
break ;
2012-05-29 02:33:06 +02:00
case S_RETURN_TO_MENU :
g_console . menu_enable = false ;
g_console . ingame_menu_item = 0 ;
g_console . mode_switch = MODE_MENU ;
break ;
2012-05-29 22:22:47 +02:00
case S_ROTATION_DECREMENT :
if ( g_console . screen_orientation > 0 )
2012-05-29 01:27:45 +02:00
g_console . screen_orientation - - ;
break ;
2012-05-29 22:22:47 +02:00
case S_ROTATION_INCREMENT :
if ( g_console . screen_orientation < LAST_ORIENTATION )
2012-05-29 01:27:45 +02:00
g_console . screen_orientation + + ;
break ;
2012-05-29 22:22:47 +02:00
case S_START_RARCH :
g_console . menu_enable = false ;
g_console . initialize_rarch_enable = 1 ;
g_console . mode_switch = MODE_EMULATION ;
break ;
2012-05-29 21:29:32 +02:00
case S_REWIND :
g_settings . rewind_enable = ! g_settings . rewind_enable ;
break ;
2012-05-29 01:27:45 +02:00
case S_SAVESTATE_DECREMENT :
2012-05-29 02:05:23 +02:00
if ( g_extern . state_slot ! = 0 )
2012-05-29 01:27:45 +02:00
g_extern . state_slot - - ;
break ;
case S_SAVESTATE_INCREMENT :
2012-05-29 02:05:23 +02:00
g_extern . state_slot + + ;
2012-05-29 01:27:45 +02:00
break ;
case S_SCALE_ENABLED :
2012-05-29 02:05:23 +02:00
g_console . fbo_enabled = ! g_console . fbo_enabled ;
2012-05-29 01:27:45 +02:00
break ;
case S_SCALE_FACTOR_DECREMENT :
2012-05-29 02:05:23 +02:00
g_settings . video . fbo_scale_x - = 1.0f ;
g_settings . video . fbo_scale_y - = 1.0f ;
2012-05-29 01:27:45 +02:00
break ;
case S_SCALE_FACTOR_INCREMENT :
2012-05-29 02:05:23 +02:00
g_settings . video . fbo_scale_x + = 1.0f ;
g_settings . video . fbo_scale_y + = 1.0f ;
2012-05-29 01:27:45 +02:00
break ;
case S_THROTTLE :
2012-08-15 21:00:23 +02:00
if ( ! g_extern . system . force_nonblock )
g_console . throttle_enable = ! g_console . throttle_enable ;
2012-05-29 01:27:45 +02:00
break ;
case S_TRIPLE_BUFFERING :
2012-05-29 02:05:23 +02:00
g_console . triple_buffering_enable = ! g_console . triple_buffering_enable ;
2012-07-18 20:38:09 -04:00
break ;
2012-05-29 01:27:45 +02:00
}
}
void rarch_settings_default ( unsigned setting )
{
switch ( setting )
{
2012-05-29 18:03:58 +02:00
case S_DEF_ASPECT_RATIO :
g_console . aspect_ratio_index = ASPECT_RATIO_4_3 ;
break ;
2012-07-17 01:06:13 +02:00
case S_DEF_AUDIO_MUTE :
2012-07-18 20:38:09 -04:00
g_extern . audio_data . mute = false ;
break ;
case S_DEF_AUDIO_CONTROL_RATE :
# ifdef GEKKO
2012-07-28 14:51:09 +02:00
g_settings . audio . rate_control_delta = 0.006 ;
2012-07-18 20:38:09 -04:00
g_settings . audio . rate_control = true ;
# else
g_settings . audio . rate_control_delta = 0.0 ;
g_settings . audio . rate_control = false ;
# endif
2012-07-17 01:06:13 +02:00
break ;
2012-05-29 01:37:09 +02:00
case S_DEF_HW_TEXTURE_FILTER :
g_settings . video . smooth = 1 ;
break ;
case S_DEF_HW_TEXTURE_FILTER_2 :
2012-05-29 02:05:23 +02:00
g_settings . video . second_pass_smooth = 1 ;
2012-05-29 01:37:09 +02:00
break ;
2012-05-29 01:27:45 +02:00
case S_DEF_OVERSCAN :
g_console . overscan_amount = 0.0f ;
2012-05-29 02:05:23 +02:00
g_console . overscan_enable = false ;
2012-05-29 01:27:45 +02:00
break ;
2012-07-18 20:38:09 -04:00
case S_DEF_ROTATION :
2012-05-29 21:29:32 +02:00
g_console . screen_orientation = ORIENTATION_NORMAL ;
break ;
2012-05-29 01:27:45 +02:00
case S_DEF_THROTTLE :
2012-08-15 21:00:23 +02:00
if ( ! g_extern . system . force_nonblock )
g_console . throttle_enable = true ;
2012-05-29 01:27:45 +02:00
break ;
case S_DEF_TRIPLE_BUFFERING :
2012-05-29 02:05:23 +02:00
g_console . triple_buffering_enable = true ;
2012-05-29 01:27:45 +02:00
break ;
case S_DEF_SAVE_STATE :
2012-05-29 02:05:23 +02:00
g_extern . state_slot = 0 ;
2012-05-29 01:27:45 +02:00
break ;
case S_DEF_SCALE_ENABLED :
2012-05-29 02:05:23 +02:00
g_console . fbo_enabled = true ;
g_settings . video . fbo_scale_x = 2.0f ;
g_settings . video . fbo_scale_y = 2.0f ;
2012-05-29 01:27:45 +02:00
break ;
case S_DEF_SCALE_FACTOR :
2012-05-29 02:05:23 +02:00
g_settings . video . fbo_scale_x = 2.0f ;
g_settings . video . fbo_scale_y = 2.0f ;
2012-05-29 01:27:45 +02:00
break ;
}
}
2012-05-29 16:45:37 +02:00
void rarch_settings_msg ( unsigned setting , unsigned delay )
{
2012-06-28 12:04:40 +02:00
char str [ PATH_MAX ] , tmp [ PATH_MAX ] ;
2012-05-29 16:45:37 +02:00
msg_queue_clear ( g_extern . msg_queue ) ;
2012-06-28 12:04:40 +02:00
( void ) tmp ;
2012-05-29 16:45:37 +02:00
switch ( setting )
{
case S_MSG_CACHE_PARTITION :
snprintf ( str , sizeof ( str ) , " INFO - All the contents of the ZIP files you have selected in the filebrowser \n are extracted to this partition. " ) ;
break ;
2012-05-29 18:03:58 +02:00
case S_MSG_CHANGE_CONTROLS :
2012-05-29 16:45:37 +02:00
snprintf ( str , sizeof ( str ) , " INFO - Press LEFT/RIGHT to change the controls, and press \n [RetroPad Start] to reset a button to default values. " ) ;
2012-05-29 18:03:58 +02:00
break ;
case S_MSG_EXTRACTED_ZIPFILE :
2012-07-26 13:08:08 +02:00
switch ( g_console . zip_extract_mode )
{
case ZIP_EXTRACT_TO_CURRENT_DIR :
snprintf ( str , sizeof ( str ) , " INFO - ZIP file successfully extracted to current directory. " ) ;
break ;
2012-07-27 14:31:16 +02:00
case ZIP_EXTRACT_TO_CURRENT_DIR_AND_LOAD_FIRST_FILE :
snprintf ( str , sizeof ( str ) , " INFO - ZIP file successfully extracted, now loading first file. " ) ;
break ;
2012-07-26 13:08:08 +02:00
# ifdef HAVE_HDD_CACHE_PARTITION
case ZIP_EXTRACT_TO_CACHE_DIR :
2012-07-30 00:26:37 +02:00
snprintf ( str , sizeof ( str ) , " INFO - ZIP file successfully extracted to cache partition. " ) ;
2012-07-26 13:08:08 +02:00
break ;
# endif
}
2012-05-29 16:45:37 +02:00
break ;
2012-06-28 12:04:40 +02:00
case S_MSG_LOADING_ROM :
fill_pathname_base ( tmp , g_console . rom_path , sizeof ( tmp ) ) ;
2012-06-28 21:13:45 -04:00
snprintf ( str , sizeof ( str ) , " INFO - Loading %s... " , tmp ) ;
2012-06-28 12:04:40 +02:00
break ;
2012-08-01 17:22:10 +02:00
case S_MSG_DIR_LOADING_ERROR :
snprintf ( str , sizeof ( str ) , " ERROR - Failed to open selected directory. " ) ;
break ;
2012-06-28 18:10:04 +02:00
case S_MSG_ROM_LOADING_ERROR :
snprintf ( str , sizeof ( str ) , " ERROR - An error occurred during ROM loading. " ) ;
break ;
2012-05-29 16:45:37 +02:00
case S_MSG_NOT_IMPLEMENTED :
snprintf ( str , sizeof ( str ) , " TODO - Not yet implemented. " ) ;
break ;
2012-07-18 20:38:09 -04:00
case S_MSG_RESIZE_SCREEN :
2012-05-29 16:45:37 +02:00
snprintf ( str , sizeof ( str ) , " INFO - Resize the screen by moving around the two analog sticks. \n Press [RetroPad X] to reset to default values, and [RetroPad A] to go back. \n To select the resized screen mode, set Aspect Ratio to: 'Custom'. " ) ;
break ;
2012-07-18 20:38:09 -04:00
case S_MSG_RESTART_RARCH :
2012-08-04 05:10:49 +02:00
snprintf ( str , sizeof ( str ) , " INFO - You need to restart RetroArch. " ) ;
2012-05-29 16:45:37 +02:00
break ;
2012-07-18 20:38:09 -04:00
case S_MSG_SELECT_LIBRETRO_CORE :
2012-08-04 05:10:49 +02:00
snprintf ( str , sizeof ( str ) , " INFO - Select a Libretro core from the menu. " ) ;
2012-05-29 16:45:37 +02:00
break ;
2012-07-18 20:38:09 -04:00
case S_MSG_SELECT_SHADER :
2012-08-04 05:10:49 +02:00
snprintf ( str , sizeof ( str ) , " INFO - Select a shader from the menu. " ) ;
2012-05-29 16:45:37 +02:00
break ;
2012-07-18 20:38:09 -04:00
case S_MSG_SHADER_LOADING_SUCCEEDED :
2012-05-29 16:45:37 +02:00
snprintf ( str , sizeof ( str ) , " INFO - Shader successfully loaded. " ) ;
break ;
}
msg_queue_push ( g_extern . msg_queue , str , 1 , delay ) ;
2012-05-29 19:51:35 +02:00
}
2012-06-23 22:55:46 +02:00
void rarch_settings_create_menu_item_label_w ( wchar_t * strwbuf , unsigned setting , size_t size )
2012-05-29 19:51:35 +02:00
{
char str [ PATH_MAX ] ;
2012-06-23 22:55:46 +02:00
rarch_settings_create_menu_item_label ( str , setting , sizeof ( str ) ) ;
2012-07-28 22:36:49 +02:00
convert_char_to_wchar ( strwbuf , str , size ) ;
2012-06-23 22:55:46 +02:00
}
void rarch_settings_create_menu_item_label ( char * str , unsigned setting , size_t size )
{
2012-05-29 19:51:35 +02:00
switch ( setting )
{
case S_LBL_ASPECT_RATIO :
2012-06-24 22:54:43 +02:00
snprintf ( str , size , " Aspect Ratio: %s " , aspectratio_lut [ g_console . aspect_ratio_index ] . name ) ;
2012-05-29 19:51:35 +02:00
break ;
2012-07-18 20:38:09 -04:00
case S_LBL_SHADER :
2012-06-24 22:54:43 +02:00
snprintf ( str , size , " Shader #1: %s " , g_settings . video . cg_shader_path ) ;
2012-05-29 20:34:06 +02:00
break ;
2012-07-18 20:38:09 -04:00
case S_LBL_SHADER_2 :
2012-06-24 22:54:43 +02:00
snprintf ( str , size , " Shader #2: %s " , g_settings . video . second_pass_shader ) ;
2012-05-29 21:47:53 +02:00
break ;
2012-07-18 20:38:09 -04:00
case S_LBL_RARCH_VERSION :
2012-06-24 22:54:43 +02:00
snprintf ( str , size , " RetroArch %s " , PACKAGE_VERSION ) ;
2012-05-29 20:34:06 +02:00
break ;
2012-07-18 20:38:09 -04:00
case S_LBL_SCALE_FACTOR :
2012-06-24 22:54:43 +02:00
snprintf ( str , size , " Scale Factor: %f (X) / %f (Y) " , g_settings . video . fbo_scale_x , g_settings . video . fbo_scale_y ) ;
2012-05-29 20:34:06 +02:00
break ;
2012-07-18 20:38:09 -04:00
case S_LBL_ROTATION :
2012-06-24 22:54:43 +02:00
snprintf ( str , size , " Rotation: %s " , rotation_lut [ g_console . screen_orientation ] ) ;
2012-05-29 21:29:32 +02:00
break ;
2012-07-18 20:38:09 -04:00
case S_LBL_LOAD_STATE_SLOT :
2012-06-24 22:54:43 +02:00
snprintf ( str , size , " Load State #%d " , g_extern . state_slot ) ;
2012-05-29 21:40:45 +02:00
break ;
2012-07-18 20:38:09 -04:00
case S_LBL_SAVE_STATE_SLOT :
snprintf ( str , size , " Save State #%d " , g_extern . state_slot ) ;
2012-05-29 22:12:28 +02:00
break ;
2012-05-29 19:51:35 +02:00
}
2012-05-29 22:12:28 +02:00
}
2012-07-24 09:57:34 +02:00
2012-08-08 22:39:19 +02:00
# if defined(_XBOX360)
# define DEFAULT_GAMMA 1
2012-08-09 06:29:33 +02:00
# else
2012-08-08 22:39:19 +02:00
# define DEFAULT_GAMMA 0
# endif
2012-07-25 21:02:01 +02:00
void rarch_settings_set_default ( const input_driver_t * input )
2012-07-24 09:57:34 +02:00
{
// g_settings
g_settings . rewind_enable = false ;
2012-08-04 07:26:50 +02:00
# ifdef HAVE_XML
2012-07-24 09:57:34 +02:00
strlcpy ( g_settings . cheat_database , default_paths . port_dir , sizeof ( g_settings . cheat_database ) ) ;
2012-08-04 07:26:50 +02:00
# endif
2012-07-24 09:57:34 +02:00
# if defined(HAVE_CG) || defined(HAVE_HLSL) || defined(HAVE_GLSL)
strlcpy ( g_settings . video . cg_shader_path , default_paths . shader_file , sizeof ( g_settings . video . cg_shader_path ) ) ;
strlcpy ( g_settings . video . second_pass_shader , default_paths . shader_file , sizeof ( g_settings . video . second_pass_shader ) ) ;
g_settings . video . second_pass_smooth = true ;
# endif
# ifdef HAVE_FBO
g_settings . video . fbo_scale_x = 2.0f ;
g_settings . video . fbo_scale_y = 2.0f ;
# endif
2012-08-06 21:44:25 +02:00
# ifdef GEKKO
g_settings . audio . rate_control_delta = 0.006 ;
g_settings . audio . rate_control = true ;
# endif
2012-07-24 09:57:34 +02:00
g_settings . video . render_to_texture = true ;
g_settings . video . smooth = true ;
g_settings . video . vsync = true ;
2012-08-15 19:59:22 +02:00
g_settings . video . refresh_rate = 59.92 ;
2012-07-24 09:57:34 +02:00
strlcpy ( g_settings . system_directory , default_paths . system_dir , sizeof ( g_settings . system_directory ) ) ;
g_settings . video . msg_pos_x = 0.05f ;
g_settings . video . msg_pos_y = 0.90f ;
g_settings . video . aspect_ratio = - 1.0f ;
2012-07-25 21:02:01 +02:00
rarch_input_set_controls_default ( input ) ;
2012-07-24 09:57:34 +02:00
// g_console
g_console . block_config_read = true ;
g_console . frame_advance_enable = false ;
g_console . emulator_initialized = 0 ;
g_console . screenshots_enable = true ;
g_console . throttle_enable = true ;
g_console . initialize_rarch_enable = false ;
g_console . triple_buffering_enable = true ;
g_console . default_savestate_dir_enable = false ;
g_console . default_sram_dir_enable = false ;
# ifdef HAVE_FBO
g_console . fbo_enabled = true ;
# else
g_console . fbo_enabled = false ;
# endif
g_console . mode_switch = MODE_MENU ;
g_console . screen_orientation = ORIENTATION_NORMAL ;
g_console . current_resolution_id = 0 ;
2012-07-30 00:26:37 +02:00
strlcpy ( g_console . default_rom_startup_dir , default_paths . filebrowser_startup_dir , sizeof ( g_console . default_rom_startup_dir ) ) ;
2012-07-24 09:57:34 +02:00
strlcpy ( g_console . default_savestate_dir , default_paths . savestate_dir , sizeof ( g_console . default_savestate_dir ) ) ;
strlcpy ( g_console . default_sram_dir , default_paths . sram_dir , sizeof ( g_console . default_sram_dir ) ) ;
g_console . aspect_ratio_index = 0 ;
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 . viewports . custom_vp . width = 0 ;
g_console . viewports . custom_vp . height = 0 ;
g_console . viewports . custom_vp . x = 0 ;
g_console . viewports . custom_vp . y = 0 ;
g_console . custom_bgm_enable = true ;
g_console . info_msg_enable = true ;
# ifdef _XBOX360
g_console . color_format = 0 ;
2012-08-08 19:55:38 +02:00
# endif
2012-08-08 22:39:19 +02:00
g_console . gamma_correction = DEFAULT_GAMMA ;
2012-08-07 18:33:16 +02:00
# ifdef _XBOX1
g_console . flicker_filter = 1 ;
# endif
2012-08-08 22:39:19 +02:00
g_console . soft_display_filter_enable = true ;
2012-07-26 13:08:08 +02:00
# ifdef HAVE_ZLIB
g_console . zip_extract_mode = 0 ;
# endif
2012-07-24 09:57:34 +02:00
// g_extern
g_extern . state_slot = 0 ;
g_extern . audio_data . mute = 0 ;
g_extern . verbose = true ;
}