Full Code of EverydayCodeNet/CONTAGION-CE for AI

master d760c872ad86 cached
25 files
174.8 KB
95.4k tokens
88 symbols
1 requests
Download .txt
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 <tice.h>

#include "contagion.h"

/* Standard headers - it's recommended to leave them included */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <stdint.h>
#include <stddef.h>
/* 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 <lib/ce/graphc.h>
#include <graphx.h>
#include <fileioc.h>
#include <keypadc.h>
#include <intce.h>
#include <tice.h>
#include <math.h>


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(&region, 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 = &region[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 = &region[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 = &region[game.selected];
        for (i = 0; i < 7; i++) {
            region_t *b = &region[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 = &region[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 <stdint.h>
#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 <stdint.h>
#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 <stdint.h>
#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 <stdint.h>
#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 <stdint.h>
#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 <stdint.h>
#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 <stdint.h>
#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 <stdint.h>
#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 <stdint.h>
#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 <stdint.h>

#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 <stdint.h>
#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 <stdint.h>
#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 <stdint.h>
#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 <stdint.h>
#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 <tice.h>
#include "optix.h"
/* Standard headers - it's recommended to leave them included */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <stdint.h>
#include <stddef.h>
/* 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 <lib/ce/graphc.h>
#include <graphx.h>
#include <fileioc.h>
#include <keypadc.h>
#include <intce.h>
#include <tice.h>
#include <math.h>
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 <tice.h>
#include <graphx.h>
#include <keypadc.h>

// 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 <stdint.h>
#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 <stdint.h>
#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 <stdint.h>
#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 <stdint.h>

#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
Download .txt
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
Download .txt
SYMBOL INDEX (88 symbols across 4 files)

FILE: src/contagion.h
  type game_t (line 18) | typedef struct {
  type virus_t (line 45) | typedef struct {
  type region_t (line 57) | typedef struct {
  type port_t (line 75) | typedef struct {

FILE: src/main.c
  function SaveData (line 50) | void SaveData(void) {
  function LoadData (line 64) | void LoadData(void) {
  function InfectCoordinate (line 81) | bool InfectCoordinate(int x, int y) {
  function RenderBottomToolbar (line 97) | void RenderBottomToolbar(void) {
  function RenderTopToolbar (line 165) | void RenderTopToolbar(void) {
  function SetNews (line 198) | void SetNews(const char str1[]) {
  function DispNews (line 203) | void DispNews(void) {
  function UpdateNews (line 211) | void UpdateNews(int vVictory, int wVictory) {
  function MutationMenu (line 252) | void MutationMenu() {
  function Progress (line 333) | void Progress(void) {
  function RenderView (line 355) | void RenderView() {
  function UpdateSelectedRegion (line 369) | void UpdateSelectedRegion(void) {
  function UpdateSimulation (line 418) | void UpdateSimulation(void) {
  function UpdateTransportation (line 466) | void UpdateTransportation(void) {
  function HandleKeys (line 495) | void HandleKeys(void) {
  function InitializePorts (line 508) | void InitializePorts(void) {
  function InitializeMap (line 526) | void InitializeMap(void) {
  function InitializeSimulation (line 569) | void InitializeSimulation(void) {
  function DrawMap (line 578) | void DrawMap(void) {
  function MainMenu (line 583) | uint8_t MainMenu(void) {
  function RenderTransportation (line 651) | void RenderTransportation(void) {
  function RenderCursor (line 667) | void RenderCursor(void) {
  function StartGame (line 674) | void StartGame(void) {
  function main (line 708) | void main(void) {

FILE: src/sprites/optix.c
  type optix_guicolors_t (line 27) | struct optix_guicolors_t
  type optix_guidata_t (line 28) | struct optix_guidata_t
  type optix_guisettings_t (line 29) | struct optix_guisettings_t
  type optix_buttoninfo_t (line 30) | struct optix_buttoninfo_t
  type optix_cursor_t (line 31) | struct optix_cursor_t
  type optix_button_t (line 32) | struct optix_button_t
  type optix_box_t (line 33) | struct optix_box_t
  type optix_wordwraptext_t (line 34) | struct optix_wordwraptext_t
  type optix_menu_t (line 35) | struct optix_menu_t
  function optix_HandleGUI (line 39) | void optix_HandleGUI(void) {
  function optix_HandleCursor (line 50) | void optix_HandleCursor(void) {
  function optix_WhiText (line 63) | void optix_WhiText(void) {
  function optix_BlaText (line 69) | void optix_BlaText(void) {
  function optix_CusText (line 75) | void optix_CusText(bool title) {
  function optix_SetDefaultColors (line 95) | void optix_SetDefaultColors(void) {
  function optix_SetDefaultSettings (line 109) | void optix_SetDefaultSettings(void) {
  function optix_VertScrollbar (line 123) | void optix_VertScrollbar(uint24_t x, uint8_t y, uint8_t currpos, uint8_t...
  function optix_HorizScrollbar (line 127) | void optix_HorizScrollbar(uint24_t x, uint8_t y, uint8_t currpos, uint8_...
  function optix_Scrollbar (line 132) | void optix_Scrollbar(uint24_t x, uint8_t y, uint8_t currpos, uint8_t max...
  function optix_RenderWindow (line 157) | void optix_RenderWindow(const char title[], uint16_t width, uint8_t heig...
  function optix_WordWrap (line 178) | uint8_t optix_WordWrap(const char message[], uint16_t width) {
  function optix_AddWordWrapLine (line 242) | void optix_AddWordWrapLine(const char string[], uint8_t *numlines) {
  function optix_PrintWordWrap (line 250) | void optix_PrintWordWrap(uint16_t width, uint8_t initialx, uint8_t initi...
  function optix_GetStringLength (line 279) | int optix_GetStringLength(const char string[]) {
  function optix_Message (line 293) | void optix_Message(const char title[], const char message[], uint8_t tex...
  function optix_Menu (line 362) | uint8_t optix_Menu(const char title[], const char entries[], uint8_t tex...
  function optix_AddMenu (line 449) | uint8_t optix_AddMenu(uint16_t x, uint8_t y, uint8_t xpadding, uint8_t y...
  function optix_UpdateCurrMenu (line 498) | void optix_UpdateCurrMenu(void) {
  function optix_RenderMenu (line 533) | void optix_RenderMenu(uint8_t menu) {
  function optix_DeleteLastMenu (line 561) | void optix_DeleteLastMenu(void) {
  function optix_InsertSpecialCharacter (line 577) | uint8_t optix_InsertSpecialCharacter(void) {
  function optix_UpdateCursor (line 769) | void optix_UpdateCursor(void) {
  function optix_RenderCursor (line 779) | void optix_RenderCursor(void) {
  function optix_ClickCursor (line 786) | void optix_ClickCursor(void) {
  function optix_HandleTrackPad (line 817) | void optix_HandleTrackPad(void) {
  function optix_InitializeButtons (line 902) | void optix_InitializeButtons(void) {
  function optix_AddButton (line 906) | void optix_AddButton(uint16_t x, uint8_t y, uint16_t width, uint8_t heig...
  function optix_DeleteButton (line 922) | void optix_DeleteButton(uint8_t buttontodelete) {
  function optix_RenderButtons (line 930) | void optix_RenderButtons(void) {
  function optix_UpdateSelectedButton (line 956) | void optix_UpdateSelectedButton(void) {
  function optix_ClickButton (line 1007) | void optix_ClickButton(void) {
  function optix_CheckForAltKey (line 1019) | void optix_CheckForAltKey(void) {

FILE: src/sprites/optix.h
  type optix_button_t (line 44) | struct optix_button_t {
  type optix_button_t (line 54) | struct optix_button_t
  type optix_wordwraptext_t (line 58) | struct optix_wordwraptext_t {
  type optix_wordwraptext_t (line 62) | struct optix_wordwraptext_t
  type optix_buttoninfo_t (line 65) | struct optix_buttoninfo_t {
  type optix_buttoninfo_t (line 69) | struct optix_buttoninfo_t
  type optix_cursor_t (line 72) | struct optix_cursor_t {
  type optix_cursor_t (line 77) | struct optix_cursor_t
  type optix_menu_t (line 79) | struct optix_menu_t {
  type optix_menu_t (line 98) | struct optix_menu_t
  type optix_box_t (line 101) | struct optix_box_t {
  type optix_box_t (line 107) | struct optix_box_t
  type optix_guicolors_t (line 109) | struct optix_guicolors_t {
  type optix_guicolors_t (line 120) | struct optix_guicolors_t
  type optix_guidata_t (line 122) | struct optix_guidata_t {
  type optix_guidata_t (line 136) | struct optix_guidata_t
  type optix_guisettings_t (line 138) | struct optix_guisettings_t {
  type optix_guisettings_t (line 143) | struct optix_guisettings_t
Condensed preview — 25 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (186K chars).
[
  {
    "path": ".gitignore",
    "chars": 7,
    "preview": "obj\nbin"
  },
  {
    "path": "Makefile",
    "chars": 704,
    "preview": "# Exported from https://tiplanet.org/pb/ on Sun Sep  6 17:20:50 2020 (CEST)\n\n# ----------------------------\n# Program Op"
  },
  {
    "path": "README.md",
    "chars": 1962,
    "preview": "# CONTAGION CE\nContagion CE is a Plague Inc. inspired game written in C for the TI-84 Plus CE calculator.\n\n### Download\n"
  },
  {
    "path": "src/contagion.h",
    "chars": 1858,
    "preview": "//function declarations\r\nvoid UpdateSimulation(void);\r\nvoid UpdateNews(int vVictory, int wVictory);\r\nvoid InitializeSimu"
  },
  {
    "path": "src/main.c",
    "chars": 28836,
    "preview": " ////////////////////////////////////////\r\n// Contagion CE (1.0.0)\r\n// Author: epsilon5, EverydayCode\r\n// License: NA\r\n/"
  },
  {
    "path": "src/sprites/africa.c",
    "chars": 9691,
    "preview": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"sprites.h\"\r\n\r\n// 8 bpp image\r\nuint8_t africa_data[1882] = {\r\n"
  },
  {
    "path": "src/sprites/anchor_scaled.c",
    "chars": 495,
    "preview": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"icons.h\"\r\n\r\n// 8 bpp image\r\nuint8_t anchor_scaled_data[66] = "
  },
  {
    "path": "src/sprites/asia.c",
    "chars": 18188,
    "preview": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"sprites.h\"\r\n\r\n// 8 bpp image\r\nuint8_t asia_data[3577] = {\r\n 6"
  },
  {
    "path": "src/sprites/cemetechdiscord.c",
    "chars": 3882,
    "preview": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"icons.h\"\r\n\r\n// 8 bpp image\r\nuint8_t cemetechdiscord_data[731]"
  },
  {
    "path": "src/sprites/closed_scaled.c",
    "chars": 1482,
    "preview": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"icons.h\"\r\n\r\n// 8 bpp image\r\nuint8_t closed_scaled_data[258] ="
  },
  {
    "path": "src/sprites/ecprograms.c",
    "chars": 3877,
    "preview": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"icons.h\"\r\n\r\n// 8 bpp image\r\nuint8_t ecprograms_data[731] = {\r"
  },
  {
    "path": "src/sprites/europe.c",
    "chars": 4061,
    "preview": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"sprites.h\"\r\n\r\n// 8 bpp image\r\nuint8_t europe_data[770] = {\r\n "
  },
  {
    "path": "src/sprites/greenland.c",
    "chars": 1874,
    "preview": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"sprites.h\"\r\n\r\n// 8 bpp image\r\nuint8_t greenland_data[338] = {"
  },
  {
    "path": "src/sprites/icons.c",
    "chars": 9378,
    "preview": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"icons.h\"\r\n\r\nuint16_t icons_pal[256] = {\r\n 0x0000,  // 00 :: r"
  },
  {
    "path": "src/sprites/icons.h",
    "chars": 1541,
    "preview": "// Converted using ConvPNG\r\n// This file contains all the graphics sources for easier inclusion in a project\r\n#ifndef __"
  },
  {
    "path": "src/sprites/logo.c",
    "chars": 3575,
    "preview": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"icons.h\"\r\n\r\n// 8 bpp image\r\nuint8_t logo_data[682] = {\r\n 68,1"
  },
  {
    "path": "src/sprites/myprograms.c",
    "chars": 3877,
    "preview": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"icons.h\"\r\n\r\n// 8 bpp image\r\nuint8_t myprograms_data[731] = {\r"
  },
  {
    "path": "src/sprites/northamerica.c",
    "chars": 10119,
    "preview": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"sprites.h\"\r\n\r\n// 8 bpp image\r\nuint8_t northamerica_data[1970]"
  },
  {
    "path": "src/sprites/oceania.c",
    "chars": 5514,
    "preview": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"sprites.h\"\r\n\r\n// 8 bpp image\r\nuint8_t oceania_data[1056] = {\r"
  },
  {
    "path": "src/sprites/optix.c",
    "chars": 42159,
    "preview": "//OPTIX version 2 by epsilon5\n//an open source GUI/text library in C for the TI-84 Plus CE and TI-83 Premium CE calculat"
  },
  {
    "path": "src/sprites/optix.h",
    "chars": 4772,
    "preview": "#include <tice.h>\n#include <graphx.h>\n#include <keypadc.h>\n\n// function declarations\nvoid optix_WhiText(void);\nvoid opti"
  },
  {
    "path": "src/sprites/programthread.c",
    "chars": 3880,
    "preview": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"icons.h\"\r\n\r\n// 8 bpp image\r\nuint8_t programthread_data[731] ="
  },
  {
    "path": "src/sprites/southamerica.c",
    "chars": 6448,
    "preview": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"sprites.h\"\r\n\r\n// 8 bpp image\r\nuint8_t southamerica_data[1234]"
  },
  {
    "path": "src/sprites/sprites.c",
    "chars": 9382,
    "preview": "// Converted using ConvPNG\r\n#include <stdint.h>\r\n#include \"sprites.h\"\r\n\r\nuint16_t sprites_pal[256] = {\r\n 0x0000,  // 00 "
  },
  {
    "path": "src/sprites/sprites.h",
    "chars": 1431,
    "preview": "// Converted using ConvPNG\r\n// This file contains all the graphics sources for easier inclusion in a project\r\n#ifndef __"
  }
]

About this extraction

This page contains the full source code of the EverydayCodeNet/CONTAGION-CE GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 25 files (174.8 KB), approximately 95.4k tokens, and a symbol index with 88 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!