Repository: EverydayCodeNet/CONTAGION-CE Branch: master Commit: d760c872ad86 Files: 25 Total size: 174.8 KB Directory structure: gitextract_pk641exf/ ├── .gitignore ├── Makefile ├── README.md └── src/ ├── contagion.h ├── main.c └── sprites/ ├── africa.c ├── anchor_scaled.c ├── asia.c ├── cemetechdiscord.c ├── closed_scaled.c ├── ecprograms.c ├── europe.c ├── greenland.c ├── icons.c ├── icons.h ├── logo.c ├── myprograms.c ├── northamerica.c ├── oceania.c ├── optix.c ├── optix.h ├── programthread.c ├── southamerica.c ├── sprites.c └── sprites.h ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ obj bin ================================================ FILE: Makefile ================================================ # Exported from https://tiplanet.org/pb/ on Sun Sep 6 17:20:50 2020 (CEST) # ---------------------------- # Program Options # ---------------------------- NAME ?= CNTAGION ICON ?= icon.png DESCRIPTION ?= "Contagion CE 1.0.0" COMPRESSED ?= YES ARCHIVED ?= YES # ---------------------------- # Compile Options # ---------------------------- # That one gets passed by builder.sh inside EXTRA_CFLAGS OPT_MODE = EXTRA_CFLAGS ?= -Oz -W -Wall -Wwrite-strings -Wno-unknown-pragmas -Wno-incompatible-library-redeclaration -Wno-main-return-type # ---------------------------- # Debug Options # ---------------------------- OUTPUT_MAP ?= NO include $(CEDEV)/include/.makefile ================================================ FILE: README.md ================================================ # CONTAGION CE Contagion CE is a Plague Inc. inspired game written in C for the TI-84 Plus CE calculator. ### Download **If you have a physical TI-84 Plus CE or TI-83 Premium CE.** 1. Download the latest release of [CONTAGION CE](https://github.com/EverydayCodeNet/CONTAGION-CE/releases) 2. Unzip these files to your desktop. 3. Download [TI-Connect CE](https://education.ti.com/en/software/details/en/CA9C74CAD02440A69FDC7189D7E1B6C2/swticonnectcesoftware). 4. Connect your calculator to your computer via USB. 5. Go to the File Explorer tab in TI-Connect CE and drag and drop these files. **If you're using an emulator ([TI-Smartview CE](https://education.ti.com/en/software/details/en/BE8220257AA241148986628D6EE332E5/ti-smartview-ce-for-ti-84-plus-family)).** 1. Download the latest release of [CONTAGION CE](https://github.com/EverydayCodeNet/CONTAGION-CE/releases) 2. Unzip these files to your desktop. 3. Go to the File Explorer tab and drag and drop the files to your calculator. ## Screenshots ![Progress Bar](https://user-images.githubusercontent.com/59743315/88998471-1ec4f700-d2c0-11ea-9d27-805e5e90abde.png) ![Transportation View](https://user-images.githubusercontent.com/59743315/88999438-92680380-d2c2-11ea-9f43-c8621404f8f5.png) ## How to Play 1. Download and transfer the latest release of Contagion CE to your TI-84 Plus CE or TI-83 Premium CE. 2. Press the [Zoom] key to start the game. 3. Choose your virus name using the letters above your keypad. Press [Enter] when done. 4. Pick your starting location using the arrow keys and press [Enter] when done. 5. Watch the world die. ## Controls - [^][v][<][>] change selected contintent. - [Mode] enter/exit transportation view. - [Clear] exit game. - [Graph] open the mutation menu. ## Credits Coding & Graphics: ![epsilon5](https://www.cemetech.net/downloads/users/epsilon5) This program was made possible by the OPTIX graphics library made by epsilon5, a stable release not available. ================================================ FILE: src/contagion.h ================================================ //function declarations void UpdateSimulation(void); void UpdateNews(int vVictory, int wVictory); void InitializeSimulation(void); void RenderSimulation(void); uint8_t MainMenu(void); void InitializeMap(void); void RenderSelected(void); void HandleKeys(void); void SaveData(void); void LoadData(void); void DispNews(void); //structs and things //general game data, add more as needed typedef struct { long ticksplayed; int numinfected; int numdead; int numrecovered; uint8_t selected; bool canpress; uint8_t toupdate; uint8_t cursorx; uint8_t cursory; bool cursoractive; //virus and world victory uint8_t vVictory; uint8_t wVictory; uint8_t totaldead; uint8_t dnapoints; //control view uint8_t viewmode; //news char news[100]; uint8_t newsloops; uint8_t initialport; uint8_t endport; bool connectionmade; } game_t; //virus data, will need more later as well typedef struct { //a number out of 100 probably uint8_t probinfection; uint8_t probdeath; //resistance is basically the same as probdeath uint8_t vResistance; uint8_t vSpeed; uint8_t vUnrest; char name[20]; } virus_t; //region data (to be added later) typedef struct { //"north america" is 13 characters long, plus 1 for the null terminating byte char name[14]; uint8_t *data; uint16_t x; uint8_t y; gfx_sprite_t *spr; //gfx_sprite_t *outlinespr; uint16_t populationdensity; int squares; int squaresinfected; int squaresdead; int squaresrecovered; //each region has different probability of infection //increase probinfection with mutations uint8_t probinfection; } region_t; typedef struct { uint8_t x; uint8_t y; bool closed; uint8_t region; uint8_t closethreshold; } port_t; ================================================ FILE: src/main.c ================================================ //////////////////////////////////////// // Contagion CE (1.0.0) // Author: epsilon5, EverydayCode // License: NA // Description: Plague, Inc. like game for the TI-84 Plus CE //////////////////////////////////////// //for the sprites #include "sprites/sprites.h" //OPTIX Graphics Libraries by epsilon5, stable release not available. Contact epsilon5 @ https://www.cemetech.net/downloads/users/epsilon5. #include "sprites/optix.h" /* Keep these headers */ #include #include "contagion.h" /* Standard headers - it's recommended to leave them included */ #include #include #include #include #include #include /* Other available headers */ // including stdarg.h, setjmp.h, assert.h, ctype.h, float.h, iso646.h, limits.h, errno.h /* Available libraries */ // including lib/ce/graphc.h, lib/ce/fileioc.h, and lib/ce/keypadc.h // Sample: #include #include #include #include #include #include #include char *vname = NULL; game_t game; virus_t virus; //going based on continent here region_t region[7]; port_t port[22]; //functions void SaveData(void) { ti_var_t slota; uint8_t i; ti_CloseAll(); slota = ti_Open("CNTGNDAT", "w+"); ti_Write(&game, sizeof(game), 1, slota); ti_Write(&virus, sizeof(virus), 1, slota); //ti_Write(&transport, sizeof(transport), 1, slota); for (i = 0; i < 7; i++) ti_Write(region[i].data, region[i].spr->width * region[i].spr->height, 1, slota); //don't need this line, everything else will be a constant and initialized //ti_Write(®ion, sizeof(region), 1, slota); for (i = 0; i < 7; i++) free(region[i].spr); } void LoadData(void) { ti_var_t slota; uint8_t i; ti_CloseAll(); if (slota = ti_Open("CNTGNDAT", "r")) { //need some check here to initialize everything //probably problematic to read directly to the pointer that we had last time, need to fix that ti_Read(&game, sizeof(game), 1, slota); ti_Read(&virus, sizeof(virus), 1, slota); //ti_Read(&transport, sizeof(transport), 1, slota); //11 kb of data... for (i = 0; i < 7; i++) ti_Read(region[i].data, region[i].spr->width * region[i].spr->height, 1, slota); } } //later a function to infect a specific point on the map will come in handy (for the updating, and for the planes and such) //returns true if successful bool InfectCoordinate(int x, int y) { uint8_t i; int infectsquare; for (i = 0; i < 7; i++) { if (x > region[i].x && y > region[i].y && (y - region[i].y < region[i].spr->height) && (x - region[i].x < region[i].spr->width)) { infectsquare = (y - region[i].y) * region[i].spr->width + (x - region[i].x); if (region[i].data[infectsquare] == 255) { region[i].data[infectsquare] = 224; return true; } } } return false; } //will be the whole bottom toolbar now void RenderBottomToolbar(void) { char str1[100]; region_t *r = ®ion[game.selected]; //pass victory percentages and infection percentages per region gfx_SetTextScale(1, 1); gfx_SetColor(255); gfx_HorizLine(0, 209, 320); //needs to be virus name r->vname gfx_SetColor(0); //fill in the bottom of the screen gfx_FillRectangle(0, 210, 320, 30); //for the selected region if (game.viewmode == 1) sprintf(str1, "%s -> %s", region[port[game.initialport].region].name, region[port[game.endport].region].name); else if (game.viewmode == 0) strcpy(str1, region[game.selected].name); if (game.viewmode == 0) { //gfx_ScaledTransparentSprite_NoClip(r->outlinespr, r->x * 2, r->y * 2, 2, 2); gfx_SetColor(224); gfx_Rectangle(r->x * 2, r->y * 2, r->spr->width * 2, r->spr->height * 2); //gfx_Rectangle(r->x * 2 + 1, r->y * 2 + 1, r->spr->width * 2 - 2, r->spr->height * 2 - 2); //make an outline gfx_SetColor(0); } gfx_FillRectangle(160 - (gfx_GetStringWidth(str1) + 10) / 2, 197, gfx_GetStringWidth(str1) + 10, 13); gfx_PrintStringXY(str1, 160 - gfx_GetStringWidth(str1) / 2, 200); gfx_SetColor(255); gfx_HorizLine(160 - (gfx_GetStringWidth(str1) + 10) / 2, 197, gfx_GetStringWidth(str1) + 10); gfx_VertLine(160 - (gfx_GetStringWidth(str1) + 10) / 2, 197, 13); gfx_VertLine(160 + (gfx_GetStringWidth(str1) + 10) / 2, 197, 13); //x, y, width, x, height //gfx_FillRectangle(5,225,100,10); //gfx_FillRectangle(215,225,100,10); //draw the outlines on top //world gfx_SetColor(22); gfx_FillRectangle(216,225,game.wVictory,10); //virus gfx_SetColor(224); gfx_FillRectangle(5,225,game.vVictory,10); gfx_SetColor(255); gfx_Rectangle(5,225,100,10); gfx_Rectangle(216,225,100,10); gfx_VertLine(108, 210, 30); gfx_VertLine(212, 210, 30); //percent victory text on progress bars? sprintf(str1, "%s : %d%s", virus.name, game.vVictory, "%"); gfx_PrintStringXY(str1,5,215); sprintf(str1, "%d%s : WORLD", game.wVictory, "%"); gfx_PrintStringXY(str1,315 - gfx_GetStringWidth(str1),215); if (game.viewmode == 0) { sprintf(str1, "%d%s infected", r->squaresinfected * 100 / r->squares, "%"); gfx_PrintStringXY(str1, 160 - gfx_GetStringWidth(str1) / 2, 215); sprintf(str1, "%d%s dead", r->squaresdead * 100 / r->squares, "%"); gfx_PrintStringXY(str1, 160 - gfx_GetStringWidth(str1) / 2, 227); } else { strcpy(str1, "CONNECTION : "); gfx_PrintStringXY(str1, 160 - gfx_GetStringWidth(str1) / 2, 215); if (game.connectionmade) strcpy(str1, "success"); else strcpy(str1, "failure"); gfx_PrintStringXY(str1, 160 - gfx_GetStringWidth(str1) / 2, 227); } /*sprintf(str1, "Number : %d", r->squares); gfx_PrintStringXY(str1, 5, 230); sprintf(str1, "Infected : %d", r->squaresinfected); gfx_PrintStringXY(str1, 5, 215); sprintf(str1, "Percentage infected : %d", r->squaresinfected * 100 / r->squares); gfx_PrintStringXY(str1, 5, 200);*/ } void RenderTopToolbar(void) { const char *viewmode[2] = {"Overview", "Transportation view"}; //news is global- should update based on individual continent percentages //x, y, width, x, height char str1[100]; uint8_t stringwidth; stringwidth = gfx_GetStringWidth(viewmode[game.viewmode]); gfx_SetColor(0); gfx_FillRectangle(0, 0, 320, 34); DispNews(); gfx_FillRectangle(0, 7, 45, 8); gfx_SetColor(224); gfx_FillRectangle(5,5,38,11); gfx_SetTextScale(1, 1); gfx_PrintStringXY("NEWS:", 7, 7); gfx_SetColor(255); gfx_HorizLine(0, 33, 320); gfx_HorizLine(0, 20, 320); gfx_PrintStringXY("DNA Points: ",5,23); gfx_SetTextFGColor(224); gfx_PrintInt(game.dnapoints,1); gfx_SetTextFGColor(255); gfx_PrintStringXY("[graph]: mutate", 315 - gfx_GetStringWidth("[graph]: mutate"), 23); if (kb_Data[1] & kb_Mode) { gfx_SetColor(0); gfx_FillRectangle(155 - stringwidth / 2, 112, stringwidth + 10, 16); gfx_SetColor(255); gfx_Rectangle(155 - stringwidth / 2, 112, stringwidth + 10, 16); optix_WhiText(); gfx_PrintStringXY(viewmode[game.viewmode], 160 - stringwidth / 2, 116); } } void SetNews(const char str1[]) { strcpy(game.news, str1); game.newsloops = 30; } void DispNews(void) { if (game.newsloops > 0) { if (game.newsloops < 25) gfx_PrintStringXY(game.news, 45 - ((25 - game.newsloops) * 1.5), 7); else gfx_PrintStringXY(game.news, 45, 7); game.newsloops--; } else gfx_PrintStringXY("No new news.", 45, 7); } void UpdateNews(int vVictory, int wVictory) { //see mockup //it was overflowing when it was 40 ("TEST sees first //deaths in South America." or similar is a few too many characters) //well it is only one too big, that's 40 characters and it needs a null terminating byte too char str1[100]; uint8_t i; int rPer; //eventaully change to user's virus name //display events until new event for (i = 0; i < 7; i++) { region_t *r = ®ion[i]; rPer = r->squaresinfected * 100 / r->squares; if (vVictory > 50 && vVictory < 58) { sprintf(str1,"%s has infected half the world.",virus.name); SetNews(str1); } else if (vVictory > 1 && vVictory < 10) { sprintf(str1,"Scientists discover %s.",virus.name); SetNews(str1); } else if (vVictory > 75) { SetNews("The world is looking grim."); } else if (wVictory > 10 && wVictory < 20) { SetNews("Scientists start developing a cure."); } else if (wVictory > 80) { SetNews("Clinical trials underway for cure."); } else if (rPer > 5 && rPer < 15) { sprintf(str1, "%s discovered in %s.",virus.name,r->name); SetNews(str1); } else if (rPer > 50 && rPer < 75) { sprintf(str1, "%s seizes %s.",virus.name,r->name); SetNews(str1); } else if (r->squaresdead > 0 && r->squaresdead < 10) { sprintf(str1,"%s sees first deaths in %s.", virus.name,r->name); SetNews(str1); } } gfx_SetTextScale(1,1); } //temporary menu //can be redone to be more neat void MutationMenu() { int selected = 0; int cost = 0; //x is 40 to 280 //y is 60 to 180 //we don't need this, it's already done //the new menu stuff will do it all for us struct optix_menu_t *m = &optix_menu[optix_guidata.currmenu]; const char *entries = "Transmission`Resistance`Civil Unrest`"; const char *title = "Mutate"; uint8_t maxlines = 3; uint8_t textspacing = 15; uint8_t width = 160; uint8_t xprint; uint8_t yprint; uint8_t numlines; uint8_t currline; uint8_t currentselection; uint8_t titlewidth = 12; char temp[2] = " "; bool enterpressed; do { kb_Scan(); gfx_SetDrawBuffer(); if (kb_Data[7] & kb_Up) selected--; gfx_SwapDraw(); if (kb_Data[7] & kb_Down) selected++; gfx_SwapDraw(); if (selected == -1) selected = 2; gfx_SwapDraw(); if (selected == 3) selected = 0; gfx_SwapDraw(); gfx_SetColor(0); gfx_FillRectangle(100,60,120,120); gfx_SetTextScale(2,2); optix_WhiText(); gfx_PrintStringXY("MUTATE",160 - (gfx_GetStringWidth("MUTATE") / 2),70); gfx_SetTextScale(1,1); gfx_SetColor(255); gfx_HorizLine(100,90,120); //set text color with selected optix_WhiText(); if (selected == 0) { gfx_SetTextFGColor(224); gfx_SetTextTransparentColor(0); cost = virus.vSpeed + 1; } gfx_PrintStringXY("TRANSMISSION ",105,100); gfx_PrintInt(virus.vSpeed + 1,1); optix_WhiText(); if (selected == 1) { gfx_SetTextFGColor(224); gfx_SetTextTransparentColor(0); cost = virus.vResistance + 1; } gfx_PrintStringXY("RESISTANCE ",105,115); gfx_PrintInt(virus.vResistance + 1,1); optix_WhiText(); if (selected == 2) { gfx_SetTextFGColor(224); gfx_SetTextTransparentColor(0); cost = virus.vUnrest + 1; } gfx_PrintStringXY("CIVIL UNREST ",105,130); gfx_PrintInt(virus.vUnrest + 1,1); gfx_SetTextFGColor(224); gfx_SetTextTransparentColor(0); gfx_PrintStringXY("COST: ",215 - (gfx_GetStringWidth("COST: 10")),170); //cost is upgrade + 1 gfx_PrintInt(cost,1); optix_WhiText(); gfx_SwapDraw(); //enter and game points is greater than selected cost if (kb_Data[6] & kb_Enter && game.dnapoints >= cost) { if (selected == 0) virus.vSpeed++; if (selected == 1) virus.vResistance++; if (selected == 2) virus.vUnrest++; game.dnapoints = game.dnapoints - cost; } } while(kb_Data[6] != kb_Enter || kb_Data[6] != kb_Graph); } void Progress(void) { int totalInfected = 0; int totalDead = 0; int i; for (i = 0; i < 7; i++) { totalInfected += region[i].squaresinfected; totalDead += region[i].squaresdead; } game.vVictory = (totalInfected * 100 / 4410); //not working game.totaldead = (totalDead * 100 / 4410); //rework later if (game.vVictory % 20 == 0 && game.vVictory != 0 && game.dnapoints < game.vVictory / 20) { game.dnapoints++; } //the higher the virus speed, the higher the cure speed //start cure at percent dead? if (game.vVictory > 5 && game.wVictory < 100) if (randInt(0, 40 + virus.vResistance) == 0) game.wVictory++; } void RenderView() { uint8_t i; //check if region of origin is not destination //if area of port is infected, percent chance that it infects random other port //view 0 - default //view 1 - transportation //sorry I changed it to fix an error on line 396 (said "game.viewmode" there) np you can build //if (game.viewmode == 0) if (game.viewmode == 1) { //get port data } //default view } void UpdateSelectedRegion(void) { //ripped from OPTIX int tryx; int tryy; uint8_t closestbutton; int closestbuttonscore; int buttonscore; uint8_t i; int buttonsensitivity = 3; region_t *c; i = 0; tryx = 0; tryy = 0; closestbuttonscore = 10000; closestbutton = 0; buttonscore = 0; if (game.canpress) { kb_Scan(); if (kb_Data[7] & kb_Left) tryx--; if (kb_Data[7] & kb_Right) tryx++; if (kb_Data[7] & kb_Up) tryy--; if (kb_Data[7] & kb_Down) tryy++; if (tryx == 0 && tryy == 0) return; c = ®ion[game.selected]; for (i = 0; i < 7; i++) { region_t *b = ®ion[i]; if (tryx == -1) { if (b->x < c->x) buttonscore = (c->x - b->x) + (abs(b->y - c->y)) * buttonsensitivity; else buttonscore = 10000; } else if (tryx == 1) { if (b->x > c->x) buttonscore = (b->x - c->x) + (abs(b->y - c->y)) * buttonsensitivity; else buttonscore = 10000; } else if (tryy == -1) { if (b->y < c->y) buttonscore = (c->y - b->y) + (abs(b->x - c->x)) * buttonsensitivity; else buttonscore = 10000; } else if (tryy == 1) { if (b->y > c->y) buttonscore = (b->y - c->y) + (abs(b->x - c->x)) * buttonsensitivity; else buttonscore = 10000; } else closestbuttonscore = 10000; if (buttonscore < closestbuttonscore) { closestbutton = i; closestbuttonscore = buttonscore; } } if (closestbuttonscore < 5000) game.selected = closestbutton; game.canpress = false; } } void UpdateSimulation(void) { uint8_t x; uint8_t y; uint8_t i; int16_t infectdir; int hitx; int hity; region_t *r = ®ion[game.toupdate]; x = 0; y = 0; infectdir = 1; //reset these r->squares = 0; r->squaresrecovered = 0; r->squaresinfected = 0; r->squaresdead = 0; for (x = 0; x < r->spr->width; x++) { //because this is so slow HandleKeys(); for (y = 0; y < r->spr->height; y++) { if (r->data[y * r->spr->width + x] == 224) { //kill (eventually based on virus lethality, 0-100) //infect randomly based on probability of infection, in a random direction //increase prob infection with dna points if (randInt(0,10 - virus.vSpeed) == 0) { infectdir = ((y + randInt(-1, 1)) * r->spr->width) + x + randInt(-1, 1); if (r->data[infectdir] == 255) { r->data[infectdir] = 224; } else if (r->data[infectdir] != 224) { //check if that point is on any of the other regions InfectCoordinate(x + r->x, y + r->y); } } //kill if (randInt(0, 100 - virus.probdeath) == 0) r->data[y * r->spr->width + x] = 64; r->squares++; r->squaresinfected++; } else if (r->data[y * r->spr->width + x] == 64) { r->squares++; r->squaresinfected++; r->squaresdead++; } else if (r->data[y * r->spr->width + x] == 255) r->squares++; } } game.toupdate++; if (game.toupdate > 6) game.toupdate = 0; } void UpdateTransportation(void) { //so we can draw lines later uint8_t probinfection; uint8_t i; //stop checking for closed ports game.initialport = randInt(0, 21); game.endport = randInt(0, 21); //this needs to be less common, but i think that fixes the problem probinfection = region[port[game.initialport].region].squaresinfected * 100 / region[port[game.initialport].region].squares; //close ports if (probinfection > port[game.initialport].closethreshold) port[game.initialport].closed = true; //too many if statements if (game.initialport != game.endport) { if (port[game.initialport].closed != true && port[game.endport].closed != true) { //if initial port is infected game.connectionmade = true; if (randInt(0, 100 - probinfection - virus.vUnrest) == 0) { InfectCoordinate(port[game.endport].x, port[game.endport].y); } } else { game.connectionmade = false; } } } void HandleKeys(void) { kb_Scan(); if (!kb_AnyKey()) game.canpress = true; if (game.viewmode == 0) UpdateSelectedRegion(); if (kb_Data[1] & kb_Mode && game.canpress) { game.viewmode++; if (game.viewmode > 1) game.viewmode = 0; game.canpress = false; } } void InitializePorts(void) { uint8_t i; uint8_t x[22] = {12, 28, 37, 54, 34, 30, 48, 84, 74, 94, 94, 68, 86, 112, 128, 138, 134, 132, 126, 146, 154, 146}; uint8_t y[22] = {46, 50, 40, 24, 62, 72, 74, 84, 60, 80, 52, 44, 36, 54, 50, 46, 58, 66, 68, 84, 94, 70}; uint8_t region[22] = {5, 5, 5, 4, 6, 6, 6, 1, 1, 1, 2, 3, 3, 2, 2, 2, 2, 7, 7, 7, 7, 7}; uint8_t closethreshold[22] = {20, 70, 50, 30, 50, 90, 60, 60, 30, 40, 50, 40, 40, 50, 80, 40, 50, 40, 50, 90, 50, 40}; for (i = 0; i < 22; i++) { port_t *p = &port[i]; p->x = x[i]; p->y = y[i]; p->closethreshold = closethreshold[i]; //because I'm an idiot p->region = region[i] - 1; p->closed = false; } } void InitializeMap(void) { uint8_t i; char *name[7] = {"Africa", "Asia", "Europe", "Greenland", "North America", "South America", "Oceania"}; uint16_t x[7] = {117, 169, 127, 90, 0, 49, 252}; uint8_t y[7] = {83, 37, 46, 35, 43, 114, 130}; //store all the names to the structs for (i = 0; i < 7; i++) strcpy(region[i].name, name[i]); //store x and y coordinates for (i = 0; i < 7; i++) { //half size now so divide by 2, will make calcs easier region[i].x = x[i] / 2; region[i].y = y[i] / 2; //0/0 == -1? Meant to fix that region[i].squares = 1; region[i].squaresinfected = 0; region[i].squaresdead = 0; } //sprite things region[0].spr = africa; //region[0].outlinespr = africa_outlined; region[1].spr = asia; //region[1].outlinespr = asia_outlined; region[2].spr = europe; //region[2].outlinespr = europe_outlined; region[3].spr = greenland; //region[3].outlinespr = greenland_outlined; region[4].spr = northamerica; //region[4].outlinespr = northamerica_outlined; region[5].spr = southamerica; //region[5].outlinespr = southamerica_outlined; region[6].spr = oceania; //region[6].outlinespr = oceania_outlined; //accessing 3rd element because 1 and 2 are used for height and width region[0].data = &africa_data[2]; region[1].data = &asia_data[2]; region[2].data = &europe_data[2]; region[3].data = &greenland_data[2]; region[4].data = &northamerica_data[2]; region[5].data = &southamerica_data[2]; region[6].data = &oceania_data[2]; //ports } void InitializeSimulation(void) { //continent data will go here virus.probinfection = 99; virus.probdeath = 10; //virus.vSpeed = 25; game.toupdate = 0; } void DrawMap(void) { uint8_t i; for (i = 0; i < 7; i++) gfx_ScaledTransparentSprite_NoClip(region[i].spr, region[i].x * 2, region[i].y * 2, 2, 2); } uint8_t MainMenu(void) { bool keypress; uint8_t keypressed; uint8_t i = 0; char *menutext[3] = {"RESTART", "PLAY", "QUIT"}; keypressed = 3; keypress = false; //partial redraw is our friend here, drawing the map takes a lot of time gfx_FillScreen(18); DrawMap(); gfx_Blit(1); while (kb_AnyKey()) kb_Scan(); while ((keypressed == 3) || (keypress == true)) { kb_Scan(); //update star positions //draw everything //left if (kb_Data[1] & kb_Yequ) { keypress = true; keypressed = 0; } //right if (kb_Data[1] & kb_Graph || kb_Data[6] & kb_Clear) { keypress = true; keypressed = 2; } //center if (kb_Data[1] & kb_Zoom) { keypress = true; keypressed = 1; } //logo, cool gfx_SetTextScale(2, 2); optix_WhiText(); gfx_SetTextFGColor(224); gfx_PrintStringXY("CONTAGION", 160 - gfx_GetStringWidth("CONTAGION") / 2, 7); gfx_SetColor(224); gfx_HorizLine(50, 30, 220); gfx_SetTextScale(1, 1); optix_WhiText(); //going to do something different here, make some tabs at the bottom for (i = 0; i < 3; i++) { //first rectangle if (i == keypressed) gfx_SetColor(224); else gfx_SetColor(0); gfx_FillRectangle(i * 107, 230, 107, 10); //second rectangle, 10 in gfx_FillRectangle(i * 107 + 10, 220, 87, 10); //draw a triangle on either side gfx_FillTriangle(i * 107, 230, i * 107 + 10, 220, i * 107 + 10, 230); gfx_FillTriangle(i * 107 + 107, 230, i * 107 + 97, 230, i * 107 + 97, 220); //outline everything depending on what's pressed gfx_SetColor(255); gfx_Line(i * 107, 240, i * 107, 230); gfx_Line(i * 107, 230, i * 107 + 10, 220); gfx_Line(i * 107 + 10, 220, i * 107 + 96, 220); gfx_Line(i * 107 + 106, 230, i * 107 + 96, 220); gfx_Line(i * 107 + 106, 240, i * 107 + 106, 230); gfx_PrintStringXY(menutext[i], (i * 107 + 53) - gfx_GetStringWidth(menutext[i]) / 2, 226); } //line gets cut off so drawing it here gfx_Line(319, 240, 319, 230); if (!kb_AnyKey()) keypress = false; gfx_SwapDraw(); } return keypressed; } void RenderTransportation(void) { //loop through and show all the ports uint8_t i; gfx_SetColor(7); if (game.connectionmade == true) { gfx_Line(port[game.initialport].x * 2, port[game.initialport].y * 2, port[game.endport].x * 2, port[game.endport].y * 2); gfx_Line(port[game.initialport].x * 2 - 1, port[game.initialport].y * 2, port[game.endport].x * 2 - 1, port[game.endport].y * 2); } for (i = 0; i < 22; i++) { if (port[i].closed) gfx_SetColor(0); else gfx_SetColor(7); gfx_FillCircle(port[i].x * 2, port[i].y * 2, 3); } } void RenderCursor(void) { gfx_SetColor(224); //gfx_SetColor(0); gfx_Circle(game.cursorx * 2, game.cursory * 2, 5); gfx_Circle(game.cursorx * 2, game.cursory * 2, 4); } void StartGame(void) { bool success = false; char str1[100]; game.cursorx = 80; game.cursory = 60; vname = optix_GetStringInput("Name?", 10, 150, 8); //GetStringInput("Name?"); strcpy(virus.name, vname); while (kb_AnyKey()) kb_Scan(); while (!success) { kb_Scan(); if ((kb_Data[7] & kb_Left) && (game.cursorx > 0)) game.cursorx -= 2; if ((kb_Data[7] & kb_Right) && (game.cursorx < 160)) game.cursorx += 2; if ((kb_Data[7] & kb_Up) && (game.cursory > 0)) game.cursory -= 2; //dont go off screen - rework later if ((kb_Data[7] & kb_Down) && (game.cursory < 120)) game.cursory += 2; if (kb_Data[6] & kb_Enter) success = InfectCoordinate(game.cursorx, game.cursory); gfx_FillScreen(18); optix_WhiText(); DrawMap(); gfx_SetColor(0); gfx_FillRectangle(0, 0, 320, 13); sprintf(str1, "Choose an initial location to infect. x:%d y:%d", game.cursorx, game.cursory); gfx_PrintStringXY(str1, 5, 2); RenderCursor(); gfx_SetColor(255); gfx_HorizLine(0, 13, 320); gfx_SwapDraw(); } free(vname); } void main(void) { char str1[20]; uint8_t keypressed; uint8_t x; uint8_t y; uint8_t i; srand(rtc_Time()); gfx_Begin(); gfx_SetDraw(1); gfx_SetTransparentColor(0); optix_WhiText(); optix_SetDefaultColors(); InitializeSimulation(); InitializeMap(); InitializePorts(); LoadData(); //do FPS things timer_Control = TIMER1_ENABLE | TIMER1_32K | TIMER1_UP; keypressed = 3; x = randInt(0, 160); y = randInt(0, 120); while (keypressed != 2) { keypressed = MainMenu(); //because I am tired of the memory management menu if (keypressed == 0) { ti_Delete("CNTGNDAT"); optix_Message("ALERT", "~DELETION `All of your Pandemic CE data has been deleted. The program will now quit. `~EXITING `Please press [ENTER]. Some text... `newline starts here. Some text... `~This is a title! `more text", 10, 150, 6); optix_Menu("TEST MENU", "Play`Statistics`Options`Reset`Game mode`Credits`About`Quit`", 14, 100, 4); break; } //need something here for keypressed == 0, will be a submenu of some kind if (keypressed == 1) { if (game.ticksplayed == 0) StartGame(); while (!(kb_Data[6] & kb_Clear)) { kb_Scan(); if (kb_Data[1] & kb_Graph && game.canpress) { MutationMenu(); game.canpress = false; } //we don't need this anymore, was used to infect random coordinates as a test /*if (randInt(0, 10) == 10) { x = randInt(0, 160); y = randInt(0, 120); }*/ HandleKeys(); UpdateSimulation(); UpdateTransportation(); gfx_FillScreen(18); DrawMap(); //RenderCursor(); if (game.viewmode == 1) RenderTransportation(); Progress(); if (game.newsloops == 0) UpdateNews(game.vVictory, game.wVictory); //testing some stuff (disable for now), seems to mostly work /*InfectCoordinate(x, y); gfx_SetColor(224); gfx_Circle(x * 2, y * 2, 5);*/ //more FPS RenderBottomToolbar(); RenderTopToolbar(); sprintf(str1, "FPS : %d", 32768 / timer_1_Counter); //gfx_PrintStringXY(str1, 160 - gfx_GetStringWidth(str1) / 2, 2); gfx_SwapDraw(); //increment the ticks played game.ticksplayed += timer_1_Counter; timer_1_Counter = 0; } } if (keypressed == 2) { SaveData(); break; } } gfx_End(); } ================================================ FILE: src/sprites/africa.c ================================================ // Converted using ConvPNG #include #include "sprites.h" // 8 bpp image uint8_t africa_data[1882] = { 40,47, // width,height 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,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,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,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,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,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x00,0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; ================================================ FILE: src/sprites/anchor_scaled.c ================================================ // Converted using ConvPNG #include #include "icons.h" // 8 bpp image uint8_t anchor_scaled_data[66] = { 8,8, // width,height 0xFF,0xFF,0xFF,0x6B,0x4A,0xFF,0xFF,0xFF, 0xFF,0xFF,0xB4,0x6B,0x4A,0x94,0xFE,0xFF, 0xFF,0xFF,0x93,0x21,0x21,0x8C,0xDE,0xFF, 0xFF,0xFF,0xFF,0x4A,0x4A,0xFF,0xFF,0xFF, 0xB6,0xDE,0xFF,0x6B,0x29,0xFF,0xFF,0xD6, 0x4A,0x29,0xDE,0x6B,0x4A,0xDE,0x49,0x4A, 0xB5,0x21,0x01,0x21,0x01,0x01,0x21,0xB5, 0xFF,0xDE,0x6B,0x00,0x21,0x93,0xFE,0xFF, }; ================================================ FILE: src/sprites/asia.c ================================================ // Converted using ConvPNG #include #include "sprites.h" // 8 bpp image uint8_t asia_data[3577] = { 65,55, // width,height 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,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,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,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,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,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,0xFF,0xFF,0xFF,0xFF,0xFF,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,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,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,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,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,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,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,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,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,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,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,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,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,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,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; ================================================ FILE: src/sprites/cemetechdiscord.c ================================================ // Converted using ConvPNG #include #include "icons.h" // 8 bpp image uint8_t cemetechdiscord_data[731] = { 27,27, // width,height 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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF, 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF, 0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF, 0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF, 0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF, 0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF, 0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF, 0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF, 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF, 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF, 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF, 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF, 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF, 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF, 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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, }; ================================================ FILE: src/sprites/closed_scaled.c ================================================ // Converted using ConvPNG #include #include "icons.h" // 8 bpp image uint8_t closed_scaled_data[258] = { 16,16, // width,height 0x94,0x94,0x94,0x94,0xE8,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xC9,0x94,0x94,0x94,0x94, 0x94,0x94,0x94,0xE0,0xE0,0xE0,0xE0,0xE8,0xE8,0xE0,0xE0,0xE0,0xE0,0x93,0x94,0x94, 0x94,0x94,0xE0,0xE0,0xE0,0xC9,0xAB,0x94,0x94,0xAB,0xC9,0xE0,0xE0,0xE0,0xAB,0x94, 0x94,0xE0,0xE0,0xE0,0xE0,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0xE0,0xE0,0xE0,0x93, 0xC9,0xE0,0xE0,0xE0,0xE0,0xE0,0x94,0x94,0x94,0x94,0x94,0x94,0x94,0xE0,0xE0,0xCA, 0xE0,0xE0,0xC9,0xCA,0xE0,0xE0,0xE0,0x94,0x94,0x94,0x94,0x94,0x94,0xCA,0xE0,0xE8, 0xE0,0xE0,0xCA,0x94,0xE8,0xE0,0xE0,0xE9,0x94,0x94,0x94,0x94,0x94,0xAB,0xE0,0xE0, 0xE0,0xE0,0x94,0x94,0x94,0xE8,0xE0,0xE0,0xC9,0x94,0x94,0x94,0x94,0xAB,0xE0,0xE0, 0xE0,0xE0,0x94,0x94,0x94,0x94,0xE0,0xE0,0xE0,0xCA,0x94,0x94,0x94,0xAB,0xE0,0xE0, 0xE0,0xE0,0x93,0x94,0x94,0x94,0x93,0xE0,0xE0,0xE0,0xAB,0x94,0x94,0xAB,0xE0,0xE0, 0xE0,0xE0,0xCA,0x94,0x94,0x94,0x94,0xAB,0xE0,0xE0,0xE0,0xCA,0x94,0xAB,0xE0,0xE0, 0xE0,0xE0,0xE0,0x94,0x94,0x94,0x94,0x94,0xAB,0xE0,0xE0,0xE0,0xAB,0xE9,0xE0,0xE0, 0xCA,0xE0,0xE0,0xCA,0x94,0x94,0x94,0x94,0x94,0xAB,0xE0,0xE0,0xE0,0xE0,0xE0,0xCA, 0x94,0xE0,0xE0,0xE0,0xC9,0x94,0x94,0x94,0x94,0x94,0xAB,0xE0,0xE0,0xE0,0xE8,0x94, 0x94,0x94,0xE0,0xE0,0xE0,0xE8,0xCA,0xCA,0xCA,0xCA,0xE8,0xE0,0xE0,0xE0,0x94,0x94, 0x94,0x94,0xAB,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0x93,0x94,0x94, }; ================================================ FILE: src/sprites/ecprograms.c ================================================ // Converted using ConvPNG #include #include "icons.h" // 8 bpp image uint8_t ecprograms_data[731] = { 27,27, // width,height 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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF, 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF, 0xFF,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF, 0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF, 0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF, 0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF, 0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF, 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF, 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF, 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,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, }; ================================================ FILE: src/sprites/europe.c ================================================ // Converted using ConvPNG #include #include "sprites.h" // 8 bpp image uint8_t europe_data[770] = { 32,24, // width,height 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,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, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, 0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, 0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,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,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00, 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00, 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00, 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00, 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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, }; ================================================ FILE: src/sprites/greenland.c ================================================ // Converted using ConvPNG #include #include "sprites.h" // 8 bpp image uint8_t greenland_data[338] = { 24,14, // width,height 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, 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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00, 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; ================================================ FILE: src/sprites/icons.c ================================================ // Converted using ConvPNG #include #include "icons.h" uint16_t icons_pal[256] = { 0x0000, // 00 :: rgb(0,0,0) 0x0081, // 01 :: rgb(0,32,8) 0x0102, // 02 :: rgb(0,65,16) 0x0183, // 03 :: rgb(0,97,24) 0x0204, // 04 :: rgb(0,130,33) 0x0285, // 05 :: rgb(0,162,41) 0x0306, // 06 :: rgb(0,195,49) 0x0387, // 07 :: rgb(0,227,57) 0x0408, // 08 :: rgb(8,0,66) 0x0489, // 09 :: rgb(8,32,74) 0x050A, // 10 :: rgb(8,65,82) 0x058B, // 11 :: rgb(8,97,90) 0x060C, // 12 :: rgb(8,130,99) 0x068D, // 13 :: rgb(8,162,107) 0x070E, // 14 :: rgb(8,195,115) 0x078F, // 15 :: rgb(8,227,123) 0x0810, // 16 :: rgb(16,0,132) 0x0891, // 17 :: rgb(16,32,140) 0x0912, // 18 :: rgb(16,65,148) 0x0993, // 19 :: rgb(16,97,156) 0x0A14, // 20 :: rgb(16,130,165) 0x0A95, // 21 :: rgb(16,162,173) 0x0B16, // 22 :: rgb(16,195,181) 0x0B97, // 23 :: rgb(16,227,189) 0x0C18, // 24 :: rgb(24,0,198) 0x0C99, // 25 :: rgb(24,32,206) 0x0D1A, // 26 :: rgb(24,65,214) 0x0D9B, // 27 :: rgb(24,97,222) 0x0E1C, // 28 :: rgb(24,130,231) 0x0E9D, // 29 :: rgb(24,162,239) 0x0F1E, // 30 :: rgb(24,195,247) 0x0F9F, // 31 :: rgb(24,227,255) 0x9000, // 32 :: rgb(33,4,0) 0x9081, // 33 :: rgb(33,36,8) 0x9102, // 34 :: rgb(33,69,16) 0x9183, // 35 :: rgb(33,101,24) 0x9204, // 36 :: rgb(33,134,33) 0x9285, // 37 :: rgb(33,166,41) 0x9306, // 38 :: rgb(33,199,49) 0x9387, // 39 :: rgb(33,231,57) 0x9408, // 40 :: rgb(41,4,66) 0x9489, // 41 :: rgb(41,36,74) 0x950A, // 42 :: rgb(41,69,82) 0x958B, // 43 :: rgb(41,101,90) 0x960C, // 44 :: rgb(41,134,99) 0x968D, // 45 :: rgb(41,166,107) 0x970E, // 46 :: rgb(41,199,115) 0x978F, // 47 :: rgb(41,231,123) 0x9810, // 48 :: rgb(49,4,132) 0x9891, // 49 :: rgb(49,36,140) 0x9912, // 50 :: rgb(49,69,148) 0x9993, // 51 :: rgb(49,101,156) 0x9A14, // 52 :: rgb(49,134,165) 0x9A95, // 53 :: rgb(49,166,173) 0x9B16, // 54 :: rgb(49,199,181) 0x9B97, // 55 :: rgb(49,231,189) 0x9C18, // 56 :: rgb(57,4,198) 0x9C99, // 57 :: rgb(57,36,206) 0x9D1A, // 58 :: rgb(57,69,214) 0x9D9B, // 59 :: rgb(57,101,222) 0x9E1C, // 60 :: rgb(57,134,231) 0x9E9D, // 61 :: rgb(57,166,239) 0x9F1E, // 62 :: rgb(57,199,247) 0x9F9F, // 63 :: rgb(57,231,255) 0x2020, // 64 :: rgb(66,8,0) 0x20A1, // 65 :: rgb(66,40,8) 0x2122, // 66 :: rgb(66,73,16) 0x21A3, // 67 :: rgb(66,105,24) 0x2224, // 68 :: rgb(66,138,33) 0x22A5, // 69 :: rgb(66,170,41) 0x2326, // 70 :: rgb(66,203,49) 0x23A7, // 71 :: rgb(66,235,57) 0x2428, // 72 :: rgb(74,8,66) 0x24A9, // 73 :: rgb(74,40,74) 0x252A, // 74 :: rgb(74,73,82) 0x25AB, // 75 :: rgb(74,105,90) 0x262C, // 76 :: rgb(74,138,99) 0x26AD, // 77 :: rgb(74,170,107) 0x272E, // 78 :: rgb(74,203,115) 0x27AF, // 79 :: rgb(74,235,123) 0x2830, // 80 :: rgb(82,8,132) 0x28B1, // 81 :: rgb(82,40,140) 0x2932, // 82 :: rgb(82,73,148) 0x29B3, // 83 :: rgb(82,105,156) 0x2A34, // 84 :: rgb(82,138,165) 0x2AB5, // 85 :: rgb(82,170,173) 0x2B36, // 86 :: rgb(82,203,181) 0x2BB7, // 87 :: rgb(82,235,189) 0x2C38, // 88 :: rgb(90,8,198) 0x2CB9, // 89 :: rgb(90,40,206) 0x2D3A, // 90 :: rgb(90,73,214) 0x2DBB, // 91 :: rgb(90,105,222) 0x2E3C, // 92 :: rgb(90,138,231) 0x2EBD, // 93 :: rgb(90,170,239) 0x2F3E, // 94 :: rgb(90,203,247) 0x2FBF, // 95 :: rgb(90,235,255) 0xB020, // 96 :: rgb(99,12,0) 0xB0A1, // 97 :: rgb(99,44,8) 0xB122, // 98 :: rgb(99,77,16) 0xB1A3, // 99 :: rgb(99,109,24) 0xB224, // 100 :: rgb(99,142,33) 0xB2A5, // 101 :: rgb(99,174,41) 0xB326, // 102 :: rgb(99,207,49) 0xB3A7, // 103 :: rgb(99,239,57) 0xB428, // 104 :: rgb(107,12,66) 0xB4A9, // 105 :: rgb(107,44,74) 0xB52A, // 106 :: rgb(107,77,82) 0xB5AB, // 107 :: rgb(107,109,90) 0xB62C, // 108 :: rgb(107,142,99) 0xB6AD, // 109 :: rgb(107,174,107) 0xB72E, // 110 :: rgb(107,207,115) 0xB7AF, // 111 :: rgb(107,239,123) 0xB830, // 112 :: rgb(115,12,132) 0xB8B1, // 113 :: rgb(115,44,140) 0xB932, // 114 :: rgb(115,77,148) 0xB9B3, // 115 :: rgb(115,109,156) 0xBA34, // 116 :: rgb(115,142,165) 0xBAB5, // 117 :: rgb(115,174,173) 0xBB36, // 118 :: rgb(115,207,181) 0xBBB7, // 119 :: rgb(115,239,189) 0xBC38, // 120 :: rgb(123,12,198) 0xBCB9, // 121 :: rgb(123,44,206) 0xBD3A, // 122 :: rgb(123,77,214) 0xBDBB, // 123 :: rgb(123,109,222) 0xBE3C, // 124 :: rgb(123,142,231) 0xBEBD, // 125 :: rgb(123,174,239) 0xBF3E, // 126 :: rgb(123,207,247) 0xBFBF, // 127 :: rgb(123,239,255) 0x4040, // 128 :: rgb(132,16,0) 0x40C1, // 129 :: rgb(132,48,8) 0x4142, // 130 :: rgb(132,81,16) 0x41C3, // 131 :: rgb(132,113,24) 0x4244, // 132 :: rgb(132,146,33) 0x42C5, // 133 :: rgb(132,178,41) 0x4346, // 134 :: rgb(132,211,49) 0x43C7, // 135 :: rgb(132,243,57) 0x4448, // 136 :: rgb(140,16,66) 0x44C9, // 137 :: rgb(140,48,74) 0x454A, // 138 :: rgb(140,81,82) 0x45CB, // 139 :: rgb(140,113,90) 0x464C, // 140 :: rgb(140,146,99) 0x46CD, // 141 :: rgb(140,178,107) 0x474E, // 142 :: rgb(140,211,115) 0x47CF, // 143 :: rgb(140,243,123) 0x4850, // 144 :: rgb(148,16,132) 0x48D1, // 145 :: rgb(148,48,140) 0x4952, // 146 :: rgb(148,81,148) 0x49D3, // 147 :: rgb(148,113,156) 0x4A54, // 148 :: rgb(148,146,165) 0x4AD5, // 149 :: rgb(148,178,173) 0x4B56, // 150 :: rgb(148,211,181) 0x4BD7, // 151 :: rgb(148,243,189) 0x4C58, // 152 :: rgb(156,16,198) 0x4CD9, // 153 :: rgb(156,48,206) 0x4D5A, // 154 :: rgb(156,81,214) 0x4DDB, // 155 :: rgb(156,113,222) 0x4E5C, // 156 :: rgb(156,146,231) 0x4EDD, // 157 :: rgb(156,178,239) 0x4F5E, // 158 :: rgb(156,211,247) 0x4FDF, // 159 :: rgb(156,243,255) 0xD040, // 160 :: rgb(165,20,0) 0xD0C1, // 161 :: rgb(165,52,8) 0xD142, // 162 :: rgb(165,85,16) 0xD1C3, // 163 :: rgb(165,117,24) 0xD244, // 164 :: rgb(165,150,33) 0xD2C5, // 165 :: rgb(165,182,41) 0xD346, // 166 :: rgb(165,215,49) 0xD3C7, // 167 :: rgb(165,247,57) 0xD448, // 168 :: rgb(173,20,66) 0xD4C9, // 169 :: rgb(173,52,74) 0xD54A, // 170 :: rgb(173,85,82) 0xD5CB, // 171 :: rgb(173,117,90) 0xD64C, // 172 :: rgb(173,150,99) 0xD6CD, // 173 :: rgb(173,182,107) 0xD74E, // 174 :: rgb(173,215,115) 0xD7CF, // 175 :: rgb(173,247,123) 0xD850, // 176 :: rgb(181,20,132) 0xD8D1, // 177 :: rgb(181,52,140) 0xD952, // 178 :: rgb(181,85,148) 0xD9D3, // 179 :: rgb(181,117,156) 0xDA54, // 180 :: rgb(181,150,165) 0xDAD5, // 181 :: rgb(181,182,173) 0xDB56, // 182 :: rgb(181,215,181) 0xDBD7, // 183 :: rgb(181,247,189) 0xDC58, // 184 :: rgb(189,20,198) 0xDCD9, // 185 :: rgb(189,52,206) 0xDD5A, // 186 :: rgb(189,85,214) 0xDDDB, // 187 :: rgb(189,117,222) 0xDE5C, // 188 :: rgb(189,150,231) 0xDEDD, // 189 :: rgb(189,182,239) 0xDF5E, // 190 :: rgb(189,215,247) 0xDFDF, // 191 :: rgb(189,247,255) 0x6060, // 192 :: rgb(198,24,0) 0x60E1, // 193 :: rgb(198,56,8) 0x6162, // 194 :: rgb(198,89,16) 0x61E3, // 195 :: rgb(198,121,24) 0x6264, // 196 :: rgb(198,154,33) 0x62E5, // 197 :: rgb(198,186,41) 0x6366, // 198 :: rgb(198,219,49) 0x63E7, // 199 :: rgb(198,251,57) 0x6468, // 200 :: rgb(206,24,66) 0x64E9, // 201 :: rgb(206,56,74) 0x656A, // 202 :: rgb(206,89,82) 0x65EB, // 203 :: rgb(206,121,90) 0x666C, // 204 :: rgb(206,154,99) 0x66ED, // 205 :: rgb(206,186,107) 0x676E, // 206 :: rgb(206,219,115) 0x67EF, // 207 :: rgb(206,251,123) 0x6870, // 208 :: rgb(214,24,132) 0x68F1, // 209 :: rgb(214,56,140) 0x6972, // 210 :: rgb(214,89,148) 0x69F3, // 211 :: rgb(214,121,156) 0x6A74, // 212 :: rgb(214,154,165) 0x6AF5, // 213 :: rgb(214,186,173) 0x6B76, // 214 :: rgb(214,219,181) 0x6BF7, // 215 :: rgb(214,251,189) 0x6C78, // 216 :: rgb(222,24,198) 0x6CF9, // 217 :: rgb(222,56,206) 0x6D7A, // 218 :: rgb(222,89,214) 0x6DFB, // 219 :: rgb(222,121,222) 0x6E7C, // 220 :: rgb(222,154,231) 0x6EFD, // 221 :: rgb(222,186,239) 0x6F7E, // 222 :: rgb(222,219,247) 0x6FFF, // 223 :: rgb(222,251,255) 0xF060, // 224 :: rgb(231,28,0) 0xF0E1, // 225 :: rgb(231,60,8) 0xF162, // 226 :: rgb(231,93,16) 0xF1E3, // 227 :: rgb(231,125,24) 0xF264, // 228 :: rgb(231,158,33) 0xF2E5, // 229 :: rgb(231,190,41) 0xF366, // 230 :: rgb(231,223,49) 0xF3E7, // 231 :: rgb(231,255,57) 0xF468, // 232 :: rgb(239,28,66) 0xF4E9, // 233 :: rgb(239,60,74) 0xF56A, // 234 :: rgb(239,93,82) 0xF5EB, // 235 :: rgb(239,125,90) 0xF66C, // 236 :: rgb(239,158,99) 0xF6ED, // 237 :: rgb(239,190,107) 0xF76E, // 238 :: rgb(239,223,115) 0xF7EF, // 239 :: rgb(239,255,123) 0xF870, // 240 :: rgb(247,28,132) 0xF8F1, // 241 :: rgb(247,60,140) 0xF972, // 242 :: rgb(247,93,148) 0xF9F3, // 243 :: rgb(247,125,156) 0xFA74, // 244 :: rgb(247,158,165) 0xFAF5, // 245 :: rgb(247,190,173) 0xFB76, // 246 :: rgb(247,223,181) 0xFBF7, // 247 :: rgb(247,255,189) 0xFC78, // 248 :: rgb(255,28,198) 0xFCF9, // 249 :: rgb(255,60,206) 0xFD7A, // 250 :: rgb(255,93,214) 0xFDFB, // 251 :: rgb(255,125,222) 0xFE7C, // 252 :: rgb(255,158,231) 0xFEFD, // 253 :: rgb(255,190,239) 0xFF7E, // 254 :: rgb(255,223,247) 0xFFFF, // 255 :: rgb(255,255,255) }; ================================================ FILE: src/sprites/icons.h ================================================ // Converted using ConvPNG // This file contains all the graphics sources for easier inclusion in a project #ifndef __icons__ #define __icons__ #include #define cemetechdiscord_width 27 #define cemetechdiscord_height 27 #define cemetechdiscord_size 731 extern uint8_t cemetechdiscord_data[731]; #define cemetechdiscord ((gfx_sprite_t*)cemetechdiscord_data) #define ecprograms_width 27 #define ecprograms_height 27 #define ecprograms_size 731 extern uint8_t ecprograms_data[731]; #define ecprograms ((gfx_sprite_t*)ecprograms_data) #define myprograms_width 27 #define myprograms_height 27 #define myprograms_size 731 extern uint8_t myprograms_data[731]; #define myprograms ((gfx_sprite_t*)myprograms_data) #define programthread_width 27 #define programthread_height 27 #define programthread_size 731 extern uint8_t programthread_data[731]; #define programthread ((gfx_sprite_t*)programthread_data) #define closed_scaled_width 16 #define closed_scaled_height 16 #define closed_scaled_size 258 extern uint8_t closed_scaled_data[258]; #define closed_scaled ((gfx_sprite_t*)closed_scaled_data) #define anchor_scaled_width 8 #define anchor_scaled_height 8 #define anchor_scaled_size 66 extern uint8_t anchor_scaled_data[66]; #define anchor_scaled ((gfx_sprite_t*)anchor_scaled_data) #define logo_width 68 #define logo_height 10 #define logo_size 682 extern uint8_t logo_data[682]; #define logo ((gfx_sprite_t*)logo_data) #define sizeof_icons_pal 512 extern uint16_t icons_pal[256]; #endif ================================================ FILE: src/sprites/logo.c ================================================ // Converted using ConvPNG #include #include "icons.h" // 8 bpp image uint8_t logo_data[682] = { 68,10, // width,height 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0x00,0xE0,0xE0,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,0xE0,0xE0,0x00,0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF, 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF, 0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0xE0,0xE0,0x00,0xE0,0xE0,0xE0,0xE0,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xE0,0xE0,0xE0,0xE0,0x00,0xE0,0xE0,0xE0,0xE0,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF, 0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0xE0,0xE0,0xE0,0x00,0x00,0xE0,0xE0,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xE0,0xE0,0x00,0x00,0xE0,0xE0,0xE0,0x00,0x00,0xE0,0xE0,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF, 0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xE0,0xE0,0x00,0xE0,0xE0,0xE0,0xE0,0xE0,0x00,0xE0,0xE0,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xE0,0xE0,0x00,0xE0,0xE0,0xE0,0xE0,0xE0,0x00,0xE0,0xE0,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF, 0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0x00,0xE0,0xE0,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,0xE0,0xE0,0x00,0x00,0x00,0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; ================================================ FILE: src/sprites/myprograms.c ================================================ // Converted using ConvPNG #include #include "icons.h" // 8 bpp image uint8_t myprograms_data[731] = { 27,27, // width,height 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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF, 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF, 0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF, 0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF, 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF, 0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF, 0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF, 0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF, 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF, 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF, 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF, 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF, 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,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, }; ================================================ FILE: src/sprites/northamerica.c ================================================ // Converted using ConvPNG #include #include "sprites.h" // 8 bpp image uint8_t northamerica_data[1970] = { 48,41, // width,height 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, 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, 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, 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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF, 0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00, 0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00, 0x00,0x00,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,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0x00, 0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0x00,0x00,0xFF,0xFF,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0x00,0x00,0x00,0x00,0x00,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,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,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,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,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,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,0xFF,0xFF,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,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; ================================================ FILE: src/sprites/oceania.c ================================================ // Converted using ConvPNG #include #include "sprites.h" // 8 bpp image uint8_t oceania_data[1056] = { 34,31, // width,height 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,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,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,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,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,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,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF, 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,0xFF,0xFF,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,0xFF,0xFF,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,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,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,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; ================================================ FILE: src/sprites/optix.c ================================================ //OPTIX version 2 by epsilon5 //an open source GUI/text library in C for the TI-84 Plus CE and TI-83 Premium CE calculators //please credit when used //contact: https://www.cemetech.net/downloads/users/epsilon5 #include #include "optix.h" /* Standard headers - it's recommended to leave them included */ #include #include #include #include #include #include /* Other available headers */ // including stdarg.h, setjmp.h, assert.h, ctype.h, float.h, iso646.h, limits.h, errno.h /* Available libraries */ // including lib/ce/graphc.h, lib/ce/fileioc.h, and lib/ce/keypadc.h // Sample: #include #include #include #include #include #include #include struct optix_guicolors_t optix_guicolors; struct optix_guidata_t optix_guidata; struct optix_guisettings_t optix_guisettings; struct optix_buttoninfo_t optix_buttoninfo; struct optix_cursor_t optix_cursor; struct optix_button_t *optix_button; struct optix_box_t optix_box; struct optix_wordwraptext_t *optix_wordwraptext; struct optix_menu_t *optix_menu; char *optix_stringinput; //these will be irrelevant when we can set custom colors void optix_HandleGUI(void) { kb_Scan(); optix_guidata.skkey = os_GetCSC(); //so apparently keypresses don't work 111anymore if (!kb_AnyKey()) optix_guidata.keypress = true; gfx_FillScreen(optix_guicolors.bgcolor); optix_RenderButtons(); optix_HandleCursor(); optix_CheckForAltKey(); } void optix_HandleCursor(void) { //just going to take this out for now, it doesn't really work optix_HandleTrackPad(); if (optix_cursor.cursoractive) { optix_UpdateCursor(); optix_ClickCursor(); optix_RenderCursor(); } else { optix_UpdateSelectedButton(); optix_ClickButton(); } } void optix_WhiText(void) { gfx_SetTextBGColor(0); gfx_SetTextFGColor(255); gfx_SetTextTransparentColor(0); } void optix_BlaText(void) { gfx_SetTextBGColor(255); gfx_SetTextFGColor(0); gfx_SetTextTransparentColor(255); } void optix_CusText(bool title) { if (!title) { gfx_SetTextBGColor(optix_guicolors.textbgcolor); gfx_SetTextFGColor(optix_guicolors.textfgcolor); gfx_SetTextTransparentColor(optix_guicolors.textbgcolor); } else { gfx_SetTextBGColor(optix_guicolors.ttextbgcolor); gfx_SetTextFGColor(optix_guicolors.ttextfgcolor); gfx_SetTextTransparentColor(optix_guicolors.ttextbgcolor); } } /* uint8_t bgcolor; uint8_t colora; uint8_t colorb; uint8_t textfgcolor; uint8_t textbgcolor; uint8_t ttextfgcolor; uint8_t ttextbgcolor; */ void optix_SetDefaultColors(void) { //whatever colors you want optix_guicolors.bgcolor = 0; optix_guicolors.colora = 0; optix_guicolors.colorb = 255; optix_guicolors.textfgcolor = 255; optix_guicolors.textbgcolor = 0; optix_guicolors.ttextfgcolor = 0; optix_guicolors.ttextbgcolor = 255; optix_guicolors.selectcolor = 224; optix_guicolors.outlinecolor = 74; } void optix_SetDefaultSettings(void) { optix_cursor.x = 0; optix_cursor.y = 0; optix_cursor.cursoractive = false; optix_guidata.trackpadlastx = 0; optix_guidata.trackpadlasty = 0; optix_guidata.trackpadoriginx = 0; optix_guidata.trackpadoriginy = 0; optix_guisettings.buttonsensitivity = 10; optix_buttoninfo.currbutton = 1; optix_guidata.keypress = true; } void optix_VertScrollbar(uint24_t x, uint8_t y, uint8_t currpos, uint8_t maxpos, uint8_t width, uint8_t height, bool keypressed) { optix_Scrollbar(x, y, currpos, maxpos, width, height, keypressed, true); } void optix_HorizScrollbar(uint24_t x, uint8_t y, uint8_t currpos, uint8_t maxpos, uint24_t width, uint8_t height, bool keypressed) { optix_Scrollbar(x, y, currpos, maxpos, width, height, keypressed, false); } //I'll teach you kids a thing or two about bad code void optix_Scrollbar(uint24_t x, uint8_t y, uint8_t currpos, uint8_t maxpos, uint24_t width, uint8_t height, bool keypressed, bool vert) { //because 0-3 is 4 entries not 3, for example maxpos++; gfx_SetColor(optix_guicolors.colora); gfx_FillRectangle(x, y, width, height); gfx_SetColor(optix_guicolors.colorb); gfx_Rectangle(x, y, width, height); if (keypressed) gfx_SetColor(optix_guicolors.selectcolor); if (currpos >= maxpos - 1) { if (vert) gfx_FillRectangle(x + 2, y + (height - 2) - (height - 4) / maxpos, width - 4, (height - 4) / maxpos); else gfx_FillRectangle(x + (width - 2) - (width - 4) / maxpos, y + 2, (width - 4) / maxpos, height - 4); gfx_SetColor(optix_guicolors.outlinecolor); if (vert) gfx_Rectangle(x + 2, y + (height - 2) - (height - 4) / maxpos, width - 4, (height - 4) / maxpos); else gfx_Rectangle(x + (width - 2) - (width - 4) / maxpos, y + 2, (width - 4) / maxpos, height - 4); } else { if (vert) gfx_FillRectangle(x + 2, (y + 2) + currpos * ((height - 4) / maxpos), width - 4, (height - 4) / maxpos); else gfx_FillRectangle((x + 2) + currpos * ((width - 4) / maxpos), y + 2, (width - 4) / maxpos, height - 4); gfx_SetColor(optix_guicolors.outlinecolor); if (vert) gfx_Rectangle(x + 2, (y + 2) + currpos * ((height - 4) / maxpos), width - 4, (height - 4) / maxpos); else gfx_Rectangle((x + 2) + currpos * ((width - 4) / maxpos), y + 2, (width - 4) / maxpos, height - 4); } } //note: height does not include the height of the title, which is by default 12 void optix_RenderWindow(const char title[], uint16_t width, uint8_t height) { uint8_t xprint; uint8_t yprint; uint8_t titlewidth; titlewidth = 12; xprint = 160 - width / 2; yprint = 120 - (height + titlewidth) / 2; gfx_SetColor(optix_guicolors.colora); gfx_FillRectangle(xprint, yprint + titlewidth, width, height); gfx_SetColor(optix_guicolors.colorb); gfx_Rectangle(xprint, yprint + titlewidth, width, height); //the title bar gfx_FillRectangle(xprint, yprint, width, titlewidth); optix_CusText(true); gfx_PrintStringXY(title, 160 - gfx_GetStringWidth(title) / 2, yprint + titlewidth / 2 - 3); } //this doesn't need to print anymore because another function will do it uint8_t optix_WordWrap(const char message[], uint16_t width) { uint8_t numlines; uint16_t charnumber; char tempstr[100] = ""; char linestr[100] = ""; uint8_t tempchar; int stringlength; //uint8_t i = 0; //I don't want to talk about it okay //free(optix_wordwraptext); charnumber = 0; numlines = 0; stringlength = optix_GetStringLength(message); //retrying this //so we want to get words, and stop when we get to the end for ( ; ; ) { strcpy(tempstr, ""); tempchar = 0; //get each new word while (message[charnumber] != " "[0]) { //if we reach the newline character immediately stop and start a new line //but put priority on keeping the words where they should be if ((message[charnumber] == "`"[0] && gfx_GetStringWidth(tempstr) + gfx_GetStringWidth(linestr) <= width)) { //shift everything back //put the stuff on a new line tempstr[tempchar] = '\0'; strcat(linestr, tempstr); optix_AddWordWrapLine(linestr, &numlines); strcpy(linestr, ""); strcpy(tempstr, ""); break; } tempstr[tempchar] = message[charnumber]; tempstr[tempchar + 1] = '\0'; if (gfx_GetStringWidth(tempstr) >= width) { tempstr[tempchar] = '\0'; charnumber--; optix_AddWordWrapLine(tempstr, &numlines); strcpy(linestr, ""); strcpy(tempstr, ""); break; } tempchar++; charnumber++; if (charnumber >= stringlength) break; } //so it was never moving on if (message[charnumber] != "`"[0]) tempstr[tempchar++] = " "[0]; tempstr[tempchar++] = '\0'; charnumber++; //check if the line width added to the word width is greater than the width of the window if (gfx_GetStringWidth(tempstr) + gfx_GetStringWidth(linestr) <= width) strcat(linestr, tempstr); //if it's greater that word becomes the new next line else { optix_AddWordWrapLine(linestr, &numlines); strcpy(linestr, tempstr); } if (charnumber >= stringlength) break; } optix_AddWordWrapLine(linestr, &numlines); //because return numlines; } void optix_AddWordWrapLine(const char string[], uint8_t *numlines) { if (optix_wordwraptext = realloc(optix_wordwraptext, (*numlines + 1) * sizeof(struct optix_wordwraptext_t))) { //thanks LLVM strcpy(optix_wordwraptext[*numlines].text, string); ++*numlines; } } void optix_PrintWordWrap(uint16_t width, uint8_t initialx, uint8_t initialy, uint8_t textspacing, uint8_t currline, uint8_t maxlines) { uint8_t i; uint8_t line = 0; char linestr[200]; optix_CusText(false); for (i = 0; i < maxlines; i++) { if (line >= maxlines) break; strcpy(linestr, optix_wordwraptext[i + currline].text); if (linestr[0] != "~"[0]) gfx_PrintStringXY(linestr, initialx, initialy + line * textspacing); else if (maxlines - line >= 2) { linestr[0] = " "[0]; //maybe later //gfx_SetTextFGColor(224); gfx_SetTextScale(2, 2); //add 4 here because that is the width of the space, meaning that the title would be shifted over 2 pixels to the right //doesn't really matter but could be irritating if anyone noticed //half of 16 is 8, add that to y to center vertically between lines gfx_PrintStringXY(linestr, (initialx + width / 2) - (gfx_GetStringWidth(linestr) + 4) / 2, (textspacing - 9) + initialy + line * textspacing); //CusText(false); gfx_SetTextScale(1, 1); //bigger text so taller line++; } line++; } } int optix_GetStringLength(const char string[]) { int stringlength; stringlength = 0; while (string[stringlength] != '\0') stringlength++; return stringlength; } //HOW TO USE: just call the function, giving it the title, your desired text spacing (in pixels), the width of the box (in pixels), //and it will handle the rest, centering the box and wrapping the text for you, and now scrolling as well //ANOTHER NOTE: Making new lines and titles within the box: You can use the characters "`" and "~" to start a new line and title a line, //respectively. In order to start a new line, you must put the "`" directly in front of the word that you want the new line to start with: //"Some text... `newline starts here". If you'd like to make a line centered and in a different color, as for a subheader, you can use "~". //This is best coupled with "`", where it must come second (newline, then indicate you want that to be a title). Example: "Some text... `~This //is a title! `more text" void optix_Message(const char title[], const char message[], uint8_t textspacing, uint16_t width, uint8_t maxlines) { //change as necessary uint8_t xprint; uint8_t yprint; uint8_t numlines = 0; uint8_t currline; char temp[2] = " "; bool keypress; uint8_t titlewidth; uint8_t padding = 3; //let's fix this //gfx_Blit(1); currline = 0; keypress = true; titlewidth = 12; numlines = optix_WordWrap(message, width); if (numlines < maxlines) maxlines = numlines; xprint = 160 - (width + 2 * padding) / 2; //the top bar will always be 12 pixels tall yprint = 120 - (maxlines * textspacing + titlewidth + 2 * padding) / 2; while (kb_AnyKey()) kb_Scan(); while (!(kb_Data[6] & kb_Enter)) { kb_Scan(); //handle scrolling if (numlines > maxlines) { if ((kb_Data[7] & kb_Up) && (currline > 0) && keypress) { currline--; keypress = false; } if ((kb_Data[7] & kb_Down) && (currline < numlines - maxlines) && keypress) { currline++; keypress = false; } } if (!kb_AnyKey()) keypress = true; //numlines++ because we need to display the title too //15 is the textspacing //yprint = 120 - maxlines * textspacing / 2; //make a box gfx_SetColor(optix_guicolors.colora); gfx_FillRectangle(xprint, yprint + titlewidth, width + 2 * padding, maxlines * textspacing + (2 * padding)); gfx_SetColor(optix_guicolors.colorb); gfx_Rectangle(xprint, yprint + titlewidth, width + 2 * padding, maxlines * textspacing + (2 * padding)); //gfx_Rectangle(xprint + 1, yprint + titlewidth + 1, (width + 2 * padding) - 2, (maxlines * textspacing + (2 * padding)) - 2); //make some triangles (not now though, they're a little off and I like the box better) /*gfx_FillTriangle(xprint - 5, yprint - 5 + textspacing, xprint - 5 + textspacing, yprint - 5 + textspacing, xprint - 5 + textspacing, yprint - 5); gfx_FillTriangle(xprint - 5 + width, yprint - 5 + textspacing, xprint - 5 + width - textspacing, yprint - 5 + textspacing, xprint - 5 + width - textspacing, yprint - 5);*/ gfx_FillRectangle(xprint, yprint, width + 2 * padding, titlewidth); optix_CusText(true); gfx_PrintStringXY(title, 160 - gfx_GetStringWidth(title) / 2, yprint + (titlewidth / 2 - 3)); //indicate that scrolling can be done if applicable if (numlines > maxlines) { if (currline > 0 && currline < numlines - maxlines) temp[0] = 18; else if (currline > 0) temp[0] = 24; else if (currline < numlines - maxlines) temp[0] = 25; gfx_PrintStringXY(temp, xprint + width + padding - gfx_GetStringWidth(temp), yprint + (titlewidth / 2 - 3)); } //we still want the text to be in the right spot //yprint += textspacing + 2; optix_PrintWordWrap(width, xprint + 2 * padding, yprint + titlewidth + padding + 1, textspacing, currline, maxlines); gfx_SwapDraw(); } while (kb_AnyKey()) kb_Scan(); } //SYNTAX NOTES: specify your title as normal, as well as your text spacing and box width (in pixels), as for the message routine //maxlines is how many lines will be displayed of the menu at one time, and if there are more entries in the menu than this number, //it will allow you to scroll. Entries should be in the format of something like this: "Play`Statistics`Options`Reset`Game mode`Credits`About`Quit`", //where the character "`" comes AFTER each entry uint8_t optix_Menu(const char title[], const char entries[], uint8_t textspacing, uint16_t width, uint8_t maxlines) { //the new menu stuff will do it all for us struct optix_menu_t *m = &optix_menu[optix_guidata.currmenu]; uint8_t xprint; uint8_t yprint; uint8_t numlines; uint8_t currline; uint8_t currentselection; uint8_t titlewidth = 12; char temp[2] = " "; bool enterpressed; //same here //gfx_Blit(1); numlines = optix_AddMenu(0, 0, 0, 0, 0, 0, 0, 0, entries, NULL); if (numlines < maxlines) maxlines = numlines; optix_DeleteLastMenu(); currline = 0; currentselection = 0; enterpressed = false; xprint = 160 - width / 2; yprint = 120 - (titlewidth + maxlines * textspacing) / 2; optix_AddMenu(xprint, yprint + titlewidth, 0, 0, 1, maxlines, width, textspacing, entries, NULL); optix_guidata.currmenu = optix_guidata.nummenus - 1; m = &optix_menu[optix_guidata.currmenu]; while (kb_AnyKey()) kb_Scan(); while ((!m->enterpressed) || (kb_Data[6] & kb_Enter) || (kb_Data[1] & kb_2nd)) { optix_UpdateCurrMenu(); gfx_SetColor(optix_guicolors.colora); gfx_FillRectangle(xprint - 1, yprint + titlewidth - 1, width + 2, maxlines * textspacing + 2); gfx_SetColor(optix_guicolors.colorb); gfx_Rectangle(xprint - 1, yprint + titlewidth - 1, width + 2, maxlines * textspacing + 2); //gfx_Rectangle(xprint + 1, yprint + titlewidth + 1, (width + 2 * padding) - 2, (maxlines * textspacing + (2 * padding)) - 2); //make some triangles (not now though, they're a little off and I like the box better) /*gfx_FillTriangle(xprint - 5, yprint - 5 + textspacing, xprint - 5 + textspacing, yprint - 5 + textspacing, xprint - 5 + textspacing, yprint - 5); gfx_FillTriangle(xprint - 5 + width, yprint - 5 + textspacing, xprint - 5 + width - textspacing, yprint - 5 + textspacing, xprint - 5 + width - textspacing, yprint - 5);*/ gfx_FillRectangle(xprint - 1, yprint - 1, width + 2, titlewidth); optix_CusText(true); gfx_PrintStringXY(title, 160 - gfx_GetStringWidth(title) / 2, yprint + (titlewidth / 2 - 4)); //indicate that scrolling can be done if applicable if (numlines > maxlines) { if (m->menumin > 0 && m->menumin < m->numoptions - maxlines) temp[0] = 18; else if (m->menumin > 0) temp[0] = 24; else if (m->menumin < m->numoptions - maxlines) temp[0] = 25; gfx_PrintStringXY(temp, xprint + width - gfx_GetStringWidth(temp), yprint + (titlewidth / 2 - 4)); } optix_RenderMenu(optix_guidata.currmenu); gfx_SwapDraw(); } currentselection = m->currselection; optix_DeleteLastMenu(); return currentselection; } //old /*uint8_t optix_DispMenu(const char entries[], uint16_t width, bool print, uint8_t initialx, uint8_t initialy, uint8_t textspacing, uint8_t currline, uint8_t linestoprint, uint8_t currentselection) { uint8_t numlines; uint16_t charnumber; char tempstr[100] = " "; uint8_t tempchar; int stringlength; charnumber = 0; numlines = 0; stringlength = optix_GetStringLength(entries); linestoprint -= 3; while ((charnumber < stringlength) && ((numlines <= currline + linestoprint + 1) || (!print))) { tempchar = 0; strcpy(tempstr, " "); while (entries[charnumber] != "`"[0]) { tempstr[tempchar] = entries[charnumber]; tempchar++; charnumber++; if (charnumber > stringlength) break; } charnumber++; tempstr[tempchar] = '\0'; numlines++; if ((print) && (numlines > currline)) { if (numlines - 1 == currentselection) optix_CusText(true); else optix_CusText(false); gfx_PrintStringXY(tempstr, (initialx + width / 2) - gfx_GetStringWidth(tempstr) / 2, initialy + (numlines - currline - 1) * textspacing); } } //if (print) gfx_PrintStringXY(tempstr, (initialx + width / 2) - gfx_GetStringWidth(tempstr) / 2, initialy + (numlines - currline) * textspacing); //numlines++; return numlines; }*/ uint8_t optix_AddMenu(uint16_t x, uint8_t y, uint8_t xpadding, uint8_t ypadding, uint8_t width, uint8_t height, uint8_t xspacing, uint8_t yspacing, const char text[], gfx_sprite_t *sprites[]) { uint8_t numlines; uint16_t charnumber; char tempstr[100] = " "; uint8_t tempchar; int stringlength; struct optix_menu_t *m; optix_menu = realloc(optix_menu, ++optix_guidata.nummenus * sizeof(struct optix_menu_t)); m = &optix_menu[optix_guidata.nummenus - 1]; m->width = width; m->height = height; m->xspacing = xspacing; m->yspacing = yspacing; m->menumin = 0; m->x = x; m->y = y; m->xpadding = xpadding; m->ypadding = ypadding; m->enterpressed = false; m->currselection = 0; m->text = NULL; //free(m->text); charnumber = 0; numlines = 0; stringlength = optix_GetStringLength(text); while (charnumber < stringlength) { tempchar = 0; strcpy(tempstr, " "); while (text[charnumber] != "`"[0]) { tempstr[tempchar] = text[charnumber]; tempchar++; charnumber++; if (charnumber > stringlength) break; } charnumber++; tempstr[tempchar] = '\0'; //add it to the text numlines++; //realloc the array m->text = realloc(m->text, numlines * 3); //realloc the const char pointer m->text[numlines - 1] = malloc(tempchar + 1); strcpy(m->text[numlines - 1], tempstr); } m->numoptions = numlines; return numlines; } void optix_UpdateCurrMenu(void) { struct optix_menu_t *m = &optix_menu[optix_guidata.currmenu]; int attoption = -1; kb_Scan(); if (!kb_AnyKey()) optix_guidata.keypress = true; if (kb_Data[7] & kb_Up && optix_guidata.keypress && m->height > 1) { attoption = m->currselection - m->width; optix_guidata.keypress = false; } if (kb_Data[7] & kb_Down && optix_guidata.keypress && m->height > 1) { attoption = m->currselection + m->width; optix_guidata.keypress = false; } if (kb_Data[7] & kb_Left && optix_guidata.keypress) { attoption = m->currselection - m->height; optix_guidata.keypress = false; } if (kb_Data[7] & kb_Right && optix_guidata.keypress) { attoption = m->currselection + m->height; optix_guidata.keypress = false; } if ((kb_Data[6] & kb_Enter) || (kb_Data[1] & kb_2nd)) m->enterpressed = true; //else m->enterpressed = false; if (attoption >= 0 && attoption <= m->numoptions - 1) m->currselection = attoption; //handle scrolling if (m->currselection > m->menumin + (m->width * m->height - 1)) { if (m->width == 1 || m->height == 1) m->menumin++; else m->menumin += m->width; } else if (m->currselection < m->menumin) { if (m->width == 1 || m->height == 1) m->menumin--; else m->menumin -= m->width; } } void optix_RenderMenu(uint8_t menu) { struct optix_menu_t *m = &optix_menu[menu]; uint8_t width; uint8_t height; uint8_t iteration; iteration = m->menumin; for (height = 0; height < m->height; height++) { for (width = 0; width < m->width; width++) { if (iteration == m->currselection && menu == optix_guidata.currmenu) { if (m->enterpressed) { gfx_SetColor(optix_guicolors.selectcolor); optix_CusText(false); } else { gfx_SetColor(optix_guicolors.colorb); optix_CusText(true); } gfx_FillRectangle(width * m->xspacing + m->x + m->xpadding, height * m->yspacing + m->y + m->ypadding, m->xspacing - 2 * m->xpadding, m->yspacing - 2 * m->ypadding); gfx_SetColor(optix_guicolors.outlinecolor); gfx_Rectangle(width * m->xspacing + m->x + m->xpadding, height * m->yspacing + m->y + m->ypadding, m->xspacing - 2 * m->xpadding, m->yspacing - 2 * m->ypadding); } else optix_CusText(false); gfx_PrintStringXY(m->text[iteration], m->x + (width * m->xspacing + m->xspacing / 2) - gfx_GetStringWidth(m->text[iteration]) / 2, m->y + height * m->yspacing + (m->yspacing / 2) - 4); iteration++; //gfx_PrintStringXY(m->text[height * m->width + width], (width * m->xspacing - m->xspacing) - gfx_GetStringWidth(m->text[m->width * height + width]) / 2, height * m->yspacing + 4); if (iteration == m->numoptions) break; } } } void optix_DeleteLastMenu(void) { struct optix_menu_t *m; uint8_t i = 0; if (optix_guidata.nummenus > 0) { m = &optix_menu[--optix_guidata.nummenus]; for (i = 0; i < m->numoptions; i++) free(m->text[i]); free(m->text); //if (optix_guidata.nummenus > 1) optix_menu = realloc(optix_menu, optix_guidata.nummenus * sizeof(struct optix_menu_t)); //else free(optix_menu); //just to make sure //optix_guidata.currmenu--; } } //string input stuff uint8_t optix_InsertSpecialCharacter(void) { uint8_t x; uint8_t y; uint8_t character; uint8_t currentx; uint8_t currenty; bool keypress; //gfx_sprite_t *oldback = gfx_MallocSprite(255, 240); optix_CusText(false); character = 0; x = 0; y = 0; currentx = 0; currenty = 0; gfx_Blit(0); //gfx_GetSprite(oldback, 65, 0); while (!((kb_Data[6] & kb_Enter) || (kb_Data[1] & kb_2nd))) { gfx_FillScreen(optix_guicolors.bgcolor); kb_Scan(); if ((kb_Data[7] & kb_Up) && (keypress) && (currenty > 0)) { currenty--; keypress = false; } if ((kb_Data[7] & kb_Down) && (keypress) && (currenty < 7)) { currenty++; keypress = false; } if ((kb_Data[7] & kb_Left) && (keypress) && (currentx > 0)) { currentx--; keypress = false; } if ((kb_Data[7] & kb_Right) && (keypress) && (currentx < 15)) { currentx++; keypress = false; } if ((kb_Data[6] & kb_Clear) && (keypress)) { character = '\0'; break; } if (!kb_AnyKey()) keypress = true; gfx_SetColor(optix_guicolors.colora); gfx_FillRectangle(77, 83, 166, 86); gfx_SetColor(optix_guicolors.colorb); gfx_Rectangle(77, 83, 166, 86); gfx_Rectangle(currentx * 10 + 79, currenty * 10 + 85, 12, 12); gfx_FillRectangle(77, 71, 166, 12); optix_CusText(false); for (y = 0; y < 8; y++) { for (x = 0; x < 16; x++) { character = y * 16 + x; gfx_SetTextXY(x * 10 + 81, y * 10 + 87); gfx_PrintChar(character); } } gfx_SetColor(optix_guicolors.colorb); gfx_FillRectangle(currentx * 10 + 80, currenty * 10 + 86, 10, 10); optix_CusText(true); //the title gfx_PrintStringXY("Special characters", 160 - gfx_GetStringWidth("Special characters") / 2, 74); gfx_SetTextXY(currentx * 10 + 81, currenty * 10 + 87); character = currenty * 16 + currentx; gfx_PrintChar(character); gfx_SwapDraw(); } while (kb_Data[6] & kb_Enter) { kb_Scan(); gfx_SetColor(optix_guicolors.selectcolor); gfx_FillRectangle(currentx * 10 + 80, currenty * 10 + 86, 10, 10); optix_CusText(true); gfx_SetTextXY(currentx * 10 + 81, currenty * 10 + 87); character = currenty * 16 + currentx; gfx_PrintChar(character); gfx_SwapDraw(); } //check if this is one of the characters that OPTIX uses for word wrapping (just in case) if (character == "`"[0] || character == "~"[0]) { optix_Message("ERROR", "You attempted to use a character reserved by OPTIX. Nice try, bucko.", 10, 150, 10); character = '\0'; } //gfx_Sprite(oldback, 65, 0); //free(oldback); gfx_Blit(1); return character; } char *optix_GetStringInput(const char title[], uint8_t textspacing, uint16_t width, int maxchars) { //change as necessary const char *keys[3] = {"\0\0\0\0\0\0\0\0\0\0\0WRMH\0\0?\0VQLG\0\0.ZUPKFC\0 YTOJEB\0\0XSNIDA\0\0\0\0\0\0\0\0\0", "\0\0\0\0\0\0\0\0\0\0\0wrmh\0\0?\0vqlg\0\0.zupkfc\0 ytojeb\0\0xsnida\0\0\0\0\0\0\0\0\0", "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0-\x33\x36\x39)\0\0\0.\x32\x35\x38(\0\0\0\x30\x31\x34\x37,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" }; uint8_t xprint; uint8_t yprint; uint8_t numlines; uint8_t currline; char temp[2] = ""; char limit[20] = ""; bool keypress; uint8_t titlewidth; uint8_t padding = 3; //basically the char number int i; uint8_t skKey; //uppercase keys uint8_t currmap = 0; uint8_t cursorblink; //free(optix_stringinput); cursorblink = 0; skKey = 0; i = 0; //free(optix_wordwraptext); //null terminating byte is a thing if (optix_stringinput = realloc(optix_stringinput, maxchars + 1)) { *(optix_stringinput + maxchars) = '\0'; //strcpy(optix_stringinput, ""); //strcpy(optix_wordwraptext[0].text, ""); optix_WordWrap("", width); currline = 0; keypress = true; titlewidth = 12; numlines = 1; xprint = 160 - (width + 2 * padding) / 2; //the top bar will always be 12 pixels tall yprint = 120 - (numlines * textspacing + titlewidth + 2 * padding) / 2; while (kb_AnyKey()) kb_Scan(); while (((skKey = os_GetCSC()) != sk_Enter)) { if (keys[currmap][skKey] && i < maxchars) { optix_stringinput[i++] = keys[currmap][skKey]; numlines = optix_WordWrap(optix_stringinput, width); cursorblink = 0; } if ((skKey == sk_Del) && (i > 0)) { optix_stringinput[--i] = '\0'; numlines = optix_WordWrap(optix_stringinput, width); } if (skKey == sk_Clear) { i = 0; strcpy(optix_stringinput, " "); strcpy(optix_wordwraptext[0].text, " "); numlines = optix_WordWrap(optix_stringinput, width); } if (skKey == sk_Add && i < maxchars) { optix_stringinput[i++] = optix_InsertSpecialCharacter(); numlines = optix_WordWrap(optix_stringinput, width); } if (skKey == sk_Alpha) currmap++; if (currmap > 2) currmap = 0; optix_stringinput[i + 1] = '\0'; //gfx_FillScreen(optix_guicolors.bgcolor); gfx_SetColor(optix_guicolors.colora); gfx_FillRectangle(xprint, yprint + titlewidth, width + 2 * padding, numlines * textspacing + (2 * padding)); gfx_SetColor(optix_guicolors.colorb); gfx_Rectangle(xprint, yprint + titlewidth, width + 2 * padding, numlines * textspacing + (2 * padding)); gfx_FillRectangle(xprint, yprint, width + 2 * padding, titlewidth); //a cursor if (cursorblink < 10) { gfx_VertLine(xprint + 2 * padding + gfx_GetStringWidth(optix_wordwraptext[numlines - 1].text) - 2, yprint + titlewidth + padding + (numlines - 1) * textspacing - 1, 11); gfx_VertLine(xprint + 2 * padding + gfx_GetStringWidth(optix_wordwraptext[numlines - 1].text) - 1, yprint + titlewidth + padding + (numlines - 1) * textspacing - 1, 11); } cursorblink++; if (cursorblink > 20) cursorblink = 0; optix_CusText(true); gfx_PrintStringXY(title, 160 - gfx_GetStringWidth(title) / 2, yprint + (titlewidth / 2 - 3)); sprintf(limit, "%d/%d", i, maxchars); switch (currmap) { case 0: temp[0] = 'A'; break; case 1: temp[0] = 'a'; break; case 2: temp[0] = '1'; break; default: temp[0] = '?'; break; } gfx_PrintStringXY(limit, xprint + 2 * padding, yprint + (titlewidth / 2 - 3)); gfx_PrintStringXY(temp, xprint + width + padding - gfx_GetStringWidth(temp), yprint + (titlewidth / 2 - 3)); optix_PrintWordWrap(width, xprint + 2 * padding, yprint + titlewidth + padding + 1, textspacing, currline, numlines); gfx_SwapDraw(); } while (kb_AnyKey()) kb_Scan(); return optix_stringinput; } else return NULL; } void optix_UpdateCursor(void) { kb_Scan(); if ((kb_Data[7] & kb_Left) && (optix_cursor.x > 0)) optix_cursor.x -= 2; if ((kb_Data[7] & kb_Right) && (optix_cursor.x < 320)) optix_cursor.x += 2; if ((kb_Data[7] & kb_Up) && (optix_cursor.y > 0)) optix_cursor.y -= 2; if ((kb_Data[7] & kb_Down) && (optix_cursor.y < 240)) optix_cursor.y += 2; if (optix_cursor.x > 320) optix_cursor.x = 320; if (optix_cursor.y > 240) optix_cursor.y = 240; } void optix_RenderCursor(void) { gfx_SetColor(optix_guicolors.colora); gfx_Circle(optix_cursor.x, optix_cursor.y, 5); gfx_Circle(optix_cursor.x, optix_cursor.y, 4); } //also updates which button the cursor is currently over void optix_ClickCursor(void) { uint8_t i; if ((kb_Data[6] & kb_Enter) && (optix_guidata.keypress)) { i = 0; for (i = 0; i < optix_buttoninfo.numbuttons; i++) { struct optix_button_t *b = &optix_button[i]; if (optix_cursor.x - b->x < b->width && optix_cursor.y - b->y < b->height && optix_cursor.x - b->x > 0 && optix_cursor.y - b->y > 0) { b->funct(); break; } } optix_guidata.keypress = false; } else { i = 0; for (i = 0; i < optix_buttoninfo.numbuttons; i++) { struct optix_button_t *b = &optix_button[i]; if (optix_cursor.x - b->x < b->width && optix_cursor.y - b->y < b->height && optix_cursor.x - b->x > 0 && optix_cursor.y - b->y > 0) { optix_buttoninfo.currbutton = i; break; } else { //make sure we aren't selecting buttons we shouldn't be optix_buttoninfo.currbutton = optix_buttoninfo.numbuttons + 1; } } } } //just don't ask please //alright this is getting pretty annoying just work you asdkjdfs;ljkafsd;jlksjfda;f;sdjlkda;jlkas;ljksda;jlka;kjs;jasdfadjs;lkoijiyweapo //listen here you little son of a bioth;oirty;jlnfds;lkjf;lkfsdj;lk void optix_HandleTrackPad(void) { uint16_t x; uint8_t y; kb_key_t key; x = 0; y = 0; //thanks Michael2_3B (maybe will optimize) if (kb_Data[2]) { key = kb_Data[2]; x=32; if(key == kb_Sto) y=188; if(key == kb_Ln) y=154; if(key == kb_Log) y=120; if(key == kb_Square) y=85; if(key == kb_Recip) y=51; if(key == kb_Math) y=17; } if (kb_Data[3]) { key = kb_Data[3]; x=96; if(key == kb_0) y=222; if(key == kb_1) y=188; if(key == kb_4) y=154; if(key == kb_7) y=120; if(key == kb_Comma) y=85; if(key == kb_Sin) y=51; if(key == kb_Apps) y=17; } if (kb_Data[4]) { key = kb_Data[4]; x=160; if(key == kb_DecPnt) y=222; if(key == kb_2) y=188; if(key == kb_5) y=154; if(key == kb_8) y=120; if(key == kb_LParen) y=85; if(key == kb_Cos) y=51; if(key == kb_Prgm) y=17; } if (kb_Data[5]) { key = kb_Data[5]; x=224; if(key == kb_Chs) y=222; if(key == kb_3) y=188; if(key == kb_6) y=154; if(key == kb_9) y=120; if(key == kb_RParen) y=85; if(key == kb_Tan) y=51; if(key == kb_Vars) y=17; } if (kb_Data[6]) { key = kb_Data[6]; x=288; if(key == kb_Enter) y=222; if(key == kb_Add) y=188; if(key == kb_Sub) y=154; if(key == kb_Mul) y=120; if(key == kb_Div) y=85; if(key == kb_Power) y=51; if(key == kb_Clear) y=17; } if (x != 0 && y != 0) { //we need to know to start where the cursor was before //reset according to new location if (optix_guidata.loopssincepress > 2) { optix_guidata.trackpadoriginx = optix_cursor.x; optix_guidata.trackpadoriginy = optix_cursor.y; optix_guidata.trackpadlastx = x; optix_guidata.trackpadlasty = y; optix_guidata.loopssincepress = 0; } //if you're moving the cursor more slowly, it should more slower optix_cursor.x = optix_guidata.trackpadoriginx + (x - optix_guidata.trackpadlastx) / 3; optix_cursor.y = optix_guidata.trackpadoriginy + (y - optix_guidata.trackpadlasty) / 3; //more things optix_guidata.loopssincepress = 0; //guidata.trackpadpressedlast = true; } else { //guidata.trackpadpressedlast = false; optix_guidata.loopssincepress++; } } //this stuff was formerly in button.c void optix_InitializeButtons(void) { optix_button = (struct optix_button_t*) malloc(0 * sizeof(struct optix_button_t)); } void optix_AddButton(uint16_t x, uint8_t y, uint16_t width, uint8_t height, const char text[15], gfx_sprite_t *spr, void (*funct)(void), sk_key_t altkey) { if (optix_button = realloc(optix_button, (optix_buttoninfo.numbuttons + 1) * sizeof(struct optix_button_t))) { optix_button[optix_buttoninfo.numbuttons].x = x; optix_button[optix_buttoninfo.numbuttons].y = y; optix_button[optix_buttoninfo.numbuttons].width = width; optix_button[optix_buttoninfo.numbuttons].height = height; strcpy(optix_button[optix_buttoninfo.numbuttons].text, text); optix_button[optix_buttoninfo.numbuttons].spr = spr; optix_button[optix_buttoninfo.numbuttons].funct = funct; optix_button[optix_buttoninfo.numbuttons].altkey = altkey; optix_buttoninfo.numbuttons++; } else { optix_Message("ERROR 01", "Failed to reallocate space in the dynamic array for a new button. Please submit a bug report!", 10, 150, 3); } } //untested so be careful void optix_DeleteButton(uint8_t buttontodelete) { uint8_t i; i = 0; for (i = optix_buttoninfo.numbuttons; i > buttontodelete; i--) optix_button[i - 1] = optix_button[i]; optix_buttoninfo.numbuttons--; optix_button = realloc(optix_button, optix_buttoninfo.numbuttons * sizeof(*optix_button)); } void optix_RenderButtons(void) { uint8_t i; struct optix_button_t *b; i = 0; optix_CusText(false); for (i = 0; i < optix_buttoninfo.numbuttons; i++) { b = &optix_button[i]; gfx_SetColor(optix_guicolors.colora); if (i == optix_buttoninfo.currbutton) { //are you serious //ffs just work, it's not that hard to know what a null pointer is yhou bitkhlclk //I mean I like looking at unmapped memory and everything but this isn't that hard if (b->spr == NULL) gfx_FillRectangle(b->x, b->y, b->width, b->height); else { //make the box a little wider to show an outline //could mess up hitboxes somewhat gfx_FillRectangle(b->x - 2, b->y - 2, b->width + 4, b->height + 4); gfx_TransparentSprite(b->spr, b->x, b->y); } } gfx_PrintStringXY(b->text, (b->x + b->width / 2) - gfx_GetStringWidth(b->text) / 2, (b->y + b->height / 2) - 4); } //Let's hope that works } //all of the values in this function are pretty random, may need changing later on but seems to work for now void optix_UpdateSelectedButton(void) { int tryx; int tryy; uint8_t closestbutton; int closestbuttonscore; int buttonscore; uint8_t i; struct optix_button_t *c; i = 0; tryx = 0; tryy = 0; closestbuttonscore = 10000; closestbutton = 0; buttonscore = 0; if (optix_guidata.keypress) { kb_Scan(); if (kb_Data[7] & kb_Left) tryx--; if (kb_Data[7] & kb_Right) tryx++; if (kb_Data[7] & kb_Up) tryy--; if (kb_Data[7] & kb_Down) tryy++; if (tryx == 0 && tryy == 0) return; c = &optix_button[optix_buttoninfo.currbutton]; for (i = 0; i < optix_buttoninfo.numbuttons; i++) { struct optix_button_t *b = &optix_button[i]; //the first check, assume that if the key has an alt code it can't be selected when not in cursor mode //button can't be selected if there is a shortcut for it pretty much (like the start key, which will be //F1, no point in having a jump to that, but you will be able to click on it with the cursor if you want) if (b->altkey != 0) continue; if (tryx == -1) { if (b->x < c->x) buttonscore = (c->x - b->x) + (abs(b->y - c->y)) * optix_guisettings.buttonsensitivity; else buttonscore = 10000; } else if (tryx == 1) { if (b->x > c->x) buttonscore = (b->x - c->x) + (abs(b->y - c->y)) * optix_guisettings.buttonsensitivity; else buttonscore = 10000; } else if (tryy == -1) { if (b->y < c->y) buttonscore = (c->y - b->y) + (abs(b->x - c->x)) * optix_guisettings.buttonsensitivity; else buttonscore = 10000; } else if (tryy == 1) { if (b->y > c->y) buttonscore = (b->y - c->y) + (abs(b->x - c->x)) * optix_guisettings.buttonsensitivity; else buttonscore = 10000; } else closestbuttonscore = 10000; if (buttonscore < closestbuttonscore) { closestbutton = i; closestbuttonscore = buttonscore; } } if (closestbuttonscore < 5000) optix_buttoninfo.currbutton = closestbutton; optix_guidata.keypress = false; } } void optix_ClickButton(void) { struct optix_button_t *b = &optix_button[optix_buttoninfo.currbutton]; if ((kb_Data[6] & kb_Enter) && (optix_guidata.keypress)) { //not really sure why this is here but I guess there isn't a bug with the functions after all //gfx_FillScreen(224); //gfx_SwapDraw(); b->funct(); optix_guidata.keypress = false; } } //cool, altkeys (will work in both cursor and box modes, I think) void optix_CheckForAltKey(void) { uint8_t i; for (i = 0; i < optix_buttoninfo.numbuttons; i++) { struct optix_button_t *b = &optix_button[i]; //could be problematic if altkey is set to 0 so fixed it if (b->altkey == optix_guidata.skkey && b->altkey != 0) b->funct(); } } //these will be irrelevant when we can set custom colors ================================================ FILE: src/sprites/optix.h ================================================ #include #include #include // function declarations void optix_WhiText(void); void optix_BlaText(void); void optix_CusText(bool title); void optix_RenderWindow(const char title[], uint16_t width, uint8_t height); uint8_t optix_WordWrap(const char message[], uint16_t width); int optix_GetStringLength(const char string[]); void optix_Message(const char title[], const char message[], uint8_t textspacing, uint16_t width, uint8_t maxlines); void optix_AddWordWrapLine(const char string[], uint8_t *numlines); void optix_PrintWordWrap(uint16_t width, uint8_t initialx, uint8_t initialy, uint8_t textspacing, uint8_t currline, uint8_t maxlines); uint8_t optix_Menu(const char title[], const char entries[], uint8_t textspacing, uint16_t width, uint8_t maxlines); //uint8_t optix_DispMenu(const char entries[], uint16_t width, bool print, uint8_t initialx, uint8_t initialy, uint8_t textspacing, uint8_t currline, uint8_t linestoprint, uint8_t currentselection); uint8_t optix_AddMenu(uint16_t x, uint8_t y, uint8_t xpadding, uint8_t ypadding, uint8_t width, uint8_t height, uint8_t xspacing, uint8_t yspacing, const char text[], gfx_sprite_t *sprites[]); void optix_UpdateCurrMenu(void); void optix_RenderMenu(uint8_t menu); void optix_DeleteLastMenu(void); uint8_t optix_InsertSpecialCharacter(void); char *optix_GetStringInput(const char title[], uint8_t textspacing, uint16_t width, int maxchars); void optix_UpdateCursor(void); void optix_RenderCursor(void); void optix_ClickCursor(void); void optix_HandleTrackPad(void); void optix_InitializeButtons(void); void optix_AddButton(uint16_t x, uint8_t y, uint16_t width, uint8_t height, const char text[], gfx_sprite_t *spr, void (*funct)(void), sk_key_t altkey); void optix_DeleteButton(uint8_t buttontodelete); void optix_RenderButtons(void); void optix_UpdateSelectedButton(void); void optix_ClickButton(void); void optix_CheckForAltKey(void); void optix_SetDefaultColors(void); void optix_SetDefaultSettings(void); void optix_HandleCursor(void); void optix_HandleGUI(void); void optix_VertScrollbar(uint24_t x, uint8_t y, uint8_t currpos, uint8_t maxpos, uint8_t width, uint8_t height, bool keypressed); void optix_HorizScrollbar(uint24_t x, uint8_t y, uint8_t currpos, uint8_t maxpos, uint24_t width, uint8_t height, bool keypressed); void optix_Scrollbar(uint24_t x, uint8_t y, uint8_t currpos, uint8_t maxpos, uint24_t width, uint8_t height, bool keypressed, bool vert); //variables struct optix_button_t { uint16_t x; uint8_t y; uint16_t width; uint8_t height; char text[15]; gfx_sprite_t *spr; void (*funct)(void); sk_key_t altkey; }; extern struct optix_button_t *optix_button; //could support different colors or scales on a line by line basis later? //no I'm just lazy struct optix_wordwraptext_t { char text[200]; uint8_t useless; }; extern struct optix_wordwraptext_t *optix_wordwraptext; struct optix_buttoninfo_t { uint8_t numbuttons; uint8_t currbutton; }; extern struct optix_buttoninfo_t optix_buttoninfo; //variables struct optix_cursor_t { uint16_t x; uint8_t y; bool cursoractive; }; extern struct optix_cursor_t optix_cursor; struct optix_menu_t { uint16_t x; uint8_t y; uint8_t xpadding; uint8_t ypadding; uint8_t width; uint8_t height; uint8_t xspacing; uint8_t yspacing; char **text; uint8_t currselection; uint8_t maxtodisplay; uint8_t numoptions; bool enterpressed; //for the first option to be displayed (handles scrolling) uint8_t menumin; //an array eventually gfx_sprite_t *icon; }; extern struct optix_menu_t *optix_menu; //will be able to parent buttons, sliders, text, etc. to boxes eventually struct optix_box_t { uint16_t x; uint8_t y; uint16_t width; uint8_t height; }; extern struct optix_box_t optix_box; struct optix_guicolors_t { uint8_t bgcolor; uint8_t colora; uint8_t colorb; uint8_t selectcolor; uint8_t textfgcolor; uint8_t textbgcolor; uint8_t ttextfgcolor; uint8_t ttextbgcolor; uint8_t outlinecolor; }; extern struct optix_guicolors_t optix_guicolors; struct optix_guidata_t { //wow a lot of variables //maybe make these all go in the trackpad struct later uint8_t currmenu; uint8_t nummenus; bool keypress; sk_key_t skkey; bool trackpadpressedlast; uint16_t trackpadlastx; uint8_t trackpadlasty; uint16_t trackpadoriginx; uint8_t trackpadoriginy; uint8_t loopssincepress; }; extern struct optix_guidata_t optix_guidata; struct optix_guisettings_t { bool mouseon; bool dispbuttonback; uint8_t buttonsensitivity; }; extern struct optix_guisettings_t optix_guisettings; ================================================ FILE: src/sprites/programthread.c ================================================ // Converted using ConvPNG #include #include "icons.h" // 8 bpp image uint8_t programthread_data[731] = { 27,27, // width,height 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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF, 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF, 0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF, 0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF, 0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF, 0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF, 0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF, 0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF, 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF, 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0xFF,0xFF, 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF, 0xFF,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF, 0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xFF,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF, 0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00,0xFF,0xFF,0x00,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, }; ================================================ FILE: src/sprites/southamerica.c ================================================ // Converted using ConvPNG #include #include "sprites.h" // 8 bpp image uint8_t southamerica_data[1234] = { 28,44, // width,height 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,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,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00, 0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, 0x00,0x00,0x00,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, 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00, 0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,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,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,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,0xFF,0xFF,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,0xFF,0xFF,0xFF,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,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; ================================================ FILE: src/sprites/sprites.c ================================================ // Converted using ConvPNG #include #include "sprites.h" uint16_t sprites_pal[256] = { 0x0000, // 00 :: rgb(0,0,0) 0x0081, // 01 :: rgb(0,32,8) 0x0102, // 02 :: rgb(0,65,16) 0x0183, // 03 :: rgb(0,97,24) 0x0204, // 04 :: rgb(0,130,33) 0x0285, // 05 :: rgb(0,162,41) 0x0306, // 06 :: rgb(0,195,49) 0x0387, // 07 :: rgb(0,227,57) 0x0408, // 08 :: rgb(8,0,66) 0x0489, // 09 :: rgb(8,32,74) 0x050A, // 10 :: rgb(8,65,82) 0x058B, // 11 :: rgb(8,97,90) 0x060C, // 12 :: rgb(8,130,99) 0x068D, // 13 :: rgb(8,162,107) 0x070E, // 14 :: rgb(8,195,115) 0x078F, // 15 :: rgb(8,227,123) 0x0810, // 16 :: rgb(16,0,132) 0x0891, // 17 :: rgb(16,32,140) 0x0912, // 18 :: rgb(16,65,148) 0x0993, // 19 :: rgb(16,97,156) 0x0A14, // 20 :: rgb(16,130,165) 0x0A95, // 21 :: rgb(16,162,173) 0x0B16, // 22 :: rgb(16,195,181) 0x0B97, // 23 :: rgb(16,227,189) 0x0C18, // 24 :: rgb(24,0,198) 0x0C99, // 25 :: rgb(24,32,206) 0x0D1A, // 26 :: rgb(24,65,214) 0x0D9B, // 27 :: rgb(24,97,222) 0x0E1C, // 28 :: rgb(24,130,231) 0x0E9D, // 29 :: rgb(24,162,239) 0x0F1E, // 30 :: rgb(24,195,247) 0x0F9F, // 31 :: rgb(24,227,255) 0x9000, // 32 :: rgb(33,4,0) 0x9081, // 33 :: rgb(33,36,8) 0x9102, // 34 :: rgb(33,69,16) 0x9183, // 35 :: rgb(33,101,24) 0x9204, // 36 :: rgb(33,134,33) 0x9285, // 37 :: rgb(33,166,41) 0x9306, // 38 :: rgb(33,199,49) 0x9387, // 39 :: rgb(33,231,57) 0x9408, // 40 :: rgb(41,4,66) 0x9489, // 41 :: rgb(41,36,74) 0x950A, // 42 :: rgb(41,69,82) 0x958B, // 43 :: rgb(41,101,90) 0x960C, // 44 :: rgb(41,134,99) 0x968D, // 45 :: rgb(41,166,107) 0x970E, // 46 :: rgb(41,199,115) 0x978F, // 47 :: rgb(41,231,123) 0x9810, // 48 :: rgb(49,4,132) 0x9891, // 49 :: rgb(49,36,140) 0x9912, // 50 :: rgb(49,69,148) 0x9993, // 51 :: rgb(49,101,156) 0x9A14, // 52 :: rgb(49,134,165) 0x9A95, // 53 :: rgb(49,166,173) 0x9B16, // 54 :: rgb(49,199,181) 0x9B97, // 55 :: rgb(49,231,189) 0x9C18, // 56 :: rgb(57,4,198) 0x9C99, // 57 :: rgb(57,36,206) 0x9D1A, // 58 :: rgb(57,69,214) 0x9D9B, // 59 :: rgb(57,101,222) 0x9E1C, // 60 :: rgb(57,134,231) 0x9E9D, // 61 :: rgb(57,166,239) 0x9F1E, // 62 :: rgb(57,199,247) 0x9F9F, // 63 :: rgb(57,231,255) 0x2020, // 64 :: rgb(66,8,0) 0x20A1, // 65 :: rgb(66,40,8) 0x2122, // 66 :: rgb(66,73,16) 0x21A3, // 67 :: rgb(66,105,24) 0x2224, // 68 :: rgb(66,138,33) 0x22A5, // 69 :: rgb(66,170,41) 0x2326, // 70 :: rgb(66,203,49) 0x23A7, // 71 :: rgb(66,235,57) 0x2428, // 72 :: rgb(74,8,66) 0x24A9, // 73 :: rgb(74,40,74) 0x252A, // 74 :: rgb(74,73,82) 0x25AB, // 75 :: rgb(74,105,90) 0x262C, // 76 :: rgb(74,138,99) 0x26AD, // 77 :: rgb(74,170,107) 0x272E, // 78 :: rgb(74,203,115) 0x27AF, // 79 :: rgb(74,235,123) 0x2830, // 80 :: rgb(82,8,132) 0x28B1, // 81 :: rgb(82,40,140) 0x2932, // 82 :: rgb(82,73,148) 0x29B3, // 83 :: rgb(82,105,156) 0x2A34, // 84 :: rgb(82,138,165) 0x2AB5, // 85 :: rgb(82,170,173) 0x2B36, // 86 :: rgb(82,203,181) 0x2BB7, // 87 :: rgb(82,235,189) 0x2C38, // 88 :: rgb(90,8,198) 0x2CB9, // 89 :: rgb(90,40,206) 0x2D3A, // 90 :: rgb(90,73,214) 0x2DBB, // 91 :: rgb(90,105,222) 0x2E3C, // 92 :: rgb(90,138,231) 0x2EBD, // 93 :: rgb(90,170,239) 0x2F3E, // 94 :: rgb(90,203,247) 0x2FBF, // 95 :: rgb(90,235,255) 0xB020, // 96 :: rgb(99,12,0) 0xB0A1, // 97 :: rgb(99,44,8) 0xB122, // 98 :: rgb(99,77,16) 0xB1A3, // 99 :: rgb(99,109,24) 0xB224, // 100 :: rgb(99,142,33) 0xB2A5, // 101 :: rgb(99,174,41) 0xB326, // 102 :: rgb(99,207,49) 0xB3A7, // 103 :: rgb(99,239,57) 0xB428, // 104 :: rgb(107,12,66) 0xB4A9, // 105 :: rgb(107,44,74) 0xB52A, // 106 :: rgb(107,77,82) 0xB5AB, // 107 :: rgb(107,109,90) 0xB62C, // 108 :: rgb(107,142,99) 0xB6AD, // 109 :: rgb(107,174,107) 0xB72E, // 110 :: rgb(107,207,115) 0xB7AF, // 111 :: rgb(107,239,123) 0xB830, // 112 :: rgb(115,12,132) 0xB8B1, // 113 :: rgb(115,44,140) 0xB932, // 114 :: rgb(115,77,148) 0xB9B3, // 115 :: rgb(115,109,156) 0xBA34, // 116 :: rgb(115,142,165) 0xBAB5, // 117 :: rgb(115,174,173) 0xBB36, // 118 :: rgb(115,207,181) 0xBBB7, // 119 :: rgb(115,239,189) 0xBC38, // 120 :: rgb(123,12,198) 0xBCB9, // 121 :: rgb(123,44,206) 0xBD3A, // 122 :: rgb(123,77,214) 0xBDBB, // 123 :: rgb(123,109,222) 0xBE3C, // 124 :: rgb(123,142,231) 0xBEBD, // 125 :: rgb(123,174,239) 0xBF3E, // 126 :: rgb(123,207,247) 0xBFBF, // 127 :: rgb(123,239,255) 0x4040, // 128 :: rgb(132,16,0) 0x40C1, // 129 :: rgb(132,48,8) 0x4142, // 130 :: rgb(132,81,16) 0x41C3, // 131 :: rgb(132,113,24) 0x4244, // 132 :: rgb(132,146,33) 0x42C5, // 133 :: rgb(132,178,41) 0x4346, // 134 :: rgb(132,211,49) 0x43C7, // 135 :: rgb(132,243,57) 0x4448, // 136 :: rgb(140,16,66) 0x44C9, // 137 :: rgb(140,48,74) 0x454A, // 138 :: rgb(140,81,82) 0x45CB, // 139 :: rgb(140,113,90) 0x464C, // 140 :: rgb(140,146,99) 0x46CD, // 141 :: rgb(140,178,107) 0x474E, // 142 :: rgb(140,211,115) 0x47CF, // 143 :: rgb(140,243,123) 0x4850, // 144 :: rgb(148,16,132) 0x48D1, // 145 :: rgb(148,48,140) 0x4952, // 146 :: rgb(148,81,148) 0x49D3, // 147 :: rgb(148,113,156) 0x4A54, // 148 :: rgb(148,146,165) 0x4AD5, // 149 :: rgb(148,178,173) 0x4B56, // 150 :: rgb(148,211,181) 0x4BD7, // 151 :: rgb(148,243,189) 0x4C58, // 152 :: rgb(156,16,198) 0x4CD9, // 153 :: rgb(156,48,206) 0x4D5A, // 154 :: rgb(156,81,214) 0x4DDB, // 155 :: rgb(156,113,222) 0x4E5C, // 156 :: rgb(156,146,231) 0x4EDD, // 157 :: rgb(156,178,239) 0x4F5E, // 158 :: rgb(156,211,247) 0x4FDF, // 159 :: rgb(156,243,255) 0xD040, // 160 :: rgb(165,20,0) 0xD0C1, // 161 :: rgb(165,52,8) 0xD142, // 162 :: rgb(165,85,16) 0xD1C3, // 163 :: rgb(165,117,24) 0xD244, // 164 :: rgb(165,150,33) 0xD2C5, // 165 :: rgb(165,182,41) 0xD346, // 166 :: rgb(165,215,49) 0xD3C7, // 167 :: rgb(165,247,57) 0xD448, // 168 :: rgb(173,20,66) 0xD4C9, // 169 :: rgb(173,52,74) 0xD54A, // 170 :: rgb(173,85,82) 0xD5CB, // 171 :: rgb(173,117,90) 0xD64C, // 172 :: rgb(173,150,99) 0xD6CD, // 173 :: rgb(173,182,107) 0xD74E, // 174 :: rgb(173,215,115) 0xD7CF, // 175 :: rgb(173,247,123) 0xD850, // 176 :: rgb(181,20,132) 0xD8D1, // 177 :: rgb(181,52,140) 0xD952, // 178 :: rgb(181,85,148) 0xD9D3, // 179 :: rgb(181,117,156) 0xDA54, // 180 :: rgb(181,150,165) 0xDAD5, // 181 :: rgb(181,182,173) 0xDB56, // 182 :: rgb(181,215,181) 0xDBD7, // 183 :: rgb(181,247,189) 0xDC58, // 184 :: rgb(189,20,198) 0xDCD9, // 185 :: rgb(189,52,206) 0xDD5A, // 186 :: rgb(189,85,214) 0xDDDB, // 187 :: rgb(189,117,222) 0xDE5C, // 188 :: rgb(189,150,231) 0xDEDD, // 189 :: rgb(189,182,239) 0xDF5E, // 190 :: rgb(189,215,247) 0xDFDF, // 191 :: rgb(189,247,255) 0x6060, // 192 :: rgb(198,24,0) 0x60E1, // 193 :: rgb(198,56,8) 0x6162, // 194 :: rgb(198,89,16) 0x61E3, // 195 :: rgb(198,121,24) 0x6264, // 196 :: rgb(198,154,33) 0x62E5, // 197 :: rgb(198,186,41) 0x6366, // 198 :: rgb(198,219,49) 0x63E7, // 199 :: rgb(198,251,57) 0x6468, // 200 :: rgb(206,24,66) 0x64E9, // 201 :: rgb(206,56,74) 0x656A, // 202 :: rgb(206,89,82) 0x65EB, // 203 :: rgb(206,121,90) 0x666C, // 204 :: rgb(206,154,99) 0x66ED, // 205 :: rgb(206,186,107) 0x676E, // 206 :: rgb(206,219,115) 0x67EF, // 207 :: rgb(206,251,123) 0x6870, // 208 :: rgb(214,24,132) 0x68F1, // 209 :: rgb(214,56,140) 0x6972, // 210 :: rgb(214,89,148) 0x69F3, // 211 :: rgb(214,121,156) 0x6A74, // 212 :: rgb(214,154,165) 0x6AF5, // 213 :: rgb(214,186,173) 0x6B76, // 214 :: rgb(214,219,181) 0x6BF7, // 215 :: rgb(214,251,189) 0x6C78, // 216 :: rgb(222,24,198) 0x6CF9, // 217 :: rgb(222,56,206) 0x6D7A, // 218 :: rgb(222,89,214) 0x6DFB, // 219 :: rgb(222,121,222) 0x6E7C, // 220 :: rgb(222,154,231) 0x6EFD, // 221 :: rgb(222,186,239) 0x6F7E, // 222 :: rgb(222,219,247) 0x6FFF, // 223 :: rgb(222,251,255) 0xF060, // 224 :: rgb(231,28,0) 0xF0E1, // 225 :: rgb(231,60,8) 0xF162, // 226 :: rgb(231,93,16) 0xF1E3, // 227 :: rgb(231,125,24) 0xF264, // 228 :: rgb(231,158,33) 0xF2E5, // 229 :: rgb(231,190,41) 0xF366, // 230 :: rgb(231,223,49) 0xF3E7, // 231 :: rgb(231,255,57) 0xF468, // 232 :: rgb(239,28,66) 0xF4E9, // 233 :: rgb(239,60,74) 0xF56A, // 234 :: rgb(239,93,82) 0xF5EB, // 235 :: rgb(239,125,90) 0xF66C, // 236 :: rgb(239,158,99) 0xF6ED, // 237 :: rgb(239,190,107) 0xF76E, // 238 :: rgb(239,223,115) 0xF7EF, // 239 :: rgb(239,255,123) 0xF870, // 240 :: rgb(247,28,132) 0xF8F1, // 241 :: rgb(247,60,140) 0xF972, // 242 :: rgb(247,93,148) 0xF9F3, // 243 :: rgb(247,125,156) 0xFA74, // 244 :: rgb(247,158,165) 0xFAF5, // 245 :: rgb(247,190,173) 0xFB76, // 246 :: rgb(247,223,181) 0xFBF7, // 247 :: rgb(247,255,189) 0xFC78, // 248 :: rgb(255,28,198) 0xFCF9, // 249 :: rgb(255,60,206) 0xFD7A, // 250 :: rgb(255,93,214) 0xFDFB, // 251 :: rgb(255,125,222) 0xFE7C, // 252 :: rgb(255,158,231) 0xFEFD, // 253 :: rgb(255,190,239) 0xFF7E, // 254 :: rgb(255,223,247) 0xFFFF, // 255 :: rgb(255,255,255) }; ================================================ FILE: src/sprites/sprites.h ================================================ // Converted using ConvPNG // This file contains all the graphics sources for easier inclusion in a project #ifndef __sprites__ #define __sprites__ #include #define africa_width 40 #define africa_height 47 #define africa_size 1882 extern uint8_t africa_data[1882]; #define africa ((gfx_sprite_t*)africa_data) #define asia_width 65 #define asia_height 55 #define asia_size 3577 extern uint8_t asia_data[3577]; #define asia ((gfx_sprite_t*)asia_data) #define europe_width 32 #define europe_height 24 #define europe_size 770 extern uint8_t europe_data[770]; #define europe ((gfx_sprite_t*)europe_data) #define greenland_width 24 #define greenland_height 14 #define greenland_size 338 extern uint8_t greenland_data[338]; #define greenland ((gfx_sprite_t*)greenland_data) #define northamerica_width 48 #define northamerica_height 41 #define northamerica_size 1970 extern uint8_t northamerica_data[1970]; #define northamerica ((gfx_sprite_t*)northamerica_data) #define southamerica_width 28 #define southamerica_height 44 #define southamerica_size 1234 extern uint8_t southamerica_data[1234]; #define southamerica ((gfx_sprite_t*)southamerica_data) #define oceania_width 34 #define oceania_height 31 #define oceania_size 1056 extern uint8_t oceania_data[1056]; #define oceania ((gfx_sprite_t*)oceania_data) #define sizeof_sprites_pal 512 extern uint16_t sprites_pal[256]; #endif