fixed clock and scaling config saving handling

This commit is contained in:
notaz 2009-06-21 22:54:28 +03:00
parent f50ad10a9b
commit 1d02ca7575
4 changed files with 85 additions and 72 deletions

130
gui.c
View File

@ -79,33 +79,48 @@
#define COLOR_HELP_TEXT color16(16, 40, 24) #define COLOR_HELP_TEXT color16(16, 40, 24)
#ifdef PSP_BUILD #ifdef PSP_BUILD
#define get_clock_speed() \ u8 *clock_speed_options[] =
{
"33MHz", "66MHz", "100MHz", "133MHz", "166MHz", "200MHz", "233MHz",
"266MHz", "300MHz", "333MHz"
};
#define menu_get_clock_speed() \
clock_speed = (clock_speed_number + 1) * 33 clock_speed = (clock_speed_number + 1) * 33
#define get_clock_speed_number() \ #define get_clock_speed_number() \
clock_speed_number = (clock_speed / 33) - 1 clock_speed_number = (clock_speed / 33) - 1
#elif defined(WIZ_BUILD) #elif defined(WIZ_BUILD)
#define get_clock_speed() \ u8 *clock_speed_options[] =
{
"300MHz", "333MHz", "366MHz", "400MHz", "433MHz",
"466MHz", "500MHz", "533MHz", "566MHz", "600MHz",
"633MHz", "666MHz", "700MHz", "733MHz", "766MHz",
"800MHz", "833MHz", "866MHz", "900MHz"
};
#define menu_get_clock_speed() \
clock_speed = 300 + (clock_speed_number * 3333) / 100 clock_speed = 300 + (clock_speed_number * 3333) / 100
#define get_clock_speed_number() \ #define get_clock_speed_number() \
clock_speed_number = (clock_speed - 300) / 33 clock_speed_number = (clock_speed - 300) / 33
#elif defined(GP2X_BUILD) #elif defined(GP2X_BUILD)
#define get_clock_speed() \ u8 *clock_speed_options[] =
{
"150MHz", "160MHz", "170MHz", "180MHz", "190MHz",
"200MHz", "210MHz", "220MHz", "230MHz", "240MHz",
"250MHz", "260MHz", "270MHz", "280MHz", "290MHz"
};
#define menu_get_clock_speed() \
clock_speed = 150 + clock_speed_number * 10 clock_speed = 150 + clock_speed_number * 10
#define get_clock_speed_number() \ #define get_clock_speed_number() \
clock_speed_number = (clock_speed - 150) / 10 clock_speed_number = (clock_speed - 150) / 10
#else #else
#define get_clock_speed() 0 u8 *clock_speed_options[] =
{
"0"
};
#define menu_get_clock_speed() 0
#define get_clock_speed_number() 0 #define get_clock_speed_number() 0
#endif #endif
const int
#ifdef WIZ_BUILD
default_clock_speed = 533;
#elif defined(GP2X_BUILD)
default_clock_speed = 200;
#else
default_clock_speed = 333;
#endif
int sort_function(const void *dest_str_ptr, const void *src_str_ptr) int sort_function(const void *dest_str_ptr, const void *src_str_ptr)
{ {
char *dest_str = *((char **)dest_str_ptr); char *dest_str = *((char **)dest_str_ptr);
@ -735,6 +750,18 @@ u32 gamepad_config_line_to_button[] =
#endif #endif
u8 *scale_options[] =
{
#ifdef WIZ_BUILD
"unscaled 3:2", "scaled 3:2 (slower)",
"unscaled 3:2 (anti-tear)", "scaled 3:2 (anti-tear)"
#else
"unscaled 3:2", "scaled 3:2", "fullscreen"
#ifdef PSP_BUILD
" 16:9"
#endif
#endif
};
s32 load_game_config_file() s32 load_game_config_file()
{ {
@ -835,7 +862,8 @@ s32 load_config_file()
s32 menu_button = -1; s32 menu_button = -1;
file_read_array(config_file, file_options); file_read_array(config_file, file_options);
screen_scale = file_options[0] % 3; screen_scale = file_options[0] %
(sizeof(scale_options) / sizeof(scale_options[0]));
screen_filter = file_options[1] % 2; screen_filter = file_options[1] % 2;
global_enable_audio = file_options[2] % 2; global_enable_audio = file_options[2] % 2;
@ -1044,9 +1072,8 @@ void get_savestate_filename_noshot(u32 slot, u8 *name_buffer)
u32 menu(u16 *original_screen) u32 menu(u16 *original_screen)
{ {
u32 clock_speed_number;
static u32 clock_speed_old = default_clock_speed;
u8 print_buffer[81]; u8 print_buffer[81];
u32 clock_speed_number;
u32 _current_option = 0; u32 _current_option = 0;
gui_action_type gui_action; gui_action_type gui_action;
menu_enum _current_menu = MAIN_MENU; menu_enum _current_menu = MAIN_MENU;
@ -1093,6 +1120,17 @@ u32 menu(u16 *original_screen)
"Does nothing." "Does nothing."
}; };
void menu_update_clock()
{
get_clock_speed_number();
if (clock_speed_number < 0 || clock_speed_number >=
sizeof(clock_speed_options) / sizeof(clock_speed_options[0]))
{
clock_speed = default_clock_speed;
get_clock_speed_number();
}
}
void menu_exit() void menu_exit()
{ {
if(!first_load) if(!first_load)
@ -1101,7 +1139,7 @@ u32 menu(u16 *original_screen)
void menu_quit() void menu_quit()
{ {
get_clock_speed(); menu_get_clock_speed();
save_config_file(); save_config_file();
quit(); quit();
} }
@ -1121,6 +1159,7 @@ u32 menu(u16 *original_screen)
return_value = 1; return_value = 1;
repeat = 0; repeat = 0;
reg[CHANGED_PC_STATUS] = 1; reg[CHANGED_PC_STATUS] = 1;
menu_update_clock();
} }
else else
{ {
@ -1232,19 +1271,6 @@ u32 menu(u16 *original_screen)
u8 *yes_no_options[] = { "no", "yes" }; u8 *yes_no_options[] = { "no", "yes" };
u8 *enable_disable_options[] = { "disabled", "enabled" }; u8 *enable_disable_options[] = { "disabled", "enabled" };
u8 *scale_options[] =
{
#ifdef WIZ_BUILD
"unscaled 3:2", "scaled 3:2 (slower)",
"unscaled 3:2 (anti-tear)", "scaled 3:2 (anti-tear)"
#else
"unscaled 3:2", "scaled 3:2", "fullscreen"
#ifdef PSP_BUILD
" 16:9"
#endif
#endif
};
u8 *frameskip_options[] = { "automatic", "manual", "off" }; u8 *frameskip_options[] = { "automatic", "manual", "off" };
u8 *frameskip_variation_options[] = { "uniform", "random" }; u8 *frameskip_variation_options[] = { "uniform", "random" };
@ -1266,29 +1292,6 @@ u32 menu(u16 *original_screen)
u8 *update_backup_options[] = { "Exit only", "Automatic" }; u8 *update_backup_options[] = { "Exit only", "Automatic" };
#ifdef WIZ_BUILD
u8 *clock_speed_options[] =
{
"300MHz", "333MHz", "366MHz", "400MHz", "433MHz",
"466MHz", "500MHz", "533MHz", "566MHz", "600MHz",
"633MHz", "666MHz", "700MHz", "733MHz", "766MHz",
"800MHz", "833MHz", "866MHz", "900MHz"
};
#elif defined(GP2X_BUILD)
u8 *clock_speed_options[] =
{
"150MHz", "160MHz", "170MHz", "180MHz", "190MHz",
"200MHz", "210MHz", "220MHz", "230MHz", "240MHz",
"250MHz", "260MHz", "270MHz", "280MHz", "290MHz"
};
#else
u8 *clock_speed_options[] =
{
"33MHz", "66MHz", "100MHz", "133MHz", "166MHz", "200MHz", "233MHz",
"266MHz", "300MHz", "333MHz"
};
#endif
u8 *gamepad_config_buttons[] = u8 *gamepad_config_buttons[] =
{ {
"UP", "UP",
@ -1610,14 +1613,7 @@ u32 menu(u16 *original_screen)
} }
} }
get_clock_speed_number(); menu_update_clock();
if (clock_speed_number < 0 || clock_speed_number >=
sizeof(clock_speed_options) / sizeof(clock_speed_options[0]))
{
clock_speed = default_clock_speed;
get_clock_speed_number();
}
video_resolution_large(); video_resolution_large();
#ifndef GP2X_BUILD #ifndef GP2X_BUILD
@ -1766,18 +1762,8 @@ u32 menu(u16 *original_screen)
set_gba_resolution(screen_scale); set_gba_resolution(screen_scale);
video_resolution_small(); video_resolution_small();
menu_get_clock_speed();
get_clock_speed(); set_clock_speed();
if (clock_speed != clock_speed_old)
{
printf("about to set CPU clock to %iMHz\n", clock_speed);
#ifdef PSP_BUILD
scePowerSetClockFrequency(clock_speed, clock_speed, clock_speed / 2);
#elif defined(GP2X_BUILD)
set_FCLK(clock_speed);
#endif
clock_speed_old = clock_speed;
}
SDL_PauseAudio(0); SDL_PauseAudio(0);

8
gui.h
View File

@ -36,5 +36,13 @@ void get_savestate_filename_noshot(u32 slot, u8 *name_buffer);
void get_savestate_filename(u32 slot, u8 *name_buffer); void get_savestate_filename(u32 slot, u8 *name_buffer);
void get_savestate_snapshot(u8 *savestate_filename); void get_savestate_snapshot(u8 *savestate_filename);
#ifdef WIZ_BUILD
#define default_clock_speed 533
#elif defined(GP2X_BUILD)
#define default_clock_speed 200
#else
#define default_clock_speed 333
#endif
#endif #endif

17
main.c
View File

@ -326,6 +326,7 @@ int main(int argc, char *argv[])
exit(-1); exit(-1);
} }
set_clock_speed();
set_gba_resolution(screen_scale); set_gba_resolution(screen_scale);
video_resolution_small(); video_resolution_small();
@ -1042,3 +1043,19 @@ void printout(void *str, u32 val)
{ {
printf(str, val); printf(str, val);
} }
void set_clock_speed()
{
static u32 clock_speed_old = default_clock_speed;
if (clock_speed != clock_speed_old)
{
printf("about to set CPU clock to %iMHz\n", clock_speed);
#ifdef PSP_BUILD
scePowerSetClockFrequency(clock_speed, clock_speed, clock_speed / 2);
#elif defined(GP2X_BUILD)
set_FCLK(clock_speed);
#endif
clock_speed_old = clock_speed;
}
}

2
main.h
View File

@ -197,6 +197,8 @@ u32 file_length(u8 *dummy, FILE *fp);
void change_ext(u8 *src, u8 *buffer, u8 *extension); void change_ext(u8 *src, u8 *buffer, u8 *extension);
void set_clock_speed();
#endif #endif