Public Access
Divergence meter (Nixie tubes, world lines and clock), a D-mail sent through the Phone Microwave using the panel's Message text, the Future Gadget Lab inventory with live sensors, and a world line chart of today's solar power. Original pixel art in tools/steins_sprites.py; the sprite tool is shared between themes and Sprite, sprite(), polar() and arc() move to el512_pages.h. HomeData gains the message and a 24 h solar history in 15-minute slots. The rotation now walks all pages in a random order that is reshuffled every hour (Still Alive stays out, Now playing is skipped when idle). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
327 lines
9.6 KiB
C++
327 lines
9.6 KiB
C++
// Pixel art for the KonoSuba pages, generated by tools/konosuba_sprites.py;
|
|
// edit the art there. Original 1-bit fan art, '#' = lit pixel.
|
|
#pragma once
|
|
|
|
#include "el512_pages.h" // Sprite
|
|
|
|
namespace esphome::el512::konosuba {
|
|
|
|
static const char *const MEGUMIN_ROWS[] = {
|
|
"...............####.........",
|
|
"..............######........",
|
|
".............###...##.......",
|
|
"............####.....#......",
|
|
"...........#####............",
|
|
"..........######............",
|
|
"..........#######...........",
|
|
".........########...........",
|
|
".........#########..........",
|
|
"........##########..........",
|
|
"........#.........#.........",
|
|
"........###########.........",
|
|
"##########################..",
|
|
".########################...",
|
|
".....###############........",
|
|
".....##.#.##..#.#.##........",
|
|
".....#.............#........",
|
|
".....#..##....####.#........",
|
|
".....#..##....####.#........",
|
|
".....#.........#...#........",
|
|
".....##.............#.......",
|
|
"......#.....##.....#........",
|
|
".....###..........###.......",
|
|
"....####.##....##.####......",
|
|
"...######.######.######.....",
|
|
"..#######..####..#######....",
|
|
"..######...####...#######...",
|
|
".#######...#..#...#######...",
|
|
".######....#..#....######...",
|
|
".######...#....#...######...",
|
|
"#######...#....#...#######..",
|
|
"######...#......#...######..",
|
|
"######..##########..######..",
|
|
"#####...#........#...#####..",
|
|
"#####..#..........#..#####..",
|
|
"####...############...####..",
|
|
"........#......#............",
|
|
"........#......#............",
|
|
"........#......#............",
|
|
"........#......#............",
|
|
".......###....###...........",
|
|
".......####...####..........",
|
|
};
|
|
static constexpr Sprite MEGUMIN{28, 42, MEGUMIN_ROWS};
|
|
|
|
static const char *const STAFF_ROWS[] = {
|
|
"..#####..",
|
|
".#.....#.",
|
|
"#..###..#",
|
|
"#.#####.#",
|
|
"#.#####.#",
|
|
"#..###..#",
|
|
".#.....#.",
|
|
"..#...#..",
|
|
"...#.#...",
|
|
"....#....",
|
|
"....#....",
|
|
"...##....",
|
|
"....#....",
|
|
"....#....",
|
|
"....#....",
|
|
"....##...",
|
|
"....#....",
|
|
"....#....",
|
|
"....#....",
|
|
"....#....",
|
|
"...##....",
|
|
"....#....",
|
|
"....#....",
|
|
"....#....",
|
|
"....#....",
|
|
"....#....",
|
|
"....##...",
|
|
"....#....",
|
|
"....#....",
|
|
"....#....",
|
|
"....#....",
|
|
"....#....",
|
|
"....#....",
|
|
"....#....",
|
|
"....#....",
|
|
"....#....",
|
|
"....#....",
|
|
"....#....",
|
|
"....#....",
|
|
"....#....",
|
|
"....#....",
|
|
"....#....",
|
|
};
|
|
static constexpr Sprite STAFF{9, 42, STAFF_ROWS};
|
|
|
|
static const char *const MEGUMIN_DOWN_ROWS[] = {
|
|
"....###......................................................",
|
|
"...#####.....................................................",
|
|
"..######.....................................................",
|
|
"..#######....................................................",
|
|
".########.##.................................................",
|
|
".#########..##.........#######...............................",
|
|
"###########...##.....###########.............................",
|
|
"#.........#.....#...##.#.#.#.#.##..#####################.....",
|
|
"###########......#..#.#.#.#.#.#.#.########################...",
|
|
"...................##############.###########.##########.###.",
|
|
"....................############..#####...........######...##",
|
|
"......................########....####.............####......",
|
|
};
|
|
static constexpr Sprite MEGUMIN_DOWN{61, 12, MEGUMIN_DOWN_ROWS};
|
|
|
|
static const char *const KAZUMA_ROWS[] = {
|
|
"....######......",
|
|
"...########.....",
|
|
"..##########....",
|
|
"..#.#.##.#.#....",
|
|
"..#........#....",
|
|
"..#..#..#..#....",
|
|
"..#........#....",
|
|
"...#..##..#.....",
|
|
"....######......",
|
|
"..##########....",
|
|
".###.####.###...",
|
|
".##..#..#..##...",
|
|
".##..#..#..##.#.",
|
|
".##..####..##.#.",
|
|
".##..#..#..##.#.",
|
|
"..#..#..#..#.###",
|
|
"....#....#....#.",
|
|
"....#....#......",
|
|
"...##....##.....",
|
|
};
|
|
static constexpr Sprite KAZUMA{16, 19, KAZUMA_ROWS};
|
|
|
|
static const char *const AQUA_ROWS[] = {
|
|
".....####.......",
|
|
"....#....#......",
|
|
".....####.......",
|
|
"....######......",
|
|
"...########.....",
|
|
"..##########....",
|
|
"..#........#....",
|
|
"..#..#..#..#....",
|
|
"..#........#....",
|
|
"..##..##..##....",
|
|
"..###....###....",
|
|
".####.##.####...",
|
|
".##..####..##...",
|
|
".##.#....#.##...",
|
|
".#.#......#.#...",
|
|
".#.#......#.#...",
|
|
"...########.....",
|
|
"....#....#......",
|
|
"....#....#......",
|
|
"...##....##.....",
|
|
};
|
|
static constexpr Sprite AQUA{16, 20, AQUA_ROWS};
|
|
|
|
static const char *const MEGUMIN_S_ROWS[] = {
|
|
".......##.......",
|
|
"......####......",
|
|
".....######.....",
|
|
"....########....",
|
|
"....#......#....",
|
|
"################",
|
|
"...##########...",
|
|
"...#........#...",
|
|
"...#.#...##.#...",
|
|
"...#........#...",
|
|
"....#..##..#....",
|
|
".....######.....",
|
|
"...##########...",
|
|
"..############..",
|
|
"..###.####.###..",
|
|
"..##..#..#..##..",
|
|
"..##..####..##..",
|
|
"..############..",
|
|
".....#....#.....",
|
|
".....#....#.....",
|
|
"....##....##....",
|
|
};
|
|
static constexpr Sprite MEGUMIN_S{16, 21, MEGUMIN_S_ROWS};
|
|
|
|
static const char *const DARKNESS_ROWS[] = {
|
|
"....######......",
|
|
"...########.###.",
|
|
"..##########.##.",
|
|
"..#.##..##.#..#.",
|
|
"..#........#....",
|
|
"..#..#..#..#....",
|
|
"..#........#....",
|
|
"...#..##..#.....",
|
|
"....######......",
|
|
"############....",
|
|
"##.########.##..",
|
|
"#..#.#..#.#..#..",
|
|
"...#.####.#.....",
|
|
"...#.#..#.#.....",
|
|
"...#.####.#.....",
|
|
"...########.....",
|
|
"....#....#......",
|
|
"....##...##.....",
|
|
"...###...###....",
|
|
};
|
|
static constexpr Sprite DARKNESS{16, 19, DARKNESS_ROWS};
|
|
|
|
static const char *const TOAD_ROWS[] = {
|
|
"......####............####......",
|
|
".....#....#..........#....#.....",
|
|
"....#..##..#........#..##..#....",
|
|
"....#..##..##########..##..#....",
|
|
"...##.....#..........#.....##...",
|
|
"..#..........................#..",
|
|
".#....#..........#.......#....#.",
|
|
"#..............................#",
|
|
"#.....##....#.........##...#...#",
|
|
"#..............................#",
|
|
"#..####################........#",
|
|
"#......................#.......#",
|
|
".#........#.......#...........#.",
|
|
"..#..##..................##..#..",
|
|
"...##..#................#..##...",
|
|
"..#.....#..............#.....#..",
|
|
".#..###..#............#..###..#.",
|
|
"##########............##########",
|
|
};
|
|
static constexpr Sprite TOAD{32, 18, TOAD_ROWS};
|
|
|
|
static const char *const TOAD_TONGUE_ROWS[] = {
|
|
"......####............####......",
|
|
".....#....#..........#....#.....",
|
|
"....#..##..#........#..##..#....",
|
|
"....#..##..##########..##..#....",
|
|
"...##.....#..........#.....##...",
|
|
"..#..........................#..",
|
|
".#....#..........#.......#....#.",
|
|
"#..............................#",
|
|
"#.....##....#.........##...#...#",
|
|
"#..............................#",
|
|
"#..####################........#",
|
|
"#...#..................#.......#",
|
|
".#...#....#.......#...........#.",
|
|
"..#...#..##..............##..#..",
|
|
"...##..#.##.............#..##...",
|
|
"..#.....####...........#.....#..",
|
|
".#..###..##...........#..###..#.",
|
|
"##########............##########",
|
|
};
|
|
static constexpr Sprite TOAD_TONGUE{32, 18, TOAD_TONGUE_ROWS};
|
|
|
|
static const char *const CABBAGE_A_ROWS[] = {
|
|
"#..............#",
|
|
"##...######...##",
|
|
".##.#..#...#.##.",
|
|
"..##.#.#..#.##..",
|
|
"...#..###...#...",
|
|
"...#.#.#.#..#...",
|
|
"....#..#...#....",
|
|
".....######.....",
|
|
};
|
|
static constexpr Sprite CABBAGE_A{16, 8, CABBAGE_A_ROWS};
|
|
|
|
static const char *const CABBAGE_B_ROWS[] = {
|
|
"................",
|
|
".....######.....",
|
|
"....#..#...#....",
|
|
"...#.#.#..#.#...",
|
|
"####..###...####",
|
|
"##.#.#.#.#..#.##",
|
|
"#...#..#...#...#",
|
|
".....######.....",
|
|
};
|
|
static constexpr Sprite CABBAGE_B{16, 8, CABBAGE_B_ROWS};
|
|
|
|
static const char *const MEGUMIN_BLINK_ROWS[] = {
|
|
"...............####.........",
|
|
"..............######........",
|
|
".............###...##.......",
|
|
"............####.....#......",
|
|
"...........#####............",
|
|
"..........######............",
|
|
"..........#######...........",
|
|
".........########...........",
|
|
".........#########..........",
|
|
"........##########..........",
|
|
"........#.........#.........",
|
|
"........###########.........",
|
|
"##########################..",
|
|
".########################...",
|
|
".....###############........",
|
|
".....##.#.##..#.#.##........",
|
|
".....#.............#........",
|
|
".....#........####.#........",
|
|
".....#..##....####.#........",
|
|
".....#.........#...#........",
|
|
".....##.............#.......",
|
|
"......#.....##.....#........",
|
|
".....###..........###.......",
|
|
"....####.##....##.####......",
|
|
"...######.######.######.....",
|
|
"..#######..####..#######....",
|
|
"..######...####...#######...",
|
|
".#######...#..#...#######...",
|
|
".######....#..#....######...",
|
|
".######...#....#...######...",
|
|
"#######...#....#...#######..",
|
|
"######...#......#...######..",
|
|
"######..##########..######..",
|
|
"#####...#........#...#####..",
|
|
"#####..#..........#..#####..",
|
|
"####...############...####..",
|
|
"........#......#............",
|
|
"........#......#............",
|
|
"........#......#............",
|
|
"........#......#............",
|
|
".......###....###...........",
|
|
".......####...####..........",
|
|
};
|
|
static constexpr Sprite MEGUMIN_BLINK{28, 42, MEGUMIN_BLINK_ROWS};
|
|
|
|
} // namespace esphome::el512::konosuba
|