Skip to content

Commit

Permalink
sdl: Add sdl_gamecontroller sample
Browse files Browse the repository at this point in the history
  • Loading branch information
dracc committed Jul 27, 2019
1 parent 466b78c commit a0f35be
Show file tree
Hide file tree
Showing 2 changed files with 112 additions and 0 deletions.
8 changes: 8 additions & 0 deletions samples/sdl_gamecontroller/Makefile
Original file line number Diff line number Diff line change
@@ -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
104 changes: 104 additions & 0 deletions samples/sdl_gamecontroller/main.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
#include <xboxrt/debug.h>
#include <pbkit/pbkit.h>
#include <hal/video.h>
#include <hal/xbox.h>
#include <assert.h>
#include <SDL.h>
#include <stdbool.h>

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;
}

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;
}

0 comments on commit a0f35be

Please sign in to comment.