Merge pull request #403 from retrotalker/cursor

change crosshairs
This commit is contained in:
bearoso 2018-08-20 10:33:08 -05:00 committed by GitHub
commit 8f16e56826
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 121 additions and 0 deletions

View File

@ -13,6 +13,7 @@
#include "logger.h"
#include "display.h"
#include "conffile.h"
#include "crosshairs.h"
#include <stdio.h>
#ifdef _WIN32
#include <direct.h>
@ -192,6 +193,12 @@ void retro_set_environment(retro_environment_t cb)
{ "snes9x_overscan", "Crop overscan; enabled|disabled|auto" },
{ "snes9x_aspect", "Preferred aspect ratio; 4:3|8:7|auto|ntsc|pal" },
{ "snes9x_region", "Console region (Reload core); auto|ntsc|pal" },
{ "snes9x_superscope_crosshair", "Super Scope crosshair; 2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|0|1" },
{ "snes9x_superscope_color", "Super Scope color; White|White (blend)|Red|Red (blend)|Orange|Orange (blend)|Yellow|Yellow (blend)|Green|Green (blend)|Cyan|Cyan (blend)|Sky|Sky (blend)|Blue|Blue (blend)|Violet|Violet (blend)|Pink|Pink (blend)|Purple|Purple (blend)|Black|Black (blend)|25% Gray|25% Gray (blend)|50% Gray|50% Gray (blend)|75% Gray|75% Gray (blend)" },
{ "snes9x_justifier1_crosshair", "Justifier 1 crosshair; 4|5|6|7|8|9|10|11|12|13|14|15|16|0|1|2|3" },
{ "snes9x_justifier1_color", "Justifier 1 color; Blue|Blue (blend)|Violet|Violet (blend)|Pink|Pink (blend)|Purple|Purple (blend)|Black|Black (blend)|25% Gray|25% Gray (blend)|50% Gray|50% Gray (blend)|75% Gray|75% Gray (blend)|White|White (blend)|Red|Red (blend)|Orange|Orange (blend)|Yellow|Yellow (blend)|Green|Green (blend)|Cyan|Cyan (blend)|Sky|Sky (blend)" },
{ "snes9x_justifier2_crosshair", "Justifier 2 crosshair; 4|5|6|7|8|9|10|11|12|13|14|15|16|0|1|2|3" },
{ "snes9x_justifier2_color", "Justifier 2 color; Pink|Pink (blend)|Purple|Purple (blend)|Black|Black (blend)|25% Gray|25% Gray (blend)|50% Gray|50% Gray (blend)|75% Gray|75% Gray (blend)|White|White (blend)|Red|Red (blend)|Orange|Orange (blend)|Yellow|Yellow (blend)|Green|Green (blend)|Cyan|Cyan (blend)|Sky|Sky (blend)|Blue|Blue (blend)|Violet|Violet (blend)" },
{ NULL, NULL },
};
@ -233,6 +240,54 @@ void retro_set_environment(retro_environment_t cb)
environ_cb(RETRO_ENVIRONMENT_SET_CONTROLLER_INFO, (void*)ports);
}
char *get_cursor_color(const char *name)
{
static char color_names[][32] = {
"Black", "Black",
"Black (blend)", "tBlack",
"25% Grey", "25Grey",
"25% Grey (blend)", "t25Grey",
"50% Grey", "50Grey",
"50% Grey (blend)", "t50Grey",
"75% Grey", "75Grey",
"75% Grey (blend)", "t75Grey",
"White", "White",
"White (blend)", "tWhite",
"Red", "Red",
"Red (blend)", "tRed",
"Orange", "Orange",
"Orange (blend)", "tOrange",
"Yellow", "Yellow",
"Yellow (blend)", "tYellow",
"Green", "Green",
"Green (blend)", "tGreen",
"Cyan", "Cyan",
"Cyan (blend)", "tCyan",
"Sky", "Sky",
"Sky (blend)", "tSky",
"Blue", "Blue",
"Blue (blend)", "tBlue",
"Violet", "Violet",
"Violet (blend)", "tViolet",
"Pink", "MagicPink",
"Pink (blend)", "tMagicPink",
"Purple", "Purple",
"Purple (blend)", "tPurple",
"\0", "\0"
};
int lcv = 0;
while (color_names[lcv][0]) {
if (strcmp(color_names[lcv], name) == 0) {
return color_names[lcv+1];
}
lcv += 2;
}
return "None";
}
void update_geometry(void)
{
struct retro_system_av_info av_info;
@ -434,6 +489,72 @@ static void update_variables(void)
}
}
var.key="snes9x_superscope_crosshair";
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var))
{
int crosshair;
sscanf (var.value,"%d",&crosshair);
S9xSetControllerCrosshair(X_SUPERSCOPE, crosshair, 0, 0);
}
var.key="snes9x_superscope_color";
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var))
{
char *color = get_cursor_color(var.value);
if (color[0] == 't')
S9xSetControllerCrosshair(X_SUPERSCOPE, -1, get_cursor_color(var.value), "tBlack");
else
S9xSetControllerCrosshair(X_SUPERSCOPE, -1, get_cursor_color(var.value), "Black");
}
var.key="snes9x_justifier1_crosshair";
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var))
{
int crosshair;
sscanf (var.value,"%d",&crosshair);
S9xSetControllerCrosshair(X_JUSTIFIER1, crosshair, 0, 0);
}
var.key="snes9x_justifier1_color";
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var))
{
char *color = get_cursor_color(var.value);
if (color[0] == 't')
S9xSetControllerCrosshair(X_JUSTIFIER1, -1, get_cursor_color(var.value), "tBlack");
else
S9xSetControllerCrosshair(X_JUSTIFIER1, -1, get_cursor_color(var.value), "Black");
}
var.key="snes9x_justifier2_crosshair";
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var))
{
int crosshair;
sscanf (var.value,"%d",&crosshair);
S9xSetControllerCrosshair(X_JUSTIFIER2, crosshair, 0, 0);
}
var.key="snes9x_justifier2_color";
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var))
{
char *color = get_cursor_color(var.value);
if (color[0] == 't')
S9xSetControllerCrosshair(X_JUSTIFIER2, -1, get_cursor_color(var.value), "tBlack");
else
S9xSetControllerCrosshair(X_JUSTIFIER2, -1, get_cursor_color(var.value), "Black");
}
if (geometry_update)
update_geometry();
}