05733649bc
Fixes sound on most platforms, original root cause was bad menu code as well as DMA callbacks taking too long. Worked around with smaller chunk sizes. Permanent fix would include moving mixing out of the callback. Rewrites input with code from rockboy/doom. Cherry-picks a change from Gregory Montoir's `rawgl' to patch the code wheel screen. Finally, adds a motion blur filter on select targets. Change-Id: I8df549c923c5075800c6625c36c8202e53de1d27
272 lines
11 KiB
C
272 lines
11 KiB
C
/***************************************************************************
|
|
* __________ __ ___.
|
|
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
|
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
|
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
|
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
|
* \/ \/ \/ \/ \/
|
|
* $Id$
|
|
*
|
|
* 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, "" }
|
|
};
|