Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

initial commit

  • Loading branch information...
commit 97e00b735e1b26b7ee1da2cbf6d493e8e6f41243 0 parents
@madshobye madshobye authored
Showing with 8,998 additions and 0 deletions.
  1. +67 −0 Arduino/xrope2/p01_android.pde
  2. +1,247 −0 Arduino/xrope2/p02_font.pde
  3. +30 −0 Arduino/xrope2/p03_text.pde
  4. +101 −0 Arduino/xrope2/p04_rope.pde
  5. +260 −0 Arduino/xrope2/p05_bikeRope.pde
  6. +44 −0 Arduino/xrope2/p06_wheelSensor.pde
  7. +105 −0 Arduino/xrope2/xrope2.pde
  8. +80 −0 Arduino/xrope3/p01_android.pde
  9. +170 −0 Arduino/xrope3/p05_HL1606.pde
  10. +23 −0 Arduino/xrope3/p06_pattern.pde
  11. +1,277 −0 Arduino/xrope3/p09_font.pde
  12. +51 −0 Arduino/xrope3/p11_message.pde
  13. +70 −0 Arduino/xrope3/p20_patSolid.pde
  14. +179 −0 Arduino/xrope3/p21_patText.pde
  15. +74 −0 Arduino/xrope3/p30_patternSelector.pde
  16. +58 −0 Arduino/xrope3/p50_wheelSensor.pde
  17. +85 −0 Arduino/xrope3/p99_scheduler.pde
  18. +65 −0 Arduino/xrope3/xrope3.pde
  19. +80 −0 Arduino/xrope3b/p01_android.pde
  20. +205 −0 Arduino/xrope3b/p05_HL1606.pde
  21. +18 −0 Arduino/xrope3b/p06_pattern.pde
  22. +1,277 −0 Arduino/xrope3b/p09_font.pde
  23. +51 −0 Arduino/xrope3b/p11_message.pde
  24. +181 −0 Arduino/xrope3b/p15_cimg1.pde
  25. +70 −0 Arduino/xrope3b/p20_patSolid.pde
  26. +190 −0 Arduino/xrope3b/p21_patText.pde
  27. +63 −0 Arduino/xrope3b/p22_patCimg1.pde
  28. +76 −0 Arduino/xrope3b/p30_patternSelector.pde
  29. +58 −0 Arduino/xrope3b/p50_wheelSensor.pde
  30. +85 −0 Arduino/xrope3b/p99_scheduler.pde
  31. +65 −0 Arduino/xrope3b/xrope3b.pde
  32. +80 −0 Arduino/xrope3c/p01_android.pde
  33. +205 −0 Arduino/xrope3c/p05_HL1606.pde
  34. +18 −0 Arduino/xrope3c/p06_pattern.pde
  35. +1,277 −0 Arduino/xrope3c/p09_font.pde
  36. +51 −0 Arduino/xrope3c/p11_message.pde
  37. +181 −0 Arduino/xrope3c/p15_cimg1.pde
  38. +70 −0 Arduino/xrope3c/p20_patSolid.pde
  39. +182 −0 Arduino/xrope3c/p21_patText.pde
  40. +63 −0 Arduino/xrope3c/p22_patCimg1.pde
  41. +76 −0 Arduino/xrope3c/p30_patternSelector.pde
  42. +58 −0 Arduino/xrope3c/p50_wheelSensor.pde
  43. +85 −0 Arduino/xrope3c/p99_scheduler.pde
  44. +65 −0 Arduino/xrope3c/xrope3c.pde
  45. BIN  Processing/fontconverter/font.png
  46. +181 −0 Processing/fontconverter/fontconverter.pde
  47. +1 −0  Processing/fontconverter/sketch.properties
67 Arduino/xrope2/p01_android.pde
@@ -0,0 +1,67 @@
+Connection * connection;
+
+volatile unsigned char androidConnected = false;
+
+void initAndroid()
+{
+ ADB::init();
+}
+
+void connectAndroid()
+{
+ connection = ADB::addConnection("tcp:4567", true, adbEventHandler);
+ androidConnected = true;
+}
+
+void tellAndroid(unsigned int length, uint8_t * data)
+{
+ if (androidConnected)
+ {
+ connection->write(length, data);
+ }
+}
+
+void androidScan()
+{
+ if (androidConnected)
+ {
+ ADB::poll();
+ }
+}
+
+void adbEventHandler(Connection * connection, adb_eventType event, uint16_t length, uint8_t * data)
+{
+ if (event == ADB_CONNECTION_RECEIVE)
+ {
+ int messageType = data[0];
+ switch(messageType)
+ {
+ case 0:
+ {
+ // set mode
+ }
+ break;
+ case 1:
+ {
+ // set message
+ }
+ break;
+ case 2:
+ {
+ // set background color
+ }
+ break;
+ case 3:
+ {
+ // set foreground color
+ }
+ break;
+ case 4:
+ {
+ // set speed
+ }
+ break;
+ }
+ }
+}
+
1,247 Arduino/xrope2/p02_font.pde
@@ -0,0 +1,1247 @@
+#define _numSymbols 112
+
+PROGMEM prog_uint16_t symOffsets[] = {
+0, 4, 6, 10, 16, 22, 28, 35, 38, 42, 46, 52, 58, 61, 67, 70,
+74, 80, 84, 90, 96, 102, 108, 114, 120, 126, 132, 135, 138, 143, 149, 154,
+159, 167, 173, 179, 185, 191, 197, 203, 209, 215, 219, 225, 231, 237, 243, 249,
+255, 261, 267, 273, 279, 285, 291, 297, 303, 309, 315, 321, 324, 328, 331, 337,
+342, 345, 351, 357, 363, 369, 375, 381, 387, 393, 397, 402, 407, 411, 417, 423,
+429, 435, 441, 447, 453, 459, 465, 471, 477, 483, 489, 495, 499, 501, 505, 513,
+582, 592, 602, 608, 614, 620, 626, 659, 700, 722, 736, 750, 760, 770, 783, 796
+
+};
+
+PROGMEM prog_uint8_t symWidths[] = {
+0x04, 0x02, 0x04, 0x06, 0x06, 0x06, 0x07, 0x03, 0x04, 0x04,
+0x06, 0x06, 0x03, 0x06, 0x03, 0x04, 0x06, 0x04, 0x06, 0x06,
+0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x05, 0x06,
+0x05, 0x05, 0x08, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+0x06, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03,
+0x04, 0x03, 0x06, 0x05, 0x03, 0x06, 0x06, 0x06, 0x06, 0x06,
+0x06, 0x06, 0x06, 0x04, 0x05, 0x05, 0x04, 0x06, 0x06, 0x06,
+0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+0x06, 0x04, 0x02, 0x04, 0x08, 0x45, 0x0A, 0x0A, 0x06, 0x06,
+0x06, 0x06, 0x21, 0x29, 0x16, 0x0E, 0x0E, 0x0A, 0x0A, 0x0D,
+0x0D, 0x7B
+};
+
+PROGMEM prog_uint16_t symPatterns[] = {
+
+0x0000, // 0x0000 : 0000000000000000 #0 (0x20)
+0x0000, // 0x0001 : 0000000000000000
+0x0000, // 0x0002 : 0000000000000000
+0x0000, // 0x0003 : 0000000000000000
+
+0x00FA, // 0x0004 : 0000000011111010 #1 (0x21)
+0x0000, // 0x0005 : 0000000000000000
+
+0x00C0, // 0x0006 : 0000000011000000 #2 (0x22)
+0x0000, // 0x0007 : 0000000000000000
+0x00C0, // 0x0008 : 0000000011000000
+0x0000, // 0x0009 : 0000000000000000
+
+0x0044, // 0x000A : 0000000001000100 #3 (0x23)
+0x00FE, // 0x000B : 0000000011111110
+0x0044, // 0x000C : 0000000001000100
+0x00FE, // 0x000D : 0000000011111110
+0x0044, // 0x000E : 0000000001000100
+0x0000, // 0x000F : 0000000000000000
+
+0x0064, // 0x0010 : 0000000001100100 #4 (0x24)
+0x0092, // 0x0011 : 0000000010010010
+0x01FF, // 0x0012 : 0000000111111111
+0x0092, // 0x0013 : 0000000010010010
+0x004C, // 0x0014 : 0000000001001100
+0x0000, // 0x0015 : 0000000000000000
+
+0x00C2, // 0x0016 : 0000000011000010 #5 (0x25)
+0x00CC, // 0x0017 : 0000000011001100
+0x0010, // 0x0018 : 0000000000010000
+0x0066, // 0x0019 : 0000000001100110
+0x0086, // 0x001A : 0000000010000110
+0x0000, // 0x001B : 0000000000000000
+
+0x00DC, // 0x001C : 0000000011011100 #6 (0x26)
+0x0122, // 0x001D : 0000000100100010
+0x00D2, // 0x001E : 0000000011010010
+0x000A, // 0x001F : 0000000000001010
+0x0004, // 0x0020 : 0000000000000100
+0x000A, // 0x0021 : 0000000000001010
+0x0000, // 0x0022 : 0000000000000000
+
+0x00A0, // 0x0023 : 0000000010100000 #7 (0x27)
+0x00C0, // 0x0024 : 0000000011000000
+0x0000, // 0x0025 : 0000000000000000
+
+0x0038, // 0x0026 : 0000000000111000 #8 (0x28)
+0x0044, // 0x0027 : 0000000001000100
+0x0082, // 0x0028 : 0000000010000010
+0x0000, // 0x0029 : 0000000000000000
+
+0x0082, // 0x002A : 0000000010000010 #9 (0x29)
+0x0044, // 0x002B : 0000000001000100
+0x0038, // 0x002C : 0000000000111000
+0x0000, // 0x002D : 0000000000000000
+
+0x0020, // 0x002E : 0000000000100000 #10 (0x2A)
+0x00A8, // 0x002F : 0000000010101000
+0x0070, // 0x0030 : 0000000001110000
+0x00A8, // 0x0031 : 0000000010101000
+0x0020, // 0x0032 : 0000000000100000
+0x0000, // 0x0033 : 0000000000000000
+
+0x0010, // 0x0034 : 0000000000010000 #11 (0x2B)
+0x0010, // 0x0035 : 0000000000010000
+0x007C, // 0x0036 : 0000000001111100
+0x0010, // 0x0037 : 0000000000010000
+0x0010, // 0x0038 : 0000000000010000
+0x0000, // 0x0039 : 0000000000000000
+
+0x0005, // 0x003A : 0000000000000101 #12 (0x2C)
+0x0006, // 0x003B : 0000000000000110
+0x0000, // 0x003C : 0000000000000000
+
+0x0010, // 0x003D : 0000000000010000 #13 (0x2D)
+0x0010, // 0x003E : 0000000000010000
+0x0010, // 0x003F : 0000000000010000
+0x0010, // 0x0040 : 0000000000010000
+0x0010, // 0x0041 : 0000000000010000
+0x0000, // 0x0042 : 0000000000000000
+
+0x0006, // 0x0043 : 0000000000000110 #14 (0x2E)
+0x0006, // 0x0044 : 0000000000000110
+0x0000, // 0x0045 : 0000000000000000
+
+0x0006, // 0x0046 : 0000000000000110 #15 (0x2F)
+0x0038, // 0x0047 : 0000000000111000
+0x00C0, // 0x0048 : 0000000011000000
+0x0000, // 0x0049 : 0000000000000000
+
+0x007C, // 0x004A : 0000000001111100 #16 (0x30)
+0x0082, // 0x004B : 0000000010000010
+0x0092, // 0x004C : 0000000010010010
+0x0082, // 0x004D : 0000000010000010
+0x007C, // 0x004E : 0000000001111100
+0x0000, // 0x004F : 0000000000000000
+
+0x0042, // 0x0050 : 0000000001000010 #17 (0x31)
+0x00FE, // 0x0051 : 0000000011111110
+0x0002, // 0x0052 : 0000000000000010
+0x0000, // 0x0053 : 0000000000000000
+
+0x0042, // 0x0054 : 0000000001000010 #18 (0x32)
+0x0086, // 0x0055 : 0000000010000110
+0x008A, // 0x0056 : 0000000010001010
+0x0092, // 0x0057 : 0000000010010010
+0x0062, // 0x0058 : 0000000001100010
+0x0000, // 0x0059 : 0000000000000000
+
+0x0084, // 0x005A : 0000000010000100 #19 (0x33)
+0x0082, // 0x005B : 0000000010000010
+0x00A2, // 0x005C : 0000000010100010
+0x00D2, // 0x005D : 0000000011010010
+0x008C, // 0x005E : 0000000010001100
+0x0000, // 0x005F : 0000000000000000
+
+0x0018, // 0x0060 : 0000000000011000 #20 (0x34)
+0x0028, // 0x0061 : 0000000000101000
+0x0048, // 0x0062 : 0000000001001000
+0x00FE, // 0x0063 : 0000000011111110
+0x0008, // 0x0064 : 0000000000001000
+0x0000, // 0x0065 : 0000000000000000
+
+0x00E4, // 0x0066 : 0000000011100100 #21 (0x35)
+0x00A2, // 0x0067 : 0000000010100010
+0x00A2, // 0x0068 : 0000000010100010
+0x00A2, // 0x0069 : 0000000010100010
+0x009C, // 0x006A : 0000000010011100
+0x0000, // 0x006B : 0000000000000000
+
+0x003C, // 0x006C : 0000000000111100 #22 (0x36)
+0x0052, // 0x006D : 0000000001010010
+0x0092, // 0x006E : 0000000010010010
+0x0092, // 0x006F : 0000000010010010
+0x000C, // 0x0070 : 0000000000001100
+0x0000, // 0x0071 : 0000000000000000
+
+0x0080, // 0x0072 : 0000000010000000 #23 (0x37)
+0x008E, // 0x0073 : 0000000010001110
+0x0090, // 0x0074 : 0000000010010000
+0x00A0, // 0x0075 : 0000000010100000
+0x00C0, // 0x0076 : 0000000011000000
+0x0000, // 0x0077 : 0000000000000000
+
+0x006C, // 0x0078 : 0000000001101100 #24 (0x38)
+0x0092, // 0x0079 : 0000000010010010
+0x0092, // 0x007A : 0000000010010010
+0x0092, // 0x007B : 0000000010010010
+0x006C, // 0x007C : 0000000001101100
+0x0000, // 0x007D : 0000000000000000
+
+0x0060, // 0x007E : 0000000001100000 #25 (0x39)
+0x0092, // 0x007F : 0000000010010010
+0x0092, // 0x0080 : 0000000010010010
+0x0094, // 0x0081 : 0000000010010100
+0x0078, // 0x0082 : 0000000001111000
+0x0000, // 0x0083 : 0000000000000000
+
+0x0066, // 0x0084 : 0000000001100110 #26 (0x3A)
+0x0066, // 0x0085 : 0000000001100110
+0x0000, // 0x0086 : 0000000000000000
+
+0x0065, // 0x0087 : 0000000001100101 #27 (0x3B)
+0x0066, // 0x0088 : 0000000001100110
+0x0000, // 0x0089 : 0000000000000000
+
+0x0010, // 0x008A : 0000000000010000 #28 (0x3C)
+0x0028, // 0x008B : 0000000000101000
+0x0044, // 0x008C : 0000000001000100
+0x0082, // 0x008D : 0000000010000010
+0x0000, // 0x008E : 0000000000000000
+
+0x0028, // 0x008F : 0000000000101000 #29 (0x3D)
+0x0028, // 0x0090 : 0000000000101000
+0x0028, // 0x0091 : 0000000000101000
+0x0028, // 0x0092 : 0000000000101000
+0x0028, // 0x0093 : 0000000000101000
+0x0000, // 0x0094 : 0000000000000000
+
+0x0082, // 0x0095 : 0000000010000010 #30 (0x3E)
+0x0044, // 0x0096 : 0000000001000100
+0x0028, // 0x0097 : 0000000000101000
+0x0010, // 0x0098 : 0000000000010000
+0x0000, // 0x0099 : 0000000000000000
+
+0x0040, // 0x009A : 0000000001000000 #31 (0x3F)
+0x008A, // 0x009B : 0000000010001010
+0x0090, // 0x009C : 0000000010010000
+0x0060, // 0x009D : 0000000001100000
+0x0000, // 0x009E : 0000000000000000
+
+0x007C, // 0x009F : 0000000001111100 #32 (0x40)
+0x0082, // 0x00A0 : 0000000010000010
+0x00BA, // 0x00A1 : 0000000010111010
+0x00AA, // 0x00A2 : 0000000010101010
+0x00BA, // 0x00A3 : 0000000010111010
+0x008A, // 0x00A4 : 0000000010001010
+0x0072, // 0x00A5 : 0000000001110010
+0x0000, // 0x00A6 : 0000000000000000
+
+0x007E, // 0x00A7 : 0000000001111110 #33 (0x41)
+0x0090, // 0x00A8 : 0000000010010000
+0x0090, // 0x00A9 : 0000000010010000
+0x0090, // 0x00AA : 0000000010010000
+0x007E, // 0x00AB : 0000000001111110
+0x0000, // 0x00AC : 0000000000000000
+
+0x00FE, // 0x00AD : 0000000011111110 #34 (0x42)
+0x0092, // 0x00AE : 0000000010010010
+0x0092, // 0x00AF : 0000000010010010
+0x0092, // 0x00B0 : 0000000010010010
+0x006C, // 0x00B1 : 0000000001101100
+0x0000, // 0x00B2 : 0000000000000000
+
+0x007C, // 0x00B3 : 0000000001111100 #35 (0x43)
+0x0082, // 0x00B4 : 0000000010000010
+0x0082, // 0x00B5 : 0000000010000010
+0x0082, // 0x00B6 : 0000000010000010
+0x0044, // 0x00B7 : 0000000001000100
+0x0000, // 0x00B8 : 0000000000000000
+
+0x00FE, // 0x00B9 : 0000000011111110 #36 (0x44)
+0x0082, // 0x00BA : 0000000010000010
+0x0082, // 0x00BB : 0000000010000010
+0x0082, // 0x00BC : 0000000010000010
+0x007C, // 0x00BD : 0000000001111100
+0x0000, // 0x00BE : 0000000000000000
+
+0x00FE, // 0x00BF : 0000000011111110 #37 (0x45)
+0x0092, // 0x00C0 : 0000000010010010
+0x0092, // 0x00C1 : 0000000010010010
+0x0092, // 0x00C2 : 0000000010010010
+0x0082, // 0x00C3 : 0000000010000010
+0x0000, // 0x00C4 : 0000000000000000
+
+0x00FE, // 0x00C5 : 0000000011111110 #38 (0x46)
+0x0090, // 0x00C6 : 0000000010010000
+0x0090, // 0x00C7 : 0000000010010000
+0x0090, // 0x00C8 : 0000000010010000
+0x0080, // 0x00C9 : 0000000010000000
+0x0000, // 0x00CA : 0000000000000000
+
+0x007C, // 0x00CB : 0000000001111100 #39 (0x47)
+0x0082, // 0x00CC : 0000000010000010
+0x0092, // 0x00CD : 0000000010010010
+0x0092, // 0x00CE : 0000000010010010
+0x005E, // 0x00CF : 0000000001011110
+0x0000, // 0x00D0 : 0000000000000000
+
+0x00FE, // 0x00D1 : 0000000011111110 #40 (0x48)
+0x0010, // 0x00D2 : 0000000000010000
+0x0010, // 0x00D3 : 0000000000010000
+0x0010, // 0x00D4 : 0000000000010000
+0x00FE, // 0x00D5 : 0000000011111110
+0x0000, // 0x00D6 : 0000000000000000
+
+0x0082, // 0x00D7 : 0000000010000010 #41 (0x49)
+0x00FE, // 0x00D8 : 0000000011111110
+0x0082, // 0x00D9 : 0000000010000010
+0x0000, // 0x00DA : 0000000000000000
+
+0x0004, // 0x00DB : 0000000000000100 #42 (0x4A)
+0x0002, // 0x00DC : 0000000000000010
+0x0082, // 0x00DD : 0000000010000010
+0x00FC, // 0x00DE : 0000000011111100
+0x0080, // 0x00DF : 0000000010000000
+0x0000, // 0x00E0 : 0000000000000000
+
+0x00FE, // 0x00E1 : 0000000011111110 #43 (0x4B)
+0x0010, // 0x00E2 : 0000000000010000
+0x0028, // 0x00E3 : 0000000000101000
+0x0044, // 0x00E4 : 0000000001000100
+0x0082, // 0x00E5 : 0000000010000010
+0x0000, // 0x00E6 : 0000000000000000
+
+0x00FE, // 0x00E7 : 0000000011111110 #44 (0x4C)
+0x0002, // 0x00E8 : 0000000000000010
+0x0002, // 0x00E9 : 0000000000000010
+0x0002, // 0x00EA : 0000000000000010
+0x0002, // 0x00EB : 0000000000000010
+0x0000, // 0x00EC : 0000000000000000
+
+0x00FE, // 0x00ED : 0000000011111110 #45 (0x4D)
+0x0040, // 0x00EE : 0000000001000000
+0x0030, // 0x00EF : 0000000000110000
+0x0040, // 0x00F0 : 0000000001000000
+0x00FE, // 0x00F1 : 0000000011111110
+0x0000, // 0x00F2 : 0000000000000000
+
+0x00FE, // 0x00F3 : 0000000011111110 #46 (0x4E)
+0x0020, // 0x00F4 : 0000000000100000
+0x0010, // 0x00F5 : 0000000000010000
+0x0008, // 0x00F6 : 0000000000001000
+0x00FE, // 0x00F7 : 0000000011111110
+0x0000, // 0x00F8 : 0000000000000000
+
+0x007C, // 0x00F9 : 0000000001111100 #47 (0x4F)
+0x0082, // 0x00FA : 0000000010000010
+0x0082, // 0x00FB : 0000000010000010
+0x0082, // 0x00FC : 0000000010000010
+0x007C, // 0x00FD : 0000000001111100
+0x0000, // 0x00FE : 0000000000000000
+
+0x00FE, // 0x00FF : 0000000011111110 #48 (0x50)
+0x0090, // 0x0100 : 0000000010010000
+0x0090, // 0x0101 : 0000000010010000
+0x0090, // 0x0102 : 0000000010010000
+0x0060, // 0x0103 : 0000000001100000
+0x0000, // 0x0104 : 0000000000000000
+
+0x007C, // 0x0105 : 0000000001111100 #49 (0x51)
+0x0082, // 0x0106 : 0000000010000010
+0x008A, // 0x0107 : 0000000010001010
+0x0084, // 0x0108 : 0000000010000100
+0x007B, // 0x0109 : 0000000001111011
+0x0000, // 0x010A : 0000000000000000
+
+0x00FE, // 0x010B : 0000000011111110 #50 (0x52)
+0x0090, // 0x010C : 0000000010010000
+0x0098, // 0x010D : 0000000010011000
+0x0094, // 0x010E : 0000000010010100
+0x0062, // 0x010F : 0000000001100010
+0x0000, // 0x0110 : 0000000000000000
+
+0x0062, // 0x0111 : 0000000001100010 #51 (0x53)
+0x0092, // 0x0112 : 0000000010010010
+0x0092, // 0x0113 : 0000000010010010
+0x0092, // 0x0114 : 0000000010010010
+0x008C, // 0x0115 : 0000000010001100
+0x0000, // 0x0116 : 0000000000000000
+
+0x0080, // 0x0117 : 0000000010000000 #52 (0x54)
+0x0080, // 0x0118 : 0000000010000000
+0x00FE, // 0x0119 : 0000000011111110
+0x0080, // 0x011A : 0000000010000000
+0x0080, // 0x011B : 0000000010000000
+0x0000, // 0x011C : 0000000000000000
+
+0x00FC, // 0x011D : 0000000011111100 #53 (0x55)
+0x0002, // 0x011E : 0000000000000010
+0x0002, // 0x011F : 0000000000000010
+0x0002, // 0x0120 : 0000000000000010
+0x00FC, // 0x0121 : 0000000011111100
+0x0000, // 0x0122 : 0000000000000000
+
+0x00F0, // 0x0123 : 0000000011110000 #54 (0x56)
+0x000C, // 0x0124 : 0000000000001100
+0x0002, // 0x0125 : 0000000000000010
+0x000C, // 0x0126 : 0000000000001100
+0x00F0, // 0x0127 : 0000000011110000
+0x0000, // 0x0128 : 0000000000000000
+
+0x00FC, // 0x0129 : 0000000011111100 #55 (0x57)
+0x0002, // 0x012A : 0000000000000010
+0x001C, // 0x012B : 0000000000011100
+0x0002, // 0x012C : 0000000000000010
+0x00FC, // 0x012D : 0000000011111100
+0x0000, // 0x012E : 0000000000000000
+
+0x00C6, // 0x012F : 0000000011000110 #56 (0x58)
+0x0028, // 0x0130 : 0000000000101000
+0x0010, // 0x0131 : 0000000000010000
+0x0028, // 0x0132 : 0000000000101000
+0x00C6, // 0x0133 : 0000000011000110
+0x0000, // 0x0134 : 0000000000000000
+
+0x00E0, // 0x0135 : 0000000011100000 #57 (0x59)
+0x0010, // 0x0136 : 0000000000010000
+0x000E, // 0x0137 : 0000000000001110
+0x0010, // 0x0138 : 0000000000010000
+0x00E0, // 0x0139 : 0000000011100000
+0x0000, // 0x013A : 0000000000000000
+
+0x0086, // 0x013B : 0000000010000110 #58 (0x5A)
+0x008A, // 0x013C : 0000000010001010
+0x0092, // 0x013D : 0000000010010010
+0x00A2, // 0x013E : 0000000010100010
+0x00C2, // 0x013F : 0000000011000010
+0x0000, // 0x0140 : 0000000000000000
+
+0x00FE, // 0x0141 : 0000000011111110 #59 (0x5B)
+0x0082, // 0x0142 : 0000000010000010
+0x0000, // 0x0143 : 0000000000000000
+
+0x00C0, // 0x0144 : 0000000011000000 #60 (0x5C)
+0x0038, // 0x0145 : 0000000000111000
+0x0006, // 0x0146 : 0000000000000110
+0x0000, // 0x0147 : 0000000000000000
+
+0x0082, // 0x0148 : 0000000010000010 #61 (0x5D)
+0x00FE, // 0x0149 : 0000000011111110
+0x0000, // 0x014A : 0000000000000000
+
+0x0020, // 0x014B : 0000000000100000 #62 (0x5E)
+0x0040, // 0x014C : 0000000001000000
+0x0080, // 0x014D : 0000000010000000
+0x0040, // 0x014E : 0000000001000000
+0x0020, // 0x014F : 0000000000100000
+0x0000, // 0x0150 : 0000000000000000
+
+0x0002, // 0x0151 : 0000000000000010 #63 (0x5F)
+0x0002, // 0x0152 : 0000000000000010
+0x0002, // 0x0153 : 0000000000000010
+0x0002, // 0x0154 : 0000000000000010
+0x0000, // 0x0155 : 0000000000000000
+
+0x0080, // 0x0156 : 0000000010000000 #64 (0x60)
+0x0040, // 0x0157 : 0000000001000000
+0x0000, // 0x0158 : 0000000000000000
+
+0x0004, // 0x0159 : 0000000000000100 #65 (0x61)
+0x002A, // 0x015A : 0000000000101010
+0x002A, // 0x015B : 0000000000101010
+0x002A, // 0x015C : 0000000000101010
+0x001E, // 0x015D : 0000000000011110
+0x0000, // 0x015E : 0000000000000000
+
+0x00FE, // 0x015F : 0000000011111110 #66 (0x62)
+0x0012, // 0x0160 : 0000000000010010
+0x0022, // 0x0161 : 0000000000100010
+0x0022, // 0x0162 : 0000000000100010
+0x001C, // 0x0163 : 0000000000011100
+0x0000, // 0x0164 : 0000000000000000
+
+0x001C, // 0x0165 : 0000000000011100 #67 (0x63)
+0x0022, // 0x0166 : 0000000000100010
+0x0022, // 0x0167 : 0000000000100010
+0x0022, // 0x0168 : 0000000000100010
+0x0004, // 0x0169 : 0000000000000100
+0x0000, // 0x016A : 0000000000000000
+
+0x001C, // 0x016B : 0000000000011100 #68 (0x64)
+0x0022, // 0x016C : 0000000000100010
+0x0022, // 0x016D : 0000000000100010
+0x0012, // 0x016E : 0000000000010010
+0x00FE, // 0x016F : 0000000011111110
+0x0000, // 0x0170 : 0000000000000000
+
+0x001C, // 0x0171 : 0000000000011100 #69 (0x65)
+0x002A, // 0x0172 : 0000000000101010
+0x002A, // 0x0173 : 0000000000101010
+0x002A, // 0x0174 : 0000000000101010
+0x0018, // 0x0175 : 0000000000011000
+0x0000, // 0x0176 : 0000000000000000
+
+0x0010, // 0x0177 : 0000000000010000 #70 (0x66)
+0x00FE, // 0x0178 : 0000000011111110
+0x0110, // 0x0179 : 0000000100010000
+0x0100, // 0x017A : 0000000100000000
+0x0080, // 0x017B : 0000000010000000
+0x0000, // 0x017C : 0000000000000000
+
+0x0030, // 0x017D : 0000000000110000 #71 (0x67)
+0x004A, // 0x017E : 0000000001001010
+0x004A, // 0x017F : 0000000001001010
+0x004A, // 0x0180 : 0000000001001010
+0x007C, // 0x0181 : 0000000001111100
+0x0000, // 0x0182 : 0000000000000000
+
+0x00FE, // 0x0183 : 0000000011111110 #72 (0x68)
+0x0010, // 0x0184 : 0000000000010000
+0x0020, // 0x0185 : 0000000000100000
+0x0020, // 0x0186 : 0000000000100000
+0x001E, // 0x0187 : 0000000000011110
+0x0000, // 0x0188 : 0000000000000000
+
+0x0022, // 0x0189 : 0000000000100010 #73 (0x69)
+0x00BE, // 0x018A : 0000000010111110
+0x0002, // 0x018B : 0000000000000010
+0x0000, // 0x018C : 0000000000000000
+
+0x0002, // 0x018D : 0000000000000010 #74 (0x6A)
+0x0001, // 0x018E : 0000000000000001
+0x0001, // 0x018F : 0000000000000001
+0x00BE, // 0x0190 : 0000000010111110
+0x0000, // 0x0191 : 0000000000000000
+
+0x00FE, // 0x0192 : 0000000011111110 #75 (0x6B)
+0x0008, // 0x0193 : 0000000000001000
+0x0014, // 0x0194 : 0000000000010100
+0x0022, // 0x0195 : 0000000000100010
+0x0000, // 0x0196 : 0000000000000000
+
+0x0082, // 0x0197 : 0000000010000010 #76 (0x6C)
+0x00FE, // 0x0198 : 0000000011111110
+0x0002, // 0x0199 : 0000000000000010
+0x0000, // 0x019A : 0000000000000000
+
+0x003E, // 0x019B : 0000000000111110 #77 (0x6D)
+0x0020, // 0x019C : 0000000000100000
+0x0018, // 0x019D : 0000000000011000
+0x0020, // 0x019E : 0000000000100000
+0x001E, // 0x019F : 0000000000011110
+0x0000, // 0x01A0 : 0000000000000000
+
+0x003E, // 0x01A1 : 0000000000111110 #78 (0x6E)
+0x0010, // 0x01A2 : 0000000000010000
+0x0020, // 0x01A3 : 0000000000100000
+0x0020, // 0x01A4 : 0000000000100000
+0x001E, // 0x01A5 : 0000000000011110
+0x0000, // 0x01A6 : 0000000000000000
+
+0x001C, // 0x01A7 : 0000000000011100 #79 (0x6F)
+0x0022, // 0x01A8 : 0000000000100010
+0x0022, // 0x01A9 : 0000000000100010
+0x0022, // 0x01AA : 0000000000100010
+0x001C, // 0x01AB : 0000000000011100
+0x0000, // 0x01AC : 0000000000000000
+
+0x003E, // 0x01AD : 0000000000111110 #80 (0x70)
+0x0028, // 0x01AE : 0000000000101000
+0x0028, // 0x01AF : 0000000000101000
+0x0028, // 0x01B0 : 0000000000101000
+0x0010, // 0x01B1 : 0000000000010000
+0x0000, // 0x01B2 : 0000000000000000
+
+0x0010, // 0x01B3 : 0000000000010000 #81 (0x71)
+0x0028, // 0x01B4 : 0000000000101000
+0x0028, // 0x01B5 : 0000000000101000
+0x0018, // 0x01B6 : 0000000000011000
+0x003E, // 0x01B7 : 0000000000111110
+0x0000, // 0x01B8 : 0000000000000000
+
+0x003E, // 0x01B9 : 0000000000111110 #82 (0x72)
+0x0010, // 0x01BA : 0000000000010000
+0x0020, // 0x01BB : 0000000000100000
+0x0020, // 0x01BC : 0000000000100000
+0x0010, // 0x01BD : 0000000000010000
+0x0000, // 0x01BE : 0000000000000000
+
+0x0012, // 0x01BF : 0000000000010010 #83 (0x73)
+0x002A, // 0x01C0 : 0000000000101010
+0x002A, // 0x01C1 : 0000000000101010
+0x002A, // 0x01C2 : 0000000000101010
+0x0004, // 0x01C3 : 0000000000000100
+0x0000, // 0x01C4 : 0000000000000000
+
+0x0020, // 0x01C5 : 0000000000100000 #84 (0x74)
+0x00FC, // 0x01C6 : 0000000011111100
+0x0022, // 0x01C7 : 0000000000100010
+0x0002, // 0x01C8 : 0000000000000010
+0x0004, // 0x01C9 : 0000000000000100
+0x0000, // 0x01CA : 0000000000000000
+
+0x003C, // 0x01CB : 0000000000111100 #85 (0x75)
+0x0002, // 0x01CC : 0000000000000010
+0x0002, // 0x01CD : 0000000000000010
+0x0002, // 0x01CE : 0000000000000010
+0x003C, // 0x01CF : 0000000000111100
+0x0000, // 0x01D0 : 0000000000000000
+
+0x0038, // 0x01D1 : 0000000000111000 #86 (0x76)
+0x0004, // 0x01D2 : 0000000000000100
+0x0002, // 0x01D3 : 0000000000000010
+0x0004, // 0x01D4 : 0000000000000100
+0x0038, // 0x01D5 : 0000000000111000
+0x0000, // 0x01D6 : 0000000000000000
+
+0x003C, // 0x01D7 : 0000000000111100 #87 (0x77)
+0x0002, // 0x01D8 : 0000000000000010
+0x000C, // 0x01D9 : 0000000000001100
+0x0002, // 0x01DA : 0000000000000010
+0x003C, // 0x01DB : 0000000000111100
+0x0000, // 0x01DC : 0000000000000000
+
+0x0022, // 0x01DD : 0000000000100010 #88 (0x78)
+0x0014, // 0x01DE : 0000000000010100
+0x0008, // 0x01DF : 0000000000001000
+0x0014, // 0x01E0 : 0000000000010100
+0x0022, // 0x01E1 : 0000000000100010
+0x0000, // 0x01E2 : 0000000000000000
+
+0x0030, // 0x01E3 : 0000000000110000 #89 (0x79)
+0x000A, // 0x01E4 : 0000000000001010
+0x000A, // 0x01E5 : 0000000000001010
+0x000A, // 0x01E6 : 0000000000001010
+0x003C, // 0x01E7 : 0000000000111100
+0x0000, // 0x01E8 : 0000000000000000
+
+0x0022, // 0x01E9 : 0000000000100010 #90 (0x7A)
+0x0026, // 0x01EA : 0000000000100110
+0x002A, // 0x01EB : 0000000000101010
+0x0032, // 0x01EC : 0000000000110010
+0x0022, // 0x01ED : 0000000000100010
+0x0000, // 0x01EE : 0000000000000000
+
+0x0010, // 0x01EF : 0000000000010000 #91 (0x7B)
+0x00EE, // 0x01F0 : 0000000011101110
+0x0082, // 0x01F1 : 0000000010000010
+0x0000, // 0x01F2 : 0000000000000000
+
+0x00FE, // 0x01F3 : 0000000011111110 #92 (0x7C)
+0x0000, // 0x01F4 : 0000000000000000
+
+0x0082, // 0x01F5 : 0000000010000010 #93 (0x7D)
+0x00EE, // 0x01F6 : 0000000011101110
+0x0010, // 0x01F7 : 0000000000010000
+0x0000, // 0x01F8 : 0000000000000000
+
+0x0010, // 0x01F9 : 0000000000010000 #94 (0x7E)
+0x0020, // 0x01FA : 0000000000100000
+0x0020, // 0x01FB : 0000000000100000
+0x0010, // 0x01FC : 0000000000010000
+0x0008, // 0x01FD : 0000000000001000
+0x0008, // 0x01FE : 0000000000001000
+0x0010, // 0x01FF : 0000000000010000
+0x0000, // 0x0200 : 0000000000000000
+
+0x03FF, // 0x0201 : 0000001111111111 #95 (0x7F)
+0x03FF, // 0x0202 : 0000001111111111
+0x0000, // 0x0203 : 0000000000000000
+0x0000, // 0x0204 : 0000000000000000
+0x0000, // 0x0205 : 0000000000000000
+0x03FF, // 0x0206 : 0000001111111111
+0x03FF, // 0x0207 : 0000001111111111
+0x0001, // 0x0208 : 0000000000000001
+0x0001, // 0x0209 : 0000000000000001
+0x0001, // 0x020A : 0000000000000001
+0x0001, // 0x020B : 0000000000000001
+0x0001, // 0x020C : 0000000000000001
+0x0001, // 0x020D : 0000000000000001
+0x03FF, // 0x020E : 0000001111111111
+0x03FF, // 0x020F : 0000001111111111
+0x0001, // 0x0210 : 0000000000000001
+0x0001, // 0x0211 : 0000000000000001
+0x0001, // 0x0212 : 0000000000000001
+0x0001, // 0x0213 : 0000000000000001
+0x03FF, // 0x0214 : 0000001111111111
+0x03FF, // 0x0215 : 0000001111111111
+0x0003, // 0x0216 : 0000000000000011
+0x0001, // 0x0217 : 0000000000000001
+0x0001, // 0x0218 : 0000000000000001
+0x0001, // 0x0219 : 0000000000000001
+0x0003, // 0x021A : 0000000000000011
+0x03FF, // 0x021B : 0000001111111111
+0x03FF, // 0x021C : 0000001111111111
+0x0200, // 0x021D : 0000001000000000
+0x0200, // 0x021E : 0000001000000000
+0x0200, // 0x021F : 0000001000000000
+0x0200, // 0x0220 : 0000001000000000
+0x03FF, // 0x0221 : 0000001111111111
+0x03FF, // 0x0222 : 0000001111111111
+0x0200, // 0x0223 : 0000001000000000
+0x0200, // 0x0224 : 0000001000000000
+0x0200, // 0x0225 : 0000001000000000
+0x03FF, // 0x0226 : 0000001111111111
+0x03FF, // 0x0227 : 0000001111111111
+0x0218, // 0x0228 : 0000001000011000
+0x0218, // 0x0229 : 0000001000011000
+0x0218, // 0x022A : 0000001000011000
+0x021C, // 0x022B : 0000001000011100
+0x033E, // 0x022C : 0000001100111110
+0x03F7, // 0x022D : 0000001111110111
+0x01E3, // 0x022E : 0000000111100011
+0x0000, // 0x022F : 0000000000000000
+0x0000, // 0x0230 : 0000000000000000
+0x0000, // 0x0231 : 0000000000000000
+0x0300, // 0x0232 : 0000001100000000
+0x0380, // 0x0233 : 0000001110000000
+0x03C0, // 0x0234 : 0000001111000000
+0x03C0, // 0x0235 : 0000001111000000
+0x03C0, // 0x0236 : 0000001111000000
+0x0380, // 0x0237 : 0000001110000000
+0x0300, // 0x0238 : 0000001100000000
+0x0000, // 0x0239 : 0000000000000000
+0x0000, // 0x023A : 0000000000000000
+0x0000, // 0x023B : 0000000000000000
+0x03FF, // 0x023C : 0000001111111111
+0x03FF, // 0x023D : 0000001111111111
+0x01C0, // 0x023E : 0000000111000000
+0x00E0, // 0x023F : 0000000011100000
+0x0070, // 0x0240 : 0000000001110000
+0x0038, // 0x0241 : 0000000000111000
+0x001C, // 0x0242 : 0000000000011100
+0x000E, // 0x0243 : 0000000000001110
+0x0007, // 0x0244 : 0000000000000111
+0x0003, // 0x0245 : 0000000000000011
+
+0x0010, // 0x0246 : 0000000000010000 #96 (0x80)
+0x0028, // 0x0247 : 0000000000101000
+0x0044, // 0x0248 : 0000000001000100
+0x0082, // 0x0249 : 0000000010000010
+0x0101, // 0x024A : 0000000100000001
+0x0082, // 0x024B : 0000000010000010
+0x0044, // 0x024C : 0000000001000100
+0x0028, // 0x024D : 0000000000101000
+0x0010, // 0x024E : 0000000000010000
+0x0000, // 0x024F : 0000000000000000
+
+0x0010, // 0x0250 : 0000000000010000 #97 (0x81)
+0x0038, // 0x0251 : 0000000000111000
+0x007C, // 0x0252 : 0000000001111100
+0x00FE, // 0x0253 : 0000000011111110
+0x01FF, // 0x0254 : 0000000111111111
+0x00FE, // 0x0255 : 0000000011111110
+0x007C, // 0x0256 : 0000000001111100
+0x0038, // 0x0257 : 0000000000111000
+0x0010, // 0x0258 : 0000000000010000
+0x0000, // 0x0259 : 0000000000000000
+
+0x01FF, // 0x025A : 0000000111111111 #98 (0x82)
+0x0082, // 0x025B : 0000000010000010
+0x0044, // 0x025C : 0000000001000100
+0x0028, // 0x025D : 0000000000101000
+0x0010, // 0x025E : 0000000000010000
+0x0000, // 0x025F : 0000000000000000
+
+0x01FF, // 0x0260 : 0000000111111111 #99 (0x83)
+0x00FE, // 0x0261 : 0000000011111110
+0x007C, // 0x0262 : 0000000001111100
+0x0038, // 0x0263 : 0000000000111000
+0x0010, // 0x0264 : 0000000000010000
+0x0000, // 0x0265 : 0000000000000000
+
+0x0010, // 0x0266 : 0000000000010000 #100 (0x84)
+0x0028, // 0x0267 : 0000000000101000
+0x0044, // 0x0268 : 0000000001000100
+0x0082, // 0x0269 : 0000000010000010
+0x01FF, // 0x026A : 0000000111111111
+0x0000, // 0x026B : 0000000000000000
+
+0x0010, // 0x026C : 0000000000010000 #101 (0x85)
+0x0038, // 0x026D : 0000000000111000
+0x007C, // 0x026E : 0000000001111100
+0x00FE, // 0x026F : 0000000011111110
+0x01FF, // 0x0270 : 0000000111111111
+0x0000, // 0x0271 : 0000000000000000
+
+0x0000, // 0x0272 : 0000000000000000 #102 (0x86)
+0x0002, // 0x0273 : 0000000000000010
+0x0040, // 0x0274 : 0000000001000000
+0x0004, // 0x0275 : 0000000000000100
+0x0010, // 0x0276 : 0000000000010000
+0x0100, // 0x0277 : 0000000100000000
+0x0020, // 0x0278 : 0000000000100000
+0x0004, // 0x0279 : 0000000000000100
+0x0010, // 0x027A : 0000000000010000
+0x0081, // 0x027B : 0000000010000001
+0x0000, // 0x027C : 0000000000000000
+0x0004, // 0x027D : 0000000000000100
+0x0040, // 0x027E : 0000000001000000
+0x0100, // 0x027F : 0000000100000000
+0x0008, // 0x0280 : 0000000000001000
+0x0000, // 0x0281 : 0000000000000000
+0x0041, // 0x0282 : 0000000001000001
+0x0212, // 0x0283 : 0000001000010010
+0x0000, // 0x0284 : 0000000000000000
+0x0004, // 0x0285 : 0000000000000100
+0x0020, // 0x0286 : 0000000000100000
+0x0100, // 0x0287 : 0000000100000000
+0x0010, // 0x0288 : 0000000000010000
+0x0000, // 0x0289 : 0000000000000000
+0x0004, // 0x028A : 0000000000000100
+0x0000, // 0x028B : 0000000000000000
+0x00A2, // 0x028C : 0000000010100010
+0x0204, // 0x028D : 0000001000000100
+0x0010, // 0x028E : 0000000000010000
+0x0000, // 0x028F : 0000000000000000
+0x0088, // 0x0290 : 0000000010001000
+0x0000, // 0x0291 : 0000000000000000
+0x0021, // 0x0292 : 0000000000100001
+
+0x0001, // 0x0293 : 0000000000000001 #103 (0x87)
+0x0002, // 0x0294 : 0000000000000010
+0x0001, // 0x0295 : 0000000000000001
+0x0038, // 0x0296 : 0000000000111000
+0x0044, // 0x0297 : 0000000001000100
+0x00A2, // 0x0298 : 0000000010100010
+0x0082, // 0x0299 : 0000000010000010
+0x0082, // 0x029A : 0000000010000010
+0x0044, // 0x029B : 0000000001000100
+0x0038, // 0x029C : 0000000000111000
+0x0000, // 0x029D : 0000000000000000
+0x0180, // 0x029E : 0000000110000000
+0x0240, // 0x029F : 0000001001000000
+0x024C, // 0x02A0 : 0000001001001100
+0x0192, // 0x02A1 : 0000000110010010
+0x0021, // 0x02A2 : 0000000000100001
+0x0021, // 0x02A3 : 0000000000100001
+0x0212, // 0x02A4 : 0000001000010010
+0x000C, // 0x02A5 : 0000000000001100
+0x00E0, // 0x02A6 : 0000000011100000
+0x0110, // 0x02A7 : 0000000100010000
+0x0289, // 0x02A8 : 0000001010001001
+0x0208, // 0x02A9 : 0000001000001000
+0x0208, // 0x02AA : 0000001000001000
+0x0110, // 0x02AB : 0000000100010000
+0x00E0, // 0x02AC : 0000000011100000
+0x0006, // 0x02AD : 0000000000000110
+0x0009, // 0x02AE : 0000000000001001
+0x0089, // 0x02AF : 0000000010001001
+0x0146, // 0x02B0 : 0000000101000110
+0x0080, // 0x02B1 : 0000000010000000
+0x0030, // 0x02B2 : 0000000000110000
+0x0048, // 0x02B3 : 0000000001001000
+0x0084, // 0x02B4 : 0000000010000100
+0x0084, // 0x02B5 : 0000000010000100
+0x0048, // 0x02B6 : 0000000001001000
+0x0030, // 0x02B7 : 0000000000110000
+0x0002, // 0x02B8 : 0000000000000010
+0x0005, // 0x02B9 : 0000000000000101
+0x0002, // 0x02BA : 0000000000000010
+0x0010, // 0x02BB : 0000000000010000
+
+0x00C0, // 0x02BC : 0000000011000000 #104 (0x88)
+0x01E0, // 0x02BD : 0000000111100000
+0x01E0, // 0x02BE : 0000000111100000
+0x00C6, // 0x02BF : 0000000011000110
+0x000F, // 0x02C0 : 0000000000001111
+0x000F, // 0x02C1 : 0000000000001111
+0x00C6, // 0x02C2 : 0000000011000110
+0x01E0, // 0x02C3 : 0000000111100000
+0x01E0, // 0x02C4 : 0000000111100000
+0x00C6, // 0x02C5 : 0000000011000110
+0x000F, // 0x02C6 : 0000000000001111
+0x000F, // 0x02C7 : 0000000000001111
+0x00C6, // 0x02C8 : 0000000011000110
+0x01E0, // 0x02C9 : 0000000111100000
+0x01E0, // 0x02CA : 0000000111100000
+0x00C6, // 0x02CB : 0000000011000110
+0x000F, // 0x02CC : 0000000000001111
+0x000F, // 0x02CD : 0000000000001111
+0x00C6, // 0x02CE : 0000000011000110
+0x01E0, // 0x02CF : 0000000111100000
+0x01E0, // 0x02D0 : 0000000111100000
+0x00C0, // 0x02D1 : 0000000011000000
+
+0x0387, // 0x02D2 : 0000001110000111 #105 (0x89)
+0x01C3, // 0x02D3 : 0000000111000011
+0x00E1, // 0x02D4 : 0000000011100001
+0x0070, // 0x02D5 : 0000000001110000
+0x0038, // 0x02D6 : 0000000000111000
+0x021C, // 0x02D7 : 0000001000011100
+0x030E, // 0x02D8 : 0000001100001110
+0x0387, // 0x02D9 : 0000001110000111
+0x01C3, // 0x02DA : 0000000111000011
+0x00E1, // 0x02DB : 0000000011100001
+0x0070, // 0x02DC : 0000000001110000
+0x0038, // 0x02DD : 0000000000111000
+0x021C, // 0x02DE : 0000001000011100
+0x030E, // 0x02DF : 0000001100001110
+
+0x030E, // 0x02E0 : 0000001100001110 #106 (0x8A)
+0x021C, // 0x02E1 : 0000001000011100
+0x0038, // 0x02E2 : 0000000000111000
+0x0070, // 0x02E3 : 0000000001110000
+0x00E1, // 0x02E4 : 0000000011100001
+0x01C3, // 0x02E5 : 0000000111000011
+0x0387, // 0x02E6 : 0000001110000111
+0x030E, // 0x02E7 : 0000001100001110
+0x021C, // 0x02E8 : 0000001000011100
+0x0038, // 0x02E9 : 0000000000111000
+0x0070, // 0x02EA : 0000000001110000
+0x00E1, // 0x02EB : 0000000011100001
+0x01C3, // 0x02EC : 0000000111000011
+0x0387, // 0x02ED : 0000001110000111
+
+0x0200, // 0x02EE : 0000001000000000 #107 (0x8B)
+0x0100, // 0x02EF : 0000000100000000
+0x0080, // 0x02F0 : 0000000010000000
+0x0040, // 0x02F1 : 0000000001000000
+0x0020, // 0x02F2 : 0000000000100000
+0x0010, // 0x02F3 : 0000000000010000
+0x0008, // 0x02F4 : 0000000000001000
+0x0004, // 0x02F5 : 0000000000000100
+0x0002, // 0x02F6 : 0000000000000010
+0x0001, // 0x02F7 : 0000000000000001
+
+0x0001, // 0x02F8 : 0000000000000001 #108 (0x8C)
+0x0002, // 0x02F9 : 0000000000000010
+0x0004, // 0x02FA : 0000000000000100
+0x0008, // 0x02FB : 0000000000001000
+0x0010, // 0x02FC : 0000000000010000
+0x0020, // 0x02FD : 0000000000100000
+0x0040, // 0x02FE : 0000000001000000
+0x0080, // 0x02FF : 0000000010000000
+0x0100, // 0x0300 : 0000000100000000
+0x0200, // 0x0301 : 0000001000000000
+
+0x0000, // 0x0302 : 0000000000000000 #109 (0x8D)
+0x00E0, // 0x0303 : 0000000011100000
+0x0110, // 0x0304 : 0000000100010000
+0x0208, // 0x0305 : 0000001000001000
+0x0204, // 0x0306 : 0000001000000100
+0x0102, // 0x0307 : 0000000100000010
+0x0081, // 0x0308 : 0000000010000001
+0x0102, // 0x0309 : 0000000100000010
+0x0204, // 0x030A : 0000001000000100
+0x0208, // 0x030B : 0000001000001000
+0x0110, // 0x030C : 0000000100010000
+0x00E0, // 0x030D : 0000000011100000
+0x0000, // 0x030E : 0000000000000000
+
+0x0000, // 0x030F : 0000000000000000 #110 (0x8E)
+0x00E0, // 0x0310 : 0000000011100000
+0x01F0, // 0x0311 : 0000000111110000
+0x03F8, // 0x0312 : 0000001111111000
+0x03FC, // 0x0313 : 0000001111111100
+0x01FE, // 0x0314 : 0000000111111110
+0x00FF, // 0x0315 : 0000000011111111
+0x01FE, // 0x0316 : 0000000111111110
+0x03FC, // 0x0317 : 0000001111111100
+0x03F8, // 0x0318 : 0000001111111000
+0x01F0, // 0x0319 : 0000000111110000
+0x00E0, // 0x031A : 0000000011100000
+0x0000, // 0x031B : 0000000000000000
+
+0x0020, // 0x031C : 0000000000100000 #111 (0x8F)
+0x0040, // 0x031D : 0000000001000000
+0x0080, // 0x031E : 0000000010000000
+0x0080, // 0x031F : 0000000010000000
+0x0040, // 0x0320 : 0000000001000000
+0x0020, // 0x0321 : 0000000000100000
+0x0020, // 0x0322 : 0000000000100000
+0x0010, // 0x0323 : 0000000000010000
+0x0010, // 0x0324 : 0000000000010000
+0x0020, // 0x0325 : 0000000000100000
+0x0020, // 0x0326 : 0000000000100000
+0x0040, // 0x0327 : 0000000001000000
+0x0040, // 0x0328 : 0000000001000000
+0x0080, // 0x0329 : 0000000010000000
+0x0080, // 0x032A : 0000000010000000
+0x0080, // 0x032B : 0000000010000000
+0x0080, // 0x032C : 0000000010000000
+0x0080, // 0x032D : 0000000010000000
+0x0040, // 0x032E : 0000000001000000
+0x0040, // 0x032F : 0000000001000000
+0x0020, // 0x0330 : 0000000000100000
+0x0020, // 0x0331 : 0000000000100000
+0x0018, // 0x0332 : 0000000000011000
+0x0004, // 0x0333 : 0000000000000100
+0x0004, // 0x0334 : 0000000000000100
+0x0004, // 0x0335 : 0000000000000100
+0x0008, // 0x0336 : 0000000000001000
+0x0010, // 0x0337 : 0000000000010000
+0x0060, // 0x0338 : 0000000001100000
+0x0080, // 0x0339 : 0000000010000000
+0x0100, // 0x033A : 0000000100000000
+0x0100, // 0x033B : 0000000100000000
+0x0200, // 0x033C : 0000001000000000
+0x0200, // 0x033D : 0000001000000000
+0x0200, // 0x033E : 0000001000000000
+0x0200, // 0x033F : 0000001000000000
+0x0100, // 0x0340 : 0000000100000000
+0x0080, // 0x0341 : 0000000010000000
+0x0040, // 0x0342 : 0000000001000000
+0x0020, // 0x0343 : 0000000000100000
+0x0010, // 0x0344 : 0000000000010000
+0x000C, // 0x0345 : 0000000000001100
+0x0002, // 0x0346 : 0000000000000010
+0x0001, // 0x0347 : 0000000000000001
+0x0001, // 0x0348 : 0000000000000001
+0x0002, // 0x0349 : 0000000000000010
+0x0002, // 0x034A : 0000000000000010
+0x000C, // 0x034B : 0000000000001100
+0x0010, // 0x034C : 0000000000010000
+0x0000, // 0x034D : 0000000000000000
+0x0000, // 0x034E : 0000000000000000
+0x0000, // 0x034F : 0000000000000000
+0x0000, // 0x0350 : 0000000000000000
+0x03FF, // 0x0351 : 0000001111111111
+0x03FF, // 0x0352 : 0000001111111111
+0x0000, // 0x0353 : 0000000000000000
+0x0000, // 0x0354 : 0000000000000000
+0x03FF, // 0x0355 : 0000001111111111
+0x03FF, // 0x0356 : 0000001111111111
+0x0003, // 0x0357 : 0000000000000011
+0x0003, // 0x0358 : 0000000000000011
+0x0003, // 0x0359 : 0000000000000011
+0x0003, // 0x035A : 0000000000000011
+0x0000, // 0x035B : 0000000000000000
+0x0000, // 0x035C : 0000000000000000
+0x03FF, // 0x035D : 0000001111111111
+0x03FF, // 0x035E : 0000001111111111
+0x0003, // 0x035F : 0000000000000011
+0x0003, // 0x0360 : 0000000000000011
+0x0003, // 0x0361 : 0000000000000011
+0x0003, // 0x0362 : 0000000000000011
+0x0000, // 0x0363 : 0000000000000000
+0x0000, // 0x0364 : 0000000000000000
+0x03FC, // 0x0365 : 0000001111111100
+0x03FE, // 0x0366 : 0000001111111110
+0x0003, // 0x0367 : 0000000000000011
+0x0003, // 0x0368 : 0000000000000011
+0x0003, // 0x0369 : 0000000000000011
+0x03FE, // 0x036A : 0000001111111110
+0x03FC, // 0x036B : 0000001111111100
+0x0000, // 0x036C : 0000000000000000
+0x0300, // 0x036D : 0000001100000000
+0x0300, // 0x036E : 0000001100000000
+0x0300, // 0x036F : 0000001100000000
+0x03FF, // 0x0370 : 0000001111111111
+0x03FF, // 0x0371 : 0000001111111111
+0x0300, // 0x0372 : 0000001100000000
+0x0300, // 0x0373 : 0000001100000000
+0x0300, // 0x0374 : 0000001100000000
+0x0000, // 0x0375 : 0000000000000000
+0x03FF, // 0x0376 : 0000001111111111
+0x03FF, // 0x0377 : 0000001111111111
+0x0330, // 0x0378 : 0000001100110000
+0x0338, // 0x0379 : 0000001100111000
+0x033C, // 0x037A : 0000001100111100
+0x03F7, // 0x037B : 0000001111110111
+0x01E3, // 0x037C : 0000000111100011
+0x0000, // 0x037D : 0000000000000000
+0x0000, // 0x037E : 0000000000000000
+0x0078, // 0x037F : 0000000001111000
+0x01FE, // 0x0380 : 0000000111111110
+0x0387, // 0x0381 : 0000001110000111
+0x0303, // 0x0382 : 0000001100000011
+0x0303, // 0x0383 : 0000001100000011
+0x0303, // 0x0384 : 0000001100000011
+0x0387, // 0x0385 : 0000001110000111
+0x01FE, // 0x0386 : 0000000111111110
+0x0078, // 0x0387 : 0000000001111000
+0x0000, // 0x0388 : 0000000000000000
+0x0000, // 0x0389 : 0000000000000000
+0x03FF, // 0x038A : 0000001111111111
+0x03FF, // 0x038B : 0000001111111111
+0x01C0, // 0x038C : 0000000111000000
+0x00E0, // 0x038D : 0000000011100000
+0x0070, // 0x038E : 0000000001110000
+0x0038, // 0x038F : 0000000000111000
+0x001C, // 0x0390 : 0000000000011100
+0x03FF, // 0x0391 : 0000001111111111
+0x03FF, // 0x0392 : 0000001111111111
+0x0000, // 0x0393 : 0000000000000000
+0x0000, // 0x0394 : 0000000000000000
+0x0000, // 0x0395 : 0000000000000000
+0x0000 // 0x0396 : 0000000000000000
+
+};
+
+// FONTCONVERTER PROCESING SKETCH FOLLOWS //
+
+/*
+
+void setup()
+{
+ PImage f = loadImage("font.png");
+ QQ = new Qfont(f);
+ QQ.dump();
+}
+
+class Qsym
+{
+ int px;
+ int ofs;
+ int w;
+ Qsym(int px,int ofs,int w)
+ {
+ this.px = px;
+ this.ofs = ofs;
+ this.w = w;
+ print(".");
+// print("Px: " + px + " W: " + w + "\n");
+ }
+}
+
+class Qfont
+{
+ int tCols;
+ int numSymbols;
+ Qsym[] symbols;
+ PImage img;
+ Qfont(PImage img)
+ {
+ this.img = img;
+ this.process();
+ }
+
+ int scan(boolean commit)
+ {
+ int x = 0;
+ int x0 = 0;
+ int ns = 0;
+ int w = 0;
+ int a = 0;
+ int ofs = 0;
+ while(x<img.width)
+ {
+ if (a == 0)
+ {
+ // looking for symbol start
+ for (int y=0;y<img.height;y++)
+ {
+ color Z = img.get(x,y);
+ if (red(Z) > 128)
+ {
+ a=1;
+ w=1;
+ x0=x;
+ }
+ }
+ }
+ else
+ {
+ // looking for symbol finish
+ a=0;
+ for (int y=0;y<img.height;y++)
+ {
+ color Z = img.get(x,y);
+ if (red(Z) > 128)
+ {
+ a=1;
+ }
+ }
+ if (a == 0)
+ {
+ if (commit)
+ {
+ symbols[ns] = new Qsym(x0,ofs,w);
+ ofs+=w;
+ this.tCols = ofs;
+ }
+ ns++;
+ }
+ else
+ {
+ w++;
+ }
+ }
+ x++;
+ }
+ return ns;
+ }
+
+ void process()
+ {
+ int n = scan(false);
+ this.numSymbols = n;
+ print("Number of symbols found:" + n + "\n");
+ symbols = new Qsym[n];
+ print("Scanning..." + "\n");
+ scan(true); // commit
+ print("done." + "\n");
+ }
+
+ void dump()
+ {
+ print("\n");
+ print("PROGMEM prog_uint16_t symOffsets[] = {" + "\n");
+ for (int i=0;i<this.numSymbols;i++)
+ {
+ print (this.symbols[i].ofs);
+ if (i < this.numSymbols-1) print (", ");
+ if (i % 16 == 15)
+ {
+ print("\n");
+ }
+ }
+ print("\n" + "};" + "\n");
+
+ print("\n");
+ print("PROGMEM prog_uint8_t symWidths[] = {" + "\n");
+ for (int i=0;i<this.numSymbols;i++)
+ {
+ print ("0x"+hex(this.symbols[i].w,2));
+ if (i < this.numSymbols-1) print (", ");
+ if (i % 10 == 9)
+ {
+ print("\n");
+ }
+ }
+ print("\n" + "};" + "\n");
+
+ print("\n");
+ print("PROGMEM prog_uint16_t symPatterns[] = {" + "\n");
+
+ int i = 0;
+ for (int c=0;c<this.numSymbols;c++)
+ {
+ int px = this.symbols[c].px;
+ for (int x=px;x<(px+this.symbols[c].w);x++)
+ {
+ if (x == px)
+ {
+ println();
+ }
+ int pat = 0;
+ for (int y=0;y<16;y++)
+ {
+ color q = img.get(x,15-y);
+ if (green(q) > 128) pat += 1<<y;
+ }
+ print("0x" + hex(pat,4));
+ if (i < tCols-1)
+ {
+ print(", ");
+ }
+ else
+ {
+ print(" ");
+ }
+ print(" // 0x");
+ print( hex(i,4));
+ print(" : ");
+ print (binary(pat,16));
+ if (x == px)
+ {
+ print(" #" + c + " (0x" + hex(32+c,2) + ")" );
+ }
+ println();
+ i++;
+ }
+ }
+ print("\n" + "};" + "\n");
+
+ }
+
+}
+
+Qfont QQ;
+
+
+*/
+
30 Arduino/xrope2/p03_text.pde
@@ -0,0 +1,30 @@
+unsigned int getCharWidth(unsigned char ascii)
+{
+ int index = ascii - 0x20;
+ unsigned int w = pgm_read_byte_near(symWidths + index);
+ return w;
+}
+
+unsigned int getStringWidth(String *string)
+{
+ int L = 0;
+ int NC = string->length();
+ for (int i=0;i<NC;i++)
+ {
+ int Q = string->charAt(i);
+ int N = getCharWidth(Q);
+ L += N;
+ }
+ return L;
+}
+
+unsigned int getCharColumn(unsigned char ascii, unsigned int x)
+{
+ int index = ascii - 0x20;
+ unsigned int ofs = (unsigned int) pgm_read_word_near(symOffsets + index) + x;
+ unsigned int pat = (unsigned int) pgm_read_word_near(symPatterns + ofs);
+ //return pat;
+ return pat;
+}
+
+
101 Arduino/xrope2/p04_rope.pde
@@ -0,0 +1,101 @@
+#define pLatch 5
+#define pClock 4
+#define pData 3
+#define pSync 2
+
+// 5-meter rope has 30 modules (60 pixels)
+// _numPixels is always twice _numModules.
+
+#define _numModules 11
+#define _numPixels _numModules * 2
+
+unsigned char ropeCmd[_numPixels];
+
+void setWholeRopeColor(unsigned char red, unsigned char green, unsigned char blue)
+{
+ unsigned char command = (red == 0 ? 0 : 0x04 ) | (green == 0 ? 0 : 0x01) | (blue == 0 ? 0 : 0x10) | 0x80;
+ setWholeRopeCommand(command);
+}
+
+void setRopeColor(unsigned int index, unsigned char red, unsigned char green, unsigned char blue)
+{
+ setRopeCommand(index,getRopeCommand(red,green,blue));
+}
+
+unsigned char getRopeCommand(unsigned char red, unsigned char green, unsigned char blue)
+{
+ return (red == 0 ? 0 : 0x04 ) | (green == 0 ? 0 : 0x01) | (blue == 0 ? 0 : 0x10) | 0x80;
+}
+
+void setRopeCommand(unsigned int index, unsigned char command)
+{
+ if (index < _numPixels) ropeCmd[index] = command;
+}
+
+void setRopelCommandUnsafe(unsigned int index, unsigned char command)
+{
+ ropeCmd[index] = command;
+}
+
+void setWholeRopeCommand(unsigned char command)
+{
+ for (int i=0;i<_numPixels;i++)
+ {
+ ropeCmd[i] = command;
+ }
+}
+
+void initRope()
+{
+ setRopePins();
+ setWholeRopeColor(0,0,0);
+ initPatterns();
+}
+
+void ropeScan()
+{
+ for (int m=_numModules-1;m>=0;m--)
+ {
+ if (m % 6 == 0) LS_sync();
+ for (int x=1;x>=0;x--)
+ {
+ LS_pushCMD(ropeCmd[(m << 1)+x]);
+ }
+ }
+ LS_latch();
+ ropeFrameAdvance();
+}
+
+// *********************************************************************************
+// HARDWARE
+// *********************************************************************************
+
+void setRopePins()
+{
+ pinMode(pLatch,OUTPUT);
+ pinMode(pClock,OUTPUT);
+ pinMode(pSync,OUTPUT);
+ pinMode(pData,OUTPUT);
+}
+
+void LS_pushCMD(unsigned char cmd)
+{
+ shiftOut(pData, pClock, MSBFIRST, cmd);
+}
+
+void LS_sync()
+{
+ digitalWrite(pSync,HIGH);
+ delayMicroseconds(1);
+ digitalWrite(pSync,LOW);
+ delayMicroseconds(1);
+}
+
+void LS_latch()
+{
+ digitalWrite(pLatch, HIGH);
+ delayMicroseconds(1);
+ digitalWrite(pLatch, LOW);
+ delayMicroseconds(1);
+}
+
260 Arduino/xrope2/p05_bikeRope.pde
@@ -0,0 +1,260 @@
+void ropeFrameAdvance()
+{
+ patternRunner();
+}
+
+// cyclic slant buffer - to compensate for diagonal bar
+
+unsigned char ropeSlantBufL[10][10];
+unsigned char ropeSlantBufR[10][10];
+unsigned char slantBufIndex = 0;
+
+void scanSlantBuf()
+{
+ // left side. slant forward
+ for (int i=0;i<10;i++)
+ {
+ ropeCmd[i] =ropeSlantBufR[(slantBufIndex+9-i)%10][i]; // right
+// ropeCmd[19-i] = ropeSlantBufL[(slantBufIndex+i)%10][i]; // left -- wrong?
+ ropeCmd[19-i] = ropeSlantBufL[(slantBufIndex+9-i)%10][i]; // left (corrected ?)
+ }
+ slantBufIndex++;
+ slantBufIndex %= 10;
+}
+
+void setSlantBufL(int index, unsigned char cmd)
+{
+ ropeSlantBufL[slantBufIndex][index] = cmd;
+}
+
+void setSlantBufR(int index, unsigned char cmd)
+{
+ ropeSlantBufR[slantBufIndex][index] = cmd;
+}
+
+// ------------------------------------------------------------
+// STRUCTS
+// ------------------------------------------------------------
+
+struct TP
+{
+ int length;
+ int pos;
+ int repeats;
+ int count;
+ void (*restart) ();
+ void (*paint) (int index);
+};
+
+struct StringSide
+{
+ unsigned char charIndex;
+ unsigned char charVal;
+ unsigned char numCols;
+ unsigned char colIndex;
+};
+
+// ------------------------------------------------------------
+
+TP *CP; // current pattern
+
+void setBikeRopeColumnR(unsigned int pattern, unsigned char command0, unsigned char command1)
+{
+ for (int i=0;i<10;i++)
+ {
+ unsigned char cmd = (pattern >> i) & 0x01 ? command1 : command0;
+ //setRopeCommand(i,cmd);
+ setSlantBufR(i,cmd);
+ }
+}
+
+void setBikeRopeColumnL(unsigned int pattern, unsigned char command0, unsigned char command1)
+{
+ for (int i=0;i<10;i++)
+ {
+ unsigned char cmd = (pattern >> i) & 0x01 ? command1 : command0;
+ //setRopeCommand(21-i,cmd);
+ setSlantBufL(i,cmd);
+ }
+}
+
+
+// =================================================
+// PATTERN 1
+// =================================================
+
+TP pt1;
+unsigned char pt1FGcmd;
+unsigned char pt1BGcmd;
+unsigned char pt1NumChars;
+StringSide pt1L;
+StringSide pt1R;
+String pt1S;
+
+void pt1_init (String newString, unsigned char cmd0, unsigned char cmd1)
+{
+ pt1S = newString;
+ pt1.paint = &pt1_paint;
+ pt1.restart = &pt1_restart;
+ //pt1S = newString;
+ pt1BGcmd = cmd0;
+ pt1FGcmd = cmd1;
+ pt1NumChars = pt1S.length();
+ pt1.length = getStringWidth(&pt1S);
+ Serial.print("Num Chars: ");
+ Serial.println((int) pt1NumChars);
+ Serial.print("Num Cols: ");
+ Serial.println((int) pt1.length);
+ for (int i=0;i<pt1NumChars;i++)
+ {
+ int Q = pt1S.charAt(i);
+ //pt1S.charAt(i);
+ Serial.print("Ascii: ");
+ Serial.println(Q);
+ }
+ pt1.pos = 0;
+ pt1.repeats = 1;
+ pt1.count = 0;
+ pt1_restart();
+ // Serial.print("Pt1_init");
+}
+
+void pt1_setFGcolor(int red, int green, int blue)
+{
+ pt1FGcmd = getRopeCommand(red,green,blue);
+}
+
+void pt1_setBGcolor(int red, int green, int blue)
+{
+ pt1BGcmd = getRopeCommand(red,green,blue);
+}
+
+void pt1randomColor()
+{
+ pt1randomFGcolor();
+ pt1randomBGcolor();
+}
+
+void pt1randomFGcolor()
+{
+ unsigned char ok = false;
+ while(!ok)
+ {
+ pt1FGcmd = getRopeCommand(random(2),random(2),random(2));
+ ok = (pt1FGcmd != 0x80);
+ }
+}
+
+void pt1randomBGcolor()
+{
+ unsigned char ok = false;
+ while(!ok)
+ {
+ pt1BGcmd = getRopeCommand(random(2),random(2),random(2));
+ ok = (pt1BGcmd != 0x80);
+ }
+}
+
+void pt1_restart()
+{
+ pt1L.charIndex = pt1NumChars-1;
+ pt1L.charVal = pt1S.charAt(pt1L.charIndex);
+ pt1L.numCols = getCharWidth(pt1L.charVal);
+ pt1L.colIndex = pt1L.numCols-1;
+ pt1R.charIndex = 0;
+ pt1R.charVal = pt1S.charAt(pt1R.charIndex);
+ pt1R.numCols = getCharWidth(pt1R.charVal);
+ pt1R.colIndex = 0;
+ // Serial.print("Pt1_restart");
+}
+
+void pt1_paint(int index)
+{
+ // LEFT SIDE
+ setBikeRopeColumnL(getCharColumn(pt1L.charVal,pt1L.colIndex),pt1BGcmd,pt1FGcmd);
+ if(pt1L.colIndex > 0)
+ {
+ pt1L.colIndex--;
+ }
+ else
+ {
+ // reached leftmost side of character. go to next character
+ if (pt1L.charIndex > 0)
+ {
+ pt1L.charIndex--;
+ }
+ else
+ {
+ // !!! now what? out of characters! wraparound.
+ pt1L.charIndex = pt1NumChars-1;
+ }
+ pt1L.charVal = pt1S.charAt(pt1L.charIndex);
+ pt1L.numCols = getCharWidth(pt1L.charVal);
+ pt1L.colIndex = pt1L.numCols-1;
+ }
+
+ // RIGHT SIDE
+ setBikeRopeColumnR(getCharColumn(pt1R.charVal,pt1R.colIndex),pt1BGcmd,pt1FGcmd);
+ if (pt1R.colIndex < pt1R.numCols-1)
+ {
+ pt1R.colIndex++;
+ }
+ else
+ {
+ // reached rightmost side of character. go to next character.
+ if (pt1R.charIndex < (pt1NumChars-1))
+ {
+ pt1R.charIndex++;
+ }
+ else
+ {
+ // !!! now what? out of characters! wraparound.
+ pt1R.charIndex = 0;
+ }
+ pt1R.charVal = pt1S.charAt(pt1R.charIndex);
+ pt1R.numCols = getCharWidth(pt1R.charVal);
+ pt1R.colIndex = 0;
+ }
+}
+
+// =================================================
+// PATTERN SEQUENCER
+// =================================================
+
+
+void nextPattern()
+{
+ pt1randomFGcolor();
+}
+
+void initPatterns()
+{
+ Serial.begin(38400);
+// String K = "+ ILLUTRON 2011 ";
+ String K = char(0x8F);
+ pt1_init(K,getRopeCommand(0,0,0),getRopeCommand(1,0,0));
+// pt1_init(" Hello, world ",getRopeCommand(0,0,0),getRopeCommand(1,0,0));
+ CP = &pt1;
+// pt1_init("Hello world",getRopeCommand(0,0,0),getRopeCommand(0,1,0));
+}
+
+
+void patternRunner()
+{
+ CP->paint(CP->pos++);
+ scanSlantBuf();
+ if (CP->pos >= CP->length)
+ {
+ // reached end of pattern.
+ CP->pos = 0;
+ CP->restart();
+ if (CP->count++ >= CP->repeats)
+ {
+ CP->count = 0;
+ nextPattern();
+ }
+ }
+}
+
+
+
44 Arduino/xrope2/p06_wheelSensor.pde
@@ -0,0 +1,44 @@
+#define wheelScanPin 54
+#define wheelSupplyPin 55
+
+float wheelAvg = 500;
+
+void initWheelSensor()
+{
+ pinMode(wheelScanPin,INPUT);
+ digitalWrite(wheelScanPin,HIGH);
+ pinMode(wheelSupplyPin,OUTPUT);
+ digitalWrite(wheelSupplyPin,LOW);
+}
+
+volatile unsigned char magState = 0;
+volatile unsigned char magDelay = 0;
+
+void wheelRevolution()
+{
+ wheelAvg = 0.6 * wheelAvg + wheelTicks / 120.64; // works with 72cm wheel diameter
+ toRope = (int) wheelAvg;
+ wheelTicks = 0;
+}
+
+void wheelScan()
+{
+ unsigned char magScan = 1-digitalRead(wheelScanPin);
+ if (magScan == magState)
+ {
+ magDelay = 0;
+ }
+ else
+ {
+ magDelay++;
+ if (magDelay > 5)
+ {
+ magState = magScan;
+ magDelay = 0;
+ if (magState == 1)
+ {
+ wheelRevolution();
+ }
+ }
+ }
+}
105 Arduino/xrope2/xrope2.pde
@@ -0,0 +1,105 @@
+#include "avr/pgmspace.h"
+#include "avr/interrupt.h"
+#include <SPI.h>
+#include <Adb.h>
+#define MAX_RESET 8
+
+#define _toRope 300
+#define _toWheel 30
+#define _toAndroid 1000
+
+volatile unsigned char semRopeScan = 0;
+volatile unsigned char semWheelScan = 0;
+volatile unsigned char semAndroidScan = 0;
+
+long wheelTicks = 0;
+
+unsigned int dtRope;
+unsigned int dtWheel;
+unsigned int dtAndroid;
+unsigned int toRope = _toRope;
+
+void setup()
+{
+ dtRope = 0;
+ dtWheel = 0;
+ dtAndroid = 0;
+ initRope();
+ initWheelSensor();
+ initAndroid();
+ initInterrupt();
+}
+
+void loop()
+{
+ if (semRopeScan)
+ {
+ semRopeScan = 0;
+ ropeScan();
+ }
+ if (semWheelScan)
+ {
+ semWheelScan = 0;
+ wheelScan();
+ }
+ if (semAndroidScan)
+ {
+ semAndroidScan = 0;
+ androidScan();
+ }
+}
+
+
+SIGNAL(TIMER1_COMPA_vect)
+{
+ // this happens 16,000,000 / 1024 = 16,625 times per second
+
+ // ROPE
+ if (dtRope == 0)
+ {
+ dtRope = toRope;
+ semRopeScan = true;
+ }
+ else
+ {
+ dtRope--;
+ }
+
+ // WHEEL
+ wheelTicks++;
+ if (dtWheel == 0)
+ {
+ dtWheel = _toWheel;
+ semWheelScan = true;
+ }
+ else
+ {
+ dtWheel--;
+ }
+
+ // ANDROID
+ if (dtAndroid == 0)
+ {
+ dtAndroid = _toAndroid;
+ semAndroidScan = true;
+ }
+ else
+ {
+ dtAndroid--;
+ }
+
+
+}
+
+void initInterrupt()
+{
+ cli();
+ TCCR1A= 0 ;
+ TCCR1B = _BV(WGM12) | _BV(CS12) | _BV(CS10) ; // clock div 1024
+ // TCCR1B = _BV(WGM12) | _BV(CS12) ; // clock div 256
+ // TCCR1B = _BV(WGM12) | _BV(CS11) | _BV(CS10) ; // clock div 64
+ TIMSK1 = _BV(OCIE1A);
+ sei();
+}
+
+
80 Arduino/xrope3/p01_android.pde
@@ -0,0 +1,80 @@
+Connection * connection;
+
+volatile unsigned char androidConnected = false;
+
+void initAndroid()
+{
+ ADB::init();
+ connectAndroid();
+}
+
+void connectAndroid()
+{
+ connection = ADB::addConnection("tcp:4567", true, adbEventHandler);
+ androidConnected = true;
+}
+
+void tellAndroid(unsigned int length, uint8_t * data)
+{
+ if (androidConnected)
+ {
+ connection->write(length, data);
+ }
+}
+
+void adbEventHandler(Connection * connection, adb_eventType event, uint16_t length, uint8_t * data)
+{
+ if (event == ADB_CONNECTION_RECEIVE)
+ {
+ int messageType = data[0];
+ switch(messageType)
+ {
+ case 0:
+ {
+ // set pattern
+ randomPattern();
+ }
+ break;
+ case 1:
+ {
+ // set pattern
+ selectPattern(data[1]);
+ }
+ break;
+ case 2:
+ {
+ // set message
+ selectPattern(0); // text pattern
+ selectMessage(data[1]);
+ setTextColorRandomize(false);
+ }
+ break;
+ case 3:
+ {
+ // set color
+ selectPattern(1); // solid pattern
+ setSolidColor(data[1],data[2],data[3]);
+ }
+ break;
+ case 4:
+ {
+ toggleWheelRevAutoColor();
+ }
+ break;
+ }
+ }
+}
+
+// =================================================
+// ANDROID SEQUENCER
+// =================================================
+
+void androidScan()
+{
+ if (androidConnected)
+ {
+ ADB::poll();
+ }
+}
+
+
170 Arduino/xrope3/p05_HL1606.pde
@@ -0,0 +1,170 @@
+#define pLatch 5
+#define pClock 4
+#define pData 3
+#define pSync 2
+
+// 5-meter rope has 30 modules (60 pixels)
+// _numPixels is always twice _numModules.
+
+#define _numModules 10
+#define _numPixels _numModules * 2
+
+unsigned char ropeCmd[_numPixels];
+
+// *********************************************************************************
+// HARDWARE
+// *********************************************************************************
+
+void setRopePins()
+{
+ pinMode(pLatch,OUTPUT);
+ pinMode(pClock,OUTPUT);
+ pinMode(pSync,OUTPUT);
+ pinMode(pData,OUTPUT);
+}
+
+void LS_pushCMD(unsigned char cmd)
+{
+ shiftOut(pData, pClock, MSBFIRST, cmd);
+}
+
+void LS_sync()
+{
+ digitalWrite(pSync,HIGH);
+ delayMicroseconds(1);
+ digitalWrite(pSync,LOW);
+ delayMicroseconds(1);
+}
+
+void LS_latch()
+{
+ digitalWrite(pLatch, HIGH);
+ delayMicroseconds(1);
+ digitalWrite(pLatch, LOW);
+ delayMicroseconds(1);
+}
+
+// *********************************************************************************
+// CYCLIC SLANT COMPENSATION BUFFER
+// *********************************************************************************
+// Compensates for diagonally mounted LED bar
+
+unsigned char ropeSlantBufL[10][10];
+unsigned char ropeSlantBufR[10][10];
+unsigned char slantBufIndex = 0;
+
+// *********************************************************************************
+
+void scanSlantBuf()
+{
+ // left side. slant forward
+ for (int i=0;i<10;i++)
+ {
+ ropeCmd[i] =ropeSlantBufR[(slantBufIndex+9-i)%10][i]; // right
+ ropeCmd[19-i] = ropeSlantBufL[(slantBufIndex+9-i)%10][i]; // left (corrected ?)
+ }
+ slantBufIndex++;
+ slantBufIndex %= 10;
+}
+
+// *********************************************************************************
+
+void setSlantBufL(int index, unsigned char cmd)
+{
+ ropeSlantBufL[slantBufIndex][index] = cmd;
+}
+
+void setSlantBufR(int index, unsigned char cmd)
+{
+ ropeSlantBufR[slantBufIndex][index] = cmd;
+}
+
+// *********************************************************************************
+
+void set2CpatternL(unsigned int pattern, unsigned char command0, unsigned char command1)
+{
+ for (int i=0;i<10;i++)
+ {
+ unsigned char cmd = (pattern >> i) & 0x01 ? command1 : command0;
+ setSlantBufL(i,cmd);
+ }
+}
+
+void set2CpatternR(unsigned int pattern, unsigned char command0, unsigned char command1)
+{
+ for (int i=0;i<10;i++)
+ {
+ unsigned char cmd = (pattern >> i) & 0x01 ? command1 : command0;
+ //setRopeCommand(i,cmd);
+ setSlantBufR(i,cmd);
+ }
+}
+
+// *********************************************************************************
+// PRIVATE METHODS BYPASSING SLANT COMPENSATION
+// *********************************************************************************
+
+void setWholeRopeColor(unsigned char red, unsigned char green, unsigned char blue)
+{
+ unsigned char command = (red == 0 ? 0 : 0x04 ) | (green == 0 ? 0 : 0x01) | (blue == 0 ? 0 : 0x10) | 0x80;
+ setWholeRopeCommand(command);
+}
+
+void setRopeColor(unsigned int index, unsigned char red, unsigned char green, unsigned char blue)
+{
+ setRopeCommand(index,getRopeCommand(red,green,blue));
+}
+
+void setRopeCommand(unsigned int index, unsigned char command)
+{
+ if (index < _numPixels) ropeCmd[index] = command;
+}
+
+void setRopelCommandUnsafe(unsigned int index, unsigned char command)
+{
+ ropeCmd[index] = command;
+}
+
+// =================================================
+// PUBLIC ROPE METHODS
+// =================================================
+
+void initRope()
+{
+ setRopePins();
+ setWholeRopeColor(0,0,0);
+}
+
+void scanRope()
+{
+ for (int m=_numModules-1;m>=0;m--)
+ {
+ if (m % 6 == 0) LS_sync();
+ for (int x=1;x>=0;x--)
+ {
+ LS_pushCMD(ropeCmd[(m << 1)+x]);
+ }
+ }
+ LS_latch();
+}
+
+void ropeSync()
+{
+ LS_sync();
+}
+
+void setWholeRopeCommand(unsigned char command)
+{
+ for (int i=0;i<_numPixels;i++)
+ {
+ ropeCmd[i] = command;
+ }
+}
+
+unsigned char getRopeCommand(unsigned char red, unsigned char green, unsigned char blue)
+{
+ return (red == 0 ? 0 : 0x04 ) | (green == 0 ? 0 : 0x01) | (blue == 0 ? 0 : 0x10) | 0x80;
+}
+
+
+
23 Arduino/xrope3/p06_pattern.pde
@@ -0,0 +1,23 @@
+
+// ------------------------------------------------------------
+// STRUCTS
+// ------------------------------------------------------------
+
+struct Tpattern
+{
+ int length;
+ int pos;
+ int repeats;
+ int count;
+ void (*restart) ();
+ void (*paint) (int index);
+ void (*randomize) ();
+};
+
+
+// =================================================
+// PATTERN SEQUENCER
+// =================================================
+
+
+
1,277 Arduino/xrope3/p09_font.pde
@@ -0,0 +1,1277 @@
+#define _numSymbols 112
+
+PROGMEM prog_uint16_t symOffsets[] = {
+0, 4, 6, 10, 16, 22, 28, 35, 38, 42, 46, 52, 58, 61, 67, 70,
+74, 80, 84, 90, 96, 102, 108, 114, 120, 126, 132, 135, 138, 143, 149, 154,
+159, 167, 173, 179, 185, 191, 197, 203, 209, 215, 219, 225, 231, 237, 243, 249,
+255, 261, 267, 273, 279, 285, 291, 297, 303, 309, 315, 321, 324, 328, 331, 337,
+342, 345, 351, 357, 363, 369, 375, 381, 387, 393, 397, 402, 407, 411, 417, 423,
+429, 435, 441, 447, 453, 459, 465, 471, 477, 483, 489, 495, 499, 501, 505, 513,
+582, 592, 602, 608, 614, 620, 626, 659, 700, 722, 736, 750, 760, 770, 783, 796
+
+};
+
+PROGMEM prog_uint8_t symWidths[] = {
+0x04, 0x02, 0x04, 0x06, 0x06, 0x06, 0x07, 0x03, 0x04, 0x04,
+0x06, 0x06, 0x03, 0x06, 0x03, 0x04, 0x06, 0x04, 0x06, 0x06,
+0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x05, 0x06,
+0x05, 0x05, 0x08, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+0x06, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03,
+0x04, 0x03, 0x06, 0x05, 0x03, 0x06, 0x06, 0x06, 0x06, 0x06,
+0x06, 0x06, 0x06, 0x04, 0x05, 0x05, 0x04, 0x06, 0x06, 0x06,
+0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+0x06, 0x04, 0x02, 0x04, 0x08, 0x45, 0x0A, 0x0A, 0x06, 0x06,
+0x06, 0x06, 0x21, 0x29, 0x16, 0x0E, 0x0E, 0x0A, 0x0A, 0x0D,
+0x0D, 0x7B
+};
+
+PROGMEM prog_uint16_t symPatterns[] = {
+
+0x0000, // 0x0000 : 0000000000000000 #0 (0x20)
+0x0000, // 0x0001 : 0000000000000000
+0x0000, // 0x0002 : 0000000000000000
+0x0000, // 0x0003 : 0000000000000000
+
+0x00FA, // 0x0004 : 0000000011111010 #1 (0x21)
+0x0000, // 0x0005 : 0000000000000000
+
+0x00C0, // 0x0006 : 0000000011000000 #2 (0x22)
+0x0000, // 0x0007 : 0000000000000000
+0x00C0, // 0x0008 : 0000000011000000
+0x0000, // 0x0009 : 0000000000000000
+
+0x0044, // 0x000A : 0000000001000100 #3 (0x23)
+0x00FE, // 0x000B : 0000000011111110
+0x0044, // 0x000C : 0000000001000100
+0x00FE, // 0x000D : 0000000011111110
+0x0044, // 0x000E : 0000000001000100
+0x0000, // 0x000F : 0000000000000000
+
+0x0064, // 0x0010 : 0000000001100100 #4 (0x24)
+0x0092, // 0x0011 : 0000000010010010
+0x01FF, // 0x0012 : 0000000111111111
+0x0092, // 0x0013 : 0000000010010010
+0x004C, // 0x0014 : 0000000001001100
+0x0000, // 0x0015 : 0000000000000000
+
+0x00C2, // 0x0016 : 0000000011000010 #5 (0x25)
+0x00CC, // 0x0017 : 0000000011001100
+0x0010, // 0x0018 : 0000000000010000
+0x0066, // 0x0019 : 0000000001100110
+0x0086, // 0x001A : 0000000010000110
+0x0000, // 0x001B : 0000000000000000
+
+0x00DC, // 0x001C : 0000000011011100 #6 (0x26)
+0x0122, // 0x001D : 0000000100100010
+0x00D2, // 0x001E : 0000000011010010
+0x000A, // 0x001F : 0000000000001010
+0x0004, // 0x0020 : 0000000000000100
+0x000A, // 0x0021 : 0000000000001010
+0x0000, // 0x0022 : 0000000000000000
+
+0x00A0, // 0x0023 : 0000000010100000 #7 (0x27)
+0x00C0, // 0x0024 : 0000000011000000
+0x0000, // 0x0025 : 0000000000000000
+
+0x0038, // 0x0026 : 0000000000111000 #8 (0x28)
+0x0044, // 0x0027 : 0000000001000100
+0x0082, // 0x0028 : 0000000010000010
+0x0000, // 0x0029 : 0000000000000000
+
+0x0082, // 0x002A : 0000000010000010 #9 (0x29)
+0x0044, // 0x002B : 0000000001000100
+0x0038, // 0x002C : 0000000000111000
+0x0000, // 0x002D : 0000000000000000
+
+0x0020, // 0x002E : 0000000000100000 #10 (0x2A)
+0x00A8, // 0x002F : 0000000010101000
+0x0070, // 0x0030 : 0000000001110000
+0x00A8, // 0x0031 : 0000000010101000
+0x0020, // 0x0032 : 0000000000100000
+0x0000, // 0x0033 : 0000000000000000
+
+0x0010, // 0x0034 : 0000000000010000 #11 (0x2B)
+0x0010, // 0x0035 : 0000000000010000
+0x007C, // 0x0036 : 0000000001111100
+0x0010, // 0x0037 : 0000000000010000
+0x0010, // 0x0038 : 0000000000010000
+0x0000, // 0x0039 : 0000000000000000
+
+0x0005, // 0x003A : 0000000000000101 #12 (0x2C)
+0x0006, // 0x003B : 0000000000000110
+0x0000, // 0x003C : 0000000000000000
+
+0x0010, // 0x003D : 0000000000010000 #13 (0x2D)
+0x0010, // 0x003E : 0000000000010000
+0x0010, // 0x003F : 0000000000010000
+0x0010, // 0x0040 : 0000000000010000
+0x0010, // 0x0041 : 0000000000010000
+0x0000, // 0x0042 : 0000000000000000
+
+0x0006, // 0x0043 : 0000000000000110 #14 (0x2E)
+0x0006, // 0x0044 : 0000000000000110
+0x0000, // 0x0045 : 0000000000000000
+
+0x0006, // 0x0046 : 0000000000000110 #15 (0x2F)
+0x0038, // 0x0047 : 0000000000111000
+0x00C0, // 0x0048 : 0000000011000000
+0x0000, // 0x0049 : 0000000000000000
+
+0x007C, // 0x004A : 0000000001111100 #16 (0x30)
+0x0082, // 0x004B : 0000000010000010
+0x0092, // 0x004C : 0000000010010010
+0x0082, // 0x004D : 0000000010000010
+0x007C, // 0x004E : 0000000001111100
+0x0000, // 0x004F : 0000000000000000
+
+0x0042, // 0x0050 : 0000000001000010 #17 (0x31)
+0x00FE, // 0x0051 : 0000000011111110
+0x0002, // 0x0052 : 0000000000000010
+0x0000, // 0x0053 : 0000000000000000
+
+0x0042, // 0x0054 : 0000000001000010 #18 (0x32)
+0x0086, // 0x0055 : 0000000010000110
+0x008A, // 0x0056 : 0000000010001010
+0x0092, // 0x0057 : 0000000010010010
+0x0062, // 0x0058 : 0000000001100010
+0x0000, // 0x0059 : 0000000000000000
+
+0x0084, // 0x005A : 0000000010000100 #19 (0x33)
+0x0082, // 0x005B : 0000000010000010
+0x00A2, // 0x005C : 0000000010100010
+0x00D2, // 0x005D : 0000000011010010
+0x008C, // 0x005E : 0000000010001100
+0x0000, // 0x005F : 0000000000000000
+
+0x0018, // 0x0060 : 0000000000011000 #20 (0x34)
+0x0028, // 0x0061 : 0000000000101000
+0x0048, // 0x0062 : 0000000001001000
+0x00FE, // 0x0063 : 0000000011111110
+0x0008, // 0x0064 : 0000000000001000
+0x0000, // 0x0065 : 0000000000000000
+
+0x00E4, // 0x0066 : 0000000011100100 #21 (0x35)
+0x00A2, // 0x0067 : 0000000010100010
+0x00A2, // 0x0068 : 0000000010100010
+0x00A2, // 0x0069 : 0000000010100010
+0x009C, // 0x006A : 0000000010011100
+0x0000, // 0x006B : 0000000000000000
+
+0x003C, // 0x006C : 0000000000111100 #22 (0x36)
+0x0052, // 0x006D : 0000000001010010
+0x0092, // 0x006E : 0000000010010010
+0x0092, // 0x006F : 0000000010010010
+0x000C, // 0x0070 : 0000000000001100
+0x0000, // 0x0071 : 0000000000000000
+
+0x0080, // 0x0072 : 0000000010000000 #23 (0x37)
+0x008E, // 0x0073 : 0000000010001110
+0x0090, // 0x0074 : 0000000010010000
+0x00A0, // 0x0075 : 0000000010100000
+0x00C0, // 0x0076 : 0000000011000000
+0x0000, // 0x0077 : 0000000000000000
+
+0x006C, // 0x0078 : 0000000001101100 #24 (0x38)
+0x0092, // 0x0079 : 0000000010010010
+0x0092, // 0x007A : 0000000010010010
+0x0092, // 0x007B : 0000000010010010
+0x006C, // 0x007C : 0000000001101100
+0x0000, // 0x007D : 0000000000000000
+
+0x0060, // 0x007E : 0000000001100000 #25 (0x39)
+0x0092, // 0x007F : 0000000010010010
+0x0092, // 0x0080 : 0000000010010010
+0x0094, // 0x0081 : 0000000010010100
+0x0078, // 0x0082 : 0000000001111000
+0x0000, // 0x0083 : 0000000000000000
+
+0x0066, // 0x0084 : 0000000001100110 #26 (0x3A)
+0x0066, // 0x0085 : 0000000001100110
+0x0000, // 0x0086 : 0000000000000000
+
+0x0065, // 0x0087 : 0000000001100101 #27 (0x3B)
+0x0066, // 0x0088 : 0000000001100110
+0x0000, // 0x0089 : 0000000000000000
+
+0x0010, // 0x008A : 0000000000010000 #28 (0x3C)
+0x0028, // 0x008B : 0000000000101000
+0x0044, // 0x008C : 0000000001000100
+0x0082, // 0x008D : 0000000010000010
+0x0000, // 0x008E : 0000000000000000
+
+0x0028, // 0x008F : 0000000000101000 #29 (0x3D)
+0x0028, // 0x0090 : 0000000000101000
+0x0028, // 0x0091 : 0000000000101000
+0x0028, // 0x0092 : 0000000000101000
+0x0028, // 0x0093 : 0000000000101000
+0x0000, // 0x0094 : 0000000000000000
+
+0x0082, // 0x0095 : 0000000010000010 #30 (0x3E)
+0x0044, // 0x0096 : 0000000001000100
+0x0028, // 0x0097 : 0000000000101000
+0x0010, // 0x0098 : 0000000000010000
+0x0000, // 0x0099 : 0000000000000000
+
+0x0040, // 0x009A : 0000000001000000 #31 (0x3F)
+0x008A, // 0x009B : 0000000010001010
+0x0090, // 0x009C : 0000000010010000
+0x0060, // 0x009D : 0000000001100000
+0x0000, // 0x009E : 0000000000000000
+
+0x007C, // 0x009F : 0000000001111100 #32 (0x40)
+0x0082, // 0x00A0 : 0000000010000010
+0x00BA, // 0x00A1 : 0000000010111010
+0x00AA, // 0x00A2 : 0000000010101010
+0x00BA, // 0x00A3 : 0000000010111010
+0x008A, // 0x00A4 : 0000000010001010
+0x0072, // 0x00A5 : 0000000001110010
+0x0000, // 0x00A6 : 0000000000000000
+
+0x007E, // 0x00A7 : 0000000001111110 #33 (0x41)
+0x0090, // 0x00A8 : 0000000010010000
+0x0090, // 0x00A9 : 0000000010010000
+0x0090, // 0x00AA : 0000000010010000
+0x007E, // 0x00AB : 0000000001111110
+0x0000, // 0x00AC : 0000000000000000
+
+0x00FE, // 0x00AD : 0000000011111110 #34 (0x42)
+0x0092, // 0x00AE : 0000000010010010
+0x0092, // 0x00AF : 0000000010010010
+0x0092, // 0x00B0 : 0000000010010010
+0x006C, // 0x00B1 : 0000000001101100
+0x0000, // 0x00B2 : 0000000000000000
+
+0x007C, // 0x00B3 : 0000000001111100 #35 (0x43)
+0x0082, // 0x00B4 : 0000000010000010
+0x0082, // 0x00B5 : 0000000010000010
+0x0082, // 0x00B6 : 0000000010000010
+0x0044, // 0x00B7 : 0000000001000100
+0x0000, // 0x00B8 : 0000000000000000
+
+0x00FE, // 0x00B9 : 0000000011111110 #36 (0x44)
+0x0082, // 0x00BA : 0000000010000010
+0x0082, // 0x00BB : 0000000010000010
+0x0082, // 0x00BC : 0000000010000010
+0x007C, // 0x00BD : 0000000001111100
+0x0000, // 0x00BE : 0000000000000000
+
+0x00FE, // 0x00BF : 0000000011111110 #37 (0x45)
+0x0092, // 0x00C0 : 0000000010010010
+0x0092, // 0x00C1 : 0000000010010010
+0x0092, // 0x00C2 : 0000000010010010
+0x0082, // 0x00C3 : 0000000010000010
+0x0000, // 0x00C4 : 0000000000000000
+
+0x00FE, // 0x00C5 : 0000000011111110 #38 (0x46)
+0x0090, // 0x00C6 : 0000000010010000
+0x0090, // 0x00C7 : 0000000010010000
+0x0090, // 0x00C8 : 0000000010010000
+0x0080, // 0x00C9 : 0000000010000000
+0x0000, // 0x00CA : 0000000000000000
+
+0x007C, // 0x00CB : 0000000001111100 #39 (0x47)
+0x0082, // 0x00CC : 0000000010000010
+0x0092, // 0x00CD : 0000000010010010
+0x0092, // 0x00CE : 0000000010010010
+0x005E, // 0x00CF : 0000000001011110
+0x0000, // 0x00D0 : 0000000000000000
+
+0x00FE, // 0x00D1 : 0000000011111110 #40 (0x48)
+0x0010, // 0x00D2 : 0000000000010000
+0x0010, // 0x00D3 : 0000000000010000
+0x0010, // 0x00D4 : 0000000000010000
+0x00FE, // 0x00D5 : 0000000011111110
+0x0000, // 0x00D6 : 0000000000000000
+
+0x0082, // 0x00D7 : 0000000010000010 #41 (0x49)
+0x00FE, // 0x00D8 : 0000000011111110
+0x0082, // 0x00D9 : 0000000010000010
+0x0000, // 0x00DA : 0000000000000000
+
+0x0004, // 0x00DB : 0000000000000100 #42 (0x4A)
+0x0002, // 0x00DC : 0000000000000010
+0x0082, // 0x00DD : 0000000010000010
+0x00FC, // 0x00DE : 0000000011111100
+0x0080, // 0x00DF : 0000000010000000
+