Space invaders with a nRF2401A wireless joypad

Dependencies:   Gameduino mbed nRF2401A

Fork of Gameduino_Invaders_game by Chris Dick

Gameduino and an nRF2401A hooked up to an mbed on an mbeduino:

/media/uploads/TheChrisyd/2014-03-08_22.53.54.jpg

Committer:
TheChrisyd
Date:
Sun Mar 09 12:27:20 2014 +0000
Revision:
5:3ede9991d8e0
Parent:
4:bb78bedae411
Update to match Library update

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TheChrisyd 2:20a89dc286d5 1 /*------------------------------------------------------------
TheChrisyd 2:20a89dc286d5 2 Universal joystick driver for Gameduino
TheChrisyd 2:20a89dc286d5 3
TheChrisyd 2:20a89dc286d5 4 http://www.artlum.com/gameduino/gameduino.html#joystick
TheChrisyd 2:20a89dc286d5 5 ------------------------------------------------------------*/
TheChrisyd 2:20a89dc286d5 6 #include "joystick.h"
TheChrisyd 2:20a89dc286d5 7 #include "GD.h"
TheChrisyd 4:bb78bedae411 8 //#include "nRF2401A.h"
TheChrisyd 2:20a89dc286d5 9 //#include <SPI.h>
TheChrisyd 2:20a89dc286d5 10 //#include <GD.h>
TheChrisyd 2:20a89dc286d5 11
TheChrisyd 2:20a89dc286d5 12 // Change this line to enable your customized
TheChrisyd 2:20a89dc286d5 13 // joystick configuration
TheChrisyd 2:20a89dc286d5 14 // "1" = custom configuration
TheChrisyd 2:20a89dc286d5 15 // "0" = default (Sparkfun joystick)
TheChrisyd 2:20a89dc286d5 16 //
TheChrisyd 2:20a89dc286d5 17 #define CUSTOM_JOYSTICK 0
TheChrisyd 4:bb78bedae411 18 #define WIRELESS
TheChrisyd 2:20a89dc286d5 19 extern GDClass GD;
TheChrisyd 4:bb78bedae411 20 //extern nRF2401A wireless_joypad;
TheChrisyd 4:bb78bedae411 21 extern byte wireless_dpad;
TheChrisyd 4:bb78bedae411 22 extern byte wireless_buttons;
TheChrisyd 2:20a89dc286d5 23 #if CUSTOM_JOYSTICK
TheChrisyd 2:20a89dc286d5 24 /*------------------------------------------------------------------
TheChrisyd 2:20a89dc286d5 25 Custom joystick configuration. This is what you need to
TheChrisyd 2:20a89dc286d5 26 hack to get your joystick working.
TheChrisyd 2:20a89dc286d5 27
TheChrisyd 2:20a89dc286d5 28 The joystick layout can be customized by commenting
TheChrisyd 2:20a89dc286d5 29 or uncommenting the lines below.
TheChrisyd 2:20a89dc286d5 30
TheChrisyd 2:20a89dc286d5 31 Notes
TheChrisyd 2:20a89dc286d5 32 -----
TheChrisyd 2:20a89dc286d5 33 To specify an analog pin for a button add "A0" to
TheChrisyd 2:20a89dc286d5 34 the pin number, eg. Analog pin 4 is "A0+4"
TheChrisyd 2:20a89dc286d5 35
TheChrisyd 2:20a89dc286d5 36 When connecting a Joystick to an Arduino:
TheChrisyd 2:20a89dc286d5 37 * Digital pins 0/1 are used for system stuff.
TheChrisyd 2:20a89dc286d5 38 * Gameduino uses pins 2/9/10/11/13 for SPI interface
TheChrisyd 2:20a89dc286d5 39
TheChrisyd 2:20a89dc286d5 40 That leaves digital pins 3/4/5/6/7/8/10 free, plus
TheChrisyd 2:20a89dc286d5 41 all the analog pins (which work as digital pins, too!)
TheChrisyd 2:20a89dc286d5 42 ------------------------------------------------------------------*/
TheChrisyd 2:20a89dc286d5 43
TheChrisyd 2:20a89dc286d5 44 // eg. The following layout is good for an NES controller
TheChrisyd 2:20a89dc286d5 45
TheChrisyd 2:20a89dc286d5 46 // Connect the four buttons to pins 3/4/5/6
TheChrisyd 2:20a89dc286d5 47 #define BUTTON_A_PIN 3
TheChrisyd 2:20a89dc286d5 48 #define BUTTON_B_PIN 4
TheChrisyd 2:20a89dc286d5 49 //#define BUTTON_C_PIN ?
TheChrisyd 2:20a89dc286d5 50 //#define BUTTON_X_PIN ?
TheChrisyd 2:20a89dc286d5 51 //#define BUTTON_Y_PIN ?
TheChrisyd 2:20a89dc286d5 52 //#define BUTTON_Z_PIN ?
TheChrisyd 2:20a89dc286d5 53 #define BUTTON_ST_PIN 5
TheChrisyd 2:20a89dc286d5 54 #define BUTTON_SEL_PIN 6
TheChrisyd 2:20a89dc286d5 55
TheChrisyd 2:20a89dc286d5 56 // Connect the DPAD L/R/U/D to analog pins 2/3/4/5
TheChrisyd 2:20a89dc286d5 57 #define STICK_LEFT_PIN (A0+2)
TheChrisyd 2:20a89dc286d5 58 #define STICK_RIGHT_PIN (A0+3)
TheChrisyd 2:20a89dc286d5 59 #define STICK_UP_PIN (A0+4)
TheChrisyd 2:20a89dc286d5 60 #define STICK_DOWN_PIN (A0+5)
TheChrisyd 2:20a89dc286d5 61
TheChrisyd 2:20a89dc286d5 62 // Analog input is disabled...
TheChrisyd 2:20a89dc286d5 63 //#define ANALOG_X_PIN ?
TheChrisyd 2:20a89dc286d5 64 //#define ANALOG_Y_PIN ?
TheChrisyd 2:20a89dc286d5 65
TheChrisyd 2:20a89dc286d5 66 // Make the DPAD emulate an analog joystick
TheChrisyd 2:20a89dc286d5 67 #define DIGITAL_EMULATE_ANALOG
TheChrisyd 2:20a89dc286d5 68 //#define ANALOG_EMULATE_DIGITAL
TheChrisyd 2:20a89dc286d5 69
TheChrisyd 2:20a89dc286d5 70 #else
TheChrisyd 4:bb78bedae411 71
TheChrisyd 4:bb78bedae411 72 #ifndef WIRELESS
TheChrisyd 4:bb78bedae411 73
TheChrisyd 2:20a89dc286d5 74 /*------------------------------------------------------------------
TheChrisyd 2:20a89dc286d5 75 Default: Sparkfun joystick
TheChrisyd 2:20a89dc286d5 76 ------------------------------------------------------------------*/
TheChrisyd 2:20a89dc286d5 77 #define BUTTON_A_PIN 3
TheChrisyd 2:20a89dc286d5 78 #define BUTTON_B_PIN 4
TheChrisyd 2:20a89dc286d5 79 // #define BUTTON_C_PIN ?
TheChrisyd 2:20a89dc286d5 80 // nb. Button X is pin 7 if you've hacked your board
TheChrisyd 2:20a89dc286d5 81 #define BUTTON_X_PIN 2
TheChrisyd 2:20a89dc286d5 82 // #define BUTTON_Y_PIN ?
TheChrisyd 2:20a89dc286d5 83 // #define BUTTON_Z_PIN ?
TheChrisyd 2:20a89dc286d5 84 #define BUTTON_ST_PIN 5
TheChrisyd 2:20a89dc286d5 85 #define BUTTON_SEL_PIN 6
TheChrisyd 2:20a89dc286d5 86
TheChrisyd 2:20a89dc286d5 87 // Digital joystick/DPAD
TheChrisyd 2:20a89dc286d5 88 //#define STICK_LEFT_PIN 11
TheChrisyd 2:20a89dc286d5 89 //#define STICK_RIGHT_PIN 12
TheChrisyd 2:20a89dc286d5 90 //#define STICK_UP_PIN 13
TheChrisyd 2:20a89dc286d5 91 //#define STICK_DOWN_PIN 14
TheChrisyd 2:20a89dc286d5 92
TheChrisyd 2:20a89dc286d5 93 // Analog joystick is enabled
TheChrisyd 2:20a89dc286d5 94 #define ANALOG_X_PIN 0
TheChrisyd 2:20a89dc286d5 95 #define ANALOG_Y_PIN 1
TheChrisyd 2:20a89dc286d5 96
TheChrisyd 2:20a89dc286d5 97 // Enable digital joystick emulation
TheChrisyd 2:20a89dc286d5 98 // #define DIGITAL_EMULATE_ANALOG
TheChrisyd 2:20a89dc286d5 99 #define ANALOG_EMULATE_DIGITAL
TheChrisyd 2:20a89dc286d5 100
TheChrisyd 2:20a89dc286d5 101 #endif
TheChrisyd 4:bb78bedae411 102 #endif
TheChrisyd 2:20a89dc286d5 103 /*------------------------------------------------------
TheChrisyd 2:20a89dc286d5 104 Stop hacking now...!
TheChrisyd 2:20a89dc286d5 105
TheChrisyd 2:20a89dc286d5 106 There are no user-servicable parts below this line
TheChrisyd 2:20a89dc286d5 107 ------------------------------------------------------*/
TheChrisyd 4:bb78bedae411 108
TheChrisyd 2:20a89dc286d5 109
TheChrisyd 4:bb78bedae411 110 #ifndef WIRELESS
TheChrisyd 2:20a89dc286d5 111 /*---------------------------------------------
TheChrisyd 2:20a89dc286d5 112 Joystick reader
TheChrisyd 2:20a89dc286d5 113 ---------------------------------------------*/
TheChrisyd 2:20a89dc286d5 114 static PROGMEM prog_uchar joystickPinList[] = {
TheChrisyd 2:20a89dc286d5 115 #ifdef BUTTON_A_PIN
TheChrisyd 2:20a89dc286d5 116 BUTTON_A_PIN
TheChrisyd 2:20a89dc286d5 117 #endif
TheChrisyd 2:20a89dc286d5 118 #ifdef BUTTON_B_PIN
TheChrisyd 2:20a89dc286d5 119 , BUTTON_B_PIN
TheChrisyd 2:20a89dc286d5 120 #endif
TheChrisyd 2:20a89dc286d5 121 #ifdef BUTTON_C_PIN
TheChrisyd 2:20a89dc286d5 122 , BUTTON_C_PIN
TheChrisyd 2:20a89dc286d5 123 #endif
TheChrisyd 2:20a89dc286d5 124 #ifdef BUTTON_X_PIN
TheChrisyd 2:20a89dc286d5 125 , BUTTON_X_PIN
TheChrisyd 2:20a89dc286d5 126 #endif
TheChrisyd 2:20a89dc286d5 127 #ifdef BUTTON_Y_PIN
TheChrisyd 2:20a89dc286d5 128 , BUTTON_Y_PIN
TheChrisyd 2:20a89dc286d5 129 #endif
TheChrisyd 2:20a89dc286d5 130 #ifdef BUTTON_Z_PIN
TheChrisyd 2:20a89dc286d5 131 , BUTTON_Z_PIN
TheChrisyd 2:20a89dc286d5 132 #endif
TheChrisyd 2:20a89dc286d5 133 #ifdef BUTTON_ST_PIN
TheChrisyd 2:20a89dc286d5 134 , BUTTON_ST_PIN
TheChrisyd 2:20a89dc286d5 135 #endif
TheChrisyd 2:20a89dc286d5 136 #ifdef BUTTON_SEL_PIN
TheChrisyd 2:20a89dc286d5 137 , BUTTON_SEL_PIN
TheChrisyd 2:20a89dc286d5 138 #endif
TheChrisyd 2:20a89dc286d5 139 #ifdef STICK_LEFT_PIN
TheChrisyd 2:20a89dc286d5 140 , STICK_LEFT_PIN,
TheChrisyd 2:20a89dc286d5 141 STICK_RIGHT_PIN,
TheChrisyd 2:20a89dc286d5 142 STICK_UP_PIN,
TheChrisyd 2:20a89dc286d5 143 STICK_DOWN_PIN
TheChrisyd 2:20a89dc286d5 144 #endif
TheChrisyd 2:20a89dc286d5 145 };
TheChrisyd 4:bb78bedae411 146 #endif
TheChrisyd 4:bb78bedae411 147
TheChrisyd 4:bb78bedae411 148 #ifdef WIRELESS
TheChrisyd 4:bb78bedae411 149
TheChrisyd 4:bb78bedae411 150 #endif
TheChrisyd 2:20a89dc286d5 151 Joystick::Joystick()
TheChrisyd 2:20a89dc286d5 152 {
TheChrisyd 4:bb78bedae411 153 #ifdef WIRELESS
TheChrisyd 4:bb78bedae411 154 // wireless_joypad.attachRXHandler(&nRF2401A_rx, 0);
TheChrisyd 4:bb78bedae411 155 #else
TheChrisyd 2:20a89dc286d5 156 // set up digital pins for dpad and buttons
TheChrisyd 2:20a89dc286d5 157 // const prog_uchar *pin = joystickPinList;
TheChrisyd 2:20a89dc286d5 158 for (byte i=0; i<sizeof(joystickPinList); ++i) {
TheChrisyd 2:20a89dc286d5 159 byte p = pgm_read_byte(joystickPinList+i);
TheChrisyd 2:20a89dc286d5 160 //pinMode(p,INPUT);
TheChrisyd 2:20a89dc286d5 161 //digitalWrite(p,HIGH);
TheChrisyd 4:bb78bedae411 162 }
TheChrisyd 4:bb78bedae411 163 #endif
TheChrisyd 4:bb78bedae411 164
TheChrisyd 4:bb78bedae411 165
TheChrisyd 2:20a89dc286d5 166 stickX = stickY = 0;
TheChrisyd 2:20a89dc286d5 167 xCal = yCal = 0;
TheChrisyd 2:20a89dc286d5 168 buttons = prev = dpad = 0;
TheChrisyd 2:20a89dc286d5 169
TheChrisyd 2:20a89dc286d5 170 #ifdef ANALOG_X_PIN
TheChrisyd 2:20a89dc286d5 171 dpad |= ANALOG_STICK_BIT;
TheChrisyd 2:20a89dc286d5 172 #endif
TheChrisyd 2:20a89dc286d5 173 }
TheChrisyd 4:bb78bedae411 174
TheChrisyd 2:20a89dc286d5 175 bool Joystick::hasAnalogStick()
TheChrisyd 2:20a89dc286d5 176 {
TheChrisyd 2:20a89dc286d5 177 return (dpad&ANALOG_STICK_BIT)!=0;
TheChrisyd 2:20a89dc286d5 178 }
TheChrisyd 4:bb78bedae411 179
TheChrisyd 2:20a89dc286d5 180 void Joystick::recalibrate()
TheChrisyd 2:20a89dc286d5 181 {
TheChrisyd 4:bb78bedae411 182
TheChrisyd 2:20a89dc286d5 183 read();
TheChrisyd 2:20a89dc286d5 184 xCal = stickX;
TheChrisyd 2:20a89dc286d5 185 yCal = stickY;
TheChrisyd 2:20a89dc286d5 186 }
TheChrisyd 2:20a89dc286d5 187 static char stickCalc(int a, char cal)
TheChrisyd 2:20a89dc286d5 188 {
TheChrisyd 2:20a89dc286d5 189 //a = ((analogRead(a)-512)/4)-cal;
TheChrisyd 2:20a89dc286d5 190 if (a < -128) a = -128;
TheChrisyd 2:20a89dc286d5 191 if (a > 127) a = 127;
TheChrisyd 2:20a89dc286d5 192 return char(a);
TheChrisyd 2:20a89dc286d5 193 }
TheChrisyd 2:20a89dc286d5 194 void Joystick::read()
TheChrisyd 2:20a89dc286d5 195 {
TheChrisyd 2:20a89dc286d5 196 // Joystick buttons
TheChrisyd 2:20a89dc286d5 197 prev = buttons;
TheChrisyd 2:20a89dc286d5 198 buttons = 0;
TheChrisyd 2:20a89dc286d5 199 #ifdef BUTTON_A_PIN
TheChrisyd 2:20a89dc286d5 200 // if (digitalRead(BUTTON_A_PIN)==LOW) { buttons |= buttonA; }
TheChrisyd 2:20a89dc286d5 201 #endif
TheChrisyd 2:20a89dc286d5 202 #ifdef BUTTON_B_PIN
TheChrisyd 2:20a89dc286d5 203 // if (digitalRead(BUTTON_B_PIN)==LOW) { buttons |= buttonB; }
TheChrisyd 2:20a89dc286d5 204 #endif
TheChrisyd 2:20a89dc286d5 205 #ifdef BUTTON_C_PIN
TheChrisyd 2:20a89dc286d5 206 // if (digitalRead(BUTTON_C_PIN)==LOW) { buttons |= buttonC; }
TheChrisyd 2:20a89dc286d5 207 #endif
TheChrisyd 2:20a89dc286d5 208 #ifdef BUTTON_X_PIN
TheChrisyd 2:20a89dc286d5 209 // if (digitalRead(BUTTON_X_PIN)==LOW) { buttons |= buttonX; }
TheChrisyd 2:20a89dc286d5 210 #endif
TheChrisyd 2:20a89dc286d5 211 #ifdef BUTTON_Y_PIN
TheChrisyd 2:20a89dc286d5 212 // if (digitalRead(BUTTON_Y_PIN)==LOW) { buttons |= buttonY; }
TheChrisyd 2:20a89dc286d5 213 #endif
TheChrisyd 2:20a89dc286d5 214 #ifdef BUTTON_Z_PIN
TheChrisyd 2:20a89dc286d5 215 // if (digitalRead(BUTTON_Z_PIN)==LOW) { buttons |= buttonZ; }
TheChrisyd 2:20a89dc286d5 216 #endif
TheChrisyd 2:20a89dc286d5 217 #ifdef BUTTON_SEL_PIN
TheChrisyd 2:20a89dc286d5 218 // if (digitalRead(BUTTON_SEL_PIN)==LOW){ buttons |= buttonSelect; }
TheChrisyd 2:20a89dc286d5 219 #endif
TheChrisyd 2:20a89dc286d5 220 #ifdef BUTTON_ST_PIN
TheChrisyd 2:20a89dc286d5 221 // if (digitalRead(BUTTON_ST_PIN)==LOW){ buttons |= buttonStart; }
TheChrisyd 2:20a89dc286d5 222 #endif
TheChrisyd 4:bb78bedae411 223 #ifndef WIRELESS
TheChrisyd 2:20a89dc286d5 224 // Digital joystick/dpad
TheChrisyd 2:20a89dc286d5 225 dpad &= STICK_INFO_MASK; // The top bits are informational...preserve them
TheChrisyd 4:bb78bedae411 226 #else
TheChrisyd 4:bb78bedae411 227 dpad = wireless_dpad;
TheChrisyd 4:bb78bedae411 228 buttons = wireless_buttons;
TheChrisyd 4:bb78bedae411 229 #endif
TheChrisyd 4:bb78bedae411 230
TheChrisyd 2:20a89dc286d5 231 #ifdef STICK_LEFT_PIN
TheChrisyd 2:20a89dc286d5 232 // if (!digitalRead(STICK_LEFT_PIN)) { dpad |= STICK_LEFT_BIT; }
TheChrisyd 2:20a89dc286d5 233 // if (!digitalRead(STICK_RIGHT_PIN)) { dpad |= STICK_RIGHT_BIT; }
TheChrisyd 2:20a89dc286d5 234 // if (!digitalRead(STICK_UP_PIN)) { dpad |= STICK_UP_BIT; }
TheChrisyd 2:20a89dc286d5 235 // if (!digitalRead(STICK_DOWN_PIN)) { dpad |= STICK_DOWN_BIT; }
TheChrisyd 2:20a89dc286d5 236 #ifdef DIGITAL_EMULATE_ANALOG
TheChrisyd 2:20a89dc286d5 237 stickX = 0;
TheChrisyd 2:20a89dc286d5 238 if (dpad&STICK_LEFT_BIT) { stickX = -127; }
TheChrisyd 2:20a89dc286d5 239 else if (dpad&STICK_RIGHT_BIT) { stickX = 127; }
TheChrisyd 2:20a89dc286d5 240 stickY = 0;
TheChrisyd 2:20a89dc286d5 241 if (dpad&STICK_UP_BIT) { stickY = 127; }
TheChrisyd 2:20a89dc286d5 242 else if (dpad&STICK_DOWN_BIT) { stickY = -127; }
TheChrisyd 2:20a89dc286d5 243 #endif
TheChrisyd 2:20a89dc286d5 244 #endif
TheChrisyd 2:20a89dc286d5 245
TheChrisyd 2:20a89dc286d5 246 // Analog stick
TheChrisyd 2:20a89dc286d5 247 #ifdef ANALOG_X_PIN
TheChrisyd 2:20a89dc286d5 248 stickX = stickCalc(ANALOG_X_PIN,xCal);
TheChrisyd 2:20a89dc286d5 249 #endif
TheChrisyd 2:20a89dc286d5 250 #ifdef ANALOG_Y_PIN
TheChrisyd 2:20a89dc286d5 251 stickY = stickCalc(ANALOG_Y_PIN,yCal);
TheChrisyd 2:20a89dc286d5 252 #endif
TheChrisyd 2:20a89dc286d5 253 #ifdef ANALOG_EMULATE_DIGITAL
TheChrisyd 2:20a89dc286d5 254 if (stickX < -40) { dpad |= STICK_LEFT_BIT; }
TheChrisyd 2:20a89dc286d5 255 else if (stickX > 40) { dpad |= STICK_RIGHT_BIT; }
TheChrisyd 2:20a89dc286d5 256 if (stickY > 40) { dpad |= STICK_UP_BIT; }
TheChrisyd 2:20a89dc286d5 257 else if (stickY < -40) { dpad |= STICK_DOWN_BIT; }
TheChrisyd 2:20a89dc286d5 258 #endif
TheChrisyd 2:20a89dc286d5 259 }
TheChrisyd 2:20a89dc286d5 260
TheChrisyd 2:20a89dc286d5 261 /*--------------------------------------------------------
TheChrisyd 2:20a89dc286d5 262 Useful function to show joystick status on screen.
TheChrisyd 2:20a89dc286d5 263
TheChrisyd 2:20a89dc286d5 264 Note: You won't make your program any smaller by
TheChrisyd 2:20a89dc286d5 265 removing this - the Arduino compiler is really,
TheChrisyd 2:20a89dc286d5 266 really good at discarding unused code.
TheChrisyd 2:20a89dc286d5 267
TheChrisyd 2:20a89dc286d5 268 ie. If you're not calling Joystick::dump() then it
TheChrisyd 2:20a89dc286d5 269 doesn't take up any space. Try it and see...!
TheChrisyd 2:20a89dc286d5 270 --------------------------------------------------------*/
TheChrisyd 2:20a89dc286d5 271 // Formatted output of joystick position
TheChrisyd 2:20a89dc286d5 272 static void jpos(int v, char *s, char t)
TheChrisyd 2:20a89dc286d5 273 {
TheChrisyd 2:20a89dc286d5 274 *s++ = t;
TheChrisyd 2:20a89dc286d5 275 *s++ = ':';
TheChrisyd 2:20a89dc286d5 276 boolean neg = (v<0);
TheChrisyd 2:20a89dc286d5 277 if (neg) {
TheChrisyd 2:20a89dc286d5 278 v = -v;
TheChrisyd 2:20a89dc286d5 279 }
TheChrisyd 2:20a89dc286d5 280 char *o = s;
TheChrisyd 2:20a89dc286d5 281 int m = 1000;
TheChrisyd 2:20a89dc286d5 282 while (m != 0) {
TheChrisyd 2:20a89dc286d5 283 int d = v/m;
TheChrisyd 2:20a89dc286d5 284 *o++ = d+'0';
TheChrisyd 2:20a89dc286d5 285 v -= d*m;
TheChrisyd 2:20a89dc286d5 286 m /= 10;
TheChrisyd 2:20a89dc286d5 287 }
TheChrisyd 2:20a89dc286d5 288 *o-- = 0;
TheChrisyd 2:20a89dc286d5 289 // Remove leading zeros
TheChrisyd 2:20a89dc286d5 290 while ((s<o) and (*s=='0')) {
TheChrisyd 2:20a89dc286d5 291 *s++ = ' ';
TheChrisyd 2:20a89dc286d5 292 }
TheChrisyd 2:20a89dc286d5 293 if (neg) {
TheChrisyd 2:20a89dc286d5 294 s[-1] = '-';
TheChrisyd 2:20a89dc286d5 295 }
TheChrisyd 2:20a89dc286d5 296 }
TheChrisyd 2:20a89dc286d5 297 void Joystick::dump(int sx, int sy)
TheChrisyd 2:20a89dc286d5 298 {
TheChrisyd 2:20a89dc286d5 299 char temp[32];
TheChrisyd 2:20a89dc286d5 300 if (hasAnalogStick()) {
TheChrisyd 2:20a89dc286d5 301 jpos(analogX(),temp,'X');
TheChrisyd 2:20a89dc286d5 302 GD.putstr(sx,sy++,temp);
TheChrisyd 2:20a89dc286d5 303 jpos(analogY(),temp,'Y');
TheChrisyd 2:20a89dc286d5 304 GD.putstr(sx,sy++,temp);
TheChrisyd 2:20a89dc286d5 305 }
TheChrisyd 2:20a89dc286d5 306 temp[0] = 'D';
TheChrisyd 2:20a89dc286d5 307 temp[1] = ':';
TheChrisyd 2:20a89dc286d5 308 char *s = temp+2;
TheChrisyd 2:20a89dc286d5 309 *s++ = left() ?'L':'.';
TheChrisyd 2:20a89dc286d5 310 *s++ = right() ?'R':'.';
TheChrisyd 2:20a89dc286d5 311 *s++ = up() ?'U':'.';
TheChrisyd 2:20a89dc286d5 312 *s++ = down() ?'D':'.';
TheChrisyd 2:20a89dc286d5 313 *s = 0;
TheChrisyd 2:20a89dc286d5 314 GD.putstr(sx,sy++,temp);
TheChrisyd 2:20a89dc286d5 315 temp[0] = 'B';
TheChrisyd 2:20a89dc286d5 316 s = temp+2;
TheChrisyd 2:20a89dc286d5 317 *s++ = (buttons&buttonSelect)?'L':'.';
TheChrisyd 2:20a89dc286d5 318 *s++ = (buttons&buttonStart)?'S':'.';
TheChrisyd 2:20a89dc286d5 319 *s++ = (buttons&buttonZ)?'Z':'.';
TheChrisyd 2:20a89dc286d5 320 *s++ = (buttons&buttonY)?'Y':'.';
TheChrisyd 2:20a89dc286d5 321 *s++ = (buttons&buttonX)?'X':'.';
TheChrisyd 2:20a89dc286d5 322 *s++ = (buttons&buttonC)?'C':'.';
TheChrisyd 2:20a89dc286d5 323 *s++ = (buttons&buttonB)?'B':'.';
TheChrisyd 2:20a89dc286d5 324 *s++ = (buttons&buttonA)?'A':'.';
TheChrisyd 2:20a89dc286d5 325 *s = 0;
TheChrisyd 2:20a89dc286d5 326 GD.putstr(sx,sy++,temp);
TheChrisyd 0:8a7c58553b44 327 }