refine variables, add comments
This commit is contained in:
parent
b1ea7c5f06
commit
007765daa6
@ -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));
|
||||||
|
Loading…
Reference in New Issue
Block a user