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:
Thu Jun 21 19:13:34 2012 +0000
Revision:
0:8a7c58553b44
Child:
1:f44175dd69fd
backup before adding more features

Who changed what in which revision?

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