#define FILE_LIST_ROWS 25
#define FILE_LIST_POSITION 5
-#define DIR_LIST_POSITION 360
+#define DIR_LIST_POSITION (resolution_width * 3 / 4)
#endif
clock_speed = (clock_speed_number + 1) * 33
#define get_clock_speed_number() \
clock_speed_number = (clock_speed / 33) - 1
-#elif defined(WIZ_BUILD)
+#elif defined(POLLUX_BUILD)
static const char *clock_speed_options[] =
{
"300MHz", "333MHz", "366MHz", "400MHz", "433MHz",
#ifdef GP2X_BUILD
u32 gamepad_config_line_to_button[] =
- { 0, 2, 1, 3, 8, 9, 10, 11, 6, 7, 4, 5, 14 };
+ { 0, 2, 1, 3, 8, 9, 10, 11, 6, 7, 4, 5, 14, 15 };
#endif
#elif defined(WIZ_BUILD)
"unscaled 3:2", "scaled 3:2 (slower)",
"unscaled 3:2 (anti-tear)", "scaled 3:2 (anti-tear)"
+#elif defined(POLLUX_BUILD)
+ "unscaled 3:2", "scaled 3:2 (slower)"
#elif defined(PND_BUILD)
"unscaled", "2x", "3x", "fullscreen"
#elif defined(GP2X_BUILD)
#endif
};
+const char *filter2_options[] =
+{
+ "none", "scale2x", "scale3x", "eagle2x"
+};
+
+#ifndef PSP_BUILD
+static const char *audio_buffer_options[] =
+{
+ "16 bytes", "32 bytes", "64 bytes",
+ "128 bytes", "256 bytes", "512 bytes", "1024 bytes", "2048 bytes",
+ "4096 bytes", "8192 bytes", "16284 bytes"
+};
+#else
+const char *audio_buffer_options[] =
+{
+ "3072 bytes", "4096 bytes", "5120 bytes", "6144 bytes", "7168 bytes",
+ "8192 bytes", "9216 bytes", "10240 bytes", "11264 bytes", "12288 bytes"
+};
+#endif
+
+
s32 load_game_config_file()
{
char game_config_filename[512];
u32 file_loaded = 0;
u32 i;
- change_ext(gamepak_filename, game_config_filename, ".cfg");
+ make_rpath(game_config_filename, sizeof(game_config_filename), ".cfg");
file_open(game_config_file, game_config_filename, read);
random_skip = file_options[2] % 2;
clock_speed = file_options[3];
-#ifdef WIZ_BUILD
+#ifdef POLLUX_BUILD
if(clock_speed > 900)
clock_speed = 533;
#elif defined(GP2X_BUILD)
for(i = 0; i < 10; i++)
{
- cheats[i].cheat_active = file_options[3 + i] % 2;
+ cheats[i].cheat_active = file_options[4 + i] % 2;
cheats[i].cheat_name[0] = 0;
}
current_frameskip_type = auto_frameskip;
frameskip_value = 4;
-#ifdef WIZ_BUILD
+#ifdef POLLUX_BUILD
frameskip_value = 1;
#endif
random_skip = 0;
return -1;
}
+enum file_options {
+ fo_screen_scale = 0,
+ fo_screen_filter,
+ fo_global_enable_audio,
+ fo_audio_buffer_size,
+ fo_update_backup_flag,
+ fo_global_enable_analog,
+ fo_analog_sensitivity_level,
+ fo_screen_filter2,
+ fo_main_option_count,
+};
+
+#ifdef PC_BUILD
+#define PLAT_BUTTON_COUNT 0
+#endif
+#define FILE_OPTION_COUNT (fo_main_option_count + PLAT_BUTTON_COUNT)
+
s32 load_config_file()
{
char config_path[512];
- #if defined(_WIN32) || defined(_WIN32_WCE)
- sprintf(config_path, "%s\\%s", main_path, GPSP_CONFIG_FILENAME);
- #else
- sprintf(config_path, "%s/%s", main_path, GPSP_CONFIG_FILENAME);
- #endif
+ sprintf(config_path, "%s" PATH_SEPARATOR "%s", main_path, GPSP_CONFIG_FILENAME);
file_open(config_file, config_path, read);
u32 file_size = file_length(config_path, config_file);
// Sanity check: File size must be the right size
- if(file_size == 92)
+ if(file_size == FILE_OPTION_COUNT * 4)
{
u32 file_options[file_size / 4];
file_read_array(config_file, file_options);
- screen_scale = file_options[0] %
+ screen_scale = file_options[fo_screen_scale] %
(sizeof(scale_options) / sizeof(scale_options[0]));
- screen_filter = file_options[1] % 2;
- global_enable_audio = file_options[2] % 2;
+ screen_filter = file_options[fo_screen_filter] % 2;
+ global_enable_audio = file_options[fo_global_enable_audio] % 2;
+ screen_filter2 = file_options[fo_screen_filter2] %
+ (sizeof(filter2_options) / sizeof(filter2_options[0]));
-#ifdef PSP_BUILD
- audio_buffer_size_number = file_options[3] % 10;
-#else
- audio_buffer_size_number = file_options[3] % 11;
-#endif
+ audio_buffer_size_number = file_options[fo_audio_buffer_size] %
+ (sizeof(audio_buffer_options) / sizeof(audio_buffer_options[0]));
- update_backup_flag = file_options[4] % 2;
- global_enable_analog = file_options[5] % 2;
- analog_sensitivity_level = file_options[6] % 8;
+ update_backup_flag = file_options[fo_update_backup_flag] % 2;
+ global_enable_analog = file_options[fo_global_enable_analog] % 2;
+ analog_sensitivity_level = file_options[fo_analog_sensitivity_level] % 8;
#ifdef PSP_BUILD
scePowerSetClockFrequency(clock_speed, clock_speed, clock_speed / 2);
#ifndef PC_BUILD
u32 i;
s32 menu_button = -1;
- for(i = 0; i < 16; i++)
+ for(i = 0; i < PLAT_BUTTON_COUNT; i++)
{
- gamepad_config_map[i] = file_options[7 + i] %
+ gamepad_config_map[i] = file_options[fo_main_option_count + i] %
(BUTTON_ID_NONE + 1);
if(gamepad_config_map[i] == BUTTON_ID_MENU)
}
}
- if(menu_button == -1)
+ if(menu_button == -1 && PLAT_MENU_BUTTON >= 0)
{
- gamepad_config_map[0] = BUTTON_ID_MENU;
+ gamepad_config_map[PLAT_MENU_BUTTON] = BUTTON_ID_MENU;
}
#endif
char game_config_filename[512];
u32 i;
- change_ext(gamepak_filename, game_config_filename, ".cfg");
+ make_rpath(game_config_filename, sizeof(game_config_filename), ".cfg");
file_open(game_config_file, game_config_filename, write);
{
char config_path[512];
- #if (defined(PSP_BUILD) || defined(ARM_ARCH)) && !defined(_WIN32_WCE)
- sprintf(config_path, "%s/%s", main_path, GPSP_CONFIG_FILENAME);
- #else
- sprintf(config_path, "%s\\%s", main_path, GPSP_CONFIG_FILENAME);
- #endif
+ sprintf(config_path, "%s" PATH_SEPARATOR "%s", main_path, GPSP_CONFIG_FILENAME);
file_open(config_file, config_path, write);
if(file_check_valid(config_file))
{
- u32 file_options[23];
+ u32 file_options[FILE_OPTION_COUNT];
- file_options[0] = screen_scale;
- file_options[1] = screen_filter;
- file_options[2] = global_enable_audio;
- file_options[3] = audio_buffer_size_number;
- file_options[4] = update_backup_flag;
- file_options[5] = global_enable_analog;
- file_options[6] = analog_sensitivity_level;
+ file_options[fo_screen_scale] = screen_scale;
+ file_options[fo_screen_filter] = screen_filter;
+ file_options[fo_global_enable_audio] = global_enable_audio;
+ file_options[fo_audio_buffer_size] = audio_buffer_size_number;
+ file_options[fo_update_backup_flag] = update_backup_flag;
+ file_options[fo_global_enable_analog] = global_enable_analog;
+ file_options[fo_analog_sensitivity_level] = analog_sensitivity_level;
+ file_options[fo_screen_filter2] = screen_filter2;
#ifndef PC_BUILD
u32 i;
- for(i = 0; i < 16; i++)
+ for(i = 0; i < PLAT_BUTTON_COUNT; i++)
{
- file_options[7 + i] = gamepad_config_map[i];
+ file_options[fo_main_option_count + i] = gamepad_config_map[i];
}
#endif
#endif
}
-void get_savestate_filename(u32 slot, char *name_buffer)
+void get_savestate_filename_noshot(u32 slot, char *name_buffer)
{
char savestate_ext[16];
sprintf(savestate_ext, "%d.svs", slot);
- change_ext(gamepak_filename, name_buffer, savestate_ext);
-
- get_savestate_snapshot(name_buffer);
+ make_rpath(name_buffer, 512, savestate_ext);
}
-void get_savestate_filename_noshot(u32 slot, char *name_buffer)
+void get_savestate_filename(u32 slot, char *name_buffer)
{
- char savestate_ext[16];
-
- sprintf(savestate_ext, "%d.svs", slot);
- change_ext(gamepak_filename, name_buffer, savestate_ext);
+ get_savestate_filename_noshot(slot, name_buffer);
+ get_savestate_snapshot(name_buffer);
}
#ifdef PSP_BUILD
const char *frameskip_options[] = { "automatic", "manual", "off" };
const char *frameskip_variation_options[] = { "uniform", "random" };
-#ifndef PSP_BUILD
- static const char *audio_buffer_options[] =
- {
- "16 bytes", "32 bytes", "64 bytes",
- "128 bytes", "256 bytes", "512 bytes", "1024 bytes", "2048 bytes",
- "4096 bytes", "8192 bytes", "16284 bytes"
- };
-#else
- const char *audio_buffer_options[] =
- {
- "3072 bytes", "4096 bytes", "5120 bytes", "6144 bytes", "7168 bytes",
- "8192 bytes", "9216 bytes", "10240 bytes", "11264 bytes", "12288 bytes"
- };
-#endif
-
static const char *update_backup_options[] = { "Exit only", "Automatic" };
// Marker for help information, don't go past this mark (except \n)------*
"scaling the screen. Selecting this will produce a more even and\n"
"smooth image, at the cost of being blurry and having less vibrant\n"
"colors.", 3),
+#endif
+#ifdef PND_BUILD
+ string_selection_option(NULL, "Scaling filter", filter2_options,
+ (u32 *)(&screen_filter2),
+ sizeof(filter2_options) / sizeof(filter2_options[0]),
+ "Optional pixel art scaling filter", 4),
#endif
string_selection_option(NULL, "Frameskip type", frameskip_options,
(u32 *)(¤t_frameskip_type), 3,
"This option requires gpSP to be restarted before it will take effect.",
#else
"Set the size (in bytes) of the audio buffer.\n"
- "This option requires gpSP restart to take effect.",
+ "This option requires gpSP restart to take effect.\n"
+ "Settable values may be limited by SDL implementation.",
#endif
10),
submenu_option(NULL, "Back", "Return to the main menu.", 12)
gamepad_config_option("Right Trigger", 9),
#ifdef WIZ_BUILD
gamepad_config_option("Menu ", 10),
-#else
+ gamepad_config_option("Select ", 11),
+#elif defined(POLLUX_BUILD)
+ gamepad_config_option("I ", 10),
+ gamepad_config_option("II ", 11),
+ gamepad_config_option("Push ", 12),
+ gamepad_config_option("Home ", 13),
+#elif defined(PND_BUILD)
gamepad_config_option("Start ", 10),
-#endif
gamepad_config_option("Select ", 11),
-#if !defined(WIZ_BUILD) && !defined(PND_BUILD)
- gamepad_config_option("Stick Push ", 12),
-#endif
-#ifdef PND_BUILD
gamepad_config_option("1 ", 12),
gamepad_config_option("2 ", 13),
gamepad_config_option("3 ", 14),
gamepad_config_option("4 ", 15),
+#else // GP2X
+ gamepad_config_option("Start ", 10),
+ gamepad_config_option("Select ", 11),
+ gamepad_config_option("Stick Push ", 12),
+#endif
+#ifdef PND_BUILD
submenu_option(NULL, "Back", "Return to the main menu.", 16)
#else
submenu_option(NULL, "Back", "Return to the main menu.", 14)
menu_option_type analog_config_options[] =
{
+#if defined(POLLUX_BUILD)
+ numeric_selection_option(NULL, "Analog sensitivity",
+ &analog_sensitivity_level, 10,
+ "Determine sensitivity/responsiveness of the analog input.\n"
+ "Lower numbers are less sensitive.", 8),
+#endif
submenu_option(NULL, "Back", "Return to the main menu.", 11)
};
submenu_option(&gamepad_config_menu, "Configure gamepad input",
"Select to change the in-game behavior of buttons\n"
"and d-pad.", 6),
-#ifndef GP2X_BUILD
+#ifndef WIZ_BUILD
submenu_option(&analog_config_menu, "Configure analog input",
- "Select to change the in-game behavior of the PSP analog nub.", 7),
+ "Select to change the in-game behavior of the analog nub.", 7),
#endif
submenu_option(&cheats_misc_menu, "Cheats and Miscellaneous options",
"Select to manage cheats, set backup behavior,\n"