refine variables, add comments

This commit is contained in:
radius 2018-03-08 14:45:58 -05:00
parent b1ea7c5f06
commit 007765daa6
1 changed files with 12 additions and 6 deletions

View File

@ -221,7 +221,8 @@ static uint32_t rgb_encode(GB_gameboy_t *gb, uint8_t r, uint8_t g, uint8_t b)
static retro_environment_t environ_cb; static retro_environment_t environ_cb;
static const struct retro_variable vars[] = { /* variables for single cart mode */
static const struct retro_variable vars_single[] = {
{ "sameboy_dual", "Single cart dual mode (reload); disabled|enabled" }, { "sameboy_dual", "Single cart dual mode (reload); disabled|enabled" },
{ "sameboy_color_correction_mode", "Color correction; off|correct curves|emulate hardware|preserve brightness" }, { "sameboy_color_correction_mode", "Color correction; off|correct curves|emulate hardware|preserve brightness" },
{ "sameboy_high_pass_filter_mode", "High-pass filter; off|accurate|remove dc offset" }, { "sameboy_high_pass_filter_mode", "High-pass filter; off|accurate|remove dc offset" },
@ -229,7 +230,8 @@ static const struct retro_variable vars[] = {
{ NULL } { NULL }
}; };
static const struct retro_variable vars_sameboy_dual[] = { /* variables for single cart dual gameboy mode */
static const struct retro_variable vars_single_dual[] = {
{ "sameboy_dual", "Single cart dual mode (reload); disabled|enabled" }, { "sameboy_dual", "Single cart dual mode (reload); disabled|enabled" },
{ "sameboy_link", "Link cable emulation; enabled|disabled" }, { "sameboy_link", "Link cable emulation; enabled|disabled" },
/*{ "sameboy_ir", "Infrared Sensor Emulation; disabled|enabled" },*/ /*{ "sameboy_ir", "Infrared Sensor Emulation; disabled|enabled" },*/
@ -244,7 +246,8 @@ static const struct retro_variable vars_sameboy_dual[] = {
{ NULL } { NULL }
}; };
static const struct retro_variable vars_link_dual[] = { /* variables for dual cart dual gameboy mode */
static const struct retro_variable vars_dual[] = {
{ "sameboy_link", "Link cable emulation; enabled|disabled" }, { "sameboy_link", "Link cable emulation; enabled|disabled" },
/*{ "sameboy_ir", "Infrared Sensor Emulation; disabled|enabled" },*/ /*{ "sameboy_ir", "Infrared Sensor Emulation; disabled|enabled" },*/
{ "sameboy_screen_layout", "Screen layout; top-down|left-right" }, { "sameboy_screen_layout", "Screen layout; top-down|left-right" },
@ -793,13 +796,13 @@ void retro_run(void)
bool retro_load_game(const struct retro_game_info *info) bool retro_load_game(const struct retro_game_info *info)
{ {
environ_cb(RETRO_ENVIRONMENT_SET_VARIABLES, (void *)vars); environ_cb(RETRO_ENVIRONMENT_SET_VARIABLES, (void *)vars_single);
check_variables(false); check_variables(false);
if (sameboy_dual) if (sameboy_dual)
{ {
emulated_devices = 2; emulated_devices = 2;
mode = MODE_SINGLE_GAME_DUAL; mode = MODE_SINGLE_GAME_DUAL;
environ_cb(RETRO_ENVIRONMENT_SET_VARIABLES, (void *)vars_sameboy_dual); environ_cb(RETRO_ENVIRONMENT_SET_VARIABLES, (void *)vars_single_dual);
check_variables(true); check_variables(true);
} }
else else
@ -842,6 +845,7 @@ bool retro_load_game(const struct retro_game_info *info)
check_variables(emulated_devices == 2 ? true : false); check_variables(emulated_devices == 2 ? true : false);
/* hack: use upstream's file based I/O for Game Boy 2 battery in single cart mode */
if (mode == MODE_SINGLE_GAME_DUAL) if (mode == MODE_SINGLE_GAME_DUAL)
{ {
char path[PATH_MAX]; char path[PATH_MAX];
@ -858,6 +862,7 @@ bool retro_load_game(const struct retro_game_info *info)
void retro_unload_game(void) void retro_unload_game(void)
{ {
/* hack: use upstream's file based I/O for Game Boy 2 battery in single cart mode */
if (mode == MODE_SINGLE_GAME_DUAL) if (mode == MODE_SINGLE_GAME_DUAL)
{ {
char path[PATH_MAX]; char path[PATH_MAX];
@ -868,6 +873,7 @@ void retro_unload_game(void)
log_cb(RETRO_LOG_INFO, "Saving battery for Game Boy 2 to: %s\n", path); log_cb(RETRO_LOG_INFO, "Saving battery for Game Boy 2 to: %s\n", path);
GB_save_battery(&gameboy[1], path); GB_save_battery(&gameboy[1], path);
} }
for (int i = 0; i < emulated_devices; i++) for (int i = 0; i < emulated_devices; i++)
GB_free(&gameboy[i]); GB_free(&gameboy[i]);
} }
@ -888,7 +894,7 @@ bool retro_load_game_special(unsigned type, const struct retro_game_info *info,
else else
return false; /* all other types are unhandled for now */ return false; /* all other types are unhandled for now */
environ_cb(RETRO_ENVIRONMENT_SET_VARIABLES, (void *)vars_link_dual); environ_cb(RETRO_ENVIRONMENT_SET_VARIABLES, (void *)vars_dual);
check_variables(true); check_variables(true);
frame_buf = (uint32_t*)malloc(emulated_devices * VIDEO_PIXELS * sizeof(uint32_t)); frame_buf = (uint32_t*)malloc(emulated_devices * VIDEO_PIXELS * sizeof(uint32_t));