Invaders game for the Gameduino

Dependencies:   Gameduino mbed

Committer:
TheChrisyd
Date:
Sat Oct 26 22:32:18 2013 +0000
Revision:
4:e82f4a87df9e
Parent:
2:20a89dc286d5
Shields are now destroyed when hit, corrected score displays

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 4:e82f4a87df9e 101
TheChrisyd 2:20a89dc286d5 102
TheChrisyd 2:20a89dc286d5 103 /*---------------------------------------------
TheChrisyd 2:20a89dc286d5 104 Joystick reader
TheChrisyd 2:20a89dc286d5 105 ---------------------------------------------*/
TheChrisyd 2:20a89dc286d5 106 static PROGMEM prog_uchar joystickPinList[] = {
TheChrisyd 2:20a89dc286d5 107 #ifdef BUTTON_A_PIN
TheChrisyd 2:20a89dc286d5 108 BUTTON_A_PIN
TheChrisyd 2:20a89dc286d5 109 #endif
TheChrisyd 2:20a89dc286d5 110 #ifdef BUTTON_B_PIN
TheChrisyd 2:20a89dc286d5 111 , BUTTON_B_PIN
TheChrisyd 2:20a89dc286d5 112 #endif
TheChrisyd 2:20a89dc286d5 113 #ifdef BUTTON_C_PIN
TheChrisyd 2:20a89dc286d5 114 , BUTTON_C_PIN
TheChrisyd 2:20a89dc286d5 115 #endif
TheChrisyd 2:20a89dc286d5 116 #ifdef BUTTON_X_PIN
TheChrisyd 2:20a89dc286d5 117 , BUTTON_X_PIN
TheChrisyd 2:20a89dc286d5 118 #endif
TheChrisyd 2:20a89dc286d5 119 #ifdef BUTTON_Y_PIN
TheChrisyd 2:20a89dc286d5 120 , BUTTON_Y_PIN
TheChrisyd 2:20a89dc286d5 121 #endif
TheChrisyd 2:20a89dc286d5 122 #ifdef BUTTON_Z_PIN
TheChrisyd 2:20a89dc286d5 123 , BUTTON_Z_PIN
TheChrisyd 2:20a89dc286d5 124 #endif
TheChrisyd 2:20a89dc286d5 125 #ifdef BUTTON_ST_PIN
TheChrisyd 2:20a89dc286d5 126 , BUTTON_ST_PIN
TheChrisyd 2:20a89dc286d5 127 #endif
TheChrisyd 2:20a89dc286d5 128 #ifdef BUTTON_SEL_PIN
TheChrisyd 2:20a89dc286d5 129 , BUTTON_SEL_PIN
TheChrisyd 2:20a89dc286d5 130 #endif
TheChrisyd 2:20a89dc286d5 131 #ifdef STICK_LEFT_PIN
TheChrisyd 2:20a89dc286d5 132 , STICK_LEFT_PIN,
TheChrisyd 2:20a89dc286d5 133 STICK_RIGHT_PIN,
TheChrisyd 2:20a89dc286d5 134 STICK_UP_PIN,
TheChrisyd 2:20a89dc286d5 135 STICK_DOWN_PIN
TheChrisyd 2:20a89dc286d5 136 #endif
TheChrisyd 2:20a89dc286d5 137 };
TheChrisyd 2:20a89dc286d5 138 Joystick::Joystick()
TheChrisyd 2:20a89dc286d5 139 {
TheChrisyd 2:20a89dc286d5 140 // set up digital pins for dpad and buttons
TheChrisyd 2:20a89dc286d5 141 // const prog_uchar *pin = joystickPinList;
TheChrisyd 2:20a89dc286d5 142 for (byte i=0; i<sizeof(joystickPinList); ++i) {
TheChrisyd 2:20a89dc286d5 143 byte p = pgm_read_byte(joystickPinList+i);
TheChrisyd 2:20a89dc286d5 144 //pinMode(p,INPUT);
TheChrisyd 2:20a89dc286d5 145 //digitalWrite(p,HIGH);
TheChrisyd 2:20a89dc286d5 146 }
TheChrisyd 2:20a89dc286d5 147 stickX = stickY = 0;
TheChrisyd 2:20a89dc286d5 148 xCal = yCal = 0;
TheChrisyd 2:20a89dc286d5 149 buttons = prev = dpad = 0;
TheChrisyd 2:20a89dc286d5 150
TheChrisyd 2:20a89dc286d5 151 #ifdef ANALOG_X_PIN
TheChrisyd 2:20a89dc286d5 152 dpad |= ANALOG_STICK_BIT;
TheChrisyd 2:20a89dc286d5 153 #endif
TheChrisyd 2:20a89dc286d5 154 }
TheChrisyd 2:20a89dc286d5 155 bool Joystick::hasAnalogStick()
TheChrisyd 2:20a89dc286d5 156 {
TheChrisyd 2:20a89dc286d5 157 return (dpad&ANALOG_STICK_BIT)!=0;
TheChrisyd 2:20a89dc286d5 158 }
TheChrisyd 2:20a89dc286d5 159 void Joystick::recalibrate()
TheChrisyd 2:20a89dc286d5 160 {
TheChrisyd 2:20a89dc286d5 161 read();
TheChrisyd 2:20a89dc286d5 162 xCal = stickX;
TheChrisyd 2:20a89dc286d5 163 yCal = stickY;
TheChrisyd 2:20a89dc286d5 164 }
TheChrisyd 2:20a89dc286d5 165 static char stickCalc(int a, char cal)
TheChrisyd 2:20a89dc286d5 166 {
TheChrisyd 2:20a89dc286d5 167 //a = ((analogRead(a)-512)/4)-cal;
TheChrisyd 2:20a89dc286d5 168 if (a < -128) a = -128;
TheChrisyd 2:20a89dc286d5 169 if (a > 127) a = 127;
TheChrisyd 2:20a89dc286d5 170 return char(a);
TheChrisyd 2:20a89dc286d5 171 }
TheChrisyd 2:20a89dc286d5 172 void Joystick::read()
TheChrisyd 2:20a89dc286d5 173 {
TheChrisyd 2:20a89dc286d5 174 // Joystick buttons
TheChrisyd 2:20a89dc286d5 175 prev = buttons;
TheChrisyd 2:20a89dc286d5 176 buttons = 0;
TheChrisyd 2:20a89dc286d5 177 #ifdef BUTTON_A_PIN
TheChrisyd 2:20a89dc286d5 178 // if (digitalRead(BUTTON_A_PIN)==LOW) { buttons |= buttonA; }
TheChrisyd 2:20a89dc286d5 179 #endif
TheChrisyd 2:20a89dc286d5 180 #ifdef BUTTON_B_PIN
TheChrisyd 2:20a89dc286d5 181 // if (digitalRead(BUTTON_B_PIN)==LOW) { buttons |= buttonB; }
TheChrisyd 2:20a89dc286d5 182 #endif
TheChrisyd 2:20a89dc286d5 183 #ifdef BUTTON_C_PIN
TheChrisyd 2:20a89dc286d5 184 // if (digitalRead(BUTTON_C_PIN)==LOW) { buttons |= buttonC; }
TheChrisyd 2:20a89dc286d5 185 #endif
TheChrisyd 2:20a89dc286d5 186 #ifdef BUTTON_X_PIN
TheChrisyd 2:20a89dc286d5 187 // if (digitalRead(BUTTON_X_PIN)==LOW) { buttons |= buttonX; }
TheChrisyd 2:20a89dc286d5 188 #endif
TheChrisyd 2:20a89dc286d5 189 #ifdef BUTTON_Y_PIN
TheChrisyd 2:20a89dc286d5 190 // if (digitalRead(BUTTON_Y_PIN)==LOW) { buttons |= buttonY; }
TheChrisyd 2:20a89dc286d5 191 #endif
TheChrisyd 2:20a89dc286d5 192 #ifdef BUTTON_Z_PIN
TheChrisyd 2:20a89dc286d5 193 // if (digitalRead(BUTTON_Z_PIN)==LOW) { buttons |= buttonZ; }
TheChrisyd 2:20a89dc286d5 194 #endif
TheChrisyd 2:20a89dc286d5 195 #ifdef BUTTON_SEL_PIN
TheChrisyd 2:20a89dc286d5 196 // if (digitalRead(BUTTON_SEL_PIN)==LOW){ buttons |= buttonSelect; }
TheChrisyd 2:20a89dc286d5 197 #endif
TheChrisyd 2:20a89dc286d5 198 #ifdef BUTTON_ST_PIN
TheChrisyd 2:20a89dc286d5 199 // if (digitalRead(BUTTON_ST_PIN)==LOW){ buttons |= buttonStart; }
TheChrisyd 2:20a89dc286d5 200 #endif
TheChrisyd 2:20a89dc286d5 201
TheChrisyd 2:20a89dc286d5 202 // Digital joystick/dpad
TheChrisyd 2:20a89dc286d5 203 dpad &= STICK_INFO_MASK; // The top bits are informational...preserve them
TheChrisyd 2:20a89dc286d5 204 #ifdef STICK_LEFT_PIN
TheChrisyd 2:20a89dc286d5 205 // if (!digitalRead(STICK_LEFT_PIN)) { dpad |= STICK_LEFT_BIT; }
TheChrisyd 2:20a89dc286d5 206 // if (!digitalRead(STICK_RIGHT_PIN)) { dpad |= STICK_RIGHT_BIT; }
TheChrisyd 2:20a89dc286d5 207 // if (!digitalRead(STICK_UP_PIN)) { dpad |= STICK_UP_BIT; }
TheChrisyd 2:20a89dc286d5 208 // if (!digitalRead(STICK_DOWN_PIN)) { dpad |= STICK_DOWN_BIT; }
TheChrisyd 2:20a89dc286d5 209 #ifdef DIGITAL_EMULATE_ANALOG
TheChrisyd 2:20a89dc286d5 210 stickX = 0;
TheChrisyd 2:20a89dc286d5 211 if (dpad&STICK_LEFT_BIT) { stickX = -127; }
TheChrisyd 2:20a89dc286d5 212 else if (dpad&STICK_RIGHT_BIT) { stickX = 127; }
TheChrisyd 2:20a89dc286d5 213 stickY = 0;
TheChrisyd 2:20a89dc286d5 214 if (dpad&STICK_UP_BIT) { stickY = 127; }
TheChrisyd 2:20a89dc286d5 215 else if (dpad&STICK_DOWN_BIT) { stickY = -127; }
TheChrisyd 2:20a89dc286d5 216 #endif
TheChrisyd 2:20a89dc286d5 217 #endif
TheChrisyd 2:20a89dc286d5 218
TheChrisyd 2:20a89dc286d5 219 // Analog stick
TheChrisyd 2:20a89dc286d5 220 #ifdef ANALOG_X_PIN
TheChrisyd 2:20a89dc286d5 221 stickX = stickCalc(ANALOG_X_PIN,xCal);
TheChrisyd 2:20a89dc286d5 222 #endif
TheChrisyd 2:20a89dc286d5 223 #ifdef ANALOG_Y_PIN
TheChrisyd 2:20a89dc286d5 224 stickY = stickCalc(ANALOG_Y_PIN,yCal);
TheChrisyd 2:20a89dc286d5 225 #endif
TheChrisyd 2:20a89dc286d5 226 #ifdef ANALOG_EMULATE_DIGITAL
TheChrisyd 2:20a89dc286d5 227 if (stickX < -40) { dpad |= STICK_LEFT_BIT; }
TheChrisyd 2:20a89dc286d5 228 else if (stickX > 40) { dpad |= STICK_RIGHT_BIT; }
TheChrisyd 2:20a89dc286d5 229 if (stickY > 40) { dpad |= STICK_UP_BIT; }
TheChrisyd 2:20a89dc286d5 230 else if (stickY < -40) { dpad |= STICK_DOWN_BIT; }
TheChrisyd 2:20a89dc286d5 231 #endif
TheChrisyd 2:20a89dc286d5 232 }
TheChrisyd 2:20a89dc286d5 233
TheChrisyd 2:20a89dc286d5 234 /*--------------------------------------------------------
TheChrisyd 2:20a89dc286d5 235 Useful function to show joystick status on screen.
TheChrisyd 2:20a89dc286d5 236
TheChrisyd 2:20a89dc286d5 237 Note: You won't make your program any smaller by
TheChrisyd 2:20a89dc286d5 238 removing this - the Arduino compiler is really,
TheChrisyd 2:20a89dc286d5 239 really good at discarding unused code.
TheChrisyd 2:20a89dc286d5 240
TheChrisyd 2:20a89dc286d5 241 ie. If you're not calling Joystick::dump() then it
TheChrisyd 2:20a89dc286d5 242 doesn't take up any space. Try it and see...!
TheChrisyd 2:20a89dc286d5 243 --------------------------------------------------------*/
TheChrisyd 2:20a89dc286d5 244 // Formatted output of joystick position
TheChrisyd 2:20a89dc286d5 245 static void jpos(int v, char *s, char t)
TheChrisyd 2:20a89dc286d5 246 {
TheChrisyd 2:20a89dc286d5 247 *s++ = t;
TheChrisyd 2:20a89dc286d5 248 *s++ = ':';
TheChrisyd 2:20a89dc286d5 249 boolean neg = (v<0);
TheChrisyd 2:20a89dc286d5 250 if (neg) {
TheChrisyd 2:20a89dc286d5 251 v = -v;
TheChrisyd 2:20a89dc286d5 252 }
TheChrisyd 2:20a89dc286d5 253 char *o = s;
TheChrisyd 2:20a89dc286d5 254 int m = 1000;
TheChrisyd 2:20a89dc286d5 255 while (m != 0) {
TheChrisyd 2:20a89dc286d5 256 int d = v/m;
TheChrisyd 2:20a89dc286d5 257 *o++ = d+'0';
TheChrisyd 2:20a89dc286d5 258 v -= d*m;
TheChrisyd 2:20a89dc286d5 259 m /= 10;
TheChrisyd 2:20a89dc286d5 260 }
TheChrisyd 2:20a89dc286d5 261 *o-- = 0;
TheChrisyd 2:20a89dc286d5 262 // Remove leading zeros
TheChrisyd 2:20a89dc286d5 263 while ((s<o) and (*s=='0')) {
TheChrisyd 2:20a89dc286d5 264 *s++ = ' ';
TheChrisyd 2:20a89dc286d5 265 }
TheChrisyd 2:20a89dc286d5 266 if (neg) {
TheChrisyd 2:20a89dc286d5 267 s[-1] = '-';
TheChrisyd 2:20a89dc286d5 268 }
TheChrisyd 2:20a89dc286d5 269 }
TheChrisyd 2:20a89dc286d5 270 void Joystick::dump(int sx, int sy)
TheChrisyd 2:20a89dc286d5 271 {
TheChrisyd 2:20a89dc286d5 272 char temp[32];
TheChrisyd 2:20a89dc286d5 273 if (hasAnalogStick()) {
TheChrisyd 2:20a89dc286d5 274 jpos(analogX(),temp,'X');
TheChrisyd 2:20a89dc286d5 275 GD.putstr(sx,sy++,temp);
TheChrisyd 2:20a89dc286d5 276 jpos(analogY(),temp,'Y');
TheChrisyd 2:20a89dc286d5 277 GD.putstr(sx,sy++,temp);
TheChrisyd 2:20a89dc286d5 278 }
TheChrisyd 2:20a89dc286d5 279 temp[0] = 'D';
TheChrisyd 2:20a89dc286d5 280 temp[1] = ':';
TheChrisyd 2:20a89dc286d5 281 char *s = temp+2;
TheChrisyd 2:20a89dc286d5 282 *s++ = left() ?'L':'.';
TheChrisyd 2:20a89dc286d5 283 *s++ = right() ?'R':'.';
TheChrisyd 2:20a89dc286d5 284 *s++ = up() ?'U':'.';
TheChrisyd 2:20a89dc286d5 285 *s++ = down() ?'D':'.';
TheChrisyd 2:20a89dc286d5 286 *s = 0;
TheChrisyd 2:20a89dc286d5 287 GD.putstr(sx,sy++,temp);
TheChrisyd 2:20a89dc286d5 288 temp[0] = 'B';
TheChrisyd 2:20a89dc286d5 289 s = temp+2;
TheChrisyd 2:20a89dc286d5 290 *s++ = (buttons&buttonSelect)?'L':'.';
TheChrisyd 2:20a89dc286d5 291 *s++ = (buttons&buttonStart)?'S':'.';
TheChrisyd 2:20a89dc286d5 292 *s++ = (buttons&buttonZ)?'Z':'.';
TheChrisyd 2:20a89dc286d5 293 *s++ = (buttons&buttonY)?'Y':'.';
TheChrisyd 2:20a89dc286d5 294 *s++ = (buttons&buttonX)?'X':'.';
TheChrisyd 2:20a89dc286d5 295 *s++ = (buttons&buttonC)?'C':'.';
TheChrisyd 2:20a89dc286d5 296 *s++ = (buttons&buttonB)?'B':'.';
TheChrisyd 2:20a89dc286d5 297 *s++ = (buttons&buttonA)?'A':'.';
TheChrisyd 2:20a89dc286d5 298 *s = 0;
TheChrisyd 2:20a89dc286d5 299 GD.putstr(sx,sy++,temp);
TheChrisyd 0:8a7c58553b44 300 }