Game entry for the Game Programming Contest sponsored by OutrageousCircuits.com (RETRO Game Console)

Dependencies:   mbed

Fork of Official_RETRO by GHI Electronics

Revision:
4:2d41b942a823
Parent:
1:cd8a3926f263
--- a/DisplayN18.cpp	Sat Feb 14 11:40:55 2015 +0000
+++ b/DisplayN18.cpp	Sun Mar 01 09:34:29 2015 +0000
@@ -189,10 +189,10 @@
 }
 
 void DisplayN18::drawRect(int x, int y, int width, int height, unsigned short foreColor) {
-    this->drawLine(x, y, x + width, y, foreColor);
-    this->drawLine(x, y + height, x + width, y + height, foreColor);
-    this->drawLine(x, y, x, y + height, foreColor);
-    this->drawLine(x + width, y, x + width, y + height, foreColor);
+    //this->drawLine(x, y, x + width, y, foreColor);
+    //this->drawLine(x, y + height, x + width, y + height, foreColor);
+    //this->drawLine(x, y, x, y + height, foreColor);
+    //this->drawLine(x + width, y, x + width, y + height, foreColor);
 }
 
 void DisplayN18::fillCircle(int x, int y, int radius, unsigned short foreColor) {
@@ -263,6 +263,7 @@
     }
 }
 
+/*
 void DisplayN18::drawLine(int x0, int y0, int x1, int y1, unsigned short foreColor) {
     if (x0 == x1) {
         if (y1 < y0) {
@@ -349,10 +350,11 @@
         }
     }
 }
+*/
 
-unsigned char characters[95 * 5] = {
+unsigned char characters[59 * 5] = {
     0x00, 0x00, 0x00, 0x00, 0x00, /* Space  0x20 */
-    0x00, 0x00, 0x4f, 0x00, 0x00, /* ! */
+    0x00, 0x4f, 0x4f, 0x00, 0x00, /* ! */
     0x00, 0x07, 0x00, 0x07, 0x00, /* " */
     0x14, 0x7f, 0x14, 0x7f, 0x14, /* # */
     0x24, 0x2a, 0x7f, 0x2a, 0x12, /* $ */
@@ -367,87 +369,70 @@
     0x08, 0x08, 0x08, 0x08, 0x08, /* - */
     0x00, 0x60, 0x60, 0x00, 0x00, /* . */
     0x20, 0x10, 0x08, 0x04, 0x02, /* / */
-    0x3e, 0x51, 0x49, 0x45, 0x3e, /* 0      0x30 */
-    0x00, 0x42, 0x7f, 0x40, 0x00, /* 1 */
-    0x42, 0x61, 0x51, 0x49, 0x46, /* 2 */
-    0x21, 0x41, 0x45, 0x4b, 0x31, /* 3 */
-    0x18, 0x14, 0x12, 0x7f, 0x10, /* 4 */
-    0x27, 0x45, 0x45, 0x45, 0x39, /* 5 */
-    0x3c, 0x4a, 0x49, 0x49, 0x30, /* 6 */
-    0x01, 0x71, 0x09, 0x05, 0x03, /* 7 */
-    0x36, 0x49, 0x49, 0x49, 0x36, /* 8 */
-    0x06, 0x49, 0x49, 0x29, 0x1e, /* 9 */
+    0x3e, 0x41, 0x41, 0x7f, 0x3e, /* 0      0x30 */
+    0x00, 0x42, 0x7f, 0x7f, 0x40, /* 1 */
+    0x72, 0x59, 0x49, 0x4f, 0x46, /* 2 */
+    0x49, 0x49, 0x49, 0x7f, 0x36, /* 3 */
+    0x1f, 0x10, 0x10, 0x7f, 0x7f, /* 4 */
+    0x4f, 0x4f, 0x49, 0x79, 0x31, /* 5 */
+    0x3e, 0x7f, 0x49, 0x49, 0x32, /* 6 */
+    0x01, 0x61, 0x79, 0x1f, 0x07, /* 7 */
+    0x36, 0x49, 0x49, 0x7f, 0x36, /* 8 */
+    0x26, 0x49, 0x49, 0x7f, 0x3e, /* 9 */
     0x00, 0x36, 0x36, 0x00, 0x00, /* : */
     0x00, 0x56, 0x36, 0x00, 0x00, /* ; */
     0x08, 0x14, 0x22, 0x41, 0x00, /* < */
     0x14, 0x14, 0x14, 0x14, 0x14, /* = */
-    0x00, 0x41, 0x22, 0x14, 0x08, /* > */
+    0x08, 0x08, 0x08, 0x1C, 0x08, /* > */
     0x02, 0x01, 0x51, 0x09, 0x06, /* ? */
     0x3e, 0x41, 0x5d, 0x55, 0x1e, /* @      0x40 */
-    0x7e, 0x11, 0x11, 0x11, 0x7e, /* A */
-    0x7f, 0x49, 0x49, 0x49, 0x36, /* B */
-    0x3e, 0x41, 0x41, 0x41, 0x22, /* C */
-    0x7f, 0x41, 0x41, 0x22, 0x1c, /* D */
-    0x7f, 0x49, 0x49, 0x49, 0x41, /* E */
-    0x7f, 0x09, 0x09, 0x09, 0x01, /* F */
+    0x7e, 0x7f, 0x11, 0x11, 0x7e, /* A */
+    0x7f, 0x7f, 0x49, 0x49, 0x36, /* B */
+    0x3e, 0x7f, 0x41, 0x41, 0x22, /* C */
+    0x7f, 0x7f, 0x41, 0x22, 0x1c, /* D */
+    0x7f, 0x7f, 0x49, 0x49, 0x49, /* E */
+    0x7f, 0x7f, 0x09, 0x09, 0x01, /* F */
     0x3e, 0x41, 0x49, 0x49, 0x7a, /* G */
-    0x7f, 0x08, 0x08, 0x08, 0x7f, /* H */
-    0x00, 0x41, 0x7f, 0x41, 0x00, /* I */
+    0x7f, 0x7f, 0x08, 0x08, 0x7f, /* H */
+    0x41, 0x7f, 0x7f, 0x41, 0x00, /* I */
     0x20, 0x40, 0x41, 0x3f, 0x01, /* J */
-    0x7f, 0x08, 0x14, 0x22, 0x41, /* K */
-    0x7f, 0x40, 0x40, 0x40, 0x40, /* L */
-    0x7f, 0x02, 0x0c, 0x02, 0x7f, /* M */
-    0x7f, 0x04, 0x08, 0x10, 0x7f, /* N */
-    0x3e, 0x41, 0x41, 0x41, 0x3e, /* O */
-    0x7f, 0x09, 0x09, 0x09, 0x06, /* P      0x50 */
-    0x3e, 0x41, 0x51, 0x21, 0x5e, /* Q */
-    0x7f, 0x09, 0x19, 0x29, 0x46, /* R */
-    0x26, 0x49, 0x49, 0x49, 0x32, /* S */
-    0x01, 0x01, 0x7f, 0x01, 0x01, /* T */
-    0x3f, 0x40, 0x40, 0x40, 0x3f, /* U */
-    0x1f, 0x20, 0x40, 0x20, 0x1f, /* V */
-    0x3f, 0x40, 0x38, 0x40, 0x3f, /* W */
+    0x7f, 0x7f, 0x14, 0x22, 0x41, /* K */
+    0x7f, 0x7f, 0x40, 0x40, 0x40, /* L */
+    0x7f, 0x7e, 0x0c, 0x06, 0x7f, /* M */ //02->06
+    0x7f, 0x7e, 0x08, 0x10, 0x7f, /* N */
+    0x3e, 0x7f, 0x41, 0x41, 0x3e, /* O */
+    0x7f, 0x7f, 0x09, 0x09, 0x06, /* P      0x50 */
+    0x3e, 0x7f, 0x51, 0x21, 0x5e, /* Q */
+    0x7f, 0x7f, 0x19, 0x29, 0x46, /* R */
+    0x26, 0x4f, 0x49, 0x79, 0x32, /* S */
+    0x01, 0x7f, 0x7f, 0x01, 0x01, /* T */
+    0x3f, 0x7f, 0x40, 0x40, 0x3f, /* U */
+    0x1f, 0x3f, 0x40, 0x20, 0x1f, /* V */
+    //0x3f, 0x40, 0x38, 0x40, 0x3f, /* W */
+    0x7f, 0x3f, 0x18, 0x20, 0x7f, /* W */
     0x63, 0x14, 0x08, 0x14, 0x63, /* X */
-    0x07, 0x08, 0x70, 0x08, 0x07, /* Y */
+    0x07, 0x0f, 0x78, 0x08, 0x07, /* Y */
     0x61, 0x51, 0x49, 0x45, 0x43, /* Z */
-    0x00, 0x7f, 0x41, 0x41, 0x00, /* [ */
-    0x02, 0x04, 0x08, 0x10, 0x20, /* \ */
-    0x00, 0x41, 0x41, 0x7f, 0x00, /* ] */
-    0x04, 0x02, 0x01, 0x02, 0x04, /* ^ */
-    0x40, 0x40, 0x40, 0x40, 0x40, /* _ */
-    0x00, 0x00, 0x03, 0x05, 0x00, /* `      0x60 */
-    0x20, 0x54, 0x54, 0x54, 0x78, /* a */
-    0x7F, 0x44, 0x44, 0x44, 0x38, /* b */
-    0x38, 0x44, 0x44, 0x44, 0x44, /* c */
-    0x38, 0x44, 0x44, 0x44, 0x7f, /* d */
-    0x38, 0x54, 0x54, 0x54, 0x18, /* e */
-    0x04, 0x04, 0x7e, 0x05, 0x05, /* f */
-    0x08, 0x54, 0x54, 0x54, 0x3c, /* g */
-    0x7f, 0x08, 0x04, 0x04, 0x78, /* h */
-    0x00, 0x44, 0x7d, 0x40, 0x00, /* i */
-    0x20, 0x40, 0x44, 0x3d, 0x00, /* j */
-    0x7f, 0x10, 0x28, 0x44, 0x00, /* k */
-    0x00, 0x41, 0x7f, 0x40, 0x00, /* l */
-    0x7c, 0x04, 0x7c, 0x04, 0x78, /* m */
-    0x7c, 0x08, 0x04, 0x04, 0x78, /* n */
-    0x38, 0x44, 0x44, 0x44, 0x38, /* o */
-    0x7c, 0x14, 0x14, 0x14, 0x08, /* p      0x70 */
-    0x08, 0x14, 0x14, 0x14, 0x7c, /* q */
-    0x7c, 0x08, 0x04, 0x04, 0x00, /* r */
-    0x48, 0x54, 0x54, 0x54, 0x24, /* s */
-    0x04, 0x04, 0x3f, 0x44, 0x44, /* t */
-    0x3c, 0x40, 0x40, 0x20, 0x7c, /* u */
-    0x1c, 0x20, 0x40, 0x20, 0x1c, /* v */
-    0x3c, 0x40, 0x30, 0x40, 0x3c, /* w */
-    0x44, 0x28, 0x10, 0x28, 0x44, /* x */
-    0x0c, 0x50, 0x50, 0x50, 0x3c, /* y */
-    0x44, 0x64, 0x54, 0x4c, 0x44, /* z */
-    0x08, 0x36, 0x41, 0x41, 0x00, /* { */
-    0x00, 0x00, 0x77, 0x00, 0x00, /* | */
-    0x00, 0x41, 0x41, 0x36, 0x08, /* } */
-    0x08, 0x08, 0x2a, 0x1c, 0x08  /* ~ */
 };
 
+unsigned short numbers[10] = { 0xF6BE, 0x592E, 0xE7CE, 0xE79E, 0xB792, 0xF39E, 0xF3DE, 0xE492, 0xF7DE, 0xF79E };
+
+void DisplayN18::drawNumber(int x, int y, const char character, unsigned short foreColor, unsigned short backColor)
+{
+    unsigned short mask = 0x8000; 
+    
+    for (int i = 0; i < 5; i++) {
+        for (int j = 0; j < 3; j++) {
+            if( numbers[character] & mask )
+                draw(&foreColor, x+j, y+i, 1, 1);
+            else
+                draw(&backColor, x+j, y+i, 1, 1);
+            
+            mask >>= 1;
+        }
+    }
+}
+
 void DisplayN18::drawCharacter(int x, int y, const char character, unsigned short foreColor, unsigned short backColor, unsigned char fontSize) {
     if (character > 126 || character < 32)
         return;