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 Dec 20 21:33:52 2012 +0000
Revision:
2:20a89dc286d5
Parent:
1:f44175dd69fd
Child:
4:bb78bedae411
Shields aren't destroyed when hit, life sprites aren't displaying properly.

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