diff --git a/input/input_luts.c b/input/input_luts.c
index b024684134..cc971657ff 100644
--- a/input/input_luts.c
+++ b/input/input_luts.c
@@ -16,6 +16,10 @@
* If not, see .
*/
+#ifdef _XBOX
+#include
+#endif
+
#include
#include "input_luts.h"
@@ -56,6 +60,41 @@ uint64_t ssnes_platform_keybind_lut[SSNES_LAST_PLATFORM_KEY] = {
CTRL_UP_MASK | CTRL_RSTICK_UP_MASK,
CTRL_DOWN_MASK | CTRL_RSTICK_DOWN_MASK,
};
+#elif defined(_XBOX)
+uint64_t ssnes_platform_keybind_lut[SSNES_LAST_PLATFORM_KEY] = {
+ XINPUT_GAMEPAD_B,
+ XINPUT_GAMEPAD_A,
+ XINPUT_GAMEPAD_Y,
+ XINPUT_GAMEPAD_X,
+ XINPUT_GAMEPAD_DPAD_UP,
+ XINPUT_GAMEPAD_DPAD_DOWN,
+ XINPUT_GAMEPAD_DPAD_LEFT,
+ XINPUT_GAMEPAD_DPAD_RIGHT,
+ XINPUT_GAMEPAD_BACK,
+ XINPUT_GAMEPAD_START,
+ XINPUT_GAMEPAD_LEFT_SHOULDER,
+ XINPUT_GAMEPAD_LEFT_TRIGGER,
+ XINPUT_GAMEPAD_LEFT_THUMB,
+ XINPUT_GAMEPAD_RIGHT_SHOULDER,
+ XINPUT_GAMEPAD_RIGHT_TRIGGER,
+ XINPUT_GAMEPAD_RIGHT_THUMB,
+ XINPUT_GAMEPAD_LSTICK_LEFT_MASK,
+ XINPUT_GAMEPAD_LSTICK_RIGHT_MASK,
+ XINPUT_GAMEPAD_LSTICK_UP_MASK,
+ XINPUT_GAMEPAD_LSTICK_DOWN_MASK,
+ XINPUT_GAMEPAD_DPAD_LEFT | XINPUT_GAMEPAD_LSTICK_LEFT_MASK,
+ XINPUT_GAMEPAD_DPAD_RIGHT | XINPUT_GAMEPAD_LSTICK_RIGHT_MASK,
+ XINPUT_GAMEPAD_DPAD_UP | XINPUT_GAMEPAD_LSTICK_UP_MASK,
+ XINPUT_GAMEPAD_DPAD_DOWN | XINPUT_GAMEPAD_LSTICK_DOWN_MASK,
+ XINPUT_GAMEPAD_RSTICK_LEFT_MASK,
+ XINPUT_GAMEPAD_RSTICK_RIGHT_MASK,
+ XINPUT_GAMEPAD_RSTICK_UP_MASK,
+ XINPUT_GAMEPAD_RSTICK_DOWN_MASK,
+ XINPUT_GAMEPAD_DPAD_LEFT | XINPUT_GAMEPAD_RSTICK_LEFT_MASK,
+ XINPUT_GAMEPAD_DPAD_RIGHT | XINPUT_GAMEPAD_RSTICK_RIGHT_MASK,
+ XINPUT_GAMEPAD_DPAD_UP | XINPUT_GAMEPAD_RSTICK_UP_MASK,
+ XINPUT_GAMEPAD_DPAD_DOWN | XINPUT_GAMEPAD_RSTICK_DOWN_MASK,
+};
#endif
struct platform_bind
@@ -100,6 +139,40 @@ static const struct platform_bind platform_keys[] = {
{ CTRL_DOWN_MASK | CTRL_RSTICK_DOWN_MASK, "RStick D-Pad Down" },
};
#elif defined(_XBOX)
+static const struct platform_bind platform_keys[] = {
+ { XINPUT_GAMEPAD_B, "B button" },
+ { XINPUT_GAMEPAD_A, "A button" },
+ { XINPUT_GAMEPAD_Y, "Y button" },
+ { XINPUT_GAMEPAD_X, "X button" },
+ { XINPUT_GAMEPAD_DPAD_UP, "D-Pad Up" },
+ { XINPUT_GAMEPAD_DPAD_DOWN, "D-Pad Down" },
+ { XINPUT_GAMEPAD_DPAD_LEFT, "D-Pad Left" },
+ { XINPUT_GAMEPAD_DPAD_RIGHT, "D-Pad Right" },
+ { XINPUT_GAMEPAD_BACK, "Back button" },
+ { XINPUT_GAMEPAD_START, "Start button" },
+ { XINPUT_GAMEPAD_LEFT_SHOULDER, "Left Shoulder" },
+ { XINPUT_GAMEPAD_LEFT_TRIGGER, "Left Trigger" },
+ { XINPUT_GAMEPAD_LEFT_THUMB, "Left Thumb" },
+ { XINPUT_GAMEPAD_RIGHT_SHOULDER, "Right Shoulder" },
+ { XINPUT_GAMEPAD_RIGHT_TRIGGER, "Right Trigger" },
+ { XINPUT_GAMEPAD_RIGHT_THUMB, "Right Thumb" },
+ { XINPUT_GAMEPAD_LSTICK_LEFT_MASK, "LStick Left" },
+ { XINPUT_GAMEPAD_LSTICK_RIGHT_MASK, "LStick Right" },
+ { XINPUT_GAMEPAD_LSTICK_UP_MASK, "LStick Up" },
+ { XINPUT_GAMEPAD_LSTICK_DOWN_MASK, "LStick Down" },
+ { XINPUT_GAMEPAD_DPAD_LEFT | XINPUT_GAMEPAD_LSTICK_LEFT_MASK, "LStick D-Pad Left" },
+ { XINPUT_GAMEPAD_DPAD_RIGHT | XINPUT_GAMEPAD_LSTICK_RIGHT_MASK, "LStick D-Pad Right" },
+ { XINPUT_GAMEPAD_DPAD_UP | XINPUT_GAMEPAD_LSTICK_UP_MASK, "LStick D-Pad Up" },
+ { XINPUT_GAMEPAD_DPAD_DOWN | XINPUT_GAMEPAD_LSTICK_DOWN_MASK, "LStick D-Pad Down" },
+ { XINPUT_GAMEPAD_RSTICK_LEFT_MASK, "RStick Left" },
+ { XINPUT_GAMEPAD_RSTICK_RIGHT_MASK, "RStick Right" },
+ { XINPUT_GAMEPAD_RSTICK_UP_MASK, "RStick Up" },
+ { XINPUT_GAMEPAD_RSTICK_DOWN_MASK, "RStick Down" },
+ { XINPUT_GAMEPAD_DPAD_LEFT | XINPUT_GAMEPAD_RSTICK_LEFT_MASK, "RStick D-Pad Left" },
+ { XINPUT_GAMEPAD_DPAD_RIGHT | XINPUT_GAMEPAD_RSTICK_RIGHT_MASK, "RStick D-Pad Right" },
+ { XINPUT_GAMEPAD_DPAD_UP | XINPUT_GAMEPAD_RSTICK_UP_MASK, "RStick D-Pad Up" },
+ { XINPUT_GAMEPAD_DPAD_DOWN | XINPUT_GAMEPAD_RSTICK_DOWN_MASK, "RStick D-Pad Down" },
+};
#endif
uint64_t ssnes_input_find_previous_platform_key(uint64_t joykey)
diff --git a/input/input_luts.h b/input/input_luts.h
index 72c74a81e1..42a9c104ef 100644
--- a/input/input_luts.h
+++ b/input/input_luts.h
@@ -65,6 +65,45 @@ enum ps3_device_id
};
#elif defined(_XBOX)
+#include "../360/xdk360_input.h"
+
+enum xdk360_device_id
+{
+ XDK360_DEVICE_ID_JOYPAD_B = 0,
+ XDK360_DEVICE_ID_JOYPAD_A,
+ XDK360_DEVICE_ID_JOYPAD_Y,
+ XDK360_DEVICE_ID_JOYPAD_X,
+ XDK360_DEVICE_ID_JOYPAD_UP,
+ XDK360_DEVICE_ID_JOYPAD_DOWN,
+ XDK360_DEVICE_ID_JOYPAD_LEFT,
+ XDK360_DEVICE_ID_JOYPAD_RIGHT,
+ XDK360_DEVICE_ID_JOYPAD_BACK,
+ XDK360_DEVICE_ID_JOYPAD_START,
+ XDK360_DEVICE_ID_JOYPAD_LB,
+ XDK360_DEVICE_ID_JOYPAD_LEFT_TRIGGER,
+ XDK360_DEVICE_ID_LSTICK_THUMB,
+ XDK360_DEVICE_ID_JOYPAD_RB,
+ XDK360_DEVICE_ID_JOYPAD_RIGHT_TRIGGER,
+ XDK360_DEVICE_ID_RSTICK_THUMB,
+ XDK360_DEVICE_ID_LSTICK_LEFT,
+ XDK360_DEVICE_ID_LSTICK_RIGHT,
+ XDK360_DEVICE_ID_LSTICK_UP,
+ XDK360_DEVICE_ID_LSTICK_DOWN,
+ XDK360_DEVICE_ID_LSTICK_LEFT_DPAD,
+ XDK360_DEVICE_ID_LSTICK_RIGHT_DPAD,
+ XDK360_DEVICE_ID_LSTICK_UP_DPAD,
+ XDK360_DEVICE_ID_LSTICK_DOWN_DPAD,
+ XDK360_DEVICE_ID_RSTICK_LEFT,
+ XDK360_DEVICE_ID_RSTICK_RIGHT,
+ XDK360_DEVICE_ID_RSTICK_UP,
+ XDK360_DEVICE_ID_RSTICK_DOWN,
+ XDK360_DEVICE_ID_RSTICK_LEFT_DPAD,
+ XDK360_DEVICE_ID_RSTICK_RIGHT_DPAD,
+ XDK360_DEVICE_ID_RSTICK_UP_DPAD,
+ XDK360_DEVICE_ID_RSTICK_DOWN_DPAD,
+
+ SSNES_LAST_PLATFORM_KEY
+};
#endif
extern uint64_t ssnes_default_keybind_lut[SSNES_FIRST_META_KEY];
diff --git a/msvc-360/SSNES-360/SSNES-360.vcxproj b/msvc-360/SSNES-360/SSNES-360.vcxproj
index 6f459668b2..4a859ffc5b 100644
--- a/msvc-360/SSNES-360/SSNES-360.vcxproj
+++ b/msvc-360/SSNES-360/SSNES-360.vcxproj
@@ -376,6 +376,7 @@
+
diff --git a/msvc-360/SSNES-360/SSNES-360.vcxproj.filters b/msvc-360/SSNES-360/SSNES-360.vcxproj.filters
index 949ca58b12..2b85e2a8e9 100644
--- a/msvc-360/SSNES-360/SSNES-360.vcxproj.filters
+++ b/msvc-360/SSNES-360/SSNES-360.vcxproj.filters
@@ -36,6 +36,9 @@
{60603fec-c1c0-4562-8573-b1dc3af0ee40}
+
+ {b19dc1de-69d4-4501-87ef-b8ee4a7795c5}
+
@@ -143,6 +146,9 @@
Source Files\console\szlib
+
+ Source Files\input
+