mirror of
https://github.com/Oibaf66/frodo-wii.git
synced 2024-11-29 06:54:22 +01:00
More joystick handling: Make the analogue part post messages to the gui,
don't rely on old value for gui
This commit is contained in:
parent
d1bcec688b
commit
d24063b1a6
@ -789,6 +789,8 @@ uint8 C64::poll_joystick_axes(int port)
|
|||||||
int *min_axis = &this->joy_minx[port];
|
int *min_axis = &this->joy_minx[port];
|
||||||
uint8 neg_val = 0xfb;
|
uint8 neg_val = 0xfb;
|
||||||
uint8 pos_val = 0xf7;
|
uint8 pos_val = 0xf7;
|
||||||
|
event_t gui_neg_val = KEY_LEFT;
|
||||||
|
event_t gui_pos_val = KEY_RIGHT;
|
||||||
|
|
||||||
if (ThePrefs.JoystickAxes[i] == JOY_VERT)
|
if (ThePrefs.JoystickAxes[i] == JOY_VERT)
|
||||||
{
|
{
|
||||||
@ -796,6 +798,8 @@ uint8 C64::poll_joystick_axes(int port)
|
|||||||
min_axis = &this->joy_miny[port];
|
min_axis = &this->joy_miny[port];
|
||||||
neg_val = 0xfe;
|
neg_val = 0xfe;
|
||||||
pos_val = 0xfd;
|
pos_val = 0xfd;
|
||||||
|
gui_neg_val = KEY_UP;
|
||||||
|
gui_pos_val = KEY_DOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Dynamic joystick calibration */
|
/* Dynamic joystick calibration */
|
||||||
@ -808,10 +812,14 @@ uint8 C64::poll_joystick_axes(int port)
|
|||||||
if (*max_axis - *min_axis < 100)
|
if (*max_axis - *min_axis < 100)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (axis < (*min_axis + (*max_axis - *min_axis)/3))
|
if (axis < (*min_axis + (*max_axis - *min_axis)/3)) {
|
||||||
out &= neg_val;
|
out &= neg_val;
|
||||||
else if (axis > (*min_axis + 2*(*max_axis - *min_axis)/3))
|
Gui::gui->pushEvent(gui_neg_val);
|
||||||
|
}
|
||||||
|
else if (axis > (*min_axis + 2*(*max_axis - *min_axis)/3)) {
|
||||||
out &= pos_val;
|
out &= pos_val;
|
||||||
|
Gui::gui->pushEvent(gui_pos_val);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return out;
|
return out;
|
||||||
@ -865,16 +873,16 @@ uint8 C64::poll_joystick_buttons(int port)
|
|||||||
|
|
||||||
if (kc == JOY_NONE)
|
if (kc == JOY_NONE)
|
||||||
continue;
|
continue;
|
||||||
|
else if (kc == JOY_FIRE)
|
||||||
if (cur != old) {
|
|
||||||
TheDisplay->UpdateKeyMatrix(kc, !cur,
|
|
||||||
TheCIA1->KeyMatrix, TheCIA1->RevMatrix, &out);
|
|
||||||
if (kc == JOY_FIRE)
|
|
||||||
Gui::gui->pushEvent(KEY_SELECT);
|
Gui::gui->pushEvent(KEY_SELECT);
|
||||||
else if (kc == JOY_ENTER_MENU)
|
else if (kc == JOY_ENTER_MENU)
|
||||||
Gui::gui->activate();
|
Gui::gui->activate();
|
||||||
else
|
else
|
||||||
Gui::gui->pushEvent(KEY_ESCAPE);
|
Gui::gui->pushEvent(KEY_ESCAPE);
|
||||||
|
|
||||||
|
if (cur != old) {
|
||||||
|
TheDisplay->UpdateKeyMatrix(kc, !cur,
|
||||||
|
TheCIA1->KeyMatrix, TheCIA1->RevMatrix, &out);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user