Browse Source

Adding applications/minesweeper demo

remotes/origin_old/ugfx_release_2.6
Joel Bodenmann 6 years ago
parent
commit
2fe5c112b0
  1. 9
      demos/applications/minesweeper/demo.mk
  2. 65
      demos/applications/minesweeper/gfxconf.h
  3. 68
      demos/applications/minesweeper/main.c
  4. 446
      demos/applications/minesweeper/mines.c
  5. 18
      demos/applications/minesweeper/mines.h
  6. 7
      demos/applications/minesweeper/readme.txt
  7. BIN
      demos/applications/minesweeper/resources/original/1.bmp
  8. BIN
      demos/applications/minesweeper/resources/original/2.bmp
  9. BIN
      demos/applications/minesweeper/resources/original/3.bmp
  10. BIN
      demos/applications/minesweeper/resources/original/4.bmp
  11. BIN
      demos/applications/minesweeper/resources/original/5.bmp
  12. BIN
      demos/applications/minesweeper/resources/original/6.bmp
  13. BIN
      demos/applications/minesweeper/resources/original/7.bmp
  14. BIN
      demos/applications/minesweeper/resources/original/8.bmp
  15. BIN
      demos/applications/minesweeper/resources/original/closed.bmp
  16. 22
      demos/applications/minesweeper/resources/original/convert_all_to_c.sh
  17. BIN
      demos/applications/minesweeper/resources/original/digital-7__mono_.ttf
  18. BIN
      demos/applications/minesweeper/resources/original/empty.bmp
  19. BIN
      demos/applications/minesweeper/resources/original/explode.bmp
  20. BIN
      demos/applications/minesweeper/resources/original/explode_fix1.bmp
  21. BIN
      demos/applications/minesweeper/resources/original/explode_fix2.bmp
  22. BIN
      demos/applications/minesweeper/resources/original/file2c
  23. BIN
      demos/applications/minesweeper/resources/original/flag.bmp
  24. BIN
      demos/applications/minesweeper/resources/original/mine.bmp
  25. BIN
      demos/applications/minesweeper/resources/original/plainflag.bmp
  26. BIN
      demos/applications/minesweeper/resources/original/plainmine.bmp
  27. BIN
      demos/applications/minesweeper/resources/original/splash.bmp
  28. BIN
      demos/applications/minesweeper/resources/original/splashclr.bmp
  29. BIN
      demos/applications/minesweeper/resources/original/splashtxt.bmp
  30. BIN
      demos/applications/minesweeper/resources/original/wrong.bmp
  31. 155
      demos/applications/minesweeper/resources/romfs/romfs_1.h
  32. 155
      demos/applications/minesweeper/resources/romfs/romfs_2.h
  33. 155
      demos/applications/minesweeper/resources/romfs/romfs_3.h
  34. 155
      demos/applications/minesweeper/resources/romfs/romfs_4.h
  35. 155
      demos/applications/minesweeper/resources/romfs/romfs_5.h
  36. 155
      demos/applications/minesweeper/resources/romfs/romfs_6.h
  37. 155
      demos/applications/minesweeper/resources/romfs/romfs_7.h
  38. 155
      demos/applications/minesweeper/resources/romfs/romfs_8.h
  39. 155
      demos/applications/minesweeper/resources/romfs/romfs_closed.h
  40. 155
      demos/applications/minesweeper/resources/romfs/romfs_empty.h
  41. 155
      demos/applications/minesweeper/resources/romfs/romfs_explode.h
  42. 155
      demos/applications/minesweeper/resources/romfs/romfs_flag.h
  43. 155
      demos/applications/minesweeper/resources/romfs/romfs_mine.h
  44. 95
      demos/applications/minesweeper/resources/romfs/romfs_plainflag.h
  45. 82
      demos/applications/minesweeper/resources/romfs/romfs_plainmine.h
  46. 11272
      demos/applications/minesweeper/resources/romfs/romfs_splash.h
  47. 232
      demos/applications/minesweeper/resources/romfs/romfs_splashclr.h
  48. 232
      demos/applications/minesweeper/resources/romfs/romfs_splashtxt.h
  49. 155
      demos/applications/minesweeper/resources/romfs/romfs_wrong.h
  50. 78
      demos/applications/minesweeper/resources/romfs/userfonts.h
  51. 22
      demos/applications/minesweeper/romfs_files.h
  52. 1
      docs/releases.txt

9
demos/applications/minesweeper/demo.mk

@ -0,0 +1,9 @@
DEMODIR = $(GFXLIB)/demos/applications/minesweeper
GFXINC += $(DEMODIR) \
$(DEMODIR)/resources/romfs
GFXSRC += $(DEMODIR)/main.c \
$(DEMODIR)/mines.c
DEFS += -DMINES_SHOW_SPLASH=TRUE

65
demos/applications/minesweeper/gfxconf.h

@ -0,0 +1,65 @@
/*
* Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu <joel@unormal.org>
* Copyright (c) 2012, 2013, Andrew Hannam aka inmarket
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the <organization> nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _GFXCONF_H
#define _GFXCONF_H
/* GFX sub-systems to turn on */
#define GFX_USE_GDISP TRUE
#define GFX_USE_GWIN TRUE
#define GFX_USE_GEVENT TRUE
#define GFX_USE_GTIMER TRUE
#define GFX_USE_GINPUT TRUE
#define GFX_USE_GFILE TRUE
#define GFILE_NEED_ROMFS TRUE
/* Features for the GDISP sub-system. */
#define GDISP_NEED_CONTROL TRUE
#define GDISP_NEED_VALIDATION TRUE
#define GDISP_NEED_CLIP TRUE
#define GDISP_NEED_TEXT TRUE
#define GDISP_NEED_MULTITHREAD TRUE
#define GDISP_NEED_IMAGE TRUE
#define GDISP_NEED_IMAGE_BMP TRUE
#define GDISP_NEED_CIRCLE TRUE
#define GDISP_NEED_ELLIPSE TRUE
#define GDISP_NEED_ARC TRUE
#define GDISP_NEED_STARTUP_LOGO FALSE
/* Builtin Fonts */
#define GDISP_INCLUDE_USER_FONTS TRUE
#define GDISP_INCLUDE_FONT_DEJAVUSANS16 TRUE
#define GDISP_INCLUDE_FONT_FIXED_10X20 TRUE
#define GDISP_INCLUDE_FONT_FIXED_5X8 TRUE
/* Features for the GINPUT sub-system. */
#define GINPUT_NEED_MOUSE TRUE
#endif /* _GFXCONF_H */

68
demos/applications/minesweeper/main.c

@ -0,0 +1,68 @@
/*
* Copyright (c) Joel Bodenmann aka Tectu <joel@embedded.pro>
* Copyright (c) Andrew Hannam aka inmarket
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the <organization> nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*
* This program was originally contributed by community member "Fleck".
*
* Some minor changes have been made by the uGFX maintainers.
*/
#include "gfx.h"
#include "mines.h"
int main(void)
{
GEventMouse ev;
#if !MINES_SHOW_SPLASH
font_t font;
#endif
gfxInit();
ginputGetMouse(0);
minesInit();
#if MINES_SHOW_SPLASH
minesShowSplash();
#else
font = gdispOpenFont("DejaVuSans16");
gdispDrawString((gdispGetWidth()-gdispGetStringWidth("Touch to start!", font))/2, gdispGetHeight()-25, "Touch to start!", font, White);
gdispCloseFont(font);
#endif
while (TRUE) {
ginputGetMouseStatus(0, &ev);
if (ev.buttons & GINPUT_MOUSE_BTN_LEFT) {
while (ev.buttons & GINPUT_MOUSE_BTN_LEFT) { // Wait until release
ginputGetMouseStatus(0, &ev);
}
minesStart();
}
}
}

446
demos/applications/minesweeper/mines.c

@ -0,0 +1,446 @@
#include <stdlib.h>
#include "gfx.h"
#include "mines.h"
typedef struct { // Node properties
uint8_t num; // Node number, how many mines around
bool_t open; // Node shown or hidden
bool_t check; // Node needs to be checked or not, used for opening up empty nodes
bool_t flag; // Node is marked with flag by player
uint16_t fieldNum; // Node number, used to randomize gamestart "animation"
} nodeProps;
static GEventMouse ev;
static nodeProps minesField[MINES_FIELD_WIDTH][MINES_FIELD_HEIGHT]; // Mines field array
static bool_t minesGameOver = FALSE;
static bool_t minesGameWinner = FALSE;
static int16_t minesEmptyNodes; // Empty node counter
static int16_t minesFlags; // Flag counter
static int16_t minesTime; // Time counter
static GTimer minesTimeCounterTimer;
static const char* minesGraph[] = {"1.bmp","2.bmp","3.bmp","4.bmp","5.bmp","6.bmp","7.bmp","8.bmp", "closed.bmp", "empty.bmp", "explode.bmp", "flag.bmp", "mine.bmp", "wrong.bmp"}; // 14 elements (0-13)
static gdispImage minesImage;
static uint8_t minesStatusIconWidth = 0;
static uint8_t minesStatusIconHeight = 0;
static bool_t minesFirstGame = TRUE; // Just don't clear field for the first time, as we have black screen already... :/
static bool_t minesSplashTxtVisible = FALSE;
#if MINES_SHOW_SPLASH
static GTimer minesSplashBlink;
#endif
static int uitoa(unsigned int value, char* buf, int max)
{
int n = 0;
int i = 0;
int tmp = 0;
if (!buf)
return -3;
if (2 > max)
return -4;
i=1;
tmp = value;
if (0 > tmp) {
tmp *= -1;
i++;
}
for (;;) {
tmp /= 10;
if (0 >= tmp)
break;
i++;
}
if (i >= max) {
buf[0] = '?';
buf[1] = 0x0;
return 2;
}
n = i;
tmp = value;
if (0 > tmp) {
tmp *= -1;
}
buf[i--] = 0x0;
for (;;) {
buf[i--] = (tmp % 10) + '0';
tmp /= 10;
if (0 >= tmp)
break;
}
if (-1 != i) {
buf[i--] = '-';
}
return n;
}
static void initRng(void)
{
srand(gfxSystemTicks());
}
static uint32_t randomInt(uint32_t max)
{
return rand() % max;
}
static void printStats(void)
{
char pps_str[12];
font_t font = gdispOpenFont("fixed_5x8");
uitoa(MINES_MINE_COUNT, pps_str, sizeof(pps_str));
gdispFillString(minesStatusIconWidth+8, gdispGetHeight()-11, " ", font, Black, Black);
gdispDrawString(minesStatusIconWidth+8, gdispGetHeight()-11, pps_str, font, White);
uitoa(minesFlags, pps_str, sizeof(pps_str));
gdispFillString(8+(minesStatusIconWidth*2)+gdispGetStringWidth("99999", font), gdispGetHeight()-11, " ", font, Black, Black);
gdispDrawString(8+(minesStatusIconWidth*2)+gdispGetStringWidth("99999", font), gdispGetHeight()-11, pps_str, font, White);
gdispCloseFont(font);
}
static void minesUpdateTime(void)
{
char pps_str[12];
if (minesTime > 9999)
minesTime = 9999;
font_t font = gdispOpenFont("digital_7__mono_20");
uitoa(minesTime, pps_str, sizeof(pps_str));
gdispFillArea((MINES_FIELD_WIDTH*MINES_CELL_WIDTH)-gdispGetStringWidth("9999", font), gdispGetHeight()-15, gdispGetWidth(), 15, Black);
gdispDrawString((MINES_FIELD_WIDTH*MINES_CELL_WIDTH)-gdispGetStringWidth(pps_str, font), gdispGetHeight()-15, pps_str, font, Lime);
gdispCloseFont(font);
}
static void minesTimeCounter(void* arg)
{
(void)arg;
minesTime++;
minesUpdateTime();
}
static bool_t inRange(int16_t x, int16_t y)
{
if ((x >= 0) && (x < MINES_FIELD_WIDTH) && (y >= 0) && (y < MINES_FIELD_HEIGHT))
return TRUE;
else
return FALSE;
}
static void showOne(int16_t x, int16_t y)
{
minesField[x][y].open = TRUE;
if (minesField[x][y].flag) {
minesField[x][y].flag = FALSE;
minesFlags--;
}
gdispFillArea((x*MINES_CELL_WIDTH)+1, (y*MINES_CELL_HEIGHT)+1, MINES_CELL_WIDTH-1, MINES_CELL_HEIGHT-1, Black);
if ((minesField[x][y].num > 0) && (minesField[x][y].num < 9)) {
gdispImageOpenFile(&minesImage, minesGraph[minesField[x][y].num-1]);
gdispImageDraw(&minesImage, (x*MINES_CELL_HEIGHT)+1, (y*MINES_CELL_WIDTH)+1, MINES_CELL_WIDTH, MINES_CELL_HEIGHT, 0, 0);
gdispImageClose(&minesImage);
minesEmptyNodes--;
} else if (minesField[x][y].num == 9) {
minesGameOver = TRUE;
minesGameWinner = FALSE;
gdispImageOpenFile(&minesImage, minesGraph[10]);
gdispImageDraw(&minesImage, (x*MINES_CELL_HEIGHT)+1, (y*MINES_CELL_WIDTH)+1, MINES_CELL_WIDTH, MINES_CELL_HEIGHT, 0, 0);
gdispImageClose(&minesImage);
// Dirty HACK to not draw mine icon on GameOver event :D
minesField[x][y].num = 0;
} else if (minesField[x][y].num == 0) {
gdispImageOpenFile(&minesImage, minesGraph[9]);
gdispImageDraw(&minesImage, (x*MINES_CELL_HEIGHT)+1, (y*MINES_CELL_WIDTH)+1, MINES_CELL_WIDTH, MINES_CELL_HEIGHT, 0, 0);
gdispImageClose(&minesImage);
minesField[x][y].check = TRUE;
minesEmptyNodes--;
}
}
static void openEmptyNodes(void)
{
int16_t x, y, i, j;
bool_t needToCheck = TRUE;
while (needToCheck) {
needToCheck = FALSE;
for (x = 0; x < MINES_FIELD_WIDTH; x++) {
for (y = 0; y < MINES_FIELD_HEIGHT; y++) {
if (minesField[x][y].check) {
for (i = -1; i <= 1; i++) {
for (j = -1; j <= 1; j++) {
if ((i != 0) || (j != 0)) { // We don't need to check middle node as it is the one we are checking right now! :D
if (inRange(x+i,y+j)) {
if (!minesField[x+i][y+j].open) showOne(x+i,y+j);
if (minesField[x+i][y+j].check) needToCheck = TRUE;
}
}
}
}
minesField[x][y].check = FALSE;
}
}
}
}
}
static DECLARE_THREAD_FUNCTION(thdMines, msg)
{
(void)msg;
uint16_t x,y, delay;
bool_t delayed = FALSE;
while (!minesGameOver) {
if (minesEmptyNodes == 0) {
minesGameOver = TRUE;
minesGameWinner = TRUE;
}
initRng();
ginputGetMouseStatus(0, &ev);
delayed = FALSE;
if (ev.buttons & GINPUT_MOUSE_BTN_LEFT) {
x = ev.x/MINES_CELL_WIDTH;
y = ev.y/MINES_CELL_WIDTH;
delay = 0;
while (ev.buttons & GINPUT_MOUSE_BTN_LEFT) { // Wait until release
ginputGetMouseStatus(0, &ev);
gfxSleepMilliseconds(1);
delay++;
if (delay >= MINES_FLAG_DELAY) {
delay = MINES_FLAG_DELAY;
if (!delayed && inRange(x, y) && !minesField[x][y].open) {
if (minesField[x][y].flag) {
gdispImageOpenFile(&minesImage, minesGraph[8]);
gdispImageDraw(&minesImage, (x*MINES_CELL_HEIGHT)+1, (y*MINES_CELL_WIDTH)+1, MINES_CELL_WIDTH-1, MINES_CELL_HEIGHT-1, 0, 0);
gdispImageClose(&minesImage);
minesField[x][y].flag = FALSE;
minesFlags--;
printStats();
} else {
gdispImageOpenFile(&minesImage, minesGraph[11]);
gdispImageDraw(&minesImage, (x*MINES_CELL_HEIGHT)+1, (y*MINES_CELL_WIDTH)+1, MINES_CELL_WIDTH, MINES_CELL_HEIGHT, 0, 0);
gdispImageClose(&minesImage);
minesField[x][y].flag = TRUE;
minesFlags++;
printStats();
}
delayed = TRUE;
}
}
}
// Check time, if longer than MINES_FLAG_DELAY then add flag...
if (delay < MINES_FLAG_DELAY) {
if ((x < MINES_FIELD_WIDTH) && (y < MINES_FIELD_HEIGHT) && !minesField[x][y].open && !minesField[x][y].flag) {
showOne(x, y);
openEmptyNodes();
printStats();
}
}
}
}
THREAD_RETURN(0);
}
static void printGameOver(void)
{
if (minesGameOver) {
font_t font = gdispOpenFont("DejaVuSans16");
if (minesGameWinner) {
gdispDrawString((gdispGetWidth()-gdispGetStringWidth("You LIVE!", font))/2, gdispGetHeight()-15, "You LIVE!", font, White);
} else {
gdispDrawString((gdispGetWidth()-gdispGetStringWidth("You DIED!", font))/2, gdispGetHeight()-15, "You DIED!", font, White);
}
gdispCloseFont(font);
} else {
gdispFillArea(0, gdispGetHeight()-25, gdispGetWidth(), 25, Black);
}
}
static void initField(void)
{
int16_t x, y, mines, i, j;
minesFlags = 0;
minesGameOver = FALSE;
printGameOver();
font_t font = gdispOpenFont("fixed_5x8");
gdispImageOpenFile(&minesImage, "plainmine.bmp");
// Saving status icons width/height for later use
minesStatusIconWidth = minesImage.width;
minesStatusIconHeight = minesImage.height;
gdispImageDraw(&minesImage, 4, gdispGetHeight()-minesImage.height, minesImage.width, minesImage.height, 0, 0);
gdispImageClose(&minesImage);
gdispImageOpenFile(&minesImage, "plainflag.bmp");
gdispImageDraw(&minesImage, 4+minesImage.width+gdispGetStringWidth("99999", font), gdispGetHeight()-minesImage.height, minesImage.width, minesImage.height, 0, 0);
gdispImageClose(&minesImage);
gdispCloseFont(font);
printStats();
initRng();
// Clearing/resetting field here...
i = 0;
for (x = 0; x < MINES_FIELD_WIDTH; x++) {
for (y = 0; y < MINES_FIELD_HEIGHT; y++) {
minesField[x][y].num = 0;
minesField[x][y].open = FALSE;
minesField[x][y].check = FALSE;
minesField[x][y].flag = FALSE;
minesField[x][y].fieldNum = i;
i++;
}
}
// Randomizing closed field drawing...
for (x = 0; x < MINES_FIELD_WIDTH; x++) {
for (y = 0; y < MINES_FIELD_HEIGHT; y++) {
// Getting random node and swapping it with current
i = randomInt(MINES_FIELD_WIDTH);
j = randomInt(MINES_FIELD_HEIGHT);
mines = minesField[x][y].fieldNum;
minesField[x][y].fieldNum = minesField[i][j].fieldNum;
minesField[i][j].fieldNum = mines;
}
}
// Clearing nodes randomly
if (!minesFirstGame) {
for (x = 0; x < MINES_FIELD_WIDTH; x++) {
for (y = 0; y < MINES_FIELD_HEIGHT; y++) {
i = minesField[x][y].fieldNum/MINES_FIELD_HEIGHT;
j = minesField[x][y].fieldNum-(i*MINES_FIELD_HEIGHT);
gdispFillArea((i*MINES_CELL_WIDTH)+1, (j*MINES_CELL_HEIGHT)+1, MINES_CELL_WIDTH, MINES_CELL_HEIGHT, Black);
gfxSleepMilliseconds(2);
}
}
} else {
minesFirstGame = FALSE;
}
// Drawing closed nodes randomly
gdispImageOpenFile(&minesImage, minesGraph[8]);
for (x = 0; x < MINES_FIELD_WIDTH; x++) {
for (y = 0; y < MINES_FIELD_HEIGHT; y++) {
i = minesField[x][y].fieldNum/MINES_FIELD_HEIGHT;
j = minesField[x][y].fieldNum-(i*MINES_FIELD_HEIGHT);
gdispImageDraw(&minesImage, (i*MINES_CELL_HEIGHT)+1, (j*MINES_CELL_WIDTH)+1, MINES_CELL_WIDTH, MINES_CELL_HEIGHT, 0, 0);
gfxSleepMilliseconds(2);
}
}
gdispImageClose(&minesImage);
minesEmptyNodes = MINES_FIELD_WIDTH*MINES_FIELD_HEIGHT;
// Placing mines in random nodes :D
mines = 0;
while (mines != MINES_MINE_COUNT) {
x = randomInt(MINES_FIELD_WIDTH);
y = randomInt(MINES_FIELD_HEIGHT);
if (minesField[x][y].num != 9) {
mines++;
minesEmptyNodes--;
minesField[x][y].num = 9;
}
}
// Calculating numbers for nearby mine nodes
for (x = 0; x < MINES_FIELD_WIDTH; x++) {
for (y = 0; y < MINES_FIELD_HEIGHT; y++) {
if (minesField[x][y].num != 9) {
for (i = -1; i <= 1; i++) {
for (j = -1; j <= 1; j++) {
if ((i != 0) || (j != 0)) { // We don't need to check middle node as we already know it is not a mine! :D
if (inRange(x+i,y+j) && (minesField[x+i][y+j].num == 9)) {
minesField[x][y].num++;
}
}
}
}
}
}
}
minesTime = 0;
minesUpdateTime();
gtimerStart(&minesTimeCounterTimer, minesTimeCounter, 0, TRUE, 1000);
}
void minesStart(void)
{
int16_t x, y;
#if MINES_SHOW_SPLASH
gtimerStop(&minesSplashBlink);
gdispClear(Black);
#endif
initField();
gfxThreadCreate(0, 1024, NORMAL_PRIORITY, thdMines, 0);
while (!minesGameOver) {
gfxSleepMilliseconds(100);
}
printGameOver();
gtimerStop(&minesTimeCounterTimer);
if (!minesGameWinner) {
// Print generated mines for player to see
font_t font = gdispOpenFont("fixed_10x20");
for (x = 0; x < MINES_FIELD_WIDTH; x++) {
for (y = 0; y < MINES_FIELD_HEIGHT; y++) {
if (minesField[x][y].num == 9 && !minesField[x][y].flag) {
gdispImageOpenFile(&minesImage, minesGraph[12]);
gdispImageDraw(&minesImage, (x*MINES_CELL_HEIGHT)+1, (y*MINES_CELL_WIDTH)+1, MINES_CELL_WIDTH, MINES_CELL_HEIGHT, 0, 0);
gdispImageClose(&minesImage);
}
if (minesField[x][y].flag && (minesField[x][y].num != 9)) {
gdispImageOpenFile(&minesImage, minesGraph[13]);
gdispImageDraw(&minesImage, (x*MINES_CELL_HEIGHT)+1, (y*MINES_CELL_WIDTH)+1, MINES_CELL_WIDTH, MINES_CELL_HEIGHT, 0, 0);
gdispImageClose(&minesImage);
}
}
}
gdispCloseFont(font);
}
}
#if MINES_SHOW_SPLASH
static void minesSplashBlinker(void* arg)
{
(void)arg;
minesSplashTxtVisible = !minesSplashTxtVisible;
if (minesSplashTxtVisible) {
gdispImageOpenFile(&minesImage, "splashtxt.bmp");
} else {
gdispImageOpenFile(&minesImage, "splashclr.bmp");
}
gdispImageDraw(&minesImage, (gdispGetWidth()/2)-150+93, (gdispGetHeight()/2)-100+161, 112, 10, 0, 0);
gdispImageClose(&minesImage);
}
void minesShowSplash(void)
{
gdispImageOpenFile(&minesImage, "splash.bmp");
gdispImageDraw(&minesImage, (gdispGetWidth()/2)-150, (gdispGetHeight()/2)-100, 300, 200, 0, 0);
gdispImageClose(&minesImage);
gtimerStart(&minesSplashBlink, minesSplashBlinker, 0, TRUE, 400);
}
#endif
void minesInit(void)
{
initRng();
gdispClear(Black);
}

18
demos/applications/minesweeper/mines.h

@ -0,0 +1,18 @@
#ifndef _MINES_H_
#define _MINES_H_
#define MINES_CELL_WIDTH 23 // Number of pixels
#define MINES_CELL_HEIGHT 23 // Number of pixels
#define MINES_FIELD_WIDTH 20 // Number of cells
#define MINES_FIELD_HEIGHT 11 // Number of cells
#define MINES_FLAG_DELAY 150 // Number of milliseconds
#define MINES_MINE_COUNT 35 // Around 15%-20% field/mines ratio is nice!
void minesInit(void);
void minesStart(void);
#if MINES_SHOW_SPLASH
void minesShowSplash(void);
#endif
#endif /* _MINES_H_ */

7
demos/applications/minesweeper/readme.txt

@ -0,0 +1,7 @@
A demo Minesweeper game using. Various configuration options can be found in mines.h
NOTE: You can save FLASH space by disabling the splash-screen, to do that set MINES_SHOW_SPLASH to FALSE.
Credits:
Code: Fleck
Images: I-Wish

BIN
demos/applications/minesweeper/resources/original/1.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
demos/applications/minesweeper/resources/original/2.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
demos/applications/minesweeper/resources/original/3.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
demos/applications/minesweeper/resources/original/4.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
demos/applications/minesweeper/resources/original/5.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
demos/applications/minesweeper/resources/original/6.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
demos/applications/minesweeper/resources/original/7.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
demos/applications/minesweeper/resources/original/8.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
demos/applications/minesweeper/resources/original/closed.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

22
demos/applications/minesweeper/resources/original/convert_all_to_c.sh

@ -0,0 +1,22 @@
!#/bin/bash
./file2c -n mines_1 -f 1.bmp 1.bmp ../romfs_1.h
./file2c -n mines_2 -f 2.bmp 2.bmp ../romfs_2.h
./file2c -n mines_3 -f 3.bmp 3.bmp ../romfs_3.h
./file2c -n mines_4 -f 4.bmp 4.bmp ../romfs_4.h
./file2c -n mines_5 -f 5.bmp 5.bmp ../romfs_5.h
./file2c -n mines_6 -f 6.bmp 6.bmp ../romfs_6.h
./file2c -n mines_7 -f 7.bmp 7.bmp ../romfs_7.h
./file2c -n mines_8 -f 8.bmp 8.bmp ../romfs_8.h
./file2c -n mines_closed -f closed.bmp closed.bmp ../romfs_closed.h
./file2c -n mines_empty -f empty.bmp empty.bmp ../romfs_empty.h
./file2c -n mines_explode -f explode.bmp explode.bmp ../romfs_explode.h
./file2c -n mines_flag -f flag.bmp flag.bmp ../romfs_flag.h
./file2c -n mines_mine -f mine.bmp mine.bmp ../romfs_mine.h
./file2c -n mines_wrong -f wrong.bmp wrong.bmp ../romfs_wrong.h
./file2c -n mines_plainmine -f plainmine.bmp plainmine.bmp ../romfs_plainmine.h
./file2c -n mines_plainflag -f plainflag.bmp plainflag.bmp ../romfs_plainflag.h
./file2c -n mines_splash -f splash.bmp splash.bmp ../romfs_splash.h
./file2c -n mines_splashtxt -f splashtxt.bmp splashtxt.bmp ../romfs_splashtxt.h
./file2c -n mines_splashclr -f splashclr.bmp splashclr.bmp ../romfs_splashclr.h

BIN
demos/applications/minesweeper/resources/original/digital-7__mono_.ttf

Binary file not shown.

BIN
demos/applications/minesweeper/resources/original/empty.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
demos/applications/minesweeper/resources/original/explode.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
demos/applications/minesweeper/resources/original/explode_fix1.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
demos/applications/minesweeper/resources/original/explode_fix2.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
demos/applications/minesweeper/resources/original/file2c

Binary file not shown.

BIN
demos/applications/minesweeper/resources/original/flag.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
demos/applications/minesweeper/resources/original/mine.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
demos/applications/minesweeper/resources/original/plainflag.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
demos/applications/minesweeper/resources/original/plainmine.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
demos/applications/minesweeper/resources/original/splash.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

BIN
demos/applications/minesweeper/resources/original/splashclr.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
demos/applications/minesweeper/resources/original/splashtxt.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
demos/applications/minesweeper/resources/original/wrong.bmp

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

155
demos/applications/minesweeper/resources/romfs/romfs_1.h

@ -0,0 +1,155 @@
/**
* This file was generated from "1.bmp" using...
*
* file2c -dn mines_1 -f 1.bmp 1.bmp ../romfs_1.h
*
*/
char mines_1[] = {
0x42, 0x4D, 0xCE, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x00, 0x7C, 0x00,
0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x03, 0x00,
0x00, 0x00, 0x44, 0x08, 0x00, 0x00, 0x23, 0x2E, 0x00, 0x00, 0x23, 0x2E, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF,
0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x42, 0x47, 0x52, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28,
0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28,
0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28,
0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28,
0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28,
0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x1D, 0x52, 0x5F, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x2E, 0xB4, 0xD6, 0xFF, 0x3C, 0xB1, 0xCE, 0xFF, 0x40, 0xB0, 0xCC, 0xFF, 0x39,
0xB6, 0xD1, 0xFF, 0x37, 0xBB, 0xCF, 0xFF, 0x2F, 0xB8, 0xD5, 0xFF, 0x32, 0xB3, 0xCE, 0xFF, 0x33,
0xB1, 0xD1, 0xFF, 0x39, 0xB6, 0xCD, 0xFF, 0x40, 0xB0, 0xCC, 0xFF, 0x38, 0xB2, 0xCC, 0xFF, 0x34,
0xB4, 0xD4, 0xFF, 0x37, 0xBA, 0xCD, 0xFF, 0x33, 0xB7, 0xCF, 0xFF, 0x36, 0xB6, 0xD2, 0xFF, 0x3F,
0xB4, 0xD1, 0xFF, 0x3C, 0xB3, 0xD0, 0xFF, 0x2F, 0xB8, 0xD5, 0xFF, 0x3B, 0xAC, 0xCD, 0xFF, 0x38,
0xB9, 0xD0, 0xFF, 0x45, 0xBA, 0xCB, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x35,
0xC0, 0xD5, 0xFF, 0x3B, 0xAF, 0xD1, 0xFF, 0x3A, 0xB4, 0xD2, 0xFF, 0x3E, 0xB1, 0xD2, 0xFF, 0x32,
0xBC, 0xDA, 0xFF, 0x2D, 0xBF, 0xDF, 0xFF, 0x37, 0xB0, 0xD3, 0xFF, 0x32, 0xB8, 0xDA, 0xFF, 0x2C,
0xBF, 0xDA, 0xFF, 0x35, 0xB9, 0xD5, 0xFF, 0x31, 0xB9, 0xDB, 0xFF, 0x30, 0xBA, 0xDC, 0xFF, 0x2D,
0xB1, 0xD7, 0xFF, 0x32, 0xB1, 0xD6, 0xFF, 0x32, 0xB1, 0xD6, 0xFF, 0x38, 0xB4, 0xD8, 0xFF, 0x3E,
0xB4, 0xD6, 0xFF, 0x34, 0xBB, 0xD8, 0xFF, 0x39, 0xB4, 0xD7, 0xFF, 0x37, 0xAA, 0xD5, 0xFF, 0x39,
0xB1, 0xD3, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x42, 0xAF, 0xCE, 0xFF, 0x41,
0xC4, 0xD3, 0xFF, 0x37, 0xC1, 0xD5, 0xFF, 0x39, 0xBD, 0xD5, 0xFF, 0x3D, 0xB6, 0xCB, 0xFF, 0x44,
0xB1, 0xCC, 0xFF, 0x3A, 0xC0, 0xD0, 0xFF, 0x37, 0xC2, 0xD3, 0xFF, 0x40, 0xBC, 0xD2, 0xFF, 0x3E,
0xBD, 0xD0, 0xFF, 0x3C, 0xBC, 0xD4, 0xFF, 0x3A, 0xBB, 0xD6, 0xFF, 0x3F, 0xB1, 0xD1, 0xFF, 0x3E,
0xB8, 0xD2, 0xFF, 0x40, 0xBA, 0xD0, 0xFF, 0x3B, 0xBA, 0xD1, 0xFF, 0x3B, 0xB8, 0xCF, 0xFF, 0x35,
0xB9, 0xD5, 0xFF, 0x36, 0xB6, 0xD6, 0xFF, 0x3F, 0xB4, 0xD1, 0xFF, 0x3D, 0xAE, 0xD3, 0xFF, 0x28,
0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x3F, 0xB1, 0xD1, 0xFF, 0x3A, 0xB4, 0xD2, 0xFF, 0x37,
0xBA, 0xD1, 0xFF, 0x39, 0xBB, 0xCF, 0xFF, 0x40, 0xB3, 0xC8, 0xFF, 0x40, 0xB7, 0xCC, 0xFF, 0x3F,
0xB1, 0xC9, 0xFF, 0x3A, 0xB6, 0xD0, 0xFF, 0x41, 0xAF, 0xC7, 0xFF, 0x45, 0xB1, 0xC5, 0xFF, 0x47,
0xAA, 0xC3, 0xFF, 0x3C, 0xB6, 0xD0, 0xFF, 0x3F, 0xB1, 0xCD, 0xFF, 0x45, 0xB0, 0xCB, 0xFF, 0x3F,
0xB1, 0xCD, 0xFF, 0x40, 0xAD, 0xC8, 0xFF, 0x4B, 0xA0, 0xC3, 0xFF, 0x44, 0xB1, 0xCC, 0xFF, 0x42,
0xAC, 0xCE, 0xFF, 0x3E, 0xAA, 0xCE, 0xFF, 0x3C, 0xB1, 0xCE, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x33, 0xB1, 0xD1, 0xFF, 0x31, 0xBA, 0xD3, 0xFF, 0x3B, 0xAC, 0xCD, 0xFF, 0x39,
0xC3, 0xD3, 0xFF, 0x3F, 0xBE, 0xD1, 0xFF, 0x2A, 0xC3, 0xDA, 0xFF, 0x2F, 0xC5, 0xD7, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3A, 0xB4, 0xD2, 0xFF, 0x32,
0xB7, 0xD4, 0xFF, 0x33, 0xB5, 0xD5, 0xFF, 0x3A, 0xB6, 0xD0, 0xFF, 0x3F, 0xB1, 0xCD, 0xFF, 0x4C,
0xAD, 0xC8, 0xFF, 0x49, 0xB7, 0xCB, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x3A,
0xC4, 0xCC, 0xFF, 0x2F, 0xC0, 0xD1, 0xFF, 0x33, 0xBF, 0xCF, 0xFF, 0x37, 0xBF, 0xCF, 0xFF, 0x38,
0xC4, 0xD0, 0xFF, 0x30, 0xBD, 0xD2, 0xFF, 0x33, 0xBC, 0xD1, 0xFF, 0x33, 0xC3, 0xD0, 0xFF, 0x5A,
0xC3, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5D,
0xC2, 0xD7, 0xFF, 0x3A, 0xBF, 0xCF, 0xFF, 0x33, 0xB2, 0xD1, 0xFF, 0x31, 0xBA, 0xD3, 0xFF, 0x3D,
0xB7, 0xCD, 0xFF, 0x35, 0xB7, 0xCF, 0xFF, 0x3B, 0xBA, 0xCD, 0xFF, 0x31, 0xBA, 0xD3, 0xFF, 0x3B,
0xB7, 0xCD, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x36, 0xC5, 0xD2, 0xFF, 0x39,
0xB1, 0xCF, 0xFF, 0x3A, 0xC0, 0xD0, 0xFF, 0x35, 0xB7, 0xD3, 0xFF, 0x3D, 0xB7, 0xCD, 0xFF, 0x3B,
0xBA, 0xCD, 0xFF, 0x32, 0xAC, 0xD4, 0xFF, 0x35, 0xB7, 0xCF, 0xFF, 0x3F, 0xB5, 0xCB, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2E, 0xC0, 0xD6, 0xFF, 0x37,
0xB6, 0xD1, 0xFF, 0x37, 0xAC, 0xD3, 0xFF, 0x3D, 0xB8, 0xCF, 0xFF, 0x45, 0xB0, 0xCB, 0xFF, 0x45,
0xAF, 0xC9, 0xFF, 0x3D, 0xAE, 0xCF, 0xFF, 0x47, 0xAF, 0xC5, 0xFF, 0x3C, 0xB6, 0xCC, 0xFF, 0x28,
0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x3D, 0xB5, 0xCF, 0xFF, 0x42, 0xB6, 0xCE, 0xFF, 0x3B,
0xB7, 0xCD, 0xFF, 0x3C, 0xB6, 0xCC, 0xFF, 0x30, 0xB7, 0xD4, 0xFF, 0x37, 0xB4, 0xD3, 0xFF, 0x37,
0xB4, 0xD3, 0xFF, 0x3A, 0xB6, 0xD0, 0xFF, 0x2D, 0xB7, 0xD9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x37, 0xB6, 0xD5, 0xFF, 0x3A, 0xB4, 0xD2, 0xFF, 0x33,
0xB5, 0xD5, 0xFF, 0x29, 0xB7, 0xDB, 0xFF, 0x39, 0xB4, 0xD3, 0xFF, 0x42, 0xA8, 0xCE, 0xFF, 0x44,
0xB1, 0xCC, 0xFF, 0x39, 0xB4, 0xD3, 0xFF, 0x3C, 0xB9, 0xD0, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x3A, 0xB9, 0xC8, 0xFF, 0x2E, 0xC1, 0xD2, 0xFF, 0x3D, 0xB8, 0xC7, 0xFF, 0x3A,
0xBA, 0xCA, 0xFF, 0x3A, 0xBB, 0xC6, 0xFF, 0x3B, 0xB1, 0xC3, 0xFF, 0x2E, 0xC5, 0xCE, 0xFF, 0x37,
0xB1, 0xC3, 0xFF, 0x43, 0xB2, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x30, 0xB9, 0xD2, 0xFF, 0x3A, 0xB4, 0xCA, 0xFF, 0x3B, 0xB0, 0xC5, 0xFF, 0x46,
0xB2, 0xC2, 0xFF, 0x34, 0xB5, 0xCC, 0xFF, 0x3F, 0xB0, 0xC1, 0xFF, 0x39, 0xB1, 0xC3, 0xFF, 0x3F,
0xB4, 0xC5, 0xFF, 0x3A, 0xBA, 0xCA, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x32,
0xB3, 0xCE, 0xFF, 0x2E, 0xBD, 0xD6, 0xFF, 0x34, 0xBB, 0xD8, 0xFF, 0x34, 0xBF, 0xD8, 0xFF, 0x34,
0xBF, 0xD4, 0xFF, 0x2C, 0xBC, 0xD6, 0xFF, 0x32, 0xB7, 0xD4, 0xFF, 0x33, 0xAF, 0xD3, 0xFF, 0x37,
0xB6, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2B,
0xBA, 0xD9, 0xFF, 0x3A, 0xB4, 0xD2, 0xFF, 0x3A, 0xB4, 0xD2, 0xFF, 0x39, 0xB6, 0xD1, 0xFF, 0x36,
0xB7, 0xD2, 0xFF, 0x39, 0xAF, 0xCD, 0xFF, 0x30, 0xB1, 0xD2, 0xFF, 0x40, 0xAD, 0xC8, 0xFF, 0x3E,
0xAB, 0xCA, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x3C, 0xB1, 0xCA, 0xFF, 0x35,
0xB8, 0xCF, 0xFF, 0x2E, 0xB5, 0xD6, 0xFF, 0x30, 0xB1, 0xD2, 0xFF, 0x2F, 0xB8, 0xD5, 0xFF, 0x3C,
0xB4, 0xD2, 0xFF, 0x35, 0xB9, 0xD1, 0xFF, 0x31, 0xBE, 0xD7, 0xFF, 0x31, 0xB4, 0xD9, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x34, 0xBC, 0xD0, 0xFF, 0x31,
0xC0, 0xD1, 0xFF, 0x34, 0xBB, 0xD4, 0xFF, 0x39, 0xAA, 0xCF, 0xFF, 0x38, 0xAB, 0xD0, 0xFF, 0x3B,
0xAF, 0xD1, 0xFF, 0x39, 0xB1, 0xCF, 0xFF, 0x37, 0xAF, 0xD1, 0xFF, 0x35, 0xB7, 0xD3, 0xFF, 0x28,
0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x42, 0xB9, 0xCA, 0xFF, 0x43, 0xAE, 0xC9, 0xFF, 0x43,
0xB5, 0xC9, 0xFF, 0x38, 0xB9, 0xD0, 0xFF, 0x34, 0xBA, 0xCE, 0xFF, 0x33, 0xBD, 0xCD, 0xFF, 0x3D,
0xB0, 0xCD, 0xFF, 0x49, 0xB2, 0xC5, 0xFF, 0x3F, 0xC1, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x36, 0xB7, 0xD2, 0xFF, 0x43, 0xB5, 0xC9, 0xFF, 0x3E,
0xC3, 0xC8, 0xFF, 0x3E, 0xC2, 0xCA, 0xFF, 0x33, 0xC2, 0xD3, 0xFF, 0x4A, 0xB2, 0xC2, 0xFF, 0x40,
0xB3, 0xC8, 0xFF, 0x47, 0xB0, 0xC3, 0xFF, 0x49, 0xAF, 0xC5, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x33, 0xC3, 0xD9, 0xFF, 0x39, 0xB4, 0xD3, 0xFF, 0x42, 0xB9, 0xCA, 0xFF, 0x41,
0xB0, 0xCB, 0xFF, 0x46, 0xB3, 0xCE, 0xFF, 0x3E, 0xB8, 0xD2, 0xFF, 0x34, 0xB3, 0xD8, 0xFF, 0x2D,
0xC1, 0xDB, 0xFF, 0x3D, 0xBC, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x3C, 0xB1, 0xCE, 0xFF, 0x33, 0xB2, 0xD1, 0xFF, 0x30, 0xB7, 0xD4, 0xFF, 0x39,
0xBF, 0xD3, 0xFF, 0x3A, 0xBB, 0xD2, 0xFF, 0x42, 0xB5, 0xCE, 0xFF, 0x35, 0xB9, 0xD1, 0xFF, 0x35,
0xB7, 0xD3, 0xFF, 0x32, 0xB9, 0xD6, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x37,
0xB5, 0xD5, 0xFF, 0x2E, 0xC0, 0xDA, 0xFF, 0x34, 0xB4, 0xD4, 0xFF, 0x36, 0xC5, 0xD6, 0xFF, 0x37,
0xBB, 0xD3, 0xFF, 0x34, 0xBB, 0xD8, 0xFF, 0x2A, 0xC3, 0xDA, 0xFF, 0xD3, 0xF0, 0xF6, 0xFF, 0xDE,
0xF3, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2C,
0xC5, 0xDC, 0xFF, 0x2F, 0xB5, 0xD7, 0xFF, 0x2D, 0xBD, 0xD7, 0xFF, 0x35, 0xB7, 0xD3, 0xFF, 0x33,
0xB4, 0xD5, 0xFF, 0x3A, 0xB0, 0xD2, 0xFF, 0x38, 0xB1, 0xD0, 0xFF, 0x35, 0xB0, 0xCF, 0xFF, 0x37,
0xB4, 0xD3, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x3D, 0xB9, 0xCB, 0xFF, 0x41,
0xB7, 0xC9, 0xFF, 0x31, 0xC0, 0xD1, 0xFF, 0x2F, 0xC7, 0xD5, 0xFF, 0x3D, 0xB9, 0xCB, 0xFF, 0x35,
0xBF, 0xCF, 0xFF, 0x3E, 0xB1, 0xC6, 0xFF, 0x68, 0xBF, 0xCE, 0xFF, 0xB6, 0xE2, 0xEA, 0xFF, 0xF9,
0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x36, 0xB7, 0xCE, 0xFF, 0x35,
0xB8, 0xCF, 0xFF, 0x39, 0xB6, 0xCD, 0xFF, 0x38, 0xB9, 0xD0, 0xFF, 0x33, 0xB9, 0xD1, 0xFF, 0x3B,
0xB0, 0xC9, 0xFF, 0x3B, 0xBA, 0xC9, 0xFF, 0x37, 0xC0, 0xCD, 0xFF, 0x38, 0xB8, 0xCC, 0xFF, 0x28,
0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x39, 0xB6, 0xD1, 0xFF, 0x32, 0xB9, 0xD2, 0xFF, 0x3A,
0xB4, 0xD2, 0xFF, 0x31, 0xBC, 0xD1, 0xFF, 0x2A, 0xB9, 0xD2, 0xFF, 0x2A, 0xB5, 0xD8, 0xFF, 0x28,
0xB3, 0xD6, 0xFF, 0x34, 0xB0, 0xD4, 0xFF, 0x35, 0xBB, 0xD7, 0xFF, 0x4A, 0xC2, 0xD8, 0xFF, 0x99,
0xD7, 0xE7, 0xFF, 0xE9, 0xF6, 0xF9, 0xFF, 0x30, 0xB1, 0xDC, 0xFF, 0x33, 0xBB, 0xD9, 0xFF, 0x37,
0xB6, 0xD5, 0xFF, 0x34, 0xC6, 0xD8, 0xFF, 0x36, 0xB6, 0xD6, 0xFF, 0x37, 0xB0, 0xD3, 0xFF, 0x34,
0xB0, 0xD4, 0xFF, 0x36, 0xB1, 0xD4, 0xFF, 0x3E, 0xB1, 0xCE, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x32, 0xC5, 0xD6, 0xFF, 0x43, 0xAE, 0xC1, 0xFF, 0x34, 0xBB, 0xD4, 0xFF, 0x32,
0xB9, 0xD2, 0xFF, 0x3A, 0xB4, 0xCA, 0xFF, 0x38, 0xBC, 0xD0, 0xFF, 0x34, 0xBC, 0xD0, 0xFF, 0x2B,
0xBB, 0xD5, 0xFF, 0x2D, 0xB7, 0xD9, 0xFF, 0x3A, 0xAF, 0xD0, 0xFF, 0x37, 0xB6, 0xD1, 0xFF, 0x34,
0xB4, 0xD4, 0xFF, 0x3D, 0xAD, 0xC9, 0xFF, 0x31, 0xBC, 0xD5, 0xFF, 0x32, 0xAC, 0xD4, 0xFF, 0x32,
0xB2, 0xD6, 0xFF, 0x42, 0xA4, 0xC8, 0xFF, 0x36, 0xB0, 0xCE, 0xFF, 0x39, 0xB3, 0xC9, 0xFF, 0x3A,
0xB0, 0xD2, 0xFF, 0x3A, 0xAD, 0xCA, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x3C,
0xB6, 0xD0, 0xFF, 0x3B, 0xB3, 0xD1, 0xFF, 0x3A, 0xB5, 0xD4, 0xFF, 0x3E, 0xB1, 0xCE, 0xFF, 0x3C,
0xB1, 0xCE, 0xFF, 0x34, 0xB0, 0xD4, 0xFF, 0x33, 0xB6, 0xD7, 0xFF, 0x31, 0xB0, 0xD5, 0xFF, 0x34,
0xB0, 0xD4, 0xFF, 0x34, 0xBB, 0xD8, 0xFF, 0x3C, 0xB1, 0xCE, 0xFF, 0x3B, 0xB3, 0xD1, 0xFF, 0x37,
0xB4, 0xD3, 0xFF, 0x36, 0xA9, 0xD4, 0xFF, 0x2C, 0xB0, 0xD6, 0xFF, 0x3D, 0xA3, 0xCD, 0xFF, 0x3E,
0xAA, 0xCE, 0xFF, 0x3F, 0xB1, 0xCD, 0xFF, 0x3B, 0xB0, 0xCD, 0xFF, 0x3E, 0xA5, 0xD0, 0xFF, 0x3F,
0xB5, 0xCF, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x3B, 0xBA, 0xD5, 0xFF, 0x43,
0xAE, 0xC9, 0xFF, 0x38, 0xC0, 0xD4, 0xFF, 0x27, 0xC3, 0xDF, 0xFF, 0x29, 0xBB, 0xDF, 0xFF, 0x35,
0xB3, 0xD7, 0xFF, 0x31, 0xBB, 0xD9, 0xFF, 0x35, 0xB9, 0xD5, 0xFF, 0x3A, 0xBE, 0xD6, 0xFF, 0x3B,
0xB3, 0xD1, 0xFF, 0x34, 0xB3, 0xD8, 0xFF, 0x31, 0xB4, 0xD5, 0xFF, 0x35, 0xAB, 0xD7, 0xFF, 0x3E,
0xAC, 0xD0, 0xFF, 0x2D, 0xB5, 0xD7, 0xFF, 0x35, 0xAD, 0xCF, 0xFF, 0x34, 0xB0, 0xD4, 0xFF, 0x37,
0xA7, 0xD1, 0xFF, 0x39, 0xA7, 0xD5, 0xFF, 0x40, 0xAC, 0xD4, 0xFF, 0x2D, 0xB5, 0xD7, 0xFF, 0x28,
0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x4A, 0xB1, 0xC0, 0xFF, 0x3D, 0xB8, 0xC7, 0xFF, 0x45,
0xB9, 0xC3, 0xFF, 0x42, 0xBA, 0xC2, 0xFF, 0x38, 0xBE, 0xCA, 0xFF, 0x38, 0xBF, 0xCC, 0xFF, 0x3A,
0xC5, 0xCA, 0xFF, 0x41, 0xBC, 0xC7, 0xFF, 0x44, 0xBD, 0xC8, 0xFF, 0x44, 0xC1, 0xC6, 0xFF, 0x3E,
0xBD, 0xC8, 0xFF, 0x3C, 0xB8, 0xCA, 0xFF, 0x38, 0xC3, 0xCC, 0xFF, 0x38, 0xB8, 0xCC, 0xFF, 0x37,
0xBC, 0xCF, 0xFF, 0x39, 0xC2, 0xCB, 0xFF, 0x37, 0xC4, 0xCD, 0xFF, 0x41, 0xB1, 0xC9, 0xFF, 0x3D,
0xB8, 0xC7, 0xFF, 0x43, 0xB1, 0xC5, 0xFF, 0x44, 0xB0, 0xC4, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x2E, 0xC4, 0xD6, 0xFF, 0x31, 0xB6, 0xD7, 0xFF, 0x30, 0xC0, 0xDA, 0xFF, 0x34,
0xB9, 0xDA, 0xFF, 0x34, 0xB9, 0xDA, 0xFF, 0x2F, 0xC3, 0xD9, 0xFF, 0x2D, 0xB7, 0xD9, 0xFF, 0x2A,
0xBC, 0xDC, 0xFF, 0x39, 0xB6, 0xD1, 0xFF, 0x40, 0xAE, 0xCE, 0xFF, 0x3C, 0xC2, 0xD2, 0xFF, 0x37,
0xC1, 0xD5, 0xFF, 0x2E, 0xBC, 0xDA, 0xFF, 0x32, 0xC0, 0xD6, 0xFF, 0x2A, 0xBE, 0xD4, 0xFF, 0x34,
0xBA, 0xCE, 0xFF, 0x36, 0xB7, 0xCE, 0xFF, 0x32, 0xB7, 0xD4, 0xFF, 0x2B, 0xB6, 0xD9, 0xFF, 0x31,
0xC1, 0xD7, 0xFF, 0x38, 0xB9, 0xD0, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D,
};
#ifdef ROMFS_DIRENTRY_HEAD
ROMFS_DIRENTRY mines_1_dir = { 0, 0, ROMFS_DIRENTRY_HEAD, "1.bmp", 2254, mines_1 };
#undef ROMFS_DIRENTRY_HEAD
#define ROMFS_DIRENTRY_HEAD &mines_1_dir
#endif

155
demos/applications/minesweeper/resources/romfs/romfs_2.h

@ -0,0 +1,155 @@
/**
* This file was generated from "2.bmp" using...
*
* file2c -dn mines_2 -f 2.bmp 2.bmp ../romfs_2.h
*
*/
char mines_2[] = {
0x42, 0x4D, 0xCE, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x00, 0x7C, 0x00,
0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x03, 0x00,
0x00, 0x00, 0x44, 0x08, 0x00, 0x00, 0x23, 0x2E, 0x00, 0x00, 0x23, 0x2E, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF,
0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x42, 0x47, 0x52, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28,
0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28,
0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28,
0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28,
0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28,
0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x1D, 0x52, 0x5F, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x2E, 0xB4, 0xD6, 0xFF, 0x3C, 0xB1, 0xCE, 0xFF, 0x40, 0xB0, 0xCC, 0xFF, 0x39,
0xB6, 0xD1, 0xFF, 0x37, 0xBB, 0xCF, 0xFF, 0x2F, 0xB8, 0xD5, 0xFF, 0x32, 0xB3, 0xCE, 0xFF, 0x33,
0xB1, 0xD1, 0xFF, 0x39, 0xB6, 0xCD, 0xFF, 0x40, 0xB0, 0xCC, 0xFF, 0x38, 0xB2, 0xCC, 0xFF, 0x34,
0xB4, 0xD4, 0xFF, 0x37, 0xBA, 0xCD, 0xFF, 0x33, 0xB7, 0xCF, 0xFF, 0x36, 0xB6, 0xD2, 0xFF, 0x3F,
0xB4, 0xD1, 0xFF, 0x3C, 0xB3, 0xD0, 0xFF, 0x2F, 0xB8, 0xD5, 0xFF, 0x3B, 0xAC, 0xCD, 0xFF, 0x38,
0xB9, 0xD0, 0xFF, 0x45, 0xBA, 0xCB, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x35,
0xC0, 0xD5, 0xFF, 0x3B, 0xAF, 0xD1, 0xFF, 0x3A, 0xB4, 0xD2, 0xFF, 0x3E, 0xB1, 0xD2, 0xFF, 0x32,
0xBC, 0xDA, 0xFF, 0x2D, 0xBF, 0xDF, 0xFF, 0x37, 0xB0, 0xD3, 0xFF, 0x32, 0xB8, 0xDA, 0xFF, 0x2C,
0xBF, 0xDA, 0xFF, 0x35, 0xB9, 0xD5, 0xFF, 0x31, 0xB9, 0xDB, 0xFF, 0x30, 0xBA, 0xDC, 0xFF, 0x2D,
0xB1, 0xD7, 0xFF, 0x32, 0xB1, 0xD6, 0xFF, 0x32, 0xB1, 0xD6, 0xFF, 0x38, 0xB4, 0xD8, 0xFF, 0x3E,
0xB4, 0xD6, 0xFF, 0x34, 0xBB, 0xD8, 0xFF, 0x39, 0xB4, 0xD7, 0xFF, 0x37, 0xAA, 0xD5, 0xFF, 0x39,
0xB1, 0xD3, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x42, 0xAF, 0xCE, 0xFF, 0x41,
0xC4, 0xD3, 0xFF, 0x37, 0xC1, 0xD5, 0xFF, 0x39, 0xBD, 0xD5, 0xFF, 0x3D, 0xB6, 0xCB, 0xFF, 0x44,
0xB1, 0xCC, 0xFF, 0x3A, 0xC0, 0xD0, 0xFF, 0x37, 0xC2, 0xD3, 0xFF, 0x40, 0xBC, 0xD2, 0xFF, 0x3E,
0xBD, 0xD0, 0xFF, 0x3C, 0xBC, 0xD4, 0xFF, 0x3A, 0xBB, 0xD6, 0xFF, 0x3F, 0xB1, 0xD1, 0xFF, 0x3E,
0xB8, 0xD2, 0xFF, 0x40, 0xBA, 0xD0, 0xFF, 0x3B, 0xBA, 0xD1, 0xFF, 0x3B, 0xB8, 0xCF, 0xFF, 0x35,
0xB9, 0xD5, 0xFF, 0x36, 0xB6, 0xD6, 0xFF, 0x3F, 0xB4, 0xD1, 0xFF, 0x3D, 0xAE, 0xD3, 0xFF, 0x28,
0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x3F, 0xB1, 0xD1, 0xFF, 0x3A, 0xB4, 0xD2, 0xFF, 0x37,
0xBA, 0xD1, 0xFF, 0x39, 0xBB, 0xCF, 0xFF, 0x40, 0xB3, 0xC8, 0xFF, 0x40, 0xB7, 0xCC, 0xFF, 0x3F,
0xB1, 0xC9, 0xFF, 0x3A, 0xB6, 0xD0, 0xFF, 0x41, 0xAF, 0xC7, 0xFF, 0x45, 0xB1, 0xC5, 0xFF, 0x47,
0xAA, 0xC3, 0xFF, 0x3C, 0xB6, 0xD0, 0xFF, 0x3F, 0xB1, 0xCD, 0xFF, 0x45, 0xB0, 0xCB, 0xFF, 0x3F,
0xB1, 0xCD, 0xFF, 0x40, 0xAD, 0xC8, 0xFF, 0x4B, 0xA0, 0xC3, 0xFF, 0x44, 0xB1, 0xCC, 0xFF, 0x42,
0xAC, 0xCE, 0xFF, 0x3E, 0xAA, 0xCE, 0xFF, 0x3C, 0xB1, 0xCE, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x33, 0xB1, 0xD1, 0xFF, 0x31, 0xBA, 0xD3, 0xFF, 0x3B, 0xAC, 0xCD, 0xFF, 0x39,
0xC3, 0xD3, 0xFF, 0x3F, 0xBE, 0xD1, 0xFF, 0x2A, 0xC3, 0xDA, 0xFF, 0x26, 0x82, 0x4C, 0xFF, 0x25,
0x70, 0x23, 0xFF, 0x25, 0x70, 0x23, 0xFF, 0x25, 0x70, 0x23, 0xFF, 0x25, 0x70, 0x23, 0xFF, 0x25,
0x70, 0x23, 0xFF, 0x24, 0x70, 0x26, 0xFF, 0x32, 0xB1, 0xCB, 0xFF, 0x3A, 0xB4, 0xD2, 0xFF, 0x32,
0xB7, 0xD4, 0xFF, 0x33, 0xB5, 0xD5, 0xFF, 0x3A, 0xB6, 0xD0, 0xFF, 0x3F, 0xB1, 0xCD, 0xFF, 0x4C,
0xAD, 0xC8, 0xFF, 0x49, 0xB7, 0xCB, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x3A,
0xC4, 0xCC, 0xFF, 0x2F, 0xC0, 0xD1, 0xFF, 0x33, 0xBF, 0xCF, 0xFF, 0x37, 0xBF, 0xCF, 0xFF, 0x38,
0xC4, 0xD0, 0xFF, 0x30, 0xBD, 0xD2, 0xFF, 0x30, 0xB0, 0xB9, 0xFF, 0x24, 0x72, 0x29, 0xFF, 0x25,
0x70, 0x23, 0xFF, 0x25, 0x70, 0x23, 0xFF, 0x25, 0x70, 0x23, 0xFF, 0x25, 0x70, 0x23, 0xFF, 0x25,
0x70, 0x23, 0xFF, 0x31, 0x9D, 0x85, 0xFF, 0x33, 0xB2, 0xD1, 0xFF, 0x31, 0xBA, 0xD3, 0xFF, 0x3D,
0xB7, 0xCD, 0xFF, 0x35, 0xB7, 0xCF, 0xFF, 0x3B, 0xBA, 0xCD, 0xFF, 0x31, 0xBA, 0xD3, 0xFF, 0x3B,
0xB7, 0xCD, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x36, 0xC5, 0xD2, 0xFF, 0x39,
0xB1, 0xCF, 0xFF, 0x3A, 0xC0, 0xD0, 0xFF, 0x35, 0xB7, 0xD3, 0xFF, 0x3D, 0xB7, 0xCD, 0xFF, 0x3B,
0xBA, 0xCD, 0xFF, 0x32, 0xAC, 0xD4, 0xFF, 0x2E, 0x98, 0x85, 0xFF, 0x25, 0x70, 0x23, 0xFF, 0x2E,
0x96, 0x86, 0xFF, 0x37, 0xB6, 0xD1, 0xFF, 0x39, 0xB8, 0xCF, 0xFF, 0x2C, 0xB7, 0xC3, 0xFF, 0x2A,
0x87, 0x5D, 0xFF, 0x37, 0xAC, 0xD3, 0xFF, 0x3D, 0xB8, 0xCF, 0xFF, 0x45, 0xB0, 0xCB, 0xFF, 0x45,
0xAF, 0xC9, 0xFF, 0x3D, 0xAE, 0xCF, 0xFF, 0x47, 0xAF, 0xC5, 0xFF, 0x3C, 0xB6, 0xCC, 0xFF, 0x28,
0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x3D, 0xB5, 0xCF, 0xFF, 0x42, 0xB6, 0xCE, 0xFF, 0x3B,
0xB7, 0xCD, 0xFF, 0x3C, 0xB6, 0xCC, 0xFF, 0x30, 0xB7, 0xD4, 0xFF, 0x37, 0xB4, 0xD3, 0xFF, 0x37,
0xB4, 0xD3, 0xFF, 0x39, 0xB5, 0xCF, 0xFF, 0x26, 0x7F, 0x4D, 0xFF, 0x25, 0x6F, 0x24, 0xFF, 0x31,
0xA1, 0x9E, 0xFF, 0x34, 0xB4, 0xD4, 0xFF, 0x37, 0xB6, 0xD5, 0xFF, 0x3A, 0xB4, 0xD2, 0xFF, 0x33,
0xB5, 0xD5, 0xFF, 0x29, 0xB7, 0xDB, 0xFF, 0x39, 0xB4, 0xD3, 0xFF, 0x42, 0xA8, 0xCE, 0xFF, 0x44,
0xB1, 0xCC, 0xFF, 0x39, 0xB4, 0xD3, 0xFF, 0x3C, 0xB9, 0xD0, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x3A, 0xB9, 0xC8, 0xFF, 0x2E, 0xC1, 0xD2, 0xFF, 0x3D, 0xB8, 0xC7, 0xFF, 0x3A,
0xBA, 0xCA, 0xFF, 0x3A, 0xBB, 0xC6, 0xFF, 0x3B, 0xB1, 0xC3, 0xFF, 0x2E, 0xC5, 0xCE, 0xFF, 0x37,
0xB1, 0xC3, 0xFF, 0x3D, 0xA6, 0xA5, 0xFF, 0x24, 0x70, 0x24, 0xFF, 0x26, 0x74, 0x2D, 0xFF, 0x31,
0xAC, 0xB6, 0xFF, 0x30, 0xB9, 0xD2, 0xFF, 0x3A, 0xB4, 0xCA, 0xFF, 0x3B, 0xB0, 0xC5, 0xFF, 0x46,
0xB2, 0xC2, 0xFF, 0x34, 0xB5, 0xCC, 0xFF, 0x3F, 0xB0, 0xC1, 0xFF, 0x39, 0xB1, 0xC3, 0xFF, 0x3F,
0xB4, 0xC5, 0xFF, 0x3A, 0xBA, 0xCA, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x32,
0xB3, 0xCE, 0xFF, 0x2E, 0xBD, 0xD6, 0xFF, 0x34, 0xBB, 0xD8, 0xFF, 0x34, 0xBF, 0xD8, 0xFF, 0x34,
0xBF, 0xD4, 0xFF, 0x2C, 0xBC, 0xD6, 0xFF, 0x32, 0xB7, 0xD4, 0xFF, 0x33, 0xAF, 0xD3, 0xFF, 0x37,
0xB6, 0xD1, 0xFF, 0x2A, 0x89, 0x67, 0xFF, 0x25, 0x70, 0x23, 0xFF, 0x26, 0x80, 0x4C, 0xFF, 0x2A,
0xB9, 0xD8, 0xFF, 0x3A, 0xB4, 0xD2, 0xFF, 0x3A, 0xB4, 0xD2, 0xFF, 0x39, 0xB6, 0xD1, 0xFF, 0x36,
0xB7, 0xD2, 0xFF, 0x39, 0xAF, 0xCD, 0xFF, 0x30, 0xB1, 0xD2, 0xFF, 0x40, 0xAD, 0xC8, 0xFF, 0x3E,
0xAB, 0xCA, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x3C, 0xB1, 0xCA, 0xFF, 0x35,
0xB8, 0xCF, 0xFF, 0x2E, 0xB5, 0xD6, 0xFF, 0x30, 0xB1, 0xD2, 0xFF, 0x2F, 0xB8, 0xD5, 0xFF, 0x3C,
0xB4, 0xD2, 0xFF, 0x35, 0xB9, 0xD1, 0xFF, 0x31, 0xBE, 0xD7, 0xFF, 0x31, 0xB4, 0xD9, 0xFF, 0x32,
0x9F, 0xA9, 0xFF, 0x25, 0x70, 0x23, 0xFF, 0x25, 0x70, 0x23, 0xFF, 0x2E, 0xA0, 0x93, 0xFF, 0x31,
0xC0, 0xD1, 0xFF, 0x34, 0xBB, 0xD4, 0xFF, 0x39, 0xAA, 0xCF, 0xFF, 0x38, 0xAB, 0xD0, 0xFF, 0x3B,
0xAF, 0xD1, 0xFF, 0x39, 0xB1, 0xCF, 0xFF, 0x37, 0xAF, 0xD1, 0xFF, 0x35, 0xB7, 0xD3, 0xFF, 0x28,
0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x42, 0xB9, 0xCA, 0xFF, 0x43, 0xAE, 0xC9, 0xFF, 0x43,
0xB5, 0xC9, 0xFF, 0x38, 0xB9, 0xD0, 0xFF, 0x34, 0xBA, 0xCE, 0xFF, 0x33, 0xBD, 0xCD, 0xFF, 0x3D,
0xB0, 0xCD, 0xFF, 0x49, 0xB2, 0xC5, 0xFF, 0x3F, 0xC1, 0xD1, 0xFF, 0x40, 0xB5, 0xC5, 0xFF, 0x25,
0x70, 0x23, 0xFF, 0x25, 0x70, 0x23, 0xFF, 0x28, 0x81, 0x50, 0xFF, 0x43, 0xB5, 0xC9, 0xFF, 0x3E,
0xC3, 0xC8, 0xFF, 0x3E, 0xC2, 0xCA, 0xFF, 0x33, 0xC2, 0xD3, 0xFF, 0x4A, 0xB2, 0xC2, 0xFF, 0x40,
0xB3, 0xC8, 0xFF, 0x47, 0xB0, 0xC3, 0xFF, 0x49, 0xAF, 0xC5, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x33, 0xC3, 0xD9, 0xFF, 0x39, 0xB4, 0xD3, 0xFF, 0x42, 0xB9, 0xCA, 0xFF, 0x41,
0xB0, 0xCB, 0xFF, 0x46, 0xB3, 0xCE, 0xFF, 0x3E, 0xB8, 0xD2, 0xFF, 0x30, 0xA0, 0xA7, 0xFF, 0x2B,
0xB7, 0xC5, 0xFF, 0x36, 0xBA, 0xD6, 0xFF, 0x34, 0xB6, 0xC5, 0xFF, 0x25, 0x70, 0x23, 0xFF, 0x25,
0x70, 0x23, 0xFF, 0x26, 0x72, 0x2D, 0xFF, 0x33, 0xB2, 0xD1, 0xFF, 0x30, 0xB7, 0xD4, 0xFF, 0x39,
0xBF, 0xD3, 0xFF, 0x3A, 0xBB, 0xD2, 0xFF, 0x42, 0xB5, 0xCE, 0xFF, 0x35, 0xB9, 0xD1, 0xFF, 0x35,
0xB7, 0xD3, 0xFF, 0x32, 0xB9, 0xD6, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x37,
0xB5, 0xD5, 0xFF, 0x2E, 0xC0, 0xDA, 0xFF, 0x34, 0xB4, 0xD4, 0xFF, 0x36, 0xC5, 0xD6, 0xFF, 0x37,
0xBB, 0xD3, 0xFF, 0x34, 0xBB, 0xD8, 0xFF, 0x27, 0x99, 0x7F, 0xFF, 0x26, 0x85, 0x56, 0xFF, 0x31,
0xB2, 0xCC, 0xFF, 0x2A, 0x90, 0x73, 0xFF, 0x25, 0x70, 0x23, 0xFF, 0x25, 0x70, 0x23, 0xFF, 0x25,
0x77, 0x33, 0xFF, 0x2F, 0xB5, 0xD7, 0xFF, 0x2D, 0xBD, 0xD7, 0xFF, 0x35, 0xB7, 0xD3, 0xFF, 0x33,
0xB4, 0xD5, 0xFF, 0x3A, 0xB0, 0xD2, 0xFF, 0x38, 0xB1, 0xD0, 0xFF, 0x35, 0xB0, 0xCF, 0xFF, 0x37,
0xB4, 0xD3, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x3D, 0xB9, 0xCB, 0xFF, 0x41,
0xB7, 0xC9, 0xFF, 0x31, 0xC0, 0xD1, 0xFF, 0x2F, 0xC7, 0xD5, 0xFF, 0x3D, 0xB9, 0xCB, 0xFF, 0x35,
0xBF, 0xCF, 0xFF, 0x3C, 0xAC, 0xB9, 0xFF, 0x27, 0x77, 0x37, 0xFF, 0x25, 0x70, 0x23, 0xFF, 0x25,
0x70, 0x23, 0xFF, 0x25, 0x70, 0x23, 0xFF, 0x25, 0x70, 0x23, 0xFF, 0x2D, 0x94, 0x7C, 0xFF, 0x35,
0xB8, 0xCF, 0xFF, 0x39, 0xB6, 0xCD, 0xFF, 0x38, 0xB9, 0xD0, 0xFF, 0x33, 0xB9, 0xD1, 0xFF, 0x3B,
0xB0, 0xC9, 0xFF, 0x3B, 0xBA, 0xC9, 0xFF, 0x37, 0xC0, 0xCD, 0xFF, 0x38, 0xB8, 0xCC, 0xFF, 0x28,
0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x39, 0xB6, 0xD1, 0xFF, 0x32, 0xB9, 0xD2, 0xFF, 0x3A,
0xB4, 0xD2, 0xFF, 0x31, 0xBC, 0xD1, 0xFF, 0x2A, 0xB9, 0xD2, 0xFF, 0x2A, 0xB5, 0xD8, 0xFF, 0x28,
0xB3, 0xD6, 0xFF, 0x31, 0xA7, 0xBC, 0xFF, 0x29, 0x86, 0x5A, 0xFF, 0x26, 0x73, 0x2D, 0xFF, 0x26,
0x76, 0x34, 0xFF, 0x2B, 0x93, 0x7F, 0xFF, 0x2F, 0xB0, 0xDA, 0xFF, 0x33, 0xBB, 0xD9, 0xFF, 0x37,
0xB6, 0xD5, 0xFF, 0x34, 0xC6, 0xD8, 0xFF, 0x36, 0xB6, 0xD6, 0xFF, 0x37, 0xB0, 0xD3, 0xFF, 0x34,
0xB0, 0xD4, 0xFF, 0x36, 0xB1, 0xD4, 0xFF, 0x3E, 0xB1, 0xCE, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x32, 0xC5, 0xD6, 0xFF, 0x43, 0xAE, 0xC1, 0xFF, 0x34, 0xBB, 0xD4, 0xFF, 0x32,
0xB9, 0xD2, 0xFF, 0x3A, 0xB4, 0xCA, 0xFF, 0x38, 0xBC, 0xD0, 0xFF, 0x34, 0xBC, 0xD0, 0xFF, 0x2B,
0xBB, 0xD5, 0xFF, 0x2D, 0xB7, 0xD9, 0xFF, 0x3A, 0xAF, 0xD0, 0xFF, 0x37, 0xB6, 0xD1, 0xFF, 0x34,
0xB4, 0xD4, 0xFF, 0x3D, 0xAD, 0xC9, 0xFF, 0x31, 0xBC, 0xD5, 0xFF, 0x32, 0xAC, 0xD4, 0xFF, 0x32,
0xB2, 0xD6, 0xFF, 0x42, 0xA4, 0xC8, 0xFF, 0x36, 0xB0, 0xCE, 0xFF, 0x39, 0xB3, 0xC9, 0xFF, 0x3A,
0xB0, 0xD2, 0xFF, 0x3A, 0xAD, 0xCA, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x3C,
0xB6, 0xD0, 0xFF, 0x3B, 0xB3, 0xD1, 0xFF, 0x3A, 0xB5, 0xD4, 0xFF, 0x3E, 0xB1, 0xCE, 0xFF, 0x3C,
0xB1, 0xCE, 0xFF, 0x34, 0xB0, 0xD4, 0xFF, 0x33, 0xB6, 0xD7, 0xFF, 0x31, 0xB0, 0xD5, 0xFF, 0x34,
0xB0, 0xD4, 0xFF, 0x34, 0xBB, 0xD8, 0xFF, 0x3C, 0xB1, 0xCE, 0xFF, 0x3B, 0xB3, 0xD1, 0xFF, 0x37,
0xB4, 0xD3, 0xFF, 0x36, 0xA9, 0xD4, 0xFF, 0x2C, 0xB0, 0xD6, 0xFF, 0x3D, 0xA3, 0xCD, 0xFF, 0x3E,
0xAA, 0xCE, 0xFF, 0x3F, 0xB1, 0xCD, 0xFF, 0x3B, 0xB0, 0xCD, 0xFF, 0x3E, 0xA5, 0xD0, 0xFF, 0x3F,
0xB5, 0xCF, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x3B, 0xBA, 0xD5, 0xFF, 0x43,
0xAE, 0xC9, 0xFF, 0x38, 0xC0, 0xD4, 0xFF, 0x27, 0xC3, 0xDF, 0xFF, 0x29, 0xBB, 0xDF, 0xFF, 0x35,
0xB3, 0xD7, 0xFF, 0x31, 0xBB, 0xD9, 0xFF, 0x35, 0xB9, 0xD5, 0xFF, 0x3A, 0xBE, 0xD6, 0xFF, 0x3B,
0xB3, 0xD1, 0xFF, 0x34, 0xB3, 0xD8, 0xFF, 0x31, 0xB4, 0xD5, 0xFF, 0x35, 0xAB, 0xD7, 0xFF, 0x3E,
0xAC, 0xD0, 0xFF, 0x2D, 0xB5, 0xD7, 0xFF, 0x35, 0xAD, 0xCF, 0xFF, 0x34, 0xB0, 0xD4, 0xFF, 0x37,
0xA7, 0xD1, 0xFF, 0x39, 0xA7, 0xD5, 0xFF, 0x40, 0xAC, 0xD4, 0xFF, 0x2D, 0xB5, 0xD7, 0xFF, 0x28,
0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x4A, 0xB1, 0xC0, 0xFF, 0x3D, 0xB8, 0xC7, 0xFF, 0x45,
0xB9, 0xC3, 0xFF, 0x42, 0xBA, 0xC2, 0xFF, 0x38, 0xBE, 0xCA, 0xFF, 0x38, 0xBF, 0xCC, 0xFF, 0x3A,
0xC5, 0xCA, 0xFF, 0x41, 0xBC, 0xC7, 0xFF, 0x44, 0xBD, 0xC8, 0xFF, 0x44, 0xC1, 0xC6, 0xFF, 0x3E,
0xBD, 0xC8, 0xFF, 0x3C, 0xB8, 0xCA, 0xFF, 0x38, 0xC3, 0xCC, 0xFF, 0x38, 0xB8, 0xCC, 0xFF, 0x37,
0xBC, 0xCF, 0xFF, 0x39, 0xC2, 0xCB, 0xFF, 0x37, 0xC4, 0xCD, 0xFF, 0x41, 0xB1, 0xC9, 0xFF, 0x3D,
0xB8, 0xC7, 0xFF, 0x43, 0xB1, 0xC5, 0xFF, 0x44, 0xB0, 0xC4, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x2E, 0xC4, 0xD6, 0xFF, 0x31, 0xB6, 0xD7, 0xFF, 0x30, 0xC0, 0xDA, 0xFF, 0x34,
0xB9, 0xDA, 0xFF, 0x34, 0xB9, 0xDA, 0xFF, 0x2F, 0xC3, 0xD9, 0xFF, 0x2D, 0xB7, 0xD9, 0xFF, 0x2A,
0xBC, 0xDC, 0xFF, 0x39, 0xB6, 0xD1, 0xFF, 0x40, 0xAE, 0xCE, 0xFF, 0x3C, 0xC2, 0xD2, 0xFF, 0x37,
0xC1, 0xD5, 0xFF, 0x2E, 0xBC, 0xDA, 0xFF, 0x32, 0xC0, 0xD6, 0xFF, 0x2A, 0xBE, 0xD4, 0xFF, 0x34,
0xBA, 0xCE, 0xFF, 0x36, 0xB7, 0xCE, 0xFF, 0x32, 0xB7, 0xD4, 0xFF, 0x2B, 0xB6, 0xD9, 0xFF, 0x31,
0xC1, 0xD7, 0xFF, 0x38, 0xB9, 0xD0, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D,
};
#ifdef ROMFS_DIRENTRY_HEAD
ROMFS_DIRENTRY mines_2_dir = { 0, 0, ROMFS_DIRENTRY_HEAD, "2.bmp", 2254, mines_2 };
#undef ROMFS_DIRENTRY_HEAD
#define ROMFS_DIRENTRY_HEAD &mines_2_dir
#endif

155
demos/applications/minesweeper/resources/romfs/romfs_3.h

@ -0,0 +1,155 @@
/**
* This file was generated from "3.bmp" using...
*
* file2c -dn mines_3 -f 3.bmp 3.bmp ../romfs_3.h
*
*/
char mines_3[] = {
0x42, 0x4D, 0xCE, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x00, 0x7C, 0x00,
0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x03, 0x00,
0x00, 0x00, 0x44, 0x08, 0x00, 0x00, 0x23, 0x2E, 0x00, 0x00, 0x23, 0x2E, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF,
0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x42, 0x47, 0x52, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28,
0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28,
0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28,
0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28,
0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28,
0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x1D, 0x52, 0x5F, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x2E, 0xB4, 0xD6, 0xFF, 0x3C, 0xB1, 0xCE, 0xFF, 0x40, 0xB0, 0xCC, 0xFF, 0x39,
0xB6, 0xD1, 0xFF, 0x37, 0xBB, 0xCF, 0xFF, 0x2F, 0xB8, 0xD5, 0xFF, 0x32, 0xB3, 0xCE, 0xFF, 0x33,
0xB1, 0xD1, 0xFF, 0x39, 0xB6, 0xCD, 0xFF, 0x40, 0xB0, 0xCC, 0xFF, 0x38, 0xB2, 0xCC, 0xFF, 0x34,
0xB4, 0xD4, 0xFF, 0x37, 0xBA, 0xCD, 0xFF, 0x33, 0xB7, 0xCF, 0xFF, 0x36, 0xB6, 0xD2, 0xFF, 0x3F,
0xB4, 0xD1, 0xFF, 0x3C, 0xB3, 0xD0, 0xFF, 0x2F, 0xB8, 0xD5, 0xFF, 0x3B, 0xAC, 0xCD, 0xFF, 0x38,
0xB9, 0xD0, 0xFF, 0x45, 0xBA, 0xCB, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x35,
0xC0, 0xD5, 0xFF, 0x3B, 0xAF, 0xD1, 0xFF, 0x3A, 0xB4, 0xD2, 0xFF, 0x3E, 0xB1, 0xD2, 0xFF, 0x32,
0xBC, 0xDA, 0xFF, 0x2D, 0xBF, 0xDF, 0xFF, 0x37, 0xB0, 0xD3, 0xFF, 0x32, 0xB8, 0xDA, 0xFF, 0x2C,
0xBF, 0xDA, 0xFF, 0x35, 0xB9, 0xD5, 0xFF, 0x31, 0xB9, 0xDB, 0xFF, 0x30, 0xBA, 0xDC, 0xFF, 0x2D,
0xB1, 0xD7, 0xFF, 0x32, 0xB1, 0xD6, 0xFF, 0x32, 0xB1, 0xD6, 0xFF, 0x38, 0xB4, 0xD8, 0xFF, 0x3E,
0xB4, 0xD6, 0xFF, 0x34, 0xBB, 0xD8, 0xFF, 0x39, 0xB4, 0xD7, 0xFF, 0x37, 0xAA, 0xD5, 0xFF, 0x39,
0xB1, 0xD3, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x42, 0xAF, 0xCE, 0xFF, 0x41,
0xC4, 0xD3, 0xFF, 0x37, 0xC1, 0xD5, 0xFF, 0x39, 0xBD, 0xD5, 0xFF, 0x3D, 0xB6, 0xCB, 0xFF, 0x44,
0xB1, 0xCC, 0xFF, 0x3A, 0xC0, 0xD0, 0xFF, 0x37, 0xC2, 0xD3, 0xFF, 0x40, 0xBC, 0xD2, 0xFF, 0x3E,
0xBD, 0xD0, 0xFF, 0x3C, 0xBC, 0xD4, 0xFF, 0x3A, 0xBB, 0xD6, 0xFF, 0x3F, 0xB1, 0xD1, 0xFF, 0x3E,
0xB8, 0xD2, 0xFF, 0x40, 0xBA, 0xD0, 0xFF, 0x3B, 0xBA, 0xD1, 0xFF, 0x3B, 0xB8, 0xCF, 0xFF, 0x35,
0xB9, 0xD5, 0xFF, 0x36, 0xB6, 0xD6, 0xFF, 0x3F, 0xB4, 0xD1, 0xFF, 0x3D, 0xAE, 0xD3, 0xFF, 0x28,
0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x3F, 0xB1, 0xD1, 0xFF, 0x3A, 0xB4, 0xD2, 0xFF, 0x37,
0xBA, 0xD1, 0xFF, 0x39, 0xBB, 0xCF, 0xFF, 0x40, 0xB3, 0xC8, 0xFF, 0x40, 0xB7, 0xCC, 0xFF, 0x3F,
0xB1, 0xC9, 0xFF, 0x3A, 0xB6, 0xD0, 0xFF, 0x41, 0xAF, 0xC7, 0xFF, 0x45, 0xB1, 0xC5, 0xFF, 0x47,
0xAA, 0xC3, 0xFF, 0x3C, 0xB6, 0xD0, 0xFF, 0x3F, 0xB1, 0xCD, 0xFF, 0x45, 0xB0, 0xCB, 0xFF, 0x3F,
0xB1, 0xCD, 0xFF, 0x40, 0xAD, 0xC8, 0xFF, 0x4B, 0xA0, 0xC3, 0xFF, 0x44, 0xB1, 0xCC, 0xFF, 0x42,
0xAC, 0xCE, 0xFF, 0x3E, 0xAA, 0xCE, 0xFF, 0x3C, 0xB1, 0xCE, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17,
0x42, 0x4D, 0xFF, 0x33, 0xB1, 0xD1, 0xFF, 0x31, 0xBA, 0xD3, 0xFF, 0x3B, 0xAC, 0xCD, 0xFF, 0x39,
0xC3, 0xD3, 0xFF, 0x3F, 0xBE, 0xD1, 0xFF, 0x2A, 0xC3, 0xDA, 0xFF, 0x25, 0x8E, 0xD9, 0xFF, 0x14,
0x2C, 0xDE, 0xFF, 0x0D, 0x12, 0xE1, 0xFF, 0x0D, 0x12, 0xE1, 0xFF, 0x13, 0x2F, 0xE0, 0xFF, 0x20,
0x6C, 0xDC, 0xFF, 0x30, 0xBB, 0xD5, 0xFF, 0x33, 0xB8, 0xD9, 0xFF, 0x3A, 0xB4, 0xD2, 0xFF, 0x32,
0xB7, 0xD4, 0xFF, 0x33, 0xB5, 0xD5, 0xFF, 0x3A, 0xB6, 0xD0, 0xFF, 0x3F, 0xB1, 0xCD, 0xFF, 0x4C,
0xAD, 0xC8, 0xFF, 0x49, 0xB7, 0xCB, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x3A,
0xC4, 0xCC, 0xFF, 0x2F, 0xC0, 0xD1, 0xFF, 0x33, 0xBF, 0xCF, 0xFF, 0x37, 0xBF, 0xCF, 0xFF, 0x38,
0xC4, 0xD0, 0xFF, 0x30, 0xBD, 0xD2, 0xFF, 0x0D, 0x16, 0xE1, 0xFF, 0x0C, 0x0C, 0xE3, 0xFF, 0x1D,
0x50, 0xDA, 0xFF, 0x27, 0xB9, 0xD6, 0xFF, 0x23, 0x69, 0xD6, 0xFF, 0x0C, 0x0C, 0xE3, 0xFF, 0x15,
0x30, 0xDE, 0xFF, 0x38, 0xB7, 0xD0, 0xFF, 0x33, 0xB2, 0xD1, 0xFF, 0x31, 0xBA, 0xD3, 0xFF, 0x3D,
0xB7, 0xCD, 0xFF, 0x35, 0xB7, 0xCF, 0xFF, 0x3B, 0xBA, 0xCD, 0xFF, 0x31, 0xBA, 0xD3, 0xFF, 0x3B,
0xB7, 0xCD, 0xFF, 0x28, 0x78, 0x8C, 0xFF, 0x17, 0x42, 0x4D, 0xFF, 0x36, 0xC5, 0xD2, 0xFF, 0x39,
0xB1, 0xCF, 0xFF,