/***************************************************************************
 *             __________               __   ___.
 *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
 *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
 *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
 *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
 *                     \/            \/     \/    \/            \/
 *
 * Copyright (C) 2014 Franklin Wei, Benjamin Brown
 * Copyright (C) 2004 Gregory Montoir
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
 * KIND, either express or implied.
 *
 ***************************************************************************/

#include "video.h"
#include "video_data.h"
#include "stdint.h"

/* this font is based off 10-Fixed.bdf with lowercase characters
   from 09-Fixed.bdf and a handcrafted copyright symbol */

uint8_t video_font[FONT_SIZE] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* ' ' */
    0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x20, 0x00, /* '!' */
    0x50, 0x50, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, /* '"' */
    0x50, 0x50, 0xF8, 0x50, 0xF8, 0x50, 0x50, 0x00, /* '#' */
    0x20, 0x70, 0xA0, 0x70, 0x28, 0x70, 0x20, 0x00, /* '$' */
    0x48, 0xA8, 0x50, 0x20, 0x50, 0xA8, 0x90, 0x00, /* '%' */
    0x40, 0xA0, 0xA0, 0x40, 0xA8, 0x90, 0x68, 0x00, /* '&' */
    0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, /* ''' */
    0x10, 0x20, 0x40, 0x40, 0x40, 0x20, 0x10, 0x00, /* '(' */
    0x40, 0x20, 0x10, 0x10, 0x10, 0x20, 0x40, 0x00, /* ')' */
    0x00, 0x88, 0x50, 0xF8, 0x50, 0x88, 0x00, 0x00, /* '*' */
    0x00, 0x20, 0x20, 0xF8, 0x20, 0x20, 0x00, 0x00, /* '+' */
    0x00, 0x00, 0x00, 0x00, 0x30, 0x20, 0x40, 0x00, /* ',' */
    0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, /* '-' */
    0x00, 0x00, 0x00, 0x00, 0x20, 0x50, 0x20, 0x00, /* '.' */
    0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, /* '/' */
    0x20, 0x50, 0x88, 0x88, 0x88, 0x50, 0x20, 0x00, /* '0' */
    0x20, 0x60, 0xA0, 0x20, 0x20, 0x20, 0xF8, 0x00, /* '1' */
    0x70, 0x88, 0x08, 0x30, 0x40, 0x80, 0xF8, 0x00, /* '2' */
    0xF8, 0x08, 0x10, 0x30, 0x08, 0x88, 0x70, 0x00, /* '3' */
    0x10, 0x30, 0x50, 0x90, 0xF8, 0x10, 0x10, 0x00, /* '4' */
    0xF8, 0x80, 0xB0, 0xC8, 0x08, 0x88, 0x70, 0x00, /* '5' */
    0x30, 0x40, 0x80, 0xB0, 0xC8, 0x88, 0x70, 0x00, /* '6' */
    0xF8, 0x08, 0x10, 0x10, 0x20, 0x40, 0x40, 0x00, /* '7' */
    0x70, 0x88, 0x88, 0x70, 0x88, 0x88, 0x70, 0x00, /* '8' */
    0x70, 0x88, 0x98, 0x68, 0x08, 0x10, 0x60, 0x00, /* '9' */
    0x00, 0x60, 0x60, 0x00, 0x60, 0x60, 0x00, 0x00, /* ':' */
    0x00, 0x30, 0x30, 0x00, 0x30, 0x20, 0x40, 0x00, /* ';' */
    0x08, 0x10, 0x20, 0x40, 0x20, 0x10, 0x08, 0x00, /* '<' */
    0x00, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0x00, 0x00, /* '=' */
    0x40, 0x20, 0x10, 0x08, 0x10, 0x20, 0x40, 0x00, /* '>' */
    0x70, 0x88, 0x10, 0x20, 0x20, 0x00, 0x20, 0x00, /* '?' */
    0x40, 0x20, 0x10, 0x10, 0x10, 0x20, 0x40, 0x00, /* ')' */
    0x20, 0x50, 0x88, 0x88, 0xF8, 0x88, 0x88, 0x00, /* 'A' */
    0xF0, 0x88, 0x88, 0xF0, 0x88, 0x88, 0xF0, 0x00, /* 'B' */
    0x70, 0x88, 0x80, 0x80, 0x80, 0x88, 0x70, 0x00, /* 'C' */
    0xF0, 0x88, 0x88, 0x88, 0x88, 0x88, 0xF0, 0x00, /* 'D' */
    0xF8, 0x80, 0x80, 0xF0, 0x80, 0x80, 0xF8, 0x00, /* 'E' */
    0xF8, 0x80, 0x80, 0xF0, 0x80, 0x80, 0x80, 0x00, /* 'F' */
    0x70, 0x88, 0x80, 0x80, 0x98, 0x88, 0x70, 0x00, /* 'G' */
    0x88, 0x88, 0x88, 0xF8, 0x88, 0x88, 0x88, 0x00, /* 'H' */
    0x70, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00, /* 'I' */
    0x38, 0x10, 0x10, 0x10, 0x10, 0x90, 0x60, 0x00, /* 'J' */
    0x88, 0x90, 0xA0, 0xC0, 0xA0, 0x90, 0x88, 0x00, /* 'K' */
    0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xF8, 0x00, /* 'L' */
    0x88, 0x88, 0xD8, 0xA8, 0x88, 0x88, 0x88, 0x00, /* 'M' */
    0x88, 0x88, 0xC8, 0xA8, 0x98, 0x88, 0x88, 0x00, /* 'N' */
    0x70, 0x88, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, /* 'O' */
    0xF0, 0x88, 0x88, 0xF0, 0x80, 0x80, 0x80, 0x00, /* 'P' */
    0x70, 0x88, 0x88, 0x88, 0x88, 0xA8, 0x70, 0x00, /* 'Q' */
    0xF0, 0x88, 0x88, 0xF0, 0xA0, 0x90, 0x88, 0x00, /* 'R' */
    0x70, 0x88, 0x80, 0x70, 0x08, 0x88, 0x70, 0x00, /* 'S' */
    0xF8, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, /* 'T' */
    0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, /* 'U' */
    0x88, 0x88, 0x88, 0x50, 0x50, 0x50, 0x20, 0x00, /* 'V' */
    0x88, 0x88, 0x88, 0xA8, 0xA8, 0xD8, 0x88, 0x00, /* 'W' */
    0x88, 0x88, 0x50, 0x20, 0x50, 0x88, 0x88, 0x00, /* 'X' */
    0x88, 0x88, 0x50, 0x20, 0x20, 0x20, 0x20, 0x00, /* 'Y' */
    0xF8, 0x08, 0x10, 0x20, 0x40, 0x80, 0xF8, 0x00, /* 'Z' */
    0x70, 0x40, 0x40, 0x40, 0x40, 0x70, 0x00, 0x00, /* '[' */
    0x80, 0x80, 0x40, 0x20, 0x10, 0x10, 0x00, 0x00, /* '\' */
    0x70, 0x10, 0x10, 0x10, 0x10, 0x70, 0x00, 0x00, /* ']' */
    0x20, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* '^' */
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, /* '_' */
    0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* '`' */
    0x00, 0x00, 0x70, 0x08, 0x78, 0x88, 0x78, 0x00, /* 'a' */
    0x80, 0x80, 0xB0, 0xC8, 0x88, 0xC8, 0xB0, 0x00, /* 'b' */
    0x00, 0x00, 0x70, 0x88, 0x80, 0x88, 0x70, 0x00, /* 'c' */
    0x08, 0x08, 0x68, 0x98, 0x88, 0x98, 0x68, 0x00, /* 'd' */
    0x00, 0x00, 0x70, 0x88, 0xF8, 0x80, 0x70, 0x00, /* 'e' */
    0x30, 0x48, 0x40, 0xF0, 0x40, 0x40, 0x40, 0x00, /* 'f' */
    0x00, 0x00, 0x60, 0x90, 0x90, 0x70, 0x10, 0x60, /* 'g' */
    0x80, 0x80, 0xB0, 0xC8, 0x88, 0x88, 0x88, 0x00, /* 'h' */
    0x20, 0x00, 0x60, 0x20, 0x20, 0x20, 0x70, 0x00, /* 'i' */
    0x20, 0x00, 0x60, 0x20, 0x20, 0x20, 0xA0, 0x40, /* 'j' */
    0x80, 0x80, 0x88, 0x90, 0xE0, 0x90, 0x88, 0x00, /* 'k' */
    0x60, 0x20, 0x20, 0x20, 0x20, 0x20, 0x70, 0x00, /* 'l' */
    0x00, 0x00, 0xD0, 0xA8, 0xA8, 0xA8, 0x88, 0x00, /* 'm' */
    0x00, 0x00, 0xB0, 0xC8, 0x88, 0x88, 0x88, 0x00, /* 'n' */
    0x00, 0x00, 0x70, 0x88, 0x88, 0x88, 0x70, 0x00, /* 'o' */
    0x00, 0x00, 0xE0, 0x90, 0x90, 0xE0, 0x80, 0x80, /* 'p' */
    0x00, 0x00, 0x70, 0x90, 0x90, 0x70, 0x10, 0x10, /* 'q' */
    0x00, 0x00, 0xB0, 0xC8, 0x80, 0x80, 0x80, 0x00, /* 'r' */
    0x00, 0x00, 0x70, 0x80, 0x70, 0x08, 0xF0, 0x00, /* 's' */
    0x40, 0x40, 0xF0, 0x40, 0x40, 0x48, 0x30, 0x00, /* 't' */
    0x00, 0x00, 0x88, 0x88, 0x88, 0x98, 0x68, 0x00, /* 'u' */
    0x00, 0x00, 0x88, 0x88, 0x50, 0x50, 0x20, 0x00, /* 'v' */
    0x00, 0x00, 0x88, 0x88, 0xA8, 0xA8, 0x50, 0x00, /* 'w' */
    0x00, 0x00, 0x88, 0x50, 0x20, 0x50, 0x88, 0x00, /* 'x' */
    0x00, 0x00, 0x90, 0x90, 0x90, 0x70, 0x90, 0x60, /* 'y' */
    0x00, 0x00, 0xF8, 0x10, 0x20, 0x40, 0xF8, 0x00, /* 'z' */
    0x18, 0x20, 0x10, 0x60, 0x10, 0x20, 0x18, 0x00, /* '{' */
    0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, /* cursor */
    0x38, 0x54, 0xAA, 0xA2, 0xAA, 0x54, 0x38, 0x00, /* copyright symbol */
    0x70, 0x88, 0x88, 0x88, 0x88, 0x50, 0xD8, 0x00, /* omega */
    0x00, 0xA0, 0x10, 0x80, 0x10, 0x80, 0x50, 0x00, /* DEL */
};

/* default bogus strings */
struct StrEntry video_stringsTableEng[MAX_STRING_TABLE_SIZE] = {
    { 0x001, "B A N A N A  2000" },
    { 0x002, "Copyright  } 2016 Franklin Wei\nGPLv2\n\nBUNIX Revision 3.14" },
    { 0x003, "1" },
    { 0x004, "3" },
    { 0x005, "." },
    { 0x006, "a" },
    { 0x007, "@" },
    { 0x008, "BANANA 2000" },
    { 0x00A, "R" },
    { 0x00B, "U" },
    { 0x00C, "N" },
    { 0x00D, "P" },
    { 0x00E, "R" },
    { 0x00F, "O" },
    { 0x010, "J" },
    { 0x011, "E" },
    { 0x012, "C" },
    { 0x013, "T" },
    { 0x014, "Fields 100.05Mf OK" },
    { 0x015, "Lines of Flux % 14.077 OK" },
    { 0x016, "IONS  OK" },
    { 0x017, " %%%ddd OK" },
    { 0x018, "TEMP ok" },
    { 0x019, "EXECUTE" },
    { 0x01A, "V= 24%\nG: 1.05\n\nMG: 177.2l\n\nOPT: G>\n\n Field:\nI: OFF\nII: ON\nIII: ON\n\np~: I\n" },
    { 0x01B, "on" },
    { 0x01C, "-" },
    { 0x021, "|" },
    { 0x022, "--- Simulation ---" },
    { 0x023, "           TEST WILL START IN    SECONDS" },
    { 0x024, "  20" },
    { 0x025, "  19" },
    { 0x026, "  18" },
    { 0x027, "  4" },
    { 0x028, "  3" },
    { 0x029, "  2" },
    { 0x02A, "  1" },
    { 0x02B, "  0" },
    { 0x02C, "C A U T I O N" },
    { 0x031, "- Test 0:\nGenerate electron beam\n" },
    { 0x032, "- Test 1:\nCalculating flux coefficient\n" },
    { 0x033, "- Test 2:\nIncrease magnetic field\n" },
    { 0x034, "R E S U L T S" },
    { 0x035, "- NOTE:\nChances of producing:\n Anti-matter: 34 %\n Neutrino 71:  4 %\n Positron 34: 99 %\n" },
    { 0x036, "   Continue Test y/n ?" },
    { 0x037, "Are You Sure?" },
    { 0x038, "Setting Configuration\n of accelerator\n'Verified'" },
    { 0x039, "       Continue ?" },
    { 0x03C, "T___T" },
    { 0x03D, "OOO ~" },
    { 0x03E, ".40X13DD" },
    { 0x03F, "ferfxwre" },
    { 0x040, "Trfor 25%" },
    { 0x041, "32% 56% GOOD" },
    { 0x042, "E=2.7182818289" },
    { 0x043, "G=330.01" },
    { 0x044, "+" },
    { 0x045, "*" },
    { 0x046, "% 234" },
    { 0x047, "Gorwle 12" },
    { 0x048, "[[[[" },
    { 0x049, "Elephine Soft" },
    { 0x04A, "By Many talented People" },
    { 0x04B, "  4" },
    { 0x04C, "  16" },
    { 0x12C, "0" },
    { 0x12D, "1" },
    { 0x12E, "2" },
    { 0x12F, "3" },
    { 0x130, "4" },
    { 0x131, "5" },
    { 0x132, "6" },
    { 0x133, "7" },
    { 0x134, "8" },
    { 0x135, "9" },
    { 0x136, "A" },
    { 0x137, "B" },
    { 0x138, "C" },
    { 0x139, "D" },
    { 0x13A, "E" },
    { 0x13B, "F" },
    { 0x13C, "        LEVEL CODE:" },
    { 0x13D, "    PRESS ANY KEY TO CONTINUE" },
    { 0x13E, "   ENTER CODE" },
    { 0x13F, "   CODE NOT VALID!!" },
    { 0x140, "AN NULER" },
    { 0x141, "      ??????\n\n\n\n\n\n\n\n\nANY KEY TO CONTINUE" },
    { 0x142, " ENTER THE CODE CORRELATING TO\n POSITION\n ON THE DECODER WHEEL" },
    { 0x143, "    LOAD..." },
    { 0x144, "              ERROR" },
    { 0x15E, "LDKD" },
    { 0x15F, "HTDC" },
    { 0x160, "CLLD" },
    { 0x161, "FXLC" },
    { 0x162, "KRFK" },
    { 0x163, "XDDJ" },
    { 0x164, "LBKG" },
    { 0x165, "KLFB" },
    { 0x166, "TTCT" },
    { 0x167, "DDRX" },
    { 0x168, "TBHK" },
    { 0x169, "BRTD" },
    { 0x16A, "CKJL" },
    { 0x16B, "LFCK" },
    { 0x16C, "BFLX" },
    { 0x16D, "XJRT" },
    { 0x16E, "HRTB" },
    { 0x16F, "HBHK" },
    { 0x170, "JCGB" },
    { 0x171, "HHFL" },
    { 0x172, "TFBB" },
    { 0x173, "TXHF" },
    { 0x174, "JHJL" },
    { 0x181, " " },
    { 0x182, " " },
    { 0x183, " " },
    { 0x184, " " },
    { 0x185, " " },
    { 0x186, " " },
    { 0x187, " " },
    { 0x188, " " },
    { 0x18B, " " },
    { 0x18C, " " },
    { 0x18D, " " },
    { 0x18E, " " },
    { 0x258, " " },
    { 0x259, " " },
    { 0x25A, " " },
    { 0x25B, " " },
    { 0x25C, " " },
    { 0x25D, " " },
    { 0x263, " " },
    { 0x264, " " },
    { 0x265, " " },
    { 0x190, "Hello Master." },
    { 0x191, "Identifiy confirmed.\nAccess granted." },
    { 0x192, " ACCESSING" },
    { 0x193, " " },
    { 0x194, "y\n" },
    { 0x193, "!!!\n" },
    { END_OF_STRING_DICTIONARY, "" }
};
