mirror of https://github.com/xemu-project/xemu.git
fixed what I broke when I merged from master
This commit is contained in:
parent
53ed54880a
commit
3cb293e220
|
@ -61,27 +61,27 @@ static void xemu_input_print_controller_state(ControllerState *state)
|
||||||
"LTrig = %.3f, RTrig = %.3f\n"
|
"LTrig = %.3f, RTrig = %.3f\n"
|
||||||
"LStickX = %.3f, RStickX = %.3f\n"
|
"LStickX = %.3f, RStickX = %.3f\n"
|
||||||
"LStickY = %.3f, RStickY = %.3f\n\n",
|
"LStickY = %.3f, RStickY = %.3f\n\n",
|
||||||
!!(state->buttons & CONTROLLER_BUTTON_A),
|
!!(state->gp.buttons & CONTROLLER_BUTTON_A),
|
||||||
!!(state->buttons & CONTROLLER_BUTTON_B),
|
!!(state->gp.buttons & CONTROLLER_BUTTON_B),
|
||||||
!!(state->buttons & CONTROLLER_BUTTON_X),
|
!!(state->gp.buttons & CONTROLLER_BUTTON_X),
|
||||||
!!(state->buttons & CONTROLLER_BUTTON_Y),
|
!!(state->gp.buttons & CONTROLLER_BUTTON_Y),
|
||||||
!!(state->buttons & CONTROLLER_BUTTON_DPAD_LEFT),
|
!!(state->gp.buttons & CONTROLLER_BUTTON_DPAD_LEFT),
|
||||||
!!(state->buttons & CONTROLLER_BUTTON_DPAD_UP),
|
!!(state->gp.buttons & CONTROLLER_BUTTON_DPAD_UP),
|
||||||
!!(state->buttons & CONTROLLER_BUTTON_DPAD_RIGHT),
|
!!(state->gp.buttons & CONTROLLER_BUTTON_DPAD_RIGHT),
|
||||||
!!(state->buttons & CONTROLLER_BUTTON_DPAD_DOWN),
|
!!(state->gp.buttons & CONTROLLER_BUTTON_DPAD_DOWN),
|
||||||
!!(state->buttons & CONTROLLER_BUTTON_BACK),
|
!!(state->gp.buttons & CONTROLLER_BUTTON_BACK),
|
||||||
!!(state->buttons & CONTROLLER_BUTTON_START),
|
!!(state->gp.buttons & CONTROLLER_BUTTON_START),
|
||||||
!!(state->buttons & CONTROLLER_BUTTON_WHITE),
|
!!(state->gp.buttons & CONTROLLER_BUTTON_WHITE),
|
||||||
!!(state->buttons & CONTROLLER_BUTTON_BLACK),
|
!!(state->gp.buttons & CONTROLLER_BUTTON_BLACK),
|
||||||
!!(state->buttons & CONTROLLER_BUTTON_LSTICK),
|
!!(state->gp.buttons & CONTROLLER_BUTTON_LSTICK),
|
||||||
!!(state->buttons & CONTROLLER_BUTTON_RSTICK),
|
!!(state->gp.buttons & CONTROLLER_BUTTON_RSTICK),
|
||||||
!!(state->buttons & CONTROLLER_BUTTON_GUIDE),
|
!!(state->gp.buttons & CONTROLLER_BUTTON_GUIDE),
|
||||||
state->axis[CONTROLLER_AXIS_LTRIG],
|
state->gp.axis[CONTROLLER_AXIS_LTRIG],
|
||||||
state->axis[CONTROLLER_AXIS_RTRIG],
|
state->gp.axis[CONTROLLER_AXIS_RTRIG],
|
||||||
state->axis[CONTROLLER_AXIS_LSTICK_X],
|
state->gp.axis[CONTROLLER_AXIS_LSTICK_X],
|
||||||
state->axis[CONTROLLER_AXIS_RSTICK_X],
|
state->gp.axis[CONTROLLER_AXIS_RSTICK_X],
|
||||||
state->axis[CONTROLLER_AXIS_LSTICK_Y],
|
state->gp.axis[CONTROLLER_AXIS_LSTICK_Y],
|
||||||
state->axis[CONTROLLER_AXIS_RSTICK_Y]
|
state->gp.axis[CONTROLLER_AXIS_RSTICK_Y]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -133,25 +133,6 @@ static const char **peripheral_params_settings_map[4][2] = {
|
||||||
static int sdl_kbd_scancode_map[25];
|
static int sdl_kbd_scancode_map[25];
|
||||||
static int sdl_sbc_kbd_scancode_map[52];
|
static int sdl_sbc_kbd_scancode_map[52];
|
||||||
|
|
||||||
static const char *get_bound_driver(int port)
|
|
||||||
{
|
|
||||||
assert(port >= 0 && port <= 3);
|
|
||||||
const char *driver = *port_index_to_driver_settings_key_map[port];
|
|
||||||
|
|
||||||
// If the driver in the config is NULL, empty, or unrecognized
|
|
||||||
// then default to DRIVER_DUKE
|
|
||||||
if (driver == NULL)
|
|
||||||
return DRIVER_DUKE;
|
|
||||||
if (strlen(driver) == 0)
|
|
||||||
return DRIVER_DUKE;
|
|
||||||
if (strcmp(driver, DRIVER_DUKE) == 0)
|
|
||||||
return DRIVER_DUKE;
|
|
||||||
if (strcmp(driver, DRIVER_STEEL_BATTALION) == 0)
|
|
||||||
return DRIVER_STEEL_BATTALION;
|
|
||||||
|
|
||||||
return DRIVER_DUKE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const char *get_bound_driver(int port)
|
static const char *get_bound_driver(int port)
|
||||||
{
|
{
|
||||||
assert(port >= 0 && port <= 3);
|
assert(port >= 0 && port <= 3);
|
||||||
|
@ -167,6 +148,8 @@ static const char *get_bound_driver(int port)
|
||||||
return DRIVER_DUKE;
|
return DRIVER_DUKE;
|
||||||
if (strcmp(driver, DRIVER_S) == 0)
|
if (strcmp(driver, DRIVER_S) == 0)
|
||||||
return DRIVER_S;
|
return DRIVER_S;
|
||||||
|
if (strcmp(driver, DRIVER_STEEL_BATTALION) == 0)
|
||||||
|
return DRIVER_STEEL_BATTALION;
|
||||||
|
|
||||||
return DRIVER_DUKE;
|
return DRIVER_DUKE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
extern int viewport_coords[4];
|
extern int viewport_coords[4];
|
||||||
|
|
||||||
Fbo *controller_fbo, *xmu_fbo, *logo_fbo;
|
Fbo *controller_fbo, *xmu_fbo, *logo_fbo;
|
||||||
GLuint g_controller_duke_tex, g_controller_s_tex, g_sb_controller_duke_tex, g_logo_tex, g_icon_tex, g_xmu_tex;
|
GLuint g_controller_duke_tex, g_controller_s_tex, g_sb_controller_tex, g_logo_tex, g_icon_tex, g_xmu_tex;
|
||||||
|
|
||||||
enum class ShaderType {
|
enum class ShaderType {
|
||||||
Blit,
|
Blit,
|
||||||
|
@ -706,13 +706,13 @@ static void RenderControllerS(float frame_x, float frame_y, uint32_t primary_col
|
||||||
|
|
||||||
// Check to see if the guide button is pressed
|
// Check to see if the guide button is pressed
|
||||||
const uint32_t animate_guide_button_duration = 2000;
|
const uint32_t animate_guide_button_duration = 2000;
|
||||||
if (state->buttons & CONTROLLER_BUTTON_GUIDE) {
|
if (state->gp.buttons & CONTROLLER_BUTTON_GUIDE) {
|
||||||
state->animate_guide_button_end =
|
state->gp.animate_guide_button_end =
|
||||||
now + animate_guide_button_duration;
|
now + animate_guide_button_duration;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (now < state->animate_guide_button_end) {
|
if (now < state->gp.animate_guide_button_end) {
|
||||||
t = 1.0f - (float)(state->animate_guide_button_end - now) /
|
t = 1.0f - (float)(state->gp.animate_guide_button_end - now) /
|
||||||
(float)animate_guide_button_duration;
|
(float)animate_guide_button_duration;
|
||||||
float sin_wav = (1 - sin(M_PI * t / 2.0f));
|
float sin_wav = (1 - sin(M_PI * t / 2.0f));
|
||||||
|
|
||||||
|
@ -742,7 +742,7 @@ static void RenderControllerS(float frame_x, float frame_y, uint32_t primary_col
|
||||||
// The controller has alpha cutouts where the buttons are. Draw a surface
|
// The controller has alpha cutouts where the buttons are. Draw a surface
|
||||||
// behind the buttons if they are activated
|
// behind the buttons if they are activated
|
||||||
for (int i = 0; i < 12; i++) {
|
for (int i = 0; i < 12; i++) {
|
||||||
if (state->buttons & (1 << i)) {
|
if (state->gp.buttons & (1 << i)) {
|
||||||
RenderDecal(g_decal_shader, frame_x + buttons[i].x,
|
RenderDecal(g_decal_shader, frame_x + buttons[i].x,
|
||||||
frame_y + buttons[i].y, buttons[i].w, buttons[i].h, 0,
|
frame_y + buttons[i].y, buttons[i].w, buttons[i].h, 0,
|
||||||
0, 1, 1, 0, 0, primary_color + 0xff);
|
0, 1, 1, 0, 0, primary_color + 0xff);
|
||||||
|
@ -756,15 +756,15 @@ static void RenderControllerS(float frame_x, float frame_y, uint32_t primary_col
|
||||||
float h = tex_items[obj_lstick].h;
|
float h = tex_items[obj_lstick].h;
|
||||||
float c_x = frame_x + lstick_ctr.x;
|
float c_x = frame_x + lstick_ctr.x;
|
||||||
float c_y = frame_y + lstick_ctr.y;
|
float c_y = frame_y + lstick_ctr.y;
|
||||||
float lstick_x = (float)state->axis[CONTROLLER_AXIS_LSTICK_X] / 32768.0;
|
float lstick_x = (float)state->gp.axis[CONTROLLER_AXIS_LSTICK_X] / 32768.0;
|
||||||
float lstick_y = (float)state->axis[CONTROLLER_AXIS_LSTICK_Y] / 32768.0;
|
float lstick_y = (float)state->gp.axis[CONTROLLER_AXIS_LSTICK_Y] / 32768.0;
|
||||||
RenderDecal(
|
RenderDecal(
|
||||||
g_decal_shader, (int)(c_x - w / 2.0f + 10.0f * lstick_x),
|
g_decal_shader, (int)(c_x - w / 2.0f + 10.0f * lstick_x),
|
||||||
(int)(c_y - h / 2.0f + 10.0f * lstick_y), w, h, tex_items[obj_lstick].x,
|
(int)(c_y - h / 2.0f + 10.0f * lstick_y), w, h, tex_items[obj_lstick].x,
|
||||||
tex_items[obj_lstick].y, w, h,
|
tex_items[obj_lstick].y, w, h,
|
||||||
(state->buttons & CONTROLLER_BUTTON_LSTICK) ? secondary_color :
|
(state->gp.buttons & CONTROLLER_BUTTON_LSTICK) ? secondary_color :
|
||||||
primary_color,
|
primary_color,
|
||||||
(state->buttons & CONTROLLER_BUTTON_LSTICK) ? primary_color :
|
(state->gp.buttons & CONTROLLER_BUTTON_LSTICK) ? primary_color :
|
||||||
secondary_color,
|
secondary_color,
|
||||||
0);
|
0);
|
||||||
|
|
||||||
|
@ -773,15 +773,15 @@ static void RenderControllerS(float frame_x, float frame_y, uint32_t primary_col
|
||||||
h = tex_items[obj_rstick].h;
|
h = tex_items[obj_rstick].h;
|
||||||
c_x = frame_x + rstick_ctr.x;
|
c_x = frame_x + rstick_ctr.x;
|
||||||
c_y = frame_y + rstick_ctr.y;
|
c_y = frame_y + rstick_ctr.y;
|
||||||
float rstick_x = (float)state->axis[CONTROLLER_AXIS_RSTICK_X] / 32768.0;
|
float rstick_x = (float)state->gp.axis[CONTROLLER_AXIS_RSTICK_X] / 32768.0;
|
||||||
float rstick_y = (float)state->axis[CONTROLLER_AXIS_RSTICK_Y] / 32768.0;
|
float rstick_y = (float)state->gp.axis[CONTROLLER_AXIS_RSTICK_Y] / 32768.0;
|
||||||
RenderDecal(
|
RenderDecal(
|
||||||
g_decal_shader, (int)(c_x - w / 2.0f + 10.0f * rstick_x),
|
g_decal_shader, (int)(c_x - w / 2.0f + 10.0f * rstick_x),
|
||||||
(int)(c_y - h / 2.0f + 10.0f * rstick_y), w, h, tex_items[obj_rstick].x,
|
(int)(c_y - h / 2.0f + 10.0f * rstick_y), w, h, tex_items[obj_rstick].x,
|
||||||
tex_items[obj_rstick].y, w, h,
|
tex_items[obj_rstick].y, w, h,
|
||||||
(state->buttons & CONTROLLER_BUTTON_RSTICK) ? secondary_color :
|
(state->gp.buttons & CONTROLLER_BUTTON_RSTICK) ? secondary_color :
|
||||||
primary_color,
|
primary_color,
|
||||||
(state->buttons & CONTROLLER_BUTTON_RSTICK) ? primary_color :
|
(state->gp.buttons & CONTROLLER_BUTTON_RSTICK) ? primary_color :
|
||||||
secondary_color,
|
secondary_color,
|
||||||
0);
|
0);
|
||||||
|
|
||||||
|
@ -789,19 +789,19 @@ static void RenderControllerS(float frame_x, float frame_y, uint32_t primary_col
|
||||||
GL_ZERO); // Don't blend, just overwrite values in buffer
|
GL_ZERO); // Don't blend, just overwrite values in buffer
|
||||||
|
|
||||||
// Render trigger bars
|
// Render trigger bars
|
||||||
float ltrig = state->axis[CONTROLLER_AXIS_LTRIG] / 32767.0;
|
float ltrig = state->gp.axis[CONTROLLER_AXIS_LTRIG] / 32767.0;
|
||||||
float rtrig = state->axis[CONTROLLER_AXIS_RTRIG] / 32767.0;
|
float rtrig = state->gp.axis[CONTROLLER_AXIS_RTRIG] / 32767.0;
|
||||||
const uint32_t animate_trigger_duration = 1000;
|
const uint32_t animate_trigger_duration = 1000;
|
||||||
if ((ltrig > 0) || (rtrig > 0)) {
|
if ((ltrig > 0) || (rtrig > 0)) {
|
||||||
state->animate_trigger_end = now + animate_trigger_duration;
|
state->gp.animate_trigger_end = now + animate_trigger_duration;
|
||||||
rumble_l = fmax(rumble_l, ltrig);
|
rumble_l = fmax(rumble_l, ltrig);
|
||||||
rumble_r = fmax(rumble_r, rtrig);
|
rumble_r = fmax(rumble_r, rtrig);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Animate trigger alpha down after a period of inactivity
|
// Animate trigger alpha down after a period of inactivity
|
||||||
alpha = 0x80;
|
alpha = 0x80;
|
||||||
if (state->animate_trigger_end > now) {
|
if (state->gp.animate_trigger_end > now) {
|
||||||
t = 1.0f - (float)(state->animate_trigger_end - now) /
|
t = 1.0f - (float)(state->gp.animate_trigger_end - now) /
|
||||||
(float)animate_trigger_duration;
|
(float)animate_trigger_duration;
|
||||||
float sin_wav = (1 - sin(M_PI * t / 2.0f));
|
float sin_wav = (1 - sin(M_PI * t / 2.0f));
|
||||||
alpha += fmin(sin_wav * 0x40, 0x80);
|
alpha += fmin(sin_wav * 0x40, 0x80);
|
||||||
|
@ -816,8 +816,8 @@ static void RenderControllerS(float frame_x, float frame_y, uint32_t primary_col
|
||||||
rtrig, primary_color + alpha, primary_color + 0xff);
|
rtrig, primary_color + alpha, primary_color + 0xff);
|
||||||
|
|
||||||
// Apply rumble updates
|
// Apply rumble updates
|
||||||
state->rumble_l = (int)(rumble_l * (float)0xffff);
|
state->gp.rumble_l = (int)(rumble_l * (float)0xffff);
|
||||||
state->rumble_r = (int)(rumble_r * (float)0xffff);
|
state->gp.rumble_r = (int)(rumble_r * (float)0xffff);
|
||||||
|
|
||||||
glBindVertexArray(0);
|
glBindVertexArray(0);
|
||||||
glUseProgram(0);
|
glUseProgram(0);
|
||||||
|
|
Loading…
Reference in New Issue