Просмотр исходного кода

Squashed 'wiiec/' changes from 8ff921b4f..97aa2a5d9

97aa2a5d9 fixing some big bugs
b1a43b15d fix plugins, remove dupe
e7bdd1b3c move apps
REVERT: 8ff921b4f v1.0.1: update to work with new mutex API
REVERT: 6243eb227 Merge branch 'main' of https://github.com/csBlueChip/FlipperZero_WiiEC
REVERT: 6213c7478 fix crash exiting easter eggs accessed from WAIT scene .. closes #3
REVERT: c896ce1b0 fix crash exiting easter eggs accessed from WAIT scene
REVERT: 70314c03d Update README.md
REVERT: 43882f35e Make previous checkin actually compile! Should probably learn how branches work in git
REVERT: d833473bd fix #2 - Nunchuck Rev2 & Classic Controller Pro
REVERT: bcaf987f0 Fix case insensitive filename clash (for Windows)
REVERT: df5a6c809 initial checkin
REVERT: 398c3adb9 Initial commit

git-subtree-dir: wiiec
git-subtree-split: 97aa2a5d9142d223f548311c736b992822bea1b3
Willy-JL 2 лет назад
Родитель
Сommit
540cb4db22
100 измененных файлов с 2200 добавлено и 2121 удалено
  1. 139 129
      _image_tool/_convert.c
  2. 111 115
      _image_tool/_convert_images.c
  3. 33 33
      _image_tool/_convert_images.h
  4. 45 45
      _image_tool/_convert_test.c
  5. 28 32
      application.fam
  6. 27 27
      bc_logging.h
  7. 47 44
      err.h
  8. 111 115
      gfx/images.c
  9. 114 114
      gfx/images.h
  10. 1 3
      gfx/img_3x5_0.c
  11. 1 3
      gfx/img_3x5_1.c
  12. 1 3
      gfx/img_3x5_2.c
  13. 1 3
      gfx/img_3x5_3.c
  14. 1 3
      gfx/img_3x5_4.c
  15. 1 3
      gfx/img_3x5_5.c
  16. 1 3
      gfx/img_3x5_6.c
  17. 1 3
      gfx/img_3x5_7.c
  18. 1 3
      gfx/img_3x5_8.c
  19. 1 3
      gfx/img_3x5_9.c
  20. 1 3
      gfx/img_3x5_v.c
  21. 1 3
      gfx/img_5x7_0.c
  22. 1 3
      gfx/img_5x7_1.c
  23. 1 3
      gfx/img_5x7_2.c
  24. 1 3
      gfx/img_5x7_3.c
  25. 1 3
      gfx/img_5x7_4.c
  26. 1 3
      gfx/img_5x7_5.c
  27. 1 3
      gfx/img_5x7_6.c
  28. 1 3
      gfx/img_5x7_7.c
  29. 1 3
      gfx/img_5x7_8.c
  30. 1 3
      gfx/img_5x7_9.c
  31. 1 3
      gfx/img_5x7_A.c
  32. 1 3
      gfx/img_5x7_B.c
  33. 1 3
      gfx/img_5x7_C.c
  34. 1 3
      gfx/img_5x7_D.c
  35. 1 3
      gfx/img_5x7_E.c
  36. 1 3
      gfx/img_5x7_F.c
  37. 1 3
      gfx/img_6x8_0.c
  38. 1 3
      gfx/img_6x8_1.c
  39. 1 3
      gfx/img_6x8_2.c
  40. 1 3
      gfx/img_6x8_3.c
  41. 1 3
      gfx/img_6x8_4.c
  42. 1 3
      gfx/img_6x8_5.c
  43. 1 3
      gfx/img_6x8_6.c
  44. 1 3
      gfx/img_6x8_7.c
  45. 1 3
      gfx/img_6x8_8.c
  46. 1 3
      gfx/img_6x8_9.c
  47. 1 3
      gfx/img_6x8_A.c
  48. 1 3
      gfx/img_6x8_B.c
  49. 1 3
      gfx/img_6x8_C.c
  50. 1 3
      gfx/img_6x8_D.c
  51. 1 3
      gfx/img_6x8_E.c
  52. 1 3
      gfx/img_6x8_F.c
  53. 1 3
      gfx/img_6x8_G.c
  54. 1 3
      gfx/img_6x8_X.c
  55. 1 3
      gfx/img_6x8_Y.c
  56. 1 3
      gfx/img_6x8_Z.c
  57. 1 3
      gfx/img_6x8_d_.c
  58. 1 3
      gfx/img_6x8_n_.c
  59. 1 3
      gfx/img_6x8_v_.c
  60. 63 55
      gfx/img_RIP.c
  61. 11 3
      gfx/img_cc_Cable.c
  62. 5 5
      gfx/img_cc_Joy.c
  63. 44 36
      gfx/img_cc_Main.c
  64. 1 3
      gfx/img_cc_btn_A1.c
  65. 1 3
      gfx/img_cc_btn_B1.c
  66. 1 3
      gfx/img_cc_btn_X1.c
  67. 1 3
      gfx/img_cc_btn_Y1.c
  68. 1 3
      gfx/img_cc_pad_LR1.c
  69. 1 3
      gfx/img_cc_pad_UD1.c
  70. 7 3
      gfx/img_cc_trg_L1.c
  71. 19 3
      gfx/img_cc_trg_L2.c
  72. 7 3
      gfx/img_cc_trg_L3.c
  73. 15 3
      gfx/img_cc_trg_L4.c
  74. 7 3
      gfx/img_cc_trg_R1.c
  75. 7 3
      gfx/img_cc_trg_R2.c
  76. 7 3
      gfx/img_cc_trg_R3.c
  77. 18 3
      gfx/img_cc_trg_R4.c
  78. 46 38
      gfx/img_csLogo_FULL.c
  79. 7 3
      gfx/img_csLogo_Small.c
  80. 7 3
      gfx/img_ecp_SCL.c
  81. 4 4
      gfx/img_ecp_SDA.c
  82. 27 21
      gfx/img_ecp_port.c
  83. 2 3
      gfx/img_key_Back.c
  84. 2 3
      gfx/img_key_D.c
  85. 2 3
      gfx/img_key_L.c
  86. 2 3
      gfx/img_key_OK.c
  87. 2 3
      gfx/img_key_OKi.c
  88. 2 3
      gfx/img_key_R.c
  89. 2 3
      gfx/img_key_U.c
  90. 2 3
      gfx/img_key_Ui.c
  91. 74 62
      i2c_workaround.h
  92. 426 434
      wii_anal.c
  93. 56 65
      wii_anal.h
  94. 97 79
      wii_anal_ec.c
  95. 6 6
      wii_anal_ec.h
  96. 246 242
      wii_anal_keys.c
  97. 9 9
      wii_anal_keys.h
  98. 213 154
      wii_anal_lcd.c
  99. 40 26
      wii_anal_lcd.h
  100. 5 6
      wii_anal_ver.h

+ 139 - 129
_image_tool/_convert.c

@@ -3,136 +3,146 @@
 #include <stdio.h>
 #include <stdio.h>
 #include <string.h>
 #include <string.h>
 
 
-int  main (int argc,  char* argv[])
-{
-	const unsigned char*  pp       = NULL;
-	uint32_t              pix      = 0;
-	int                   bit      = 0;
-
-	uint8_t               b        = 0;
-	uint8_t               bcnt     = 0;
-
-	unsigned int          lcnt     = 0;
-	static const int      lmax     = 16;  // max hex values per line
-
-	uint8_t*              buf      = NULL;
-	uint8_t*              bp       = NULL;
-	unsigned int          blen     = 0;
-
-	uint8_t*              cmp      = NULL;
-	uint8_t*              cp       = NULL;
-	unsigned int          clen     = 0;
-	uint8_t               ctag     = 0xFF;
-	uint32_t              tag[256] = {0};
-	uint32_t              tmax     = UINT32_MAX;
-
-	unsigned int          x, y, z;
-
-	const char*           name     = argv[1];
-	FILE*                 fh       = fopen(argv[2], "wb");
-
-	uint32_t              white    = 0xFF;
-
-	int                   rv       = 0;  // assume success
-
-	// allocate buffers
-	blen = ((img.w * img.h) +0x7) >>3;
-	bp = (buf = calloc(blen +1, 1));
-	cp = (cmp = calloc(blen +4, 1));
-
-	// sanity check
-	if (!fh || !buf || !cmp) {
-		printf("! fopen() or malloc() fail.\n");
-		rv = 255;
-		goto bail;
-	}
-
-	// Find white value
-	for (x = 1;  x < img.bpp;  x++)
-		white = (white << 8) | 0xFF ;
-
-	// build bit pattern
-	// create the comment as we go
-	for (pp = img.b,  y = 0;  y < img.h;  y++) {
-		fprintf(fh, "// ");
-		for (x = 0;  x < img.w;  x++) {
-			// read pixel
-			for (pix = 0,  z = 0;  z < img.bpp;  pix = (pix << 8) | *pp++, z++) ;
-			// get bit and draw
-			if (pix < white) {
-				b = (b << 1) | 1;
-				fprintf(fh, "##");
-			} else {
-				b <<= 1;
-				fprintf(fh, "..");
-			}
-			// got byte
-			if ((++bcnt) == 8) {
-				*bp++ = b;
-				tag[b]++;
-				bcnt = (b = 0);
-			}
-		}
-		fprintf(fh, "\n");
-	}
-	fprintf(fh, "\n");
-	// padding
-	if (bcnt) {
-		b <<= (bcnt = 8 - bcnt);
-		*bp++ = b;
-		tag[b]++;
-	}
-	// Kill the compression
-	*bp = ~bp[-1];  // https://youtube.com/clip/Ugkx-JZIr16hETy7hz_H6yIdKPtxVe8C5w_V
-
-	// Byte run length compression
-	// Find a good tag
-	for (x = 0;  tmax && (x < 256);  x++) {
-		if (tag[x] < tmax) {
-			tmax = tag[x];
-			ctag = x;
-		}
-	}
-
-	// compress the data
-	for (bp = buf,  x = 0;  (clen < blen) && (x < blen);  x++) {
-		// need at least 4 the same to be worth it
-		// must compress tag (if it occurs)
-		if ((bp[x] == bp[x+1]) && (bp[x] == bp[x+2]) && (bp[x] == bp[x+3]) || (bp[x] == ctag)) {
-			for (y = 1;  (y < 255) && (bp[x] == bp[x+y]); y++) ;
-			*cp++  = ctag;   // tag
-			*cp++  = y;      // length
-			*cp++  = bp[x];  // byte
-			x     += y -1;
-			clen  += 3;
-		} else {
-			*cp++ = bp[x];
-			clen++;
-		}
-	}
-
-	// create struct
-	fprintf(fh, "#include \"images.h\"\n\n");
-	fprintf(fh, "const image_t  img_%s = { %d, %d, ", name, img.w, img.h);
-
-	if (clen < blen) {  // dump compressed?
-		fprintf(fh, "true, %d, 0x%02X, {  // orig:%d, comp:%.2f%%\n\t", 
-		            clen, ctag, blen, 100.0-((clen*100.0)/blen));
-		for (x = 0;  x < clen;  x++)
-			if (x == clen -1)  fprintf(fh, "0x%02X\n}};\n", cmp[x]) ;
-			else               fprintf(fh, "0x%02X%s", cmp[x], (!((x+1)%16)) ? ",\n\t" : ", ") ;
-
-	} else {  // dump UNcompressed
-		fprintf(fh, "false, %d, 0, {\n\t", blen);
-		for (x = 0;  x < blen;  x++)
-			if (x == blen -1)  fprintf(fh, "0x%02X\n}};\n", buf[x]) ;
-			else               fprintf(fh, "0x%02X%s", buf[x], (!((x+1)%16)) ? ",\n\t" : ", ") ;
-	}
+int main(int argc, char* argv[]) {
+    const unsigned char* pp = NULL;
+    uint32_t pix = 0;
+    int bit = 0;
+
+    uint8_t b = 0;
+    uint8_t bcnt = 0;
+
+    unsigned int lcnt = 0;
+    static const int lmax = 16; // max hex values per line
+
+    uint8_t* buf = NULL;
+    uint8_t* bp = NULL;
+    unsigned int blen = 0;
+
+    uint8_t* cmp = NULL;
+    uint8_t* cp = NULL;
+    unsigned int clen = 0;
+    uint8_t ctag = 0xFF;
+    uint32_t tag[256] = {0};
+    uint32_t tmax = UINT32_MAX;
+
+    unsigned int x, y, z;
+
+    const char* name = argv[1];
+    FILE* fh = fopen(argv[2], "wb");
+
+    uint32_t white = 0xFF;
+
+    int rv = 0; // assume success
+
+    // allocate buffers
+    blen = ((img.w * img.h) + 0x7) >> 3;
+    bp = (buf = calloc(blen + 1, 1));
+    cp = (cmp = calloc(blen + 4, 1));
+
+    // sanity check
+    if(!fh || !buf || !cmp) {
+        printf("! fopen() or malloc() fail.\n");
+        rv = 255;
+        goto bail;
+    }
+
+    // Find white value
+    for(x = 1; x < img.bpp; x++) white = (white << 8) | 0xFF;
+
+    // build bit pattern
+    // create the comment as we go
+    for(pp = img.b, y = 0; y < img.h; y++) {
+        fprintf(fh, "// ");
+        for(x = 0; x < img.w; x++) {
+            // read pixel
+            for(pix = 0, z = 0; z < img.bpp; pix = (pix << 8) | *pp++, z++)
+                ;
+            // get bit and draw
+            if(pix < white) {
+                b = (b << 1) | 1;
+                fprintf(fh, "##");
+            } else {
+                b <<= 1;
+                fprintf(fh, "..");
+            }
+            // got byte
+            if((++bcnt) == 8) {
+                *bp++ = b;
+                tag[b]++;
+                bcnt = (b = 0);
+            }
+        }
+        fprintf(fh, "\n");
+    }
+    fprintf(fh, "\n");
+    // padding
+    if(bcnt) {
+        b <<= (bcnt = 8 - bcnt);
+        *bp++ = b;
+        tag[b]++;
+    }
+    // Kill the compression
+    *bp = ~bp[-1]; // https://youtube.com/clip/Ugkx-JZIr16hETy7hz_H6yIdKPtxVe8C5w_V
+
+    // Byte run length compression
+    // Find a good tag
+    for(x = 0; tmax && (x < 256); x++) {
+        if(tag[x] < tmax) {
+            tmax = tag[x];
+            ctag = x;
+        }
+    }
+
+    // compress the data
+    for(bp = buf, x = 0; (clen < blen) && (x < blen); x++) {
+        // need at least 4 the same to be worth it
+        // must compress tag (if it occurs)
+        if((bp[x] == bp[x + 1]) && (bp[x] == bp[x + 2]) && (bp[x] == bp[x + 3]) ||
+           (bp[x] == ctag)) {
+            for(y = 1; (y < 255) && (bp[x] == bp[x + y]); y++)
+                ;
+            *cp++ = ctag; // tag
+            *cp++ = y; // length
+            *cp++ = bp[x]; // byte
+            x += y - 1;
+            clen += 3;
+        } else {
+            *cp++ = bp[x];
+            clen++;
+        }
+    }
+
+    // create struct
+    fprintf(fh, "#include \"images.h\"\n\n");
+    fprintf(fh, "const image_t  img_%s = { %d, %d, ", name, img.w, img.h);
+
+    if(clen < blen) { // dump compressed?
+        fprintf(
+            fh,
+            "true, %d, 0x%02X, {  // orig:%d, comp:%.2f%%\n\t",
+            clen,
+            ctag,
+            blen,
+            100.0 - ((clen * 100.0) / blen));
+        for(x = 0; x < clen; x++)
+            if(x == clen - 1)
+                fprintf(fh, "0x%02X\n}};\n", cmp[x]);
+            else
+                fprintf(fh, "0x%02X%s", cmp[x], (!((x + 1) % 16)) ? ",\n\t" : ", ");
+
+    } else { // dump UNcompressed
+        fprintf(fh, "false, %d, 0, {\n\t", blen);
+        for(x = 0; x < blen; x++)
+            if(x == blen - 1)
+                fprintf(fh, "0x%02X\n}};\n", buf[x]);
+            else
+                fprintf(fh, "0x%02X%s", buf[x], (!((x + 1) % 16)) ? ",\n\t" : ", ");
+    }
 
 
 bail:
 bail:
-	if (fh)   fclose(fh) ;
-	if (buf)  free(buf) ;
-	if (cmp)  free(cmp) ;
+    if(fh) fclose(fh);
+    if(buf) free(buf);
+    if(cmp) free(cmp);
 
 
-	return rv;
+    return rv;
 }
 }

+ 111 - 115
_image_tool/_convert_images.c

@@ -1,55 +1,49 @@
-#include  <gui/gui.h>      // GUI (screen/keyboard) API
+#include <gui/gui.h> // GUI (screen/keyboard) API
 
 
-#include  "images.h"
+#include "images.h"
 
 
 //----------------------------------------------------------------------------- ----------------------------------------
 //----------------------------------------------------------------------------- ----------------------------------------
-static Canvas*         _canvas;
-static uint8_t         _tlx;
-static uint8_t         _tly;
+static Canvas* _canvas;
+static uint8_t _tlx;
+static uint8_t _tly;
 
 
-static uint8_t         _x;
-static uint8_t         _y;
+static uint8_t _x;
+static uint8_t _y;
 
 
-static const image_t*  _img;
+static const image_t* _img;
 
 
-static bool            _blk;
-static Color           _set;
-static Color           _clr;
+static bool _blk;
+static Color _set;
+static Color _clr;
 
 
 //+============================================================================
 //+============================================================================
-static
-void  _showByteSet (const uint8_t b)
-{
-	for (uint8_t m = 0x80;  m;  m >>= 1) {
-		if (b & m)  // plot only SET bits
-			canvas_draw_dot(_canvas, (_tlx +_x), (_tly +_y)) ;
-		if ( ((++_x) == _img->w) && !(_x = 0) && ((++_y) == _img->h) )  break ;
-	}
+static void _showByteSet(const uint8_t b) {
+    for(uint8_t m = 0x80; m; m >>= 1) {
+        if(b & m) // plot only SET bits
+            canvas_draw_dot(_canvas, (_tlx + _x), (_tly + _y));
+        if(((++_x) == _img->w) && !(_x = 0) && ((++_y) == _img->h)) break;
+    }
 }
 }
 
 
 //+============================================================================
 //+============================================================================
-static
-void  _showByteClr (const uint8_t b)
-{
-	for (uint8_t m = 0x80;  m;  m >>= 1) {
-		if (!(b & m))  // plot only CLR bits
-			canvas_draw_dot(_canvas, (_tlx +_x), (_tly +_y)) ;
-		if ( ((++_x) == _img->w) && !(_x = 0) && ((++_y) == _img->h) )  break ;
-	}
+static void _showByteClr(const uint8_t b) {
+    for(uint8_t m = 0x80; m; m >>= 1) {
+        if(!(b & m)) // plot only CLR bits
+            canvas_draw_dot(_canvas, (_tlx + _x), (_tly + _y));
+        if(((++_x) == _img->w) && !(_x = 0) && ((++_y) == _img->h)) break;
+    }
 }
 }
 
 
 //+============================================================================
 //+============================================================================
-static
-void  _showByteAll (const uint8_t b)
-{
-	for (uint8_t m = 0x80;  m;  m >>= 1) {
-		if ((!!(b & m)) ^ _blk) { // Change colour only when required
-			canvas_set_color(_canvas, ((b & m) ? _set : _clr));
-			_blk = !_blk;
-		}
-		canvas_draw_dot(_canvas, (_tlx +_x), (_tly +_y)) ;
-		if ( ((++_x) == _img->w) && !(_x = 0) && ((++_y) == _img->h) )  break ;
-	}
+static void _showByteAll(const uint8_t b) {
+    for(uint8_t m = 0x80; m; m >>= 1) {
+        if((!!(b & m)) ^ _blk) { // Change colour only when required
+            canvas_set_color(_canvas, ((b & m) ? _set : _clr));
+            _blk = !_blk;
+        }
+        canvas_draw_dot(_canvas, (_tlx + _x), (_tly + _y));
+        if(((++_x) == _img->w) && !(_x = 0) && ((++_y) == _img->h)) break;
+    }
 }
 }
 
 
 //+============================================================================
 //+============================================================================
@@ -61,81 +55,83 @@ void  _showByteAll (const uint8_t b)
 //                     SHOW_ALL     - plot all images pixels as they are
 //                     SHOW_ALL     - plot all images pixels as they are
 //                     SHOW_ALL_INV - plot all images pixels inverted
 //                     SHOW_ALL_INV - plot all images pixels inverted
 //
 //
-void  show (Canvas* const  canvas,  const uint8_t tlx,  const uint8_t tly,
-            const image_t* img,     const showMode_t mode)
-{
-	void(*fnShow)(const uint8_t) = NULL;
-
-	const uint8_t*  bp = img->data;
-
-	// code size optimisation
-	switch (mode & SHOW_INV_) {
-		case SHOW_NRM_:
-			_set = ColorBlack;
-			_clr = ColorWhite;
-			break;
-
-		case SHOW_INV_:
-			_set = ColorWhite;
-			_clr = ColorBlack;
-			break;
-
-		case SHOW_BLK_:
-			canvas_set_color(canvas, ColorBlack);
-			break;
-
-		case SHOW_WHT_:
-			canvas_set_color(canvas, ColorWhite);
-			break;
-
-	}
-	switch (mode & SHOW_INV_) {
-		case SHOW_NRM_:
-		case SHOW_INV_:
-			fnShow = _showByteAll;
-			canvas_set_color(canvas, ColorWhite);
-			_blk = 0;
-			break;
-
-		case SHOW_BLK_:
-		case SHOW_WHT_:
-			switch (mode & SHOW_ALL_) {
-				case SHOW_SET_:
-					fnShow = _showByteSet;
-					break;
-				case SHOW_CLR_:
-					fnShow = _showByteClr;
-					break;
-			}
-			break;
-	}
-	furi_check(fnShow);
-
-	// I want nested functions!
-	_canvas = canvas;
-	_img    = img;
-	_tlx    = tlx;
-	_tly    = tly;
-	_x      = 0;
-	_y      = 0;
-
-	// Compressed
-	if (img->c) {
-		for (unsigned int i = 0;  i < img->len;  i++, bp++) {
-			// Compressed data? {tag, length, value}
-			if (*bp == img->tag) {
-				for (uint16_t c = 0;  c < bp[1];  c++)  fnShow(bp[2]) ;
-				bp += 3 -1;
-				i  += 3 -1;
-
-			// Uncompressed byte
-			} else {
-				fnShow(*bp);
-			}
-		}
-
-	// Not compressed
-	} else {
-		for (unsigned int i = 0;  i < img->len;  i++, bp++)  fnShow(*bp) ;
-	}
+void show(
+    Canvas* const canvas,
+    const uint8_t tlx,
+    const uint8_t tly,
+    const image_t* img,
+    const showMode_t mode) {
+    void (*fnShow)(const uint8_t) = NULL;
+
+    const uint8_t* bp = img->data;
+
+    // code size optimisation
+    switch(mode & SHOW_INV_) {
+    case SHOW_NRM_:
+        _set = ColorBlack;
+        _clr = ColorWhite;
+        break;
+
+    case SHOW_INV_:
+        _set = ColorWhite;
+        _clr = ColorBlack;
+        break;
+
+    case SHOW_BLK_:
+        canvas_set_color(canvas, ColorBlack);
+        break;
+
+    case SHOW_WHT_:
+        canvas_set_color(canvas, ColorWhite);
+        break;
+    }
+    switch(mode & SHOW_INV_) {
+    case SHOW_NRM_:
+    case SHOW_INV_:
+        fnShow = _showByteAll;
+        canvas_set_color(canvas, ColorWhite);
+        _blk = 0;
+        break;
+
+    case SHOW_BLK_:
+    case SHOW_WHT_:
+        switch(mode & SHOW_ALL_) {
+        case SHOW_SET_:
+            fnShow = _showByteSet;
+            break;
+        case SHOW_CLR_:
+            fnShow = _showByteClr;
+            break;
+        }
+        break;
+    }
+    furi_check(fnShow);
+
+    // I want nested functions!
+    _canvas = canvas;
+    _img = img;
+    _tlx = tlx;
+    _tly = tly;
+    _x = 0;
+    _y = 0;
+
+    // Compressed
+    if(img->c) {
+        for(unsigned int i = 0; i < img->len; i++, bp++) {
+            // Compressed data? {tag, length, value}
+            if(*bp == img->tag) {
+                for(uint16_t c = 0; c < bp[1]; c++) fnShow(bp[2]);
+                bp += 3 - 1;
+                i += 3 - 1;
+
+                // Uncompressed byte
+            } else {
+                fnShow(*bp);
+            }
+        }
+
+        // Not compressed
+    } else {
+        for(unsigned int i = 0; i < img->len; i++, bp++) fnShow(*bp);
+    }
 }
 }

+ 33 - 33
_image_tool/_convert_images.h

@@ -1,53 +1,53 @@
-#ifndef  IMAGES_H_
-#define  IMAGES_H_
+#ifndef IMAGES_H_
+#define IMAGES_H_
 
 
 #include <stdint.h>
 #include <stdint.h>
 #include <stdbool.h>
 #include <stdbool.h>
 
 
 //----------------------------------------------------------------------------- ----------------------------------------
 //----------------------------------------------------------------------------- ----------------------------------------
-typedef
-	enum showMode {
-		// {INV:--:WHT:BLK::--:--:CLR:SET}
-		SHOW_SET_    = 0x01,
-		SHOW_CLR_    = 0x02,
-		SHOW_ALL_    = SHOW_SET_ | SHOW_CLR_,
+typedef enum showMode {
+    // {INV:--:WHT:BLK::--:--:CLR:SET}
+    SHOW_SET_ = 0x01,
+    SHOW_CLR_ = 0x02,
+    SHOW_ALL_ = SHOW_SET_ | SHOW_CLR_,
 
 
-		SHOW_BLK_    = 0x10,
-		SHOW_WHT_    = 0x20,
-		SHOW_NRM_    = 0x00,
-		SHOW_INV_    = SHOW_BLK_ | SHOW_WHT_,
+    SHOW_BLK_ = 0x10,
+    SHOW_WHT_ = 0x20,
+    SHOW_NRM_ = 0x00,
+    SHOW_INV_ = SHOW_BLK_ | SHOW_WHT_,
 
 
-		SHOW_SET_BLK = SHOW_SET_ | SHOW_BLK_,
-		SHOW_SET_WHT = SHOW_SET_ | SHOW_WHT_,
+    SHOW_SET_BLK = SHOW_SET_ | SHOW_BLK_,
+    SHOW_SET_WHT = SHOW_SET_ | SHOW_WHT_,
 
 
-		SHOW_CLR_BLK = SHOW_CLR_ | SHOW_BLK_,
-		SHOW_CLR_WHT = SHOW_CLR_ | SHOW_WHT_,
+    SHOW_CLR_BLK = SHOW_CLR_ | SHOW_BLK_,
+    SHOW_CLR_WHT = SHOW_CLR_ | SHOW_WHT_,
 
 
-		SHOW_ALL     = SHOW_ALL_ | SHOW_NRM_,
-		SHOW_ALL_INV = SHOW_ALL_ | SHOW_INV_,
-	}
-showMode_t;
+    SHOW_ALL = SHOW_ALL_ | SHOW_NRM_,
+    SHOW_ALL_INV = SHOW_ALL_ | SHOW_INV_,
+} showMode_t;
 
 
 //----------------------------------------------------------------------------- ----------------------------------------
 //----------------------------------------------------------------------------- ----------------------------------------
-typedef
-	struct image {
-		uint8_t   w;       // width
-		uint8_t   h;       // height
-		bool      c;       // compressed?
-		uint16_t  len;     // image data length
-		uint8_t   tag;     // rle tag
-		uint8_t   data[];  // image data
-	} 
-image_t;
+typedef struct image {
+    uint8_t w; // width
+    uint8_t h; // height
+    bool c; // compressed?
+    uint16_t len; // image data length
+    uint8_t tag; // rle tag
+    uint8_t data[]; // image data
+} image_t;
 
 
 //----------------------------------------------------------------------------- ----------------------------------------
 //----------------------------------------------------------------------------- ----------------------------------------
 //[TAG]
 //[TAG]
 
 
 //----------------------------------------------------------------------------- ----------------------------------------
 //----------------------------------------------------------------------------- ----------------------------------------
 #ifndef IMGTEST
 #ifndef IMGTEST
-#	include <gui/gui.h>
-	void  show (Canvas* const  canvas,  const uint8_t tlx,  const uint8_t tly,
-	            const image_t* img,     const showMode_t mode) ;
+#include <gui/gui.h>
+void show(
+    Canvas* const canvas,
+    const uint8_t tlx,
+    const uint8_t tly,
+    const image_t* img,
+    const showMode_t mode);
 #endif
 #endif
 
 
 #endif //IMAGES_H_
 #endif //IMAGES_H_

+ 45 - 45
_image_tool/_convert_test.c

@@ -1,59 +1,59 @@
-#include  <stdint.h>
-#include  <stdio.h>
+#include <stdint.h>
+#include <stdio.h>
 
 
-#include  "images.h"
+#include "images.h"
 
 
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 // This will be the plot function out of your graphics library
 // This will be the plot function out of your graphics library
 //
 //
-#define  PLOT(x,y,c) do { \
-	printf("%s", (c ? "#" : "."));       \
-	if (x == img->w -1)  printf("\n") ;  \
-}while(0)
+#define PLOT(x, y, c)                     \
+    do {                                  \
+        printf("%s", (c ? "#" : "."));    \
+        if(x == img->w - 1) printf("\n"); \
+    } while(0)
 
 
 //+============================================================================
 //+============================================================================
 // The pain we endure to avoid code duplication cleanly
 // The pain we endure to avoid code duplication cleanly
 //
 //
-#define  PLOTBYTE(b)  do { \
-	for (uint8_t m = 0x80;  m;  m>>=1) {                                    \
-		PLOT(x,y, (b & m));                                                 \
-		if ( ((++x) == img->w) && !(x = 0) && ((++y) == img->h) )  break ;  \
-	}                                                                       \
-}while(0)
-
-void  show (const image_t*  img)
-{
-	// Some variables
-	const uint8_t*  bp = img->data;
-	unsigned int    x  = 0;
-	unsigned int    y  = 0;
-
-	// Compressed
-	if (img->c) {
-		for (unsigned int i = 0;  i < img->len;  i++, bp++) {
-			// Compressed data? {tag, length, value}
-			if (*bp == img->tag) {
-				for (uint16_t c = 0;  c < bp[1];  c++)  PLOTBYTE(bp[2]) ;
-				bp += 3 -1;
-				i  += 3 -1;
-
-			// Uncompressed byte
-			} else {
-				PLOTBYTE(*bp);
-			}
-		}
-
-	// Not compressed
-	} else {
-		for (unsigned int i = 0;  i < img->len;  i++, bp++)  PLOTBYTE(*bp) ;
-	}
+#define PLOTBYTE(b)                                                       \
+    do {                                                                  \
+        for(uint8_t m = 0x80; m; m >>= 1) {                               \
+            PLOT(x, y, (b & m));                                          \
+            if(((++x) == img->w) && !(x = 0) && ((++y) == img->h)) break; \
+        }                                                                 \
+    } while(0)
+
+void show(const image_t* img) {
+    // Some variables
+    const uint8_t* bp = img->data;
+    unsigned int x = 0;
+    unsigned int y = 0;
+
+    // Compressed
+    if(img->c) {
+        for(unsigned int i = 0; i < img->len; i++, bp++) {
+            // Compressed data? {tag, length, value}
+            if(*bp == img->tag) {
+                for(uint16_t c = 0; c < bp[1]; c++) PLOTBYTE(bp[2]);
+                bp += 3 - 1;
+                i += 3 - 1;
+
+                // Uncompressed byte
+            } else {
+                PLOTBYTE(*bp);
+            }
+        }
+
+        // Not compressed
+    } else {
+        for(unsigned int i = 0; i < img->len; i++, bp++) PLOTBYTE(*bp);
+    }
 }
 }
 
 
-#undef  PLOTBYTE
+#undef PLOTBYTE
 
 
 //+============================================================================
 //+============================================================================
-int  main (void)
-{
-	show(&img_zzz);
-	return 0;
+int main(void) {
+    show(&img_zzz);
+    return 0;
 }
 }

+ 28 - 32
application.fam

@@ -1,36 +1,32 @@
 # qv. https://github.com/flipperdevices/flipperzero-firmware/blob/dev/documentation/AppManifests.md
 # qv. https://github.com/flipperdevices/flipperzero-firmware/blob/dev/documentation/AppManifests.md
 
 
 App(
 App(
-	# --- App Info
-	appid="wii_ec_anal",
-	name="Wii EC Analyser",
-
-	# --- Entry point
-	apptype=FlipperAppType.EXTERNAL,
-	entry_point="wii_ec_anal",
-
-	# --- Interaction
-	cdefines=["APP_WII_EC_ANAL"],
-	requires=[
-		"gui",
-	],
-
-#	conflicts="",
-#	sdk_headers="",
-
-	# --- Run-time info
-	stack_size=2 * 1024,
-	order=20,
-
-	# --- FAP details
-	sources=["wii_*.c", "gfx/*.c"],
-
-#	fap_weburl="https://github.com/csBlueChip/FlipperZero_plugin_WiiChuck/",
-#	fap_author="BlueChip",
-
-#	fap_description="Wii Extension Controller Protocol Analyser",
-#	fap_version=(1,0),
-
-	fap_icon="WiiEC.png",
-	fap_category="Cyborg Systems",
+    # --- App Info
+    appid="wii_ec_anal",
+    name="Wii EC Analyser",
+    # --- Entry point
+    apptype=FlipperAppType.EXTERNAL,
+    entry_point="wii_ec_anal",
+    # --- Interaction
+    cdefines=["APP_WII_EC_ANAL"],
+    requires=[
+        "gui",
+    ],
+    # 	conflicts="",
+    # 	sdk_headers="",
+    # --- Run-time info
+    stack_size=2 * 1024,
+    order=20,
+    # --- FAP details
+    sources=["wii_*.c", "gfx/*.c"],
+    # 	fap_weburl="https://github.com/csBlueChip/FlipperZero_plugin_WiiChuck/",
+    # 	fap_author="BlueChip",
+    # 	fap_description="Wii Extension Controller Protocol Analyser",
+    # 	fap_version=(1,0),
+    fap_icon="WiiEC.png",
+    fap_category="GPIO",
+    fap_author="@csBlueChip",
+    fap_weburl="https://github.com/csBlueChip/FlipperZero_WiiEC",
+    fap_version="1.0",
+    fap_description="Application to test Wii Extension Controllers.",
 )
 )

+ 27 - 27
bc_logging.h

@@ -1,13 +1,13 @@
-#ifndef  BC_LOGGING_H_
-#define  BC_LOGGING_H_
+#ifndef BC_LOGGING_H_
+#define BC_LOGGING_H_
 
 
 #include <furi.h>
 #include <furi.h>
-#include "err.h"  // appName
+#include "err.h" // appName
 
 
 //!  WARNING: There is a bug in Furi such that if you crank LOG_LEVEL up to 6=TRACE
 //!  WARNING: There is a bug in Furi such that if you crank LOG_LEVEL up to 6=TRACE
 //!           AND you have menu->settings->system->logLevel = trace
 //!           AND you have menu->settings->system->logLevel = trace
 //!           THEN this program will cause the FZ to crash when the plugin exits!
 //!           THEN this program will cause the FZ to crash when the plugin exits!
-#define  LOG_LEVEL  4
+#define LOG_LEVEL 4
 
 
 //----------------------------------------------------------------------------- ----------------------------------------
 //----------------------------------------------------------------------------- ----------------------------------------
 // The FlipperZero Settings->System menu allows you to set the logging level at RUN-time
 // The FlipperZero Settings->System menu allows you to set the logging level at RUN-time
@@ -27,44 +27,44 @@
 // The FlipperZero Settings->System menu allows you to set the logging level at RUN-time
 // The FlipperZero Settings->System menu allows you to set the logging level at RUN-time
 // This lets you limit it at COMPILE-time
 // This lets you limit it at COMPILE-time
 #ifndef LOG_LEVEL
 #ifndef LOG_LEVEL
-#	define  LOG_LEVEL 6  // default = full logging
+#define LOG_LEVEL 6 // default = full logging
 #endif
 #endif
 
 
-#if (LOG_LEVEL < 2)
-#	undef   FURI_LOG_E
-#	define  FURI_LOG_E(tag, fmt, ...)
+#if(LOG_LEVEL < 2)
+#undef FURI_LOG_E
+#define FURI_LOG_E(tag, fmt, ...)
 #endif
 #endif
 
 
-#if (LOG_LEVEL < 3)
-#	undef   FURI_LOG_W
-#	define  FURI_LOG_W(tag, fmt, ...)
+#if(LOG_LEVEL < 3)
+#undef FURI_LOG_W
+#define FURI_LOG_W(tag, fmt, ...)
 #endif
 #endif
 
 
-#if (LOG_LEVEL < 4)
-#	undef   FURI_LOG_I
-#	define  FURI_LOG_I(tag, fmt, ...)
+#if(LOG_LEVEL < 4)
+#undef FURI_LOG_I
+#define FURI_LOG_I(tag, fmt, ...)
 #endif
 #endif
 
 
-#if (LOG_LEVEL < 5)
-#	undef   FURI_LOG_D
-#	define  FURI_LOG_D(tag, fmt, ...)
+#if(LOG_LEVEL < 5)
+#undef FURI_LOG_D
+#define FURI_LOG_D(tag, fmt, ...)
 #endif
 #endif
 
 
-#if (LOG_LEVEL < 6)
-#	undef   FURI_LOG_T
-#	define  FURI_LOG_T(tag, fmt, ...)
+#if(LOG_LEVEL < 6)
+#undef FURI_LOG_T
+#define FURI_LOG_T(tag, fmt, ...)
 #endif
 #endif
 
 
 //----------------------------------------------------------
 //----------------------------------------------------------
 // Logging helper macros
 // Logging helper macros
 //
 //
-#define  ERROR(fmt, ...)  FURI_LOG_E(appName, fmt __VA_OPT__(,) __VA_ARGS__)
-#define  WARN(fmt, ...)   FURI_LOG_W(appName, fmt __VA_OPT__(,) __VA_ARGS__)
-#define  INFO(fmt, ...)   FURI_LOG_I(appName, fmt __VA_OPT__(,) __VA_ARGS__)
-#define  DEBUG(fmt, ...)  FURI_LOG_D(appName, fmt __VA_OPT__(,) __VA_ARGS__)
-#define  TRACE(fmt, ...)  FURI_LOG_T(appName, fmt __VA_OPT__(,) __VA_ARGS__)
+#define ERROR(fmt, ...) FURI_LOG_E(appName, fmt __VA_OPT__(, ) __VA_ARGS__)
+#define WARN(fmt, ...) FURI_LOG_W(appName, fmt __VA_OPT__(, ) __VA_ARGS__)
+#define INFO(fmt, ...) FURI_LOG_I(appName, fmt __VA_OPT__(, ) __VA_ARGS__)
+#define DEBUG(fmt, ...) FURI_LOG_D(appName, fmt __VA_OPT__(, ) __VA_ARGS__)
+#define TRACE(fmt, ...) FURI_LOG_T(appName, fmt __VA_OPT__(, ) __VA_ARGS__)
 
 
-#define  ENTER  TRACE("(+) %s", __func__)
-#define  LEAVE  TRACE("(-) %s", __func__)
+#define ENTER TRACE("(+) %s", __func__)
+#define LEAVE TRACE("(-) %s", __func__)
 
 
 #endif //BC_LOGGING_H_
 #endif //BC_LOGGING_H_

+ 47 - 44
err.h

@@ -1,11 +1,11 @@
 // Avoid circular/nested/mulitple inclusion
 // Avoid circular/nested/mulitple inclusion
-#ifndef  ERR_H_
-#define  ERR_H_
+#ifndef ERR_H_
+#define ERR_H_
 
 
 //----------------------------------------------------------------------------- ----------------------------------------
 //----------------------------------------------------------------------------- ----------------------------------------
 // Application name
 // Application name
 //
 //
-static const char* const  appName = "Wii_i2c";  //$ Name used in log files
+static const char* const appName = "Wii_i2c"; //$ Name used in log files
 
 
 //----------------------------------------------------------------------------- ----------------------------------------
 //----------------------------------------------------------------------------- ----------------------------------------
 // Error codes and messages
 // Error codes and messages
@@ -13,57 +13,60 @@ static const char* const  appName = "Wii_i2c";  //$ Name used in log files
 
 
 // You should only ever (need to) edit this list
 // You should only ever (need to) edit this list
 // ...Watch out for extraneous whitespace after the terminating backslashes
 // ...Watch out for extraneous whitespace after the terminating backslashes
-#define  FOREACH_ES(esPrial) \
-	/* The first line MUST define 'ERR_OK = 0' */ \
-	esPrial( 0, ERR_OK             , "OK (no error)") \
-\
-	esPrial( 1, ERR_MALLOC_QUEUE   , "malloc() fail - queue") \
-	esPrial( 2, ERR_MALLOC_STATE   , "malloc() fail - state") \
-	esPrial( 3, ERR_MALLOC_TEXT    , "malloc() fail - text") \
-	esPrial( 4, ERR_MALLOC_VIEW    , "malloc() fail - viewport") \
-	esPrial( 5, ERR_NO_MUTEX       , "Cannot create mutex") \
-	esPrial( 6, ERR_NO_GUI         , "Cannot open GUI") \
-	esPrial( 7, ERR_NO_TIMER       , "Cannot create timer") \
-	esPrial( 8, ERR_NO_NOTIFY      , "Cannot acquire notifications handle") \
-\
-	esPrial(10, ERR_MUTEX_BLOCK    , "Mutex block failed") \
-	esPrial(11, ERR_MUTEX_RELEASE  , "Mutex release failed") \
-\
-	esPrial(20, ERR_QUEUE_RTOS     , "queue - Undefined RTOS error") \
-	esPrial(21, DEBUG_QUEUE_TIMEOUT, "queue - Timeout") \
-	esPrial(22, ERR_QUEUE_RESOURCE , "queue - Resource not available") \
-	esPrial(23, ERR_QUEUE_BADPRM   , "queue - Bad parameter") \
-	esPrial(24, ERR_QUEUE_NOMEM    , "queue - Out of memory") \
-	esPrial(25, ERR_QUEUE_ISR      , "queue - Banned in ISR") \
-	esPrial(26, ERR_QUEUE_UNK      , "queue - Unknown") \
-\
-	esPrial(30, WARN_SCAN_START    , "Scan - Already started") \
-	esPrial(31, WARN_SCAN_STOP     , "Scan - Already stopped") \
-	esPrial(32, ERR_TIMER_START    , "Scan - Cannot start timer") \
-	esPrial(33, ERR_TIMER_STOP     , "Scan - Cannot stop timer") \
-//[EOT]
+#define FOREACH_ES(esPrial)                                                                       \
+    /* The first line MUST define 'ERR_OK = 0' */                                                 \
+    esPrial(0, ERR_OK, "OK (no error)")                                                           \
+                                                                                                  \
+        esPrial(1, ERR_MALLOC_QUEUE, "malloc() fail - queue") esPrial(                            \
+            2,                                                                                    \
+            ERR_MALLOC_STATE,                                                                     \
+            "malloc() fail - state") esPrial(3, ERR_MALLOC_TEXT, "malloc() fail - text")          \
+            esPrial(4, ERR_MALLOC_VIEW, "malloc() fail - viewport") esPrial(                      \
+                5, ERR_NO_MUTEX, "Cannot create mutex") esPrial(6, ERR_NO_GUI, "Cannot open GUI") \
+                esPrial(7, ERR_NO_TIMER, "Cannot create timer") esPrial(                          \
+                    8, ERR_NO_NOTIFY, "Cannot acquire notifications handle")                      \
+                                                                                                  \
+                    esPrial(10, ERR_MUTEX_BLOCK, "Mutex block failed") esPrial(                   \
+                        11, ERR_MUTEX_RELEASE, "Mutex release failed")                            \
+                                                                                                  \
+                        esPrial(20, ERR_QUEUE_RTOS, "queue - Undefined RTOS error")               \
+                            esPrial(21, DEBUG_QUEUE_TIMEOUT, "queue - Timeout") esPrial(          \
+                                22, ERR_QUEUE_RESOURCE, "queue - Resource not available")         \
+                                esPrial(23, ERR_QUEUE_BADPRM, "queue - Bad parameter") esPrial(   \
+                                    24, ERR_QUEUE_NOMEM, "queue - Out of memory")                 \
+                                    esPrial(25, ERR_QUEUE_ISR, "queue - Banned in ISR") esPrial(  \
+                                        26, ERR_QUEUE_UNK, "queue - Unknown")                     \
+                                                                                                  \
+                                        esPrial(30, WARN_SCAN_START, "Scan - Already started")    \
+                                            esPrial(31, WARN_SCAN_STOP, "Scan - Already stopped") \
+                                                esPrial(                                          \
+                                                    32,                                           \
+                                                    ERR_TIMER_START,                              \
+                                                    "Scan - Cannot start timer")                  \
+                                                    esPrial(                                      \
+                                                        33,                                       \
+                                                        ERR_TIMER_STOP,                           \
+                                                        "Scan - Cannot stop timer") //[EOT]
 
 
 // Declare list extraction macros
 // Declare list extraction macros
-#define  ES_ENUM(num, ename, string)    ename = num,
-#define  ES_STRING(num, ename, string)  string"\r\n",
+#define ES_ENUM(num, ename, string) ename = num,
+#define ES_STRING(num, ename, string) string "\r\n",
 
 
 // Build the enum
 // Build the enum
-typedef
-	enum err  { FOREACH_ES(ES_ENUM) }
-err_t ;
+typedef enum err { FOREACH_ES(ES_ENUM) } err_t;
 
 
 // You need to '#define ERR_C_' in precisely ONE source file
 // You need to '#define ERR_C_' in precisely ONE source file
 #ifdef ERR_C_
 #ifdef ERR_C_
-	// Build the string list
-	const char* const  wii_errs[] = { FOREACH_ES(ES_STRING) };
+// Build the string list
+const char* const wii_errs[] = {FOREACH_ES(ES_STRING)};
 #else
 #else
-	// Give access to string list
-	extern  const char* const  wii_errs[];
+// Give access to string list
+extern const char* const wii_errs[];
 #endif
 #endif
 
 
 // This is a header file, clean up
 // This is a header file, clean up
-#undef  ES_ENUM
-#undef  ES_STRING
-#undef  FOREACH_ES
+#undef ES_ENUM
+#undef ES_STRING
+#undef FOREACH_ES
 
 
 #endif // ERR_H_
 #endif // ERR_H_

+ 111 - 115
gfx/images.c

@@ -1,55 +1,49 @@
-#include  <gui/gui.h>      // GUI (screen/keyboard) API
+#include <gui/gui.h> // GUI (screen/keyboard) API
 
 
-#include  "images.h"
+#include "images.h"
 
 
 //----------------------------------------------------------------------------- ----------------------------------------
 //----------------------------------------------------------------------------- ----------------------------------------
-static Canvas*         _canvas;
-static uint8_t         _tlx;
-static uint8_t         _tly;
+static Canvas* _canvas;
+static uint8_t _tlx;
+static uint8_t _tly;
 
 
-static uint8_t         _x;
-static uint8_t         _y;
+static uint8_t _x;
+static uint8_t _y;
 
 
-static const image_t*  _img;
+static const image_t* _img;
 
 
-static bool            _blk;
-static Color           _set;
-static Color           _clr;
+static bool _blk;
+static Color _set;
+static Color _clr;
 
 
 //+============================================================================
 //+============================================================================
-static
-void  _showByteSet (const uint8_t b)
-{
-	for (uint8_t m = 0x80;  m;  m >>= 1) {
-		if (b & m)  // plot only SET bits
-			canvas_draw_dot(_canvas, (_tlx +_x), (_tly +_y)) ;
-		if ( ((++_x) == _img->w) && !(_x = 0) && ((++_y) == _img->h) )  break ;
-	}
+static void _showByteSet(const uint8_t b) {
+    for(uint8_t m = 0x80; m; m >>= 1) {
+        if(b & m) // plot only SET bits
+            canvas_draw_dot(_canvas, (_tlx + _x), (_tly + _y));
+        if(((++_x) == _img->w) && !(_x = 0) && ((++_y) == _img->h)) break;
+    }
 }
 }
 
 
 //+============================================================================
 //+============================================================================
-static
-void  _showByteClr (const uint8_t b)
-{
-	for (uint8_t m = 0x80;  m;  m >>= 1) {
-		if (!(b & m))  // plot only CLR bits
-			canvas_draw_dot(_canvas, (_tlx +_x), (_tly +_y)) ;
-		if ( ((++_x) == _img->w) && !(_x = 0) && ((++_y) == _img->h) )  break ;
-	}
+static void _showByteClr(const uint8_t b) {
+    for(uint8_t m = 0x80; m; m >>= 1) {
+        if(!(b & m)) // plot only CLR bits
+            canvas_draw_dot(_canvas, (_tlx + _x), (_tly + _y));
+        if(((++_x) == _img->w) && !(_x = 0) && ((++_y) == _img->h)) break;
+    }
 }
 }
 
 
 //+============================================================================
 //+============================================================================
-static
-void  _showByteAll (const uint8_t b)
-{
-	for (uint8_t m = 0x80;  m;  m >>= 1) {
-		if ((!!(b & m)) ^ _blk) { // Change colour only when required
-			canvas_set_color(_canvas, ((b & m) ? _set : _clr));
-			_blk = !_blk;
-		}
-		canvas_draw_dot(_canvas, (_tlx +_x), (_tly +_y)) ;
-		if ( ((++_x) == _img->w) && !(_x = 0) && ((++_y) == _img->h) )  break ;
-	}
+static void _showByteAll(const uint8_t b) {
+    for(uint8_t m = 0x80; m; m >>= 1) {
+        if((!!(b & m)) ^ _blk) { // Change colour only when required
+            canvas_set_color(_canvas, ((b & m) ? _set : _clr));
+            _blk = !_blk;
+        }
+        canvas_draw_dot(_canvas, (_tlx + _x), (_tly + _y));
+        if(((++_x) == _img->w) && !(_x = 0) && ((++_y) == _img->h)) break;
+    }
 }
 }
 
 
 //+============================================================================
 //+============================================================================
@@ -61,81 +55,83 @@ void  _showByteAll (const uint8_t b)
 //                     SHOW_ALL     - plot all images pixels as they are
 //                     SHOW_ALL     - plot all images pixels as they are
 //                     SHOW_ALL_INV - plot all images pixels inverted
 //                     SHOW_ALL_INV - plot all images pixels inverted
 //
 //
-void  show (Canvas* const  canvas,  const uint8_t tlx,  const uint8_t tly,
-            const image_t* img,     const showMode_t mode)
-{
-	void(*fnShow)(const uint8_t) = NULL;
-
-	const uint8_t*  bp = img->data;
-
-	// code size optimisation
-	switch (mode & SHOW_INV_) {
-		case SHOW_NRM_:
-			_set = ColorBlack;
-			_clr = ColorWhite;
-			break;
-
-		case SHOW_INV_:
-			_set = ColorWhite;
-			_clr = ColorBlack;
-			break;
-
-		case SHOW_BLK_:
-			canvas_set_color(canvas, ColorBlack);
-			break;
-
-		case SHOW_WHT_:
-			canvas_set_color(canvas, ColorWhite);
-			break;
-
-	}
-	switch (mode & SHOW_INV_) {
-		case SHOW_NRM_:
-		case SHOW_INV_:
-			fnShow = _showByteAll;
-			canvas_set_color(canvas, ColorWhite);
-			_blk = 0;
-			break;
-
-		case SHOW_BLK_:
-		case SHOW_WHT_:
-			switch (mode & SHOW_ALL_) {
-				case SHOW_SET_:
-					fnShow = _showByteSet;
-					break;
-				case SHOW_CLR_:
-					fnShow = _showByteClr;
-					break;
-			}
-			break;
-	}
-	furi_check(fnShow);
-
-	// I want nested functions!
-	_canvas = canvas;
-	_img    = img;
-	_tlx    = tlx;
-	_tly    = tly;
-	_x      = 0;
-	_y      = 0;
-
-	// Compressed
-	if (img->c) {
-		for (unsigned int i = 0;  i < img->len;  i++, bp++) {
-			// Compressed data? {tag, length, value}
-			if (*bp == img->tag) {
-				for (uint16_t c = 0;  c < bp[1];  c++)  fnShow(bp[2]) ;
-				bp += 3 -1;
-				i  += 3 -1;
-
-			// Uncompressed byte
-			} else {
-				fnShow(*bp);
-			}
-		}
-
-	// Not compressed
-	} else {
-		for (unsigned int i = 0;  i < img->len;  i++, bp++)  fnShow(*bp) ;
-	}
+void show(
+    Canvas* const canvas,
+    const uint8_t tlx,
+    const uint8_t tly,
+    const image_t* img,
+    const showMode_t mode) {
+    void (*fnShow)(const uint8_t) = NULL;
+
+    const uint8_t* bp = img->data;
+
+    // code size optimisation
+    switch(mode & SHOW_INV_) {
+    case SHOW_NRM_:
+        _set = ColorBlack;
+        _clr = ColorWhite;
+        break;
+
+    case SHOW_INV_:
+        _set = ColorWhite;
+        _clr = ColorBlack;
+        break;
+
+    case SHOW_BLK_:
+        canvas_set_color(canvas, ColorBlack);
+        break;
+
+    case SHOW_WHT_:
+        canvas_set_color(canvas, ColorWhite);
+        break;
+    }
+    switch(mode & SHOW_INV_) {
+    case SHOW_NRM_:
+    case SHOW_INV_:
+        fnShow = _showByteAll;
+        canvas_set_color(canvas, ColorWhite);
+        _blk = 0;
+        break;
+
+    case SHOW_BLK_:
+    case SHOW_WHT_:
+        switch(mode & SHOW_ALL_) {
+        case SHOW_SET_:
+            fnShow = _showByteSet;
+            break;
+        case SHOW_CLR_:
+            fnShow = _showByteClr;
+            break;
+        }
+        break;
+    }
+    furi_check(fnShow);
+
+    // I want nested functions!
+    _canvas = canvas;
+    _img = img;
+    _tlx = tlx;
+    _tly = tly;
+    _x = 0;
+    _y = 0;
+
+    // Compressed
+    if(img->c) {
+        for(unsigned int i = 0; i < img->len; i++, bp++) {
+            // Compressed data? {tag, length, value}
+            if(*bp == img->tag) {
+                for(uint16_t c = 0; c < bp[1]; c++) fnShow(bp[2]);
+                bp += 3 - 1;
+                i += 3 - 1;
+
+                // Uncompressed byte
+            } else {
+                fnShow(*bp);
+            }
+        }
+
+        // Not compressed
+    } else {
+        for(unsigned int i = 0; i < img->len; i++, bp++) fnShow(*bp);
+    }
 }
 }

+ 114 - 114
gfx/images.h

@@ -1,134 +1,134 @@
-#ifndef  IMAGES_H_
-#define  IMAGES_H_
+#ifndef IMAGES_H_
+#define IMAGES_H_
 
 
 #include <stdint.h>
 #include <stdint.h>
 #include <stdbool.h>
 #include <stdbool.h>
 
 
 //----------------------------------------------------------------------------- ----------------------------------------
 //----------------------------------------------------------------------------- ----------------------------------------
-typedef
-	enum showMode {
-		// {INV:--:WHT:BLK::--:--:CLR:SET} 
-		SHOW_SET_    = 0x01,
-		SHOW_CLR_    = 0x02,
-		SHOW_ALL_    = SHOW_SET_ | SHOW_CLR_,
+typedef enum showMode {
+    // {INV:--:WHT:BLK::--:--:CLR:SET}
+    SHOW_SET_ = 0x01,
+    SHOW_CLR_ = 0x02,
+    SHOW_ALL_ = SHOW_SET_ | SHOW_CLR_,
 
 
-		SHOW_BLK_    = 0x10,
-		SHOW_WHT_    = 0x20,
-		SHOW_NRM_    = 0x00,
-		SHOW_INV_    = SHOW_BLK_ | SHOW_WHT_,
+    SHOW_BLK_ = 0x10,
+    SHOW_WHT_ = 0x20,
+    SHOW_NRM_ = 0x00,
+    SHOW_INV_ = SHOW_BLK_ | SHOW_WHT_,
 
 
-		SHOW_SET_BLK = SHOW_SET_ | SHOW_BLK_,
-		SHOW_SET_WHT = SHOW_SET_ | SHOW_WHT_,
+    SHOW_SET_BLK = SHOW_SET_ | SHOW_BLK_,
+    SHOW_SET_WHT = SHOW_SET_ | SHOW_WHT_,
 
 
-		SHOW_CLR_BLK = SHOW_CLR_ | SHOW_BLK_,
-		SHOW_CLR_WHT = SHOW_CLR_ | SHOW_WHT_,
+    SHOW_CLR_BLK = SHOW_CLR_ | SHOW_BLK_,
+    SHOW_CLR_WHT = SHOW_CLR_ | SHOW_WHT_,
 
 
-		SHOW_ALL     = SHOW_ALL_ | SHOW_NRM_,
-		SHOW_ALL_INV = SHOW_ALL_ | SHOW_INV_,
-	}
-showMode_t;
+    SHOW_ALL = SHOW_ALL_ | SHOW_NRM_,
+    SHOW_ALL_INV = SHOW_ALL_ | SHOW_INV_,
+} showMode_t;
 
 
 //----------------------------------------------------------------------------- ----------------------------------------
 //----------------------------------------------------------------------------- ----------------------------------------
-typedef
-	struct image {
-		uint8_t   w;       // width
-		uint8_t   h;       // height
-		bool      c;       // compressed?
-		uint16_t  len;     // image data length
-		uint8_t   tag;     // rle tag
-		uint8_t   data[];  // image data
-	} 
-image_t;
+typedef struct image {
+    uint8_t w; // width
+    uint8_t h; // height
+    bool c; // compressed?
+    uint16_t len; // image data length
+    uint8_t tag; // rle tag
+    uint8_t data[]; // image data
+} image_t;
 
 
 //----------------------------------------------------------------------------- ----------------------------------------
 //----------------------------------------------------------------------------- ----------------------------------------
 //[TAG]
 //[TAG]
-extern  const image_t  img_csLogo_Small;
-extern  const image_t  img_3x5_v;
-extern  const image_t  img_3x5_9;
-extern  const image_t  img_3x5_8;
-extern  const image_t  img_3x5_7;
-extern  const image_t  img_3x5_6;
-extern  const image_t  img_3x5_5;
-extern  const image_t  img_3x5_4;
-extern  const image_t  img_3x5_3;
-extern  const image_t  img_3x5_2;
-extern  const image_t  img_3x5_1;
-extern  const image_t  img_3x5_0;
-extern  const image_t  img_key_Ui;
-extern  const image_t  img_key_OKi;
-extern  const image_t  img_RIP;
-extern  const image_t  img_cc_trg_R4;
-extern  const image_t  img_cc_trg_R3;
-extern  const image_t  img_cc_trg_R2;
-extern  const image_t  img_cc_trg_R1;
-extern  const image_t  img_cc_trg_L4;
-extern  const image_t  img_cc_trg_L3;
-extern  const image_t  img_cc_trg_L2;
-extern  const image_t  img_cc_trg_L1;
-extern  const image_t  img_cc_Joy;
-extern  const image_t  img_cc_Main;
-extern  const image_t  img_cc_Cable;
-extern  const image_t  img_key_Back;
-extern  const image_t  img_key_OK;
-extern  const image_t  img_6x8_Z;
-extern  const image_t  img_6x8_Y;
-extern  const image_t  img_6x8_X;
-extern  const image_t  img_key_U;
-extern  const image_t  img_key_D;
-extern  const image_t  img_csLogo_FULL;
-extern  const image_t  img_6x8_7;
-extern  const image_t  img_key_R;
-extern  const image_t  img_key_L;
-extern  const image_t  img_5x7_7;
-extern  const image_t  img_5x7_F;
-extern  const image_t  img_5x7_E;
-extern  const image_t  img_5x7_D;
-extern  const image_t  img_5x7_C;
-extern  const image_t  img_5x7_B;
-extern  const image_t  img_5x7_A;
-extern  const image_t  img_5x7_9;
-extern  const image_t  img_5x7_8;
-extern  const image_t  img_5x7_6;
-extern  const image_t  img_5x7_5;
-extern  const image_t  img_5x7_4;
-extern  const image_t  img_5x7_3;
-extern  const image_t  img_5x7_2;
-extern  const image_t  img_5x7_1;
-extern  const image_t  img_5x7_0;
-extern  const image_t  img_6x8_v;
-extern  const image_t  img_6x8_n;
-extern  const image_t  img_6x8_G;
-extern  const image_t  img_6x8_F;
-extern  const image_t  img_6x8_E;
-extern  const image_t  img_6x8_d;
-extern  const image_t  img_6x8_C;
-extern  const image_t  img_6x8_B;
-extern  const image_t  img_6x8_A;
-extern  const image_t  img_6x8_9;
-extern  const image_t  img_6x8_8;
-extern  const image_t  img_6x8_6;
-extern  const image_t  img_6x8_5;
-extern  const image_t  img_6x8_4;
-extern  const image_t  img_6x8_3;
-extern  const image_t  img_6x8_2;
-extern  const image_t  img_6x8_1;
-extern  const image_t  img_6x8_0;
-extern  const image_t  img_ecp_SDA;
-extern  const image_t  img_ecp_SCL;
-extern  const image_t  img_ecp_port;
-extern  const image_t  img_cc_pad_UD1;
-extern  const image_t  img_cc_pad_LR1;
-extern  const image_t  img_cc_btn_Y1;
-extern  const image_t  img_cc_btn_X1;
-extern  const image_t  img_cc_btn_B1;
-extern  const image_t  img_cc_btn_A1;
-extern  const image_t  img_6x8_D;
+extern const image_t img_csLogo_Small;
+extern const image_t img_3x5_v;
+extern const image_t img_3x5_9;
+extern const image_t img_3x5_8;
+extern const image_t img_3x5_7;
+extern const image_t img_3x5_6;
+extern const image_t img_3x5_5;
+extern const image_t img_3x5_4;
+extern const image_t img_3x5_3;
+extern const image_t img_3x5_2;
+extern const image_t img_3x5_1;
+extern const image_t img_3x5_0;
+extern const image_t img_key_Ui;
+extern const image_t img_key_OKi;
+extern const image_t img_RIP;
+extern const image_t img_cc_trg_R4;
+extern const image_t img_cc_trg_R3;
+extern const image_t img_cc_trg_R2;
+extern const image_t img_cc_trg_R1;
+extern const image_t img_cc_trg_L4;
+extern const image_t img_cc_trg_L3;
+extern const image_t img_cc_trg_L2;
+extern const image_t img_cc_trg_L1;
+extern const image_t img_cc_Joy;
+extern const image_t img_cc_Main;
+extern const image_t img_cc_Cable;
+extern const image_t img_key_Back;
+extern const image_t img_key_OK;
+extern const image_t img_6x8_Z;
+extern const image_t img_6x8_Y;
+extern const image_t img_6x8_X;
+extern const image_t img_key_U;
+extern const image_t img_key_D;
+extern const image_t img_csLogo_FULL;
+extern const image_t img_6x8_7;
+extern const image_t img_key_R;
+extern const image_t img_key_L;
+extern const image_t img_5x7_7;
+extern const image_t img_5x7_F;
+extern const image_t img_5x7_E;
+extern const image_t img_5x7_D;
+extern const image_t img_5x7_C;
+extern const image_t img_5x7_B;
+extern const image_t img_5x7_A;
+extern const image_t img_5x7_9;
+extern const image_t img_5x7_8;
+extern const image_t img_5x7_6;
+extern const image_t img_5x7_5;
+extern const image_t img_5x7_4;
+extern const image_t img_5x7_3;
+extern const image_t img_5x7_2;
+extern const image_t img_5x7_1;
+extern const image_t img_5x7_0;
+extern const image_t img_6x8_v;
+extern const image_t img_6x8_n;
+extern const image_t img_6x8_G;
+extern const image_t img_6x8_F;
+extern const image_t img_6x8_E;
+extern const image_t img_6x8_d;
+extern const image_t img_6x8_C;
+extern const image_t img_6x8_B;
+extern const image_t img_6x8_A;
+extern const image_t img_6x8_9;
+extern const image_t img_6x8_8;
+extern const image_t img_6x8_6;
+extern const image_t img_6x8_5;
+extern const image_t img_6x8_4;
+extern const image_t img_6x8_3;
+extern const image_t img_6x8_2;
+extern const image_t img_6x8_1;
+extern const image_t img_6x8_0;
+extern const image_t img_ecp_SDA;
+extern const image_t img_ecp_SCL;
+extern const image_t img_ecp_port;
+extern const image_t img_cc_pad_UD1;
+extern const image_t img_cc_pad_LR1;
+extern const image_t img_cc_btn_Y1;
+extern const image_t img_cc_btn_X1;
+extern const image_t img_cc_btn_B1;
+extern const image_t img_cc_btn_A1;
+extern const image_t img_6x8_D;
 
 
 //----------------------------------------------------------------------------- ----------------------------------------
 //----------------------------------------------------------------------------- ----------------------------------------
 #ifndef IMGTEST
 #ifndef IMGTEST
-#	include <gui/gui.h>
-	void  show (Canvas* const  canvas,  const uint8_t tlx,  const uint8_t tly,
-	            const image_t* img,     const showMode_t mode) ;
+#include <gui/gui.h>
+void show(
+    Canvas* const canvas,
+    const uint8_t tlx,
+    const uint8_t tly,
+    const image_t* img,
+    const showMode_t mode);
 #endif
 #endif
 
 
 #endif //IMAGES_H_
 #endif //IMAGES_H_

+ 1 - 3
gfx/img_3x5_0.c

@@ -6,6 +6,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_3x5_0 = { 3, 5, false, 2, 0, {
-	0xF6, 0xDE
-}};
+const image_t img_3x5_0 = {3, 5, false, 2, 0, {0xF6, 0xDE}};

+ 1 - 3
gfx/img_3x5_1.c

@@ -6,6 +6,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_3x5_1 = { 3, 5, false, 2, 0, {
-	0xC9, 0x2E
-}};
+const image_t img_3x5_1 = {3, 5, false, 2, 0, {0xC9, 0x2E}};

+ 1 - 3
gfx/img_3x5_2.c

@@ -6,6 +6,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_3x5_2 = { 3, 5, false, 2, 0, {
-	0xE7, 0xCE
-}};
+const image_t img_3x5_2 = {3, 5, false, 2, 0, {0xE7, 0xCE}};

+ 1 - 3
gfx/img_3x5_3.c

@@ -6,6 +6,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_3x5_3 = { 3, 5, false, 2, 0, {
-	0xE5, 0x9E
-}};
+const image_t img_3x5_3 = {3, 5, false, 2, 0, {0xE5, 0x9E}};

+ 1 - 3
gfx/img_3x5_4.c

@@ -6,6 +6,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_3x5_4 = { 3, 5, false, 2, 0, {
-	0x97, 0x92
-}};
+const image_t img_3x5_4 = {3, 5, false, 2, 0, {0x97, 0x92}};

+ 1 - 3
gfx/img_3x5_5.c

@@ -6,6 +6,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_3x5_5 = { 3, 5, false, 2, 0, {
-	0xF3, 0x9E
-}};
+const image_t img_3x5_5 = {3, 5, false, 2, 0, {0xF3, 0x9E}};

+ 1 - 3
gfx/img_3x5_6.c

@@ -6,6 +6,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_3x5_6 = { 3, 5, false, 2, 0, {
-	0xD3, 0xDE
-}};
+const image_t img_3x5_6 = {3, 5, false, 2, 0, {0xD3, 0xDE}};

+ 1 - 3
gfx/img_3x5_7.c

@@ -6,6 +6,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_3x5_7 = { 3, 5, false, 2, 0, {
-	0xE5, 0x24
-}};
+const image_t img_3x5_7 = {3, 5, false, 2, 0, {0xE5, 0x24}};

+ 1 - 3
gfx/img_3x5_8.c

@@ -6,6 +6,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_3x5_8 = { 3, 5, false, 2, 0, {
-	0xF7, 0xDE
-}};
+const image_t img_3x5_8 = {3, 5, false, 2, 0, {0xF7, 0xDE}};

+ 1 - 3
gfx/img_3x5_9.c

@@ -6,6 +6,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_3x5_9 = { 3, 5, false, 2, 0, {
-	0xF7, 0x96
-}};
+const image_t img_3x5_9 = {3, 5, false, 2, 0, {0xF7, 0x96}};

+ 1 - 3
gfx/img_3x5_v.c

@@ -6,6 +6,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_3x5_v = { 3, 5, false, 2, 0, {
-	0x02, 0xD4
-}};
+const image_t img_3x5_v = {3, 5, false, 2, 0, {0x02, 0xD4}};

+ 1 - 3
gfx/img_5x7_0.c

@@ -8,6 +8,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_5x7_0 = { 5, 7, false, 5, 0, {
-	0x74, 0x67, 0x5C, 0xC5, 0xC0
-}};
+const image_t img_5x7_0 = {5, 7, false, 5, 0, {0x74, 0x67, 0x5C, 0xC5, 0xC0}};

+ 1 - 3
gfx/img_5x7_1.c

@@ -8,6 +8,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_5x7_1 = { 5, 7, false, 5, 0, {
-	0x65, 0x08, 0x42, 0x13, 0xE0
-}};
+const image_t img_5x7_1 = {5, 7, false, 5, 0, {0x65, 0x08, 0x42, 0x13, 0xE0}};

+ 1 - 3
gfx/img_5x7_2.c

@@ -8,6 +8,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_5x7_2 = { 5, 7, false, 5, 0, {
-	0x74, 0x42, 0x22, 0x23, 0xE0
-}};
+const image_t img_5x7_2 = {5, 7, false, 5, 0, {0x74, 0x42, 0x22, 0x23, 0xE0}};

+ 1 - 3
gfx/img_5x7_3.c

@@ -8,6 +8,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_5x7_3 = { 5, 7, false, 5, 0, {
-	0x74, 0x42, 0x60, 0xC5, 0xC0
-}};
+const image_t img_5x7_3 = {5, 7, false, 5, 0, {0x74, 0x42, 0x60, 0xC5, 0xC0}};

+ 1 - 3
gfx/img_5x7_4.c

@@ -8,6 +8,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_5x7_4 = { 5, 7, false, 5, 0, {
-	0x84, 0x25, 0x2F, 0x88, 0x40
-}};
+const image_t img_5x7_4 = {5, 7, false, 5, 0, {0x84, 0x25, 0x2F, 0x88, 0x40}};

+ 1 - 3
gfx/img_5x7_5.c

@@ -8,6 +8,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_5x7_5 = { 5, 7, false, 5, 0, {
-	0xFC, 0x21, 0xE0, 0x87, 0xC0
-}};
+const image_t img_5x7_5 = {5, 7, false, 5, 0, {0xFC, 0x21, 0xE0, 0x87, 0xC0}};

+ 1 - 3
gfx/img_5x7_6.c

@@ -8,6 +8,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_5x7_6 = { 5, 7, false, 5, 0, {
-	0x74, 0x21, 0xE8, 0xC5, 0xC0
-}};
+const image_t img_5x7_6 = {5, 7, false, 5, 0, {0x74, 0x21, 0xE8, 0xC5, 0xC0}};

+ 1 - 3
gfx/img_5x7_7.c

@@ -8,6 +8,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_5x7_7 = { 5, 7, false, 5, 0, {
-	0xF8, 0x44, 0x22, 0x10, 0x80
-}};
+const image_t img_5x7_7 = {5, 7, false, 5, 0, {0xF8, 0x44, 0x22, 0x10, 0x80}};

+ 1 - 3
gfx/img_5x7_8.c

@@ -8,6 +8,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_5x7_8 = { 5, 7, false, 5, 0, {
-	0x74, 0x62, 0xE8, 0xC5, 0xC0
-}};
+const image_t img_5x7_8 = {5, 7, false, 5, 0, {0x74, 0x62, 0xE8, 0xC5, 0xC0}};

+ 1 - 3
gfx/img_5x7_9.c

@@ -8,6 +8,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_5x7_9 = { 5, 7, false, 5, 0, {
-	0x74, 0x62, 0xF0, 0x85, 0xC0
-}};
+const image_t img_5x7_9 = {5, 7, false, 5, 0, {0x74, 0x62, 0xF0, 0x85, 0xC0}};

+ 1 - 3
gfx/img_5x7_A.c

@@ -8,6 +8,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_5x7_A = { 5, 7, false, 5, 0, {
-	0x74, 0x63, 0xF8, 0xC6, 0x20
-}};
+const image_t img_5x7_A = {5, 7, false, 5, 0, {0x74, 0x63, 0xF8, 0xC6, 0x20}};

+ 1 - 3
gfx/img_5x7_B.c

@@ -8,6 +8,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_5x7_B = { 5, 7, false, 5, 0, {
-	0xF4, 0x63, 0x68, 0xC7, 0xC0
-}};
+const image_t img_5x7_B = {5, 7, false, 5, 0, {0xF4, 0x63, 0x68, 0xC7, 0xC0}};

+ 1 - 3
gfx/img_5x7_C.c

@@ -8,6 +8,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_5x7_C = { 5, 7, false, 5, 0, {
-	0x74, 0x61, 0x08, 0x45, 0xC0
-}};
+const image_t img_5x7_C = {5, 7, false, 5, 0, {0x74, 0x61, 0x08, 0x45, 0xC0}};

+ 1 - 3
gfx/img_5x7_D.c

@@ -8,6 +8,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_5x7_D = { 5, 7, false, 5, 0, {
-	0x75, 0x4A, 0x52, 0xD5, 0xC0
-}};
+const image_t img_5x7_D = {5, 7, false, 5, 0, {0x75, 0x4A, 0x52, 0xD5, 0xC0}};

+ 1 - 3
gfx/img_5x7_E.c

@@ -8,6 +8,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_5x7_E = { 5, 7, false, 5, 0, {
-	0xFC, 0x21, 0xC8, 0x43, 0xE0
-}};
+const image_t img_5x7_E = {5, 7, false, 5, 0, {0xFC, 0x21, 0xC8, 0x43, 0xE0}};

+ 1 - 3
gfx/img_5x7_F.c

@@ -8,6 +8,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_5x7_F = { 5, 7, false, 5, 0, {
-	0xFC, 0x21, 0xC8, 0x42, 0x00
-}};
+const image_t img_5x7_F = {5, 7, false, 5, 0, {0xFC, 0x21, 0xC8, 0x42, 0x00}};

+ 1 - 3
gfx/img_6x8_0.c

@@ -9,6 +9,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_6x8_0 = { 6, 8, false, 6, 0, {
-	0x7B, 0xFC, 0xF3, 0xCF, 0x3F, 0xDE
-}};
+const image_t img_6x8_0 = {6, 8, false, 6, 0, {0x7B, 0xFC, 0xF3, 0xCF, 0x3F, 0xDE}};

+ 1 - 3
gfx/img_6x8_1.c

@@ -9,6 +9,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_6x8_1 = { 6, 8, false, 6, 0, {
-	0x73, 0xC3, 0x0C, 0x30, 0xCF, 0xFF
-}};
+const image_t img_6x8_1 = {6, 8, false, 6, 0, {0x73, 0xC3, 0x0C, 0x30, 0xCF, 0xFF}};

+ 1 - 3
gfx/img_6x8_2.c

@@ -9,6 +9,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_6x8_2 = { 6, 8, false, 6, 0, {
-	0x7B, 0xF0, 0xC7, 0x31, 0x8F, 0xFF
-}};
+const image_t img_6x8_2 = {6, 8, false, 6, 0, {0x7B, 0xF0, 0xC7, 0x31, 0x8F, 0xFF}};

+ 1 - 3
gfx/img_6x8_3.c

@@ -9,6 +9,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_6x8_3 = { 6, 8, false, 6, 0, {
-	0x7B, 0xF0, 0xCF, 0x3C, 0x3F, 0xDE
-}};
+const image_t img_6x8_3 = {6, 8, false, 6, 0, {0x7B, 0xF0, 0xCF, 0x3C, 0x3F, 0xDE}};

+ 1 - 3
gfx/img_6x8_4.c

@@ -9,6 +9,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_6x8_4 = { 6, 8, false, 6, 0, {
-	0xC3, 0x0D, 0xB6, 0xFF, 0xF1, 0x86
-}};
+const image_t img_6x8_4 = {6, 8, false, 6, 0, {0xC3, 0x0D, 0xB6, 0xFF, 0xF1, 0x86}};

+ 1 - 3
gfx/img_6x8_5.c

@@ -9,6 +9,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_6x8_5 = { 6, 8, false, 6, 0, {
-	0xFF, 0xFC, 0x3E, 0xFC, 0x3F, 0xFE
-}};
+const image_t img_6x8_5 = {6, 8, false, 6, 0, {0xFF, 0xFC, 0x3E, 0xFC, 0x3F, 0xFE}};

+ 1 - 3
gfx/img_6x8_6.c

@@ -9,6 +9,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_6x8_6 = { 6, 8, false, 6, 0, {
-	0x7B, 0xEC, 0x3E, 0xFF, 0x3F, 0xDE
-}};
+const image_t img_6x8_6 = {6, 8, false, 6, 0, {0x7B, 0xEC, 0x3E, 0xFF, 0x3F, 0xDE}};

+ 1 - 3
gfx/img_6x8_7.c

@@ -9,6 +9,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_6x8_7 = { 6, 8, false, 6, 0, {
-	0xFF, 0xF0, 0xC6, 0x18, 0xC3, 0x0C
-}};
+const image_t img_6x8_7 = {6, 8, false, 6, 0, {0xFF, 0xF0, 0xC6, 0x18, 0xC3, 0x0C}};

+ 1 - 3
gfx/img_6x8_8.c

@@ -9,6 +9,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_6x8_8 = { 6, 8, false, 6, 0, {
-	0x7B, 0xFC, 0xDE, 0xFF, 0x3F, 0xDE
-}};
+const image_t img_6x8_8 = {6, 8, false, 6, 0, {0x7B, 0xFC, 0xDE, 0xFF, 0x3F, 0xDE}};

+ 1 - 3
gfx/img_6x8_9.c

@@ -9,6 +9,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_6x8_9 = { 6, 8, false, 6, 0, {
-	0x7B, 0xFC, 0xFF, 0x7C, 0x37, 0xDE
-}};
+const image_t img_6x8_9 = {6, 8, false, 6, 0, {0x7B, 0xFC, 0xFF, 0x7C, 0x37, 0xDE}};

+ 1 - 3
gfx/img_6x8_A.c

@@ -9,6 +9,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_6x8_A = { 6, 8, false, 6, 0, {
-	0x7B, 0xFC, 0xF3, 0xFF, 0xFC, 0xF3
-}};
+const image_t img_6x8_A = {6, 8, false, 6, 0, {0x7B, 0xFC, 0xF3, 0xFF, 0xFC, 0xF3}};

+ 1 - 3
gfx/img_6x8_B.c

@@ -9,6 +9,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_6x8_B = { 6, 8, false, 6, 0, {
-	0xFB, 0xFC, 0xFE, 0xFB, 0x3F, 0xFE
-}};
+const image_t img_6x8_B = {6, 8, false, 6, 0, {0xFB, 0xFC, 0xFE, 0xFB, 0x3F, 0xFE}};

+ 1 - 3
gfx/img_6x8_C.c

@@ -9,6 +9,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_6x8_C = { 6, 8, false, 6, 0, {
-	0x7F, 0xFC, 0x30, 0xC3, 0x0F, 0xDF
-}};
+const image_t img_6x8_C = {6, 8, false, 6, 0, {0x7F, 0xFC, 0x30, 0xC3, 0x0F, 0xDF}};

+ 1 - 3
gfx/img_6x8_D.c

@@ -9,6 +9,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_6x8_D = { 6, 8, false, 6, 0, {
-	0xFB, 0xF6, 0xDB, 0x6D, 0xBF, 0xFE
-}};
+const image_t img_6x8_D = {6, 8, false, 6, 0, {0xFB, 0xF6, 0xDB, 0x6D, 0xBF, 0xFE}};

+ 1 - 3
gfx/img_6x8_E.c

@@ -9,6 +9,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_6x8_E = { 6, 8, false, 6, 0, {
-	0xFF, 0xFC, 0x3C, 0xF3, 0x0F, 0xFF
-}};
+const image_t img_6x8_E = {6, 8, false, 6, 0, {0xFF, 0xFC, 0x3C, 0xF3, 0x0F, 0xFF}};

+ 1 - 3
gfx/img_6x8_F.c

@@ -9,6 +9,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_6x8_F = { 6, 8, false, 6, 0, {
-	0xFF, 0xFC, 0x3C, 0xF3, 0x0C, 0x30
-}};
+const image_t img_6x8_F = {6, 8, false, 6, 0, {0xFF, 0xFC, 0x3C, 0xF3, 0x0C, 0x30}};

+ 1 - 3
gfx/img_6x8_G.c

@@ -9,6 +9,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_6x8_G = { 6, 8, false, 6, 0, {
-	0x7F, 0xFC, 0x30, 0xDF, 0x3F, 0xDF
-}};
+const image_t img_6x8_G = {6, 8, false, 6, 0, {0x7F, 0xFC, 0x30, 0xDF, 0x3F, 0xDF}};

+ 1 - 3
gfx/img_6x8_X.c

@@ -9,6 +9,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_6x8_X = { 6, 8, false, 6, 0, {
-	0xCF, 0x36, 0x8E, 0x71, 0x6C, 0xF3
-}};
+const image_t img_6x8_X = {6, 8, false, 6, 0, {0xCF, 0x36, 0x8E, 0x71, 0x6C, 0xF3}};

+ 1 - 3
gfx/img_6x8_Y.c

@@ -9,6 +9,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_6x8_Y = { 6, 8, false, 6, 0, {
-	0xCF, 0x3C, 0xF3, 0x78, 0xC3, 0x0C
-}};
+const image_t img_6x8_Y = {6, 8, false, 6, 0, {0xCF, 0x3C, 0xF3, 0x78, 0xC3, 0x0C}};

+ 1 - 3
gfx/img_6x8_Z.c

@@ -9,6 +9,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_6x8_Z = { 6, 8, false, 6, 0, {
-	0xFF, 0xF0, 0xC6, 0x31, 0x8F, 0xFF
-}};
+const image_t img_6x8_Z = {6, 8, false, 6, 0, {0xFF, 0xF0, 0xC6, 0x31, 0x8F, 0xFF}};

+ 1 - 3
gfx/img_6x8_d_.c

@@ -9,6 +9,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_6x8_d = { 6, 8, false, 6, 0, {
-	0x0C, 0x30, 0xDF, 0xFF, 0x3F, 0xDF
-}};
+const image_t img_6x8_d = {6, 8, false, 6, 0, {0x0C, 0x30, 0xDF, 0xFF, 0x3F, 0xDF}};

+ 1 - 3
gfx/img_6x8_n_.c

@@ -9,6 +9,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_6x8_n = { 6, 8, false, 6, 0, {
-	0x00, 0x07, 0xBF, 0xCF, 0x3C, 0xF3
-}};
+const image_t img_6x8_n = {6, 8, false, 6, 0, {0x00, 0x07, 0xBF, 0xCF, 0x3C, 0xF3}};

+ 1 - 3
gfx/img_6x8_v_.c

@@ -9,6 +9,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_6x8_v = { 6, 8, false, 6, 0, {
-	0x00, 0x08, 0x73, 0xCF, 0xF7, 0x8C
-}};
+const image_t img_6x8_v = {6, 8, false, 6, 0, {0x00, 0x08, 0x73, 0xCF, 0xF7, 0x8C}};

+ 63 - 55
gfx/img_RIP.c

@@ -65,58 +65,66 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_RIP = { 128, 64, true, 837, 0x06, {  // orig:1024, comp:18.26%
-	0x06, 0x20, 0xFF, 0xC0, 0x06, 0x0E, 0x00, 0x03, 0xD4, 0x06, 0x0E, 0x00, 0x2B, 0xC8, 0x01, 0xFC,
-	0x1E, 0x1F, 0xF0, 0x00, 0xFE, 0x20, 0x8F, 0xE3, 0xF8, 0xFE, 0x3F, 0x80, 0x13, 0xD4, 0x01, 0xFC,
-	0x0E, 0x0F, 0xF0, 0x00, 0xFE, 0x71, 0xCF, 0xE3, 0xF8, 0xFE, 0x3F, 0x80, 0x2B, 0xC0, 0x00, 0x0E,
-	0x0A, 0x00, 0x38, 0x01, 0x87, 0x71, 0xD8, 0x77, 0x1C, 0x07, 0x71, 0xC0, 0x03, 0xC0, 0x03, 0x8E,
-	0x0A, 0x0E, 0x28, 0x01, 0xC5, 0x51, 0x5C, 0x77, 0x1D, 0xC7, 0x71, 0x40, 0x03, 0xC0, 0x03, 0x8A,
-	0x0A, 0x0E, 0x28, 0x01, 0x47, 0x51, 0x5C, 0x55, 0x15, 0xC5, 0x51, 0x40, 0x03, 0xC0, 0x02, 0x8A,
-	0x0A, 0x0A, 0x28, 0x01, 0x40, 0x51, 0x54, 0x55, 0x15, 0x45, 0x51, 0x40, 0x03, 0xC0, 0x02, 0x8A,
-	0x0A, 0x0A, 0x28, 0x01, 0x40, 0x51, 0x54, 0x55, 0x15, 0x45, 0x51, 0xC0, 0x03, 0xC0, 0x02, 0x8E,
-	0x0A, 0x0A, 0x38, 0x01, 0x40, 0x51, 0x54, 0x75, 0x55, 0x47, 0x50, 0x00, 0x03, 0xC0, 0x02, 0xF8,
-	0x0A, 0x0B, 0xE0, 0x01, 0x40, 0x71, 0xD7, 0xC5, 0x15, 0x7C, 0x50, 0x00, 0x03, 0xC0, 0x02, 0xF8,
-	0x0A, 0x0B, 0xE0, 0x01, 0x40, 0x3F, 0x97, 0xC5, 0x15, 0x7C, 0x57, 0x80, 0x03, 0xC0, 0x02, 0x9C,
-	0x0A, 0x0A, 0x00, 0x01, 0x40, 0x1B, 0x14, 0x75, 0x55, 0x4E, 0x57, 0xC0, 0x03, 0xC0, 0x02, 0x94,
-	0x0A, 0x0A, 0x00, 0x01, 0x40, 0x0A, 0x14, 0x55, 0x15, 0x4A, 0x51, 0x40, 0x03, 0xC0, 0x02, 0x94,
-	0x0A, 0x0A, 0x00, 0x01, 0x40, 0x0A, 0x14, 0x55, 0x15, 0x4A, 0x51, 0x40, 0x03, 0xC0, 0x02, 0x94,
-	0x0A, 0x0A, 0x00, 0x01, 0xC7, 0x0A, 0x14, 0x55, 0x15, 0x4A, 0x71, 0x40, 0x03, 0xC0, 0x02, 0x94,
-	0x0A, 0x0A, 0x00, 0x01, 0xC5, 0x0A, 0x1C, 0x77, 0x1D, 0x4A, 0x71, 0x40, 0x03, 0xC0, 0x02, 0x94,
-	0x0A, 0x0A, 0x00, 0x01, 0x87, 0x0E, 0x1C, 0x77, 0x1D, 0x4A, 0x61, 0xC0, 0x03, 0xC0, 0x03, 0x9C,
-	0xCE, 0xCE, 0xC0, 0x00, 0xFE, 0x0E, 0x0F, 0xE3, 0xF9, 0xCE, 0x3F, 0x80, 0x03, 0xC0, 0x03, 0x8E,
-	0xDE, 0xDE, 0xC0, 0x00, 0xFE, 0x1F, 0x0F, 0xE3, 0xF9, 0xC7, 0x3F, 0x80, 0x03, 0xC0, 0x06, 0x0E,
-	0x00, 0x03, 0xC0, 0x06, 0x0E, 0x00, 0x03, 0xC0, 0x06, 0x0A, 0x00, 0x01, 0x8C, 0x07, 0xF0, 0x03,
-	0xC0, 0x06, 0x07, 0x00, 0x04, 0x00, 0x00, 0x02, 0x52, 0x18, 0x0C, 0x03, 0xC1, 0xD5, 0xC7, 0x57,
-	0x77, 0x6D, 0xC4, 0x5D, 0x2B, 0x8E, 0xE0, 0x03, 0x5A, 0x20, 0x02, 0x03, 0xC0, 0x95, 0x04, 0x54,
-	0x24, 0x55, 0x04, 0x55, 0xA1, 0x0A, 0x80, 0x01, 0x8C, 0x47, 0xC1, 0x03, 0xC0, 0x9D, 0x87, 0x27,
-	0x26, 0x55, 0xC5, 0x55, 0x61, 0x0C, 0xC0, 0x00, 0x50, 0x88, 0x21, 0x03, 0xC0, 0x95, 0x01, 0x21,
-	0x24, 0x44, 0x45, 0x55, 0x21, 0x0A, 0x80, 0x00, 0x20, 0x90, 0x11, 0x03, 0xC0, 0x95, 0xC7, 0x27,
-	0x27, 0x45, 0xC6, 0xDD, 0x21, 0x0E, 0xE0, 0x00, 0x70, 0x91, 0x91, 0x03, 0xC0, 0x06, 0x0B, 0x00,
-	0x88, 0x92, 0x51, 0x03, 0xC0, 0x06, 0x0A, 0x00, 0x01, 0x08, 0x92, 0x91, 0x03, 0xC0, 0x06, 0x0A,
-	0x00, 0x01, 0x08, 0x92, 0x11, 0x03, 0xC1, 0xD5, 0xC7, 0x76, 0xDC, 0x45, 0xDD, 0x5D, 0x5C, 0x57,
-	0x50, 0x00, 0x87, 0x11, 0xE2, 0x03, 0xC0, 0x95, 0x04, 0x55, 0x50, 0x44, 0x89, 0x55, 0x48, 0x55,
-	0x50, 0x00, 0x80, 0x88, 0x03, 0x03, 0xC0, 0x9D, 0x87, 0x75, 0x58, 0x54, 0x89, 0xD5, 0x48, 0x25,
-	0x50, 0x00, 0x40, 0x7C, 0x04, 0x83, 0xC0, 0x95, 0x01, 0x54, 0x50, 0x54, 0x89, 0x55, 0x48, 0x25,
-	0x50, 0x00, 0x40, 0x07, 0xF8, 0x43, 0xC0, 0x95, 0xC7, 0x54, 0x5C, 0x6D, 0xC9, 0x5D, 0xC8, 0x27,
-	0x70, 0x00, 0x30, 0x00, 0x00, 0x43, 0xC0, 0x06, 0x0B, 0x00, 0x0F, 0xFF, 0xFF, 0x83, 0xC0, 0x06,
-	0x0E, 0x00, 0x03, 0xC0, 0x06, 0x0E, 0x00, 0x03, 0xC0, 0x00, 0x07, 0xC7, 0xF1, 0xFC, 0x7F, 0x00,
-	0x03, 0xF8, 0xFE, 0x3F, 0x8F, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0xC7, 0xF1, 0xFC, 0x7F, 0x00,
-	0x03, 0xF8, 0xFE, 0x3F, 0x8F, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x05, 0x4E, 0x3B, 0x8E, 0xE3, 0x80,
-	0x07, 0x1D, 0xC7, 0x71, 0xDC, 0x70, 0x00, 0x03, 0xC0, 0x00, 0x01, 0x4E, 0x3A, 0x8E, 0xE3, 0x80,
-	0x05, 0x15, 0xC7, 0x51, 0x54, 0x50, 0x00, 0x03, 0xC0, 0x00, 0x01, 0x4A, 0x2B, 0x8A, 0xA2, 0x80,
-	0x07, 0x15, 0x45, 0x71, 0x5C, 0x50, 0x00, 0x03, 0xC0, 0x00, 0x01, 0x4A, 0x28, 0x0A, 0xA2, 0x80,
-	0x00, 0x15, 0x45, 0x01, 0x40, 0x50, 0x00, 0x03, 0xC0, 0x00, 0x01, 0x4A, 0x28, 0x0A, 0xA6, 0x80,
-	0x00, 0x15, 0x4D, 0x01, 0x40, 0x50, 0x00, 0x03, 0xC0, 0x00, 0x01, 0x4E, 0x28, 0x0E, 0xA6, 0x80,
-	0x00, 0x1D, 0x4D, 0x01, 0xC0, 0x70, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xC3, 0xE8, 0x0E, 0xAA, 0x9F,
-	0xE1, 0xF9, 0x55, 0x1F, 0x87, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xC3, 0xE8, 0x38, 0xAA, 0x90,
-	0x23, 0xF1, 0x55, 0x3F, 0x0F, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x01, 0x40, 0x28, 0x38, 0xB2, 0x9F,
-	0xE7, 0x01, 0x65, 0x70, 0x1C, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x01, 0x40, 0x28, 0x28, 0xB2, 0x80,
-	0x05, 0x01, 0x65, 0x50, 0x14, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x01, 0x40, 0x28, 0x28, 0xA2, 0x80,
-	0x05, 0x01, 0x45, 0x50, 0x14, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x01, 0x40, 0x28, 0x28, 0xA2, 0x80,
-	0x05, 0x01, 0x45, 0x50, 0x14, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x01, 0x40, 0x38, 0x28, 0xE3, 0x80,
-	0x05, 0x01, 0xC7, 0x50, 0x14, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x01, 0x40, 0x38, 0x28, 0xE3, 0x80,
-	0x05, 0x0D, 0xC7, 0x50, 0xD4, 0x30, 0x00, 0x03, 0xD4, 0x00, 0x07, 0xF3, 0xF0, 0x38, 0x7F, 0x00,
-	0x07, 0xFC, 0xFE, 0x7F, 0xDF, 0xF0, 0x00, 0x2B, 0xC8, 0x00, 0x0F, 0xFB, 0xF0, 0x38, 0x7F, 0x00,
-	0x07, 0xFC, 0xFE, 0x7F, 0xDF, 0xF0, 0x00, 0x13, 0xD4, 0x06, 0x0E, 0x00, 0x2B, 0xC0, 0x06, 0x0E,
-	0x00, 0x03, 0x06, 0x20, 0xFF
-}};
+const image_t img_RIP = {
+    128,
+    64,
+    true,
+    837,
+    0x06,
+    {// orig:1024, comp:18.26%
+     0x06, 0x20, 0xFF, 0xC0, 0x06, 0x0E, 0x00, 0x03, 0xD4, 0x06, 0x0E, 0x00, 0x2B, 0xC8, 0x01,
+     0xFC, 0x1E, 0x1F, 0xF0, 0x00, 0xFE, 0x20, 0x8F, 0xE3, 0xF8, 0xFE, 0x3F, 0x80, 0x13, 0xD4,
+     0x01, 0xFC, 0x0E, 0x0F, 0xF0, 0x00, 0xFE, 0x71, 0xCF, 0xE3, 0xF8, 0xFE, 0x3F, 0x80, 0x2B,
+     0xC0, 0x00, 0x0E, 0x0A, 0x00, 0x38, 0x01, 0x87, 0x71, 0xD8, 0x77, 0x1C, 0x07, 0x71, 0xC0,
+     0x03, 0xC0, 0x03, 0x8E, 0x0A, 0x0E, 0x28, 0x01, 0xC5, 0x51, 0x5C, 0x77, 0x1D, 0xC7, 0x71,
+     0x40, 0x03, 0xC0, 0x03, 0x8A, 0x0A, 0x0E, 0x28, 0x01, 0x47, 0x51, 0x5C, 0x55, 0x15, 0xC5,
+     0x51, 0x40, 0x03, 0xC0, 0x02, 0x8A, 0x0A, 0x0A, 0x28, 0x01, 0x40, 0x51, 0x54, 0x55, 0x15,
+     0x45, 0x51, 0x40, 0x03, 0xC0, 0x02, 0x8A, 0x0A, 0x0A, 0x28, 0x01, 0x40, 0x51, 0x54, 0x55,
+     0x15, 0x45, 0x51, 0xC0, 0x03, 0xC0, 0x02, 0x8E, 0x0A, 0x0A, 0x38, 0x01, 0x40, 0x51, 0x54,
+     0x75, 0x55, 0x47, 0x50, 0x00, 0x03, 0xC0, 0x02, 0xF8, 0x0A, 0x0B, 0xE0, 0x01, 0x40, 0x71,
+     0xD7, 0xC5, 0x15, 0x7C, 0x50, 0x00, 0x03, 0xC0, 0x02, 0xF8, 0x0A, 0x0B, 0xE0, 0x01, 0x40,
+     0x3F, 0x97, 0xC5, 0x15, 0x7C, 0x57, 0x80, 0x03, 0xC0, 0x02, 0x9C, 0x0A, 0x0A, 0x00, 0x01,
+     0x40, 0x1B, 0x14, 0x75, 0x55, 0x4E, 0x57, 0xC0, 0x03, 0xC0, 0x02, 0x94, 0x0A, 0x0A, 0x00,
+     0x01, 0x40, 0x0A, 0x14, 0x55, 0x15, 0x4A, 0x51, 0x40, 0x03, 0xC0, 0x02, 0x94, 0x0A, 0x0A,
+     0x00, 0x01, 0x40, 0x0A, 0x14, 0x55, 0x15, 0x4A, 0x51, 0x40, 0x03, 0xC0, 0x02, 0x94, 0x0A,
+     0x0A, 0x00, 0x01, 0xC7, 0x0A, 0x14, 0x55, 0x15, 0x4A, 0x71, 0x40, 0x03, 0xC0, 0x02, 0x94,
+     0x0A, 0x0A, 0x00, 0x01, 0xC5, 0x0A, 0x1C, 0x77, 0x1D, 0x4A, 0x71, 0x40, 0x03, 0xC0, 0x02,
+     0x94, 0x0A, 0x0A, 0x00, 0x01, 0x87, 0x0E, 0x1C, 0x77, 0x1D, 0x4A, 0x61, 0xC0, 0x03, 0xC0,
+     0x03, 0x9C, 0xCE, 0xCE, 0xC0, 0x00, 0xFE, 0x0E, 0x0F, 0xE3, 0xF9, 0xCE, 0x3F, 0x80, 0x03,
+     0xC0, 0x03, 0x8E, 0xDE, 0xDE, 0xC0, 0x00, 0xFE, 0x1F, 0x0F, 0xE3, 0xF9, 0xC7, 0x3F, 0x80,
+     0x03, 0xC0, 0x06, 0x0E, 0x00, 0x03, 0xC0, 0x06, 0x0E, 0x00, 0x03, 0xC0, 0x06, 0x0A, 0x00,
+     0x01, 0x8C, 0x07, 0xF0, 0x03, 0xC0, 0x06, 0x07, 0x00, 0x04, 0x00, 0x00, 0x02, 0x52, 0x18,
+     0x0C, 0x03, 0xC1, 0xD5, 0xC7, 0x57, 0x77, 0x6D, 0xC4, 0x5D, 0x2B, 0x8E, 0xE0, 0x03, 0x5A,
+     0x20, 0x02, 0x03, 0xC0, 0x95, 0x04, 0x54, 0x24, 0x55, 0x04, 0x55, 0xA1, 0x0A, 0x80, 0x01,
+     0x8C, 0x47, 0xC1, 0x03, 0xC0, 0x9D, 0x87, 0x27, 0x26, 0x55, 0xC5, 0x55, 0x61, 0x0C, 0xC0,
+     0x00, 0x50, 0x88, 0x21, 0x03, 0xC0, 0x95, 0x01, 0x21, 0x24, 0x44, 0x45, 0x55, 0x21, 0x0A,
+     0x80, 0x00, 0x20, 0x90, 0x11, 0x03, 0xC0, 0x95, 0xC7, 0x27, 0x27, 0x45, 0xC6, 0xDD, 0x21,
+     0x0E, 0xE0, 0x00, 0x70, 0x91, 0x91, 0x03, 0xC0, 0x06, 0x0B, 0x00, 0x88, 0x92, 0x51, 0x03,
+     0xC0, 0x06, 0x0A, 0x00, 0x01, 0x08, 0x92, 0x91, 0x03, 0xC0, 0x06, 0x0A, 0x00, 0x01, 0x08,
+     0x92, 0x11, 0x03, 0xC1, 0xD5, 0xC7, 0x76, 0xDC, 0x45, 0xDD, 0x5D, 0x5C, 0x57, 0x50, 0x00,
+     0x87, 0x11, 0xE2, 0x03, 0xC0, 0x95, 0x04, 0x55, 0x50, 0x44, 0x89, 0x55, 0x48, 0x55, 0x50,
+     0x00, 0x80, 0x88, 0x03, 0x03, 0xC0, 0x9D, 0x87, 0x75, 0x58, 0x54, 0x89, 0xD5, 0x48, 0x25,
+     0x50, 0x00, 0x40, 0x7C, 0x04, 0x83, 0xC0, 0x95, 0x01, 0x54, 0x50, 0x54, 0x89, 0x55, 0x48,
+     0x25, 0x50, 0x00, 0x40, 0x07, 0xF8, 0x43, 0xC0, 0x95, 0xC7, 0x54, 0x5C, 0x6D, 0xC9, 0x5D,
+     0xC8, 0x27, 0x70, 0x00, 0x30, 0x00, 0x00, 0x43, 0xC0, 0x06, 0x0B, 0x00, 0x0F, 0xFF, 0xFF,
+     0x83, 0xC0, 0x06, 0x0E, 0x00, 0x03, 0xC0, 0x06, 0x0E, 0x00, 0x03, 0xC0, 0x00, 0x07, 0xC7,
+     0xF1, 0xFC, 0x7F, 0x00, 0x03, 0xF8, 0xFE, 0x3F, 0x8F, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07,
+     0xC7, 0xF1, 0xFC, 0x7F, 0x00, 0x03, 0xF8, 0xFE, 0x3F, 0x8F, 0xE0, 0x00, 0x03, 0xC0, 0x00,
+     0x05, 0x4E, 0x3B, 0x8E, 0xE3, 0x80, 0x07, 0x1D, 0xC7, 0x71, 0xDC, 0x70, 0x00, 0x03, 0xC0,
+     0x00, 0x01, 0x4E, 0x3A, 0x8E, 0xE3, 0x80, 0x05, 0x15, 0xC7, 0x51, 0x54, 0x50, 0x00, 0x03,
+     0xC0, 0x00, 0x01, 0x4A, 0x2B, 0x8A, 0xA2, 0x80, 0x07, 0x15, 0x45, 0x71, 0x5C, 0x50, 0x00,
+     0x03, 0xC0, 0x00, 0x01, 0x4A, 0x28, 0x0A, 0xA2, 0x80, 0x00, 0x15, 0x45, 0x01, 0x40, 0x50,
+     0x00, 0x03, 0xC0, 0x00, 0x01, 0x4A, 0x28, 0x0A, 0xA6, 0x80, 0x00, 0x15, 0x4D, 0x01, 0x40,
+     0x50, 0x00, 0x03, 0xC0, 0x00, 0x01, 0x4E, 0x28, 0x0E, 0xA6, 0x80, 0x00, 0x1D, 0x4D, 0x01,
+     0xC0, 0x70, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xC3, 0xE8, 0x0E, 0xAA, 0x9F, 0xE1, 0xF9, 0x55,
+     0x1F, 0x87, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xC3, 0xE8, 0x38, 0xAA, 0x90, 0x23, 0xF1,
+     0x55, 0x3F, 0x0F, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x01, 0x40, 0x28, 0x38, 0xB2, 0x9F, 0xE7,
+     0x01, 0x65, 0x70, 0x1C, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x01, 0x40, 0x28, 0x28, 0xB2, 0x80,
+     0x05, 0x01, 0x65, 0x50, 0x14, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x01, 0x40, 0x28, 0x28, 0xA2,
+     0x80, 0x05, 0x01, 0x45, 0x50, 0x14, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x01, 0x40, 0x28, 0x28,
+     0xA2, 0x80, 0x05, 0x01, 0x45, 0x50, 0x14, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x01, 0x40, 0x38,
+     0x28, 0xE3, 0x80, 0x05, 0x01, 0xC7, 0x50, 0x14, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x01, 0x40,
+     0x38, 0x28, 0xE3, 0x80, 0x05, 0x0D, 0xC7, 0x50, 0xD4, 0x30, 0x00, 0x03, 0xD4, 0x00, 0x07,
+     0xF3, 0xF0, 0x38, 0x7F, 0x00, 0x07, 0xFC, 0xFE, 0x7F, 0xDF, 0xF0, 0x00, 0x2B, 0xC8, 0x00,
+     0x0F, 0xFB, 0xF0, 0x38, 0x7F, 0x00, 0x07, 0xFC, 0xFE, 0x7F, 0xDF, 0xF0, 0x00, 0x13, 0xD4,
+     0x06, 0x0E, 0x00, 0x2B, 0xC0, 0x06, 0x0E, 0x00, 0x03, 0x06, 0x20, 0xFF}};

+ 11 - 3
gfx/img_cc_Cable.c

@@ -12,6 +12,14 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_cc_Cable = { 4, 11, true, 4, 0x00, {  // orig:6, comp:33.33%
-	0x00, 0x05, 0xDB, 0xD0
-}};
+const image_t img_cc_Cable = {
+    4,
+    11,
+    true,
+    4,
+    0x00,
+    {// orig:6, comp:33.33%
+     0x00,
+     0x05,
+     0xDB,
+     0xD0}};

+ 5 - 5
gfx/img_cc_Joy.c

@@ -18,8 +18,8 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_cc_Joy = { 17, 17, false, 37, 0, {
-	0x00, 0x80, 0x01, 0xF0, 0x0F, 0xDF, 0x87, 0x01, 0xC3, 0x00, 0x61, 0x00, 0x11, 0x80, 0x0C, 0xC0,
-	0x06, 0xC0, 0x01, 0xB0, 0x01, 0x98, 0x00, 0xC4, 0x00, 0x43, 0x00, 0x61, 0xC0, 0x70, 0xFD, 0xF8,
-	0x07, 0xC0, 0x00, 0x80, 0x00
-}};
+const image_t img_cc_Joy = {17, 17, false, 37, 0, {0x00, 0x80, 0x01, 0xF0, 0x0F, 0xDF, 0x87, 0x01,
+                                                   0xC3, 0x00, 0x61, 0x00, 0x11, 0x80, 0x0C, 0xC0,
+                                                   0x06, 0xC0, 0x01, 0xB0, 0x01, 0x98, 0x00, 0xC4,
+                                                   0x00, 0x43, 0x00, 0x61, 0xC0, 0x70, 0xFD, 0xF8,
+                                                   0x07, 0xC0, 0x00, 0x80, 0x00}};

+ 44 - 36
gfx/img_cc_Main.c

@@ -54,39 +54,47 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_cc_Main = { 116, 53, true, 542, 0x05, {  // orig:769, comp:29.52%
-	0x00, 0x00, 0x00, 0x7F, 0xC0, 0x05, 0x05, 0x00, 0x3F, 0xE0, 0x05, 0x04, 0x00, 0x01, 0xF8, 0x04,
-	0x0F, 0x80, 0x00, 0x00, 0x1F, 0x02, 0x01, 0xF8, 0x05, 0x04, 0x00, 0x60, 0x00, 0x41, 0x04, 0x00,
-	0x60, 0x02, 0x08, 0x20, 0x00, 0x60, 0x00, 0x00, 0x00, 0x08, 0x00, 0x07, 0xF0, 0x7F, 0xFF, 0xFF,
-	0xE0, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x41, 0x04, 0x00, 0x60, 0x02, 0x08,
-	0x20, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x50, 0x03, 0xFC, 0x10, 0x40, 0x06, 0x00, 0x20, 0x83, 0xFC,
-	0x00, 0xA0, 0x00, 0x00, 0x09, 0x0F, 0xC0, 0x00, 0xF8, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x3F, 0x09,
-	0x00, 0x00, 0x01, 0x1F, 0x05, 0x09, 0x00, 0x0F, 0x88, 0x00, 0x00, 0x20, 0x05, 0x0A, 0xFF, 0xF0,
-	0x40, 0x00, 0x04, 0x78, 0x05, 0x09, 0x00, 0x01, 0xE2, 0x00, 0x00, 0x9C, 0x05, 0x0A, 0x00, 0x03,
-	0x90, 0x00, 0x13, 0x05, 0x0B, 0x00, 0x0C, 0x80, 0x03, 0xE0, 0x05, 0x0B, 0x00, 0x7C, 0x00, 0x38,
-	0x05, 0x05, 0x00, 0xC6, 0xD8, 0x05, 0x04, 0x00, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0xF0, 0x00, 0x00,
-	0x0D, 0x60, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x60, 0x01, 0xFF, 0x00, 0x00, 0x00, 0xD6,
-	0xD8, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x60, 0x0C, 0x00, 0x18, 0x30, 0x00, 0x00, 0x0D, 0x6D, 0x80,
-	0x00, 0x00, 0x31, 0x80, 0x03, 0x01, 0xC0, 0x01, 0x83, 0x00, 0x00, 0x00, 0x6C, 0xD8, 0x00, 0x00,
-	0x06, 0x0C, 0x00, 0x38, 0x18, 0x00, 0x19, 0x30, 0x05, 0x07, 0x00, 0xCA, 0x60, 0x01, 0x81, 0x00,
-	0x01, 0x93, 0x05, 0x07, 0x00, 0x0C, 0x46, 0x00, 0x0C, 0x30, 0x00, 0x19, 0x30, 0x05, 0x07, 0x00,
-	0xCA, 0x60, 0x00, 0xC2, 0x00, 0xFF, 0x83, 0xFE, 0x05, 0x05, 0x00, 0x07, 0x06, 0x0C, 0x1C, 0x04,
-	0x60, 0x0F, 0xF8, 0x3F, 0xE0, 0x05, 0x05, 0x00, 0xF8, 0x31, 0x83, 0xE0, 0x64, 0x00, 0xC0, 0x00,
-	0x06, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x18, 0xC1, 0xF0, 0x63, 0x02, 0x40, 0x0C, 0x00, 0x00, 0x60,
-	0x01, 0x99, 0x99, 0x98, 0x03, 0x06, 0x0E, 0x0C, 0x98, 0x2C, 0x00, 0xCE, 0x00, 0xE6, 0x00, 0x10,
-	0x90, 0x90, 0x80, 0x65, 0x30, 0x01, 0x94, 0xC3, 0x80, 0x0C, 0x00, 0x00, 0x60, 0x01, 0x09, 0x09,
-	0x08, 0x06, 0x73, 0x00, 0x19, 0xCC, 0x18, 0x00, 0xC0, 0x00, 0x06, 0x00, 0x19, 0x99, 0x99, 0x80,
-	0x61, 0x30, 0x01, 0x94, 0xC1, 0x80, 0x0F, 0xF8, 0x3F, 0xE0, 0x00, 0xF0, 0xF0, 0xF0, 0x03, 0x26,
-	0x0E, 0x0C, 0x18, 0x18, 0x00, 0xFF, 0x83, 0xFE, 0x05, 0x05, 0x00, 0x18, 0xC1, 0xF0, 0x63, 0x01,
-	0x80, 0x00, 0x19, 0x30, 0x05, 0x06, 0x00, 0xF8, 0x31, 0x83, 0xE0, 0x18, 0x00, 0x01, 0x93, 0x05,
-	0x06, 0x00, 0x07, 0x06, 0x8C, 0x1C, 0x01, 0x80, 0x00, 0x19, 0x30, 0x05, 0x07, 0x00, 0xC8, 0x60,
-	0x00, 0x18, 0x00, 0x01, 0x83, 0x05, 0x07, 0x00, 0x0C, 0xC6, 0x00, 0x01, 0x80, 0x00, 0x18, 0x30,
-	0x05, 0x07, 0x00, 0xCA, 0x60, 0x00, 0x1C, 0x00, 0x01, 0xFF, 0x05, 0x07, 0x00, 0x06, 0x6C, 0x00,
-	0x03, 0x40, 0x00, 0x1F, 0xF0, 0x05, 0x07, 0x00, 0x31, 0x80, 0x00, 0x24, 0x05, 0x0A, 0x00, 0x01,
-	0xF0, 0x00, 0x02, 0x60, 0x05, 0x0A, 0x00, 0x0E, 0x00, 0x00, 0x62, 0x05, 0x0D, 0x00, 0x04, 0x20,
-	0x05, 0x0D, 0x00, 0x43, 0x05, 0x0D, 0x00, 0x0C, 0x10, 0x05, 0x0D, 0x00, 0x81, 0x80, 0x05, 0x0C,
-	0x00, 0x18, 0x0C, 0x05, 0x0C, 0x00, 0x03, 0x00, 0x60, 0x05, 0x0C, 0x00, 0x60, 0x03, 0x05, 0x0C,
-	0x00, 0x0C, 0x00, 0x18, 0x05, 0x0B, 0x00, 0x01, 0x80, 0x00, 0xE0, 0x05, 0x0B, 0x00, 0x70, 0x00,
-	0x03, 0x05, 0x0B, 0x00, 0x0C, 0x00, 0x00, 0x1C, 0x05, 0x0A, 0x00, 0x03, 0x80, 0x00, 0x00, 0x78,
-	0x05, 0x09, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x05, 0x0A, 0xFF, 0xF0, 0x00, 0x00
-}};
+const image_t img_cc_Main = {
+    116,
+    53,
+    true,
+    542,
+    0x05,
+    {// orig:769, comp:29.52%
+     0x00, 0x00, 0x00, 0x7F, 0xC0, 0x05, 0x05, 0x00, 0x3F, 0xE0, 0x05, 0x04, 0x00, 0x01, 0xF8,
+     0x04, 0x0F, 0x80, 0x00, 0x00, 0x1F, 0x02, 0x01, 0xF8, 0x05, 0x04, 0x00, 0x60, 0x00, 0x41,
+     0x04, 0x00, 0x60, 0x02, 0x08, 0x20, 0x00, 0x60, 0x00, 0x00, 0x00, 0x08, 0x00, 0x07, 0xF0,
+     0x7F, 0xFF, 0xFF, 0xE0, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x41, 0x04,
+     0x00, 0x60, 0x02, 0x08, 0x20, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x50, 0x03, 0xFC, 0x10, 0x40,
+     0x06, 0x00, 0x20, 0x83, 0xFC, 0x00, 0xA0, 0x00, 0x00, 0x09, 0x0F, 0xC0, 0x00, 0xF8, 0x00,
+     0x00, 0x01, 0xF0, 0x00, 0x3F, 0x09, 0x00, 0x00, 0x01, 0x1F, 0x05, 0x09, 0x00, 0x0F, 0x88,
+     0x00, 0x00, 0x20, 0x05, 0x0A, 0xFF, 0xF0, 0x40, 0x00, 0x04, 0x78, 0x05, 0x09, 0x00, 0x01,
+     0xE2, 0x00, 0x00, 0x9C, 0x05, 0x0A, 0x00, 0x03, 0x90, 0x00, 0x13, 0x05, 0x0B, 0x00, 0x0C,
+     0x80, 0x03, 0xE0, 0x05, 0x0B, 0x00, 0x7C, 0x00, 0x38, 0x05, 0x05, 0x00, 0xC6, 0xD8, 0x05,
+     0x04, 0x00, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x0D, 0x60, 0x00, 0x00, 0x00,
+     0x0E, 0x00, 0x0E, 0x00, 0x60, 0x01, 0xFF, 0x00, 0x00, 0x00, 0xD6, 0xD8, 0x00, 0x00, 0x01,
+     0xF0, 0x00, 0x60, 0x0C, 0x00, 0x18, 0x30, 0x00, 0x00, 0x0D, 0x6D, 0x80, 0x00, 0x00, 0x31,
+     0x80, 0x03, 0x01, 0xC0, 0x01, 0x83, 0x00, 0x00, 0x00, 0x6C, 0xD8, 0x00, 0x00, 0x06, 0x0C,
+     0x00, 0x38, 0x18, 0x00, 0x19, 0x30, 0x05, 0x07, 0x00, 0xCA, 0x60, 0x01, 0x81, 0x00, 0x01,
+     0x93, 0x05, 0x07, 0x00, 0x0C, 0x46, 0x00, 0x0C, 0x30, 0x00, 0x19, 0x30, 0x05, 0x07, 0x00,
+     0xCA, 0x60, 0x00, 0xC2, 0x00, 0xFF, 0x83, 0xFE, 0x05, 0x05, 0x00, 0x07, 0x06, 0x0C, 0x1C,
+     0x04, 0x60, 0x0F, 0xF8, 0x3F, 0xE0, 0x05, 0x05, 0x00, 0xF8, 0x31, 0x83, 0xE0, 0x64, 0x00,
+     0xC0, 0x00, 0x06, 0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x18, 0xC1, 0xF0, 0x63, 0x02, 0x40, 0x0C,
+     0x00, 0x00, 0x60, 0x01, 0x99, 0x99, 0x98, 0x03, 0x06, 0x0E, 0x0C, 0x98, 0x2C, 0x00, 0xCE,
+     0x00, 0xE6, 0x00, 0x10, 0x90, 0x90, 0x80, 0x65, 0x30, 0x01, 0x94, 0xC3, 0x80, 0x0C, 0x00,
+     0x00, 0x60, 0x01, 0x09, 0x09, 0x08, 0x06, 0x73, 0x00, 0x19, 0xCC, 0x18, 0x00, 0xC0, 0x00,
+     0x06, 0x00, 0x19, 0x99, 0x99, 0x80, 0x61, 0x30, 0x01, 0x94, 0xC1, 0x80, 0x0F, 0xF8, 0x3F,
+     0xE0, 0x00, 0xF0, 0xF0, 0xF0, 0x03, 0x26, 0x0E, 0x0C, 0x18, 0x18, 0x00, 0xFF, 0x83, 0xFE,
+     0x05, 0x05, 0x00, 0x18, 0xC1, 0xF0, 0x63, 0x01, 0x80, 0x00, 0x19, 0x30, 0x05, 0x06, 0x00,
+     0xF8, 0x31, 0x83, 0xE0, 0x18, 0x00, 0x01, 0x93, 0x05, 0x06, 0x00, 0x07, 0x06, 0x8C, 0x1C,
+     0x01, 0x80, 0x00, 0x19, 0x30, 0x05, 0x07, 0x00, 0xC8, 0x60, 0x00, 0x18, 0x00, 0x01, 0x83,
+     0x05, 0x07, 0x00, 0x0C, 0xC6, 0x00, 0x01, 0x80, 0x00, 0x18, 0x30, 0x05, 0x07, 0x00, 0xCA,
+     0x60, 0x00, 0x1C, 0x00, 0x01, 0xFF, 0x05, 0x07, 0x00, 0x06, 0x6C, 0x00, 0x03, 0x40, 0x00,
+     0x1F, 0xF0, 0x05, 0x07, 0x00, 0x31, 0x80, 0x00, 0x24, 0x05, 0x0A, 0x00, 0x01, 0xF0, 0x00,
+     0x02, 0x60, 0x05, 0x0A, 0x00, 0x0E, 0x00, 0x00, 0x62, 0x05, 0x0D, 0x00, 0x04, 0x20, 0x05,
+     0x0D, 0x00, 0x43, 0x05, 0x0D, 0x00, 0x0C, 0x10, 0x05, 0x0D, 0x00, 0x81, 0x80, 0x05, 0x0C,
+     0x00, 0x18, 0x0C, 0x05, 0x0C, 0x00, 0x03, 0x00, 0x60, 0x05, 0x0C, 0x00, 0x60, 0x03, 0x05,
+     0x0C, 0x00, 0x0C, 0x00, 0x18, 0x05, 0x0B, 0x00, 0x01, 0x80, 0x00, 0xE0, 0x05, 0x0B, 0x00,
+     0x70, 0x00, 0x03, 0x05, 0x0B, 0x00, 0x0C, 0x00, 0x00, 0x1C, 0x05, 0x0A, 0x00, 0x03, 0x80,
+     0x00, 0x00, 0x78, 0x05, 0x09, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x05, 0x0A, 0xFF, 0xF0,
+     0x00, 0x00}};

+ 1 - 3
gfx/img_cc_btn_A1.c

@@ -8,6 +8,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_cc_btn_A1 = { 7, 7, false, 7, 0, {
-	0xFF, 0xDF, 0x5E, 0x3D, 0x7F, 0xFF, 0x80
-}};
+const image_t img_cc_btn_A1 = {7, 7, false, 7, 0, {0xFF, 0xDF, 0x5E, 0x3D, 0x7F, 0xFF, 0x80}};

+ 1 - 3
gfx/img_cc_btn_B1.c

@@ -8,6 +8,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_cc_btn_B1 = { 7, 7, false, 7, 0, {
-	0xFF, 0xBF, 0x7E, 0x7D, 0x7C, 0xFF, 0x80
-}};
+const image_t img_cc_btn_B1 = {7, 7, false, 7, 0, {0xFF, 0xBF, 0x7E, 0x7D, 0x7C, 0xFF, 0x80}};

+ 1 - 3
gfx/img_cc_btn_X1.c

@@ -8,6 +8,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_cc_btn_X1 = { 7, 7, false, 7, 0, {
-	0xFF, 0xFF, 0x5F, 0x7D, 0x7F, 0xFF, 0x80
-}};
+const image_t img_cc_btn_X1 = {7, 7, false, 7, 0, {0xFF, 0xFF, 0x5F, 0x7D, 0x7F, 0xFF, 0x80}};

+ 1 - 3
gfx/img_cc_btn_Y1.c

@@ -8,6 +8,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_cc_btn_Y1 = { 7, 7, false, 7, 0, {
-	0xFF, 0xFF, 0x5E, 0x3F, 0x7D, 0xFF, 0x80
-}};
+const image_t img_cc_btn_Y1 = {7, 7, false, 7, 0, {0xFF, 0xFF, 0x5E, 0x3F, 0x7D, 0xFF, 0x80}};

+ 1 - 3
gfx/img_cc_pad_LR1.c

@@ -6,6 +6,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_cc_pad_LR1 = { 7, 5, false, 5, 0, {
-	0xFF, 0xFF, 0x1F, 0xFF, 0xE0
-}};
+const image_t img_cc_pad_LR1 = {7, 5, false, 5, 0, {0xFF, 0xFF, 0x1F, 0xFF, 0xE0}};

+ 1 - 3
gfx/img_cc_pad_UD1.c

@@ -8,6 +8,4 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_cc_pad_UD1 = { 5, 7, false, 5, 0, {
-	0xFF, 0xF7, 0xBD, 0xFF, 0xE0
-}};
+const image_t img_cc_pad_UD1 = {5, 7, false, 5, 0, {0xFF, 0xF7, 0xBD, 0xFF, 0xE0}};

+ 7 - 3
gfx/img_cc_trg_L1.c

@@ -7,6 +7,10 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_cc_trg_L1 = { 17, 6, false, 13, 0, {
-	0x1F, 0xC9, 0x34, 0x92, 0x64, 0x92, 0x54, 0x92, 0x44, 0x93, 0xFC, 0xFE, 0x00
-}};
+const image_t img_cc_trg_L1 = {
+    17,
+    6,
+    false,
+    13,
+    0,
+    {0x1F, 0xC9, 0x34, 0x92, 0x64, 0x92, 0x54, 0x92, 0x44, 0x93, 0xFC, 0xFE, 0x00}};

+ 19 - 3
gfx/img_cc_trg_L2.c

@@ -7,6 +7,22 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_cc_trg_L2 = { 17, 6, true, 12, 0x01, {  // orig:13, comp:7.69%
-	0x1F, 0xD5, 0x35, 0x55, 0x75, 0x01, 0x04, 0x55, 0x57, 0xFD, 0x7E, 0x00
-}};
+const image_t img_cc_trg_L2 = {
+    17,
+    6,
+    true,
+    12,
+    0x01,
+    {// orig:13, comp:7.69%
+     0x1F,
+     0xD5,
+     0x35,
+     0x55,
+     0x75,
+     0x01,
+     0x04,
+     0x55,
+     0x57,
+     0xFD,
+     0x7E,
+     0x00}};

+ 7 - 3
gfx/img_cc_trg_L3.c

@@ -7,6 +7,10 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_cc_trg_L3 = { 17, 6, false, 13, 0, {
-	0x1F, 0xB6, 0xBB, 0x6D, 0xBB, 0x6D, 0xBB, 0x6D, 0xBB, 0x6F, 0xFB, 0x7E, 0x00
-}};
+const image_t img_cc_trg_L3 = {
+    17,
+    6,
+    false,
+    13,
+    0,
+    {0x1F, 0xB6, 0xBB, 0x6D, 0xBB, 0x6D, 0xBB, 0x6D, 0xBB, 0x6F, 0xFB, 0x7E, 0x00}};

+ 15 - 3
gfx/img_cc_trg_L4.c

@@ -7,6 +7,18 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_cc_trg_L4 = { 17, 6, true, 8, 0x01, {  // orig:13, comp:38.46%
-	0x1F, 0xFF, 0xBF, 0x01, 0x08, 0xFF, 0xFE, 0x00
-}};
+const image_t img_cc_trg_L4 = {
+    17,
+    6,
+    true,
+    8,
+    0x01,
+    {// orig:13, comp:38.46%
+     0x1F,
+     0xFF,
+     0xBF,
+     0x01,
+     0x08,
+     0xFF,
+     0xFE,
+     0x00}};

+ 7 - 3
gfx/img_cc_trg_R1.c

@@ -7,6 +7,10 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_cc_trg_R1 = { 17, 6, false, 13, 0, {
-	0x49, 0xFC, 0x49, 0x25, 0x92, 0x49, 0x24, 0x92, 0x5F, 0xE4, 0x90, 0x0F, 0xE4
-}};
+const image_t img_cc_trg_R1 = {
+    17,
+    6,
+    false,
+    13,
+    0,
+    {0x49, 0xFC, 0x49, 0x25, 0x92, 0x49, 0x24, 0x92, 0x5F, 0xE4, 0x90, 0x0F, 0xE4}};

+ 7 - 3
gfx/img_cc_trg_R2.c

@@ -7,6 +7,10 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_cc_trg_R2 = { 17, 6, false, 13, 0, {
-	0x55, 0xFC, 0x55, 0x55, 0x95, 0x55, 0x75, 0x55, 0x5F, 0xF5, 0x50, 0x0F, 0xD4
-}};
+const image_t img_cc_trg_R2 = {
+    17,
+    6,
+    false,
+    13,
+    0,
+    {0x55, 0xFC, 0x55, 0x55, 0x95, 0x55, 0x75, 0x55, 0x5F, 0xF5, 0x50, 0x0F, 0xD4}};

+ 7 - 3
gfx/img_cc_trg_R3.c

@@ -7,6 +7,10 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_cc_trg_R3 = { 17, 6, false, 13, 0, {
-	0xB6, 0xFC, 0x36, 0xDB, 0xAD, 0xB6, 0xFB, 0x6D, 0xBF, 0xFB, 0x68, 0x0F, 0xD8
-}};
+const image_t img_cc_trg_R3 = {
+    17,
+    6,
+    false,
+    13,
+    0,
+    {0xB6, 0xFC, 0x36, 0xDB, 0xAD, 0xB6, 0xFB, 0x6D, 0xBF, 0xFB, 0x68, 0x0F, 0xD8}};

+ 18 - 3
gfx/img_cc_trg_R4.c

@@ -7,6 +7,21 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_cc_trg_R4 = { 17, 6, true, 11, 0x00, {  // orig:13, comp:15.38%
-	0xFF, 0xFC, 0x7F, 0xFF, 0xBF, 0x00, 0x05, 0xFF, 0xF8, 0x0F, 0xFC
-}};
+const image_t img_cc_trg_R4 = {
+    17,
+    6,
+    true,
+    11,
+    0x00,
+    {// orig:13, comp:15.38%
+     0xFF,
+     0xFC,
+     0x7F,
+     0xFF,
+     0xBF,
+     0x00,
+     0x05,
+     0xFF,
+     0xF8,
+     0x0F,
+     0xFC}};

+ 46 - 38
gfx/img_csLogo_FULL.c

@@ -41,41 +41,49 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_csLogo_FULL = { 124, 40, true, 571, 0x0B, {  // orig:620, comp:7.90%
-	0x3F, 0xFF, 0xFE, 0x10, 0x43, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x0B, 0x05, 0x00, 0x03, 0xFF, 0xFF,
-	0xE3, 0x8E, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC0, 0x0B, 0x05, 0x00, 0xFC, 0x00, 0x07, 0x38, 0xE6,
-	0x1C, 0xE3, 0x80, 0x73, 0x8E, 0x03, 0xBB, 0x80, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x52, 0x8A, 0x71,
-	0xCE, 0x39, 0xC7, 0x38, 0xA0, 0x22, 0x10, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x05, 0x28, 0xA7, 0x14,
-	0xA2, 0x9C, 0x52, 0x8A, 0x03, 0x39, 0x00, 0x00, 0x00, 0x0C, 0xC0, 0x00, 0x52, 0x8A, 0x51, 0x4A,
-	0x29, 0x45, 0x28, 0xA0, 0x20, 0x90, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x07, 0x28, 0xA5, 0x14, 0xA2,
-	0x94, 0x52, 0x8E, 0x03, 0xB9, 0x40, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x02, 0x8A, 0x51, 0xCA, 0xA9,
-	0x47, 0x28, 0x0B, 0x06, 0x00, 0xCC, 0x00, 0x00, 0x38, 0xE5, 0xF0, 0xA2, 0x97, 0xC2, 0x80, 0x06,
-	0xEE, 0x80, 0x00, 0x00, 0x0E, 0xC3, 0x00, 0x01, 0xFC, 0x5F, 0x0A, 0x29, 0x7C, 0x2B, 0xC0, 0x2A,
-	0xAA, 0x00, 0x00, 0x00, 0xDC, 0x30, 0x00, 0x0D, 0x85, 0x1C, 0xAA, 0x94, 0xE2, 0xBE, 0x02, 0xEE,
-	0xE0, 0x00, 0x00, 0x0E, 0xC0, 0x30, 0x00, 0x50, 0x51, 0x4A, 0x29, 0x4A, 0x28, 0xA0, 0x22, 0xA2,
-	0x00, 0x00, 0x00, 0xDC, 0x04, 0x80, 0x05, 0x05, 0x14, 0xA2, 0x94, 0xA2, 0x8A, 0x07, 0x2E, 0x20,
-	0x00, 0x08, 0x0E, 0xC0, 0x48, 0x00, 0x50, 0x51, 0x4A, 0x29, 0x4A, 0x38, 0xA0, 0x00, 0x00, 0x00,
-	0x01, 0x40, 0xDC, 0x03, 0x00, 0x05, 0x07, 0x1C, 0xE3, 0x94, 0xA3, 0x8A, 0x0B, 0x04, 0x00, 0xE2,
-	0x0C, 0xC0, 0x00, 0x00, 0x70, 0x71, 0xCE, 0x39, 0x4A, 0x30, 0xE0, 0x00, 0x00, 0x00, 0x0C, 0x90,
-	0xCC, 0x00, 0x00, 0x07, 0x03, 0xF8, 0x7F, 0x1C, 0xE1, 0xFC, 0x0B, 0x04, 0x00, 0x94, 0x8C, 0xC0,
-	0x00, 0x00, 0xF8, 0x3F, 0x87, 0xF1, 0xC7, 0x1F, 0xC0, 0x00, 0x00, 0x00, 0x72, 0x24, 0xCC, 0x0B,
-	0x0C, 0x00, 0x06, 0x15, 0x2C, 0xC0, 0x0B, 0x0C, 0x00, 0x48, 0x89, 0xCC, 0x00, 0xFE, 0x10, 0x43,
-	0xF8, 0xFF, 0x8F, 0xE1, 0xFC, 0x3F, 0x80, 0x00, 0x39, 0x05, 0x3C, 0xC0, 0x0F, 0xE3, 0x8E, 0x3F,
-	0x8F, 0xF8, 0xFE, 0x1F, 0xC3, 0xF8, 0x00, 0x03, 0x22, 0x27, 0xDC, 0x01, 0x87, 0x38, 0xE6, 0x1C,
-	0xDD, 0x99, 0xF3, 0xFE, 0x61, 0xC0, 0x00, 0x21, 0x50, 0xFE, 0xC0, 0x1C, 0x52, 0x8A, 0x71, 0x41,
-	0x41, 0xC0, 0x3A, 0xE7, 0x14, 0x00, 0x1C, 0x88, 0x9E, 0xDC, 0x01, 0x45, 0x28, 0xA5, 0x14, 0x14,
-	0x14, 0x02, 0xAA, 0x51, 0x40, 0x01, 0x94, 0x13, 0xEE, 0xC0, 0x14, 0x52, 0x8A, 0x51, 0x41, 0x41,
-	0x40, 0x2A, 0xA5, 0x14, 0x00, 0x12, 0x22, 0x7F, 0xDC, 0x01, 0x47, 0x28, 0xA5, 0x1C, 0x14, 0x14,
-	0x02, 0xAA, 0x51, 0xC0, 0x0E, 0x05, 0x0F, 0x3E, 0xC0, 0x1C, 0x02, 0x8A, 0x70, 0x01, 0x41, 0x4E,
-	0x2A, 0xA7, 0x00, 0x00, 0xC0, 0x09, 0xF0, 0xCC, 0x00, 0xFC, 0x38, 0xE3, 0xF0, 0x14, 0x17, 0x82,
-	0xAA, 0x3F, 0x00, 0x09, 0x01, 0x3F, 0x8F, 0xC0, 0x03, 0xE1, 0xFC, 0x0F, 0x81, 0x41, 0x78, 0x2A,
-	0xA0, 0xF8, 0x01, 0x28, 0x27, 0x98, 0xFC, 0x00, 0x07, 0x0D, 0x80, 0x1C, 0x14, 0x14, 0xE2, 0xAA,
-	0x01, 0xC0, 0x28, 0x40, 0xF8, 0x0C, 0xC0, 0x1C, 0x50, 0x50, 0x71, 0x41, 0x41, 0x40, 0x28, 0xA7,
-	0x14, 0x03, 0x02, 0x9F, 0xC0, 0xFC, 0x01, 0x45, 0x05, 0x05, 0x14, 0x14, 0x14, 0x02, 0xAA, 0x51,
-	0x40, 0x32, 0x13, 0xCC, 0x0F, 0xC1, 0x94, 0x50, 0x50, 0x51, 0x41, 0x41, 0x40, 0x28, 0xA5, 0x14,
-	0x01, 0xF2, 0x7C, 0x00, 0xFC, 0x19, 0x47, 0x05, 0x05, 0x1C, 0x14, 0x1C, 0x02, 0x8A, 0x51, 0xC0,
-	0x0E, 0x0F, 0xE0, 0x0F, 0xC1, 0x9C, 0x30, 0x70, 0x70, 0xC1, 0x41, 0x9F, 0x28, 0xA7, 0x0C, 0x00,
-	0x61, 0xE6, 0x00, 0x3F, 0xF8, 0xFE, 0x07, 0x03, 0xF8, 0x1C, 0x0F, 0xE3, 0x8E, 0x3F, 0x80, 0x03,
-	0xBE, 0x00, 0x03, 0xFF, 0x8F, 0xE0, 0xF8, 0x3F, 0x81, 0xC0, 0xFE, 0x38, 0xE3, 0xF8, 0x00, 0x1F,
-	0xF0, 0x0B, 0x0E, 0x00, 0xF3, 0x0B, 0x0E, 0x00, 0x06, 0x00, 0x00
-}};
+const image_t img_csLogo_FULL = {
+    124,
+    40,
+    true,
+    571,
+    0x0B,
+    {// orig:620, comp:7.90%
+     0x3F, 0xFF, 0xFE, 0x10, 0x43, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x0B, 0x05, 0x00, 0x03, 0xFF,
+     0xFF, 0xE3, 0x8E, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC0, 0x0B, 0x05, 0x00, 0xFC, 0x00, 0x07,
+     0x38, 0xE6, 0x1C, 0xE3, 0x80, 0x73, 0x8E, 0x03, 0xBB, 0x80, 0x00, 0x00, 0x0F, 0xC0, 0x00,
+     0x52, 0x8A, 0x71, 0xCE, 0x39, 0xC7, 0x38, 0xA0, 0x22, 0x10, 0x00, 0x00, 0x00, 0xFC, 0x00,
+     0x05, 0x28, 0xA7, 0x14, 0xA2, 0x9C, 0x52, 0x8A, 0x03, 0x39, 0x00, 0x00, 0x00, 0x0C, 0xC0,
+     0x00, 0x52, 0x8A, 0x51, 0x4A, 0x29, 0x45, 0x28, 0xA0, 0x20, 0x90, 0x00, 0x00, 0x00, 0xFC,
+     0x00, 0x07, 0x28, 0xA5, 0x14, 0xA2, 0x94, 0x52, 0x8E, 0x03, 0xB9, 0x40, 0x00, 0x00, 0x0F,
+     0xC0, 0x00, 0x02, 0x8A, 0x51, 0xCA, 0xA9, 0x47, 0x28, 0x0B, 0x06, 0x00, 0xCC, 0x00, 0x00,
+     0x38, 0xE5, 0xF0, 0xA2, 0x97, 0xC2, 0x80, 0x06, 0xEE, 0x80, 0x00, 0x00, 0x0E, 0xC3, 0x00,
+     0x01, 0xFC, 0x5F, 0x0A, 0x29, 0x7C, 0x2B, 0xC0, 0x2A, 0xAA, 0x00, 0x00, 0x00, 0xDC, 0x30,
+     0x00, 0x0D, 0x85, 0x1C, 0xAA, 0x94, 0xE2, 0xBE, 0x02, 0xEE, 0xE0, 0x00, 0x00, 0x0E, 0xC0,
+     0x30, 0x00, 0x50, 0x51, 0x4A, 0x29, 0x4A, 0x28, 0xA0, 0x22, 0xA2, 0x00, 0x00, 0x00, 0xDC,
+     0x04, 0x80, 0x05, 0x05, 0x14, 0xA2, 0x94, 0xA2, 0x8A, 0x07, 0x2E, 0x20, 0x00, 0x08, 0x0E,
+     0xC0, 0x48, 0x00, 0x50, 0x51, 0x4A, 0x29, 0x4A, 0x38, 0xA0, 0x00, 0x00, 0x00, 0x01, 0x40,
+     0xDC, 0x03, 0x00, 0x05, 0x07, 0x1C, 0xE3, 0x94, 0xA3, 0x8A, 0x0B, 0x04, 0x00, 0xE2, 0x0C,
+     0xC0, 0x00, 0x00, 0x70, 0x71, 0xCE, 0x39, 0x4A, 0x30, 0xE0, 0x00, 0x00, 0x00, 0x0C, 0x90,
+     0xCC, 0x00, 0x00, 0x07, 0x03, 0xF8, 0x7F, 0x1C, 0xE1, 0xFC, 0x0B, 0x04, 0x00, 0x94, 0x8C,
+     0xC0, 0x00, 0x00, 0xF8, 0x3F, 0x87, 0xF1, 0xC7, 0x1F, 0xC0, 0x00, 0x00, 0x00, 0x72, 0x24,
+     0xCC, 0x0B, 0x0C, 0x00, 0x06, 0x15, 0x2C, 0xC0, 0x0B, 0x0C, 0x00, 0x48, 0x89, 0xCC, 0x00,
+     0xFE, 0x10, 0x43, 0xF8, 0xFF, 0x8F, 0xE1, 0xFC, 0x3F, 0x80, 0x00, 0x39, 0x05, 0x3C, 0xC0,
+     0x0F, 0xE3, 0x8E, 0x3F, 0x8F, 0xF8, 0xFE, 0x1F, 0xC3, 0xF8, 0x00, 0x03, 0x22, 0x27, 0xDC,
+     0x01, 0x87, 0x38, 0xE6, 0x1C, 0xDD, 0x99, 0xF3, 0xFE, 0x61, 0xC0, 0x00, 0x21, 0x50, 0xFE,
+     0xC0, 0x1C, 0x52, 0x8A, 0x71, 0x41, 0x41, 0xC0, 0x3A, 0xE7, 0x14, 0x00, 0x1C, 0x88, 0x9E,
+     0xDC, 0x01, 0x45, 0x28, 0xA5, 0x14, 0x14, 0x14, 0x02, 0xAA, 0x51, 0x40, 0x01, 0x94, 0x13,
+     0xEE, 0xC0, 0x14, 0x52, 0x8A, 0x51, 0x41, 0x41, 0x40, 0x2A, 0xA5, 0x14, 0x00, 0x12, 0x22,
+     0x7F, 0xDC, 0x01, 0x47, 0x28, 0xA5, 0x1C, 0x14, 0x14, 0x02, 0xAA, 0x51, 0xC0, 0x0E, 0x05,
+     0x0F, 0x3E, 0xC0, 0x1C, 0x02, 0x8A, 0x70, 0x01, 0x41, 0x4E, 0x2A, 0xA7, 0x00, 0x00, 0xC0,
+     0x09, 0xF0, 0xCC, 0x00, 0xFC, 0x38, 0xE3, 0xF0, 0x14, 0x17, 0x82, 0xAA, 0x3F, 0x00, 0x09,
+     0x01, 0x3F, 0x8F, 0xC0, 0x03, 0xE1, 0xFC, 0x0F, 0x81, 0x41, 0x78, 0x2A, 0xA0, 0xF8, 0x01,
+     0x28, 0x27, 0x98, 0xFC, 0x00, 0x07, 0x0D, 0x80, 0x1C, 0x14, 0x14, 0xE2, 0xAA, 0x01, 0xC0,
+     0x28, 0x40, 0xF8, 0x0C, 0xC0, 0x1C, 0x50, 0x50, 0x71, 0x41, 0x41, 0x40, 0x28, 0xA7, 0x14,
+     0x03, 0x02, 0x9F, 0xC0, 0xFC, 0x01, 0x45, 0x05, 0x05, 0x14, 0x14, 0x14, 0x02, 0xAA, 0x51,
+     0x40, 0x32, 0x13, 0xCC, 0x0F, 0xC1, 0x94, 0x50, 0x50, 0x51, 0x41, 0x41, 0x40, 0x28, 0xA5,
+     0x14, 0x01, 0xF2, 0x7C, 0x00, 0xFC, 0x19, 0x47, 0x05, 0x05, 0x1C, 0x14, 0x1C, 0x02, 0x8A,
+     0x51, 0xC0, 0x0E, 0x0F, 0xE0, 0x0F, 0xC1, 0x9C, 0x30, 0x70, 0x70, 0xC1, 0x41, 0x9F, 0x28,
+     0xA7, 0x0C, 0x00, 0x61, 0xE6, 0x00, 0x3F, 0xF8, 0xFE, 0x07, 0x03, 0xF8, 0x1C, 0x0F, 0xE3,
+     0x8E, 0x3F, 0x80, 0x03, 0xBE, 0x00, 0x03, 0xFF, 0x8F, 0xE0, 0xF8, 0x3F, 0x81, 0xC0, 0xFE,
+     0x38, 0xE3, 0xF8, 0x00, 0x1F, 0xF0, 0x0B, 0x0E, 0x00, 0xF3, 0x0B, 0x0E, 0x00, 0x06, 0x00,
+     0x00}};

+ 7 - 3
gfx/img_csLogo_Small.c

@@ -13,6 +13,10 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_csLogo_Small = { 9, 12, false, 14, 0, {
-	0xFF, 0xFF, 0xF0, 0x78, 0x3D, 0x06, 0x3F, 0x13, 0x88, 0xC7, 0xE0, 0x7D, 0x3E, 0xF0
-}};
+const image_t img_csLogo_Small = {
+    9,
+    12,
+    false,
+    14,
+    0,
+    {0xFF, 0xFF, 0xF0, 0x78, 0x3D, 0x06, 0x3F, 0x13, 0x88, 0xC7, 0xE0, 0x7D, 0x3E, 0xF0}};

+ 7 - 3
gfx/img_ecp_SCL.c

@@ -8,6 +8,10 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_ecp_SCL = { 16, 7, false, 14, 0, {
-	0x3F, 0x8F, 0x3F, 0x8F, 0x31, 0x8C, 0x31, 0x8C, 0x31, 0x8C, 0xF1, 0xFC, 0xF1, 0xFC
-}};
+const image_t img_ecp_SCL = {
+    16,
+    7,
+    false,
+    14,
+    0,
+    {0x3F, 0x8F, 0x3F, 0x8F, 0x31, 0x8C, 0x31, 0x8C, 0x31, 0x8C, 0xF1, 0xFC, 0xF1, 0xFC}};

+ 4 - 4
gfx/img_ecp_SDA.c

@@ -13,7 +13,7 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_ecp_SDA = { 17, 12, false, 26, 0, {
-	0x10, 0x00, 0x18, 0x00, 0x18, 0x00, 0x1F, 0xFC, 0x0F, 0xFE, 0x43, 0x00, 0x30, 0xC0, 0x0C, 0x27,
-	0xFF, 0x03, 0xFF, 0x80, 0x01, 0x80, 0x01, 0x80, 0x00, 0x80
-}};
+const image_t img_ecp_SDA = {17, 12, false, 26, 0, {0x10, 0x00, 0x18, 0x00, 0x18, 0x00, 0x1F,
+                                                    0xFC, 0x0F, 0xFE, 0x43, 0x00, 0x30, 0xC0,
+                                                    0x0C, 0x27, 0xFF, 0x03, 0xFF, 0x80, 0x01,
+                                                    0x80, 0x01, 0x80, 0x00, 0x80}};

+ 27 - 21
gfx/img_ecp_port.c

@@ -43,24 +43,30 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_ecp_port = { 69, 42, true, 290, 0x04, {  // orig:363, comp:20.11%
-	0x00, 0x2A, 0x04, 0x06, 0xAA, 0xA8, 0x02, 0x04, 0x07, 0xAA, 0x80, 0x2A, 0x04, 0x07, 0xAA, 0x02,
-	0x04, 0x07, 0xAA, 0xA0, 0x2A, 0x04, 0x07, 0xAA, 0x82, 0x04, 0x07, 0xAA, 0xA8, 0x2A, 0x04, 0x07,
-	0xAA, 0xA3, 0x04, 0x07, 0xFF, 0xAA, 0x1F, 0x04, 0x06, 0xFF, 0xFE, 0xA8, 0xC0, 0x04, 0x06, 0x00,
-	0x6A, 0x86, 0x04, 0x06, 0x00, 0x03, 0xAA, 0x30, 0x04, 0x06, 0x00, 0x1A, 0xA1, 0x80, 0x04, 0x06,
-	0x00, 0xEA, 0x8C, 0x04, 0x06, 0x00, 0x06, 0xA8, 0x61, 0x04, 0x05, 0xFF, 0xFC, 0x3A, 0xA3, 0x0F,
-	0x04, 0x05, 0xFF, 0xE1, 0xAA, 0x18, 0x61, 0x83, 0x0C, 0x18, 0x60, 0xC3, 0x0E, 0xA8, 0xC3, 0x0C,
-	0x18, 0x60, 0xC3, 0x06, 0x18, 0x6A, 0x86, 0x18, 0x7F, 0xC3, 0xFE, 0x1F, 0xF0, 0xC3, 0xAA, 0x30,
-	0xC3, 0xFE, 0x1F, 0xF0, 0xFF, 0x86, 0x1A, 0xA1, 0x86, 0x04, 0x05, 0x00, 0x30, 0xEA, 0xBC, 0x30,
-	0x04, 0x04, 0x00, 0x01, 0x86, 0xFB, 0xE1, 0x80, 0x04, 0x04, 0x00, 0x0C, 0x3F, 0xFF, 0x0C, 0x04,
-	0x05, 0x00, 0x61, 0xBE, 0x78, 0x60, 0x04, 0x04, 0x00, 0x03, 0x0F, 0xF8, 0xC3, 0x0F, 0xF8, 0x00,
-	0x03, 0xFE, 0x18, 0x6A, 0x86, 0x18, 0x7F, 0xC0, 0x00, 0x1F, 0xF0, 0xC3, 0xAA, 0x30, 0xC3, 0x06,
-	0x1F, 0xF0, 0xC1, 0x86, 0x1A, 0xA1, 0x86, 0x18, 0x30, 0x80, 0x86, 0x0C, 0x30, 0xEA, 0x8C, 0x3F,
-	0x04, 0x05, 0xFF, 0x86, 0xA8, 0x61, 0x04, 0x05, 0xFF, 0xFC, 0x3A, 0xA3, 0x04, 0x06, 0x00, 0x01,
-	0xAA, 0x18, 0x04, 0x06, 0x00, 0x0E, 0xA8, 0xC0, 0x04, 0x06, 0x00, 0x6A, 0x86, 0x00, 0x00, 0x7F,
-	0xFF, 0xF0, 0x00, 0x03, 0xAA, 0x30, 0x00, 0x03, 0xFF, 0xFF, 0x80, 0x00, 0x1A, 0xA1, 0x80, 0x00,
-	0x1A, 0xA0, 0x0C, 0x00, 0x00, 0xEA, 0x0C, 0x00, 0x00, 0xEA, 0x00, 0x60, 0x00, 0x06, 0xA0, 0x60,
-	0x00, 0x06, 0xA0, 0x03, 0x00, 0x00, 0x3A, 0x03, 0x00, 0x00, 0x3A, 0x00, 0x18, 0x00, 0x01, 0xA0,
-	0x1F, 0xFF, 0xFF, 0xA0, 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xFF,
-	0xE0, 0x00
-}};
+const image_t img_ecp_port = {
+    69,
+    42,
+    true,
+    290,
+    0x04,
+    {// orig:363, comp:20.11%
+     0x00, 0x2A, 0x04, 0x06, 0xAA, 0xA8, 0x02, 0x04, 0x07, 0xAA, 0x80, 0x2A, 0x04, 0x07, 0xAA,
+     0x02, 0x04, 0x07, 0xAA, 0xA0, 0x2A, 0x04, 0x07, 0xAA, 0x82, 0x04, 0x07, 0xAA, 0xA8, 0x2A,
+     0x04, 0x07, 0xAA, 0xA3, 0x04, 0x07, 0xFF, 0xAA, 0x1F, 0x04, 0x06, 0xFF, 0xFE, 0xA8, 0xC0,
+     0x04, 0x06, 0x00, 0x6A, 0x86, 0x04, 0x06, 0x00, 0x03, 0xAA, 0x30, 0x04, 0x06, 0x00, 0x1A,
+     0xA1, 0x80, 0x04, 0x06, 0x00, 0xEA, 0x8C, 0x04, 0x06, 0x00, 0x06, 0xA8, 0x61, 0x04, 0x05,
+     0xFF, 0xFC, 0x3A, 0xA3, 0x0F, 0x04, 0x05, 0xFF, 0xE1, 0xAA, 0x18, 0x61, 0x83, 0x0C, 0x18,
+     0x60, 0xC3, 0x0E, 0xA8, 0xC3, 0x0C, 0x18, 0x60, 0xC3, 0x06, 0x18, 0x6A, 0x86, 0x18, 0x7F,
+     0xC3, 0xFE, 0x1F, 0xF0, 0xC3, 0xAA, 0x30, 0xC3, 0xFE, 0x1F, 0xF0, 0xFF, 0x86, 0x1A, 0xA1,
+     0x86, 0x04, 0x05, 0x00, 0x30, 0xEA, 0xBC, 0x30, 0x04, 0x04, 0x00, 0x01, 0x86, 0xFB, 0xE1,
+     0x80, 0x04, 0x04, 0x00, 0x0C, 0x3F, 0xFF, 0x0C, 0x04, 0x05, 0x00, 0x61, 0xBE, 0x78, 0x60,
+     0x04, 0x04, 0x00, 0x03, 0x0F, 0xF8, 0xC3, 0x0F, 0xF8, 0x00, 0x03, 0xFE, 0x18, 0x6A, 0x86,
+     0x18, 0x7F, 0xC0, 0x00, 0x1F, 0xF0, 0xC3, 0xAA, 0x30, 0xC3, 0x06, 0x1F, 0xF0, 0xC1, 0x86,
+     0x1A, 0xA1, 0x86, 0x18, 0x30, 0x80, 0x86, 0x0C, 0x30, 0xEA, 0x8C, 0x3F, 0x04, 0x05, 0xFF,
+     0x86, 0xA8, 0x61, 0x04, 0x05, 0xFF, 0xFC, 0x3A, 0xA3, 0x04, 0x06, 0x00, 0x01, 0xAA, 0x18,
+     0x04, 0x06, 0x00, 0x0E, 0xA8, 0xC0, 0x04, 0x06, 0x00, 0x6A, 0x86, 0x00, 0x00, 0x7F, 0xFF,
+     0xF0, 0x00, 0x03, 0xAA, 0x30, 0x00, 0x03, 0xFF, 0xFF, 0x80, 0x00, 0x1A, 0xA1, 0x80, 0x00,
+     0x1A, 0xA0, 0x0C, 0x00, 0x00, 0xEA, 0x0C, 0x00, 0x00, 0xEA, 0x00, 0x60, 0x00, 0x06, 0xA0,
+     0x60, 0x00, 0x06, 0xA0, 0x03, 0x00, 0x00, 0x3A, 0x03, 0x00, 0x00, 0x3A, 0x00, 0x18, 0x00,
+     0x01, 0xA0, 0x1F, 0xFF, 0xFF, 0xA0, 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xFE, 0x00,
+     0x07, 0xFF, 0xFF, 0xE0, 0x00}};

+ 2 - 3
gfx/img_key_Back.c

@@ -10,6 +10,5 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_key_Back = { 9, 9, false, 11, 0, {
-	0x7F, 0x7F, 0xFB, 0xF8, 0x7E, 0xDF, 0xEF, 0xCF, 0xFF, 0x3F, 0x00
-}};
+const image_t img_key_Back =
+    {9, 9, false, 11, 0, {0x7F, 0x7F, 0xFB, 0xF8, 0x7E, 0xDF, 0xEF, 0xCF, 0xFF, 0x3F, 0x00}};

+ 2 - 3
gfx/img_key_D.c

@@ -9,6 +9,5 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_key_D = { 9, 8, false, 9, 0, {
-	0x7F, 0x7F, 0xFF, 0xF8, 0x3E, 0x3F, 0xBF, 0xFE, 0xFE
-}};
+const image_t img_key_D =
+    {9, 8, false, 9, 0, {0x7F, 0x7F, 0xFF, 0xF8, 0x3E, 0x3F, 0xBF, 0xFE, 0xFE}};

+ 2 - 3
gfx/img_key_L.c

@@ -10,6 +10,5 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_key_L = { 8, 9, false, 9, 0, {
-	0x7E, 0xFF, 0xF7, 0xE7, 0xC7, 0xE7, 0xF7, 0xFF, 0x7E
-}};
+const image_t img_key_L =
+    {8, 9, false, 9, 0, {0x7E, 0xFF, 0xF7, 0xE7, 0xC7, 0xE7, 0xF7, 0xFF, 0x7E}};

+ 2 - 3
gfx/img_key_OK.c

@@ -10,6 +10,5 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_key_OK = { 9, 9, false, 11, 0, {
-	0x7F, 0x7F, 0xF8, 0xF8, 0x3C, 0x1E, 0x0F, 0x8F, 0xFF, 0x3F, 0x00
-}};
+const image_t img_key_OK =
+    {9, 9, false, 11, 0, {0x7F, 0x7F, 0xF8, 0xF8, 0x3C, 0x1E, 0x0F, 0x8F, 0xFF, 0x3F, 0x00}};

+ 2 - 3
gfx/img_key_OKi.c

@@ -10,6 +10,5 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_key_OKi = { 9, 9, false, 11, 0, {
-	0x7F, 0x60, 0xE7, 0x37, 0xDB, 0xED, 0xF6, 0x73, 0x83, 0x7F, 0x00
-}};
+const image_t img_key_OKi =
+    {9, 9, false, 11, 0, {0x7F, 0x60, 0xE7, 0x37, 0xDB, 0xED, 0xF6, 0x73, 0x83, 0x7F, 0x00}};

+ 2 - 3
gfx/img_key_R.c

@@ -10,6 +10,5 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_key_R = { 8, 9, false, 9, 0, {
-	0x7E, 0xFF, 0xEF, 0xE7, 0xE3, 0xE7, 0xEF, 0xFF, 0x7E
-}};
+const image_t img_key_R =
+    {8, 9, false, 9, 0, {0x7E, 0xFF, 0xEF, 0xE7, 0xE3, 0xE7, 0xEF, 0xFF, 0x7E}};

+ 2 - 3
gfx/img_key_U.c

@@ -9,6 +9,5 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_key_U = { 9, 8, false, 9, 0, {
-	0x7F, 0x7F, 0xFD, 0xFC, 0x7C, 0x1F, 0xFF, 0xFE, 0xFE
-}};
+const image_t img_key_U =
+    {9, 8, false, 9, 0, {0x7F, 0x7F, 0xFD, 0xFC, 0x7C, 0x1F, 0xFF, 0xFE, 0xFE}};

+ 2 - 3
gfx/img_key_Ui.c

@@ -9,6 +9,5 @@
 
 
 #include "images.h"
 #include "images.h"
 
 
-const image_t  img_key_Ui = { 9, 8, false, 9, 0, {
-	0x7F, 0x60, 0xE2, 0x33, 0x9B, 0xEC, 0x07, 0x06, 0xFE
-}};
+const image_t img_key_Ui =
+    {9, 8, false, 9, 0, {0x7F, 0x60, 0xE2, 0x33, 0x9B, 0xEC, 0x07, 0x06, 0xFE}};

+ 74 - 62
i2c_workaround.h

@@ -40,62 +40,70 @@ void  furi_hal_i2c_release (FuriHalI2cBusHandle* handle)
 
 
 */
 */
 
 
-#ifndef  I2C_WORKAROUND_H_
-#define  I2C_WORKAROUND_H_
+#ifndef I2C_WORKAROUND_H_
+#define I2C_WORKAROUND_H_
 
 
-#include  <furi_hal.h>
+#include <furi_hal.h>
 
 
 #define ENABLE_WORKAROUND 1
 #define ENABLE_WORKAROUND 1
 
 
 #if ENABLE_WORKAROUND == 1
 #if ENABLE_WORKAROUND == 1
-	//+============================================================================ ========================================
-	static inline
-	bool furi_hal_Wi2c_is_device_ready (FuriHalI2cBusHandle* const bus,  const uint8_t addr,  const uint32_t tmo)
-	{
-		furi_hal_i2c_acquire(bus);
-		bool rv = furi_hal_i2c_is_device_ready(bus, addr, tmo);
-		furi_hal_i2c_release(bus);
-		return rv;
-	}
-
-	//+============================================================================
-	static inline
-	bool furi_hal_Wi2c_tx ( FuriHalI2cBusHandle* const bus,  const uint8_t addr,
-	                        const void* buf,  const size_t len,  const uint32_t tmo )
-	{
-		furi_hal_i2c_acquire(bus);
-		bool rv = furi_hal_i2c_tx(bus, addr, buf, len, tmo);
-		furi_hal_i2c_release(bus);
-		return rv;
-	}
-
-	//+============================================================================
-	static inline
-	bool furi_hal_Wi2c_rx ( FuriHalI2cBusHandle* const bus,  const uint8_t addr,
-	                        void* buf,  const size_t len,  const uint32_t tmo )
-	{
-		furi_hal_i2c_acquire(bus);
-		bool rv = furi_hal_i2c_rx(bus, addr, buf, len, tmo);
-		furi_hal_i2c_release(bus);
-		return rv;
-	}
-
-	//+============================================================================
-	static inline
-	bool furi_hal_Wi2c_trx ( FuriHalI2cBusHandle* const bus,  const uint8_t addr,
-	                         const void* tx,  const size_t txlen,
-	                               void* rx,  const size_t rxlen,  const uint32_t tmo )
-	{
-		bool    rv = furi_hal_Wi2c_tx(bus, addr, tx, txlen, tmo);
-		if (rv) rv = furi_hal_Wi2c_rx(bus, addr, rx, rxlen, tmo);
-		return rv;
-	}
-
-	//----------------------------------------------------------------------------- ----------------------------------------
-#	define  furi_hal_i2c_is_device_ready(...)  furi_hal_Wi2c_is_device_ready(__VA_ARGS__)
-#	define  furi_hal_i2c_tx(...)               furi_hal_Wi2c_tx(__VA_ARGS__)
-#	define  furi_hal_i2c_rx(...)               furi_hal_Wi2c_rx(__VA_ARGS__)
-#	define  furi_hal_i2c_trx(...)              furi_hal_Wi2c_trx(__VA_ARGS__)
+//+============================================================================ ========================================
+static inline bool furi_hal_Wi2c_is_device_ready(
+    FuriHalI2cBusHandle* const bus,
+    const uint8_t addr,
+    const uint32_t tmo) {
+    furi_hal_i2c_acquire(bus);
+    bool rv = furi_hal_i2c_is_device_ready(bus, addr, tmo);
+    furi_hal_i2c_release(bus);
+    return rv;
+}
+
+//+============================================================================
+static inline bool furi_hal_Wi2c_tx(
+    FuriHalI2cBusHandle* const bus,
+    const uint8_t addr,
+    const void* buf,
+    const size_t len,
+    const uint32_t tmo) {
+    furi_hal_i2c_acquire(bus);
+    bool rv = furi_hal_i2c_tx(bus, addr, buf, len, tmo);
+    furi_hal_i2c_release(bus);
+    return rv;
+}
+
+//+============================================================================
+static inline bool furi_hal_Wi2c_rx(
+    FuriHalI2cBusHandle* const bus,
+    const uint8_t addr,
+    void* buf,
+    const size_t len,
+    const uint32_t tmo) {
+    furi_hal_i2c_acquire(bus);
+    bool rv = furi_hal_i2c_rx(bus, addr, buf, len, tmo);
+    furi_hal_i2c_release(bus);
+    return rv;
+}
+
+//+============================================================================
+static inline bool furi_hal_Wi2c_trx(
+    FuriHalI2cBusHandle* const bus,
+    const uint8_t addr,
+    const void* tx,
+    const size_t txlen,
+    void* rx,
+    const size_t rxlen,
+    const uint32_t tmo) {
+    bool rv = furi_hal_Wi2c_tx(bus, addr, tx, txlen, tmo);
+    if(rv) rv = furi_hal_Wi2c_rx(bus, addr, rx, rxlen, tmo);
+    return rv;
+}
+
+//----------------------------------------------------------------------------- ----------------------------------------
+#define furi_hal_i2c_is_device_ready(...) furi_hal_Wi2c_is_device_ready(__VA_ARGS__)
+#define furi_hal_i2c_tx(...) furi_hal_Wi2c_tx(__VA_ARGS__)
+#define furi_hal_i2c_rx(...) furi_hal_Wi2c_rx(__VA_ARGS__)
+#define furi_hal_i2c_trx(...) furi_hal_Wi2c_trx(__VA_ARGS__)
 
 
 #endif //ENABLE_WORKAROUND
 #endif //ENABLE_WORKAROUND
 
 
@@ -103,17 +111,21 @@ void  furi_hal_i2c_release (FuriHalI2cBusHandle* handle)
 // Some devices take a moment to respond to read requests
 // Some devices take a moment to respond to read requests
 // The puts a delay between the address being set and the data being read
 // The puts a delay between the address being set and the data being read
 //
 //
-static inline
-bool furi_hal_i2c_trxd ( FuriHalI2cBusHandle* const bus,  const uint8_t addr,
-                          const void* tx,  const size_t txlen,
-                                void* rx,  const size_t rxlen,  const uint32_t tmo,  const uint32_t us )
-{
-	bool  rv = furi_hal_i2c_tx(bus, addr, tx, txlen, tmo);
-	if (rv) {
-		furi_delay_us(us);
-		rv = furi_hal_i2c_rx(bus, addr, rx, rxlen, tmo);
-	}
-	return rv;
+static inline bool furi_hal_i2c_trxd(
+    FuriHalI2cBusHandle* const bus,
+    const uint8_t addr,
+    const void* tx,
+    const size_t txlen,
+    void* rx,
+    const size_t rxlen,
+    const uint32_t tmo,
+    const uint32_t us) {
+    bool rv = furi_hal_i2c_tx(bus, addr, tx, txlen, tmo);
+    if(rv) {
+        furi_delay_us(us);
+        rv = furi_hal_i2c_rx(bus, addr, rx, rxlen, tmo);
+    }
+    return rv;
 }
 }
 
 
 #endif //I2C_WORKAROUND_H_
 #endif //I2C_WORKAROUND_H_

+ 426 - 434
wii_anal.c

@@ -3,34 +3,34 @@
 //
 //
 
 
 // System libs
 // System libs
-#include  <stdlib.h>         // malloc
-#include  <stdint.h>         // uint32_t
-#include  <stdarg.h>         // __VA_ARGS__
-#include  <stdio.h>
-#include  <ctype.h>
+#include <stdlib.h> // malloc
+#include <stdint.h> // uint32_t
+#include <stdarg.h> // __VA_ARGS__
+#include <stdio.h>
+#include <ctype.h>
 
 
 // FlipperZero libs
 // FlipperZero libs
-#include  <furi.h>           // Core API
-#include  <gui/gui.h>        // GUI (screen/keyboard) API
-#include  <input/input.h>    // GUI Input extensions
-#include  <notification/notification_messages.h>
+#include <furi.h> // Core API
+#include <gui/gui.h> // GUI (screen/keyboard) API
+#include <input/input.h> // GUI Input extensions
+#include <notification/notification_messages.h>
 
 
 // Do this first!
 // Do this first!
 #define ERR_C_ // Do this in precisely ONE file
 #define ERR_C_ // Do this in precisely ONE file
-#include  "err.h"            // Error numbers & messages
+#include "err.h" // Error numbers & messages
 
 
-#include  "bc_logging.h"
+#include "bc_logging.h"
 
 
 // Local headers
 // Local headers
-#include  "wii_anal.h"       // Various enums and struct declarations
-#include  "wii_i2c.h"        // Wii i2c functions
-#include  "wii_ec.h"         // Wii Extension Controller functions (eg. draw)
-#include  "wii_anal_keys.h"  // key mappings
-#include  "gfx/images.h"     // Images
-#include  "wii_anal_lcd.h"   // Drawing functions
-#include  "wii_anal_ec.h"    // Wii controller events
+#include "wii_anal.h" // Various enums and struct declarations
+#include "wii_i2c.h" // Wii i2c functions
+#include "wii_ec.h" // Wii Extension Controller functions (eg. draw)
+#include "wii_anal_keys.h" // key mappings
+#include "gfx/images.h" // Images
+#include "wii_anal_lcd.h" // Drawing functions
+#include "wii_anal_ec.h" // Wii controller events
 
 
-#include  "wii_anal_ver.h"   // Version number
+#include "wii_anal_ver.h" // Version number
 
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 //   OOOOO    // SSSSS       CCCCC  AAA  L     L     BBBB   AAA   CCCC K   K  SSSSS
 //   OOOOO    // SSSSS       CCCCC  AAA  L     L     BBBB   AAA   CCCC K   K  SSSSS
@@ -44,50 +44,42 @@
 // OS Callback : Timer tick
 // OS Callback : Timer tick
 // We register this function to be called when the OS signals a timer 'tick' event
 // We register this function to be called when the OS signals a timer 'tick' event
 //
 //
-static
-void  cbTimer (FuriMessageQueue* queue)
-{
-	ENTER;
-	furi_assert(queue);
+static void cbTimer(FuriMessageQueue* queue) {
+    ENTER;
+    furi_assert(queue);
 
 
-	eventMsg_t  message = {.id = EVID_TICK};
-	furi_message_queue_put(queue, &message, 0);
+    eventMsg_t message = {.id = EVID_TICK};
+    furi_message_queue_put(queue, &message, 0);
 
 
-	LEAVE;
-	return;
+    LEAVE;
+    return;
 }
 }
 
 
 //+============================================================================ ========================================
 //+============================================================================ ========================================
 // OS Callback : Keypress
 // OS Callback : Keypress
 // We register this function to be called when the OS detects a keypress
 // We register this function to be called when the OS detects a keypress
 //
 //
-static
-void  cbInput (InputEvent* event,  FuriMessageQueue* queue)
-{
-	ENTER;
-	furi_assert(queue);
-	furi_assert(event);
-
-	// Put an "input" event message on the message queue
-	eventMsg_t  message = {.id = EVID_KEY,  .input = *event};
-	furi_message_queue_put(queue, &message, FuriWaitForever);
-
-	LEAVE;
-	return;
+static void cbInput(InputEvent* event, FuriMessageQueue* queue) {
+    ENTER;
+    furi_assert(queue);
+    furi_assert(event);
+
+    // Put an "input" event message on the message queue
+    eventMsg_t message = {.id = EVID_KEY, .input = *event};
+    furi_message_queue_put(queue, &message, FuriWaitForever);
+
+    LEAVE;
+    return;
 }
 }
 
 
 //+============================================================================
 //+============================================================================
 // Show version number
 // Show version number
 //
 //
-static
-void  showVer (Canvas* const canvas)
-{
-	show(canvas,  0,59, &img_3x5_v, SHOW_SET_BLK);
-	show(canvas,  4,59, VER_MAJ,    SHOW_SET_BLK);
-	canvas_draw_frame(canvas, 8,62, 2,2);
-	show(canvas, 11,59, VER_MIN,   SHOW_SET_BLK);
-	canvas_draw_frame(canvas, 15,62, 2,2);
-	show(canvas, 18,59, VER_SUB,   SHOW_SET_BLK);
+static void showVer(Canvas* const canvas) {
+    show(canvas, 0, 59, &img_3x5_v, SHOW_SET_BLK);
+    show(canvas, 4, 59, VER_MAJ, SHOW_SET_BLK);
+    canvas_draw_frame(canvas, 8, 62, 2, 2);
+    show(canvas, 11, 59, VER_MIN, SHOW_SET_BLK);
 }
 }
 
 
 //+============================================================================
 //+============================================================================
@@ -97,105 +89,102 @@ void  showVer (Canvas* const canvas)
 // We actually instruct the OS to perform this request, after we update the interface
 // We actually instruct the OS to perform this request, after we update the interface
 // I guess it's possible that this instruction may able be issued by other threads !?
 // I guess it's possible that this instruction may able be issued by other threads !?
 //
 //
-static
-void  cbDraw (Canvas* const canvas,  void* ctx)
-{
-	ENTER;
-	furi_assert(canvas);
-	furi_assert(ctx);
-
-	state_t*  state = ctx;
+static void cbDraw(Canvas* const canvas, void* ctx) {
+    ENTER;
+    furi_assert(canvas);
+    furi_assert(ctx);
 
 
-	// Try to acquire the mutex for the plugin state variables, timeout = 25mS
-	if (furi_mutex_acquire(state->mutex, 25) != FuriStatusOk)  return ;
+    // Try to acquire the mutex for the plugin state variables, timeout = 25mS
+    state_t* state = ctx;
+    furi_mutex_acquire(state->mutex, FuriWaitForever);
 
 
-	switch (state->scene) {
-		//---------------------------------------------------------------------
-		case SCENE_SPLASH:
-			show(canvas, 2,0, &img_csLogo_FULL, SHOW_SET_BLK);
+    switch(state->scene) {
+    //---------------------------------------------------------------------
+    case SCENE_SPLASH:
+        show(canvas, 2, 0, &img_csLogo_FULL, SHOW_SET_BLK);
 
 
-			canvas_set_font(canvas, FontSecondary);
-			canvas_draw_str_aligned(canvas, 64,43, AlignCenter, AlignTop, "Wii Extension Controller");
-			canvas_draw_str_aligned(canvas, 64,55, AlignCenter, AlignTop, "Protocol Analyser");
+        canvas_set_font(canvas, FontSecondary);
+        canvas_draw_str_aligned(canvas, 64, 43, AlignCenter, AlignTop, "Wii Extension Controller");
+        canvas_draw_str_aligned(canvas, 64, 55, AlignCenter, AlignTop, "Protocol Analyser");
 
 
-			showVer(canvas);
+        showVer(canvas);
 
 
-			break;
+        break;
 
 
-		//---------------------------------------------------------------------
-		case SCENE_RIP:
-			show(canvas, 0,0, &img_RIP, SHOW_SET_BLK);
-			break;
+    //---------------------------------------------------------------------
+    case SCENE_RIP:
+        show(canvas, 0, 0, &img_RIP, SHOW_SET_BLK);
+        break;
 
 
-		//---------------------------------------------------------------------
-		case SCENE_WAIT:
-#			define  xo  2
+    //---------------------------------------------------------------------
+    case SCENE_WAIT:
+#define xo 2
 
 
-			show(canvas,   3+xo,10, &img_ecp_port, SHOW_SET_BLK);
+        show(canvas, 3 + xo, 10, &img_ecp_port, SHOW_SET_BLK);
 
 
-			BOX_TL(22+xo, 6, 82+xo,23);  // 3v3
-			BOX_TL(48+xo,21, 82+xo,23);  // C1
-			BOX_BL(22+xo,41, 82+xo,58);  // C0
-			BOX_BL(48+xo,41, 82+xo,44);  // Gnd
+        BOX_TL(22 + xo, 6, 82 + xo, 23); // 3v3
+        BOX_TL(48 + xo, 21, 82 + xo, 23); // C1
+        BOX_BL(22 + xo, 41, 82 + xo, 58); // C0
+        BOX_BL(48 + xo, 41, 82 + xo, 44); // Gnd
 
 
-			show(canvas,  90+xo, 3, &img_6x8_3,    SHOW_SET_BLK);  // 3v3
-			show(canvas,  97+xo, 3, &img_6x8_v,    SHOW_SET_BLK);
-			show(canvas, 104+xo, 3, &img_6x8_3,    SHOW_SET_BLK);
+        show(canvas, 90 + xo, 3, &img_6x8_3, SHOW_SET_BLK); // 3v3
+        show(canvas, 97 + xo, 3, &img_6x8_v, SHOW_SET_BLK);
+        show(canvas, 104 + xo, 3, &img_6x8_3, SHOW_SET_BLK);
 
 
-			show(canvas,  90+xo,18, &img_6x8_C,    SHOW_SET_BLK);  // C1 <->
-			show(canvas,  98+xo,18, &img_6x8_1,    SHOW_SET_BLK);
-			show(canvas, 107+xo,16, &img_ecp_SDA,  SHOW_SET_BLK);
+        show(canvas, 90 + xo, 18, &img_6x8_C, SHOW_SET_BLK); // C1 <->
+        show(canvas, 98 + xo, 18, &img_6x8_1, SHOW_SET_BLK);
+        show(canvas, 107 + xo, 16, &img_ecp_SDA, SHOW_SET_BLK);
 
 
-			show(canvas,  90+xo,40, &img_6x8_G,    SHOW_SET_BLK);  // Gnd
-			show(canvas,  97+xo,40, &img_6x8_n,    SHOW_SET_BLK);
-			show(canvas, 104+xo,40, &img_6x8_d,    SHOW_SET_BLK);
+        show(canvas, 90 + xo, 40, &img_6x8_G, SHOW_SET_BLK); // Gnd
+        show(canvas, 97 + xo, 40, &img_6x8_n, SHOW_SET_BLK);
+        show(canvas, 104 + xo, 40, &img_6x8_d, SHOW_SET_BLK);
 
 
-			show(canvas,  90+xo,54, &img_6x8_C,    SHOW_SET_BLK);  // C0 _-_-
-			show(canvas,  98+xo,54, &img_6x8_0,    SHOW_SET_BLK);
-			show(canvas, 108+xo,54, &img_ecp_SCL,  SHOW_SET_BLK);
+        show(canvas, 90 + xo, 54, &img_6x8_C, SHOW_SET_BLK); // C0 _-_-
+        show(canvas, 98 + xo, 54, &img_6x8_0, SHOW_SET_BLK);
+        show(canvas, 108 + xo, 54, &img_ecp_SCL, SHOW_SET_BLK);
 
 
-			show(canvas, 0,0, &img_csLogo_Small, SHOW_SET_BLK);
-			showVer(canvas);
+        show(canvas, 0, 0, &img_csLogo_Small, SHOW_SET_BLK);
+        showVer(canvas);
 
 
-#			undef xo
-			break;
+#undef xo
+        break;
 
 
-		//---------------------------------------------------------------------
-		case SCENE_DEBUG:
-			canvas_set_font(canvas, FontSecondary);
+    //---------------------------------------------------------------------
+    case SCENE_DEBUG:
+        canvas_set_font(canvas, FontSecondary);
 
 
-			show(canvas, 0,0, &img_key_U, SHOW_SET_BLK);
-			canvas_draw_str_aligned(canvas, 11, 0, AlignLeft, AlignTop, "Initialise Perhipheral");
+        show(canvas, 0, 0, &img_key_U, SHOW_SET_BLK);
+        canvas_draw_str_aligned(canvas, 11, 0, AlignLeft, AlignTop, "Initialise Perhipheral");
 
 
-			show(canvas, 0,11, &img_key_OK, SHOW_SET_BLK);
-			canvas_draw_str_aligned(canvas, 11,11, AlignLeft, AlignTop, "Read values [see log]");
+        show(canvas, 0, 11, &img_key_OK, SHOW_SET_BLK);
+        canvas_draw_str_aligned(canvas, 11, 11, AlignLeft, AlignTop, "Read values [see log]");
 
 
-			show(canvas, 0,23, &img_key_D, SHOW_SET_BLK);
-			canvas_draw_str_aligned(canvas, 11,22, AlignLeft, AlignTop, "Restart Scanner");
+        show(canvas, 0, 23, &img_key_D, SHOW_SET_BLK);
+        canvas_draw_str_aligned(canvas, 11, 22, AlignLeft, AlignTop, "Restart Scanner");
 
 
-			show(canvas, 0,33, &img_key_Back, SHOW_SET_BLK);
-			canvas_draw_str_aligned(canvas, 11,33, AlignLeft, AlignTop, "Exit");
+        show(canvas, 0, 33, &img_key_Back, SHOW_SET_BLK);
+        canvas_draw_str_aligned(canvas, 11, 33, AlignLeft, AlignTop, "Exit");
 
 
-			break ;
+        break;
 
 
-		//---------------------------------------------------------------------
-		default:
-			if (state->ec.pidx >= PID_ERROR) {
-				ERROR("%s : bad PID = %d", __func__, state->ec.pidx);
-			} else {
-				if ((state->scene == SCENE_DUMP) || !ecId[state->ec.pidx].show)
-					ecId[PID_UNKNOWN].show(canvas, state);
-				else
-					ecId[state->ec.pidx].show(canvas, state);
-			}
-			break;
-	}
+    //---------------------------------------------------------------------
+    default:
+        if(state->ec.pidx >= PID_ERROR) {
+            ERROR("%s : bad PID = %d", __func__, state->ec.pidx);
+        } else {
+            if((state->scene == SCENE_DUMP) || !ecId[state->ec.pidx].show)
+                ecId[PID_UNKNOWN].show(canvas, state);
+            else
+                ecId[state->ec.pidx].show(canvas, state);
+        }
+        break;
+    }
 
 
-	// Release    the  mutex
-	furi_mutex_release(state->mutex);
+    // Release    the  mutex
+    furi_mutex_release(state->mutex);
 
 
-	LEAVE;
-	return;
+    LEAVE;
+    return;
 }
 }
 
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -209,56 +198,54 @@ void  cbDraw (Canvas* const canvas,  void* ctx)
 //+============================================================================ ========================================
 //+============================================================================ ========================================
 // Initialise plugin state variables
 // Initialise plugin state variables
 //
 //
-static inline
-bool  stateInit (state_t* const state)
-{
-	ENTER;
-	furi_assert(state);
-
-	bool rv = true;  // assume success
-
-	// Enable the main loop
-	state->run       = true;
-
-	// Timer
-	state->timerEn   = false;
-	state->timer     = NULL;
-	state->timerHz   = furi_kernel_get_tick_frequency();
-	state->fps       = 30;
-
-	// Scene
-	state->scene     = SCENE_SPLASH;
-	state->scenePrev = SCENE_NONE;
-	state->scenePegg = SCENE_NONE;
-
-	state->hold      = 0;  // show hold meters (-1=lowest, 0=current, +1=highest}
-	state->calib     = CAL_TRACK;
-	state->pause     = false;  // animation running
-	state->apause    = false;  // auto-pause animation
-
-	// Notifications
-	state->notify    = NULL;
-
-	// Perhipheral
-	state->ec.init   = false;
-	state->ec.pidx   = PID_UNKNOWN;
-	state->ec.sid    = ecId[state->ec.pidx].name;
-
-	// Controller data
-	memset(state->ec.pid,  0xC5, PID_LEN);  // Cyborg 5ystems
-	memset(state->ec.calF, 0xC5, CAL_LEN);
-	memset(state->ec.joy,  0xC5, JOY_LEN);
-
-	// Encryption details
-	state->ec.encrypt = false;
-	memset(state->ec.encKey, 0x00, ENC_LEN);
-
-	// Seed the PRNG
-	// CYCCNT --> lib/STM32CubeWB/Drivers/CMSIS/Include/core_cm7.h
-//	srand(DWT->CYCCNT);
-
-	LEAVE;
-	return rv;
+static inline bool stateInit(state_t* const state) {
+    ENTER;
+    furi_assert(state);
+
+    bool rv = true; // assume success
+
+    // Enable the main loop
+    state->run = true;
+
+    // Timer
+    state->timerEn = false;
+    state->timer = NULL;
+    state->timerHz = furi_kernel_get_tick_frequency();
+    state->fps = 30;
+
+    // Scene
+    state->scene = SCENE_SPLASH;
+    state->scenePrev = SCENE_NONE;
+    state->scenePegg = SCENE_NONE;
+
+    state->hold = 0; // show hold meters (-1=lowest, 0=current, +1=highest}
+    state->calib = CAL_TRACK;
+    state->pause = false; // animation running
+    state->apause = false; // auto-pause animation
+
+    // Notifications
+    state->notify = NULL;
+
+    // Perhipheral
+    state->ec.init = false;
+    state->ec.pidx = PID_UNKNOWN;
+    state->ec.sid = ecId[state->ec.pidx].name;
+
+    // Controller data
+    memset(state->ec.pid, 0xC5, PID_LEN); // Cyborg 5ystems
+    memset(state->ec.calF, 0xC5, CAL_LEN);
+    memset(state->ec.joy, 0xC5, JOY_LEN);
+
+    // Encryption details
+    state->ec.encrypt = false;
+    memset(state->ec.encKey, 0x00, ENC_LEN);
+
+    // Seed the PRNG
+    // CYCCNT --> lib/STM32CubeWB/Drivers/CMSIS/Include/core_cm7.h
+    //	srand(DWT->CYCCNT);
+
+    LEAVE;
+    return rv;
 }
 }
 
 
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -272,270 +259,275 @@ bool  stateInit (state_t* const state)
 //+============================================================================ ========================================
 //+============================================================================ ========================================
 // Enable/Disable scanning
 // Enable/Disable scanning
 //
 //
-void  timerEn (state_t* state,  bool on)
-{
-	ENTER;
-	furi_assert(state);
-
-	// ENable scanning
-	if (on) {
-		if (state->timerEn) {
-			WARN(wii_errs[WARN_SCAN_START]);
-		} else {
-			// Set the timer to fire at 'fps' times/second
-			if (furi_timer_start(state->timer, state->timerHz/state->fps) == FuriStatusOk) {
-				state->timerEn = true;
-				INFO("%s : monitor started", __func__);
-			} else {
-				ERROR(wii_errs[ERR_TIMER_START]);
-			}
-		}
-
-	// DISable scanning
-	} else {
-		if (!state->timerEn) {
-			WARN(wii_errs[WARN_SCAN_STOP]);
-		} else {
-			// Stop the timer
-			if (furi_timer_stop(state->timer) == FuriStatusOk) {
-				state->timerEn = false;
-				INFO("%s : monitor stopped", __func__);
-			} else {
-				ERROR(wii_errs[ERR_TIMER_STOP]);
-			}
-		}
-	}
-
-	LEAVE;
-	return;
+void timerEn(state_t* state, bool on) {
+    ENTER;
+    furi_assert(state);
+
+    // ENable scanning
+    if(on) {
+        if(state->timerEn) {
+            WARN(wii_errs[WARN_SCAN_START]);
+        } else {
+            // Set the timer to fire at 'fps' times/second
+            if(furi_timer_start(state->timer, state->timerHz / state->fps) == FuriStatusOk) {
+                state->timerEn = true;
+                INFO("%s : monitor started", __func__);
+            } else {
+                ERROR(wii_errs[ERR_TIMER_START]);
+            }
+        }
+
+        // DISable scanning
+    } else {
+        if(!state->timerEn) {
+            WARN(wii_errs[WARN_SCAN_STOP]);
+        } else {
+            // Stop the timer
+            if(furi_timer_stop(state->timer) == FuriStatusOk) {
+                state->timerEn = false;
+                INFO("%s : monitor stopped", __func__);
+            } else {
+                ERROR(wii_errs[ERR_TIMER_STOP]);
+            }
+        }
+    }
+
+    LEAVE;
+    return;
 }
 }
 
 
 //+============================================================================ ========================================
 //+============================================================================ ========================================
 // Plugin entry point
 // Plugin entry point
 //
 //
-int32_t  wii_ec_anal (void)
-{
-	ENTER;
-
-	// ===== Variables =====
-	err_t              error   = 0;        // assume success
-	Gui*               gui     = NULL;
-	ViewPort*          vpp     = NULL;
-	state_t*           state   = NULL;
-	FuriMessageQueue*  queue   = NULL;
-	const uint32_t     queueSz = 20;       // maximum messages in queue
-	uint32_t           tmo     = (3.5f *1000);  // timeout splash screen after N seconds
-
-	// The queue will contain plugin event-messages
-	// --> local
-	eventMsg_t         msg     = {0};
-
-	INFO("BEGIN");
-
-	// ===== Message queue =====
-	// 1. Create a message queue (for up to 8 (keyboard) event messages)
-	if ( !(queue = furi_message_queue_alloc(queueSz, sizeof(msg))) ) {
-		ERROR(wii_errs[(error = ERR_MALLOC_QUEUE)]);
-		goto bail;
-	}
-
-	// ===== Create GUI Interface =====
-	// 2. Create a GUI interface
-	if ( !(gui = furi_record_open("gui")) ) {
-		ERROR(wii_errs[(error = ERR_NO_GUI)]);
-		goto bail;
-	}
-
-	// ===== Plugin state variables =====
-	// 3. Allocate space on the heap for the plugin state variables
-	if ( !(state = malloc(sizeof(state_t))) ) {
-		ERROR(wii_errs[(error = ERR_MALLOC_STATE)]);
-		goto bail;
-	}
-	// 4. Initialise the plugin state variables
-	if (!stateInit(state)) {
-		// error message(s) is/are output by stateInit()
-		error = 15;
-		goto bail;
-	}
-	// 5. Create a mutex for (reading/writing) the plugin state variables
-	if ( !(state->mutex = furi_mutex_alloc(FuriMutexTypeNormal)) ) {
-		ERROR(wii_errs[(error = ERR_NO_MUTEX)]);
-		goto bail;
-	}
-
-	// ===== Viewport =====
-	// 6. Allocate space on the heap for the viewport
-	if ( !(vpp = view_port_alloc()) ) {
-		ERROR(wii_errs[(error = ERR_MALLOC_VIEW)]);
-		goto bail;
-	}
-	// 7a. Register a callback for input events
-	view_port_input_callback_set(vpp, cbInput, queue);
-	// 7b. Register a callback for draw events
-	view_port_draw_callback_set(vpp, cbDraw, state);
-
-	// ===== Start GUI Interface =====
-	// 8. Attach the viewport to the GUI
-	gui_add_view_port(gui, vpp, GuiLayerFullscreen);
-
-	// ===== Timer =====
-	// 9. Allocate a timer
-	if ( !(state->timer = furi_timer_alloc(cbTimer, FuriTimerTypePeriodic, queue)) ) {
-		ERROR(wii_errs[(error = ERR_NO_TIMER)]);
-		goto bail;
-	}
-
-	// === System Notifications ===
-	// 10. Acquire a handle for the system notification queue
-	if ( !(state->notify = furi_record_open(RECORD_NOTIFICATION)) ) {
-		ERROR(wii_errs[(error = ERR_NO_NOTIFY)]);
-		goto bail;
-	}
-	patBacklight(state);  // Turn on the backlight [qv. remote FAP launch]
-
-	INFO("INITIALISED");
-
-	// ==================== Main event loop ====================
-
-	if (state->run)  do {
-		bool        redraw = false;
-		FuriStatus  status = FuriStatusErrorTimeout;
-
-		// Wait for a message
-//		while ((status = furi_message_queue_get(queue, &msg, tmo)) == FuriStatusErrorTimeout) ;
-		status = furi_message_queue_get(queue, &msg, tmo);
-
-		// Clear splash screen
-		if ( (state->scene == SCENE_SPLASH) && (state->scenePrev == SCENE_NONE) &&  // Initial splash
-			 ( (status == FuriStatusErrorTimeout) ||                                // timeout
-		       ((msg.id == EVID_KEY) && (msg.input.type == InputTypeShort)) )       // or <any> key-short
-		   ) {
-			tmo    = 60 *1000;            // increase message-wait timeout to 60secs
-			timerEn(state, true);         // start scanning the i2c bus
-			status = FuriStatusOk;        // pass status check
-			msg.id = EVID_NONE;           // valid msg ID
-			sceneSet(state, SCENE_WAIT);  // move to wait screen
-		}
-
-		// Check for queue errors
-		if (status != FuriStatusOk) {
-			switch (status) {
-				case FuriStatusErrorTimeout:    DEBUG(wii_errs[DEBUG_QUEUE_TIMEOUT]);           continue ;
-				case FuriStatusError:           ERROR(wii_errs[(error = ERR_QUEUE_RTOS)]);      goto bail ;
-				case FuriStatusErrorResource:   ERROR(wii_errs[(error = ERR_QUEUE_RESOURCE)]);  goto bail ;
-				case FuriStatusErrorParameter:  ERROR(wii_errs[(error = ERR_QUEUE_BADPRM)]);    goto bail ;
-				case FuriStatusErrorNoMemory:   ERROR(wii_errs[(error = ERR_QUEUE_NOMEM)]);     goto bail ;
-				case FuriStatusErrorISR:        ERROR(wii_errs[(error = ERR_QUEUE_ISR)]);       goto bail ;
-				default:                        ERROR(wii_errs[(error = ERR_QUEUE_UNK)]);       goto bail ;
-			}
-		}
-		// Read successful
-
-		// *** Try to lock the plugin state variables ***
-		if (furi_mutex_acquire(state->mutex, FuriWaitForever) != FuriStatusOk) {
-			ERROR(wii_errs[(error = ERR_MUTEX_BLOCK)]);
-			goto bail;
-		}
-
-		// *** Handle events ***
-		switch (msg.id) {
-			//---------------------------------------------
-			case EVID_TICK:  // Timer events
-				//! I would prefer to have ecPoll() called by cbTimer()
-				//! ...but how does cbTimer() get the required access to the state variables?  Namely: 'state->ec'
-				//! So, for now, the timer pushes a message to call ecPoll() 
-				//!                                       which, in turn, will push WIIEC event meesages! <facepalm>
-				ecPoll(&state->ec, queue);
-				break;
-
-			//---------------------------------------------
-			case EVID_WIIEC:  // WiiMote Perhipheral
-				if (evWiiEC(&msg, state))  redraw = true ;
-				break;
-
-			//---------------------------------------------
-			case EVID_KEY:  // Key events
-				patBacklight(state);
-				if (evKey(&msg, state))  redraw = true;
-				break;
-
-			//---------------------------------------------
-			case EVID_NONE:
-				break;
-
-			//---------------------------------------------
-			default:  // Unknown event
-				WARN("Unknown message.ID [%d]", msg.id);
-				break;
-		}
-
-		// *** Update the GUI screen via the viewport ***
-		if (redraw)  view_port_update(vpp) ;
-
-		// *** Try to release the plugin state variables ***
-		if (furi_mutex_release(state->mutex) != FuriStatusOk) {
-			ERROR(wii_errs[(error = ERR_MUTEX_RELEASE)]);
-			goto bail;
-		}
-	} while (state->run);
-
-	// ===== Game Over =====
-	INFO("USER EXIT");
+int32_t wii_ec_anal(void) {
+    ENTER;
+
+    // ===== Variables =====
+    err_t error = 0; // assume success
+    Gui* gui = NULL;
+    ViewPort* vpp = NULL;
+    state_t* state = NULL;
+    FuriMessageQueue* queue = NULL;
+    const uint32_t queueSz = 20; // maximum messages in queue
+    uint32_t tmo = (3.5f * 1000); // timeout splash screen after N seconds
+
+    // The queue will contain plugin event-messages
+    // --> local
+    eventMsg_t msg = {0};
+
+    INFO("BEGIN");
+
+    // ===== Message queue =====
+    // 1. Create a message queue (for up to 8 (keyboard) event messages)
+    if(!(queue = furi_message_queue_alloc(queueSz, sizeof(msg)))) {
+        ERROR(wii_errs[(error = ERR_MALLOC_QUEUE)]);
+        goto bail;
+    }
+
+    // ===== Create GUI Interface =====
+    // 2. Create a GUI interface
+    if(!(gui = furi_record_open("gui"))) {
+        ERROR(wii_errs[(error = ERR_NO_GUI)]);
+        goto bail;
+    }
+
+    // ===== Plugin state variables =====
+    // 3. Allocate space on the heap for the plugin state variables
+    if(!(state = malloc(sizeof(state_t)))) {
+        ERROR(wii_errs[(error = ERR_MALLOC_STATE)]);
+        goto bail;
+    }
+    // 4. Initialise the plugin state variables
+    if(!stateInit(state)) {
+        // error message(s) is/are output by stateInit()
+        error = 15;
+        goto bail;
+    }
+    // 5. Create a mutex for (reading/writing) the plugin state variables
+    state->mutex = furi_mutex_alloc(FuriMutexTypeNormal);
+    if(!state->mutex) {
+        ERROR(wii_errs[(error = ERR_NO_MUTEX)]);
+        goto bail;
+    }
+
+    // ===== Viewport =====
+    // 6. Allocate space on the heap for the viewport
+    if(!(vpp = view_port_alloc())) {
+        ERROR(wii_errs[(error = ERR_MALLOC_VIEW)]);
+        goto bail;
+    }
+    // 7a. Register a callback for input events
+    view_port_input_callback_set(vpp, cbInput, queue);
+    // 7b. Register a callback for draw events
+    view_port_draw_callback_set(vpp, cbDraw, state);
+
+    // ===== Start GUI Interface =====
+    // 8. Attach the viewport to the GUI
+    gui_add_view_port(gui, vpp, GuiLayerFullscreen);
+
+    // ===== Timer =====
+    // 9. Allocate a timer
+    if(!(state->timer = furi_timer_alloc(cbTimer, FuriTimerTypePeriodic, queue))) {
+        ERROR(wii_errs[(error = ERR_NO_TIMER)]);
+        goto bail;
+    }
+
+    // === System Notifications ===
+    // 10. Acquire a handle for the system notification queue
+    if(!(state->notify = furi_record_open(RECORD_NOTIFICATION))) {
+        ERROR(wii_errs[(error = ERR_NO_NOTIFY)]);
+        goto bail;
+    }
+    patBacklight(state); // Turn on the backlight [qv. remote FAP launch]
+
+    INFO("INITIALISED");
+
+    // ==================== Main event loop ====================
+
+    if(state->run) do {
+            //bool redraw = false;
+            FuriStatus status = FuriStatusErrorTimeout;
+
+            // Wait for a message
+            //		while ((status = furi_message_queue_get(queue, &msg, tmo)) == FuriStatusErrorTimeout) ;
+            status = furi_message_queue_get(queue, &msg, tmo);
+
+            // Clear splash screen
+            if((state->scene == SCENE_SPLASH) &&
+               (state->scenePrev == SCENE_NONE) && // Initial splash
+               ((status == FuriStatusErrorTimeout) || // timeout
+                ((msg.id == EVID_KEY) && (msg.input.type == InputTypeShort))) // or <any> key-short
+            ) {
+                tmo = 60 * 1000; // increase message-wait timeout to 60secs
+                timerEn(state, true); // start scanning the i2c bus
+                status = FuriStatusOk; // pass status check
+                msg.id = EVID_NONE; // valid msg ID
+                sceneSet(state, SCENE_WAIT); // move to wait screen
+            }
+
+            // Check for queue errors
+            if(status != FuriStatusOk) {
+                switch(status) {
+                case FuriStatusErrorTimeout:
+                    DEBUG(wii_errs[DEBUG_QUEUE_TIMEOUT]);
+                    continue;
+                case FuriStatusError:
+                    ERROR(wii_errs[(error = ERR_QUEUE_RTOS)]);
+                    goto bail;
+                case FuriStatusErrorResource:
+                    ERROR(wii_errs[(error = ERR_QUEUE_RESOURCE)]);
+                    goto bail;
+                case FuriStatusErrorParameter:
+                    ERROR(wii_errs[(error = ERR_QUEUE_BADPRM)]);
+                    goto bail;
+                case FuriStatusErrorNoMemory:
+                    ERROR(wii_errs[(error = ERR_QUEUE_NOMEM)]);
+                    goto bail;
+                case FuriStatusErrorISR:
+                    ERROR(wii_errs[(error = ERR_QUEUE_ISR)]);
+                    goto bail;
+                default:
+                    ERROR(wii_errs[(error = ERR_QUEUE_UNK)]);
+                    goto bail;
+                }
+            }
+            // Read successful
+
+            // *** Try to lock the plugin state variables ***
+            furi_mutex_acquire(state->mutex, FuriWaitForever);
+
+            // *** Handle events ***
+            switch(msg.id) {
+            //---------------------------------------------
+            case EVID_TICK: // Timer events
+                //! I would prefer to have ecPoll() called by cbTimer()
+                //! ...but how does cbTimer() get the required access to the state variables?  Namely: 'state->ec'
+                //! So, for now, the timer pushes a message to call ecPoll()
+                //!                                       which, in turn, will push WIIEC event meesages! <facepalm>
+                ecPoll(&state->ec, queue);
+                break;
+
+            //---------------------------------------------
+            case EVID_WIIEC: // WiiMote Perhipheral
+                evWiiEC(&msg, state); //) redraw = true;
+                break;
+
+            //---------------------------------------------
+            case EVID_KEY: // Key events
+                patBacklight(state);
+                evKey(&msg, state); //) redraw = true;
+                break;
+
+            //---------------------------------------------
+            case EVID_NONE:
+                break;
+
+            //---------------------------------------------
+            default: // Unknown event
+                WARN("Unknown message.ID [%d]", msg.id);
+                break;
+            }
+
+            // *** Try to release the plugin state variables ***
+            furi_mutex_release(state->mutex);
+
+            // *** Update the GUI screen via the viewport ***
+            view_port_update(vpp);
+        } while(state->run);
+
+    // ===== Game Over =====
+    INFO("USER EXIT");
 
 
 bail:
 bail:
-	// 10. Release system notification queue
-	if (state->notify) {
-		furi_record_close(RECORD_NOTIFICATION);
-		state->notify = NULL;
-	}
-
-	// 9. Stop the timer
-	if (state->timer) {
-		(void)furi_timer_stop(state->timer);
-		furi_timer_free(state->timer);
-		state->timer = NULL;
-		state->timerEn = false;
-	}
-
-	// 8. Detach the viewport
-	gui_remove_view_port(gui, vpp);
-
-	// 7. No need to unreqgister the callbacks
-	//    ...they will go when the viewport is destroyed
-
-	// 6. Destroy the viewport
-	if (vpp) {
-		view_port_enabled_set(vpp, false);
-		view_port_free(vpp);
-		vpp = NULL;
-	}
-
-	// 5. Free the mutex
-	if (state->mutex) {
-		furi_mutex_free(state->mutex);
-		state->mutex = NULL;
-	}
-
-	// 4. Free up state pointer(s)
-	// none
-
-	// 3. Free the plugin state variables
-	if (state) {
-		free(state);
-		state = NULL;
-	}
-
-	// 2. Close the GUI
-	furi_record_close("gui");
-
-	// 1. Destroy the message queue
-	if (queue) {
-		furi_message_queue_free(queue);
-		queue = NULL;
-	}
-
-	INFO("CLEAN EXIT ... Exit code: %d", error);
-	LEAVE;
-	return (int32_t)error;
+    // 10. Release system notification queue
+    if(state && state->notify) {
+        furi_record_close(RECORD_NOTIFICATION);
+        state->notify = NULL;
+    }
+
+    // 9. Stop the timer
+    if(state && state->timer) {
+        (void)furi_timer_stop(state->timer);
+        furi_timer_free(state->timer);
+        state->timer = NULL;
+        state->timerEn = false;
+    }
+
+    // 8. Detach the viewport
+    gui_remove_view_port(gui, vpp);
+
+    // 7. No need to unreqgister the callbacks
+    //    ...they will go when the viewport is destroyed
+
+    // 6. Destroy the viewport
+    if(vpp) {
+        view_port_enabled_set(vpp, false);
+        view_port_free(vpp);
+        vpp = NULL;
+    }
+
+    // 5. Free the mutex
+    furi_mutex_free(state->mutex);
+
+    // 4. Free up state pointer(s)
+    // none
+
+    // 3. Free the plugin state variables
+    if(state) {
+        free(state);
+        state = NULL;
+    }
+
+    // 2. Close the GUI
+    furi_record_close("gui");
+
+    // 1. Destroy the message queue
+    if(queue) {
+        furi_message_queue_free(queue);
+        queue = NULL;
+    }
+
+    INFO("CLEAN EXIT ... Exit code: %d", error);
+    LEAVE;
+    return (int32_t)error;
 }
 }

+ 56 - 65
wii_anal.h

@@ -1,99 +1,90 @@
-#ifndef  WII_ANAL_H_
-#define  WII_ANAL_H_
+#ifndef WII_ANAL_H_
+#define WII_ANAL_H_
 
 
-#include  <furi.h>         // Core API
-#include  <input/input.h>  // GUI Input extensions
-#include  <notification/notification_messages.h>
+#include <furi.h> // Core API
+#include <input/input.h> // GUI Input extensions
+#include <notification/notification_messages.h>
 
 
 //----------------------------------------------------------------------------- ----------------------------------------
 //----------------------------------------------------------------------------- ----------------------------------------
 // GUI scenes
 // GUI scenes
 //
 //
-typedef
-	enum scene {
-		SCENE_NONE         = 0,
-		SCENE_SPLASH       = 1,
-		SCENE_RIP          = 2,
-		SCENE_WAIT         = 3,
-		SCENE_DEBUG        = 4,
-		SCENE_DUMP         = 5,
-		SCENE_CLASSIC      = 6,
-		SCENE_CLASSIC_N    = 7,
-		SCENE_NUNCHUCK     = 8,
-		SCENE_NUNCHUCK_ACC = 9,
-	}
-scene_t;
+typedef enum scene {
+    SCENE_NONE = 0,
+    SCENE_SPLASH = 1,
+    SCENE_RIP = 2,
+    SCENE_WAIT = 3,
+    SCENE_DEBUG = 4,
+    SCENE_DUMP = 5,
+    SCENE_CLASSIC = 6,
+    SCENE_CLASSIC_N = 7,
+    SCENE_NUNCHUCK = 8,
+    SCENE_NUNCHUCK_ACC = 9,
+} scene_t;
 
 
 //----------------------------------------------------------------------------- ----------------------------------------
 //----------------------------------------------------------------------------- ----------------------------------------
-#include  "wii_i2c.h"
-#include  "wii_ec.h"
+#include "wii_i2c.h"
+#include "wii_ec.h"
 
 
 //----------------------------------------------------------------------------- ----------------------------------------
 //----------------------------------------------------------------------------- ----------------------------------------
 // A list of event IDs handled by this plugin
 // A list of event IDs handled by this plugin
 //
 //
-typedef
-	enum eventID {
-		EVID_NONE,
-		EVID_UNKNOWN,
+typedef enum eventID {
+    EVID_NONE,
+    EVID_UNKNOWN,
 
 
-		// A full list of events can be found with:  `grep -r --color  "void.*set_.*_callback"  applications/gui/*`
-		// ...A free gift to you from the makers of well written code that conforms to a good coding standard
-		EVID_KEY,    // keypad
-		EVID_TICK,   // tick
-		EVID_WIIEC,  // wii extension controller
-	}
-eventID_t;
+    // A full list of events can be found with:  `grep -r --color  "void.*set_.*_callback"  applications/gui/*`
+    // ...A free gift to you from the makers of well written code that conforms to a good coding standard
+    EVID_KEY, // keypad
+    EVID_TICK, // tick
+    EVID_WIIEC, // wii extension controller
+} eventID_t;
 
 
 //----------------------------------------------------------------------------- ----------------------------------------
 //----------------------------------------------------------------------------- ----------------------------------------
 // An item in the event message-queue
 // An item in the event message-queue
 //
 //
-typedef
-	struct eventMsg {
-		eventID_t    id;
-		union {
-			InputEvent    input;  // --> applications/input/input.h
-			wiiEcEvent_t  wiiEc;  // --> local
-		};
-	}
-eventMsg_t;
+typedef struct eventMsg {
+    eventID_t id;
+    union {
+        InputEvent input; // --> applications/input/input.h
+        wiiEcEvent_t wiiEc; // --> local
+    };
+} eventMsg_t;
 
 
 //----------------------------------------------------------------------------- ----------------------------------------
 //----------------------------------------------------------------------------- ----------------------------------------
 // State variables for this plugin
 // State variables for this plugin
 // An instance of this is allocated on the heap, and the pointer is passed back to the OS
 // An instance of this is allocated on the heap, and the pointer is passed back to the OS
 // Access to this memory is controlled by mutex
 // Access to this memory is controlled by mutex
 //
 //
-typedef 
-	struct state {
-		FuriMutex*        mutex;      // mutex for using this struct
+typedef struct state {
+    FuriMutex* mutex;
+    bool run; // true : plugin is running
 
 
-		bool              run;        // true : plugin is running
+    bool timerEn; // controller scanning enabled
+    FuriTimer* timer; // the timer
+    uint32_t timerHz; // system ticks per second
+    int fps; // poll/refresh [frames]-per-second
 
 
-		bool              timerEn;    // controller scanning enabled
-	    FuriTimer*        timer;      // the timer
-		uint32_t          timerHz;    // system ticks per second
-		int               fps;        // poll/refresh [frames]-per-second
+    int cnvW; // canvas width
+    int cnvH; // canvas height
+    scene_t scene; // current scene
+    scene_t scenePrev; // previous scene
+    scene_t scenePegg; // previous scene for easter eggs
+    int flash; // flash counter (flashing icons)
 
 
-		int               cnvW;       // canvas width
-		int               cnvH;       // canvas height
-		scene_t           scene;      // current scene
-		scene_t           scenePrev;  // previous scene
-		scene_t           scenePegg;  // previous scene for easter eggs
-		int               flash;      // flash counter (flashing icons)
+    int hold; // hold type: {-1=tough-peak, 0=none, +1=peak-hold}
+    ecCalib_t calib; // Software calibration mode
 
 
-		int               hold;       // hold type: {-1=tough-peak, 0=none, +1=peak-hold}
-		ecCalib_t         calib;      // Software calibration mode
+    bool pause; // Accelerometer animation pause
+    bool apause; // Accelerometer animation auto-pause
 
 
-		bool              pause;      // Accelerometer animation pause
-		bool              apause;     // Accelerometer animation auto-pause
+    NotificationApp* notify; // OS nitifcation queue (for patting the backlight watchdog timer)
 
 
-		NotificationApp*  notify;     // OS nitifcation queue (for patting the backlight watchdog timer)
-
-		wiiEC_t           ec;         // Extension Controller details
-	}
-state_t;
+    wiiEC_t ec; // Extension Controller details
+} state_t;
 
 
 //============================================================================= ========================================
 //============================================================================= ========================================
 // Function prototypes
 // Function prototypes
 //
 //
-void  timerEn (state_t* state,  bool on) ;
+void timerEn(state_t* state, bool on);
 
 
 #endif //WII_ANAL_H_
 #endif //WII_ANAL_H_

+ 97 - 79
wii_anal_ec.c

@@ -1,97 +1,115 @@
-#include  <stdbool.h>
-#include  <stdint.h>
+#include <stdbool.h>
+#include <stdint.h>
 
 
-#include  "wii_anal.h"
-#include  "wii_anal_lcd.h"
-#include  "wii_anal_keys.h"
+#include "wii_anal.h"
+#include "wii_anal_lcd.h"
+#include "wii_anal_keys.h"
 
 
 //+============================================================================ ========================================
 //+============================================================================ ========================================
 // Handle Wii Extension Controller events
 // Handle Wii Extension Controller events
 //
 //
-bool  evWiiEC (const eventMsg_t* const msg,  state_t* const state)
-{
-	bool  redraw = false;
+bool evWiiEC(const eventMsg_t* const msg, state_t* const state) {
+    bool redraw = false;
 
 
-#	if LOG_LEVEL >= 4
-	{
-		const char*  s = NULL;
-		switch (msg->wiiEc.type) {
-			case WIIEC_NONE:     s = "Error";       break ;
-			case WIIEC_CONN:     s = "Connect";     break ;
-			case WIIEC_DISCONN:  s = "Disconnect";  break ;
-			case WIIEC_PRESS:    s = "Press";       break ;
-			case WIIEC_RELEASE:  s = "Release";     break ;
-			case WIIEC_ANALOG:   s = "Analog";      break ;
-			case WIIEC_ACCEL:    s = "Accel";       break ;
-			default:             s = "Bug";         break ;
-		}
-		INFO("WIIP : %s '%c' = %d", s, (isprint((int)msg->wiiEc.in) ? msg->wiiEc.in : '_'), msg->wiiEc.val);
-		if ((msg->wiiEc.type == WIIEC_CONN) || (msg->wiiEc.type == WIIEC_DISCONN))
-			INFO("...%d=\"%s\"", msg->wiiEc.val, ecId[msg->wiiEc.val].name);
-	}
-#	endif
+#if LOG_LEVEL >= 4
+    {
+        const char* s = NULL;
+        switch(msg->wiiEc.type) {
+        case WIIEC_NONE:
+            s = "Error";
+            break;
+        case WIIEC_CONN:
+            s = "Connect";
+            break;
+        case WIIEC_DISCONN:
+            s = "Disconnect";
+            break;
+        case WIIEC_PRESS:
+            s = "Press";
+            break;
+        case WIIEC_RELEASE:
+            s = "Release";
+            break;
+        case WIIEC_ANALOG:
+            s = "Analog";
+            break;
+        case WIIEC_ACCEL:
+            s = "Accel";
+            break;
+        default:
+            s = "Bug";
+            break;
+        }
+        INFO(
+            "WIIP : %s '%c' = %d",
+            s,
+            (isprint((int)msg->wiiEc.in) ? msg->wiiEc.in : '_'),
+            msg->wiiEc.val);
+        if((msg->wiiEc.type == WIIEC_CONN) || (msg->wiiEc.type == WIIEC_DISCONN))
+            INFO("...%d=\"%s\"", msg->wiiEc.val, ecId[msg->wiiEc.val].name);
+    }
+#endif
 
 
-	switch (msg->wiiEc.type) {
-		case WIIEC_CONN:
-			patBacklight(state);
-			state->hold  = 0;
-			state->calib = CAL_TRACK;
-			sceneSet(state, ecId[msg->wiiEc.val].scene);
-			redraw = true ;
+    switch(msg->wiiEc.type) {
+    case WIIEC_CONN:
+        patBacklight(state);
+        state->hold = 0;
+        state->calib = CAL_TRACK;
+        sceneSet(state, ecId[msg->wiiEc.val].scene);
+        redraw = true;
 
 
-#if 1  // Workaround for Classic Controller Pro, which shows 00's for Factory Calibration Data!?
-			if (state->ec.pidx == PID_CLASSIC_PRO) {
-				// Simulate a Long-OK keypress, to start Software Calibration mode
-				eventMsg_t  msg = {
-//					.id         = EVID_KEY,
-					.input.type = InputTypeLong,
-					.input.key  = InputKeyOk
-				};
-				key_calib(&msg, state);
-			}
+#if 1 // Workaround for Classic Controller Pro, which shows 00's for Factory Calibration Data!?
+        if(state->ec.pidx == PID_CLASSIC_PRO) {
+            // Simulate a Long-OK keypress, to start Software Calibration mode
+            eventMsg_t msg = {//					.id         = EVID_KEY,
+                              .input.type = InputTypeLong,
+                              .input.key = InputKeyOk};
+            key_calib(&msg, state);
+        }
 #endif
 #endif
-			break;
+        break;
 
 
-		case WIIEC_DISCONN:
-			patBacklight(state);
-			sceneSet(state, SCENE_WAIT);
-			redraw = true;
-			break;
+    case WIIEC_DISCONN:
+        patBacklight(state);
+        sceneSet(state, SCENE_WAIT);
+        redraw = true;
+        break;
 
 
-		case WIIEC_PRESS:
-			if (state->scene == SCENE_NUNCHUCK_ACC)  switch (msg->wiiEc.in) {
-				case 'z':    // un-pause
-					state->pause = !state->pause;
-					break;
-				case 'c':    // toggle auto-pause
-					state->pause  = false;
-					state->apause = !state->apause;
-					break;
-				default:  break ;
-			}
+    case WIIEC_PRESS:
+        if(state->scene == SCENE_NUNCHUCK_ACC) switch(msg->wiiEc.in) {
+            case 'z': // un-pause
+                state->pause = !state->pause;
+                break;
+            case 'c': // toggle auto-pause
+                state->pause = false;
+                state->apause = !state->apause;
+                break;
+            default:
+                break;
+            }
 
 
-#if 1  //! factory calibration method not known for classic triggers - this will set the digital switch point
-			if ((state->ec.pidx == PID_CLASSIC) || (state->ec.pidx == PID_CLASSIC_PRO)) {
-				if (msg->wiiEc.in == 'l')  state->ec.calS.classic[2].trgZL = msg->wiiEc.val ;
-				if (msg->wiiEc.in == 'r')  state->ec.calS.classic[2].trgZR = msg->wiiEc.val ;
-			}
+#if 1 //! factory calibration method not known for classic triggers - this will set the digital switch point
+        if((state->ec.pidx == PID_CLASSIC) || (state->ec.pidx == PID_CLASSIC_PRO)) {
+            if(msg->wiiEc.in == 'l') state->ec.calS.classic[2].trgZL = msg->wiiEc.val;
+            if(msg->wiiEc.in == 'r') state->ec.calS.classic[2].trgZR = msg->wiiEc.val;
+        }
 #endif
 #endif
-			__attribute__ ((fallthrough));
+        __attribute__((fallthrough));
 
 
-		case WIIEC_RELEASE:
-			patBacklight(state);
-			redraw = true;
-			break;
+    case WIIEC_RELEASE:
+        patBacklight(state);
+        redraw = true;
+        break;
 
 
-		case WIIEC_ANALOG:
-		case WIIEC_ACCEL:
-			ecCalibrate(&state->ec, state->calib);
-			redraw = true;
-			break;
+    case WIIEC_ANALOG:
+    case WIIEC_ACCEL:
+        ecCalibrate(&state->ec, state->calib);
+        redraw = true;
+        break;
 
 
-		default:
-			break;
-	}
+    default:
+        break;
+    }
 
 
-	return redraw;
+    return redraw;
 }
 }

+ 6 - 6
wii_anal_ec.h

@@ -1,14 +1,14 @@
-#ifndef  WII_ANAL_EC_H_
-#define  WII_ANAL_EC_H_
+#ifndef WII_ANAL_EC_H_
+#define WII_ANAL_EC_H_
 
 
-#include  <stdbool.h>
+#include <stdbool.h>
 
 
 //============================================================================= ========================================
 //============================================================================= ========================================
 // Function prototypes
 // Function prototypes
 //
 //
-typedef  struct eventMsg  eventMsg_t ;
-typedef  struct state     state_t ;
+typedef struct eventMsg eventMsg_t;
+typedef struct state state_t;
 
 
-bool  evWiiEC (const eventMsg_t* const msg,  state_t* const state) ;
+bool evWiiEC(const eventMsg_t* const msg, state_t* const state);
 
 
 #endif //WII_ANAL_EC_H_
 #endif //WII_ANAL_EC_H_

+ 246 - 242
wii_anal_keys.c

@@ -1,40 +1,35 @@
-#include  <stdbool.h>
+#include <stdbool.h>
 
 
-#include  "bc_logging.h"
+#include "bc_logging.h"
 
 
-#include  "wii_anal.h"
+#include "wii_anal.h"
 
 
 //+============================================================================ ========================================
 //+============================================================================ ========================================
 // Stop Calibration mode
 // Stop Calibration mode
 //
 //
-static
-void  calStop (state_t* const state)
-{
-	state->hold   = 0;                          // stop calibration mode
-	state->calib &= ~(CAL_RANGE | CAL_NOTJOY);  // ...
+static void calStop(state_t* const state) {
+    state->hold = 0; // stop calibration mode
+    state->calib &= ~(CAL_RANGE | CAL_NOTJOY); // ...
 }
 }
 
 
 //+============================================================================ ========================================
 //+============================================================================ ========================================
 // Change to another scene
 // Change to another scene
 //
 //
-void  sceneSet (state_t* const state,  const scene_t scene)
-{
-	calStop(state);                   // Stop software calibration
-	state->scenePrev = state->scene;  // Remember where we came from
-	state->scene     = scene;         // Go to new scene
-	INFO("Scene : %d -> %d", state->scenePrev, state->scene);
+void sceneSet(state_t* const state, const scene_t scene) {
+    calStop(state); // Stop software calibration
+    state->scenePrev = state->scene; // Remember where we came from
+    state->scene = scene; // Go to new scene
+    INFO("Scene : %d -> %d", state->scenePrev, state->scene);
 }
 }
 
 
 //+============================================================================ ========================================
 //+============================================================================ ========================================
 // Change to an easter egg scene
 // Change to an easter egg scene
 //
 //
-static
-void  sceneSetEgg (state_t* const state,  const scene_t scene)
-{
-	calStop(state);                   // Stop software calibration
-	state->scenePegg = state->scene;  // Remember where we came from
-	state->scene     = scene;         // Go to new scene
-	INFO("Scene* : %d => %d", state->scenePegg, state->scene);
+static void sceneSetEgg(state_t* const state, const scene_t scene) {
+    calStop(state); // Stop software calibration
+    state->scenePegg = state->scene; // Remember where we came from
+    state->scene = scene; // Go to new scene
+    INFO("Scene* : %d => %d", state->scenePegg, state->scene);
 }
 }
 
 
 //+============================================================================ ========================================
 //+============================================================================ ========================================
@@ -42,256 +37,265 @@ void  sceneSetEgg (state_t* const state,  const scene_t scene)
 // Enabling peak-hold on screen with no peak meters will have no effect
 // Enabling peak-hold on screen with no peak meters will have no effect
 // So, to avoid code duplication...
 // So, to avoid code duplication...
 //
 //
-bool  key_calib (const eventMsg_t* const msg,  state_t* const state)
-{
-	int  used = false;  // assume key is NOT-handled
-
-	switch (msg->input.type) {
-		case InputTypeShort:                         //# <!  After InputTypeRelease within INPUT_LONG_PRESS interval
-			switch (msg->input.key) {
-				case InputKeyUp:                     //# <U [ SHORT-UP ]
-					state->hold = (state->hold == +1) ? 0 : +1 ;                // toggle peak hold
-					used = true;
-					break;
-
-				case InputKeyDown:                   //# <D [ SHORT-DOWN ]
-					state->hold = (state->hold == -1) ? 0 : -1 ;                // toggle trough hold
-					used = true;
-					break;
-
-				case InputKeyOk:                     //# <O [ SHORT-OK ]
-					if (state->calib & CAL_RANGE)  calStop(state) ;             // STOP softare calibration
-					else                           ecCalibrate(&state->ec, CAL_CENTRE) ;  // perform centre calibration
-					used = true;
-					break;
-
-				default:  break ;
-			}
-			break;
-
-		case InputTypeLong:                          //# >!  After INPUT_LONG_PRESS interval, asynch to InputTypeRelease
-			switch (msg->input.key) {
-				case InputKeyOk:                     //# >O [ LONG-OK ]
-					ecCalibrate(&state->ec, CAL_RESET | CAL_CENTRE);            // START software calibration
-					state->hold   = 0;
-					state->calib |= CAL_RANGE;
-					state->flash  = 8;                                          // start with flash ON
-					used = true;
-					break;
-
-				default:  break ;
-			}
-			break;
-
-		default:  break ;
-	}
-
-	return used;
+bool key_calib(const eventMsg_t* const msg, state_t* const state) {
+    int used = false; // assume key is NOT-handled
+
+    switch(msg->input.type) {
+    case InputTypeShort: //# <!  After InputTypeRelease within INPUT_LONG_PRESS interval
+        switch(msg->input.key) {
+        case InputKeyUp: //# <U [ SHORT-UP ]
+            state->hold = (state->hold == +1) ? 0 : +1; // toggle peak hold
+            used = true;
+            break;
+
+        case InputKeyDown: //# <D [ SHORT-DOWN ]
+            state->hold = (state->hold == -1) ? 0 : -1; // toggle trough hold
+            used = true;
+            break;
+
+        case InputKeyOk: //# <O [ SHORT-OK ]
+            if(state->calib & CAL_RANGE)
+                calStop(state); // STOP softare calibration
+            else
+                ecCalibrate(&state->ec, CAL_CENTRE); // perform centre calibration
+            used = true;
+            break;
+
+        default:
+            break;
+        }
+        break;
+
+    case InputTypeLong: //# >!  After INPUT_LONG_PRESS interval, asynch to InputTypeRelease
+        switch(msg->input.key) {
+        case InputKeyOk: //# >O [ LONG-OK ]
+            ecCalibrate(&state->ec, CAL_RESET | CAL_CENTRE); // START software calibration
+            state->hold = 0;
+            state->calib |= CAL_RANGE;
+            state->flash = 8; // start with flash ON
+            used = true;
+            break;
+
+        default:
+            break;
+        }
+        break;
+
+    default:
+        break;
+    }
+
+    return used;
 }
 }
 
 
 //+============================================================================ ========================================
 //+============================================================================ ========================================
 // WAIT screen
 // WAIT screen
 //
 //
-static inline
-bool  wait_key (const eventMsg_t* const msg,  state_t* const state)
-{
-	int  used = false;  // assume key is NOT-handled
-
-	if (msg->input.type == InputTypeShort) {
-		switch (msg->input.key) {
-			case InputKeyLeft:                       //# <L [ SHORT-LEFT ]
-				timerEn(state, false);               // Stop the timer
-				sceneSetEgg(state, SCENE_SPLASH);
-				used = true;
-				break;
-
-			case InputKeyUp:                         //# <U [ SHORT-UP ]
-				timerEn(state, false);               // Stop the timer
-				sceneSetEgg(state, SCENE_RIP);
-				used = true;
-				break;
-
-			case InputKeyBack:                       //# <B [ SHORT-BACK ]
-				state->run = false;
-				used = true;
-				break;
-
-			default:  break ;
-		}
-	}
-
-	return used;
+static inline bool wait_key(const eventMsg_t* const msg, state_t* const state) {
+    int used = false; // assume key is NOT-handled
+
+    if(msg->input.type == InputTypeShort) {
+        switch(msg->input.key) {
+        case InputKeyLeft: //# <L [ SHORT-LEFT ]
+            timerEn(state, false); // Stop the timer
+            sceneSetEgg(state, SCENE_SPLASH);
+            used = true;
+            break;
+
+        case InputKeyUp: //# <U [ SHORT-UP ]
+            timerEn(state, false); // Stop the timer
+            sceneSetEgg(state, SCENE_RIP);
+            used = true;
+            break;
+
+        case InputKeyBack: //# <B [ SHORT-BACK ]
+            state->run = false;
+            used = true;
+            break;
+
+        default:
+            break;
+        }
+    }
+
+    return used;
 }
 }
 
 
 //+============================================================================ ========================================
 //+============================================================================ ========================================
 // DEBUG screen
 // DEBUG screen
 //
 //
-static inline
-bool  debug_key (const eventMsg_t* const msg,  state_t* const state)
-{
-	int  used = false;  // assume key is NOT-handled
-
-	switch (msg->input.type) {
-		case InputTypeShort:                         //# <!  After InputTypeRelease within INPUT_LONG_PRESS interval
-			switch (msg->input.key) {
-				case InputKeyUp: {                   //# <U [ SHORT-UP ]
-					bool init = ecInit(&state->ec, NULL);                       // Initialise the controller //! NULL = no encryption
-					(void)init;  // in case INFO is optimised out
-					INFO("%s : %s", __func__, (init ? "init OK" : "init fail"));
-					used = true;
-					break;
-				}
-
-				case InputKeyOk:                     //# <O [ SHORT-OK ]
-					if (ecRead(&state->ec) == 0) {                              // Read the controller
-						INFO( "%s : joy: {%02X,%02X,%02X,%02X,%02X,%02X}", __func__,
-						      state->ec.joy[0], state->ec.joy[1], state->ec.joy[2],
-						      state->ec.joy[3], state->ec.joy[4], state->ec.joy[5] );
-					}
-					used = true;
-					break;
-
-				case InputKeyDown:                   //# <D [ SHORT-DOWN ]
-					timerEn(state, true);                                       // restart the timer
-					sceneSet(state, state->scenePrev);
-					used = true;
-					break;
-
-				case InputKeyBack:                   //# <B [ SHORT-BACK ]
-					state->run = false;
-					used = true;
-					break;
-
-				default:  break ;                    //# <?
-			}
-			break;
-
-		default:  break ;
-	}
-
-	return used;
+static inline bool debug_key(const eventMsg_t* const msg, state_t* const state) {
+    int used = false; // assume key is NOT-handled
+
+    switch(msg->input.type) {
+    case InputTypeShort: //# <!  After InputTypeRelease within INPUT_LONG_PRESS interval
+        switch(msg->input.key) {
+        case InputKeyUp: { //# <U [ SHORT-UP ]
+            bool init =
+                ecInit(&state->ec, NULL); // Initialise the controller //! NULL = no encryption
+            (void)init; // in case INFO is optimised out
+            INFO("%s : %s", __func__, (init ? "init OK" : "init fail"));
+            used = true;
+            break;
+        }
+
+        case InputKeyOk: //# <O [ SHORT-OK ]
+            if(ecRead(&state->ec) == 0) { // Read the controller
+                INFO(
+                    "%s : joy: {%02X,%02X,%02X,%02X,%02X,%02X}",
+                    __func__,
+                    state->ec.joy[0],
+                    state->ec.joy[1],
+                    state->ec.joy[2],
+                    state->ec.joy[3],
+                    state->ec.joy[4],
+                    state->ec.joy[5]);
+            }
+            used = true;
+            break;
+
+        case InputKeyDown: //# <D [ SHORT-DOWN ]
+            timerEn(state, true); // restart the timer
+            sceneSet(state, state->scenePrev);
+            used = true;
+            break;
+
+        case InputKeyBack: //# <B [ SHORT-BACK ]
+            state->run = false;
+            used = true;
+            break;
+
+        default:
+            break; //# <?
+        }
+        break;
+
+    default:
+        break;
+    }
+
+    return used;
 }
 }
 
 
 //+============================================================================ ========================================
 //+============================================================================ ========================================
 // SPLASH and RIP screen
 // SPLASH and RIP screen
 //
 //
-static inline
-bool  splash_key (const eventMsg_t* const msg,  state_t* const state)
-{
-	// Back key on the initial SPLASH screen (this will catch the InputKeyPress)
-	if ((msg->input.key == InputKeyBack) && (state->scenePrev == SCENE_NONE))  state->run = false ;
-
-	// ANY-other-KEY press
-	if (msg->input.type == InputTypeShort) {
-		timerEn(state, true);               // Restart the timer
-		state->scene = state->scenePegg;
-	}
-
-	return true;
-}
+static inline bool splash_key(const eventMsg_t* const msg, state_t* const state) {
+    // Back key on the initial SPLASH screen (this will catch the InputKeyPress)
+    if((msg->input.key == InputKeyBack) && (state->scenePrev == SCENE_NONE)) state->run = false;
+
+    // ANY-other-KEY press
+    if(msg->input.type == InputTypeShort) {
+        timerEn(state, true); // Restart the timer
+        state->scene = state->scenePegg;
+    }
 
 
+    return true;
+}
 
 
 //+============================================================================ ========================================
 //+============================================================================ ========================================
 // "_pre" allows the plugin to use the key before the active scene gets a chance
 // "_pre" allows the plugin to use the key before the active scene gets a chance
 //
 //
-static inline
-bool  key_pre (const eventMsg_t* const msg,  state_t* const state)
-{
-	(void)msg;
-	(void)state;
+static inline bool key_pre(const eventMsg_t* const msg, state_t* const state) {
+    (void)msg;
+    (void)state;
 
 
-	return false;
+    return false;
 }
 }
 
 
 //+============================================================================ ========================================
 //+============================================================================ ========================================
 // "_post" allows the plugin to use a key if it was not used by the active scene
 // "_post" allows the plugin to use a key if it was not used by the active scene
 //
 //
-static inline
-bool  key_post (const eventMsg_t* const msg,  state_t* const state)
-{
-	int  used = false;  // assume key is NOT-handled
-
-	if (msg->input.key == InputKeyBack) {
-		if        (msg->input.type == InputTypeShort) {  //# <B [SHORT-BACK]
-			state->ec.init = false;                      // reset/disconnect the controller
-			sceneSet(state, SCENE_WAIT);
-			used = true;
-
-		} else if (msg->input.type == InputTypeLong) {   //# >B [LONG-BACK]
-			state->run = false;                          // Signal the plugin to exit
-			used = true;
-		}
-	}
-
-	// Easter eggs
-	switch (state->scene) {
-		case SCENE_SPLASH:   // Scenes that do NOT offer Easter eggs
-		case SCENE_RIP:
-		case SCENE_DEBUG:
-			break;
-		default:
-			if (msg->input.type == InputTypeLong) {
-				switch (msg->input.key) {
-					case InputKeyDown:                   //# >D [LONG-DOWN]
-						timerEn(state, false);           // Stop the timer
-						sceneSetEgg(state, SCENE_DEBUG);
-						used = true;
-						break;
-
-					case InputKeyLeft:                   //# >L [ LONG-LEFT ]
-						timerEn(state, false);           // Stop the timer
-						sceneSetEgg(state, SCENE_SPLASH);
-						used = true;
-						break;
-
-					case InputKeyUp:                     //# >U [ LONG-UP ]
-						timerEn(state, false);           // Stop the timer
-						sceneSetEgg(state, SCENE_RIP);
-						used = true;
-						break;
-
-					default:  break ;
-				}
-			}
-			break;
-	}
-
-	return used;
+static inline bool key_post(const eventMsg_t* const msg, state_t* const state) {
+    int used = false; // assume key is NOT-handled
+
+    if(msg->input.key == InputKeyBack) {
+        if(msg->input.type == InputTypeShort) { //# <B [SHORT-BACK]
+            state->ec.init = false; // reset/disconnect the controller
+            sceneSet(state, SCENE_WAIT);
+            used = true;
+
+        } else if(msg->input.type == InputTypeLong) { //# >B [LONG-BACK]
+            state->run = false; // Signal the plugin to exit
+            used = true;
+        }
+    }
+
+    // Easter eggs
+    switch(state->scene) {
+    case SCENE_SPLASH: // Scenes that do NOT offer Easter eggs
+    case SCENE_RIP:
+    case SCENE_DEBUG:
+        break;
+    default:
+        if(msg->input.type == InputTypeLong) {
+            switch(msg->input.key) {
+            case InputKeyDown: //# >D [LONG-DOWN]
+                timerEn(state, false); // Stop the timer
+                sceneSetEgg(state, SCENE_DEBUG);
+                used = true;
+                break;
+
+            case InputKeyLeft: //# >L [ LONG-LEFT ]
+                timerEn(state, false); // Stop the timer
+                sceneSetEgg(state, SCENE_SPLASH);
+                used = true;
+                break;
+
+            case InputKeyUp: //# >U [ LONG-UP ]
+                timerEn(state, false); // Stop the timer
+                sceneSetEgg(state, SCENE_RIP);
+                used = true;
+                break;
+
+            default:
+                break;
+            }
+        }
+        break;
+    }
+
+    return used;
 }
 }
 
 
 //+============================================================================ ========================================
 //+============================================================================ ========================================
 // Handle a key press event
 // Handle a key press event
 //
 //
-bool  evKey (const eventMsg_t* const msg,  state_t* const state)
-{
-	furi_assert(msg);
-	furi_assert(state);
-
-	bool  used = key_pre(msg, state);
-
-	if (!used)  switch (state->scene) {
-		case SCENE_SPLASH:        //...
-		case SCENE_RIP:           used = splash_key(msg, state);  break ;
-
-		case SCENE_WAIT:          used = wait_key(msg, state);  break ;
-		case SCENE_DEBUG:         used = debug_key(msg, state);  break ;
-
-		default:
-			if (state->ec.pidx >= PID_ERROR) {
-				ERROR("%s : bad PID = %d", __func__, state->ec.pidx);
-			} else {
-				if ((state->scene == SCENE_DUMP) || !ecId[state->ec.pidx].keys)
-					ecId[PID_UNKNOWN].keys(msg, state);
-				else
-					ecId[state->ec.pidx].keys(msg, state);
-			}
-			break;
-
-		case SCENE_NONE:          break;
-	}
-
-	if (!used)  used = key_post(msg, state) ;
-
-	return used;
+bool evKey(const eventMsg_t* const msg, state_t* const state) {
+    furi_assert(msg);
+    furi_assert(state);
+
+    bool used = key_pre(msg, state);
+
+    if(!used) switch(state->scene) {
+        case SCENE_SPLASH: //...
+        case SCENE_RIP:
+            used = splash_key(msg, state);
+            break;
+
+        case SCENE_WAIT:
+            used = wait_key(msg, state);
+            break;
+        case SCENE_DEBUG:
+            used = debug_key(msg, state);
+            break;
+
+        default:
+            if(state->ec.pidx >= PID_ERROR) {
+                ERROR("%s : bad PID = %d", __func__, state->ec.pidx);
+            } else {
+                if((state->scene == SCENE_DUMP) || !ecId[state->ec.pidx].keys)
+                    ecId[PID_UNKNOWN].keys(msg, state);
+                else
+                    ecId[state->ec.pidx].keys(msg, state);
+            }
+            break;
+
+        case SCENE_NONE:
+            break;
+        }
+
+    if(!used) used = key_post(msg, state);
+
+    return used;
 }
 }
-

+ 9 - 9
wii_anal_keys.h

@@ -1,16 +1,16 @@
-#ifndef  WII_ANAL_KEYS_H_
-#define  WII_ANAL_KEYS_H_
+#ifndef WII_ANAL_KEYS_H_
+#define WII_ANAL_KEYS_H_
 
 
 //============================================================================= ========================================
 //============================================================================= ========================================
 // Function prototypes
 // Function prototypes
 //
 //
-#include  <stdbool.h>  // bool
-typedef  struct eventMsg  eventMsg_t ;
-typedef  struct state     state_t ;
-typedef  enum   scene     scene_t ;
+#include <stdbool.h> // bool
+typedef struct eventMsg eventMsg_t;
+typedef struct state state_t;
+typedef enum scene scene_t;
 
 
-void  sceneSet  (state_t* const state,  const scene_t scene) ;
-bool  key_calib (const eventMsg_t* const msg,  state_t* const state) ;
-bool  evKey     (const eventMsg_t* const msg,  state_t* const state) ;
+void sceneSet(state_t* const state, const scene_t scene);
+bool key_calib(const eventMsg_t* const msg, state_t* const state);
+bool evKey(const eventMsg_t* const msg, state_t* const state);
 
 
 #endif //WII_ANAL_KEYS_H_
 #endif //WII_ANAL_KEYS_H_

+ 213 - 154
wii_anal_lcd.c

@@ -1,17 +1,45 @@
-#include  "wii_anal.h"
-#include  "gfx/images.h"     // Images
+#include "wii_anal.h"
+#include "gfx/images.h" // Images
 
 
 //----------------------------------------------------------------------------- ----------------------------------------
 //----------------------------------------------------------------------------- ----------------------------------------
 // A couple of monospaced hex fonts
 // A couple of monospaced hex fonts
 //
 //
-const image_t*  img_6x8[16] = {
-	&img_6x8_0, &img_6x8_1, &img_6x8_2, &img_6x8_3, &img_6x8_4, &img_6x8_5, &img_6x8_6, &img_6x8_7,
-	&img_6x8_8, &img_6x8_9, &img_6x8_A, &img_6x8_B, &img_6x8_C, &img_6x8_D, &img_6x8_E, &img_6x8_F,
+const image_t* img_6x8[16] = {
+    &img_6x8_0,
+    &img_6x8_1,
+    &img_6x8_2,
+    &img_6x8_3,
+    &img_6x8_4,
+    &img_6x8_5,
+    &img_6x8_6,
+    &img_6x8_7,
+    &img_6x8_8,
+    &img_6x8_9,
+    &img_6x8_A,
+    &img_6x8_B,
+    &img_6x8_C,
+    &img_6x8_D,
+    &img_6x8_E,
+    &img_6x8_F,
 };
 };
 
 
-const image_t*  img_5x7[16] = {
-	&img_5x7_0, &img_5x7_1, &img_5x7_2, &img_5x7_3, &img_5x7_4, &img_5x7_5, &img_5x7_6, &img_5x7_7,
-	&img_5x7_8, &img_5x7_9, &img_5x7_A, &img_5x7_B, &img_5x7_C, &img_5x7_D, &img_5x7_E, &img_5x7_F,
+const image_t* img_5x7[16] = {
+    &img_5x7_0,
+    &img_5x7_1,
+    &img_5x7_2,
+    &img_5x7_3,
+    &img_5x7_4,
+    &img_5x7_5,
+    &img_5x7_6,
+    &img_5x7_7,
+    &img_5x7_8,
+    &img_5x7_9,
+    &img_5x7_A,
+    &img_5x7_B,
+    &img_5x7_C,
+    &img_5x7_D,
+    &img_5x7_E,
+    &img_5x7_F,
 };
 };
 
 
 //+============================================================================ ========================================
 //+============================================================================ ========================================
@@ -30,66 +58,71 @@ const image_t*  img_5x7[16] = {
 //		// Do this ONCE ... at plugin quit
 //		// Do this ONCE ... at plugin quit
 //		furi_record_close(RECORD_NOTIFICATION);
 //		furi_record_close(RECORD_NOTIFICATION);
 //	}
 //	}
-void  patBacklight (state_t* state)
-{
-	notification_message(state->notify, &sequence_display_backlight_on);
+void patBacklight(state_t* state) {
+    notification_message(state->notify, &sequence_display_backlight_on);
 }
 }
 
 
 //============================================================================= ========================================
 //============================================================================= ========================================
 // Show a hex number in an inverted box (for ananlogue readings)
 // Show a hex number in an inverted box (for ananlogue readings)
 //
 //
-void  showHex ( Canvas* const canvas,  uint8_t x,  uint8_t y,
-                const uint32_t val,  const uint8_t cnt,  const int b )
-{
-	canvas_set_color(canvas, ColorBlack);
-	canvas_draw_box(canvas, x++,y++, 1 +(cnt *(6 +1)), 10);
+void showHex(
+    Canvas* const canvas,
+    uint8_t x,
+    uint8_t y,
+    const uint32_t val,
+    const uint8_t cnt,
+    const int b) {
+    canvas_set_color(canvas, ColorBlack);
+    canvas_draw_box(canvas, x++, y++, 1 + (cnt * (6 + 1)), 10);
 
 
-	// thicken border
-	if (b == 2)  canvas_draw_frame(canvas, x-2,y-2, 1 +(cnt *(6 +1))+2, 10+2);
+    // thicken border
+    if(b == 2) canvas_draw_frame(canvas, x - 2, y - 2, 1 + (cnt * (6 + 1)) + 2, 10 + 2);
 
 
-	for (int i = (cnt -1) *4;  i >= 0;  i -= 4, x += 6+1)
-		show(canvas, x,y, img_6x8[(val >>i) &0xF], SHOW_SET_WHT) ;
+    for(int i = (cnt - 1) * 4; i >= 0; i -= 4, x += 6 + 1)
+        show(canvas, x, y, img_6x8[(val >> i) & 0xF], SHOW_SET_WHT);
 }
 }
 
 
 //============================================================================= ========================================
 //============================================================================= ========================================
 // Show the up/down "peak hold" controls in the bottom right
 // Show the up/down "peak hold" controls in the bottom right
 //
 //
-void  showPeakHold (state_t* const state,  Canvas* const canvas,  const int hold)
-{
-	switch (hold) {
-		case 0:
-			show(canvas, 119,51, &img_key_U, SHOW_CLR_BLK);
-			show(canvas, 119,56, &img_key_D, SHOW_CLR_BLK);
-			break;
-		case +1:
-			canvas_set_color(canvas, ColorBlack);
-			canvas_draw_box(canvas, 120,52, 7,6);
-			show(canvas, 119,51, &img_key_U, SHOW_CLR_WHT);
-			show(canvas, 119,56, &img_key_D, SHOW_CLR_BLK);
-			break;
-		case -1:
-			show(canvas, 119,51, &img_key_U, SHOW_CLR_BLK);
-			canvas_draw_box(canvas, 120,57, 7,6);
-			show(canvas, 119,56, &img_key_D, SHOW_CLR_WHT);
-			break;
-		default:
-			break;
-	}
-	canvas_set_color(canvas, ColorBlack);
-	canvas_draw_frame(canvas, 119,51, 9,13);
-
-	// calibration indicator
-	show( canvas, 108,55,
-	      ((state->calib & CAL_RANGE) && (++state->flash &8)) ? &img_key_OKi : &img_key_OK,
-	      SHOW_SET_BLK );
+void showPeakHold(state_t* const state, Canvas* const canvas, const int hold) {
+    switch(hold) {
+    case 0:
+        show(canvas, 119, 51, &img_key_U, SHOW_CLR_BLK);
+        show(canvas, 119, 56, &img_key_D, SHOW_CLR_BLK);
+        break;
+    case +1:
+        canvas_set_color(canvas, ColorBlack);
+        canvas_draw_box(canvas, 120, 52, 7, 6);
+        show(canvas, 119, 51, &img_key_U, SHOW_CLR_WHT);
+        show(canvas, 119, 56, &img_key_D, SHOW_CLR_BLK);
+        break;
+    case -1:
+        show(canvas, 119, 51, &img_key_U, SHOW_CLR_BLK);
+        canvas_draw_box(canvas, 120, 57, 7, 6);
+        show(canvas, 119, 56, &img_key_D, SHOW_CLR_WHT);
+        break;
+    default:
+        break;
+    }
+    canvas_set_color(canvas, ColorBlack);
+    canvas_draw_frame(canvas, 119, 51, 9, 13);
+
+    // calibration indicator
+    show(
+        canvas,
+        108,
+        55,
+        ((state->calib & CAL_RANGE) && (++state->flash & 8)) ? &img_key_OKi : &img_key_OK,
+        SHOW_SET_BLK);
 }
 }
 
 
 //============================================================================= ========================================
 //============================================================================= ========================================
-// This code performs a FULL calibration on the device EVERY time it draws a joystick 
+// This code performs a FULL calibration on the device EVERY time it draws a joystick
 //...This is NOT a good way forward for anything other than a test tool.
 //...This is NOT a good way forward for anything other than a test tool.
 //
 //
 // Realistically you would do all the maths when the controller is connected
 // Realistically you would do all the maths when the controller is connected
-// or, if you prefer (and it IS a good thing), have a "calibrate controller" menu option 
+// or, if you prefer (and it IS a good thing), have a "calibrate controller" menu option
 // ...and then just use a lookup table, or trivial formual
 // ...and then just use a lookup table, or trivial formual
 //
 //
 // THIS algorithm chops the joystick in to one of 9 zones
 // THIS algorithm chops the joystick in to one of 9 zones
@@ -97,12 +130,12 @@ void  showPeakHold (state_t* const state,  Canvas* const canvas,  const int hold
 // FullLeft and FullRight have a deadzone of N [qv. xDead] ..a total of N+1 positions
 // FullLeft and FullRight have a deadzone of N [qv. xDead] ..a total of N+1 positions
 // Middle has a deadzone of N EACH WAY ...a total of 2N+1 positions
 // Middle has a deadzone of N EACH WAY ...a total of 2N+1 positions
 //
 //
-// If the remaining range does not divide evenly in to three zones, 
+// If the remaining range does not divide evenly in to three zones,
 //   the first remainder is added to zone3,
 //   the first remainder is added to zone3,
 //   and the second remainder (if there is one) is added to zone2
 //   and the second remainder (if there is one) is added to zone2
 //   ...giving finer control near the centre of the joystick
 //   ...giving finer control near the centre of the joystick
 //
 //
-// The value of the deadzone is based on the number of bits in the 
+// The value of the deadzone is based on the number of bits in the
 // joystcik {x,y} values - the larger the range, the larger the deadzone.
 // joystcik {x,y} values - the larger the range, the larger the deadzone.
 //
 //
 //          03                                  15                                        29
 //          03                                  15                                        29
@@ -118,106 +151,132 @@ void  showPeakHold (state_t* const state,  Canvas* const canvas,  const int hold
 //   Turn and object - this is probably good enough
 //   Turn and object - this is probably good enough
 //   Start slowly & pick up speed - how about a log or sine curve?
 //   Start slowly & pick up speed - how about a log or sine curve?
 //
 //
-void  showJoy ( Canvas* const canvas,  const uint8_t x,  const uint8_t y,  // x,y is the CENTRE of the Joystick
-                const uint8_t xMin,  const uint8_t xMid,  const uint8_t xMax,
-                const uint8_t yMin,  const uint8_t yMid,  const uint8_t yMax,
-                const uint8_t xPos,  const uint8_t yPos,  const uint8_t bits )
-{
-	int  xOff  = 0;                   // final offset of joystick hat image
-	int  yOff  = 0;
-
-	int  xDead = (bits < 7) ? (1<<0) : (1<<3);  // dead zone (centre & limits)
-	int  yDead = xDead;
-
-	// This code is NOT optimised ...and it's still barely readable!
- 	if ((xPos >= (xMid -xDead)) && (xPos <= (xMid +xDead)))  xOff =  0 ;  // centre [most likely]
-	else if (xPos <= (xMin +xDead))                          xOff = -4 ;  // full left
-	else if (xPos >= (xMax -xDead))                          xOff = +4 ;  // full right
-	else if (xPos <  (xMid -xDead)) {                                     // part left
-		// very much hard-coded for 3 interim positions
-		int  lo    = (xMin +xDead) +1;       // lowest position
-		int  hi    = (xMid -xDead) -1;       // highest position
-
-		// this is the only duplicated bit of code
-		int  range = (hi -lo) +1;            // range covered
-		int  div   = range /3;               // each division (base amount, eg. 17/3==5)
-		int  rem   = range -(div *3);        // remainder (ie. range%3)
-
-//		int  hi1   = hi;                     // lowest  value for zone #-1
-//		int  lo1   = hi1 -div +1;            // highest value for zone #-1
-//		int  hi2   = lo1 -1;                 // lowest  value for zone #-2
-//		int  lo2   = hi2 -div +1 -(rem==2);  // highest value for zone #-2 expand out remainder
-//		int  hi3   = lo2 -1;                 // lowest  value for zone #-3
-//		int  lo3   = hi3 -div +1 -(rem>=1);  // highest value for zone #-3 expand out remainder
-
-		int  lo1   = hi -div +1;             // (in brevity)
-		int  hi3   = hi -div -div -(rem==2); // ...
-
-		if      (xPos <= hi3)  xOff = -3 ;  // zone #-3
-		else if (xPos >= lo1)  xOff = -1 ;  // zone #-1
-		else                   xOff = -2 ;  // zone #-2
-
-	} else /*if (xPos > (xMid +xDead))*/ {                                // part right
-		// very much hard-coded for 3 interim positions
-		int  lo    = (xMid +xDead) +1;       // lowest position
-		int  hi    = (xMax -xDead) -1;       // highest position
-
-		int  range = (hi -lo) +1;            // range covered
-		int  div   = range /3;               // each division (base amount, eg. 17/3==5)
-		int  rem   = range -(div *3);        // remainder (ie. range%3)
-
-//		int  lo1   = lo;                     // lowest  value for zone #+1
-//		int  hi1   = lo +div -1;             // highest value for zone #+1
-//		int  lo2   = hi1 +1;                 // lowest  value for zone #+2
-//		int  hi2   = lo2 +div -1 +(rem==2);  // highest value for zone #+2 expand out remainder
-//		int  lo3   = hi2 +1;                 // lowest  value for zone #+3
-//		int  hi3   = lo3 +div -1 +(rem>=1);  // highest value for zone #+3 expand out remainder
-
-		int  hi1   = lo +div -1;             // (in brevity)
-		int  lo3   = lo +div +div +(rem==2); // ...
-
-		if      (xPos <= hi1)  xOff = 1 ;  // zone #1
-		else if (xPos >= lo3)  xOff = 3 ;  // zone #3
-		else                   xOff = 2 ;  // zone #2
-	}
-
-	// All this to print a 3x3 square (in the right place) - LOL!
- 	if ((yPos >= (yMid -yDead)) && (yPos <= (yMid +yDead)))  yOff =  0 ;  // centre [most likely]
-	else if (yPos <= (yMin +yDead))                          yOff = +4 ;  // full down
-	else if (yPos >= (yMax -yDead))                          yOff = -4 ;  // full up
-	else if (yPos <  (yMid -yDead)) {                                     // part down
-		int  lo    = (yMin +yDead) +1;       // lowest position
-		int  hi    = (yMid -yDead) -1;       // highest position
-
-		int  range = (hi -lo) +1;            // range covered
-		int  div   = range /3;               // each division (base amount, eg. 17/3==5)
-		int  rem   = range -(div *3);        // remainder (ie. range%3)
-
-		int  lo1   = hi -div +1;             // (in brevity)
-		int  hi3   = hi -div -div -(rem==2); // ...
-
-		if      (yPos <= hi3)  yOff = +3 ;   // zone #3
-		else if (yPos >= lo1)  yOff = +1 ;   // zone #1
-		else                   yOff = +2 ;   // zone #2
-
-	} else /*if (yPos > (yMid +yDead))*/ {                                // part up
-		int  lo    = (yMid +yDead) +1;       // lowest position
-		int  hi    = (yMax -yDead) -1;       // highest position
-
-		int  range = (hi -lo) +1;            // range covered
-		int  div   = range /3;               // each division (base amount, eg. 17/3==5)
-		int  rem   = range -(div *3);        // remainder (ie. range%3)
-
-		int  hi1   = lo +div -1;             // (in brevity)
-		int  lo3   = lo +div +div +(rem==2); // ...
-
-		if      (yPos <= hi1)  yOff = -1 ;   // zone #-1
-		else if (yPos >= lo3)  yOff = -3 ;   // zone #-3
-		else                   yOff = -2 ;   // zone #-2
-	}
-
-	show(canvas, x-(img_cc_Joy.w/2),y-(img_cc_Joy.h/2), &img_cc_Joy, SHOW_SET_BLK);
-
-	// All ^that^ for v-this-v - LOL!!
-	canvas_draw_box(canvas, (x-1)+xOff,(y-1)+yOff, 3,3);
+void showJoy(
+    Canvas* const canvas,
+    const uint8_t x,
+    const uint8_t y, // x,y is the CENTRE of the Joystick
+    const uint8_t xMin,
+    const uint8_t xMid,
+    const uint8_t xMax,
+    const uint8_t yMin,
+    const uint8_t yMid,
+    const uint8_t yMax,
+    const uint8_t xPos,
+    const uint8_t yPos,
+    const uint8_t bits) {
+    int xOff = 0; // final offset of joystick hat image
+    int yOff = 0;
+
+    int xDead = (bits < 7) ? (1 << 0) : (1 << 3); // dead zone (centre & limits)
+    int yDead = xDead;
+
+    // This code is NOT optimised ...and it's still barely readable!
+    if((xPos >= (xMid - xDead)) && (xPos <= (xMid + xDead)))
+        xOff = 0; // centre [most likely]
+    else if(xPos <= (xMin + xDead))
+        xOff = -4; // full left
+    else if(xPos >= (xMax - xDead))
+        xOff = +4; // full right
+    else if(xPos < (xMid - xDead)) { // part left
+        // very much hard-coded for 3 interim positions
+        int lo = (xMin + xDead) + 1; // lowest position
+        int hi = (xMid - xDead) - 1; // highest position
+
+        // this is the only duplicated bit of code
+        int range = (hi - lo) + 1; // range covered
+        int div = range / 3; // each division (base amount, eg. 17/3==5)
+        int rem = range - (div * 3); // remainder (ie. range%3)
+
+        //		int  hi1   = hi;                     // lowest  value for zone #-1
+        //		int  lo1   = hi1 -div +1;            // highest value for zone #-1
+        //		int  hi2   = lo1 -1;                 // lowest  value for zone #-2
+        //		int  lo2   = hi2 -div +1 -(rem==2);  // highest value for zone #-2 expand out remainder
+        //		int  hi3   = lo2 -1;                 // lowest  value for zone #-3
+        //		int  lo3   = hi3 -div +1 -(rem>=1);  // highest value for zone #-3 expand out remainder
+
+        int lo1 = hi - div + 1; // (in brevity)
+        int hi3 = hi - div - div - (rem == 2); // ...
+
+        if(xPos <= hi3)
+            xOff = -3; // zone #-3
+        else if(xPos >= lo1)
+            xOff = -1; // zone #-1
+        else
+            xOff = -2; // zone #-2
+
+    } else /*if (xPos > (xMid +xDead))*/ { // part right
+        // very much hard-coded for 3 interim positions
+        int lo = (xMid + xDead) + 1; // lowest position
+        int hi = (xMax - xDead) - 1; // highest position
+
+        int range = (hi - lo) + 1; // range covered
+        int div = range / 3; // each division (base amount, eg. 17/3==5)
+        int rem = range - (div * 3); // remainder (ie. range%3)
+
+        //		int  lo1   = lo;                     // lowest  value for zone #+1
+        //		int  hi1   = lo +div -1;             // highest value for zone #+1
+        //		int  lo2   = hi1 +1;                 // lowest  value for zone #+2
+        //		int  hi2   = lo2 +div -1 +(rem==2);  // highest value for zone #+2 expand out remainder
+        //		int  lo3   = hi2 +1;                 // lowest  value for zone #+3
+        //		int  hi3   = lo3 +div -1 +(rem>=1);  // highest value for zone #+3 expand out remainder
+
+        int hi1 = lo + div - 1; // (in brevity)
+        int lo3 = lo + div + div + (rem == 2); // ...
+
+        if(xPos <= hi1)
+            xOff = 1; // zone #1
+        else if(xPos >= lo3)
+            xOff = 3; // zone #3
+        else
+            xOff = 2; // zone #2
+    }
+
+    // All this to print a 3x3 square (in the right place) - LOL!
+    if((yPos >= (yMid - yDead)) && (yPos <= (yMid + yDead)))
+        yOff = 0; // centre [most likely]
+    else if(yPos <= (yMin + yDead))
+        yOff = +4; // full down
+    else if(yPos >= (yMax - yDead))
+        yOff = -4; // full up
+    else if(yPos < (yMid - yDead)) { // part down
+        int lo = (yMin + yDead) + 1; // lowest position
+        int hi = (yMid - yDead) - 1; // highest position
+
+        int range = (hi - lo) + 1; // range covered
+        int div = range / 3; // each division (base amount, eg. 17/3==5)
+        int rem = range - (div * 3); // remainder (ie. range%3)
+
+        int lo1 = hi - div + 1; // (in brevity)
+        int hi3 = hi - div - div - (rem == 2); // ...
+
+        if(yPos <= hi3)
+            yOff = +3; // zone #3
+        else if(yPos >= lo1)
+            yOff = +1; // zone #1
+        else
+            yOff = +2; // zone #2
+
+    } else /*if (yPos > (yMid +yDead))*/ { // part up
+        int lo = (yMid + yDead) + 1; // lowest position
+        int hi = (yMax - yDead) - 1; // highest position
+
+        int range = (hi - lo) + 1; // range covered
+        int div = range / 3; // each division (base amount, eg. 17/3==5)
+        int rem = range - (div * 3); // remainder (ie. range%3)
+
+        int hi1 = lo + div - 1; // (in brevity)
+        int lo3 = lo + div + div + (rem == 2); // ...
+
+        if(yPos <= hi1)
+            yOff = -1; // zone #-1
+        else if(yPos >= lo3)
+            yOff = -3; // zone #-3
+        else
+            yOff = -2; // zone #-2
+    }
+
+    show(canvas, x - (img_cc_Joy.w / 2), y - (img_cc_Joy.h / 2), &img_cc_Joy, SHOW_SET_BLK);
+
+    // All ^that^ for v-this-v - LOL!!
+    canvas_draw_box(canvas, (x - 1) + xOff, (y - 1) + yOff, 3, 3);
 }
 }

+ 40 - 26
wii_anal_lcd.h

@@ -1,43 +1,57 @@
-#ifndef  WII_ANAL_LCD_H_
-#define  WII_ANAL_LCD_H_
+#ifndef WII_ANAL_LCD_H_
+#define WII_ANAL_LCD_H_
 
 
 //----------------------------------------------------------------------------- ----------------------------------------
 //----------------------------------------------------------------------------- ----------------------------------------
 // A couple of monospaced hex fonts
 // A couple of monospaced hex fonts
 //
 //
 #include "gfx/images.h"
 #include "gfx/images.h"
 
 
-extern const image_t*  img_6x8[];
-extern const image_t*  img_5x7[];
+extern const image_t* img_6x8[];
+extern const image_t* img_5x7[];
 
 
 //============================================================================= ========================================
 //============================================================================= ========================================
 // macros to draw only two sides of a box
 // macros to draw only two sides of a box
 // these are used for drawing the wires on the WAIT screen
 // these are used for drawing the wires on the WAIT screen
 //
 //
-#define BOX_TL(x1,y1,x2,y2) do { \
-	canvas_draw_frame(canvas, x1,y1,   x2-x1+1,2);    \
-	canvas_draw_frame(canvas, x1,y1+2, 2,y2-y1+1-2);  \
-}while(0)
-
-#define BOX_BL(x1,y1,x2,y2) do { \
-	canvas_draw_frame(canvas, x1,y2-1, x2-x1+1,2);    \
-	canvas_draw_frame(canvas, x1,y1,   2,y2-y1+1-2);  \
-}while(0)
-
+#define BOX_TL(x1, y1, x2, y2)                                     \
+    do {                                                           \
+        canvas_draw_frame(canvas, x1, y1, x2 - x1 + 1, 2);         \
+        canvas_draw_frame(canvas, x1, y1 + 2, 2, y2 - y1 + 1 - 2); \
+    } while(0)
+
+#define BOX_BL(x1, y1, x2, y2)                                 \
+    do {                                                       \
+        canvas_draw_frame(canvas, x1, y2 - 1, x2 - x1 + 1, 2); \
+        canvas_draw_frame(canvas, x1, y1, 2, y2 - y1 + 1 - 2); \
+    } while(0)
 
 
 //============================================================================= ========================================
 //============================================================================= ========================================
 // Function prototypes
 // Function prototypes
 //
 //
-void  patBacklight (state_t* state) ;
-
-void  showHex ( Canvas* const canvas,  uint8_t x,  uint8_t y,
-                const uint32_t val,  const uint8_t cnt,  const int b ) ;
-
-void  showPeakHold (state_t* const state,  Canvas* const canvas,  const int hold) ;
-
-void  showJoy ( Canvas* const canvas,  const uint8_t x,  const uint8_t y,  // x,y is the CENTRE of the Joystick
-                const uint8_t xMin,  const uint8_t xMid,  const uint8_t xMax,
-                const uint8_t yMin,  const uint8_t yMid,  const uint8_t yMax,
-                const uint8_t xPos,  const uint8_t yPos,  const uint8_t bits ) ;
-
+void patBacklight(state_t* state);
+
+void showHex(
+    Canvas* const canvas,
+    uint8_t x,
+    uint8_t y,
+    const uint32_t val,
+    const uint8_t cnt,
+    const int b);
+
+void showPeakHold(state_t* const state, Canvas* const canvas, const int hold);
+
+void showJoy(
+    Canvas* const canvas,
+    const uint8_t x,
+    const uint8_t y, // x,y is the CENTRE of the Joystick
+    const uint8_t xMin,
+    const uint8_t xMid,
+    const uint8_t xMax,
+    const uint8_t yMin,
+    const uint8_t yMid,
+    const uint8_t yMax,
+    const uint8_t xPos,
+    const uint8_t yPos,
+    const uint8_t bits);
 
 
 #endif //WII_ANAL_LCD_H_
 #endif //WII_ANAL_LCD_H_

+ 5 - 6
wii_anal_ver.h

@@ -1,10 +1,9 @@
-#ifndef  WII_ANAL_VER_H_
-#define  WII_ANAL_VER_H_
+#ifndef WII_ANAL_VER_H_
+#define WII_ANAL_VER_H_
 
 
-#include  "gfx/images.h"
+#include "gfx/images.h"
 
 
-#define  VER_MAJ  &img_3x5_1
-#define  VER_MIN  &img_3x5_0
-#define  VER_SUB  &img_3x5_1
+#define VER_MAJ &img_3x5_1
+#define VER_MIN &img_3x5_0
 
 
 #endif //WII_ANAL_VER_H_
 #endif //WII_ANAL_VER_H_

Некоторые файлы не были показаны из-за большого количества измененных файлов