diff --git a/samples/sdl_gamecontroller/Makefile b/samples/sdl_gamecontroller/Makefile new file mode 100644 index 000000000..2e13a5cb7 --- /dev/null +++ b/samples/sdl_gamecontroller/Makefile @@ -0,0 +1,8 @@ +DEBUG = y +XBE_TITLE = sdl_gamecontroller +GEN_XISO = $(XBE_TITLE).iso +SRCS += $(CURDIR)/main.c +NXDK_DIR = $(CURDIR)/../.. +NXDK_SDL = y + +include $(NXDK_DIR)/Makefile diff --git a/samples/sdl_gamecontroller/main.c b/samples/sdl_gamecontroller/main.c new file mode 100644 index 000000000..e728dc0c3 --- /dev/null +++ b/samples/sdl_gamecontroller/main.c @@ -0,0 +1,108 @@ +#include +#include +#include +#include +#include +#include +#include + +int main() { + XVideoSetMode(640, 480, 32, REFRESH_DEFAULT); + int ret = pb_init(); + if (ret != 0) { + XSleep(2000); + return -1; + } + + pb_show_debug_screen(); + + SDL_InitSubSystem(SDL_INIT_GAMECONTROLLER); + + int gameControllerIndex = 0; + assert(SDL_IsGameController(gameControllerIndex)); + SDL_GameController *gameController = SDL_GameControllerOpen(gameControllerIndex); + if (gameController == NULL) { + debugPrint("Could not open GameController %i, exiting...", gameControllerIndex); + SDL_QuitSubSystem(SDL_INIT_GAMECONTROLLER); + XSleep(2000); + return -1; + } + + debugPrint("GameController name: %s\n", SDL_GameControllerName(gameController)); + debugPrint("GameController Map : %s\n", SDL_GameControllerMapping(gameController)); + debugPrint("\n"); + + while (true) { + // Fetch current GameController state + SDL_GameControllerUpdate(); + debugClearScreen(); + debugPrint("%s:%i\n", + SDL_GameControllerGetStringForButton(SDL_CONTROLLER_BUTTON_A), + SDL_GameControllerGetButton(gameController, SDL_CONTROLLER_BUTTON_A)); + debugPrint("%s:%i\n", + SDL_GameControllerGetStringForButton(SDL_CONTROLLER_BUTTON_B), + SDL_GameControllerGetButton(gameController, SDL_CONTROLLER_BUTTON_B)); + debugPrint("%s:%i\n", + SDL_GameControllerGetStringForButton(SDL_CONTROLLER_BUTTON_X), + SDL_GameControllerGetButton(gameController, SDL_CONTROLLER_BUTTON_X)); + debugPrint("%s:%i\n", + SDL_GameControllerGetStringForButton(SDL_CONTROLLER_BUTTON_Y), + SDL_GameControllerGetButton(gameController, SDL_CONTROLLER_BUTTON_Y)); + debugPrint("%s:%i\n", + SDL_GameControllerGetStringForButton(SDL_CONTROLLER_BUTTON_BACK), + SDL_GameControllerGetButton(gameController, SDL_CONTROLLER_BUTTON_BACK)); + debugPrint("%s:%i\n", + SDL_GameControllerGetStringForButton(SDL_CONTROLLER_BUTTON_START), + SDL_GameControllerGetButton(gameController, SDL_CONTROLLER_BUTTON_START)); + debugPrint("%s:%i\n", + SDL_GameControllerGetStringForButton(SDL_CONTROLLER_BUTTON_LEFTSTICK), + SDL_GameControllerGetButton(gameController, SDL_CONTROLLER_BUTTON_LEFTSTICK)); + debugPrint("%s:%i\n", + SDL_GameControllerGetStringForButton(SDL_CONTROLLER_BUTTON_RIGHTSTICK), + SDL_GameControllerGetButton(gameController, SDL_CONTROLLER_BUTTON_RIGHTSTICK)); + debugPrint("%s:%i\n", + SDL_GameControllerGetStringForButton(SDL_CONTROLLER_BUTTON_LEFTSHOULDER), + SDL_GameControllerGetButton(gameController, SDL_CONTROLLER_BUTTON_LEFTSHOULDER)); + debugPrint("%s:%i\n", + SDL_GameControllerGetStringForButton(SDL_CONTROLLER_BUTTON_RIGHTSHOULDER), + SDL_GameControllerGetButton(gameController, SDL_CONTROLLER_BUTTON_RIGHTSHOULDER)); + debugPrint("\n"); + debugPrint("%s:%i\n", + SDL_GameControllerGetStringForButton(SDL_CONTROLLER_BUTTON_DPAD_UP), + SDL_GameControllerGetButton(gameController, SDL_CONTROLLER_BUTTON_DPAD_UP)); + debugPrint("%s:%i\n", + SDL_GameControllerGetStringForButton(SDL_CONTROLLER_BUTTON_DPAD_DOWN), + SDL_GameControllerGetButton(gameController, SDL_CONTROLLER_BUTTON_DPAD_DOWN)); + debugPrint("%s:%i\n", + SDL_GameControllerGetStringForButton(SDL_CONTROLLER_BUTTON_DPAD_LEFT), + SDL_GameControllerGetButton(gameController, SDL_CONTROLLER_BUTTON_DPAD_LEFT)); + debugPrint("%s:%i\n", + SDL_GameControllerGetStringForButton(SDL_CONTROLLER_BUTTON_DPAD_RIGHT), + SDL_GameControllerGetButton(gameController, SDL_CONTROLLER_BUTTON_DPAD_RIGHT)); + debugPrint("\n"); + debugPrint("%s:%i\n", + SDL_GameControllerGetStringForAxis(SDL_CONTROLLER_AXIS_LEFTX), + SDL_GameControllerGetAxis(gameController, SDL_CONTROLLER_AXIS_LEFTX)); + debugPrint("%s:%i\n", + SDL_GameControllerGetStringForAxis(SDL_CONTROLLER_AXIS_LEFTY), + SDL_GameControllerGetAxis(gameController, SDL_CONTROLLER_AXIS_LEFTY)); + debugPrint("%s:%i\n", + SDL_GameControllerGetStringForAxis(SDL_CONTROLLER_AXIS_RIGHTX), + SDL_GameControllerGetAxis(gameController, SDL_CONTROLLER_AXIS_RIGHTX)); + debugPrint("%s:%i\n", + SDL_GameControllerGetStringForAxis(SDL_CONTROLLER_AXIS_RIGHTY), + SDL_GameControllerGetAxis(gameController, SDL_CONTROLLER_AXIS_RIGHTY)); + debugPrint("%s:%i\n", + SDL_GameControllerGetStringForAxis(SDL_CONTROLLER_AXIS_TRIGGERLEFT), + SDL_GameControllerGetAxis(gameController, SDL_CONTROLLER_AXIS_TRIGGERLEFT)); + debugPrint("%s:%i\n", + SDL_GameControllerGetStringForAxis(SDL_CONTROLLER_AXIS_TRIGGERRIGHT), + SDL_GameControllerGetAxis(gameController, SDL_CONTROLLER_AXIS_TRIGGERRIGHT)); + XSleep(100); + } + + SDL_GameControllerClose(gameController); + SDL_QuitSubSystem(SDL_INIT_GAMECONTROLLER); + pb_kill(); + return 0; +}